diff --git a/artifacts/artifacts.json b/artifacts/artifacts.json index f5748397..5c32c239 100644 --- a/artifacts/artifacts.json +++ b/artifacts/artifacts.json @@ -9,9 +9,9 @@ "createdAt": "2026-08-31T14:22:09.905Z", "version": "4.0.0-alpha.1" }, - "bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa": { - "cid": "bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa", - "createdAt": "2026-09-10T21:30:51.226Z", + "bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y": { + "cid": "bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y", + "createdAt": "2026-09-11T14:08:26.219Z", "version": "4.x-nightly" } } \ No newline at end of file diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/APEv2Parser-45TZRDQ6.js b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/APEv2Parser-45TZRDQ6.js similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/APEv2Parser-45TZRDQ6.js rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/APEv2Parser-45TZRDQ6.js diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/APEv2Parser-45TZRDQ6.js.br b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/APEv2Parser-45TZRDQ6.js.br similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/APEv2Parser-45TZRDQ6.js.br rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/APEv2Parser-45TZRDQ6.js.br diff --git a/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/APEv2Parser-45TZRDQ6.js.map b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/APEv2Parser-45TZRDQ6.js.map new file mode 100644 index 00000000..1903fb12 --- /dev/null +++ b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/APEv2Parser-45TZRDQ6.js.map @@ -0,0 +1 @@ +{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[],"sourceRoot":"","file":"/APEv2Parser-45TZRDQ6.js.map"} \ No newline at end of file diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/AiffParser-2JNE3SNK.js b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/AiffParser-2JNE3SNK.js similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/AiffParser-2JNE3SNK.js rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/AiffParser-2JNE3SNK.js diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/AiffParser-2JNE3SNK.js.br b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/AiffParser-2JNE3SNK.js.br similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/AiffParser-2JNE3SNK.js.br rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/AiffParser-2JNE3SNK.js.br diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/AiffParser-2JNE3SNK.js.map b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/AiffParser-2JNE3SNK.js.map similarity index 99% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/AiffParser-2JNE3SNK.js.map rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/AiffParser-2JNE3SNK.js.map index 5ad1f51f..a2977a2b 100644 --- a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/AiffParser-2JNE3SNK.js.map +++ b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/AiffParser-2JNE3SNK.js.map @@ -1 +1 @@ -{"version":3,"sources":["/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/aiff/AiffParser.js","/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/aiff/AiffToken.js","/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/iff/index.js"],"sourcesContent":["import * as Token from 'token-types';\nimport initDebug from 'debug';\nimport * as strtok3 from 'strtok3';\nimport { ID3v2Parser } from '../id3v2/ID3v2Parser.js';\nimport { FourCcToken } from '../common/FourCC.js';\nimport { BasicParser } from '../common/BasicParser.js';\nimport * as AiffToken from './AiffToken.js';\nimport { AiffContentError, compressionTypes } from './AiffToken.js';\nimport * as iff from '../iff/index.js';\nconst debug = initDebug('music-metadata:parser:aiff');\n/**\n * AIFF - Audio Interchange File Format\n *\n * Ref:\n * - http://www-mmsp.ece.mcgill.ca/Documents/AudioFormats/AIFF/AIFF.html\n * - http://www-mmsp.ece.mcgill.ca/Documents/AudioFormats/AIFF/Docs/AIFF-1.3.pdf\n */\nexport class AIFFParser extends BasicParser {\n constructor() {\n super(...arguments);\n this.isCompressed = null;\n }\n async parse() {\n const header = await this.tokenizer.readToken(iff.Header);\n if (header.chunkID !== 'FORM')\n throw new AiffContentError('Invalid Chunk-ID, expected \\'FORM\\''); // Not AIFF format\n const type = await this.tokenizer.readToken(FourCcToken);\n switch (type) {\n case 'AIFF':\n this.metadata.setFormat('container', type);\n this.isCompressed = false;\n break;\n case 'AIFC':\n this.metadata.setFormat('container', 'AIFF-C');\n this.isCompressed = true;\n break;\n default:\n throw new AiffContentError(`Unsupported AIFF type: ${type}`);\n }\n this.metadata.setFormat('lossless', !this.isCompressed);\n this.metadata.setAudioOnly();\n try {\n while (!this.tokenizer.fileInfo.size || this.tokenizer.fileInfo.size - this.tokenizer.position >= iff.Header.len) {\n debug(`Reading AIFF chunk at offset=${this.tokenizer.position}`);\n const chunkHeader = await this.tokenizer.readToken(iff.Header);\n const nextChunk = 2 * Math.round(chunkHeader.chunkSize / 2);\n const bytesRead = await this.readData(chunkHeader);\n await this.tokenizer.ignore(nextChunk - bytesRead);\n }\n }\n catch (err) {\n if (err instanceof strtok3.EndOfStreamError) {\n debug(\"End-of-stream\");\n }\n else {\n throw err;\n }\n }\n }\n async readData(header) {\n switch (header.chunkID) {\n case 'COMM': { // The Common Chunk\n if (this.isCompressed === null) {\n throw new AiffContentError('Failed to parse AIFF.COMM chunk when compression type is unknown');\n }\n const common = await this.tokenizer.readToken(new AiffToken.Common(header, this.isCompressed));\n this.metadata.setFormat('bitsPerSample', common.sampleSize);\n this.metadata.setFormat('sampleRate', common.sampleRate);\n this.metadata.setFormat('numberOfChannels', common.numChannels);\n this.metadata.setFormat('numberOfSamples', common.numSampleFrames);\n this.metadata.setFormat('duration', common.numSampleFrames / common.sampleRate);\n if (common.compressionName || common.compressionType) {\n this.metadata.setFormat('codec', common.compressionName ?? compressionTypes[common.compressionType]);\n }\n return header.chunkSize;\n }\n case 'ID3 ': { // ID3-meta-data\n const id3_data = await this.tokenizer.readToken(new Token.Uint8ArrayType(header.chunkSize));\n const rst = strtok3.fromBuffer(id3_data);\n await new ID3v2Parser().parse(this.metadata, rst, this.options);\n return header.chunkSize;\n }\n case 'SSND': // Sound Data Chunk\n if (this.metadata.format.duration) {\n this.metadata.setFormat('bitrate', 8 * header.chunkSize / this.metadata.format.duration);\n }\n return 0;\n case 'NAME': // Sample name chunk\n case 'AUTH': // Author chunk\n case '(c) ': // Copyright chunk\n case 'ANNO': // Annotation chunk\n return this.readTextChunk(header);\n default:\n debug(`Ignore chunk id=${header.chunkID}, size=${header.chunkSize}`);\n return 0;\n }\n }\n async readTextChunk(header) {\n const value = await this.tokenizer.readToken(new Token.StringType(header.chunkSize, 'ascii'));\n const values = value.split('\\0').map(v => v.trim()).filter(v => v?.length);\n await Promise.all(values.map(v => this.metadata.addTag('AIFF', header.chunkID, v)));\n return header.chunkSize;\n }\n}\n","import * as Token from 'token-types';\nimport { FourCcToken } from '../common/FourCC.js';\nimport { makeUnexpectedFileContentError } from '../ParseError.js';\nexport const compressionTypes = {\n NONE: 'not compressed\tPCM\tApple Computer',\n sowt: 'PCM (byte swapped)',\n fl32: '32-bit floating point IEEE 32-bit float',\n fl64: '64-bit floating point IEEE 64-bit float\tApple Computer',\n alaw: 'ALaw 2:1\t8-bit ITU-T G.711 A-law',\n ulaw: 'µLaw 2:1\t8-bit ITU-T G.711 µ-law\tApple Computer',\n ULAW: 'CCITT G.711 u-law 8-bit ITU-T G.711 µ-law',\n ALAW: 'CCITT G.711 A-law 8-bit ITU-T G.711 A-law',\n FL32: 'Float 32\tIEEE 32-bit float '\n};\nexport class AiffContentError extends makeUnexpectedFileContentError('AIFF') {\n}\nexport class Common {\n constructor(header, isAifc) {\n this.isAifc = isAifc;\n const minimumChunkSize = isAifc ? 22 : 18;\n if (header.chunkSize < minimumChunkSize)\n throw new AiffContentError(`COMMON CHUNK size should always be at least ${minimumChunkSize}`);\n this.len = header.chunkSize;\n }\n get(buf, off) {\n // see: https://cycling74.com/forums/aiffs-80-bit-sample-rate-value\n const shift = Token.UINT16_BE.get(buf, off + 8) - 16398;\n const baseSampleRate = Token.UINT16_BE.get(buf, off + 8 + 2);\n const res = {\n numChannels: Token.UINT16_BE.get(buf, off),\n numSampleFrames: Token.UINT32_BE.get(buf, off + 2),\n sampleSize: Token.UINT16_BE.get(buf, off + 6),\n sampleRate: shift < 0 ? baseSampleRate >> Math.abs(shift) : baseSampleRate << shift\n };\n if (this.isAifc) {\n res.compressionType = FourCcToken.get(buf, off + 18);\n if (this.len > 22) {\n const strLen = Token.UINT8.get(buf, off + 22);\n if (strLen > 0) {\n const padding = (strLen + 1) % 2;\n if (23 + strLen + padding === this.len) {\n res.compressionName = new Token.StringType(strLen, 'latin1').get(buf, off + 23);\n }\n else {\n throw new AiffContentError('Illegal pstring length');\n }\n }\n else {\n res.compressionName = undefined;\n }\n }\n }\n else {\n res.compressionName = 'PCM';\n }\n return res;\n }\n}\n","import * as Token from 'token-types';\nimport { FourCcToken } from '../common/FourCC.js';\n/**\n * Common AIFF chunk header\n */\nexport const Header = {\n len: 8,\n get: (buf, off) => {\n return {\n // Chunk type ID\n chunkID: FourCcToken.get(buf, off),\n // Chunk size\n chunkSize: Number(BigInt(Token.UINT32_BE.get(buf, off + 4)))\n };\n }\n};\n"],"mappings":"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","names":["import_debug","compressionTypes","AiffContentError","makeUnexpectedFileContentError","__name","Common","header","isAifc","minimumChunkSize","buf","off","shift","UINT16_BE","baseSampleRate","res","UINT32_BE","FourCcToken","strLen","UINT8","padding","StringType","Header","__name","buf","off","FourCcToken","UINT32_BE","debug","initDebug","AIFFParser","BasicParser","__name","Header","AiffContentError","type","FourCcToken","chunkHeader","nextChunk","bytesRead","err","EndOfStreamError","header","common","Common","compressionTypes","id3_data","Uint8ArrayType","rst","fromBuffer","ID3v2Parser","values","StringType","v"],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse","file":"/AiffParser-2JNE3SNK.js.map"} \ No newline at end of file +{"version":3,"sources":["/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/aiff/AiffParser.js","/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/aiff/AiffToken.js","/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/iff/index.js"],"sourcesContent":["import * as Token from 'token-types';\nimport initDebug from 'debug';\nimport * as strtok3 from 'strtok3';\nimport { ID3v2Parser } from '../id3v2/ID3v2Parser.js';\nimport { FourCcToken } from '../common/FourCC.js';\nimport { BasicParser } from '../common/BasicParser.js';\nimport * as AiffToken from './AiffToken.js';\nimport { AiffContentError, compressionTypes } from './AiffToken.js';\nimport * as iff from '../iff/index.js';\nconst debug = initDebug('music-metadata:parser:aiff');\n/**\n * AIFF - Audio Interchange File Format\n *\n * Ref:\n * - http://www-mmsp.ece.mcgill.ca/Documents/AudioFormats/AIFF/AIFF.html\n * - http://www-mmsp.ece.mcgill.ca/Documents/AudioFormats/AIFF/Docs/AIFF-1.3.pdf\n */\nexport class AIFFParser extends BasicParser {\n constructor() {\n super(...arguments);\n this.isCompressed = null;\n }\n async parse() {\n const header = await this.tokenizer.readToken(iff.Header);\n if (header.chunkID !== 'FORM')\n throw new AiffContentError('Invalid Chunk-ID, expected \\'FORM\\''); // Not AIFF format\n const type = await this.tokenizer.readToken(FourCcToken);\n switch (type) {\n case 'AIFF':\n this.metadata.setFormat('container', type);\n this.isCompressed = false;\n break;\n case 'AIFC':\n this.metadata.setFormat('container', 'AIFF-C');\n this.isCompressed = true;\n break;\n default:\n throw new AiffContentError(`Unsupported AIFF type: ${type}`);\n }\n this.metadata.setFormat('lossless', !this.isCompressed);\n this.metadata.setAudioOnly();\n try {\n while (!this.tokenizer.fileInfo.size || this.tokenizer.fileInfo.size - this.tokenizer.position >= iff.Header.len) {\n debug(`Reading AIFF chunk at offset=${this.tokenizer.position}`);\n const chunkHeader = await this.tokenizer.readToken(iff.Header);\n const nextChunk = 2 * Math.round(chunkHeader.chunkSize / 2);\n const bytesRead = await this.readData(chunkHeader);\n await this.tokenizer.ignore(nextChunk - bytesRead);\n }\n }\n catch (err) {\n if (err instanceof strtok3.EndOfStreamError) {\n debug(\"End-of-stream\");\n }\n else {\n throw err;\n }\n }\n }\n async readData(header) {\n switch (header.chunkID) {\n case 'COMM': { // The Common Chunk\n if (this.isCompressed === null) {\n throw new AiffContentError('Failed to parse AIFF.COMM chunk when compression type is unknown');\n }\n const common = await this.tokenizer.readToken(new AiffToken.Common(header, this.isCompressed));\n this.metadata.setFormat('bitsPerSample', common.sampleSize);\n this.metadata.setFormat('sampleRate', common.sampleRate);\n this.metadata.setFormat('numberOfChannels', common.numChannels);\n this.metadata.setFormat('numberOfSamples', common.numSampleFrames);\n this.metadata.setFormat('duration', common.numSampleFrames / common.sampleRate);\n if (common.compressionName || common.compressionType) {\n this.metadata.setFormat('codec', common.compressionName ?? compressionTypes[common.compressionType]);\n }\n return header.chunkSize;\n }\n case 'ID3 ': { // ID3-meta-data\n const id3_data = await this.tokenizer.readToken(new Token.Uint8ArrayType(header.chunkSize));\n const rst = strtok3.fromBuffer(id3_data);\n await new ID3v2Parser().parse(this.metadata, rst, this.options);\n return header.chunkSize;\n }\n case 'SSND': // Sound Data Chunk\n if (this.metadata.format.duration) {\n this.metadata.setFormat('bitrate', 8 * header.chunkSize / this.metadata.format.duration);\n }\n return 0;\n case 'NAME': // Sample name chunk\n case 'AUTH': // Author chunk\n case '(c) ': // Copyright chunk\n case 'ANNO': // Annotation chunk\n return this.readTextChunk(header);\n default:\n debug(`Ignore chunk id=${header.chunkID}, size=${header.chunkSize}`);\n return 0;\n }\n }\n async readTextChunk(header) {\n const value = await this.tokenizer.readToken(new Token.StringType(header.chunkSize, 'ascii'));\n const values = value.split('\\0').map(v => v.trim()).filter(v => v?.length);\n await Promise.all(values.map(v => this.metadata.addTag('AIFF', header.chunkID, v)));\n return header.chunkSize;\n }\n}\n","import * as Token from 'token-types';\nimport { FourCcToken } from '../common/FourCC.js';\nimport { makeUnexpectedFileContentError } from '../ParseError.js';\nexport const compressionTypes = {\n NONE: 'not compressed\tPCM\tApple Computer',\n sowt: 'PCM (byte swapped)',\n fl32: '32-bit floating point IEEE 32-bit float',\n fl64: '64-bit floating point IEEE 64-bit float\tApple Computer',\n alaw: 'ALaw 2:1\t8-bit ITU-T G.711 A-law',\n ulaw: 'µLaw 2:1\t8-bit ITU-T G.711 µ-law\tApple Computer',\n ULAW: 'CCITT G.711 u-law 8-bit ITU-T G.711 µ-law',\n ALAW: 'CCITT G.711 A-law 8-bit ITU-T G.711 A-law',\n FL32: 'Float 32\tIEEE 32-bit float '\n};\nexport class AiffContentError extends makeUnexpectedFileContentError('AIFF') {\n}\nexport class Common {\n constructor(header, isAifc) {\n this.isAifc = isAifc;\n const minimumChunkSize = isAifc ? 22 : 18;\n if (header.chunkSize < minimumChunkSize)\n throw new AiffContentError(`COMMON CHUNK size should always be at least ${minimumChunkSize}`);\n this.len = header.chunkSize;\n }\n get(buf, off) {\n // see: https://cycling74.com/forums/aiffs-80-bit-sample-rate-value\n const shift = Token.UINT16_BE.get(buf, off + 8) - 16398;\n const baseSampleRate = Token.UINT16_BE.get(buf, off + 8 + 2);\n const res = {\n numChannels: Token.UINT16_BE.get(buf, off),\n numSampleFrames: Token.UINT32_BE.get(buf, off + 2),\n sampleSize: Token.UINT16_BE.get(buf, off + 6),\n sampleRate: shift < 0 ? baseSampleRate >> Math.abs(shift) : baseSampleRate << shift\n };\n if (this.isAifc) {\n res.compressionType = FourCcToken.get(buf, off + 18);\n if (this.len > 22) {\n const strLen = Token.UINT8.get(buf, off + 22);\n if (strLen > 0) {\n const padding = (strLen + 1) % 2;\n if (23 + strLen + padding === this.len) {\n res.compressionName = new Token.StringType(strLen, 'latin1').get(buf, off + 23);\n }\n else {\n throw new AiffContentError('Illegal pstring length');\n }\n }\n else {\n res.compressionName = undefined;\n }\n }\n }\n else {\n res.compressionName = 'PCM';\n }\n return res;\n }\n}\n","import * as Token from 'token-types';\nimport { FourCcToken } from '../common/FourCC.js';\n/**\n * Common AIFF chunk header\n */\nexport const Header = {\n len: 8,\n get: (buf, off) => {\n return {\n // Chunk type ID\n chunkID: FourCcToken.get(buf, off),\n // Chunk size\n chunkSize: Number(BigInt(Token.UINT32_BE.get(buf, off + 4)))\n };\n }\n};\n"],"mappings":"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","names":["import_debug","compressionTypes","AiffContentError","makeUnexpectedFileContentError","__name","Common","header","isAifc","minimumChunkSize","buf","off","shift","UINT16_BE","baseSampleRate","res","UINT32_BE","FourCcToken","strLen","UINT8","padding","StringType","Header","__name","buf","off","FourCcToken","UINT32_BE","debug","initDebug","AIFFParser","BasicParser","__name","Header","AiffContentError","type","FourCcToken","chunkHeader","nextChunk","bytesRead","err","EndOfStreamError","header","common","Common","compressionTypes","id3_data","Uint8ArrayType","rst","fromBuffer","ID3v2Parser","values","StringType","v"],"sourceRoot":"","file":"/AiffParser-2JNE3SNK.js.map"} \ No newline at end of file diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/AsfParser-BPPBZCR7.js b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/AsfParser-BPPBZCR7.js similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/AsfParser-BPPBZCR7.js rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/AsfParser-BPPBZCR7.js diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/AsfParser-BPPBZCR7.js.br b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/AsfParser-BPPBZCR7.js.br similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/AsfParser-BPPBZCR7.js.br rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/AsfParser-BPPBZCR7.js.br diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/AsfParser-BPPBZCR7.js.map b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/AsfParser-BPPBZCR7.js.map similarity index 99% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/AsfParser-BPPBZCR7.js.map rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/AsfParser-BPPBZCR7.js.map index 0c18789a..60e25949 100644 --- a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/AsfParser-BPPBZCR7.js.map +++ b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/AsfParser-BPPBZCR7.js.map @@ -1 +1 @@ -{"version":3,"sources":["/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/asf/AsfParser.js","/node_modules/.deno/win-guid@0.2.1/node_modules/win-guid/lib/guid.js","/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/asf/AsfGuid.js","/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/asf/AsfUtil.js","/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/asf/AsfObject.js"],"sourcesContent":["import initDebug from 'debug';\nimport { EndOfStreamError } from 'strtok3';\nimport { TrackType } from '../type.js';\nimport AsfGuid from './AsfGuid.js';\nimport * as AsfObject from './AsfObject.js';\nimport { BasicParser } from '../common/BasicParser.js';\nimport { AsfContentParseError } from './AsfObject.js';\nconst debug = initDebug('music-metadata:parser:ASF');\nconst headerType = 'asf';\nconst maxAsfMetadataObjectSize = 16 * 1024 * 1024;\n/**\n * Windows Media Metadata Usage Guidelines\n * - Ref: https://msdn.microsoft.com/en-us/library/ms867702.aspx\n *\n * Ref:\n * - https://tools.ietf.org/html/draft-fleischman-asf-01\n * - https://hwiegman.home.xs4all.nl/fileformats/asf/ASF_Specification.pdf\n * - http://drang.s4.xrea.com/program/tips/id3tag/wmp/index.html\n * - https://msdn.microsoft.com/en-us/library/windows/desktop/ee663575(v=vs.85).aspx\n */\nexport class AsfParser extends BasicParser {\n async parse() {\n const header = await this.tokenizer.readToken(AsfObject.TopLevelHeaderObjectToken);\n if (!header.objectId.equals(AsfGuid.HeaderObject)) {\n throw new AsfContentParseError(`expected asf header; but was not found; got: ${header.objectId.str}`);\n }\n if (header.numberOfHeaderObjects < 1 || header.numberOfHeaderObjects > 10000) {\n throw new AsfContentParseError(`Unrealistic number of ASF header objects: ${header.numberOfHeaderObjects}`);\n }\n await this.parseObjectHeaders(header.numberOfHeaderObjects, header.objectSize - AsfObject.TopLevelHeaderObjectToken.len);\n }\n async parseObjectHeaders(numberOfObjectHeaders, remainingHeaderSize) {\n let tags;\n for (let index = 0; index < numberOfObjectHeaders; ++index) {\n const { header, payloadSize } = await this.readObjectHeader(remainingHeaderSize, 'header');\n // Parse data part of the ASF Object\n debug('header GUID=%s', header.objectId.str);\n switch (header.objectId.str) {\n case AsfObject.FilePropertiesObject.guid.str: { // 3.2\n this.validateAllocationSize(payloadSize, 'File Properties Object');\n const fpo = await this.tokenizer.readToken(new AsfObject.FilePropertiesObject(header));\n this.metadata.setFormat('duration', Number(fpo.playDuration / BigInt(1000)) / 10000 - Number(fpo.preroll) / 1000);\n this.metadata.setFormat('bitrate', fpo.maximumBitrate);\n break;\n }\n case AsfObject.StreamPropertiesObject.guid.str: { // 3.3\n this.validateAllocationSize(payloadSize, 'Stream Properties Object');\n const spo = await this.tokenizer.readToken(new AsfObject.StreamPropertiesObject(header));\n this.metadata.setFormat('container', `ASF/${spo.streamType}`);\n break;\n }\n case AsfObject.HeaderExtensionObject.guid.str: { // 3.4\n const extensionHeaderToken = new AsfObject.HeaderExtensionObject();\n if (payloadSize < extensionHeaderToken.len) {\n throw new AsfContentParseError(`ASF Header Extension Object payload is too small: ${payloadSize} bytes`);\n }\n const extHeader = await this.tokenizer.readToken(extensionHeaderToken);\n const expectedExtensionSize = payloadSize - extensionHeaderToken.len;\n if (extHeader.extensionDataSize !== expectedExtensionSize) {\n throw new AsfContentParseError(`ASF extension data size ${extHeader.extensionDataSize} does not match enclosing payload size ${expectedExtensionSize}`);\n }\n await this.parseExtensionObject(extHeader.extensionDataSize);\n break;\n }\n case AsfObject.ContentDescriptionObjectState.guid.str: // 3.10\n this.validateAllocationSize(payloadSize, 'Content Description Object');\n tags = await this.tokenizer.readToken(new AsfObject.ContentDescriptionObjectState(header));\n await this.addTags(tags);\n break;\n case AsfObject.ExtendedContentDescriptionObjectState.guid.str: // 3.11\n this.validateAllocationSize(payloadSize, 'Extended Content Description Object');\n tags = await this.tokenizer.readToken(new AsfObject.ExtendedContentDescriptionObjectState(header));\n await this.addTags(tags);\n break;\n case AsfGuid.CodecListObject.str: {\n this.validateAllocationSize(payloadSize, 'Codec List Object');\n let codecs;\n try {\n codecs = await AsfObject.readCodecEntries(this.tokenizer, payloadSize);\n }\n catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n throw new AsfContentParseError(`Invalid ASF Codec List Object: ${message}`);\n }\n codecs.forEach(codec => {\n this.metadata.addStreamInfo({\n type: codec.type.videoCodec ? TrackType.video : TrackType.audio,\n codecName: codec.codecName\n });\n });\n const audioCodecs = codecs.filter(codec => codec.type.audioCodec).map(codec => codec.codecName).join('/');\n this.metadata.setFormat('codec', audioCodecs);\n break;\n }\n case AsfGuid.StreamBitratePropertiesObject.str:\n // ToDo?\n await this.ignorePayload(payloadSize, 'Stream Bitrate Properties Object');\n break;\n case AsfGuid.PaddingObject.str:\n // ToDo: register bytes pad\n debug('Padding: %s bytes', payloadSize);\n await this.ignorePayload(payloadSize, 'Padding Object');\n break;\n default:\n this.metadata.addWarning(`Ignore ASF-Object-GUID: ${header.objectId.str}`);\n debug('Ignore ASF-Object-GUID: %s', header.objectId.str);\n await this.ignorePayload(payloadSize, `object ${header.objectId.str}`);\n }\n remainingHeaderSize -= header.objectSize;\n }\n if (remainingHeaderSize !== 0) {\n throw new AsfContentParseError(`ASF header child objects leave ${remainingHeaderSize} payload byte(s) unaccounted`);\n }\n }\n async addTags(tags) {\n await Promise.all(tags.map(({ id, value }) => this.metadata.addTag(headerType, id, value)));\n }\n async readObjectHeader(remainingSize, containerType) {\n if (remainingSize < AsfObject.HeaderObjectToken.len) {\n throw new AsfContentParseError(`Insufficient ASF ${containerType} data for an object header: ${remainingSize} bytes`);\n }\n const header = await this.tokenizer.readToken(AsfObject.HeaderObjectToken);\n if (header.objectSize > remainingSize) {\n throw new AsfContentParseError(`ASF ${containerType} object size ${header.objectSize} exceeds remaining ${containerType} payload size ${remainingSize}`);\n }\n return {\n header,\n payloadSize: this.validatePayloadAvailability(header, `${containerType} object`)\n };\n }\n validatePayloadAvailability(header, objectType) {\n const payloadSize = header.objectSize - AsfObject.HeaderObjectToken.len;\n const fileSize = this.tokenizer.fileInfo.size;\n if (fileSize !== undefined) {\n const available = fileSize - this.tokenizer.position;\n if (payloadSize > available) {\n throw new AsfContentParseError(`ASF ${objectType} payload size ${payloadSize} exceeds available input size ${available}`);\n }\n }\n return payloadSize;\n }\n validateAllocationSize(payloadSize, objectType) {\n if (payloadSize > maxAsfMetadataObjectSize) {\n throw new AsfContentParseError(`ASF ${objectType} payload size ${payloadSize} exceeds allocation limit ${maxAsfMetadataObjectSize}`);\n }\n }\n async ignorePayload(payloadSize, objectType) {\n let ignored;\n try {\n ignored = await this.tokenizer.ignore(payloadSize);\n }\n catch (error) {\n if (error instanceof EndOfStreamError) {\n throw new AsfContentParseError(`Unexpected end of ASF ${objectType}`);\n }\n throw error;\n }\n if (ignored !== payloadSize) {\n throw new AsfContentParseError(`Unexpected end of ASF ${objectType}; missing ${payloadSize - ignored} bytes`);\n }\n }\n async parseExtensionObject(extensionSize) {\n while (extensionSize > 0) {\n const { header, payloadSize } = await this.readObjectHeader(extensionSize, 'extension');\n // Parse data part of the ASF Object\n switch (header.objectId.str) {\n case AsfObject.ExtendedStreamPropertiesObjectState.guid.str: // 4.1\n // ToDo: extended stream header properties are ignored\n this.validateAllocationSize(payloadSize, 'Extended Stream Properties Object');\n await this.tokenizer.readToken(new AsfObject.ExtendedStreamPropertiesObjectState(header));\n break;\n case AsfObject.MetadataObjectState.guid.str: { // 4.7\n this.validateAllocationSize(payloadSize, 'Metadata Object');\n const moTags = await this.tokenizer.readToken(new AsfObject.MetadataObjectState(header));\n await this.addTags(moTags);\n break;\n }\n case AsfObject.MetadataLibraryObjectState.guid.str: { // 4.8\n this.validateAllocationSize(payloadSize, 'Metadata Library Object');\n const mlTags = await this.tokenizer.readToken(new AsfObject.MetadataLibraryObjectState(header));\n await this.addTags(mlTags);\n break;\n }\n case AsfGuid.PaddingObject.str:\n // ToDo: register bytes pad\n await this.ignorePayload(payloadSize, 'extension Padding Object');\n break;\n case AsfGuid.CompatibilityObject.str:\n await this.ignorePayload(payloadSize, 'Compatibility Object');\n break;\n case AsfGuid.ASF_Index_Placeholder_Object.str:\n await this.ignorePayload(payloadSize, 'Index Placeholder Object');\n break;\n default:\n this.metadata.addWarning(`Ignore ASF-Object-GUID: ${header.objectId.str}`);\n // console.log(\"Ignore ASF-Object-GUID: %s\", header.objectId.str);\n await this.ignorePayload(payloadSize, `extension object ${header.objectId.str}`);\n break;\n }\n extensionSize -= header.objectSize;\n }\n }\n}\n","/**\n * Parse canonical GUID string (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)\n * into Windows / CFBF byte order.\n */\nexport function parseWindowsGuid(guid) {\n let s = guid.trim();\n // Keep validation readable and strict, avoid lowercasing allocations\n if (s.length !== 36 ||\n s[8] !== \"-\" ||\n s[13] !== \"-\" ||\n s[18] !== \"-\" ||\n s[23] !== \"-\") {\n throw new Error(`Invalid GUID format: ${guid}`);\n }\n let v;\n const out = new Uint8Array(16);\n // Data1: 8 hex, uint32 little-endian\n v = parseInt(s.slice(0, 8), 16);\n out[0] = v & 0xff;\n out[1] = (v >>> 8) & 0xff;\n out[2] = (v >>> 16) & 0xff;\n out[3] = (v >>> 24) & 0xff;\n // Data2: 4 hex, uint16 little-endian\n v = parseInt(s.slice(9, 13), 16);\n out[4] = v & 0xff;\n out[5] = (v >>> 8) & 0xff;\n // Data3: 4 hex, uint16 little-endian\n v = parseInt(s.slice(14, 18), 16);\n out[6] = v & 0xff;\n out[7] = (v >>> 8) & 0xff;\n // Data4: 4 hex, as-is (string order)\n v = parseInt(s.slice(19, 23), 16);\n out[8] = (v >>> 8) & 0xff;\n out[9] = v & 0xff;\n // Data5: 12 hex, 6 bytes, as-is (string order)\n // Parse as two chunks to avoid any precision worries, keep it simple.\n v = parseInt(s.slice(24, 32), 16); // 8 hex -> 4 bytes\n out[10] = (v >>> 24) & 0xff;\n out[11] = (v >>> 16) & 0xff;\n out[12] = (v >>> 8) & 0xff;\n out[13] = v & 0xff;\n v = parseInt(s.slice(32, 36), 16); // 4 hex -> 2 bytes\n out[14] = (v >>> 8) & 0xff;\n out[15] = v & 0xff;\n // Ensure all parsed parts were valid hex (parseInt can yield NaN)\n for (let i = 0; i < 16; i++) {\n if (!Number.isFinite(out[i])) {\n throw new Error(`Invalid GUID format: ${guid}`);\n }\n }\n // Also catch NaN early (more useful error locality)\n // If any parseInt produced NaN, assignments above would have become 0,\n // so instead validate hex characters directly with a lightweight check.\n // (Keeps code small while staying strict.)\n if (!/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/.test(s)) {\n throw new Error(`Invalid GUID format: ${guid}`);\n }\n return out;\n}\nexport class Guid {\n constructor(bytes) {\n if (bytes.length !== 16)\n throw new Error(\"GUID must be exactly 16 bytes\");\n this.bytes = bytes;\n }\n static fromString(guid) {\n return new Guid(parseWindowsGuid(guid));\n }\n /**\n * Convert Windows / CFBF byte order into canonical GUID string:\n * xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\n */\n toString() {\n const b = this.bytes;\n const hx = (n) => n.toString(16).padStart(2, \"0\");\n // Data1 (uint32 LE) -> big-endian text\n const g1 = hx(b[3]) + hx(b[2]) + hx(b[1]) + hx(b[0]);\n // Data2 (uint16 LE)\n const g2 = hx(b[5]) + hx(b[4]);\n // Data3 (uint16 LE)\n const g3 = hx(b[7]) + hx(b[6]);\n // Data4 (as-is)\n const g4 = hx(b[8]) + hx(b[9]);\n // Data5 (as-is)\n const g5 = hx(b[10]) +\n hx(b[11]) +\n hx(b[12]) +\n hx(b[13]) +\n hx(b[14]) +\n hx(b[15]);\n return `${g1}-${g2}-${g3}-${g4}-${g5}`.toUpperCase();\n }\n /**\n * Compare against a Uint8Array containing GUID bytes\n * in Windows / CFBF layout.\n */\n equals(buf, offset = 0) {\n if (offset < 0 || buf.length - offset < 16)\n return false;\n const a = this.bytes;\n for (let i = 0; i < 16; i++) {\n if (buf[offset + i] !== a[i])\n return false;\n }\n return true;\n }\n}\n","import { parseWindowsGuid, Guid } from 'win-guid';\n/**\n * Ref:\n * - https://tools.ietf.org/html/draft-fleischman-asf-01, Appendix A: ASF GUIDs\n * - http://drang.s4.xrea.com/program/tips/id3tag/wmp/10_asf_guids.html\n * - http://drang.s4.xrea.com/program/tips/id3tag/wmp/index.html\n * - http://drang.s4.xrea.com/program/tips/id3tag/wmp/10_asf_guids.html\n *\n * ASF File Structure:\n * - https://msdn.microsoft.com/en-us/library/windows/desktop/ee663575(v=vs.85).aspx\n *\n * ASF GUIDs:\n * - http://drang.s4.xrea.com/program/tips/id3tag/wmp/10_asf_guids.html\n * - https://github.com/dji-sdk/FFmpeg/blob/master/libavformat/asf.c\n */\nclass AsfGuid {\n static fromBin(bin, offset = 0) {\n return new AsfGuid(AsfGuid.decode(bin, offset));\n }\n /**\n * Decode GUID in format like \"B503BF5F-2EA9-CF11-8EE3-00C00C205365\"\n * @param objectId Binary GUID\n * @param offset Read offset in bytes, default 0\n * @returns GUID as dashed hexadecimal representation\n */\n static decode(objectId, offset = 0) {\n return new Guid(objectId.subarray(offset, offset + 16)).toString();\n }\n /**\n * Decode stream type\n * @param mediaType Media type GUID\n * @returns Media type\n */\n static decodeMediaType(mediaType) {\n switch (mediaType.str) {\n case AsfGuid.AudioMedia.str: return 'audio';\n case AsfGuid.VideoMedia.str: return 'video';\n case AsfGuid.CommandMedia.str: return 'command';\n case AsfGuid.Degradable_JPEG_Media.str: return 'degradable-jpeg';\n case AsfGuid.FileTransferMedia.str: return 'file-transfer';\n case AsfGuid.BinaryMedia.str: return 'binary';\n }\n }\n /**\n * Encode GUID\n * @param guid GUID like: \"B503BF5F-2EA9-CF11-8EE3-00C00C205365\"\n * @returns Encoded Binary GUID\n */\n static encode(guid) {\n return parseWindowsGuid(guid);\n }\n constructor(str) {\n this.str = str;\n }\n equals(guid) {\n return this.str === guid.str;\n }\n toBin() {\n return AsfGuid.encode(this.str);\n }\n}\n// 10.1 Top-level ASF object GUIDs\nAsfGuid.HeaderObject = new AsfGuid(\"75B22630-668E-11CF-A6D9-00AA0062CE6C\");\nAsfGuid.DataObject = new AsfGuid(\"75B22636-668E-11CF-A6D9-00AA0062CE6C\");\nAsfGuid.SimpleIndexObject = new AsfGuid(\"33000890-E5B1-11CF-89F4-00A0C90349CB\");\nAsfGuid.IndexObject = new AsfGuid(\"D6E229D3-35DA-11D1-9034-00A0C90349BE\");\nAsfGuid.MediaObjectIndexObject = new AsfGuid(\"FEB103F8-12AD-4C64-840F-2A1D2F7AD48C\");\nAsfGuid.TimecodeIndexObject = new AsfGuid(\"3CB73FD0-0C4A-4803-953D-EDF7B6228F0C\");\n// 10.2 Header Object GUIDs\nAsfGuid.FilePropertiesObject = new AsfGuid(\"8CABDCA1-A947-11CF-8EE4-00C00C205365\");\nAsfGuid.StreamPropertiesObject = new AsfGuid(\"B7DC0791-A9B7-11CF-8EE6-00C00C205365\");\nAsfGuid.HeaderExtensionObject = new AsfGuid(\"5FBF03B5-A92E-11CF-8EE3-00C00C205365\");\nAsfGuid.CodecListObject = new AsfGuid(\"86D15240-311D-11D0-A3A4-00A0C90348F6\");\nAsfGuid.ScriptCommandObject = new AsfGuid(\"1EFB1A30-0B62-11D0-A39B-00A0C90348F6\");\nAsfGuid.MarkerObject = new AsfGuid(\"F487CD01-A951-11CF-8EE6-00C00C205365\");\nAsfGuid.BitrateMutualExclusionObject = new AsfGuid(\"D6E229DC-35DA-11D1-9034-00A0C90349BE\");\nAsfGuid.ErrorCorrectionObject = new AsfGuid(\"75B22635-668E-11CF-A6D9-00AA0062CE6C\");\nAsfGuid.ContentDescriptionObject = new AsfGuid(\"75B22633-668E-11CF-A6D9-00AA0062CE6C\");\nAsfGuid.ExtendedContentDescriptionObject = new AsfGuid(\"D2D0A440-E307-11D2-97F0-00A0C95EA850\");\nAsfGuid.ContentBrandingObject = new AsfGuid(\"2211B3FA-BD23-11D2-B4B7-00A0C955FC6E\");\nAsfGuid.StreamBitratePropertiesObject = new AsfGuid(\"7BF875CE-468D-11D1-8D82-006097C9A2B2\");\nAsfGuid.ContentEncryptionObject = new AsfGuid(\"2211B3FB-BD23-11D2-B4B7-00A0C955FC6E\");\nAsfGuid.ExtendedContentEncryptionObject = new AsfGuid(\"298AE614-2622-4C17-B935-DAE07EE9289C\");\nAsfGuid.DigitalSignatureObject = new AsfGuid(\"2211B3FC-BD23-11D2-B4B7-00A0C955FC6E\");\nAsfGuid.PaddingObject = new AsfGuid(\"1806D474-CADF-4509-A4BA-9AABCB96AAE8\");\n// 10.3 Header Extension Object GUIDs\nAsfGuid.ExtendedStreamPropertiesObject = new AsfGuid(\"14E6A5CB-C672-4332-8399-A96952065B5A\");\nAsfGuid.AdvancedMutualExclusionObject = new AsfGuid(\"A08649CF-4775-4670-8A16-6E35357566CD\");\nAsfGuid.GroupMutualExclusionObject = new AsfGuid(\"D1465A40-5A79-4338-B71B-E36B8FD6C249\");\nAsfGuid.StreamPrioritizationObject = new AsfGuid(\"D4FED15B-88D3-454F-81F0-ED5C45999E24\");\nAsfGuid.BandwidthSharingObject = new AsfGuid(\"A69609E6-517B-11D2-B6AF-00C04FD908E9\");\nAsfGuid.LanguageListObject = new AsfGuid(\"7C4346A9-EFE0-4BFC-B229-393EDE415C85\");\nAsfGuid.MetadataObject = new AsfGuid(\"C5F8CBEA-5BAF-4877-8467-AA8C44FA4CCA\");\nAsfGuid.MetadataLibraryObject = new AsfGuid(\"44231C94-9498-49D1-A141-1D134E457054\");\nAsfGuid.IndexParametersObject = new AsfGuid(\"D6E229DF-35DA-11D1-9034-00A0C90349BE\");\nAsfGuid.MediaObjectIndexParametersObject = new AsfGuid(\"6B203BAD-3F11-48E4-ACA8-D7613DE2CFA7\");\nAsfGuid.TimecodeIndexParametersObject = new AsfGuid(\"F55E496D-9797-4B5D-8C8B-604DFE9BFB24\");\nAsfGuid.CompatibilityObject = new AsfGuid(\"26F18B5D-4584-47EC-9F5F-0E651F0452C9\");\nAsfGuid.AdvancedContentEncryptionObject = new AsfGuid(\"43058533-6981-49E6-9B74-AD12CB86D58C\");\n// 10.4 Stream Properties Object Stream Type GUIDs\nAsfGuid.AudioMedia = new AsfGuid(\"F8699E40-5B4D-11CF-A8FD-00805F5C442B\");\nAsfGuid.VideoMedia = new AsfGuid(\"BC19EFC0-5B4D-11CF-A8FD-00805F5C442B\");\nAsfGuid.CommandMedia = new AsfGuid(\"59DACFC0-59E6-11D0-A3AC-00A0C90348F6\");\nAsfGuid.JFIF_Media = new AsfGuid(\"B61BE100-5B4E-11CF-A8FD-00805F5C442B\");\nAsfGuid.Degradable_JPEG_Media = new AsfGuid(\"35907DE0-E415-11CF-A917-00805F5C442B\");\nAsfGuid.FileTransferMedia = new AsfGuid(\"91BD222C-F21C-497A-8B6D-5AA86BFC0185\");\nAsfGuid.BinaryMedia = new AsfGuid(\"3AFB65E2-47EF-40F2-AC2C-70A90D71D343\");\nAsfGuid.ASF_Index_Placeholder_Object = new AsfGuid(\"D9AADE20-7C17-4F9C-BC28-8555DD98E2A2\");\nexport default AsfGuid;\n","import * as Token from 'token-types';\nimport * as util from '../common/Util.js';\nexport function getParserForAttr(i) {\n return attributeParsers[i];\n}\nexport function parseUnicodeAttr(uint8Array) {\n return util.stripNulls(util.decodeString(uint8Array, 'utf-16le'));\n}\nconst attributeParsers = [\n parseUnicodeAttr,\n parseByteArrayAttr,\n parseBoolAttr,\n parseDWordAttr,\n parseQWordAttr,\n parseWordAttr,\n parseByteArrayAttr\n];\nfunction parseByteArrayAttr(buf) {\n return new Uint8Array(buf);\n}\nfunction parseBoolAttr(buf, offset = 0) {\n return parseWordAttr(buf, offset) === 1;\n}\nfunction parseDWordAttr(buf, offset = 0) {\n return Token.UINT32_LE.get(buf, offset);\n}\nfunction parseQWordAttr(buf, offset = 0) {\n return Token.UINT64_LE.get(buf, offset);\n}\nfunction parseWordAttr(buf, offset = 0) {\n return Token.UINT16_LE.get(buf, offset);\n}\n","// ASF Objects\nimport * as Token from 'token-types';\nimport * as util from '../common/Util.js';\nimport AsfGuid from './AsfGuid.js';\nimport { getParserForAttr, parseUnicodeAttr } from './AsfUtil.js';\nimport { AttachedPictureType } from '../id3v2/ID3v2Token.js';\nimport { makeUnexpectedFileContentError } from '../ParseError.js';\nexport class AsfContentParseError extends makeUnexpectedFileContentError('ASF') {\n}\n/**\n * Data Type: Specifies the type of information being stored. The following values are recognized.\n */\nexport const DataType = {\n /**\n * Unicode string. The data consists of a sequence of Unicode characters.\n */\n UnicodeString: 0,\n /**\n * BYTE array. The type of data is implementation-specific.\n */\n ByteArray: 1,\n /**\n * BOOL. The data is 2 bytes long and should be interpreted as a 16-bit unsigned integer. Only 0x0000 or 0x0001 are permitted values.\n */\n Bool: 2,\n /**\n * DWORD. The data is 4 bytes long and should be interpreted as a 32-bit unsigned integer.\n */\n DWord: 3,\n /**\n * QWORD. The data is 8 bytes long and should be interpreted as a 64-bit unsigned integer.\n */\n QWord: 4,\n /**\n * WORD. The data is 2 bytes long and should be interpreted as a 16-bit unsigned integer.\n */\n Word: 5\n};\n/**\n * Token for: 3. ASF top-level Header Object\n * Ref: http://drang.s4.xrea.com/program/tips/id3tag/wmp/03_asf_top_level_header_object.html#3\n */\nexport const TopLevelHeaderObjectToken = {\n len: 30,\n get: (buf, off) => {\n const base = HeaderObjectToken.get(buf, off);\n if (base.objectSize < TopLevelHeaderObjectToken.len) {\n throw new AsfContentParseError(`Invalid ASF top-level header object size: ${base.objectSize}`);\n }\n return {\n ...base,\n numberOfHeaderObjects: Token.UINT32_LE.get(buf, off + 24)\n // reserved: 2 bytes\n };\n }\n};\n/**\n * Token for: 3.1 Header Object (mandatory, one only)\n * Ref: http://drang.s4.xrea.com/program/tips/id3tag/wmp/03_asf_top_level_header_object.html#3_1\n */\nexport const HeaderObjectToken = {\n len: 24,\n get: (buf, off) => {\n const objectSize = Token.UINT64_LE.get(buf, off + 16);\n if (objectSize < BigInt(HeaderObjectToken.len) || objectSize > BigInt(Number.MAX_SAFE_INTEGER)) {\n throw new AsfContentParseError(`Invalid ASF header object size: ${objectSize}`);\n }\n const header = {\n objectId: AsfGuid.fromBin(buf, off),\n objectSize: Number(objectSize)\n };\n return header;\n }\n};\nexport class State {\n constructor(header) {\n this.len = header.objectSize - HeaderObjectToken.len;\n }\n postProcessTag(tags, name, valueType, data) {\n if (name === 'WM/Picture') {\n tags.push({ id: name, value: WmPictureToken.fromBuffer(data) });\n }\n else {\n const parseAttr = getParserForAttr(valueType);\n if (!parseAttr) {\n throw new AsfContentParseError(`unexpected value headerType: ${valueType}`);\n }\n tags.push({ id: name, value: parseAttr(data) });\n }\n }\n}\n/**\n * Token for: 3.2: File Properties Object (mandatory, one only)\n * Ref: http://drang.s4.xrea.com/program/tips/id3tag/wmp/03_asf_top_level_header_object.html#3_2\n */\nexport class FilePropertiesObject extends State {\n get(buf, off) {\n return {\n fileId: AsfGuid.fromBin(buf, off),\n fileSize: Token.UINT64_LE.get(buf, off + 16),\n creationDate: Token.UINT64_LE.get(buf, off + 24),\n dataPacketsCount: Token.UINT64_LE.get(buf, off + 32),\n playDuration: Token.UINT64_LE.get(buf, off + 40),\n sendDuration: Token.UINT64_LE.get(buf, off + 48),\n preroll: Token.UINT64_LE.get(buf, off + 56),\n flags: {\n broadcast: util.getBit(buf, off + 64, 24),\n seekable: util.getBit(buf, off + 64, 25)\n },\n // flagsNumeric: Token.UINT32_LE.get(buf, off + 64),\n minimumDataPacketSize: Token.UINT32_LE.get(buf, off + 68),\n maximumDataPacketSize: Token.UINT32_LE.get(buf, off + 72),\n maximumBitrate: Token.UINT32_LE.get(buf, off + 76)\n };\n }\n}\nFilePropertiesObject.guid = AsfGuid.FilePropertiesObject;\n/**\n * Token for: 3.3 Stream Properties Object (mandatory, one per stream)\n * Ref: http://drang.s4.xrea.com/program/tips/id3tag/wmp/03_asf_top_level_header_object.html#3_3\n */\nexport class StreamPropertiesObject extends State {\n get(buf, off) {\n return {\n streamType: AsfGuid.decodeMediaType(AsfGuid.fromBin(buf, off)),\n errorCorrectionType: AsfGuid.fromBin(buf, off + 8)\n // ToDo\n };\n }\n}\nStreamPropertiesObject.guid = AsfGuid.StreamPropertiesObject;\n/**\n * 3.4: Header Extension Object (mandatory, one only)\n * Ref: http://drang.s4.xrea.com/program/tips/id3tag/wmp/03_asf_top_level_header_object.html#3_4\n */\nexport class HeaderExtensionObject {\n constructor() {\n this.len = 22;\n }\n get(buf, off) {\n const view = new DataView(buf.buffer, off);\n return {\n reserved1: AsfGuid.fromBin(buf, off),\n reserved2: view.getUint16(16, true),\n extensionDataSize: view.getUint32(18, true)\n };\n }\n}\nHeaderExtensionObject.guid = AsfGuid.HeaderExtensionObject;\n/**\n * 3.5: The Codec List Object provides user-friendly information about the codecs and formats used to encode the content found in the ASF file.\n * Ref: http://drang.s4.xrea.com/program/tips/id3tag/wmp/03_asf_top_level_header_object.html#3_5\n */\nconst CodecListObjectHeader = {\n len: 20,\n get: (buf, off) => {\n const view = new DataView(buf.buffer, off);\n return {\n entryCount: view.getUint16(16, true)\n };\n }\n};\nclass BoundedReader {\n constructor(tokenizer, size) {\n this.tokenizer = tokenizer;\n this.remaining = size;\n }\n async readToken(token) {\n this.ensureAvailable(token.len);\n const value = await this.tokenizer.readToken(token);\n this.remaining -= token.len;\n return value;\n }\n async readNumber(token) {\n return this.readToken(token);\n }\n async readBuffer(length) {\n this.ensureAvailable(length);\n const buffer = new Uint8Array(length);\n await this.tokenizer.readBuffer(buffer);\n this.remaining -= length;\n return buffer;\n }\n async ignoreRemaining() {\n const ignored = await this.tokenizer.ignore(this.remaining);\n if (ignored !== this.remaining) {\n throw new AsfContentParseError(`Unexpected end of ASF Codec List Object; missing ${this.remaining - ignored} bytes`);\n }\n this.remaining = 0;\n }\n ensureAvailable(length) {\n if (length > this.remaining) {\n throw new AsfContentParseError(`ASF Codec List field size ${length} exceeds remaining object payload size ${this.remaining}`);\n }\n }\n}\nasync function readString(reader) {\n const length = await reader.readNumber(Token.UINT16_LE);\n return (await reader.readToken(new Token.StringType(length * 2, 'utf-16le'))).replace('\\0', '');\n}\n/**\n * 3.5: Read the Codec-List-Object, which provides user-friendly information about the codecs and formats used to encode the content found in the ASF file.\n * Ref: http://drang.s4.xrea.com/program/tips/id3tag/wmp/03_asf_top_level_header_object.html#3_5\n */\nexport async function readCodecEntries(tokenizer, payloadSize) {\n const reader = new BoundedReader(tokenizer, payloadSize);\n const codecHeader = await reader.readToken(CodecListObjectHeader);\n const entries = [];\n for (let i = 0; i < codecHeader.entryCount; ++i) {\n entries.push(await readCodecEntry(reader));\n }\n await reader.ignoreRemaining();\n return entries;\n}\nasync function readInformation(reader) {\n const length = await reader.readNumber(Token.UINT16_LE);\n return reader.readBuffer(length);\n}\n/**\n * Read Codec-Entries\n * @param reader\n */\nasync function readCodecEntry(reader) {\n const type = await reader.readNumber(Token.UINT16_LE);\n return {\n type: {\n videoCodec: (type & 0x0001) === 0x0001,\n audioCodec: (type & 0x0002) === 0x0002\n },\n codecName: await readString(reader),\n description: await readString(reader),\n information: await readInformation(reader)\n };\n}\n/**\n * 3.10 Content Description Object (optional, one only)\n * Ref: http://drang.s4.xrea.com/program/tips/id3tag/wmp/03_asf_top_level_header_object.html#3_10\n */\nexport class ContentDescriptionObjectState extends State {\n get(buf, off) {\n const tags = [];\n const view = new DataView(buf.buffer, off);\n let pos = 10;\n for (let i = 0; i < ContentDescriptionObjectState.contentDescTags.length; ++i) {\n const length = view.getUint16(i * 2, true);\n if (length > 0) {\n const tagName = ContentDescriptionObjectState.contentDescTags[i];\n const end = pos + length;\n tags.push({ id: tagName, value: parseUnicodeAttr(buf.subarray(off + pos, off + end)) });\n pos = end;\n }\n }\n return tags;\n }\n}\nContentDescriptionObjectState.guid = AsfGuid.ContentDescriptionObject;\nContentDescriptionObjectState.contentDescTags = ['Title', 'Author', 'Copyright', 'Description', 'Rating'];\n/**\n * 3.11 Extended Content Description Object (optional, one only)\n * Ref: http://drang.s4.xrea.com/program/tips/id3tag/wmp/03_asf_top_level_header_object.html#3_11\n */\nexport class ExtendedContentDescriptionObjectState extends State {\n get(buf, off) {\n const tags = [];\n const view = new DataView(buf.buffer, off);\n const attrCount = view.getUint16(0, true);\n let pos = 2;\n for (let i = 0; i < attrCount; i += 1) {\n const nameLen = view.getUint16(pos, true);\n pos += 2;\n const name = parseUnicodeAttr(buf.subarray(off + pos, off + pos + nameLen));\n pos += nameLen;\n const valueType = view.getUint16(pos, true);\n pos += 2;\n const valueLen = view.getUint16(pos, true);\n pos += 2;\n const value = buf.subarray(off + pos, off + pos + valueLen);\n pos += valueLen;\n this.postProcessTag(tags, name, valueType, value);\n }\n return tags;\n }\n}\nExtendedContentDescriptionObjectState.guid = AsfGuid.ExtendedContentDescriptionObject;\n/**\n * 4.1 Extended Stream Properties Object (optional, 1 per media stream)\n * Ref: http://drang.s4.xrea.com/program/tips/id3tag/wmp/04_objects_in_the_asf_header_extension_object.html#4_1\n */\nexport class ExtendedStreamPropertiesObjectState extends State {\n get(buf, off) {\n const view = new DataView(buf.buffer, off);\n return {\n startTime: Token.UINT64_LE.get(buf, off),\n endTime: Token.UINT64_LE.get(buf, off + 8),\n dataBitrate: view.getInt32(12, true),\n bufferSize: view.getInt32(16, true),\n initialBufferFullness: view.getInt32(20, true),\n alternateDataBitrate: view.getInt32(24, true),\n alternateBufferSize: view.getInt32(28, true),\n alternateInitialBufferFullness: view.getInt32(32, true),\n maximumObjectSize: view.getInt32(36, true),\n flags: {\n reliableFlag: util.getBit(buf, off + 40, 0),\n seekableFlag: util.getBit(buf, off + 40, 1),\n resendLiveCleanpointsFlag: util.getBit(buf, off + 40, 2)\n },\n // flagsNumeric: Token.UINT32_LE.get(buf, off + 64),\n streamNumber: view.getInt16(42, true),\n streamLanguageId: view.getInt16(44, true),\n averageTimePerFrame: view.getInt32(52, true),\n streamNameCount: view.getInt32(54, true),\n payloadExtensionSystems: view.getInt32(56, true),\n streamNames: [], // ToDo\n streamPropertiesObject: null\n };\n }\n}\nExtendedStreamPropertiesObjectState.guid = AsfGuid.ExtendedStreamPropertiesObject;\n/**\n * 4.7 Metadata Object (optional, 0 or 1)\n * Ref: http://drang.s4.xrea.com/program/tips/id3tag/wmp/04_objects_in_the_asf_header_extension_object.html#4_7\n */\nexport class MetadataObjectState extends State {\n get(uint8Array, off) {\n const tags = [];\n const view = new DataView(uint8Array.buffer, off);\n const descriptionRecordsCount = view.getUint16(0, true);\n let pos = 2;\n for (let i = 0; i < descriptionRecordsCount; i += 1) {\n pos += 4;\n const nameLen = view.getUint16(pos, true);\n pos += 2;\n const dataType = view.getUint16(pos, true);\n pos += 2;\n const dataLen = view.getUint32(pos, true);\n pos += 4;\n const name = parseUnicodeAttr(uint8Array.subarray(off + pos, off + pos + nameLen));\n pos += nameLen;\n const data = uint8Array.subarray(off + pos, off + pos + dataLen);\n pos += dataLen;\n this.postProcessTag(tags, name, dataType, data);\n }\n return tags;\n }\n}\nMetadataObjectState.guid = AsfGuid.MetadataObject;\n// 4.8\tMetadata Library Object (optional, 0 or 1)\nexport class MetadataLibraryObjectState extends MetadataObjectState {\n}\nMetadataLibraryObjectState.guid = AsfGuid.MetadataLibraryObject;\n/**\n * Ref: https://msdn.microsoft.com/en-us/library/windows/desktop/dd757977(v=vs.85).aspx\n */\nexport class WmPictureToken {\n static fromBuffer(buffer) {\n const pic = new WmPictureToken(buffer.length);\n return pic.get(buffer, 0);\n }\n constructor(len) {\n this.len = len;\n }\n get(buffer, offset) {\n const view = new DataView(buffer.buffer, offset);\n const typeId = view.getUint8(0);\n const size = view.getInt32(1, true);\n let index = 5;\n while (view.getUint16(index) !== 0) {\n index += 2;\n }\n const format = new Token.StringType(index - 5, 'utf-16le').get(buffer, 5);\n while (view.getUint16(index) !== 0) {\n index += 2;\n }\n const description = new Token.StringType(index - 5, 'utf-16le').get(buffer, 5);\n return {\n type: AttachedPictureType[typeId],\n format,\n description,\n size,\n data: buffer.slice(index + 4)\n };\n }\n}\n"],"mappings":"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","names":["import_debug","parseWindowsGuid","guid","s","v","out","i","__name","Guid","_Guid","bytes","b","hx","n","g1","g2","g3","g4","g5","buf","offset","a","AsfGuid","_AsfGuid","__name","bin","offset","objectId","Guid","mediaType","guid","parseWindowsGuid","str","AsfGuid_default","getParserForAttr","i","attributeParsers","__name","parseUnicodeAttr","uint8Array","stripNulls","decodeString","parseByteArrayAttr","parseBoolAttr","parseDWordAttr","parseQWordAttr","parseWordAttr","buf","offset","UINT32_LE","UINT64_LE","UINT16_LE","AsfContentParseError","makeUnexpectedFileContentError","__name","TopLevelHeaderObjectToken","__name","buf","off","base","HeaderObjectToken","AsfContentParseError","UINT32_LE","objectSize","UINT64_LE","AsfGuid_default","State","header","tags","name","valueType","data","WmPictureToken","parseAttr","getParserForAttr","FilePropertiesObject","getBit","StreamPropertiesObject","HeaderExtensionObject","view","CodecListObjectHeader","BoundedReader","tokenizer","size","token","value","length","buffer","ignored","readString","reader","UINT16_LE","StringType","readCodecEntries","payloadSize","codecHeader","entries","i","readCodecEntry","readInformation","type","ContentDescriptionObjectState","_ContentDescriptionObjectState","pos","tagName","end","parseUnicodeAttr","ExtendedContentDescriptionObjectState","attrCount","nameLen","valueLen","ExtendedStreamPropertiesObjectState","MetadataObjectState","uint8Array","descriptionRecordsCount","dataType","dataLen","MetadataLibraryObjectState","_WmPictureToken","len","offset","typeId","index","format","description","AttachedPictureType","debug","initDebug","headerType","maxAsfMetadataObjectSize","AsfParser","BasicParser","__name","header","TopLevelHeaderObjectToken","AsfGuid_default","AsfContentParseError","numberOfObjectHeaders","remainingHeaderSize","tags","index","payloadSize","FilePropertiesObject","fpo","StreamPropertiesObject","spo","HeaderExtensionObject","extensionHeaderToken","extHeader","expectedExtensionSize","ContentDescriptionObjectState","ExtendedContentDescriptionObjectState","codecs","readCodecEntries","error","message","codec","TrackType","audioCodecs","id","value","remainingSize","containerType","HeaderObjectToken","objectType","fileSize","available","ignored","EndOfStreamError","extensionSize","ExtendedStreamPropertiesObjectState","MetadataObjectState","moTags","MetadataLibraryObjectState","mlTags"],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse","file":"/AsfParser-BPPBZCR7.js.map"} \ No newline at end of file +{"version":3,"sources":["/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/asf/AsfParser.js","/node_modules/.deno/win-guid@0.2.1/node_modules/win-guid/lib/guid.js","/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/asf/AsfGuid.js","/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/asf/AsfUtil.js","/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/asf/AsfObject.js"],"sourcesContent":["import initDebug from 'debug';\nimport { EndOfStreamError } from 'strtok3';\nimport { TrackType } from '../type.js';\nimport AsfGuid from './AsfGuid.js';\nimport * as AsfObject from './AsfObject.js';\nimport { BasicParser } from '../common/BasicParser.js';\nimport { AsfContentParseError } from './AsfObject.js';\nconst debug = initDebug('music-metadata:parser:ASF');\nconst headerType = 'asf';\nconst maxAsfMetadataObjectSize = 16 * 1024 * 1024;\n/**\n * Windows Media Metadata Usage Guidelines\n * - Ref: https://msdn.microsoft.com/en-us/library/ms867702.aspx\n *\n * Ref:\n * - https://tools.ietf.org/html/draft-fleischman-asf-01\n * - https://hwiegman.home.xs4all.nl/fileformats/asf/ASF_Specification.pdf\n * - http://drang.s4.xrea.com/program/tips/id3tag/wmp/index.html\n * - https://msdn.microsoft.com/en-us/library/windows/desktop/ee663575(v=vs.85).aspx\n */\nexport class AsfParser extends BasicParser {\n async parse() {\n const header = await this.tokenizer.readToken(AsfObject.TopLevelHeaderObjectToken);\n if (!header.objectId.equals(AsfGuid.HeaderObject)) {\n throw new AsfContentParseError(`expected asf header; but was not found; got: ${header.objectId.str}`);\n }\n if (header.numberOfHeaderObjects < 1 || header.numberOfHeaderObjects > 10000) {\n throw new AsfContentParseError(`Unrealistic number of ASF header objects: ${header.numberOfHeaderObjects}`);\n }\n await this.parseObjectHeaders(header.numberOfHeaderObjects, header.objectSize - AsfObject.TopLevelHeaderObjectToken.len);\n }\n async parseObjectHeaders(numberOfObjectHeaders, remainingHeaderSize) {\n let tags;\n for (let index = 0; index < numberOfObjectHeaders; ++index) {\n const { header, payloadSize } = await this.readObjectHeader(remainingHeaderSize, 'header');\n // Parse data part of the ASF Object\n debug('header GUID=%s', header.objectId.str);\n switch (header.objectId.str) {\n case AsfObject.FilePropertiesObject.guid.str: { // 3.2\n this.validateAllocationSize(payloadSize, 'File Properties Object');\n const fpo = await this.tokenizer.readToken(new AsfObject.FilePropertiesObject(header));\n this.metadata.setFormat('duration', Number(fpo.playDuration / BigInt(1000)) / 10000 - Number(fpo.preroll) / 1000);\n this.metadata.setFormat('bitrate', fpo.maximumBitrate);\n break;\n }\n case AsfObject.StreamPropertiesObject.guid.str: { // 3.3\n this.validateAllocationSize(payloadSize, 'Stream Properties Object');\n const spo = await this.tokenizer.readToken(new AsfObject.StreamPropertiesObject(header));\n this.metadata.setFormat('container', `ASF/${spo.streamType}`);\n break;\n }\n case AsfObject.HeaderExtensionObject.guid.str: { // 3.4\n const extensionHeaderToken = new AsfObject.HeaderExtensionObject();\n if (payloadSize < extensionHeaderToken.len) {\n throw new AsfContentParseError(`ASF Header Extension Object payload is too small: ${payloadSize} bytes`);\n }\n const extHeader = await this.tokenizer.readToken(extensionHeaderToken);\n const expectedExtensionSize = payloadSize - extensionHeaderToken.len;\n if (extHeader.extensionDataSize !== expectedExtensionSize) {\n throw new AsfContentParseError(`ASF extension data size ${extHeader.extensionDataSize} does not match enclosing payload size ${expectedExtensionSize}`);\n }\n await this.parseExtensionObject(extHeader.extensionDataSize);\n break;\n }\n case AsfObject.ContentDescriptionObjectState.guid.str: // 3.10\n this.validateAllocationSize(payloadSize, 'Content Description Object');\n tags = await this.tokenizer.readToken(new AsfObject.ContentDescriptionObjectState(header));\n await this.addTags(tags);\n break;\n case AsfObject.ExtendedContentDescriptionObjectState.guid.str: // 3.11\n this.validateAllocationSize(payloadSize, 'Extended Content Description Object');\n tags = await this.tokenizer.readToken(new AsfObject.ExtendedContentDescriptionObjectState(header));\n await this.addTags(tags);\n break;\n case AsfGuid.CodecListObject.str: {\n this.validateAllocationSize(payloadSize, 'Codec List Object');\n let codecs;\n try {\n codecs = await AsfObject.readCodecEntries(this.tokenizer, payloadSize);\n }\n catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n throw new AsfContentParseError(`Invalid ASF Codec List Object: ${message}`);\n }\n codecs.forEach(codec => {\n this.metadata.addStreamInfo({\n type: codec.type.videoCodec ? TrackType.video : TrackType.audio,\n codecName: codec.codecName\n });\n });\n const audioCodecs = codecs.filter(codec => codec.type.audioCodec).map(codec => codec.codecName).join('/');\n this.metadata.setFormat('codec', audioCodecs);\n break;\n }\n case AsfGuid.StreamBitratePropertiesObject.str:\n // ToDo?\n await this.ignorePayload(payloadSize, 'Stream Bitrate Properties Object');\n break;\n case AsfGuid.PaddingObject.str:\n // ToDo: register bytes pad\n debug('Padding: %s bytes', payloadSize);\n await this.ignorePayload(payloadSize, 'Padding Object');\n break;\n default:\n this.metadata.addWarning(`Ignore ASF-Object-GUID: ${header.objectId.str}`);\n debug('Ignore ASF-Object-GUID: %s', header.objectId.str);\n await this.ignorePayload(payloadSize, `object ${header.objectId.str}`);\n }\n remainingHeaderSize -= header.objectSize;\n }\n if (remainingHeaderSize !== 0) {\n throw new AsfContentParseError(`ASF header child objects leave ${remainingHeaderSize} payload byte(s) unaccounted`);\n }\n }\n async addTags(tags) {\n await Promise.all(tags.map(({ id, value }) => this.metadata.addTag(headerType, id, value)));\n }\n async readObjectHeader(remainingSize, containerType) {\n if (remainingSize < AsfObject.HeaderObjectToken.len) {\n throw new AsfContentParseError(`Insufficient ASF ${containerType} data for an object header: ${remainingSize} bytes`);\n }\n const header = await this.tokenizer.readToken(AsfObject.HeaderObjectToken);\n if (header.objectSize > remainingSize) {\n throw new AsfContentParseError(`ASF ${containerType} object size ${header.objectSize} exceeds remaining ${containerType} payload size ${remainingSize}`);\n }\n return {\n header,\n payloadSize: this.validatePayloadAvailability(header, `${containerType} object`)\n };\n }\n validatePayloadAvailability(header, objectType) {\n const payloadSize = header.objectSize - AsfObject.HeaderObjectToken.len;\n const fileSize = this.tokenizer.fileInfo.size;\n if (fileSize !== undefined) {\n const available = fileSize - this.tokenizer.position;\n if (payloadSize > available) {\n throw new AsfContentParseError(`ASF ${objectType} payload size ${payloadSize} exceeds available input size ${available}`);\n }\n }\n return payloadSize;\n }\n validateAllocationSize(payloadSize, objectType) {\n if (payloadSize > maxAsfMetadataObjectSize) {\n throw new AsfContentParseError(`ASF ${objectType} payload size ${payloadSize} exceeds allocation limit ${maxAsfMetadataObjectSize}`);\n }\n }\n async ignorePayload(payloadSize, objectType) {\n let ignored;\n try {\n ignored = await this.tokenizer.ignore(payloadSize);\n }\n catch (error) {\n if (error instanceof EndOfStreamError) {\n throw new AsfContentParseError(`Unexpected end of ASF ${objectType}`);\n }\n throw error;\n }\n if (ignored !== payloadSize) {\n throw new AsfContentParseError(`Unexpected end of ASF ${objectType}; missing ${payloadSize - ignored} bytes`);\n }\n }\n async parseExtensionObject(extensionSize) {\n while (extensionSize > 0) {\n const { header, payloadSize } = await this.readObjectHeader(extensionSize, 'extension');\n // Parse data part of the ASF Object\n switch (header.objectId.str) {\n case AsfObject.ExtendedStreamPropertiesObjectState.guid.str: // 4.1\n // ToDo: extended stream header properties are ignored\n this.validateAllocationSize(payloadSize, 'Extended Stream Properties Object');\n await this.tokenizer.readToken(new AsfObject.ExtendedStreamPropertiesObjectState(header));\n break;\n case AsfObject.MetadataObjectState.guid.str: { // 4.7\n this.validateAllocationSize(payloadSize, 'Metadata Object');\n const moTags = await this.tokenizer.readToken(new AsfObject.MetadataObjectState(header));\n await this.addTags(moTags);\n break;\n }\n case AsfObject.MetadataLibraryObjectState.guid.str: { // 4.8\n this.validateAllocationSize(payloadSize, 'Metadata Library Object');\n const mlTags = await this.tokenizer.readToken(new AsfObject.MetadataLibraryObjectState(header));\n await this.addTags(mlTags);\n break;\n }\n case AsfGuid.PaddingObject.str:\n // ToDo: register bytes pad\n await this.ignorePayload(payloadSize, 'extension Padding Object');\n break;\n case AsfGuid.CompatibilityObject.str:\n await this.ignorePayload(payloadSize, 'Compatibility Object');\n break;\n case AsfGuid.ASF_Index_Placeholder_Object.str:\n await this.ignorePayload(payloadSize, 'Index Placeholder Object');\n break;\n default:\n this.metadata.addWarning(`Ignore ASF-Object-GUID: ${header.objectId.str}`);\n // console.log(\"Ignore ASF-Object-GUID: %s\", header.objectId.str);\n await this.ignorePayload(payloadSize, `extension object ${header.objectId.str}`);\n break;\n }\n extensionSize -= header.objectSize;\n }\n }\n}\n","/**\n * Parse canonical GUID string (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)\n * into Windows / CFBF byte order.\n */\nexport function parseWindowsGuid(guid) {\n let s = guid.trim();\n // Keep validation readable and strict, avoid lowercasing allocations\n if (s.length !== 36 ||\n s[8] !== \"-\" ||\n s[13] !== \"-\" ||\n s[18] !== \"-\" ||\n s[23] !== \"-\") {\n throw new Error(`Invalid GUID format: ${guid}`);\n }\n let v;\n const out = new Uint8Array(16);\n // Data1: 8 hex, uint32 little-endian\n v = parseInt(s.slice(0, 8), 16);\n out[0] = v & 0xff;\n out[1] = (v >>> 8) & 0xff;\n out[2] = (v >>> 16) & 0xff;\n out[3] = (v >>> 24) & 0xff;\n // Data2: 4 hex, uint16 little-endian\n v = parseInt(s.slice(9, 13), 16);\n out[4] = v & 0xff;\n out[5] = (v >>> 8) & 0xff;\n // Data3: 4 hex, uint16 little-endian\n v = parseInt(s.slice(14, 18), 16);\n out[6] = v & 0xff;\n out[7] = (v >>> 8) & 0xff;\n // Data4: 4 hex, as-is (string order)\n v = parseInt(s.slice(19, 23), 16);\n out[8] = (v >>> 8) & 0xff;\n out[9] = v & 0xff;\n // Data5: 12 hex, 6 bytes, as-is (string order)\n // Parse as two chunks to avoid any precision worries, keep it simple.\n v = parseInt(s.slice(24, 32), 16); // 8 hex -> 4 bytes\n out[10] = (v >>> 24) & 0xff;\n out[11] = (v >>> 16) & 0xff;\n out[12] = (v >>> 8) & 0xff;\n out[13] = v & 0xff;\n v = parseInt(s.slice(32, 36), 16); // 4 hex -> 2 bytes\n out[14] = (v >>> 8) & 0xff;\n out[15] = v & 0xff;\n // Ensure all parsed parts were valid hex (parseInt can yield NaN)\n for (let i = 0; i < 16; i++) {\n if (!Number.isFinite(out[i])) {\n throw new Error(`Invalid GUID format: ${guid}`);\n }\n }\n // Also catch NaN early (more useful error locality)\n // If any parseInt produced NaN, assignments above would have become 0,\n // so instead validate hex characters directly with a lightweight check.\n // (Keeps code small while staying strict.)\n if (!/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/.test(s)) {\n throw new Error(`Invalid GUID format: ${guid}`);\n }\n return out;\n}\nexport class Guid {\n constructor(bytes) {\n if (bytes.length !== 16)\n throw new Error(\"GUID must be exactly 16 bytes\");\n this.bytes = bytes;\n }\n static fromString(guid) {\n return new Guid(parseWindowsGuid(guid));\n }\n /**\n * Convert Windows / CFBF byte order into canonical GUID string:\n * xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\n */\n toString() {\n const b = this.bytes;\n const hx = (n) => n.toString(16).padStart(2, \"0\");\n // Data1 (uint32 LE) -> big-endian text\n const g1 = hx(b[3]) + hx(b[2]) + hx(b[1]) + hx(b[0]);\n // Data2 (uint16 LE)\n const g2 = hx(b[5]) + hx(b[4]);\n // Data3 (uint16 LE)\n const g3 = hx(b[7]) + hx(b[6]);\n // Data4 (as-is)\n const g4 = hx(b[8]) + hx(b[9]);\n // Data5 (as-is)\n const g5 = hx(b[10]) +\n hx(b[11]) +\n hx(b[12]) +\n hx(b[13]) +\n hx(b[14]) +\n hx(b[15]);\n return `${g1}-${g2}-${g3}-${g4}-${g5}`.toUpperCase();\n }\n /**\n * Compare against a Uint8Array containing GUID bytes\n * in Windows / CFBF layout.\n */\n equals(buf, offset = 0) {\n if (offset < 0 || buf.length - offset < 16)\n return false;\n const a = this.bytes;\n for (let i = 0; i < 16; i++) {\n if (buf[offset + i] !== a[i])\n return false;\n }\n return true;\n }\n}\n","import { parseWindowsGuid, Guid } from 'win-guid';\n/**\n * Ref:\n * - https://tools.ietf.org/html/draft-fleischman-asf-01, Appendix A: ASF GUIDs\n * - http://drang.s4.xrea.com/program/tips/id3tag/wmp/10_asf_guids.html\n * - http://drang.s4.xrea.com/program/tips/id3tag/wmp/index.html\n * - http://drang.s4.xrea.com/program/tips/id3tag/wmp/10_asf_guids.html\n *\n * ASF File Structure:\n * - https://msdn.microsoft.com/en-us/library/windows/desktop/ee663575(v=vs.85).aspx\n *\n * ASF GUIDs:\n * - http://drang.s4.xrea.com/program/tips/id3tag/wmp/10_asf_guids.html\n * - https://github.com/dji-sdk/FFmpeg/blob/master/libavformat/asf.c\n */\nclass AsfGuid {\n static fromBin(bin, offset = 0) {\n return new AsfGuid(AsfGuid.decode(bin, offset));\n }\n /**\n * Decode GUID in format like \"B503BF5F-2EA9-CF11-8EE3-00C00C205365\"\n * @param objectId Binary GUID\n * @param offset Read offset in bytes, default 0\n * @returns GUID as dashed hexadecimal representation\n */\n static decode(objectId, offset = 0) {\n return new Guid(objectId.subarray(offset, offset + 16)).toString();\n }\n /**\n * Decode stream type\n * @param mediaType Media type GUID\n * @returns Media type\n */\n static decodeMediaType(mediaType) {\n switch (mediaType.str) {\n case AsfGuid.AudioMedia.str: return 'audio';\n case AsfGuid.VideoMedia.str: return 'video';\n case AsfGuid.CommandMedia.str: return 'command';\n case AsfGuid.Degradable_JPEG_Media.str: return 'degradable-jpeg';\n case AsfGuid.FileTransferMedia.str: return 'file-transfer';\n case AsfGuid.BinaryMedia.str: return 'binary';\n }\n }\n /**\n * Encode GUID\n * @param guid GUID like: \"B503BF5F-2EA9-CF11-8EE3-00C00C205365\"\n * @returns Encoded Binary GUID\n */\n static encode(guid) {\n return parseWindowsGuid(guid);\n }\n constructor(str) {\n this.str = str;\n }\n equals(guid) {\n return this.str === guid.str;\n }\n toBin() {\n return AsfGuid.encode(this.str);\n }\n}\n// 10.1 Top-level ASF object GUIDs\nAsfGuid.HeaderObject = new AsfGuid(\"75B22630-668E-11CF-A6D9-00AA0062CE6C\");\nAsfGuid.DataObject = new AsfGuid(\"75B22636-668E-11CF-A6D9-00AA0062CE6C\");\nAsfGuid.SimpleIndexObject = new AsfGuid(\"33000890-E5B1-11CF-89F4-00A0C90349CB\");\nAsfGuid.IndexObject = new AsfGuid(\"D6E229D3-35DA-11D1-9034-00A0C90349BE\");\nAsfGuid.MediaObjectIndexObject = new AsfGuid(\"FEB103F8-12AD-4C64-840F-2A1D2F7AD48C\");\nAsfGuid.TimecodeIndexObject = new AsfGuid(\"3CB73FD0-0C4A-4803-953D-EDF7B6228F0C\");\n// 10.2 Header Object GUIDs\nAsfGuid.FilePropertiesObject = new AsfGuid(\"8CABDCA1-A947-11CF-8EE4-00C00C205365\");\nAsfGuid.StreamPropertiesObject = new AsfGuid(\"B7DC0791-A9B7-11CF-8EE6-00C00C205365\");\nAsfGuid.HeaderExtensionObject = new AsfGuid(\"5FBF03B5-A92E-11CF-8EE3-00C00C205365\");\nAsfGuid.CodecListObject = new AsfGuid(\"86D15240-311D-11D0-A3A4-00A0C90348F6\");\nAsfGuid.ScriptCommandObject = new AsfGuid(\"1EFB1A30-0B62-11D0-A39B-00A0C90348F6\");\nAsfGuid.MarkerObject = new AsfGuid(\"F487CD01-A951-11CF-8EE6-00C00C205365\");\nAsfGuid.BitrateMutualExclusionObject = new AsfGuid(\"D6E229DC-35DA-11D1-9034-00A0C90349BE\");\nAsfGuid.ErrorCorrectionObject = new AsfGuid(\"75B22635-668E-11CF-A6D9-00AA0062CE6C\");\nAsfGuid.ContentDescriptionObject = new AsfGuid(\"75B22633-668E-11CF-A6D9-00AA0062CE6C\");\nAsfGuid.ExtendedContentDescriptionObject = new AsfGuid(\"D2D0A440-E307-11D2-97F0-00A0C95EA850\");\nAsfGuid.ContentBrandingObject = new AsfGuid(\"2211B3FA-BD23-11D2-B4B7-00A0C955FC6E\");\nAsfGuid.StreamBitratePropertiesObject = new AsfGuid(\"7BF875CE-468D-11D1-8D82-006097C9A2B2\");\nAsfGuid.ContentEncryptionObject = new AsfGuid(\"2211B3FB-BD23-11D2-B4B7-00A0C955FC6E\");\nAsfGuid.ExtendedContentEncryptionObject = new AsfGuid(\"298AE614-2622-4C17-B935-DAE07EE9289C\");\nAsfGuid.DigitalSignatureObject = new AsfGuid(\"2211B3FC-BD23-11D2-B4B7-00A0C955FC6E\");\nAsfGuid.PaddingObject = new AsfGuid(\"1806D474-CADF-4509-A4BA-9AABCB96AAE8\");\n// 10.3 Header Extension Object GUIDs\nAsfGuid.ExtendedStreamPropertiesObject = new AsfGuid(\"14E6A5CB-C672-4332-8399-A96952065B5A\");\nAsfGuid.AdvancedMutualExclusionObject = new AsfGuid(\"A08649CF-4775-4670-8A16-6E35357566CD\");\nAsfGuid.GroupMutualExclusionObject = new AsfGuid(\"D1465A40-5A79-4338-B71B-E36B8FD6C249\");\nAsfGuid.StreamPrioritizationObject = new AsfGuid(\"D4FED15B-88D3-454F-81F0-ED5C45999E24\");\nAsfGuid.BandwidthSharingObject = new AsfGuid(\"A69609E6-517B-11D2-B6AF-00C04FD908E9\");\nAsfGuid.LanguageListObject = new AsfGuid(\"7C4346A9-EFE0-4BFC-B229-393EDE415C85\");\nAsfGuid.MetadataObject = new AsfGuid(\"C5F8CBEA-5BAF-4877-8467-AA8C44FA4CCA\");\nAsfGuid.MetadataLibraryObject = new AsfGuid(\"44231C94-9498-49D1-A141-1D134E457054\");\nAsfGuid.IndexParametersObject = new AsfGuid(\"D6E229DF-35DA-11D1-9034-00A0C90349BE\");\nAsfGuid.MediaObjectIndexParametersObject = new AsfGuid(\"6B203BAD-3F11-48E4-ACA8-D7613DE2CFA7\");\nAsfGuid.TimecodeIndexParametersObject = new AsfGuid(\"F55E496D-9797-4B5D-8C8B-604DFE9BFB24\");\nAsfGuid.CompatibilityObject = new AsfGuid(\"26F18B5D-4584-47EC-9F5F-0E651F0452C9\");\nAsfGuid.AdvancedContentEncryptionObject = new AsfGuid(\"43058533-6981-49E6-9B74-AD12CB86D58C\");\n// 10.4 Stream Properties Object Stream Type GUIDs\nAsfGuid.AudioMedia = new AsfGuid(\"F8699E40-5B4D-11CF-A8FD-00805F5C442B\");\nAsfGuid.VideoMedia = new AsfGuid(\"BC19EFC0-5B4D-11CF-A8FD-00805F5C442B\");\nAsfGuid.CommandMedia = new AsfGuid(\"59DACFC0-59E6-11D0-A3AC-00A0C90348F6\");\nAsfGuid.JFIF_Media = new AsfGuid(\"B61BE100-5B4E-11CF-A8FD-00805F5C442B\");\nAsfGuid.Degradable_JPEG_Media = new AsfGuid(\"35907DE0-E415-11CF-A917-00805F5C442B\");\nAsfGuid.FileTransferMedia = new AsfGuid(\"91BD222C-F21C-497A-8B6D-5AA86BFC0185\");\nAsfGuid.BinaryMedia = new AsfGuid(\"3AFB65E2-47EF-40F2-AC2C-70A90D71D343\");\nAsfGuid.ASF_Index_Placeholder_Object = new AsfGuid(\"D9AADE20-7C17-4F9C-BC28-8555DD98E2A2\");\nexport default AsfGuid;\n","import * as Token from 'token-types';\nimport * as util from '../common/Util.js';\nexport function getParserForAttr(i) {\n return attributeParsers[i];\n}\nexport function parseUnicodeAttr(uint8Array) {\n return util.stripNulls(util.decodeString(uint8Array, 'utf-16le'));\n}\nconst attributeParsers = [\n parseUnicodeAttr,\n parseByteArrayAttr,\n parseBoolAttr,\n parseDWordAttr,\n parseQWordAttr,\n parseWordAttr,\n parseByteArrayAttr\n];\nfunction parseByteArrayAttr(buf) {\n return new Uint8Array(buf);\n}\nfunction parseBoolAttr(buf, offset = 0) {\n return parseWordAttr(buf, offset) === 1;\n}\nfunction parseDWordAttr(buf, offset = 0) {\n return Token.UINT32_LE.get(buf, offset);\n}\nfunction parseQWordAttr(buf, offset = 0) {\n return Token.UINT64_LE.get(buf, offset);\n}\nfunction parseWordAttr(buf, offset = 0) {\n return Token.UINT16_LE.get(buf, offset);\n}\n","// ASF Objects\nimport * as Token from 'token-types';\nimport * as util from '../common/Util.js';\nimport AsfGuid from './AsfGuid.js';\nimport { getParserForAttr, parseUnicodeAttr } from './AsfUtil.js';\nimport { AttachedPictureType } from '../id3v2/ID3v2Token.js';\nimport { makeUnexpectedFileContentError } from '../ParseError.js';\nexport class AsfContentParseError extends makeUnexpectedFileContentError('ASF') {\n}\n/**\n * Data Type: Specifies the type of information being stored. The following values are recognized.\n */\nexport const DataType = {\n /**\n * Unicode string. The data consists of a sequence of Unicode characters.\n */\n UnicodeString: 0,\n /**\n * BYTE array. The type of data is implementation-specific.\n */\n ByteArray: 1,\n /**\n * BOOL. The data is 2 bytes long and should be interpreted as a 16-bit unsigned integer. Only 0x0000 or 0x0001 are permitted values.\n */\n Bool: 2,\n /**\n * DWORD. The data is 4 bytes long and should be interpreted as a 32-bit unsigned integer.\n */\n DWord: 3,\n /**\n * QWORD. The data is 8 bytes long and should be interpreted as a 64-bit unsigned integer.\n */\n QWord: 4,\n /**\n * WORD. The data is 2 bytes long and should be interpreted as a 16-bit unsigned integer.\n */\n Word: 5\n};\n/**\n * Token for: 3. ASF top-level Header Object\n * Ref: http://drang.s4.xrea.com/program/tips/id3tag/wmp/03_asf_top_level_header_object.html#3\n */\nexport const TopLevelHeaderObjectToken = {\n len: 30,\n get: (buf, off) => {\n const base = HeaderObjectToken.get(buf, off);\n if (base.objectSize < TopLevelHeaderObjectToken.len) {\n throw new AsfContentParseError(`Invalid ASF top-level header object size: ${base.objectSize}`);\n }\n return {\n ...base,\n numberOfHeaderObjects: Token.UINT32_LE.get(buf, off + 24)\n // reserved: 2 bytes\n };\n }\n};\n/**\n * Token for: 3.1 Header Object (mandatory, one only)\n * Ref: http://drang.s4.xrea.com/program/tips/id3tag/wmp/03_asf_top_level_header_object.html#3_1\n */\nexport const HeaderObjectToken = {\n len: 24,\n get: (buf, off) => {\n const objectSize = Token.UINT64_LE.get(buf, off + 16);\n if (objectSize < BigInt(HeaderObjectToken.len) || objectSize > BigInt(Number.MAX_SAFE_INTEGER)) {\n throw new AsfContentParseError(`Invalid ASF header object size: ${objectSize}`);\n }\n const header = {\n objectId: AsfGuid.fromBin(buf, off),\n objectSize: Number(objectSize)\n };\n return header;\n }\n};\nexport class State {\n constructor(header) {\n this.len = header.objectSize - HeaderObjectToken.len;\n }\n postProcessTag(tags, name, valueType, data) {\n if (name === 'WM/Picture') {\n tags.push({ id: name, value: WmPictureToken.fromBuffer(data) });\n }\n else {\n const parseAttr = getParserForAttr(valueType);\n if (!parseAttr) {\n throw new AsfContentParseError(`unexpected value headerType: ${valueType}`);\n }\n tags.push({ id: name, value: parseAttr(data) });\n }\n }\n}\n/**\n * Token for: 3.2: File Properties Object (mandatory, one only)\n * Ref: http://drang.s4.xrea.com/program/tips/id3tag/wmp/03_asf_top_level_header_object.html#3_2\n */\nexport class FilePropertiesObject extends State {\n get(buf, off) {\n return {\n fileId: AsfGuid.fromBin(buf, off),\n fileSize: Token.UINT64_LE.get(buf, off + 16),\n creationDate: Token.UINT64_LE.get(buf, off + 24),\n dataPacketsCount: Token.UINT64_LE.get(buf, off + 32),\n playDuration: Token.UINT64_LE.get(buf, off + 40),\n sendDuration: Token.UINT64_LE.get(buf, off + 48),\n preroll: Token.UINT64_LE.get(buf, off + 56),\n flags: {\n broadcast: util.getBit(buf, off + 64, 24),\n seekable: util.getBit(buf, off + 64, 25)\n },\n // flagsNumeric: Token.UINT32_LE.get(buf, off + 64),\n minimumDataPacketSize: Token.UINT32_LE.get(buf, off + 68),\n maximumDataPacketSize: Token.UINT32_LE.get(buf, off + 72),\n maximumBitrate: Token.UINT32_LE.get(buf, off + 76)\n };\n }\n}\nFilePropertiesObject.guid = AsfGuid.FilePropertiesObject;\n/**\n * Token for: 3.3 Stream Properties Object (mandatory, one per stream)\n * Ref: http://drang.s4.xrea.com/program/tips/id3tag/wmp/03_asf_top_level_header_object.html#3_3\n */\nexport class StreamPropertiesObject extends State {\n get(buf, off) {\n return {\n streamType: AsfGuid.decodeMediaType(AsfGuid.fromBin(buf, off)),\n errorCorrectionType: AsfGuid.fromBin(buf, off + 8)\n // ToDo\n };\n }\n}\nStreamPropertiesObject.guid = AsfGuid.StreamPropertiesObject;\n/**\n * 3.4: Header Extension Object (mandatory, one only)\n * Ref: http://drang.s4.xrea.com/program/tips/id3tag/wmp/03_asf_top_level_header_object.html#3_4\n */\nexport class HeaderExtensionObject {\n constructor() {\n this.len = 22;\n }\n get(buf, off) {\n const view = new DataView(buf.buffer, off);\n return {\n reserved1: AsfGuid.fromBin(buf, off),\n reserved2: view.getUint16(16, true),\n extensionDataSize: view.getUint32(18, true)\n };\n }\n}\nHeaderExtensionObject.guid = AsfGuid.HeaderExtensionObject;\n/**\n * 3.5: The Codec List Object provides user-friendly information about the codecs and formats used to encode the content found in the ASF file.\n * Ref: http://drang.s4.xrea.com/program/tips/id3tag/wmp/03_asf_top_level_header_object.html#3_5\n */\nconst CodecListObjectHeader = {\n len: 20,\n get: (buf, off) => {\n const view = new DataView(buf.buffer, off);\n return {\n entryCount: view.getUint16(16, true)\n };\n }\n};\nclass BoundedReader {\n constructor(tokenizer, size) {\n this.tokenizer = tokenizer;\n this.remaining = size;\n }\n async readToken(token) {\n this.ensureAvailable(token.len);\n const value = await this.tokenizer.readToken(token);\n this.remaining -= token.len;\n return value;\n }\n async readNumber(token) {\n return this.readToken(token);\n }\n async readBuffer(length) {\n this.ensureAvailable(length);\n const buffer = new Uint8Array(length);\n await this.tokenizer.readBuffer(buffer);\n this.remaining -= length;\n return buffer;\n }\n async ignoreRemaining() {\n const ignored = await this.tokenizer.ignore(this.remaining);\n if (ignored !== this.remaining) {\n throw new AsfContentParseError(`Unexpected end of ASF Codec List Object; missing ${this.remaining - ignored} bytes`);\n }\n this.remaining = 0;\n }\n ensureAvailable(length) {\n if (length > this.remaining) {\n throw new AsfContentParseError(`ASF Codec List field size ${length} exceeds remaining object payload size ${this.remaining}`);\n }\n }\n}\nasync function readString(reader) {\n const length = await reader.readNumber(Token.UINT16_LE);\n return (await reader.readToken(new Token.StringType(length * 2, 'utf-16le'))).replace('\\0', '');\n}\n/**\n * 3.5: Read the Codec-List-Object, which provides user-friendly information about the codecs and formats used to encode the content found in the ASF file.\n * Ref: http://drang.s4.xrea.com/program/tips/id3tag/wmp/03_asf_top_level_header_object.html#3_5\n */\nexport async function readCodecEntries(tokenizer, payloadSize) {\n const reader = new BoundedReader(tokenizer, payloadSize);\n const codecHeader = await reader.readToken(CodecListObjectHeader);\n const entries = [];\n for (let i = 0; i < codecHeader.entryCount; ++i) {\n entries.push(await readCodecEntry(reader));\n }\n await reader.ignoreRemaining();\n return entries;\n}\nasync function readInformation(reader) {\n const length = await reader.readNumber(Token.UINT16_LE);\n return reader.readBuffer(length);\n}\n/**\n * Read Codec-Entries\n * @param reader\n */\nasync function readCodecEntry(reader) {\n const type = await reader.readNumber(Token.UINT16_LE);\n return {\n type: {\n videoCodec: (type & 0x0001) === 0x0001,\n audioCodec: (type & 0x0002) === 0x0002\n },\n codecName: await readString(reader),\n description: await readString(reader),\n information: await readInformation(reader)\n };\n}\n/**\n * 3.10 Content Description Object (optional, one only)\n * Ref: http://drang.s4.xrea.com/program/tips/id3tag/wmp/03_asf_top_level_header_object.html#3_10\n */\nexport class ContentDescriptionObjectState extends State {\n get(buf, off) {\n const tags = [];\n const view = new DataView(buf.buffer, off);\n let pos = 10;\n for (let i = 0; i < ContentDescriptionObjectState.contentDescTags.length; ++i) {\n const length = view.getUint16(i * 2, true);\n if (length > 0) {\n const tagName = ContentDescriptionObjectState.contentDescTags[i];\n const end = pos + length;\n tags.push({ id: tagName, value: parseUnicodeAttr(buf.subarray(off + pos, off + end)) });\n pos = end;\n }\n }\n return tags;\n }\n}\nContentDescriptionObjectState.guid = AsfGuid.ContentDescriptionObject;\nContentDescriptionObjectState.contentDescTags = ['Title', 'Author', 'Copyright', 'Description', 'Rating'];\n/**\n * 3.11 Extended Content Description Object (optional, one only)\n * Ref: http://drang.s4.xrea.com/program/tips/id3tag/wmp/03_asf_top_level_header_object.html#3_11\n */\nexport class ExtendedContentDescriptionObjectState extends State {\n get(buf, off) {\n const tags = [];\n const view = new DataView(buf.buffer, off);\n const attrCount = view.getUint16(0, true);\n let pos = 2;\n for (let i = 0; i < attrCount; i += 1) {\n const nameLen = view.getUint16(pos, true);\n pos += 2;\n const name = parseUnicodeAttr(buf.subarray(off + pos, off + pos + nameLen));\n pos += nameLen;\n const valueType = view.getUint16(pos, true);\n pos += 2;\n const valueLen = view.getUint16(pos, true);\n pos += 2;\n const value = buf.subarray(off + pos, off + pos + valueLen);\n pos += valueLen;\n this.postProcessTag(tags, name, valueType, value);\n }\n return tags;\n }\n}\nExtendedContentDescriptionObjectState.guid = AsfGuid.ExtendedContentDescriptionObject;\n/**\n * 4.1 Extended Stream Properties Object (optional, 1 per media stream)\n * Ref: http://drang.s4.xrea.com/program/tips/id3tag/wmp/04_objects_in_the_asf_header_extension_object.html#4_1\n */\nexport class ExtendedStreamPropertiesObjectState extends State {\n get(buf, off) {\n const view = new DataView(buf.buffer, off);\n return {\n startTime: Token.UINT64_LE.get(buf, off),\n endTime: Token.UINT64_LE.get(buf, off + 8),\n dataBitrate: view.getInt32(12, true),\n bufferSize: view.getInt32(16, true),\n initialBufferFullness: view.getInt32(20, true),\n alternateDataBitrate: view.getInt32(24, true),\n alternateBufferSize: view.getInt32(28, true),\n alternateInitialBufferFullness: view.getInt32(32, true),\n maximumObjectSize: view.getInt32(36, true),\n flags: {\n reliableFlag: util.getBit(buf, off + 40, 0),\n seekableFlag: util.getBit(buf, off + 40, 1),\n resendLiveCleanpointsFlag: util.getBit(buf, off + 40, 2)\n },\n // flagsNumeric: Token.UINT32_LE.get(buf, off + 64),\n streamNumber: view.getInt16(42, true),\n streamLanguageId: view.getInt16(44, true),\n averageTimePerFrame: view.getInt32(52, true),\n streamNameCount: view.getInt32(54, true),\n payloadExtensionSystems: view.getInt32(56, true),\n streamNames: [], // ToDo\n streamPropertiesObject: null\n };\n }\n}\nExtendedStreamPropertiesObjectState.guid = AsfGuid.ExtendedStreamPropertiesObject;\n/**\n * 4.7 Metadata Object (optional, 0 or 1)\n * Ref: http://drang.s4.xrea.com/program/tips/id3tag/wmp/04_objects_in_the_asf_header_extension_object.html#4_7\n */\nexport class MetadataObjectState extends State {\n get(uint8Array, off) {\n const tags = [];\n const view = new DataView(uint8Array.buffer, off);\n const descriptionRecordsCount = view.getUint16(0, true);\n let pos = 2;\n for (let i = 0; i < descriptionRecordsCount; i += 1) {\n pos += 4;\n const nameLen = view.getUint16(pos, true);\n pos += 2;\n const dataType = view.getUint16(pos, true);\n pos += 2;\n const dataLen = view.getUint32(pos, true);\n pos += 4;\n const name = parseUnicodeAttr(uint8Array.subarray(off + pos, off + pos + nameLen));\n pos += nameLen;\n const data = uint8Array.subarray(off + pos, off + pos + dataLen);\n pos += dataLen;\n this.postProcessTag(tags, name, dataType, data);\n }\n return tags;\n }\n}\nMetadataObjectState.guid = AsfGuid.MetadataObject;\n// 4.8\tMetadata Library Object (optional, 0 or 1)\nexport class MetadataLibraryObjectState extends MetadataObjectState {\n}\nMetadataLibraryObjectState.guid = AsfGuid.MetadataLibraryObject;\n/**\n * Ref: https://msdn.microsoft.com/en-us/library/windows/desktop/dd757977(v=vs.85).aspx\n */\nexport class WmPictureToken {\n static fromBuffer(buffer) {\n const pic = new WmPictureToken(buffer.length);\n return pic.get(buffer, 0);\n }\n constructor(len) {\n this.len = len;\n }\n get(buffer, offset) {\n const view = new DataView(buffer.buffer, offset);\n const typeId = view.getUint8(0);\n const size = view.getInt32(1, true);\n let index = 5;\n while (view.getUint16(index) !== 0) {\n index += 2;\n }\n const format = new Token.StringType(index - 5, 'utf-16le').get(buffer, 5);\n while (view.getUint16(index) !== 0) {\n index += 2;\n }\n const description = new Token.StringType(index - 5, 'utf-16le').get(buffer, 5);\n return {\n type: AttachedPictureType[typeId],\n format,\n description,\n size,\n data: buffer.slice(index + 4)\n };\n }\n}\n"],"mappings":"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","names":["import_debug","parseWindowsGuid","guid","s","v","out","i","__name","Guid","_Guid","bytes","b","hx","n","g1","g2","g3","g4","g5","buf","offset","a","AsfGuid","_AsfGuid","__name","bin","offset","objectId","Guid","mediaType","guid","parseWindowsGuid","str","AsfGuid_default","getParserForAttr","i","attributeParsers","__name","parseUnicodeAttr","uint8Array","stripNulls","decodeString","parseByteArrayAttr","parseBoolAttr","parseDWordAttr","parseQWordAttr","parseWordAttr","buf","offset","UINT32_LE","UINT64_LE","UINT16_LE","AsfContentParseError","makeUnexpectedFileContentError","__name","TopLevelHeaderObjectToken","__name","buf","off","base","HeaderObjectToken","AsfContentParseError","UINT32_LE","objectSize","UINT64_LE","AsfGuid_default","State","header","tags","name","valueType","data","WmPictureToken","parseAttr","getParserForAttr","FilePropertiesObject","getBit","StreamPropertiesObject","HeaderExtensionObject","view","CodecListObjectHeader","BoundedReader","tokenizer","size","token","value","length","buffer","ignored","readString","reader","UINT16_LE","StringType","readCodecEntries","payloadSize","codecHeader","entries","i","readCodecEntry","readInformation","type","ContentDescriptionObjectState","_ContentDescriptionObjectState","pos","tagName","end","parseUnicodeAttr","ExtendedContentDescriptionObjectState","attrCount","nameLen","valueLen","ExtendedStreamPropertiesObjectState","MetadataObjectState","uint8Array","descriptionRecordsCount","dataType","dataLen","MetadataLibraryObjectState","_WmPictureToken","len","offset","typeId","index","format","description","AttachedPictureType","debug","initDebug","headerType","maxAsfMetadataObjectSize","AsfParser","BasicParser","__name","header","TopLevelHeaderObjectToken","AsfGuid_default","AsfContentParseError","numberOfObjectHeaders","remainingHeaderSize","tags","index","payloadSize","FilePropertiesObject","fpo","StreamPropertiesObject","spo","HeaderExtensionObject","extensionHeaderToken","extHeader","expectedExtensionSize","ContentDescriptionObjectState","ExtendedContentDescriptionObjectState","codecs","readCodecEntries","error","message","codec","TrackType","audioCodecs","id","value","remainingSize","containerType","HeaderObjectToken","objectType","fileSize","available","ignored","EndOfStreamError","extensionSize","ExtendedStreamPropertiesObjectState","MetadataObjectState","moTags","MetadataLibraryObjectState","mlTags"],"sourceRoot":"","file":"/AsfParser-BPPBZCR7.js.map"} \ No newline at end of file diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/DsdiffParser-G2OOLUSE.js b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/DsdiffParser-G2OOLUSE.js similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/DsdiffParser-G2OOLUSE.js rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/DsdiffParser-G2OOLUSE.js diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/DsdiffParser-G2OOLUSE.js.br b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/DsdiffParser-G2OOLUSE.js.br similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/DsdiffParser-G2OOLUSE.js.br rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/DsdiffParser-G2OOLUSE.js.br diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/DsdiffParser-G2OOLUSE.js.map b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/DsdiffParser-G2OOLUSE.js.map similarity index 98% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/DsdiffParser-G2OOLUSE.js.map rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/DsdiffParser-G2OOLUSE.js.map index ecd530f2..30bb9d4a 100644 --- a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/DsdiffParser-G2OOLUSE.js.map +++ b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/DsdiffParser-G2OOLUSE.js.map @@ -1 +1 @@ -{"version":3,"sources":["/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/dsdiff/DsdiffParser.js","/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/dsdiff/DsdiffToken.js"],"sourcesContent":["import * as Token from 'token-types';\nimport initDebug from 'debug';\nimport * as strtok3 from 'strtok3';\nimport { FourCcToken } from '../common/FourCC.js';\nimport { BasicParser } from '../common/BasicParser.js';\nimport { ID3v2Parser } from '../id3v2/ID3v2Parser.js';\nimport { ChunkHeader64 } from './DsdiffToken.js';\nimport { makeUnexpectedFileContentError } from '../ParseError.js';\nconst debug = initDebug('music-metadata:parser:aiff');\nexport class DsdiffContentParseError extends makeUnexpectedFileContentError('DSDIFF') {\n}\n/**\n * DSDIFF - Direct Stream Digital Interchange File Format (Phillips)\n *\n * Ref:\n * - http://www.sonicstudio.com/pdf/dsd/DSDIFF_1.5_Spec.pdf\n */\nexport class DsdiffParser extends BasicParser {\n async parse() {\n const header = await this.tokenizer.readToken(ChunkHeader64);\n if (header.chunkID !== 'FRM8')\n throw new DsdiffContentParseError('Unexpected chunk-ID');\n this.metadata.setAudioOnly();\n const type = (await this.tokenizer.readToken(FourCcToken)).trim();\n switch (type) {\n case 'DSD':\n this.metadata.setFormat('container', `DSDIFF/${type}`);\n this.metadata.setFormat('lossless', true);\n return this.readFmt8Chunks(header.chunkSize - BigInt(FourCcToken.len));\n default:\n throw new DsdiffContentParseError(`Unsupported DSDIFF type: ${type}`);\n }\n }\n async readFmt8Chunks(remainingSize) {\n while (remainingSize >= ChunkHeader64.len) {\n const chunkHeader = await this.tokenizer.readToken(ChunkHeader64);\n // If the data is an odd number of bytes in length, a pad byte must be added at the end\n debug(`Chunk id=${chunkHeader.chunkID}`);\n await this.readData(chunkHeader);\n remainingSize -= (BigInt(ChunkHeader64.len) + chunkHeader.chunkSize);\n }\n }\n async readData(header) {\n debug(`Reading data of chunk[ID=${header.chunkID}, size=${header.chunkSize}]`);\n const p0 = this.tokenizer.position;\n switch (header.chunkID.trim()) {\n case 'FVER': { // 3.1 FORMAT VERSION CHUNK\n const version = await this.tokenizer.readToken(Token.UINT32_LE);\n debug(`DSDIFF version=${version}`);\n break;\n }\n case 'PROP': { // 3.2 PROPERTY CHUNK\n const propType = await this.tokenizer.readToken(FourCcToken);\n if (propType !== 'SND ')\n throw new DsdiffContentParseError('Unexpected PROP-chunk ID');\n await this.handleSoundPropertyChunks(header.chunkSize - BigInt(FourCcToken.len));\n break;\n }\n case 'ID3': { // Unofficial ID3 tag support\n const id3_data = await this.tokenizer.readToken(new Token.Uint8ArrayType(Number(header.chunkSize)));\n const rst = strtok3.fromBuffer(id3_data);\n await new ID3v2Parser().parse(this.metadata, rst, this.options);\n break;\n }\n case 'DSD':\n if (this.metadata.format.numberOfChannels) {\n this.metadata.setFormat('numberOfSamples', Number(header.chunkSize * BigInt(8) / BigInt(this.metadata.format.numberOfChannels)));\n }\n if (this.metadata.format.numberOfSamples && this.metadata.format.sampleRate) {\n this.metadata.setFormat('duration', this.metadata.format.numberOfSamples / this.metadata.format.sampleRate);\n }\n break;\n default:\n debug(`Ignore chunk[ID=${header.chunkID}, size=${header.chunkSize}]`);\n break;\n }\n const remaining = header.chunkSize - BigInt(this.tokenizer.position - p0);\n if (remaining > 0) {\n debug(`After Parsing chunk, remaining ${remaining} bytes`);\n await this.tokenizer.ignore(Number(remaining));\n }\n }\n async handleSoundPropertyChunks(remainingSize) {\n debug(`Parsing sound-property-chunks, remainingSize=${remainingSize}`);\n while (remainingSize > 0) {\n const sndPropHeader = await this.tokenizer.readToken(ChunkHeader64);\n debug(`Sound-property-chunk[ID=${sndPropHeader.chunkID}, size=${sndPropHeader.chunkSize}]`);\n const p0 = this.tokenizer.position;\n switch (sndPropHeader.chunkID.trim()) {\n case 'FS': { // 3.2.1 Sample Rate Chunk\n const sampleRate = await this.tokenizer.readToken(Token.UINT32_BE);\n this.metadata.setFormat('sampleRate', sampleRate);\n break;\n }\n case 'CHNL': { // 3.2.2 Channels Chunk\n const numChannels = await this.tokenizer.readToken(Token.UINT16_BE);\n this.metadata.setFormat('numberOfChannels', numChannels);\n await this.handleChannelChunks(sndPropHeader.chunkSize - BigInt(Token.UINT16_BE.len));\n break;\n }\n case 'CMPR': { // 3.2.3 Compression Type Chunk\n const compressionIdCode = (await this.tokenizer.readToken(FourCcToken)).trim();\n const count = await this.tokenizer.readToken(Token.UINT8);\n const compressionName = await this.tokenizer.readToken(new Token.StringType(count, 'ascii'));\n if (compressionIdCode === 'DSD') {\n this.metadata.setFormat('lossless', true);\n this.metadata.setFormat('bitsPerSample', 1);\n }\n this.metadata.setFormat('codec', `${compressionIdCode} (${compressionName})`);\n break;\n }\n case 'ABSS': { // 3.2.4 Absolute Start Time Chunk\n const hours = await this.tokenizer.readToken(Token.UINT16_BE);\n const minutes = await this.tokenizer.readToken(Token.UINT8);\n const seconds = await this.tokenizer.readToken(Token.UINT8);\n const samples = await this.tokenizer.readToken(Token.UINT32_BE);\n debug(`ABSS ${hours}:${minutes}:${seconds}.${samples}`);\n break;\n }\n case 'LSCO': { // 3.2.5 Loudspeaker Configuration Chunk\n const lsConfig = await this.tokenizer.readToken(Token.UINT16_BE);\n debug(`LSCO lsConfig=${lsConfig}`);\n break;\n }\n default:\n debug(`Unknown sound-property-chunk[ID=${sndPropHeader.chunkID}, size=${sndPropHeader.chunkSize}]`);\n await this.tokenizer.ignore(Number(sndPropHeader.chunkSize));\n }\n const remaining = sndPropHeader.chunkSize - BigInt(this.tokenizer.position - p0);\n if (remaining > 0) {\n debug(`After Parsing sound-property-chunk ${sndPropHeader.chunkSize}, remaining ${remaining} bytes`);\n await this.tokenizer.ignore(Number(remaining));\n }\n remainingSize -= BigInt(ChunkHeader64.len) + sndPropHeader.chunkSize;\n debug(`Parsing sound-property-chunks, remainingSize=${remainingSize}`);\n }\n if (this.metadata.format.lossless && this.metadata.format.sampleRate && this.metadata.format.numberOfChannels && this.metadata.format.bitsPerSample) {\n const bitrate = this.metadata.format.sampleRate * this.metadata.format.numberOfChannels * this.metadata.format.bitsPerSample;\n this.metadata.setFormat('bitrate', bitrate);\n }\n }\n async handleChannelChunks(remainingSize) {\n debug(`Parsing channel-chunks, remainingSize=${remainingSize}`);\n const channels = [];\n while (remainingSize >= FourCcToken.len) {\n const channelId = await this.tokenizer.readToken(FourCcToken);\n debug(`Channel[ID=${channelId}]`);\n channels.push(channelId);\n remainingSize -= BigInt(FourCcToken.len);\n }\n debug(`Channels: ${channels.join(', ')}`);\n return channels;\n }\n}\n","import * as Token from 'token-types';\nimport { FourCcToken } from '../common/FourCC.js';\n/**\n * DSDIFF chunk header\n * The data-size encoding is deviating from EA-IFF 85\n * Ref: http://www.sonicstudio.com/pdf/dsd/DSDIFF_1.5_Spec.pdf\n */\nexport const ChunkHeader64 = {\n len: 12,\n get: (buf, off) => {\n return {\n // Group-ID\n chunkID: FourCcToken.get(buf, off),\n // Size\n chunkSize: Token.INT64_BE.get(buf, off + 4)\n };\n }\n};\n"],"mappings":"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","names":["import_debug","ChunkHeader64","__name","buf","off","FourCcToken","INT64_BE","debug","initDebug","DsdiffContentParseError","makeUnexpectedFileContentError","__name","DsdiffParser","BasicParser","header","ChunkHeader64","type","FourCcToken","remainingSize","chunkHeader","p0","version","UINT32_LE","id3_data","Uint8ArrayType","rst","fromBuffer","ID3v2Parser","remaining","sndPropHeader","sampleRate","UINT32_BE","numChannels","UINT16_BE","compressionIdCode","count","UINT8","compressionName","StringType","hours","minutes","seconds","samples","lsConfig","bitrate","channels","channelId"],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse","file":"/DsdiffParser-G2OOLUSE.js.map"} \ No newline at end of file +{"version":3,"sources":["/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/dsdiff/DsdiffParser.js","/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/dsdiff/DsdiffToken.js"],"sourcesContent":["import * as Token from 'token-types';\nimport initDebug from 'debug';\nimport * as strtok3 from 'strtok3';\nimport { FourCcToken } from '../common/FourCC.js';\nimport { BasicParser } from '../common/BasicParser.js';\nimport { ID3v2Parser } from '../id3v2/ID3v2Parser.js';\nimport { ChunkHeader64 } from './DsdiffToken.js';\nimport { makeUnexpectedFileContentError } from '../ParseError.js';\nconst debug = initDebug('music-metadata:parser:aiff');\nexport class DsdiffContentParseError extends makeUnexpectedFileContentError('DSDIFF') {\n}\n/**\n * DSDIFF - Direct Stream Digital Interchange File Format (Phillips)\n *\n * Ref:\n * - http://www.sonicstudio.com/pdf/dsd/DSDIFF_1.5_Spec.pdf\n */\nexport class DsdiffParser extends BasicParser {\n async parse() {\n const header = await this.tokenizer.readToken(ChunkHeader64);\n if (header.chunkID !== 'FRM8')\n throw new DsdiffContentParseError('Unexpected chunk-ID');\n this.metadata.setAudioOnly();\n const type = (await this.tokenizer.readToken(FourCcToken)).trim();\n switch (type) {\n case 'DSD':\n this.metadata.setFormat('container', `DSDIFF/${type}`);\n this.metadata.setFormat('lossless', true);\n return this.readFmt8Chunks(header.chunkSize - BigInt(FourCcToken.len));\n default:\n throw new DsdiffContentParseError(`Unsupported DSDIFF type: ${type}`);\n }\n }\n async readFmt8Chunks(remainingSize) {\n while (remainingSize >= ChunkHeader64.len) {\n const chunkHeader = await this.tokenizer.readToken(ChunkHeader64);\n // If the data is an odd number of bytes in length, a pad byte must be added at the end\n debug(`Chunk id=${chunkHeader.chunkID}`);\n await this.readData(chunkHeader);\n remainingSize -= (BigInt(ChunkHeader64.len) + chunkHeader.chunkSize);\n }\n }\n async readData(header) {\n debug(`Reading data of chunk[ID=${header.chunkID}, size=${header.chunkSize}]`);\n const p0 = this.tokenizer.position;\n switch (header.chunkID.trim()) {\n case 'FVER': { // 3.1 FORMAT VERSION CHUNK\n const version = await this.tokenizer.readToken(Token.UINT32_LE);\n debug(`DSDIFF version=${version}`);\n break;\n }\n case 'PROP': { // 3.2 PROPERTY CHUNK\n const propType = await this.tokenizer.readToken(FourCcToken);\n if (propType !== 'SND ')\n throw new DsdiffContentParseError('Unexpected PROP-chunk ID');\n await this.handleSoundPropertyChunks(header.chunkSize - BigInt(FourCcToken.len));\n break;\n }\n case 'ID3': { // Unofficial ID3 tag support\n const id3_data = await this.tokenizer.readToken(new Token.Uint8ArrayType(Number(header.chunkSize)));\n const rst = strtok3.fromBuffer(id3_data);\n await new ID3v2Parser().parse(this.metadata, rst, this.options);\n break;\n }\n case 'DSD':\n if (this.metadata.format.numberOfChannels) {\n this.metadata.setFormat('numberOfSamples', Number(header.chunkSize * BigInt(8) / BigInt(this.metadata.format.numberOfChannels)));\n }\n if (this.metadata.format.numberOfSamples && this.metadata.format.sampleRate) {\n this.metadata.setFormat('duration', this.metadata.format.numberOfSamples / this.metadata.format.sampleRate);\n }\n break;\n default:\n debug(`Ignore chunk[ID=${header.chunkID}, size=${header.chunkSize}]`);\n break;\n }\n const remaining = header.chunkSize - BigInt(this.tokenizer.position - p0);\n if (remaining > 0) {\n debug(`After Parsing chunk, remaining ${remaining} bytes`);\n await this.tokenizer.ignore(Number(remaining));\n }\n }\n async handleSoundPropertyChunks(remainingSize) {\n debug(`Parsing sound-property-chunks, remainingSize=${remainingSize}`);\n while (remainingSize > 0) {\n const sndPropHeader = await this.tokenizer.readToken(ChunkHeader64);\n debug(`Sound-property-chunk[ID=${sndPropHeader.chunkID}, size=${sndPropHeader.chunkSize}]`);\n const p0 = this.tokenizer.position;\n switch (sndPropHeader.chunkID.trim()) {\n case 'FS': { // 3.2.1 Sample Rate Chunk\n const sampleRate = await this.tokenizer.readToken(Token.UINT32_BE);\n this.metadata.setFormat('sampleRate', sampleRate);\n break;\n }\n case 'CHNL': { // 3.2.2 Channels Chunk\n const numChannels = await this.tokenizer.readToken(Token.UINT16_BE);\n this.metadata.setFormat('numberOfChannels', numChannels);\n await this.handleChannelChunks(sndPropHeader.chunkSize - BigInt(Token.UINT16_BE.len));\n break;\n }\n case 'CMPR': { // 3.2.3 Compression Type Chunk\n const compressionIdCode = (await this.tokenizer.readToken(FourCcToken)).trim();\n const count = await this.tokenizer.readToken(Token.UINT8);\n const compressionName = await this.tokenizer.readToken(new Token.StringType(count, 'ascii'));\n if (compressionIdCode === 'DSD') {\n this.metadata.setFormat('lossless', true);\n this.metadata.setFormat('bitsPerSample', 1);\n }\n this.metadata.setFormat('codec', `${compressionIdCode} (${compressionName})`);\n break;\n }\n case 'ABSS': { // 3.2.4 Absolute Start Time Chunk\n const hours = await this.tokenizer.readToken(Token.UINT16_BE);\n const minutes = await this.tokenizer.readToken(Token.UINT8);\n const seconds = await this.tokenizer.readToken(Token.UINT8);\n const samples = await this.tokenizer.readToken(Token.UINT32_BE);\n debug(`ABSS ${hours}:${minutes}:${seconds}.${samples}`);\n break;\n }\n case 'LSCO': { // 3.2.5 Loudspeaker Configuration Chunk\n const lsConfig = await this.tokenizer.readToken(Token.UINT16_BE);\n debug(`LSCO lsConfig=${lsConfig}`);\n break;\n }\n default:\n debug(`Unknown sound-property-chunk[ID=${sndPropHeader.chunkID}, size=${sndPropHeader.chunkSize}]`);\n await this.tokenizer.ignore(Number(sndPropHeader.chunkSize));\n }\n const remaining = sndPropHeader.chunkSize - BigInt(this.tokenizer.position - p0);\n if (remaining > 0) {\n debug(`After Parsing sound-property-chunk ${sndPropHeader.chunkSize}, remaining ${remaining} bytes`);\n await this.tokenizer.ignore(Number(remaining));\n }\n remainingSize -= BigInt(ChunkHeader64.len) + sndPropHeader.chunkSize;\n debug(`Parsing sound-property-chunks, remainingSize=${remainingSize}`);\n }\n if (this.metadata.format.lossless && this.metadata.format.sampleRate && this.metadata.format.numberOfChannels && this.metadata.format.bitsPerSample) {\n const bitrate = this.metadata.format.sampleRate * this.metadata.format.numberOfChannels * this.metadata.format.bitsPerSample;\n this.metadata.setFormat('bitrate', bitrate);\n }\n }\n async handleChannelChunks(remainingSize) {\n debug(`Parsing channel-chunks, remainingSize=${remainingSize}`);\n const channels = [];\n while (remainingSize >= FourCcToken.len) {\n const channelId = await this.tokenizer.readToken(FourCcToken);\n debug(`Channel[ID=${channelId}]`);\n channels.push(channelId);\n remainingSize -= BigInt(FourCcToken.len);\n }\n debug(`Channels: ${channels.join(', ')}`);\n return channels;\n }\n}\n","import * as Token from 'token-types';\nimport { FourCcToken } from '../common/FourCC.js';\n/**\n * DSDIFF chunk header\n * The data-size encoding is deviating from EA-IFF 85\n * Ref: http://www.sonicstudio.com/pdf/dsd/DSDIFF_1.5_Spec.pdf\n */\nexport const ChunkHeader64 = {\n len: 12,\n get: (buf, off) => {\n return {\n // Group-ID\n chunkID: FourCcToken.get(buf, off),\n // Size\n chunkSize: Token.INT64_BE.get(buf, off + 4)\n };\n }\n};\n"],"mappings":"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","names":["import_debug","ChunkHeader64","__name","buf","off","FourCcToken","INT64_BE","debug","initDebug","DsdiffContentParseError","makeUnexpectedFileContentError","__name","DsdiffParser","BasicParser","header","ChunkHeader64","type","FourCcToken","remainingSize","chunkHeader","p0","version","UINT32_LE","id3_data","Uint8ArrayType","rst","fromBuffer","ID3v2Parser","remaining","sndPropHeader","sampleRate","UINT32_BE","numChannels","UINT16_BE","compressionIdCode","count","UINT8","compressionName","StringType","hours","minutes","seconds","samples","lsConfig","bitrate","channels","channelId"],"sourceRoot":"","file":"/DsdiffParser-G2OOLUSE.js.map"} \ No newline at end of file diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/DsfParser-43FUWDHS.js b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/DsfParser-43FUWDHS.js similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/DsfParser-43FUWDHS.js rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/DsfParser-43FUWDHS.js diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/DsfParser-43FUWDHS.js.br b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/DsfParser-43FUWDHS.js.br similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/DsfParser-43FUWDHS.js.br rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/DsfParser-43FUWDHS.js.br diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/DsfParser-43FUWDHS.js.map b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/DsfParser-43FUWDHS.js.map similarity index 98% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/DsfParser-43FUWDHS.js.map rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/DsfParser-43FUWDHS.js.map index a6520b59..36ac6ea8 100644 --- a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/DsfParser-43FUWDHS.js.map +++ b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/DsfParser-43FUWDHS.js.map @@ -1 +1 @@ -{"version":3,"sources":["/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/dsf/DsfParser.js","/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/dsf/DsfChunk.js"],"sourcesContent":["import initDebug from 'debug';\nimport { AbstractID3Parser } from '../id3v2/AbstractID3Parser.js';\nimport { ChunkHeader, DsdChunk, FormatChunk } from './DsfChunk.js';\nimport { ID3v2Parser } from '../id3v2/ID3v2Parser.js';\nimport { makeUnexpectedFileContentError } from '../ParseError.js';\nimport { ID3v2Header } from '../id3v2/ID3v2Token.js';\nconst debug = initDebug('music-metadata:parser:DSF');\nexport class DsdContentParseError extends makeUnexpectedFileContentError('DSD') {\n}\n/**\n * DSF (dsd stream file) File Parser\n * Ref: https://dsd-guide.com/sites/default/files/white-papers/DSFFileFormatSpec_E.pdf\n */\nexport class DsfParser extends AbstractID3Parser {\n async postId3v2Parse() {\n const p0 = this.tokenizer.position; // mark start position, normally 0\n const chunkHeader = await this.tokenizer.readToken(ChunkHeader);\n if (chunkHeader.id !== 'DSD ') {\n throw new DsdContentParseError('Invalid chunk signature');\n }\n if (chunkHeader.size !== BigInt(ChunkHeader.len + DsdChunk.len)) {\n throw new DsdContentParseError(`Invalid DSD chunk size: ${chunkHeader.size}`);\n }\n this.metadata.setFormat('container', 'DSF');\n this.metadata.setFormat('lossless', true);\n this.metadata.setAudioOnly();\n const dsdChunk = await this.tokenizer.readToken(DsdChunk);\n if (dsdChunk.fileSize < chunkHeader.size) {\n throw new DsdContentParseError(`Invalid DSF file size: ${dsdChunk.fileSize}`);\n }\n await this.parseChunks(dsdChunk.fileSize - chunkHeader.size);\n if (dsdChunk.metadataPointer === 0n) {\n debug('No ID3v2 tag present');\n return;\n }\n debug(`expect ID3v2 at offset=${dsdChunk.metadataPointer}`);\n const metadataOffset = dsdChunk.metadataPointer - BigInt(this.tokenizer.position - p0);\n if (metadataOffset < 0n ||\n metadataOffset > BigInt(Number.MAX_SAFE_INTEGER) ||\n dsdChunk.metadataPointer + BigInt(ID3v2Header.len) > dsdChunk.fileSize) {\n throw new DsdContentParseError(`Invalid metadata pointer: ${dsdChunk.metadataPointer}`);\n }\n await this.tokenizer.ignore(Number(metadataOffset));\n return new ID3v2Parser().parse(this.metadata, this.tokenizer, this.options);\n }\n async parseChunks(bytesRemaining) {\n const chunkHeaderSize = BigInt(ChunkHeader.len);\n while (bytesRemaining >= chunkHeaderSize) {\n const chunkHeader = await this.tokenizer.readToken(ChunkHeader);\n debug(`Parsing chunk name=${chunkHeader.id} size=${chunkHeader.size}`);\n if (chunkHeader.size < chunkHeaderSize) {\n throw new DsdContentParseError(`Invalid ${chunkHeader.id} chunk size: ${chunkHeader.size}`);\n }\n if (chunkHeader.size > bytesRemaining) {\n throw new DsdContentParseError(`${chunkHeader.id} chunk exceeds remaining file size`);\n }\n const payloadSize = chunkHeader.size - chunkHeaderSize;\n switch (chunkHeader.id) {\n case 'fmt ': {\n if (payloadSize < BigInt(FormatChunk.len)) {\n throw new DsdContentParseError(`Invalid fmt chunk size: ${chunkHeader.size}`);\n }\n const formatChunk = await this.tokenizer.readToken(FormatChunk);\n this.metadata.setFormat('numberOfChannels', formatChunk.channelNum);\n this.metadata.setFormat('sampleRate', formatChunk.samplingFrequency);\n this.metadata.setFormat('bitsPerSample', formatChunk.bitsPerSample);\n this.metadata.setFormat('numberOfSamples', formatChunk.sampleCount);\n this.metadata.setFormat('duration', Number(formatChunk.sampleCount) / formatChunk.samplingFrequency);\n const bitrate = formatChunk.bitsPerSample *\n formatChunk.samplingFrequency *\n formatChunk.channelNum;\n this.metadata.setFormat('bitrate', bitrate);\n return; // We got what we want, stop further processing of chunks\n }\n default:\n await this.tokenizer.ignore(Number(payloadSize));\n break;\n }\n bytesRemaining -= chunkHeader.size;\n }\n }\n}\n","import * as Token from 'token-types';\nimport { FourCcToken } from '../common/FourCC.js';\n/**\n * Common chunk DSD header: the 'chunk name (Four-CC)' & chunk size\n */\nexport const ChunkHeader = {\n len: 12,\n get: (buf, off) => {\n return { id: FourCcToken.get(buf, off), size: Token.UINT64_LE.get(buf, off + 4) };\n }\n};\n/**\n * Common chunk DSD header: the 'chunk name (Four-CC)' & chunk size\n */\nexport const DsdChunk = {\n len: 16,\n get: (buf, off) => {\n return {\n fileSize: Token.UINT64_LE.get(buf, off),\n metadataPointer: Token.UINT64_LE.get(buf, off + 8)\n };\n }\n};\nexport const ChannelType = {\n mono: 1,\n stereo: 2,\n channels: 3,\n quad: 4,\n '4 channels': 5,\n '5 channels': 6,\n '5.1 channels': 7\n};\n/**\n * Common chunk DSD header: the 'chunk name (Four-CC)' & chunk size\n */\nexport const FormatChunk = {\n len: 40,\n get: (buf, off) => {\n return {\n formatVersion: Token.INT32_LE.get(buf, off),\n formatID: Token.INT32_LE.get(buf, off + 4),\n channelType: Token.INT32_LE.get(buf, off + 8),\n channelNum: Token.INT32_LE.get(buf, off + 12),\n samplingFrequency: Token.INT32_LE.get(buf, off + 16),\n bitsPerSample: Token.INT32_LE.get(buf, off + 20),\n sampleCount: Token.INT64_LE.get(buf, off + 24),\n blockSizePerChannel: Token.INT32_LE.get(buf, off + 32)\n };\n }\n};\n"],"mappings":"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","names":["import_debug","ChunkHeader","__name","buf","off","FourCcToken","UINT64_LE","DsdChunk","FormatChunk","__name","buf","off","INT32_LE","INT64_LE","debug","initDebug","DsdContentParseError","makeUnexpectedFileContentError","__name","DsfParser","AbstractID3Parser","p0","chunkHeader","ChunkHeader","DsdChunk","dsdChunk","metadataOffset","ID3v2Header","ID3v2Parser","bytesRemaining","chunkHeaderSize","payloadSize","FormatChunk","formatChunk","bitrate"],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse","file":"/DsfParser-43FUWDHS.js.map"} \ No newline at end of file +{"version":3,"sources":["/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/dsf/DsfParser.js","/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/dsf/DsfChunk.js"],"sourcesContent":["import initDebug from 'debug';\nimport { AbstractID3Parser } from '../id3v2/AbstractID3Parser.js';\nimport { ChunkHeader, DsdChunk, FormatChunk } from './DsfChunk.js';\nimport { ID3v2Parser } from '../id3v2/ID3v2Parser.js';\nimport { makeUnexpectedFileContentError } from '../ParseError.js';\nimport { ID3v2Header } from '../id3v2/ID3v2Token.js';\nconst debug = initDebug('music-metadata:parser:DSF');\nexport class DsdContentParseError extends makeUnexpectedFileContentError('DSD') {\n}\n/**\n * DSF (dsd stream file) File Parser\n * Ref: https://dsd-guide.com/sites/default/files/white-papers/DSFFileFormatSpec_E.pdf\n */\nexport class DsfParser extends AbstractID3Parser {\n async postId3v2Parse() {\n const p0 = this.tokenizer.position; // mark start position, normally 0\n const chunkHeader = await this.tokenizer.readToken(ChunkHeader);\n if (chunkHeader.id !== 'DSD ') {\n throw new DsdContentParseError('Invalid chunk signature');\n }\n if (chunkHeader.size !== BigInt(ChunkHeader.len + DsdChunk.len)) {\n throw new DsdContentParseError(`Invalid DSD chunk size: ${chunkHeader.size}`);\n }\n this.metadata.setFormat('container', 'DSF');\n this.metadata.setFormat('lossless', true);\n this.metadata.setAudioOnly();\n const dsdChunk = await this.tokenizer.readToken(DsdChunk);\n if (dsdChunk.fileSize < chunkHeader.size) {\n throw new DsdContentParseError(`Invalid DSF file size: ${dsdChunk.fileSize}`);\n }\n await this.parseChunks(dsdChunk.fileSize - chunkHeader.size);\n if (dsdChunk.metadataPointer === 0n) {\n debug('No ID3v2 tag present');\n return;\n }\n debug(`expect ID3v2 at offset=${dsdChunk.metadataPointer}`);\n const metadataOffset = dsdChunk.metadataPointer - BigInt(this.tokenizer.position - p0);\n if (metadataOffset < 0n ||\n metadataOffset > BigInt(Number.MAX_SAFE_INTEGER) ||\n dsdChunk.metadataPointer + BigInt(ID3v2Header.len) > dsdChunk.fileSize) {\n throw new DsdContentParseError(`Invalid metadata pointer: ${dsdChunk.metadataPointer}`);\n }\n await this.tokenizer.ignore(Number(metadataOffset));\n return new ID3v2Parser().parse(this.metadata, this.tokenizer, this.options);\n }\n async parseChunks(bytesRemaining) {\n const chunkHeaderSize = BigInt(ChunkHeader.len);\n while (bytesRemaining >= chunkHeaderSize) {\n const chunkHeader = await this.tokenizer.readToken(ChunkHeader);\n debug(`Parsing chunk name=${chunkHeader.id} size=${chunkHeader.size}`);\n if (chunkHeader.size < chunkHeaderSize) {\n throw new DsdContentParseError(`Invalid ${chunkHeader.id} chunk size: ${chunkHeader.size}`);\n }\n if (chunkHeader.size > bytesRemaining) {\n throw new DsdContentParseError(`${chunkHeader.id} chunk exceeds remaining file size`);\n }\n const payloadSize = chunkHeader.size - chunkHeaderSize;\n switch (chunkHeader.id) {\n case 'fmt ': {\n if (payloadSize < BigInt(FormatChunk.len)) {\n throw new DsdContentParseError(`Invalid fmt chunk size: ${chunkHeader.size}`);\n }\n const formatChunk = await this.tokenizer.readToken(FormatChunk);\n this.metadata.setFormat('numberOfChannels', formatChunk.channelNum);\n this.metadata.setFormat('sampleRate', formatChunk.samplingFrequency);\n this.metadata.setFormat('bitsPerSample', formatChunk.bitsPerSample);\n this.metadata.setFormat('numberOfSamples', formatChunk.sampleCount);\n this.metadata.setFormat('duration', Number(formatChunk.sampleCount) / formatChunk.samplingFrequency);\n const bitrate = formatChunk.bitsPerSample *\n formatChunk.samplingFrequency *\n formatChunk.channelNum;\n this.metadata.setFormat('bitrate', bitrate);\n return; // We got what we want, stop further processing of chunks\n }\n default:\n await this.tokenizer.ignore(Number(payloadSize));\n break;\n }\n bytesRemaining -= chunkHeader.size;\n }\n }\n}\n","import * as Token from 'token-types';\nimport { FourCcToken } from '../common/FourCC.js';\n/**\n * Common chunk DSD header: the 'chunk name (Four-CC)' & chunk size\n */\nexport const ChunkHeader = {\n len: 12,\n get: (buf, off) => {\n return { id: FourCcToken.get(buf, off), size: Token.UINT64_LE.get(buf, off + 4) };\n }\n};\n/**\n * Common chunk DSD header: the 'chunk name (Four-CC)' & chunk size\n */\nexport const DsdChunk = {\n len: 16,\n get: (buf, off) => {\n return {\n fileSize: Token.UINT64_LE.get(buf, off),\n metadataPointer: Token.UINT64_LE.get(buf, off + 8)\n };\n }\n};\nexport const ChannelType = {\n mono: 1,\n stereo: 2,\n channels: 3,\n quad: 4,\n '4 channels': 5,\n '5 channels': 6,\n '5.1 channels': 7\n};\n/**\n * Common chunk DSD header: the 'chunk name (Four-CC)' & chunk size\n */\nexport const FormatChunk = {\n len: 40,\n get: (buf, off) => {\n return {\n formatVersion: Token.INT32_LE.get(buf, off),\n formatID: Token.INT32_LE.get(buf, off + 4),\n channelType: Token.INT32_LE.get(buf, off + 8),\n channelNum: Token.INT32_LE.get(buf, off + 12),\n samplingFrequency: Token.INT32_LE.get(buf, off + 16),\n bitsPerSample: Token.INT32_LE.get(buf, off + 20),\n sampleCount: Token.INT64_LE.get(buf, off + 24),\n blockSizePerChannel: Token.INT32_LE.get(buf, off + 32)\n };\n }\n};\n"],"mappings":"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","names":["import_debug","ChunkHeader","__name","buf","off","FourCcToken","UINT64_LE","DsdChunk","FormatChunk","__name","buf","off","INT32_LE","INT64_LE","debug","initDebug","DsdContentParseError","makeUnexpectedFileContentError","__name","DsfParser","AbstractID3Parser","p0","chunkHeader","ChunkHeader","DsdChunk","dsdChunk","metadataOffset","ID3v2Header","ID3v2Parser","bytesRemaining","chunkHeaderSize","payloadSize","FormatChunk","formatChunk","bitrate"],"sourceRoot":"","file":"/DsfParser-43FUWDHS.js.map"} \ No newline at end of file diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/FlacParser-O2YMFBMO.js b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/FlacParser-O2YMFBMO.js similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/FlacParser-O2YMFBMO.js rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/FlacParser-O2YMFBMO.js diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/FlacParser-O2YMFBMO.js.br b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/FlacParser-O2YMFBMO.js.br similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/FlacParser-O2YMFBMO.js.br rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/FlacParser-O2YMFBMO.js.br diff --git a/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/FlacParser-O2YMFBMO.js.map b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/FlacParser-O2YMFBMO.js.map new file mode 100644 index 00000000..7c5e4ae3 --- /dev/null +++ b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/FlacParser-O2YMFBMO.js.map @@ -0,0 +1 @@ +{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[],"sourceRoot":"","file":"/FlacParser-O2YMFBMO.js.map"} \ No newline at end of file diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/MP4Parser-MX56ESYJ.js b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/MP4Parser-MX56ESYJ.js similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/MP4Parser-MX56ESYJ.js rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/MP4Parser-MX56ESYJ.js diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/MP4Parser-MX56ESYJ.js.br b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/MP4Parser-MX56ESYJ.js.br similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/MP4Parser-MX56ESYJ.js.br rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/MP4Parser-MX56ESYJ.js.br diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/MP4Parser-MX56ESYJ.js.map b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/MP4Parser-MX56ESYJ.js.map similarity index 99% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/MP4Parser-MX56ESYJ.js.map rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/MP4Parser-MX56ESYJ.js.map index 43f2d6dc..48d5158e 100644 --- a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/MP4Parser-MX56ESYJ.js.map +++ b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/MP4Parser-MX56ESYJ.js.map @@ -1 +1 @@ -{"version":3,"sources":["/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/mp4/MP4Parser.js","/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/mp4/Atom.js","/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/mp4/AtomToken.js"],"sourcesContent":["import initDebug from 'debug';\nimport * as Token from 'token-types';\nimport { BasicParser } from '../common/BasicParser.js';\nimport { Genres } from '../id3v1/ID3v1Parser.js';\nimport { Atom } from './Atom.js';\nimport * as AtomToken from './AtomToken.js';\nimport { ChapterTrackReferenceBox, Mp4ContentError } from './AtomToken.js';\nimport { TrackType } from '../type.js';\nimport { uint8ArrayToHex } from 'uint8array-extras';\nimport { textDecode } from '@borewit/text-codec';\nconst debug = initDebug('music-metadata:parser:MP4');\nconst tagFormat = 'iTunes';\nconst encoderDict = {\n raw: {\n lossy: false,\n format: 'raw'\n },\n MAC3: {\n lossy: true,\n format: 'MACE 3:1'\n },\n MAC6: {\n lossy: true,\n format: 'MACE 6:1'\n },\n ima4: {\n lossy: true,\n format: 'IMA 4:1'\n },\n ulaw: {\n lossy: true,\n format: 'uLaw 2:1'\n },\n alaw: {\n lossy: true,\n format: 'uLaw 2:1'\n },\n Qclp: {\n lossy: true,\n format: 'QUALCOMM PureVoice'\n },\n '.mp3': {\n lossy: true,\n format: 'MPEG-1 layer 3'\n },\n alac: {\n lossy: false,\n format: 'ALAC'\n },\n 'ac-3': {\n lossy: true,\n format: 'AC-3'\n },\n mp4a: {\n lossy: true,\n format: 'MPEG-4/AAC'\n },\n mp4s: {\n lossy: true,\n format: 'MP4S'\n },\n // Closed Captioning Media, https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/QTFFChap3/qtff3.html#//apple_ref/doc/uid/TP40000939-CH205-SW87\n c608: {\n lossy: true,\n format: 'CEA-608'\n },\n c708: {\n lossy: true,\n format: 'CEA-708'\n }\n};\nfunction distinct(value, index, self) {\n return self.indexOf(value) === index;\n}\n/**\n * Determine if a track carries audio.\n *\n * Ref: ISO/IEC 14496-12, 8.5.2: the sample entries in a sample description box are track-type specific,\n * selected by the handler type of the enclosing track. Only an audio track holds an AudioSampleEntry, so\n * only such a track may be described by a sound sample description; `isAudio()` treats both the 'soun'\n * and 'audi' handler types as audio.\n *\n * Falls back to the sample description when no handler box was found, preserving the previous behavior.\n */\nfunction isAudioTrack(track) {\n const [ssd] = track.soundSampleDescription ?? [];\n if (!ssd) {\n return false;\n }\n if (track.isAudio) {\n return track.isAudio();\n }\n return !!ssd.description && ssd.description.numAudioChannels > 0;\n}\n/*\n * Parser for the MP4 (MPEG-4 Part 14) container format\n * Standard: ISO/IEC 14496-14\n * supporting:\n * - QuickTime container\n * - MP4 File Format\n * - 3GPP file format\n * - 3GPP2 file format\n *\n * MPEG-4 Audio / Part 3 (.m4a)& MPEG 4 Video (m4v, mp4) extension.\n * Support for Apple iTunes tags as found in a M4A/M4V files.\n * Ref:\n * https://en.wikipedia.org/wiki/ISO_base_media_file_format\n * https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/Metadata/Metadata.html\n * http://atomicparsley.sourceforge.net/mpeg-4files.html\n * https://github.com/sergiomb2/libmp4v2/wiki/iTunesMetadata\n * https://wiki.multimedia.cx/index.php/QuickTime_container\n */\nexport class MP4Parser extends BasicParser {\n constructor() {\n super(...arguments);\n this.tracks = new Map();\n this.hasVideoTrack = false;\n this.hasAudioTrack = true;\n this.atomParsers = {\n /**\n * Parse movie header (mvhd) atom\n * Ref: https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/QTFFChap2/qtff2.html#//apple_ref/doc/uid/TP40000939-CH204-56313\n */\n mvhd: async (len) => {\n const mvhd = await this.tokenizer.readToken(new AtomToken.MvhdAtom(len));\n this.metadata.setFormat('creationTime', mvhd.creationTime);\n this.metadata.setFormat('modificationTime', mvhd.modificationTime);\n },\n chap: async (len) => {\n const td = this.getTrackDescription();\n const trackIds = [];\n while (len >= Token.UINT32_BE.len) {\n trackIds.push(await this.tokenizer.readNumber(Token.UINT32_BE));\n len -= Token.UINT32_BE.len;\n }\n td.chapterList = trackIds;\n },\n /**\n * Parse mdat atom.\n * Will scan for chapters\n */\n mdat: async (len) => {\n if (this.options.includeChapters) {\n const trackWithChapters = [...this.tracks.values()].filter(track => track.chapterList);\n if (trackWithChapters.length === 1) {\n const chapterTrackIds = trackWithChapters[0].chapterList;\n const chapterTracks = [...this.tracks.values()].filter(track => chapterTrackIds.indexOf(track.header.trackId) !== -1);\n if (chapterTracks.length === 1) {\n return this.parseChapterTrack(chapterTracks[0], trackWithChapters[0], len);\n }\n }\n }\n await this.tokenizer.ignore(len);\n },\n ftyp: async (len) => {\n const types = [];\n while (len > 0) {\n const ftype = await this.tokenizer.readToken(AtomToken.ftyp);\n len -= AtomToken.ftyp.len;\n const value = ftype.type.replace(/\\W/g, '');\n if (value.length > 0) {\n types.push(value); // unshift for backward compatibility\n }\n }\n debug(`ftyp: ${types.join('/')}`);\n const x = types.filter(distinct).join('/');\n this.metadata.setFormat('container', x);\n },\n /**\n * Parse sample description atom\n */\n stsd: async (len) => {\n const stsd = await this.tokenizer.readToken(new AtomToken.StsdAtom(len));\n const trackDescription = this.getTrackDescription();\n trackDescription.soundSampleDescription = stsd.table.map(dfEntry => this.parseSoundSampleDescription(dfEntry));\n },\n /**\n * Parse sample-sizes atom ('stsz')\n */\n stsz: async (len) => {\n const stsz = await this.tokenizer.readToken(new AtomToken.StszAtom(len));\n const td = this.getTrackDescription();\n td.sampleSize = stsz.sampleSize;\n td.sampleSizeTable = stsz.entries;\n },\n date: async (len) => {\n const date = await this.tokenizer.readToken(new Token.StringType(len, 'utf-8'));\n await this.addTag('date', date);\n }\n };\n }\n static read_BE_Integer(array, signed) {\n const integerType = (signed ? 'INT' : 'UINT') + array.length * 8 + (array.length > 1 ? '_BE' : '');\n const token = Token[integerType];\n if (!token) {\n throw new Mp4ContentError(`Token for integer type not found: \"${integerType}\"`);\n }\n return Number(token.get(array, 0));\n }\n async parse() {\n this.hasVideoTrack = false;\n this.hasAudioTrack = true;\n this.tracks.clear();\n let remainingFileSize = this.tokenizer.fileInfo.size || 0;\n while (!this.tokenizer.fileInfo.size || remainingFileSize > 0) {\n try {\n const token = await this.tokenizer.peekToken(AtomToken.Header);\n if (token.name === '\\0\\0\\0\\0') {\n const errMsg = `Error at offset=${this.tokenizer.position}: box.id=0`;\n debug(errMsg);\n this.addWarning(errMsg);\n break;\n }\n }\n catch (error) {\n if (error instanceof Error) {\n const errMsg = `Error at offset=${this.tokenizer.position}: ${error.message}`;\n debug(errMsg);\n this.addWarning(errMsg);\n }\n else\n throw error;\n break;\n }\n const rootAtom = await Atom.readAtom(this.tokenizer, (atom, remaining) => this.handleAtom(atom, remaining), null, remainingFileSize);\n remainingFileSize -= rootAtom.header.length === BigInt(0) ? remainingFileSize : Number(rootAtom.header.length);\n }\n // Post process metadata\n const formatList = [];\n this.tracks.forEach(track => {\n const trackFormats = [];\n const trackIsAudio = isAudioTrack(track);\n track.soundSampleDescription.forEach(ssd => {\n const streamInfo = {};\n const encoderInfo = encoderDict[ssd.dataFormat];\n if (encoderInfo) {\n trackFormats.push(encoderInfo.format);\n streamInfo.codecName = encoderInfo.format;\n }\n else {\n streamInfo.codecName = `<${ssd.dataFormat}>`;\n }\n if (trackIsAudio && ssd.description) {\n const { description } = ssd;\n if (description.sampleRate > 0) {\n streamInfo.type = TrackType.audio;\n streamInfo.audio = {\n samplingFrequency: description.sampleRate,\n bitDepth: description.sampleSize,\n channels: description.numAudioChannels\n };\n }\n }\n this.metadata.addStreamInfo(streamInfo);\n });\n if (trackFormats.length >= 1) {\n formatList.push(trackFormats.join('/'));\n }\n });\n if (formatList.length > 0) {\n this.metadata.setFormat('codec', formatList.filter(distinct).join('+'));\n }\n const audioTracks = [...this.tracks.values()].filter(isAudioTrack);\n // Calculate duration and bitrate of audio tracks\n for (const audioTrack of audioTracks) {\n if (audioTrack.media.header && audioTrack.media.header.timeScale > 0) {\n audioTrack.sampleRate = audioTrack.media.header.timeScale;\n if (audioTrack.media.header.duration > 0) {\n debug('Using duration defined on audio track');\n audioTrack.samples = audioTrack.media.header.duration;\n audioTrack.duration = audioTrack.samples / audioTrack.sampleRate;\n }\n if (audioTrack.fragments.length > 0) {\n debug('Calculate duration defined in track fragments');\n let totalTimeUnits = 0;\n audioTrack.sizeInBytes = 0;\n for (const fragment of audioTrack.fragments) {\n for (const sample of fragment.trackRun.samples) {\n const dur = sample.sampleDuration ?? fragment.header.defaultSampleDuration ?? 0;\n const size = sample.sampleSize ?? fragment.header.defaultSampleSize ?? 0;\n if (dur === 0) {\n throw new Error(\"Missing sampleDuration and no defaultSampleDuration in track fragment header\");\n }\n if (size === 0) {\n throw new Error(\"Missing sampleSize and no defaultSampleSize in track fragment header\");\n }\n totalTimeUnits += dur;\n audioTrack.sizeInBytes += size;\n }\n }\n if (!audioTrack.samples) {\n audioTrack.samples = totalTimeUnits;\n }\n if (!audioTrack.duration) {\n audioTrack.duration = totalTimeUnits / audioTrack.sampleRate;\n }\n }\n else if (audioTrack.sampleSizeTable.length > 0) {\n audioTrack.sizeInBytes = audioTrack.sampleSizeTable.reduce((sum, n) => sum + n, 0);\n }\n }\n const ssd = audioTrack.soundSampleDescription[0];\n if (ssd.description && audioTrack.media.header) {\n this.metadata.setFormat('sampleRate', ssd.description.sampleRate);\n this.metadata.setFormat('bitsPerSample', ssd.description.sampleSize);\n this.metadata.setFormat('numberOfChannels', ssd.description.numAudioChannels);\n if (audioTrack.media.header.timeScale === 0 && audioTrack.timeToSampleTable.length > 0) {\n const totalSampleSize = audioTrack.timeToSampleTable\n .map(ttstEntry => ttstEntry.count * ttstEntry.duration)\n .reduce((total, sampleSize) => total + sampleSize);\n audioTrack.duration = totalSampleSize / ssd.description.sampleRate;\n }\n }\n const encoderInfo = encoderDict[ssd.dataFormat];\n if (encoderInfo) {\n this.metadata.setFormat('lossless', !encoderInfo.lossy);\n }\n }\n if (audioTracks.length >= 1) {\n const firstAudioTrack = audioTracks[0];\n if (firstAudioTrack.duration) {\n this.metadata.setFormat('duration', firstAudioTrack.duration);\n if (firstAudioTrack.sizeInBytes) {\n this.metadata.setFormat('bitrate', 8 * firstAudioTrack.sizeInBytes / firstAudioTrack.duration);\n }\n }\n }\n this.metadata.setFormat('hasAudio', this.hasAudioTrack);\n this.metadata.setFormat('hasVideo', this.hasVideoTrack);\n }\n async handleAtom(atom, remaining) {\n if (atom.parent) {\n switch (atom.parent.header.name) {\n case 'ilst':\n case '':\n return this.parseMetadataItemData(atom);\n case 'moov':\n switch (atom.header.name) {\n case 'trak':\n return this.parseTrackBox(atom);\n case 'udta':\n return this.parseTrackBox(atom);\n }\n break;\n case 'moof':\n switch (atom.header.name) {\n case 'traf':\n return this.parseTrackFragmentBox(atom);\n }\n }\n }\n // const payloadLength = atom.getPayloadLength(remaining);\n if (this.atomParsers[atom.header.name]) {\n return this.atomParsers[atom.header.name](remaining);\n }\n debug(`No parser for atom path=${atom.atomPath}, payload-len=${remaining}, ignoring atom`);\n await this.tokenizer.ignore(remaining);\n }\n getTrackDescription() {\n // ToDo: pick the right track, not the last track!!!!\n const tracks = [...this.tracks.values()];\n return tracks[tracks.length - 1];\n }\n async addTag(id, value) {\n await this.metadata.addTag(tagFormat, id, value);\n }\n addWarning(message) {\n debug(`Warning: ${message}`);\n this.metadata.addWarning(message);\n }\n /**\n * Parse data of Meta-item-list-atom (item of 'ilst' atom)\n * @param metaAtom\n * Ref: https://developer.apple.com/library/content/documentation/QuickTime/QTFF/Metadata/Metadata.html#//apple_ref/doc/uid/TP40000939-CH1-SW8\n */\n parseMetadataItemData(metaAtom) {\n let tagKey = metaAtom.header.name;\n return metaAtom.readAtoms(this.tokenizer, async (child, remaining) => {\n const payLoadLength = child.getPayloadLength(remaining);\n switch (child.header.name) {\n case 'data': // value atom\n return this.parseValueAtom(tagKey, child);\n case 'name': // name atom (optional)\n case 'mean':\n case 'rate': {\n const name = await this.tokenizer.readToken(new AtomToken.NameAtom(payLoadLength));\n tagKey += `:${name.name}`;\n break;\n }\n default: {\n const uint8Array = await this.tokenizer.readToken(new Token.Uint8ArrayType(payLoadLength));\n this.addWarning(`Unsupported meta-item: ${tagKey}[${child.header.name}] => value=${uint8ArrayToHex(uint8Array)} ascii=${textDecode(uint8Array, 'ascii')}`);\n }\n }\n }, metaAtom.getPayloadLength(0));\n }\n async parseValueAtom(tagKey, metaAtom) {\n const dataAtom = await this.tokenizer.readToken(new AtomToken.DataAtom(Number(metaAtom.header.length) - AtomToken.Header.len));\n if (dataAtom.type.set !== 0) {\n throw new Mp4ContentError(`Unsupported type-set != 0: ${dataAtom.type.set}`);\n }\n // Use well-known-type table\n // Ref: https://developer.apple.com/library/content/documentation/QuickTime/QTFF/Metadata/Metadata.html#//apple_ref/doc/uid/TP40000939-CH1-SW35\n switch (dataAtom.type.type) {\n case 0: // reserved: Reserved for use where no type needs to be indicated\n switch (tagKey) {\n case 'trkn':\n case 'disk': {\n const num = Token.UINT8.get(dataAtom.value, 3);\n const of = Token.UINT8.get(dataAtom.value, 5);\n // console.log(\" %s[data] = %s/%s\", tagKey, num, of);\n await this.addTag(tagKey, `${num}/${of}`);\n break;\n }\n case 'gnre': {\n const genreInt = Token.UINT8.get(dataAtom.value, 1);\n const genreStr = Genres[genreInt - 1];\n // console.log(\" %s[data] = %s\", tagKey, genreStr);\n await this.addTag(tagKey, genreStr);\n break;\n }\n case 'rate': {\n const rate = textDecode(dataAtom.value, 'ascii');\n await this.addTag(tagKey, rate);\n break;\n }\n default:\n debug(`unknown proprietary value type for: ${metaAtom.atomPath}`);\n }\n break;\n case 1: // UTF-8: Without any count or NULL terminator\n case 18: // Unknown: Found in m4b in combination with a '©gen' tag\n await this.addTag(tagKey, textDecode(dataAtom.value));\n break;\n case 13: // JPEG\n if (this.options.skipCovers)\n break;\n await this.addTag(tagKey, {\n format: 'image/jpeg',\n data: Uint8Array.from(dataAtom.value)\n });\n break;\n case 14: // PNG\n if (this.options.skipCovers)\n break;\n await this.addTag(tagKey, {\n format: 'image/png',\n data: Uint8Array.from(dataAtom.value)\n });\n break;\n case 21: // BE Signed Integer\n await this.addTag(tagKey, MP4Parser.read_BE_Integer(dataAtom.value, true));\n break;\n case 22: // BE Unsigned Integer\n await this.addTag(tagKey, MP4Parser.read_BE_Integer(dataAtom.value, false));\n break;\n case 65: // An 8-bit signed integer\n await this.addTag(tagKey, Token.UINT8.get(dataAtom.value, 0));\n break;\n case 66: // A big-endian 16-bit signed integer\n await this.addTag(tagKey, Token.UINT16_BE.get(dataAtom.value, 0));\n break;\n case 67: // A big-endian 32-bit signed integer\n await this.addTag(tagKey, Token.UINT32_BE.get(dataAtom.value, 0));\n break;\n default:\n this.addWarning(`atom key=${tagKey}, has unknown well-known-type (data-type): ${dataAtom.type.type}`);\n }\n }\n async parseTrackBox(trakBox) {\n // @ts-expect-error\n const track = {\n media: {},\n fragments: []\n };\n await trakBox.readAtoms(this.tokenizer, async (child, remaining) => {\n const payLoadLength = child.getPayloadLength(remaining);\n switch (child.header.name) {\n case 'chap': {\n const chap = await this.tokenizer.readToken(new ChapterTrackReferenceBox(remaining));\n track.chapterList = chap;\n break;\n }\n case 'tkhd': // TrackHeaderBox\n track.header = await this.tokenizer.readToken(new AtomToken.TrackHeaderAtom(payLoadLength));\n break;\n case 'hdlr': // TrackHeaderBox\n track.handler = await this.tokenizer.readToken(new AtomToken.HandlerBox(payLoadLength));\n track.isAudio = () => track.handler.handlerType === 'audi' || track.handler.handlerType === 'soun';\n track.isVideo = () => track.handler.handlerType === 'vide';\n if (track.isAudio()) {\n this.hasAudioTrack = true;\n }\n else if (track.isVideo()) {\n this.hasVideoTrack = true;\n }\n break;\n case 'mdhd': { // Parse media header (mdhd) box\n const mdhd_data = await this.tokenizer.readToken(new AtomToken.MdhdAtom(payLoadLength));\n track.media.header = mdhd_data;\n break;\n }\n case 'stco': {\n const stco = await this.tokenizer.readToken(new AtomToken.StcoAtom(payLoadLength));\n track.chunkOffsetTable = stco.entries; // remember chunk offsets\n break;\n }\n case 'stsc': { // sample-to-Chunk box\n const stsc = await this.tokenizer.readToken(new AtomToken.StscAtom(payLoadLength));\n track.sampleToChunkTable = stsc.entries;\n break;\n }\n case 'stsd': { // sample description box\n const stsd = await this.tokenizer.readToken(new AtomToken.StsdAtom(payLoadLength));\n track.soundSampleDescription = stsd.table.map(dfEntry => this.parseSoundSampleDescription(dfEntry));\n break;\n }\n case 'stts': { // time-to-sample table\n const stts = await this.tokenizer.readToken(new AtomToken.SttsAtom(payLoadLength));\n track.timeToSampleTable = stts.entries;\n break;\n }\n case 'stsz': {\n const stsz = await this.tokenizer.readToken(new AtomToken.StszAtom(payLoadLength));\n track.sampleSize = stsz.sampleSize;\n track.sampleSizeTable = stsz.entries;\n break;\n }\n case 'dinf':\n case 'vmhd':\n case 'smhd':\n debug(`Ignoring: ${child.header.name}`);\n await this.tokenizer.ignore(payLoadLength);\n break;\n default: {\n debug(`Unexpected track box: ${child.header.name}`);\n await this.tokenizer.ignore(payLoadLength);\n }\n }\n }, trakBox.getPayloadLength(0));\n // Register track\n this.tracks.set(track.header.trackId, track);\n }\n parseTrackFragmentBox(trafBox) {\n let tfhd;\n return trafBox.readAtoms(this.tokenizer, async (child, remaining) => {\n const payLoadLength = child.getPayloadLength(remaining);\n switch (child.header.name) {\n case 'tfhd': { // TrackFragmentHeaderBox\n const fragmentHeaderBox = new AtomToken.TrackFragmentHeaderBox(child.getPayloadLength(remaining));\n tfhd = await this.tokenizer.readToken(fragmentHeaderBox);\n break;\n }\n case 'tfdt': // TrackFragmentBaseMediaDecodeTimeBo\n await this.tokenizer.ignore(payLoadLength);\n break;\n case 'trun': { // TrackRunBox\n const trackRunBox = new AtomToken.TrackRunBox(payLoadLength);\n const trun = await this.tokenizer.readToken(trackRunBox);\n if (tfhd) {\n const track = this.tracks.get(tfhd.trackId);\n track?.fragments.push({ header: tfhd, trackRun: trun });\n }\n break;\n }\n default: {\n debug(`Unexpected box: ${child.header.name}`);\n await this.tokenizer.ignore(payLoadLength);\n }\n }\n }, trafBox.getPayloadLength(0));\n }\n /**\n * @param sampleDescription\n * Ref: https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/QTFFChap3/qtff3.html#//apple_ref/doc/uid/TP40000939-CH205-128916\n */\n parseSoundSampleDescription(sampleDescription) {\n const ssd = {\n dataFormat: sampleDescription.dataFormat,\n dataReferenceIndex: sampleDescription.dataReferenceIndex\n };\n let offset = 0;\n const { description } = sampleDescription;\n // Only an AudioSampleEntry carries a sound sample description; it is at least 20 bytes beyond the\n // 16-byte SampleEntry base. A shorter description belongs to another sample entry class, or is truncated.\n if (description && description.length >= AtomToken.SoundSampleDescriptionVersion.len) {\n const version = AtomToken.SoundSampleDescriptionVersion.get(description, offset);\n offset += AtomToken.SoundSampleDescriptionVersion.len;\n if (version.version === 0 || version.version === 1) {\n // Sound Sample Description (Version 0)\n if (description.length >= offset + AtomToken.SoundSampleDescriptionV0.len) {\n ssd.description = AtomToken.SoundSampleDescriptionV0.get(description, offset);\n }\n else {\n debug(`Warning: sound-sample-description too short: ${description.length} bytes`);\n }\n }\n else {\n debug(`Warning: sound-sample-description ${version} not implemented`);\n }\n }\n return ssd;\n }\n async parseChapterTrack(chapterTrack, track, len) {\n if (!chapterTrack.sampleSize) {\n if (chapterTrack.chunkOffsetTable.length !== chapterTrack.sampleSizeTable.length)\n throw new Error('Expected equal chunk-offset-table & sample-size-table length.');\n }\n const chapters = [];\n for (let i = 0; i < chapterTrack.chunkOffsetTable.length && len > 0; ++i) {\n const start = chapterTrack.timeToSampleTable\n .slice(0, i)\n .reduce((acc, cur) => acc + cur.duration, 0);\n const chunkOffset = chapterTrack.chunkOffsetTable[i];\n const nextChunkLen = chunkOffset - this.tokenizer.position;\n const sampleSize = chapterTrack.sampleSize > 0 ? chapterTrack.sampleSize : chapterTrack.sampleSizeTable[i];\n len -= nextChunkLen + sampleSize;\n if (len < 0)\n throw new Mp4ContentError('Chapter chunk exceeding token length');\n await this.tokenizer.ignore(nextChunkLen);\n const title = await this.tokenizer.readToken(new AtomToken.ChapterText(sampleSize));\n debug(`Chapter ${i + 1}: ${title}`);\n const chapter = {\n title,\n timeScale: chapterTrack.media.header ? chapterTrack.media.header.timeScale : 0,\n start,\n sampleOffset: this.findSampleOffset(track, this.tokenizer.position)\n };\n debug(`Chapter title=${chapter.title}, offset=${chapter.sampleOffset}/${track.header.duration}`); // ToDo, use media duration if required!!!\n chapters.push(chapter);\n }\n this.metadata.setFormat('chapters', chapters);\n await this.tokenizer.ignore(len);\n }\n findSampleOffset(track, chapterOffset) {\n let chunkIndex = 0;\n while (chunkIndex < track.chunkOffsetTable.length && track.chunkOffsetTable[chunkIndex] < chapterOffset) {\n ++chunkIndex;\n }\n return this.getChunkDuration(chunkIndex + 1, track);\n }\n getChunkDuration(chunkId, track) {\n let ttsi = 0;\n let ttsc = track.timeToSampleTable[ttsi].count;\n let ttsd = track.timeToSampleTable[ttsi].duration;\n let curChunkId = 1;\n let samplesPerChunk = this.getSamplesPerChunk(curChunkId, track.sampleToChunkTable);\n let totalDuration = 0;\n while (curChunkId < chunkId) {\n const nrOfSamples = Math.min(ttsc, samplesPerChunk);\n totalDuration += nrOfSamples * ttsd;\n ttsc -= nrOfSamples;\n samplesPerChunk -= nrOfSamples;\n if (samplesPerChunk === 0) {\n ++curChunkId;\n samplesPerChunk = this.getSamplesPerChunk(curChunkId, track.sampleToChunkTable);\n }\n else {\n ++ttsi;\n ttsc = track.timeToSampleTable[ttsi].count;\n ttsd = track.timeToSampleTable[ttsi].duration;\n }\n }\n return totalDuration;\n }\n getSamplesPerChunk(chunkId, stcTable) {\n for (let i = 0; i < stcTable.length - 1; ++i) {\n if (chunkId >= stcTable[i].firstChunk && chunkId < stcTable[i + 1].firstChunk) {\n return stcTable[i].samplesPerChunk;\n }\n }\n return stcTable[stcTable.length - 1].samplesPerChunk;\n }\n}\n","import initDebug from 'debug';\nimport * as AtomToken from './AtomToken.js';\nimport { Header } from './AtomToken.js';\nconst debug = initDebug('music-metadata:parser:MP4:Atom');\nexport class Atom {\n static async readAtom(tokenizer, dataHandler, parent, remaining) {\n // Parse atom header\n const offset = tokenizer.position;\n debug(`Reading next token on offset=${offset}...`); // buf.toString('ascii')\n const header = await tokenizer.readToken(AtomToken.Header);\n const extended = header.length === 1n;\n if (extended) {\n header.length = await tokenizer.readToken(AtomToken.ExtendedSize);\n }\n const atomBean = new Atom(header, extended, parent);\n const payloadLength = atomBean.getPayloadLength(remaining);\n debug(`parse atom name=${atomBean.atomPath}, extended=${atomBean.extended}, offset=${offset}, len=${atomBean.header.length}`); // buf.toString('ascii')\n await atomBean.readData(tokenizer, dataHandler, payloadLength);\n return atomBean;\n }\n constructor(header, extended, parent) {\n this.header = header;\n this.extended = extended;\n this.parent = parent;\n this.children = [];\n this.atomPath = (this.parent ? `${this.parent.atomPath}.` : '') + this.header.name;\n }\n getHeaderLength() {\n return this.extended ? 16 : 8;\n }\n getPayloadLength(remaining) {\n return (this.header.length === 0n ? remaining : Number(this.header.length)) - this.getHeaderLength();\n }\n async readAtoms(tokenizer, dataHandler, size) {\n while (size > 0) {\n const atomBean = await Atom.readAtom(tokenizer, dataHandler, this, size);\n this.children.push(atomBean);\n size -= atomBean.header.length === 0n ? size : Number(atomBean.header.length);\n }\n }\n async readData(tokenizer, dataHandler, remaining) {\n switch (this.header.name) {\n // \"Container\" atoms, contains nested atoms\n case 'moov': // The Movie Atom: contains other atoms\n case 'udta': // User defined atom\n case 'mdia': // Media atom\n case 'minf': // Media Information Atom\n case 'stbl': // The Sample Table Atom\n case '':\n case 'ilst':\n case 'tref':\n case 'moof':\n return this.readAtoms(tokenizer, dataHandler, this.getPayloadLength(remaining));\n case 'meta': { // Metadata Atom, ref: https://developer.apple.com/library/content/documentation/QuickTime/QTFF/Metadata/Metadata.html#//apple_ref/doc/uid/TP40000939-CH1-SW8\n // meta has 4 bytes of padding, ignore\n const peekHeader = await tokenizer.peekToken(Header);\n const paddingLength = peekHeader.name === 'hdlr' ? 0 : 4;\n await tokenizer.ignore(paddingLength);\n return this.readAtoms(tokenizer, dataHandler, this.getPayloadLength(remaining) - paddingLength);\n }\n default:\n return dataHandler(this, remaining);\n }\n }\n}\n","import * as Token from 'token-types';\nimport initDebug from 'debug';\nimport { FourCcToken } from '../common/FourCC.js';\nimport { makeUnexpectedFileContentError } from '../ParseError.js';\nimport * as util from '../common/Util.js';\nimport { FieldDecodingError } from '../ParseError.js';\nconst debug = initDebug('music-metadata:parser:MP4:atom');\nexport class Mp4ContentError extends makeUnexpectedFileContentError('MP4') {\n}\nexport const Header = {\n len: 8,\n get: (buf, off) => {\n const length = Token.UINT32_BE.get(buf, off);\n if (length < 0)\n throw new Mp4ContentError('Invalid atom header length');\n return {\n length: BigInt(length),\n name: new Token.StringType(4, 'latin1').get(buf, off + 4)\n };\n },\n put: (buf, off, hdr) => {\n Token.UINT32_BE.put(buf, off, Number(hdr.length));\n return FourCcToken.put(buf, off + 4, hdr.name);\n }\n};\n/**\n * Ref: https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/QTFFChap1/qtff1.html#//apple_ref/doc/uid/TP40000939-CH203-38190\n */\nexport const ExtendedSize = Token.UINT64_BE;\nexport const ftyp = {\n len: 4,\n get: (buf, off) => {\n return {\n type: new Token.StringType(4, 'ascii').get(buf, off)\n };\n }\n};\n/**\n * Token: Movie Header Atom\n */\nexport const mhdr = {\n len: 8,\n get: (buf, off) => {\n return {\n version: Token.UINT8.get(buf, off),\n flags: Token.UINT24_BE.get(buf, off + 1),\n nextItemID: Token.UINT32_BE.get(buf, off + 4)\n };\n }\n};\n/**\n * Base class for 'fixed' length atoms.\n * In some cases these atoms are longer then the sum of the described fields.\n * Issue: https://github.com/Borewit/music-metadata/issues/120\n */\nexport class FixedLengthAtom {\n /**\n *\n * @param {number} len Length as specified in the size field\n * @param {number} expLen Total length of sum of specified fields in the standard\n * @param atomId Atom ID\n */\n constructor(len, expLen, atomId) {\n if (len < expLen) {\n throw new Mp4ContentError(`Atom ${atomId} expected to be ${expLen}, but specifies ${len} bytes long.`);\n }\n if (len > expLen) {\n debug(`Warning: atom ${atomId} expected to be ${expLen}, but was actually ${len} bytes long.`);\n }\n this.len = len;\n }\n}\n/**\n * Timestamp stored in seconds since Mac Epoch (1 January 1904)\n */\nconst SecondsSinceMacEpoch = {\n len: 4,\n get: (buf, off) => {\n const secondsSinceUnixEpoch = Token.UINT32_BE.get(buf, off) - 2082844800;\n return new Date(secondsSinceUnixEpoch * 1000);\n }\n};\nconst SecondsSinceMacEpoch64 = {\n len: 8,\n get: (buf, off) => {\n const secondsSinceUnixEpoch = Number(Token.UINT64_BE.get(buf, off)) - 2082844800;\n return new Date(secondsSinceUnixEpoch * 1000);\n }\n};\n/**\n * Token: Media Header Atom\n * Ref:\n * - https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/QTFFChap2/qtff2.html#//apple_ref/doc/uid/TP40000939-CH204-SW34\n * - https://wiki.multimedia.cx/index.php/QuickTime_container#mdhd\n */\nexport class MdhdAtom extends FixedLengthAtom {\n constructor(len) {\n super(len, 24, 'mdhd');\n }\n get(buf, off) {\n const version = Token.UINT8.get(buf, off + 0);\n const flags = Token.UINT24_BE.get(buf, off + 1);\n switch (version) {\n case 0:\n // Version 0: 32-bit fields\n return {\n version,\n flags,\n creationTime: SecondsSinceMacEpoch.get(buf, off + 4),\n modificationTime: SecondsSinceMacEpoch.get(buf, off + 8),\n timeScale: Token.UINT32_BE.get(buf, off + 12),\n duration: Token.UINT32_BE.get(buf, off + 16),\n language: Token.UINT16_BE.get(buf, off + 20),\n quality: Token.UINT16_BE.get(buf, off + 22)\n };\n case 1:\n return {\n version,\n flags,\n creationTime: SecondsSinceMacEpoch64.get(buf, off + 4),\n modificationTime: SecondsSinceMacEpoch64.get(buf, off + 12),\n timeScale: Token.UINT32_BE.get(buf, off + 20),\n duration: Number(Token.UINT64_BE.get(buf, off + 24)),\n language: Token.UINT16_BE.get(buf, off + 32),\n quality: Token.UINT16_BE.get(buf, off + 34)\n };\n default:\n throw new FieldDecodingError('Invalid mdhd version header');\n }\n }\n}\n/**\n * Token: Movie Header Atom\n */\nexport class MvhdAtom extends FixedLengthAtom {\n constructor(len) {\n super(len, 100, 'mvhd');\n }\n get(buf, off) {\n const version = Token.UINT8.get(buf, off);\n const flags = Token.UINT24_BE.get(buf, off + 1);\n if (version === 1) {\n // Version 1: 64-bit creation/modification times and duration\n return {\n version,\n flags,\n creationTime: SecondsSinceMacEpoch64.get(buf, off + 4),\n modificationTime: SecondsSinceMacEpoch64.get(buf, off + 12),\n timeScale: Token.UINT32_BE.get(buf, off + 20),\n duration: Number(Token.UINT64_BE.get(buf, off + 24)),\n preferredRate: Token.UINT32_BE.get(buf, off + 32),\n preferredVolume: Token.UINT16_BE.get(buf, off + 36),\n // ignore reserved: 10 bytes\n // ignore matrix structure: 36 bytes\n previewTime: Token.UINT32_BE.get(buf, off + 84),\n previewDuration: Token.UINT32_BE.get(buf, off + 88),\n posterTime: Token.UINT32_BE.get(buf, off + 92),\n selectionTime: Token.UINT32_BE.get(buf, off + 96),\n selectionDuration: Token.UINT32_BE.get(buf, off + 100),\n currentTime: Token.UINT32_BE.get(buf, off + 104),\n nextTrackID: Token.UINT32_BE.get(buf, off + 108)\n };\n }\n // Version 0: 32-bit fields\n return {\n version,\n flags,\n creationTime: SecondsSinceMacEpoch.get(buf, off + 4),\n modificationTime: SecondsSinceMacEpoch.get(buf, off + 8),\n timeScale: Token.UINT32_BE.get(buf, off + 12),\n duration: Token.UINT32_BE.get(buf, off + 16),\n preferredRate: Token.UINT32_BE.get(buf, off + 20),\n preferredVolume: Token.UINT16_BE.get(buf, off + 24),\n // ignore reserved: 10 bytes\n // ignore matrix structure: 36 bytes\n previewTime: Token.UINT32_BE.get(buf, off + 72),\n previewDuration: Token.UINT32_BE.get(buf, off + 76),\n posterTime: Token.UINT32_BE.get(buf, off + 80),\n selectionTime: Token.UINT32_BE.get(buf, off + 84),\n selectionDuration: Token.UINT32_BE.get(buf, off + 88),\n currentTime: Token.UINT32_BE.get(buf, off + 92),\n nextTrackID: Token.UINT32_BE.get(buf, off + 96)\n };\n }\n}\n/**\n * Data Atom Structure\n */\nexport class DataAtom {\n constructor(len) {\n this.len = len;\n }\n get(buf, off) {\n return {\n type: {\n set: Token.UINT8.get(buf, off + 0),\n type: Token.UINT24_BE.get(buf, off + 1)\n },\n locale: Token.UINT24_BE.get(buf, off + 4),\n value: new Token.Uint8ArrayType(this.len - 8).get(buf, off + 8)\n };\n }\n}\n/**\n * Data Atom Structure\n * Ref: https://developer.apple.com/library/content/documentation/QuickTime/QTFF/Metadata/Metadata.html#//apple_ref/doc/uid/TP40000939-CH1-SW31\n */\nexport class NameAtom {\n constructor(len) {\n this.len = len;\n }\n get(buf, off) {\n return {\n version: Token.UINT8.get(buf, off),\n flags: Token.UINT24_BE.get(buf, off + 1),\n name: new Token.StringType(this.len - 4, 'utf-8').get(buf, off + 4)\n };\n }\n}\n/**\n * Track Header Atoms structure (`tkhd`)\n * Ref: https://developer.apple.com/library/content/documentation/QuickTime/QTFF/QTFFChap2/qtff2.html#//apple_ref/doc/uid/TP40000939-CH204-25550\n */\nexport class TrackHeaderAtom {\n constructor(len) {\n this.len = len;\n }\n get(buf, off) {\n const version = Token.UINT8.get(buf, off);\n const flags = Token.UINT24_BE.get(buf, off + 1);\n switch (version) {\n case 0:\n // Version 0: 32-bit fields\n return {\n version,\n flags,\n creationTime: SecondsSinceMacEpoch.get(buf, off + 4),\n modificationTime: SecondsSinceMacEpoch.get(buf, off + 8),\n trackId: Token.UINT32_BE.get(buf, off + 12),\n // reserved 4 bytes\n duration: Token.UINT32_BE.get(buf, off + 20),\n // reserved 8 bytes\n layer: Token.UINT16_BE.get(buf, off + 32),\n alternateGroup: Token.UINT16_BE.get(buf, off + 34),\n volume: Token.UINT16_BE.get(buf, off + 36) // ToDo: fixed point\n // ToDo: add remaining fields\n };\n case 1:\n // Version 1: 64-bit creation/modification times and duration\n return {\n version,\n flags,\n creationTime: SecondsSinceMacEpoch64.get(buf, off + 4),\n modificationTime: SecondsSinceMacEpoch64.get(buf, off + 12),\n trackId: Token.UINT32_BE.get(buf, off + 20),\n // reserved 4 bytes\n duration: Number(Token.UINT64_BE.get(buf, off + 28)),\n // reserved 8 bytes\n layer: Token.UINT16_BE.get(buf, off + 44),\n alternateGroup: Token.UINT16_BE.get(buf, off + 46),\n volume: Token.UINT16_BE.get(buf, off + 48) // ToDo: fixed point\n // ToDo: add remaining fields\n };\n default:\n throw new FieldDecodingError('Invalid tkhd version header');\n }\n }\n}\n/**\n * Atom: Sample Description Atom ('stsd')\n * Ref: https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/QTFFChap2/qtff2.html#//apple_ref/doc/uid/TP40000939-CH204-25691\n */\nconst stsdHeader = {\n len: 8,\n get: (buf, off) => {\n return {\n version: Token.UINT8.get(buf, off),\n flags: Token.UINT24_BE.get(buf, off + 1),\n numberOfEntries: Token.UINT32_BE.get(buf, off + 4)\n };\n }\n};\n/**\n * Atom: Sample Description Atom ('stsd')\n * Ref: https://developer.apple.com/documentation/quicktime-file-format/sample_description_atom\n */\nclass SampleDescriptionTable {\n constructor(len) {\n this.len = len;\n }\n get(buf, off) {\n const descrLen = this.len - 12;\n return {\n dataFormat: FourCcToken.get(buf, off),\n dataReferenceIndex: Token.UINT16_BE.get(buf, off + 10),\n description: descrLen > 0 ? new Token.Uint8ArrayType(descrLen).get(buf, off + 12) : undefined\n };\n }\n}\n/**\n * Atom: Sample-description Atom ('stsd')\n * Ref: https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/QTFFChap2/qtff2.html#//apple_ref/doc/uid/TP40000939-CH204-25691\n */\nexport class StsdAtom {\n constructor(len) {\n this.len = len;\n }\n get(buf, off) {\n const header = stsdHeader.get(buf, off);\n off += stsdHeader.len;\n const table = [];\n for (let n = 0; n < header.numberOfEntries; ++n) {\n const size = Token.UINT32_BE.get(buf, off); // Sample description size\n off += Token.UINT32_BE.len;\n table.push(new SampleDescriptionTable(size - Token.UINT32_BE.len).get(buf, off));\n // A SampleEntry extends Box, so its size covers the size field already stepped over\n off += size - Token.UINT32_BE.len;\n }\n return {\n header,\n table\n };\n }\n}\n/**\n * Common Sound Sample Description (version & revision)\n * Ref: https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/QTFFChap3/qtff3.html#//apple_ref/doc/uid/TP40000939-CH205-57317\n */\nexport const SoundSampleDescriptionVersion = {\n len: 8,\n get(buf, off) {\n return {\n version: Token.INT16_BE.get(buf, off),\n revision: Token.INT16_BE.get(buf, off + 2),\n vendor: Token.INT32_BE.get(buf, off + 4)\n };\n }\n};\n/**\n * Sound Sample Description (Version 0)\n * Ref: https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/QTFFChap3/qtff3.html#//apple_ref/doc/uid/TP40000939-CH205-130736\n */\nexport const SoundSampleDescriptionV0 = {\n len: 12,\n get(buf, off) {\n return {\n numAudioChannels: Token.INT16_BE.get(buf, off + 0),\n sampleSize: Token.INT16_BE.get(buf, off + 2),\n compressionId: Token.INT16_BE.get(buf, off + 4),\n packetSize: Token.INT16_BE.get(buf, off + 6),\n sampleRate: Token.UINT16_BE.get(buf, off + 8) + Token.UINT16_BE.get(buf, off + 10) / 10000\n };\n }\n};\nclass SimpleTableAtom {\n constructor(len, token) {\n this.len = len;\n this.token = token;\n }\n get(buf, off) {\n const nrOfEntries = Token.INT32_BE.get(buf, off + 4);\n return {\n version: Token.INT8.get(buf, off + 0),\n flags: Token.INT24_BE.get(buf, off + 1),\n numberOfEntries: nrOfEntries,\n entries: readTokenTable(buf, this.token, off + 8, this.len - 8, nrOfEntries)\n };\n }\n}\nexport const TimeToSampleToken = {\n len: 8,\n get(buf, off) {\n return {\n count: Token.INT32_BE.get(buf, off + 0),\n duration: Token.INT32_BE.get(buf, off + 4)\n };\n }\n};\n/**\n * Time-to-sample('stts') atom.\n * Store duration information for a media’s samples.\n * Ref: https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/QTFFChap2/qtff2.html#//apple_ref/doc/uid/TP40000939-CH204-25696\n */\nexport class SttsAtom extends SimpleTableAtom {\n constructor(len) {\n super(len, TimeToSampleToken);\n }\n}\nexport const SampleToChunkToken = {\n len: 12,\n get(buf, off) {\n return {\n firstChunk: Token.INT32_BE.get(buf, off),\n samplesPerChunk: Token.INT32_BE.get(buf, off + 4),\n sampleDescriptionId: Token.INT32_BE.get(buf, off + 8)\n };\n }\n};\n/**\n * Sample-to-Chunk ('stsc') atom interface\n * Ref: https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/QTFFChap2/qtff2.html#//apple_ref/doc/uid/TP40000939-CH204-25706\n */\nexport class StscAtom extends SimpleTableAtom {\n constructor(len) {\n super(len, SampleToChunkToken);\n }\n}\n/**\n * Sample-size ('stsz') atom\n * Ref: https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/QTFFChap2/qtff2.html#//apple_ref/doc/uid/TP40000939-CH204-25710\n */\nexport class StszAtom {\n constructor(len) {\n this.len = len;\n }\n get(buf, off) {\n const nrOfEntries = Token.INT32_BE.get(buf, off + 8);\n return {\n version: Token.INT8.get(buf, off),\n flags: Token.INT24_BE.get(buf, off + 1),\n sampleSize: Token.INT32_BE.get(buf, off + 4),\n numberOfEntries: nrOfEntries,\n entries: readTokenTable(buf, Token.INT32_BE, off + 12, this.len - 12, nrOfEntries)\n };\n }\n}\n/**\n * Chunk offset atom, 'stco'\n * Ref: https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/QTFFChap2/qtff2.html#//apple_ref/doc/uid/TP40000939-CH204-25715\n */\nexport class StcoAtom extends SimpleTableAtom {\n constructor(len) {\n super(len, Token.INT32_BE);\n this.len = len;\n }\n}\n/**\n * Token used to decode text-track from 'mdat' atom (raw data stream)\n */\nexport class ChapterText {\n constructor(len) {\n this.len = len;\n }\n get(buf, off) {\n const titleLen = Token.INT16_BE.get(buf, off + 0);\n const str = new Token.StringType(titleLen, 'utf-8');\n return str.get(buf, off + 2);\n }\n}\nfunction readTokenTable(buf, token, off, remainingLen, numberOfEntries) {\n debug(`remainingLen=${remainingLen}, numberOfEntries=${numberOfEntries} * token-len=${token.len}`);\n if (remainingLen === 0)\n return [];\n if (remainingLen !== numberOfEntries * token.len)\n throw new Mp4ContentError('mismatch number-of-entries with remaining atom-length');\n const entries = [];\n // parse offset-table\n for (let n = 0; n < numberOfEntries; ++n) {\n entries.push(token.get(buf, off));\n off += token.len;\n }\n return entries;\n}\n/**\n * Sample-size ('tfhd') TrackFragmentHeaderBox\n */\nexport class TrackFragmentHeaderBox {\n constructor(len) {\n this.len = len;\n }\n get(buf, off) {\n const flagOffset = off + 1;\n const header = {\n version: Token.INT8.get(buf, off),\n flags: {\n baseDataOffsetPresent: util.getBit(buf, flagOffset + 2, 0),\n sampleDescriptionIndexPresent: util.getBit(buf, flagOffset + 2, 1),\n defaultSampleDurationPresent: util.getBit(buf, flagOffset + 2, 3),\n defaultSampleSizePresent: util.getBit(buf, flagOffset + 2, 4),\n defaultSampleFlagsPresent: util.getBit(buf, flagOffset + 2, 5),\n defaultDurationIsEmpty: util.getBit(buf, flagOffset, 0),\n defaultBaseIsMoof: util.getBit(buf, flagOffset, 1)\n },\n trackId: Token.UINT32_BE.get(buf, 4)\n };\n let dynOffset = 8;\n if (header.flags.baseDataOffsetPresent) {\n header.baseDataOffset = Token.UINT64_BE.get(buf, dynOffset);\n dynOffset += 8;\n }\n if (header.flags.sampleDescriptionIndexPresent) {\n header.sampleDescriptionIndex = Token.UINT32_BE.get(buf, dynOffset);\n dynOffset += 4;\n }\n if (header.flags.defaultSampleDurationPresent) {\n header.defaultSampleDuration = Token.UINT32_BE.get(buf, dynOffset);\n dynOffset += 4;\n }\n if (header.flags.defaultSampleSizePresent) {\n header.defaultSampleSize = Token.UINT32_BE.get(buf, dynOffset);\n dynOffset += 4;\n }\n if (header.flags.defaultSampleFlagsPresent) {\n header.defaultSampleFlags = Token.UINT32_BE.get(buf, dynOffset);\n }\n return header;\n }\n}\n/**\n * Sample-size ('trun') TrackRunBox\n */\nexport class TrackRunBox {\n constructor(len) {\n this.len = len;\n }\n get(buf, off) {\n const flagOffset = off + 1;\n const trun = {\n version: Token.INT8.get(buf, off),\n flags: {\n dataOffsetPresent: util.getBit(buf, flagOffset + 2, 0),\n firstSampleFlagsPresent: util.getBit(buf, flagOffset + 2, 2),\n sampleDurationPresent: util.getBit(buf, flagOffset + 1, 0),\n sampleSizePresent: util.getBit(buf, flagOffset + 1, 1),\n sampleFlagsPresent: util.getBit(buf, flagOffset + 1, 2),\n sampleCompositionTimeOffsetsPresent: util.getBit(buf, flagOffset + 1, 3)\n },\n sampleCount: Token.UINT32_BE.get(buf, off + 4),\n samples: []\n };\n let dynOffset = off + 8;\n if (trun.flags.dataOffsetPresent) {\n trun.dataOffset = Token.UINT32_BE.get(buf, dynOffset);\n dynOffset += 4;\n }\n if (trun.flags.firstSampleFlagsPresent) {\n trun.firstSampleFlags = Token.UINT32_BE.get(buf, dynOffset);\n dynOffset += 4;\n }\n for (let n = 0; n < trun.sampleCount; ++n) {\n if (dynOffset >= this.len) {\n debug(\"TrackRunBox size mismatch\");\n break;\n }\n const sample = {};\n if (trun.flags.sampleDurationPresent) {\n sample.sampleDuration = Token.UINT32_BE.get(buf, dynOffset);\n dynOffset += 4;\n }\n if (trun.flags.sampleSizePresent) {\n sample.sampleSize = Token.UINT32_BE.get(buf, dynOffset);\n dynOffset += 4;\n }\n if (trun.flags.sampleFlagsPresent) {\n sample.sampleFlags = Token.UINT32_BE.get(buf, dynOffset);\n dynOffset += 4;\n }\n if (trun.flags.sampleCompositionTimeOffsetsPresent) {\n sample.sampleCompositionTimeOffset = Token.UINT32_BE.get(buf, dynOffset);\n dynOffset += 4;\n }\n trun.samples.push(sample);\n }\n return trun;\n }\n}\n/**\n * HandlerBox (`hdlr`)\n */\nexport class HandlerBox {\n constructor(len) {\n this.len = len;\n }\n get(buf, off) {\n const _flagOffset = off + 1;\n const charTypeToken = new Token.StringType(4, 'utf-8');\n return {\n version: Token.INT8.get(buf, off),\n flags: Token.UINT24_BE.get(buf, off + 1),\n componentType: charTypeToken.get(buf, off + 4),\n handlerType: charTypeToken.get(buf, off + 8),\n componentName: new Token.StringType(this.len - 28, 'utf-8').get(buf, off + 28),\n };\n }\n}\n/**\n * Chapter Track Reference Box (`chap`)\n */\nexport class ChapterTrackReferenceBox {\n constructor(len) {\n this.len = len;\n }\n get(buf, off) {\n let dynOffset = 0;\n const trackIds = [];\n while (dynOffset < this.len) {\n trackIds.push(Token.UINT32_BE.get(buf, off + dynOffset));\n dynOffset += 4;\n }\n return trackIds;\n }\n}\n"],"mappings":"8bAAA,IAAAA,GAAsB,OCAtB,IAAAC,GAAsB,OCCtB,IAAAC,GAAsB,OAKtB,IAAMC,MAAQ,GAAAC,SAAU,gCAAgC,EAC3CC,EAAN,cAA8BC,GAA+B,KAAK,CAAE,CAP3E,MAO2E,CAAAC,EAAA,wBAC3E,EACaC,EAAS,CAClB,IAAK,EACL,IAAKD,EAAA,CAACE,EAAKC,IAAQ,CACf,IAAMC,EAAeC,EAAU,IAAIH,EAAKC,CAAG,EAC3C,GAAIC,EAAS,EACT,MAAM,IAAIN,EAAgB,4BAA4B,EAC1D,MAAO,CACH,OAAQ,OAAOM,CAAM,EACrB,KAAM,IAAUE,EAAW,EAAG,QAAQ,EAAE,IAAIJ,EAAKC,EAAM,CAAC,CAC5D,CACJ,EARK,OASL,IAAKH,EAAA,CAACE,EAAKC,EAAKI,KACNF,EAAU,IAAIH,EAAKC,EAAK,OAAOI,EAAI,MAAM,CAAC,EACzCC,GAAY,IAAIN,EAAKC,EAAM,EAAGI,EAAI,IAAI,GAF5C,MAIT,EAIaE,GAAqBC,EACrBC,GAAO,CAChB,IAAK,EACL,IAAKX,EAAA,CAACE,EAAKC,KACA,CACH,KAAM,IAAUG,EAAW,EAAG,OAAO,EAAE,IAAIJ,EAAKC,CAAG,CACvD,GAHC,MAKT,EAmBO,IAAMS,EAAN,KAAsB,CAvD7B,MAuD6B,CAAAC,EAAA,wBAOzB,YAAYC,EAAKC,EAAQC,EAAQ,CAC7B,GAAIF,EAAMC,EACN,MAAM,IAAIE,EAAgB,QAAQD,CAAM,mBAAmBD,CAAM,mBAAmBD,CAAG,cAAc,EAErGA,EAAMC,GACNG,GAAM,iBAAiBF,CAAM,mBAAmBD,CAAM,sBAAsBD,CAAG,cAAc,EAEjG,KAAK,IAAMA,CACf,CACJ,EAIMK,EAAuB,CACzB,IAAK,EACL,IAAKN,EAAA,CAACO,EAAKC,IAAQ,CACf,IAAMC,EAA8BC,EAAU,IAAIH,EAAKC,CAAG,EAAI,WAC9D,OAAO,IAAI,KAAKC,EAAwB,GAAI,CAChD,EAHK,MAIT,EACME,EAAyB,CAC3B,IAAK,EACL,IAAKX,EAAA,CAACO,EAAKC,IAAQ,CACf,IAAMC,EAAwB,OAAaG,EAAU,IAAIL,EAAKC,CAAG,CAAC,EAAI,WACtE,OAAO,IAAI,KAAKC,EAAwB,GAAI,CAChD,EAHK,MAIT,EAOaI,EAAN,cAAuBd,CAAgB,CA/F9C,MA+F8C,CAAAC,EAAA,iBAC1C,YAAYC,EAAK,CACb,MAAMA,EAAK,GAAI,MAAM,CACzB,CACA,IAAIM,EAAKC,EAAK,CACV,IAAMM,EAAgBC,EAAM,IAAIR,EAAKC,EAAM,CAAC,EACtCQ,EAAcC,EAAU,IAAIV,EAAKC,EAAM,CAAC,EAC9C,OAAQM,EAAS,CACb,IAAK,GAED,MAAO,CACH,QAAAA,EACA,MAAAE,EACA,aAAcV,EAAqB,IAAIC,EAAKC,EAAM,CAAC,EACnD,iBAAkBF,EAAqB,IAAIC,EAAKC,EAAM,CAAC,EACvD,UAAiBE,EAAU,IAAIH,EAAKC,EAAM,EAAE,EAC5C,SAAgBE,EAAU,IAAIH,EAAKC,EAAM,EAAE,EAC3C,SAAgBU,EAAU,IAAIX,EAAKC,EAAM,EAAE,EAC3C,QAAeU,EAAU,IAAIX,EAAKC,EAAM,EAAE,CAC9C,EACJ,IAAK,GACD,MAAO,CACH,QAAAM,EACA,MAAAE,EACA,aAAcL,EAAuB,IAAIJ,EAAKC,EAAM,CAAC,EACrD,iBAAkBG,EAAuB,IAAIJ,EAAKC,EAAM,EAAE,EAC1D,UAAiBE,EAAU,IAAIH,EAAKC,EAAM,EAAE,EAC5C,SAAU,OAAaI,EAAU,IAAIL,EAAKC,EAAM,EAAE,CAAC,EACnD,SAAgBU,EAAU,IAAIX,EAAKC,EAAM,EAAE,EAC3C,QAAeU,EAAU,IAAIX,EAAKC,EAAM,EAAE,CAC9C,EACJ,QACI,MAAM,IAAIW,EAAmB,6BAA6B,CAClE,CACJ,CACJ,EAIaC,EAAN,cAAuBrB,CAAgB,CAtI9C,MAsI8C,CAAAC,EAAA,iBAC1C,YAAYC,EAAK,CACb,MAAMA,EAAK,IAAK,MAAM,CAC1B,CACA,IAAIM,EAAKC,EAAK,CACV,IAAMM,EAAgBC,EAAM,IAAIR,EAAKC,CAAG,EAClCQ,EAAcC,EAAU,IAAIV,EAAKC,EAAM,CAAC,EAC9C,OAAIM,IAAY,EAEL,CACH,QAAAA,EACA,MAAAE,EACA,aAAcL,EAAuB,IAAIJ,EAAKC,EAAM,CAAC,EACrD,iBAAkBG,EAAuB,IAAIJ,EAAKC,EAAM,EAAE,EAC1D,UAAiBE,EAAU,IAAIH,EAAKC,EAAM,EAAE,EAC5C,SAAU,OAAaI,EAAU,IAAIL,EAAKC,EAAM,EAAE,CAAC,EACnD,cAAqBE,EAAU,IAAIH,EAAKC,EAAM,EAAE,EAChD,gBAAuBU,EAAU,IAAIX,EAAKC,EAAM,EAAE,EAGlD,YAAmBE,EAAU,IAAIH,EAAKC,EAAM,EAAE,EAC9C,gBAAuBE,EAAU,IAAIH,EAAKC,EAAM,EAAE,EAClD,WAAkBE,EAAU,IAAIH,EAAKC,EAAM,EAAE,EAC7C,cAAqBE,EAAU,IAAIH,EAAKC,EAAM,EAAE,EAChD,kBAAyBE,EAAU,IAAIH,EAAKC,EAAM,GAAG,EACrD,YAAmBE,EAAU,IAAIH,EAAKC,EAAM,GAAG,EAC/C,YAAmBE,EAAU,IAAIH,EAAKC,EAAM,GAAG,CACnD,EAGG,CACH,QAAAM,EACA,MAAAE,EACA,aAAcV,EAAqB,IAAIC,EAAKC,EAAM,CAAC,EACnD,iBAAkBF,EAAqB,IAAIC,EAAKC,EAAM,CAAC,EACvD,UAAiBE,EAAU,IAAIH,EAAKC,EAAM,EAAE,EAC5C,SAAgBE,EAAU,IAAIH,EAAKC,EAAM,EAAE,EAC3C,cAAqBE,EAAU,IAAIH,EAAKC,EAAM,EAAE,EAChD,gBAAuBU,EAAU,IAAIX,EAAKC,EAAM,EAAE,EAGlD,YAAmBE,EAAU,IAAIH,EAAKC,EAAM,EAAE,EAC9C,gBAAuBE,EAAU,IAAIH,EAAKC,EAAM,EAAE,EAClD,WAAkBE,EAAU,IAAIH,EAAKC,EAAM,EAAE,EAC7C,cAAqBE,EAAU,IAAIH,EAAKC,EAAM,EAAE,EAChD,kBAAyBE,EAAU,IAAIH,EAAKC,EAAM,EAAE,EACpD,YAAmBE,EAAU,IAAIH,EAAKC,EAAM,EAAE,EAC9C,YAAmBE,EAAU,IAAIH,EAAKC,EAAM,EAAE,CAClD,CACJ,CACJ,EAIaa,EAAN,KAAe,CA5LtB,MA4LsB,CAAArB,EAAA,iBAClB,YAAYC,EAAK,CACb,KAAK,IAAMA,CACf,CACA,IAAIM,EAAKC,EAAK,CACV,MAAO,CACH,KAAM,CACF,IAAWO,EAAM,IAAIR,EAAKC,EAAM,CAAC,EACjC,KAAYS,EAAU,IAAIV,EAAKC,EAAM,CAAC,CAC1C,EACA,OAAcS,EAAU,IAAIV,EAAKC,EAAM,CAAC,EACxC,MAAO,IAAUc,EAAe,KAAK,IAAM,CAAC,EAAE,IAAIf,EAAKC,EAAM,CAAC,CAClE,CACJ,CACJ,EAKae,EAAN,KAAe,CA/MtB,MA+MsB,CAAAvB,EAAA,iBAClB,YAAYC,EAAK,CACb,KAAK,IAAMA,CACf,CACA,IAAIM,EAAKC,EAAK,CACV,MAAO,CACH,QAAeO,EAAM,IAAIR,EAAKC,CAAG,EACjC,MAAaS,EAAU,IAAIV,EAAKC,EAAM,CAAC,EACvC,KAAM,IAAUgB,EAAW,KAAK,IAAM,EAAG,OAAO,EAAE,IAAIjB,EAAKC,EAAM,CAAC,CACtE,CACJ,CACJ,EAKaiB,EAAN,KAAsB,CA/N7B,MA+N6B,CAAAzB,EAAA,wBACzB,YAAYC,EAAK,CACb,KAAK,IAAMA,CACf,CACA,IAAIM,EAAKC,EAAK,CACV,IAAMM,EAAgBC,EAAM,IAAIR,EAAKC,CAAG,EAClCQ,EAAcC,EAAU,IAAIV,EAAKC,EAAM,CAAC,EAC9C,OAAQM,EAAS,CACb,IAAK,GAED,MAAO,CACH,QAAAA,EACA,MAAAE,EACA,aAAcV,EAAqB,IAAIC,EAAKC,EAAM,CAAC,EACnD,iBAAkBF,EAAqB,IAAIC,EAAKC,EAAM,CAAC,EACvD,QAAeE,EAAU,IAAIH,EAAKC,EAAM,EAAE,EAE1C,SAAgBE,EAAU,IAAIH,EAAKC,EAAM,EAAE,EAE3C,MAAaU,EAAU,IAAIX,EAAKC,EAAM,EAAE,EACxC,eAAsBU,EAAU,IAAIX,EAAKC,EAAM,EAAE,EACjD,OAAcU,EAAU,IAAIX,EAAKC,EAAM,EAAE,CAE7C,EACJ,IAAK,GAED,MAAO,CACH,QAAAM,EACA,MAAAE,EACA,aAAcL,EAAuB,IAAIJ,EAAKC,EAAM,CAAC,EACrD,iBAAkBG,EAAuB,IAAIJ,EAAKC,EAAM,EAAE,EAC1D,QAAeE,EAAU,IAAIH,EAAKC,EAAM,EAAE,EAE1C,SAAU,OAAaI,EAAU,IAAIL,EAAKC,EAAM,EAAE,CAAC,EAEnD,MAAaU,EAAU,IAAIX,EAAKC,EAAM,EAAE,EACxC,eAAsBU,EAAU,IAAIX,EAAKC,EAAM,EAAE,EACjD,OAAcU,EAAU,IAAIX,EAAKC,EAAM,EAAE,CAE7C,EACJ,QACI,MAAM,IAAIW,EAAmB,6BAA6B,CAClE,CACJ,CACJ,EAKMO,GAAa,CACf,IAAK,EACL,IAAK1B,EAAA,CAACO,EAAKC,KACA,CACH,QAAeO,EAAM,IAAIR,EAAKC,CAAG,EACjC,MAAaS,EAAU,IAAIV,EAAKC,EAAM,CAAC,EACvC,gBAAuBE,EAAU,IAAIH,EAAKC,EAAM,CAAC,CACrD,GALC,MAOT,EAKMmB,GAAN,KAA6B,CA9R7B,MA8R6B,CAAA3B,EAAA,+BACzB,YAAYC,EAAK,CACb,KAAK,IAAMA,CACf,CACA,IAAIM,EAAKC,EAAK,CACV,IAAMoB,EAAW,KAAK,IAAM,GAC5B,MAAO,CACH,WAAYC,GAAY,IAAItB,EAAKC,CAAG,EACpC,mBAA0BU,EAAU,IAAIX,EAAKC,EAAM,EAAE,EACrD,YAAaoB,EAAW,EAAI,IAAUN,EAAeM,CAAQ,EAAE,IAAIrB,EAAKC,EAAM,EAAE,EAAI,MACxF,CACJ,CACJ,EAKasB,EAAN,KAAe,CA/StB,MA+SsB,CAAA9B,EAAA,iBAClB,YAAYC,EAAK,CACb,KAAK,IAAMA,CACf,CACA,IAAIM,EAAKC,EAAK,CACV,IAAMuB,EAASL,GAAW,IAAInB,EAAKC,CAAG,EACtCA,GAAOkB,GAAW,IAClB,IAAMM,EAAQ,CAAC,EACf,QAASC,EAAI,EAAGA,EAAIF,EAAO,gBAAiB,EAAEE,EAAG,CAC7C,IAAMC,EAAaxB,EAAU,IAAIH,EAAKC,CAAG,EACzCA,GAAaE,EAAU,IACvBsB,EAAM,KAAK,IAAIL,GAAuBO,EAAaxB,EAAU,GAAG,EAAE,IAAIH,EAAKC,CAAG,CAAC,EAE/EA,GAAO0B,EAAaxB,EAAU,GAClC,CACA,MAAO,CACH,OAAAqB,EACA,MAAAC,CACJ,CACJ,CACJ,EAKaG,EAAgC,CACzC,IAAK,EACL,IAAI5B,EAAKC,EAAK,CACV,MAAO,CACH,QAAe4B,EAAS,IAAI7B,EAAKC,CAAG,EACpC,SAAgB4B,EAAS,IAAI7B,EAAKC,EAAM,CAAC,EACzC,OAAc6B,EAAS,IAAI9B,EAAKC,EAAM,CAAC,CAC3C,CACJ,CACJ,EAKa8B,GAA2B,CACpC,IAAK,GACL,IAAI/B,EAAKC,EAAK,CACV,MAAO,CACH,iBAAwB4B,EAAS,IAAI7B,EAAKC,EAAM,CAAC,EACjD,WAAkB4B,EAAS,IAAI7B,EAAKC,EAAM,CAAC,EAC3C,cAAqB4B,EAAS,IAAI7B,EAAKC,EAAM,CAAC,EAC9C,WAAkB4B,EAAS,IAAI7B,EAAKC,EAAM,CAAC,EAC3C,WAAkBU,EAAU,IAAIX,EAAKC,EAAM,CAAC,EAAUU,EAAU,IAAIX,EAAKC,EAAM,EAAE,EAAI,GACzF,CACJ,CACJ,EACM+B,EAAN,KAAsB,CAlWtB,MAkWsB,CAAAvC,EAAA,wBAClB,YAAYC,EAAKuC,EAAO,CACpB,KAAK,IAAMvC,EACX,KAAK,MAAQuC,CACjB,CACA,IAAIjC,EAAKC,EAAK,CACV,IAAMiC,EAAoBJ,EAAS,IAAI9B,EAAKC,EAAM,CAAC,EACnD,MAAO,CACH,QAAekC,EAAK,IAAInC,EAAKC,EAAM,CAAC,EACpC,MAAamC,EAAS,IAAIpC,EAAKC,EAAM,CAAC,EACtC,gBAAiBiC,EACjB,QAASG,GAAerC,EAAK,KAAK,MAAOC,EAAM,EAAG,KAAK,IAAM,EAAGiC,CAAW,CAC/E,CACJ,CACJ,EACaI,GAAoB,CAC7B,IAAK,EACL,IAAItC,EAAKC,EAAK,CACV,MAAO,CACH,MAAa6B,EAAS,IAAI9B,EAAKC,EAAM,CAAC,EACtC,SAAgB6B,EAAS,IAAI9B,EAAKC,EAAM,CAAC,CAC7C,CACJ,CACJ,EAMasC,EAAN,cAAuBP,CAAgB,CA/X9C,MA+X8C,CAAAvC,EAAA,iBAC1C,YAAYC,EAAK,CACb,MAAMA,EAAK4C,EAAiB,CAChC,CACJ,EACaE,GAAqB,CAC9B,IAAK,GACL,IAAIxC,EAAKC,EAAK,CACV,MAAO,CACH,WAAkB6B,EAAS,IAAI9B,EAAKC,CAAG,EACvC,gBAAuB6B,EAAS,IAAI9B,EAAKC,EAAM,CAAC,EAChD,oBAA2B6B,EAAS,IAAI9B,EAAKC,EAAM,CAAC,CACxD,CACJ,CACJ,EAKawC,EAAN,cAAuBT,CAAgB,CAlZ9C,MAkZ8C,CAAAvC,EAAA,iBAC1C,YAAYC,EAAK,CACb,MAAMA,EAAK8C,EAAkB,CACjC,CACJ,EAKaE,EAAN,KAAe,CA3ZtB,MA2ZsB,CAAAjD,EAAA,iBAClB,YAAYC,EAAK,CACb,KAAK,IAAMA,CACf,CACA,IAAIM,EAAKC,EAAK,CACV,IAAMiC,EAAoBJ,EAAS,IAAI9B,EAAKC,EAAM,CAAC,EACnD,MAAO,CACH,QAAekC,EAAK,IAAInC,EAAKC,CAAG,EAChC,MAAamC,EAAS,IAAIpC,EAAKC,EAAM,CAAC,EACtC,WAAkB6B,EAAS,IAAI9B,EAAKC,EAAM,CAAC,EAC3C,gBAAiBiC,EACjB,QAASG,GAAerC,EAAW8B,EAAU7B,EAAM,GAAI,KAAK,IAAM,GAAIiC,CAAW,CACrF,CACJ,CACJ,EAKaS,EAAN,cAAuBX,CAAgB,CA9a9C,MA8a8C,CAAAvC,EAAA,iBAC1C,YAAYC,EAAK,CACb,MAAMA,EAAWoC,CAAQ,EACzB,KAAK,IAAMpC,CACf,CACJ,EAIakD,EAAN,KAAkB,CAvbzB,MAubyB,CAAAnD,EAAA,oBACrB,YAAYC,EAAK,CACb,KAAK,IAAMA,CACf,CACA,IAAIM,EAAKC,EAAK,CACV,IAAM4C,EAAiBhB,EAAS,IAAI7B,EAAKC,EAAM,CAAC,EAEhD,OADY,IAAUgB,EAAW4B,EAAU,OAAO,EACvC,IAAI7C,EAAKC,EAAM,CAAC,CAC/B,CACJ,EACA,SAASoC,GAAerC,EAAKiC,EAAOhC,EAAK6C,EAAcC,EAAiB,CAEpE,GADAjD,GAAM,gBAAgBgD,CAAY,qBAAqBC,CAAe,gBAAgBd,EAAM,GAAG,EAAE,EAC7Fa,IAAiB,EACjB,MAAO,CAAC,EACZ,GAAIA,IAAiBC,EAAkBd,EAAM,IACzC,MAAM,IAAIpC,EAAgB,uDAAuD,EACrF,IAAMmD,EAAU,CAAC,EAEjB,QAAStB,EAAI,EAAGA,EAAIqB,EAAiB,EAAErB,EACnCsB,EAAQ,KAAKf,EAAM,IAAIjC,EAAKC,CAAG,CAAC,EAChCA,GAAOgC,EAAM,IAEjB,OAAOe,CACX,CAbSvD,EAAA4C,GAAA,kBAiBF,IAAMY,EAAN,KAA6B,CAldpC,MAkdoC,CAAAxD,EAAA,+BAChC,YAAYC,EAAK,CACb,KAAK,IAAMA,CACf,CACA,IAAIM,EAAKC,EAAK,CACV,IAAMiD,EAAajD,EAAM,EACnBuB,EAAS,CACX,QAAeW,EAAK,IAAInC,EAAKC,CAAG,EAChC,MAAO,CACH,sBAA4BkD,EAAOnD,EAAKkD,EAAa,EAAG,CAAC,EACzD,8BAAoCC,EAAOnD,EAAKkD,EAAa,EAAG,CAAC,EACjE,6BAAmCC,EAAOnD,EAAKkD,EAAa,EAAG,CAAC,EAChE,yBAA+BC,EAAOnD,EAAKkD,EAAa,EAAG,CAAC,EAC5D,0BAAgCC,EAAOnD,EAAKkD,EAAa,EAAG,CAAC,EAC7D,uBAA6BC,EAAOnD,EAAKkD,EAAY,CAAC,EACtD,kBAAwBC,EAAOnD,EAAKkD,EAAY,CAAC,CACrD,EACA,QAAe/C,EAAU,IAAIH,EAAK,CAAC,CACvC,EACIoD,EAAY,EAChB,OAAI5B,EAAO,MAAM,wBACbA,EAAO,eAAuBnB,EAAU,IAAIL,EAAKoD,CAAS,EAC1DA,GAAa,GAEb5B,EAAO,MAAM,gCACbA,EAAO,uBAA+BrB,EAAU,IAAIH,EAAKoD,CAAS,EAClEA,GAAa,GAEb5B,EAAO,MAAM,+BACbA,EAAO,sBAA8BrB,EAAU,IAAIH,EAAKoD,CAAS,EACjEA,GAAa,GAEb5B,EAAO,MAAM,2BACbA,EAAO,kBAA0BrB,EAAU,IAAIH,EAAKoD,CAAS,EAC7DA,GAAa,GAEb5B,EAAO,MAAM,4BACbA,EAAO,mBAA2BrB,EAAU,IAAIH,EAAKoD,CAAS,GAE3D5B,CACX,CACJ,EAIa6B,EAAN,KAAkB,CA/fzB,MA+fyB,CAAA5D,EAAA,oBACrB,YAAYC,EAAK,CACb,KAAK,IAAMA,CACf,CACA,IAAIM,EAAKC,EAAK,CACV,IAAMiD,EAAajD,EAAM,EACnBqD,EAAO,CACT,QAAenB,EAAK,IAAInC,EAAKC,CAAG,EAChC,MAAO,CACH,kBAAwBkD,EAAOnD,EAAKkD,EAAa,EAAG,CAAC,EACrD,wBAA8BC,EAAOnD,EAAKkD,EAAa,EAAG,CAAC,EAC3D,sBAA4BC,EAAOnD,EAAKkD,EAAa,EAAG,CAAC,EACzD,kBAAwBC,EAAOnD,EAAKkD,EAAa,EAAG,CAAC,EACrD,mBAAyBC,EAAOnD,EAAKkD,EAAa,EAAG,CAAC,EACtD,oCAA0CC,EAAOnD,EAAKkD,EAAa,EAAG,CAAC,CAC3E,EACA,YAAmB/C,EAAU,IAAIH,EAAKC,EAAM,CAAC,EAC7C,QAAS,CAAC,CACd,EACImD,EAAYnD,EAAM,EAClBqD,EAAK,MAAM,oBACXA,EAAK,WAAmBnD,EAAU,IAAIH,EAAKoD,CAAS,EACpDA,GAAa,GAEbE,EAAK,MAAM,0BACXA,EAAK,iBAAyBnD,EAAU,IAAIH,EAAKoD,CAAS,EAC1DA,GAAa,GAEjB,QAAS1B,EAAI,EAAGA,EAAI4B,EAAK,YAAa,EAAE5B,EAAG,CACvC,GAAI0B,GAAa,KAAK,IAAK,CACvBtD,GAAM,2BAA2B,EACjC,KACJ,CACA,IAAMyD,EAAS,CAAC,EACZD,EAAK,MAAM,wBACXC,EAAO,eAAuBpD,EAAU,IAAIH,EAAKoD,CAAS,EAC1DA,GAAa,GAEbE,EAAK,MAAM,oBACXC,EAAO,WAAmBpD,EAAU,IAAIH,EAAKoD,CAAS,EACtDA,GAAa,GAEbE,EAAK,MAAM,qBACXC,EAAO,YAAoBpD,EAAU,IAAIH,EAAKoD,CAAS,EACvDA,GAAa,GAEbE,EAAK,MAAM,sCACXC,EAAO,4BAAoCpD,EAAU,IAAIH,EAAKoD,CAAS,EACvEA,GAAa,GAEjBE,EAAK,QAAQ,KAAKC,CAAM,CAC5B,CACA,OAAOD,CACX,CACJ,EAIaE,EAAN,KAAiB,CAzjBxB,MAyjBwB,CAAA/D,EAAA,mBACpB,YAAYC,EAAK,CACb,KAAK,IAAMA,CACf,CACA,IAAIM,EAAKC,EAAK,CACV,IAAMwD,EAAcxD,EAAM,EACpByD,EAAgB,IAAUzC,EAAW,EAAG,OAAO,EACrD,MAAO,CACH,QAAekB,EAAK,IAAInC,EAAKC,CAAG,EAChC,MAAaS,EAAU,IAAIV,EAAKC,EAAM,CAAC,EACvC,cAAeyD,EAAc,IAAI1D,EAAKC,EAAM,CAAC,EAC7C,YAAayD,EAAc,IAAI1D,EAAKC,EAAM,CAAC,EAC3C,cAAe,IAAUgB,EAAW,KAAK,IAAM,GAAI,OAAO,EAAE,IAAIjB,EAAKC,EAAM,EAAE,CACjF,CACJ,CACJ,EAIa0D,EAAN,KAA+B,CA5kBtC,MA4kBsC,CAAAlE,EAAA,iCAClC,YAAYC,EAAK,CACb,KAAK,IAAMA,CACf,CACA,IAAIM,EAAKC,EAAK,CACV,IAAImD,EAAY,EACVQ,EAAW,CAAC,EAClB,KAAOR,EAAY,KAAK,KACpBQ,EAAS,KAAWzD,EAAU,IAAIH,EAAKC,EAAMmD,CAAS,CAAC,EACvDA,GAAa,EAEjB,OAAOQ,CACX,CACJ,EDtlBA,IAAMC,MAAQ,GAAAC,SAAU,gCAAgC,EAC3CC,EAAN,MAAMC,CAAK,CAJlB,MAIkB,CAAAC,EAAA,aACd,aAAa,SAASC,EAAWC,EAAaC,EAAQC,EAAW,CAE7D,IAAMC,EAASJ,EAAU,SACzBL,GAAM,gCAAgCS,CAAM,KAAK,EACjD,IAAMC,EAAS,MAAML,EAAU,UAAoBM,CAAM,EACnDC,EAAWF,EAAO,SAAW,GAC/BE,IACAF,EAAO,OAAS,MAAML,EAAU,UAAoBQ,EAAY,GAEpE,IAAMC,EAAW,IAAIX,EAAKO,EAAQE,EAAUL,CAAM,EAC5CQ,EAAgBD,EAAS,iBAAiBN,CAAS,EACzD,OAAAR,GAAM,mBAAmBc,EAAS,QAAQ,cAAcA,EAAS,QAAQ,YAAYL,CAAM,SAASK,EAAS,OAAO,MAAM,EAAE,EAC5H,MAAMA,EAAS,SAAST,EAAWC,EAAaS,CAAa,EACtDD,CACX,CACA,YAAYJ,EAAQE,EAAUL,EAAQ,CAClC,KAAK,OAASG,EACd,KAAK,SAAWE,EAChB,KAAK,OAASL,EACd,KAAK,SAAW,CAAC,EACjB,KAAK,UAAY,KAAK,OAAS,GAAG,KAAK,OAAO,QAAQ,IAAM,IAAM,KAAK,OAAO,IAClF,CACA,iBAAkB,CACd,OAAO,KAAK,SAAW,GAAK,CAChC,CACA,iBAAiBC,EAAW,CACxB,OAAQ,KAAK,OAAO,SAAW,GAAKA,EAAY,OAAO,KAAK,OAAO,MAAM,GAAK,KAAK,gBAAgB,CACvG,CACA,MAAM,UAAUH,EAAWC,EAAaU,EAAM,CAC1C,KAAOA,EAAO,GAAG,CACb,IAAMF,EAAW,MAAMX,EAAK,SAASE,EAAWC,EAAa,KAAMU,CAAI,EACvE,KAAK,SAAS,KAAKF,CAAQ,EAC3BE,GAAQF,EAAS,OAAO,SAAW,GAAKE,EAAO,OAAOF,EAAS,OAAO,MAAM,CAChF,CACJ,CACA,MAAM,SAAST,EAAWC,EAAaE,EAAW,CAC9C,OAAQ,KAAK,OAAO,KAAM,CAEtB,IAAK,OACL,IAAK,OACL,IAAK,OACL,IAAK,OACL,IAAK,OACL,IAAK,OACL,IAAK,OACL,IAAK,OACL,IAAK,OACD,OAAO,KAAK,UAAUH,EAAWC,EAAa,KAAK,iBAAiBE,CAAS,CAAC,EAClF,IAAK,OAAQ,CAGT,IAAMS,GADa,MAAMZ,EAAU,UAAUM,CAAM,GAClB,OAAS,OAAS,EAAI,EACvD,aAAMN,EAAU,OAAOY,CAAa,EAC7B,KAAK,UAAUZ,EAAWC,EAAa,KAAK,iBAAiBE,CAAS,EAAIS,CAAa,CAClG,CACA,QACI,OAAOX,EAAY,KAAME,CAAS,CAC1C,CACJ,CACJ,EDtDA,IAAMU,KAAQ,GAAAC,SAAU,2BAA2B,EAC7CC,GAAY,SACZC,GAAc,CAChB,IAAK,CACD,MAAO,GACP,OAAQ,KACZ,EACA,KAAM,CACF,MAAO,GACP,OAAQ,UACZ,EACA,KAAM,CACF,MAAO,GACP,OAAQ,UACZ,EACA,KAAM,CACF,MAAO,GACP,OAAQ,SACZ,EACA,KAAM,CACF,MAAO,GACP,OAAQ,UACZ,EACA,KAAM,CACF,MAAO,GACP,OAAQ,UACZ,EACA,KAAM,CACF,MAAO,GACP,OAAQ,oBACZ,EACA,OAAQ,CACJ,MAAO,GACP,OAAQ,gBACZ,EACA,KAAM,CACF,MAAO,GACP,OAAQ,MACZ,EACA,OAAQ,CACJ,MAAO,GACP,OAAQ,MACZ,EACA,KAAM,CACF,MAAO,GACP,OAAQ,YACZ,EACA,KAAM,CACF,MAAO,GACP,OAAQ,MACZ,EAEA,KAAM,CACF,MAAO,GACP,OAAQ,SACZ,EACA,KAAM,CACF,MAAO,GACP,OAAQ,SACZ,CACJ,EACA,SAASC,GAASC,EAAOC,EAAOC,EAAM,CAClC,OAAOA,EAAK,QAAQF,CAAK,IAAMC,CACnC,CAFSE,EAAAJ,GAAA,YAaT,SAASK,GAAaC,EAAO,CACzB,GAAM,CAACC,CAAG,EAAID,EAAM,wBAA0B,CAAC,EAC/C,OAAKC,EAGDD,EAAM,QACCA,EAAM,QAAQ,EAElB,CAAC,CAACC,EAAI,aAAeA,EAAI,YAAY,iBAAmB,EALpD,EAMf,CATSH,EAAAC,GAAA,gBA4BF,IAAMG,GAAN,MAAMC,UAAkBC,EAAY,CAhH3C,MAgH2C,CAAAN,EAAA,kBACvC,aAAc,CACV,MAAM,GAAG,SAAS,EAClB,KAAK,OAAS,IAAI,IAClB,KAAK,cAAgB,GACrB,KAAK,cAAgB,GACrB,KAAK,YAAc,CAKf,KAAMA,EAAA,MAAOO,GAAQ,CACjB,IAAMC,EAAO,MAAM,KAAK,UAAU,UAAU,IAAcC,EAASF,CAAG,CAAC,EACvE,KAAK,SAAS,UAAU,eAAgBC,EAAK,YAAY,EACzD,KAAK,SAAS,UAAU,mBAAoBA,EAAK,gBAAgB,CACrE,EAJM,QAKN,KAAMR,EAAA,MAAOO,GAAQ,CACjB,IAAMG,EAAK,KAAK,oBAAoB,EAC9BC,EAAW,CAAC,EAClB,KAAOJ,GAAaK,EAAU,KAC1BD,EAAS,KAAK,MAAM,KAAK,UAAU,WAAiBC,CAAS,CAAC,EAC9DL,GAAaK,EAAU,IAE3BF,EAAG,YAAcC,CACrB,EARM,QAaN,KAAMX,EAAA,MAAOO,GAAQ,CACjB,GAAI,KAAK,QAAQ,gBAAiB,CAC9B,IAAMM,EAAoB,CAAC,GAAG,KAAK,OAAO,OAAO,CAAC,EAAE,OAAOX,GAASA,EAAM,WAAW,EACrF,GAAIW,EAAkB,SAAW,EAAG,CAChC,IAAMC,EAAkBD,EAAkB,CAAC,EAAE,YACvCE,EAAgB,CAAC,GAAG,KAAK,OAAO,OAAO,CAAC,EAAE,OAAOb,GAASY,EAAgB,QAAQZ,EAAM,OAAO,OAAO,IAAM,EAAE,EACpH,GAAIa,EAAc,SAAW,EACzB,OAAO,KAAK,kBAAkBA,EAAc,CAAC,EAAGF,EAAkB,CAAC,EAAGN,CAAG,CAEjF,CACJ,CACA,MAAM,KAAK,UAAU,OAAOA,CAAG,CACnC,EAZM,QAaN,KAAMP,EAAA,MAAOO,GAAQ,CACjB,IAAMS,EAAQ,CAAC,EACf,KAAOT,EAAM,GAAG,CACZ,IAAMU,EAAQ,MAAM,KAAK,UAAU,UAAoBC,EAAI,EAC3DX,GAAiBW,GAAK,IACtB,IAAMrB,EAAQoB,EAAM,KAAK,QAAQ,MAAO,EAAE,EACtCpB,EAAM,OAAS,GACfmB,EAAM,KAAKnB,CAAK,CAExB,CACAL,EAAM,SAASwB,EAAM,KAAK,GAAG,CAAC,EAAE,EAChC,IAAMG,EAAIH,EAAM,OAAOpB,EAAQ,EAAE,KAAK,GAAG,EACzC,KAAK,SAAS,UAAU,YAAauB,CAAC,CAC1C,EAbM,QAiBN,KAAMnB,EAAA,MAAOO,GAAQ,CACjB,IAAMa,EAAO,MAAM,KAAK,UAAU,UAAU,IAAcC,EAASd,CAAG,CAAC,EACjEe,EAAmB,KAAK,oBAAoB,EAClDA,EAAiB,uBAAyBF,EAAK,MAAM,IAAIG,GAAW,KAAK,4BAA4BA,CAAO,CAAC,CACjH,EAJM,QAQN,KAAMvB,EAAA,MAAOO,GAAQ,CACjB,IAAMiB,EAAO,MAAM,KAAK,UAAU,UAAU,IAAcC,EAASlB,CAAG,CAAC,EACjEG,EAAK,KAAK,oBAAoB,EACpCA,EAAG,WAAac,EAAK,WACrBd,EAAG,gBAAkBc,EAAK,OAC9B,EALM,QAMN,KAAMxB,EAAA,MAAOO,GAAQ,CACjB,IAAMmB,EAAO,MAAM,KAAK,UAAU,UAAU,IAAUC,EAAWpB,EAAK,OAAO,CAAC,EAC9E,MAAM,KAAK,OAAO,OAAQmB,CAAI,CAClC,EAHM,OAIV,CACJ,CACA,OAAO,gBAAgBE,EAAOC,EAAQ,CAClC,IAAMC,GAAeD,EAAS,MAAQ,QAAUD,EAAM,OAAS,GAAKA,EAAM,OAAS,EAAI,MAAQ,IACzFG,EAAQC,EAAMF,CAAW,EAC/B,GAAI,CAACC,EACD,MAAM,IAAIE,EAAgB,sCAAsCH,CAAW,GAAG,EAElF,OAAO,OAAOC,EAAM,IAAIH,EAAO,CAAC,CAAC,CACrC,CACA,MAAM,OAAQ,CACV,KAAK,cAAgB,GACrB,KAAK,cAAgB,GACrB,KAAK,OAAO,MAAM,EAClB,IAAIM,EAAoB,KAAK,UAAU,SAAS,MAAQ,EACxD,KAAO,CAAC,KAAK,UAAU,SAAS,MAAQA,EAAoB,GAAG,CAC3D,GAAI,CAEA,IADc,MAAM,KAAK,UAAU,UAAoBC,CAAM,GACnD,OAAS,WAAY,CAC3B,IAAMC,EAAS,mBAAmB,KAAK,UAAU,QAAQ,aACzD5C,EAAM4C,CAAM,EACZ,KAAK,WAAWA,CAAM,EACtB,KACJ,CACJ,OACOC,EAAO,CACV,GAAIA,aAAiB,MAAO,CACxB,IAAMD,EAAS,mBAAmB,KAAK,UAAU,QAAQ,KAAKC,EAAM,OAAO,GAC3E7C,EAAM4C,CAAM,EACZ,KAAK,WAAWA,CAAM,CAC1B,KAEI,OAAMC,EACV,KACJ,CACA,IAAMC,EAAW,MAAMC,EAAK,SAAS,KAAK,UAAW,CAACC,EAAMC,IAAc,KAAK,WAAWD,EAAMC,CAAS,EAAG,KAAMP,CAAiB,EACnIA,GAAqBI,EAAS,OAAO,SAAW,OAAO,CAAC,EAAIJ,EAAoB,OAAOI,EAAS,OAAO,MAAM,CACjH,CAEA,IAAMI,EAAa,CAAC,EACpB,KAAK,OAAO,QAAQxC,GAAS,CACzB,IAAMyC,EAAe,CAAC,EAChBC,EAAe3C,GAAaC,CAAK,EACvCA,EAAM,uBAAuB,QAAQC,GAAO,CACxC,IAAM0C,EAAa,CAAC,EACdC,EAAcnD,GAAYQ,EAAI,UAAU,EAQ9C,GAPI2C,GACAH,EAAa,KAAKG,EAAY,MAAM,EACpCD,EAAW,UAAYC,EAAY,QAGnCD,EAAW,UAAY,IAAI1C,EAAI,UAAU,IAEzCyC,GAAgBzC,EAAI,YAAa,CACjC,GAAM,CAAE,YAAA4C,CAAY,EAAI5C,EACpB4C,EAAY,WAAa,IACzBF,EAAW,KAAOG,GAAU,MAC5BH,EAAW,MAAQ,CACf,kBAAmBE,EAAY,WAC/B,SAAUA,EAAY,WACtB,SAAUA,EAAY,gBAC1B,EAER,CACA,KAAK,SAAS,cAAcF,CAAU,CAC1C,CAAC,EACGF,EAAa,QAAU,GACvBD,EAAW,KAAKC,EAAa,KAAK,GAAG,CAAC,CAE9C,CAAC,EACGD,EAAW,OAAS,GACpB,KAAK,SAAS,UAAU,QAASA,EAAW,OAAO9C,EAAQ,EAAE,KAAK,GAAG,CAAC,EAE1E,IAAMqD,EAAc,CAAC,GAAG,KAAK,OAAO,OAAO,CAAC,EAAE,OAAOhD,EAAY,EAEjE,QAAWiD,KAAcD,EAAa,CAClC,GAAIC,EAAW,MAAM,QAAUA,EAAW,MAAM,OAAO,UAAY,EAO/D,GANAA,EAAW,WAAaA,EAAW,MAAM,OAAO,UAC5CA,EAAW,MAAM,OAAO,SAAW,IACnC1D,EAAM,uCAAuC,EAC7C0D,EAAW,QAAUA,EAAW,MAAM,OAAO,SAC7CA,EAAW,SAAWA,EAAW,QAAUA,EAAW,YAEtDA,EAAW,UAAU,OAAS,EAAG,CACjC1D,EAAM,+CAA+C,EACrD,IAAI2D,EAAiB,EACrBD,EAAW,YAAc,EACzB,QAAWE,KAAYF,EAAW,UAC9B,QAAWG,KAAUD,EAAS,SAAS,QAAS,CAC5C,IAAME,EAAMD,EAAO,gBAAkBD,EAAS,OAAO,uBAAyB,EACxEG,EAAOF,EAAO,YAAcD,EAAS,OAAO,mBAAqB,EACvE,GAAIE,IAAQ,EACR,MAAM,IAAI,MAAM,8EAA8E,EAElG,GAAIC,IAAS,EACT,MAAM,IAAI,MAAM,sEAAsE,EAE1FJ,GAAkBG,EAClBJ,EAAW,aAAeK,CAC9B,CAECL,EAAW,UACZA,EAAW,QAAUC,GAEpBD,EAAW,WACZA,EAAW,SAAWC,EAAiBD,EAAW,WAE1D,MACSA,EAAW,gBAAgB,OAAS,IACzCA,EAAW,YAAcA,EAAW,gBAAgB,OAAO,CAACM,EAAKC,IAAMD,EAAMC,EAAG,CAAC,GAGzF,IAAMtD,EAAM+C,EAAW,uBAAuB,CAAC,EAC/C,GAAI/C,EAAI,aAAe+C,EAAW,MAAM,SACpC,KAAK,SAAS,UAAU,aAAc/C,EAAI,YAAY,UAAU,EAChE,KAAK,SAAS,UAAU,gBAAiBA,EAAI,YAAY,UAAU,EACnE,KAAK,SAAS,UAAU,mBAAoBA,EAAI,YAAY,gBAAgB,EACxE+C,EAAW,MAAM,OAAO,YAAc,GAAKA,EAAW,kBAAkB,OAAS,GAAG,CACpF,IAAMQ,EAAkBR,EAAW,kBAC9B,IAAIS,GAAaA,EAAU,MAAQA,EAAU,QAAQ,EACrD,OAAO,CAACC,EAAOC,IAAeD,EAAQC,CAAU,EACrDX,EAAW,SAAWQ,EAAkBvD,EAAI,YAAY,UAC5D,CAEJ,IAAM2C,EAAcnD,GAAYQ,EAAI,UAAU,EAC1C2C,GACA,KAAK,SAAS,UAAU,WAAY,CAACA,EAAY,KAAK,CAE9D,CACA,GAAIG,EAAY,QAAU,EAAG,CACzB,IAAMa,EAAkBb,EAAY,CAAC,EACjCa,EAAgB,WAChB,KAAK,SAAS,UAAU,WAAYA,EAAgB,QAAQ,EACxDA,EAAgB,aAChB,KAAK,SAAS,UAAU,UAAW,EAAIA,EAAgB,YAAcA,EAAgB,QAAQ,EAGzG,CACA,KAAK,SAAS,UAAU,WAAY,KAAK,aAAa,EACtD,KAAK,SAAS,UAAU,WAAY,KAAK,aAAa,CAC1D,CACA,MAAM,WAAWtB,EAAMC,EAAW,CAC9B,GAAID,EAAK,OACL,OAAQA,EAAK,OAAO,OAAO,KAAM,CAC7B,IAAK,OACL,IAAK,OACD,OAAO,KAAK,sBAAsBA,CAAI,EAC1C,IAAK,OACD,OAAQA,EAAK,OAAO,KAAM,CACtB,IAAK,OACD,OAAO,KAAK,cAAcA,CAAI,EAClC,IAAK,OACD,OAAO,KAAK,cAAcA,CAAI,CACtC,CACA,MACJ,IAAK,OACD,GAAQA,EAAK,OAAO,OACX,OACD,OAAO,KAAK,sBAAsBA,CAAI,CAEtD,CAGJ,GAAI,KAAK,YAAYA,EAAK,OAAO,IAAI,EACjC,OAAO,KAAK,YAAYA,EAAK,OAAO,IAAI,EAAEC,CAAS,EAEvDjD,EAAM,2BAA2BgD,EAAK,QAAQ,iBAAiBC,CAAS,iBAAiB,EACzF,MAAM,KAAK,UAAU,OAAOA,CAAS,CACzC,CACA,qBAAsB,CAElB,IAAMsB,EAAS,CAAC,GAAG,KAAK,OAAO,OAAO,CAAC,EACvC,OAAOA,EAAOA,EAAO,OAAS,CAAC,CACnC,CACA,MAAM,OAAOC,EAAInE,EAAO,CACpB,MAAM,KAAK,SAAS,OAAOH,GAAWsE,EAAInE,CAAK,CACnD,CACA,WAAWoE,EAAS,CAChBzE,EAAM,YAAYyE,CAAO,EAAE,EAC3B,KAAK,SAAS,WAAWA,CAAO,CACpC,CAMA,sBAAsBC,EAAU,CAC5B,IAAIC,EAASD,EAAS,OAAO,KAC7B,OAAOA,EAAS,UAAU,KAAK,UAAW,MAAOE,EAAO3B,IAAc,CAClE,IAAM4B,EAAgBD,EAAM,iBAAiB3B,CAAS,EACtD,OAAQ2B,EAAM,OAAO,KAAM,CACvB,IAAK,OACD,OAAO,KAAK,eAAeD,EAAQC,CAAK,EAC5C,IAAK,OACL,IAAK,OACL,IAAK,OAAQ,CACT,IAAME,EAAO,MAAM,KAAK,UAAU,UAAU,IAAcC,EAASF,CAAa,CAAC,EACjFF,GAAU,IAAIG,EAAK,IAAI,GACvB,KACJ,CACA,QAAS,CACL,IAAME,EAAa,MAAM,KAAK,UAAU,UAAU,IAAUC,EAAeJ,CAAa,CAAC,EACzF,KAAK,WAAW,0BAA0BF,CAAM,IAAIC,EAAM,OAAO,IAAI,cAAcM,GAAgBF,CAAU,CAAC,UAAUG,EAAWH,EAAY,OAAO,CAAC,EAAE,CAC7J,CACJ,CACJ,EAAGN,EAAS,iBAAiB,CAAC,CAAC,CACnC,CACA,MAAM,eAAeC,EAAQD,EAAU,CACnC,IAAMU,EAAW,MAAM,KAAK,UAAU,UAAU,IAAcC,EAAS,OAAOX,EAAS,OAAO,MAAM,EAAc/B,EAAO,GAAG,CAAC,EAC7H,GAAIyC,EAAS,KAAK,MAAQ,EACtB,MAAM,IAAI3C,EAAgB,8BAA8B2C,EAAS,KAAK,GAAG,EAAE,EAI/E,OAAQA,EAAS,KAAK,KAAM,CACxB,IAAK,GACD,OAAQT,EAAQ,CACZ,IAAK,OACL,IAAK,OAAQ,CACT,IAAMW,EAAYC,EAAM,IAAIH,EAAS,MAAO,CAAC,EACvCI,EAAWD,EAAM,IAAIH,EAAS,MAAO,CAAC,EAE5C,MAAM,KAAK,OAAOT,EAAQ,GAAGW,CAAG,IAAIE,CAAE,EAAE,EACxC,KACJ,CACA,IAAK,OAAQ,CACT,IAAMC,EAAiBF,EAAM,IAAIH,EAAS,MAAO,CAAC,EAC5CM,EAAWC,GAAOF,EAAW,CAAC,EAEpC,MAAM,KAAK,OAAOd,EAAQe,CAAQ,EAClC,KACJ,CACA,IAAK,OAAQ,CACT,IAAME,EAAOT,EAAWC,EAAS,MAAO,OAAO,EAC/C,MAAM,KAAK,OAAOT,EAAQiB,CAAI,EAC9B,KACJ,CACA,QACI5F,EAAM,uCAAuC0E,EAAS,QAAQ,EAAE,CACxE,CACA,MACJ,IAAK,GACL,IAAK,IACD,MAAM,KAAK,OAAOC,EAAQQ,EAAWC,EAAS,KAAK,CAAC,EACpD,MACJ,IAAK,IACD,GAAI,KAAK,QAAQ,WACb,MACJ,MAAM,KAAK,OAAOT,EAAQ,CACtB,OAAQ,aACR,KAAM,WAAW,KAAKS,EAAS,KAAK,CACxC,CAAC,EACD,MACJ,IAAK,IACD,GAAI,KAAK,QAAQ,WACb,MACJ,MAAM,KAAK,OAAOT,EAAQ,CACtB,OAAQ,YACR,KAAM,WAAW,KAAKS,EAAS,KAAK,CACxC,CAAC,EACD,MACJ,IAAK,IACD,MAAM,KAAK,OAAOT,EAAQ9D,EAAU,gBAAgBuE,EAAS,MAAO,EAAI,CAAC,EACzE,MACJ,IAAK,IACD,MAAM,KAAK,OAAOT,EAAQ9D,EAAU,gBAAgBuE,EAAS,MAAO,EAAK,CAAC,EAC1E,MACJ,IAAK,IACD,MAAM,KAAK,OAAOT,EAAcY,EAAM,IAAIH,EAAS,MAAO,CAAC,CAAC,EAC5D,MACJ,IAAK,IACD,MAAM,KAAK,OAAOT,EAAckB,EAAU,IAAIT,EAAS,MAAO,CAAC,CAAC,EAChE,MACJ,IAAK,IACD,MAAM,KAAK,OAAOT,EAAcvD,EAAU,IAAIgE,EAAS,MAAO,CAAC,CAAC,EAChE,MACJ,QACI,KAAK,WAAW,YAAYT,CAAM,8CAA8CS,EAAS,KAAK,IAAI,EAAE,CAC5G,CACJ,CACA,MAAM,cAAcU,EAAS,CAEzB,IAAMpF,EAAQ,CACV,MAAO,CAAC,EACR,UAAW,CAAC,CAChB,EACA,MAAMoF,EAAQ,UAAU,KAAK,UAAW,MAAOlB,EAAO3B,IAAc,CAChE,IAAM4B,EAAgBD,EAAM,iBAAiB3B,CAAS,EACtD,OAAQ2B,EAAM,OAAO,KAAM,CACvB,IAAK,OAAQ,CACT,IAAMmB,EAAO,MAAM,KAAK,UAAU,UAAU,IAAIC,EAAyB/C,CAAS,CAAC,EACnFvC,EAAM,YAAcqF,EACpB,KACJ,CACA,IAAK,OACDrF,EAAM,OAAS,MAAM,KAAK,UAAU,UAAU,IAAcuF,EAAgBpB,CAAa,CAAC,EAC1F,MACJ,IAAK,OACDnE,EAAM,QAAU,MAAM,KAAK,UAAU,UAAU,IAAcwF,EAAWrB,CAAa,CAAC,EACtFnE,EAAM,QAAU,IAAMA,EAAM,QAAQ,cAAgB,QAAUA,EAAM,QAAQ,cAAgB,OAC5FA,EAAM,QAAU,IAAMA,EAAM,QAAQ,cAAgB,OAChDA,EAAM,QAAQ,EACd,KAAK,cAAgB,GAEhBA,EAAM,QAAQ,IACnB,KAAK,cAAgB,IAEzB,MACJ,IAAK,OAAQ,CACT,IAAMyF,EAAY,MAAM,KAAK,UAAU,UAAU,IAAcC,EAASvB,CAAa,CAAC,EACtFnE,EAAM,MAAM,OAASyF,EACrB,KACJ,CACA,IAAK,OAAQ,CACT,IAAME,EAAO,MAAM,KAAK,UAAU,UAAU,IAAcC,EAASzB,CAAa,CAAC,EACjFnE,EAAM,iBAAmB2F,EAAK,QAC9B,KACJ,CACA,IAAK,OAAQ,CACT,IAAME,EAAO,MAAM,KAAK,UAAU,UAAU,IAAcC,EAAS3B,CAAa,CAAC,EACjFnE,EAAM,mBAAqB6F,EAAK,QAChC,KACJ,CACA,IAAK,OAAQ,CACT,IAAM3E,EAAO,MAAM,KAAK,UAAU,UAAU,IAAcC,EAASgD,CAAa,CAAC,EACjFnE,EAAM,uBAAyBkB,EAAK,MAAM,IAAIG,GAAW,KAAK,4BAA4BA,CAAO,CAAC,EAClG,KACJ,CACA,IAAK,OAAQ,CACT,IAAM0E,EAAO,MAAM,KAAK,UAAU,UAAU,IAAcC,EAAS7B,CAAa,CAAC,EACjFnE,EAAM,kBAAoB+F,EAAK,QAC/B,KACJ,CACA,IAAK,OAAQ,CACT,IAAMzE,EAAO,MAAM,KAAK,UAAU,UAAU,IAAcC,EAAS4C,CAAa,CAAC,EACjFnE,EAAM,WAAasB,EAAK,WACxBtB,EAAM,gBAAkBsB,EAAK,QAC7B,KACJ,CACA,IAAK,OACL,IAAK,OACL,IAAK,OACDhC,EAAM,aAAa4E,EAAM,OAAO,IAAI,EAAE,EACtC,MAAM,KAAK,UAAU,OAAOC,CAAa,EACzC,MACJ,QACI7E,EAAM,yBAAyB4E,EAAM,OAAO,IAAI,EAAE,EAClD,MAAM,KAAK,UAAU,OAAOC,CAAa,CAEjD,CACJ,EAAGiB,EAAQ,iBAAiB,CAAC,CAAC,EAE9B,KAAK,OAAO,IAAIpF,EAAM,OAAO,QAASA,CAAK,CAC/C,CACA,sBAAsBiG,EAAS,CAC3B,IAAIC,EACJ,OAAOD,EAAQ,UAAU,KAAK,UAAW,MAAO/B,EAAO3B,IAAc,CACjE,IAAM4B,EAAgBD,EAAM,iBAAiB3B,CAAS,EACtD,OAAQ2B,EAAM,OAAO,KAAM,CACvB,IAAK,OAAQ,CACT,IAAMiC,EAAoB,IAAcC,EAAuBlC,EAAM,iBAAiB3B,CAAS,CAAC,EAChG2D,EAAO,MAAM,KAAK,UAAU,UAAUC,CAAiB,EACvD,KACJ,CACA,IAAK,OACD,MAAM,KAAK,UAAU,OAAOhC,CAAa,EACzC,MACJ,IAAK,OAAQ,CACT,IAAMkC,EAAc,IAAcC,EAAYnC,CAAa,EACrDoC,EAAO,MAAM,KAAK,UAAU,UAAUF,CAAW,EACnDH,GACc,KAAK,OAAO,IAAIA,EAAK,OAAO,GACnC,UAAU,KAAK,CAAE,OAAQA,EAAM,SAAUK,CAAK,CAAC,EAE1D,KACJ,CACA,QACIjH,EAAM,mBAAmB4E,EAAM,OAAO,IAAI,EAAE,EAC5C,MAAM,KAAK,UAAU,OAAOC,CAAa,CAEjD,CACJ,EAAG8B,EAAQ,iBAAiB,CAAC,CAAC,CAClC,CAKA,4BAA4BO,EAAmB,CAC3C,IAAMvG,EAAM,CACR,WAAYuG,EAAkB,WAC9B,mBAAoBA,EAAkB,kBAC1C,EACIC,EAAS,EACP,CAAE,YAAA5D,CAAY,EAAI2D,EAGxB,GAAI3D,GAAeA,EAAY,QAAoB6D,EAA8B,IAAK,CAClF,IAAMC,EAAoBD,EAA8B,IAAI7D,EAAa4D,CAAM,EAC/EA,GAAoBC,EAA8B,IAC9CC,EAAQ,UAAY,GAAKA,EAAQ,UAAY,EAEzC9D,EAAY,QAAU4D,EAAmBG,GAAyB,IAClE3G,EAAI,YAAwB2G,GAAyB,IAAI/D,EAAa4D,CAAM,EAG5EnH,EAAM,gDAAgDuD,EAAY,MAAM,QAAQ,EAIpFvD,EAAM,qCAAqCqH,CAAO,kBAAkB,CAE5E,CACA,OAAO1G,CACX,CACA,MAAM,kBAAkB4G,EAAc7G,EAAOK,EAAK,CAC9C,GAAI,CAACwG,EAAa,YACVA,EAAa,iBAAiB,SAAWA,EAAa,gBAAgB,OACtE,MAAM,IAAI,MAAM,+DAA+D,EAEvF,IAAMC,EAAW,CAAC,EAClB,QAASC,EAAI,EAAGA,EAAIF,EAAa,iBAAiB,QAAUxG,EAAM,EAAG,EAAE0G,EAAG,CACtE,IAAMC,EAAQH,EAAa,kBACtB,MAAM,EAAGE,CAAC,EACV,OAAO,CAACE,GAAKC,KAAQD,GAAMC,GAAI,SAAU,CAAC,EAEzCC,EADcN,EAAa,iBAAiBE,CAAC,EAChB,KAAK,UAAU,SAC5CpD,EAAakD,EAAa,WAAa,EAAIA,EAAa,WAAaA,EAAa,gBAAgBE,CAAC,EAEzG,GADA1G,GAAO8G,EAAexD,EAClBtD,EAAM,EACN,MAAM,IAAI0B,EAAgB,sCAAsC,EACpE,MAAM,KAAK,UAAU,OAAOoF,CAAY,EACxC,IAAMC,EAAQ,MAAM,KAAK,UAAU,UAAU,IAAcC,EAAY1D,CAAU,CAAC,EAClFrE,EAAM,WAAWyH,EAAI,CAAC,KAAKK,CAAK,EAAE,EAClC,IAAME,EAAU,CACZ,MAAAF,EACA,UAAWP,EAAa,MAAM,OAASA,EAAa,MAAM,OAAO,UAAY,EAC7E,MAAAG,EACA,aAAc,KAAK,iBAAiBhH,EAAO,KAAK,UAAU,QAAQ,CACtE,EACAV,EAAM,iBAAiBgI,EAAQ,KAAK,YAAYA,EAAQ,YAAY,IAAItH,EAAM,OAAO,QAAQ,EAAE,EAC/F8G,EAAS,KAAKQ,CAAO,CACzB,CACA,KAAK,SAAS,UAAU,WAAYR,CAAQ,EAC5C,MAAM,KAAK,UAAU,OAAOzG,CAAG,CACnC,CACA,iBAAiBL,EAAOuH,EAAe,CACnC,IAAIC,EAAa,EACjB,KAAOA,EAAaxH,EAAM,iBAAiB,QAAUA,EAAM,iBAAiBwH,CAAU,EAAID,GACtF,EAAEC,EAEN,OAAO,KAAK,iBAAiBA,EAAa,EAAGxH,CAAK,CACtD,CACA,iBAAiByH,EAASzH,EAAO,CAC7B,IAAI0H,EAAO,EACPC,EAAO3H,EAAM,kBAAkB0H,CAAI,EAAE,MACrCE,EAAO5H,EAAM,kBAAkB0H,CAAI,EAAE,SACrCG,EAAa,EACbC,EAAkB,KAAK,mBAAmBD,EAAY7H,EAAM,kBAAkB,EAC9E+H,EAAgB,EACpB,KAAOF,EAAaJ,GAAS,CACzB,IAAMO,EAAc,KAAK,IAAIL,EAAMG,CAAe,EAClDC,GAAiBC,EAAcJ,EAC/BD,GAAQK,EACRF,GAAmBE,EACfF,IAAoB,GACpB,EAAED,EACFC,EAAkB,KAAK,mBAAmBD,EAAY7H,EAAM,kBAAkB,IAG9E,EAAE0H,EACFC,EAAO3H,EAAM,kBAAkB0H,CAAI,EAAE,MACrCE,EAAO5H,EAAM,kBAAkB0H,CAAI,EAAE,SAE7C,CACA,OAAOK,CACX,CACA,mBAAmBN,EAASQ,EAAU,CAClC,QAASlB,EAAI,EAAGA,EAAIkB,EAAS,OAAS,EAAG,EAAElB,EACvC,GAAIU,GAAWQ,EAASlB,CAAC,EAAE,YAAcU,EAAUQ,EAASlB,EAAI,CAAC,EAAE,WAC/D,OAAOkB,EAASlB,CAAC,EAAE,gBAG3B,OAAOkB,EAASA,EAAS,OAAS,CAAC,EAAE,eACzC,CACJ","names":["import_debug","import_debug","import_debug","debug","initDebug","Mp4ContentError","makeUnexpectedFileContentError","__name","Header","buf","off","length","UINT32_BE","StringType","hdr","FourCcToken","ExtendedSize","UINT64_BE","ftyp","FixedLengthAtom","__name","len","expLen","atomId","Mp4ContentError","debug","SecondsSinceMacEpoch","buf","off","secondsSinceUnixEpoch","UINT32_BE","SecondsSinceMacEpoch64","UINT64_BE","MdhdAtom","version","UINT8","flags","UINT24_BE","UINT16_BE","FieldDecodingError","MvhdAtom","DataAtom","Uint8ArrayType","NameAtom","StringType","TrackHeaderAtom","stsdHeader","SampleDescriptionTable","descrLen","FourCcToken","StsdAtom","header","table","n","size","SoundSampleDescriptionVersion","INT16_BE","INT32_BE","SoundSampleDescriptionV0","SimpleTableAtom","token","nrOfEntries","INT8","INT24_BE","readTokenTable","TimeToSampleToken","SttsAtom","SampleToChunkToken","StscAtom","StszAtom","StcoAtom","ChapterText","titleLen","remainingLen","numberOfEntries","entries","TrackFragmentHeaderBox","flagOffset","getBit","dynOffset","TrackRunBox","trun","sample","HandlerBox","_flagOffset","charTypeToken","ChapterTrackReferenceBox","trackIds","debug","initDebug","Atom","_Atom","__name","tokenizer","dataHandler","parent","remaining","offset","header","Header","extended","ExtendedSize","atomBean","payloadLength","size","paddingLength","debug","initDebug","tagFormat","encoderDict","distinct","value","index","self","__name","isAudioTrack","track","ssd","MP4Parser","_MP4Parser","BasicParser","len","mvhd","MvhdAtom","td","trackIds","UINT32_BE","trackWithChapters","chapterTrackIds","chapterTracks","types","ftype","ftyp","x","stsd","StsdAtom","trackDescription","dfEntry","stsz","StszAtom","date","StringType","array","signed","integerType","token","lib_exports","Mp4ContentError","remainingFileSize","Header","errMsg","error","rootAtom","Atom","atom","remaining","formatList","trackFormats","trackIsAudio","streamInfo","encoderInfo","description","TrackType","audioTracks","audioTrack","totalTimeUnits","fragment","sample","dur","size","sum","n","totalSampleSize","ttstEntry","total","sampleSize","firstAudioTrack","tracks","id","message","metaAtom","tagKey","child","payLoadLength","name","NameAtom","uint8Array","Uint8ArrayType","uint8ArrayToHex","textDecode","dataAtom","DataAtom","num","UINT8","of","genreInt","genreStr","Genres","rate","UINT16_BE","trakBox","chap","ChapterTrackReferenceBox","TrackHeaderAtom","HandlerBox","mdhd_data","MdhdAtom","stco","StcoAtom","stsc","StscAtom","stts","SttsAtom","trafBox","tfhd","fragmentHeaderBox","TrackFragmentHeaderBox","trackRunBox","TrackRunBox","trun","sampleDescription","offset","SoundSampleDescriptionVersion","version","SoundSampleDescriptionV0","chapterTrack","chapters","i","start","acc","cur","nextChunkLen","title","ChapterText","chapter","chapterOffset","chunkIndex","chunkId","ttsi","ttsc","ttsd","curChunkId","samplesPerChunk","totalDuration","nrOfSamples","stcTable"],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse","file":"/MP4Parser-MX56ESYJ.js.map"} \ No newline at end of file +{"version":3,"sources":["/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/mp4/MP4Parser.js","/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/mp4/Atom.js","/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/mp4/AtomToken.js"],"sourcesContent":["import initDebug from 'debug';\nimport * as Token from 'token-types';\nimport { BasicParser } from '../common/BasicParser.js';\nimport { Genres } from '../id3v1/ID3v1Parser.js';\nimport { Atom } from './Atom.js';\nimport * as AtomToken from './AtomToken.js';\nimport { ChapterTrackReferenceBox, Mp4ContentError } from './AtomToken.js';\nimport { TrackType } from '../type.js';\nimport { uint8ArrayToHex } from 'uint8array-extras';\nimport { textDecode } from '@borewit/text-codec';\nconst debug = initDebug('music-metadata:parser:MP4');\nconst tagFormat = 'iTunes';\nconst encoderDict = {\n raw: {\n lossy: false,\n format: 'raw'\n },\n MAC3: {\n lossy: true,\n format: 'MACE 3:1'\n },\n MAC6: {\n lossy: true,\n format: 'MACE 6:1'\n },\n ima4: {\n lossy: true,\n format: 'IMA 4:1'\n },\n ulaw: {\n lossy: true,\n format: 'uLaw 2:1'\n },\n alaw: {\n lossy: true,\n format: 'uLaw 2:1'\n },\n Qclp: {\n lossy: true,\n format: 'QUALCOMM PureVoice'\n },\n '.mp3': {\n lossy: true,\n format: 'MPEG-1 layer 3'\n },\n alac: {\n lossy: false,\n format: 'ALAC'\n },\n 'ac-3': {\n lossy: true,\n format: 'AC-3'\n },\n mp4a: {\n lossy: true,\n format: 'MPEG-4/AAC'\n },\n mp4s: {\n lossy: true,\n format: 'MP4S'\n },\n // Closed Captioning Media, https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/QTFFChap3/qtff3.html#//apple_ref/doc/uid/TP40000939-CH205-SW87\n c608: {\n lossy: true,\n format: 'CEA-608'\n },\n c708: {\n lossy: true,\n format: 'CEA-708'\n }\n};\nfunction distinct(value, index, self) {\n return self.indexOf(value) === index;\n}\n/**\n * Determine if a track carries audio.\n *\n * Ref: ISO/IEC 14496-12, 8.5.2: the sample entries in a sample description box are track-type specific,\n * selected by the handler type of the enclosing track. Only an audio track holds an AudioSampleEntry, so\n * only such a track may be described by a sound sample description; `isAudio()` treats both the 'soun'\n * and 'audi' handler types as audio.\n *\n * Falls back to the sample description when no handler box was found, preserving the previous behavior.\n */\nfunction isAudioTrack(track) {\n const [ssd] = track.soundSampleDescription ?? [];\n if (!ssd) {\n return false;\n }\n if (track.isAudio) {\n return track.isAudio();\n }\n return !!ssd.description && ssd.description.numAudioChannels > 0;\n}\n/*\n * Parser for the MP4 (MPEG-4 Part 14) container format\n * Standard: ISO/IEC 14496-14\n * supporting:\n * - QuickTime container\n * - MP4 File Format\n * - 3GPP file format\n * - 3GPP2 file format\n *\n * MPEG-4 Audio / Part 3 (.m4a)& MPEG 4 Video (m4v, mp4) extension.\n * Support for Apple iTunes tags as found in a M4A/M4V files.\n * Ref:\n * https://en.wikipedia.org/wiki/ISO_base_media_file_format\n * https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/Metadata/Metadata.html\n * http://atomicparsley.sourceforge.net/mpeg-4files.html\n * https://github.com/sergiomb2/libmp4v2/wiki/iTunesMetadata\n * https://wiki.multimedia.cx/index.php/QuickTime_container\n */\nexport class MP4Parser extends BasicParser {\n constructor() {\n super(...arguments);\n this.tracks = new Map();\n this.hasVideoTrack = false;\n this.hasAudioTrack = true;\n this.atomParsers = {\n /**\n * Parse movie header (mvhd) atom\n * Ref: https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/QTFFChap2/qtff2.html#//apple_ref/doc/uid/TP40000939-CH204-56313\n */\n mvhd: async (len) => {\n const mvhd = await this.tokenizer.readToken(new AtomToken.MvhdAtom(len));\n this.metadata.setFormat('creationTime', mvhd.creationTime);\n this.metadata.setFormat('modificationTime', mvhd.modificationTime);\n },\n chap: async (len) => {\n const td = this.getTrackDescription();\n const trackIds = [];\n while (len >= Token.UINT32_BE.len) {\n trackIds.push(await this.tokenizer.readNumber(Token.UINT32_BE));\n len -= Token.UINT32_BE.len;\n }\n td.chapterList = trackIds;\n },\n /**\n * Parse mdat atom.\n * Will scan for chapters\n */\n mdat: async (len) => {\n if (this.options.includeChapters) {\n const trackWithChapters = [...this.tracks.values()].filter(track => track.chapterList);\n if (trackWithChapters.length === 1) {\n const chapterTrackIds = trackWithChapters[0].chapterList;\n const chapterTracks = [...this.tracks.values()].filter(track => chapterTrackIds.indexOf(track.header.trackId) !== -1);\n if (chapterTracks.length === 1) {\n return this.parseChapterTrack(chapterTracks[0], trackWithChapters[0], len);\n }\n }\n }\n await this.tokenizer.ignore(len);\n },\n ftyp: async (len) => {\n const types = [];\n while (len > 0) {\n const ftype = await this.tokenizer.readToken(AtomToken.ftyp);\n len -= AtomToken.ftyp.len;\n const value = ftype.type.replace(/\\W/g, '');\n if (value.length > 0) {\n types.push(value); // unshift for backward compatibility\n }\n }\n debug(`ftyp: ${types.join('/')}`);\n const x = types.filter(distinct).join('/');\n this.metadata.setFormat('container', x);\n },\n /**\n * Parse sample description atom\n */\n stsd: async (len) => {\n const stsd = await this.tokenizer.readToken(new AtomToken.StsdAtom(len));\n const trackDescription = this.getTrackDescription();\n trackDescription.soundSampleDescription = stsd.table.map(dfEntry => this.parseSoundSampleDescription(dfEntry));\n },\n /**\n * Parse sample-sizes atom ('stsz')\n */\n stsz: async (len) => {\n const stsz = await this.tokenizer.readToken(new AtomToken.StszAtom(len));\n const td = this.getTrackDescription();\n td.sampleSize = stsz.sampleSize;\n td.sampleSizeTable = stsz.entries;\n },\n date: async (len) => {\n const date = await this.tokenizer.readToken(new Token.StringType(len, 'utf-8'));\n await this.addTag('date', date);\n }\n };\n }\n static read_BE_Integer(array, signed) {\n const integerType = (signed ? 'INT' : 'UINT') + array.length * 8 + (array.length > 1 ? '_BE' : '');\n const token = Token[integerType];\n if (!token) {\n throw new Mp4ContentError(`Token for integer type not found: \"${integerType}\"`);\n }\n return Number(token.get(array, 0));\n }\n async parse() {\n this.hasVideoTrack = false;\n this.hasAudioTrack = true;\n this.tracks.clear();\n let remainingFileSize = this.tokenizer.fileInfo.size || 0;\n while (!this.tokenizer.fileInfo.size || remainingFileSize > 0) {\n try {\n const token = await this.tokenizer.peekToken(AtomToken.Header);\n if (token.name === '\\0\\0\\0\\0') {\n const errMsg = `Error at offset=${this.tokenizer.position}: box.id=0`;\n debug(errMsg);\n this.addWarning(errMsg);\n break;\n }\n }\n catch (error) {\n if (error instanceof Error) {\n const errMsg = `Error at offset=${this.tokenizer.position}: ${error.message}`;\n debug(errMsg);\n this.addWarning(errMsg);\n }\n else\n throw error;\n break;\n }\n const rootAtom = await Atom.readAtom(this.tokenizer, (atom, remaining) => this.handleAtom(atom, remaining), null, remainingFileSize);\n remainingFileSize -= rootAtom.header.length === BigInt(0) ? remainingFileSize : Number(rootAtom.header.length);\n }\n // Post process metadata\n const formatList = [];\n this.tracks.forEach(track => {\n const trackFormats = [];\n const trackIsAudio = isAudioTrack(track);\n track.soundSampleDescription.forEach(ssd => {\n const streamInfo = {};\n const encoderInfo = encoderDict[ssd.dataFormat];\n if (encoderInfo) {\n trackFormats.push(encoderInfo.format);\n streamInfo.codecName = encoderInfo.format;\n }\n else {\n streamInfo.codecName = `<${ssd.dataFormat}>`;\n }\n if (trackIsAudio && ssd.description) {\n const { description } = ssd;\n if (description.sampleRate > 0) {\n streamInfo.type = TrackType.audio;\n streamInfo.audio = {\n samplingFrequency: description.sampleRate,\n bitDepth: description.sampleSize,\n channels: description.numAudioChannels\n };\n }\n }\n this.metadata.addStreamInfo(streamInfo);\n });\n if (trackFormats.length >= 1) {\n formatList.push(trackFormats.join('/'));\n }\n });\n if (formatList.length > 0) {\n this.metadata.setFormat('codec', formatList.filter(distinct).join('+'));\n }\n const audioTracks = [...this.tracks.values()].filter(isAudioTrack);\n // Calculate duration and bitrate of audio tracks\n for (const audioTrack of audioTracks) {\n if (audioTrack.media.header && audioTrack.media.header.timeScale > 0) {\n audioTrack.sampleRate = audioTrack.media.header.timeScale;\n if (audioTrack.media.header.duration > 0) {\n debug('Using duration defined on audio track');\n audioTrack.samples = audioTrack.media.header.duration;\n audioTrack.duration = audioTrack.samples / audioTrack.sampleRate;\n }\n if (audioTrack.fragments.length > 0) {\n debug('Calculate duration defined in track fragments');\n let totalTimeUnits = 0;\n audioTrack.sizeInBytes = 0;\n for (const fragment of audioTrack.fragments) {\n for (const sample of fragment.trackRun.samples) {\n const dur = sample.sampleDuration ?? fragment.header.defaultSampleDuration ?? 0;\n const size = sample.sampleSize ?? fragment.header.defaultSampleSize ?? 0;\n if (dur === 0) {\n throw new Error(\"Missing sampleDuration and no defaultSampleDuration in track fragment header\");\n }\n if (size === 0) {\n throw new Error(\"Missing sampleSize and no defaultSampleSize in track fragment header\");\n }\n totalTimeUnits += dur;\n audioTrack.sizeInBytes += size;\n }\n }\n if (!audioTrack.samples) {\n audioTrack.samples = totalTimeUnits;\n }\n if (!audioTrack.duration) {\n audioTrack.duration = totalTimeUnits / audioTrack.sampleRate;\n }\n }\n else if (audioTrack.sampleSizeTable.length > 0) {\n audioTrack.sizeInBytes = audioTrack.sampleSizeTable.reduce((sum, n) => sum + n, 0);\n }\n }\n const ssd = audioTrack.soundSampleDescription[0];\n if (ssd.description && audioTrack.media.header) {\n this.metadata.setFormat('sampleRate', ssd.description.sampleRate);\n this.metadata.setFormat('bitsPerSample', ssd.description.sampleSize);\n this.metadata.setFormat('numberOfChannels', ssd.description.numAudioChannels);\n if (audioTrack.media.header.timeScale === 0 && audioTrack.timeToSampleTable.length > 0) {\n const totalSampleSize = audioTrack.timeToSampleTable\n .map(ttstEntry => ttstEntry.count * ttstEntry.duration)\n .reduce((total, sampleSize) => total + sampleSize);\n audioTrack.duration = totalSampleSize / ssd.description.sampleRate;\n }\n }\n const encoderInfo = encoderDict[ssd.dataFormat];\n if (encoderInfo) {\n this.metadata.setFormat('lossless', !encoderInfo.lossy);\n }\n }\n if (audioTracks.length >= 1) {\n const firstAudioTrack = audioTracks[0];\n if (firstAudioTrack.duration) {\n this.metadata.setFormat('duration', firstAudioTrack.duration);\n if (firstAudioTrack.sizeInBytes) {\n this.metadata.setFormat('bitrate', 8 * firstAudioTrack.sizeInBytes / firstAudioTrack.duration);\n }\n }\n }\n this.metadata.setFormat('hasAudio', this.hasAudioTrack);\n this.metadata.setFormat('hasVideo', this.hasVideoTrack);\n }\n async handleAtom(atom, remaining) {\n if (atom.parent) {\n switch (atom.parent.header.name) {\n case 'ilst':\n case '':\n return this.parseMetadataItemData(atom);\n case 'moov':\n switch (atom.header.name) {\n case 'trak':\n return this.parseTrackBox(atom);\n case 'udta':\n return this.parseTrackBox(atom);\n }\n break;\n case 'moof':\n switch (atom.header.name) {\n case 'traf':\n return this.parseTrackFragmentBox(atom);\n }\n }\n }\n // const payloadLength = atom.getPayloadLength(remaining);\n if (this.atomParsers[atom.header.name]) {\n return this.atomParsers[atom.header.name](remaining);\n }\n debug(`No parser for atom path=${atom.atomPath}, payload-len=${remaining}, ignoring atom`);\n await this.tokenizer.ignore(remaining);\n }\n getTrackDescription() {\n // ToDo: pick the right track, not the last track!!!!\n const tracks = [...this.tracks.values()];\n return tracks[tracks.length - 1];\n }\n async addTag(id, value) {\n await this.metadata.addTag(tagFormat, id, value);\n }\n addWarning(message) {\n debug(`Warning: ${message}`);\n this.metadata.addWarning(message);\n }\n /**\n * Parse data of Meta-item-list-atom (item of 'ilst' atom)\n * @param metaAtom\n * Ref: https://developer.apple.com/library/content/documentation/QuickTime/QTFF/Metadata/Metadata.html#//apple_ref/doc/uid/TP40000939-CH1-SW8\n */\n parseMetadataItemData(metaAtom) {\n let tagKey = metaAtom.header.name;\n return metaAtom.readAtoms(this.tokenizer, async (child, remaining) => {\n const payLoadLength = child.getPayloadLength(remaining);\n switch (child.header.name) {\n case 'data': // value atom\n return this.parseValueAtom(tagKey, child);\n case 'name': // name atom (optional)\n case 'mean':\n case 'rate': {\n const name = await this.tokenizer.readToken(new AtomToken.NameAtom(payLoadLength));\n tagKey += `:${name.name}`;\n break;\n }\n default: {\n const uint8Array = await this.tokenizer.readToken(new Token.Uint8ArrayType(payLoadLength));\n this.addWarning(`Unsupported meta-item: ${tagKey}[${child.header.name}] => value=${uint8ArrayToHex(uint8Array)} ascii=${textDecode(uint8Array, 'ascii')}`);\n }\n }\n }, metaAtom.getPayloadLength(0));\n }\n async parseValueAtom(tagKey, metaAtom) {\n const dataAtom = await this.tokenizer.readToken(new AtomToken.DataAtom(Number(metaAtom.header.length) - AtomToken.Header.len));\n if (dataAtom.type.set !== 0) {\n throw new Mp4ContentError(`Unsupported type-set != 0: ${dataAtom.type.set}`);\n }\n // Use well-known-type table\n // Ref: https://developer.apple.com/library/content/documentation/QuickTime/QTFF/Metadata/Metadata.html#//apple_ref/doc/uid/TP40000939-CH1-SW35\n switch (dataAtom.type.type) {\n case 0: // reserved: Reserved for use where no type needs to be indicated\n switch (tagKey) {\n case 'trkn':\n case 'disk': {\n const num = Token.UINT8.get(dataAtom.value, 3);\n const of = Token.UINT8.get(dataAtom.value, 5);\n // console.log(\" %s[data] = %s/%s\", tagKey, num, of);\n await this.addTag(tagKey, `${num}/${of}`);\n break;\n }\n case 'gnre': {\n const genreInt = Token.UINT8.get(dataAtom.value, 1);\n const genreStr = Genres[genreInt - 1];\n // console.log(\" %s[data] = %s\", tagKey, genreStr);\n await this.addTag(tagKey, genreStr);\n break;\n }\n case 'rate': {\n const rate = textDecode(dataAtom.value, 'ascii');\n await this.addTag(tagKey, rate);\n break;\n }\n default:\n debug(`unknown proprietary value type for: ${metaAtom.atomPath}`);\n }\n break;\n case 1: // UTF-8: Without any count or NULL terminator\n case 18: // Unknown: Found in m4b in combination with a '©gen' tag\n await this.addTag(tagKey, textDecode(dataAtom.value));\n break;\n case 13: // JPEG\n if (this.options.skipCovers)\n break;\n await this.addTag(tagKey, {\n format: 'image/jpeg',\n data: Uint8Array.from(dataAtom.value)\n });\n break;\n case 14: // PNG\n if (this.options.skipCovers)\n break;\n await this.addTag(tagKey, {\n format: 'image/png',\n data: Uint8Array.from(dataAtom.value)\n });\n break;\n case 21: // BE Signed Integer\n await this.addTag(tagKey, MP4Parser.read_BE_Integer(dataAtom.value, true));\n break;\n case 22: // BE Unsigned Integer\n await this.addTag(tagKey, MP4Parser.read_BE_Integer(dataAtom.value, false));\n break;\n case 65: // An 8-bit signed integer\n await this.addTag(tagKey, Token.UINT8.get(dataAtom.value, 0));\n break;\n case 66: // A big-endian 16-bit signed integer\n await this.addTag(tagKey, Token.UINT16_BE.get(dataAtom.value, 0));\n break;\n case 67: // A big-endian 32-bit signed integer\n await this.addTag(tagKey, Token.UINT32_BE.get(dataAtom.value, 0));\n break;\n default:\n this.addWarning(`atom key=${tagKey}, has unknown well-known-type (data-type): ${dataAtom.type.type}`);\n }\n }\n async parseTrackBox(trakBox) {\n // @ts-expect-error\n const track = {\n media: {},\n fragments: []\n };\n await trakBox.readAtoms(this.tokenizer, async (child, remaining) => {\n const payLoadLength = child.getPayloadLength(remaining);\n switch (child.header.name) {\n case 'chap': {\n const chap = await this.tokenizer.readToken(new ChapterTrackReferenceBox(remaining));\n track.chapterList = chap;\n break;\n }\n case 'tkhd': // TrackHeaderBox\n track.header = await this.tokenizer.readToken(new AtomToken.TrackHeaderAtom(payLoadLength));\n break;\n case 'hdlr': // TrackHeaderBox\n track.handler = await this.tokenizer.readToken(new AtomToken.HandlerBox(payLoadLength));\n track.isAudio = () => track.handler.handlerType === 'audi' || track.handler.handlerType === 'soun';\n track.isVideo = () => track.handler.handlerType === 'vide';\n if (track.isAudio()) {\n this.hasAudioTrack = true;\n }\n else if (track.isVideo()) {\n this.hasVideoTrack = true;\n }\n break;\n case 'mdhd': { // Parse media header (mdhd) box\n const mdhd_data = await this.tokenizer.readToken(new AtomToken.MdhdAtom(payLoadLength));\n track.media.header = mdhd_data;\n break;\n }\n case 'stco': {\n const stco = await this.tokenizer.readToken(new AtomToken.StcoAtom(payLoadLength));\n track.chunkOffsetTable = stco.entries; // remember chunk offsets\n break;\n }\n case 'stsc': { // sample-to-Chunk box\n const stsc = await this.tokenizer.readToken(new AtomToken.StscAtom(payLoadLength));\n track.sampleToChunkTable = stsc.entries;\n break;\n }\n case 'stsd': { // sample description box\n const stsd = await this.tokenizer.readToken(new AtomToken.StsdAtom(payLoadLength));\n track.soundSampleDescription = stsd.table.map(dfEntry => this.parseSoundSampleDescription(dfEntry));\n break;\n }\n case 'stts': { // time-to-sample table\n const stts = await this.tokenizer.readToken(new AtomToken.SttsAtom(payLoadLength));\n track.timeToSampleTable = stts.entries;\n break;\n }\n case 'stsz': {\n const stsz = await this.tokenizer.readToken(new AtomToken.StszAtom(payLoadLength));\n track.sampleSize = stsz.sampleSize;\n track.sampleSizeTable = stsz.entries;\n break;\n }\n case 'dinf':\n case 'vmhd':\n case 'smhd':\n debug(`Ignoring: ${child.header.name}`);\n await this.tokenizer.ignore(payLoadLength);\n break;\n default: {\n debug(`Unexpected track box: ${child.header.name}`);\n await this.tokenizer.ignore(payLoadLength);\n }\n }\n }, trakBox.getPayloadLength(0));\n // Register track\n this.tracks.set(track.header.trackId, track);\n }\n parseTrackFragmentBox(trafBox) {\n let tfhd;\n return trafBox.readAtoms(this.tokenizer, async (child, remaining) => {\n const payLoadLength = child.getPayloadLength(remaining);\n switch (child.header.name) {\n case 'tfhd': { // TrackFragmentHeaderBox\n const fragmentHeaderBox = new AtomToken.TrackFragmentHeaderBox(child.getPayloadLength(remaining));\n tfhd = await this.tokenizer.readToken(fragmentHeaderBox);\n break;\n }\n case 'tfdt': // TrackFragmentBaseMediaDecodeTimeBo\n await this.tokenizer.ignore(payLoadLength);\n break;\n case 'trun': { // TrackRunBox\n const trackRunBox = new AtomToken.TrackRunBox(payLoadLength);\n const trun = await this.tokenizer.readToken(trackRunBox);\n if (tfhd) {\n const track = this.tracks.get(tfhd.trackId);\n track?.fragments.push({ header: tfhd, trackRun: trun });\n }\n break;\n }\n default: {\n debug(`Unexpected box: ${child.header.name}`);\n await this.tokenizer.ignore(payLoadLength);\n }\n }\n }, trafBox.getPayloadLength(0));\n }\n /**\n * @param sampleDescription\n * Ref: https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/QTFFChap3/qtff3.html#//apple_ref/doc/uid/TP40000939-CH205-128916\n */\n parseSoundSampleDescription(sampleDescription) {\n const ssd = {\n dataFormat: sampleDescription.dataFormat,\n dataReferenceIndex: sampleDescription.dataReferenceIndex\n };\n let offset = 0;\n const { description } = sampleDescription;\n // Only an AudioSampleEntry carries a sound sample description; it is at least 20 bytes beyond the\n // 16-byte SampleEntry base. A shorter description belongs to another sample entry class, or is truncated.\n if (description && description.length >= AtomToken.SoundSampleDescriptionVersion.len) {\n const version = AtomToken.SoundSampleDescriptionVersion.get(description, offset);\n offset += AtomToken.SoundSampleDescriptionVersion.len;\n if (version.version === 0 || version.version === 1) {\n // Sound Sample Description (Version 0)\n if (description.length >= offset + AtomToken.SoundSampleDescriptionV0.len) {\n ssd.description = AtomToken.SoundSampleDescriptionV0.get(description, offset);\n }\n else {\n debug(`Warning: sound-sample-description too short: ${description.length} bytes`);\n }\n }\n else {\n debug(`Warning: sound-sample-description ${version} not implemented`);\n }\n }\n return ssd;\n }\n async parseChapterTrack(chapterTrack, track, len) {\n if (!chapterTrack.sampleSize) {\n if (chapterTrack.chunkOffsetTable.length !== chapterTrack.sampleSizeTable.length)\n throw new Error('Expected equal chunk-offset-table & sample-size-table length.');\n }\n const chapters = [];\n for (let i = 0; i < chapterTrack.chunkOffsetTable.length && len > 0; ++i) {\n const start = chapterTrack.timeToSampleTable\n .slice(0, i)\n .reduce((acc, cur) => acc + cur.duration, 0);\n const chunkOffset = chapterTrack.chunkOffsetTable[i];\n const nextChunkLen = chunkOffset - this.tokenizer.position;\n const sampleSize = chapterTrack.sampleSize > 0 ? chapterTrack.sampleSize : chapterTrack.sampleSizeTable[i];\n len -= nextChunkLen + sampleSize;\n if (len < 0)\n throw new Mp4ContentError('Chapter chunk exceeding token length');\n await this.tokenizer.ignore(nextChunkLen);\n const title = await this.tokenizer.readToken(new AtomToken.ChapterText(sampleSize));\n debug(`Chapter ${i + 1}: ${title}`);\n const chapter = {\n title,\n timeScale: chapterTrack.media.header ? chapterTrack.media.header.timeScale : 0,\n start,\n sampleOffset: this.findSampleOffset(track, this.tokenizer.position)\n };\n debug(`Chapter title=${chapter.title}, offset=${chapter.sampleOffset}/${track.header.duration}`); // ToDo, use media duration if required!!!\n chapters.push(chapter);\n }\n this.metadata.setFormat('chapters', chapters);\n await this.tokenizer.ignore(len);\n }\n findSampleOffset(track, chapterOffset) {\n let chunkIndex = 0;\n while (chunkIndex < track.chunkOffsetTable.length && track.chunkOffsetTable[chunkIndex] < chapterOffset) {\n ++chunkIndex;\n }\n return this.getChunkDuration(chunkIndex + 1, track);\n }\n getChunkDuration(chunkId, track) {\n let ttsi = 0;\n let ttsc = track.timeToSampleTable[ttsi].count;\n let ttsd = track.timeToSampleTable[ttsi].duration;\n let curChunkId = 1;\n let samplesPerChunk = this.getSamplesPerChunk(curChunkId, track.sampleToChunkTable);\n let totalDuration = 0;\n while (curChunkId < chunkId) {\n const nrOfSamples = Math.min(ttsc, samplesPerChunk);\n totalDuration += nrOfSamples * ttsd;\n ttsc -= nrOfSamples;\n samplesPerChunk -= nrOfSamples;\n if (samplesPerChunk === 0) {\n ++curChunkId;\n samplesPerChunk = this.getSamplesPerChunk(curChunkId, track.sampleToChunkTable);\n }\n else {\n ++ttsi;\n ttsc = track.timeToSampleTable[ttsi].count;\n ttsd = track.timeToSampleTable[ttsi].duration;\n }\n }\n return totalDuration;\n }\n getSamplesPerChunk(chunkId, stcTable) {\n for (let i = 0; i < stcTable.length - 1; ++i) {\n if (chunkId >= stcTable[i].firstChunk && chunkId < stcTable[i + 1].firstChunk) {\n return stcTable[i].samplesPerChunk;\n }\n }\n return stcTable[stcTable.length - 1].samplesPerChunk;\n }\n}\n","import initDebug from 'debug';\nimport * as AtomToken from './AtomToken.js';\nimport { Header } from './AtomToken.js';\nconst debug = initDebug('music-metadata:parser:MP4:Atom');\nexport class Atom {\n static async readAtom(tokenizer, dataHandler, parent, remaining) {\n // Parse atom header\n const offset = tokenizer.position;\n debug(`Reading next token on offset=${offset}...`); // buf.toString('ascii')\n const header = await tokenizer.readToken(AtomToken.Header);\n const extended = header.length === 1n;\n if (extended) {\n header.length = await tokenizer.readToken(AtomToken.ExtendedSize);\n }\n const atomBean = new Atom(header, extended, parent);\n const payloadLength = atomBean.getPayloadLength(remaining);\n debug(`parse atom name=${atomBean.atomPath}, extended=${atomBean.extended}, offset=${offset}, len=${atomBean.header.length}`); // buf.toString('ascii')\n await atomBean.readData(tokenizer, dataHandler, payloadLength);\n return atomBean;\n }\n constructor(header, extended, parent) {\n this.header = header;\n this.extended = extended;\n this.parent = parent;\n this.children = [];\n this.atomPath = (this.parent ? `${this.parent.atomPath}.` : '') + this.header.name;\n }\n getHeaderLength() {\n return this.extended ? 16 : 8;\n }\n getPayloadLength(remaining) {\n return (this.header.length === 0n ? remaining : Number(this.header.length)) - this.getHeaderLength();\n }\n async readAtoms(tokenizer, dataHandler, size) {\n while (size > 0) {\n const atomBean = await Atom.readAtom(tokenizer, dataHandler, this, size);\n this.children.push(atomBean);\n size -= atomBean.header.length === 0n ? size : Number(atomBean.header.length);\n }\n }\n async readData(tokenizer, dataHandler, remaining) {\n switch (this.header.name) {\n // \"Container\" atoms, contains nested atoms\n case 'moov': // The Movie Atom: contains other atoms\n case 'udta': // User defined atom\n case 'mdia': // Media atom\n case 'minf': // Media Information Atom\n case 'stbl': // The Sample Table Atom\n case '':\n case 'ilst':\n case 'tref':\n case 'moof':\n return this.readAtoms(tokenizer, dataHandler, this.getPayloadLength(remaining));\n case 'meta': { // Metadata Atom, ref: https://developer.apple.com/library/content/documentation/QuickTime/QTFF/Metadata/Metadata.html#//apple_ref/doc/uid/TP40000939-CH1-SW8\n // meta has 4 bytes of padding, ignore\n const peekHeader = await tokenizer.peekToken(Header);\n const paddingLength = peekHeader.name === 'hdlr' ? 0 : 4;\n await tokenizer.ignore(paddingLength);\n return this.readAtoms(tokenizer, dataHandler, this.getPayloadLength(remaining) - paddingLength);\n }\n default:\n return dataHandler(this, remaining);\n }\n }\n}\n","import * as Token from 'token-types';\nimport initDebug from 'debug';\nimport { FourCcToken } from '../common/FourCC.js';\nimport { makeUnexpectedFileContentError } from '../ParseError.js';\nimport * as util from '../common/Util.js';\nimport { FieldDecodingError } from '../ParseError.js';\nconst debug = initDebug('music-metadata:parser:MP4:atom');\nexport class Mp4ContentError extends makeUnexpectedFileContentError('MP4') {\n}\nexport const Header = {\n len: 8,\n get: (buf, off) => {\n const length = Token.UINT32_BE.get(buf, off);\n if (length < 0)\n throw new Mp4ContentError('Invalid atom header length');\n return {\n length: BigInt(length),\n name: new Token.StringType(4, 'latin1').get(buf, off + 4)\n };\n },\n put: (buf, off, hdr) => {\n Token.UINT32_BE.put(buf, off, Number(hdr.length));\n return FourCcToken.put(buf, off + 4, hdr.name);\n }\n};\n/**\n * Ref: https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/QTFFChap1/qtff1.html#//apple_ref/doc/uid/TP40000939-CH203-38190\n */\nexport const ExtendedSize = Token.UINT64_BE;\nexport const ftyp = {\n len: 4,\n get: (buf, off) => {\n return {\n type: new Token.StringType(4, 'ascii').get(buf, off)\n };\n }\n};\n/**\n * Token: Movie Header Atom\n */\nexport const mhdr = {\n len: 8,\n get: (buf, off) => {\n return {\n version: Token.UINT8.get(buf, off),\n flags: Token.UINT24_BE.get(buf, off + 1),\n nextItemID: Token.UINT32_BE.get(buf, off + 4)\n };\n }\n};\n/**\n * Base class for 'fixed' length atoms.\n * In some cases these atoms are longer then the sum of the described fields.\n * Issue: https://github.com/Borewit/music-metadata/issues/120\n */\nexport class FixedLengthAtom {\n /**\n *\n * @param {number} len Length as specified in the size field\n * @param {number} expLen Total length of sum of specified fields in the standard\n * @param atomId Atom ID\n */\n constructor(len, expLen, atomId) {\n if (len < expLen) {\n throw new Mp4ContentError(`Atom ${atomId} expected to be ${expLen}, but specifies ${len} bytes long.`);\n }\n if (len > expLen) {\n debug(`Warning: atom ${atomId} expected to be ${expLen}, but was actually ${len} bytes long.`);\n }\n this.len = len;\n }\n}\n/**\n * Timestamp stored in seconds since Mac Epoch (1 January 1904)\n */\nconst SecondsSinceMacEpoch = {\n len: 4,\n get: (buf, off) => {\n const secondsSinceUnixEpoch = Token.UINT32_BE.get(buf, off) - 2082844800;\n return new Date(secondsSinceUnixEpoch * 1000);\n }\n};\nconst SecondsSinceMacEpoch64 = {\n len: 8,\n get: (buf, off) => {\n const secondsSinceUnixEpoch = Number(Token.UINT64_BE.get(buf, off)) - 2082844800;\n return new Date(secondsSinceUnixEpoch * 1000);\n }\n};\n/**\n * Token: Media Header Atom\n * Ref:\n * - https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/QTFFChap2/qtff2.html#//apple_ref/doc/uid/TP40000939-CH204-SW34\n * - https://wiki.multimedia.cx/index.php/QuickTime_container#mdhd\n */\nexport class MdhdAtom extends FixedLengthAtom {\n constructor(len) {\n super(len, 24, 'mdhd');\n }\n get(buf, off) {\n const version = Token.UINT8.get(buf, off + 0);\n const flags = Token.UINT24_BE.get(buf, off + 1);\n switch (version) {\n case 0:\n // Version 0: 32-bit fields\n return {\n version,\n flags,\n creationTime: SecondsSinceMacEpoch.get(buf, off + 4),\n modificationTime: SecondsSinceMacEpoch.get(buf, off + 8),\n timeScale: Token.UINT32_BE.get(buf, off + 12),\n duration: Token.UINT32_BE.get(buf, off + 16),\n language: Token.UINT16_BE.get(buf, off + 20),\n quality: Token.UINT16_BE.get(buf, off + 22)\n };\n case 1:\n return {\n version,\n flags,\n creationTime: SecondsSinceMacEpoch64.get(buf, off + 4),\n modificationTime: SecondsSinceMacEpoch64.get(buf, off + 12),\n timeScale: Token.UINT32_BE.get(buf, off + 20),\n duration: Number(Token.UINT64_BE.get(buf, off + 24)),\n language: Token.UINT16_BE.get(buf, off + 32),\n quality: Token.UINT16_BE.get(buf, off + 34)\n };\n default:\n throw new FieldDecodingError('Invalid mdhd version header');\n }\n }\n}\n/**\n * Token: Movie Header Atom\n */\nexport class MvhdAtom extends FixedLengthAtom {\n constructor(len) {\n super(len, 100, 'mvhd');\n }\n get(buf, off) {\n const version = Token.UINT8.get(buf, off);\n const flags = Token.UINT24_BE.get(buf, off + 1);\n if (version === 1) {\n // Version 1: 64-bit creation/modification times and duration\n return {\n version,\n flags,\n creationTime: SecondsSinceMacEpoch64.get(buf, off + 4),\n modificationTime: SecondsSinceMacEpoch64.get(buf, off + 12),\n timeScale: Token.UINT32_BE.get(buf, off + 20),\n duration: Number(Token.UINT64_BE.get(buf, off + 24)),\n preferredRate: Token.UINT32_BE.get(buf, off + 32),\n preferredVolume: Token.UINT16_BE.get(buf, off + 36),\n // ignore reserved: 10 bytes\n // ignore matrix structure: 36 bytes\n previewTime: Token.UINT32_BE.get(buf, off + 84),\n previewDuration: Token.UINT32_BE.get(buf, off + 88),\n posterTime: Token.UINT32_BE.get(buf, off + 92),\n selectionTime: Token.UINT32_BE.get(buf, off + 96),\n selectionDuration: Token.UINT32_BE.get(buf, off + 100),\n currentTime: Token.UINT32_BE.get(buf, off + 104),\n nextTrackID: Token.UINT32_BE.get(buf, off + 108)\n };\n }\n // Version 0: 32-bit fields\n return {\n version,\n flags,\n creationTime: SecondsSinceMacEpoch.get(buf, off + 4),\n modificationTime: SecondsSinceMacEpoch.get(buf, off + 8),\n timeScale: Token.UINT32_BE.get(buf, off + 12),\n duration: Token.UINT32_BE.get(buf, off + 16),\n preferredRate: Token.UINT32_BE.get(buf, off + 20),\n preferredVolume: Token.UINT16_BE.get(buf, off + 24),\n // ignore reserved: 10 bytes\n // ignore matrix structure: 36 bytes\n previewTime: Token.UINT32_BE.get(buf, off + 72),\n previewDuration: Token.UINT32_BE.get(buf, off + 76),\n posterTime: Token.UINT32_BE.get(buf, off + 80),\n selectionTime: Token.UINT32_BE.get(buf, off + 84),\n selectionDuration: Token.UINT32_BE.get(buf, off + 88),\n currentTime: Token.UINT32_BE.get(buf, off + 92),\n nextTrackID: Token.UINT32_BE.get(buf, off + 96)\n };\n }\n}\n/**\n * Data Atom Structure\n */\nexport class DataAtom {\n constructor(len) {\n this.len = len;\n }\n get(buf, off) {\n return {\n type: {\n set: Token.UINT8.get(buf, off + 0),\n type: Token.UINT24_BE.get(buf, off + 1)\n },\n locale: Token.UINT24_BE.get(buf, off + 4),\n value: new Token.Uint8ArrayType(this.len - 8).get(buf, off + 8)\n };\n }\n}\n/**\n * Data Atom Structure\n * Ref: https://developer.apple.com/library/content/documentation/QuickTime/QTFF/Metadata/Metadata.html#//apple_ref/doc/uid/TP40000939-CH1-SW31\n */\nexport class NameAtom {\n constructor(len) {\n this.len = len;\n }\n get(buf, off) {\n return {\n version: Token.UINT8.get(buf, off),\n flags: Token.UINT24_BE.get(buf, off + 1),\n name: new Token.StringType(this.len - 4, 'utf-8').get(buf, off + 4)\n };\n }\n}\n/**\n * Track Header Atoms structure (`tkhd`)\n * Ref: https://developer.apple.com/library/content/documentation/QuickTime/QTFF/QTFFChap2/qtff2.html#//apple_ref/doc/uid/TP40000939-CH204-25550\n */\nexport class TrackHeaderAtom {\n constructor(len) {\n this.len = len;\n }\n get(buf, off) {\n const version = Token.UINT8.get(buf, off);\n const flags = Token.UINT24_BE.get(buf, off + 1);\n switch (version) {\n case 0:\n // Version 0: 32-bit fields\n return {\n version,\n flags,\n creationTime: SecondsSinceMacEpoch.get(buf, off + 4),\n modificationTime: SecondsSinceMacEpoch.get(buf, off + 8),\n trackId: Token.UINT32_BE.get(buf, off + 12),\n // reserved 4 bytes\n duration: Token.UINT32_BE.get(buf, off + 20),\n // reserved 8 bytes\n layer: Token.UINT16_BE.get(buf, off + 32),\n alternateGroup: Token.UINT16_BE.get(buf, off + 34),\n volume: Token.UINT16_BE.get(buf, off + 36) // ToDo: fixed point\n // ToDo: add remaining fields\n };\n case 1:\n // Version 1: 64-bit creation/modification times and duration\n return {\n version,\n flags,\n creationTime: SecondsSinceMacEpoch64.get(buf, off + 4),\n modificationTime: SecondsSinceMacEpoch64.get(buf, off + 12),\n trackId: Token.UINT32_BE.get(buf, off + 20),\n // reserved 4 bytes\n duration: Number(Token.UINT64_BE.get(buf, off + 28)),\n // reserved 8 bytes\n layer: Token.UINT16_BE.get(buf, off + 44),\n alternateGroup: Token.UINT16_BE.get(buf, off + 46),\n volume: Token.UINT16_BE.get(buf, off + 48) // ToDo: fixed point\n // ToDo: add remaining fields\n };\n default:\n throw new FieldDecodingError('Invalid tkhd version header');\n }\n }\n}\n/**\n * Atom: Sample Description Atom ('stsd')\n * Ref: https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/QTFFChap2/qtff2.html#//apple_ref/doc/uid/TP40000939-CH204-25691\n */\nconst stsdHeader = {\n len: 8,\n get: (buf, off) => {\n return {\n version: Token.UINT8.get(buf, off),\n flags: Token.UINT24_BE.get(buf, off + 1),\n numberOfEntries: Token.UINT32_BE.get(buf, off + 4)\n };\n }\n};\n/**\n * Atom: Sample Description Atom ('stsd')\n * Ref: https://developer.apple.com/documentation/quicktime-file-format/sample_description_atom\n */\nclass SampleDescriptionTable {\n constructor(len) {\n this.len = len;\n }\n get(buf, off) {\n const descrLen = this.len - 12;\n return {\n dataFormat: FourCcToken.get(buf, off),\n dataReferenceIndex: Token.UINT16_BE.get(buf, off + 10),\n description: descrLen > 0 ? new Token.Uint8ArrayType(descrLen).get(buf, off + 12) : undefined\n };\n }\n}\n/**\n * Atom: Sample-description Atom ('stsd')\n * Ref: https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/QTFFChap2/qtff2.html#//apple_ref/doc/uid/TP40000939-CH204-25691\n */\nexport class StsdAtom {\n constructor(len) {\n this.len = len;\n }\n get(buf, off) {\n const header = stsdHeader.get(buf, off);\n off += stsdHeader.len;\n const table = [];\n for (let n = 0; n < header.numberOfEntries; ++n) {\n const size = Token.UINT32_BE.get(buf, off); // Sample description size\n off += Token.UINT32_BE.len;\n table.push(new SampleDescriptionTable(size - Token.UINT32_BE.len).get(buf, off));\n // A SampleEntry extends Box, so its size covers the size field already stepped over\n off += size - Token.UINT32_BE.len;\n }\n return {\n header,\n table\n };\n }\n}\n/**\n * Common Sound Sample Description (version & revision)\n * Ref: https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/QTFFChap3/qtff3.html#//apple_ref/doc/uid/TP40000939-CH205-57317\n */\nexport const SoundSampleDescriptionVersion = {\n len: 8,\n get(buf, off) {\n return {\n version: Token.INT16_BE.get(buf, off),\n revision: Token.INT16_BE.get(buf, off + 2),\n vendor: Token.INT32_BE.get(buf, off + 4)\n };\n }\n};\n/**\n * Sound Sample Description (Version 0)\n * Ref: https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/QTFFChap3/qtff3.html#//apple_ref/doc/uid/TP40000939-CH205-130736\n */\nexport const SoundSampleDescriptionV0 = {\n len: 12,\n get(buf, off) {\n return {\n numAudioChannels: Token.INT16_BE.get(buf, off + 0),\n sampleSize: Token.INT16_BE.get(buf, off + 2),\n compressionId: Token.INT16_BE.get(buf, off + 4),\n packetSize: Token.INT16_BE.get(buf, off + 6),\n sampleRate: Token.UINT16_BE.get(buf, off + 8) + Token.UINT16_BE.get(buf, off + 10) / 10000\n };\n }\n};\nclass SimpleTableAtom {\n constructor(len, token) {\n this.len = len;\n this.token = token;\n }\n get(buf, off) {\n const nrOfEntries = Token.INT32_BE.get(buf, off + 4);\n return {\n version: Token.INT8.get(buf, off + 0),\n flags: Token.INT24_BE.get(buf, off + 1),\n numberOfEntries: nrOfEntries,\n entries: readTokenTable(buf, this.token, off + 8, this.len - 8, nrOfEntries)\n };\n }\n}\nexport const TimeToSampleToken = {\n len: 8,\n get(buf, off) {\n return {\n count: Token.INT32_BE.get(buf, off + 0),\n duration: Token.INT32_BE.get(buf, off + 4)\n };\n }\n};\n/**\n * Time-to-sample('stts') atom.\n * Store duration information for a media’s samples.\n * Ref: https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/QTFFChap2/qtff2.html#//apple_ref/doc/uid/TP40000939-CH204-25696\n */\nexport class SttsAtom extends SimpleTableAtom {\n constructor(len) {\n super(len, TimeToSampleToken);\n }\n}\nexport const SampleToChunkToken = {\n len: 12,\n get(buf, off) {\n return {\n firstChunk: Token.INT32_BE.get(buf, off),\n samplesPerChunk: Token.INT32_BE.get(buf, off + 4),\n sampleDescriptionId: Token.INT32_BE.get(buf, off + 8)\n };\n }\n};\n/**\n * Sample-to-Chunk ('stsc') atom interface\n * Ref: https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/QTFFChap2/qtff2.html#//apple_ref/doc/uid/TP40000939-CH204-25706\n */\nexport class StscAtom extends SimpleTableAtom {\n constructor(len) {\n super(len, SampleToChunkToken);\n }\n}\n/**\n * Sample-size ('stsz') atom\n * Ref: https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/QTFFChap2/qtff2.html#//apple_ref/doc/uid/TP40000939-CH204-25710\n */\nexport class StszAtom {\n constructor(len) {\n this.len = len;\n }\n get(buf, off) {\n const nrOfEntries = Token.INT32_BE.get(buf, off + 8);\n return {\n version: Token.INT8.get(buf, off),\n flags: Token.INT24_BE.get(buf, off + 1),\n sampleSize: Token.INT32_BE.get(buf, off + 4),\n numberOfEntries: nrOfEntries,\n entries: readTokenTable(buf, Token.INT32_BE, off + 12, this.len - 12, nrOfEntries)\n };\n }\n}\n/**\n * Chunk offset atom, 'stco'\n * Ref: https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/QTFFChap2/qtff2.html#//apple_ref/doc/uid/TP40000939-CH204-25715\n */\nexport class StcoAtom extends SimpleTableAtom {\n constructor(len) {\n super(len, Token.INT32_BE);\n this.len = len;\n }\n}\n/**\n * Token used to decode text-track from 'mdat' atom (raw data stream)\n */\nexport class ChapterText {\n constructor(len) {\n this.len = len;\n }\n get(buf, off) {\n const titleLen = Token.INT16_BE.get(buf, off + 0);\n const str = new Token.StringType(titleLen, 'utf-8');\n return str.get(buf, off + 2);\n }\n}\nfunction readTokenTable(buf, token, off, remainingLen, numberOfEntries) {\n debug(`remainingLen=${remainingLen}, numberOfEntries=${numberOfEntries} * token-len=${token.len}`);\n if (remainingLen === 0)\n return [];\n if (remainingLen !== numberOfEntries * token.len)\n throw new Mp4ContentError('mismatch number-of-entries with remaining atom-length');\n const entries = [];\n // parse offset-table\n for (let n = 0; n < numberOfEntries; ++n) {\n entries.push(token.get(buf, off));\n off += token.len;\n }\n return entries;\n}\n/**\n * Sample-size ('tfhd') TrackFragmentHeaderBox\n */\nexport class TrackFragmentHeaderBox {\n constructor(len) {\n this.len = len;\n }\n get(buf, off) {\n const flagOffset = off + 1;\n const header = {\n version: Token.INT8.get(buf, off),\n flags: {\n baseDataOffsetPresent: util.getBit(buf, flagOffset + 2, 0),\n sampleDescriptionIndexPresent: util.getBit(buf, flagOffset + 2, 1),\n defaultSampleDurationPresent: util.getBit(buf, flagOffset + 2, 3),\n defaultSampleSizePresent: util.getBit(buf, flagOffset + 2, 4),\n defaultSampleFlagsPresent: util.getBit(buf, flagOffset + 2, 5),\n defaultDurationIsEmpty: util.getBit(buf, flagOffset, 0),\n defaultBaseIsMoof: util.getBit(buf, flagOffset, 1)\n },\n trackId: Token.UINT32_BE.get(buf, 4)\n };\n let dynOffset = 8;\n if (header.flags.baseDataOffsetPresent) {\n header.baseDataOffset = Token.UINT64_BE.get(buf, dynOffset);\n dynOffset += 8;\n }\n if (header.flags.sampleDescriptionIndexPresent) {\n header.sampleDescriptionIndex = Token.UINT32_BE.get(buf, dynOffset);\n dynOffset += 4;\n }\n if (header.flags.defaultSampleDurationPresent) {\n header.defaultSampleDuration = Token.UINT32_BE.get(buf, dynOffset);\n dynOffset += 4;\n }\n if (header.flags.defaultSampleSizePresent) {\n header.defaultSampleSize = Token.UINT32_BE.get(buf, dynOffset);\n dynOffset += 4;\n }\n if (header.flags.defaultSampleFlagsPresent) {\n header.defaultSampleFlags = Token.UINT32_BE.get(buf, dynOffset);\n }\n return header;\n }\n}\n/**\n * Sample-size ('trun') TrackRunBox\n */\nexport class TrackRunBox {\n constructor(len) {\n this.len = len;\n }\n get(buf, off) {\n const flagOffset = off + 1;\n const trun = {\n version: Token.INT8.get(buf, off),\n flags: {\n dataOffsetPresent: util.getBit(buf, flagOffset + 2, 0),\n firstSampleFlagsPresent: util.getBit(buf, flagOffset + 2, 2),\n sampleDurationPresent: util.getBit(buf, flagOffset + 1, 0),\n sampleSizePresent: util.getBit(buf, flagOffset + 1, 1),\n sampleFlagsPresent: util.getBit(buf, flagOffset + 1, 2),\n sampleCompositionTimeOffsetsPresent: util.getBit(buf, flagOffset + 1, 3)\n },\n sampleCount: Token.UINT32_BE.get(buf, off + 4),\n samples: []\n };\n let dynOffset = off + 8;\n if (trun.flags.dataOffsetPresent) {\n trun.dataOffset = Token.UINT32_BE.get(buf, dynOffset);\n dynOffset += 4;\n }\n if (trun.flags.firstSampleFlagsPresent) {\n trun.firstSampleFlags = Token.UINT32_BE.get(buf, dynOffset);\n dynOffset += 4;\n }\n for (let n = 0; n < trun.sampleCount; ++n) {\n if (dynOffset >= this.len) {\n debug(\"TrackRunBox size mismatch\");\n break;\n }\n const sample = {};\n if (trun.flags.sampleDurationPresent) {\n sample.sampleDuration = Token.UINT32_BE.get(buf, dynOffset);\n dynOffset += 4;\n }\n if (trun.flags.sampleSizePresent) {\n sample.sampleSize = Token.UINT32_BE.get(buf, dynOffset);\n dynOffset += 4;\n }\n if (trun.flags.sampleFlagsPresent) {\n sample.sampleFlags = Token.UINT32_BE.get(buf, dynOffset);\n dynOffset += 4;\n }\n if (trun.flags.sampleCompositionTimeOffsetsPresent) {\n sample.sampleCompositionTimeOffset = Token.UINT32_BE.get(buf, dynOffset);\n dynOffset += 4;\n }\n trun.samples.push(sample);\n }\n return trun;\n }\n}\n/**\n * HandlerBox (`hdlr`)\n */\nexport class HandlerBox {\n constructor(len) {\n this.len = len;\n }\n get(buf, off) {\n const _flagOffset = off + 1;\n const charTypeToken = new Token.StringType(4, 'utf-8');\n return {\n version: Token.INT8.get(buf, off),\n flags: Token.UINT24_BE.get(buf, off + 1),\n componentType: charTypeToken.get(buf, off + 4),\n handlerType: charTypeToken.get(buf, off + 8),\n componentName: new Token.StringType(this.len - 28, 'utf-8').get(buf, off + 28),\n };\n }\n}\n/**\n * Chapter Track Reference Box (`chap`)\n */\nexport class ChapterTrackReferenceBox {\n constructor(len) {\n this.len = len;\n }\n get(buf, off) {\n let dynOffset = 0;\n const trackIds = [];\n while (dynOffset < this.len) {\n trackIds.push(Token.UINT32_BE.get(buf, off + dynOffset));\n dynOffset += 4;\n }\n return trackIds;\n }\n}\n"],"mappings":"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","names":["import_debug","import_debug","import_debug","debug","initDebug","Mp4ContentError","makeUnexpectedFileContentError","__name","Header","buf","off","length","UINT32_BE","StringType","hdr","FourCcToken","ExtendedSize","UINT64_BE","ftyp","FixedLengthAtom","__name","len","expLen","atomId","Mp4ContentError","debug","SecondsSinceMacEpoch","buf","off","secondsSinceUnixEpoch","UINT32_BE","SecondsSinceMacEpoch64","UINT64_BE","MdhdAtom","version","UINT8","flags","UINT24_BE","UINT16_BE","FieldDecodingError","MvhdAtom","DataAtom","Uint8ArrayType","NameAtom","StringType","TrackHeaderAtom","stsdHeader","SampleDescriptionTable","descrLen","FourCcToken","StsdAtom","header","table","n","size","SoundSampleDescriptionVersion","INT16_BE","INT32_BE","SoundSampleDescriptionV0","SimpleTableAtom","token","nrOfEntries","INT8","INT24_BE","readTokenTable","TimeToSampleToken","SttsAtom","SampleToChunkToken","StscAtom","StszAtom","StcoAtom","ChapterText","titleLen","remainingLen","numberOfEntries","entries","TrackFragmentHeaderBox","flagOffset","getBit","dynOffset","TrackRunBox","trun","sample","HandlerBox","_flagOffset","charTypeToken","ChapterTrackReferenceBox","trackIds","debug","initDebug","Atom","_Atom","__name","tokenizer","dataHandler","parent","remaining","offset","header","Header","extended","ExtendedSize","atomBean","payloadLength","size","paddingLength","debug","initDebug","tagFormat","encoderDict","distinct","value","index","self","__name","isAudioTrack","track","ssd","MP4Parser","_MP4Parser","BasicParser","len","mvhd","MvhdAtom","td","trackIds","UINT32_BE","trackWithChapters","chapterTrackIds","chapterTracks","types","ftype","ftyp","x","stsd","StsdAtom","trackDescription","dfEntry","stsz","StszAtom","date","StringType","array","signed","integerType","token","lib_exports","Mp4ContentError","remainingFileSize","Header","errMsg","error","rootAtom","Atom","atom","remaining","formatList","trackFormats","trackIsAudio","streamInfo","encoderInfo","description","TrackType","audioTracks","audioTrack","totalTimeUnits","fragment","sample","dur","size","sum","n","totalSampleSize","ttstEntry","total","sampleSize","firstAudioTrack","tracks","id","message","metaAtom","tagKey","child","payLoadLength","name","NameAtom","uint8Array","Uint8ArrayType","uint8ArrayToHex","textDecode","dataAtom","DataAtom","num","UINT8","of","genreInt","genreStr","Genres","rate","UINT16_BE","trakBox","chap","ChapterTrackReferenceBox","TrackHeaderAtom","HandlerBox","mdhd_data","MdhdAtom","stco","StcoAtom","stsc","StscAtom","stts","SttsAtom","trafBox","tfhd","fragmentHeaderBox","TrackFragmentHeaderBox","trackRunBox","TrackRunBox","trun","sampleDescription","offset","SoundSampleDescriptionVersion","version","SoundSampleDescriptionV0","chapterTrack","chapters","i","start","acc","cur","nextChunkLen","title","ChapterText","chapter","chapterOffset","chunkIndex","chunkId","ttsi","ttsc","ttsd","curChunkId","samplesPerChunk","totalDuration","nrOfSamples","stcTable"],"sourceRoot":"","file":"/MP4Parser-MX56ESYJ.js.map"} \ No newline at end of file diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/MatroskaParser-S7QBLT5N.js b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/MatroskaParser-S7QBLT5N.js similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/MatroskaParser-S7QBLT5N.js rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/MatroskaParser-S7QBLT5N.js diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/MatroskaParser-S7QBLT5N.js.br b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/MatroskaParser-S7QBLT5N.js.br similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/MatroskaParser-S7QBLT5N.js.br rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/MatroskaParser-S7QBLT5N.js.br diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/MatroskaParser-S7QBLT5N.js.map b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/MatroskaParser-S7QBLT5N.js.map similarity index 99% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/MatroskaParser-S7QBLT5N.js.map rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/MatroskaParser-S7QBLT5N.js.map index 03a6b2ea..1df9c51a 100644 --- a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/MatroskaParser-S7QBLT5N.js.map +++ b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/MatroskaParser-S7QBLT5N.js.map @@ -1 +1 @@ -{"version":3,"sources":["/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/matroska/MatroskaParser.js","/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/ebml/types.js","/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/matroska/MatroskaDtd.js","/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/ebml/EbmlIterator.js"],"sourcesContent":["import initDebug from 'debug';\nimport { BasicParser } from '../common/BasicParser.js';\nimport { matroskaDtd } from './MatroskaDtd.js';\nimport { TargetType, TrackType } from './types.js';\nimport { EbmlIterator, ParseAction } from '../ebml/EbmlIterator.js';\nconst debug = initDebug('music-metadata:parser:matroska');\n/**\n * Extensible Binary Meta Language (EBML) parser\n * https://en.wikipedia.org/wiki/Extensible_Binary_Meta_Language\n * http://matroska.sourceforge.net/technical/specs/rfc/index.html\n *\n * WEBM VP8 AUDIO FILE\n */\nexport class MatroskaParser extends BasicParser {\n constructor() {\n super(...arguments);\n this.seekHeadOffset = 0;\n /**\n * Use index to skip multiple segment/cluster elements at once.\n * Significant performance impact\n */\n this.flagUseIndexToSkipClusters = this.options.mkvUseIndex ?? false;\n }\n async parse() {\n const containerSize = this.tokenizer.fileInfo.size ?? Number.MAX_SAFE_INTEGER;\n const matroskaIterator = new EbmlIterator(this.tokenizer);\n debug('Initializing DTD end MatroskaIterator');\n await matroskaIterator.iterate(matroskaDtd, containerSize, {\n startNext: (element) => {\n switch (element.id) {\n // case 0x1f43b675: // cluster\n case 0x1c53bb6b: // Cueing Data\n debug(`Skip element: name=${element.name}, id=0x${element.id.toString(16)}`);\n return ParseAction.IgnoreElement;\n case 0x1f43b675: // cluster\n if (this.flagUseIndexToSkipClusters && this.seekHead) {\n const index = this.seekHead.seek.find(index => index.position + this.seekHeadOffset > this.tokenizer.position);\n if (index) {\n // Go to next index position\n const ignoreSize = index.position + this.seekHeadOffset - this.tokenizer.position;\n debug(`Use index to go to next position, ignoring ${ignoreSize} bytes`);\n this.tokenizer.ignore(ignoreSize);\n return ParseAction.SkipElement;\n }\n }\n return ParseAction.IgnoreElement;\n default:\n return ParseAction.ReadNext;\n }\n },\n elementValue: async (element, value, offset) => {\n debug(`Received: name=${element.name}, value=${value}`);\n switch (element.id) {\n case 0x4282: // docType\n this.metadata.setFormat('container', `EBML/${value}`);\n break;\n case 0x114d9b74:\n this.seekHead = value;\n this.seekHeadOffset = offset;\n break;\n case 0x1549a966:\n { // Info (Segment Information)\n const info = value;\n const timecodeScale = info.timecodeScale ? info.timecodeScale : 1000000;\n if (typeof info.duration === 'number') {\n const duration = info.duration * timecodeScale / 1000000000;\n await this.addTag('segment:title', info.title);\n this.metadata.setFormat('duration', Number(duration));\n }\n }\n break;\n case 0x1654ae6b:\n { // tracks\n const audioTracks = value;\n if (audioTracks?.entries) {\n audioTracks.entries.forEach(entry => {\n const stream = {\n codecName: entry.codecID.replace('A_', '').replace('V_', ''),\n codecSettings: entry.codecSettings,\n flagDefault: entry.flagDefault,\n flagLacing: entry.flagLacing,\n flagEnabled: entry.flagEnabled,\n language: entry.language,\n name: entry.name,\n type: entry.trackType,\n audio: entry.audio,\n video: entry.video\n };\n this.metadata.addStreamInfo(stream);\n });\n const audioTrack = audioTracks.entries\n .filter(entry => entry.trackType === TrackType.audio)\n .reduce((acc, cur) => {\n if (!acc)\n return cur;\n if (cur.flagDefault && !acc.flagDefault)\n return cur;\n if (cur.trackNumber < acc.trackNumber)\n return cur;\n return acc;\n }, null);\n if (audioTrack) {\n this.metadata.setFormat('codec', audioTrack.codecID.replace('A_', ''));\n this.metadata.setFormat('sampleRate', audioTrack.audio.samplingFrequency);\n this.metadata.setFormat('numberOfChannels', audioTrack.audio.channels);\n }\n }\n }\n break;\n case 0x1254c367:\n { // tags\n const tags = value;\n await Promise.all(tags.tag.map(async (tag) => {\n const target = tag.target;\n const targetType = target?.targetTypeValue ? TargetType[target.targetTypeValue] : (target?.targetType ? target.targetType : 'track');\n await Promise.all(tag.simpleTags.map(async (simpleTag) => {\n const value = simpleTag.string ? simpleTag.string : simpleTag.binary;\n await this.addTag(`${targetType}:${simpleTag.name}`, value);\n }));\n }));\n }\n break;\n case 0x1941a469:\n { // attachments\n const attachments = value;\n await Promise.all(attachments.attachedFiles\n .filter(file => file.mimeType.startsWith('image/'))\n .map(file => this.addTag('picture', {\n data: file.data,\n format: file.mimeType,\n description: file.description,\n name: file.name\n })));\n }\n break;\n }\n }\n });\n }\n async addTag(tagId, value) {\n await this.metadata.addTag('matroska', tagId, value);\n }\n}\n","export const DataType = {\n string: 0,\n uint: 1,\n uid: 2,\n bool: 3,\n binary: 4,\n float: 5,\n};\n","import { DataType } from '../ebml/types.js';\n/**\n * Elements of document type description\n * Derived from https://github.com/tungol/EBML/blob/master/doctypes/matroska.dtd\n * Extended with:\n * - https://www.matroska.org/technical/specs/index.html\n */\nexport const matroskaDtd = {\n name: 'dtd',\n container: {\n 0x1a45dfa3: {\n name: 'ebml',\n container: {\n 0x4286: { name: 'ebmlVersion', value: DataType.uint }, // 5.1.1\n 0x42f7: { name: 'ebmlReadVersion', value: DataType.uint }, // 5.1.2\n 0x42f2: { name: 'ebmlMaxIDWidth', value: DataType.uint }, // 5.1.3\n 0x42f3: { name: 'ebmlMaxSizeWidth', value: DataType.uint }, // 5.1.4\n 0x4282: { name: 'docType', value: DataType.string }, // 5.1.5\n 0x4287: { name: 'docTypeVersion', value: DataType.uint }, // 5.1.6\n 0x4285: { name: 'docTypeReadVersion', value: DataType.uint } // 5.1.7\n }\n },\n // Matroska segments\n 0x18538067: {\n name: 'segment',\n container: {\n // Meta Seek Information (also known as MetaSeek)\n 0x114d9b74: {\n name: 'seekHead',\n container: {\n 0x4dbb: {\n name: 'seek',\n multiple: true,\n container: {\n 0x53ab: { name: 'id', value: DataType.binary },\n 0x53ac: { name: 'position', value: DataType.uint }\n }\n }\n }\n },\n // Segment Information\n 0x1549a966: {\n name: 'info',\n container: {\n 0x73a4: { name: 'uid', value: DataType.uid },\n 0x7384: { name: 'filename', value: DataType.string },\n 0x3cb923: { name: 'prevUID', value: DataType.uid },\n 0x3c83ab: { name: 'prevFilename', value: DataType.string },\n 0x3eb923: { name: 'nextUID', value: DataType.uid },\n 0x3e83bb: { name: 'nextFilename', value: DataType.string },\n 0x2ad7b1: { name: 'timecodeScale', value: DataType.uint },\n 0x4489: { name: 'duration', value: DataType.float },\n 0x4461: { name: 'dateUTC', value: DataType.uint },\n 0x7ba9: { name: 'title', value: DataType.string },\n 0x4d80: { name: 'muxingApp', value: DataType.string },\n 0x5741: { name: 'writingApp', value: DataType.string }\n }\n },\n // Cluster\n 0x1f43b675: {\n name: 'cluster',\n multiple: true,\n container: {\n 0xe7: { name: 'timecode', value: DataType.uid },\n 0x58d7: { name: 'silentTracks ', multiple: true },\n 0xa7: { name: 'position', value: DataType.uid },\n 0xab: { name: 'prevSize', value: DataType.uid },\n 0xa0: { name: 'blockGroup' },\n 0xa3: { name: 'simpleBlock' }\n }\n },\n // Track\n 0x1654ae6b: {\n name: 'tracks',\n container: {\n 0xae: {\n name: 'entries',\n multiple: true,\n container: {\n 0xd7: { name: 'trackNumber', value: DataType.uint },\n 0x73c5: { name: 'uid', value: DataType.uid },\n 0x83: { name: 'trackType', value: DataType.uint },\n 0xb9: { name: 'flagEnabled', value: DataType.bool },\n 0x88: { name: 'flagDefault', value: DataType.bool },\n 0x55aa: { name: 'flagForced', value: DataType.bool }, // extended\n 0x9c: { name: 'flagLacing', value: DataType.bool },\n 0x6de7: { name: 'minCache', value: DataType.uint },\n 0x6de8: { name: 'maxCache', value: DataType.uint },\n 0x23e383: { name: 'defaultDuration', value: DataType.uint },\n 0x23314f: { name: 'timecodeScale', value: DataType.float },\n 0x536e: { name: 'name', value: DataType.string },\n 0x22b59c: { name: 'language', value: DataType.string },\n 0x86: { name: 'codecID', value: DataType.string },\n 0x63a2: { name: 'codecPrivate', value: DataType.binary },\n 0x258688: { name: 'codecName', value: DataType.string },\n 0x3a9697: { name: 'codecSettings', value: DataType.string },\n 0x3b4040: { name: 'codecInfoUrl', value: DataType.string },\n 0x26b240: { name: 'codecDownloadUrl', value: DataType.string },\n 0xaa: { name: 'codecDecodeAll', value: DataType.bool },\n 0x6fab: { name: 'trackOverlay', value: DataType.uint },\n // Video\n 0xe0: {\n name: 'video',\n container: {\n 0x9a: { name: 'flagInterlaced', value: DataType.bool },\n 0x53b8: { name: 'stereoMode', value: DataType.uint },\n 0xb0: { name: 'pixelWidth', value: DataType.uint },\n 0xba: { name: 'pixelHeight', value: DataType.uint },\n 0x54b0: { name: 'displayWidth', value: DataType.uint },\n 0x54ba: { name: 'displayHeight', value: DataType.uint },\n 0x54b3: { name: 'aspectRatioType', value: DataType.uint },\n 0x2eb524: { name: 'colourSpace', value: DataType.uint },\n 0x2fb523: { name: 'gammaValue', value: DataType.float }\n }\n },\n // Audio\n 0xe1: {\n name: 'audio',\n container: {\n 0xb5: { name: 'samplingFrequency', value: DataType.float },\n 0x78b5: { name: 'outputSamplingFrequency', value: DataType.float },\n 0x9f: { name: 'channels', value: DataType.uint }, // https://www.matroska.org/technical/specs/index.html\n 0x94: { name: 'channels', value: DataType.uint },\n 0x7d7b: { name: 'channelPositions', value: DataType.binary },\n 0x6264: { name: 'bitDepth', value: DataType.uint }\n }\n },\n // Content Encoding\n 0x6d80: {\n name: 'contentEncodings',\n container: {\n 0x6240: {\n name: 'contentEncoding',\n container: {\n 0x5031: { name: 'order', value: DataType.uint },\n 0x5032: { name: 'scope', value: DataType.bool },\n 0x5033: { name: 'type', value: DataType.uint },\n 0x5034: {\n name: 'contentEncoding',\n container: {\n 0x4254: { name: 'contentCompAlgo', value: DataType.uint },\n 0x4255: { name: 'contentCompSettings', value: DataType.binary }\n }\n },\n 0x5035: {\n name: 'contentEncoding',\n container: {\n 0x47e1: { name: 'contentEncAlgo', value: DataType.uint },\n 0x47e2: { name: 'contentEncKeyID', value: DataType.binary },\n 0x47e3: { name: 'contentSignature ', value: DataType.binary },\n 0x47e4: { name: 'ContentSigKeyID ', value: DataType.binary },\n 0x47e5: { name: 'contentSigAlgo ', value: DataType.uint },\n 0x47e6: { name: 'contentSigHashAlgo ', value: DataType.uint }\n }\n },\n 0x6264: { name: 'bitDepth', value: DataType.uint }\n }\n }\n }\n }\n }\n }\n }\n },\n // Cueing Data\n 0x1c53bb6b: {\n name: 'cues',\n container: {\n 0xbb: {\n name: 'cuePoint',\n container: {\n 0xb3: { name: 'cueTime', value: DataType.uid },\n 0xb7: {\n name: 'positions',\n container: {\n 0xf7: { name: 'track', value: DataType.uint },\n 0xf1: { name: 'clusterPosition', value: DataType.uint },\n 0x5378: { name: 'blockNumber', value: DataType.uint },\n 0xea: { name: 'codecState', value: DataType.uint },\n 0xdb: {\n name: 'reference', container: {\n 0x96: { name: 'time', value: DataType.uint },\n 0x97: { name: 'cluster', value: DataType.uint },\n 0x535f: { name: 'number', value: DataType.uint },\n 0xeb: { name: 'codecState', value: DataType.uint }\n }\n },\n 0xf0: { name: 'relativePosition', value: DataType.uint } // extended\n }\n }\n }\n }\n }\n },\n // Attachment\n 0x1941a469: {\n name: 'attachments',\n container: {\n 0x61a7: {\n name: 'attachedFiles',\n multiple: true,\n container: {\n 0x467e: { name: 'description', value: DataType.string },\n 0x466e: { name: 'name', value: DataType.string },\n 0x4660: { name: 'mimeType', value: DataType.string },\n 0x465c: { name: 'data', value: DataType.binary },\n 0x46ae: { name: 'uid', value: DataType.uid }\n }\n }\n }\n },\n // Chapters\n 0x1043a770: {\n name: 'chapters',\n container: {\n 0x45b9: {\n name: 'editionEntry',\n container: {\n 0xb6: {\n name: 'chapterAtom',\n container: {\n 0x73c4: { name: 'uid', value: DataType.uid },\n 0x91: { name: 'timeStart', value: DataType.uint },\n 0x92: { name: 'timeEnd', value: DataType.uid },\n 0x98: { name: 'hidden', value: DataType.bool },\n 0x4598: { name: 'enabled', value: DataType.uid },\n 0x8f: {\n name: 'track', container: {\n 0x89: { name: 'trackNumber', value: DataType.uid },\n 0x80: {\n name: 'display', container: {\n 0x85: { name: 'string', value: DataType.string },\n 0x437c: { name: 'language ', value: DataType.string },\n 0x437e: { name: 'country ', value: DataType.string }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n },\n // Tagging\n 0x1254c367: {\n name: 'tags',\n container: {\n 0x7373: {\n name: 'tag',\n multiple: true,\n container: {\n 0x63c0: {\n name: 'target',\n container: {\n 0x63c5: { name: 'tagTrackUID', value: DataType.uid },\n 0x63c4: { name: 'tagChapterUID', value: DataType.uint },\n 0x63c6: { name: 'tagAttachmentUID', value: DataType.uid },\n 0x63ca: { name: 'targetType', value: DataType.string }, // extended\n 0x68ca: { name: 'targetTypeValue', value: DataType.uint }, // extended\n 0x63c9: { name: 'tagEditionUID', value: DataType.uid } // extended\n }\n },\n 0x67c8: {\n name: 'simpleTags',\n multiple: true,\n container: {\n 0x45a3: { name: 'name', value: DataType.string },\n 0x4487: { name: 'string', value: DataType.string },\n 0x4485: { name: 'binary', value: DataType.binary },\n 0x447a: { name: 'language', value: DataType.string }, // extended\n 0x447b: { name: 'languageIETF', value: DataType.string }, // extended\n 0x4484: { name: 'default', value: DataType.bool } // extended\n }\n }\n }\n }\n }\n }\n }\n }\n }\n};\n","import { Float32_BE, Float64_BE, StringType, UINT8 } from 'token-types';\nimport initDebug from 'debug';\nimport { EndOfStreamError } from 'strtok3';\nimport { DataType } from './types.js';\nimport * as Token from 'token-types';\nimport { makeUnexpectedFileContentError } from '../ParseError.js';\nconst debug = initDebug('music-metadata:parser:ebml');\nexport class EbmlContentError extends makeUnexpectedFileContentError('EBML') {\n}\nexport const ParseAction = {\n ReadNext: 0, // Continue reading the next elements\n IgnoreElement: 2, // Ignore (do not read) this element\n SkipSiblings: 3, // Skip all remaining elements at the same level\n TerminateParsing: 4, // Terminate the parsing process\n SkipElement: 5 // Consider the element has read, assume position is at the next element\n};\n/**\n * Extensible Binary Meta Language (EBML) iterator\n * https://en.wikipedia.org/wiki/Extensible_Binary_Meta_Language\n * http://matroska.sourceforge.net/technical/specs/rfc/index.html\n *\n * WEBM VP8 AUDIO FILE\n */\nexport class EbmlIterator {\n /**\n * @param {ITokenizer} tokenizer Input\n * @param tokenizer\n */\n constructor(tokenizer) {\n this.parserMap = new Map();\n this.ebmlMaxIDLength = 4;\n this.ebmlMaxSizeLength = 8;\n this.tokenizer = tokenizer;\n this.parserMap.set(DataType.uint, e => this.readUint(e));\n this.parserMap.set(DataType.string, e => this.readString(e));\n this.parserMap.set(DataType.binary, e => this.readBuffer(e));\n this.parserMap.set(DataType.uid, async (e) => this.readBuffer(e));\n this.parserMap.set(DataType.bool, e => this.readFlag(e));\n this.parserMap.set(DataType.float, e => this.readFloat(e));\n }\n async iterate(dtdElement, posDone, listener) {\n return this.parseContainer(linkParents(dtdElement), posDone, listener);\n }\n async parseContainer(dtdElement, posDone, listener) {\n const tree = {};\n while (this.tokenizer.position < posDone) {\n let element;\n const elementPosition = this.tokenizer.position;\n try {\n element = await this.readElement();\n }\n catch (error) {\n if (error instanceof EndOfStreamError) {\n break;\n }\n throw error;\n }\n const child = dtdElement.container[element.id];\n if (child) {\n const action = listener.startNext(child);\n switch (action) {\n case ParseAction.ReadNext:\n {\n if (element.id === 0x1F43B675) {\n // Hack to ignore remaining segment, when cluster element received\n // await this.tokenizer.ignore(posDone - this.tokenizer.position);\n // break;\n }\n debug(`Read element: name=${getElementPath(child)}{id=0x${element.id.toString(16)}, container=${!!child.container}} at position=${elementPosition}`);\n if (child.container) {\n const res = await this.parseContainer(child, element.len >= 0 ? this.tokenizer.position + element.len : -1, listener);\n if (child.multiple) {\n if (!tree[child.name]) {\n tree[child.name] = [];\n }\n tree[child.name].push(res);\n }\n else {\n tree[child.name] = res;\n }\n await listener.elementValue(child, res, elementPosition);\n }\n else {\n const parser = this.parserMap.get(child.value);\n if (typeof parser === 'function') {\n const value = await parser(element);\n tree[child.name] = value;\n await listener.elementValue(child, value, elementPosition);\n }\n }\n }\n break;\n case ParseAction.SkipElement:\n debug(`Go to next element: name=${getElementPath(child)}, element.id=0x${element.id}, container=${!!child.container} at position=${elementPosition}`);\n break;\n case ParseAction.IgnoreElement:\n debug(`Ignore element: name=${getElementPath(child)}, element.id=0x${element.id}, container=${!!child.container} at position=${elementPosition}`);\n await this.tokenizer.ignore(element.len);\n break;\n case ParseAction.SkipSiblings:\n debug(`Ignore remaining container, at: name=${getElementPath(child)}, element.id=0x${element.id}, container=${!!child.container} at position=${elementPosition}`);\n await this.tokenizer.ignore(posDone - this.tokenizer.position);\n break;\n case ParseAction.TerminateParsing:\n debug(`Terminate parsing at element: name=${getElementPath(child)}, element.id=0x${element.id}, container=${!!child.container} at position=${elementPosition}`);\n return tree;\n }\n }\n else {\n switch (element.id) {\n case 0xec: // void\n await this.tokenizer.ignore(element.len);\n break;\n default:\n debug(`parseEbml: parent=${getElementPath(dtdElement)}, unknown child: id=${element.id.toString(16)} at position=${elementPosition}`);\n await this.tokenizer.ignore(element.len);\n }\n }\n }\n return tree;\n }\n async readVintData(maxLength) {\n const msb = await this.tokenizer.peekNumber(UINT8);\n let mask = 0x80;\n let oc = 1;\n // Calculate VINT_WIDTH\n while ((msb & mask) === 0) {\n if (oc > maxLength) {\n throw new EbmlContentError('VINT value exceeding maximum size');\n }\n ++oc;\n mask >>= 1;\n }\n const id = new Uint8Array(oc);\n await this.tokenizer.readBuffer(id);\n return id;\n }\n async readElement() {\n const id = await this.readVintData(this.ebmlMaxIDLength);\n const lenField = await this.readVintData(this.ebmlMaxSizeLength);\n lenField[0] ^= 0x80 >> (lenField.length - 1);\n return {\n id: readUIntBE(id, id.length),\n len: readUIntBE(lenField, lenField.length)\n };\n }\n async readFloat(e) {\n switch (e.len) {\n case 0:\n return 0.0;\n case 4:\n return this.tokenizer.readNumber(Float32_BE);\n case 8:\n return this.tokenizer.readNumber(Float64_BE);\n case 10:\n return this.tokenizer.readNumber(Float64_BE);\n default:\n throw new EbmlContentError(`Invalid IEEE-754 float length: ${e.len}`);\n }\n }\n async readFlag(e) {\n return (await this.readUint(e)) === 1;\n }\n async readUint(e) {\n const buf = await this.readBuffer(e);\n return readUIntBE(buf, e.len);\n }\n async readString(e) {\n const rawString = await this.tokenizer.readToken(new StringType(e.len, 'utf-8'));\n return rawString.replace(/\\x00.*$/g, '');\n }\n async readBuffer(e) {\n const buf = new Uint8Array(e.len);\n await this.tokenizer.readBuffer(buf);\n return buf;\n }\n}\nfunction readUIntBE(buf, len) {\n return Number(readUIntBeAsBigInt(buf, len));\n}\n/**\n * Reeds an unsigned integer from a big endian buffer of length `len`\n * @param buf Buffer to decode from\n * @param len Number of bytes\n * @private\n */\nfunction readUIntBeAsBigInt(buf, len) {\n const normalizedNumber = new Uint8Array(8);\n const cleanNumber = buf.subarray(0, len);\n try {\n normalizedNumber.set(cleanNumber, 8 - len);\n return Token.UINT64_BE.get(normalizedNumber, 0);\n }\n catch (_error) {\n return BigInt(-1);\n }\n}\nfunction linkParents(element) {\n if (element.container) {\n Object.keys(element.container)\n .map(id => {\n const child = element.container[id];\n child.id = Number.parseInt(id, 10);\n return child;\n }).forEach(child => {\n child.parent = element;\n linkParents(child);\n });\n }\n return element;\n}\nexport function getElementPath(element) {\n let path = '';\n if (element.parent && element.parent.name !== 'dtd') {\n path += `${getElementPath(element.parent)}/`;\n }\n return path + element.name;\n}\n"],"mappings":"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","names":["import_debug","DataType","matroskaDtd","DataType","import_debug","debug","initDebug","EbmlContentError","makeUnexpectedFileContentError","__name","ParseAction","EbmlIterator","tokenizer","DataType","e","dtdElement","posDone","listener","linkParents","tree","element","elementPosition","error","EndOfStreamError","child","getElementPath","res","parser","value","maxLength","msb","UINT8","mask","oc","id","lenField","readUIntBE","Float32_BE","Float64_BE","buf","StringType","len","readUIntBeAsBigInt","normalizedNumber","cleanNumber","UINT64_BE","path","debug","initDebug","MatroskaParser","BasicParser","__name","containerSize","matroskaIterator","EbmlIterator","matroskaDtd","element","ParseAction","index","ignoreSize","value","offset","info","timecodeScale","duration","audioTracks","entry","stream","audioTrack","TrackType","acc","cur","tags","tag","target","targetType","TargetType","simpleTag","attachments","file","tagId"],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse","file":"/MatroskaParser-S7QBLT5N.js.map"} \ No newline at end of file +{"version":3,"sources":["/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/matroska/MatroskaParser.js","/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/ebml/types.js","/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/matroska/MatroskaDtd.js","/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/ebml/EbmlIterator.js"],"sourcesContent":["import initDebug from 'debug';\nimport { BasicParser } from '../common/BasicParser.js';\nimport { matroskaDtd } from './MatroskaDtd.js';\nimport { TargetType, TrackType } from './types.js';\nimport { EbmlIterator, ParseAction } from '../ebml/EbmlIterator.js';\nconst debug = initDebug('music-metadata:parser:matroska');\n/**\n * Extensible Binary Meta Language (EBML) parser\n * https://en.wikipedia.org/wiki/Extensible_Binary_Meta_Language\n * http://matroska.sourceforge.net/technical/specs/rfc/index.html\n *\n * WEBM VP8 AUDIO FILE\n */\nexport class MatroskaParser extends BasicParser {\n constructor() {\n super(...arguments);\n this.seekHeadOffset = 0;\n /**\n * Use index to skip multiple segment/cluster elements at once.\n * Significant performance impact\n */\n this.flagUseIndexToSkipClusters = this.options.mkvUseIndex ?? false;\n }\n async parse() {\n const containerSize = this.tokenizer.fileInfo.size ?? Number.MAX_SAFE_INTEGER;\n const matroskaIterator = new EbmlIterator(this.tokenizer);\n debug('Initializing DTD end MatroskaIterator');\n await matroskaIterator.iterate(matroskaDtd, containerSize, {\n startNext: (element) => {\n switch (element.id) {\n // case 0x1f43b675: // cluster\n case 0x1c53bb6b: // Cueing Data\n debug(`Skip element: name=${element.name}, id=0x${element.id.toString(16)}`);\n return ParseAction.IgnoreElement;\n case 0x1f43b675: // cluster\n if (this.flagUseIndexToSkipClusters && this.seekHead) {\n const index = this.seekHead.seek.find(index => index.position + this.seekHeadOffset > this.tokenizer.position);\n if (index) {\n // Go to next index position\n const ignoreSize = index.position + this.seekHeadOffset - this.tokenizer.position;\n debug(`Use index to go to next position, ignoring ${ignoreSize} bytes`);\n this.tokenizer.ignore(ignoreSize);\n return ParseAction.SkipElement;\n }\n }\n return ParseAction.IgnoreElement;\n default:\n return ParseAction.ReadNext;\n }\n },\n elementValue: async (element, value, offset) => {\n debug(`Received: name=${element.name}, value=${value}`);\n switch (element.id) {\n case 0x4282: // docType\n this.metadata.setFormat('container', `EBML/${value}`);\n break;\n case 0x114d9b74:\n this.seekHead = value;\n this.seekHeadOffset = offset;\n break;\n case 0x1549a966:\n { // Info (Segment Information)\n const info = value;\n const timecodeScale = info.timecodeScale ? info.timecodeScale : 1000000;\n if (typeof info.duration === 'number') {\n const duration = info.duration * timecodeScale / 1000000000;\n await this.addTag('segment:title', info.title);\n this.metadata.setFormat('duration', Number(duration));\n }\n }\n break;\n case 0x1654ae6b:\n { // tracks\n const audioTracks = value;\n if (audioTracks?.entries) {\n audioTracks.entries.forEach(entry => {\n const stream = {\n codecName: entry.codecID.replace('A_', '').replace('V_', ''),\n codecSettings: entry.codecSettings,\n flagDefault: entry.flagDefault,\n flagLacing: entry.flagLacing,\n flagEnabled: entry.flagEnabled,\n language: entry.language,\n name: entry.name,\n type: entry.trackType,\n audio: entry.audio,\n video: entry.video\n };\n this.metadata.addStreamInfo(stream);\n });\n const audioTrack = audioTracks.entries\n .filter(entry => entry.trackType === TrackType.audio)\n .reduce((acc, cur) => {\n if (!acc)\n return cur;\n if (cur.flagDefault && !acc.flagDefault)\n return cur;\n if (cur.trackNumber < acc.trackNumber)\n return cur;\n return acc;\n }, null);\n if (audioTrack) {\n this.metadata.setFormat('codec', audioTrack.codecID.replace('A_', ''));\n this.metadata.setFormat('sampleRate', audioTrack.audio.samplingFrequency);\n this.metadata.setFormat('numberOfChannels', audioTrack.audio.channels);\n }\n }\n }\n break;\n case 0x1254c367:\n { // tags\n const tags = value;\n await Promise.all(tags.tag.map(async (tag) => {\n const target = tag.target;\n const targetType = target?.targetTypeValue ? TargetType[target.targetTypeValue] : (target?.targetType ? target.targetType : 'track');\n await Promise.all(tag.simpleTags.map(async (simpleTag) => {\n const value = simpleTag.string ? simpleTag.string : simpleTag.binary;\n await this.addTag(`${targetType}:${simpleTag.name}`, value);\n }));\n }));\n }\n break;\n case 0x1941a469:\n { // attachments\n const attachments = value;\n await Promise.all(attachments.attachedFiles\n .filter(file => file.mimeType.startsWith('image/'))\n .map(file => this.addTag('picture', {\n data: file.data,\n format: file.mimeType,\n description: file.description,\n name: file.name\n })));\n }\n break;\n }\n }\n });\n }\n async addTag(tagId, value) {\n await this.metadata.addTag('matroska', tagId, value);\n }\n}\n","export const DataType = {\n string: 0,\n uint: 1,\n uid: 2,\n bool: 3,\n binary: 4,\n float: 5,\n};\n","import { DataType } from '../ebml/types.js';\n/**\n * Elements of document type description\n * Derived from https://github.com/tungol/EBML/blob/master/doctypes/matroska.dtd\n * Extended with:\n * - https://www.matroska.org/technical/specs/index.html\n */\nexport const matroskaDtd = {\n name: 'dtd',\n container: {\n 0x1a45dfa3: {\n name: 'ebml',\n container: {\n 0x4286: { name: 'ebmlVersion', value: DataType.uint }, // 5.1.1\n 0x42f7: { name: 'ebmlReadVersion', value: DataType.uint }, // 5.1.2\n 0x42f2: { name: 'ebmlMaxIDWidth', value: DataType.uint }, // 5.1.3\n 0x42f3: { name: 'ebmlMaxSizeWidth', value: DataType.uint }, // 5.1.4\n 0x4282: { name: 'docType', value: DataType.string }, // 5.1.5\n 0x4287: { name: 'docTypeVersion', value: DataType.uint }, // 5.1.6\n 0x4285: { name: 'docTypeReadVersion', value: DataType.uint } // 5.1.7\n }\n },\n // Matroska segments\n 0x18538067: {\n name: 'segment',\n container: {\n // Meta Seek Information (also known as MetaSeek)\n 0x114d9b74: {\n name: 'seekHead',\n container: {\n 0x4dbb: {\n name: 'seek',\n multiple: true,\n container: {\n 0x53ab: { name: 'id', value: DataType.binary },\n 0x53ac: { name: 'position', value: DataType.uint }\n }\n }\n }\n },\n // Segment Information\n 0x1549a966: {\n name: 'info',\n container: {\n 0x73a4: { name: 'uid', value: DataType.uid },\n 0x7384: { name: 'filename', value: DataType.string },\n 0x3cb923: { name: 'prevUID', value: DataType.uid },\n 0x3c83ab: { name: 'prevFilename', value: DataType.string },\n 0x3eb923: { name: 'nextUID', value: DataType.uid },\n 0x3e83bb: { name: 'nextFilename', value: DataType.string },\n 0x2ad7b1: { name: 'timecodeScale', value: DataType.uint },\n 0x4489: { name: 'duration', value: DataType.float },\n 0x4461: { name: 'dateUTC', value: DataType.uint },\n 0x7ba9: { name: 'title', value: DataType.string },\n 0x4d80: { name: 'muxingApp', value: DataType.string },\n 0x5741: { name: 'writingApp', value: DataType.string }\n }\n },\n // Cluster\n 0x1f43b675: {\n name: 'cluster',\n multiple: true,\n container: {\n 0xe7: { name: 'timecode', value: DataType.uid },\n 0x58d7: { name: 'silentTracks ', multiple: true },\n 0xa7: { name: 'position', value: DataType.uid },\n 0xab: { name: 'prevSize', value: DataType.uid },\n 0xa0: { name: 'blockGroup' },\n 0xa3: { name: 'simpleBlock' }\n }\n },\n // Track\n 0x1654ae6b: {\n name: 'tracks',\n container: {\n 0xae: {\n name: 'entries',\n multiple: true,\n container: {\n 0xd7: { name: 'trackNumber', value: DataType.uint },\n 0x73c5: { name: 'uid', value: DataType.uid },\n 0x83: { name: 'trackType', value: DataType.uint },\n 0xb9: { name: 'flagEnabled', value: DataType.bool },\n 0x88: { name: 'flagDefault', value: DataType.bool },\n 0x55aa: { name: 'flagForced', value: DataType.bool }, // extended\n 0x9c: { name: 'flagLacing', value: DataType.bool },\n 0x6de7: { name: 'minCache', value: DataType.uint },\n 0x6de8: { name: 'maxCache', value: DataType.uint },\n 0x23e383: { name: 'defaultDuration', value: DataType.uint },\n 0x23314f: { name: 'timecodeScale', value: DataType.float },\n 0x536e: { name: 'name', value: DataType.string },\n 0x22b59c: { name: 'language', value: DataType.string },\n 0x86: { name: 'codecID', value: DataType.string },\n 0x63a2: { name: 'codecPrivate', value: DataType.binary },\n 0x258688: { name: 'codecName', value: DataType.string },\n 0x3a9697: { name: 'codecSettings', value: DataType.string },\n 0x3b4040: { name: 'codecInfoUrl', value: DataType.string },\n 0x26b240: { name: 'codecDownloadUrl', value: DataType.string },\n 0xaa: { name: 'codecDecodeAll', value: DataType.bool },\n 0x6fab: { name: 'trackOverlay', value: DataType.uint },\n // Video\n 0xe0: {\n name: 'video',\n container: {\n 0x9a: { name: 'flagInterlaced', value: DataType.bool },\n 0x53b8: { name: 'stereoMode', value: DataType.uint },\n 0xb0: { name: 'pixelWidth', value: DataType.uint },\n 0xba: { name: 'pixelHeight', value: DataType.uint },\n 0x54b0: { name: 'displayWidth', value: DataType.uint },\n 0x54ba: { name: 'displayHeight', value: DataType.uint },\n 0x54b3: { name: 'aspectRatioType', value: DataType.uint },\n 0x2eb524: { name: 'colourSpace', value: DataType.uint },\n 0x2fb523: { name: 'gammaValue', value: DataType.float }\n }\n },\n // Audio\n 0xe1: {\n name: 'audio',\n container: {\n 0xb5: { name: 'samplingFrequency', value: DataType.float },\n 0x78b5: { name: 'outputSamplingFrequency', value: DataType.float },\n 0x9f: { name: 'channels', value: DataType.uint }, // https://www.matroska.org/technical/specs/index.html\n 0x94: { name: 'channels', value: DataType.uint },\n 0x7d7b: { name: 'channelPositions', value: DataType.binary },\n 0x6264: { name: 'bitDepth', value: DataType.uint }\n }\n },\n // Content Encoding\n 0x6d80: {\n name: 'contentEncodings',\n container: {\n 0x6240: {\n name: 'contentEncoding',\n container: {\n 0x5031: { name: 'order', value: DataType.uint },\n 0x5032: { name: 'scope', value: DataType.bool },\n 0x5033: { name: 'type', value: DataType.uint },\n 0x5034: {\n name: 'contentEncoding',\n container: {\n 0x4254: { name: 'contentCompAlgo', value: DataType.uint },\n 0x4255: { name: 'contentCompSettings', value: DataType.binary }\n }\n },\n 0x5035: {\n name: 'contentEncoding',\n container: {\n 0x47e1: { name: 'contentEncAlgo', value: DataType.uint },\n 0x47e2: { name: 'contentEncKeyID', value: DataType.binary },\n 0x47e3: { name: 'contentSignature ', value: DataType.binary },\n 0x47e4: { name: 'ContentSigKeyID ', value: DataType.binary },\n 0x47e5: { name: 'contentSigAlgo ', value: DataType.uint },\n 0x47e6: { name: 'contentSigHashAlgo ', value: DataType.uint }\n }\n },\n 0x6264: { name: 'bitDepth', value: DataType.uint }\n }\n }\n }\n }\n }\n }\n }\n },\n // Cueing Data\n 0x1c53bb6b: {\n name: 'cues',\n container: {\n 0xbb: {\n name: 'cuePoint',\n container: {\n 0xb3: { name: 'cueTime', value: DataType.uid },\n 0xb7: {\n name: 'positions',\n container: {\n 0xf7: { name: 'track', value: DataType.uint },\n 0xf1: { name: 'clusterPosition', value: DataType.uint },\n 0x5378: { name: 'blockNumber', value: DataType.uint },\n 0xea: { name: 'codecState', value: DataType.uint },\n 0xdb: {\n name: 'reference', container: {\n 0x96: { name: 'time', value: DataType.uint },\n 0x97: { name: 'cluster', value: DataType.uint },\n 0x535f: { name: 'number', value: DataType.uint },\n 0xeb: { name: 'codecState', value: DataType.uint }\n }\n },\n 0xf0: { name: 'relativePosition', value: DataType.uint } // extended\n }\n }\n }\n }\n }\n },\n // Attachment\n 0x1941a469: {\n name: 'attachments',\n container: {\n 0x61a7: {\n name: 'attachedFiles',\n multiple: true,\n container: {\n 0x467e: { name: 'description', value: DataType.string },\n 0x466e: { name: 'name', value: DataType.string },\n 0x4660: { name: 'mimeType', value: DataType.string },\n 0x465c: { name: 'data', value: DataType.binary },\n 0x46ae: { name: 'uid', value: DataType.uid }\n }\n }\n }\n },\n // Chapters\n 0x1043a770: {\n name: 'chapters',\n container: {\n 0x45b9: {\n name: 'editionEntry',\n container: {\n 0xb6: {\n name: 'chapterAtom',\n container: {\n 0x73c4: { name: 'uid', value: DataType.uid },\n 0x91: { name: 'timeStart', value: DataType.uint },\n 0x92: { name: 'timeEnd', value: DataType.uid },\n 0x98: { name: 'hidden', value: DataType.bool },\n 0x4598: { name: 'enabled', value: DataType.uid },\n 0x8f: {\n name: 'track', container: {\n 0x89: { name: 'trackNumber', value: DataType.uid },\n 0x80: {\n name: 'display', container: {\n 0x85: { name: 'string', value: DataType.string },\n 0x437c: { name: 'language ', value: DataType.string },\n 0x437e: { name: 'country ', value: DataType.string }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n },\n // Tagging\n 0x1254c367: {\n name: 'tags',\n container: {\n 0x7373: {\n name: 'tag',\n multiple: true,\n container: {\n 0x63c0: {\n name: 'target',\n container: {\n 0x63c5: { name: 'tagTrackUID', value: DataType.uid },\n 0x63c4: { name: 'tagChapterUID', value: DataType.uint },\n 0x63c6: { name: 'tagAttachmentUID', value: DataType.uid },\n 0x63ca: { name: 'targetType', value: DataType.string }, // extended\n 0x68ca: { name: 'targetTypeValue', value: DataType.uint }, // extended\n 0x63c9: { name: 'tagEditionUID', value: DataType.uid } // extended\n }\n },\n 0x67c8: {\n name: 'simpleTags',\n multiple: true,\n container: {\n 0x45a3: { name: 'name', value: DataType.string },\n 0x4487: { name: 'string', value: DataType.string },\n 0x4485: { name: 'binary', value: DataType.binary },\n 0x447a: { name: 'language', value: DataType.string }, // extended\n 0x447b: { name: 'languageIETF', value: DataType.string }, // extended\n 0x4484: { name: 'default', value: DataType.bool } // extended\n }\n }\n }\n }\n }\n }\n }\n }\n }\n};\n","import { Float32_BE, Float64_BE, StringType, UINT8 } from 'token-types';\nimport initDebug from 'debug';\nimport { EndOfStreamError } from 'strtok3';\nimport { DataType } from './types.js';\nimport * as Token from 'token-types';\nimport { makeUnexpectedFileContentError } from '../ParseError.js';\nconst debug = initDebug('music-metadata:parser:ebml');\nexport class EbmlContentError extends makeUnexpectedFileContentError('EBML') {\n}\nexport const ParseAction = {\n ReadNext: 0, // Continue reading the next elements\n IgnoreElement: 2, // Ignore (do not read) this element\n SkipSiblings: 3, // Skip all remaining elements at the same level\n TerminateParsing: 4, // Terminate the parsing process\n SkipElement: 5 // Consider the element has read, assume position is at the next element\n};\n/**\n * Extensible Binary Meta Language (EBML) iterator\n * https://en.wikipedia.org/wiki/Extensible_Binary_Meta_Language\n * http://matroska.sourceforge.net/technical/specs/rfc/index.html\n *\n * WEBM VP8 AUDIO FILE\n */\nexport class EbmlIterator {\n /**\n * @param {ITokenizer} tokenizer Input\n * @param tokenizer\n */\n constructor(tokenizer) {\n this.parserMap = new Map();\n this.ebmlMaxIDLength = 4;\n this.ebmlMaxSizeLength = 8;\n this.tokenizer = tokenizer;\n this.parserMap.set(DataType.uint, e => this.readUint(e));\n this.parserMap.set(DataType.string, e => this.readString(e));\n this.parserMap.set(DataType.binary, e => this.readBuffer(e));\n this.parserMap.set(DataType.uid, async (e) => this.readBuffer(e));\n this.parserMap.set(DataType.bool, e => this.readFlag(e));\n this.parserMap.set(DataType.float, e => this.readFloat(e));\n }\n async iterate(dtdElement, posDone, listener) {\n return this.parseContainer(linkParents(dtdElement), posDone, listener);\n }\n async parseContainer(dtdElement, posDone, listener) {\n const tree = {};\n while (this.tokenizer.position < posDone) {\n let element;\n const elementPosition = this.tokenizer.position;\n try {\n element = await this.readElement();\n }\n catch (error) {\n if (error instanceof EndOfStreamError) {\n break;\n }\n throw error;\n }\n const child = dtdElement.container[element.id];\n if (child) {\n const action = listener.startNext(child);\n switch (action) {\n case ParseAction.ReadNext:\n {\n if (element.id === 0x1F43B675) {\n // Hack to ignore remaining segment, when cluster element received\n // await this.tokenizer.ignore(posDone - this.tokenizer.position);\n // break;\n }\n debug(`Read element: name=${getElementPath(child)}{id=0x${element.id.toString(16)}, container=${!!child.container}} at position=${elementPosition}`);\n if (child.container) {\n const res = await this.parseContainer(child, element.len >= 0 ? this.tokenizer.position + element.len : -1, listener);\n if (child.multiple) {\n if (!tree[child.name]) {\n tree[child.name] = [];\n }\n tree[child.name].push(res);\n }\n else {\n tree[child.name] = res;\n }\n await listener.elementValue(child, res, elementPosition);\n }\n else {\n const parser = this.parserMap.get(child.value);\n if (typeof parser === 'function') {\n const value = await parser(element);\n tree[child.name] = value;\n await listener.elementValue(child, value, elementPosition);\n }\n }\n }\n break;\n case ParseAction.SkipElement:\n debug(`Go to next element: name=${getElementPath(child)}, element.id=0x${element.id}, container=${!!child.container} at position=${elementPosition}`);\n break;\n case ParseAction.IgnoreElement:\n debug(`Ignore element: name=${getElementPath(child)}, element.id=0x${element.id}, container=${!!child.container} at position=${elementPosition}`);\n await this.tokenizer.ignore(element.len);\n break;\n case ParseAction.SkipSiblings:\n debug(`Ignore remaining container, at: name=${getElementPath(child)}, element.id=0x${element.id}, container=${!!child.container} at position=${elementPosition}`);\n await this.tokenizer.ignore(posDone - this.tokenizer.position);\n break;\n case ParseAction.TerminateParsing:\n debug(`Terminate parsing at element: name=${getElementPath(child)}, element.id=0x${element.id}, container=${!!child.container} at position=${elementPosition}`);\n return tree;\n }\n }\n else {\n switch (element.id) {\n case 0xec: // void\n await this.tokenizer.ignore(element.len);\n break;\n default:\n debug(`parseEbml: parent=${getElementPath(dtdElement)}, unknown child: id=${element.id.toString(16)} at position=${elementPosition}`);\n await this.tokenizer.ignore(element.len);\n }\n }\n }\n return tree;\n }\n async readVintData(maxLength) {\n const msb = await this.tokenizer.peekNumber(UINT8);\n let mask = 0x80;\n let oc = 1;\n // Calculate VINT_WIDTH\n while ((msb & mask) === 0) {\n if (oc > maxLength) {\n throw new EbmlContentError('VINT value exceeding maximum size');\n }\n ++oc;\n mask >>= 1;\n }\n const id = new Uint8Array(oc);\n await this.tokenizer.readBuffer(id);\n return id;\n }\n async readElement() {\n const id = await this.readVintData(this.ebmlMaxIDLength);\n const lenField = await this.readVintData(this.ebmlMaxSizeLength);\n lenField[0] ^= 0x80 >> (lenField.length - 1);\n return {\n id: readUIntBE(id, id.length),\n len: readUIntBE(lenField, lenField.length)\n };\n }\n async readFloat(e) {\n switch (e.len) {\n case 0:\n return 0.0;\n case 4:\n return this.tokenizer.readNumber(Float32_BE);\n case 8:\n return this.tokenizer.readNumber(Float64_BE);\n case 10:\n return this.tokenizer.readNumber(Float64_BE);\n default:\n throw new EbmlContentError(`Invalid IEEE-754 float length: ${e.len}`);\n }\n }\n async readFlag(e) {\n return (await this.readUint(e)) === 1;\n }\n async readUint(e) {\n const buf = await this.readBuffer(e);\n return readUIntBE(buf, e.len);\n }\n async readString(e) {\n const rawString = await this.tokenizer.readToken(new StringType(e.len, 'utf-8'));\n return rawString.replace(/\\x00.*$/g, '');\n }\n async readBuffer(e) {\n const buf = new Uint8Array(e.len);\n await this.tokenizer.readBuffer(buf);\n return buf;\n }\n}\nfunction readUIntBE(buf, len) {\n return Number(readUIntBeAsBigInt(buf, len));\n}\n/**\n * Reeds an unsigned integer from a big endian buffer of length `len`\n * @param buf Buffer to decode from\n * @param len Number of bytes\n * @private\n */\nfunction readUIntBeAsBigInt(buf, len) {\n const normalizedNumber = new Uint8Array(8);\n const cleanNumber = buf.subarray(0, len);\n try {\n normalizedNumber.set(cleanNumber, 8 - len);\n return Token.UINT64_BE.get(normalizedNumber, 0);\n }\n catch (_error) {\n return BigInt(-1);\n }\n}\nfunction linkParents(element) {\n if (element.container) {\n Object.keys(element.container)\n .map(id => {\n const child = element.container[id];\n child.id = Number.parseInt(id, 10);\n return child;\n }).forEach(child => {\n child.parent = element;\n linkParents(child);\n });\n }\n return element;\n}\nexport function getElementPath(element) {\n let path = '';\n if (element.parent && element.parent.name !== 'dtd') {\n path += `${getElementPath(element.parent)}/`;\n }\n return path + element.name;\n}\n"],"mappings":"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","names":["import_debug","DataType","matroskaDtd","DataType","import_debug","debug","initDebug","EbmlContentError","makeUnexpectedFileContentError","__name","ParseAction","EbmlIterator","tokenizer","DataType","e","dtdElement","posDone","listener","linkParents","tree","element","elementPosition","error","EndOfStreamError","child","getElementPath","res","parser","value","maxLength","msb","UINT8","mask","oc","id","lenField","readUIntBE","Float32_BE","Float64_BE","buf","StringType","len","readUIntBeAsBigInt","normalizedNumber","cleanNumber","UINT64_BE","path","debug","initDebug","MatroskaParser","BasicParser","__name","containerSize","matroskaIterator","EbmlIterator","matroskaDtd","element","ParseAction","index","ignoreSize","value","offset","info","timecodeScale","duration","audioTracks","entry","stream","audioTrack","TrackType","acc","cur","tags","tag","target","targetType","TargetType","simpleTag","attachments","file","tagId"],"sourceRoot":"","file":"/MatroskaParser-S7QBLT5N.js.map"} \ No newline at end of file diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/MpegParser-O2RE6KKD.js b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/MpegParser-O2RE6KKD.js similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/MpegParser-O2RE6KKD.js rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/MpegParser-O2RE6KKD.js diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/MpegParser-O2RE6KKD.js.br b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/MpegParser-O2RE6KKD.js.br similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/MpegParser-O2RE6KKD.js.br rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/MpegParser-O2RE6KKD.js.br diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/MpegParser-O2RE6KKD.js.map b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/MpegParser-O2RE6KKD.js.map similarity index 99% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/MpegParser-O2RE6KKD.js.map rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/MpegParser-O2RE6KKD.js.map index 9e45b169..bec3f02f 100644 --- a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/MpegParser-O2RE6KKD.js.map +++ b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/MpegParser-O2RE6KKD.js.map @@ -1 +1 @@ -{"version":3,"sources":["/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/mpeg/MpegParser.js","/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/mpeg/ReplayGainDataFormat.js","/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/mpeg/ExtendedLameHeader.js","/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/mpeg/XingTag.js"],"sourcesContent":["import * as Token from 'token-types';\nimport { EndOfStreamError } from 'strtok3';\nimport initDebug from 'debug';\nimport * as common from '../common/Util.js';\nimport { AbstractID3Parser } from '../id3v2/AbstractID3Parser.js';\nimport { InfoTagHeaderTag, LameEncoderVersion, readXingHeader } from './XingTag.js';\nimport { makeUnexpectedFileContentError } from '../ParseError.js';\nconst debug = initDebug('music-metadata:parser:mpeg');\nexport class MpegContentError extends makeUnexpectedFileContentError('MPEG') {\n}\n/**\n * Cache buffer size used for searching synchronization preabmle\n */\nconst maxPeekLen = 1024;\n/**\n * MPEG-4 Audio definitions\n * Ref: https://wiki.multimedia.cx/index.php/MPEG-4_Audio\n */\nconst MPEG4 = {\n /**\n * Audio Object Types\n */\n AudioObjectTypes: [\n 'AAC Main',\n 'AAC LC', // Low Complexity\n 'AAC SSR', // Scalable Sample Rate\n 'AAC LTP' // Long Term Prediction\n ],\n /**\n * Sampling Frequencies\n * https://wiki.multimedia.cx/index.php/MPEG-4_Audio#Sampling_Frequencies\n */\n SamplingFrequencies: [\n 96000, 88200, 64000, 48000, 44100, 32000, 24000, 22050, 16000, 12000, 11025, 8000, 7350, null, null, null\n ]\n /**\n * Channel Configurations\n */\n};\nconst MPEG4_ChannelConfigurations = [\n undefined,\n ['front-center'],\n ['front-left', 'front-right'],\n ['front-center', 'front-left', 'front-right'],\n ['front-center', 'front-left', 'front-right', 'back-center'],\n ['front-center', 'front-left', 'front-right', 'back-left', 'back-right'],\n ['front-center', 'front-left', 'front-right', 'back-left', 'back-right', 'LFE-channel'],\n ['front-center', 'front-left', 'front-right', 'side-left', 'side-right', 'back-left', 'back-right', 'LFE-channel']\n];\n/**\n * MPEG Audio Layer I/II/III frame header\n * Ref: https://www.mp3-tech.org/programmer/frame_header.html\n * Bit layout: AAAAAAAA AAABBCCD EEEEFFGH IIJJKLMM\n * Ref: https://wiki.multimedia.cx/index.php/ADTS\n */\nclass MpegFrameHeader {\n constructor(buf, off) {\n // E(15,12): Bitrate index\n this.bitrateIndex = null;\n // F(11,10): Sampling rate frequency index\n this.sampRateFreqIndex = null;\n // G(9): Padding bit\n this.padding = null;\n // H(8): Private bit\n this.privateBit = null;\n // I(7,6): Channel Mode\n this.channelModeIndex = null;\n // J(5,4): Mode extension (Only used in Joint stereo)\n this.modeExtension = null;\n // L(2): Original\n this.isOriginalMedia = null;\n this.version = null;\n this.bitrate = null;\n this.samplingRate = null;\n this.frameLength = 0;\n // B(20,19): MPEG Audio versionIndex ID\n this.versionIndex = common.getBitAllignedNumber(buf, off + 1, 3, 2);\n // C(18,17): Layer description\n this.layer = MpegFrameHeader.LayerDescription[common.getBitAllignedNumber(buf, off + 1, 5, 2)];\n if (this.versionIndex > 1 && this.layer === 0) {\n this.parseAdtsHeader(buf, off); // Audio Data Transport Stream (ADTS)\n }\n else {\n this.parseMpegHeader(buf, off); // Conventional MPEG header\n }\n // D(16): Protection bit (if true 16-bit CRC follows header)\n this.isProtectedByCRC = !common.isBitSet(buf, off + 1, 7);\n }\n calcDuration(numFrames) {\n return this.samplingRate == null ? null : (numFrames * this.calcSamplesPerFrame() / this.samplingRate);\n }\n calcSamplesPerFrame() {\n return MpegFrameHeader.samplesInFrameTable[this.version === 1 ? 0 : 1][this.layer];\n }\n calculateSideInfoLength() {\n if (this.layer !== 3)\n return 2;\n if (this.channelModeIndex === 3) {\n // mono\n if (this.version === 1) {\n return 17;\n }\n if (this.version === 2 || this.version === 2.5) {\n return 9;\n }\n }\n else {\n if (this.version === 1) {\n return 32;\n }\n if (this.version === 2 || this.version === 2.5) {\n return 17;\n }\n }\n return null;\n }\n calcSlotSize() {\n return [null, 4, 1, 1][this.layer];\n }\n parseMpegHeader(buf, off) {\n this.container = 'MPEG';\n // E(15,12): Bitrate index\n this.bitrateIndex = common.getBitAllignedNumber(buf, off + 2, 0, 4);\n // F(11,10): Sampling rate frequency index\n this.sampRateFreqIndex = common.getBitAllignedNumber(buf, off + 2, 4, 2);\n // G(9): Padding bit\n this.padding = common.isBitSet(buf, off + 2, 6);\n // H(8): Private bit\n this.privateBit = common.isBitSet(buf, off + 2, 7);\n // I(7,6): Channel Mode\n this.channelModeIndex = common.getBitAllignedNumber(buf, off + 3, 0, 2);\n // J(5,4): Mode extension (Only used in Joint stereo)\n this.modeExtension = common.getBitAllignedNumber(buf, off + 3, 2, 2);\n // K(3): Copyright\n this.isCopyrighted = common.isBitSet(buf, off + 3, 4);\n // L(2): Original\n this.isOriginalMedia = common.isBitSet(buf, off + 3, 5);\n // M(3): The original bit indicates, if it is set, that the frame is located on its original media.\n this.emphasis = common.getBitAllignedNumber(buf, off + 3, 7, 2);\n this.version = MpegFrameHeader.VersionID[this.versionIndex];\n this.channelMode = MpegFrameHeader.ChannelMode[this.channelModeIndex];\n this.codec = `MPEG ${this.version} Layer ${this.layer}`;\n // Calculate bitrate\n const bitrateInKbps = this.calcBitrate();\n if (!bitrateInKbps) {\n throw new MpegContentError('Cannot determine bit-rate');\n }\n this.bitrate = bitrateInKbps * 1000;\n // Calculate sampling rate\n this.samplingRate = this.calcSamplingRate();\n if (this.samplingRate == null) {\n throw new MpegContentError('Cannot determine sampling-rate');\n }\n }\n parseAdtsHeader(buf, off) {\n debug(\"layer=0 => ADTS\");\n this.version = this.versionIndex === 2 ? 4 : 2;\n this.container = `ADTS/MPEG-${this.version}`;\n const profileIndex = common.getBitAllignedNumber(buf, off + 2, 0, 2);\n this.codec = 'AAC';\n this.codecProfile = MPEG4.AudioObjectTypes[profileIndex];\n debug(`MPEG-4 audio-codec=${this.codec}`);\n const samplingFrequencyIndex = common.getBitAllignedNumber(buf, off + 2, 2, 4);\n this.samplingRate = MPEG4.SamplingFrequencies[samplingFrequencyIndex];\n debug(`sampling-rate=${this.samplingRate}`);\n const channelIndex = common.getBitAllignedNumber(buf, off + 2, 7, 3);\n this.mp4ChannelConfig = MPEG4_ChannelConfigurations[channelIndex];\n debug(`channel-config=${this.mp4ChannelConfig ? this.mp4ChannelConfig.join('+') : '?'}`);\n this.frameLength = common.getBitAllignedNumber(buf, off + 3, 6, 2) << 11;\n }\n calcBitrate() {\n if (this.bitrateIndex === 0x00 || // free\n this.bitrateIndex === 0x0F) { // reserved\n return null;\n }\n if (this.version && this.bitrateIndex) {\n const codecIndex = 10 * Math.floor(this.version) + this.layer;\n return MpegFrameHeader.bitrate_index[this.bitrateIndex][codecIndex];\n }\n return null;\n }\n calcSamplingRate() {\n if (this.sampRateFreqIndex === 0x03 || this.version === null || this.sampRateFreqIndex == null)\n return null; // 'reserved'\n return MpegFrameHeader.sampling_rate_freq_index[this.version][this.sampRateFreqIndex];\n }\n}\nMpegFrameHeader.SyncByte1 = 0xFF;\nMpegFrameHeader.SyncByte2 = 0xE0;\nMpegFrameHeader.VersionID = [2.5, null, 2, 1];\nMpegFrameHeader.LayerDescription = [0, 3, 2, 1];\nMpegFrameHeader.ChannelMode = ['stereo', 'joint_stereo', 'dual_channel', 'mono'];\nMpegFrameHeader.bitrate_index = {\n 1: { 11: 32, 12: 32, 13: 32, 21: 32, 22: 8, 23: 8 },\n 2: { 11: 64, 12: 48, 13: 40, 21: 48, 22: 16, 23: 16 },\n 3: { 11: 96, 12: 56, 13: 48, 21: 56, 22: 24, 23: 24 },\n 4: { 11: 128, 12: 64, 13: 56, 21: 64, 22: 32, 23: 32 },\n 5: { 11: 160, 12: 80, 13: 64, 21: 80, 22: 40, 23: 40 },\n 6: { 11: 192, 12: 96, 13: 80, 21: 96, 22: 48, 23: 48 },\n 7: { 11: 224, 12: 112, 13: 96, 21: 112, 22: 56, 23: 56 },\n 8: { 11: 256, 12: 128, 13: 112, 21: 128, 22: 64, 23: 64 },\n 9: { 11: 288, 12: 160, 13: 128, 21: 144, 22: 80, 23: 80 },\n 10: { 11: 320, 12: 192, 13: 160, 21: 160, 22: 96, 23: 96 },\n 11: { 11: 352, 12: 224, 13: 192, 21: 176, 22: 112, 23: 112 },\n 12: { 11: 384, 12: 256, 13: 224, 21: 192, 22: 128, 23: 128 },\n 13: { 11: 416, 12: 320, 13: 256, 21: 224, 22: 144, 23: 144 },\n 14: { 11: 448, 12: 384, 13: 320, 21: 256, 22: 160, 23: 160 }\n};\nMpegFrameHeader.sampling_rate_freq_index = {\n 1: { 0: 44100, 1: 48000, 2: 32000 },\n 2: { 0: 22050, 1: 24000, 2: 16000 },\n 2.5: { 0: 11025, 1: 12000, 2: 8000 }\n};\nMpegFrameHeader.samplesInFrameTable = [\n /* Layer I II III */\n [0, 384, 1152, 1152], // MPEG-1\n [0, 384, 1152, 576] // MPEG-2(.5\n];\n/**\n * MPEG Audio Layer I/II/III\n */\nconst FrameHeader = {\n len: 4,\n get: (buf, off) => {\n return new MpegFrameHeader(buf, off);\n }\n};\nfunction getVbrCodecProfile(vbrScale) {\n return `V${Math.floor((100 - vbrScale) / 10)}`;\n}\nexport class MpegParser extends AbstractID3Parser {\n constructor() {\n super(...arguments);\n this.frameCount = 0;\n this.syncFrameCount = -1;\n this.totalDataLength = 0;\n this.bitrates = [];\n this.offset = 0;\n this.frame_size = 0;\n this.calculateEofDuration = false;\n this.samplesPerFrame = null;\n this.buf_frame_header = new Uint8Array(4);\n /**\n * Number of bytes already parsed since beginning of stream / file\n */\n this.mpegOffset = null;\n this.syncPeek = {\n buf: new Uint8Array(maxPeekLen),\n len: 0\n };\n }\n /**\n * Called after ID3 headers have been parsed\n */\n async postId3v2Parse() {\n this.metadata.setFormat('lossless', false);\n this.metadata.setAudioOnly();\n try {\n let quit = false;\n while (!quit) {\n await this.sync();\n quit = await this.parseCommonMpegHeader();\n }\n }\n catch (err) {\n if (err instanceof EndOfStreamError) {\n debug(\"End-of-stream\");\n if (this.calculateEofDuration) {\n if (this.samplesPerFrame !== null) {\n const numberOfSamples = this.frameCount * this.samplesPerFrame;\n this.metadata.setFormat('numberOfSamples', numberOfSamples);\n if (this.metadata.format.sampleRate) {\n const duration = numberOfSamples / this.metadata.format.sampleRate;\n debug(`Calculate duration at EOF: ${duration} sec.`, duration);\n this.metadata.setFormat('duration', duration);\n }\n }\n }\n }\n else {\n throw err;\n }\n }\n }\n /**\n * Called after file has been fully parsed, this allows, if present, to exclude the ID3v1.1 header length\n */\n finalize() {\n const format = this.metadata.format;\n const hasID3v1 = !!this.metadata.native.ID3v1;\n if (this.mpegOffset !== null) {\n if (format.duration && this.tokenizer.fileInfo.size) {\n const mpegSize = this.tokenizer.fileInfo.size - this.mpegOffset - (hasID3v1 ? 128 : 0);\n if (format.codecProfile && format.codecProfile[0] === 'V') {\n this.metadata.setFormat('bitrate', mpegSize * 8 / format.duration);\n }\n }\n if (this.tokenizer.fileInfo.size && format.codecProfile === 'CBR') {\n const mpegSize = this.tokenizer.fileInfo.size - this.mpegOffset - (hasID3v1 ? 128 : 0);\n if (this.frame_size !== null && this.samplesPerFrame !== null) {\n const numberOfSamples = Math.round(mpegSize / this.frame_size) * this.samplesPerFrame;\n this.metadata.setFormat('numberOfSamples', numberOfSamples);\n if (format.sampleRate && !format.duration) {\n const duration = numberOfSamples / format.sampleRate;\n debug(\"Calculate CBR duration based on file size: %s\", duration);\n this.metadata.setFormat('duration', duration);\n }\n }\n }\n }\n }\n async sync() {\n let gotFirstSync = false;\n while (true) {\n let bo = 0;\n this.syncPeek.len = await this.tokenizer.peekBuffer(this.syncPeek.buf, { length: maxPeekLen, mayBeLess: true });\n if (this.syncPeek.len <= 163) {\n throw new EndOfStreamError();\n }\n while (true) {\n if (gotFirstSync && (this.syncPeek.buf[bo] & 0xE0) === 0xE0) {\n this.buf_frame_header[0] = MpegFrameHeader.SyncByte1;\n this.buf_frame_header[1] = this.syncPeek.buf[bo];\n await this.tokenizer.ignore(bo);\n debug(`Sync at offset=${this.tokenizer.position - 1}, frameCount=${this.frameCount}`);\n if (this.syncFrameCount === this.frameCount) {\n debug(`Re-synced MPEG stream, frameCount=${this.frameCount}`);\n this.frameCount = 0;\n this.frame_size = 0;\n }\n this.syncFrameCount = this.frameCount;\n return; // sync\n }\n gotFirstSync = false;\n bo = this.syncPeek.buf.indexOf(MpegFrameHeader.SyncByte1, bo);\n if (bo === -1) {\n if (this.syncPeek.len < this.syncPeek.buf.length) {\n throw new EndOfStreamError();\n }\n await this.tokenizer.ignore(this.syncPeek.len);\n break; // continue with next buffer\n }\n ++bo;\n gotFirstSync = true;\n }\n }\n }\n /**\n * Combined ADTS & MPEG (MP2 & MP3) header handling\n * @return {Promise} true if parser should quit\n */\n async parseCommonMpegHeader() {\n if (this.frameCount === 0) {\n this.mpegOffset = this.tokenizer.position - 1;\n }\n await this.tokenizer.peekBuffer(this.buf_frame_header.subarray(1), { length: 3 });\n let header;\n try {\n header = FrameHeader.get(this.buf_frame_header, 0);\n }\n catch (err) {\n await this.tokenizer.ignore(1);\n if (err instanceof Error) {\n this.metadata.addWarning(`Parse error: ${err.message}`);\n return false; // sync\n }\n throw err;\n }\n await this.tokenizer.ignore(3);\n this.metadata.setFormat('container', header.container);\n this.metadata.setFormat('codec', header.codec);\n this.metadata.setFormat('lossless', false);\n this.metadata.setFormat('sampleRate', header.samplingRate);\n this.frameCount++;\n return header.version !== null && header.version >= 2 && header.layer === 0 ? this.parseAdts(header) : this.parseAudioFrameHeader(header);\n }\n /**\n * @return {Promise} true if parser should quit\n */\n async parseAudioFrameHeader(header) {\n this.metadata.setFormat('numberOfChannels', header.channelMode === 'mono' ? 1 : 2);\n this.metadata.setFormat('bitrate', header.bitrate);\n if (this.frameCount < 20 * 10000) {\n debug('offset=%s MP%s bitrate=%s sample-rate=%s', this.tokenizer.position - 4, header.layer, header.bitrate, header.samplingRate);\n }\n const slot_size = header.calcSlotSize();\n if (slot_size === null) {\n throw new MpegContentError('invalid slot_size');\n }\n const samples_per_frame = header.calcSamplesPerFrame();\n debug(`samples_per_frame=${samples_per_frame}`);\n const bps = samples_per_frame / 8.0;\n if (header.bitrate !== null && header.samplingRate != null) {\n const fsize = (bps * header.bitrate / header.samplingRate) + ((header.padding) ? slot_size : 0);\n this.frame_size = Math.floor(fsize);\n }\n this.audioFrameHeader = header;\n if (header.bitrate !== null) {\n this.bitrates.push(header.bitrate);\n }\n // xtra header only exists in first frame\n if (this.frameCount === 1) {\n this.offset = FrameHeader.len;\n await this.skipSideInformation();\n return false;\n }\n if (this.frameCount === 4) {\n // the stream is CBR if the first 3 frame bitrates are the same\n if (this.areAllSame(this.bitrates)) {\n // Actual calculation will be done in finalize\n this.samplesPerFrame = samples_per_frame;\n this.metadata.setFormat('codecProfile', 'CBR');\n if (this.tokenizer.fileInfo.size)\n return true; // Will calculate duration based on the file size\n }\n else if (this.metadata.format.duration) {\n return true; // We already got the duration, stop processing MPEG stream any further\n }\n if (!this.options.duration) {\n return true; // Enforce duration not enabled, stop processing entire stream\n }\n }\n // once we know the file is VBR attach listener to end of\n // stream so we can do the duration calculation when we\n // have counted all the frames\n if (this.options.duration && this.frameCount === 4) {\n this.samplesPerFrame = samples_per_frame;\n this.calculateEofDuration = true;\n }\n this.offset = 4;\n if (header.isProtectedByCRC) {\n await this.parseCrc();\n return false;\n }\n await this.skipSideInformation();\n return false;\n }\n async parseAdts(header) {\n const buf = new Uint8Array(3);\n await this.tokenizer.readBuffer(buf);\n header.frameLength += common.getBitAllignedNumber(buf, 0, 0, 11);\n this.totalDataLength += header.frameLength;\n this.samplesPerFrame = 1024;\n if (header.samplingRate !== null) {\n const framesPerSec = header.samplingRate / this.samplesPerFrame;\n const bytesPerFrame = this.frameCount === 0 ? 0 : this.totalDataLength / this.frameCount;\n const bitrate = 8 * bytesPerFrame * framesPerSec + 0.5;\n this.metadata.setFormat('bitrate', bitrate);\n debug(`frame-count=${this.frameCount}, size=${header.frameLength} bytes, bit-rate=${bitrate}`);\n }\n await this.tokenizer.ignore(header.frameLength > 7 ? header.frameLength - 7 : 1);\n // Consume remaining header and frame data\n if (this.frameCount === 3) {\n this.metadata.setFormat('codecProfile', header.codecProfile);\n if (header.mp4ChannelConfig) {\n this.metadata.setFormat('numberOfChannels', header.mp4ChannelConfig.length);\n }\n if (this.options.duration) {\n this.calculateEofDuration = true;\n }\n else {\n return true; // Stop parsing after the third frame\n }\n }\n return false;\n }\n async parseCrc() {\n await this.tokenizer.ignore(Token.INT16_BE.len); // Ignore CRC\n this.offset += Token.INT16_BE.len;\n return this.skipSideInformation();\n }\n async skipSideInformation() {\n if (this.audioFrameHeader) {\n const sideinfo_length = this.audioFrameHeader.calculateSideInfoLength();\n if (sideinfo_length !== null) {\n await this.tokenizer.readToken(new Token.Uint8ArrayType(sideinfo_length));\n // side information\n this.offset += sideinfo_length;\n await this.readXtraInfoHeader();\n return;\n }\n }\n }\n async readXtraInfoHeader() {\n const headerTag = await this.tokenizer.readToken(InfoTagHeaderTag);\n this.offset += InfoTagHeaderTag.len; // 12\n switch (headerTag) {\n case 'Info':\n this.metadata.setFormat('codecProfile', 'CBR');\n return this.readXingInfoHeader();\n case 'Xing': {\n const infoTag = await this.readXingInfoHeader();\n if (infoTag.vbrScale !== null) {\n const codecProfile = getVbrCodecProfile(infoTag.vbrScale);\n this.metadata.setFormat('codecProfile', codecProfile);\n }\n return null;\n }\n case 'Xtra':\n // ToDo: ???\n break;\n case 'LAME': {\n const version = await this.tokenizer.readToken(LameEncoderVersion);\n if (this.frame_size !== null && this.frame_size >= this.offset + LameEncoderVersion.len) {\n this.offset += LameEncoderVersion.len;\n this.metadata.setFormat('tool', `LAME ${version}`);\n await this.skipFrameData(this.frame_size - this.offset);\n return null;\n }\n this.metadata.addWarning('Corrupt LAME header');\n break;\n }\n // ToDo: ???\n }\n // ToDo: promise duration???\n const frameDataLeft = this.frame_size - this.offset;\n if (frameDataLeft < 0) {\n this.metadata.addWarning(`Frame ${this.frameCount}corrupt: negative frameDataLeft`);\n }\n else {\n await this.skipFrameData(frameDataLeft);\n }\n return null;\n }\n /**\n * Ref: http://gabriel.mp3-tech.org/mp3infotag.html\n * @returns {Promise}\n */\n async readXingInfoHeader() {\n const offset = this.tokenizer.position;\n const infoTag = await readXingHeader(this.tokenizer);\n this.offset += this.tokenizer.position - offset;\n if (infoTag.lame) {\n this.metadata.setFormat('tool', `LAME ${common.stripNulls(infoTag.lame.version)}`);\n if (infoTag.lame.extended) {\n // this.metadata.setFormat('trackGain', infoTag.lame.extended.track_gain);\n this.metadata.setFormat('trackPeakLevel', infoTag.lame.extended.track_peak);\n if (infoTag.lame.extended.track_gain) {\n this.metadata.setFormat('trackGain', infoTag.lame.extended.track_gain.adjustment);\n }\n if (infoTag.lame.extended.album_gain) {\n this.metadata.setFormat('albumGain', infoTag.lame.extended.album_gain.adjustment);\n }\n this.metadata.setFormat('duration', infoTag.lame.extended.music_length / 1000);\n }\n }\n if (infoTag.streamSize && this.audioFrameHeader && infoTag.numFrames !== null) {\n const duration = this.audioFrameHeader.calcDuration(infoTag.numFrames);\n this.metadata.setFormat('duration', duration);\n debug('Get duration from Xing header: %s', this.metadata.format.duration);\n return infoTag;\n }\n // frames field is not present\n const frameDataLeft = this.frame_size - this.offset;\n await this.skipFrameData(frameDataLeft);\n return infoTag;\n }\n async skipFrameData(frameDataLeft) {\n if (frameDataLeft < 0)\n throw new MpegContentError('frame-data-left cannot be negative');\n await this.tokenizer.ignore(frameDataLeft);\n }\n areAllSame(array) {\n const first = array[0];\n return array.every(element => {\n return element === first;\n });\n }\n}\n","import * as common from '../common/Util.js';\n/**\n * https://github.com/Borewit/music-metadata/wiki/Replay-Gain-Data-Format#name-code\n */\nconst NameCode = {\n /**\n * not set\n */\n not_set: 0,\n /**\n * Radio Gain Adjustment\n */\n radio: 1,\n /**\n * Audiophile Gain Adjustment\n */\n audiophile: 2\n};\n/**\n * https://github.com/Borewit/music-metadata/wiki/Replay-Gain-Data-Format#originator-code\n */\nconst ReplayGainOriginator = {\n /**\n * Replay Gain unspecified\n */\n unspecified: 0,\n /**\n * Replay Gain pre-set by artist/producer/mastering engineer\n */\n engineer: 1,\n /**\n * Replay Gain set by user\n */\n user: 2,\n /**\n * Replay Gain determined automatically, as described on this site\n */\n automatic: 3,\n /**\n * Set by simple RMS average\n */\n rms_average: 4\n};\n/**\n * Replay Gain Data Format\n *\n * https://github.com/Borewit/music-metadata/wiki/Replay-Gain-Data-Format\n */\nexport const ReplayGain = {\n len: 2,\n get: (buf, off) => {\n const gain_type = common.getBitAllignedNumber(buf, off, 0, 3);\n const sign = common.getBitAllignedNumber(buf, off, 6, 1);\n const gain_adj = common.getBitAllignedNumber(buf, off, 7, 9) / 10.0;\n if (gain_type > 0) {\n return {\n type: common.getBitAllignedNumber(buf, off, 0, 3),\n origin: common.getBitAllignedNumber(buf, off, 3, 3),\n adjustment: (sign ? -gain_adj : gain_adj)\n };\n }\n return undefined;\n }\n};\n","/**\n * Extended Lame Header\n */\nimport * as Token from 'token-types';\nimport * as common from '../common/Util.js';\nimport { ReplayGain } from './ReplayGainDataFormat.js';\n/**\n * Info Tag\n * @link http://gabriel.mp3-tech.org/mp3infotag.html\n * @link https://github.com/quodlibet/mutagen/blob/abd58ee58772224334a18817c3fb31103572f70e/mutagen/mp3/_util.py#L112\n */\nexport const ExtendedLameHeader = {\n len: 27,\n get: (buf, off) => {\n const track_peak = Token.UINT32_BE.get(buf, off + 2);\n return {\n revision: common.getBitAllignedNumber(buf, off, 0, 4),\n vbr_method: common.getBitAllignedNumber(buf, off, 4, 4),\n lowpass_filter: 100 * Token.UINT8.get(buf, off + 1),\n track_peak: track_peak === 0 ? null : track_peak / 2 ** 23,\n track_gain: ReplayGain.get(buf, 6),\n album_gain: ReplayGain.get(buf, 8),\n music_length: Token.UINT32_BE.get(buf, off + 20),\n music_crc: Token.UINT8.get(buf, off + 24),\n header_crc: Token.UINT16_BE.get(buf, off + 24)\n };\n }\n};\n","import * as Token from 'token-types';\nimport * as util from '../common/Util.js';\nimport { ExtendedLameHeader } from './ExtendedLameHeader.js';\n/**\n * Info Tag: Xing, LAME\n */\nexport const InfoTagHeaderTag = new Token.StringType(4, 'ascii');\n/**\n * LAME TAG value\n * Did not find any official documentation for this\n * Value e.g.: \"3.98.4\"\n */\nexport const LameEncoderVersion = new Token.StringType(6, 'ascii');\n/**\n * Info Tag\n * Ref: http://gabriel.mp3-tech.org/mp3infotag.html\n */\nexport const XingHeaderFlags = {\n len: 4,\n get: (buf, off) => {\n return {\n frames: util.isBitSet(buf, off, 31),\n bytes: util.isBitSet(buf, off, 30),\n toc: util.isBitSet(buf, off, 29),\n vbrScale: util.isBitSet(buf, off, 28)\n };\n }\n};\n// /**\n// * XING Header Tag\n// * Ref: http://gabriel.mp3-tech.org/mp3infotag.html\n// */\nexport async function readXingHeader(tokenizer) {\n const flags = await tokenizer.readToken(XingHeaderFlags);\n const xingInfoTag = { numFrames: null, streamSize: null, vbrScale: null };\n if (flags.frames) {\n xingInfoTag.numFrames = await tokenizer.readToken(Token.UINT32_BE);\n }\n if (flags.bytes) {\n xingInfoTag.streamSize = await tokenizer.readToken(Token.UINT32_BE);\n }\n if (flags.toc) {\n xingInfoTag.toc = new Uint8Array(100);\n await tokenizer.readBuffer(xingInfoTag.toc);\n }\n if (flags.vbrScale) {\n xingInfoTag.vbrScale = await tokenizer.readToken(Token.UINT32_BE);\n }\n const lameTag = await tokenizer.peekToken(new Token.StringType(4, 'ascii'));\n if (lameTag === 'LAME') {\n await tokenizer.ignore(4);\n xingInfoTag.lame = {\n version: await tokenizer.readToken(new Token.StringType(5, 'ascii'))\n };\n const match = xingInfoTag.lame.version.match(/\\d+.\\d+/g);\n if (match !== null) {\n const majorMinorVersion = match[0]; // e.g. 3.97\n const version = majorMinorVersion.split('.').map(n => Number.parseInt(n, 10));\n if (version[0] >= 3 && version[1] >= 90) {\n xingInfoTag.lame.extended = await tokenizer.readToken(ExtendedLameHeader);\n }\n }\n }\n return xingInfoTag;\n}\n"],"mappings":"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","names":["import_debug","ReplayGain","__name","buf","off","gain_type","getBitAllignedNumber","sign","gain_adj","ExtendedLameHeader","__name","buf","off","track_peak","UINT32_BE","getBitAllignedNumber","UINT8","ReplayGain","UINT16_BE","InfoTagHeaderTag","StringType","LameEncoderVersion","XingHeaderFlags","__name","buf","off","isBitSet","readXingHeader","tokenizer","flags","xingInfoTag","UINT32_BE","match","version","n","ExtendedLameHeader","debug","initDebug","MpegContentError","makeUnexpectedFileContentError","__name","maxPeekLen","MPEG4","MPEG4_ChannelConfigurations","MpegFrameHeader","_MpegFrameHeader","buf","off","getBitAllignedNumber","isBitSet","numFrames","bitrateInKbps","profileIndex","samplingFrequencyIndex","channelIndex","codecIndex","FrameHeader","getVbrCodecProfile","vbrScale","MpegParser","AbstractID3Parser","quit","err","EndOfStreamError","numberOfSamples","duration","format","hasID3v1","mpegSize","gotFirstSync","bo","header","slot_size","samples_per_frame","bps","fsize","framesPerSec","bitrate","INT16_BE","sideinfo_length","Uint8ArrayType","headerTag","InfoTagHeaderTag","infoTag","codecProfile","version","LameEncoderVersion","frameDataLeft","offset","readXingHeader","stripNulls","array","first","element"],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse","file":"/MpegParser-O2RE6KKD.js.map"} \ No newline at end of file +{"version":3,"sources":["/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/mpeg/MpegParser.js","/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/mpeg/ReplayGainDataFormat.js","/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/mpeg/ExtendedLameHeader.js","/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/mpeg/XingTag.js"],"sourcesContent":["import * as Token from 'token-types';\nimport { EndOfStreamError } from 'strtok3';\nimport initDebug from 'debug';\nimport * as common from '../common/Util.js';\nimport { AbstractID3Parser } from '../id3v2/AbstractID3Parser.js';\nimport { InfoTagHeaderTag, LameEncoderVersion, readXingHeader } from './XingTag.js';\nimport { makeUnexpectedFileContentError } from '../ParseError.js';\nconst debug = initDebug('music-metadata:parser:mpeg');\nexport class MpegContentError extends makeUnexpectedFileContentError('MPEG') {\n}\n/**\n * Cache buffer size used for searching synchronization preabmle\n */\nconst maxPeekLen = 1024;\n/**\n * MPEG-4 Audio definitions\n * Ref: https://wiki.multimedia.cx/index.php/MPEG-4_Audio\n */\nconst MPEG4 = {\n /**\n * Audio Object Types\n */\n AudioObjectTypes: [\n 'AAC Main',\n 'AAC LC', // Low Complexity\n 'AAC SSR', // Scalable Sample Rate\n 'AAC LTP' // Long Term Prediction\n ],\n /**\n * Sampling Frequencies\n * https://wiki.multimedia.cx/index.php/MPEG-4_Audio#Sampling_Frequencies\n */\n SamplingFrequencies: [\n 96000, 88200, 64000, 48000, 44100, 32000, 24000, 22050, 16000, 12000, 11025, 8000, 7350, null, null, null\n ]\n /**\n * Channel Configurations\n */\n};\nconst MPEG4_ChannelConfigurations = [\n undefined,\n ['front-center'],\n ['front-left', 'front-right'],\n ['front-center', 'front-left', 'front-right'],\n ['front-center', 'front-left', 'front-right', 'back-center'],\n ['front-center', 'front-left', 'front-right', 'back-left', 'back-right'],\n ['front-center', 'front-left', 'front-right', 'back-left', 'back-right', 'LFE-channel'],\n ['front-center', 'front-left', 'front-right', 'side-left', 'side-right', 'back-left', 'back-right', 'LFE-channel']\n];\n/**\n * MPEG Audio Layer I/II/III frame header\n * Ref: https://www.mp3-tech.org/programmer/frame_header.html\n * Bit layout: AAAAAAAA AAABBCCD EEEEFFGH IIJJKLMM\n * Ref: https://wiki.multimedia.cx/index.php/ADTS\n */\nclass MpegFrameHeader {\n constructor(buf, off) {\n // E(15,12): Bitrate index\n this.bitrateIndex = null;\n // F(11,10): Sampling rate frequency index\n this.sampRateFreqIndex = null;\n // G(9): Padding bit\n this.padding = null;\n // H(8): Private bit\n this.privateBit = null;\n // I(7,6): Channel Mode\n this.channelModeIndex = null;\n // J(5,4): Mode extension (Only used in Joint stereo)\n this.modeExtension = null;\n // L(2): Original\n this.isOriginalMedia = null;\n this.version = null;\n this.bitrate = null;\n this.samplingRate = null;\n this.frameLength = 0;\n // B(20,19): MPEG Audio versionIndex ID\n this.versionIndex = common.getBitAllignedNumber(buf, off + 1, 3, 2);\n // C(18,17): Layer description\n this.layer = MpegFrameHeader.LayerDescription[common.getBitAllignedNumber(buf, off + 1, 5, 2)];\n if (this.versionIndex > 1 && this.layer === 0) {\n this.parseAdtsHeader(buf, off); // Audio Data Transport Stream (ADTS)\n }\n else {\n this.parseMpegHeader(buf, off); // Conventional MPEG header\n }\n // D(16): Protection bit (if true 16-bit CRC follows header)\n this.isProtectedByCRC = !common.isBitSet(buf, off + 1, 7);\n }\n calcDuration(numFrames) {\n return this.samplingRate == null ? null : (numFrames * this.calcSamplesPerFrame() / this.samplingRate);\n }\n calcSamplesPerFrame() {\n return MpegFrameHeader.samplesInFrameTable[this.version === 1 ? 0 : 1][this.layer];\n }\n calculateSideInfoLength() {\n if (this.layer !== 3)\n return 2;\n if (this.channelModeIndex === 3) {\n // mono\n if (this.version === 1) {\n return 17;\n }\n if (this.version === 2 || this.version === 2.5) {\n return 9;\n }\n }\n else {\n if (this.version === 1) {\n return 32;\n }\n if (this.version === 2 || this.version === 2.5) {\n return 17;\n }\n }\n return null;\n }\n calcSlotSize() {\n return [null, 4, 1, 1][this.layer];\n }\n parseMpegHeader(buf, off) {\n this.container = 'MPEG';\n // E(15,12): Bitrate index\n this.bitrateIndex = common.getBitAllignedNumber(buf, off + 2, 0, 4);\n // F(11,10): Sampling rate frequency index\n this.sampRateFreqIndex = common.getBitAllignedNumber(buf, off + 2, 4, 2);\n // G(9): Padding bit\n this.padding = common.isBitSet(buf, off + 2, 6);\n // H(8): Private bit\n this.privateBit = common.isBitSet(buf, off + 2, 7);\n // I(7,6): Channel Mode\n this.channelModeIndex = common.getBitAllignedNumber(buf, off + 3, 0, 2);\n // J(5,4): Mode extension (Only used in Joint stereo)\n this.modeExtension = common.getBitAllignedNumber(buf, off + 3, 2, 2);\n // K(3): Copyright\n this.isCopyrighted = common.isBitSet(buf, off + 3, 4);\n // L(2): Original\n this.isOriginalMedia = common.isBitSet(buf, off + 3, 5);\n // M(3): The original bit indicates, if it is set, that the frame is located on its original media.\n this.emphasis = common.getBitAllignedNumber(buf, off + 3, 7, 2);\n this.version = MpegFrameHeader.VersionID[this.versionIndex];\n this.channelMode = MpegFrameHeader.ChannelMode[this.channelModeIndex];\n this.codec = `MPEG ${this.version} Layer ${this.layer}`;\n // Calculate bitrate\n const bitrateInKbps = this.calcBitrate();\n if (!bitrateInKbps) {\n throw new MpegContentError('Cannot determine bit-rate');\n }\n this.bitrate = bitrateInKbps * 1000;\n // Calculate sampling rate\n this.samplingRate = this.calcSamplingRate();\n if (this.samplingRate == null) {\n throw new MpegContentError('Cannot determine sampling-rate');\n }\n }\n parseAdtsHeader(buf, off) {\n debug(\"layer=0 => ADTS\");\n this.version = this.versionIndex === 2 ? 4 : 2;\n this.container = `ADTS/MPEG-${this.version}`;\n const profileIndex = common.getBitAllignedNumber(buf, off + 2, 0, 2);\n this.codec = 'AAC';\n this.codecProfile = MPEG4.AudioObjectTypes[profileIndex];\n debug(`MPEG-4 audio-codec=${this.codec}`);\n const samplingFrequencyIndex = common.getBitAllignedNumber(buf, off + 2, 2, 4);\n this.samplingRate = MPEG4.SamplingFrequencies[samplingFrequencyIndex];\n debug(`sampling-rate=${this.samplingRate}`);\n const channelIndex = common.getBitAllignedNumber(buf, off + 2, 7, 3);\n this.mp4ChannelConfig = MPEG4_ChannelConfigurations[channelIndex];\n debug(`channel-config=${this.mp4ChannelConfig ? this.mp4ChannelConfig.join('+') : '?'}`);\n this.frameLength = common.getBitAllignedNumber(buf, off + 3, 6, 2) << 11;\n }\n calcBitrate() {\n if (this.bitrateIndex === 0x00 || // free\n this.bitrateIndex === 0x0F) { // reserved\n return null;\n }\n if (this.version && this.bitrateIndex) {\n const codecIndex = 10 * Math.floor(this.version) + this.layer;\n return MpegFrameHeader.bitrate_index[this.bitrateIndex][codecIndex];\n }\n return null;\n }\n calcSamplingRate() {\n if (this.sampRateFreqIndex === 0x03 || this.version === null || this.sampRateFreqIndex == null)\n return null; // 'reserved'\n return MpegFrameHeader.sampling_rate_freq_index[this.version][this.sampRateFreqIndex];\n }\n}\nMpegFrameHeader.SyncByte1 = 0xFF;\nMpegFrameHeader.SyncByte2 = 0xE0;\nMpegFrameHeader.VersionID = [2.5, null, 2, 1];\nMpegFrameHeader.LayerDescription = [0, 3, 2, 1];\nMpegFrameHeader.ChannelMode = ['stereo', 'joint_stereo', 'dual_channel', 'mono'];\nMpegFrameHeader.bitrate_index = {\n 1: { 11: 32, 12: 32, 13: 32, 21: 32, 22: 8, 23: 8 },\n 2: { 11: 64, 12: 48, 13: 40, 21: 48, 22: 16, 23: 16 },\n 3: { 11: 96, 12: 56, 13: 48, 21: 56, 22: 24, 23: 24 },\n 4: { 11: 128, 12: 64, 13: 56, 21: 64, 22: 32, 23: 32 },\n 5: { 11: 160, 12: 80, 13: 64, 21: 80, 22: 40, 23: 40 },\n 6: { 11: 192, 12: 96, 13: 80, 21: 96, 22: 48, 23: 48 },\n 7: { 11: 224, 12: 112, 13: 96, 21: 112, 22: 56, 23: 56 },\n 8: { 11: 256, 12: 128, 13: 112, 21: 128, 22: 64, 23: 64 },\n 9: { 11: 288, 12: 160, 13: 128, 21: 144, 22: 80, 23: 80 },\n 10: { 11: 320, 12: 192, 13: 160, 21: 160, 22: 96, 23: 96 },\n 11: { 11: 352, 12: 224, 13: 192, 21: 176, 22: 112, 23: 112 },\n 12: { 11: 384, 12: 256, 13: 224, 21: 192, 22: 128, 23: 128 },\n 13: { 11: 416, 12: 320, 13: 256, 21: 224, 22: 144, 23: 144 },\n 14: { 11: 448, 12: 384, 13: 320, 21: 256, 22: 160, 23: 160 }\n};\nMpegFrameHeader.sampling_rate_freq_index = {\n 1: { 0: 44100, 1: 48000, 2: 32000 },\n 2: { 0: 22050, 1: 24000, 2: 16000 },\n 2.5: { 0: 11025, 1: 12000, 2: 8000 }\n};\nMpegFrameHeader.samplesInFrameTable = [\n /* Layer I II III */\n [0, 384, 1152, 1152], // MPEG-1\n [0, 384, 1152, 576] // MPEG-2(.5\n];\n/**\n * MPEG Audio Layer I/II/III\n */\nconst FrameHeader = {\n len: 4,\n get: (buf, off) => {\n return new MpegFrameHeader(buf, off);\n }\n};\nfunction getVbrCodecProfile(vbrScale) {\n return `V${Math.floor((100 - vbrScale) / 10)}`;\n}\nexport class MpegParser extends AbstractID3Parser {\n constructor() {\n super(...arguments);\n this.frameCount = 0;\n this.syncFrameCount = -1;\n this.totalDataLength = 0;\n this.bitrates = [];\n this.offset = 0;\n this.frame_size = 0;\n this.calculateEofDuration = false;\n this.samplesPerFrame = null;\n this.buf_frame_header = new Uint8Array(4);\n /**\n * Number of bytes already parsed since beginning of stream / file\n */\n this.mpegOffset = null;\n this.syncPeek = {\n buf: new Uint8Array(maxPeekLen),\n len: 0\n };\n }\n /**\n * Called after ID3 headers have been parsed\n */\n async postId3v2Parse() {\n this.metadata.setFormat('lossless', false);\n this.metadata.setAudioOnly();\n try {\n let quit = false;\n while (!quit) {\n await this.sync();\n quit = await this.parseCommonMpegHeader();\n }\n }\n catch (err) {\n if (err instanceof EndOfStreamError) {\n debug(\"End-of-stream\");\n if (this.calculateEofDuration) {\n if (this.samplesPerFrame !== null) {\n const numberOfSamples = this.frameCount * this.samplesPerFrame;\n this.metadata.setFormat('numberOfSamples', numberOfSamples);\n if (this.metadata.format.sampleRate) {\n const duration = numberOfSamples / this.metadata.format.sampleRate;\n debug(`Calculate duration at EOF: ${duration} sec.`, duration);\n this.metadata.setFormat('duration', duration);\n }\n }\n }\n }\n else {\n throw err;\n }\n }\n }\n /**\n * Called after file has been fully parsed, this allows, if present, to exclude the ID3v1.1 header length\n */\n finalize() {\n const format = this.metadata.format;\n const hasID3v1 = !!this.metadata.native.ID3v1;\n if (this.mpegOffset !== null) {\n if (format.duration && this.tokenizer.fileInfo.size) {\n const mpegSize = this.tokenizer.fileInfo.size - this.mpegOffset - (hasID3v1 ? 128 : 0);\n if (format.codecProfile && format.codecProfile[0] === 'V') {\n this.metadata.setFormat('bitrate', mpegSize * 8 / format.duration);\n }\n }\n if (this.tokenizer.fileInfo.size && format.codecProfile === 'CBR') {\n const mpegSize = this.tokenizer.fileInfo.size - this.mpegOffset - (hasID3v1 ? 128 : 0);\n if (this.frame_size !== null && this.samplesPerFrame !== null) {\n const numberOfSamples = Math.round(mpegSize / this.frame_size) * this.samplesPerFrame;\n this.metadata.setFormat('numberOfSamples', numberOfSamples);\n if (format.sampleRate && !format.duration) {\n const duration = numberOfSamples / format.sampleRate;\n debug(\"Calculate CBR duration based on file size: %s\", duration);\n this.metadata.setFormat('duration', duration);\n }\n }\n }\n }\n }\n async sync() {\n let gotFirstSync = false;\n while (true) {\n let bo = 0;\n this.syncPeek.len = await this.tokenizer.peekBuffer(this.syncPeek.buf, { length: maxPeekLen, mayBeLess: true });\n if (this.syncPeek.len <= 163) {\n throw new EndOfStreamError();\n }\n while (true) {\n if (gotFirstSync && (this.syncPeek.buf[bo] & 0xE0) === 0xE0) {\n this.buf_frame_header[0] = MpegFrameHeader.SyncByte1;\n this.buf_frame_header[1] = this.syncPeek.buf[bo];\n await this.tokenizer.ignore(bo);\n debug(`Sync at offset=${this.tokenizer.position - 1}, frameCount=${this.frameCount}`);\n if (this.syncFrameCount === this.frameCount) {\n debug(`Re-synced MPEG stream, frameCount=${this.frameCount}`);\n this.frameCount = 0;\n this.frame_size = 0;\n }\n this.syncFrameCount = this.frameCount;\n return; // sync\n }\n gotFirstSync = false;\n bo = this.syncPeek.buf.indexOf(MpegFrameHeader.SyncByte1, bo);\n if (bo === -1) {\n if (this.syncPeek.len < this.syncPeek.buf.length) {\n throw new EndOfStreamError();\n }\n await this.tokenizer.ignore(this.syncPeek.len);\n break; // continue with next buffer\n }\n ++bo;\n gotFirstSync = true;\n }\n }\n }\n /**\n * Combined ADTS & MPEG (MP2 & MP3) header handling\n * @return {Promise} true if parser should quit\n */\n async parseCommonMpegHeader() {\n if (this.frameCount === 0) {\n this.mpegOffset = this.tokenizer.position - 1;\n }\n await this.tokenizer.peekBuffer(this.buf_frame_header.subarray(1), { length: 3 });\n let header;\n try {\n header = FrameHeader.get(this.buf_frame_header, 0);\n }\n catch (err) {\n await this.tokenizer.ignore(1);\n if (err instanceof Error) {\n this.metadata.addWarning(`Parse error: ${err.message}`);\n return false; // sync\n }\n throw err;\n }\n await this.tokenizer.ignore(3);\n this.metadata.setFormat('container', header.container);\n this.metadata.setFormat('codec', header.codec);\n this.metadata.setFormat('lossless', false);\n this.metadata.setFormat('sampleRate', header.samplingRate);\n this.frameCount++;\n return header.version !== null && header.version >= 2 && header.layer === 0 ? this.parseAdts(header) : this.parseAudioFrameHeader(header);\n }\n /**\n * @return {Promise} true if parser should quit\n */\n async parseAudioFrameHeader(header) {\n this.metadata.setFormat('numberOfChannels', header.channelMode === 'mono' ? 1 : 2);\n this.metadata.setFormat('bitrate', header.bitrate);\n if (this.frameCount < 20 * 10000) {\n debug('offset=%s MP%s bitrate=%s sample-rate=%s', this.tokenizer.position - 4, header.layer, header.bitrate, header.samplingRate);\n }\n const slot_size = header.calcSlotSize();\n if (slot_size === null) {\n throw new MpegContentError('invalid slot_size');\n }\n const samples_per_frame = header.calcSamplesPerFrame();\n debug(`samples_per_frame=${samples_per_frame}`);\n const bps = samples_per_frame / 8.0;\n if (header.bitrate !== null && header.samplingRate != null) {\n const fsize = (bps * header.bitrate / header.samplingRate) + ((header.padding) ? slot_size : 0);\n this.frame_size = Math.floor(fsize);\n }\n this.audioFrameHeader = header;\n if (header.bitrate !== null) {\n this.bitrates.push(header.bitrate);\n }\n // xtra header only exists in first frame\n if (this.frameCount === 1) {\n this.offset = FrameHeader.len;\n await this.skipSideInformation();\n return false;\n }\n if (this.frameCount === 4) {\n // the stream is CBR if the first 3 frame bitrates are the same\n if (this.areAllSame(this.bitrates)) {\n // Actual calculation will be done in finalize\n this.samplesPerFrame = samples_per_frame;\n this.metadata.setFormat('codecProfile', 'CBR');\n if (this.tokenizer.fileInfo.size)\n return true; // Will calculate duration based on the file size\n }\n else if (this.metadata.format.duration) {\n return true; // We already got the duration, stop processing MPEG stream any further\n }\n if (!this.options.duration) {\n return true; // Enforce duration not enabled, stop processing entire stream\n }\n }\n // once we know the file is VBR attach listener to end of\n // stream so we can do the duration calculation when we\n // have counted all the frames\n if (this.options.duration && this.frameCount === 4) {\n this.samplesPerFrame = samples_per_frame;\n this.calculateEofDuration = true;\n }\n this.offset = 4;\n if (header.isProtectedByCRC) {\n await this.parseCrc();\n return false;\n }\n await this.skipSideInformation();\n return false;\n }\n async parseAdts(header) {\n const buf = new Uint8Array(3);\n await this.tokenizer.readBuffer(buf);\n header.frameLength += common.getBitAllignedNumber(buf, 0, 0, 11);\n this.totalDataLength += header.frameLength;\n this.samplesPerFrame = 1024;\n if (header.samplingRate !== null) {\n const framesPerSec = header.samplingRate / this.samplesPerFrame;\n const bytesPerFrame = this.frameCount === 0 ? 0 : this.totalDataLength / this.frameCount;\n const bitrate = 8 * bytesPerFrame * framesPerSec + 0.5;\n this.metadata.setFormat('bitrate', bitrate);\n debug(`frame-count=${this.frameCount}, size=${header.frameLength} bytes, bit-rate=${bitrate}`);\n }\n await this.tokenizer.ignore(header.frameLength > 7 ? header.frameLength - 7 : 1);\n // Consume remaining header and frame data\n if (this.frameCount === 3) {\n this.metadata.setFormat('codecProfile', header.codecProfile);\n if (header.mp4ChannelConfig) {\n this.metadata.setFormat('numberOfChannels', header.mp4ChannelConfig.length);\n }\n if (this.options.duration) {\n this.calculateEofDuration = true;\n }\n else {\n return true; // Stop parsing after the third frame\n }\n }\n return false;\n }\n async parseCrc() {\n await this.tokenizer.ignore(Token.INT16_BE.len); // Ignore CRC\n this.offset += Token.INT16_BE.len;\n return this.skipSideInformation();\n }\n async skipSideInformation() {\n if (this.audioFrameHeader) {\n const sideinfo_length = this.audioFrameHeader.calculateSideInfoLength();\n if (sideinfo_length !== null) {\n await this.tokenizer.readToken(new Token.Uint8ArrayType(sideinfo_length));\n // side information\n this.offset += sideinfo_length;\n await this.readXtraInfoHeader();\n return;\n }\n }\n }\n async readXtraInfoHeader() {\n const headerTag = await this.tokenizer.readToken(InfoTagHeaderTag);\n this.offset += InfoTagHeaderTag.len; // 12\n switch (headerTag) {\n case 'Info':\n this.metadata.setFormat('codecProfile', 'CBR');\n return this.readXingInfoHeader();\n case 'Xing': {\n const infoTag = await this.readXingInfoHeader();\n if (infoTag.vbrScale !== null) {\n const codecProfile = getVbrCodecProfile(infoTag.vbrScale);\n this.metadata.setFormat('codecProfile', codecProfile);\n }\n return null;\n }\n case 'Xtra':\n // ToDo: ???\n break;\n case 'LAME': {\n const version = await this.tokenizer.readToken(LameEncoderVersion);\n if (this.frame_size !== null && this.frame_size >= this.offset + LameEncoderVersion.len) {\n this.offset += LameEncoderVersion.len;\n this.metadata.setFormat('tool', `LAME ${version}`);\n await this.skipFrameData(this.frame_size - this.offset);\n return null;\n }\n this.metadata.addWarning('Corrupt LAME header');\n break;\n }\n // ToDo: ???\n }\n // ToDo: promise duration???\n const frameDataLeft = this.frame_size - this.offset;\n if (frameDataLeft < 0) {\n this.metadata.addWarning(`Frame ${this.frameCount}corrupt: negative frameDataLeft`);\n }\n else {\n await this.skipFrameData(frameDataLeft);\n }\n return null;\n }\n /**\n * Ref: http://gabriel.mp3-tech.org/mp3infotag.html\n * @returns {Promise}\n */\n async readXingInfoHeader() {\n const offset = this.tokenizer.position;\n const infoTag = await readXingHeader(this.tokenizer);\n this.offset += this.tokenizer.position - offset;\n if (infoTag.lame) {\n this.metadata.setFormat('tool', `LAME ${common.stripNulls(infoTag.lame.version)}`);\n if (infoTag.lame.extended) {\n // this.metadata.setFormat('trackGain', infoTag.lame.extended.track_gain);\n this.metadata.setFormat('trackPeakLevel', infoTag.lame.extended.track_peak);\n if (infoTag.lame.extended.track_gain) {\n this.metadata.setFormat('trackGain', infoTag.lame.extended.track_gain.adjustment);\n }\n if (infoTag.lame.extended.album_gain) {\n this.metadata.setFormat('albumGain', infoTag.lame.extended.album_gain.adjustment);\n }\n this.metadata.setFormat('duration', infoTag.lame.extended.music_length / 1000);\n }\n }\n if (infoTag.streamSize && this.audioFrameHeader && infoTag.numFrames !== null) {\n const duration = this.audioFrameHeader.calcDuration(infoTag.numFrames);\n this.metadata.setFormat('duration', duration);\n debug('Get duration from Xing header: %s', this.metadata.format.duration);\n return infoTag;\n }\n // frames field is not present\n const frameDataLeft = this.frame_size - this.offset;\n await this.skipFrameData(frameDataLeft);\n return infoTag;\n }\n async skipFrameData(frameDataLeft) {\n if (frameDataLeft < 0)\n throw new MpegContentError('frame-data-left cannot be negative');\n await this.tokenizer.ignore(frameDataLeft);\n }\n areAllSame(array) {\n const first = array[0];\n return array.every(element => {\n return element === first;\n });\n }\n}\n","import * as common from '../common/Util.js';\n/**\n * https://github.com/Borewit/music-metadata/wiki/Replay-Gain-Data-Format#name-code\n */\nconst NameCode = {\n /**\n * not set\n */\n not_set: 0,\n /**\n * Radio Gain Adjustment\n */\n radio: 1,\n /**\n * Audiophile Gain Adjustment\n */\n audiophile: 2\n};\n/**\n * https://github.com/Borewit/music-metadata/wiki/Replay-Gain-Data-Format#originator-code\n */\nconst ReplayGainOriginator = {\n /**\n * Replay Gain unspecified\n */\n unspecified: 0,\n /**\n * Replay Gain pre-set by artist/producer/mastering engineer\n */\n engineer: 1,\n /**\n * Replay Gain set by user\n */\n user: 2,\n /**\n * Replay Gain determined automatically, as described on this site\n */\n automatic: 3,\n /**\n * Set by simple RMS average\n */\n rms_average: 4\n};\n/**\n * Replay Gain Data Format\n *\n * https://github.com/Borewit/music-metadata/wiki/Replay-Gain-Data-Format\n */\nexport const ReplayGain = {\n len: 2,\n get: (buf, off) => {\n const gain_type = common.getBitAllignedNumber(buf, off, 0, 3);\n const sign = common.getBitAllignedNumber(buf, off, 6, 1);\n const gain_adj = common.getBitAllignedNumber(buf, off, 7, 9) / 10.0;\n if (gain_type > 0) {\n return {\n type: common.getBitAllignedNumber(buf, off, 0, 3),\n origin: common.getBitAllignedNumber(buf, off, 3, 3),\n adjustment: (sign ? -gain_adj : gain_adj)\n };\n }\n return undefined;\n }\n};\n","/**\n * Extended Lame Header\n */\nimport * as Token from 'token-types';\nimport * as common from '../common/Util.js';\nimport { ReplayGain } from './ReplayGainDataFormat.js';\n/**\n * Info Tag\n * @link http://gabriel.mp3-tech.org/mp3infotag.html\n * @link https://github.com/quodlibet/mutagen/blob/abd58ee58772224334a18817c3fb31103572f70e/mutagen/mp3/_util.py#L112\n */\nexport const ExtendedLameHeader = {\n len: 27,\n get: (buf, off) => {\n const track_peak = Token.UINT32_BE.get(buf, off + 2);\n return {\n revision: common.getBitAllignedNumber(buf, off, 0, 4),\n vbr_method: common.getBitAllignedNumber(buf, off, 4, 4),\n lowpass_filter: 100 * Token.UINT8.get(buf, off + 1),\n track_peak: track_peak === 0 ? null : track_peak / 2 ** 23,\n track_gain: ReplayGain.get(buf, 6),\n album_gain: ReplayGain.get(buf, 8),\n music_length: Token.UINT32_BE.get(buf, off + 20),\n music_crc: Token.UINT8.get(buf, off + 24),\n header_crc: Token.UINT16_BE.get(buf, off + 24)\n };\n }\n};\n","import * as Token from 'token-types';\nimport * as util from '../common/Util.js';\nimport { ExtendedLameHeader } from './ExtendedLameHeader.js';\n/**\n * Info Tag: Xing, LAME\n */\nexport const InfoTagHeaderTag = new Token.StringType(4, 'ascii');\n/**\n * LAME TAG value\n * Did not find any official documentation for this\n * Value e.g.: \"3.98.4\"\n */\nexport const LameEncoderVersion = new Token.StringType(6, 'ascii');\n/**\n * Info Tag\n * Ref: http://gabriel.mp3-tech.org/mp3infotag.html\n */\nexport const XingHeaderFlags = {\n len: 4,\n get: (buf, off) => {\n return {\n frames: util.isBitSet(buf, off, 31),\n bytes: util.isBitSet(buf, off, 30),\n toc: util.isBitSet(buf, off, 29),\n vbrScale: util.isBitSet(buf, off, 28)\n };\n }\n};\n// /**\n// * XING Header Tag\n// * Ref: http://gabriel.mp3-tech.org/mp3infotag.html\n// */\nexport async function readXingHeader(tokenizer) {\n const flags = await tokenizer.readToken(XingHeaderFlags);\n const xingInfoTag = { numFrames: null, streamSize: null, vbrScale: null };\n if (flags.frames) {\n xingInfoTag.numFrames = await tokenizer.readToken(Token.UINT32_BE);\n }\n if (flags.bytes) {\n xingInfoTag.streamSize = await tokenizer.readToken(Token.UINT32_BE);\n }\n if (flags.toc) {\n xingInfoTag.toc = new Uint8Array(100);\n await tokenizer.readBuffer(xingInfoTag.toc);\n }\n if (flags.vbrScale) {\n xingInfoTag.vbrScale = await tokenizer.readToken(Token.UINT32_BE);\n }\n const lameTag = await tokenizer.peekToken(new Token.StringType(4, 'ascii'));\n if (lameTag === 'LAME') {\n await tokenizer.ignore(4);\n xingInfoTag.lame = {\n version: await tokenizer.readToken(new Token.StringType(5, 'ascii'))\n };\n const match = xingInfoTag.lame.version.match(/\\d+.\\d+/g);\n if (match !== null) {\n const majorMinorVersion = match[0]; // e.g. 3.97\n const version = majorMinorVersion.split('.').map(n => Number.parseInt(n, 10));\n if (version[0] >= 3 && version[1] >= 90) {\n xingInfoTag.lame.extended = await tokenizer.readToken(ExtendedLameHeader);\n }\n }\n }\n return xingInfoTag;\n}\n"],"mappings":"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","names":["import_debug","ReplayGain","__name","buf","off","gain_type","getBitAllignedNumber","sign","gain_adj","ExtendedLameHeader","__name","buf","off","track_peak","UINT32_BE","getBitAllignedNumber","UINT8","ReplayGain","UINT16_BE","InfoTagHeaderTag","StringType","LameEncoderVersion","XingHeaderFlags","__name","buf","off","isBitSet","readXingHeader","tokenizer","flags","xingInfoTag","UINT32_BE","match","version","n","ExtendedLameHeader","debug","initDebug","MpegContentError","makeUnexpectedFileContentError","__name","maxPeekLen","MPEG4","MPEG4_ChannelConfigurations","MpegFrameHeader","_MpegFrameHeader","buf","off","getBitAllignedNumber","isBitSet","numFrames","bitrateInKbps","profileIndex","samplingFrequencyIndex","channelIndex","codecIndex","FrameHeader","getVbrCodecProfile","vbrScale","MpegParser","AbstractID3Parser","quit","err","EndOfStreamError","numberOfSamples","duration","format","hasID3v1","mpegSize","gotFirstSync","bo","header","slot_size","samples_per_frame","bps","fsize","framesPerSec","bitrate","INT16_BE","sideinfo_length","Uint8ArrayType","headerTag","InfoTagHeaderTag","infoTag","codecProfile","version","LameEncoderVersion","frameDataLeft","offset","readXingHeader","stripNulls","array","first","element"],"sourceRoot":"","file":"/MpegParser-O2RE6KKD.js.map"} \ No newline at end of file diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/MusepackParser-K4V5PCYW.js b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/MusepackParser-K4V5PCYW.js similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/MusepackParser-K4V5PCYW.js rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/MusepackParser-K4V5PCYW.js diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/MusepackParser-K4V5PCYW.js.br b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/MusepackParser-K4V5PCYW.js.br similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/MusepackParser-K4V5PCYW.js.br rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/MusepackParser-K4V5PCYW.js.br diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/MusepackParser-K4V5PCYW.js.map b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/MusepackParser-K4V5PCYW.js.map similarity index 99% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/MusepackParser-K4V5PCYW.js.map rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/MusepackParser-K4V5PCYW.js.map index 3750f6b7..42d09995 100644 --- a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/MusepackParser-K4V5PCYW.js.map +++ b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/MusepackParser-K4V5PCYW.js.map @@ -1 +1 @@ -{"version":3,"sources":["/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/musepack/MusepackParser.js","/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/musepack/sv8/MpcSv8Parser.js","/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/musepack/sv8/StreamVersion8.js","/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/musepack/MusepackConentError.js","/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/musepack/sv7/MpcSv7Parser.js","/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/musepack/sv7/BitReader.js","/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/musepack/sv7/StreamVersion7.js"],"sourcesContent":["import initDebug from 'debug';\nimport * as Token from 'token-types';\nimport { AbstractID3Parser } from '../id3v2/AbstractID3Parser.js';\nimport { MpcSv8Parser } from './sv8/MpcSv8Parser.js';\nimport { MpcSv7Parser } from './sv7/MpcSv7Parser.js';\nimport { MusepackContentError } from './MusepackConentError.js';\nconst debug = initDebug('music-metadata:parser:musepack');\nexport class MusepackParser extends AbstractID3Parser {\n async postId3v2Parse() {\n const signature = await this.tokenizer.peekToken(new Token.StringType(3, 'latin1'));\n let mpcParser;\n switch (signature) {\n case 'MP+': {\n debug('Stream-version 7');\n mpcParser = new MpcSv7Parser(this.metadata, this.tokenizer, this.options);\n break;\n }\n case 'MPC': {\n debug('Stream-version 8');\n mpcParser = new MpcSv8Parser(this.metadata, this.tokenizer, this.options);\n break;\n }\n default: {\n throw new MusepackContentError('Invalid signature prefix');\n }\n }\n this.metadata.setAudioOnly();\n return mpcParser.parse();\n }\n}\n","import initDebug from 'debug';\nimport { BasicParser } from '../../common/BasicParser.js';\nimport { tryParseApeHeader } from '../../apev2/APEv2Parser.js';\nimport { FourCcToken } from '../../common/FourCC.js';\nimport * as SV8 from './StreamVersion8.js';\nimport { MusepackContentError } from '../MusepackConentError.js';\nconst debug = initDebug('music-metadata:parser:musepack');\nexport class MpcSv8Parser extends BasicParser {\n constructor() {\n super(...arguments);\n this.audioLength = 0;\n }\n async parse() {\n const signature = await this.tokenizer.readToken(FourCcToken);\n if (signature !== 'MPCK')\n throw new MusepackContentError('Invalid Magic number');\n this.metadata.setFormat('container', 'Musepack, SV8');\n return this.parsePacket();\n }\n async parsePacket() {\n const sv8reader = new SV8.StreamReader(this.tokenizer);\n do {\n const header = await sv8reader.readPacketHeader();\n debug(`packet-header key=${header.key}, payloadLength=${header.payloadLength}`);\n switch (header.key) {\n case 'SH': { // Stream Header\n const sh = await sv8reader.readStreamHeader(header.payloadLength);\n this.metadata.setFormat('numberOfSamples', sh.sampleCount);\n this.metadata.setFormat('sampleRate', sh.sampleFrequency);\n this.metadata.setFormat('duration', sh.sampleCount / sh.sampleFrequency);\n this.metadata.setFormat('numberOfChannels', sh.channelCount);\n break;\n }\n case 'AP': // Audio Packet\n this.audioLength += header.payloadLength;\n await this.tokenizer.ignore(header.payloadLength);\n break;\n case 'RG': // Replaygain\n case 'EI': // Encoder Info\n case 'SO': // Seek Table Offset\n case 'ST': // Seek Table\n case 'CT': // Chapter-Tag\n await this.tokenizer.ignore(header.payloadLength);\n break;\n case 'SE': // Stream End\n if (this.metadata.format.duration) {\n this.metadata.setFormat('bitrate', this.audioLength * 8 / this.metadata.format.duration);\n }\n return tryParseApeHeader(this.metadata, this.tokenizer, this.options);\n default:\n throw new MusepackContentError(`Unexpected header: ${header.key}`);\n }\n // biome-ignore lint/correctness/noConstantCondition: break is handled in the switch statement\n } while (true);\n }\n}\n","import * as Token from 'token-types';\nimport initDebug from 'debug';\nimport * as util from '../../common/Util.js';\nconst debug = initDebug('music-metadata:parser:musepack:sv8');\nconst PacketKey = new Token.StringType(2, 'latin1');\n/**\n * Stream Header Packet part 1\n * Ref: http://trac.musepack.net/musepack/wiki/SV8Specification#StreamHeaderPacket\n */\nconst SH_part1 = {\n len: 5,\n get: (buf, off) => {\n return {\n crc: Token.UINT32_LE.get(buf, off),\n streamVersion: Token.UINT8.get(buf, off + 4)\n };\n }\n};\n/**\n * Stream Header Packet part 3\n * Ref: http://trac.musepack.net/musepack/wiki/SV8Specification#StreamHeaderPacket\n */\nconst SH_part3 = {\n len: 2,\n get: (buf, off) => {\n return {\n sampleFrequency: [44100, 48000, 37800, 32000][util.getBitAllignedNumber(buf, off, 0, 3)],\n maxUsedBands: util.getBitAllignedNumber(buf, off, 3, 5),\n channelCount: util.getBitAllignedNumber(buf, off + 1, 0, 4) + 1,\n msUsed: util.isBitSet(buf, off + 1, 4),\n audioBlockFrames: util.getBitAllignedNumber(buf, off + 1, 5, 3)\n };\n }\n};\nexport class StreamReader {\n get tokenizer() {\n return this._tokenizer;\n }\n set tokenizer(value) {\n this._tokenizer = value;\n }\n constructor(_tokenizer) {\n this._tokenizer = _tokenizer;\n }\n async readPacketHeader() {\n const key = await this.tokenizer.readToken(PacketKey);\n const size = await this.readVariableSizeField();\n return {\n key,\n payloadLength: size.value - 2 - size.len\n };\n }\n async readStreamHeader(size) {\n const streamHeader = {};\n debug(`Reading SH at offset=${this.tokenizer.position}`);\n const part1 = await this.tokenizer.readToken(SH_part1);\n size -= SH_part1.len;\n Object.assign(streamHeader, part1);\n debug(`SH.streamVersion = ${part1.streamVersion}`);\n const sampleCount = await this.readVariableSizeField();\n size -= sampleCount.len;\n streamHeader.sampleCount = sampleCount.value;\n const bs = await this.readVariableSizeField();\n size -= bs.len;\n streamHeader.beginningOfSilence = bs.value;\n const part3 = await this.tokenizer.readToken(SH_part3);\n size -= SH_part3.len;\n Object.assign(streamHeader, part3);\n // assert.equal(size, 0);\n await this.tokenizer.ignore(size);\n return streamHeader;\n }\n async readVariableSizeField(len = 1, hb = 0) {\n let n = await this.tokenizer.readNumber(Token.UINT8);\n if ((n & 0x80) === 0) {\n return { len, value: hb + n };\n }\n n &= 0x7F;\n n += hb;\n return this.readVariableSizeField(len + 1, n << 7);\n }\n}\n","import { makeUnexpectedFileContentError } from '../ParseError.js';\nexport class MusepackContentError extends makeUnexpectedFileContentError('Musepack') {\n}\n","import initDebug from 'debug';\nimport { BasicParser } from '../../common/BasicParser.js';\nimport { tryParseApeHeader } from '../../apev2/APEv2Parser.js';\nimport { BitReader } from './BitReader.js';\nimport * as SV7 from './StreamVersion7.js';\nimport { MusepackContentError } from '../MusepackConentError.js';\nconst debug = initDebug('music-metadata:parser:musepack');\nexport class MpcSv7Parser extends BasicParser {\n constructor() {\n super(...arguments);\n this.bitreader = null;\n this.audioLength = 0;\n this.duration = null;\n }\n async parse() {\n const header = await this.tokenizer.readToken(SV7.Header);\n if (header.signature !== 'MP+')\n throw new MusepackContentError('Unexpected magic number');\n debug(`stream-version=${header.streamMajorVersion}.${header.streamMinorVersion}`);\n this.metadata.setFormat('container', 'Musepack, SV7');\n this.metadata.setFormat('sampleRate', header.sampleFrequency);\n const numberOfSamples = 1152 * (header.frameCount - 1) + header.lastFrameLength;\n this.metadata.setFormat('numberOfSamples', numberOfSamples);\n this.duration = numberOfSamples / header.sampleFrequency;\n this.metadata.setFormat('duration', this.duration);\n this.bitreader = new BitReader(this.tokenizer);\n this.metadata.setFormat('numberOfChannels', header.midSideStereo || header.intensityStereo ? 2 : 1);\n const version = await this.bitreader.read(8);\n this.metadata.setFormat('codec', (version / 100).toFixed(2));\n await this.skipAudioData(header.frameCount);\n debug(`End of audio stream, switching to APEv2, offset=${this.tokenizer.position}`);\n return tryParseApeHeader(this.metadata, this.tokenizer, this.options);\n }\n async skipAudioData(frameCount) {\n while (frameCount-- > 0) {\n const frameLength = await this.bitreader.read(20);\n this.audioLength += 20 + frameLength;\n await this.bitreader.ignore(frameLength);\n }\n // last frame\n const lastFrameLength = await this.bitreader.read(11);\n this.audioLength += lastFrameLength;\n if (this.duration !== null) {\n this.metadata.setFormat('bitrate', this.audioLength / this.duration);\n }\n }\n}\n","import * as Token from 'token-types';\nexport class BitReader {\n constructor(tokenizer) {\n this.pos = 0;\n this.dword = null;\n this.tokenizer = tokenizer;\n }\n /**\n *\n * @param bits 1..30 bits\n */\n async read(bits) {\n while (this.dword === null) {\n this.dword = await this.tokenizer.readToken(Token.UINT32_LE);\n }\n let out = this.dword;\n this.pos += bits;\n if (this.pos < 32) {\n out >>>= (32 - this.pos);\n return out & ((1 << bits) - 1);\n }\n this.pos -= 32;\n if (this.pos === 0) {\n this.dword = null;\n return out & ((1 << bits) - 1);\n }\n this.dword = await this.tokenizer.readToken(Token.UINT32_LE);\n if (this.pos) {\n out <<= this.pos;\n out |= this.dword >>> (32 - this.pos);\n }\n return out & ((1 << bits) - 1);\n }\n async ignore(bits) {\n if (this.pos > 0) {\n const remaining = 32 - this.pos;\n this.dword = null;\n bits -= remaining;\n this.pos = 0;\n }\n const remainder = bits % 32;\n const numOfWords = (bits - remainder) / 32;\n await this.tokenizer.ignore(numOfWords * 4);\n return this.read(remainder);\n }\n}\n","import * as Token from 'token-types';\nimport * as util from '../../common/Util.js';\nimport { textDecode } from '@borewit/text-codec';\n/**\n * BASIC STRUCTURE\n */\nexport const Header = {\n len: 6 * 4,\n get: (buf, off) => {\n const header = {\n // word 0\n signature: textDecode(buf.subarray(off, off + 3), 'latin1'),\n // versionIndex number * 1000 (3.81 = 3810) (remember that 4-byte alignment causes this to take 4-bytes)\n streamMinorVersion: util.getBitAllignedNumber(buf, off + 3, 0, 4),\n streamMajorVersion: util.getBitAllignedNumber(buf, off + 3, 4, 4),\n // word 1\n frameCount: Token.UINT32_LE.get(buf, off + 4),\n // word 2\n maxLevel: Token.UINT16_LE.get(buf, off + 8),\n sampleFrequency: [44100, 48000, 37800, 32000][util.getBitAllignedNumber(buf, off + 10, 0, 2)],\n link: util.getBitAllignedNumber(buf, off + 10, 2, 2),\n profile: util.getBitAllignedNumber(buf, off + 10, 4, 4),\n maxBand: util.getBitAllignedNumber(buf, off + 11, 0, 6),\n intensityStereo: util.isBitSet(buf, off + 11, 6),\n midSideStereo: util.isBitSet(buf, off + 11, 7),\n // word 3\n titlePeak: Token.UINT16_LE.get(buf, off + 12),\n titleGain: Token.UINT16_LE.get(buf, off + 14),\n // word 4\n albumPeak: Token.UINT16_LE.get(buf, off + 16),\n albumGain: Token.UINT16_LE.get(buf, off + 18),\n // word\n lastFrameLength: (Token.UINT32_LE.get(buf, off + 20) >>> 20) & 0x7FF,\n trueGapless: util.isBitSet(buf, off + 23, 0)\n };\n header.lastFrameLength = header.trueGapless ? (Token.UINT32_LE.get(buf, 20) >>> 20) & 0x7FF : 0;\n return header;\n }\n};\n"],"mappings":"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","names":["import_debug","import_debug","import_debug","debug","initDebug","PacketKey","StringType","SH_part1","__name","buf","off","UINT32_LE","UINT8","SH_part3","getBitAllignedNumber","isBitSet","StreamReader","value","_tokenizer","key","size","streamHeader","part1","sampleCount","bs","part3","len","hb","n","MusepackContentError","makeUnexpectedFileContentError","__name","debug","initDebug","MpcSv8Parser","BasicParser","__name","FourCcToken","MusepackContentError","sv8reader","StreamReader","header","sh","tryParseApeHeader","import_debug","BitReader","__name","tokenizer","bits","UINT32_LE","out","remaining","remainder","numOfWords","Header","__name","buf","off","header","textDecode","getBitAllignedNumber","UINT32_LE","UINT16_LE","isBitSet","debug","initDebug","MpcSv7Parser","BasicParser","__name","header","Header","MusepackContentError","numberOfSamples","BitReader","version","tryParseApeHeader","frameCount","frameLength","lastFrameLength","debug","initDebug","MusepackParser","AbstractID3Parser","__name","signature","StringType","mpcParser","MpcSv7Parser","MpcSv8Parser","MusepackContentError"],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse","file":"/MusepackParser-K4V5PCYW.js.map"} \ No newline at end of file +{"version":3,"sources":["/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/musepack/MusepackParser.js","/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/musepack/sv8/MpcSv8Parser.js","/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/musepack/sv8/StreamVersion8.js","/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/musepack/MusepackConentError.js","/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/musepack/sv7/MpcSv7Parser.js","/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/musepack/sv7/BitReader.js","/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/musepack/sv7/StreamVersion7.js"],"sourcesContent":["import initDebug from 'debug';\nimport * as Token from 'token-types';\nimport { AbstractID3Parser } from '../id3v2/AbstractID3Parser.js';\nimport { MpcSv8Parser } from './sv8/MpcSv8Parser.js';\nimport { MpcSv7Parser } from './sv7/MpcSv7Parser.js';\nimport { MusepackContentError } from './MusepackConentError.js';\nconst debug = initDebug('music-metadata:parser:musepack');\nexport class MusepackParser extends AbstractID3Parser {\n async postId3v2Parse() {\n const signature = await this.tokenizer.peekToken(new Token.StringType(3, 'latin1'));\n let mpcParser;\n switch (signature) {\n case 'MP+': {\n debug('Stream-version 7');\n mpcParser = new MpcSv7Parser(this.metadata, this.tokenizer, this.options);\n break;\n }\n case 'MPC': {\n debug('Stream-version 8');\n mpcParser = new MpcSv8Parser(this.metadata, this.tokenizer, this.options);\n break;\n }\n default: {\n throw new MusepackContentError('Invalid signature prefix');\n }\n }\n this.metadata.setAudioOnly();\n return mpcParser.parse();\n }\n}\n","import initDebug from 'debug';\nimport { BasicParser } from '../../common/BasicParser.js';\nimport { tryParseApeHeader } from '../../apev2/APEv2Parser.js';\nimport { FourCcToken } from '../../common/FourCC.js';\nimport * as SV8 from './StreamVersion8.js';\nimport { MusepackContentError } from '../MusepackConentError.js';\nconst debug = initDebug('music-metadata:parser:musepack');\nexport class MpcSv8Parser extends BasicParser {\n constructor() {\n super(...arguments);\n this.audioLength = 0;\n }\n async parse() {\n const signature = await this.tokenizer.readToken(FourCcToken);\n if (signature !== 'MPCK')\n throw new MusepackContentError('Invalid Magic number');\n this.metadata.setFormat('container', 'Musepack, SV8');\n return this.parsePacket();\n }\n async parsePacket() {\n const sv8reader = new SV8.StreamReader(this.tokenizer);\n do {\n const header = await sv8reader.readPacketHeader();\n debug(`packet-header key=${header.key}, payloadLength=${header.payloadLength}`);\n switch (header.key) {\n case 'SH': { // Stream Header\n const sh = await sv8reader.readStreamHeader(header.payloadLength);\n this.metadata.setFormat('numberOfSamples', sh.sampleCount);\n this.metadata.setFormat('sampleRate', sh.sampleFrequency);\n this.metadata.setFormat('duration', sh.sampleCount / sh.sampleFrequency);\n this.metadata.setFormat('numberOfChannels', sh.channelCount);\n break;\n }\n case 'AP': // Audio Packet\n this.audioLength += header.payloadLength;\n await this.tokenizer.ignore(header.payloadLength);\n break;\n case 'RG': // Replaygain\n case 'EI': // Encoder Info\n case 'SO': // Seek Table Offset\n case 'ST': // Seek Table\n case 'CT': // Chapter-Tag\n await this.tokenizer.ignore(header.payloadLength);\n break;\n case 'SE': // Stream End\n if (this.metadata.format.duration) {\n this.metadata.setFormat('bitrate', this.audioLength * 8 / this.metadata.format.duration);\n }\n return tryParseApeHeader(this.metadata, this.tokenizer, this.options);\n default:\n throw new MusepackContentError(`Unexpected header: ${header.key}`);\n }\n // biome-ignore lint/correctness/noConstantCondition: break is handled in the switch statement\n } while (true);\n }\n}\n","import * as Token from 'token-types';\nimport initDebug from 'debug';\nimport * as util from '../../common/Util.js';\nconst debug = initDebug('music-metadata:parser:musepack:sv8');\nconst PacketKey = new Token.StringType(2, 'latin1');\n/**\n * Stream Header Packet part 1\n * Ref: http://trac.musepack.net/musepack/wiki/SV8Specification#StreamHeaderPacket\n */\nconst SH_part1 = {\n len: 5,\n get: (buf, off) => {\n return {\n crc: Token.UINT32_LE.get(buf, off),\n streamVersion: Token.UINT8.get(buf, off + 4)\n };\n }\n};\n/**\n * Stream Header Packet part 3\n * Ref: http://trac.musepack.net/musepack/wiki/SV8Specification#StreamHeaderPacket\n */\nconst SH_part3 = {\n len: 2,\n get: (buf, off) => {\n return {\n sampleFrequency: [44100, 48000, 37800, 32000][util.getBitAllignedNumber(buf, off, 0, 3)],\n maxUsedBands: util.getBitAllignedNumber(buf, off, 3, 5),\n channelCount: util.getBitAllignedNumber(buf, off + 1, 0, 4) + 1,\n msUsed: util.isBitSet(buf, off + 1, 4),\n audioBlockFrames: util.getBitAllignedNumber(buf, off + 1, 5, 3)\n };\n }\n};\nexport class StreamReader {\n get tokenizer() {\n return this._tokenizer;\n }\n set tokenizer(value) {\n this._tokenizer = value;\n }\n constructor(_tokenizer) {\n this._tokenizer = _tokenizer;\n }\n async readPacketHeader() {\n const key = await this.tokenizer.readToken(PacketKey);\n const size = await this.readVariableSizeField();\n return {\n key,\n payloadLength: size.value - 2 - size.len\n };\n }\n async readStreamHeader(size) {\n const streamHeader = {};\n debug(`Reading SH at offset=${this.tokenizer.position}`);\n const part1 = await this.tokenizer.readToken(SH_part1);\n size -= SH_part1.len;\n Object.assign(streamHeader, part1);\n debug(`SH.streamVersion = ${part1.streamVersion}`);\n const sampleCount = await this.readVariableSizeField();\n size -= sampleCount.len;\n streamHeader.sampleCount = sampleCount.value;\n const bs = await this.readVariableSizeField();\n size -= bs.len;\n streamHeader.beginningOfSilence = bs.value;\n const part3 = await this.tokenizer.readToken(SH_part3);\n size -= SH_part3.len;\n Object.assign(streamHeader, part3);\n // assert.equal(size, 0);\n await this.tokenizer.ignore(size);\n return streamHeader;\n }\n async readVariableSizeField(len = 1, hb = 0) {\n let n = await this.tokenizer.readNumber(Token.UINT8);\n if ((n & 0x80) === 0) {\n return { len, value: hb + n };\n }\n n &= 0x7F;\n n += hb;\n return this.readVariableSizeField(len + 1, n << 7);\n }\n}\n","import { makeUnexpectedFileContentError } from '../ParseError.js';\nexport class MusepackContentError extends makeUnexpectedFileContentError('Musepack') {\n}\n","import initDebug from 'debug';\nimport { BasicParser } from '../../common/BasicParser.js';\nimport { tryParseApeHeader } from '../../apev2/APEv2Parser.js';\nimport { BitReader } from './BitReader.js';\nimport * as SV7 from './StreamVersion7.js';\nimport { MusepackContentError } from '../MusepackConentError.js';\nconst debug = initDebug('music-metadata:parser:musepack');\nexport class MpcSv7Parser extends BasicParser {\n constructor() {\n super(...arguments);\n this.bitreader = null;\n this.audioLength = 0;\n this.duration = null;\n }\n async parse() {\n const header = await this.tokenizer.readToken(SV7.Header);\n if (header.signature !== 'MP+')\n throw new MusepackContentError('Unexpected magic number');\n debug(`stream-version=${header.streamMajorVersion}.${header.streamMinorVersion}`);\n this.metadata.setFormat('container', 'Musepack, SV7');\n this.metadata.setFormat('sampleRate', header.sampleFrequency);\n const numberOfSamples = 1152 * (header.frameCount - 1) + header.lastFrameLength;\n this.metadata.setFormat('numberOfSamples', numberOfSamples);\n this.duration = numberOfSamples / header.sampleFrequency;\n this.metadata.setFormat('duration', this.duration);\n this.bitreader = new BitReader(this.tokenizer);\n this.metadata.setFormat('numberOfChannels', header.midSideStereo || header.intensityStereo ? 2 : 1);\n const version = await this.bitreader.read(8);\n this.metadata.setFormat('codec', (version / 100).toFixed(2));\n await this.skipAudioData(header.frameCount);\n debug(`End of audio stream, switching to APEv2, offset=${this.tokenizer.position}`);\n return tryParseApeHeader(this.metadata, this.tokenizer, this.options);\n }\n async skipAudioData(frameCount) {\n while (frameCount-- > 0) {\n const frameLength = await this.bitreader.read(20);\n this.audioLength += 20 + frameLength;\n await this.bitreader.ignore(frameLength);\n }\n // last frame\n const lastFrameLength = await this.bitreader.read(11);\n this.audioLength += lastFrameLength;\n if (this.duration !== null) {\n this.metadata.setFormat('bitrate', this.audioLength / this.duration);\n }\n }\n}\n","import * as Token from 'token-types';\nexport class BitReader {\n constructor(tokenizer) {\n this.pos = 0;\n this.dword = null;\n this.tokenizer = tokenizer;\n }\n /**\n *\n * @param bits 1..30 bits\n */\n async read(bits) {\n while (this.dword === null) {\n this.dword = await this.tokenizer.readToken(Token.UINT32_LE);\n }\n let out = this.dword;\n this.pos += bits;\n if (this.pos < 32) {\n out >>>= (32 - this.pos);\n return out & ((1 << bits) - 1);\n }\n this.pos -= 32;\n if (this.pos === 0) {\n this.dword = null;\n return out & ((1 << bits) - 1);\n }\n this.dword = await this.tokenizer.readToken(Token.UINT32_LE);\n if (this.pos) {\n out <<= this.pos;\n out |= this.dword >>> (32 - this.pos);\n }\n return out & ((1 << bits) - 1);\n }\n async ignore(bits) {\n if (this.pos > 0) {\n const remaining = 32 - this.pos;\n this.dword = null;\n bits -= remaining;\n this.pos = 0;\n }\n const remainder = bits % 32;\n const numOfWords = (bits - remainder) / 32;\n await this.tokenizer.ignore(numOfWords * 4);\n return this.read(remainder);\n }\n}\n","import * as Token from 'token-types';\nimport * as util from '../../common/Util.js';\nimport { textDecode } from '@borewit/text-codec';\n/**\n * BASIC STRUCTURE\n */\nexport const Header = {\n len: 6 * 4,\n get: (buf, off) => {\n const header = {\n // word 0\n signature: textDecode(buf.subarray(off, off + 3), 'latin1'),\n // versionIndex number * 1000 (3.81 = 3810) (remember that 4-byte alignment causes this to take 4-bytes)\n streamMinorVersion: util.getBitAllignedNumber(buf, off + 3, 0, 4),\n streamMajorVersion: util.getBitAllignedNumber(buf, off + 3, 4, 4),\n // word 1\n frameCount: Token.UINT32_LE.get(buf, off + 4),\n // word 2\n maxLevel: Token.UINT16_LE.get(buf, off + 8),\n sampleFrequency: [44100, 48000, 37800, 32000][util.getBitAllignedNumber(buf, off + 10, 0, 2)],\n link: util.getBitAllignedNumber(buf, off + 10, 2, 2),\n profile: util.getBitAllignedNumber(buf, off + 10, 4, 4),\n maxBand: util.getBitAllignedNumber(buf, off + 11, 0, 6),\n intensityStereo: util.isBitSet(buf, off + 11, 6),\n midSideStereo: util.isBitSet(buf, off + 11, 7),\n // word 3\n titlePeak: Token.UINT16_LE.get(buf, off + 12),\n titleGain: Token.UINT16_LE.get(buf, off + 14),\n // word 4\n albumPeak: Token.UINT16_LE.get(buf, off + 16),\n albumGain: Token.UINT16_LE.get(buf, off + 18),\n // word\n lastFrameLength: (Token.UINT32_LE.get(buf, off + 20) >>> 20) & 0x7FF,\n trueGapless: util.isBitSet(buf, off + 23, 0)\n };\n header.lastFrameLength = header.trueGapless ? (Token.UINT32_LE.get(buf, 20) >>> 20) & 0x7FF : 0;\n return header;\n }\n};\n"],"mappings":"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","names":["import_debug","import_debug","import_debug","debug","initDebug","PacketKey","StringType","SH_part1","__name","buf","off","UINT32_LE","UINT8","SH_part3","getBitAllignedNumber","isBitSet","StreamReader","value","_tokenizer","key","size","streamHeader","part1","sampleCount","bs","part3","len","hb","n","MusepackContentError","makeUnexpectedFileContentError","__name","debug","initDebug","MpcSv8Parser","BasicParser","__name","FourCcToken","MusepackContentError","sv8reader","StreamReader","header","sh","tryParseApeHeader","import_debug","BitReader","__name","tokenizer","bits","UINT32_LE","out","remaining","remainder","numOfWords","Header","__name","buf","off","header","textDecode","getBitAllignedNumber","UINT32_LE","UINT16_LE","isBitSet","debug","initDebug","MpcSv7Parser","BasicParser","__name","header","Header","MusepackContentError","numberOfSamples","BitReader","version","tryParseApeHeader","frameCount","frameLength","lastFrameLength","debug","initDebug","MusepackParser","AbstractID3Parser","__name","signature","StringType","mpcParser","MpcSv7Parser","MpcSv8Parser","MusepackContentError"],"sourceRoot":"","file":"/MusepackParser-K4V5PCYW.js.map"} \ No newline at end of file diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/OggParser-ZLVT63EM.js b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/OggParser-ZLVT63EM.js similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/OggParser-ZLVT63EM.js rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/OggParser-ZLVT63EM.js diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/OggParser-ZLVT63EM.js.br b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/OggParser-ZLVT63EM.js.br similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/OggParser-ZLVT63EM.js.br rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/OggParser-ZLVT63EM.js.br diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/OggParser-ZLVT63EM.js.map b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/OggParser-ZLVT63EM.js.map similarity index 99% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/OggParser-ZLVT63EM.js.map rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/OggParser-ZLVT63EM.js.map index 9271450b..c55ba91b 100644 --- a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/OggParser-ZLVT63EM.js.map +++ b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/OggParser-ZLVT63EM.js.map @@ -1 +1 @@ -{"version":3,"sources":["/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/ogg/OggParser.js","/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/ogg/opus/Opus.js","/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/ogg/opus/OpusStream.js","/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/ogg/speex/SpeexStream.js","/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/ogg/speex/Speex.js","/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/ogg/theora/TheoraStream.js","/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/ogg/theora/Theora.js","/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/ogg/OggToken.js","/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/ogg/flac/FlacStream.js"],"sourcesContent":["import * as Token from 'token-types';\nimport { EndOfStreamError } from 'strtok3';\nimport initDebug from 'debug';\nimport { BasicParser } from '../common/BasicParser.js';\nimport { VorbisStream } from './vorbis/VorbisStream.js';\nimport { OpusStream } from './opus/OpusStream.js';\nimport { SpeexStream } from './speex/SpeexStream.js';\nimport { TheoraStream } from './theora/TheoraStream.js';\nimport { makeUnexpectedFileContentError } from '../ParseError.js';\nimport { PageHeader, SegmentTable } from './OggToken.js';\nimport { FlacStream } from './flac/FlacStream.js';\nexport class OggContentError extends makeUnexpectedFileContentError('Ogg') {\n}\nconst debug = initDebug('music-metadata:parser:ogg');\nclass OggStream {\n constructor(metadata, streamSerial, options) {\n this.pageNumber = 0;\n this.closed = false;\n this.metadata = metadata;\n this.streamSerial = streamSerial;\n this.options = options;\n }\n async parsePage(tokenizer, header) {\n this.pageNumber = header.pageSequenceNo;\n debug('serial=%s page#=%s, Ogg.id=%s', header.streamSerialNumber, header.pageSequenceNo, header.capturePattern);\n const segmentTable = await tokenizer.readToken(new SegmentTable(header));\n debug('totalPageSize=%s', segmentTable.totalPageSize);\n const pageData = await tokenizer.readToken(new Token.Uint8ArrayType(segmentTable.totalPageSize));\n debug('firstPage=%s, lastPage=%s, continued=%s', header.headerType.firstPage, header.headerType.lastPage, header.headerType.continued);\n if (header.headerType.firstPage) {\n this.metadata.setFormat('container', 'Ogg');\n const idData = pageData.subarray(0, 7); // Copy this portion\n const asciiId = Array.from(idData)\n .filter(b => b >= 32 && b <= 126) // Keep only printable ASCII\n .map(b => String.fromCharCode(b))\n .join('');\n switch (asciiId) {\n case 'vorbis': // Ogg/Vorbis\n debug(`Set Ogg stream serial ${header.streamSerialNumber}, codec=Vorbis`);\n this.pageConsumer = new VorbisStream(this.metadata, this.options);\n break;\n case 'OpusHea': // Ogg/Opus\n debug('Set page consumer to Ogg/Opus');\n this.pageConsumer = new OpusStream(this.metadata, this.options, tokenizer);\n break;\n case 'Speex ': // Ogg/Speex\n debug('Set page consumer to Ogg/Speex');\n this.pageConsumer = new SpeexStream(this.metadata, this.options, tokenizer);\n break;\n case 'fishead':\n case 'theora': // Ogg/Theora\n debug('Set page consumer to Ogg/Theora');\n this.pageConsumer = new TheoraStream(this.metadata, this.options, tokenizer);\n break;\n case 'FLAC': // Ogg/Theora\n debug('Set page consumer to Vorbis');\n this.pageConsumer = new FlacStream(this.metadata, this.options, tokenizer);\n break;\n default:\n throw new OggContentError(`Ogg codec not recognized (id=${asciiId}`);\n }\n }\n if (header.headerType.lastPage) {\n this.closed = true;\n }\n if (this.pageConsumer) {\n await this.pageConsumer.parsePage(header, pageData);\n }\n else\n throw new Error('pageConsumer should be initialized');\n }\n}\n/**\n * Parser for Ogg logical bitstream framing\n */\nexport class OggParser extends BasicParser {\n constructor() {\n super(...arguments);\n this.streams = new Map();\n }\n /**\n * Parse page\n * @returns {Promise}\n */\n async parse() {\n this.streams = new Map();\n let enfOfStream = false;\n let header;\n try {\n do {\n header = await this.tokenizer.readToken(PageHeader);\n if (header.capturePattern !== 'OggS')\n throw new OggContentError('Invalid Ogg capture pattern');\n let stream = this.streams.get(header.streamSerialNumber);\n if (!stream) {\n stream = new OggStream(this.metadata, header.streamSerialNumber, this.options);\n this.streams.set(header.streamSerialNumber, stream);\n }\n await stream.parsePage(this.tokenizer, header);\n if (stream.pageNumber > 12 && !(this.options.duration && [...this.streams.values()].find(stream => stream.pageConsumer?.durationOnLastPage))) {\n debug(\"Stop processing Ogg stream\");\n break;\n }\n } while (![...this.streams.values()].every(item => item.closed));\n }\n catch (err) {\n if (err instanceof EndOfStreamError) {\n debug(\"Reached end-of-stream\");\n enfOfStream = true;\n }\n else if (err instanceof OggContentError) {\n this.metadata.addWarning(`Corrupt Ogg content at ${this.tokenizer.position}`);\n }\n else\n throw err;\n }\n for (const stream of this.streams.values()) {\n if (!stream.closed) {\n this.metadata.addWarning(`End-of-stream reached before reaching last page in Ogg stream serial=${stream.streamSerial}`);\n await stream.pageConsumer?.flush();\n }\n stream.pageConsumer?.calculateDuration(enfOfStream);\n }\n }\n}\n","import * as Token from 'token-types';\nimport { makeUnexpectedFileContentError } from '../../ParseError.js';\nexport class OpusContentError extends makeUnexpectedFileContentError('Opus') {\n}\n/**\n * Opus ID Header parser\n * Ref: https://wiki.xiph.org/OggOpus#ID_Header\n */\nexport class IdHeader {\n constructor(len) {\n if (len < 19) {\n throw new OpusContentError('ID-header-page 0 should be at least 19 bytes long');\n }\n this.len = len;\n }\n get(buf, off) {\n return {\n magicSignature: new Token.StringType(8, 'ascii').get(buf, off + 0),\n version: Token.UINT8.get(buf, off + 8),\n channelCount: Token.UINT8.get(buf, off + 9),\n preSkip: Token.UINT16_LE.get(buf, off + 10),\n inputSampleRate: Token.UINT32_LE.get(buf, off + 12),\n outputGain: Token.UINT16_LE.get(buf, off + 16),\n channelMapping: Token.UINT8.get(buf, off + 18)\n };\n }\n}\n","import * as Token from 'token-types';\nimport { VorbisStream } from '../vorbis/VorbisStream.js';\nimport * as Opus from './Opus.js';\nimport { OpusContentError } from './Opus.js';\n/**\n * Opus parser\n * Internet Engineering Task Force (IETF) - RFC 6716\n * Used by OggStream\n */\nexport class OpusStream extends VorbisStream {\n constructor(metadata, options, tokenizer) {\n super(metadata, options);\n this.idHeader = null;\n this.lastPos = -1;\n this.tokenizer = tokenizer;\n this.durationOnLastPage = true;\n }\n /**\n * Parse first Opus Ogg page\n * @param {IPageHeader} header\n * @param {Uint8Array} pageData\n */\n parseFirstPage(_header, pageData) {\n this.metadata.setFormat('codec', 'Opus');\n // Parse Opus ID Header\n this.idHeader = new Opus.IdHeader(pageData.length).get(pageData, 0);\n if (this.idHeader.magicSignature !== \"OpusHead\")\n throw new OpusContentError(\"Illegal ogg/Opus magic-signature\");\n this.metadata.setFormat('sampleRate', this.idHeader.inputSampleRate);\n this.metadata.setFormat('numberOfChannels', this.idHeader.channelCount);\n this.metadata.setAudioOnly();\n }\n async parseFullPage(pageData) {\n const magicSignature = new Token.StringType(8, 'ascii').get(pageData, 0);\n switch (magicSignature) {\n case 'OpusTags':\n await this.parseUserCommentList(pageData, 8);\n this.lastPos = this.tokenizer.position - pageData.length;\n break;\n default:\n break;\n }\n }\n calculateDuration(enfOfStream) {\n if (this.lastPageHeader && (enfOfStream || this.lastPageHeader.headerType.lastPage) && this.metadata.format.sampleRate && this.lastPageHeader.absoluteGranulePosition >= 0) {\n // Calculate duration\n const pos_48bit = this.lastPageHeader.absoluteGranulePosition - this.idHeader.preSkip;\n this.metadata.setFormat('numberOfSamples', pos_48bit);\n this.metadata.setFormat('duration', pos_48bit / 48000);\n if (this.lastPos !== -1 && this.tokenizer.fileInfo.size && this.metadata.format.duration) {\n const dataSize = this.tokenizer.fileInfo.size - this.lastPos;\n this.metadata.setFormat('bitrate', 8 * dataSize / this.metadata.format.duration);\n }\n }\n }\n}\n","import initDebug from 'debug';\nimport { VorbisStream } from '../vorbis/VorbisStream.js';\nimport * as Speex from './Speex.js';\nconst debug = initDebug('music-metadata:parser:ogg:speex');\n/**\n * Speex, RFC 5574\n * Ref:\n * - https://www.speex.org/docs/manual/speex-manual/\n * - https://tools.ietf.org/html/rfc5574\n */\nexport class SpeexStream extends VorbisStream {\n constructor(metadata, options, _tokenizer) {\n super(metadata, options);\n this.commentHeaderParsed = false;\n }\n /**\n * Parse first Speex Ogg page\n * @param {IPageHeader} header\n * @param {Uint8Array} pageData\n */\n parseFirstPage(_header, pageData) {\n debug('First Ogg/Speex page');\n const speexHeader = Speex.Header.get(pageData, 0);\n this.metadata.setFormat('codec', `Speex ${speexHeader.version}`);\n this.metadata.setFormat('numberOfChannels', speexHeader.nb_channels);\n this.metadata.setFormat('sampleRate', speexHeader.rate);\n if (speexHeader.bitrate !== -1) {\n this.metadata.setFormat('bitrate', speexHeader.bitrate);\n }\n this.metadata.setAudioOnly();\n }\n /**\n * The packet following the identification header is the comment header, in\n * Vorbis comment format but without a packet type or magic signature.\n * Ref: https://tools.ietf.org/html/rfc5574#section-3\n */\n async parseFullPage(pageData) {\n if (this.commentHeaderParsed)\n return;\n this.commentHeaderParsed = true;\n debug('Parse Ogg/Speex comment header');\n await this.parseUserCommentList(pageData, 0);\n }\n}\n","import * as Token from 'token-types';\nimport * as util from '../../common/Util.js';\n/**\n * Speex Header Packet\n * Ref: https://www.speex.org/docs/manual/speex-manual/node8.html#SECTION00830000000000000000\n */\nexport const Header = {\n len: 80,\n get: (buf, off) => {\n return {\n speex: new Token.StringType(8, 'ascii').get(buf, off + 0),\n version: util.trimRightNull(new Token.StringType(20, 'ascii').get(buf, off + 8)),\n version_id: Token.INT32_LE.get(buf, off + 28),\n header_size: Token.INT32_LE.get(buf, off + 32),\n rate: Token.INT32_LE.get(buf, off + 36),\n mode: Token.INT32_LE.get(buf, off + 40),\n mode_bitstream_version: Token.INT32_LE.get(buf, off + 44),\n nb_channels: Token.INT32_LE.get(buf, off + 48),\n bitrate: Token.INT32_LE.get(buf, off + 52),\n frame_size: Token.INT32_LE.get(buf, off + 56),\n vbr: Token.INT32_LE.get(buf, off + 60),\n frames_per_packet: Token.INT32_LE.get(buf, off + 64),\n extra_headers: Token.INT32_LE.get(buf, off + 68),\n reserved1: Token.INT32_LE.get(buf, off + 72),\n reserved2: Token.INT32_LE.get(buf, off + 76)\n };\n }\n};\n","import initDebug from 'debug';\nimport { IdentificationHeader } from './Theora.js';\nconst debug = initDebug('music-metadata:parser:ogg:theora');\n/**\n * Ref:\n * - https://theora.org/doc/Theora.pdf\n */\nexport class TheoraStream {\n constructor(metadata, _options, _tokenizer) {\n this.durationOnLastPage = false;\n this.metadata = metadata;\n }\n /**\n * Vorbis 1 parser\n * @param header Ogg Page Header\n * @param pageData Page data\n */\n async parsePage(header, pageData) {\n if (header.headerType.firstPage) {\n await this.parseFirstPage(header, pageData);\n }\n }\n calculateDuration() {\n debug('duration calculation not implemented');\n }\n /**\n * Parse first Theora Ogg page. the initial identification header packet\n */\n async parseFirstPage(_header, pageData) {\n debug('First Ogg/Theora page');\n this.metadata.setFormat('codec', 'Theora');\n const idHeader = IdentificationHeader.get(pageData, 0);\n this.metadata.setFormat('bitrate', idHeader.nombr);\n this.metadata.setFormat('hasVideo', true);\n }\n flush() {\n return Promise.resolve();\n }\n}\n","import * as Token from 'token-types';\n/**\n * 6.2 Identification Header\n * Ref: https://theora.org/doc/Theora.pdf: 6.2 Identification Header Decode\n */\nexport const IdentificationHeader = {\n len: 42,\n get: (buf, off) => {\n return {\n id: new Token.StringType(7, 'ascii').get(buf, off),\n vmaj: Token.UINT8.get(buf, off + 7),\n vmin: Token.UINT8.get(buf, off + 8),\n vrev: Token.UINT8.get(buf, off + 9),\n vmbw: Token.UINT16_BE.get(buf, off + 10),\n vmbh: Token.UINT16_BE.get(buf, off + 17),\n nombr: Token.UINT24_BE.get(buf, off + 37),\n nqual: Token.UINT8.get(buf, off + 40)\n };\n }\n};\n","import * as Token from 'token-types';\nimport * as util from '../common/Util.js';\nimport { StringType } from 'token-types';\nexport const PageHeader = {\n len: 27,\n get: (buf, off) => {\n return {\n capturePattern: new StringType(4, 'latin1').get(buf, off),\n version: Token.UINT8.get(buf, off + 4),\n headerType: {\n continued: util.getBit(buf, off + 5, 0),\n firstPage: util.getBit(buf, off + 5, 1),\n lastPage: util.getBit(buf, off + 5, 2)\n },\n // packet_flag: Token.UINT8.get(buf, off + 5),\n absoluteGranulePosition: Number(Token.UINT64_LE.get(buf, off + 6)),\n streamSerialNumber: Token.UINT32_LE.get(buf, off + 14),\n pageSequenceNo: Token.UINT32_LE.get(buf, off + 18),\n pageChecksum: Token.UINT32_LE.get(buf, off + 22),\n page_segments: Token.UINT8.get(buf, off + 26)\n };\n }\n};\nexport class SegmentTable {\n static sum(buf, off, len) {\n const dv = new DataView(buf.buffer, 0);\n let s = 0;\n for (let i = off; i < off + len; ++i) {\n s += dv.getUint8(i);\n }\n return s;\n }\n constructor(header) {\n this.len = header.page_segments;\n }\n get(buf, off) {\n return {\n totalPageSize: SegmentTable.sum(buf, off, this.len)\n };\n }\n}\n","import initDebug from 'debug';\nimport * as Flac from '../../flac/FlacToken.js';\nimport { FlacParser } from '../../flac/FlacParser.js';\nimport { FourCcToken } from '../../common/FourCC.js';\nimport { VorbisPictureToken } from '../vorbis/Vorbis.js';\nconst debug = initDebug('music-metadata:parser:ogg:theora');\n/**\n * Ref:\n * - https://xiph.org/flac/ogg_mapping.html\n */\nexport class FlacStream {\n constructor(metadata, options, tokenizer) {\n this.durationOnLastPage = false;\n this.metadata = metadata;\n this.options = options;\n this.tokenizer = tokenizer;\n this.flacParser = new FlacParser(this.metadata, this.tokenizer, options);\n }\n /**\n * Vorbis 1 parser\n * @param header Ogg Page Header\n * @param pageData Page data\n */\n async parsePage(header, pageData) {\n if (header.headerType.firstPage) {\n await this.parseFirstPage(header, pageData);\n }\n }\n calculateDuration() {\n debug('duration calculation not implemented');\n }\n /**\n * Parse first Theora Ogg page. the initial identification header packet\n */\n async parseFirstPage(_header, pageData) {\n debug('First Ogg/FLAC page');\n const fourCC = await FourCcToken.get(pageData, 9);\n if (fourCC.toString() !== 'fLaC') {\n throw new Error('Invalid FLAC preamble');\n }\n const blockHeader = await Flac.BlockHeader.get(pageData, 13);\n await this.parseDataBlock(blockHeader, pageData.subarray(13 + Flac.BlockHeader.len));\n }\n async parseDataBlock(blockHeader, pageData) {\n debug(`blockHeader type=${blockHeader.type}, length=${blockHeader.length}`);\n switch (blockHeader.type) {\n case Flac.BlockType.STREAMINFO: {\n const streamInfo = Flac.BlockStreamInfo.get(pageData, 0);\n return this.flacParser.processsStreamInfo(streamInfo);\n }\n case Flac.BlockType.PADDING:\n break;\n case Flac.BlockType.APPLICATION:\n break;\n case Flac.BlockType.SEEKTABLE:\n break;\n case Flac.BlockType.VORBIS_COMMENT:\n return this.flacParser.parseComment(pageData);\n case Flac.BlockType.PICTURE:\n if (!this.options.skipCovers) {\n const picture = new VorbisPictureToken(pageData.length).get(pageData, 0);\n return this.flacParser.addPictureTag(picture);\n }\n break;\n default:\n this.metadata.addWarning(`Unknown block type: ${blockHeader.type}`);\n }\n // Ignore data block\n return this.tokenizer.ignore(blockHeader.length).then();\n }\n flush() {\n return Promise.resolve();\n }\n}\n"],"mappings":"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","names":["import_debug","OpusContentError","makeUnexpectedFileContentError","__name","IdHeader","len","buf","off","StringType","UINT8","UINT16_LE","UINT32_LE","OpusStream","VorbisStream","__name","metadata","options","tokenizer","_header","pageData","IdHeader","OpusContentError","StringType","enfOfStream","pos_48bit","dataSize","import_debug","Header","__name","buf","off","StringType","trimRightNull","INT32_LE","debug","initDebug","SpeexStream","VorbisStream","__name","metadata","options","_tokenizer","_header","pageData","speexHeader","Header","import_debug","IdentificationHeader","__name","buf","off","StringType","UINT8","UINT16_BE","UINT24_BE","debug","initDebug","TheoraStream","__name","metadata","_options","_tokenizer","header","pageData","_header","idHeader","IdentificationHeader","PageHeader","__name","buf","off","StringType","UINT8","getBit","UINT64_LE","UINT32_LE","SegmentTable","_SegmentTable","len","dv","s","i","header","import_debug","debug","initDebug","FlacStream","__name","metadata","options","tokenizer","FlacParser","header","pageData","_header","FourCcToken","blockHeader","BlockHeader","BlockType","streamInfo","BlockStreamInfo","picture","VorbisPictureToken","OggContentError","makeUnexpectedFileContentError","__name","debug","initDebug","OggStream","metadata","streamSerial","options","tokenizer","header","segmentTable","SegmentTable","pageData","Uint8ArrayType","idData","asciiId","b","VorbisStream","OpusStream","SpeexStream","TheoraStream","FlacStream","OggParser","BasicParser","enfOfStream","PageHeader","stream","item","err","EndOfStreamError"],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse","file":"/OggParser-ZLVT63EM.js.map"} \ No newline at end of file +{"version":3,"sources":["/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/ogg/OggParser.js","/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/ogg/opus/Opus.js","/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/ogg/opus/OpusStream.js","/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/ogg/speex/SpeexStream.js","/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/ogg/speex/Speex.js","/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/ogg/theora/TheoraStream.js","/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/ogg/theora/Theora.js","/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/ogg/OggToken.js","/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/ogg/flac/FlacStream.js"],"sourcesContent":["import * as Token from 'token-types';\nimport { EndOfStreamError } from 'strtok3';\nimport initDebug from 'debug';\nimport { BasicParser } from '../common/BasicParser.js';\nimport { VorbisStream } from './vorbis/VorbisStream.js';\nimport { OpusStream } from './opus/OpusStream.js';\nimport { SpeexStream } from './speex/SpeexStream.js';\nimport { TheoraStream } from './theora/TheoraStream.js';\nimport { makeUnexpectedFileContentError } from '../ParseError.js';\nimport { PageHeader, SegmentTable } from './OggToken.js';\nimport { FlacStream } from './flac/FlacStream.js';\nexport class OggContentError extends makeUnexpectedFileContentError('Ogg') {\n}\nconst debug = initDebug('music-metadata:parser:ogg');\nclass OggStream {\n constructor(metadata, streamSerial, options) {\n this.pageNumber = 0;\n this.closed = false;\n this.metadata = metadata;\n this.streamSerial = streamSerial;\n this.options = options;\n }\n async parsePage(tokenizer, header) {\n this.pageNumber = header.pageSequenceNo;\n debug('serial=%s page#=%s, Ogg.id=%s', header.streamSerialNumber, header.pageSequenceNo, header.capturePattern);\n const segmentTable = await tokenizer.readToken(new SegmentTable(header));\n debug('totalPageSize=%s', segmentTable.totalPageSize);\n const pageData = await tokenizer.readToken(new Token.Uint8ArrayType(segmentTable.totalPageSize));\n debug('firstPage=%s, lastPage=%s, continued=%s', header.headerType.firstPage, header.headerType.lastPage, header.headerType.continued);\n if (header.headerType.firstPage) {\n this.metadata.setFormat('container', 'Ogg');\n const idData = pageData.subarray(0, 7); // Copy this portion\n const asciiId = Array.from(idData)\n .filter(b => b >= 32 && b <= 126) // Keep only printable ASCII\n .map(b => String.fromCharCode(b))\n .join('');\n switch (asciiId) {\n case 'vorbis': // Ogg/Vorbis\n debug(`Set Ogg stream serial ${header.streamSerialNumber}, codec=Vorbis`);\n this.pageConsumer = new VorbisStream(this.metadata, this.options);\n break;\n case 'OpusHea': // Ogg/Opus\n debug('Set page consumer to Ogg/Opus');\n this.pageConsumer = new OpusStream(this.metadata, this.options, tokenizer);\n break;\n case 'Speex ': // Ogg/Speex\n debug('Set page consumer to Ogg/Speex');\n this.pageConsumer = new SpeexStream(this.metadata, this.options, tokenizer);\n break;\n case 'fishead':\n case 'theora': // Ogg/Theora\n debug('Set page consumer to Ogg/Theora');\n this.pageConsumer = new TheoraStream(this.metadata, this.options, tokenizer);\n break;\n case 'FLAC': // Ogg/Theora\n debug('Set page consumer to Vorbis');\n this.pageConsumer = new FlacStream(this.metadata, this.options, tokenizer);\n break;\n default:\n throw new OggContentError(`Ogg codec not recognized (id=${asciiId}`);\n }\n }\n if (header.headerType.lastPage) {\n this.closed = true;\n }\n if (this.pageConsumer) {\n await this.pageConsumer.parsePage(header, pageData);\n }\n else\n throw new Error('pageConsumer should be initialized');\n }\n}\n/**\n * Parser for Ogg logical bitstream framing\n */\nexport class OggParser extends BasicParser {\n constructor() {\n super(...arguments);\n this.streams = new Map();\n }\n /**\n * Parse page\n * @returns {Promise}\n */\n async parse() {\n this.streams = new Map();\n let enfOfStream = false;\n let header;\n try {\n do {\n header = await this.tokenizer.readToken(PageHeader);\n if (header.capturePattern !== 'OggS')\n throw new OggContentError('Invalid Ogg capture pattern');\n let stream = this.streams.get(header.streamSerialNumber);\n if (!stream) {\n stream = new OggStream(this.metadata, header.streamSerialNumber, this.options);\n this.streams.set(header.streamSerialNumber, stream);\n }\n await stream.parsePage(this.tokenizer, header);\n if (stream.pageNumber > 12 && !(this.options.duration && [...this.streams.values()].find(stream => stream.pageConsumer?.durationOnLastPage))) {\n debug(\"Stop processing Ogg stream\");\n break;\n }\n } while (![...this.streams.values()].every(item => item.closed));\n }\n catch (err) {\n if (err instanceof EndOfStreamError) {\n debug(\"Reached end-of-stream\");\n enfOfStream = true;\n }\n else if (err instanceof OggContentError) {\n this.metadata.addWarning(`Corrupt Ogg content at ${this.tokenizer.position}`);\n }\n else\n throw err;\n }\n for (const stream of this.streams.values()) {\n if (!stream.closed) {\n this.metadata.addWarning(`End-of-stream reached before reaching last page in Ogg stream serial=${stream.streamSerial}`);\n await stream.pageConsumer?.flush();\n }\n stream.pageConsumer?.calculateDuration(enfOfStream);\n }\n }\n}\n","import * as Token from 'token-types';\nimport { makeUnexpectedFileContentError } from '../../ParseError.js';\nexport class OpusContentError extends makeUnexpectedFileContentError('Opus') {\n}\n/**\n * Opus ID Header parser\n * Ref: https://wiki.xiph.org/OggOpus#ID_Header\n */\nexport class IdHeader {\n constructor(len) {\n if (len < 19) {\n throw new OpusContentError('ID-header-page 0 should be at least 19 bytes long');\n }\n this.len = len;\n }\n get(buf, off) {\n return {\n magicSignature: new Token.StringType(8, 'ascii').get(buf, off + 0),\n version: Token.UINT8.get(buf, off + 8),\n channelCount: Token.UINT8.get(buf, off + 9),\n preSkip: Token.UINT16_LE.get(buf, off + 10),\n inputSampleRate: Token.UINT32_LE.get(buf, off + 12),\n outputGain: Token.UINT16_LE.get(buf, off + 16),\n channelMapping: Token.UINT8.get(buf, off + 18)\n };\n }\n}\n","import * as Token from 'token-types';\nimport { VorbisStream } from '../vorbis/VorbisStream.js';\nimport * as Opus from './Opus.js';\nimport { OpusContentError } from './Opus.js';\n/**\n * Opus parser\n * Internet Engineering Task Force (IETF) - RFC 6716\n * Used by OggStream\n */\nexport class OpusStream extends VorbisStream {\n constructor(metadata, options, tokenizer) {\n super(metadata, options);\n this.idHeader = null;\n this.lastPos = -1;\n this.tokenizer = tokenizer;\n this.durationOnLastPage = true;\n }\n /**\n * Parse first Opus Ogg page\n * @param {IPageHeader} header\n * @param {Uint8Array} pageData\n */\n parseFirstPage(_header, pageData) {\n this.metadata.setFormat('codec', 'Opus');\n // Parse Opus ID Header\n this.idHeader = new Opus.IdHeader(pageData.length).get(pageData, 0);\n if (this.idHeader.magicSignature !== \"OpusHead\")\n throw new OpusContentError(\"Illegal ogg/Opus magic-signature\");\n this.metadata.setFormat('sampleRate', this.idHeader.inputSampleRate);\n this.metadata.setFormat('numberOfChannels', this.idHeader.channelCount);\n this.metadata.setAudioOnly();\n }\n async parseFullPage(pageData) {\n const magicSignature = new Token.StringType(8, 'ascii').get(pageData, 0);\n switch (magicSignature) {\n case 'OpusTags':\n await this.parseUserCommentList(pageData, 8);\n this.lastPos = this.tokenizer.position - pageData.length;\n break;\n default:\n break;\n }\n }\n calculateDuration(enfOfStream) {\n if (this.lastPageHeader && (enfOfStream || this.lastPageHeader.headerType.lastPage) && this.metadata.format.sampleRate && this.lastPageHeader.absoluteGranulePosition >= 0) {\n // Calculate duration\n const pos_48bit = this.lastPageHeader.absoluteGranulePosition - this.idHeader.preSkip;\n this.metadata.setFormat('numberOfSamples', pos_48bit);\n this.metadata.setFormat('duration', pos_48bit / 48000);\n if (this.lastPos !== -1 && this.tokenizer.fileInfo.size && this.metadata.format.duration) {\n const dataSize = this.tokenizer.fileInfo.size - this.lastPos;\n this.metadata.setFormat('bitrate', 8 * dataSize / this.metadata.format.duration);\n }\n }\n }\n}\n","import initDebug from 'debug';\nimport { VorbisStream } from '../vorbis/VorbisStream.js';\nimport * as Speex from './Speex.js';\nconst debug = initDebug('music-metadata:parser:ogg:speex');\n/**\n * Speex, RFC 5574\n * Ref:\n * - https://www.speex.org/docs/manual/speex-manual/\n * - https://tools.ietf.org/html/rfc5574\n */\nexport class SpeexStream extends VorbisStream {\n constructor(metadata, options, _tokenizer) {\n super(metadata, options);\n this.commentHeaderParsed = false;\n }\n /**\n * Parse first Speex Ogg page\n * @param {IPageHeader} header\n * @param {Uint8Array} pageData\n */\n parseFirstPage(_header, pageData) {\n debug('First Ogg/Speex page');\n const speexHeader = Speex.Header.get(pageData, 0);\n this.metadata.setFormat('codec', `Speex ${speexHeader.version}`);\n this.metadata.setFormat('numberOfChannels', speexHeader.nb_channels);\n this.metadata.setFormat('sampleRate', speexHeader.rate);\n if (speexHeader.bitrate !== -1) {\n this.metadata.setFormat('bitrate', speexHeader.bitrate);\n }\n this.metadata.setAudioOnly();\n }\n /**\n * The packet following the identification header is the comment header, in\n * Vorbis comment format but without a packet type or magic signature.\n * Ref: https://tools.ietf.org/html/rfc5574#section-3\n */\n async parseFullPage(pageData) {\n if (this.commentHeaderParsed)\n return;\n this.commentHeaderParsed = true;\n debug('Parse Ogg/Speex comment header');\n await this.parseUserCommentList(pageData, 0);\n }\n}\n","import * as Token from 'token-types';\nimport * as util from '../../common/Util.js';\n/**\n * Speex Header Packet\n * Ref: https://www.speex.org/docs/manual/speex-manual/node8.html#SECTION00830000000000000000\n */\nexport const Header = {\n len: 80,\n get: (buf, off) => {\n return {\n speex: new Token.StringType(8, 'ascii').get(buf, off + 0),\n version: util.trimRightNull(new Token.StringType(20, 'ascii').get(buf, off + 8)),\n version_id: Token.INT32_LE.get(buf, off + 28),\n header_size: Token.INT32_LE.get(buf, off + 32),\n rate: Token.INT32_LE.get(buf, off + 36),\n mode: Token.INT32_LE.get(buf, off + 40),\n mode_bitstream_version: Token.INT32_LE.get(buf, off + 44),\n nb_channels: Token.INT32_LE.get(buf, off + 48),\n bitrate: Token.INT32_LE.get(buf, off + 52),\n frame_size: Token.INT32_LE.get(buf, off + 56),\n vbr: Token.INT32_LE.get(buf, off + 60),\n frames_per_packet: Token.INT32_LE.get(buf, off + 64),\n extra_headers: Token.INT32_LE.get(buf, off + 68),\n reserved1: Token.INT32_LE.get(buf, off + 72),\n reserved2: Token.INT32_LE.get(buf, off + 76)\n };\n }\n};\n","import initDebug from 'debug';\nimport { IdentificationHeader } from './Theora.js';\nconst debug = initDebug('music-metadata:parser:ogg:theora');\n/**\n * Ref:\n * - https://theora.org/doc/Theora.pdf\n */\nexport class TheoraStream {\n constructor(metadata, _options, _tokenizer) {\n this.durationOnLastPage = false;\n this.metadata = metadata;\n }\n /**\n * Vorbis 1 parser\n * @param header Ogg Page Header\n * @param pageData Page data\n */\n async parsePage(header, pageData) {\n if (header.headerType.firstPage) {\n await this.parseFirstPage(header, pageData);\n }\n }\n calculateDuration() {\n debug('duration calculation not implemented');\n }\n /**\n * Parse first Theora Ogg page. the initial identification header packet\n */\n async parseFirstPage(_header, pageData) {\n debug('First Ogg/Theora page');\n this.metadata.setFormat('codec', 'Theora');\n const idHeader = IdentificationHeader.get(pageData, 0);\n this.metadata.setFormat('bitrate', idHeader.nombr);\n this.metadata.setFormat('hasVideo', true);\n }\n flush() {\n return Promise.resolve();\n }\n}\n","import * as Token from 'token-types';\n/**\n * 6.2 Identification Header\n * Ref: https://theora.org/doc/Theora.pdf: 6.2 Identification Header Decode\n */\nexport const IdentificationHeader = {\n len: 42,\n get: (buf, off) => {\n return {\n id: new Token.StringType(7, 'ascii').get(buf, off),\n vmaj: Token.UINT8.get(buf, off + 7),\n vmin: Token.UINT8.get(buf, off + 8),\n vrev: Token.UINT8.get(buf, off + 9),\n vmbw: Token.UINT16_BE.get(buf, off + 10),\n vmbh: Token.UINT16_BE.get(buf, off + 17),\n nombr: Token.UINT24_BE.get(buf, off + 37),\n nqual: Token.UINT8.get(buf, off + 40)\n };\n }\n};\n","import * as Token from 'token-types';\nimport * as util from '../common/Util.js';\nimport { StringType } from 'token-types';\nexport const PageHeader = {\n len: 27,\n get: (buf, off) => {\n return {\n capturePattern: new StringType(4, 'latin1').get(buf, off),\n version: Token.UINT8.get(buf, off + 4),\n headerType: {\n continued: util.getBit(buf, off + 5, 0),\n firstPage: util.getBit(buf, off + 5, 1),\n lastPage: util.getBit(buf, off + 5, 2)\n },\n // packet_flag: Token.UINT8.get(buf, off + 5),\n absoluteGranulePosition: Number(Token.UINT64_LE.get(buf, off + 6)),\n streamSerialNumber: Token.UINT32_LE.get(buf, off + 14),\n pageSequenceNo: Token.UINT32_LE.get(buf, off + 18),\n pageChecksum: Token.UINT32_LE.get(buf, off + 22),\n page_segments: Token.UINT8.get(buf, off + 26)\n };\n }\n};\nexport class SegmentTable {\n static sum(buf, off, len) {\n const dv = new DataView(buf.buffer, 0);\n let s = 0;\n for (let i = off; i < off + len; ++i) {\n s += dv.getUint8(i);\n }\n return s;\n }\n constructor(header) {\n this.len = header.page_segments;\n }\n get(buf, off) {\n return {\n totalPageSize: SegmentTable.sum(buf, off, this.len)\n };\n }\n}\n","import initDebug from 'debug';\nimport * as Flac from '../../flac/FlacToken.js';\nimport { FlacParser } from '../../flac/FlacParser.js';\nimport { FourCcToken } from '../../common/FourCC.js';\nimport { VorbisPictureToken } from '../vorbis/Vorbis.js';\nconst debug = initDebug('music-metadata:parser:ogg:theora');\n/**\n * Ref:\n * - https://xiph.org/flac/ogg_mapping.html\n */\nexport class FlacStream {\n constructor(metadata, options, tokenizer) {\n this.durationOnLastPage = false;\n this.metadata = metadata;\n this.options = options;\n this.tokenizer = tokenizer;\n this.flacParser = new FlacParser(this.metadata, this.tokenizer, options);\n }\n /**\n * Vorbis 1 parser\n * @param header Ogg Page Header\n * @param pageData Page data\n */\n async parsePage(header, pageData) {\n if (header.headerType.firstPage) {\n await this.parseFirstPage(header, pageData);\n }\n }\n calculateDuration() {\n debug('duration calculation not implemented');\n }\n /**\n * Parse first Theora Ogg page. the initial identification header packet\n */\n async parseFirstPage(_header, pageData) {\n debug('First Ogg/FLAC page');\n const fourCC = await FourCcToken.get(pageData, 9);\n if (fourCC.toString() !== 'fLaC') {\n throw new Error('Invalid FLAC preamble');\n }\n const blockHeader = await Flac.BlockHeader.get(pageData, 13);\n await this.parseDataBlock(blockHeader, pageData.subarray(13 + Flac.BlockHeader.len));\n }\n async parseDataBlock(blockHeader, pageData) {\n debug(`blockHeader type=${blockHeader.type}, length=${blockHeader.length}`);\n switch (blockHeader.type) {\n case Flac.BlockType.STREAMINFO: {\n const streamInfo = Flac.BlockStreamInfo.get(pageData, 0);\n return this.flacParser.processsStreamInfo(streamInfo);\n }\n case Flac.BlockType.PADDING:\n break;\n case Flac.BlockType.APPLICATION:\n break;\n case Flac.BlockType.SEEKTABLE:\n break;\n case Flac.BlockType.VORBIS_COMMENT:\n return this.flacParser.parseComment(pageData);\n case Flac.BlockType.PICTURE:\n if (!this.options.skipCovers) {\n const picture = new VorbisPictureToken(pageData.length).get(pageData, 0);\n return this.flacParser.addPictureTag(picture);\n }\n break;\n default:\n this.metadata.addWarning(`Unknown block type: ${blockHeader.type}`);\n }\n // Ignore data block\n return this.tokenizer.ignore(blockHeader.length).then();\n }\n flush() {\n return Promise.resolve();\n }\n}\n"],"mappings":"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","names":["import_debug","OpusContentError","makeUnexpectedFileContentError","__name","IdHeader","len","buf","off","StringType","UINT8","UINT16_LE","UINT32_LE","OpusStream","VorbisStream","__name","metadata","options","tokenizer","_header","pageData","IdHeader","OpusContentError","StringType","enfOfStream","pos_48bit","dataSize","import_debug","Header","__name","buf","off","StringType","trimRightNull","INT32_LE","debug","initDebug","SpeexStream","VorbisStream","__name","metadata","options","_tokenizer","_header","pageData","speexHeader","Header","import_debug","IdentificationHeader","__name","buf","off","StringType","UINT8","UINT16_BE","UINT24_BE","debug","initDebug","TheoraStream","__name","metadata","_options","_tokenizer","header","pageData","_header","idHeader","IdentificationHeader","PageHeader","__name","buf","off","StringType","UINT8","getBit","UINT64_LE","UINT32_LE","SegmentTable","_SegmentTable","len","dv","s","i","header","import_debug","debug","initDebug","FlacStream","__name","metadata","options","tokenizer","FlacParser","header","pageData","_header","FourCcToken","blockHeader","BlockHeader","BlockType","streamInfo","BlockStreamInfo","picture","VorbisPictureToken","OggContentError","makeUnexpectedFileContentError","__name","debug","initDebug","OggStream","metadata","streamSerial","options","tokenizer","header","segmentTable","SegmentTable","pageData","Uint8ArrayType","idData","asciiId","b","VorbisStream","OpusStream","SpeexStream","TheoraStream","FlacStream","OggParser","BasicParser","enfOfStream","PageHeader","stream","item","err","EndOfStreamError"],"sourceRoot":"","file":"/OggParser-ZLVT63EM.js.map"} \ No newline at end of file diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/WavPackParser-KLZ65ZHU.js b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/WavPackParser-KLZ65ZHU.js similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/WavPackParser-KLZ65ZHU.js rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/WavPackParser-KLZ65ZHU.js diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/WavPackParser-KLZ65ZHU.js.br b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/WavPackParser-KLZ65ZHU.js.br similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/WavPackParser-KLZ65ZHU.js.br rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/WavPackParser-KLZ65ZHU.js.br diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/WavPackParser-KLZ65ZHU.js.map b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/WavPackParser-KLZ65ZHU.js.map similarity index 99% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/WavPackParser-KLZ65ZHU.js.map rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/WavPackParser-KLZ65ZHU.js.map index 32235582..6bb90164 100644 --- a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/WavPackParser-KLZ65ZHU.js.map +++ b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/WavPackParser-KLZ65ZHU.js.map @@ -1 +1 @@ -{"version":3,"sources":["/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/wavpack/WavPackToken.js","/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/wavpack/WavPackParser.js"],"sourcesContent":["import * as Token from 'token-types';\nimport { FourCcToken } from '../common/FourCC.js';\nconst SampleRates = [6000, 8000, 9600, 11025, 12000, 16000, 22050, 24000, 32000, 44100,\n 48000, 64000, 88200, 96000, 192000, -1];\n/**\n * WavPack Block Header\n *\n * 32-byte little-endian header at the front of every WavPack block\n *\n * Ref: http://www.wavpack.com/WavPack5FileFormat.pdf (page 2/6: 2.0 \"Block Header\")\n */\nexport const BlockHeaderToken = {\n len: 32,\n get: (buf, off) => {\n const flags = Token.UINT32_LE.get(buf, off + 24);\n const res = {\n // should equal 'wvpk'\n BlockID: FourCcToken.get(buf, off),\n // 0x402 to 0x410 are valid for decode\n blockSize: Token.UINT32_LE.get(buf, off + 4),\n // 0x402 (1026) to 0x410 are valid for decode\n version: Token.UINT16_LE.get(buf, off + 8),\n // 40-bit total samples for entire file (if block_index == 0 and a value of -1 indicates an unknown length)\n totalSamples: /* replace with bigint? (Token.UINT8.get(buf, off + 11) << 32) + */ Token.UINT32_LE.get(buf, off + 12),\n // 40-bit block_index\n blockIndex: /* replace with bigint? (Token.UINT8.get(buf, off + 10) << 32) + */ Token.UINT32_LE.get(buf, off + 16),\n // 40-bit total samples for entire file (if block_index == 0 and a value of -1 indicates an unknown length)\n blockSamples: Token.UINT32_LE.get(buf, off + 20),\n // various flags for id and decoding\n flags: {\n bitsPerSample: (1 + getBitAllignedNumber(flags, 0, 2)) * 8,\n isMono: isBitSet(flags, 2),\n isHybrid: isBitSet(flags, 3),\n isJointStereo: isBitSet(flags, 4),\n crossChannel: isBitSet(flags, 5),\n hybridNoiseShaping: isBitSet(flags, 6),\n floatingPoint: isBitSet(flags, 7),\n samplingRate: SampleRates[getBitAllignedNumber(flags, 23, 4)],\n isDSD: isBitSet(flags, 31)\n },\n // crc for actual decoded data\n crc: new Token.Uint8ArrayType(4).get(buf, off + 28)\n };\n if (res.flags.isDSD) {\n res.totalSamples *= 8;\n }\n return res;\n }\n};\n/**\n * 3.0 Metadata Sub-Blocks\n * Ref: http://www.wavpack.com/WavPack5FileFormat.pdf (page 4/6: 3.0 \"Metadata Sub-Block\")\n */\nexport const MetadataIdToken = {\n len: 1,\n get: (buf, off) => {\n return {\n functionId: getBitAllignedNumber(buf[off], 0, 6), // functionId overlaps with isOptional flag\n isOptional: isBitSet(buf[off], 5),\n isOddSize: isBitSet(buf[off], 6),\n largeBlock: isBitSet(buf[off], 7)\n };\n }\n};\nfunction isBitSet(flags, bitOffset) {\n return getBitAllignedNumber(flags, bitOffset, 1) === 1;\n}\nfunction getBitAllignedNumber(flags, bitOffset, len) {\n return (flags >>> bitOffset) & (0xffffffff >>> (32 - len));\n}\n","import * as Token from 'token-types';\nimport { tryParseApeHeader } from '../apev2/APEv2Parser.js';\nimport { FourCcToken } from '../common/FourCC.js';\nimport { BasicParser } from '../common/BasicParser.js';\nimport { BlockHeaderToken, MetadataIdToken } from './WavPackToken.js';\nimport initDebug from 'debug';\nimport { uint8ArrayToHex } from 'uint8array-extras';\nimport { makeUnexpectedFileContentError } from '../ParseError.js';\nconst debug = initDebug('music-metadata:parser:WavPack');\nexport class WavPackContentError extends makeUnexpectedFileContentError('WavPack') {\n}\n/**\n * WavPack Parser\n */\nexport class WavPackParser extends BasicParser {\n constructor() {\n super(...arguments);\n this.audioDataSize = 0;\n }\n async parse() {\n this.metadata.setAudioOnly();\n this.audioDataSize = 0;\n // First parse all WavPack blocks\n await this.parseWavPackBlocks();\n // try to parse APEv2 header\n return tryParseApeHeader(this.metadata, this.tokenizer, this.options);\n }\n async parseWavPackBlocks() {\n do {\n const blockId = await this.tokenizer.peekToken(FourCcToken);\n if (blockId !== 'wvpk')\n break;\n const header = await this.tokenizer.readToken(BlockHeaderToken);\n if (header.BlockID !== 'wvpk')\n throw new WavPackContentError('Invalid WavPack Block-ID');\n debug(`WavPack header blockIndex=${header.blockIndex}, len=${BlockHeaderToken.len}`);\n if (header.blockIndex === 0 && !this.metadata.format.container) {\n this.metadata.setFormat('container', 'WavPack');\n this.metadata.setFormat('lossless', !header.flags.isHybrid);\n // tagTypes: this.type,\n this.metadata.setFormat('bitsPerSample', header.flags.bitsPerSample);\n if (!header.flags.isDSD) {\n // In case isDSD, these values will ne set in ID_DSD_BLOCK\n this.metadata.setFormat('sampleRate', header.flags.samplingRate);\n this.metadata.setFormat('duration', header.totalSamples / header.flags.samplingRate);\n }\n this.metadata.setFormat('numberOfChannels', header.flags.isMono ? 1 : 2);\n this.metadata.setFormat('numberOfSamples', header.totalSamples);\n this.metadata.setFormat('codec', header.flags.isDSD ? 'DSD' : 'PCM');\n }\n const ignoreBytes = header.blockSize - (BlockHeaderToken.len - 8);\n await (header.blockIndex === 0 ? this.parseMetadataSubBlock(header, ignoreBytes) : this.tokenizer.ignore(ignoreBytes));\n if (header.blockSamples > 0) {\n this.audioDataSize += header.blockSize; // Count audio data for bit-rate calculation\n }\n } while (!this.tokenizer.fileInfo.size || this.tokenizer.fileInfo.size - this.tokenizer.position >= BlockHeaderToken.len);\n if (this.metadata.format.duration) {\n this.metadata.setFormat('bitrate', this.audioDataSize * 8 / this.metadata.format.duration);\n }\n }\n /**\n * Ref: http://www.wavpack.com/WavPack5FileFormat.pdf, 3.0 Metadata Sub-blocks\n * @param header Header\n * @param remainingLength Remaining length\n */\n async parseMetadataSubBlock(header, remainingLength) {\n let remaining = remainingLength;\n while (remaining > MetadataIdToken.len) {\n const id = await this.tokenizer.readToken(MetadataIdToken);\n const dataSizeInWords = await this.tokenizer.readNumber(id.largeBlock ? Token.UINT24_LE : Token.UINT8);\n const data = new Uint8Array(dataSizeInWords * 2 - (id.isOddSize ? 1 : 0));\n await this.tokenizer.readBuffer(data);\n debug(`Metadata Sub-Blocks functionId=0x${id.functionId.toString(16)}, id.largeBlock=${id.largeBlock},data-size=${data.length}`);\n switch (id.functionId) {\n case 0x0: // ID_DUMMY: could be used to pad WavPack blocks\n break;\n case 0xe: { // ID_DSD_BLOCK\n debug('ID_DSD_BLOCK');\n // https://github.com/dbry/WavPack/issues/71#issuecomment-483094813\n const mp = 1 << Token.UINT8.get(data, 0);\n const samplingRate = header.flags.samplingRate * mp * 8; // ToDo: second factor should be read from DSD-metadata block https://github.com/dbry/WavPack/issues/71#issuecomment-483094813\n if (!header.flags.isDSD)\n throw new WavPackContentError('Only expect DSD block if DSD-flag is set');\n this.metadata.setFormat('sampleRate', samplingRate);\n this.metadata.setFormat('duration', header.totalSamples / samplingRate);\n break;\n }\n case 0x24: // ID_ALT_TRAILER: maybe used to embed original ID3 tag header\n debug('ID_ALT_TRAILER: trailer for non-wav files');\n break;\n case 0x26: // ID_MD5_CHECKSUM\n this.metadata.setFormat('audioMD5', data);\n break;\n case 0x2f: // ID_BLOCK_CHECKSUM\n debug(`ID_BLOCK_CHECKSUM: checksum=${uint8ArrayToHex(data)}`);\n break;\n default:\n debug(`Ignore unsupported meta-sub-block-id functionId=0x${id.functionId.toString(16)}`);\n break;\n }\n remaining -= MetadataIdToken.len + (id.largeBlock ? Token.UINT24_LE.len : Token.UINT8.len) + dataSizeInWords * 2;\n debug(`remainingLength=${remaining}`);\n if (id.isOddSize)\n this.tokenizer.ignore(1);\n }\n if (remaining !== 0)\n throw new WavPackContentError('metadata-sub-block should fit it remaining length');\n }\n}\n"],"mappings":"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","names":["SampleRates","BlockHeaderToken","__name","buf","off","flags","UINT32_LE","res","FourCcToken","UINT16_LE","getBitAllignedNumber","isBitSet","Uint8ArrayType","MetadataIdToken","bitOffset","len","import_debug","debug","initDebug","WavPackContentError","makeUnexpectedFileContentError","__name","WavPackParser","BasicParser","tryParseApeHeader","FourCcToken","header","BlockHeaderToken","ignoreBytes","remainingLength","remaining","MetadataIdToken","id","dataSizeInWords","UINT24_LE","UINT8","data","mp","samplingRate","uint8ArrayToHex"],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse","file":"/WavPackParser-KLZ65ZHU.js.map"} \ No newline at end of file +{"version":3,"sources":["/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/wavpack/WavPackToken.js","/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/wavpack/WavPackParser.js"],"sourcesContent":["import * as Token from 'token-types';\nimport { FourCcToken } from '../common/FourCC.js';\nconst SampleRates = [6000, 8000, 9600, 11025, 12000, 16000, 22050, 24000, 32000, 44100,\n 48000, 64000, 88200, 96000, 192000, -1];\n/**\n * WavPack Block Header\n *\n * 32-byte little-endian header at the front of every WavPack block\n *\n * Ref: http://www.wavpack.com/WavPack5FileFormat.pdf (page 2/6: 2.0 \"Block Header\")\n */\nexport const BlockHeaderToken = {\n len: 32,\n get: (buf, off) => {\n const flags = Token.UINT32_LE.get(buf, off + 24);\n const res = {\n // should equal 'wvpk'\n BlockID: FourCcToken.get(buf, off),\n // 0x402 to 0x410 are valid for decode\n blockSize: Token.UINT32_LE.get(buf, off + 4),\n // 0x402 (1026) to 0x410 are valid for decode\n version: Token.UINT16_LE.get(buf, off + 8),\n // 40-bit total samples for entire file (if block_index == 0 and a value of -1 indicates an unknown length)\n totalSamples: /* replace with bigint? (Token.UINT8.get(buf, off + 11) << 32) + */ Token.UINT32_LE.get(buf, off + 12),\n // 40-bit block_index\n blockIndex: /* replace with bigint? (Token.UINT8.get(buf, off + 10) << 32) + */ Token.UINT32_LE.get(buf, off + 16),\n // 40-bit total samples for entire file (if block_index == 0 and a value of -1 indicates an unknown length)\n blockSamples: Token.UINT32_LE.get(buf, off + 20),\n // various flags for id and decoding\n flags: {\n bitsPerSample: (1 + getBitAllignedNumber(flags, 0, 2)) * 8,\n isMono: isBitSet(flags, 2),\n isHybrid: isBitSet(flags, 3),\n isJointStereo: isBitSet(flags, 4),\n crossChannel: isBitSet(flags, 5),\n hybridNoiseShaping: isBitSet(flags, 6),\n floatingPoint: isBitSet(flags, 7),\n samplingRate: SampleRates[getBitAllignedNumber(flags, 23, 4)],\n isDSD: isBitSet(flags, 31)\n },\n // crc for actual decoded data\n crc: new Token.Uint8ArrayType(4).get(buf, off + 28)\n };\n if (res.flags.isDSD) {\n res.totalSamples *= 8;\n }\n return res;\n }\n};\n/**\n * 3.0 Metadata Sub-Blocks\n * Ref: http://www.wavpack.com/WavPack5FileFormat.pdf (page 4/6: 3.0 \"Metadata Sub-Block\")\n */\nexport const MetadataIdToken = {\n len: 1,\n get: (buf, off) => {\n return {\n functionId: getBitAllignedNumber(buf[off], 0, 6), // functionId overlaps with isOptional flag\n isOptional: isBitSet(buf[off], 5),\n isOddSize: isBitSet(buf[off], 6),\n largeBlock: isBitSet(buf[off], 7)\n };\n }\n};\nfunction isBitSet(flags, bitOffset) {\n return getBitAllignedNumber(flags, bitOffset, 1) === 1;\n}\nfunction getBitAllignedNumber(flags, bitOffset, len) {\n return (flags >>> bitOffset) & (0xffffffff >>> (32 - len));\n}\n","import * as Token from 'token-types';\nimport { tryParseApeHeader } from '../apev2/APEv2Parser.js';\nimport { FourCcToken } from '../common/FourCC.js';\nimport { BasicParser } from '../common/BasicParser.js';\nimport { BlockHeaderToken, MetadataIdToken } from './WavPackToken.js';\nimport initDebug from 'debug';\nimport { uint8ArrayToHex } from 'uint8array-extras';\nimport { makeUnexpectedFileContentError } from '../ParseError.js';\nconst debug = initDebug('music-metadata:parser:WavPack');\nexport class WavPackContentError extends makeUnexpectedFileContentError('WavPack') {\n}\n/**\n * WavPack Parser\n */\nexport class WavPackParser extends BasicParser {\n constructor() {\n super(...arguments);\n this.audioDataSize = 0;\n }\n async parse() {\n this.metadata.setAudioOnly();\n this.audioDataSize = 0;\n // First parse all WavPack blocks\n await this.parseWavPackBlocks();\n // try to parse APEv2 header\n return tryParseApeHeader(this.metadata, this.tokenizer, this.options);\n }\n async parseWavPackBlocks() {\n do {\n const blockId = await this.tokenizer.peekToken(FourCcToken);\n if (blockId !== 'wvpk')\n break;\n const header = await this.tokenizer.readToken(BlockHeaderToken);\n if (header.BlockID !== 'wvpk')\n throw new WavPackContentError('Invalid WavPack Block-ID');\n debug(`WavPack header blockIndex=${header.blockIndex}, len=${BlockHeaderToken.len}`);\n if (header.blockIndex === 0 && !this.metadata.format.container) {\n this.metadata.setFormat('container', 'WavPack');\n this.metadata.setFormat('lossless', !header.flags.isHybrid);\n // tagTypes: this.type,\n this.metadata.setFormat('bitsPerSample', header.flags.bitsPerSample);\n if (!header.flags.isDSD) {\n // In case isDSD, these values will ne set in ID_DSD_BLOCK\n this.metadata.setFormat('sampleRate', header.flags.samplingRate);\n this.metadata.setFormat('duration', header.totalSamples / header.flags.samplingRate);\n }\n this.metadata.setFormat('numberOfChannels', header.flags.isMono ? 1 : 2);\n this.metadata.setFormat('numberOfSamples', header.totalSamples);\n this.metadata.setFormat('codec', header.flags.isDSD ? 'DSD' : 'PCM');\n }\n const ignoreBytes = header.blockSize - (BlockHeaderToken.len - 8);\n await (header.blockIndex === 0 ? this.parseMetadataSubBlock(header, ignoreBytes) : this.tokenizer.ignore(ignoreBytes));\n if (header.blockSamples > 0) {\n this.audioDataSize += header.blockSize; // Count audio data for bit-rate calculation\n }\n } while (!this.tokenizer.fileInfo.size || this.tokenizer.fileInfo.size - this.tokenizer.position >= BlockHeaderToken.len);\n if (this.metadata.format.duration) {\n this.metadata.setFormat('bitrate', this.audioDataSize * 8 / this.metadata.format.duration);\n }\n }\n /**\n * Ref: http://www.wavpack.com/WavPack5FileFormat.pdf, 3.0 Metadata Sub-blocks\n * @param header Header\n * @param remainingLength Remaining length\n */\n async parseMetadataSubBlock(header, remainingLength) {\n let remaining = remainingLength;\n while (remaining > MetadataIdToken.len) {\n const id = await this.tokenizer.readToken(MetadataIdToken);\n const dataSizeInWords = await this.tokenizer.readNumber(id.largeBlock ? Token.UINT24_LE : Token.UINT8);\n const data = new Uint8Array(dataSizeInWords * 2 - (id.isOddSize ? 1 : 0));\n await this.tokenizer.readBuffer(data);\n debug(`Metadata Sub-Blocks functionId=0x${id.functionId.toString(16)}, id.largeBlock=${id.largeBlock},data-size=${data.length}`);\n switch (id.functionId) {\n case 0x0: // ID_DUMMY: could be used to pad WavPack blocks\n break;\n case 0xe: { // ID_DSD_BLOCK\n debug('ID_DSD_BLOCK');\n // https://github.com/dbry/WavPack/issues/71#issuecomment-483094813\n const mp = 1 << Token.UINT8.get(data, 0);\n const samplingRate = header.flags.samplingRate * mp * 8; // ToDo: second factor should be read from DSD-metadata block https://github.com/dbry/WavPack/issues/71#issuecomment-483094813\n if (!header.flags.isDSD)\n throw new WavPackContentError('Only expect DSD block if DSD-flag is set');\n this.metadata.setFormat('sampleRate', samplingRate);\n this.metadata.setFormat('duration', header.totalSamples / samplingRate);\n break;\n }\n case 0x24: // ID_ALT_TRAILER: maybe used to embed original ID3 tag header\n debug('ID_ALT_TRAILER: trailer for non-wav files');\n break;\n case 0x26: // ID_MD5_CHECKSUM\n this.metadata.setFormat('audioMD5', data);\n break;\n case 0x2f: // ID_BLOCK_CHECKSUM\n debug(`ID_BLOCK_CHECKSUM: checksum=${uint8ArrayToHex(data)}`);\n break;\n default:\n debug(`Ignore unsupported meta-sub-block-id functionId=0x${id.functionId.toString(16)}`);\n break;\n }\n remaining -= MetadataIdToken.len + (id.largeBlock ? Token.UINT24_LE.len : Token.UINT8.len) + dataSizeInWords * 2;\n debug(`remainingLength=${remaining}`);\n if (id.isOddSize)\n this.tokenizer.ignore(1);\n }\n if (remaining !== 0)\n throw new WavPackContentError('metadata-sub-block should fit it remaining length');\n }\n}\n"],"mappings":"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","names":["SampleRates","BlockHeaderToken","__name","buf","off","flags","UINT32_LE","res","FourCcToken","UINT16_LE","getBitAllignedNumber","isBitSet","Uint8ArrayType","MetadataIdToken","bitOffset","len","import_debug","debug","initDebug","WavPackContentError","makeUnexpectedFileContentError","__name","WavPackParser","BasicParser","tryParseApeHeader","FourCcToken","header","BlockHeaderToken","ignoreBytes","remainingLength","remaining","MetadataIdToken","id","dataSizeInWords","UINT24_LE","UINT8","data","mp","samplingRate","uint8ArrayToHex"],"sourceRoot":"","file":"/WavPackParser-KLZ65ZHU.js.map"} \ No newline at end of file diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/WaveParser-OIX4G4ED.js b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/WaveParser-OIX4G4ED.js similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/WaveParser-OIX4G4ED.js rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/WaveParser-OIX4G4ED.js diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/WaveParser-OIX4G4ED.js.br b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/WaveParser-OIX4G4ED.js.br similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/WaveParser-OIX4G4ED.js.br rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/WaveParser-OIX4G4ED.js.br diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/WaveParser-OIX4G4ED.js.map b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/WaveParser-OIX4G4ED.js.map similarity index 99% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/WaveParser-OIX4G4ED.js.map rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/WaveParser-OIX4G4ED.js.map index 3b80b150..7456577c 100644 --- a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/WaveParser-OIX4G4ED.js.map +++ b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/WaveParser-OIX4G4ED.js.map @@ -1 +1 @@ -{"version":3,"sources":["/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/wav/WaveParser.js","/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/riff/RiffChunk.js","/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/wav/WaveChunk.js","/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/wav/BwfChunk.js"],"sourcesContent":["import * as strtok3 from 'strtok3';\nimport * as Token from 'token-types';\nimport initDebug from 'debug';\nimport * as riff from '../riff/RiffChunk.js';\nimport * as WaveChunk from './WaveChunk.js';\nimport { ID3v2Parser } from '../id3v2/ID3v2Parser.js';\nimport * as util from '../common/Util.js';\nimport { FourCcToken } from '../common/FourCC.js';\nimport { BasicParser } from '../common/BasicParser.js';\nimport { BroadcastAudioExtensionChunk } from './BwfChunk.js';\nimport { WaveContentError } from './WaveChunk.js';\nconst debug = initDebug('music-metadata:parser:RIFF');\n/**\n * Resource Interchange File Format (RIFF) Parser\n *\n * WAVE PCM soundfile format\n *\n * Ref:\n * - http://www.johnloomis.org/cpe102/asgn/asgn1/riff.html\n * - http://soundfile.sapp.org/doc/WaveFormat\n *\n * ToDo: Split WAVE part from RIFF parser\n */\nexport class WaveParser extends BasicParser {\n constructor() {\n super(...arguments);\n this.blockAlign = 0;\n this.avgBytesPerSec = 0;\n }\n async parse() {\n const riffHeader = await this.tokenizer.readToken(riff.Header);\n debug(`pos=${this.tokenizer.position}, parse: chunkID=${riffHeader.chunkID}`);\n if (riffHeader.chunkID !== 'RIFF')\n return; // Not RIFF format\n this.metadata.setAudioOnly();\n return this.parseRiffChunk(riffHeader.chunkSize).catch(err => {\n if (!(err instanceof strtok3.EndOfStreamError)) {\n throw err;\n }\n });\n }\n async parseRiffChunk(chunkSize) {\n const type = await this.tokenizer.readToken(FourCcToken);\n this.metadata.setFormat('container', type);\n switch (type) {\n case 'WAVE':\n return this.readWaveChunk(chunkSize - FourCcToken.len);\n default:\n throw new WaveContentError(`Unsupported RIFF format: RIFF/${type}`);\n }\n }\n async readWaveChunk(remaining) {\n while (remaining >= riff.Header.len) {\n const header = await this.tokenizer.readToken(riff.Header);\n remaining -= riff.Header.len + header.chunkSize;\n if (header.chunkSize > remaining) {\n this.metadata.addWarning('Data chunk size exceeds file size');\n }\n this.header = header;\n debug(`pos=${this.tokenizer.position}, readChunk: chunkID=RIFF/WAVE/${header.chunkID}`);\n switch (header.chunkID) {\n case 'LIST':\n await this.parseListTag(header);\n break;\n case 'fact': // extended Format chunk,\n this.metadata.setFormat('lossless', false);\n this.fact = await this.tokenizer.readToken(new WaveChunk.FactChunk(header));\n break;\n case 'fmt ': { // The Util Chunk, non-PCM Formats\n const fmt = await this.tokenizer.readToken(new WaveChunk.Format(header));\n let subFormat = WaveChunk.WaveFormatNameMap[fmt.wFormatTag];\n if (!subFormat) {\n debug(`WAVE/non-PCM format=${fmt.wFormatTag}`);\n subFormat = `non-PCM (${fmt.wFormatTag})`;\n }\n this.metadata.setFormat('codec', subFormat);\n this.metadata.setFormat('bitsPerSample', fmt.wBitsPerSample);\n this.metadata.setFormat('sampleRate', fmt.nSamplesPerSec);\n this.metadata.setFormat('numberOfChannels', fmt.nChannels);\n this.blockAlign = fmt.nBlockAlign;\n this.avgBytesPerSec = fmt.nAvgBytesPerSec;\n break;\n }\n case 'id3 ': // The way Picard, FooBar currently stores, ID3 meta-data\n case 'ID3 ': { // The way Mp3Tags stores ID3 meta-data\n const id3_data = await this.tokenizer.readToken(new Token.Uint8ArrayType(header.chunkSize));\n const rst = strtok3.fromBuffer(id3_data);\n await new ID3v2Parser().parse(this.metadata, rst, this.options);\n break;\n }\n case 'data': { // PCM-data\n if (this.metadata.format.lossless !== false) {\n this.metadata.setFormat('lossless', true);\n }\n let chunkSize = header.chunkSize;\n if (this.tokenizer.fileInfo.size) {\n const calcRemaining = this.tokenizer.fileInfo.size - this.tokenizer.position;\n if (calcRemaining < chunkSize) {\n this.metadata.addWarning('data chunk length exceeding file length');\n chunkSize = calcRemaining;\n }\n }\n const numberOfSamples = this.fact ? this.fact.dwSampleLength : (chunkSize === 0xffffffff ? undefined : chunkSize / this.blockAlign);\n if (numberOfSamples) {\n this.metadata.setFormat('numberOfSamples', numberOfSamples);\n if (this.metadata.format.sampleRate) {\n this.metadata.setFormat('duration', numberOfSamples / this.metadata.format.sampleRate);\n }\n }\n if (this.avgBytesPerSec > 0) {\n this.metadata.setFormat('bitrate', this.avgBytesPerSec * 8);\n }\n else if (this.metadata.format.duration) {\n this.metadata.setFormat('bitrate', chunkSize * 8 / this.metadata.format.duration);\n }\n await this.tokenizer.ignore(header.chunkSize);\n break;\n }\n case 'bext': { // Broadcast Audio Extension chunk\thttps://tech.ebu.ch/docs/tech/tech3285.pdf\n const bext = await this.tokenizer.readToken(BroadcastAudioExtensionChunk);\n Object.keys(bext).forEach(key => {\n this.metadata.addTag('exif', `bext.${key}`, bext[key]);\n });\n const bextRemaining = header.chunkSize - BroadcastAudioExtensionChunk.len;\n await this.tokenizer.ignore(bextRemaining);\n break;\n }\n case '\\x00\\x00\\x00\\x00': // padding ??\n debug(`Ignore padding chunk: RIFF/${header.chunkID} of ${header.chunkSize} bytes`);\n this.metadata.addWarning(`Ignore chunk: RIFF/${header.chunkID}`);\n await this.tokenizer.ignore(header.chunkSize);\n break;\n default:\n debug(`Ignore chunk: RIFF/${header.chunkID} of ${header.chunkSize} bytes`);\n this.metadata.addWarning(`Ignore chunk: RIFF/${header.chunkID}`);\n await this.tokenizer.ignore(header.chunkSize);\n }\n if (this.header.chunkSize % 2 === 1) {\n debug('Read odd padding byte'); // https://wiki.multimedia.cx/index.php/RIFF\n await this.tokenizer.ignore(1);\n }\n }\n }\n async parseListTag(listHeader) {\n const listType = await this.tokenizer.readToken(new Token.StringType(4, 'latin1'));\n debug('pos=%s, parseListTag: chunkID=RIFF/WAVE/LIST/%s', this.tokenizer.position, listType);\n switch (listType) {\n case 'INFO':\n return this.parseRiffInfoTags(listHeader.chunkSize - 4);\n default:\n this.metadata.addWarning(`Ignore chunk: RIFF/WAVE/LIST/${listType}`);\n debug(`Ignoring chunkID=RIFF/WAVE/LIST/${listType}`);\n return this.tokenizer.ignore(listHeader.chunkSize - 4).then();\n }\n }\n async parseRiffInfoTags(chunkSize) {\n while (chunkSize >= 8) {\n const header = await this.tokenizer.readToken(riff.Header);\n const valueToken = new riff.ListInfoTagValue(header);\n const value = await this.tokenizer.readToken(valueToken);\n this.addTag(header.chunkID, util.stripNulls(value));\n chunkSize -= (8 + valueToken.len);\n }\n if (chunkSize !== 0) {\n throw new WaveContentError(`Illegal remaining size: ${chunkSize}`);\n }\n }\n addTag(id, value) {\n this.metadata.addTag('exif', id, value);\n }\n}\n","import * as Token from 'token-types';\n/**\n * Common RIFF chunk header\n */\nexport const Header = {\n len: 8,\n get: (buf, off) => {\n return {\n // Group-ID\n chunkID: new Token.StringType(4, 'latin1').get(buf, off),\n // Size\n chunkSize: Token.UINT32_LE.get(buf, off + 4)\n };\n }\n};\n/**\n * Token to parse RIFF-INFO tag value\n */\nexport class ListInfoTagValue {\n constructor(tagHeader) {\n this.tagHeader = tagHeader;\n this.len = tagHeader.chunkSize;\n this.len += this.len & 1; // if it is an odd length, round up to even\n }\n get(buf, off) {\n return new Token.StringType(this.tagHeader.chunkSize, 'utf8').get(buf, off);\n }\n}\n","import * as Token from 'token-types';\nimport { makeUnexpectedFileContentError } from '../ParseError.js';\nexport class WaveContentError extends makeUnexpectedFileContentError('Wave') {\n}\n/**\n * Ref: https://msdn.microsoft.com/en-us/library/windows/desktop/dd317599(v=vs.85).aspx\n */\nexport const WaveFormat = {\n PCM: 0x0001,\n ADPCM: 0x0002,\n IEEE_FLOAT: 0x0003,\n ALAW: 0x0006,\n MULAW: 0x0007,\n DVI_ADPCM: 0x0011,\n GSM610: 0x0031,\n // MPEG-4 and AAC Audio Types\n MPEG_ADTS_AAC: 0x1600,\n MPEG_LOAS: 0x1602,\n RAW_AAC1: 0x00FF,\n // Dolby Audio Types\n DOLBY_AC3_SPDIF: 0x0092,\n DVM: 0x2000,\n RAW_SPORT: 0x0240,\n ESST_AC3: 0x0241,\n DRM: 0x0009,\n DTS2: 0x2001,\n MPEG: 0x0050,\n MPEGLAYER3: 0x0055\n};\nexport const WaveFormatNameMap = {\n [WaveFormat.PCM]: 'PCM',\n [WaveFormat.ADPCM]: 'ADPCM',\n [WaveFormat.IEEE_FLOAT]: 'IEEE_FLOAT',\n [WaveFormat.ALAW]: 'ALAW',\n [WaveFormat.MULAW]: 'MULAW',\n [WaveFormat.DVI_ADPCM]: 'DVI_ADPCM',\n [WaveFormat.GSM610]: 'GSM610',\n [WaveFormat.MPEG_ADTS_AAC]: 'MPEG_ADTS_AAC',\n [WaveFormat.MPEG_LOAS]: 'MPEG_LOAS',\n [WaveFormat.RAW_AAC1]: 'RAW_AAC1',\n [WaveFormat.DOLBY_AC3_SPDIF]: 'DOLBY_AC3_SPDIF',\n [WaveFormat.DVM]: 'DVM',\n [WaveFormat.RAW_SPORT]: 'RAW_SPORT',\n [WaveFormat.ESST_AC3]: 'ESST_AC3',\n [WaveFormat.DRM]: 'DRM',\n [WaveFormat.DTS2]: 'DTS2',\n [WaveFormat.MPEG]: 'MPEG',\n [WaveFormat.MPEGLAYER3]: 'MPEGLAYER3'\n};\n/**\n * format chunk; chunk-id is \"fmt \"\n * http://soundfile.sapp.org/doc/WaveFormat/\n */\nexport class Format {\n constructor(header) {\n if (header.chunkSize < 16)\n throw new WaveContentError('Invalid chunk size');\n this.len = header.chunkSize;\n }\n get(buf, off) {\n return {\n wFormatTag: Token.UINT16_LE.get(buf, off),\n nChannels: Token.UINT16_LE.get(buf, off + 2),\n nSamplesPerSec: Token.UINT32_LE.get(buf, off + 4),\n nAvgBytesPerSec: Token.UINT32_LE.get(buf, off + 8),\n nBlockAlign: Token.UINT16_LE.get(buf, off + 12),\n wBitsPerSample: Token.UINT16_LE.get(buf, off + 14)\n };\n }\n}\n/**\n * Fact chunk; chunk-id is \"fact\"\n * http://www-mmsp.ece.mcgill.ca/Documents/AudioFormats/WAVE/WAVE.html\n * http://www.recordingblogs.com/wiki/fact-chunk-of-a-wave-file\n */\nexport class FactChunk {\n constructor(header) {\n if (header.chunkSize < 4) {\n throw new WaveContentError('Invalid fact chunk size.');\n }\n this.len = header.chunkSize;\n }\n get(buf, off) {\n return {\n dwSampleLength: Token.UINT32_LE.get(buf, off)\n };\n }\n}\n","import * as Token from 'token-types';\nimport { stripNulls } from '../common/Util.js';\n/**\n * Broadcast Audio Extension Chunk\n * Ref: https://tech.ebu.ch/docs/tech/tech3285.pdf\n */\nexport const BroadcastAudioExtensionChunk = {\n len: 420,\n get: (uint8array, off) => {\n return {\n description: stripNulls(new Token.StringType(256, 'ascii').get(uint8array, off)).trim(),\n originator: stripNulls(new Token.StringType(32, 'ascii').get(uint8array, off + 256)).trim(),\n originatorReference: stripNulls(new Token.StringType(32, 'ascii').get(uint8array, off + 288)).trim(),\n originationDate: stripNulls(new Token.StringType(10, 'ascii').get(uint8array, off + 320)).trim(),\n originationTime: stripNulls(new Token.StringType(8, 'ascii').get(uint8array, off + 330)).trim(),\n timeReferenceLow: Token.UINT32_LE.get(uint8array, off + 338),\n timeReferenceHigh: Token.UINT32_LE.get(uint8array, off + 342),\n version: Token.UINT16_LE.get(uint8array, off + 346),\n umid: new Token.Uint8ArrayType(64).get(uint8array, off + 348),\n loudnessValue: Token.UINT16_LE.get(uint8array, off + 412),\n maxTruePeakLevel: Token.UINT16_LE.get(uint8array, off + 414),\n maxMomentaryLoudness: Token.UINT16_LE.get(uint8array, off + 416),\n maxShortTermLoudness: Token.UINT16_LE.get(uint8array, off + 418)\n };\n }\n};\n"],"mappings":"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","names":["import_debug","Header","__name","buf","off","StringType","UINT32_LE","ListInfoTagValue","tagHeader","WaveContentError","makeUnexpectedFileContentError","__name","WaveFormat","WaveFormatNameMap","Format","header","buf","off","UINT16_LE","UINT32_LE","FactChunk","BroadcastAudioExtensionChunk","__name","uint8array","off","stripNulls","StringType","UINT32_LE","UINT16_LE","Uint8ArrayType","debug","initDebug","WaveParser","BasicParser","__name","riffHeader","Header","err","EndOfStreamError","chunkSize","type","FourCcToken","WaveContentError","remaining","header","FactChunk","fmt","Format","subFormat","WaveFormatNameMap","id3_data","Uint8ArrayType","rst","fromBuffer","ID3v2Parser","calcRemaining","numberOfSamples","bext","BroadcastAudioExtensionChunk","key","bextRemaining","listHeader","listType","StringType","valueToken","ListInfoTagValue","value","stripNulls","id"],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse","file":"/WaveParser-OIX4G4ED.js.map"} \ No newline at end of file +{"version":3,"sources":["/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/wav/WaveParser.js","/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/riff/RiffChunk.js","/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/wav/WaveChunk.js","/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/wav/BwfChunk.js"],"sourcesContent":["import * as strtok3 from 'strtok3';\nimport * as Token from 'token-types';\nimport initDebug from 'debug';\nimport * as riff from '../riff/RiffChunk.js';\nimport * as WaveChunk from './WaveChunk.js';\nimport { ID3v2Parser } from '../id3v2/ID3v2Parser.js';\nimport * as util from '../common/Util.js';\nimport { FourCcToken } from '../common/FourCC.js';\nimport { BasicParser } from '../common/BasicParser.js';\nimport { BroadcastAudioExtensionChunk } from './BwfChunk.js';\nimport { WaveContentError } from './WaveChunk.js';\nconst debug = initDebug('music-metadata:parser:RIFF');\n/**\n * Resource Interchange File Format (RIFF) Parser\n *\n * WAVE PCM soundfile format\n *\n * Ref:\n * - http://www.johnloomis.org/cpe102/asgn/asgn1/riff.html\n * - http://soundfile.sapp.org/doc/WaveFormat\n *\n * ToDo: Split WAVE part from RIFF parser\n */\nexport class WaveParser extends BasicParser {\n constructor() {\n super(...arguments);\n this.blockAlign = 0;\n this.avgBytesPerSec = 0;\n }\n async parse() {\n const riffHeader = await this.tokenizer.readToken(riff.Header);\n debug(`pos=${this.tokenizer.position}, parse: chunkID=${riffHeader.chunkID}`);\n if (riffHeader.chunkID !== 'RIFF')\n return; // Not RIFF format\n this.metadata.setAudioOnly();\n return this.parseRiffChunk(riffHeader.chunkSize).catch(err => {\n if (!(err instanceof strtok3.EndOfStreamError)) {\n throw err;\n }\n });\n }\n async parseRiffChunk(chunkSize) {\n const type = await this.tokenizer.readToken(FourCcToken);\n this.metadata.setFormat('container', type);\n switch (type) {\n case 'WAVE':\n return this.readWaveChunk(chunkSize - FourCcToken.len);\n default:\n throw new WaveContentError(`Unsupported RIFF format: RIFF/${type}`);\n }\n }\n async readWaveChunk(remaining) {\n while (remaining >= riff.Header.len) {\n const header = await this.tokenizer.readToken(riff.Header);\n remaining -= riff.Header.len + header.chunkSize;\n if (header.chunkSize > remaining) {\n this.metadata.addWarning('Data chunk size exceeds file size');\n }\n this.header = header;\n debug(`pos=${this.tokenizer.position}, readChunk: chunkID=RIFF/WAVE/${header.chunkID}`);\n switch (header.chunkID) {\n case 'LIST':\n await this.parseListTag(header);\n break;\n case 'fact': // extended Format chunk,\n this.metadata.setFormat('lossless', false);\n this.fact = await this.tokenizer.readToken(new WaveChunk.FactChunk(header));\n break;\n case 'fmt ': { // The Util Chunk, non-PCM Formats\n const fmt = await this.tokenizer.readToken(new WaveChunk.Format(header));\n let subFormat = WaveChunk.WaveFormatNameMap[fmt.wFormatTag];\n if (!subFormat) {\n debug(`WAVE/non-PCM format=${fmt.wFormatTag}`);\n subFormat = `non-PCM (${fmt.wFormatTag})`;\n }\n this.metadata.setFormat('codec', subFormat);\n this.metadata.setFormat('bitsPerSample', fmt.wBitsPerSample);\n this.metadata.setFormat('sampleRate', fmt.nSamplesPerSec);\n this.metadata.setFormat('numberOfChannels', fmt.nChannels);\n this.blockAlign = fmt.nBlockAlign;\n this.avgBytesPerSec = fmt.nAvgBytesPerSec;\n break;\n }\n case 'id3 ': // The way Picard, FooBar currently stores, ID3 meta-data\n case 'ID3 ': { // The way Mp3Tags stores ID3 meta-data\n const id3_data = await this.tokenizer.readToken(new Token.Uint8ArrayType(header.chunkSize));\n const rst = strtok3.fromBuffer(id3_data);\n await new ID3v2Parser().parse(this.metadata, rst, this.options);\n break;\n }\n case 'data': { // PCM-data\n if (this.metadata.format.lossless !== false) {\n this.metadata.setFormat('lossless', true);\n }\n let chunkSize = header.chunkSize;\n if (this.tokenizer.fileInfo.size) {\n const calcRemaining = this.tokenizer.fileInfo.size - this.tokenizer.position;\n if (calcRemaining < chunkSize) {\n this.metadata.addWarning('data chunk length exceeding file length');\n chunkSize = calcRemaining;\n }\n }\n const numberOfSamples = this.fact ? this.fact.dwSampleLength : (chunkSize === 0xffffffff ? undefined : chunkSize / this.blockAlign);\n if (numberOfSamples) {\n this.metadata.setFormat('numberOfSamples', numberOfSamples);\n if (this.metadata.format.sampleRate) {\n this.metadata.setFormat('duration', numberOfSamples / this.metadata.format.sampleRate);\n }\n }\n if (this.avgBytesPerSec > 0) {\n this.metadata.setFormat('bitrate', this.avgBytesPerSec * 8);\n }\n else if (this.metadata.format.duration) {\n this.metadata.setFormat('bitrate', chunkSize * 8 / this.metadata.format.duration);\n }\n await this.tokenizer.ignore(header.chunkSize);\n break;\n }\n case 'bext': { // Broadcast Audio Extension chunk\thttps://tech.ebu.ch/docs/tech/tech3285.pdf\n const bext = await this.tokenizer.readToken(BroadcastAudioExtensionChunk);\n Object.keys(bext).forEach(key => {\n this.metadata.addTag('exif', `bext.${key}`, bext[key]);\n });\n const bextRemaining = header.chunkSize - BroadcastAudioExtensionChunk.len;\n await this.tokenizer.ignore(bextRemaining);\n break;\n }\n case '\\x00\\x00\\x00\\x00': // padding ??\n debug(`Ignore padding chunk: RIFF/${header.chunkID} of ${header.chunkSize} bytes`);\n this.metadata.addWarning(`Ignore chunk: RIFF/${header.chunkID}`);\n await this.tokenizer.ignore(header.chunkSize);\n break;\n default:\n debug(`Ignore chunk: RIFF/${header.chunkID} of ${header.chunkSize} bytes`);\n this.metadata.addWarning(`Ignore chunk: RIFF/${header.chunkID}`);\n await this.tokenizer.ignore(header.chunkSize);\n }\n if (this.header.chunkSize % 2 === 1) {\n debug('Read odd padding byte'); // https://wiki.multimedia.cx/index.php/RIFF\n await this.tokenizer.ignore(1);\n }\n }\n }\n async parseListTag(listHeader) {\n const listType = await this.tokenizer.readToken(new Token.StringType(4, 'latin1'));\n debug('pos=%s, parseListTag: chunkID=RIFF/WAVE/LIST/%s', this.tokenizer.position, listType);\n switch (listType) {\n case 'INFO':\n return this.parseRiffInfoTags(listHeader.chunkSize - 4);\n default:\n this.metadata.addWarning(`Ignore chunk: RIFF/WAVE/LIST/${listType}`);\n debug(`Ignoring chunkID=RIFF/WAVE/LIST/${listType}`);\n return this.tokenizer.ignore(listHeader.chunkSize - 4).then();\n }\n }\n async parseRiffInfoTags(chunkSize) {\n while (chunkSize >= 8) {\n const header = await this.tokenizer.readToken(riff.Header);\n const valueToken = new riff.ListInfoTagValue(header);\n const value = await this.tokenizer.readToken(valueToken);\n this.addTag(header.chunkID, util.stripNulls(value));\n chunkSize -= (8 + valueToken.len);\n }\n if (chunkSize !== 0) {\n throw new WaveContentError(`Illegal remaining size: ${chunkSize}`);\n }\n }\n addTag(id, value) {\n this.metadata.addTag('exif', id, value);\n }\n}\n","import * as Token from 'token-types';\n/**\n * Common RIFF chunk header\n */\nexport const Header = {\n len: 8,\n get: (buf, off) => {\n return {\n // Group-ID\n chunkID: new Token.StringType(4, 'latin1').get(buf, off),\n // Size\n chunkSize: Token.UINT32_LE.get(buf, off + 4)\n };\n }\n};\n/**\n * Token to parse RIFF-INFO tag value\n */\nexport class ListInfoTagValue {\n constructor(tagHeader) {\n this.tagHeader = tagHeader;\n this.len = tagHeader.chunkSize;\n this.len += this.len & 1; // if it is an odd length, round up to even\n }\n get(buf, off) {\n return new Token.StringType(this.tagHeader.chunkSize, 'utf8').get(buf, off);\n }\n}\n","import * as Token from 'token-types';\nimport { makeUnexpectedFileContentError } from '../ParseError.js';\nexport class WaveContentError extends makeUnexpectedFileContentError('Wave') {\n}\n/**\n * Ref: https://msdn.microsoft.com/en-us/library/windows/desktop/dd317599(v=vs.85).aspx\n */\nexport const WaveFormat = {\n PCM: 0x0001,\n ADPCM: 0x0002,\n IEEE_FLOAT: 0x0003,\n ALAW: 0x0006,\n MULAW: 0x0007,\n DVI_ADPCM: 0x0011,\n GSM610: 0x0031,\n // MPEG-4 and AAC Audio Types\n MPEG_ADTS_AAC: 0x1600,\n MPEG_LOAS: 0x1602,\n RAW_AAC1: 0x00FF,\n // Dolby Audio Types\n DOLBY_AC3_SPDIF: 0x0092,\n DVM: 0x2000,\n RAW_SPORT: 0x0240,\n ESST_AC3: 0x0241,\n DRM: 0x0009,\n DTS2: 0x2001,\n MPEG: 0x0050,\n MPEGLAYER3: 0x0055\n};\nexport const WaveFormatNameMap = {\n [WaveFormat.PCM]: 'PCM',\n [WaveFormat.ADPCM]: 'ADPCM',\n [WaveFormat.IEEE_FLOAT]: 'IEEE_FLOAT',\n [WaveFormat.ALAW]: 'ALAW',\n [WaveFormat.MULAW]: 'MULAW',\n [WaveFormat.DVI_ADPCM]: 'DVI_ADPCM',\n [WaveFormat.GSM610]: 'GSM610',\n [WaveFormat.MPEG_ADTS_AAC]: 'MPEG_ADTS_AAC',\n [WaveFormat.MPEG_LOAS]: 'MPEG_LOAS',\n [WaveFormat.RAW_AAC1]: 'RAW_AAC1',\n [WaveFormat.DOLBY_AC3_SPDIF]: 'DOLBY_AC3_SPDIF',\n [WaveFormat.DVM]: 'DVM',\n [WaveFormat.RAW_SPORT]: 'RAW_SPORT',\n [WaveFormat.ESST_AC3]: 'ESST_AC3',\n [WaveFormat.DRM]: 'DRM',\n [WaveFormat.DTS2]: 'DTS2',\n [WaveFormat.MPEG]: 'MPEG',\n [WaveFormat.MPEGLAYER3]: 'MPEGLAYER3'\n};\n/**\n * format chunk; chunk-id is \"fmt \"\n * http://soundfile.sapp.org/doc/WaveFormat/\n */\nexport class Format {\n constructor(header) {\n if (header.chunkSize < 16)\n throw new WaveContentError('Invalid chunk size');\n this.len = header.chunkSize;\n }\n get(buf, off) {\n return {\n wFormatTag: Token.UINT16_LE.get(buf, off),\n nChannels: Token.UINT16_LE.get(buf, off + 2),\n nSamplesPerSec: Token.UINT32_LE.get(buf, off + 4),\n nAvgBytesPerSec: Token.UINT32_LE.get(buf, off + 8),\n nBlockAlign: Token.UINT16_LE.get(buf, off + 12),\n wBitsPerSample: Token.UINT16_LE.get(buf, off + 14)\n };\n }\n}\n/**\n * Fact chunk; chunk-id is \"fact\"\n * http://www-mmsp.ece.mcgill.ca/Documents/AudioFormats/WAVE/WAVE.html\n * http://www.recordingblogs.com/wiki/fact-chunk-of-a-wave-file\n */\nexport class FactChunk {\n constructor(header) {\n if (header.chunkSize < 4) {\n throw new WaveContentError('Invalid fact chunk size.');\n }\n this.len = header.chunkSize;\n }\n get(buf, off) {\n return {\n dwSampleLength: Token.UINT32_LE.get(buf, off)\n };\n }\n}\n","import * as Token from 'token-types';\nimport { stripNulls } from '../common/Util.js';\n/**\n * Broadcast Audio Extension Chunk\n * Ref: https://tech.ebu.ch/docs/tech/tech3285.pdf\n */\nexport const BroadcastAudioExtensionChunk = {\n len: 420,\n get: (uint8array, off) => {\n return {\n description: stripNulls(new Token.StringType(256, 'ascii').get(uint8array, off)).trim(),\n originator: stripNulls(new Token.StringType(32, 'ascii').get(uint8array, off + 256)).trim(),\n originatorReference: stripNulls(new Token.StringType(32, 'ascii').get(uint8array, off + 288)).trim(),\n originationDate: stripNulls(new Token.StringType(10, 'ascii').get(uint8array, off + 320)).trim(),\n originationTime: stripNulls(new Token.StringType(8, 'ascii').get(uint8array, off + 330)).trim(),\n timeReferenceLow: Token.UINT32_LE.get(uint8array, off + 338),\n timeReferenceHigh: Token.UINT32_LE.get(uint8array, off + 342),\n version: Token.UINT16_LE.get(uint8array, off + 346),\n umid: new Token.Uint8ArrayType(64).get(uint8array, off + 348),\n loudnessValue: Token.UINT16_LE.get(uint8array, off + 412),\n maxTruePeakLevel: Token.UINT16_LE.get(uint8array, off + 414),\n maxMomentaryLoudness: Token.UINT16_LE.get(uint8array, off + 416),\n maxShortTermLoudness: Token.UINT16_LE.get(uint8array, off + 418)\n };\n }\n};\n"],"mappings":"2VAEA,IAAAA,EAAsB,OCEf,IAAMC,EAAS,CAClB,IAAK,EACL,IAAKC,EAAA,CAACC,EAAKC,KACA,CAEH,QAAS,IAAUC,EAAW,EAAG,QAAQ,EAAE,IAAIF,EAAKC,CAAG,EAEvD,UAAiBE,EAAU,IAAIH,EAAKC,EAAM,CAAC,CAC/C,GANC,MAQT,EAIaG,EAAN,KAAuB,CAlB9B,MAkB8B,CAAAL,EAAA,yBAC1B,YAAYM,EAAW,CACnB,KAAK,UAAYA,EACjB,KAAK,IAAMA,EAAU,UACrB,KAAK,KAAO,KAAK,IAAM,CAC3B,CACA,IAAIL,EAAKC,EAAK,CACV,OAAO,IAAUC,EAAW,KAAK,UAAU,UAAW,MAAM,EAAE,IAAIF,EAAKC,CAAG,CAC9E,CACJ,ECzBO,IAAMK,EAAN,cAA+BC,EAA+B,MAAM,CAAE,CAF7E,MAE6E,CAAAC,EAAA,yBAC7E,EAIaC,EAAa,CACtB,IAAK,EACL,MAAO,EACP,WAAY,EACZ,KAAM,EACN,MAAO,EACP,UAAW,GACX,OAAQ,GAER,cAAe,KACf,UAAW,KACX,SAAU,IAEV,gBAAiB,IACjB,IAAK,KACL,UAAW,IACX,SAAU,IACV,IAAK,EACL,KAAM,KACN,KAAM,GACN,WAAY,EAChB,EACaC,EAAoB,CAC7B,CAACD,EAAW,GAAG,EAAG,MAClB,CAACA,EAAW,KAAK,EAAG,QACpB,CAACA,EAAW,UAAU,EAAG,aACzB,CAACA,EAAW,IAAI,EAAG,OACnB,CAACA,EAAW,KAAK,EAAG,QACpB,CAACA,EAAW,SAAS,EAAG,YACxB,CAACA,EAAW,MAAM,EAAG,SACrB,CAACA,EAAW,aAAa,EAAG,gBAC5B,CAACA,EAAW,SAAS,EAAG,YACxB,CAACA,EAAW,QAAQ,EAAG,WACvB,CAACA,EAAW,eAAe,EAAG,kBAC9B,CAACA,EAAW,GAAG,EAAG,MAClB,CAACA,EAAW,SAAS,EAAG,YACxB,CAACA,EAAW,QAAQ,EAAG,WACvB,CAACA,EAAW,GAAG,EAAG,MAClB,CAACA,EAAW,IAAI,EAAG,OACnB,CAACA,EAAW,IAAI,EAAG,OACnB,CAACA,EAAW,UAAU,EAAG,YAC7B,EAKaE,EAAN,KAAa,CArDpB,MAqDoB,CAAAH,EAAA,eAChB,YAAYI,EAAQ,CAChB,GAAIA,EAAO,UAAY,GACnB,MAAM,IAAIN,EAAiB,oBAAoB,EACnD,KAAK,IAAMM,EAAO,SACtB,CACA,IAAIC,EAAKC,EAAK,CACV,MAAO,CACH,WAAkBC,EAAU,IAAIF,EAAKC,CAAG,EACxC,UAAiBC,EAAU,IAAIF,EAAKC,EAAM,CAAC,EAC3C,eAAsBE,EAAU,IAAIH,EAAKC,EAAM,CAAC,EAChD,gBAAuBE,EAAU,IAAIH,EAAKC,EAAM,CAAC,EACjD,YAAmBC,EAAU,IAAIF,EAAKC,EAAM,EAAE,EAC9C,eAAsBC,EAAU,IAAIF,EAAKC,EAAM,EAAE,CACrD,CACJ,CACJ,EAMaG,EAAN,KAAgB,CA3EvB,MA2EuB,CAAAT,EAAA,kBACnB,YAAYI,EAAQ,CAChB,GAAIA,EAAO,UAAY,EACnB,MAAM,IAAIN,EAAiB,0BAA0B,EAEzD,KAAK,IAAMM,EAAO,SACtB,CACA,IAAIC,EAAKC,EAAK,CACV,MAAO,CACH,eAAsBE,EAAU,IAAIH,EAAKC,CAAG,CAChD,CACJ,CACJ,ECjFO,IAAMI,EAA+B,CACxC,IAAK,IACL,IAAKC,EAAA,CAACC,EAAYC,KACP,CACH,YAAaC,EAAW,IAAUC,EAAW,IAAK,OAAO,EAAE,IAAIH,EAAYC,CAAG,CAAC,EAAE,KAAK,EACtF,WAAYC,EAAW,IAAUC,EAAW,GAAI,OAAO,EAAE,IAAIH,EAAYC,EAAM,GAAG,CAAC,EAAE,KAAK,EAC1F,oBAAqBC,EAAW,IAAUC,EAAW,GAAI,OAAO,EAAE,IAAIH,EAAYC,EAAM,GAAG,CAAC,EAAE,KAAK,EACnG,gBAAiBC,EAAW,IAAUC,EAAW,GAAI,OAAO,EAAE,IAAIH,EAAYC,EAAM,GAAG,CAAC,EAAE,KAAK,EAC/F,gBAAiBC,EAAW,IAAUC,EAAW,EAAG,OAAO,EAAE,IAAIH,EAAYC,EAAM,GAAG,CAAC,EAAE,KAAK,EAC9F,iBAAwBG,EAAU,IAAIJ,EAAYC,EAAM,GAAG,EAC3D,kBAAyBG,EAAU,IAAIJ,EAAYC,EAAM,GAAG,EAC5D,QAAeI,EAAU,IAAIL,EAAYC,EAAM,GAAG,EAClD,KAAM,IAAUK,EAAe,EAAE,EAAE,IAAIN,EAAYC,EAAM,GAAG,EAC5D,cAAqBI,EAAU,IAAIL,EAAYC,EAAM,GAAG,EACxD,iBAAwBI,EAAU,IAAIL,EAAYC,EAAM,GAAG,EAC3D,qBAA4BI,EAAU,IAAIL,EAAYC,EAAM,GAAG,EAC/D,qBAA4BI,EAAU,IAAIL,EAAYC,EAAM,GAAG,CACnE,GAfC,MAiBT,EHdA,IAAMM,KAAQ,EAAAC,SAAU,4BAA4B,EAYvCC,EAAN,cAAyBC,CAAY,CAvB5C,MAuB4C,CAAAC,EAAA,mBACxC,aAAc,CACV,MAAM,GAAG,SAAS,EAClB,KAAK,WAAa,EAClB,KAAK,eAAiB,CAC1B,CACA,MAAM,OAAQ,CACV,IAAMC,EAAa,MAAM,KAAK,UAAU,UAAeC,CAAM,EAE7D,GADAN,EAAM,OAAO,KAAK,UAAU,QAAQ,oBAAoBK,EAAW,OAAO,EAAE,EACxEA,EAAW,UAAY,OAE3B,YAAK,SAAS,aAAa,EACpB,KAAK,eAAeA,EAAW,SAAS,EAAE,MAAME,GAAO,CAC1D,GAAI,EAAEA,aAAuBC,GACzB,MAAMD,CAEd,CAAC,CACL,CACA,MAAM,eAAeE,EAAW,CAC5B,IAAMC,EAAO,MAAM,KAAK,UAAU,UAAUC,CAAW,EAEvD,GADA,KAAK,SAAS,UAAU,YAAaD,CAAI,EACjCA,IACC,OACD,OAAO,KAAK,cAAcD,EAAYE,EAAY,GAAG,EAErD,MAAM,IAAIC,EAAiB,iCAAiCF,CAAI,EAAE,CAE9E,CACA,MAAM,cAAcG,EAAW,CAC3B,KAAOA,GAAkBP,EAAO,KAAK,CACjC,IAAMQ,EAAS,MAAM,KAAK,UAAU,UAAeR,CAAM,EAOzD,OANAO,GAAkBP,EAAO,IAAMQ,EAAO,UAClCA,EAAO,UAAYD,GACnB,KAAK,SAAS,WAAW,mCAAmC,EAEhE,KAAK,OAASC,EACdd,EAAM,OAAO,KAAK,UAAU,QAAQ,kCAAkCc,EAAO,OAAO,EAAE,EAC9EA,EAAO,QAAS,CACpB,IAAK,OACD,MAAM,KAAK,aAAaA,CAAM,EAC9B,MACJ,IAAK,OACD,KAAK,SAAS,UAAU,WAAY,EAAK,EACzC,KAAK,KAAO,MAAM,KAAK,UAAU,UAAU,IAAcC,EAAUD,CAAM,CAAC,EAC1E,MACJ,IAAK,OAAQ,CACT,IAAME,EAAM,MAAM,KAAK,UAAU,UAAU,IAAcC,EAAOH,CAAM,CAAC,EACnEI,EAAsBC,EAAkBH,EAAI,UAAU,EACrDE,IACDlB,EAAM,uBAAuBgB,EAAI,UAAU,EAAE,EAC7CE,EAAY,YAAYF,EAAI,UAAU,KAE1C,KAAK,SAAS,UAAU,QAASE,CAAS,EAC1C,KAAK,SAAS,UAAU,gBAAiBF,EAAI,cAAc,EAC3D,KAAK,SAAS,UAAU,aAAcA,EAAI,cAAc,EACxD,KAAK,SAAS,UAAU,mBAAoBA,EAAI,SAAS,EACzD,KAAK,WAAaA,EAAI,YACtB,KAAK,eAAiBA,EAAI,gBAC1B,KACJ,CACA,IAAK,OACL,IAAK,OAAQ,CACT,IAAMI,EAAW,MAAM,KAAK,UAAU,UAAU,IAAUC,EAAeP,EAAO,SAAS,CAAC,EACpFQ,EAAcC,EAAWH,CAAQ,EACvC,MAAM,IAAII,EAAY,EAAE,MAAM,KAAK,SAAUF,EAAK,KAAK,OAAO,EAC9D,KACJ,CACA,IAAK,OAAQ,CACL,KAAK,SAAS,OAAO,WAAa,IAClC,KAAK,SAAS,UAAU,WAAY,EAAI,EAE5C,IAAIb,EAAYK,EAAO,UACvB,GAAI,KAAK,UAAU,SAAS,KAAM,CAC9B,IAAMW,EAAgB,KAAK,UAAU,SAAS,KAAO,KAAK,UAAU,SAChEA,EAAgBhB,IAChB,KAAK,SAAS,WAAW,yCAAyC,EAClEA,EAAYgB,EAEpB,CACA,IAAMC,EAAkB,KAAK,KAAO,KAAK,KAAK,eAAkBjB,IAAc,WAAa,OAAYA,EAAY,KAAK,WACpHiB,IACA,KAAK,SAAS,UAAU,kBAAmBA,CAAe,EACtD,KAAK,SAAS,OAAO,YACrB,KAAK,SAAS,UAAU,WAAYA,EAAkB,KAAK,SAAS,OAAO,UAAU,GAGzF,KAAK,eAAiB,EACtB,KAAK,SAAS,UAAU,UAAW,KAAK,eAAiB,CAAC,EAErD,KAAK,SAAS,OAAO,UAC1B,KAAK,SAAS,UAAU,UAAWjB,EAAY,EAAI,KAAK,SAAS,OAAO,QAAQ,EAEpF,MAAM,KAAK,UAAU,OAAOK,EAAO,SAAS,EAC5C,KACJ,CACA,IAAK,OAAQ,CACT,IAAMa,EAAO,MAAM,KAAK,UAAU,UAAUC,CAA4B,EACxE,OAAO,KAAKD,CAAI,EAAE,QAAQE,GAAO,CAC7B,KAAK,SAAS,OAAO,OAAQ,QAAQA,CAAG,GAAIF,EAAKE,CAAG,CAAC,CACzD,CAAC,EACD,IAAMC,EAAgBhB,EAAO,UAAYc,EAA6B,IACtE,MAAM,KAAK,UAAU,OAAOE,CAAa,EACzC,KACJ,CACA,IAAK,WACD9B,EAAM,8BAA8Bc,EAAO,OAAO,OAAOA,EAAO,SAAS,QAAQ,EACjF,KAAK,SAAS,WAAW,sBAAsBA,EAAO,OAAO,EAAE,EAC/D,MAAM,KAAK,UAAU,OAAOA,EAAO,SAAS,EAC5C,MACJ,QACId,EAAM,sBAAsBc,EAAO,OAAO,OAAOA,EAAO,SAAS,QAAQ,EACzE,KAAK,SAAS,WAAW,sBAAsBA,EAAO,OAAO,EAAE,EAC/D,MAAM,KAAK,UAAU,OAAOA,EAAO,SAAS,CACpD,CACI,KAAK,OAAO,UAAY,IAAM,IAC9Bd,EAAM,uBAAuB,EAC7B,MAAM,KAAK,UAAU,OAAO,CAAC,EAErC,CACJ,CACA,MAAM,aAAa+B,EAAY,CAC3B,IAAMC,EAAW,MAAM,KAAK,UAAU,UAAU,IAAUC,EAAW,EAAG,QAAQ,CAAC,EAEjF,OADAjC,EAAM,kDAAmD,KAAK,UAAU,SAAUgC,CAAQ,EAClFA,IACC,OACM,KAAK,kBAAkBD,EAAW,UAAY,CAAC,GAEtD,KAAK,SAAS,WAAW,gCAAgCC,CAAQ,EAAE,EACnEhC,EAAM,mCAAmCgC,CAAQ,EAAE,EAC5C,KAAK,UAAU,OAAOD,EAAW,UAAY,CAAC,EAAE,KAAK,EAExE,CACA,MAAM,kBAAkBtB,EAAW,CAC/B,KAAOA,GAAa,GAAG,CACnB,IAAMK,EAAS,MAAM,KAAK,UAAU,UAAeR,CAAM,EACnD4B,EAAa,IAASC,EAAiBrB,CAAM,EAC7CsB,EAAQ,MAAM,KAAK,UAAU,UAAUF,CAAU,EACvD,KAAK,OAAOpB,EAAO,QAAcuB,EAAWD,CAAK,CAAC,EAClD3B,GAAc,EAAIyB,EAAW,GACjC,CACA,GAAIzB,IAAc,EACd,MAAM,IAAIG,EAAiB,2BAA2BH,CAAS,EAAE,CAEzE,CACA,OAAO6B,EAAIF,EAAO,CACd,KAAK,SAAS,OAAO,OAAQE,EAAIF,CAAK,CAC1C,CACJ","names":["import_debug","Header","__name","buf","off","StringType","UINT32_LE","ListInfoTagValue","tagHeader","WaveContentError","makeUnexpectedFileContentError","__name","WaveFormat","WaveFormatNameMap","Format","header","buf","off","UINT16_LE","UINT32_LE","FactChunk","BroadcastAudioExtensionChunk","__name","uint8array","off","stripNulls","StringType","UINT32_LE","UINT16_LE","Uint8ArrayType","debug","initDebug","WaveParser","BasicParser","__name","riffHeader","Header","err","EndOfStreamError","chunkSize","type","FourCcToken","WaveContentError","remaining","header","FactChunk","fmt","Format","subFormat","WaveFormatNameMap","id3_data","Uint8ArrayType","rst","fromBuffer","ID3v2Parser","calcRemaining","numberOfSamples","bext","BroadcastAudioExtensionChunk","key","bextRemaining","listHeader","listType","StringType","valueToken","ListInfoTagValue","value","stripNulls","id"],"sourceRoot":"","file":"/WaveParser-OIX4G4ED.js.map"} \ No newline at end of file diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/android-chrome-192x192.png b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/android-chrome-192x192.png similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/android-chrome-192x192.png rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/android-chrome-192x192.png diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/android-chrome-512x512.png b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/android-chrome-512x512.png similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/android-chrome-512x512.png rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/android-chrome-512x512.png diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/apple-touch-icon.png b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/apple-touch-icon.png similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/apple-touch-icon.png rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/apple-touch-icon.png diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/base-DQOOZU4W.js b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/base-DQOOZU4W.js similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/base-DQOOZU4W.js rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/base-DQOOZU4W.js diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/base-DQOOZU4W.js.br b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/base-DQOOZU4W.js.br similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/base-DQOOZU4W.js.br rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/base-DQOOZU4W.js.br diff --git a/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/base-DQOOZU4W.js.map b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/base-DQOOZU4W.js.map new file mode 100644 index 00000000..94515391 --- /dev/null +++ b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/base-DQOOZU4W.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["/node_modules/.deno/butterchurn-presets@3.0.0-beta.4/node_modules/butterchurn-presets/dist/base.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"base\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"base\"] = factory();\n\telse\n\t\troot[\"base\"] = factory();\n})(self, function() {\nreturn /******/ (() => { // webpackBootstrap\n/******/ \t\"use strict\";\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ \"./base.js\":\n/*!*****************!*\\\n !*** ./base.js ***!\n \\*****************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => __WEBPACK_DEFAULT_EXPORT__\n/* harmony export */ });\n/* eslint-disable max-len */\nvar presets = {};\npresets[\"_Aderrasi - Wanderer in Curved Space - mash0000 - faclempt kibitzing meshuggana schmaltz (Geiss color mix)\"] = __webpack_require__(/*! ./presets/converted/_Aderrasi - Wanderer in Curved Space - mash0000 - faclempt kibitzing meshuggana schmaltz (Geiss color mix).json */ \"./presets/converted/_Aderrasi - Wanderer in Curved Space - mash0000 - faclempt kibitzing meshuggana schmaltz (Geiss color mix).json\");\npresets[\"_Geiss - Artifact 01\"] = __webpack_require__(/*! ./presets/converted/_Geiss - Artifact 01.json */ \"./presets/converted/_Geiss - Artifact 01.json\");\npresets[\"_Geiss - Desert Rose 2\"] = __webpack_require__(/*! ./presets/converted/_Geiss - Desert Rose 2.json */ \"./presets/converted/_Geiss - Desert Rose 2.json\");\npresets[\"_Geiss - untitled\"] = __webpack_require__(/*! ./presets/converted/_Geiss - untitled.json */ \"./presets/converted/_Geiss - untitled.json\");\npresets[\"_Mig_049\"] = __webpack_require__(/*! ./presets/converted/_Mig_049.json */ \"./presets/converted/_Mig_049.json\");\npresets[\"_Mig_085\"] = __webpack_require__(/*! ./presets/converted/_Mig_085.json */ \"./presets/converted/_Mig_085.json\");\npresets[\"_Rovastar + Geiss - Hurricane Nightmare (Posterize Mix)\"] = __webpack_require__(/*! ./presets/converted/_Rovastar + Geiss - Hurricane Nightmare (Posterize Mix).json */ \"./presets/converted/_Rovastar + Geiss - Hurricane Nightmare (Posterize Mix).json\");\npresets[\"$$$ Royal - Mashup (197)\"] = __webpack_require__(/*! ./presets/converted/$$$ Royal - Mashup (197).json */ \"./presets/converted/$$$ Royal - Mashup (197).json\");\npresets[\"$$$ Royal - Mashup (220)\"] = __webpack_require__(/*! ./presets/converted/$$$ Royal - Mashup (220).json */ \"./presets/converted/$$$ Royal - Mashup (220).json\");\npresets[\"$$$ Royal - Mashup (431)\"] = __webpack_require__(/*! ./presets/converted/$$$ Royal - Mashup (431).json */ \"./presets/converted/$$$ Royal - Mashup (431).json\");\npresets[\"AdamFx 2 Geiss, Zylot and Flexi - Reaction Diffusion 3 (Overload Mix 2) EATIT4 hypno\"] = __webpack_require__(/*! ./presets/converted/AdamFx 2 Geiss, Zylot and Flexi - Reaction Diffusion 3 (Overload Mix 2) EATIT4 hypno.json */ \"./presets/converted/AdamFx 2 Geiss, Zylot and Flexi - Reaction Diffusion 3 (Overload Mix 2) EATIT4 hypno.json\");\npresets[\"Aderrasi - Potion of Spirits\"] = __webpack_require__(/*! ./presets/converted/Aderrasi - Potion of Spirits.json */ \"./presets/converted/Aderrasi - Potion of Spirits.json\");\npresets[\"Aderrasi - Storm of the Eye (Thunder) - mash0000 - quasi pseudo meta concentrics\"] = __webpack_require__(/*! ./presets/converted/Aderrasi - Storm of the Eye (Thunder) - mash0000 - quasi pseudo meta concentrics.json */ \"./presets/converted/Aderrasi - Storm of the Eye (Thunder) - mash0000 - quasi pseudo meta concentrics.json\");\npresets[\"Aderrasi + Geiss - Airhandler (Kali Mix) - Canvas Mix\"] = __webpack_require__(/*! ./presets/converted/Aderrasi + Geiss - Airhandler (Kali Mix) - Canvas Mix.json */ \"./presets/converted/Aderrasi + Geiss - Airhandler (Kali Mix) - Canvas Mix.json\");\npresets[\"An AdamFX n Martin Infusion 2 flexi - Why The Sky Looks Diffrent Today - AdamFx n Martin Infusion - Tack Tile Disfunction B\"] = __webpack_require__(/*! ./presets/converted/An AdamFX n Martin Infusion 2 flexi - Why The Sky Looks Diffrent Today - AdamFx n Martin Infusion - Tack Tile Disfunction B.json */ \"./presets/converted/An AdamFX n Martin Infusion 2 flexi - Why The Sky Looks Diffrent Today - AdamFx n Martin Infusion - Tack Tile Disfunction B.json\");\npresets[\"Cope - The Neverending Explosion of Red Liquid Fire\"] = __webpack_require__(/*! ./presets/converted/Cope - The Neverending Explosion of Red Liquid Fire.json */ \"./presets/converted/Cope - The Neverending Explosion of Red Liquid Fire.json\");\npresets[\"cope + flexi - colorful marble (ghost mix)\"] = __webpack_require__(/*! ./presets/converted/cope + flexi - colorful marble (ghost mix).json */ \"./presets/converted/cope + flexi - colorful marble (ghost mix).json\");\npresets[\"cope + martin - mother-of-pearl\"] = __webpack_require__(/*! ./presets/converted/cope + martin - mother-of-pearl.json */ \"./presets/converted/cope + martin - mother-of-pearl.json\");\npresets[\"Eo.S. - glowsticks v2 05 and proton lights (+Krash′s beat code) _Phat_remix02b\"] = __webpack_require__(/*! ./presets/converted/Eo.S. - glowsticks v2 05 and proton lights (+Krash′s beat code) _Phat_remix02b.json */ \"./presets/converted/Eo.S. - glowsticks v2 05 and proton lights (+Krash′s beat code) _Phat_remix02b.json\");\npresets[\"Eo.S. + Zylot - skylight (Stained Glass Majesty mix)\"] = __webpack_require__(/*! ./presets/converted/Eo.S. + Zylot - skylight (Stained Glass Majesty mix).json */ \"./presets/converted/Eo.S. + Zylot - skylight (Stained Glass Majesty mix).json\");\npresets[\"fiShbRaiN + Flexi - witchcraft 2.0\"] = __webpack_require__(/*! ./presets/converted/fiShbRaiN + Flexi - witchcraft 2.0.json */ \"./presets/converted/fiShbRaiN + Flexi - witchcraft 2.0.json\");\npresets[\"Flexi - alien fish pond\"] = __webpack_require__(/*! ./presets/converted/Flexi - alien fish pond.json */ \"./presets/converted/Flexi - alien fish pond.json\");\npresets[\"Flexi - area 51\"] = __webpack_require__(/*! ./presets/converted/Flexi - area 51.json */ \"./presets/converted/Flexi - area 51.json\");\npresets[\"flexi - bouncing balls [double mindblob neon mix]\"] = __webpack_require__(/*! ./presets/converted/flexi - bouncing balls [double mindblob neon mix].json */ \"./presets/converted/flexi - bouncing balls [double mindblob neon mix].json\");\npresets[\"Flexi - infused with the spiral\"] = __webpack_require__(/*! ./presets/converted/Flexi - infused with the spiral.json */ \"./presets/converted/Flexi - infused with the spiral.json\");\npresets[\"Flexi - mindblob [shiny mix]\"] = __webpack_require__(/*! ./presets/converted/Flexi - mindblob [shiny mix].json */ \"./presets/converted/Flexi - mindblob [shiny mix].json\");\npresets[\"Flexi - mindblob mix\"] = __webpack_require__(/*! ./presets/converted/Flexi - mindblob mix.json */ \"./presets/converted/Flexi - mindblob mix.json\");\npresets[\"flexi - mom, why the sky looks different today\"] = __webpack_require__(/*! ./presets/converted/flexi - mom, why the sky looks different today.json */ \"./presets/converted/flexi - mom, why the sky looks different today.json\");\npresets[\"flexi - patternton, district of media, capitol of the united abstractions of fractopia\"] = __webpack_require__(/*! ./presets/converted/flexi - patternton, district of media, capitol of the united abstractions of fractopia.json */ \"./presets/converted/flexi - patternton, district of media, capitol of the united abstractions of fractopia.json\");\npresets[\"Flexi - predator-prey-spirals\"] = __webpack_require__(/*! ./presets/converted/Flexi - predator-prey-spirals.json */ \"./presets/converted/Flexi - predator-prey-spirals.json\");\npresets[\"Flexi - smashing fractals [acid etching mix]\"] = __webpack_require__(/*! ./presets/converted/Flexi - smashing fractals [acid etching mix].json */ \"./presets/converted/Flexi - smashing fractals [acid etching mix].json\");\npresets[\"flexi - swing out on the spiral\"] = __webpack_require__(/*! ./presets/converted/flexi - swing out on the spiral.json */ \"./presets/converted/flexi - swing out on the spiral.json\");\npresets[\"Flexi - truly soft piece of software - this is generic texturing (Jelly) \"] = __webpack_require__(/*! ./presets/converted/Flexi - truly soft piece of software - this is generic texturing (Jelly) .json */ \"./presets/converted/Flexi - truly soft piece of software - this is generic texturing (Jelly) .json\");\npresets[\"flexi - what is the matrix\"] = __webpack_require__(/*! ./presets/converted/flexi - what is the matrix.json */ \"./presets/converted/flexi - what is the matrix.json\");\npresets[\"flexi + amandio c - organic [random mashup]\"] = __webpack_require__(/*! ./presets/converted/flexi + amandio c - organic [random mashup].json */ \"./presets/converted/flexi + amandio c - organic [random mashup].json\");\npresets[\"flexi + amandio c - organic12-3d-2.milk\"] = __webpack_require__(/*! ./presets/converted/flexi + amandio c - organic12-3d-2.json */ \"./presets/converted/flexi + amandio c - organic12-3d-2.json\");\npresets[\"Flexi + amandio c - piercing 05 - Kopie (2) - Kopie\"] = __webpack_require__(/*! ./presets/converted/Flexi + amandio c - piercing 05 - Kopie (2) - Kopie.json */ \"./presets/converted/Flexi + amandio c - piercing 05 - Kopie (2) - Kopie.json\");\npresets[\"flexi + fishbrain - neon mindblob grafitti\"] = __webpack_require__(/*! ./presets/converted/flexi + fishbrain - neon mindblob grafitti.json */ \"./presets/converted/flexi + fishbrain - neon mindblob grafitti.json\");\npresets[\"flexi + geiss - pogo cubes vs. tokamak vs. game of life [stahls jelly 4.5 finish]\"] = __webpack_require__(/*! ./presets/converted/flexi + geiss - pogo cubes vs. tokamak vs. game of life [stahls jelly 4.5 finish].json */ \"./presets/converted/flexi + geiss - pogo cubes vs. tokamak vs. game of life [stahls jelly 4.5 finish].json\");\npresets[\"Flexi + Martin - astral projection\"] = __webpack_require__(/*! ./presets/converted/Flexi + Martin - astral projection.json */ \"./presets/converted/Flexi + Martin - astral projection.json\");\npresets[\"Flexi + Martin - cascading decay swing\"] = __webpack_require__(/*! ./presets/converted/Flexi + Martin - cascading decay swing.json */ \"./presets/converted/Flexi + Martin - cascading decay swing.json\");\npresets[\"Flexi + stahlregen - jelly showoff parade\"] = __webpack_require__(/*! ./presets/converted/Flexi + stahlregen - jelly showoff parade.json */ \"./presets/converted/Flexi + stahlregen - jelly showoff parade.json\");\npresets[\"Flexi, fishbrain, Geiss + Martin - tokamak witchery\"] = __webpack_require__(/*! ./presets/converted/Flexi, fishbrain, Geiss + Martin - tokamak witchery.json */ \"./presets/converted/Flexi, fishbrain, Geiss + Martin - tokamak witchery.json\");\npresets[\"Flexi, martin + geiss - dedicated to the sherwin maxawow\"] = __webpack_require__(/*! ./presets/converted/Flexi, martin + geiss - dedicated to the sherwin maxawow.json */ \"./presets/converted/Flexi, martin + geiss - dedicated to the sherwin maxawow.json\");\npresets[\"Fumbling_Foo + En D & Martin - Mandelverse\"] = __webpack_require__(/*! ./presets/converted/Fumbling_Foo + En D & Martin - Mandelverse.json */ \"./presets/converted/Fumbling_Foo + En D & Martin - Mandelverse.json\");\npresets[\"Geiss - Cauldron - painterly 2 (saturation remix)\"] = __webpack_require__(/*! ./presets/converted/Geiss - Cauldron - painterly 2 (saturation remix).json */ \"./presets/converted/Geiss - Cauldron - painterly 2 (saturation remix).json\");\npresets[\"Geiss - Reaction Diffusion 2\"] = __webpack_require__(/*! ./presets/converted/Geiss - Reaction Diffusion 2.json */ \"./presets/converted/Geiss - Reaction Diffusion 2.json\");\npresets[\"Geiss - Spiral Artifact\"] = __webpack_require__(/*! ./presets/converted/Geiss - Spiral Artifact.json */ \"./presets/converted/Geiss - Spiral Artifact.json\");\npresets[\"Geiss - Thumb Drum\"] = __webpack_require__(/*! ./presets/converted/Geiss - Thumb Drum.json */ \"./presets/converted/Geiss - Thumb Drum.json\");\npresets[\"Geiss + Flexi + Martin - disconnected\"] = __webpack_require__(/*! ./presets/converted/Geiss + Flexi + Martin - disconnected.json */ \"./presets/converted/Geiss + Flexi + Martin - disconnected.json\");\npresets[\"Geiss, Flexi + Stahlregen - Thumbdrum Tokamak [crossfiring aftermath jelly mashup]\"] = __webpack_require__(/*! ./presets/converted/Geiss, Flexi + Stahlregen - Thumbdrum Tokamak [crossfiring aftermath jelly mashup].json */ \"./presets/converted/Geiss, Flexi + Stahlregen - Thumbdrum Tokamak [crossfiring aftermath jelly mashup].json\");\npresets[\"Goody - The Wild Vort\"] = __webpack_require__(/*! ./presets/converted/Goody - The Wild Vort.json */ \"./presets/converted/Goody - The Wild Vort.json\");\npresets[\"gunthry is out back bloodying up the pine trees - adm atomising (v) the disintigrate (n)\"] = __webpack_require__(/*! ./presets/converted/gunthry is out back bloodying up the pine trees - adm atomising (v) the disintigrate (n).json */ \"./presets/converted/gunthry is out back bloodying up the pine trees - adm atomising (v) the disintigrate (n).json\");\npresets[\"Halfbreak - Funny Madness\"] = __webpack_require__(/*! ./presets/converted/Halfbreak - Funny Madness.json */ \"./presets/converted/Halfbreak - Funny Madness.json\");\npresets[\"Halfbreak - Light of Breakers\"] = __webpack_require__(/*! ./presets/converted/Halfbreak - Light of Breakers.json */ \"./presets/converted/Halfbreak - Light of Breakers.json\");\npresets[\"Hexcollie, Pieturp, Orb, Flexi, Geiss n Demon Lord - Premeditative Urination Clause\"] = __webpack_require__(/*! ./presets/converted/Hexcollie, Pieturp, Orb, Flexi, Geiss n Demon Lord - Premeditative Urination Clause.json */ \"./presets/converted/Hexcollie, Pieturp, Orb, Flexi, Geiss n Demon Lord - Premeditative Urination Clause.json\");\npresets[\"high-altitude basket unraveling - singh grooves nitrogen argon nz+\"] = __webpack_require__(/*! ./presets/converted/high-altitude basket unraveling - singh grooves nitrogen argon nz+.json */ \"./presets/converted/high-altitude basket unraveling - singh grooves nitrogen argon nz+.json\");\npresets[\"LuxXx - Play v3 (the war within all of us)\"] = __webpack_require__(/*! ./presets/converted/LuxXx - Play v3 (the war within all of us).json */ \"./presets/converted/LuxXx - Play v3 (the war within all of us).json\");\npresets[\"Martin - acid wiring\"] = __webpack_require__(/*! ./presets/converted/Martin - acid wiring.json */ \"./presets/converted/Martin - acid wiring.json\");\npresets[\"martin - angel flight\"] = __webpack_require__(/*! ./presets/converted/martin - angel flight.json */ \"./presets/converted/martin - angel flight.json\");\npresets[\"martin - another kind of groove\"] = __webpack_require__(/*! ./presets/converted/martin - another kind of groove.json */ \"./presets/converted/martin - another kind of groove.json\");\npresets[\"martin - bombyx mori\"] = __webpack_require__(/*! ./presets/converted/martin - bombyx mori.json */ \"./presets/converted/martin - bombyx mori.json\");\npresets[\"martin - castle in the air\"] = __webpack_require__(/*! ./presets/converted/martin - castle in the air.json */ \"./presets/converted/martin - castle in the air.json\");\npresets[\"martin - chain breaker\"] = __webpack_require__(/*! ./presets/converted/martin - chain breaker.json */ \"./presets/converted/martin - chain breaker.json\");\npresets[\"Martin - charisma\"] = __webpack_require__(/*! ./presets/converted/Martin - charisma.json */ \"./presets/converted/Martin - charisma.json\");\npresets[\"martin - disco mix 4\"] = __webpack_require__(/*! ./presets/converted/martin - disco mix 4.json */ \"./presets/converted/martin - disco mix 4.json\");\npresets[\"martin - extreme heat\"] = __webpack_require__(/*! ./presets/converted/martin - extreme heat.json */ \"./presets/converted/martin - extreme heat.json\");\npresets[\"martin - frosty caves 2\"] = __webpack_require__(/*! ./presets/converted/martin - frosty caves 2.json */ \"./presets/converted/martin - frosty caves 2.json\");\npresets[\"martin - fruit machine\"] = __webpack_require__(/*! ./presets/converted/martin - fruit machine.json */ \"./presets/converted/martin - fruit machine.json\");\npresets[\"martin - glass corridor\"] = __webpack_require__(/*! ./presets/converted/martin - glass corridor.json */ \"./presets/converted/martin - glass corridor.json\");\npresets[\"Martin - liquid arrows\"] = __webpack_require__(/*! ./presets/converted/Martin - liquid arrows.json */ \"./presets/converted/Martin - liquid arrows.json\");\npresets[\"martin - mandelbox explorer - high speed demo version\"] = __webpack_require__(/*! ./presets/converted/martin - mandelbox explorer - high speed demo version.json */ \"./presets/converted/martin - mandelbox explorer - high speed demo version.json\");\npresets[\"martin - mucus cervix\"] = __webpack_require__(/*! ./presets/converted/martin - mucus cervix.json */ \"./presets/converted/martin - mucus cervix.json\");\npresets[\"martin - reflections on black tiles\"] = __webpack_require__(/*! ./presets/converted/martin - reflections on black tiles.json */ \"./presets/converted/martin - reflections on black tiles.json\");\npresets[\"martin - stormy sea (2010 update)\"] = __webpack_require__(/*! ./presets/converted/martin - stormy sea (2010 update).json */ \"./presets/converted/martin - stormy sea (2010 update).json\");\npresets[\"martin - The Bridge of Khazad-Dum\"] = __webpack_require__(/*! ./presets/converted/martin - The Bridge of Khazad-Dum.json */ \"./presets/converted/martin - The Bridge of Khazad-Dum.json\");\npresets[\"martin - witchcraft reloaded\"] = __webpack_require__(/*! ./presets/converted/martin - witchcraft reloaded.json */ \"./presets/converted/martin - witchcraft reloaded.json\");\npresets[\"martin [shadow harlequins shape code] - fata morgana\"] = __webpack_require__(/*! ./presets/converted/martin [shadow harlequins shape code] - fata morgana.json */ \"./presets/converted/martin [shadow harlequins shape code] - fata morgana.json\");\npresets[\"martin + flexi - diamond cutter [prismaticvortex.com] - camille - i wish i wish i wish i was constrained\"] = __webpack_require__(/*! ./presets/converted/martin + flexi - diamond cutter [prismaticvortex.com] - camille - i wish i wish i wish i was constrained.json */ \"./presets/converted/martin + flexi - diamond cutter [prismaticvortex.com] - camille - i wish i wish i wish i was constrained.json\");\npresets[\"martin, flexi, fishbrain + sto - enterstate [random mashup]\"] = __webpack_require__(/*! ./presets/converted/martin, flexi, fishbrain + sto - enterstate [random mashup].json */ \"./presets/converted/martin, flexi, fishbrain + sto - enterstate [random mashup].json\");\npresets[\"Milk Artist At our Best - FED - SlowFast Ft AdamFX n Martin - HD CosmoFX\"] = __webpack_require__(/*! ./presets/converted/Milk Artist At our Best - FED - SlowFast Ft AdamFX n Martin - HD CosmoFX.json */ \"./presets/converted/Milk Artist At our Best - FED - SlowFast Ft AdamFX n Martin - HD CosmoFX.json\");\npresets[\"MilkDrop2077.R002\"] = __webpack_require__(/*! ./presets/converted/MilkDrop2077.R002.json */ \"./presets/converted/MilkDrop2077.R002.json\");\npresets[\"MilkDrop2077.R033\"] = __webpack_require__(/*! ./presets/converted/MilkDrop2077.R033.json */ \"./presets/converted/MilkDrop2077.R033.json\");\npresets[\"ORB - Waaa\"] = __webpack_require__(/*! ./presets/converted/ORB - Waaa.json */ \"./presets/converted/ORB - Waaa.json\");\npresets[\"Phat+fiShbRaiN+Eo.S_Mandala_Chasers_remix\"] = __webpack_require__(/*! ./presets/converted/Phat+fiShbRaiN+Eo.S_Mandala_Chasers_remix.json */ \"./presets/converted/Phat+fiShbRaiN+Eo.S_Mandala_Chasers_remix.json\");\npresets[\"Rovastar - Oozing Resistance\"] = __webpack_require__(/*! ./presets/converted/Rovastar - Oozing Resistance.json */ \"./presets/converted/Rovastar - Oozing Resistance.json\");\npresets[\"Rovastar + Loadus + Geiss - FractalDrop (Triple Mix)\"] = __webpack_require__(/*! ./presets/converted/Rovastar + Loadus + Geiss - FractalDrop (Triple Mix).json */ \"./presets/converted/Rovastar + Loadus + Geiss - FractalDrop (Triple Mix).json\");\npresets[\"sawtooth grin roam\"] = __webpack_require__(/*! ./presets/converted/sawtooth grin roam.json */ \"./presets/converted/sawtooth grin roam.json\");\npresets[\"ShadowHarlequin - LovelyShinySquares [ liquid starburst rmx ] - unchained + rovaster - luckless - martin - starfield sector\"] = __webpack_require__(/*! ./presets/converted/ShadowHarlequin - LovelyShinySquares [ liquid starburst rmx ] - unchained + rovaster - luckless - martin - starfield sector.json */ \"./presets/converted/ShadowHarlequin - LovelyShinySquares [ liquid starburst rmx ] - unchained + rovaster - luckless - martin - starfield sector.json\");\npresets[\"shifter - dark tides bdrv mix 2\"] = __webpack_require__(/*! ./presets/converted/shifter - dark tides bdrv mix 2.json */ \"./presets/converted/shifter - dark tides bdrv mix 2.json\");\npresets[\"shifter - escape (sigur ros)\"] = __webpack_require__(/*! ./presets/converted/shifter - escape (sigur ros).json */ \"./presets/converted/shifter - escape (sigur ros).json\");\npresets[\"shifter - liquid circuitry - conjugoth\"] = __webpack_require__(/*! ./presets/converted/shifter - liquid circuitry - conjugoth.json */ \"./presets/converted/shifter - liquid circuitry - conjugoth.json\");\npresets[\"suksma - ed geining hateops - squeakers\"] = __webpack_require__(/*! ./presets/converted/suksma - ed geining hateops - squeakers.json */ \"./presets/converted/suksma - ed geining hateops - squeakers.json\");\npresets[\"suksma - heretical crosscut playpen\"] = __webpack_require__(/*! ./presets/converted/suksma - heretical crosscut playpen.json */ \"./presets/converted/suksma - heretical crosscut playpen.json\");\npresets[\"suksma - Hexcollie - Julian Carnival - shimmy dumb grid\"] = __webpack_require__(/*! ./presets/converted/suksma - Hexcollie - Julian Carnival - shimmy dumb grid.json */ \"./presets/converted/suksma - Hexcollie - Julian Carnival - shimmy dumb grid.json\");\npresets[\"suksma - Rovastar - Sunflower Passion (Enlightment Mix)_Phat_edit + flexi und martin shaders - circumflex in character classes in regular expression\"] = __webpack_require__(/*! ./presets/converted/suksma - Rovastar - Sunflower Passion (Enlightment Mix)_Phat_edit + flexi und martin shaders - circumflex in character classes in regular expression.json */ \"./presets/converted/suksma - Rovastar - Sunflower Passion (Enlightment Mix)_Phat_edit + flexi und martin shaders - circumflex in character classes in regular expression.json\");\npresets[\"suksma - uninitialized variabowl (hydroponic chronic)\"] = __webpack_require__(/*! ./presets/converted/suksma - uninitialized variabowl (hydroponic chronic).json */ \"./presets/converted/suksma - uninitialized variabowl (hydroponic chronic).json\");\npresets[\"suksma - vector exp 1 - couldn′t not\"] = __webpack_require__(/*! ./presets/converted/suksma - vector exp 1 - couldn′t not.json */ \"./presets/converted/suksma - vector exp 1 - couldn′t not.json\");\npresets[\"TonyMilkdrop - Leonardo Da Vinci's Balloon [Flexi - merry-go-round + techstyle]\"] = __webpack_require__(/*! ./presets/converted/TonyMilkdrop - Leonardo Da Vinci's Balloon [Flexi - merry-go-round + techstyle].json */ \"./presets/converted/TonyMilkdrop - Leonardo Da Vinci's Balloon [Flexi - merry-go-round + techstyle].json\");\npresets[\"TonyMilkdrop - Magellan's Nebula [Flexi - you enter first + multiverse]\"] = __webpack_require__(/*! ./presets/converted/TonyMilkdrop - Magellan's Nebula [Flexi - you enter first + multiverse].json */ \"./presets/converted/TonyMilkdrop - Magellan's Nebula [Flexi - you enter first + multiverse].json\");\npresets[\"Unchained - Rewop\"] = __webpack_require__(/*! ./presets/converted/Unchained - Rewop.json */ \"./presets/converted/Unchained - Rewop.json\");\npresets[\"Unchained - Unified Drag 2\"] = __webpack_require__(/*! ./presets/converted/Unchained - Unified Drag 2.json */ \"./presets/converted/Unchained - Unified Drag 2.json\");\npresets[\"yin - 191 - Temporal singularities\"] = __webpack_require__(/*! ./presets/converted/yin - 191 - Temporal singularities.json */ \"./presets/converted/yin - 191 - Temporal singularities.json\");\npresets[\"yin - 393 - Artificial Inspiration (music driven - outward)\"] = __webpack_require__(/*! ./presets/converted/yin - 393 - Artificial Inspiration (music driven - outward).json */ \"./presets/converted/yin - 393 - Artificial Inspiration (music driven - outward).json\");\npresets[\"Zylot - Paint Spill (Music Reactive Paint Mix)\"] = __webpack_require__(/*! ./presets/converted/Zylot - Paint Spill (Music Reactive Paint Mix).json */ \"./presets/converted/Zylot - Paint Spill (Music Reactive Paint Mix).json\");\npresets[\"Zylot - Star Ornament\"] = __webpack_require__(/*! ./presets/converted/Zylot - Star Ornament.json */ \"./presets/converted/Zylot - Star Ornament.json\");\npresets[\"Zylot - True Visionary (Final Mix)\"] = __webpack_require__(/*! ./presets/converted/Zylot - True Visionary (Final Mix).json */ \"./presets/converted/Zylot - True Visionary (Final Mix).json\");\n/* eslint-enable max-len */\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (presets);\n\n/***/ }),\n\n/***/ \"./presets/converted/$$$ Royal - Mashup (197).json\":\n/*!*********************************************************!*\\\n !*** ./presets/converted/$$$ Royal - Mashup (197).json ***!\n \\*********************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":3,\\\"decay\\\":0.5,\\\"echo_zoom\\\":1,\\\"echo_alpha\\\":0.5,\\\"echo_orient\\\":3,\\\"wrap\\\":0,\\\"darken_center\\\":1,\\\"solarize\\\":1,\\\"wave_a\\\":0.001,\\\"zoom\\\":0.97,\\\"rot\\\":-6.27999,\\\"warp\\\":0.00052,\\\"wave_r\\\":0,\\\"wave_g\\\":0,\\\"wave_b\\\":0,\\\"ob_r\\\":1,\\\"ob_g\\\":1,\\\"ob_b\\\":1,\\\"mv_r\\\":0.8,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"textured\\\":1,\\\"x\\\":0.75,\\\"y\\\":0.75,\\\"rad\\\":0.7417,\\\"tex_zoom\\\":0.22746,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":0.1,\\\"border_r\\\":0,\\\"border_g\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"tex_saw = 0.4;\\\",\\\"frame_eqs_eel\\\":\\\"ang = q1*0.2;\\\\n\\\\ntex_capture = above(q3,1);\\\\ntex_zoom = 0.6;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"textured\\\":1,\\\"x\\\":0.25,\\\"y\\\":0.75,\\\"rad\\\":4.44708,\\\"tex_zoom\\\":0.22746,\\\"r\\\":0,\\\"a\\\":0.1,\\\"g2\\\":0,\\\"a2\\\":0.2,\\\"border_r\\\":0,\\\"border_g\\\":0,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"tex_saw = 0.4;\\\",\\\"frame_eqs_eel\\\":\\\"ang = q1*0.2;\\\\n//x = 0.5 + 0.2*sin(q2);\\\\n//y = 0.5 + (0.3*sin(q2));\\\\n\\\\ntex_capture = above(q3,1);\\\\ntex_zoom = 0.6;\\\"},{\\\"baseVals\\\":{\\\"textured\\\":1,\\\"rad\\\":6.621,\\\"tex_zoom\\\":0.22746,\\\"g\\\":1,\\\"b\\\":1,\\\"a\\\":0.2,\\\"r2\\\":1,\\\"b2\\\":1,\\\"border_r\\\":0,\\\"border_g\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"tex_saw = 0.4;\\\",\\\"frame_eqs_eel\\\":\\\"ang = q1*0.2;\\\\n//x = 0.5 + 0.2*sin(q2);\\\\n//y = 0.5 + (0.3*sin(q2));\\\\n\\\\ntex_capture = above(q3,2);\\\\ntex_zoom = 0.6;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"thick\\\":1,\\\"smoothing\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"//q1 = state;\\\\n//q2 = basstime;\\\\n\\\\nq1 = 0;\\\\nspeed = bass_att*0.8;\\\\nv = sample*1000000 + value2*bass*0.1;\\\\n\\\\n//state 0 elipse\\\\nxs = xs + sin(v)*speed*atan(v*1.51);\\\\nys = ys + sin(v)*speed*atan((v*10));\\\\n\\\\nx = 0.5 + 0.5*sin(xs*0.1)*cos(time*0.2 + xs);\\\\ny = 0.5 + 0.5*sin(ys*0.12)*cos(time*0.1 + xs);\\\\n\\\\nx = x*0.8 + 0.1;\\\\ny = y*0.8 + 0.1;\\\\n\\\\nr = 0.5 + 0.5*sin(time*1.22) + 0.1;\\\\ng = 0.4 + 0.4*sin(time*1.307 + 2*y);\\\\nb = 0.4 + 0.4*sin(time*1.959 + x*2);\\\\n\\\\nxs = if(above(xs,1000),0 ,xs);\\\\nys = if(above(ys,1000),0 ,ys);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"thick\\\":1,\\\"smoothing\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"//q1 = state;\\\\n//q2 = basstime;\\\\n\\\\nq1 = 0;\\\\nspeed = bass_att*0.8;\\\\nv = sample*1000000 + value2*bass*0.1;\\\\n\\\\n//state 0 elipse\\\\nxs = xs + sin(v)*speed*atan(v*1.51);\\\\nys = ys + sin(v)*speed*atan((v*10));\\\\n\\\\nx = 0.5 + 0.5*sin(xs*0.1)*cos(time*0.2 + xs);\\\\ny = 0.5 + 0.5*sin(ys*0.14)*cos(time*0.1 + xs);\\\\n\\\\nx = x*0.8 + 0.1;\\\\ny = y*0.8 + 0.1;\\\\nx = x*0.6 + 0.2;\\\\ny = y*0.6 + 0.2;\\\\n\\\\nr = 0.5 + 0.5*sin(time*1.322) + 0.1;\\\\ng = 0.4 + 0.4*sin(time*1.5407 + 2*y);\\\\nb = 0.4 + 0.4*sin(time*1.759 + x*2);\\\\n\\\\nxs = if(above(xs,1000),0 ,xs);\\\\nys = if(above(ys,1000),0 ,ys);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"thick\\\":1,\\\"smoothing\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"//q1 = state;\\\\n//q2 = basstime;\\\\n\\\\nq1 = 0;\\\\nspeed = bass_att*0.8;\\\\nv = sample*1000000 + value2*bass*0.1;\\\\n\\\\n//state 0 elipse\\\\nxs = xs + sin(v)*speed*atan(v*1.51);\\\\nys = ys + sin(v)*speed*atan((v*10));\\\\n\\\\nx = 0.5 + 0.5*sin(xs*0.1)*cos(time*0.2 + xs);\\\\ny = 0.5 + 0.5*sin(ys*0.14)*cos(time*0.1 + xs);\\\\n\\\\nx = x*0.8 + 0.1;\\\\ny = y*0.8 + 0.1;\\\\nx = x*0.25 + 0.375;\\\\ny = y*0.25 + 0.375;\\\\n\\\\nr = 0.5 + 0.5*sin(time*1.622) + 0.1;\\\\ng = 0.4 + 0.4*sin(time*1.2407 + 2*y);\\\\nb = 0.4 + 0.4*sin(time*1.359 + x*2);\\\\n\\\\nxs = if(above(xs,1000),0 ,xs);\\\\nys = if(above(ys,1000),0 ,ys);\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"additive\\\":1,\\\"smoothing\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"//q1 = state;\\\\n//q2 = basstime;\\\\n\\\\nq1 = 0;\\\\nspeed = bass_att*0.8;\\\\nv = sample*10000 + value2*bass*0.1;\\\\n\\\\n//state 0 elipse\\\\nxs = xs + (equal(0,q1))*sin(v*1)*speed*atan(v*1.51);\\\\nys = ys + (equal(0,q1))*sin(v*1)*speed;\\\\n\\\\n\\\\nx = 0.5 + 0.5*sin(xs*0.1)*cos(time*2 + xs);\\\\ny = 0.5 + 0.5*sin(ys*0.1)*cos(time*2.1 + xs);\\\\n\\\\nx = -x*0.6 + 1;\\\\ny = y*0.9 + 0.05 + bass*0.08;\\\\ny = y*0.8;\\\\n\\\\nr = 0.5 + 0.5*sin(time*1.789) + 0.1;\\\\ng = 0.4 + 0.4*sin(time*1.478);\\\\nb = 0.4 + 0.4*sin(time*1.125);\\\\n\\\\nxs = if(above(xs,1000),0 ,xs);\\\\nys = if(above(ys,1000),0 ,ys);\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"basstime = basstime + bass*0.03;\\\\nq1 = basstime*4;\\\\n\\\\n//start in most active range\\\\nbasstime = if(below(basstime,1000),1000,basstime);\\\\n//basstime = if(above(basstime,495),450,basstime);\\\\n\\\\nbasstime = basstime + bass_att*0.03;\\\\nvol = pow(bass+mid+treb,2);\\\\nbasssum = vol;\\\\n\\\\nstickybit = time%2;\\\\n\\\\n//avg vol\\\\n//buffer 1\\\\nvolAvg = volAvg + vol*equal(stickybit,1);\\\\n//number of samples 1 or framerate\\\\nsample1 = sample1 + equal(stickybit,1);\\\\n//buffer 2\\\\nvolAvg2 = volAvg2 + vol*equal(stickybit,0);\\\\n//number of samples 2\\\\nsample2 = sample2 + equal(stickybit,0);\\\\n\\\\n//transision\\\\nedge = bnot(equal(bit2,stickybit));\\\\n\\\\nvolAvg = volAvg - volAvg*edge*stickybit;\\\\nvolAvg2 = volAvg2 - volAvg2*edge*equal(stickybit,0);\\\\n\\\\nsample1 = sample1 - sample1*edge*stickybit;\\\\nsample2 = sample2 - sample2*edge*equal(stickybit,0);\\\\n\\\\n//test vol against avg buffer lvl\\\\ndiff = if(equal(stickybit,1), (basssum/(volAvg2/sample2)) , 0);\\\\ndiff = if(equal(stickybit,0), (basssum/(volAvg/sample1)), diff);\\\\n\\\\nq3 = diff;\\\\n\\\\nbit2 = time%2;\\\\n\\\\ndifftime = difftime + diff*0.03;\\\\nq2 = difftime;\\\\n\\\\n//fix a strange error\\\\ndifftime = if(above(difftime,2000),0, difftime);\\\\n\\\\nmonitor = abs(cos(time))*3.14;\\\\n\\\\n\\\\nmv_a = above(diff,10);\\\",\\\"pixel_eqs_eel\\\":\\\"zoom = 1 + 0.05*q3*rad;\\\\n\\\\ndecay_r = 0.2*rad*sin(q2*0.35) + 0.85 + 0.1*sin(q2);\\\\ndecay_g = 0.2*rad*sin(q2*0.5) + 0.85 + 0.1*sin(0.7*q2);\\\\ndecay_b = 0.2*rad*sin(q2*0.4) + 0.85 + 0.1*sin(0.8*q2);\\\\n\\\\nrot = 0;\\\",\\\"warp\\\":\\\" shader_body { \\\\n vec3 ret_1;\\\\n vec2 tmpvar_2;\\\\n tmpvar_2 = (vec2(1.0, 0.0) * texsize.z);\\\\n vec2 tmpvar_3;\\\\n tmpvar_3 = (vec2(0.0, 1.0) * texsize.z);\\\\n ret_1 = (((\\\\n (texture (sampler_main, (uv + tmpvar_2)).xyz + texture (sampler_main, (uv + tmpvar_2)).xyz)\\\\n * 0.5) + (\\\\n (texture (sampler_main, (uv + tmpvar_3)).xyz + texture (sampler_main, (uv + tmpvar_3)).xyz)\\\\n * 0.5)) - texture (sampler_main, ((\\\\n (uv - 0.5)\\\\n * 0.9) + 0.5)).xyz);\\\\n ret_1 = (ret_1 - 0.4);\\\\n vec4 tmpvar_4;\\\\n tmpvar_4.w = 1.0;\\\\n tmpvar_4.xyz = ret_1;\\\\n ret = tmpvar_4.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n vec3 ret_1;\\\\n vec2 tmpvar_2;\\\\n tmpvar_2 = ((0.5 - uv) + 0.5);\\\\n ret_1 = (mix (texture (sampler_main, uv).xyz, texture (sampler_main, tmpvar_2).xyz, vec3(0.5, 0.5, 0.5)) * 2.0);\\\\n ret_1 = (((\\\\n ((texture (sampler_blur3, uv).xyz * scale3) + bias3)\\\\n * 2.0) + (\\\\n ((texture (sampler_blur3, tmpvar_2).xyz * scale3) + bias3)\\\\n * 2.0)) + ret_1);\\\\n vec4 tmpvar_3;\\\\n tmpvar_3.w = 1.0;\\\\n tmpvar_3.xyz = ret_1;\\\\n ret = tmpvar_3.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/$$$ Royal - Mashup (220).json\":\n/*!*********************************************************!*\\\n !*** ./presets/converted/$$$ Royal - Mashup (220).json ***!\n \\*********************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":3,\\\"gammaadj\\\":1.07,\\\"decay\\\":0.95,\\\"echo_zoom\\\":1,\\\"echo_alpha\\\":0.5,\\\"echo_orient\\\":1,\\\"wave_mode\\\":7,\\\"additivewave\\\":1,\\\"modwavealphabyvolume\\\":1,\\\"wave_brighten\\\":0,\\\"wrap\\\":0,\\\"brighten\\\":1,\\\"darken\\\":1,\\\"invert\\\":1,\\\"wave_a\\\":4.1,\\\"wave_scale\\\":1.286,\\\"wave_smoothing\\\":0.63,\\\"modwavealphastart\\\":0.71,\\\"modwavealphaend\\\":1.3,\\\"warpscale\\\":1.331,\\\"zoom\\\":0.99951,\\\"warp\\\":0.01,\\\"wave_r\\\":0.65,\\\"wave_g\\\":0.65,\\\"wave_b\\\":0.65,\\\"ob_size\\\":0.5,\\\"ob_r\\\":0.01,\\\"ib_size\\\":0.26,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"spectrum\\\":1,\\\"thick\\\":1},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"sp = sample*6.28*8*8*4;\\\\nvol = (bass_att + mid_att + treb_att)*0.33;\\\\nvol = 0.2 + 0.5*(value1 + value2);\\\\nvol = .2;\\\\n\\\\nmod = if(below(mid_att,1.8),mid_att+.2,2);\\\\n\\\\nox = 0.5*sin(sp)*sin(sample*3.14)*vol;\\\\noy = (sample - 0)*mod;\\\\noz = 0.5*cos(sp)*sin(sample*3.14)*vol;\\\\n\\\\nxang = time*0.672;\\\\naxang = 0;\\\\nyang = time*-1.351;\\\\nayang = 0;\\\\nzang = time*-0.401;\\\\nazang = 0;\\\\nfov = 0.6 + 0.2*sin(time);\\\\nfov = .5;\\\\n\\\\nmx = ox*cos(zang) - oy*sin(zang);\\\\nmy = ox*sin(zang) + oy*cos(zang);\\\\nox = mx;\\\\noy = my;\\\\nmx = ox*cos(yang) + oz*sin(yang);\\\\nmz = - ox*sin(yang) + oz*cos(yang);\\\\nox = mx;\\\\noz = mz;\\\\nmy = oy*cos(xang) - oz*sin(xang);\\\\nmz = oy*sin(xang) + oz*cos(xang);\\\\noy = my;\\\\noz = mz;\\\\n\\\\noz = abs(oz) - 2;\\\\nx = ox*fov/oz + 0.5;\\\\nx = (x-.5)*0.75 + 0.5;\\\\ny = oy*fov/oz + 0.5;\\\\n\\\\nr = 1 + sin(sp);\\\\nb = 0.5 + 0.5*sin(sample*1.57);\\\\ng = 0.5 + 0.5*cos(sample*1.57);\\\\na = 0.5 + (oz + 2)*0.25;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"spectrum\\\":1,\\\"thick\\\":1},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"sp = sample*6.28*8*8*4;\\\\nvol = (bass_att + mid_att + treb_att)*0.33;\\\\nvol = 0.2 + 0.5*(value1 + value2);\\\\nvol = .2;\\\\n\\\\nmod = if(below(bass_att,1.8),bass_att+.2,2);\\\\n\\\\nox = 0.5*sin(sp)*sin(sample*3.14)*vol;\\\\noy = (sample - 0)*mod;\\\\noz = 0.5*cos(sp)*sin(sample*3.14)*vol;\\\\n\\\\nxang = time*-0.321;\\\\naxang = 0;\\\\nyang = time*1.531;\\\\nayang = 0;\\\\nzang = time*-0.101;\\\\nazang = 0;\\\\nfov = 0.6 + 0.2*sin(time);\\\\nfov = .5;\\\\n\\\\nmx = ox*cos(zang) - oy*sin(zang);\\\\nmy = ox*sin(zang) + oy*cos(zang);\\\\nox = mx;\\\\noy = my;\\\\nmx = ox*cos(yang) + oz*sin(yang);\\\\nmz = - ox*sin(yang) + oz*cos(yang);\\\\nox = mx;\\\\noz = mz;\\\\nmy = oy*cos(xang) - oz*sin(xang);\\\\nmz = oy*sin(xang) + oz*cos(xang);\\\\noy = my;\\\\noz = mz;\\\\n\\\\noz = abs(oz) - 2;\\\\nx = ox*fov/oz + 0.5;\\\\nx = (x-.5)*0.75 + 0.5;\\\\ny = oy*fov/oz + 0.5;\\\\n\\\\ng = 1 + sin(sp);\\\\nr = 0.5 + 0.5*sin(sample*1.57);\\\\nb = 0.5 + 0.5*cos(sample*1.57);\\\\na = 0.5 + (oz + 2)*0.25;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"spectrum\\\":1,\\\"thick\\\":1},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"sp = sample*6.28*8*8*4;\\\\nvol = (bass_att + mid_att + treb_att)*0.33;\\\\nvol = 0.2 + 0.5*(value1 + value2);\\\\nvol = .2;\\\\n\\\\nmod = if(below(treb_att,1.8),treb_att+.2,2);\\\\n\\\\nox = 0.5*sin(sp)*sin(sample*3.14)*vol;\\\\noy = (sample - 0)*mod;\\\\noz = 0.5*cos(sp)*sin(sample*3.14)*vol;\\\\n\\\\nxang = time*0.221;\\\\naxang = 0;\\\\nyang = time*-0.411;\\\\nayang = 0;\\\\nzang = time*1.201;\\\\nazang = 0;\\\\nfov = 0.6 + 0.2*sin(time);\\\\nfov = .5;\\\\n\\\\nmx = ox*cos(zang) - oy*sin(zang);\\\\nmy = ox*sin(zang) + oy*cos(zang);\\\\nox = mx;\\\\noy = my;\\\\nmx = ox*cos(yang) + oz*sin(yang);\\\\nmz = - ox*sin(yang) + oz*cos(yang);\\\\nox = mx;\\\\noz = mz;\\\\nmy = oy*cos(xang) - oz*sin(xang);\\\\nmz = oy*sin(xang) + oz*cos(xang);\\\\noy = my;\\\\noz = mz;\\\\n\\\\noz = abs(oz) - 2;\\\\nx = ox*fov/oz + 0.5;\\\\nx = (x-.5)*0.75 + 0.5;\\\\ny = oy*fov/oz + 0.5;\\\\n\\\\nb = 1+sin(sp);\\\\ng = 0.5 + 0.5*sin(sample*1.57);\\\\nr = 0.5 + 0.5*cos(sample*1.57);\\\\na = 0.5 + (oz + 2)*0.25;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"wave_a = 0;\\\",\\\"pixel_eqs_eel\\\":\\\"it = 0.3*sin(time*0.2);\\\\nradm = rad*0.5;\\\\nrot = 0.02*sin((radm+it)*20);\\\\nmod = sin(ang*5);\\\\nmod = mod*mod*mod*mod*mod;\\\\nzoom = 1 + abs(0.01*mod);\\\\n\\\\nzoom *= min(1.05,max(1,max(bass,treb)));\\\",\\\"warp\\\":\\\" shader_body { \\\\n vec3 xfer_1;\\\\n vec3 ret_2;\\\\n vec4 tmpvar_3;\\\\n vec2 tmpvar_4;\\\\n tmpvar_4 = (uv - 0.5);\\\\n tmpvar_3 = texture (sampler_main, (tmpvar_4 + 0.5));\\\\n ret_2 = (tmpvar_3.xyz / ((tmpvar_3.x + tmpvar_3.y) + tmpvar_3.z));\\\\n ret_2 = texture (sampler_main, ((tmpvar_4 * dot (ret_2, vec3(1.0, 0.975, 0.95))) + 0.5)).xyz;\\\\n vec3 tmpvar_5;\\\\n tmpvar_5 = clamp (((ret_2 - 0.05) * 99.0), 0.0, 1.0);\\\\n xfer_1.x = tmpvar_5.x;\\\\n xfer_1.yz = (tmpvar_5.yz * clamp ((\\\\n (0.1 - ret_2.xy)\\\\n * 99.0), 0.0, 1.0));\\\\n ret_2 = (ret_2 + (vec3(-0.014, 0.014, 0.0) * tmpvar_5.xxx));\\\\n ret_2 = (ret_2 + (vec3(0.0, -0.08, 0.08) * xfer_1.yyy));\\\\n ret_2 = (ret_2 + (vec3(0.0, 0.0, -0.02) * xfer_1.zzz));\\\\n ret_2 = (ret_2 + (vec3(5.0, 15.0, 40.0) * (\\\\n (texture (sampler_noise_lq, (((uv_orig * texsize.xy) * texsize_noise_lq.zw) + rand_frame.xy)).xyz - 0.5)\\\\n / 256.0)));\\\\n vec4 tmpvar_6;\\\\n tmpvar_6.w = 1.0;\\\\n tmpvar_6.xyz = ret_2;\\\\n ret = tmpvar_6.xyz;\\\\n }\\\",\\\"comp\\\":\\\"\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/$$$ Royal - Mashup (431).json\":\n/*!*********************************************************!*\\\n !*** ./presets/converted/$$$ Royal - Mashup (431).json ***!\n \\*********************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":2,\\\"gammaadj\\\":1,\\\"wave_mode\\\":7,\\\"additivewave\\\":1,\\\"wave_thick\\\":1,\\\"modwavealphabyvolume\\\":1,\\\"wave_brighten\\\":0,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":0.958,\\\"wave_smoothing\\\":0.45,\\\"modwavealphastart\\\":0,\\\"modwavealphaend\\\":1.32,\\\"warpanimspeed\\\":30.965,\\\"warpscale\\\":2.572,\\\"zoom\\\":1.00901,\\\"warp\\\":0.00054,\\\"wave_r\\\":0,\\\"wave_g\\\":0,\\\"wave_b\\\":0,\\\"mv_x\\\":25.6,\\\"mv_y\\\":9.6,\\\"mv_l\\\":0,\\\"mv_r\\\":0.5,\\\"mv_g\\\":0.5,\\\"mv_b\\\":0.5,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"textured\\\":1,\\\"x\\\":0.09,\\\"y\\\":0.9,\\\"rad\\\":0.22437,\\\"tex_zoom\\\":1.76002,\\\"r2\\\":1,\\\"g2\\\":0,\\\"a2\\\":0.6,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"additive\\\":1,\\\"x\\\":0.26,\\\"y\\\":0.2,\\\"rad\\\":0.39317,\\\"tex_zoom\\\":6.19589,\\\"r\\\":0,\\\"g\\\":0.55,\\\"b\\\":0.5,\\\"g2\\\":0.4,\\\"b2\\\":0.4,\\\"a2\\\":0.07,\\\"border_r\\\":0.3,\\\"border_g\\\":0.7,\\\"border_b\\\":0.8,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sides\\\":44,\\\"additive\\\":1,\\\"x\\\":0.503,\\\"rad\\\":0.03886,\\\"tex_zoom\\\":0.60986,\\\"g\\\":0.1,\\\"a\\\":0.9,\\\"r2\\\":1,\\\"b2\\\":1,\\\"border_r\\\":0.5,\\\"border_g\\\":0.5,\\\"border_b\\\":0.5,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"rad\\\":0.01,\\\"tex_zoom\\\":0.49981,\\\"r\\\":0,\\\"g2\\\":0,\\\"border_r\\\":0.2,\\\"border_g\\\":0.7,\\\"border_b\\\":0.5,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"samples\\\":282,\\\"sep\\\":20,\\\"usedots\\\":1,\\\"thick\\\":1,\\\"additive\\\":1,\\\"scaling\\\":3.91581,\\\"smoothing\\\":0.1,\\\"r\\\":0.2,\\\"g\\\":0.3,\\\"a\\\":0.6,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"usedots\\\":1,\\\"thick\\\":1,\\\"scaling\\\":0.89152,\\\"smoothing\\\":0.82,\\\"a\\\":0.1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"scaling\\\":0.89152,\\\"smoothing\\\":0.82,\\\"r\\\":0,\\\"g\\\":0.2,\\\"b\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"spectrum\\\":1,\\\"usedots\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"wave_r = 0.85 + 0.25*sin(0.437*time+1);\\\\nwave_g = 0.85 + 0.25*sin(0.544*time+2);\\\\nwave_b = 0.85 + 0.25*sin(0.751*time+3);\\\\nrot = rot + 0.010*( 0.60*sin(0.381*time) + 0.40*sin(0.579*time) );\\\\ncx = cx + 0.210*( 0.60*sin(0.374*time) + 0.40*sin(0.294*time) );\\\\ncy = cy + 0.210*( 0.60*sin(0.393*time) + 0.40*sin(0.223*time) );\\\\ndx = dx + 0.003*( 0.60*sin(0.234*time) + 0.40*sin(0.277*time) );\\\\ndy = dy + 0.003*( 0.60*sin(0.284*time) + 0.40*sin(0.247*time) );\\\\ndecay = decay - 0.01*equal(frame%6,0);\\\\ndx = dx + dx_residual;\\\\ndy = dy + dy_residual;\\\\nbass_thresh = above(bass_att,bass_thresh)*2 + (1-above(bass_att,bass_thresh))*((bass_thresh-1.3)*0.96+1.3);\\\\ndx_residual = equal(bass_thresh,2.13)*0.016*sin(time*7) + (1-equal(bass_thresh,2.13))*dx_residual;\\\\ndy_residual = equal(bass_thresh,2.13)*0.012*sin(time*9) + (1-equal(bass_thresh,2.13))*dy_residual;\\\\nwave_x = wave_x - dx_residual*7;\\\\nwave_y = wave_y - dy_residual*7;\\\\nwave_mystery = time*0.03;\\\\n\\\\n//zoom = zoom + 0.005*( 0.60*sin(0.1934*time+3) + 0.40*sin(0.307*time+9) );\\\\n//zoom = zoom + max(0,bass_att-1.1)*0.2;\\\\n//warp = warp + max(0,treb_att-1.1)*1.0;\\\\n\\\\n// this is a great way to respond to beats:\\\\n// once you get one, let it decay at a constant rate!!\\\\nrg = max(rg*0.77, 0.02 + 0.5*min(2,max(0,mid_att-1)*1.3));\\\\nq9 = rg;\\\\n\\\\nzoom = zoom + q9*0.1;\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\" shader_body { \\\\n vec3 ret_1;\\\\n ret_1 = texture (sampler_main, uv).xyz;\\\\n ret_1 = (ret_1 + ((ret_1 - \\\\n ((((\\\\n (texture (sampler_blur1, uv).xyz * scale1)\\\\n + bias1) * 0.3) + ((\\\\n (texture (sampler_blur2, uv).xyz * scale2)\\\\n + bias2) * 0.4)) + (((texture (sampler_blur3, uv).xyz * scale3) + bias3) * 0.3))\\\\n ) * 0.3));\\\\n ret_1 = (ret_1 * 0.9);\\\\n ret_1 = (ret_1 + ((\\\\n ((texture (sampler_noise_lq, ((\\\\n (uv_orig * texsize.xy)\\\\n * \\\\n (texsize_noise_lq.zw * 0.4)\\\\n ) + rand_frame.xy)).xyz - 0.5) / 256.0)\\\\n * 122.0) * (\\\\n (clamp ((treb_att - 1.0), 0.0, 1.0) * 0.4)\\\\n + 0.3)));\\\\n ret_1 = mix (ret_1, vec3(dot (ret_1, vec3(0.32, 0.49, 0.29))), vec3(0.2, 0.2, 0.2));\\\\n vec4 tmpvar_2;\\\\n tmpvar_2.w = 1.0;\\\\n tmpvar_2.xyz = ret_1;\\\\n ret = tmpvar_2.xyz;\\\\n }\\\",\\\"comp\\\":\\\"vec2 xlat_mutabledz;\\\\nvec3 xlat_mutableret1;\\\\nvec2 xlat_mutableuv3;\\\\n shader_body { \\\\n vec2 tmpvar_1;\\\\n tmpvar_1.y = 0.0;\\\\n tmpvar_1.x = texsize.z;\\\\n vec2 tmpvar_2;\\\\n tmpvar_2.x = 0.0;\\\\n tmpvar_2.y = texsize.w;\\\\n vec2 uv_3;\\\\n float inten_4;\\\\n float dist_5;\\\\n vec2 uv1_6;\\\\n vec3 ret_7;\\\\n vec2 tmpvar_8;\\\\n tmpvar_8 = ((uv - 0.5) * aspect.xy);\\\\n float tmpvar_9;\\\\n tmpvar_9 = (time / 18.0);\\\\n dist_5 = (1.0 - fract((0.25 + tmpvar_9)));\\\\n inten_4 = ((sqrt(dist_5) * (1.0 - dist_5)) * 4.0);\\\\n uv_3 = (tmpvar_8 * aspect.yx);\\\\n xlat_mutableuv3 = (vec2(0.51, 0.55) + (uv_3 * dist_5));\\\\n xlat_mutabledz.x = (inten_4 * ((2.0 * \\\\n dot (texture (sampler_main, (xlat_mutableuv3 + tmpvar_1)).xyz, vec3(0.32, 0.49, 0.29))\\\\n ) - (2.0 * \\\\n dot (texture (sampler_main, (xlat_mutableuv3 - tmpvar_1)).xyz, vec3(0.32, 0.49, 0.29))\\\\n )));\\\\n xlat_mutabledz.y = (inten_4 * ((2.0 * \\\\n dot (texture (sampler_main, (xlat_mutableuv3 + tmpvar_2)).xyz, vec3(0.32, 0.49, 0.29))\\\\n ) - (2.0 * \\\\n dot (texture (sampler_main, (xlat_mutableuv3 - tmpvar_2)).xyz, vec3(0.32, 0.49, 0.29))\\\\n )));\\\\n xlat_mutableret1 = max (vec3(0.0, 0.0, 0.0), (texture (sampler_main, xlat_mutableuv3).xyz * inten_4));\\\\n dist_5 = (1.0 - fract((0.5 + tmpvar_9)));\\\\n inten_4 = ((sqrt(dist_5) * (1.0 - dist_5)) * 4.0);\\\\n uv_3 = (tmpvar_8 * aspect.yx);\\\\n xlat_mutableuv3 = (vec2(0.49, 0.55) + (uv_3 * dist_5));\\\\n xlat_mutabledz.x = (xlat_mutabledz.x + (inten_4 * (\\\\n (2.0 * dot (texture (sampler_main, (xlat_mutableuv3 + tmpvar_1)).xyz, vec3(0.32, 0.49, 0.29)))\\\\n - \\\\n (2.0 * dot (texture (sampler_main, (xlat_mutableuv3 - tmpvar_1)).xyz, vec3(0.32, 0.49, 0.29)))\\\\n )));\\\\n xlat_mutabledz.y = (xlat_mutabledz.y + (inten_4 * (\\\\n (2.0 * dot (texture (sampler_main, (xlat_mutableuv3 + tmpvar_2)).xyz, vec3(0.32, 0.49, 0.29)))\\\\n - \\\\n (2.0 * dot (texture (sampler_main, (xlat_mutableuv3 - tmpvar_2)).xyz, vec3(0.32, 0.49, 0.29)))\\\\n )));\\\\n xlat_mutableret1 = max (xlat_mutableret1, (texture (sampler_main, xlat_mutableuv3).xyz * inten_4));\\\\n dist_5 = (1.0 - fract((0.75 + tmpvar_9)));\\\\n inten_4 = ((sqrt(dist_5) * (1.0 - dist_5)) * 4.0);\\\\n uv_3 = (tmpvar_8 * aspect.yx);\\\\n xlat_mutableuv3 = (vec2(0.51, 0.55) + (uv_3 * dist_5));\\\\n xlat_mutabledz.x = (xlat_mutabledz.x + (inten_4 * (\\\\n (2.0 * dot (texture (sampler_main, (xlat_mutableuv3 + tmpvar_1)).xyz, vec3(0.32, 0.49, 0.29)))\\\\n - \\\\n (2.0 * dot (texture (sampler_main, (xlat_mutableuv3 - tmpvar_1)).xyz, vec3(0.32, 0.49, 0.29)))\\\\n )));\\\\n xlat_mutabledz.y = (xlat_mutabledz.y + (inten_4 * (\\\\n (2.0 * dot (texture (sampler_main, (xlat_mutableuv3 + tmpvar_2)).xyz, vec3(0.32, 0.49, 0.29)))\\\\n - \\\\n (2.0 * dot (texture (sampler_main, (xlat_mutableuv3 - tmpvar_2)).xyz, vec3(0.32, 0.49, 0.29)))\\\\n )));\\\\n xlat_mutableret1 = max (xlat_mutableret1, (texture (sampler_main, xlat_mutableuv3).xyz * inten_4));\\\\n dist_5 = (1.0 - fract((1.0 + tmpvar_9)));\\\\n inten_4 = ((sqrt(dist_5) * (1.0 - dist_5)) * 4.0);\\\\n uv_3 = (tmpvar_8 * aspect.yx);\\\\n xlat_mutableuv3 = (vec2(0.49, 0.55) + (uv_3 * dist_5));\\\\n xlat_mutabledz.x = (xlat_mutabledz.x + (inten_4 * (\\\\n (2.0 * dot (texture (sampler_main, (xlat_mutableuv3 + tmpvar_1)).xyz, vec3(0.32, 0.49, 0.29)))\\\\n - \\\\n (2.0 * dot (texture (sampler_main, (xlat_mutableuv3 - tmpvar_1)).xyz, vec3(0.32, 0.49, 0.29)))\\\\n )));\\\\n xlat_mutabledz.y = (xlat_mutabledz.y + (inten_4 * (\\\\n (2.0 * dot (texture (sampler_main, (xlat_mutableuv3 + tmpvar_2)).xyz, vec3(0.32, 0.49, 0.29)))\\\\n - \\\\n (2.0 * dot (texture (sampler_main, (xlat_mutableuv3 - tmpvar_2)).xyz, vec3(0.32, 0.49, 0.29)))\\\\n )));\\\\n xlat_mutableret1 = max (xlat_mutableret1, (texture (sampler_main, xlat_mutableuv3).xyz * inten_4));\\\\n xlat_mutabledz = (xlat_mutabledz * (0.5 + rand_preset.z));\\\\n vec2 tmpvar_10;\\\\n tmpvar_10 = (2.0 * (rand_preset.xy - 0.5));\\\\n uv1_6 = (4.0 * tmpvar_8);\\\\n vec2 tmpvar_11;\\\\n tmpvar_11 = sin(((uv1_6 + xlat_mutabledz) + tmpvar_10));\\\\n vec2 tmpvar_12;\\\\n tmpvar_12 = sin(((uv1_6 + \\\\n (xlat_mutabledz * 1.4)\\\\n ) + tmpvar_10));\\\\n vec2 tmpvar_13;\\\\n tmpvar_13 = sin(((uv1_6 + \\\\n (xlat_mutabledz * 1.8)\\\\n ) + tmpvar_10));\\\\n vec3 tmpvar_14;\\\\n tmpvar_14.x = inversesqrt(dot (tmpvar_11, tmpvar_11));\\\\n tmpvar_14.y = inversesqrt(dot (tmpvar_12, tmpvar_12));\\\\n tmpvar_14.z = inversesqrt(dot (tmpvar_13, tmpvar_13));\\\\n ret_7 = (((\\\\n (tmpvar_14 * ((vec3(0.01, 0.01, 0.01) * (1.0 + \\\\n (rand_preset.xyz / 2.0)\\\\n )) * (0.5 + rand_preset.y)))\\\\n * \\\\n ((((rand_preset.x - 0.5) * 4.0) * xlat_mutableret1) + (8.0 * (1.0 + rand_preset)).xyz)\\\\n ) - (xlat_mutableret1.x * 0.5)) + ((xlat_mutableret1.y + xlat_mutableret1.z) / 3.0));\\\\n ret_7 = (ret_7 - ((slow_roam_sin.wzy * roam_cos.zxy) * 0.4));\\\\n ret_7 = (ret_7 * (1.0 + ret_7));\\\\n vec4 tmpvar_15;\\\\n tmpvar_15.w = 1.0;\\\\n tmpvar_15.xyz = ret_7;\\\\n ret = tmpvar_15.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/AdamFx 2 Geiss, Zylot and Flexi - Reaction Diffusion 3 (Overload Mix 2) EATIT4 hypno.json\":\n/*!*********************************************************************************************************************!*\\\n !*** ./presets/converted/AdamFx 2 Geiss, Zylot and Flexi - Reaction Diffusion 3 (Overload Mix 2) EATIT4 hypno.json ***!\n \\*********************************************************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":1,\\\"gammaadj\\\":1.9,\\\"echo_zoom\\\":1.169,\\\"wave_a\\\":0.001,\\\"warpanimspeed\\\":30.965,\\\"warpscale\\\":2.572,\\\"zoomexp\\\":1.94773,\\\"zoom\\\":1.00901,\\\"warp\\\":0.00054,\\\"wave_r\\\":0,\\\"wave_g\\\":0,\\\"wave_b\\\":0,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"textured\\\":1,\\\"x\\\":0.75,\\\"y\\\":0.75,\\\"rad\\\":0.7418,\\\"tex_zoom\\\":0.22746,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"border_r\\\":0,\\\"border_g\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"tex_saw = 0.4;\\\",\\\"frame_eqs_eel\\\":\\\"ang = q1*0.2;\\\\n\\\\ntex_capture = above(q3,2);\\\\ntex_zoom = 0.6;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"additive\\\":1,\\\"rad\\\":0.0444,\\\"tex_zoom\\\":0.22746,\\\"r\\\":0,\\\"g\\\":0.3,\\\"g2\\\":0,\\\"border_r\\\":0,\\\"border_g\\\":0,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"tex_saw = 0.4;\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"rad\\\":0.22167,\\\"border_a\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"border_r = 0.5 + 0.5*sin(q1*10);\\\"},{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"a = above(q3,2);\\\\na2 = above(q3,2)*0.8;\\\\n\\\\nxx = if(above(q3,6),xx,int(rand(100))*0.01);\\\\nyy = if(above(q3,6),yy,int(rand(100))*0.01);\\\\nradi = if(above(q3,5),radi,int(rand(100))*0.01);\\\\n\\\\nrad = radi;\\\\n\\\\nx = xx;\\\\ny = yy;\\\\n\\\\n\\\\nr = 0.5 + 0.5*sin(q1*1.22) + 0.1;\\\\ng = 0.4 + 0.4*sin(q1*1.307);\\\\nb = 0.4 + 0.4*sin(q1*1.959);\\\\n\\\\n\\\\nr2 = 0.5 + 0.5*sin(q1*1.622) + 0.1;\\\\ng2 = 0.4 + 0.4*sin(q1*1.507);\\\\nb2 = 0.4 + 0.4*sin(q1*1.6559);\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"a\\\":0.5},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"//init\\\\nzs = if(below(zs,1),9,zs);\\\\n\\\\nzs = if(above(zs, 1100),1, zs);\\\\n\\\\nspeed = bass*0.002;\\\\n\\\\n//sum\\\\nzs = zs + tan(q1*0.015)*speed;\\\\n\\\\nzd = zd + 2;\\\\n\\\\n\\\\n\\\\n//project\\\\nx = 0.5 + 0.1*cos(q1*zs);\\\\ny = 0.5 + 0.1*sin(q1*zs);\\\\n\\\\nr = 0.5 + 0.5*sin(q1*1.2 + x + x);\\\\ng = 0.5 + 0.5*sin(q1*1.5 + x + y);\\\\nb = 0.5 + 0.5*sin(q1*1.36 + y + y);\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"rot = -0.001;\\\\n//rot = rot + 0.010*( 0.60*sin(0.381*time) + 0.40*sin(0.579*time) );\\\\n\\\\nzoom =1.01;// + bass*0.05 - treb*0.015;\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\" shader_body { \\\\n vec2 uv_1;\\\\n vec3 ret_2;\\\\n uv_1 = (uv + (vec2(1.0, 0.0) * texsize.zw));\\\\n ret_2 = texture (sampler_main, uv_1).xyz;\\\\n ret_2.xz = (ret_2.xz + ((\\\\n (ret_2.xz - mix (((texture (sampler_blur2, uv_1).xyz * scale2) + bias2), ((texture (sampler_blur1, uv_1).xyz * scale1) + bias1), uv_orig.xxx).xz)\\\\n * 0.3) - (0.00666 * \\\\n (((bass + treb) + mid) - 0.5)\\\\n )));\\\\n ret_2.xz = (ret_2.xz * 0.95);\\\\n ret_2.xz = (ret_2.xz + ((\\\\n ((texture (sampler_noise_lq, ((\\\\n (uv_orig * texsize.xy)\\\\n * \\\\n (texsize_noise_lq.zw * 0.4)\\\\n ) + rand_frame.xy)).xz - 0.5) / 256.0)\\\\n * 122.0) * clamp (\\\\n (treb_att - 1.0)\\\\n , 0.0, 1.0)));\\\\n ret_2.x = mix (ret_2.x, dot (ret_2.xxx, vec3(0.32, 0.49, 0.29)), 0.2);\\\\n vec2 tmpvar_3;\\\\n tmpvar_3 = (texsize.zw * 12.0);\\\\n vec3 tmpvar_4;\\\\n tmpvar_4 = (((texture (sampler_blur2, \\\\n (uv_orig + (vec2(1.0, 0.0) * tmpvar_3))\\\\n ).xyz * scale2) + bias2) - ((texture (sampler_blur2, \\\\n (uv_orig - (vec2(1.0, 0.0) * tmpvar_3))\\\\n ).xyz * scale2) + bias2));\\\\n vec3 tmpvar_5;\\\\n tmpvar_5 = (((texture (sampler_blur2, \\\\n (uv_orig + (vec2(0.0, 1.0) * tmpvar_3))\\\\n ).xyz * scale2) + bias2) - ((texture (sampler_blur2, \\\\n (uv_orig - (vec2(0.0, 1.0) * tmpvar_3))\\\\n ).xyz * scale2) + bias2));\\\\n vec2 tmpvar_6;\\\\n tmpvar_6.x = tmpvar_4.x;\\\\n tmpvar_6.y = tmpvar_5.x;\\\\n vec2 tmpvar_7;\\\\n tmpvar_7.x = tmpvar_4.y;\\\\n tmpvar_7.y = tmpvar_5.y;\\\\n vec2 tmpvar_8;\\\\n tmpvar_8.x = tmpvar_4.z;\\\\n tmpvar_8.y = tmpvar_5.z;\\\\n vec2 tmpvar_9;\\\\n tmpvar_9 = (((uv_orig + \\\\n (tmpvar_6 * 0.005)\\\\n ) + (tmpvar_7 * 0.005)) - (tmpvar_8 * 0.005));\\\\n ret_2.y = (texture (sampler_main, tmpvar_9).y - 0.04);\\\\n ret_2.y = (ret_2.y + ((\\\\n (ret_2.y - (((texture (sampler_blur1, tmpvar_9).xyz * scale1) + bias1).y * 1.5))\\\\n + 0.4) * 0.1));\\\\n vec4 tmpvar_10;\\\\n tmpvar_10.w = 1.0;\\\\n tmpvar_10.xyz = ret_2;\\\\n ret = tmpvar_10.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n float ang2_1;\\\\n vec2 uv2_2;\\\\n ang2_1 = ((ang * 0.1591549) + (time * 0.025));\\\\n ang2_1 = (fract((ang2_1 * 9.0)) / 9.0);\\\\n ang2_1 = (abs((ang2_1 - 0.05555556)) * 6.283185);\\\\n vec2 tmpvar_3;\\\\n tmpvar_3.x = cos(ang2_1);\\\\n tmpvar_3.y = sin(ang2_1);\\\\n uv2_2 = (0.5 + ((\\\\n (0.4 * (rad * sqrt(dot (texsize.xy, texsize.xy))))\\\\n * tmpvar_3) * texsize.zw));\\\\n vec4 tmpvar_4;\\\\n tmpvar_4.w = 1.0;\\\\n tmpvar_4.xyz = (((texture (sampler_main, uv2_2).y * vec3(0.6, 0.2, 1.5)) + (texture (sampler_fw_main, uv2_2).x * vec3(1.0, 0.66, 0.0))) - (texture (sampler_main, uv2_2).z * vec3(-0.6, 1.0, 2.0)));\\\\n ret = tmpvar_4.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Aderrasi + Geiss - Airhandler (Kali Mix) - Canvas Mix.json\":\n/*!**************************************************************************************!*\\\n !*** ./presets/converted/Aderrasi + Geiss - Airhandler (Kali Mix) - Canvas Mix.json ***!\n \\**************************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":5,\\\"gammaadj\\\":2.001,\\\"decay\\\":0.95,\\\"echo_zoom\\\":0.9996,\\\"wave_mode\\\":1,\\\"wrap\\\":0,\\\"wave_a\\\":3.072644,\\\"wave_scale\\\":1.285746,\\\"wave_smoothing\\\":0,\\\"modwavealphastart\\\":0.71,\\\"modwavealphaend\\\":1.3,\\\"warpscale\\\":1.331,\\\"zoom\\\":0.999513,\\\"warp\\\":0.0101,\\\"wave_r\\\":0.65,\\\"wave_g\\\":0.65,\\\"wave_b\\\":0.65,\\\"ob_size\\\":0.005,\\\"ob_a\\\":0.8,\\\"ib_size\\\":0,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"wave_r = wave_r + 0.5*sin(time*1.13);\\\\nwave_g = wave_g + 0.5*sin(time*1.23);\\\\nwave_b = wave_b + 0.5*sin(time*1.33);\\\",\\\"pixel_eqs_eel\\\":\\\"zoom = zoom + 0.05*(sin(6*ang) + sin(sin(time*2*sin(time)*rad))*0.3 - cos(rad)*0.1);\\\\nrot = rot + 0.5*sin(0.5-rad)*cos(0.02*(0.5-rad)+time);\\\\nsx = sx + 0.01*(0.99*1-rad)*sin(0.733*time)*below(sin(time),0);\\\\nsy = sy + 0.01*(0.99*1-rad)*cos(0.953*time)*above(sin(time),0);\\\\nzoom = zoom - 0.05*(1-rad)*below(rad,0.5);\\\",\\\"warp\\\":\\\" shader_body { \\\\n vec4 tmpvar_1;\\\\n tmpvar_1.w = 1.0;\\\\n tmpvar_1.xyz = (texture (sampler_main, (uv + (\\\\n (texture (sampler_main, (uv + texsize.zw)).xy - 0.37)\\\\n * 0.03))).xyz - 0.004);\\\\n ret = tmpvar_1.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n vec2 uv_1;\\\\n vec3 ret_2;\\\\n uv_1 = (0.03 + (0.94 * uv));\\\\n vec2 tmpvar_3;\\\\n tmpvar_3 = (texsize.zw * 0.7);\\\\n ret_2 = (texture (sampler_main, (uv_1 + (tmpvar_3 * vec2(3.5, 0.0)))).xyz * 3.0);\\\\n ret_2 = (ret_2 + (texture (sampler_main, (uv_1 + \\\\n (tmpvar_3 * vec2(0.0, 3.5))\\\\n )).xyz * 3.0));\\\\n ret_2 = (ret_2 + (texture (sampler_main, (uv_1 + \\\\n (tmpvar_3 * vec2(0.0, -3.5))\\\\n )).xyz * -2.0));\\\\n ret_2 = (ret_2 + (texture (sampler_main, (uv_1 + \\\\n (tmpvar_3 * vec2(-3.5, 0.0))\\\\n )).xyz * -2.0));\\\\n ret_2 = (ret_2 / 2.0);\\\\n ret_2 = (ret_2 * (1.0 + (0.15 * \\\\n ((texture (sampler_noise_lq, (rand_frame.xy + (\\\\n (uv_1 * texsize.xy)\\\\n * texsize_noise_lq.zw))).xxx * 2.0) - 1.0)\\\\n )));\\\\n vec3 tmpvar_4;\\\\n tmpvar_4 = pow (ret_2, vec3(0.5, 0.8, 1.0));\\\\n ret_2 = tmpvar_4;\\\\n vec4 tmpvar_5;\\\\n tmpvar_5.w = 1.0;\\\\n tmpvar_5.xyz = tmpvar_4;\\\\n ret = tmpvar_5.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Aderrasi - Potion of Spirits.json\":\n/*!*************************************************************!*\\\n !*** ./presets/converted/Aderrasi - Potion of Spirits.json ***!\n \\*************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":1,\\\"baseVals\\\":{\\\"rating\\\":5,\\\"gammaadj\\\":1.42,\\\"decay\\\":1,\\\"echo_zoom\\\":0.999823,\\\"echo_alpha\\\":0.5,\\\"echo_orient\\\":1,\\\"wave_mode\\\":5,\\\"wave_thick\\\":1,\\\"wave_brighten\\\":0,\\\"wrap\\\":0,\\\"darken\\\":1,\\\"wave_a\\\":0.001185,\\\"wave_scale\\\":0.325446,\\\"wave_smoothing\\\":0.9,\\\"modwavealphastart\\\":0.5,\\\"modwavealphaend\\\":1,\\\"warpanimspeed\\\":2.630064,\\\"warpscale\\\":3.209168,\\\"zoomexp\\\":1.000158,\\\"dx\\\":0.00001,\\\"dy\\\":0.00001,\\\"warp\\\":0.01,\\\"wave_r\\\":0.5,\\\"wave_g\\\":0.5,\\\"wave_b\\\":0.5,\\\"ob_size\\\":0.005,\\\"ob_a\\\":0.5,\\\"ib_size\\\":0,\\\"ib_r\\\":0,\\\"ib_g\\\":0,\\\"ib_b\\\":0,\\\"ib_a\\\":0.1,\\\"mv_x\\\":6.4,\\\"mv_y\\\":4.8,\\\"mv_l\\\":5,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"wave_r = 0.5 + 0.5*sin(1.6*time);\\\\nwave_g = 0.5 + 0.5*sin(4.1*time);\\\\nwave_b = -1 + (1-wave_r + 1-wave_g);\\\\nwarp = 2;\\\\n\\\\nob_r = ob_r+wave_b*above(sin(0.1*time),0);\\\\nob_b = ob_b+wave_g*above(sin(0.1*time),0);\\\\nob_g = ob_g+wave_r*above(sin(0.1*time),0);\\\\nob_r = ob_r+wave_g*below(sin(0.1*time),0);\\\\nob_b = ob_b+wave_r*below(sin(0.1*time),0);\\\\nob_g = ob_g+wave_b*below(sin(0.1*time),0);\\\",\\\"pixel_eqs_eel\\\":\\\"thresh = above(bass_att,thresh)*2+(1-above(bass_att,thresh))*((thresh-1.3)*0.96+1.3);\\\\ndx_r = equal(thresh,2)*0.05*sin(5*time)+(1-equal(thresh,2))*dx_r;\\\\ndy_r = equal(thresh,2)*0.056*sin(6*time)+(1-equal(thresh,2))*dy_r;\\\\ntg1 = abs(sin(time));\\\\ntg2 = 22*above(tg1,0.75) + 12*below(tg1,0.25) + 18*above(tg1,0.25)*below(tg1,0.5)+\\\\n12*above(tg1,0.5)*below(tg1,0.75);\\\\ntg3 = if(equal(thresh,2),tg2,tg3);\\\\n\\\\nsix = sin(x);\\\\n\\\\ndx = dx + dx_r*sin(abs(tg3*y))*sin(time);\\\\ndy = dy + dy_r*sin(abs(tg3*x))*cos(time);\\\\ndx = dx + dx_r*pow(rad,y*2)*sin(time);\\\\ndy = dy + dy_r*pow(rad,x*2)*sin(time);\\\\nzoom = zoom - 0.0825*pow(rad,x*6)*cos(ang*6);\\\\nrot = rot - 0.0525*(0.75*sin(1.25*time)*pow(rad,x)*sin(1.45*time))*sin(time);\\\",\\\"warp\\\":\\\"\\\",\\\"comp\\\":\\\"\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Aderrasi - Storm of the Eye (Thunder) - mash0000 - quasi pseudo meta concentrics.json\":\n/*!*****************************************************************************************************************!*\\\n !*** ./presets/converted/Aderrasi - Storm of the Eye (Thunder) - mash0000 - quasi pseudo meta concentrics.json ***!\n \\*****************************************************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":0,\\\"gammaadj\\\":1,\\\"decay\\\":0.97,\\\"echo_zoom\\\":1,\\\"echo_alpha\\\":0.5,\\\"echo_orient\\\":3,\\\"wave_mode\\\":2,\\\"wave_brighten\\\":0,\\\"wrap\\\":0,\\\"wave_a\\\":100,\\\"wave_scale\\\":0.797,\\\"wave_smoothing\\\":0.5,\\\"modwavealphastart\\\":0.5,\\\"modwavealphaend\\\":1,\\\"dx\\\":0.00001,\\\"dy\\\":0.00001,\\\"warp\\\":0.01,\\\"wave_r\\\":0.5,\\\"wave_g\\\":0.5,\\\"wave_b\\\":0.5,\\\"ob_size\\\":0.005,\\\"ob_a\\\":1,\\\"ib_r\\\":0,\\\"ib_g\\\":0,\\\"ib_b\\\":0,\\\"ib_a\\\":0.1,\\\"mv_x\\\":0,\\\"mv_y\\\":0,\\\"mv_l\\\":1,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"warp = 0;\\\\n\\\\nob_r = ob_r + 0.8*sin(1.1*time) + 1.1*cos(2*time);\\\\nob_b = ob_b + 0.9*sin(1.2*time) + cos(1.5*time);\\\\nob_g = ob_g + 0.7*sin(time) + sin(0.4*time);\\\\nwave_r = abs(ob_r+0.2);\\\\nwave_g = abs(ob_g+0.2);\\\\nwave_b = abs(ob_b+0.2);\\\\nib_b = ib_b + 0.44*cos(1.5*time) + 0.7*tan(time);\\\\nib_g = ib_g + 2*sin(time*bass_att);\\\\nib_r = ib_r + 0.8*sin(1.2*time) + 1.3*cos(1.8*time);\\\",\\\"pixel_eqs_eel\\\":\\\"thresh = above(bass_att,thresh)*2+(1-above(bass_att,thresh))*((thresh-1.3)*0.96+1.3);\\\\ndx_r = equal(thresh,2)*0.015*sin(5*time)+(1-equal(thresh,2))*dx_r;\\\\ndy_r = equal(thresh,2)*0.015*sin(6*time)+(1-equal(thresh,2))*dy_r;\\\\nzoom = zoom + 0.07*treb*(abs(sin(time*rad)))*(0.3-rad);\\\\ndy = dy + dy_r*below(rad,0.5 - (0.2*time));\\\\ndx = dx + dx_r*below(rad,0.5 - (0.2*time));\\\\nrot = rot + (0.7*bass_att*sin(abs(dx_r*(1-rad)*2*time+cos(rad*12))))*0.2;\\\",\\\"warp\\\":\\\" shader_body { \\\\n vec3 ret_1;\\\\n vec4 tmpvar_2;\\\\n tmpvar_2 = texture (sampler_main, uv);\\\\n ret_1 = (tmpvar_2.xyz + ((tmpvar_2.xyz - \\\\n ((texture (sampler_blur1, uv).xyz * scale1) + bias1)\\\\n ) * 0.3));\\\\n ret_1 = (ret_1 * 0.9);\\\\n ret_1 = (ret_1 + ((\\\\n (texture (sampler_noise_lq, ((uv_orig * texsize.xy) * (texsize_noise_lq.zw * 0.1))).xyz - 0.5)\\\\n / 256.0) * 28.0));\\\\n vec3 tmpvar_3;\\\\n tmpvar_3 = mix (ret_1, vec3(dot (ret_1, vec3(0.32, 0.49, 0.29))), vec3(0.04, 0.04, 0.04));\\\\n ret_1 = tmpvar_3;\\\\n vec4 tmpvar_4;\\\\n tmpvar_4.w = 1.0;\\\\n tmpvar_4.xyz = tmpvar_3;\\\\n ret = tmpvar_4.xyz;\\\\n }\\\",\\\"comp\\\":\\\"\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/An AdamFX n Martin Infusion 2 flexi - Why The Sky Looks Diffrent Today - AdamFx n Martin Infusion - Tack Tile Disfunction B.json\":\n/*!************************************************************************************************************************************************************!*\\\n !*** ./presets/converted/An AdamFX n Martin Infusion 2 flexi - Why The Sky Looks Diffrent Today - AdamFx n Martin Infusion - Tack Tile Disfunction B.json ***!\n \\************************************************************************************************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":4,\\\"gammaadj\\\":1,\\\"decay\\\":1,\\\"echo_zoom\\\":1,\\\"echo_alpha\\\":0.5,\\\"additivewave\\\":1,\\\"modwavealphabyvolume\\\":1,\\\"wave_a\\\":0.009,\\\"wave_scale\\\":2.713,\\\"wave_smoothing\\\":0,\\\"modwavealphastart\\\":1.2,\\\"modwavealphaend\\\":1.2,\\\"warpanimspeed\\\":1.459,\\\"warpscale\\\":2.007,\\\"zoom\\\":0.9999,\\\"warp\\\":0.01,\\\"sx\\\":0.9999,\\\"wave_r\\\":0.44,\\\"wave_g\\\":0.4,\\\"ob_size\\\":0.015,\\\"ob_b\\\":1,\\\"ib_size\\\":0.26,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":0.85,\\\"mv_r\\\":0.5,\\\"mv_g\\\":0.5,\\\"mv_b\\\":0.5,\\\"mv_a\\\":0,\\\"b1ed\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":3,\\\"additive\\\":1,\\\"num_inst\\\":175,\\\"rad\\\":0.20065,\\\"ang\\\":0.75398,\\\"tex_ang\\\":3.14159,\\\"tex_zoom\\\":0.99979,\\\"r\\\":0,\\\"g2\\\":0,\\\"border_r\\\":0.01,\\\"border_g\\\":0,\\\"border_a\\\":1},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"//lorenz-attractor calc\\\\nxx1 = if(equal(instance,0),q11,xx1);\\\\nyy1 = if(equal(instance,0),q12,yy1);\\\\nzz1 = if(equal(instance,0),q13,zz1);\\\\n\\\\ndx1 = q14*(yy1-xx1);\\\\ndy1 = xx1*(q15-zz1)-yy1;\\\\ndz1 = xx1*yy1-q16*zz1;\\\\ndd = sqrt(dx1*dx1+dy1*dy1+dz1*dz1);\\\\nxx1 = xx1 + q17*dx1/dd;\\\\nyy1 = yy1 + q17*dy1/dd;\\\\nzz1 = zz1 + q17*dz1/dd;\\\\n\\\\n\\\\n// 3D object model coordinates\\\\nmy_x = xx1*0.1;\\\\nmy_y = yy1*0.1;\\\\nmy_z = zz1*0.1 - 3;\\\\n\\\\n\\\\nd = 4.75; // camera distance\\\\nzoom = .55+0.25*sin(.5*q32);\\\\n\\\\n// solid angles\\\\nw1 = q3;\\\\nw2 = q4;\\\\nw3 = q5;\\\\n\\\\n// 3D rotation\\\\nx1 = cos(w1)*my_x + sin(w1)*my_y;\\\\ny1 = -sin(w1)*my_x + cos(w1)*my_y;\\\\nz1 = my_z;\\\\n\\\\nx2 = cos(w2)*x1 + sin(w2)*z1;\\\\nz2 = -sin(w2)*x1 + cos(w2)*z1;\\\\ny2 = y1;\\\\n\\\\ny3 = cos(w3)*y2 + sin(w3)*z2;\\\\nz3 = -sin(w3)*y2 + cos(w3)*z2;\\\\nx3 = x2;\\\\n\\\\n// perspective calculation\\\\n\\\\nl = sqrt(x3*x3 + y3*y3);\\\\nw = atan2(x3,y3);\\\\np = tan(asin(1) + atan2(d+z3,l));\\\\nd = sqrt(x3*x3 + y3*y3 + (z3+d)*(z3+d));\\\\n\\\\nmy_x = zoom*sin(w)*p;\\\\nmy_y = zoom*cos(w)*p;\\\\n\\\\nx = 0.5 + my_x;\\\\ny = 0.5 + my_y;\\\\n\\\\nrad = rad/d;\\\\nang = ang-instance/num_inst*asin(1)*8;\\\"},{\\\"baseVals\\\":{\\\"sides\\\":12,\\\"additive\\\":1,\\\"num_inst\\\":512,\\\"y\\\":0.55,\\\"rad\\\":0.0986,\\\"tex_zoom\\\":0.7874,\\\"r\\\":0.2,\\\"g\\\":0.03,\\\"b\\\":0.55,\\\"g2\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"started = 0;\\\\nt1 = 0.412; //seeds for pseudo random generator\\\\nt2 = 0.4563;\\\\nt3 = 0.6452;\\\\nt4 = 0.2565;\\\",\\\"frame_eqs_eel\\\":\\\"rnd1 = if(equal(instance,0),t1,rnd1);\\\\nrnd2 = if(equal(instance,0),t2,rnd2);\\\\nrnd3 = if(equal(instance,0),t3,rnd3);\\\\nrnd4 = if(equal(instance,0),t4,rnd4);\\\\nrnd1 = 4*rnd1*(1-rnd1);\\\\nrnd2 = 4*rnd2*(1-rnd2);\\\\nrnd3 = 4*rnd3*(1-rnd3);\\\\nrnd4 = 4*rnd4*(1-rnd4);\\\\nt = .6;\\\\nt = (rnd1+time*t) - int(rnd1+time*t);\\\\nt = t + rnd2*0.1;\\\\nwh = rnd4*asin(1)*4;\\\\nwv = 0.25 + rnd3*0.1;\\\\n\\\\nd = 6; // makes the perspective impact\\\\nzoom = 1;\\\\nl = 1;\\\\n\\\\n// Kardan angles\\\\n\\\\nw1 = q3; // first rotation: clockwise in the desktop pane\\\\nw2 = q4; // rotation around vertical axis\\\\nw3 = q5; // rotation around horizontal axis\\\\n\\\\n\\\\n// definition of the 3D shape\\\\n\\\\ni = instance;\\\\n\\\\nmy_x = t *(cos(wh)*sin(wv)*l)*2;\\\\nmy_z = -(-0.5 +(t-0.75)*(t-0.75))*cos(wv)*l*2;\\\\nmy_y = t*(sin(wh)*sin(wv)*l)*2;\\\\n\\\\n\\\\n\\\\n// 3D rotations\\\\n\\\\nx1 = cos(w1)*my_x + sin(w1)*my_y;\\\\ny1 = -sin(w1)*my_x + cos(w1)*my_y;\\\\nz1 = my_z;\\\\n\\\\nx2 = cos(w2)*x1 + sin(w2)*z1;\\\\nz2 = -sin(w2)*x1 + cos(w2)*z1;\\\\ny2 = y1;\\\\n\\\\ny3 = cos(w3)*y2 + sin(w3)*z2;\\\\nz3 = -sin(w3)*y2 + cos(w3)*z2;\\\\nx3 = x2;\\\\n\\\\n// perspective calculation\\\\n\\\\np = tan(asin(1) + atan2(d+z3,sqrt(x3*x3 + y3*y3)));\\\\nd = sqrt(x3*x3 + y3*y3 + (z3+d)*(z3+d));\\\\n\\\\nrad = rad/d;\\\\nmy_x = zoom*sin(atan2(x3,y3))*p;\\\\nmy_y = zoom*cos(atan2(x3,y3))*p;\\\\n\\\\nx = 0.5 + my_x;\\\\ny = 0.5 + my_y;\\\\n\\\\nx = 0.5 + (x-0.5)/q2;\\\\ny = 0.5 + (y-0.5)/q1;\\\"},{\\\"baseVals\\\":{\\\"sides\\\":12,\\\"additive\\\":1,\\\"num_inst\\\":512,\\\"y\\\":0.55,\\\"rad\\\":0.2667,\\\"tex_zoom\\\":0.7874,\\\"r\\\":0,\\\"g\\\":0.1,\\\"b\\\":0.55,\\\"g2\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"started = 0;\\\\nt1 = 0.412; //seeds for pseudo random generator\\\\nt2 = 0.4563;\\\\nt3 = 0.6452;\\\\nt4 = 0.2565;\\\",\\\"frame_eqs_eel\\\":\\\"rnd1 = if(equal(instance,0),t1,rnd1);\\\\nrnd2 = if(equal(instance,0),t2,rnd2);\\\\nrnd3 = if(equal(instance,0),t3,rnd3);\\\\nrnd4 = if(equal(instance,0),t4,rnd4);\\\\nrnd1 = 4*rnd1*(1-rnd1);\\\\nrnd2 = 4*rnd2*(1-rnd2);\\\\nrnd3 = 4*rnd3*(1-rnd3);\\\\nrnd4 = 4*rnd4*(1-rnd4);\\\\nt = .6;\\\\nt = (rnd1+time*t) - int(rnd1+time*t);\\\\nt = t + rnd2*0.1;\\\\nwh = rnd4*asin(1)*4;\\\\nwv = 0.25 + rnd3*0.1;\\\\n\\\\nd = 6; // makes the perspective impact\\\\nzoom = 1;\\\\nl = 1;\\\\n\\\\n// Kardan angles\\\\n\\\\nw1 = q3; // first rotation: clockwise in the desktop pane\\\\nw2 = q4; // rotation around vertical axis\\\\nw3 = q5; // rotation around horizontal axis\\\\n\\\\n\\\\n// definition of the 3D shape\\\\n\\\\ni = instance;\\\\n\\\\nmy_x = t *(cos(wh)*sin(wv)*l)*4;\\\\nmy_z = (-0.5 +(t-0.75)*(t-0.75))*cos(wv)*l*4;\\\\nmy_y = t*(sin(wh)*sin(wv)*l)*4;\\\\n\\\\n\\\\n// 3D rotations\\\\n\\\\nx1 = cos(w1)*my_x + sin(w1)*my_y;\\\\ny1 = -sin(w1)*my_x + cos(w1)*my_y;\\\\nz1 = my_z;\\\\n\\\\nx2 = cos(w2)*x1 + sin(w2)*z1;\\\\nz2 = -sin(w2)*x1 + cos(w2)*z1;\\\\ny2 = y1;\\\\n\\\\ny3 = cos(w3)*y2 + sin(w3)*z2;\\\\nz3 = -sin(w3)*y2 + cos(w3)*z2;\\\\nx3 = x2;\\\\n\\\\n// perspective calculation\\\\n\\\\np = tan(asin(1) + atan2(d+z3,sqrt(x3*x3 + y3*y3)));\\\\nd = sqrt(x3*x3 + y3*y3 + (z3+d)*(z3+d));\\\\n\\\\nrad = rad/d;\\\\nmy_x = zoom*sin(atan2(x3,y3))*p;\\\\nmy_y = zoom*cos(atan2(x3,y3))*p;\\\\n\\\\nx = 0.5 + my_x;\\\\ny = 0.5 + my_y;\\\\n\\\\nx = 0.5 + (x-0.5)/q2;\\\\ny = 0.5 + (y-0.5)/q1;\\\"},{\\\"baseVals\\\":{\\\"sides\\\":12,\\\"additive\\\":1,\\\"num_inst\\\":512,\\\"y\\\":0.55,\\\"rad\\\":0.05012,\\\"tex_zoom\\\":0.7874,\\\"r\\\":0,\\\"g\\\":0.02,\\\"b\\\":0.11,\\\"g2\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"started = 0;\\\\nt1 = 0.412; //seeds for pseudo random generator\\\\nt2 = 0.4563;\\\\nt3 = 0.6452;\\\\nt4 = 0.2565;\\\",\\\"frame_eqs_eel\\\":\\\"rnd1 = if(equal(instance,0),t1,rnd1);\\\\nrnd2 = if(equal(instance,0),t2,rnd2);\\\\nrnd3 = if(equal(instance,0),t3,rnd3);\\\\nrnd4 = if(equal(instance,0),t4,rnd4);\\\\nrnd1 = 4*rnd1*(1-rnd1);\\\\nrnd2 = 4*rnd2*(1-rnd2);\\\\nrnd3 = 4*rnd3*(1-rnd3);\\\\nrnd4 = 4*rnd4*(1-rnd4);\\\\nt = .6;\\\\nt = (rnd1+time*t) - int(rnd1+time*t);\\\\nt = t + rnd2*0.1;\\\\nwh = rnd4*asin(1)*4;\\\\nwv = 0.25 + rnd3*0.1;\\\\n\\\\nd = 1.4; // makes the perspective impact\\\\nzoom = 1;\\\\nl = 1;\\\\n\\\\n// Kardan angles\\\\n\\\\nw1 = q3; // first rotation: clockwise in the desktop pane\\\\nw2 = q4; // rotation around vertical axis\\\\nw3 = q5; // rotation around horizontal axis\\\\n\\\\n\\\\n// definition of the 3D shape\\\\n\\\\ni = instance;\\\\n\\\\nmy_x = t *(cos(wh)*sin(wv)*l);\\\\nmy_y = (-0.5 +(t-0.75)*(t-0.75))*cos(wv)*l;\\\\nmy_z = t*(sin(wh)*sin(wv)*l);\\\\n\\\\n\\\\n// 3D rotations\\\\n\\\\nx1 = cos(w1)*my_x + sin(w1)*my_y;\\\\ny1 = -sin(w1)*my_x + cos(w1)*my_y;\\\\nz1 = my_z;\\\\n\\\\nx2 = cos(w2)*x1 + sin(w2)*z1;\\\\nz2 = -sin(w2)*x1 + cos(w2)*z1;\\\\ny2 = y1;\\\\n\\\\ny3 = cos(w3)*y2 + sin(w3)*z2;\\\\nz3 = -sin(w3)*y2 + cos(w3)*z2;\\\\nx3 = x2;\\\\n\\\\n// perspective calculation\\\\n\\\\np = tan(asin(1) + atan2(d+z3,sqrt(x3*x3 + y3*y3)));\\\\nd = sqrt(x3*x3 + y3*y3 + (z3+d)*(z3+d));\\\\n\\\\nrad = rad/d;\\\\nmy_x = zoom*sin(atan2(x3,y3))*p;\\\\nmy_y = zoom*cos(atan2(x3,y3))*p;\\\\n\\\\nx = 0.5 + my_x;\\\\ny = 0.5 + my_y;\\\\n\\\\nx = 0.5 + (x-0.5)/q2;\\\\ny = 0.5 + (y-0.5)/q1;\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"samples\\\":495,\\\"sep\\\":4,\\\"spectrum\\\":1,\\\"thick\\\":1,\\\"additive\\\":1,\\\"scaling\\\":100,\\\"smoothing\\\":1,\\\"a\\\":0.21,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t2 = 0;\\\\nt3 = 0;\\\\nt4 = 0;\\\\nab = 1;\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"// lorenz-attractor calc\\\\nxx1 = if(equal(sample,0),q11,xx1);\\\\nyy1 = if(equal(sample,0),q12,yy1);\\\\nzz1 = if(equal(sample,0),q13,zz1);\\\\ndx1 = q14*(yy1-xx1);\\\\ndy1 = xx1*(q15-zz1)-yy1;\\\\ndz1 = xx1*yy1-q16*zz1;\\\\nxx1 = xx1 + q17*dx1;\\\\nyy1 = yy1 + q17*dy1;\\\\nzz1 = zz1 + q17*dz1;\\\\n\\\\n// 3D model coordinates\\\\nmy_x = xx1*0.1;\\\\nmy_y = yy1*0.1;\\\\nmy_z = zz1*0.1 - 3;\\\\n\\\\n\\\\nd = 5; // distance of the camera (on the z-axis) to the origin\\\\nzoom = 0.4;\\\\n\\\\n// solid angles\\\\nw1 = q2;\\\\nw2 = q3;\\\\nw3 = q4;\\\\n\\\\n// rotations\\\\nx1 = cos(w1)*my_x + sin(w1)*my_y;\\\\ny1 = -sin(w1)*my_x + cos(w1)*my_y;\\\\nz1 = my_z;\\\\n\\\\nx2 = cos(w2)*x1 + sin(w2)*z1;\\\\nz2 = -sin(w2)*x1 + cos(w2)*z1;\\\\ny2 = y1;\\\\n\\\\ny3 = cos(w3)*y2 + sin(w3)*z2;\\\\nz3 = -sin(w3)*y2 + cos(w3)*z2;\\\\nx3 = x2;\\\\n\\\\n// perspective calculation\\\\n\\\\nl = sqrt(x3*x3 + y3*y3);\\\\nw = atan2(x3,y3);\\\\np = tan(asin(1) + atan2(d+z3,l));\\\\nd = sqrt(x3*x3 + y3*y3 + (z3+d)*(z3+d));\\\\n\\\\nmy_x = zoom*sin(w)*p;\\\\nmy_y = zoom*cos(w)*p;\\\\n\\\\nx = 0.5 + my_x;\\\\ny = 0.5 + my_y;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"xx1 = if(equal(sample,0),q11,xx1);\\\\nyy1 = if(equal(sample,0),q12,yy1);\\\\nzz1 = if(equal(sample,0),q13,zz1);\\\\n\\\\ndx1 = q14*(yy1-xx1);\\\\ndy1 = xx1*(q15-zz1)-yy1;\\\\ndz1 = xx1*yy1-q16*zz1;\\\\nxx1 = xx1 + q17*dx1;\\\\nyy1 = yy1 + q17*dy1;\\\\nzz1 = zz1 + q17*dz1;\\\\n\\\\nmy_x = xx1*0.02;\\\\nmy_y = yy1*0.02;\\\\nmy_z = zz1*0.02;\\\\n\\\\nx = 0.5 + my_x;\\\\ny = 0.5 + my_y;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"step = 0;\\\",\\\"frame_eqs_eel\\\":\\\"dec_med = pow (0.9, 30/fps);\\\\ndec_slow = pow (0.96, 30/fps);\\\\ndec_fast = pow (0.6, 30/fps);\\\\nbeat = max (max (bass, mid), treb); \\\\navg = avg*dec_slow + beat*(1-dec_slow);\\\\nis_beat = above(beat, 0+avg+peak) * above (time, t0+.1);\\\\nt0 = is_beat*time + (1-is_beat)*t0;\\\\npeak = is_beat * beat + (1-is_beat)*peak*dec_med;\\\\nindex = (index + is_beat) %16;\\\\nindex2 = (index2 + is_beat*bnot(index))%8;\\\\n\\\\nq20 = avg;\\\\nq21 = beat;\\\\nq22 = peak;\\\\nq24 = is_beat;\\\\nvol = bass_att + mid_att + treb_att;\\\\nvol_ = dec_med * vol_ + (1-dec_med)* vol;\\\\nvol__ = dec_med * vol__ + (1-dec_med)* vol_;\\\\nq27 = index + 1;\\\\nq28 = index2 + 1;\\\\nq23 = q22 -0.1/q22;\\\\nq23 = max(q23,1);\\\\n\\\\nk1 = is_beat*equal(index%8,0);\\\\np1 = k1*(p1+1) + (1-k1)*p1;\\\\np2 = dec_fast * p2+ (1-dec_fast)*p1;\\\\nrott = p2 * 3.1416/4;\\\\n\\\\nq1 = cos(rott);\\\\nq2 = sin(rott);\\\\nq3 = -q2;\\\\nq4 = q1;\\\\n\\\\ntrig = q24 * bnot(index%2);\\\\nvx = vx*bnot(trig) + trig* (int(rand(100))/100-.5);\\\\nvy = vy*bnot(trig) + trig* (int(rand(100))/100-.5);\\\\nq10 = 0.2+vy*vy*2;\\\\nq11 = sin(time/9)/2+.4;\\\\nmovz = movz-1/fps*(.3+vx);\\\\nq9 = movz;\\\\n\\\\nq12 = min(q22,6)*2;\\\\nq13 = min(2,1+abs(8*vy*vx));\\\\n//dir_ = dec_med*dir_ + (1-dec_med)*(index2%2-.5);\\\\ndir_ = bass-1;\\\\n\\\\ntrig = bnot(index%4) * q24;\\\\ndir = bnot(trig)*dir + trig*(int(rand(10))-5);\\\\n\\\\ntrel = trel + .1/fps*dir;\\\\ntrel_ = dec_med*trel_ + (1-dec_med)*trel;\\\\n\\\\nq5 = cos(trel_);\\\\nq6 = sin(trel_+0*q27*(q28%2));\\\\nq7 = -q6;\\\\nq8 = q5;\\\\n\\\\nzoom = 1.02;\\\\nrot = .5*sin(bnot(q28%2)*q28) ;\\\\nrot = .0*sin(time/3);\\\\ndx = .0;\\\\n\\\\nmonitor = q11;\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\" shader_body { \\\\n vec2 tmpvar_1;\\\\n tmpvar_1 = ((uv * texsize.xy) * 0.08);\\\\n vec3 tmpvar_2;\\\\n tmpvar_2 = (texture (sampler_main, (uv - (\\\\n ((sin(tmpvar_1) / cos(tmpvar_1)) * texsize.zw)\\\\n * 3.0))).xyz + (vec3(dot (texture (sampler_noise_lq, \\\\n ((((texsize.xy * texsize_noise_lq.zw).x * uv) * 0.02) + (0.1 * rand_frame).xy)\\\\n ), vec4(0.32, 0.49, 0.29, 0.0))) / 30.0));\\\\n vec4 tmpvar_3;\\\\n tmpvar_3.w = 1.0;\\\\n tmpvar_3.xyz = ((mix (tmpvar_2, \\\\n (1.0 - tmpvar_2.zyx)\\\\n , vec3(0.01, 0.01, 0.01)) - 0.03) - (0.2 * pow (\\\\n (1.0 - rad)\\\\n , 18.0)));\\\\n ret = tmpvar_3.xyz;\\\\n }\\\",\\\"comp\\\":\\\"vec3 xlat_mutableneu;\\\\nvec2 xlat_mutablers0;\\\\nvec2 xlat_mutablerss;\\\\nvec2 xlat_mutableuv2;\\\\n shader_body { \\\\n vec2 uv_1;\\\\n vec2 ofs_2;\\\\n vec3 ret1_3;\\\\n uv_1 = ((uv - 0.5) * aspect.xy);\\\\n vec2 tmpvar_4;\\\\n tmpvar_4.x = q5;\\\\n tmpvar_4.y = q6;\\\\n uv_1 = (uv_1 + (tmpvar_4 / 4.0));\\\\n mat2 tmpvar_5;\\\\n tmpvar_5[uint(0)] = _qb.xy;\\\\n tmpvar_5[1u] = _qb.zw;\\\\n uv_1 = (uv_1 * tmpvar_5);\\\\n float tmpvar_6;\\\\n float tmpvar_7;\\\\n tmpvar_7 = (min (abs(\\\\n (uv_1.y / uv_1.x)\\\\n ), 1.0) / max (abs(\\\\n (uv_1.y / uv_1.x)\\\\n ), 1.0));\\\\n float tmpvar_8;\\\\n tmpvar_8 = (tmpvar_7 * tmpvar_7);\\\\n tmpvar_8 = (((\\\\n ((((\\\\n ((((-0.01213232 * tmpvar_8) + 0.05368138) * tmpvar_8) - 0.1173503)\\\\n * tmpvar_8) + 0.1938925) * tmpvar_8) - 0.3326756)\\\\n * tmpvar_8) + 0.9999793) * tmpvar_7);\\\\n tmpvar_8 = (tmpvar_8 + (float(\\\\n (abs((uv_1.y / uv_1.x)) > 1.0)\\\\n ) * (\\\\n (tmpvar_8 * -2.0)\\\\n + 1.570796)));\\\\n tmpvar_6 = (tmpvar_8 * sign((uv_1.y / uv_1.x)));\\\\n if ((abs(uv_1.x) > (1e-08 * abs(uv_1.y)))) {\\\\n if ((uv_1.x < 0.0)) {\\\\n if ((uv_1.y >= 0.0)) {\\\\n tmpvar_6 += 3.141593;\\\\n } else {\\\\n tmpvar_6 = (tmpvar_6 - 3.141593);\\\\n };\\\\n };\\\\n } else {\\\\n tmpvar_6 = (sign(uv_1.y) * 1.570796);\\\\n };\\\\n xlat_mutablers0.x = (((tmpvar_6 / 3.1416) * 6.0) * q28);\\\\n xlat_mutablers0.y = inversesqrt(dot (uv_1, uv_1));\\\\n vec2 tmpvar_9;\\\\n tmpvar_9.x = (xlat_mutablers0.x + (q9 * 8.0));\\\\n tmpvar_9.y = (xlat_mutablers0.y + ((q9 * q28) * 4.0));\\\\n xlat_mutablerss = (tmpvar_9 / 12.0);\\\\n vec2 tmpvar_10;\\\\n tmpvar_10.x = q5;\\\\n tmpvar_10.y = q6;\\\\n ofs_2 = (0.1 * tmpvar_10.yx);\\\\n float tmpvar_11;\\\\n float tmpvar_12;\\\\n tmpvar_12 = -(q9);\\\\n tmpvar_11 = fract(tmpvar_12);\\\\n mat2 tmpvar_13;\\\\n tmpvar_13[uint(0)].x = 1.0;\\\\n tmpvar_13[uint(0)].y = -0.0;\\\\n tmpvar_13[1u].x = 0.0;\\\\n tmpvar_13[1u].y = 1.0;\\\\n xlat_mutableuv2 = ((uv_1 * (\\\\n (q13 * tmpvar_11)\\\\n * tmpvar_13)) * aspect.yx);\\\\n vec2 tmpvar_14;\\\\n tmpvar_14 = fract(((xlat_mutableuv2 + 0.5) + ofs_2));\\\\n xlat_mutableneu = (texture (sampler_main, tmpvar_14).xyz + ((texture (sampler_blur1, tmpvar_14).xyz * scale1) + bias1));\\\\n ret1_3 = max (vec3(0.0, 0.0, 0.0), ((xlat_mutableneu * \\\\n (1.0 - (tmpvar_11 * tmpvar_11))\\\\n ) * 2.0));\\\\n float tmpvar_15;\\\\n tmpvar_15 = fract((tmpvar_12 + 0.3333333));\\\\n mat2 tmpvar_16;\\\\n tmpvar_16[uint(0)].x = -0.4990803;\\\\n tmpvar_16[uint(0)].y = -0.8665558;\\\\n tmpvar_16[1u].x = 0.8665558;\\\\n tmpvar_16[1u].y = -0.4990803;\\\\n xlat_mutableuv2 = ((uv_1 * (\\\\n (q13 * tmpvar_15)\\\\n * tmpvar_16)) * aspect.yx);\\\\n vec2 tmpvar_17;\\\\n tmpvar_17 = fract(((xlat_mutableuv2 + 0.5) + ofs_2));\\\\n xlat_mutableneu = (texture (sampler_main, tmpvar_17).xyz + ((texture (sampler_blur1, tmpvar_17).xyz * scale1) + bias1));\\\\n ret1_3 = max (ret1_3, ((xlat_mutableneu * \\\\n (1.0 - (tmpvar_15 * tmpvar_15))\\\\n ) * 2.0));\\\\n float tmpvar_18;\\\\n tmpvar_18 = fract((tmpvar_12 + 0.6666667));\\\\n mat2 tmpvar_19;\\\\n tmpvar_19[uint(0)].x = -0.5018377;\\\\n tmpvar_19[uint(0)].y = 0.8649619;\\\\n tmpvar_19[1u].x = -0.8649619;\\\\n tmpvar_19[1u].y = -0.5018377;\\\\n xlat_mutableuv2 = ((uv_1 * (\\\\n (q13 * tmpvar_18)\\\\n * tmpvar_19)) * aspect.yx);\\\\n vec2 tmpvar_20;\\\\n tmpvar_20 = fract(((xlat_mutableuv2 + 0.5) + ofs_2));\\\\n xlat_mutableneu = (texture (sampler_main, tmpvar_20).xyz + ((texture (sampler_blur1, tmpvar_20).xyz * scale1) + bias1));\\\\n ret1_3 = max (ret1_3, ((xlat_mutableneu * \\\\n (1.0 - (tmpvar_18 * tmpvar_18))\\\\n ) * 2.0));\\\\n float tmpvar_21;\\\\n tmpvar_21 = fract((tmpvar_12 + 1.0));\\\\n mat2 tmpvar_22;\\\\n tmpvar_22[uint(0)].x = 0.9999949;\\\\n tmpvar_22[uint(0)].y = 0.003185092;\\\\n tmpvar_22[1u].x = -0.003185092;\\\\n tmpvar_22[1u].y = 0.9999949;\\\\n xlat_mutableuv2 = ((uv_1 * (\\\\n (q13 * tmpvar_21)\\\\n * tmpvar_22)) * aspect.yx);\\\\n vec2 tmpvar_23;\\\\n tmpvar_23 = fract(((xlat_mutableuv2 + 0.5) + ofs_2));\\\\n xlat_mutableneu = (texture (sampler_main, tmpvar_23).xyz + ((texture (sampler_blur1, tmpvar_23).xyz * scale1) + bias1));\\\\n ret1_3 = max (ret1_3, ((xlat_mutableneu * \\\\n (1.0 - (tmpvar_21 * tmpvar_21))\\\\n ) * 2.0));\\\\n vec2 tmpvar_24;\\\\n tmpvar_24.x = (ret1_3.x + ret1_3.z);\\\\n tmpvar_24.y = (ret1_3.x - ret1_3.y);\\\\n vec4 tmpvar_25;\\\\n tmpvar_25.w = 1.0;\\\\n tmpvar_25.xyz = ((ret1_3 + (\\\\n ((bass_att * 0.004) / sqrt(dot (uv_1, uv_1)))\\\\n * roam_sin).xyz) + ((2.0 * \\\\n (bass_att * ((texture (sampler_blur1, fract(\\\\n (xlat_mutablerss + (tmpvar_24 / 2.0))\\\\n )).xyz * scale1) + bias1).zxy)\\\\n ) * clamp (\\\\n (1.0 - (ret1_3 * 4.0))\\\\n , 0.0, 1.0)));\\\\n ret = tmpvar_25.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Cope - The Neverending Explosion of Red Liquid Fire.json\":\n/*!************************************************************************************!*\\\n !*** ./presets/converted/Cope - The Neverending Explosion of Red Liquid Fire.json ***!\n \\************************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":0,\\\"gammaadj\\\":1.14,\\\"decay\\\":1,\\\"echo_zoom\\\":1,\\\"wave_mode\\\":1,\\\"wave_thick\\\":1,\\\"modwavealphabyvolume\\\":1,\\\"wave_brighten\\\":0,\\\"wrap\\\":0,\\\"darken\\\":1,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":0.179,\\\"wave_smoothing\\\":0,\\\"wave_mystery\\\":0.3,\\\"modwavealphastart\\\":0.71,\\\"modwavealphaend\\\":1.3,\\\"warpscale\\\":1.331,\\\"zoomexp\\\":0.8195,\\\"zoom\\\":1.0697,\\\"dy\\\":0.006,\\\"warp\\\":0.01,\\\"sx\\\":0.9996,\\\"wave_g\\\":0,\\\"wave_b\\\":0,\\\"ob_a\\\":0.8,\\\"ib_size\\\":0,\\\"ib_r\\\":0,\\\"ib_g\\\":0,\\\"ib_b\\\":0,\\\"ib_a\\\":1,\\\"mv_x\\\":0,\\\"mv_y\\\":0,\\\"mv_l\\\":1,\\\"mv_g\\\":0.91,\\\"mv_b\\\":0.71,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"sides\\\":63,\\\"rad\\\":0.01,\\\"ang\\\":3.4054,\\\"tex_ang\\\":3.1415,\\\"tex_zoom\\\":1.6446,\\\"r\\\":0,\\\"a\\\":0.4,\\\"g2\\\":0,\\\"border_g\\\":0,\\\"border_b\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"rad = rad + 0.1*q3;\\\"},{\\\"baseVals\\\":{\\\"sides\\\":34,\\\"textured\\\":1,\\\"rad\\\":0.18167,\\\"tex_ang\\\":3.1415,\\\"tex_zoom\\\":5.42789,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sides\\\":54,\\\"x\\\":0,\\\"y\\\":0.6,\\\"rad\\\":0.13478,\\\"r\\\":0.7,\\\"g\\\":0.6,\\\"b\\\":0.7,\\\"r2\\\":0.6,\\\"g2\\\":0.6,\\\"b2\\\":0.6,\\\"a2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"//r = r + 0.3*(0.6*sin(time*1.87) + 0.4*sin(1.98*time));\\\\n//b = b + 0.3*(0.6*sin(time*1.3434) + 0.4*sin(1.78*time));\\\\n//g = g + 0.3*(0.6*sin(time*1.9887) + 0.4*sin(1.6*time));\\\\nr=0;\\\\nb=0;\\\\ng=0;\\\\nr2=r;\\\\nb2=b;\\\\ng2=g;\\\"},{\\\"baseVals\\\":{\\\"x\\\":0,\\\"y\\\":0.2,\\\"rad\\\":0.20068,\\\"r\\\":0,\\\"g2\\\":0,\\\"a2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"scaling\\\":0.3696,\\\"r\\\":0,\\\"g\\\":0,\\\"b\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"bass_thresh = above(bass_att,bass_thresh)*2 + (1-above(bass_att,bass_thresh))*((bass_thresh-1.3)*0.91+1.3);\\\\n\\\\nwave_r = 0.5 + 0.5*(0.6*sin(time*1.3) + 0.4*sin(0.98*time));\\\\nwave_b = 0.5 + 0.5*(0.6*sin(time*1.1) + 0.4*sin(0.78*time));\\\\nwave_g = 0.5 + 0.5*(0.6*sin(time*1.2) + 0.4*sin(0.6*time));\\\\n\\\\nq8=wave_r;\\\\nq7=wave_b;\\\\nq6=wave_g;\\\\n\\\\nwr = 0.5+0.4*(0.6*sin(time*0.2) + 0.4*sin(0.8*time));\\\\nwb = 0.5+0.4*(0.6*sin(time*0.377) + 0.4*sin(0.5*time));\\\\nwg = 0.5+0.4*(0.6*sin(time*0.7) + 0.4*sin(0.4*time));\\\\n\\\\nq10=wr;//*above(bass_thresh, 1.9)*1;\\\\nq11=wb;//*above(bass_thresh, 1.9)*1;\\\\nq12=wg;//*above(bass_thresh, 1.9)*1;\\\\n\\\\nq10=0.8;\\\\nq11=0.2;\\\\nq12=0.1;\\\\n\\\\n\\\\nq18 = 0.01*sin(mtime*0.1);\\\\nq17 = -0.01*sin(mtime*0.254);\\\\nq2=bass_thresh;\\\\n\\\\nvol=(bass+mid+treb)*0.25;\\\\nvol=vol*vol;\\\\nq3=vol;\\\\nq5=vol*0.5;\\\\nmtime=mtime+vol*0.01;\\\\nq2=mtime*0.25;\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\" shader_body { \\\\n vec3 noise2_1;\\\\n vec3 ret_2;\\\\n vec3 tmpvar_3;\\\\n tmpvar_3 = (((texture (sampler_blur1, uv).xyz * scale1) + bias1) + texture (sampler_main, uv).xyz);\\\\n vec2 tmpvar_4;\\\\n tmpvar_4 = (0.5 + ((uv - 0.5) * (1.0 + \\\\n (tmpvar_3.y * 0.05)\\\\n )));\\\\n vec2 tmpvar_5;\\\\n tmpvar_5.x = (tmpvar_4.x + pow (tmpvar_3.x, q17));\\\\n tmpvar_5.y = (tmpvar_4.y + pow (tmpvar_3.x, q18));\\\\n vec4 tmpvar_6;\\\\n tmpvar_6 = texture (sampler_fc_main, fract(tmpvar_5));\\\\n vec3 tmpvar_7;\\\\n tmpvar_7.x = q10;\\\\n tmpvar_7.y = q11;\\\\n tmpvar_7.z = q12;\\\\n noise2_1 = (texture (sampler_noise_lq, ((\\\\n (uv_orig * texsize.xy)\\\\n * texsize_noise_lq.zw) + rand_frame.xy)).xyz + ((tmpvar_7 * vec3(rad)) * vol));\\\\n vec3 a_8;\\\\n a_8 = (1.0 - tmpvar_6.xyz);\\\\n ret_2 = (tmpvar_6.xyz + (0.3 * clamp (\\\\n ((a_8.yzx * noise2_1.zxy) - (a_8.zxy * noise2_1.yzx))\\\\n , 0.0, 1.0)));\\\\n ret_2 = (ret_2 * 0.97);\\\\n vec4 tmpvar_9;\\\\n tmpvar_9.w = 1.0;\\\\n tmpvar_9.xyz = ret_2;\\\\n ret = tmpvar_9.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n vec3 ret_1;\\\\n ret_1 = (texture (sampler_main, uv).xyz * vec3(0.9, 0.3, 0.5));\\\\n ret_1 = (ret_1 * 1.34);\\\\n ret_1 = (ret_1 * ret_1);\\\\n vec4 tmpvar_2;\\\\n tmpvar_2.w = 1.0;\\\\n tmpvar_2.xyz = ret_1;\\\\n ret = tmpvar_2.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Eo.S. + Zylot - skylight (Stained Glass Majesty mix).json\":\n/*!*************************************************************************************!*\\\n !*** ./presets/converted/Eo.S. + Zylot - skylight (Stained Glass Majesty mix).json ***!\n \\*************************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":1,\\\"baseVals\\\":{\\\"rating\\\":5,\\\"decay\\\":0.95,\\\"echo_zoom\\\":1.006596,\\\"echo_orient\\\":1,\\\"wave_mode\\\":2,\\\"wave_dots\\\":1,\\\"wave_brighten\\\":0,\\\"wave_a\\\":0.019788,\\\"wave_scale\\\":0.011726,\\\"wave_smoothing\\\":0.9,\\\"warpanimspeed\\\":0.010284,\\\"warpscale\\\":0.01,\\\"fshader\\\":1,\\\"warp\\\":0.01,\\\"wave_r\\\":0.5,\\\"wave_g\\\":0.4,\\\"wave_b\\\":0.3,\\\"ob_size\\\":0,\\\"ob_r\\\":0.11,\\\"ob_b\\\":0.1,\\\"ib_size\\\":0.005,\\\"ib_r\\\":0,\\\"ib_g\\\":0,\\\"ib_b\\\":0,\\\"ib_a\\\":1,\\\"mv_x\\\":31.999994,\\\"mv_y\\\":24.000004,\\\"mv_dx\\\":0.02,\\\"mv_dy\\\":-0.02,\\\"mv_l\\\":1,\\\"mv_r\\\":0.49,\\\"mv_g\\\":0.48,\\\"mv_b\\\":0.300001,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"textured\\\":1,\\\"rad\\\":1.670888,\\\"tex_ang\\\":0.942478,\\\"tex_zoom\\\":0.534261,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":1,\\\"border_a\\\":0.17},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"flux=q5*9;\\\\nfluxs=max(flux,0);\\\\nfluxs=min(fluxs,1);\\\\nadvflux=(q3*fluxs) + (-q3 * (1-fluxs));\\\\nadv=adv+advflux;\\\\nadvs=adv/256;\\\\n\\\\n\\\\nang=advs;\\\\nrad=1.671 + q3/25\\\"},{\\\"baseVals\\\":{\\\"sides\\\":3,\\\"x\\\":0.35,\\\"g\\\":1,\\\"b\\\":1,\\\"g2\\\":0,\\\"b2\\\":0.1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"y=0.1 + q2*0.4;\\\\nrad=q2/2;\\\\nang=-q2*2\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":3,\\\"x\\\":0.59,\\\"rad\\\":0.444842,\\\"r\\\":0,\\\"r2\\\":0.1,\\\"g2\\\":0.05,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"dir = 3;\\\\nmover = 0;\\\\nrotator = .255\\\",\\\"frame_eqs_eel\\\":\\\"ang = rotator;\\\\nx = if(equal(dir,1),1 - mover,if(equal(dir,1.5),.15,if(equal(dir,2),0,if(equal(dir,2.5),0, if(equal(dir,3),0+mover,if(equal(dir,3.5),1,if(equal(dir,4),1,1)))))));\\\\ny = if(equal(dir,1),1,if(equal(dir,1.5),1,if(equal(dir,2),1 - mover,if(equal(dir,2.5),0, if(equal(dir,3),0,if(equal(dir,3.5),0,if(equal(dir,4),0+mover,1)))))));\\\\nmover = if(equal(dir,1),mover + .005,if(equal(dir,1.5),0,if(equal(dir,2),mover + .005,if(equal(dir,2.5),0, if(equal(dir,3),mover+.005,if(equal(dir,3.5),0,if(equal(dir,4),mover+.005,0)))))));\\\\ndir = if(equal(dir,1),if(above(mover,.995),1.5,dir),if(equal(dir,1.5),if(below(rotator,-1.29),2,dir), if(equal(dir,2),if(above(mover,.995),2.5,dir),if(equal(dir,2.5),if(below(rotator,-2.85),3,dir), if(equal(dir,3),if(above(mover,.995),3.5,dir),if(equal(dir,3.5),if(below(rotator,-4.44),4,dir), if(equal(dir,4),if(above(mover,.995),4.5,dir),if(equal(dir,4.5),if(below(rotator,-5.94),1,dir),dir))))))));\\\\nrotator = if(equal(dir,1.5),if(above(rotator,-1.31),rotator - .05,rotator),if(equal(dir,2),-1.3, if(equal(dir,2.5),if(above(rotator,-2.87),rotator-.05,rotator),if(equal(dir,3),-2.86, if(equal(dir,3.5),if(above(rotator,-4.46),rotator-.05,rotator),if(equal(dir,4),-4.45, if(equal(dir,4.5),if(above(rotator,-5.97),rotator-.05,rotator),if(equal(dir,4),-5.96,.26))))))));\\\\n\\\\n//Ok, enough with the crazy ifs, we got our tram moving, now for some reaction.\\\\n\\\\nb = above(mid,1.5);\\\\nr2 = above(mid,1.5);\\\\ng2 = above(mid,1.5);\\\\nb2 = above(mid,1.5);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":3,\\\"additive\\\":1,\\\"x\\\":0.84,\\\"r\\\":0.98,\\\"g\\\":1,\\\"b\\\":0.98,\\\"a\\\":0.3,\\\"g2\\\":0.09,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x=sin(time/2)*0.4 + 0.5;\\\\ny=sin(time)*0.4+0.5;\\\\nrad=(q1*q1)/2;;\\\\nang=q1*4;\\\\n\\\\nr=0.70 + (sin(time/2))*0.50;\\\\ng=0.70 + (sin(time/2 + 2)) * 0.50;\\\\nb=0.70 + (sin(time/2 + 4)) * 0.5\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"mv_x=64;mv_y=48;\\\\nnut=0;\\\\nstp=0;stq=0;\\\\nrtp=0;rtq=0;\\\\nwvr=0;\\\\ndecay=0;\\\\ndcsp=0;\\\\nq1=0;q2=0;q3=0\\\",\\\"frame_eqs_eel\\\":\\\"decay=1;\\\\nzoom=1.000;\\\\nspeed=0.80;\\\\nspeedinv=1-speed;\\\\nq1=(qa*speed + bass*speedinv);\\\\nq2=(qb*speed + mid *speedinv);\\\\nq3=(qc*speed + treb*speedinv);\\\\nqa=q1;\\\\nqb=q2;\\\\nqc=q3;\\\\nflux=sin(time/2);\\\\nq4=flux * 0.5 + 0.5;\\\\nq5=flux\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\"\\\",\\\"comp\\\":\\\"\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Eo.S. - glowsticks v2 05 and proton lights (+Krash′s beat code) _Phat_remix02b.json\":\n/*!***************************************************************************************************************!*\\\n !*** ./presets/converted/Eo.S. - glowsticks v2 05 and proton lights (+Krash′s beat code) _Phat_remix02b.json ***!\n \\***************************************************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":1,\\\"baseVals\\\":{\\\"rating\\\":0,\\\"gammaadj\\\":1.21,\\\"decay\\\":0.96,\\\"echo_zoom\\\":0.99663,\\\"echo_orient\\\":1,\\\"wave_mode\\\":2,\\\"wave_dots\\\":1,\\\"wave_brighten\\\":0,\\\"brighten\\\":1,\\\"invert\\\":1,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":0.011726,\\\"wave_smoothing\\\":0.9,\\\"warpanimspeed\\\":0.037492,\\\"warpscale\\\":0.014889,\\\"warp\\\":0.033004,\\\"wave_r\\\":0.5,\\\"wave_g\\\":0.4,\\\"wave_b\\\":0.3,\\\"ob_size\\\":0.055,\\\"ob_r\\\":1,\\\"ob_g\\\":1,\\\"ob_b\\\":1,\\\"ob_a\\\":1,\\\"ib_size\\\":0,\\\"ib_r\\\":0,\\\"ib_g\\\":0,\\\"ib_b\\\":0,\\\"mv_x\\\":0,\\\"mv_y\\\":43.199997,\\\"mv_l\\\":1,\\\"mv_g\\\":0.91,\\\"mv_b\\\":0.71,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"sides\\\":5,\\\"textured\\\":1,\\\"rad\\\":1.06779,\\\"ang\\\":0.753982,\\\"tex_zoom\\\":0.779769,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"ang=sin(q1*0.15);\\\\nx=sin(q1*0.5) * 0.05 + 0.5;\\\\ny=cos(q1*0.63)* 0.05 + 0.5\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sides\\\":5,\\\"additive\\\":1,\\\"rad\\\":0.038091,\\\"g\\\":1,\\\"b\\\":1,\\\"g2\\\":0.6,\\\"b2\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"tm=q1;\\\\n\\\\nxp=0;\\\\nyp=0.1;\\\\nzp=0;\\\\n\\\\n//wrist movement;\\\\nang=sin(tm*2 )*0.5 +0.5;\\\\n\\\\nxq=xp;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nyq=yp*sinang + zp*cosang;\\\\nzq=yp*cosang - zp*sinang;\\\\nyq=yp;\\\\nzq=zp;\\\\n\\\\nang=tm*8;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxp=xq*sinang + yq*cosang;\\\\nyp=xq*cosang - yq*sinang;\\\\nzp=zq;\\\\n\\\\n//forearm movement;\\\\nzp=zp-0.3;\\\\nang=3.14 + sin(tm*2 - 0.5)*1.5;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxq=xp;\\\\nyq=yp*sinang + zp*cosang;\\\\nzq=yp*cosang - zp*sinang;\\\\n\\\\n//upper arm twist\\\\nang=-1.0 + cos(tm*3.1 + 0.5);\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxp=xq*sinang + yq*cosang;\\\\nyp=xq*cosang - yq*sinang;\\\\nzp=zq;\\\\n\\\\n//upper arm outward;\\\\nzp=zp-0.35;\\\\nang=cos(tm*2.3)*1.75 - 1.05;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxq=xp*sinang + zp*cosang;\\\\nyq=yp;\\\\nzq=xp*cosang - zp*sinang;\\\\n\\\\n//upper arm up down;\\\\nang=cos(tm)*0.5 - 0.5;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxp=xq;\\\\nyp=yq*cosang - zq*sinang;\\\\nzp=yq*sinang + zq*cosang;\\\\n\\\\n//xp=xq;yp=yq;zp=zq;\\\\n\\\\n\\\\n//project into screenspace and draw on screen\\\\nzp=zp+2;\\\\nxs=xp/zp;\\\\nys=yp/zp;\\\\n\\\\nx=xs+0.5;\\\\ny=ys*1.3+0.5;\\\\n\\\\n\\\\n\\\\n\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"r\\\":0.1,\\\"b\\\":0.7},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"t1=sin(time)*0.5+0.5;\\\\nt2=sin(time+2.1)*0.5+0.5;\\\\nt3=sin(time+4.2)*0.5+0.5;\\\\n\\\\nt4=sin(time+1.1)*0.5+0.5;\\\\nt5=sin(time+3.1)*0.5+0.5;\\\\nt6=sin(time+5.2)*0.5+0.5;\\\",\\\"point_eqs_eel\\\":\\\"n=sample*6.283;\\\\nphs=-sample * 0.2;\\\\ntm=q1 + phs;\\\\n\\\\nflip=flip+1;\\\\nflip=flip*below(flip,2);\\\\n\\\\nxp=0;\\\\nyp=flip*0.1 + (sin(tm)*0.5 + 0.5)*0.2;\\\\nzp=0;\\\\n\\\\n//wrist movement;\\\\nang=sin(tm*2 )*0.5 +0.5;\\\\n\\\\nxq=xp;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nyq=yp*sinang + zp*cosang;\\\\nzq=yp*cosang - zp*sinang;\\\\nyq=yp;\\\\nzq=zp;\\\\n\\\\nang=tm*8;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxp=xq*sinang + yq*cosang;\\\\nyp=xq*cosang - yq*sinang;\\\\nzp=zq;\\\\n\\\\n//forearm movement;\\\\nzp=zp-0.3;\\\\nang=3.14 + sin(tm*2 - 0.5)*1.5;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxq=xp;\\\\nyq=yp*sinang + zp*cosang;\\\\nzq=yp*cosang - zp*sinang;\\\\n\\\\n//upper arm twist\\\\nang=-1.0 + cos(tm*3.1 + 0.5);\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxp=xq*sinang + yq*cosang;\\\\nyp=xq*cosang - yq*sinang;\\\\nzp=zq;\\\\n\\\\n//upper arm outward;\\\\nzp=zp-0.35;\\\\nang=cos(tm*2.3)*1.75 - 1.05;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxq=xp*sinang + zp*cosang;\\\\nyq=yp;\\\\nzq=xp*cosang - zp*sinang;\\\\n\\\\n//upper arm up down;\\\\nang=cos(tm)*0.5 - 0.5;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxp=xq;\\\\nyp=yq*cosang - zq*sinang;\\\\nzp=yq*sinang + zq*cosang;\\\\n\\\\n//xp=xq;yp=yq;zp=zq;\\\\n\\\\n\\\\n//project into screenspace and draw on screen\\\\nzp=zp+2;\\\\nxs=xp/zp;\\\\nys=yp/zp;\\\\n\\\\nx=xs+0.5;\\\\ny=ys*1.3+0.5;\\\\n\\\\n\\\\na=if( equal(q8,1) , (1-sample) , sample);\\\\na=a*a;\\\\n\\\\nb=b+pow(1-sample,2)*0.3;\\\\n\\\\n\\\\n\\\\nr1=t1;\\\\ng1=t2;\\\\nb1=t3;\\\\nr2=t4;\\\\ng2=t5;\\\\nb2=t6;\\\\n\\\\nr=r1*flip + r2*(1-flip);\\\\ng=g1*flip + g2*(1-flip);\\\\nb=b1*flip + b2*(1-flip);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"r\\\":0.2,\\\"b\\\":0.6},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"t1=sin(time)*0.5+0.5;\\\\nt2=sin(time+2.1)*0.5+0.5;\\\\nt3=sin(time+4.2)*0.5+0.5;\\\\n\\\\nt4=sin(time+1.1)*0.5+0.5;\\\\nt5=sin(time+3.1)*0.5+0.5;\\\\nt6=sin(time+5.2)*0.5+0.5;\\\",\\\"point_eqs_eel\\\":\\\"n=sample*6.283;\\\\nphs=-sample * 0.2;\\\\ntm=q1 + phs;\\\\n\\\\nflip=flip+1;\\\\nflip=flip*below(flip,2);\\\\n\\\\nxp=0;\\\\nyp=flip*0.1 + (sin(tm)*0.5 + 0.5)*0.2 +0.1;\\\\nyp=-yp;\\\\nzp=0;\\\\n\\\\n//wrist movement;\\\\nang=sin(tm*2)*0.5 +0.5;\\\\n\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxq=xp;\\\\nyq=yp*sinang + zp*cosang;\\\\nzq=yp*cosang - zp*sinang;\\\\nyq=yp;\\\\nzq=zp;\\\\n\\\\nang=tm*8;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxp=xq*sinang + yq*cosang;\\\\nyp=xq*cosang - yq*sinang;\\\\nzp=zq;\\\\n\\\\n//forearm movement;\\\\nzp=zp-0.3;\\\\nang=3.14 + sin(tm*2 - 0.5)*1.5;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxq=xp;\\\\nyq=yp*sinang + zp*cosang;\\\\nzq=yp*cosang - zp*sinang;\\\\n\\\\n//upper arm twist\\\\nang=-1.0 + cos(tm*3.1 + 0.5);\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxp=xq*sinang + yq*cosang;\\\\nyp=xq*cosang - yq*sinang;\\\\nzp=zq;\\\\n\\\\n//upper arm outward;\\\\nzp=zp-0.35;\\\\nang=cos(tm*2.3)*1.75 - 1.05;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxq=xp*sinang + zp*cosang;\\\\nyq=yp;\\\\nzq=xp*cosang - zp*sinang;\\\\n\\\\n//upper arm up down;\\\\nang=cos(tm)*0.5 - 0.5;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxp=xq;\\\\nyp=yq*cosang - zq*sinang;\\\\nzp=yq*sinang + zq*cosang;\\\\n\\\\n//xp=xq;yp=yq;zp=zq;\\\\n\\\\n\\\\n//project into screenspace and draw on screen\\\\nzp=zp+2;\\\\nxs=xp/zp;\\\\nys=yp/zp;\\\\n\\\\nx=xs+0.5;\\\\ny=ys*1.3+0.5;\\\\n\\\\n\\\\na=if( equal(q8,1) , (1-sample) , sample);\\\\na=a*a;\\\\n\\\\n\\\\nb=b+pow(1-sample,2)*0.3;\\\\n\\\\nr1=t1;\\\\ng1=t2;\\\\nb1=t3;\\\\nr2=t4;\\\\ng2=t5;\\\\nb2=t6;\\\\n\\\\nr=r1*flip + r2*(1-flip);\\\\ng=g1*flip + g2*(1-flip);\\\\nb=b1*flip + b2*(1-flip);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"usedots\\\":1,\\\"thick\\\":1,\\\"additive\\\":1,\\\"g\\\":0.6,\\\"b\\\":0.1},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"t1=sin(time)*0.5+0.5;\\\\nt2=sin(time+2.1)*0.5+0.5;\\\\nt3=sin(time+4.2)*0.5+0.5;\\\\n\\\\nt4=sin(time+1.1)*0.5+0.5;\\\\nt5=sin(time+3.1)*0.5+0.5;\\\\nt6=sin(time+5.2)*0.5+0.5;\\\\n\\\\n\\\\nt8= int( sin(time*2)*2 + 3);\\\",\\\"point_eqs_eel\\\":\\\"n=sample*6.283;\\\\nphs=-sample * 0.2;\\\\ntm=q1 + phs;\\\\n\\\\nflip=flip+1;\\\\nflip=flip*below(flip,2);\\\\n\\\\nxp=0;\\\\nyp=flip*0.1 + (sin(tm)*0.5 + 0.5)*0.2;\\\\nzp=0;\\\\n\\\\n//wrist movement;\\\\nang=sin(tm*2)*0.5 +0.5;\\\\n\\\\nxq=xp;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nyq=yp*sinang + zp*cosang;\\\\nzq=yp*cosang - zp*sinang;\\\\nyq=yp;\\\\nzq=zp;\\\\n\\\\nang=tm*8 + 1;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxp=xq*sinang + yq*cosang;\\\\nyp=xq*cosang - yq*sinang;\\\\nzp=zq;\\\\n\\\\n//forearm movement;\\\\nzp=zp-0.3;\\\\nang=3.14 + sin(tm*2 - 0.5)*1.5;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxq=xp;\\\\nyq=yp*sinang + zp*cosang;\\\\nzq=yp*cosang - zp*sinang;\\\\n\\\\n//upper arm twist\\\\nang=-1.0 + cos(tm*3.1 + 0.5);\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxp=xq*sinang + yq*cosang;\\\\nyp=xq*cosang - yq*sinang;\\\\nzp=zq;\\\\n\\\\n//upper arm outward;\\\\nzp=zp-0.35;\\\\nang=cos(tm*2.3)*1.75 - 1.05;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxq=xp*sinang + zp*cosang;\\\\nyq=yp;\\\\nzq=xp*cosang - zp*sinang;\\\\n\\\\n//upper arm up down;\\\\nang=cos(tm)*0.5 - 0.5;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxp=xq;\\\\nyp=yq*cosang - zq*sinang;\\\\nzp=yq*sinang + zq*cosang;\\\\n\\\\n//xp=xq;yp=yq;zp=zq;\\\\n\\\\n\\\\n//project into screenspace and draw on screen\\\\nzp=zp+2;\\\\nxs=xp/zp;\\\\nys=yp/zp;\\\\n\\\\nx=xs+0.5;\\\\ny=ys*1.3+0.5;\\\\n\\\\na=if( equal(q8,1) , (1-sample) , sample);\\\\n\\\\n\\\\na=a* above( sin(tm*128*t8) , 0 );\\\\n\\\\n\\\\nr=t4;\\\\ng=t5;\\\\nb=t6;\\\\n\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"usedots\\\":1,\\\"thick\\\":1,\\\"additive\\\":1,\\\"g\\\":0.3,\\\"b\\\":0.1},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"t1=sin(time)*0.5+0.5;\\\\nt2=sin(time+2.1)*0.5+0.5;\\\\nt3=sin(time+4.2)*0.5+0.5;\\\\n\\\\nt4=sin(time+1.1)*0.5+0.5;\\\\nt5=sin(time+3.1)*0.5+0.5;\\\\nt6=sin(time+5.2)*0.5+0.5;\\\\n\\\\n\\\\nt8= int( sin(time*2)*2 + 3);\\\",\\\"point_eqs_eel\\\":\\\"n=sample*6.283;\\\\nphs=-sample * 0.2;\\\\ntm=q1 + phs;\\\\n\\\\nflip=flip+1;\\\\nflip=flip*below(flip,2);\\\\n\\\\nxp=0;\\\\nyp=flip*0.1 + (sin(tm)*0.5 + 0.5)*0.2 +0.1;\\\\nyp=-yp;\\\\nzp=0;\\\\n\\\\n//wrist movement;\\\\nang=sin(tm*2)*0.5 +0.5;\\\\n\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxq=xp;\\\\nyq=yp*sinang + zp*cosang;\\\\nzq=yp*cosang - zp*sinang;\\\\nyq=yp;\\\\nzq=zp;\\\\n\\\\nang=tm*8+1;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxp=xq*sinang + yq*cosang;\\\\nyp=xq*cosang - yq*sinang;\\\\nzp=zq;\\\\n\\\\n//forearm movement;\\\\nzp=zp-0.3;\\\\nang=3.14 + sin(tm*2 - 0.5)*1.5;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxq=xp;\\\\nyq=yp*sinang + zp*cosang;\\\\nzq=yp*cosang - zp*sinang;\\\\n\\\\n//upper arm twist\\\\nang=-1.0 + cos(tm*3.1 + 0.5);\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxp=xq*sinang + yq*cosang;\\\\nyp=xq*cosang - yq*sinang;\\\\nzp=zq;\\\\n\\\\n//upper arm outward;\\\\nzp=zp-0.35;\\\\nang=cos(tm*2.3)*1.75 - 1.05;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxq=xp*sinang + zp*cosang;\\\\nyq=yp;\\\\nzq=xp*cosang - zp*sinang;\\\\n\\\\n//upper arm up down;\\\\nang=cos(tm)*0.5 - 0.5;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxp=xq;\\\\nyp=yq*cosang - zq*sinang;\\\\nzp=yq*sinang + zq*cosang;\\\\n\\\\n//xp=xq;yp=yq;zp=zq;\\\\n\\\\n\\\\n//project into screenspace and draw on screen\\\\nzp=zp+2;\\\\nxs=xp/zp;\\\\nys=yp/zp;\\\\n\\\\nx=xs+0.5;\\\\ny=ys*1.3+0.5;\\\\n\\\\n\\\\na=if( equal(q8,1) , (1-sample) , sample);\\\\na=a*a;\\\\n\\\\na=a* above( sin(tm*128*t8) , 0 );\\\\n\\\\n\\\\nr=t4;\\\\ng=t5;\\\\nb=t6;\\\"}],\\\"init_eqs_eel\\\":\\\"mv_x=64;mv_y=48;\\\\nnut=0;\\\\nstp=0;stq=0;\\\\nrtp=0;rtq=0;\\\\nwvr=0;\\\\ndecay=0;\\\\ndcsp=0;\\\\nwarp=0\\\",\\\"frame_eqs_eel\\\":\\\"//krash's beat detection code\\\\nvolume = 0.3*(bass+mid+att);\\\\nbeatrate = equal(beatrate,0) + (1-equal(beatrate,0))*(below(volume,0.01) + (1-below(volume,0.01))*beatrate);\\\\nlastbeat = lastbeat + equal(lastbeat,0)*time;\\\\nmeanbass_att = 0.1*(meanbass_att*9 + bass_att);\\\\npeakbass_att = max(bass_att,peakbass_att);\\\\nbeatrate = max(if(beat,if(below(time-lastbeat,2*beatrate),0.1*(beatrate*9 + time - lastbeat),beatrate),beatrate),0.1);\\\\npeakbass_att = beat*bass_att + (1-beat)*peakbass_att*(above(time - lastbeat, 2*beatrate)*0.95 + (1-above(time - lastbeat, 2*beatrate))*0.995);\\\\nlastbeat = beat*time + (1-beat)*lastbeat;\\\\npeakbass_att = max(peakbass_att,1.1*meanbass_att);\\\\nbeat = above(volume,0.8)*below(peakbass_att - bass_att, 0.05*peakbass_att)*above(time - lastbeat, 0.1 + 0.5*(beatrate - 0.1));\\\\nbeatcounter = beatcounter + beat;\\\\nmode = if(beat*equal(beatcounter%2,0),1-mode,mode);\\\\nflip = 2*mode-1;\\\\nmonitor=flip;\\\\nq8=flip;\\\\n\\\\n\\\\ndecay=1;\\\\nzoom=1.002;\\\\n\\\\nvol=(bass_att+mid_att+treb_att)*0.25;\\\\nvol=vol*vol;\\\\nmtime=mtime+vol*0.1*flip*(55/fps);\\\\n\\\\nq1=mtime*0.4;\\\\n\\\\nwarp=0.0\\\",\\\"pixel_eqs_eel\\\":\\\"//tm=time+(sin(time)*rad);\\\\nvar=tan(time)*treb*treb;\\\\n\\\\nzoom=1+(rad/40)+(var/40);\\\\n//rot=((rad/100)*var)*sin(time);\\\",\\\"warp\\\":\\\"\\\",\\\"comp\\\":\\\"\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Flexi + Martin - astral projection.json\":\n/*!*******************************************************************!*\\\n !*** ./presets/converted/Flexi + Martin - astral projection.json ***!\n \\*******************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":4,\\\"gammaadj\\\":1,\\\"decay\\\":0.9,\\\"echo_zoom\\\":1,\\\"wave_brighten\\\":0,\\\"wrap\\\":0,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":5.715,\\\"wave_smoothing\\\":0.9,\\\"modwavealphastart\\\":1,\\\"modwavealphaend\\\":1,\\\"warpanimspeed\\\":0.162,\\\"warpscale\\\":5.582,\\\"zoomexp\\\":0.32104,\\\"zoom\\\":0.9901,\\\"warp\\\":0.11563,\\\"wave_r\\\":0,\\\"wave_g\\\":0,\\\"wave_b\\\":0,\\\"ob_size\\\":0,\\\"ib_size\\\":0,\\\"ib_r\\\":0,\\\"ib_g\\\":0,\\\"ib_b\\\":0,\\\"ib_a\\\":1,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":0,\\\"mv_b\\\":0,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":100,\\\"thickoutline\\\":1,\\\"textured\\\":1,\\\"rad\\\":0.05343,\\\"tex_zoom\\\":12.77228,\\\"g\\\":1,\\\"b\\\":1,\\\"a\\\":0,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":1,\\\"border_g\\\":0,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"vx = 0;\\\\nvy = 0;\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":100,\\\"textured\\\":1,\\\"y\\\":0.75,\\\"rad\\\":0.46753,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"w = -atan2(0.5,q1)*4+asin(1)*4;\\\\nang = w;\\\\nx = 0.5 +sin(w)*0.19;\\\\ny = 0.5 +cos(w)*0.26;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":100,\\\"textured\\\":1,\\\"y\\\":0.75,\\\"rad\\\":0.46753,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"w = -atan2(0.5,q1)*4+asin(1)*4 + asin(1)*2/3;\\\\nang = w;\\\\nx = 0.5 +sin(w)*0.19;\\\\ny = 0.5 +cos(w)*0.26;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":100,\\\"textured\\\":1,\\\"y\\\":0.75,\\\"rad\\\":0.46753,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"w = -atan2(0.5,q1)*4+asin(1)*4 - asin(1)*2/3;\\\\nang = w;\\\\nx = 0.5 +sin(w)*0.19;\\\\ny = 0.5 +cos(w)*0.26;\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"usedots\\\":1,\\\"thick\\\":1,\\\"additive\\\":1,\\\"scaling\\\":2.44415,\\\"smoothing\\\":0},\\\"init_eqs_eel\\\":\\\"t2 = 0;\\\\nt3 = 0;\\\\nt4 = 0;\\\\ncl = 0;\\\",\\\"frame_eqs_eel\\\":\\\"t1 = 0;\\\\nv = 0.01;\\\\nj = j + (bass)*0.01;\\\\nj2 = j2 + (mid_att)*0.01;\\\\nj3 = j3 + (treb_att)*0.01;\\\\nt2 = j;\\\\nt3 = j2;\\\\nt4 = j3;\\\\n//t5 = 0;\\\\nk = k*0.99 + 10*mid/fps;\\\\nt5 = -k;\\\\n\\\\ncl1 = cl1 - 0.0005 - bass*0.003;\\\\ncl1 = if(above(cl1,1),0,cl1);\\\\ncl1 = if(below(cl1,0),1,cl1);\\\\nt8 = cl1;\\\\n\\\\ncl2 = cl2 +0.0001 + mid*0.001 - bass*0.0005 -treb*0.0005;\\\\ncl2 = if(above(cl2,1),0,cl2);\\\\ncl2 = if(below(cl2,0),1,cl2);\\\\nt7 = cl2;\\\\n\\\\ncl3 = cl3 +0.0001+ treb*0.001 - bass*0.0005 - mid*0.0005;\\\\ncl3 = if(above(cl3,1),0,cl3);\\\\ncl3 = if(below(cl3,0),1,cl3);\\\\nt6 = cl3;\\\",\\\"point_eqs_eel\\\":\\\"xx = ((sample*0983624912364)%10000000+100)/10000000;\\\\nyy = ((xx*1896575575)%10000000+100)/10000000;\\\\nzz = ((yy*58652340875)%10000000+100)/10000000;\\\\n\\\\n\\\\nd = sqrt(sqr(xx)+sqr(yy)+sqr(zz));\\\\n\\\\nzz = zz + t8 - if(above(zz+t8,1),1,0) - 0.5;\\\\nxx = xx + t7 - if(above(xx+t7,1),1,0) - 0.5;\\\\nyy = yy + t6 - if(above(yy+t6,1),1,0) - 0.5;\\\\n\\\\nv = 0.001;\\\\n\\\\nw = 1;// (sample*sin(time*0.3)*0.01-1);\\\\nbb = d*d*0.5;\\\\nn= 0.3;\\\\ns1 = sin(sin(t2*w+bb)*n);\\\\ns2 = sin(sin(t3*w+bb)*n);\\\\ns3 = sin(sin(t4*w+bb)*n);\\\\nc1 = cos(sin(t2*w+bb)*n);\\\\nc2 = cos(sin(t3*w+bb)*n);\\\\nc3 = cos(sin(t4*w+bb)*n);\\\\n\\\\nz = (c3*s1*c2 + s3*s2)*xx - (c3*s1*s2-s3*c2)*yy + c3*c1*zz;\\\\nx1 = (c1*c2*xx + c1*s2*yy - s1*zz);\\\\ny1 = ((s3*s1*c2 - c3*s2)*xx + (s3*s1*s2+c3*c2)*yy + s3*c1*zz);\\\\n\\\\nzoom = .5*(1/(z+0.5));\\\\nx = 0.5 + zoom*x1 + sin(time*0.1)*0;;\\\\ny = 0.5 + zoom*y1 + cos(time*0.16801)*0;\\\\n\\\\npi3 = 3.1415*2*0.3333;\\\\nt = z*2+t2*1;\\\\nc=3;\\\\nr = sin(t)*c;\\\\n\\\\ng = sin(t+pi3)*c;\\\\n\\\\nb = sin(t-pi3)*c;\\\\n\\\\n\\\\nr = if(above(r,1),1,r);\\\\nr = if(below(r,0),0,r);\\\\ng = if(above(g,1),1,g);\\\\ng = if(below(g,0),0,g);\\\\nb = if(above(b,1),1,b);\\\\nb = if(below(b,0),0,b);\\\\n\\\\na = -z+0.7;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"thick\\\":1,\\\"scaling\\\":2.44415,\\\"smoothing\\\":0,\\\"a\\\":0.05},\\\"init_eqs_eel\\\":\\\"t2 = 0;\\\\nt3 = 0;\\\\nt4 = 0;\\\\ncl = 0;\\\",\\\"frame_eqs_eel\\\":\\\"t8 = 1;\\\",\\\"point_eqs_eel\\\":\\\"t8 = -t8;\\\\ny = sample*0.48;\\\\nx = 0.5 + t8*0.04 - t8*sample*0.02 + (sqr(sample*2-1)-1)*q1*0.5;\\\\n\\\\npi3 = 3.1415*2*0.3333;\\\\nt = -(q4-q6)*10+sample*asin(1)*4.01;\\\\nc=9;\\\\nr = sin(t)*c;\\\\n\\\\ng = sin(t+pi3)*c;\\\\n\\\\nb = sin(t-pi3)*c;\\\\n\\\\n\\\\nr = if(above(r,1),1,r);\\\\nr = if(below(r,0),0,r);\\\\ng = if(above(g,1),1,g);\\\\ng = if(below(g,0),0,g);\\\\nb = if(above(b,1),1,b);\\\\nb = if(below(b,0),0,b);\\\\n\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"samples\\\":49,\\\"scaling\\\":2.44415,\\\"smoothing\\\":0,\\\"r\\\":0,\\\"g\\\":0,\\\"b\\\":0},\\\"init_eqs_eel\\\":\\\"t2 = 0;\\\\nt3 = 0;\\\\nt4 = 0;\\\\ncl = 0;\\\",\\\"frame_eqs_eel\\\":\\\"t8 = 1;\\\",\\\"point_eqs_eel\\\":\\\"t8 = -1;\\\\ny = sample*0.48;\\\\nx = 0.5 + t8*0.04 - t8*sample*0.02 + (sqr(sample*2-1)-1)*q1*0.5;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"samples\\\":49,\\\"scaling\\\":2.44415,\\\"smoothing\\\":0,\\\"r\\\":0,\\\"g\\\":0,\\\"b\\\":0},\\\"init_eqs_eel\\\":\\\"t2 = 0;\\\\nt3 = 0;\\\\nt4 = 0;\\\\ncl = 0;\\\",\\\"frame_eqs_eel\\\":\\\"t8 = 1;\\\",\\\"point_eqs_eel\\\":\\\"t8 = 1;\\\\ny = sample*0.48;\\\\nx = 0.5 + t8*0.04 - t8*sample*0.02 + (sqr(sample*2-1)-1)*q1*0.5;\\\"}],\\\"init_eqs_eel\\\":\\\"x1 = 0;\\\\ny1 = 0;\\\",\\\"frame_eqs_eel\\\":\\\"zoom = 1.0;\\\\n\\\\nq1 = .1*(bass-treb);\\\\n\\\\nvvb = if(below(vvb,0),0,vvb);\\\\nvvm = if(below(vvm,0),0,vvm);\\\\nvvt = if(below(vvt,0),0,vvt);\\\\nvb = vb*0.85 + (1-vb)*pow(bass,2)*0.001;\\\\nvvb = vvb*0.95 + (1-vvb)*vb*0.2;\\\\nvm = vm*0.85 + (1-vm)*pow(mid,2)*0.01;\\\\nvvm = vvm*0.95 + (1-vvm)*vm*0.2;\\\\nvt = vt*0.85 + (1-vt)*pow(treb,2)*0.001;\\\\nvvt = vvt*0.95 + (1-vvt)*vt*0.2;\\\\n\\\\nq1 = (vvb-vvt)*vvm;//0.5 + vb - vvb;\\\\nq2 = vvm;//0.5 + vm - vvm;\\\\nq3 = vvt;//0.5 + vt - vvt;\\\\n\\\\nv=0.2;\\\\nd = 0;//v*0.2;\\\\nbb = bb + vvb*v - d;\\\\nmm = mm + vvm*v - d;\\\\ntt = tt + vvt*v - d;\\\\nq4 = bb;\\\\nq5 = mm;\\\\nq6 = tt;\\\\n\\\\n\\\\nq4 = if(above(abs(q1),0.02),0.99,1);\\\\nq9 = 0.5 + 0.5*sin(time*0.14);\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\" shader_body { \\\\n vec4 tmpvar_1;\\\\n tmpvar_1.w = 1.0;\\\\n tmpvar_1.xyz = (texture (sampler_fc_main, uv) * q4).xyz;\\\\n ret = tmpvar_1.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n vec2 tmpvar_1;\\\\n tmpvar_1.x = 0.5;\\\\n tmpvar_1.y = (1.0 - q9);\\\\n vec2 tmpvar_2;\\\\n tmpvar_2 = (uv_orig - tmpvar_1);\\\\n float tmpvar_3;\\\\n tmpvar_3 = (3.0 / tmpvar_2.y);\\\\n vec2 tmpvar_4;\\\\n tmpvar_4.x = ((tmpvar_2.x * tmpvar_3) * q9);\\\\n tmpvar_4.y = (tmpvar_3 * q9);\\\\n vec4 tmpvar_5;\\\\n tmpvar_5 = texture (sampler_main, fract(((1.0 - \\\\n abs(((fract(\\\\n ((tmpvar_2 + vec2(0.5, 1.0)) * 0.5)\\\\n ) * 2.0) - 1.0))\\\\n ) - (\\\\n ((texture (sampler_noise_hq, ((tmpvar_4 * 0.05) + (vec2(0.1, -0.05) * time))) - 0.5) * float(int((tmpvar_2.y > 0.0))))\\\\n .xy * 0.025))));\\\\n vec4 tmpvar_6;\\\\n tmpvar_6.w = 1.0;\\\\n tmpvar_6.xyz = (((tmpvar_5.xyz * tmpvar_5.xyz) * 1.4) - 0.04);\\\\n ret = tmpvar_6.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Flexi + Martin - cascading decay swing.json\":\n/*!***********************************************************************!*\\\n !*** ./presets/converted/Flexi + Martin - cascading decay swing.json ***!\n \\***********************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":5,\\\"gammaadj\\\":1.56,\\\"decay\\\":1,\\\"echo_zoom\\\":0.362,\\\"echo_orient\\\":1,\\\"wave_thick\\\":1,\\\"wave_brighten\\\":0,\\\"darken\\\":1,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":1.599,\\\"wave_smoothing\\\":0,\\\"wave_mystery\\\":-0.5,\\\"modwavealphastart\\\":2,\\\"modwavealphaend\\\":2,\\\"warpscale\\\":0.107,\\\"zoomexp\\\":0.1584,\\\"fshader\\\":1,\\\"warp\\\":0.01,\\\"wave_r\\\":0.51,\\\"wave_g\\\":0.5,\\\"ob_size\\\":0,\\\"ob_a\\\":1,\\\"ib_r\\\":0,\\\"ib_g\\\":0,\\\"ib_b\\\":0,\\\"ib_a\\\":1,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":0.5,\\\"mv_r\\\":0,\\\"mv_g\\\":0,\\\"mv_b\\\":0,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"thickoutline\\\":1,\\\"rad\\\":0.50126,\\\"tex_zoom\\\":0.99996,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"g2\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x = 0.5+sin(time*0.618)*0.2;\\\\ny = 0.5+cos(time*1.618)*0.2;\\\\nrad = bass*0.05;\\\\nborder_r = 1-(sin(time*1.25)*0.3+0.7);\\\\nborder_g = 1-(sin(time)*0.3+0.3);\\\\nborder_b = 1-(sin(time/3)*0.5+0.5);\\\"},{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"thickoutline\\\":1,\\\"rad\\\":0.50126,\\\"g\\\":1,\\\"b\\\":1,\\\"g2\\\":0,\\\"b2\\\":1,\\\"border_g\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x = 0.5+sin(time*2.618)*0.3;\\\\ny = 0.5+cos(time*3.14)*0.3;\\\\nrad = bass*0.05;\\\\nborder_r = 1-(sin(time*1.25)*0.3+0.7);\\\\nborder_g = 1-(sin(time)*0.3+0.3);\\\\nborder_b = 1-(sin(time/3)*0.5+0.5);\\\\n\\\"},{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"thickoutline\\\":1,\\\"rad\\\":0.50126,\\\"tex_zoom\\\":0.9998,\\\"g\\\":1,\\\"b\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x = 0.5+sin(-time*2.618)*0.4;\\\\ny = 0.5+cos(-time*1.14)*0.4;\\\\nrad = bass*0.05;\\\\nborder_r = 1-(sin(time*1.25)*0.3+0.7);\\\\nborder_g = 1-(sin(time)*0.3+0.3);\\\\nborder_b = 1-(sin(time/3)*0.5+0.5);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"scaling\\\":0.16188,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"additive\\\":1,\\\"scaling\\\":25.12601,\\\"smoothing\\\":1,\\\"a\\\":0.1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"//zoom = 0.99;\\\\nib_r = sin(time*1.25*4)*0.3+0.7;\\\\nib_g = sin(time*4)*0.3+0.3;\\\\nib_b = sin(time/3*4)*0.5+0.5;\\\\n\\\\nxx1 = xx1*0.9 + (bass)*0.01;\\\\nxx2 = xx2*0.9 + (treb)*0.01;\\\\nyy1 = yy1*0.94 + (treb+bass)*0.0075;\\\\n\\\\nx1 = 0.5 + (xx1-xx2)*2;\\\\ny1 = 0.4 + yy1;\\\\n\\\\nx1 = max(0,min(1,x1)); y1 = max(0,min(1,y1));\\\\n\\\\nspring = 10;\\\\ngrav = .5;\\\\nresist = 1;\\\\nbounce = 0.75;\\\\ndt = 0.0002*(60/fps);\\\\n\\\\nvx2 = vx2*(1-resist*dt) + dt*((x1+x3-2*x2)*spring);\\\\nvy2 = vy2*(1-resist*dt) + dt*((y1+y3-2*y2)*spring-grav);\\\\nvx3 = vx3*(1-resist*dt) + dt*((x2+x4-2*x3)*spring);\\\\nvy3 = vy3*(1-resist*dt) + dt*((y2+y4-2*y3)*spring-grav);\\\\nvx4 = vx4*(1-resist*dt) + dt*((x3-x4)*spring);\\\\nvy4 = vy4*(1-resist*dt) + dt*((y3-y4)*spring-grav);\\\\n\\\\nx2 = x2 + vx2;\\\\ny2 = y2 + vy2;\\\\nx3 = x3 + vx3;\\\\ny3 = y3 + vy3;\\\\nx4 = x4 + vx4;\\\\ny4 = y4 + vy4;\\\\n\\\\nvx2 = if(above(x2,0),vx2,abs(vx2)*bounce);\\\\nvx2 = if(below(x2,1),vx2,-abs(vx2)*bounce);\\\\nvx3 = if(above(x3,0),vx3,abs(vx3)*bounce);\\\\nvx3 = if(below(x3,1),vx3,-abs(vx3)*bounce);\\\\nvx4 = if(above(x4,0),vx4,abs(vx4)*bounce);\\\\nvx4 = if(below(x4,1),vx4,-abs(vx4)*bounce);\\\\nvy2 = if(above(y2,0),vy2,abs(vy2)*bounce);\\\\nvy2 = if(below(y2,1),vy2,-abs(vy2)*bounce);\\\\nvy3 = if(above(y3,0),vy3,abs(vy3)*bounce);\\\\nvy3 = if(below(y3,1),vy3,-abs(vy3)*bounce);\\\\nvy4 = if(above(y4,0),vy4,abs(vy4)*bounce);\\\\nvy4 = if(below(y4,1),vy4,-abs(vy4)*bounce);\\\\nq4 = x4;\\\\nq8 = y4;\\\\n\\\\nq1 = aspectx;\\\\nq2 = aspecty;\\\\n\\\\nzoom = 1;\\\\nwarp = 0;\\\\nbb = bb*0.99 + bass*0.02;\\\\nmm = mm*0.99 + mid*0.02;\\\\ntt = tt*0.99 + treb*0.02;\\\\n\\\\nmx = max(max(bb,mm),tt);\\\\nmn = min(min(bb,mm),tt);\\\\n\\\\nob_r = (bb-mn)/(mx-mn);\\\\nob_b = (mm-mn)/(mx-mn);\\\\nob_g = (tt-mn)/(mx-mn);\\\\nq6 = atan2(vx4,vy4);\\\\nq5 = sqrt(vx4*vx4 + vy4*vy4);\\\\n\\\\na = a*0.95 + q5;\\\\n\\\\ns = s*0.9 + a;\\\\nq3 = s*0.1;\\\\nmonitor = s;\\\\n\\\\nwave_a = 0;\\\",\\\"pixel_eqs_eel\\\":\\\"x = 0.5 + (x-0.5)*q1;\\\\ny = 0.5 + (y-0.5)*q2;\\\\n\\\\ndir = -q6*1 + asin(1)*0;\\\\n\\\\nb1 = 0.1; // distance\\\\nm1 = q5*25;//-0.6 + q5*200; // size\\\\nt1 = 0.05; // velocity\\\\n\\\\nxx = q4;\\\\nyy = 1-q8;\\\\n\\\\ndx = 0; dy = 0;\\\\n\\\\nd = sqrt((x-xx)*(x-xx)+(y-yy)*(y-yy));\\\\n\\\\nr = 0.05;\\\\nv = -35*q5;\\\\ndx = v*sin(dir)*(r-d)*(1-sigmoid(d-r,200))*q2;\\\\ndy = v*cos(dir)*(r-d)*(1-sigmoid(d-r,200))*q1;\\\",\\\"warp\\\":\\\" shader_body { \\\\n vec4 tmpvar_1;\\\\n tmpvar_1.w = 1.0;\\\\n vec4 tmpvar_2;\\\\n tmpvar_2 = texture (sampler_main, uv);\\\\n tmpvar_1.xyz = ((texture (sampler_main, clamp (\\\\n (uv - (((vec2(0.0, 32.0) * texsize.zw) * dot (\\\\n (tmpvar_2.xyz - 0.35)\\\\n , vec3(0.32, 0.49, 0.29))) * (dot (tmpvar_2.xyz, vec3(0.32, 0.49, 0.29)) - 0.4)))\\\\n , 0.0, 1.0)).xyz - 0.0011) + ((texture (sampler_noise_lq, \\\\n (((uv_orig * texsize.xy) * (texsize_noise_lq.zw * 1.5)) + rand_frame.xy)\\\\n ) - 0.5) * 0.0038).xyz);\\\\n ret = tmpvar_1.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n vec2 uv1_1;\\\\n vec2 tmpvar_2;\\\\n tmpvar_2.y = 0.0;\\\\n tmpvar_2.x = texsize.z;\\\\n vec2 tmpvar_3;\\\\n tmpvar_3.x = 0.0;\\\\n tmpvar_3.y = texsize.w;\\\\n vec2 tmpvar_4;\\\\n tmpvar_4.x = (texture (sampler_main, (uv - tmpvar_2)).xyz - texture (sampler_main, (uv + tmpvar_2)).xyz).x;\\\\n tmpvar_4.y = (texture (sampler_main, (uv - tmpvar_3)).xyz - texture (sampler_main, (uv + tmpvar_3)).xyz).x;\\\\n uv1_1 = ((0.3 * cos(\\\\n ((uv - 0.5) * 2.0)\\\\n )) - tmpvar_4);\\\\n float tmpvar_5;\\\\n tmpvar_5 = clamp ((0.04 / sqrt(\\\\n dot (uv1_1, uv1_1)\\\\n )), 0.0, 1.0);\\\\n uv1_1 = ((0.3 * cos(\\\\n (uv1_1 * 12.0)\\\\n )) - (9.0 * tmpvar_4));\\\\n vec4 tmpvar_6;\\\\n tmpvar_6.w = 1.0;\\\\n tmpvar_6.xyz = (tmpvar_5 + ((texture (sampler_main, uv).xyz * 12.0) * vec3(clamp (\\\\n (0.04 / sqrt(dot (uv1_1, uv1_1)))\\\\n , 0.0, 1.0))));\\\\n ret = tmpvar_6.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Flexi + amandio c - piercing 05 - Kopie (2) - Kopie.json\":\n/*!************************************************************************************!*\\\n !*** ./presets/converted/Flexi + amandio c - piercing 05 - Kopie (2) - Kopie.json ***!\n \\************************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":4,\\\"gammaadj\\\":1.9,\\\"echo_zoom\\\":1.169,\\\"echo_orient\\\":1,\\\"wave_mode\\\":5,\\\"additivewave\\\":1,\\\"wave_a\\\":0,\\\"wave_scale\\\":0.9,\\\"wave_smoothing\\\":0.63,\\\"wave_mystery\\\":1,\\\"modwavealphastart\\\":2,\\\"modwavealphaend\\\":2,\\\"warpscale\\\":2.853,\\\"rot\\\":0.006,\\\"warp\\\":0,\\\"wave_r\\\":0.65,\\\"wave_g\\\":0.65,\\\"wave_b\\\":0.65,\\\"ob_size\\\":0.005,\\\"mv_x\\\":0,\\\"mv_y\\\":48,\\\"mv_dx\\\":-0.941,\\\"mv_dy\\\":0.426,\\\"mv_l\\\":5,\\\"mv_r\\\":0.316,\\\"mv_g\\\":0.078,\\\"mv_b\\\":0.942,\\\"mv_a\\\":0,\\\"b1ed\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":100,\\\"textured\\\":1,\\\"rad\\\":0.78903,\\\"ang\\\":0.62832,\\\"tex_zoom\\\":1.02009,\\\"r\\\":0,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":0.7,\\\"b2\\\":1,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"vx = 0;\\\\nvy = 0;\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"c_x = 0.5;\\\\nc_y = 0.5;\\\",\\\"frame_eqs_eel\\\":\\\"sx=1+.01*(8*bass%8)*equal(time%(int(24-2*bass)),0);\\\\nsy=1+.01*(8*mid%8) *equal(time%(12+int(24-2*bass)),0);\\\\n\\\\nq1 = aspectx;\\\\nq2 = aspecty;\\\\nrot = 0;\\\\nzoom = 1;\\\\nwarp = 0;\\\\n\\\\n\\\\nvol = bass*8 + mid*4 + treb*2;\\\\nvol = vol*above(vol,17);\\\\nmonitor = vol;\\\\nbeat = above(vol,res);\\\\ndiff = (1-beat)*diff + beat*(vol-res);\\\\nres = beat*(vol+2*diff) + (1-beat)*(res - (diff*0.04 + 0.12)*60/fps);\\\\nres = max(0,res);\\\\nmonitor = res;\\\\n\\\\nr = if(beat, 0.01*(rand(200)-100)*0.01,r);\\\\nrot = r;\\\\n\\\\nc_x = if(beat,0.5 + 0.5*(rand(200)-100)*0.01, c_x);\\\\nc_y = if(beat,0.5 + 0.5*(rand(200)-100)*0.01, c_y);\\\\n\\\\n\\\\nq23 = c_x;\\\\nq24 = c_y;\\\\n\\\\n// elastic thread code by Flexi\\\\n\\\\nxx1 = xx1*0.9 + (bass)*0.01;\\\\nxx2 = xx2*0.9 + (treb)*0.01;\\\\nyy1 = yy1*0.94 + (treb+bass)*0.0075;\\\\nx1 = 0.5 + (xx1-xx2)*2;\\\\ny1 = 0.4 + yy1*1.5;\\\\ndt = 0.03/fps;\\\\nvx2 = vx2*(1-2*dt) + dt*((x1+x3-2*x2)*10);\\\\nvy2 = vy2*(1-2*dt) + dt*((y1+y3-2*y2)*10-0.5);\\\\nvx3 = vx3*(1-2*dt) + dt*((x2+x4-2*x3)*10);\\\\nvy3 = vy3*(1-2*dt) + dt*((y2+y4-2*y3)*10-0.5);\\\\nvx4 = vx4*(1-2*dt) + dt*((x3-x4)*10);\\\\nvy4 = vy4*(1-2*dt) + dt*((y3-y4)*10-0.5);\\\\nx2 = x2 + vx2; y2 = y2 + vy2;\\\\nx3 = x3 + vx3; y3 = y3 + vy3;\\\\nx4 = x4 + vx4; y4 = y4 + vy4;\\\\nvx2 = if(above(x2,0),vx2,abs(vx2)*0.5);\\\\nvx2 = if(below(x2,1),vx2,-abs(vx2)*0.5);\\\\nvx3 = if(above(x3,0),vx3,abs(vx3)*0.5);\\\\nvx3 = if(below(x3,1),vx3,-abs(vx3)*0.5);\\\\nvx4 = if(above(x4,0),vx4,abs(vx4)*0.5);\\\\nvx4 = if(below(x4,1),vx4,-abs(vx4)*0.5);\\\\nvy2 = if(above(y2,0),vy2,abs(vy2)*0.5);\\\\nvy2 = if(below(y2,1),vy2,-abs(vy2)*0.5);\\\\nvy3 = if(above(y3,0),vy3,abs(vy3)*0.5);\\\\nvy3 = if(below(y3,1),vy3,-abs(vy3)*0.5);\\\\nvy4 = if(above(y4,0),vy4,abs(vy4)*0.5);\\\\nvy4 = if(below(y4,1),vy4,-abs(vy4)*0.5);\\\\nq1 = x1;q2 = x2;q3 = x3;q4 = x4;\\\\nq5 = y1;q6 = y2;q7 = y3;q8 = y4;\\\\nq9 = 1/aspectx;\\\\nq10 = 1/aspecty;\\\\nq11 = aspectx;\\\\nq12 = aspecty;\\\\nq13 = sqrt(vx4*vx4 + vy4*vy4)*0.8;\\\\nq14 = atan2(vx4,vy4);\\\",\\\"pixel_eqs_eel\\\":\\\"d = (pow(sqrt(sqr(x-q3)+sqr(y-q4)),2)-0);\\\\nv = 0.03;\\\\ndx = v*(x-q23)*d;\\\\ndy = v*(y-q24)*d;\\\\n\\\\n\\\\nx = 0.5 + (x-0.5)*q11;\\\\ny = 0.5 + (y-0.5)*q12;\\\\ndir = -q14*1 + asin(1)*1;\\\\n\\\\nvelocity = q13;\\\\nstrength = 100;\\\\nsize = 0.07;\\\\n\\\\nxx = q4;\\\\nyy = 1-q8;\\\\n\\\\n\\\\nx1 = xx +cos(dir+1.5708)*size;\\\\ny1 = yy -sin(dir+1.5708)*size;\\\\n\\\\nx2 = xx -cos(dir+1.5708)*size;\\\\ny2 = yy +sin(dir+1.5708)*size;\\\\n\\\\nd1 = sqrt((x1-x)*(x1-x)+(y1-y)*(y1-y))-size*2;\\\\nsi1 = 1- 1/(1+pow(2,-d1*100));\\\\n\\\\nd2 = sqrt((x2-x)*(x2-x)+(y2-y)*(y2-y))-size*2;\\\\nsi2 = 1- 1/(1+pow(2,-d2*100));\\\\n\\\\ndx += (si1*sin(y1-y)*d1 - si2*sin(y2-y)*d2)*strength*velocity;\\\\ndy += (-si1*sin(x1-x)*d1 + si2*sin(x2-x)*d2)*strength*velocity;\\\",\\\"warp\\\":\\\"vec2 xlat_mutabled;\\\\nvec3 xlat_mutabledx;\\\\nvec3 xlat_mutabledy;\\\\n shader_body { \\\\n vec3 ret_1;\\\\n vec3 tmpvar_2;\\\\n tmpvar_2 = (texture (sampler_noise_lq, ((\\\\n (uv_orig * texsize.xy)\\\\n * texsize_noise_lq.zw) + rand_frame.xy)).xyz - 0.5);\\\\n xlat_mutabled = (texsize.zw * 4.0);\\\\n xlat_mutabledx = (((texture (sampler_blur1, \\\\n (uv_orig + (vec2(1.0, 0.0) * xlat_mutabled))\\\\n ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n (uv_orig - (vec2(1.0, 0.0) * xlat_mutabled))\\\\n ).xyz * scale1) + bias1));\\\\n xlat_mutabledy = (((texture (sampler_blur1, \\\\n (uv_orig + (vec2(0.0, 1.0) * xlat_mutabled))\\\\n ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n (uv_orig - (vec2(0.0, 1.0) * xlat_mutabled))\\\\n ).xyz * scale1) + bias1));\\\\n xlat_mutabled = uv;\\\\n vec2 tmpvar_3;\\\\n tmpvar_3.x = xlat_mutabledx.y;\\\\n tmpvar_3.y = xlat_mutabledy.y;\\\\n vec2 tmpvar_4;\\\\n tmpvar_4.x = xlat_mutabledx.z;\\\\n tmpvar_4.y = xlat_mutabledy.z;\\\\n vec4 tmpvar_5;\\\\n tmpvar_5 = texture (sampler_main, uv_orig);\\\\n ret_1.y = ((texture (sampler_main, (uv - \\\\n ((tmpvar_3 * texsize.zw) * 6.0)\\\\n )).y - 0.008) + ((1.0 - tmpvar_5.x) * 0.018));\\\\n ret_1.z = ((texture (sampler_main, (uv - \\\\n ((tmpvar_4 * texsize.zw) * 6.0)\\\\n )).z - 0.008) + (tmpvar_5.x * 0.018));\\\\n ret_1.x = texture (sampler_fc_main, (uv + ((tmpvar_2.xy * texsize.zw) * 0.5))).x;\\\\n ret_1.x = (ret_1.x + ((\\\\n (ret_1.x - ((texture (sampler_blur3, uv).xyz * scale3) + bias3).x)\\\\n * 0.15) + (tmpvar_2 * 0.0042)).x);\\\\n vec4 tmpvar_6;\\\\n tmpvar_6.w = 1.0;\\\\n tmpvar_6.xyz = ret_1;\\\\n ret = tmpvar_6.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n vec2 tmpvar_1;\\\\n tmpvar_1.x = q3;\\\\n tmpvar_1.y = q4;\\\\n vec2 tmpvar_2;\\\\n tmpvar_2.x = q6;\\\\n tmpvar_2.y = q7;\\\\n vec2 tmpvar_3;\\\\n tmpvar_3.x = q9;\\\\n tmpvar_3.y = q10;\\\\n vec2 tmpvar_4;\\\\n tmpvar_4.x = q12;\\\\n tmpvar_4.y = q13;\\\\n vec2 tmpvar_5;\\\\n tmpvar_5 = (texsize.zw * 1.25);\\\\n vec3 tmpvar_6;\\\\n tmpvar_6 = (texture (sampler_main, (uv + (vec2(1.0, 0.0) * tmpvar_5))).xyz - texture (sampler_main, (uv - (vec2(1.0, 0.0) * tmpvar_5))).xyz);\\\\n vec3 tmpvar_7;\\\\n tmpvar_7 = (texture (sampler_main, (uv + (vec2(0.0, 1.0) * tmpvar_5))).xyz - texture (sampler_main, (uv - (vec2(0.0, 1.0) * tmpvar_5))).xyz);\\\\n vec2 tmpvar_8;\\\\n tmpvar_8.x = dot (tmpvar_6, vec3(0.32, 0.49, 0.29));\\\\n tmpvar_8.y = dot (tmpvar_7, vec3(0.32, 0.49, 0.29));\\\\n vec2 x_9;\\\\n x_9 = ((uv - (tmpvar_8 * 8.0)) - tmpvar_1);\\\\n vec2 tmpvar_10;\\\\n tmpvar_10.x = dot (tmpvar_6, vec3(0.32, 0.49, 0.29));\\\\n tmpvar_10.y = dot (tmpvar_7, vec3(0.32, 0.49, 0.29));\\\\n vec2 x_11;\\\\n x_11 = ((uv - (tmpvar_10 * 8.0)) - tmpvar_2);\\\\n vec2 tmpvar_12;\\\\n tmpvar_12.x = dot (tmpvar_6, vec3(0.32, 0.49, 0.29));\\\\n tmpvar_12.y = dot (tmpvar_7, vec3(0.32, 0.49, 0.29));\\\\n vec2 x_13;\\\\n x_13 = ((uv - (tmpvar_12 * 8.0)) - tmpvar_3);\\\\n vec2 tmpvar_14;\\\\n tmpvar_14.x = dot (tmpvar_6, vec3(0.32, 0.49, 0.29));\\\\n tmpvar_14.y = dot (tmpvar_7, vec3(0.32, 0.49, 0.29));\\\\n vec2 x_15;\\\\n x_15 = ((uv - (tmpvar_14 * 8.0)) - tmpvar_4);\\\\n vec4 tmpvar_16;\\\\n tmpvar_16.w = 1.0;\\\\n tmpvar_16.xyz = mix (texture (sampler_main, uv).xyz, max (max (\\\\n (vec3((1.0 - pow (sqrt(\\\\n dot (x_9, x_9)\\\\n ), 0.2))) * vec3(2.0, 1.0, -1.0))\\\\n , \\\\n (vec3((1.0 - pow (sqrt(\\\\n dot (x_11, x_11)\\\\n ), 0.2))) * vec3(2.0, -1.0, 1.0))\\\\n ), max (\\\\n (vec3((1.0 - pow (sqrt(\\\\n dot (x_13, x_13)\\\\n ), 0.2))) * vec3(-1.0, 1.0, 2.0))\\\\n , \\\\n (vec3((1.0 - pow (sqrt(\\\\n dot (x_15, x_15)\\\\n ), 0.2))) * vec3(1.0, -1.0, 2.0))\\\\n )), vec3(0.5, 0.5, 0.5));\\\\n ret = tmpvar_16.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Flexi + stahlregen - jelly showoff parade.json\":\n/*!**************************************************************************!*\\\n !*** ./presets/converted/Flexi + stahlregen - jelly showoff parade.json ***!\n \\**************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":5,\\\"gammaadj\\\":1,\\\"decay\\\":1,\\\"modwavealphabyvolume\\\":1,\\\"wave_a\\\":0.207,\\\"wave_scale\\\":0.397,\\\"wave_smoothing\\\":0,\\\"wave_mystery\\\":0.24,\\\"modwavealphaend\\\":1.17,\\\"warpscale\\\":16.016,\\\"zoomexp\\\":11.56276,\\\"zoom\\\":1.05971,\\\"warp\\\":0.13126,\\\"ob_size\\\":0.005,\\\"ob_a\\\":1,\\\"ib_size\\\":0,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":0,\\\"mv_r\\\":0.35,\\\"mv_g\\\":0.35,\\\"mv_b\\\":0.35,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"decay = 1;\\\\nxx1 = xx1*0.9 + (bass)*0.01;\\\\nxx2 = xx2*0.9 + (treb)*0.01;\\\\nyy1 = yy1*0.94 + (treb+bass)*0.0075;\\\\n\\\\nx1 = 0.5 + (xx1-xx2)*1.5;\\\\ny1 = 0.5 + yy1;\\\\n\\\\n//x2 = 0;y2 = 0;x3 = 0;y3 = 0;x4 = 0;y4 = 0;\\\\n\\\\nspring = 18;\\\\ngrav = 1;\\\\nresist = 5;\\\\nbounce = 0.9;\\\\ndt = 0.0003;\\\\n\\\\nvx2 = vx2*(1-resist*dt) + dt*((x1+x3-2*x2)*spring);\\\\nvy2 = vy2*(1-resist*dt) + dt*((y1+y3-2*y2)*spring-grav);\\\\nvx3 = vx3*(1-resist*dt) + dt*((x2+x4-2*x3)*spring);\\\\nvy3 = vy3*(1-resist*dt) + dt*((y2+y4-2*y3)*spring-grav);\\\\nvx4 = vx4*(1-resist*dt) + dt*((x3-x4)*spring);\\\\nvy4 = vy4*(1-resist*dt) + dt*((y3-y4)*spring-grav);\\\\n\\\\nx2 = x2 + vx2;\\\\ny2 = y2 + vy2;\\\\nx3 = x3 + vx3;\\\\ny3 = y3 + vy3;\\\\nx4 = x4 + vx4;\\\\ny4 = y4 + vy4;\\\\n\\\\nvx2 = if(above(x2,0),vx2,abs(vx2)*bounce);\\\\nvx2 = if(below(x2,1),vx2,-abs(vx2)*bounce);\\\\nvx3 = if(above(x3,0),vx3,abs(vx3)*bounce);\\\\nvx3 = if(below(x3,1),vx3,-abs(vx3)*bounce);\\\\nvx4 = if(above(x4,0),vx4,abs(vx4)*bounce);\\\\nvx4 = if(below(x4,1),vx4,-abs(vx4)*bounce);\\\\n\\\\nvy2 = if(above(y2,0),vy2,abs(vy2)*bounce);\\\\nvy2 = if(below(y2,1),vy2,-abs(vy2)*bounce);\\\\nvy3 = if(above(y3,0),vy3,abs(vy3)*bounce);\\\\nvy3 = if(below(y3,1),vy3,-abs(vy3)*bounce);\\\\nvy4 = if(above(y4,0),vy4,abs(vy4)*bounce);\\\\nvy4 = if(below(y4,1),vy4,-abs(vy4)*bounce);\\\\n\\\\n\\\\nq1 = x1;\\\\nq2 = x2;\\\\nq3 = x3;\\\\nq4 = x4;\\\\n\\\\nq5 = y1;\\\\nq6 = y2;\\\\nq7 = y3;\\\\nq8 = y4;\\\\n\\\\nq6 = atan2(vx4,vy4);\\\\nq5 = sqrt(vx4*vx4 + vy4*vy4);\\\\n\\\\nzoom = 1.001;\\\\nrot = 0.00;\\\\nwarp = 0.2;\\\\nwave_a = 0;\\\",\\\"pixel_eqs_eel\\\":\\\"r = 0.2;\\\\ncx1 = q4;\\\\ncy1 = q5;\\\\nd = sqrt((x-cx1)*(x-cx1)+(y-cy1)*(y-cy1));\\\\ndir = -(r*r-d*d)*q3;\\\\nx1 = if( above(d,r),0, sin(y-cy1)*dir);\\\\ny1 = if( above(d,r),0, -sin(x-cx1)*dir);\\\\nv = 1;\\\\ndx = (x1)*v;\\\\ndy = (y1)*v;\\\",\\\"warp\\\":\\\" shader_body { \\\\n vec2 uv_1;\\\\n vec3 ret_2;\\\\n uv_1 = (0.5 + ((uv - 0.5) * 1.002));\\\\n vec2 tmpvar_3;\\\\n tmpvar_3 = (texsize.zw * 8.0);\\\\n vec3 tmpvar_4;\\\\n tmpvar_4 = (((texture (sampler_blur1, \\\\n (uv_1 + (vec2(1.0, 0.0) * tmpvar_3))\\\\n ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n (uv_1 - (vec2(1.0, 0.0) * tmpvar_3))\\\\n ).xyz * scale1) + bias1));\\\\n vec3 tmpvar_5;\\\\n tmpvar_5 = (((texture (sampler_blur1, \\\\n (uv_1 + (vec2(0.0, 1.0) * tmpvar_3))\\\\n ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n (uv_1 - (vec2(0.0, 1.0) * tmpvar_3))\\\\n ).xyz * scale1) + bias1));\\\\n vec2 tmpvar_6;\\\\n tmpvar_6.x = tmpvar_4.x;\\\\n tmpvar_6.y = tmpvar_5.x;\\\\n vec2 tmpvar_7;\\\\n tmpvar_7 = fract(((0.5 + \\\\n (uv_1 - 0.5)\\\\n ) - (tmpvar_6 * texsize.zw)));\\\\n ret_2.x = texture (sampler_main, tmpvar_7).x;\\\\n ret_2.x = (ret_2.x + ((\\\\n (ret_2.x - ((texture (sampler_blur2, tmpvar_7).xyz * scale2) + bias2))\\\\n .x * 0.4) + 0.006));\\\\n vec2 tmpvar_8;\\\\n tmpvar_8.x = tmpvar_5.x;\\\\n tmpvar_8.y = -(tmpvar_4.x);\\\\n vec2 tmpvar_9;\\\\n tmpvar_9.x = tmpvar_4.z;\\\\n tmpvar_9.y = tmpvar_5.z;\\\\n ret_2.z = max ((clamp (\\\\n (((texture (sampler_blur1, uv_1).xyz * scale1) + bias1).x - 0.3)\\\\n , 0.0, 1.0) * 2.0), (texture (sampler_fc_main, (\\\\n (uv_1 - ((tmpvar_8 * texsize.zw) * 8.0))\\\\n + \\\\n ((tmpvar_9 * texsize.zw) * 4.0)\\\\n )).z - 0.008));\\\\n vec2 tmpvar_10;\\\\n tmpvar_10.x = tmpvar_4.y;\\\\n tmpvar_10.y = tmpvar_5.y;\\\\n ret_2.y = max (ret_2.x, (texture (sampler_fc_main, (uv_1 + \\\\n (tmpvar_10 * texsize.zw)\\\\n )).y - 0.016));\\\\n vec4 tmpvar_11;\\\\n tmpvar_11.w = 1.0;\\\\n tmpvar_11.xyz = ret_2;\\\\n ret = tmpvar_11.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n vec3 ret_1;\\\\n vec2 tmpvar_2;\\\\n tmpvar_2 = (texsize.zw * 6.0);\\\\n vec3 tmpvar_3;\\\\n tmpvar_3 = (((texture (sampler_blur1, \\\\n (uv + (vec2(1.0, 0.0) * tmpvar_2))\\\\n ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n (uv - (vec2(1.0, 0.0) * tmpvar_2))\\\\n ).xyz * scale1) + bias1));\\\\n vec3 tmpvar_4;\\\\n tmpvar_4 = (((texture (sampler_blur1, \\\\n (uv + (vec2(0.0, 1.0) * tmpvar_2))\\\\n ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n (uv - (vec2(0.0, 1.0) * tmpvar_2))\\\\n ).xyz * scale1) + bias1));\\\\n vec2 tmpvar_5;\\\\n tmpvar_5.x = dot (tmpvar_3, vec3(0.32, 0.49, 0.29));\\\\n tmpvar_5.y = dot (tmpvar_4, vec3(0.32, 0.49, 0.29));\\\\n vec2 tmpvar_6;\\\\n tmpvar_6 = (uv - (0.25 * tmpvar_5));\\\\n vec2 tmpvar_7;\\\\n tmpvar_7.x = dot (tmpvar_3, vec3(0.32, 0.49, 0.29));\\\\n tmpvar_7.y = dot (tmpvar_4, vec3(0.32, 0.49, 0.29));\\\\n vec2 tmpvar_8;\\\\n tmpvar_8 = (uv + (0.25 * tmpvar_7));\\\\n ret_1 = ((0.8 * (\\\\n (texture (sampler_blur3, tmpvar_6).xyz * scale3)\\\\n + bias3)) - ((texture (sampler_blur1, tmpvar_6).xyz * scale1) + bias1));\\\\n ret_1 = (ret_1 + (0.6 * (\\\\n (texture (sampler_blur1, uv).xyz * scale1)\\\\n + bias1)));\\\\n ret_1 = (ret_1 - ((\\\\n (texture (sampler_blur2, tmpvar_8).xyz * scale2)\\\\n + bias2) - (\\\\n (texture (sampler_blur1, tmpvar_8).xyz * scale1)\\\\n + bias1)));\\\\n ret_1 = (ret_1 + ((1.2 * texture (sampler_main, tmpvar_8).xyz) + (0.15 * \\\\n ((texture (sampler_blur1, tmpvar_8).xyz * scale1) + bias1)\\\\n )));\\\\n ret_1 = (ret_1 + 1.0);\\\\n float tmpvar_9;\\\\n tmpvar_9 = dot (ret_1, vec3(0.32, 0.49, 0.29));\\\\n ret_1 = (mix (vec3(tmpvar_9), (\\\\n (0.75 * vec3(tmpvar_9))\\\\n * \\\\n dot ((((0.6 * \\\\n ((texture (sampler_blur3, tmpvar_6).xyz * scale3) + bias3)\\\\n ) - (0.7 * texture (sampler_main, uv).xyz)) - (0.3 * (\\\\n (texture (sampler_blur1, tmpvar_8).xyz * scale1)\\\\n + bias1))), vec3(0.32, 0.49, 0.29))\\\\n ), pow (hue_shader, vec3(tmpvar_9))) * 0.9);\\\\n ret_1 = (ret_1 * ret_1);\\\\n vec3 tmpvar_10;\\\\n tmpvar_10 = sqrt(ret_1);\\\\n ret_1 = tmpvar_10;\\\\n vec4 tmpvar_11;\\\\n tmpvar_11.w = 1.0;\\\\n tmpvar_11.xyz = tmpvar_10;\\\\n ret = tmpvar_11.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Flexi - alien fish pond.json\":\n/*!********************************************************!*\\\n !*** ./presets/converted/Flexi - alien fish pond.json ***!\n \\********************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":4,\\\"gammaadj\\\":1,\\\"wave_thick\\\":1,\\\"wrap\\\":0,\\\"wave_a\\\":0.004,\\\"wave_scale\\\":9.731,\\\"wave_smoothing\\\":0,\\\"wave_mystery\\\":1,\\\"modwavealphastart\\\":1,\\\"modwavealphaend\\\":1,\\\"warpanimspeed\\\":0.442,\\\"warpscale\\\":7.315,\\\"zoomexp\\\":1.50374,\\\"warp\\\":0.08563,\\\"wave_y\\\":0.04,\\\"ob_size\\\":0,\\\"ob_g\\\":1,\\\"ob_a\\\":1,\\\"ib_size\\\":0,\\\"ib_r\\\":1,\\\"ib_g\\\":0,\\\"ib_b\\\":0.75,\\\"ib_a\\\":1,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":0,\\\"mv_b\\\":0,\\\"mv_a\\\":0,\\\"b1ed\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"sides\\\":41,\\\"additive\\\":1,\\\"num_inst\\\":50,\\\"rad\\\":0.01,\\\"ang\\\":3.20442,\\\"tex_zoom\\\":6.23873,\\\"g\\\":1,\\\"b\\\":1,\\\"a\\\":0,\\\"r2\\\":1,\\\"b2\\\":1,\\\"border_a\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"index = instance*q32;\\\\n\\\\nx = gmegabuf(index);\\\\ny = gmegabuf(index+1);\\\\n\\\\nang = gmegabuf(index+9);\\\\nrad = gmegabuf(index+4)*2;\\\\n\\\\nr = gmegabuf(index+5);\\\\ng = gmegabuf(index+6);\\\\nb = gmegabuf(index+7);\\\\n\\\\nr2 = r; g2 = g; b2 = b;\\\\n\\\\n\\\\nx = 0.5 + (x-0.5)/q2;\\\"},{\\\"baseVals\\\":{\\\"sides\\\":23,\\\"additive\\\":1,\\\"num_inst\\\":50,\\\"x\\\":0.74,\\\"y\\\":0.27,\\\"rad\\\":0.01,\\\"tex_zoom\\\":0.81948,\\\"g\\\":1,\\\"b\\\":1,\\\"g2\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"vx = 0\\\",\\\"frame_eqs_eel\\\":\\\"sample = instance/(num_inst-1);\\\\n\\\\nx1 = 0.5;\\\\ny1 = 0.5 + (q3-0.5)*0.01;\\\\ny2 = 0.5;\\\\nx = x1 + (sample-0.5)*0.2;\\\\ny = y2*sample + y1*(1-sample);\\\"},{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"additive\\\":1,\\\"rad\\\":0.0999,\\\"tex_zoom\\\":0.73458,\\\"r\\\":0,\\\"g\\\":1,\\\"a\\\":0,\\\"border_a\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"vx = 0\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":3,\\\"additive\\\":1,\\\"num_inst\\\":400,\\\"rad\\\":0.16283,\\\"tex_zoom\\\":0.73458,\\\"g\\\":1,\\\"b\\\":1,\\\"a\\\":0.5,\\\"g2\\\":0,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"i3 = 0;\\\\ni4 = 0;\\\",\\\"frame_eqs_eel\\\":\\\"i3 = if(equal(instance,0),0,i3);\\\\ni4 = if(equal(instance,0),0,i4);\\\\nppo = 8;\\\\nindex = i4*q32;\\\\nsample = i3 % ppo;\\\\n\\\\nsize = gmegabuf(index+4)*40;\\\\n\\\\nx = gmegabuf(index);\\\\ny = gmegabuf(index+1);\\\\n\\\\nang = gmegabuf(index+9);\\\\nrad = size*0.05;\\\\n\\\\nr = gmegabuf(index+5);\\\\ng = gmegabuf(index+6);\\\\nb = gmegabuf(index+7);\\\\n\\\\n\\\\nsample = sample/ppo;\\\\nbending = gmegabuf(index + 12)*5 + gmegabuf(index + 10)*5;\\\\ndir = -ang + (sample-0.4)*bending;\\\\n\\\\n ang = asin(1)*1.5 - dir + bending*0.05;\\\\n\\\\nx = x + ((sample-0.3)*0.06*cos(dir)*size + sin(dir)*size*bending*0.01);\\\\ny = y + ((sample-0.3)*0.06*sin(dir)*size - cos(dir)*size*bending*0.01);\\\\n\\\\nx = 0.5 + (x-0.5)/q2;\\\\n\\\\nrad = rad*1.5 - sample*0.05*size;\\\\n\\\\ni3 = i3 + 1;\\\\ni4 = if( equal(i3%ppo,0), i4 +1, i4);\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"samples\\\":452,\\\"additive\\\":1,\\\"scaling\\\":2.44415,\\\"smoothing\\\":0,\\\"a\\\":0.15,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t2 = 0;\\\\nt3 = 0;\\\\nt4 = 0;\\\\ncl = 0;\\\",\\\"frame_eqs_eel\\\":\\\"t1 = 0;\\\\nt2 = 0;\\\",\\\"point_eqs_eel\\\":\\\"ppo = 9;\\\\nindex = t2*q32;\\\\nsample = t1 % ppo;\\\\n\\\\nnindex = gmegabuf(index + q30); // the next neighbor's index\\\\nnnindex = gmegabuf(index + q30+1); // the next neighbor's index\\\\nnnnindex = gmegabuf(index + q30+2); // the next neighbor's index\\\\n\\\\nx = gmegabuf(index);\\\\ny = gmegabuf(index+1);\\\\nr = 0.5 + gmegabuf(index+5)*0.5;\\\\ng = 0.5 + gmegabuf(index+6)*0.5;\\\\nb = 0.5 + gmegabuf(index+7)*0.5;\\\\n\\\\nnx = gmegabuf(nindex);\\\\nny = gmegabuf(nindex+1);\\\\nnnx = gmegabuf(nnindex);\\\\nnny = gmegabuf(nnindex+1);\\\\nnnnx = gmegabuf(nnnindex);\\\\nnnny = gmegabuf(nnnindex+1);\\\\n\\\\nx = 0.5 + (x-0.5)/q2;\\\\ny = 0.5 + (y-0.5)/q2;\\\\nnx = 0.5 + (nx-0.5)/q2;\\\\nny = 0.5 + (ny-0.5)/q2;\\\\nnnx = 0.5 + (nnx-0.5)/q2;\\\\nnny = 0.5 + (nny-0.5)/q2;\\\\nnnnx = 0.5 + (nnnx-0.5)/q2;\\\\nnnny = 0.5 + (nnny-0.5)/q2;\\\\n\\\\nx = if( equal(sample,2), nx, x);\\\\ny = if( equal(sample,2), ny, y);\\\\nx = if( equal(sample,4), nnx, x);\\\\ny = if( equal(sample,4), nny, y);\\\\nx = if( equal(sample,6), nnnx, x);\\\\ny = if( equal(sample,6), nnny, y);\\\\n\\\\na = above(sample,1)*below(sample,ppo-1)*a;\\\\n\\\\nt1 = t1 + 1;\\\\nt2 = if( equal(t1%ppo,0), t2 +1, t2);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"samples\\\":65,\\\"spectrum\\\":1,\\\"usedots\\\":1,\\\"thick\\\":1,\\\"additive\\\":1,\\\"scaling\\\":0.33408,\\\"smoothing\\\":0,\\\"a\\\":0},\\\"init_eqs_eel\\\":\\\"t2 = 0;\\\\nt3 = 0;\\\\nt4 = 0;\\\\ncl = 0;\\\",\\\"frame_eqs_eel\\\":\\\"t8 = 1;\\\\n\\\\nt1 = 0.5;\\\\nt2 = 0.9;\\\",\\\"point_eqs_eel\\\":\\\"d = 0;//d*0.85 + (value1)*1;\\\\n\\\\ny = 0.2 + value1+value2;\\\\nx = 0.9 - sample*0.8;\\\\n\\\\ngmegabuf((sample*64-1)*q32 + 14) = value1 + value2;\\\"},{\\\"baseVals\\\":{\\\"samples\\\":280,\\\"additive\\\":1,\\\"scaling\\\":5.92556,\\\"smoothing\\\":0,\\\"a\\\":0.5,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"t1 = 0;\\\\nt2 = 0;\\\\n\\\\n\\\",\\\"point_eqs_eel\\\":\\\"// q32 number of attributes\\\\n// q31 number of objects\\\\n\\\\nppo = 7; // number of points used for each object\\\\nindex = t2*q32; // object's index\\\\n\\\\nx = 0.5 +(gmegabuf(index)-0.5)/q2;\\\\ny = 0.5 + (gmegabuf(index+1)-0.5)/q2;\\\\n\\\\n// collecting pairs of index and distance to the current object in a local buffer\\\\ni = 0;\\\\nj = 0;\\\\nloop(q31,\\\\n d = sqrt( sqr(gmegabuf(index)-gmegabuf(i)) + sqr(gmegabuf(index+1)-gmegabuf(i+1)));\\\\n d = if( equal(d,0), 1, d);\\\\n megabuf(j) = i; // store index/distance pairs\\\\n megabuf(j+1) = d;\\\\n j = j+2;\\\\n i = i+q32;\\\\n );\\\\n\\\\n// sort that buffer, but only 5 cycles for the 5 nearest objects\\\\ni = 0;\\\\nloop( 5,\\\\n j = i;\\\\n smallestfind = 100;\\\\n findindex = 0;\\\\n loop( q31-j,\\\\n distance =megabuf(j*2+1);\\\\n smaller = above( smallestfind, distance);\\\\n smallestfind = if(smaller, distance, smallestfind);\\\\n findindex = if( smaller, j*2, findindex);\\\\n j = j + 1;\\\\n );\\\\n\\\\n // now that the nearest object was found, swap it to the buffer's top\\\\n\\\\n j = megabuf(i);\\\\n d = megabuf(i+1);\\\\n\\\\n megabuf(i) = megabuf(findindex);\\\\n megabuf(i+1) = megabuf(findindex+1);\\\\n megabuf(findindex) = j;\\\\n megabuf(findindex+1) = d;\\\\n\\\\n i = i+1;\\\\n );\\\\n\\\\n\\\\nindex2 = (t1)%ppo;\\\\ni = megabuf(index2-2);\\\\nxx = 0.5 + (gmegabuf(i)-0.5)/q2;\\\\nyy = 0.5 + (gmegabuf(i+1)-0.5)/q2;\\\\nw = asin(1)*index2/4;\\\\n//xx = x + sin(w)*0.1;\\\\n//yy = y + cos(w)*0.1;\\\\nx = if( equal(index2%2,0), x, xx);\\\\ny = if( equal(index2%2,0), y, yy);\\\\n\\\\n\\\\na = below(index2,ppo-1)*above(index2,1)*a;\\\\nr = 0.5 + gmegabuf(index + 5)*0.5;\\\\ng = 0.5 + gmegabuf(index + 6)*0.5;\\\\nb = 0.5 + gmegabuf(index + 7)*0.5;\\\\n\\\\n\\\\nt2 = t2 + equal(t1%ppo,ppo-1);\\\\nt1 = t1 + 1;\\\\n\\\\n//a = above(t1,128);\\\"},{\\\"baseVals\\\":{\\\"samples\\\":15,\\\"thick\\\":1,\\\"additive\\\":1,\\\"scaling\\\":5.92556,\\\"smoothing\\\":0,\\\"a\\\":0.4,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t2 = 0\\\",\\\"frame_eqs_eel\\\":\\\"t1 = 0;\\\\nt2 = 0;\\\\nt3 = 0;\\\\nt4 = 0.5;\\\",\\\"point_eqs_eel\\\":\\\"ppo = 5;\\\\n\\\\nindex = t2*q32;\\\\nneighbor = 1;\\\\nneighbor = gmegabuf(index+10+neighbor);\\\\nx = 0.5 + (gmegabuf(index)-0.5)/q2;\\\\ny = 0.5 + (gmegabuf(index+1)-0.5)/q2;\\\\nxx = 0.5 + ( gmegabuf(neighbor) - 0.5)/q2;\\\\nyy = 0.5 + ( gmegabuf(neighbor+1) - 0.5)/q2;\\\\n\\\\nx = if( equal(t1 % 2, 0), x, xx);\\\\ny = if( equal(t1 % 2, 0), y, yx);\\\\n\\\\n\\\\nt2 = t2 + equal(t1,ppo);\\\\nt1 = if(above(t1,ppo),t1-ppo,t1) + 1;\\\\n\\\"}],\\\"init_eqs_eel\\\":\\\"// clear buffer\\\\ni = 0; loop(1024*1024, gmegabuf(i) = 0; i = i+1;);\\\\n\\\\ncount = 50;\\\\nattributes = 32;\\\\nnListStart = 24; // starting index of neighbor list\\\\n\\\\nminradius = 0.004;\\\\nmaxradius = 0.04;\\\\nv = 0.0;\\\\n\\\\n// randomize initial coordinates\\\\nindex = 0;\\\\nloop(count,\\\\n gmegabuf(index*attributes) = rand(1000)/1000;\\\\n gmegabuf(index*attributes+1) = rand(1000)/1000;\\\\n gmegabuf(index*attributes+2) = v*(rand(1000)/1000-0.5);\\\\n gmegabuf(index*attributes+3) = v*(rand(1000)/1000-0.5);\\\\n gmegabuf(index*attributes+4) = minradius + (maxradius-minradius)*(index+1)/count;\\\\n gmegabuf(index*attributes+5) = 0;\\\\n gmegabuf(index*attributes+6) = 1;\\\\n gmegabuf(index*attributes+7) = 1;\\\\n gmegabuf(index*attributes+8) = pow(gmegabuf(index*attributes+4),3) ;\\\\n gmegabuf(index*attributes+9) = 4*asin(1)*rand(1000)/1000;\\\\n gmegabuf(index*attributes+10) = 0;\\\\n gmegabuf(index*attributes+13) = index/(count-1);\\\\n gmegabuf(index*attributes+14) = 0;\\\\n index = index+1;\\\\n );\\\\n\\\\nq30 = nListStart;\\\\nq31 = count;\\\\nq32 = attributes;\\\\n\\\\n// 0, x\\\\n// 1, y\\\\n// 2, vx\\\\n// 3, vy\\\\n// 4, radius\\\\n// 5, red\\\\n// 6, green\\\\n// 7, blue\\\\n// 8, mass\\\\n// 9, angle\\\\n// 10, rotation\\\\n// 11, bend force\\\\n// 12, bending\\\\n// 13, sample\\\\n// 14, spectrum\\\",\\\"frame_eqs_eel\\\":\\\"dt = 1/fps;\\\\n\\\\nwarp = 0;\\\\nzoom = 1;\\\\nwave_a = 0;\\\\n\\\\ngravity = 0.0015*dt*0;\\\\ndampening = 0;\\\\nfriction = 2048*dt;\\\\nshock = 0.002;\\\\npi2 = asin(1);\\\\n\\\\nnn = 3; // number of nearest neighbors to search, reduce if not needed\\\\n // provide enough attributes, otherwise the next object's coordinate will be overwritten\\\\n // collision detection is based on nearest neighbors, so keep it at least at 1.\\\\n\\\\ncheck = 2; // how many neighbors will be checked for a possible collision. may not be above nn.\\\\n // raise to avoid odd behavior in clusters of touching objects.\\\\n\\\\nbouncefactor = 0.1;\\\\nrotatefactor = 0; // relation between angular and translative momentum, when object hits a border. this is an empirical value for a convincing impression\\\\n\\\\n\\\\n\\\\nh = (aspecty-1)*0.5; w = (aspectx-1)*0.5;\\\\nindex = 0; index2 = 0;\\\\nloop(count,\\\\n\\\\n random = rand(1000)/1000;\\\\n sample = gmegabuf(index+13);\\\\n\\\\n // bend force\\\\n gmegabuf(index + 11) = gmegabuf(index + 11)*0.92 - 4*gmegabuf(index+12)*dt + 2*(random-0.5)*dt*gmegabuf(index+14);\\\\n\\\\n // bend\\\\n gmegabuf(index + 12) += 60*gmegabuf(index + 11)*dt;\\\\n\\\\n v = sqrt( sqr( gmegabuf(index + 2) ) + sqr( gmegabuf(index + 3) ) );\\\\n\\\\n // apply friction\\\\n fric = max(0,1 - sqr(v*friction) - v*2);\\\\n gmegabuf(index + 2) *= fric;\\\\n gmegabuf(index + 3) *= fric;\\\\n\\\\n // apply direction change\\\\n gmegabuf(index + 10) = gmegabuf(index + 10)*fric + v*gmegabuf(index +12)*0;\\\\n\\\\n // apply acceleration force\\\\n acceleration = random*0.000 + abs(gmegabuf(index+11))*0.003;\\\\n direction = gmegabuf(index + 9) - pi2;\\\\n gmegabuf(index + 2) += sin(direction)*acceleration;\\\\n gmegabuf(index + 3) += cos(direction)*acceleration;\\\\n\\\\n // adding velocity vectors\\\\n gmegabuf(index) = gmegabuf(index) + gmegabuf(index+2)*60*dt;\\\\n gmegabuf(index+1) = gmegabuf(index+1) + gmegabuf(index+3)*60*dt;\\\\n gmegabuf(index+9) = gmegabuf(index+9) + gmegabuf(index+10)*0.5;\\\\n\\\\n // applying gravity\\\\n gmegabuf(index+3) = gmegabuf(index+3) - gravity;\\\\n\\\\n vr = sin(gmegabuf(index+10))*gmegabuf(index+4); // rotation speed at the surface\\\\n\\\\n // bounce off ceiling\\\\n bounce = above( gmegabuf(index+1), 1 - gmegabuf(index+4) + w);\\\\n gmegabuf(index+2) = if( bounce, gmegabuf(index+2) + (vr+gmegabuf(index+2))*rotatefactor, gmegabuf(index+2));\\\\n gmegabuf(index+3) = if( bounce, -abs(gmegabuf(index+3))*dampening - shock, gmegabuf(index+3));\\\\n vr = if( bounce, vr - (gmegabuf(index+2) + vr)*(1-rotatefactor), vr);\\\\n\\\\n // bounce off floor\\\\n bounce = below( gmegabuf(index+1), gmegabuf(index+4) - w);\\\\n gmegabuf(index+2) = if( bounce, gmegabuf(index+2) + (vr-gmegabuf(index+2))*rotatefactor, gmegabuf(index+2));\\\\n gmegabuf(index+3) = if( bounce, abs(gmegabuf(index+3))*dampening + shock, gmegabuf(index+3));\\\\n vr = if( bounce, vr + (gmegabuf(index+2) - vr)*(1-rotatefactor), vr);\\\\n\\\\n // bounce off right border\\\\n bounce = above( gmegabuf(index), 1 - gmegabuf(index+4) + h);\\\\n gmegabuf(index+2) = if( bounce, -abs(gmegabuf(index+2))*dampening - shock, gmegabuf(index+2));\\\\n gmegabuf(index+3) = if( bounce, gmegabuf(index+3) + (vr-gmegabuf(index+3))*rotatefactor, gmegabuf(index+3));\\\\n vr = if( bounce, vr + (gmegabuf(index+3) - vr)*(1-rotatefactor), vr);\\\\n\\\\n // bounce off left border\\\\n bounce = below( gmegabuf(index), gmegabuf(index+4) - h);\\\\n gmegabuf(index+2) = if( bounce, abs(gmegabuf(index+2))*dampening + shock, gmegabuf(index+2));\\\\n gmegabuf(index+3) = if( bounce, gmegabuf(index+3) - (vr+gmegabuf(index+3))*rotatefactor, gmegabuf(index+3));\\\\n vr = if( bounce, vr - (gmegabuf(index+3) + vr)*(1-rotatefactor), vr);\\\\n\\\\n gmegabuf(index+10) = asin(vr/gmegabuf(index+4));\\\\n\\\\n i = 0; j = 0; // collecting pairs of index and distance to the current object in a local buffer\\\\n loop( count,\\\\n d = sqrt( sqr(gmegabuf(index)-gmegabuf(i)) + sqr(gmegabuf(index+1)-gmegabuf(i+1)));\\\\n d = if( equal(d,0), 10, d); // leave out comparison with itself (where d == 0, set d to a high value)\\\\n d = d - (gmegabuf(index+4)+gmegabuf(i+4))*0.5; // subtract radius (surface to surface distance)\\\\n megabuf(j) = i; // store index/distance pairs\\\\n megabuf(j+1) = d;\\\\n j = j+2;\\\\n i = i+attributes; );\\\\n i = 0; // sort that buffer, but only as many cycles as needed for the _nn_ nearest neighbors\\\\n loop( nn,\\\\n j = i; smallestfind = 10; findindex = -1;\\\\n loop( count-j,\\\\n distance =megabuf(j*2+1);\\\\n smaller = above( smallestfind, distance);\\\\n smallestfind = if(smaller, distance, smallestfind);\\\\n findindex = if( smaller, j*2, findindex);\\\\n j = j + 1; );\\\\n j = megabuf(i*2); d = megabuf(i*2+1);\\\\n megabuf(i*2) = megabuf(findindex);\\\\n megabuf(i*2+1) = megabuf(findindex+1);\\\\n megabuf(findindex) = j;\\\\n megabuf(findindex+1) = d;\\\\n i = i+1;\\\\n );\\\\n i = 0; // storing the indexes of the nearest neighbors in the list\\\\n loop( nn,\\\\n gmegabuf(index + nListStart + i) = megabuf(i*2);\\\\n i = i +1;\\\\n );\\\\n i = 0; // collision detection and impulse transmission below\\\\n loop( check,\\\\n index2 = megabuf(i);\\\\n hit = below( sqrt( sqr( gmegabuf(index) - gmegabuf(index2)) +\\\\n sqr( gmegabuf(index+1) - gmegabuf(index2+1))),\\\\n gmegabuf(index + 4) + gmegabuf(index2 + 4)\\\\n )\\\\n *\\\\n above( sqrt( sqr( gmegabuf(index) - gmegabuf(index2))+\\\\n sqr( gmegabuf(index+1) - gmegabuf(index2+1))),\\\\n sqrt( sqr( gmegabuf(index+0) - gmegabuf(index2+0)+\\\\n gmegabuf(index+2) - gmegabuf(index2+2))+\\\\n sqr( gmegabuf(index+1) - gmegabuf(index2+1)+\\\\n gmegabuf(index+3) - gmegabuf(index2+3)) ) );\\\\n ref_ang = atan2( gmegabuf(index2)-gmegabuf(index), // calculating the angle of the common tangent\\\\n gmegabuf(index2 + 1)-gmegabuf(index + 1)) + pi2;\\\\n v1 = sqrt(sqr( gmegabuf(index + 2)) + sqr( gmegabuf(index + 3))); // velocity of object1\\\\n v2 = sqrt(sqr( gmegabuf(index2 + 2)) + sqr( gmegabuf(index2 + 3))); // velocity of object2\\\\n w1 = atan2( gmegabuf(index + 2), gmegabuf(index + 3)); // object1 motion angle\\\\n w2 = atan2( gmegabuf(index2 + 2), gmegabuf(index2 + 3)); // object2 motion angle\\\\n vr2 = sin(gmegabuf(index2 + 10))*gmegabuf(index2+4); // the other object's surface velocity\\\\n m1 = gmegabuf(index + 8); m2 = gmegabuf(index2 + 8);\\\\n vv1 = ((m1-m2)*v1 + 2*m2*v2)/(m1+m2); vv2 = ((m2-m1)*v2 + 2*m1*v1)/(m1+m2);\\\\n vrr = ((m1-m2)*vr + 2*m2*vr2)/(m1+m2); vrr2 = ((m2-m1)*vr2 + 2*m1*vr)/(m1+m2);\\\\n\\\\n gmegabuf( index + 2) = if( hit, sin(ref_ang)*v1*cos(w1-ref_ang) + ((vr-vr2)-sin(ref_ang)*v1*cos(w1-ref_ang))*0.1\\\\n + cos(ref_ang)*vv1*sin(w2-ref_ang),\\\\n gmegabuf( index + 2) );\\\\n\\\\n gmegabuf( index + 3) = if( hit, cos(ref_ang)*v1*cos(w1-ref_ang) + ((vr-vr2)-cos(ref_ang)*v1*cos(w1-ref_ang))*0.1\\\\n - sin(ref_ang)*vv1*sin(w2-ref_ang),\\\\n gmegabuf( index + 3) );\\\\n\\\\n gmegabuf( index2 + 2) = if( hit, sin(ref_ang)*v2*cos(w2-ref_ang) + ((vr2-vr)-sin(ref_ang)*v2*cos(w2-ref_ang))*0.1\\\\n + cos(ref_ang)*vv2*sin(w1-ref_ang),\\\\n gmegabuf( index2 + 2) );\\\\n\\\\n gmegabuf( index2 + 3) = if( hit, cos(ref_ang)*v2*cos(w2-ref_ang) + ((vr2-vr)-cos(ref_ang)*v2*cos(w2-ref_ang))*0.1\\\\n - sin(ref_ang)*vv2*sin(w1-ref_ang),\\\\n gmegabuf( index2 + 3) );\\\\n\\\\n vr = if( hit, vr + (cos(w1-ref_ang)*(v1-v2)-vr) , vr);\\\\n gmegabuf( index + 10) = asin( vr / gmegabuf(index+4) );\\\\n\\\\n vr2 = if( hit, vr2 + (cos(w2-ref_ang)*(v2-v1)-vr2) , vr2);\\\\n gmegabuf( index2 + 10) = asin( vr2 / gmegabuf(index2+4) );\\\\n\\\\n i=i+2;\\\\n );\\\\n index = index+attributes;\\\\n );\\\\n\\\\n\\\\nq1 = aspectx;\\\\nq2 = aspecty;\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\" shader_body { \\\\n vec3 ret_1;\\\\n ret_1.z = (texture (sampler_main, uv).z * 0.5);\\\\n vec2 tmpvar_2;\\\\n tmpvar_2 = ((uv_orig * texsize.xy) * texsize_noise_lq.zw);\\\\n vec2 tmpvar_3;\\\\n tmpvar_3 = (texsize.zw * 4.0);\\\\n vec2 tmpvar_4;\\\\n tmpvar_4.x = (((2.0 * \\\\n ((texture (sampler_blur1, (uv_orig + (vec2(1.0, 0.0) * tmpvar_3))).xyz * scale1) + bias1)\\\\n ) - (2.0 * \\\\n ((texture (sampler_blur1, (uv_orig - (vec2(1.0, 0.0) * tmpvar_3))).xyz * scale1) + bias1)\\\\n )).y * 0.5);\\\\n tmpvar_4.y = (((2.0 * \\\\n ((texture (sampler_blur1, (uv_orig + (vec2(0.0, 1.0) * tmpvar_3))).xyz * scale1) + bias1)\\\\n ) - (2.0 * \\\\n ((texture (sampler_blur1, (uv_orig - (vec2(0.0, 1.0) * tmpvar_3))).xyz * scale1) + bias1)\\\\n )).y * 0.5);\\\\n ret_1.y = texture (sampler_fw_main, clamp ((uv_orig + (\\\\n (tmpvar_4 * texsize.zw)\\\\n * 4.0)), 0.0, 1.0)).y;\\\\n ret_1.y = (ret_1.y + ((\\\\n (ret_1 - ((texture (sampler_blur1, uv_orig).xyz * scale1) + bias1))\\\\n .y * 0.025) + -0.014));\\\\n ret_1.y = (ret_1.y + ((texture (sampler_noise_lq, tmpvar_2).y - 0.5) * 0.02));\\\\n vec2 tmpvar_5;\\\\n tmpvar_5.x = (((2.0 * \\\\n ((texture (sampler_blur1, (uv_orig + (vec2(1.0, 0.0) * tmpvar_3))).xyz * scale1) + bias1)\\\\n ) - (2.0 * \\\\n ((texture (sampler_blur1, (uv_orig - (vec2(1.0, 0.0) * tmpvar_3))).xyz * scale1) + bias1)\\\\n )).x * 0.5);\\\\n tmpvar_5.y = (((2.0 * \\\\n ((texture (sampler_blur1, (uv_orig + (vec2(0.0, 1.0) * tmpvar_3))).xyz * scale1) + bias1)\\\\n ) - (2.0 * \\\\n ((texture (sampler_blur1, (uv_orig - (vec2(0.0, 1.0) * tmpvar_3))).xyz * scale1) + bias1)\\\\n )).x * 0.5);\\\\n ret_1.x = ((texture (sampler_main, (uv - \\\\n ((tmpvar_5 * texsize.zw) * 4.0)\\\\n )).x - (ret_1.y * 0.01)) + 0.004);\\\\n ret_1.x = (ret_1.x + ((\\\\n (texture (sampler_noise_lq, tmpvar_2).x - 0.5)\\\\n * 0.01) + (ret_1.z * 0.14)));\\\\n vec4 tmpvar_6;\\\\n tmpvar_6.w = 1.0;\\\\n tmpvar_6.xyz = ret_1;\\\\n ret = tmpvar_6.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n vec3 ret_1;\\\\n vec2 tmpvar_2;\\\\n tmpvar_2 = (texsize.zw * 4.0);\\\\n vec2 tmpvar_3;\\\\n tmpvar_3.x = (((2.0 * \\\\n ((texture (sampler_blur1, (uv + (vec2(1.0, 0.0) * tmpvar_2))).xyz * scale1) + bias1)\\\\n ) - (2.0 * \\\\n ((texture (sampler_blur1, (uv - (vec2(1.0, 0.0) * tmpvar_2))).xyz * scale1) + bias1)\\\\n )) * 0.5).y;\\\\n tmpvar_3.y = (((2.0 * \\\\n ((texture (sampler_blur1, (uv + (vec2(0.0, 1.0) * tmpvar_2))).xyz * scale1) + bias1)\\\\n ) - (2.0 * \\\\n ((texture (sampler_blur1, (uv - (vec2(0.0, 1.0) * tmpvar_2))).xyz * scale1) + bias1)\\\\n )) * 0.5).y;\\\\n vec2 tmpvar_4;\\\\n tmpvar_4 = (uv - ((tmpvar_3 * texsize.zw) * 128.0));\\\\n vec4 tmpvar_5;\\\\n tmpvar_5 = texture (sampler_main, uv);\\\\n ret_1 = (((\\\\n ((texture (sampler_blur2, tmpvar_4).xyz * scale2) + bias2)\\\\n .x * \\\\n clamp ((1.0 - tmpvar_5.y), 0.0, 1.0)\\\\n ) * pow (hue_shader.yxz, vec3(8.0, 8.0, 8.0))) * 3.0);\\\\n ret_1 = (mix (mix (ret_1, \\\\n (pow (hue_shader.yzx, vec3(8.0, 8.0, 8.0)) * 1.4)\\\\n , vec3(\\\\n ((texture (sampler_main, tmpvar_4).x * 0.8) + ((texture (sampler_blur1, tmpvar_4).xyz * scale1) + bias1).x)\\\\n )), vec3(1.0, 1.0, 1.0), (\\\\n (pow (hue_shader, vec3(8.0, 8.0, 8.0)) * texture (sampler_main, clamp (uv, 0.0, 1.0)).y)\\\\n * 1.2)) * clamp ((1.0 - tmpvar_5.z), 0.0, 1.0));\\\\n vec4 tmpvar_6;\\\\n tmpvar_6.w = 1.0;\\\\n tmpvar_6.xyz = ret_1;\\\\n ret = tmpvar_6.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Flexi - area 51.json\":\n/*!************************************************!*\\\n !*** ./presets/converted/Flexi - area 51.json ***!\n \\************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":5,\\\"gammaadj\\\":1,\\\"decay\\\":0.995,\\\"echo_zoom\\\":1.007,\\\"echo_orient\\\":3,\\\"wave_thick\\\":1,\\\"modwavealphabyvolume\\\":1,\\\"wave_a\\\":0.9,\\\"wave_scale\\\":2.997,\\\"wave_smoothing\\\":0,\\\"wave_mystery\\\":-0.5,\\\"modwavealphastart\\\":1,\\\"modwavealphaend\\\":1,\\\"warpanimspeed\\\":0.274,\\\"warpscale\\\":7.98,\\\"zoom\\\":0.99951,\\\"warp\\\":0.20929,\\\"wave_r\\\":0.02,\\\"wave_g\\\":0.02,\\\"wave_b\\\":0,\\\"ob_size\\\":0.5,\\\"ob_r\\\":1,\\\"ob_g\\\":0.12,\\\"ob_b\\\":1,\\\"ob_a\\\":0.37,\\\"ib_size\\\":0,\\\"ib_a\\\":1,\\\"mv_x\\\":0,\\\"mv_y\\\":0,\\\"mv_l\\\":5,\\\"mv_a\\\":0,\\\"b1ed\\\":0.2},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"sides\\\":99,\\\"textured\\\":1,\\\"x\\\":1,\\\"y\\\":0.63,\\\"rad\\\":1.3,\\\"tex_zoom\\\":0.763,\\\"g\\\":1,\\\"b\\\":1,\\\"a\\\":0.97,\\\"r2\\\":1,\\\"b2\\\":1,\\\"border_r\\\":0,\\\"border_g\\\":0,\\\"border_b\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"textured\\\":1,\\\"y\\\":0.55,\\\"rad\\\":0.225,\\\"g\\\":1,\\\"b\\\":1,\\\"a\\\":0.97,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":1,\\\"border_r\\\":0,\\\"border_g\\\":0,\\\"border_b\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"textured\\\":1,\\\"x\\\":0.85,\\\"y\\\":0,\\\"rad\\\":1.3,\\\"tex_zoom\\\":2.068,\\\"g\\\":1,\\\"b\\\":1,\\\"a\\\":0.97,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":0.97,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sides\\\":3,\\\"textured\\\":1,\\\"x\\\":0.02,\\\"rad\\\":0.733,\\\"ang\\\":1.319,\\\"tex_zoom\\\":100,\\\"g\\\":1,\\\"b\\\":1,\\\"a\\\":0.97,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":0.97,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"sep\\\":60,\\\"scaling\\\":0.08,\\\"smoothing\\\":0.4,\\\"r\\\":0,\\\"g\\\":0,\\\"b\\\":0,\\\"a\\\":0.97,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sep\\\":20,\\\"scaling\\\":0.07,\\\"smoothing\\\":0.65,\\\"r\\\":0.3,\\\"g\\\":0.3,\\\"b\\\":0.3,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sep\\\":30,\\\"scaling\\\":0.07,\\\"r\\\":0.3,\\\"g\\\":0.3,\\\"b\\\":0.3,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sep\\\":60,\\\"r\\\":0,\\\"g\\\":0,\\\"b\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"x1 = 0;\\\\ny1= .001;\\\\nz1 = 0;\\\",\\\"frame_eqs_eel\\\":\\\"zoom = 1;\\\\nwave_a = 0;\\\\n\\\\nstartx = 0.3;\\\\nstarty = 0.3;\\\\n\\\\na = 0.55;\\\\nb = 0.05;\\\\nd = 0.09;\\\\n\\\\nq1 = aspectx;\\\\nq2 = aspecty;\\\\nq5 = a;\\\\nq6 = b;\\\\nq7 = d;\\\\n\\\\n\\\\n// coloring borders\\\\nbb = bb*0.99 + bass*0.02;\\\\nmm = mm*0.99 + mid*0.02;\\\\ntt = tt*0.99 + treb*0.02;\\\\n\\\\nmx = max(max(bb,mm),tt);\\\\nmn = min(min(bb,mm),tt);\\\\n\\\\nh1 = (bb-mn)/(mx-mn);\\\\nh2 = (mm-mn)/(mx-mn);\\\\nh3 = (tt-mn)/(mx-mn);\\\\n\\\\nv = 0.1333/fps;\\\\nbm = bm + (h1-h2)*v;\\\\nmt = mt + (h2-h3)*v;\\\\nbt = bt + (h1-h3)*v;\\\\n\\\\nw = bm*2;\\\\nq3 = sin(w);\\\\nq4 = cos(w);\\\\n\\\\n\\\\nq10 = bm;\\\\nq11 = mt;\\\\nq12 = bt;\\\",\\\"pixel_eqs_eel\\\":\\\"x = 0.5 + (x-0.51)*q1;\\\\ny = 0.5 - (y-0.5)*q2;\\\\ndx = (x*(1-x)-q5*x*y/(x+q6));\\\\ndy = -q7*y*(1-y/x);\\\\n\\\\ndx = -dx*0.02/q1;\\\\ndy = -dy*0.02/q2;\\\",\\\"warp\\\":\\\" shader_body { \\\\n vec2 my_uv2_1;\\\\n vec2 dz_2;\\\\n vec3 ret_3;\\\\n vec2 tmpvar_4;\\\\n tmpvar_4 = (texsize.zw * 4.0);\\\\n vec3 tmpvar_5;\\\\n tmpvar_5 = ((2.0 * (\\\\n (texture (sampler_blur1, (uv + (vec2(1.0, 0.0) * tmpvar_4))).xyz * scale1)\\\\n + bias1)) - (2.0 * (\\\\n (texture (sampler_blur1, (uv - (vec2(1.0, 0.0) * tmpvar_4))).xyz * scale1)\\\\n + bias1)));\\\\n vec3 tmpvar_6;\\\\n tmpvar_6 = ((2.0 * (\\\\n (texture (sampler_blur1, (uv + (vec2(0.0, 1.0) * tmpvar_4))).xyz * scale1)\\\\n + bias1)) - (2.0 * (\\\\n (texture (sampler_blur1, (uv - (vec2(0.0, 1.0) * tmpvar_4))).xyz * scale1)\\\\n + bias1)));\\\\n vec2 tmpvar_7;\\\\n tmpvar_7.x = tmpvar_5.x;\\\\n tmpvar_7.y = tmpvar_6.x;\\\\n vec2 tmpvar_8;\\\\n tmpvar_8 = (tmpvar_7 * texsize.zw);\\\\n ret_3.x = (texture (sampler_fw_main, (uv - tmpvar_8)).x - ((\\\\n (texture (sampler_blur3, uv).xyz * scale3)\\\\n + bias3).x - (\\\\n (texture (sampler_blur1, (uv + tmpvar_8)).xyz * scale1)\\\\n + bias1).x));\\\\n vec2 tmpvar_9;\\\\n tmpvar_9.x = tmpvar_5.y;\\\\n tmpvar_9.y = tmpvar_6.y;\\\\n dz_2 = (-(tmpvar_9) * texsize.zw);\\\\n ret_3.y = ((texture (sampler_fw_main, (uv - dz_2)).y - 0.06) - ((\\\\n ((texture (sampler_blur2, uv).xyz * scale2) + bias2)\\\\n .y - \\\\n ((texture (sampler_blur1, (uv + dz_2)).xyz * scale1) + bias1)\\\\n .y) * 1.3));\\\\n vec2 tmpvar_10;\\\\n tmpvar_10 = ((uv_orig - 0.5) * (1.8 - (\\\\n (bass_att - treb_att)\\\\n * 0.015)));\\\\n vec2 tmpvar_11;\\\\n tmpvar_11.x = ((tmpvar_10.x * tmpvar_10.x) - (tmpvar_10.y * tmpvar_10.y));\\\\n tmpvar_11.y = ((2.0 * tmpvar_10.x) * tmpvar_10.y);\\\\n my_uv2_1 = (tmpvar_11 + vec2(0.28, 0.4));\\\\n vec2 tmpvar_12;\\\\n tmpvar_12.x = ((2.0 * (\\\\n (texture (sampler_blur1, (my_uv2_1 + (vec2(1.0, 0.0) * tmpvar_4))).xyz * scale1)\\\\n + bias1)) - (2.0 * (\\\\n (texture (sampler_blur1, (my_uv2_1 - (vec2(1.0, 0.0) * tmpvar_4))).xyz * scale1)\\\\n + bias1))).z;\\\\n tmpvar_12.y = ((2.0 * (\\\\n (texture (sampler_blur1, (my_uv2_1 + (vec2(0.0, 1.0) * tmpvar_4))).xyz * scale1)\\\\n + bias1)) - (2.0 * (\\\\n (texture (sampler_blur1, (my_uv2_1 - (vec2(0.0, 1.0) * tmpvar_4))).xyz * scale1)\\\\n + bias1))).z;\\\\n dz_2 = (tmpvar_12 * texsize.zw);\\\\n ret_3.z = (texture (sampler_main, clamp ((my_uv2_1 + dz_2), 0.0, 1.0)).z - 0.014);\\\\n vec4 tmpvar_13;\\\\n tmpvar_13.w = 1.0;\\\\n tmpvar_13.xyz = ret_3;\\\\n ret = tmpvar_13.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n vec3 dy_1;\\\\n vec3 dx_2;\\\\n vec2 mirror_uv_3;\\\\n vec3 ret_4;\\\\n vec2 tmpvar_5;\\\\n tmpvar_5 = ((uv - 0.5) * aspect.xy);\\\\n vec2 tmpvar_6;\\\\n tmpvar_6.x = ((q4 * tmpvar_5.x) - (q3 * tmpvar_5.y));\\\\n tmpvar_6.y = ((q3 * tmpvar_5.x) + (q4 * tmpvar_5.y));\\\\n vec2 tmpvar_7;\\\\n tmpvar_7 = (0.5 - (tmpvar_6 * 2.0));\\\\n vec2 numerator_8;\\\\n numerator_8 = (tmpvar_7 - vec2(0.0, 0.5));\\\\n vec2 denominator_9;\\\\n denominator_9 = (tmpvar_7 - vec2(1.0, 0.5));\\\\n vec2 tmpvar_10;\\\\n tmpvar_10.x = ((numerator_8.x * denominator_9.x) + (numerator_8.y * denominator_9.y));\\\\n tmpvar_10.y = ((numerator_8.y * denominator_9.x) - (numerator_8.x * denominator_9.y));\\\\n vec2 tmpvar_11;\\\\n tmpvar_11 = (((tmpvar_10 / \\\\n ((denominator_9.x * denominator_9.x) + (denominator_9.y * denominator_9.y))\\\\n ) + 0.5) - vec2(0.5, 0.5));\\\\n float tmpvar_12;\\\\n tmpvar_12 = sqrt(dot (tmpvar_11, tmpvar_11));\\\\n float tmpvar_13;\\\\n float tmpvar_14;\\\\n tmpvar_14 = (min (abs(\\\\n (tmpvar_11.x / tmpvar_11.y)\\\\n ), 1.0) / max (abs(\\\\n (tmpvar_11.x / tmpvar_11.y)\\\\n ), 1.0));\\\\n float tmpvar_15;\\\\n tmpvar_15 = (tmpvar_14 * tmpvar_14);\\\\n tmpvar_15 = (((\\\\n ((((\\\\n ((((-0.01213232 * tmpvar_15) + 0.05368138) * tmpvar_15) - 0.1173503)\\\\n * tmpvar_15) + 0.1938925) * tmpvar_15) - 0.3326756)\\\\n * tmpvar_15) + 0.9999793) * tmpvar_14);\\\\n tmpvar_15 = (tmpvar_15 + (float(\\\\n (abs((tmpvar_11.x / tmpvar_11.y)) > 1.0)\\\\n ) * (\\\\n (tmpvar_15 * -2.0)\\\\n + 1.570796)));\\\\n tmpvar_13 = (tmpvar_15 * sign((tmpvar_11.x / tmpvar_11.y)));\\\\n if ((abs(tmpvar_11.y) > (1e-08 * abs(tmpvar_11.x)))) {\\\\n if ((tmpvar_11.y < 0.0)) {\\\\n if ((tmpvar_11.x >= 0.0)) {\\\\n tmpvar_13 += 3.141593;\\\\n } else {\\\\n tmpvar_13 = (tmpvar_13 - 3.141593);\\\\n };\\\\n };\\\\n } else {\\\\n tmpvar_13 = (sign(tmpvar_11.x) * 1.570796);\\\\n };\\\\n vec2 tmpvar_16;\\\\n tmpvar_16.x = (tmpvar_13 * 0.1591549);\\\\n tmpvar_16.y = tmpvar_12;\\\\n vec2 tmpvar_17;\\\\n tmpvar_17.x = ((tmpvar_16.x * 2.0) + q11);\\\\n tmpvar_17.y = ((0.3 * log(tmpvar_12)) + q12);\\\\n vec2 tmpvar_18;\\\\n tmpvar_18 = (0.5 + (0.5 - abs(\\\\n ((fract((tmpvar_17 * 0.5)) * 2.0) - 1.0)\\\\n )));\\\\n vec2 tmpvar_19;\\\\n tmpvar_19 = (texsize.zw * 3.0);\\\\n vec3 tmpvar_20;\\\\n tmpvar_20 = ((2.0 * (\\\\n (texture (sampler_blur1, (tmpvar_18 + (vec2(1.0, 0.0) * tmpvar_19))).xyz * scale1)\\\\n + bias1)) - (2.0 * (\\\\n (texture (sampler_blur1, (tmpvar_18 - (vec2(1.0, 0.0) * tmpvar_19))).xyz * scale1)\\\\n + bias1)));\\\\n vec3 tmpvar_21;\\\\n tmpvar_21 = ((2.0 * (\\\\n (texture (sampler_blur1, (tmpvar_18 + (vec2(0.0, 1.0) * tmpvar_19))).xyz * scale1)\\\\n + bias1)) - (2.0 * (\\\\n (texture (sampler_blur1, (tmpvar_18 - (vec2(0.0, 1.0) * tmpvar_19))).xyz * scale1)\\\\n + bias1)));\\\\n vec2 tmpvar_22;\\\\n tmpvar_22.x = tmpvar_20.x;\\\\n tmpvar_22.y = tmpvar_21.x;\\\\n mirror_uv_3 = (tmpvar_18 + ((tmpvar_22 * texsize.zw) * 4.0));\\\\n ret_4 = ((mix (ret_4, vec3(1.0, 1.0, 1.0), \\\\n ((((texture (sampler_blur1, mirror_uv_3).xyz * scale1) + bias1).x * (1.0 - (\\\\n (texture (sampler_blur2, mirror_uv_3).xyz * scale2)\\\\n + bias2).x)) * (pow (hue_shader, vec3(4.0, 4.0, 4.0)) * 1.4))\\\\n ) * texture (sampler_main, mirror_uv_3).xxx) + ((\\\\n (1.0 - texture (sampler_main, mirror_uv_3).x)\\\\n * \\\\n ((texture (sampler_blur1, mirror_uv_3).xyz * scale1) + bias1)\\\\n .x) * vec3(3.0, 3.0, 3.0)));\\\\n vec2 tmpvar_23;\\\\n tmpvar_23.x = tmpvar_20.x;\\\\n tmpvar_23.y = tmpvar_21.x;\\\\n mirror_uv_3 = (mirror_uv_3 - ((tmpvar_23 * texsize.zw) * 24.0));\\\\n dx_2 = ((2.0 * (\\\\n (texture (sampler_blur1, (mirror_uv_3 + (vec2(1.0, 0.0) * tmpvar_19))).xyz * scale1)\\\\n + bias1)) - (2.0 * (\\\\n (texture (sampler_blur1, (mirror_uv_3 - (vec2(1.0, 0.0) * tmpvar_19))).xyz * scale1)\\\\n + bias1)));\\\\n dy_1 = ((2.0 * (\\\\n (texture (sampler_blur1, (mirror_uv_3 + (vec2(0.0, 1.0) * tmpvar_19))).xyz * scale1)\\\\n + bias1)) - (2.0 * (\\\\n (texture (sampler_blur1, (mirror_uv_3 - (vec2(0.0, 1.0) * tmpvar_19))).xyz * scale1)\\\\n + bias1)));\\\\n vec2 tmpvar_24;\\\\n tmpvar_24.x = -(dx_2.y);\\\\n tmpvar_24.y = dy_1.y;\\\\n vec2 tmpvar_25;\\\\n tmpvar_25 = (tmpvar_24 * 0.25);\\\\n vec3 tmpvar_26;\\\\n tmpvar_26 = mix (ret_4, vec3(1.0, 1.0, 1.0), (mix (vec3(1.0, 0.7, 0.2), vec3(0.15, 0.0, 0.5), vec3(\\\\n ((((\\\\n ((mirror_uv_3.x * 0.8) - mirror_uv_3.y)\\\\n + 0.75) + tmpvar_25.x) + tmpvar_25.y) - 0.1)\\\\n )) * texture (sampler_main, mirror_uv_3).y));\\\\n vec2 tmpvar_27;\\\\n vec2 tmpvar_28;\\\\n tmpvar_28 = ((0.5 + (\\\\n (uv - 0.5)\\\\n * aspect.wz)) - vec2(0.5, 0.5));\\\\n vec2 tmpvar_29;\\\\n tmpvar_29.x = ((q4 * tmpvar_28.x) - (q3 * tmpvar_28.y));\\\\n tmpvar_29.y = ((q3 * tmpvar_28.x) + (q4 * tmpvar_28.y));\\\\n tmpvar_27 = (vec2(0.5, 0.5) + tmpvar_29);\\\\n mirror_uv_3 = tmpvar_27.yx;\\\\n vec2 tmpvar_30;\\\\n tmpvar_30 = (vec2(1.0, 0.0) * texsize.zw);\\\\n dx_2 = ((2.0 * texture (sampler_main, (tmpvar_27.yx + tmpvar_30)).xyz) - (2.0 * texture (sampler_main, (tmpvar_27.yx - tmpvar_30)).xyz));\\\\n vec2 tmpvar_31;\\\\n tmpvar_31 = (vec2(0.0, 1.0) * texsize.zw);\\\\n dy_1 = ((2.0 * texture (sampler_main, (tmpvar_27.yx + tmpvar_31)).xyz) - (2.0 * texture (sampler_main, (tmpvar_27.yx - tmpvar_31)).xyz));\\\\n vec2 tmpvar_32;\\\\n tmpvar_32.x = dx_2.z;\\\\n tmpvar_32.y = dy_1.z;\\\\n vec3 tmpvar_33;\\\\n tmpvar_33 = mix (tmpvar_26, vec3(0.9, 0.9, 1.0), vec3((1.0 - texture (sampler_main, (tmpvar_27.yx - tmpvar_32)).z)));\\\\n ret_4 = tmpvar_33;\\\\n vec4 tmpvar_34;\\\\n tmpvar_34.w = 1.0;\\\\n tmpvar_34.xyz = tmpvar_33;\\\\n ret = tmpvar_34.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Flexi - infused with the spiral.json\":\n/*!****************************************************************!*\\\n !*** ./presets/converted/Flexi - infused with the spiral.json ***!\n \\****************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":5,\\\"gammaadj\\\":1,\\\"decay\\\":0.5,\\\"echo_zoom\\\":1.03,\\\"wave_brighten\\\":0,\\\"wrap\\\":0,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":0.01,\\\"wave_smoothing\\\":0,\\\"modwavealphastart\\\":1,\\\"modwavealphaend\\\":1,\\\"warpscale\\\":0.107,\\\"zoomexp\\\":4.28632,\\\"fshader\\\":1,\\\"warp\\\":0.01743,\\\"wave_r\\\":0,\\\"wave_g\\\":0,\\\"wave_b\\\":0,\\\"ob_size\\\":0,\\\"ob_g\\\":1,\\\"ob_a\\\":1,\\\"ib_size\\\":0,\\\"ib_r\\\":1,\\\"ib_g\\\":1,\\\"ib_b\\\":1,\\\"ib_a\\\":1,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":5,\\\"mv_a\\\":0,\\\"b1ed\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":100,\\\"textured\\\":1,\\\"rad\\\":0.789,\\\"ang\\\":0.6283,\\\"tex_zoom\\\":1.17257,\\\"r\\\":0,\\\"g\\\":1,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"vx = 0;\\\\nvy = 0;\\\",\\\"frame_eqs_eel\\\":\\\"rad = 0.65 + bass*0.1;\\\\n\\\\nan = an*0.99 + (bass-treb)*0.1;\\\\nang = an*0.1 + 0.6;\\\"},{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"thickoutline\\\":1,\\\"textured\\\":1,\\\"rad\\\":0.40271,\\\"tex_zoom\\\":2.23888,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":0.08,\\\"g2\\\":0,\\\"a2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"textured\\\":1,\\\"rad\\\":1.21525,\\\"tex_ang\\\":2.57611,\\\"tex_zoom\\\":0.55595,\\\"g\\\":1,\\\"b\\\":1,\\\"g2\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sides\\\":34,\\\"x\\\":0.99,\\\"y\\\":0.99,\\\"rad\\\":0.02558,\\\"r\\\":0,\\\"g\\\":1,\\\"a2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"samples\\\":495,\\\"sep\\\":4,\\\"spectrum\\\":1,\\\"thick\\\":1,\\\"additive\\\":1,\\\"scaling\\\":100,\\\"smoothing\\\":1,\\\"r\\\":0,\\\"g\\\":0.04,\\\"b\\\":0,\\\"a\\\":0.99},\\\"init_eqs_eel\\\":\\\"t2 = 0;\\\\nt3 = 0;\\\\nt4 = 0;\\\\nab = 1;\\\",\\\"frame_eqs_eel\\\":\\\"t1 = q1;\\\\nt2 = q2;\\\\nt3 = q3;\\\\nt4 = q4;\\\\nt5 = q5;\\\\nt6 = q6;\\\\nt8 = .07;\\\\nt7 = 1;\\\",\\\"point_eqs_eel\\\":\\\"t7 = -t7;\\\\npi = asin(1);\\\\nn = 180;\\\\nrd = 0.075;//+(value1*10+1)*((sample*512)%2)*0.02;\\\\nmy_x = sin(sample*pi*4+(t7+1)*t8)*0.5 + cos(sample*pi*n)*rd*sin(sample*pi*4+(t7+1)*t8);\\\\nmy_y = cos(sample*pi*4+(t7+1)*t8)*0.5 + cos(sample*pi*n)*rd*cos(sample*pi*4+(t7+1)*t8);\\\\nmy_z = sin(sample*pi*n)*rd;\\\\n\\\\n\\\\n\\\\nd = 1.4; // makes the perspective impact\\\\nzoom = 0.65;\\\\n\\\\nw1 = q2;\\\\nw2 = q3;\\\\nw3 = q4;\\\\n\\\\nx1 = cos(w1)*my_x + sin(w1)*my_y;\\\\ny1 = -sin(w1)*my_x + cos(w1)*my_y;\\\\nz1 = my_z;\\\\n\\\\nx2 = cos(w2)*x1 + sin(w2)*z1;\\\\nz2 = -sin(w2)*x1 + cos(w2)*z1;\\\\ny2 = y1;\\\\n\\\\ny3 = cos(w3)*y2 + sin(w3)*z2;\\\\nz3 = -sin(w3)*y2 + cos(w3)*z2;\\\\nx3 = x2;\\\\n\\\\n// perspective calculation\\\\n\\\\nl = sqrt(x3*x3 + y3*y3);\\\\nw = atan2(x3,y3);\\\\np = tan(asin(1) + atan2(d+z3,l));\\\\nd = sqrt(x3*x3 + y3*y3 + (z3+d)*(z3+d));\\\\n\\\\nmy_x = zoom*sin(w)*p;\\\\nmy_y = zoom*cos(w)*p;\\\\n\\\\nx = 0.5 + my_x;\\\\ny = 0.5 + my_y;\\\\n\\\\nb = -z3 + 0.5;\\\\nb = min(1,max(0,b))*0.5;\\\\nr = 1-b*2\\\\n//b = (1 - r)*0.1;\\\\n//a = 7/(d*16) - 0.1;\\\"},{\\\"baseVals\\\":{\\\"samples\\\":445,\\\"sep\\\":4,\\\"spectrum\\\":1,\\\"usedots\\\":1,\\\"thick\\\":1,\\\"additive\\\":1,\\\"scaling\\\":100,\\\"smoothing\\\":1,\\\"a\\\":0.99,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t2 = 0;\\\\nt3 = 0;\\\\nt4 = 0;\\\\nab = 1;\\\",\\\"frame_eqs_eel\\\":\\\"t1 = q1;\\\\nt2 = q2;\\\\nt3 = q3;\\\\nt4 = q4;\\\\nt5 = q5;\\\\nt6 = q6;\\\\nt8 = .09;\\\\nt7 = 1;\\\",\\\"point_eqs_eel\\\":\\\"t7 = -t7;\\\\npi = asin(1);\\\\nn = 160;\\\\nrd = 0.075;//+(value1*10+1)*((sample*512)%2)*0.02;\\\\nxx = sin(sample*pi*4+(t7+1)*t8)*0.5 + cos(sample*pi*n)*rd*sin(sample*pi*4);\\\\nyy = cos(sample*pi*4+(t7+1)*t8)*0.5 + cos(sample*pi*n)*rd*cos(sample*pi*4);\\\\nzz = sin(sample*pi*n)*rd;\\\\n\\\\nd = sqrt( xx*xx + yy*yy + zz*zz);\\\\nd1 = 1;\\\\nxx = xx*d1;\\\\nyy = yy*d1;\\\\nzz = zz*d1;\\\\n\\\\nw = -d*t5;\\\\ns1 = sin(t2*1+w);\\\\ns2 = sin(t3*1+w);\\\\ns3 = sin(t4*1+w);\\\\nc1 = cos(t2*1+w);\\\\nc2 = cos(t3*1+w);\\\\nc3 = cos(t4*1+w);\\\\n\\\\nz = (c3*s1*c2 + s3*s2)*xx - (c3*s1*s2-s3*c2)*yy + c3*c1*zz;\\\\nx1 = (c1*c2*xx + c1*s2*yy - s1*zz);\\\\ny1 = ((s3*s1*c2 - c3*s2)*xx + (s3*s1*s2+c3*c2)*yy + s3*c1*zz);\\\\n\\\\na = 0.75;\\\\nzoom = 0.5*atan2(a,a+z);//0.5*(1/(z+a));\\\\nx = 0.5 + zoom*x1;\\\\ny = 0.5 + zoom*y1;\\\\n\\\\npi3 = 3.1415*2*0.3333;\\\\nt = sample*pi*4-2*time;\\\\nc=1.6;\\\\nr = sin(t)*c;\\\\n\\\\ng = sin(t+pi3)*c;\\\\n\\\\nb = sin(t-pi3)*c;\\\\n\\\\nj = 0.71;\\\\n//r = 0.5+xx*j;\\\\n//g = 0.5+yy*j;\\\\n//b = 0.5+zz*j;\\\\n\\\\nr = if(above(r,1),1,r);\\\\nr = if(below(r,0),0,r);\\\\ng = if(above(g,1),1,g);\\\\ng = if(below(g,0),0,g);\\\\nb = if(above(b,1),1,b);\\\\nb = if(below(b,0),0,b);\\\\na = 1-(z + a)/2;\\\\n\\\"},{\\\"baseVals\\\":{\\\"sep\\\":4,\\\"scaling\\\":0.09348,\\\"smoothing\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t2 = 0;\\\\nt3 = 0;\\\\nt4 = 0;\\\\nab = 1;\\\",\\\"frame_eqs_eel\\\":\\\"t1 = q1;\\\\nt2 = q2;\\\\nt3 = q3;\\\\nt4 = q4;\\\\nt5 = q5;\\\\nt6 = q6;\\\",\\\"point_eqs_eel\\\":\\\"s8 = sample*383;\\\\n\\\\ns = 100;//0.3;\\\\nxx = sin(sample*s);//((sample*343)%7 - 3.5)*s;\\\\nzz = cos(sample*s);//((sample*49)%7 - 3.5)*s;\\\\nyy = (sample-0.5);//((sample*7)%7 - 3.5)*s;\\\\n\\\\nd = sqrt( xx*xx + yy*yy + zz*zz);\\\\nd1 = 1/d;\\\\nxx = xx*d1;\\\\nyy = yy*d1;\\\\nzz = zz*d1;\\\\n\\\\nw = 1+0*(d)*(t6);//(sample*sin(time*0.3)*0.02-1);\\\\ns1 = sin(t2*w);\\\\ns2 = sin(t3*w);\\\\ns3 = sin(t4*w);\\\\nc1 = cos(t2*w);\\\\nc2 = cos(t3*w);\\\\nc3 = cos(t4*w);\\\\n\\\\nz = (c3*s1*c2 + s3*s2)*xx - (c3*s1*s2-s3*c2)*yy + c3*c1*zz;\\\\nx1 = (c1*c2*xx + c1*s2*yy - s1*zz);\\\\ny1 = ((s3*s1*c2 - c3*s2)*xx + (s3*s1*s2+c3*c2)*yy + s3*c1*zz);\\\\n\\\\na = 2;\\\\nzoom = 0.3*atan2(a-z,a);//0.5*(1/(z+a));\\\\nx = 0.5 + zoom*x1;\\\\ny = 0.5 + zoom*y1;\\\\n\\\\npi3 = 3.1415*2*0.3333;\\\\nt = -z*13+t5*20;\\\\nc = 10;\\\\nr = sin(t)*c;\\\\n\\\\ng = sin(t+pi3)*c;\\\\n\\\\nb = sin(t-pi3)*c;\\\\n\\\\nj = 0.71;\\\\n//r = 0.5+xx*j;\\\\n//g = 0.5+yy*j;\\\\n//b = 0.5+zz*j;\\\\n\\\\nr = if(above(r,1),1,r);\\\\nr = if(below(r,0),0,r);\\\\ng = if(above(g,1),1,g);\\\\ng = if(below(g,0),0,g);\\\\nb = if(above(b,1),1,b);\\\\nb = if(below(b,0),0,b);\\\\n\\\\n\\\\na = sigmoid(-z,10)*1.0+0.0;\\\"},{\\\"baseVals\\\":{\\\"samples\\\":484,\\\"sep\\\":4,\\\"usedots\\\":1,\\\"scaling\\\":9.94125,\\\"smoothing\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t2 = 0;\\\\nt3 = 0;\\\\nt4 = 0;\\\\nab = 1;\\\",\\\"frame_eqs_eel\\\":\\\"t1 = q1;\\\\nt2 = q2;\\\\nt3 = q3;\\\\nt4 = q4;\\\\nt5 = q5;\\\\nt6 = q6;\\\",\\\"point_eqs_eel\\\":\\\"s8 = sample*383;\\\\n\\\\ns = 0.25;\\\\nxx = ((sample*(465))%15 - 8)*s*2;\\\\nyy = ((sample*31)%31 - 16)*s;\\\\nzz = 0;\\\\n\\\\nd = sqrt( xx*xx + yy*yy + zz*zz);\\\\nw = 1;\\\\n\\\\ns1 = sin(t2*1);\\\\ns2 = sin(t3*0);\\\\ns3 = sin(t4*1);\\\\nc1 = cos(t2*1);\\\\nc2 = cos(t3*0);\\\\nc3 = cos(t4*1);\\\\n\\\\n\\\\nz = (c3*s1*c2 + s3*s2)*xx - (c3*s1*s2-s3*c2)*yy + c3*c1*zz;\\\\nx1 = (c1*c2*xx + c1*s2*yy - s1*zz);\\\\ny1 = ((s3*s1*c2 - c3*s2)*xx + (s3*s1*s2+c3*c2)*yy + s3*c1*zz);\\\\n\\\\na = 500;\\\\nzoom = 0.05*atan2(a-z,a);//0.5*(1/(z+a));\\\\nx = 0.5 + zoom*x1;\\\\ny = 0.5 + zoom*y1;\\\\n\\\\npi3 = 3.1415*2*0.3333;\\\\nt = -z*5+t5;\\\\nc = 10;\\\\nr = sin(t)*c;\\\\n\\\\ng = sin(t+pi3)*c;\\\\n\\\\nb = sin(t-pi3)*c;\\\\n\\\\nj = 0.71;\\\\n//r = 0.5+xx*j;\\\\n//g = 0.5+yy*j;\\\\n//b = 0.5+zz*j;\\\\n\\\\nr = if(above(r,1),1,r);\\\\nr = if(below(r,0),0,r);\\\\ng = if(above(g,1),1,g);\\\\ng = if(below(g,0),0,g);\\\\nb = if(above(b,1),1,b);\\\\nb = if(below(b,0),0,b);\\\\n\\\\n\\\\na = sigmoid(z,5);\\\"}],\\\"init_eqs_eel\\\":\\\"x1 = 0;\\\\ny1 = 0;\\\",\\\"frame_eqs_eel\\\":\\\"q1 = 0;\\\\nv = 0.4;\\\\nj1 = j1*0.95 + sqr(bass*4)*v;\\\\nj2 = j2*0.95 + sqr(mid*4)*v;\\\\nj3 = j3*0.95 + sqr(treb*4)*v;\\\\n\\\\nn = n + j1*0.0052;\\\\nn1 = n1 + j2*0.0052;\\\\nn2 = n2 + j3*0.0052;\\\\n\\\\n\\\\nq2 = n*0.01;\\\\nq3 = n1*0.01;\\\\nq4 = n2*0.01;\\\\n\\\\nk = k*0.99 + sqr(mid_att*2);\\\\nq5 = k*0.00;\\\\n\\\\nzoom = 1.0016;\\\\nwarp = 0;\\\\n\\\\nrot = -0.00;\\\\n\\\\nq9 = aspectx;\\\\nq10 = aspecty;\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\" shader_body { \\\\n vec3 ret_1;\\\\n vec2 tmpvar_2;\\\\n tmpvar_2 = (texsize.zw * 4.0);\\\\n vec2 tmpvar_3;\\\\n tmpvar_3.x = (((texture (sampler_blur2, \\\\n (uv + (vec2(0.0, 1.0) * tmpvar_2))\\\\n ).xyz * scale2) + bias2) - ((texture (sampler_blur2, \\\\n (uv - (vec2(0.0, 1.0) * tmpvar_2))\\\\n ).xyz * scale2) + bias2)).z;\\\\n tmpvar_3.y = -(((\\\\n (texture (sampler_blur2, (uv + (vec2(1.0, 0.0) * tmpvar_2))).xyz * scale2)\\\\n + bias2) - (\\\\n (texture (sampler_blur2, (uv - (vec2(1.0, 0.0) * tmpvar_2))).xyz * scale2)\\\\n + bias2)).z);\\\\n vec2 tmpvar_4;\\\\n tmpvar_4 = (uv + ((tmpvar_3 * texsize.zw) * 60.0));\\\\n vec2 x_5;\\\\n x_5 = (tmpvar_4 - uv);\\\\n vec4 tmpvar_6;\\\\n tmpvar_6 = texture (sampler_main, uv);\\\\n vec4 tmpvar_7;\\\\n tmpvar_7 = texture (sampler_blur1, uv);\\\\n ret_1.z = (((texture (sampler_main, tmpvar_4).z + \\\\n (((tmpvar_6.z - (\\\\n (tmpvar_7.xyz * scale1)\\\\n + bias1).z) * 200.0) * sqrt(dot (x_5, x_5)))\\\\n ) * 0.96) - 0.02);\\\\n vec2 tmpvar_8;\\\\n tmpvar_8.x = (((texture (sampler_blur1, \\\\n (uv + (vec2(1.0, 0.0) * tmpvar_2))\\\\n ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n (uv - (vec2(1.0, 0.0) * tmpvar_2))\\\\n ).xyz * scale1) + bias1)).y;\\\\n tmpvar_8.y = (((texture (sampler_blur1, \\\\n (uv + (vec2(0.0, 1.0) * tmpvar_2))\\\\n ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n (uv - (vec2(0.0, 1.0) * tmpvar_2))\\\\n ).xyz * scale1) + bias1)).y;\\\\n ret_1.y = ((texture (sampler_main, (uv_orig + \\\\n ((tmpvar_8 * texsize.zw) * 6.0)\\\\n )).y + (\\\\n (tmpvar_6.y - ((tmpvar_7.xyz * scale1) + bias1).y)\\\\n * 0.1)) - 0.016);\\\\n vec4 tmpvar_9;\\\\n tmpvar_9.w = 1.0;\\\\n tmpvar_9.xyz = ret_1;\\\\n ret = tmpvar_9.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n vec3 ret_1;\\\\n vec2 tmpvar_2;\\\\n tmpvar_2 = (texsize.zw * 8.0);\\\\n vec3 tmpvar_3;\\\\n tmpvar_3 = (((texture (sampler_blur1, \\\\n (uv + (vec2(1.0, 0.0) * tmpvar_2))\\\\n ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n (uv - (vec2(1.0, 0.0) * tmpvar_2))\\\\n ).xyz * scale1) + bias1));\\\\n vec3 tmpvar_4;\\\\n tmpvar_4 = (((texture (sampler_blur1, \\\\n (uv + (vec2(0.0, 1.0) * tmpvar_2))\\\\n ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n (uv - (vec2(0.0, 1.0) * tmpvar_2))\\\\n ).xyz * scale1) + bias1));\\\\n vec2 tmpvar_5;\\\\n tmpvar_5.x = tmpvar_3.z;\\\\n tmpvar_5.y = tmpvar_4.z;\\\\n vec2 tmpvar_6;\\\\n tmpvar_6.x = tmpvar_3.y;\\\\n tmpvar_6.y = tmpvar_4.y;\\\\n ret_1 = (mix (vec3(0.2, 0.0, 0.1), vec3(0.8, 0.6, 0.0), texture (sampler_main, (uv - \\\\n (tmpvar_5 * 0.2)\\\\n )).yyy) * ((\\\\n (-(tmpvar_3.y) + tmpvar_4.y)\\\\n + 1.0) + (\\\\n (-(tmpvar_3.z) + tmpvar_4.z)\\\\n * 2.0)));\\\\n vec3 tmpvar_7;\\\\n tmpvar_7 = mix (mix (ret_1, vec3(0.2, 0.0, 0.4), vec3((\\\\n ((texture (sampler_blur1, (uv - (tmpvar_6 * 0.04))).xyz * scale1) + bias1)\\\\n .x * 1.4))), vec3(1.0, 0.9, 0.8), texture (sampler_main, uv).zzz);\\\\n ret_1 = tmpvar_7;\\\\n vec4 tmpvar_8;\\\\n tmpvar_8.w = 1.0;\\\\n tmpvar_8.xyz = tmpvar_7;\\\\n ret = tmpvar_8.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Flexi - mindblob [shiny mix].json\":\n/*!*************************************************************!*\\\n !*** ./presets/converted/Flexi - mindblob [shiny mix].json ***!\n \\*************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":1,\\\"gammaadj\\\":1,\\\"decay\\\":1,\\\"echo_zoom\\\":1,\\\"echo_alpha\\\":0.5,\\\"additivewave\\\":1,\\\"wave_thick\\\":1,\\\"modwavealphabyvolume\\\":1,\\\"wave_brighten\\\":0,\\\"wave_a\\\":2.789,\\\"wave_scale\\\":0.292,\\\"wave_smoothing\\\":0,\\\"wave_mystery\\\":0.12,\\\"modwavealphastart\\\":1,\\\"modwavealphaend\\\":1,\\\"warpanimspeed\\\":0.01,\\\"warpscale\\\":100,\\\"zoomexp\\\":0.92178,\\\"zoom\\\":0.9901,\\\"warp\\\":0.01,\\\"wave_g\\\":0,\\\"ob_size\\\":0,\\\"ob_r\\\":0.2,\\\"ob_a\\\":0.1,\\\"ib_size\\\":0,\\\"ib_r\\\":0,\\\"ib_g\\\":0,\\\"ib_b\\\":0,\\\"ib_a\\\":1,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":0,\\\"mv_b\\\":0,\\\"mv_a\\\":0,\\\"b1ed\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"additive\\\":1,\\\"thickoutline\\\":1,\\\"rad\\\":0.71426,\\\"tex_ang\\\":0.12566,\\\"tex_zoom\\\":1.51878,\\\"a\\\":0,\\\"g2\\\":0,\\\"border_r\\\":0.1,\\\"border_g\\\":0,\\\"border_b\\\":0,\\\"border_a\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":100,\\\"additive\\\":1,\\\"thickoutline\\\":1,\\\"x\\\":0.43,\\\"y\\\":0.42,\\\"rad\\\":0.15799,\\\"ang\\\":0.1885,\\\"tex_zoom\\\":0.87865,\\\"r\\\":0,\\\"g\\\":1,\\\"g2\\\":0,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x = q4;\\\\ny = q8;\\\"},{\\\"baseVals\\\":{\\\"thickoutline\\\":1,\\\"x\\\":1,\\\"rad\\\":3.0054,\\\"tex_ang\\\":0.12566,\\\"tex_zoom\\\":1.51878,\\\"r\\\":0,\\\"g\\\":1,\\\"g2\\\":0,\\\"a2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"thickoutline\\\":1,\\\"x\\\":1,\\\"rad\\\":0.39872,\\\"tex_ang\\\":0.12566,\\\"tex_zoom\\\":1.51878,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"usedots\\\":1,\\\"scaling\\\":2.44415,\\\"smoothing\\\":0,\\\"a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t2 = 0;\\\\nt3 = 0;\\\\nt4 = 0;\\\\ncl = 0;\\\",\\\"frame_eqs_eel\\\":\\\"t1 = 0;\\\\nv = 0.01;\\\\nj = j + (bass)*0.01;\\\\nj2 = j2 + (mid_att)*0.01;\\\\nj3 = j3 + (treb_att)*0.01;\\\\nt2 = j;\\\\nt3 = j2;\\\\nt4 = j3;\\\\n//t5 = 0;\\\\nk = k*0.99 + 10*mid/fps;\\\\nt5 = -k;\\\\n\\\\ncl1 = cl1 + 0.002;\\\\ncl1 = if(above(cl1,1),0,cl1);\\\\ncl1 = if(below(cl1,0),1,cl1);\\\\nt8 = cl1;\\\\n\\\\ncl2 = cl2 -1*q1;\\\\ncl2 = if(above(cl2,1),0,cl2);\\\\ncl2 = if(below(cl2,0),1,cl2);\\\\nt7 = cl2;\\\\n\\\\ncl3 = cl3 +0.001;\\\\ncl3 = if(above(cl3,1),0,cl3);\\\\ncl3 = if(below(cl3,0),1,cl3);\\\\nt6 = cl3;\\\",\\\"point_eqs_eel\\\":\\\"xx = ((sample*0983624912364)%10000000+100)/10000000;\\\\nyy = ((xx*1896575575)%10000000+100)/10000000;\\\\nzz = ((yy*58652340875)%10000000+100)/10000000;\\\\n\\\\n\\\\nd = sqrt(sqr(xx)+sqr(yy)+sqr(zz));\\\\n\\\\nzz = zz + t8 - if(above(zz+t8,1),1,0) - 0.5;\\\\nxx = xx + t7 - if(above(xx+t7,1),1,0) - 0.5;\\\\nyy = yy + t6 - if(above(yy+t6,1),1,0) - 0.5;\\\\n\\\\nv = 0.001;\\\\n\\\\nw = 1;// (sample*sin(time*0.3)*0.01-1);\\\\nbb = d*d*0.5;\\\\nn= 0.3;\\\\ns1 = sin(sin(t2*w+bb)*n);\\\\ns2 = sin(sin(t3*w+bb)*n);\\\\ns3 = sin(sin(t4*w+bb)*n);\\\\nc1 = cos(sin(t2*w+bb)*n);\\\\nc2 = cos(sin(t3*w+bb)*n);\\\\nc3 = cos(sin(t4*w+bb)*n);\\\\n\\\\nz = (c3*s1*c2 + s3*s2)*xx - (c3*s1*s2-s3*c2)*yy + c3*c1*zz;\\\\nx1 = (c1*c2*xx + c1*s2*yy - s1*zz);\\\\ny1 = ((s3*s1*c2 - c3*s2)*xx + (s3*s1*s2+c3*c2)*yy + s3*c1*zz);\\\\n\\\\nzoom = .5*(1/(z+0.5));\\\\nx = 0.5 + zoom*x1 + sin(time*0.1)*0;;\\\\ny = 0.5 + zoom*y1 + cos(time*0.16801)*0;\\\\n\\\\npi3 = 3.1415*2*0.3333;\\\\nt = z*2+t2*1;\\\\nc=3;\\\\n//r = sin(t)*c;\\\\n\\\\n//g = sin(t+pi3)*c;\\\\n\\\\n//b = sin(t-pi3)*c;\\\\n\\\\n\\\\nr = if(above(r,1),1,r);\\\\nr = if(below(r,0),0,r);\\\\ng = if(above(g,1),1,g);\\\\ng = if(below(g,0),0,g);\\\\nb = if(above(b,1),1,b);\\\\nb = if(below(b,0),0,b);\\\\n\\\\na = 0.4;\\\"},{\\\"baseVals\\\":{\\\"scaling\\\":2.44415,\\\"smoothing\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t2 = 0;\\\\nt3 = 0;\\\\nt4 = 0;\\\\ncl = 0;\\\",\\\"frame_eqs_eel\\\":\\\"t8 = 1;\\\",\\\"point_eqs_eel\\\":\\\"t8 = -t8;\\\\ny = sample;\\\\nx = 0.5 + t8*0.005;\\\\n\\\\npi3 = 3.1415*2*0.3333;\\\\nt = time + sample*2;\\\\nc=2;\\\\n\\\\nr = sin(t)*c;\\\\ng = sin(t+pi3)*c;\\\\n\\\\nb = sin(t-pi3)*c;\\\\n\\\\n\\\\nr = if(above(r,1),1,r);\\\\nr = if(below(r,0),0,r);\\\\ng = if(above(g,1),1,g);\\\\ng = if(below(g,0),0,g);\\\\nb = if(above(b,1),1,b);\\\\nb = if(below(b,0),0,b);\\\\n\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"additive\\\":1,\\\"scaling\\\":100,\\\"smoothing\\\":0.6,\\\"r\\\":0,\\\"g\\\":0.4,\\\"a\\\":0.3,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"t1 = q1;\\\\nt2 = q2;\\\\nt3 = q3;\\\\nt4 = q4;\\\\nt5 = q5;\\\\nt6 = q6;\\\\nt7 = q7;\\\\nt8 = q8;\\\",\\\"point_eqs_eel\\\":\\\"sample = 1-sample;\\\\nxxx = xx;\\\\nyyy = yy;\\\\nxx = pow(sample,5)*t1 + 5*pow(sample,4)*(1-sample)*t1 + 10*pow(sample,3)*sqr(1-sample)*t2\\\\n+ 10*sqr(sample)*pow(1-sample,3)*t3 + 5*pow(1-sample,4)*sample*t4 + pow(1-sample,5)*t4;\\\\n\\\\nyy = pow(sample,5)*t5 + 5*pow(sample,4)*(1-sample)*t5 + 10*pow(sample,3)*sqr(1-sample)*t6\\\\n+ 10*sqr(sample)*pow(1-sample,3)*t7 + 5*pow(1-sample,4)*sample*t8 + pow(1-sample,5)*t8;\\\\nd = 1/sqrt(sqr(xx-xxx)+sqr(yy-yyy));\\\\nx = xx + sample*(1-sample)*(value1-value2)*(yy-yyy)*d;\\\\ny = yy - sample*(1-sample)*(value1-value2)*(xx-xxx)*d;\\\"},{\\\"baseVals\\\":{\\\"usedots\\\":1,\\\"scaling\\\":2.44415,\\\"smoothing\\\":0,\\\"r\\\":0,\\\"g\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t2 = 0;\\\\nt3 = 0;\\\\nt4 = 0;\\\\ncl = 0;\\\",\\\"frame_eqs_eel\\\":\\\"t8 = 1;\\\",\\\"point_eqs_eel\\\":\\\"t8 = -t8;\\\\ny = (1+t8)*0.01;\\\\nx = sample;\\\"}],\\\"init_eqs_eel\\\":\\\"x1 = 0.9;\\\\ny1 = 0.5;\\\\n\\\\nx2 = 0.5; y2 = 0.5;\\\\nx3 = 0.5; y3 = 0.5;\\\\nx4 = 0.5; y4 = 0.5;\\\",\\\"frame_eqs_eel\\\":\\\"decay = 1;\\\\nxx1 = xx1*0.9 + (bass)*0.01;\\\\nxx2 = xx2*0.9 + (treb)*0.01;\\\\nyy1 = yy1*0.94 + (treb+bass)*0.0075;\\\\n\\\\nx1 = 0.5 + xx1-xx2;\\\\ny1 = 0.5 + yy1;\\\\n\\\\n//x2 = 0;y2 = 0;x3 = 0;y3 = 0;x4 = 0;y4 = 0;\\\\n\\\\nspring = 18;\\\\ngrav = 1;\\\\nresist = 0.2;\\\\nbounce = 0.9;\\\\ndt = 0.0003;\\\\n\\\\nvx2 = vx2*(1-resist*dt) + dt*((x1+x3-2*x2)*spring);\\\\nvy2 = vy2*(1-resist*dt) + dt*((y1+y3-2*y2)*spring-grav);\\\\nvx3 = vx3*(1-resist*dt) + dt*((x2+x4-2*x3)*spring);\\\\nvy3 = vy3*(1-resist*dt) + dt*((y2+y4-2*y3)*spring-grav);\\\\nvx4 = vx4*(1-resist*dt) + dt*((x3-x4)*spring);\\\\nvy4 = vy4*(1-resist*dt) + dt*((y3-y4)*spring-grav);\\\\n\\\\nx2 = x2 + vx2;\\\\ny2 = y2 + vy2;\\\\nx3 = x3 + vx3;\\\\ny3 = y3 + vy3;\\\\nx4 = x4 + vx4;\\\\ny4 = y4 + vy4;\\\\n\\\\nvx2 = if(above(x2,0),vx2,abs(vx2)*bounce);\\\\nvx2 = if(below(x2,1),vx2,-abs(vx2)*bounce);\\\\nvx3 = if(above(x3,0),vx3,abs(vx3)*bounce);\\\\nvx3 = if(below(x3,1),vx3,-abs(vx3)*bounce);\\\\nvx4 = if(above(x4,0),vx4,abs(vx4)*bounce);\\\\nvx4 = if(below(x4,1),vx4,-abs(vx4)*bounce);\\\\n\\\\nvy2 = if(above(y2,0),vy2,abs(vy2)*bounce);\\\\nvy2 = if(below(y2,1),vy2,-abs(vy2)*bounce);\\\\nvy3 = if(above(y3,0),vy3,abs(vy3)*bounce);\\\\nvy3 = if(below(y3,1),vy3,-abs(vy3)*bounce);\\\\nvy4 = if(above(y4,0),vy4,abs(vy4)*bounce);\\\\nvy4 = if(below(y4,1),vy4,-abs(vy4)*bounce);\\\\n\\\\n\\\\nq1 = x1;\\\\nq2 = x2;\\\\nq3 = x3;\\\\nq4 = x4;\\\\n\\\\nq5 = y1;\\\\nq6 = y2;\\\\nq7 = y3;\\\\nq8 = y4;\\\\n\\\\n\\\\nzoom = 1.004;\\\\n\\\\nq6 = atan2(vx4,vy4);\\\\nq5 = sqrt(vx4*vx4 + vy4*vy4);\\\",\\\"pixel_eqs_eel\\\":\\\"dir = -q6*1 + asin(1)*1;\\\\n\\\\nb1 = 0.08; // distance\\\\nm1 = q5*45;//-0.6 + q5*200; // size\\\\nt1 = 0.5; // velocity\\\\n\\\\nxx = 0.5 + (q4-0.5)/aspectx;\\\\nyy = 1-(0.5 + (q8-0.5)/aspecty);\\\\n\\\\n\\\\nx1 = xx +cos(dir+1.5708)*b1;\\\\ny1 = yy -sin(dir+1.5708)*b1;\\\\n\\\\nx2 = xx -cos(dir+1.5708)*b1;\\\\ny2 = yy +sin(dir+1.5708)*b1;\\\\n\\\\nd1 = sqrt((x1-x)*(x1-x)+(y1-y)*(y1-y))-b1*2;\\\\nsi1 = 1- 1/(1+pow(2,-d1*100));\\\\n\\\\nd2 = sqrt((x2-x)*(x2-x)+(y2-y)*(y2-y))-b1*2;\\\\nsi2 = 1- 1/(1+pow(2,-d2*100));\\\\n\\\\nsi3 = -pow(q5,3)*00;\\\\n\\\\ndx = (si1*sin(y1-y)*m1*d1 - si2*sin(y2-y)*m1*d2 + si3*cos(dir)*t1)*2/aspectx;\\\\ndy = (-si1*sin(x1-x)*m1*d1 + si2*sin(x2-x)*m1*d2 - si3*sin(dir)*t1)*2/aspecty;\\\",\\\"warp\\\":\\\" shader_body { \\\\n vec3 ret_1;\\\\n vec2 tmpvar_2;\\\\n tmpvar_2 = (texsize.zw * 8.0);\\\\n vec2 tmpvar_3;\\\\n tmpvar_3.x = (((texture (sampler_blur1, \\\\n (uv + (vec2(1.0, 0.0) * tmpvar_2))\\\\n ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n (uv - (vec2(1.0, 0.0) * tmpvar_2))\\\\n ).xyz * scale1) + bias1)).x;\\\\n tmpvar_3.y = (((texture (sampler_blur1, \\\\n (uv + (vec2(0.0, 1.0) * tmpvar_2))\\\\n ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n (uv - (vec2(0.0, 1.0) * tmpvar_2))\\\\n ).xyz * scale1) + bias1)).x;\\\\n vec2 tmpvar_4;\\\\n tmpvar_4 = (uv - ((tmpvar_3 * texsize.zw) * 0.5));\\\\n ret_1.x = texture (sampler_fw_main, tmpvar_4).x;\\\\n ret_1.x = (ret_1.x + ((\\\\n (ret_1.x - ((texture (sampler_blur3, tmpvar_4).xyz * scale3) + bias3).x)\\\\n * 0.2) - 0.004));\\\\n ret_1.y = ((texture (sampler_fw_main, uv_orig).y * 0.98) - 0.004);\\\\n vec4 tmpvar_5;\\\\n tmpvar_5.w = 1.0;\\\\n tmpvar_5.xyz = ret_1;\\\\n ret = tmpvar_5.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n vec2 tmpvar_1;\\\\n tmpvar_1 = (texsize.zw * 4.0);\\\\n vec2 tmpvar_2;\\\\n tmpvar_2.x = (((texture (sampler_blur1, \\\\n (uv + (vec2(1.0, 0.0) * tmpvar_1))\\\\n ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n (uv - (vec2(1.0, 0.0) * tmpvar_1))\\\\n ).xyz * scale1) + bias1)).x;\\\\n tmpvar_2.y = (((texture (sampler_blur1, \\\\n (uv + (vec2(0.0, 1.0) * tmpvar_1))\\\\n ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n (uv - (vec2(0.0, 1.0) * tmpvar_1))\\\\n ).xyz * scale1) + bias1)).x;\\\\n vec4 tmpvar_3;\\\\n tmpvar_3.w = 1.0;\\\\n tmpvar_3.xyz = mix ((vec3(0.0, 0.0, 1.0) * texture (sampler_main, uv).x), vec3(1.0, 0.0, 0.0), texture (sampler_main, (uv - tmpvar_2)).yyy);\\\\n ret = tmpvar_3.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Flexi - mindblob mix.json\":\n/*!*****************************************************!*\\\n !*** ./presets/converted/Flexi - mindblob mix.json ***!\n \\*****************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":1,\\\"gammaadj\\\":1,\\\"decay\\\":1,\\\"echo_zoom\\\":1,\\\"echo_alpha\\\":0.5,\\\"wave_thick\\\":1,\\\"wave_brighten\\\":0,\\\"wrap\\\":0,\\\"wave_a\\\":0.004,\\\"wave_scale\\\":0.01,\\\"wave_smoothing\\\":0,\\\"wave_mystery\\\":-0.44,\\\"modwavealphastart\\\":1,\\\"modwavealphaend\\\":1,\\\"warpanimspeed\\\":0.137,\\\"warpscale\\\":13.125,\\\"zoom\\\":0.99951,\\\"warp\\\":0.99213,\\\"wave_y\\\":0.04,\\\"ob_size\\\":0.015,\\\"ob_r\\\":0.1,\\\"ob_g\\\":0.25,\\\"ob_a\\\":1,\\\"ib_size\\\":0,\\\"ib_b\\\":1,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":0,\\\"mv_b\\\":0,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":100,\\\"thickoutline\\\":1,\\\"rad\\\":0.02015,\\\"tex_ang\\\":0.12566,\\\"tex_zoom\\\":1.51878,\\\"r\\\":0,\\\"a\\\":0.1,\\\"g2\\\":0,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"thickoutline\\\":1,\\\"x\\\":1,\\\"rad\\\":0.39872,\\\"tex_ang\\\":0.12566,\\\"tex_zoom\\\":1.51878,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"thickoutline\\\":1,\\\"x\\\":1,\\\"rad\\\":3.0054,\\\"tex_ang\\\":0.12566,\\\"tex_zoom\\\":1.51878,\\\"r\\\":0,\\\"g\\\":1,\\\"g2\\\":0,\\\"a2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"thickoutline\\\":1,\\\"x\\\":1,\\\"rad\\\":0.39872,\\\"tex_ang\\\":0.12566,\\\"tex_zoom\\\":1.51878,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"usedots\\\":1,\\\"scaling\\\":2.44415,\\\"smoothing\\\":0,\\\"a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t2 = 0;\\\\nt3 = 0;\\\\nt4 = 0;\\\\ncl = 0;\\\",\\\"frame_eqs_eel\\\":\\\"t1 = 0;\\\\nv = 0.01;\\\\nj = j + (bass)*0.01;\\\\nj2 = j2 + (mid_att)*0.01;\\\\nj3 = j3 + (treb_att)*0.01;\\\\nt2 = j;\\\\nt3 = j2;\\\\nt4 = j3;\\\\n//t5 = 0;\\\\nk = k*0.99 + 10*mid/fps;\\\\nt5 = -k;\\\\n\\\\ncl1 = cl1 + 0.002;\\\\ncl1 = if(above(cl1,1),0,cl1);\\\\ncl1 = if(below(cl1,0),1,cl1);\\\\nt8 = cl1;\\\\n\\\\ncl2 = cl2 -1*q1;\\\\ncl2 = if(above(cl2,1),0,cl2);\\\\ncl2 = if(below(cl2,0),1,cl2);\\\\nt7 = cl2;\\\\n\\\\ncl3 = cl3 +0.001;\\\\ncl3 = if(above(cl3,1),0,cl3);\\\\ncl3 = if(below(cl3,0),1,cl3);\\\\nt6 = cl3;\\\",\\\"point_eqs_eel\\\":\\\"xx = ((sample*0983624912364)%10000000+100)/10000000;\\\\nyy = ((xx*1896575575)%10000000+100)/10000000;\\\\nzz = ((yy*58652340875)%10000000+100)/10000000;\\\\n\\\\n\\\\nd = sqrt(sqr(xx)+sqr(yy)+sqr(zz));\\\\n\\\\nzz = zz + t8 - if(above(zz+t8,1),1,0) - 0.5;\\\\nxx = xx + t7 - if(above(xx+t7,1),1,0) - 0.5;\\\\nyy = yy + t6 - if(above(yy+t6,1),1,0) - 0.5;\\\\n\\\\nv = 0.001;\\\\n\\\\nw = 1;// (sample*sin(time*0.3)*0.01-1);\\\\nbb = d*d*0.5;\\\\nn= 0.3;\\\\ns1 = sin(sin(t2*w+bb)*n);\\\\ns2 = sin(sin(t3*w+bb)*n);\\\\ns3 = sin(sin(t4*w+bb)*n);\\\\nc1 = cos(sin(t2*w+bb)*n);\\\\nc2 = cos(sin(t3*w+bb)*n);\\\\nc3 = cos(sin(t4*w+bb)*n);\\\\n\\\\nz = (c3*s1*c2 + s3*s2)*xx - (c3*s1*s2-s3*c2)*yy + c3*c1*zz;\\\\nx1 = (c1*c2*xx + c1*s2*yy - s1*zz);\\\\ny1 = ((s3*s1*c2 - c3*s2)*xx + (s3*s1*s2+c3*c2)*yy + s3*c1*zz);\\\\n\\\\nzoom = .5*(1/(z+0.5));\\\\nx = 0.5 + zoom*x1 + sin(time*0.1)*0;\\\\ny = 0.5 + zoom*y1 + cos(time*0.16801)*0;\\\\n\\\\npi3 = 3.1415*2*0.3333;\\\\nt = z*2+t2*1;\\\\nc=3;\\\\n//r = sin(t)*c;\\\\n\\\\n//g = sin(t+pi3)*c;\\\\n\\\\n//b = sin(t-pi3)*c;\\\\n\\\\n\\\\nr = if(above(r,1),1,r);\\\\nr = if(below(r,0),0,r);\\\\ng = if(above(g,1),1,g);\\\\ng = if(below(g,0),0,g);\\\\nb = if(above(b,1),1,b);\\\\nb = if(below(b,0),0,b);\\\\n\\\\na = 0.4;\\\"},{\\\"baseVals\\\":{\\\"scaling\\\":2.44415,\\\"smoothing\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t2 = 0;\\\\nt3 = 0;\\\\nt4 = 0;\\\\ncl = 0;\\\",\\\"frame_eqs_eel\\\":\\\"t8 = 1;\\\",\\\"point_eqs_eel\\\":\\\"t8 = -t8;\\\\ny = sample;\\\\nx = 0.5 + t8*0.005;\\\\n\\\\npi3 = 3.1415*2*0.3333;\\\\nt = time + sample*2;\\\\nc=2;\\\\n\\\\nr = sin(t)*c;\\\\ng = sin(t+pi3)*c;\\\\n\\\\nb = sin(t-pi3)*c;\\\\n\\\\n\\\\nr = if(above(r,1),1,r);\\\\nr = if(below(r,0),0,r);\\\\ng = if(above(g,1),1,g);\\\\ng = if(below(g,0),0,g);\\\\nb = if(above(b,1),1,b);\\\\nb = if(below(b,0),0,b);\\\\n\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"additive\\\":1,\\\"scaling\\\":100,\\\"smoothing\\\":0.6,\\\"r\\\":0,\\\"g\\\":0.4,\\\"a\\\":0.3,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"t1 = q1;\\\\nt2 = q2;\\\\nt3 = q3;\\\\nt4 = q4;\\\\nt5 = q5;\\\\nt6 = q6;\\\\nt7 = q7;\\\\nt8 = q8;\\\",\\\"point_eqs_eel\\\":\\\"sample = 1-sample;\\\\nxxx = xx;\\\\nyyy = yy;\\\\nxx = pow(sample,5)*t1 + 5*pow(sample,4)*(1-sample)*t1 + 10*pow(sample,3)*sqr(1-sample)*t2\\\\n+ 10*sqr(sample)*pow(1-sample,3)*t3 + 5*pow(1-sample,4)*sample*t4 + pow(1-sample,5)*t4;\\\\n\\\\nyy = pow(sample,5)*t5 + 5*pow(sample,4)*(1-sample)*t5 + 10*pow(sample,3)*sqr(1-sample)*t6\\\\n+ 10*sqr(sample)*pow(1-sample,3)*t7 + 5*pow(1-sample,4)*sample*t8 + pow(1-sample,5)*t8;\\\\nd = 1/sqrt(sqr(xx-xxx)+sqr(yy-yyy));\\\\nx = xx + sample*(1-sample)*(value1-value2)*(yy-yyy)*d;\\\\ny = yy - sample*(1-sample)*(value1-value2)*(xx-xxx)*d;\\\"},{\\\"baseVals\\\":{\\\"usedots\\\":1,\\\"scaling\\\":2.44415,\\\"smoothing\\\":0,\\\"r\\\":0,\\\"g\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t2 = 0;\\\\nt3 = 0;\\\\nt4 = 0;\\\\ncl = 0;\\\",\\\"frame_eqs_eel\\\":\\\"t8 = 1;\\\",\\\"point_eqs_eel\\\":\\\"t8 = -t8;\\\\ny = (1+t8)*0.01;\\\\nx = sample;\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"warp = 0;\\\\nwave_a = 0;\\\\n// elastic thread code\\\\n\\\\nxx1 = xx1*0.9 + (bass)*0.01;\\\\nxx2 = xx2*0.9 + (treb)*0.01;\\\\nyy1 = yy1*0.94 + (treb+bass)*0.0075;\\\\nx1 = 0.5 + (xx1-xx2)*2;\\\\ny1 = 0.4 + yy1*1.5;\\\\ndt = 0.03/fps;\\\\nvx2 = vx2*(1-2*dt) + dt*((x1+x3-2*x2)*10);\\\\nvy2 = vy2*(1-2*dt) + dt*((y1+y3-2*y2)*10-0.5);\\\\nvx3 = vx3*(1-2*dt) + dt*((x2+x4-2*x3)*10);\\\\nvy3 = vy3*(1-2*dt) + dt*((y2+y4-2*y3)*10-0.5);\\\\nvx4 = vx4*(1-2*dt) + dt*((x3-x4)*10);\\\\nvy4 = vy4*(1-2*dt) + dt*((y3-y4)*10-0.5);\\\\nx2 = x2 + vx2; y2 = y2 + vy2;\\\\nx3 = x3 + vx3; y3 = y3 + vy3;\\\\nx4 = x4 + vx4; y4 = y4 + vy4;\\\\nvx2 = if(above(x2,0),vx2,abs(vx2)*0.5);\\\\nvx2 = if(below(x2,1),vx2,-abs(vx2)*0.5);\\\\nvx3 = if(above(x3,0),vx3,abs(vx3)*0.5);\\\\nvx3 = if(below(x3,1),vx3,-abs(vx3)*0.5);\\\\nvx4 = if(above(x4,0),vx4,abs(vx4)*0.5);\\\\nvx4 = if(below(x4,1),vx4,-abs(vx4)*0.5);\\\\nvy2 = if(above(y2,0),vy2,abs(vy2)*0.5);\\\\nvy2 = if(below(y2,1),vy2,-abs(vy2)*0.5);\\\\nvy3 = if(above(y3,0),vy3,abs(vy3)*0.5);\\\\nvy3 = if(below(y3,1),vy3,-abs(vy3)*0.5);\\\\nvy4 = if(above(y4,0),vy4,abs(vy4)*0.5);\\\\nvy4 = if(below(y4,1),vy4,-abs(vy4)*0.5);\\\\nq1 = x1;q2 = x2;q3 = x3;q4 = x4;\\\\nq5 = y1;q6 = y2;q7 = y3;q8 = y4;\\\\nq9 = 1/aspectx;\\\\nq10 = 1/aspecty;\\\\nq11 = aspectx;\\\\nq12 = aspecty;\\\\nq13 = sqrt(vx4*vx4 + vy4*vy4);\\\\nq14 = atan2(vx4,vy4);\\\\nq15 = sin(q14);\\\\nq16 = cos(q14);\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\" shader_body { \\\\n vec2 uv_1;\\\\n vec2 my_uv_2;\\\\n vec3 ret_3;\\\\n vec2 tmpvar_4;\\\\n tmpvar_4.x = q4;\\\\n tmpvar_4.y = (1.0 - q8);\\\\n vec2 tmpvar_5;\\\\n tmpvar_5.x = -(q15);\\\\n tmpvar_5.y = q16;\\\\n vec2 domain_6;\\\\n vec2 uv_rot_7;\\\\n domain_6 = (uv - tmpvar_4);\\\\n domain_6 = (domain_6 * aspect.xy);\\\\n float tmpvar_8;\\\\n tmpvar_8 = (1.0/((1.0 + exp(\\\\n ((sqrt(dot (domain_6, domain_6)) - 0.07) * 50.0)\\\\n ))));\\\\n domain_6 = (domain_6 + ((tmpvar_5 * q13) * (aspect.wz * tmpvar_8)));\\\\n float tmpvar_9;\\\\n tmpvar_9 = sin(tmpvar_8);\\\\n float tmpvar_10;\\\\n tmpvar_10 = cos(tmpvar_8);\\\\n uv_rot_7.x = ((tmpvar_10 * domain_6.x) - (tmpvar_9 * domain_6.y));\\\\n uv_rot_7.y = ((tmpvar_9 * domain_6.x) + (tmpvar_10 * domain_6.y));\\\\n uv_rot_7 = (uv_rot_7 * aspect.zw);\\\\n uv_rot_7 = (uv_rot_7 + tmpvar_4);\\\\n uv_1 = (clamp ((tmpvar_4 + \\\\n ((uv_rot_7 - tmpvar_4) * mix (1.0, 4.0, tmpvar_8))\\\\n ), 0.0, 1.0) + (texsize.zw * vec2(0.0, 0.15)));\\\\n vec2 tmpvar_11;\\\\n tmpvar_11 = mix (uv_orig, uv_1, vec2(0.2, 0.2));\\\\n uv_1 = tmpvar_11;\\\\n vec2 tmpvar_12;\\\\n tmpvar_12 = (vec2(1280.0, 1024.0) * texsize.zw);\\\\n float tmpvar_13;\\\\n tmpvar_13 = (((\\\\n (texture (sampler_blur2, (tmpvar_11 + vec2(0.005, 0.0))).xyz * scale2)\\\\n + bias2) - (\\\\n (texture (sampler_blur2, (tmpvar_11 - vec2(0.005, 0.0))).xyz * scale2)\\\\n + bias2)).x * tmpvar_12.x);\\\\n float tmpvar_14;\\\\n tmpvar_14 = (((\\\\n (texture (sampler_blur2, (tmpvar_11 + vec2(0.0, 0.005))).xyz * scale2)\\\\n + bias2) - (\\\\n (texture (sampler_blur2, (tmpvar_11 - vec2(0.0, 0.005))).xyz * scale2)\\\\n + bias2)).x * tmpvar_12.y);\\\\n vec2 tmpvar_15;\\\\n tmpvar_15.x = tmpvar_13;\\\\n tmpvar_15.y = tmpvar_14;\\\\n vec2 tmpvar_16;\\\\n tmpvar_16.x = (((\\\\n (texture (sampler_blur2, (tmpvar_11 + vec2(0.005, 0.0))).xyz * scale2)\\\\n + bias2) - (\\\\n (texture (sampler_blur2, (tmpvar_11 - vec2(0.005, 0.0))).xyz * scale2)\\\\n + bias2)).x * tmpvar_12.x);\\\\n tmpvar_16.y = (((\\\\n (texture (sampler_blur2, (tmpvar_11 + vec2(0.0, 0.005))).xyz * scale2)\\\\n + bias2) - (\\\\n (texture (sampler_blur2, (tmpvar_11 - vec2(0.0, 0.005))).xyz * scale2)\\\\n + bias2)).x * tmpvar_12.y);\\\\n ret_3.x = texture (sampler_fw_main, ((tmpvar_11 - (tmpvar_15 * 0.006)) + (tmpvar_16 * 0.003))).x;\\\\n ret_3.x = (ret_3.x + ((ret_3.x - \\\\n ((texture (sampler_blur3, tmpvar_11).xyz * scale3) + bias3)\\\\n .x) * 0.1));\\\\n ret_3.x = (ret_3.x + 0.004);\\\\n vec2 tmpvar_17;\\\\n tmpvar_17.x = tmpvar_14;\\\\n tmpvar_17.y = -(tmpvar_13);\\\\n my_uv_2 = (uv_orig + ((tmpvar_17 * 0.05) * (1.2 - \\\\n ((texture (sampler_blur3, uv_orig).xyz * scale3) + bias3)\\\\n .y)));\\\\n ret_3.z = texture (sampler_fw_main, my_uv_2).z;\\\\n vec2 x_18;\\\\n x_18 = (my_uv_2 - uv_orig);\\\\n ret_3.z = (ret_3.z + ((\\\\n ((ret_3.z - ((texture (sampler_blur1, uv_orig).xyz * scale1) + bias1).z) * sqrt(dot (x_18, x_18)))\\\\n * 180.0) / sqrt(\\\\n dot (tmpvar_12, tmpvar_12)\\\\n )));\\\\n ret_3.z = (ret_3.z * 0.85);\\\\n ret_3.z = (ret_3.z + 0.008);\\\\n vec2 tmpvar_19;\\\\n tmpvar_19.x = -(tmpvar_14);\\\\n tmpvar_19.y = tmpvar_13;\\\\n my_uv_2 = (tmpvar_19 * 0.045);\\\\n vec2 tmpvar_20;\\\\n tmpvar_20.x = (((\\\\n (texture (sampler_blur2, (tmpvar_11 + vec2(0.01, 0.0))).xyz * scale2)\\\\n + bias2) - (\\\\n (texture (sampler_blur2, (tmpvar_11 - vec2(0.01, 0.0))).xyz * scale2)\\\\n + bias2)).y * tmpvar_12.x);\\\\n tmpvar_20.y = (((\\\\n (texture (sampler_blur2, (tmpvar_11 + vec2(0.0, 0.01))).xyz * scale2)\\\\n + bias2) - (\\\\n (texture (sampler_blur2, (tmpvar_11 - vec2(0.0, 0.01))).xyz * scale2)\\\\n + bias2)).y * tmpvar_12.y);\\\\n my_uv_2 = (my_uv_2 + (tmpvar_11 - (tmpvar_20 * 0.03)));\\\\n ret_3.y = texture (sampler_fw_main, my_uv_2).y;\\\\n ret_3.y = (ret_3.y + ((\\\\n (ret_3.y - ((texture (sampler_blur3, my_uv_2).xyz * scale3) + bias3).y)\\\\n * 0.1) + 0.03));\\\\n vec4 tmpvar_21;\\\\n tmpvar_21.w = 1.0;\\\\n tmpvar_21.xyz = ret_3;\\\\n ret = tmpvar_21.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n vec2 dz_1;\\\\n vec3 dy_2;\\\\n vec3 dx_3;\\\\n vec2 d_4;\\\\n vec3 ret_5;\\\\n vec2 tmpvar_6;\\\\n vec2 tmpvar_7;\\\\n tmpvar_7 = (vec2(1.0, 0.0) * texsize.zw);\\\\n tmpvar_6.x = (texture (sampler_main, (uv + tmpvar_7)).xyz - texture (sampler_main, (uv - tmpvar_7)).xyz).y;\\\\n vec2 tmpvar_8;\\\\n tmpvar_8 = (vec2(0.0, 1.0) * texsize.zw);\\\\n tmpvar_6.y = (texture (sampler_main, (uv + tmpvar_8)).xyz - texture (sampler_main, (uv - tmpvar_8)).xyz).y;\\\\n d_4 = (texsize.zw * 2.0);\\\\n dx_3 = (((texture (sampler_blur1, \\\\n (uv + (vec2(1.0, 0.0) * d_4))\\\\n ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n (uv - (vec2(1.0, 0.0) * d_4))\\\\n ).xyz * scale1) + bias1));\\\\n dy_2 = (((texture (sampler_blur1, \\\\n (uv + (vec2(0.0, 1.0) * d_4))\\\\n ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n (uv - (vec2(0.0, 1.0) * d_4))\\\\n ).xyz * scale1) + bias1));\\\\n vec2 tmpvar_9;\\\\n tmpvar_9.x = dx_3.y;\\\\n tmpvar_9.y = dy_2.y;\\\\n dz_1 = ((tmpvar_6 * 3.0) + tmpvar_9);\\\\n ret_5 = (vec3(((\\\\n pow ((sqrt(dot (dz_1, dz_1)) * 0.8), 0.7)\\\\n + \\\\n (((texture (sampler_blur2, uv).xyz * scale2) + bias2).y * 0.4)\\\\n ) - 0.1)) * vec3(0.3, 0.5, 0.7));\\\\n vec2 tmpvar_10;\\\\n tmpvar_10.x = dx_3.x;\\\\n tmpvar_10.y = dy_2.x;\\\\n vec3 tmpvar_11;\\\\n tmpvar_11 = mix (mix (ret_5, vec3(0.2, 0.1, 0.0), vec3((texture (sampler_main, \\\\n (uv + ((tmpvar_10 * texsize.zw) * 18.0))\\\\n ).x * 6.0))), vec3(1.0, 1.0, 1.0), texture (sampler_main, uv).zzz);\\\\n ret_5 = tmpvar_11;\\\\n vec4 tmpvar_12;\\\\n tmpvar_12.w = 1.0;\\\\n tmpvar_12.xyz = tmpvar_11;\\\\n ret = tmpvar_12.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Flexi - predator-prey-spirals.json\":\n/*!**************************************************************!*\\\n !*** ./presets/converted/Flexi - predator-prey-spirals.json ***!\n \\**************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":1,\\\"gammaadj\\\":1.28,\\\"decay\\\":0.8,\\\"echo_zoom\\\":1,\\\"echo_orient\\\":3,\\\"wave_mode\\\":7,\\\"additivewave\\\":1,\\\"modwavealphabyvolume\\\":1,\\\"wave_brighten\\\":0,\\\"wrap\\\":0,\\\"brighten\\\":1,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":1.286,\\\"wave_smoothing\\\":0.63,\\\"modwavealphastart\\\":0.71,\\\"modwavealphaend\\\":1.3,\\\"warpanimspeed\\\":0.01,\\\"warpscale\\\":100,\\\"zoomexp\\\":0.92178,\\\"zoom\\\":0.9901,\\\"warp\\\":0.01,\\\"wave_r\\\":0.65,\\\"wave_g\\\":0.65,\\\"wave_b\\\":0.65,\\\"ob_size\\\":0.005,\\\"ob_g\\\":1,\\\"ob_a\\\":1,\\\"ib_size\\\":0,\\\"ib_r\\\":0,\\\"ib_g\\\":0,\\\"ib_b\\\":0,\\\"ib_a\\\":1,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":0,\\\"mv_a\\\":0,\\\"b1ed\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"sides\\\":39,\\\"additive\\\":1,\\\"num_inst\\\":126,\\\"rad\\\":0.06989,\\\"tex_ang\\\":0.62832,\\\"r2\\\":1,\\\"g2\\\":0,\\\"a2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"ma=ma+(above(bass,1)*3.1415*.01*bass);\\\\nma=ma-(above(treb,1)*3.1415*.01*treb);\\\\n\\\\nmx=mx+(.0002*cos(ma));\\\\nmy=my+(.0002*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.8));\\\"},{\\\"baseVals\\\":{\\\"sides\\\":41,\\\"additive\\\":1,\\\"num_inst\\\":239,\\\"rad\\\":0.06989,\\\"tex_ang\\\":0.62832,\\\"r\\\":0,\\\"g\\\":1,\\\"a2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"ma=ma+(above(bass,1)*3.1415*.05*bass);\\\\nma=ma-(above(mid,1)*3.1415*.05*mid);\\\\n\\\\nmx=mx+(.0001*cos(ma));\\\\nmy=my+(.0001*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.1));\\\"},{\\\"baseVals\\\":{\\\"sides\\\":43,\\\"additive\\\":1,\\\"num_inst\\\":32,\\\"rad\\\":0.06989,\\\"tex_ang\\\":0.62832,\\\"r\\\":0,\\\"b\\\":1,\\\"g2\\\":0,\\\"b2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"ma=ma+(above(mid,1)*3.1415*.01*mid);\\\\nma=ma-(above(treb,1)*3.1415*.01*treb);\\\\n\\\\nmx=mx+(.0004*cos(ma));\\\\nmy=my+(.0004*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.3));\\\"},{\\\"baseVals\\\":{\\\"sides\\\":14,\\\"additive\\\":1,\\\"num_inst\\\":127,\\\"rad\\\":0.0556,\\\"tex_ang\\\":0.62832,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"ma=ma+(above(bass,.5)*3.1415*.02*bass);\\\\nma=ma-(above(treb,.5)*3.1415*.02*treb);\\\\n\\\\nmx=mx+(.0008*cos(ma));\\\\nmy=my+(.0008*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.2));\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"ma=ma+(above(bass,1)*3.1415*.01*bass);\\\\nma=ma-(above(treb,1)*3.1415*.01*treb);\\\\n\\\\nmx=mx+(.0002*cos(ma));\\\\nmy=my+(.0002*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.8));\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"ma=ma+(above(bass,1)*3.1415*.05*bass);\\\\nma=ma-(above(mid,1)*3.1415*.05*mid);\\\\n\\\\nmx=mx+(.0001*cos(ma));\\\\nmy=my+(.0001*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.1));\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"ma=ma+(above(mid,1)*3.1415*.01*mid);\\\\nma=ma-(above(treb,1)*3.1415*.01*treb);\\\\n\\\\nmx=mx+(.0004*cos(ma));\\\\nmy=my+(.0004*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.3));\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"ma=ma+(above(bass,.5)*3.1415*.02*bass);\\\\nma=ma-(above(treb,.5)*3.1415*.02*treb);\\\\n\\\\nmx=mx+(.0008*cos(ma));\\\\nmy=my+(.0008*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.2));\\\"}],\\\"init_eqs_eel\\\":\\\"x1 = 0.9;\\\\ny1 = 0.5;\\\\n\\\\nx2 = 0.5; y2 = 0.5;\\\\nx3 = 0.5; y3 = 0.5;\\\\nx4 = 0.5; y4 = 0.5;\\\",\\\"frame_eqs_eel\\\":\\\"xx1 = xx1*0.9 + (bass)*0.01;\\\\nxx2 = xx2*0.9 + (treb)*0.01;\\\\nyy1 = yy1*0.94 + (treb+bass)*0.0075;\\\\n\\\\nx1 = 0.5 + (xx1-xx2)*2;\\\\ny1 = 0.4 + yy1;\\\\n\\\\nx1 = max(0,min(1,x1)); y1 = max(0,min(1,y1));\\\\n\\\\nspring = 10;\\\\ngrav = .5;\\\\nresist = 1;\\\\nbounce = 0.75;\\\\ndt = 0.0001*(60/fps);\\\\n\\\\nvx2 = vx2*(1-resist*dt) + dt*((x1+x3-2*x2)*spring);\\\\nvy2 = vy2*(1-resist*dt) + dt*((y1+y3-2*y2)*spring-grav);\\\\nvx3 = vx3*(1-resist*dt) + dt*((x2+x4-2*x3)*spring);\\\\nvy3 = vy3*(1-resist*dt) + dt*((y2+y4-2*y3)*spring-grav);\\\\nvx4 = vx4*(1-resist*dt) + dt*((x3-x4)*spring);\\\\nvy4 = vy4*(1-resist*dt) + dt*((y3-y4)*spring-grav);\\\\n\\\\nx2 = x2 + vx2;\\\\ny2 = y2 + vy2;\\\\nx3 = x3 + vx3;\\\\ny3 = y3 + vy3;\\\\nx4 = x4 + vx4;\\\\ny4 = y4 + vy4;\\\\n\\\\nvx2 = if(above(x2,0),vx2,abs(vx2)*bounce);\\\\nvx2 = if(below(x2,1),vx2,-abs(vx2)*bounce);\\\\nvx3 = if(above(x3,0),vx3,abs(vx3)*bounce);\\\\nvx3 = if(below(x3,1),vx3,-abs(vx3)*bounce);\\\\nvx4 = if(above(x4,0),vx4,abs(vx4)*bounce);\\\\nvx4 = if(below(x4,1),vx4,-abs(vx4)*bounce);\\\\nvy2 = if(above(y2,0),vy2,abs(vy2)*bounce);\\\\nvy2 = if(below(y2,1),vy2,-abs(vy2)*bounce);\\\\nvy3 = if(above(y3,0),vy3,abs(vy3)*bounce);\\\\nvy3 = if(below(y3,1),vy3,-abs(vy3)*bounce);\\\\nvy4 = if(above(y4,0),vy4,abs(vy4)*bounce);\\\\nvy4 = if(below(y4,1),vy4,-abs(vy4)*bounce);\\\\nq4 = x4;\\\\nq8 = y4;\\\\n\\\\nq1 = aspectx;\\\\nq2 = aspecty;\\\\nq10 = x1;\\\\nq11 = y1;\\\\nzoom = 1;\\\\nwarp = 0;\\\\nq6 = atan2(vx4,vy4);\\\\nq5 = sqrt(vx4*vx4 + vy4*vy4);\\\\n\\\\na = a*0.95 + q5;\\\\n\\\\ns = s*0.9 + a;\\\\nq3 = s*0.1;\\\\nmonitor = s;\\\\n\\\\nwave_a = 0;\\\",\\\"pixel_eqs_eel\\\":\\\"x = 0.5 + (x-0.5)*q1;\\\\ny = 0.5 + (y-0.5)*q2;\\\\nxx = q4;\\\\nyy = 1-q8;\\\\n\\\\ndx = 0; dy = 0;\\\\n\\\\nd = sqrt((x-xx)*(x-xx)+(y-yy)*(y-yy));\\\\n\\\\nr = 0.1;\\\\nv = 20;\\\\nv2 = q5;\\\\ndx = (v*(sin(y-yy)*(d-r)-(x-xx)*(d-r/2)) + cos(dir)*v2)*(1.00-sigmoid(d-r,120));\\\\ndy = (-v*(sin(x-xx)*(d-r)+(y-yy)*(d-r/2)) -sin(dir)*v2)*(1.00-sigmoid(d-r,120));\\\",\\\"warp\\\":\\\" shader_body { \\\\n vec3 ret_1;\\\\n vec2 tmpvar_2;\\\\n tmpvar_2 = mix (uv_orig, uv, vec2(2.0, 2.0));\\\\n vec2 tmpvar_3;\\\\n tmpvar_3 = (texsize.zw * 2.0);\\\\n vec3 tmpvar_4;\\\\n tmpvar_4 = (((texture (sampler_blur1, \\\\n (tmpvar_2 + (vec2(1.0, 0.0) * tmpvar_3))\\\\n ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n (tmpvar_2 - (vec2(1.0, 0.0) * tmpvar_3))\\\\n ).xyz * scale1) + bias1));\\\\n vec3 tmpvar_5;\\\\n tmpvar_5 = (((texture (sampler_blur1, \\\\n (tmpvar_2 + (vec2(0.0, 1.0) * tmpvar_3))\\\\n ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n (tmpvar_2 - (vec2(0.0, 1.0) * tmpvar_3))\\\\n ).xyz * scale1) + bias1));\\\\n vec2 tmpvar_6;\\\\n tmpvar_6.x = tmpvar_4.x;\\\\n tmpvar_6.y = tmpvar_5.x;\\\\n vec2 tmpvar_7;\\\\n tmpvar_7 = (tmpvar_2 + ((tmpvar_6 * texsize.zw) * 8.0));\\\\n vec2 tmpvar_8;\\\\n tmpvar_8.x = tmpvar_4.y;\\\\n tmpvar_8.y = tmpvar_5.y;\\\\n vec2 tmpvar_9;\\\\n tmpvar_9 = (tmpvar_2 + ((tmpvar_8 * texsize.zw) * 8.0));\\\\n vec2 tmpvar_10;\\\\n tmpvar_10.x = tmpvar_4.z;\\\\n tmpvar_10.y = tmpvar_5.z;\\\\n vec2 tmpvar_11;\\\\n tmpvar_11 = (tmpvar_2 + ((tmpvar_10 * texsize.zw) * 8.0));\\\\n ret_1.x = (texture (sampler_main, tmpvar_7).x - ((texture (sampler_main, tmpvar_7).xyz - \\\\n ((texture (sampler_blur3, tmpvar_7).xyz * scale3) + bias3)\\\\n ).x * 0.02));\\\\n ret_1.y = (texture (sampler_main, tmpvar_9).y - ((texture (sampler_main, tmpvar_9).xyz - \\\\n ((texture (sampler_blur3, tmpvar_9).xyz * scale3) + bias3)\\\\n ).y * 0.02));\\\\n ret_1.z = (texture (sampler_main, tmpvar_11).z - ((texture (sampler_main, tmpvar_11).xyz - \\\\n ((texture (sampler_blur3, tmpvar_11).xyz * scale3) + bias3)\\\\n ).z * 0.02));\\\\n ret_1 = (ret_1 + ((texture (sampler_noise_lq, \\\\n (((uv_orig * texsize.xy) * (texsize_noise_lq.zw * 1.2)) + rand_frame.xy)\\\\n ).xyz - 0.5) * 0.04));\\\\n ret_1 = (ret_1 - ((ret_1.yzx * 0.1) - 0.02));\\\\n vec4 tmpvar_12;\\\\n tmpvar_12.w = 1.0;\\\\n tmpvar_12.xyz = ret_1;\\\\n ret = tmpvar_12.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n vec2 tmpvar_1;\\\\n tmpvar_1 = (texsize.zw * 8.0);\\\\n vec3 tmpvar_2;\\\\n tmpvar_2 = (((texture (sampler_blur1, \\\\n (uv + (vec2(1.0, 0.0) * tmpvar_1))\\\\n ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n (uv - (vec2(1.0, 0.0) * tmpvar_1))\\\\n ).xyz * scale1) + bias1));\\\\n vec3 tmpvar_3;\\\\n tmpvar_3 = (((texture (sampler_blur1, \\\\n (uv + (vec2(0.0, 1.0) * tmpvar_1))\\\\n ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n (uv - (vec2(0.0, 1.0) * tmpvar_1))\\\\n ).xyz * scale1) + bias1));\\\\n vec2 tmpvar_4;\\\\n tmpvar_4.x = q4;\\\\n tmpvar_4.y = (1.0 - q8);\\\\n vec2 tmpvar_5;\\\\n tmpvar_5.x = tmpvar_2.y;\\\\n tmpvar_5.y = tmpvar_3.y;\\\\n vec2 x_6;\\\\n x_6 = ((uv - (tmpvar_5 * 2.0)) - tmpvar_4);\\\\n vec2 tmpvar_7;\\\\n tmpvar_7.x = tmpvar_2.x;\\\\n tmpvar_7.y = tmpvar_3.x;\\\\n vec2 x_8;\\\\n x_8 = ((uv - (tmpvar_7 * 2.0)) - tmpvar_4);\\\\n vec2 tmpvar_9;\\\\n tmpvar_9.x = tmpvar_2.z;\\\\n tmpvar_9.y = tmpvar_3.z;\\\\n vec2 x_10;\\\\n x_10 = ((uv - (tmpvar_9 * 2.0)) - tmpvar_4);\\\\n vec3 tmpvar_11;\\\\n tmpvar_11.x = (1.1 - pow (sqrt(\\\\n dot (x_8, x_8)\\\\n ), 0.2));\\\\n tmpvar_11.y = (1.1 - pow (sqrt(\\\\n dot (x_6, x_6)\\\\n ), 0.2));\\\\n tmpvar_11.z = (1.1 - pow (sqrt(\\\\n dot (x_10, x_10)\\\\n ), 0.2));\\\\n vec4 tmpvar_12;\\\\n tmpvar_12.w = 1.0;\\\\n tmpvar_12.xyz = ((tmpvar_11 * texture (sampler_main, uv).xyz) * 2.4);\\\\n ret = tmpvar_12.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Flexi - smashing fractals [acid etching mix].json\":\n/*!*****************************************************************************!*\\\n !*** ./presets/converted/Flexi - smashing fractals [acid etching mix].json ***!\n \\*****************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":0,\\\"gammaadj\\\":1,\\\"decay\\\":1,\\\"echo_zoom\\\":1,\\\"echo_orient\\\":2,\\\"wave_mode\\\":1,\\\"wave_thick\\\":1,\\\"wave_brighten\\\":0,\\\"wrap\\\":0,\\\"wave_a\\\":0.004,\\\"wave_scale\\\":0.01,\\\"wave_smoothing\\\":0,\\\"wave_mystery\\\":-0.44,\\\"modwavealphastart\\\":1,\\\"modwavealphaend\\\":1,\\\"warpanimspeed\\\":1.311,\\\"warpscale\\\":8.311,\\\"zoomexp\\\":5.20652,\\\"warp\\\":0.13291,\\\"wave_y\\\":0.04,\\\"ob_size\\\":0.005,\\\"ob_a\\\":1,\\\"ib_size\\\":0,\\\"ib_r\\\":0,\\\"ib_g\\\":0,\\\"ib_b\\\":0,\\\"ib_a\\\":1,\\\"mv_x\\\":0,\\\"mv_y\\\":0,\\\"mv_l\\\":1,\\\"mv_g\\\":0.91,\\\"mv_b\\\":0.71,\\\"mv_a\\\":0,\\\"b1ed\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":100,\\\"additive\\\":1,\\\"thickoutline\\\":1,\\\"y\\\":0.75,\\\"rad\\\":0.07493,\\\"tex_zoom\\\":0.73458,\\\"g\\\":1,\\\"g2\\\":0,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"vx = 0\\\",\\\"frame_eqs_eel\\\":\\\"x = q4;\\\\ny = q8;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":100,\\\"additive\\\":1,\\\"thickoutline\\\":1,\\\"textured\\\":1,\\\"x\\\":0.7,\\\"y\\\":0.3,\\\"rad\\\":0.6623,\\\"ang\\\":2.45044,\\\"tex_zoom\\\":0.74934,\\\"g\\\":0.1,\\\"b\\\":0.1,\\\"r2\\\":1,\\\"g2\\\":0.1,\\\"b2\\\":0.1,\\\"a2\\\":1,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"xx = 0.5;\\\\nyy = 0.4;\\\",\\\"frame_eqs_eel\\\":\\\"d = sqrt( sqr(xx-q4)+sqr(yy-q8));\\\\n\\\\nxx = if(below(d,0.15),0.4+rand(200)/1000,xx);\\\\nyy = if(below(d,0.15),0.3+rand(400)/1000,yy);\\\\naang = if(below(d,0.12),rand(1000)/1000,aang);\\\\nang =aang*4*asin(1);\\\\nx = xx;\\\\ny = yy;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":100,\\\"additive\\\":1,\\\"thickoutline\\\":1,\\\"textured\\\":1,\\\"x\\\":0.43,\\\"y\\\":0.6,\\\"rad\\\":1.16781,\\\"ang\\\":5.96903,\\\"tex_zoom\\\":0.67165,\\\"r2\\\":1,\\\"g2\\\":0,\\\"a2\\\":1,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"xx = 0.5;\\\\nyy = 0.4;\\\",\\\"frame_eqs_eel\\\":\\\"d = sqrt( sqr(xx-q4)+sqr(yy-q8));\\\\n\\\\nxx = if(below(d,0.15),0.4+rand(200)/1000,xx);\\\\nyy = if(below(d,0.15),0.3+rand(400)/1000,yy);\\\\naang = if(below(d,0.12),rand(1000)/1000,aang);\\\\nang =aang*4*asin(1);\\\\nx = xx;\\\\ny = yy;\\\"},{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"additive\\\":1,\\\"thickoutline\\\":1,\\\"y\\\":0.75,\\\"rad\\\":0.07059,\\\"tex_zoom\\\":0.73458,\\\"g\\\":0.5,\\\"b\\\":0.5,\\\"g2\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"vx = 0\\\",\\\"frame_eqs_eel\\\":\\\"x = q1;\\\\ny = q5;\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"usedots\\\":1,\\\"scaling\\\":2.44415,\\\"smoothing\\\":0,\\\"a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t2 = 0;\\\\nt3 = 0;\\\\nt4 = 0;\\\\ncl = 0;\\\",\\\"frame_eqs_eel\\\":\\\"t1 = 0;\\\\nv = 0.01;\\\\nj = j + (bass)*0.01;\\\\nj2 = j2 + (mid_att)*0.01;\\\\nj3 = j3 + (treb_att)*0.01;\\\\nt2 = j;\\\\nt3 = j2;\\\\nt4 = j3;\\\\n//t5 = 0;\\\\nk = k*0.99 + 10*mid/fps;\\\\nt5 = -k;\\\\n\\\\ncl1 = cl1 + 0.002;\\\\ncl1 = if(above(cl1,1),0,cl1);\\\\ncl1 = if(below(cl1,0),1,cl1);\\\\nt8 = cl1;\\\\n\\\\ncl2 = cl2 -1*q1;\\\\ncl2 = if(above(cl2,1),0,cl2);\\\\ncl2 = if(below(cl2,0),1,cl2);\\\\nt7 = cl2;\\\\n\\\\ncl3 = cl3 +0.001;\\\\ncl3 = if(above(cl3,1),0,cl3);\\\\ncl3 = if(below(cl3,0),1,cl3);\\\\nt6 = cl3;\\\",\\\"point_eqs_eel\\\":\\\"xx = ((sample*0983624912364)%10000000+100)/10000000;\\\\nyy = ((xx*1896575575)%10000000+100)/10000000;\\\\nzz = ((yy*58652340875)%10000000+100)/10000000;\\\\n\\\\n\\\\nd = sqrt(sqr(xx)+sqr(yy)+sqr(zz));\\\\n\\\\nzz = zz + t8 - if(above(zz+t8,1),1,0) - 0.5;\\\\nxx = xx + t7 - if(above(xx+t7,1),1,0) - 0.5;\\\\nyy = yy + t6 - if(above(yy+t6,1),1,0) - 0.5;\\\\n\\\\nv = 0.001;\\\\n\\\\nw = 1;// (sample*sin(time*0.3)*0.01-1);\\\\nbb = d*d*0.5;\\\\nn= 0.3;\\\\ns1 = sin(sin(t2*w+bb)*n);\\\\ns2 = sin(sin(t3*w+bb)*n);\\\\ns3 = sin(sin(t4*w+bb)*n);\\\\nc1 = cos(sin(t2*w+bb)*n);\\\\nc2 = cos(sin(t3*w+bb)*n);\\\\nc3 = cos(sin(t4*w+bb)*n);\\\\n\\\\nz = (c3*s1*c2 + s3*s2)*xx - (c3*s1*s2-s3*c2)*yy + c3*c1*zz;\\\\nx1 = (c1*c2*xx + c1*s2*yy - s1*zz);\\\\ny1 = ((s3*s1*c2 - c3*s2)*xx + (s3*s1*s2+c3*c2)*yy + s3*c1*zz);\\\\n\\\\nzoom = .5*(1/(z+0.5));\\\\nx = 0.5 + zoom*x1 + sin(time*0.1)*0;;\\\\ny = 0.5 + zoom*y1 + cos(time*0.16801)*0;\\\\n\\\\npi3 = 3.1415*2*0.3333;\\\\nt = z*2+t2*1;\\\\nc=3;\\\\n//r = sin(t)*c;\\\\n\\\\n//g = sin(t+pi3)*c;\\\\n\\\\n//b = sin(t-pi3)*c;\\\\n\\\\n\\\\nr = if(above(r,1),1,r);\\\\nr = if(below(r,0),0,r);\\\\ng = if(above(g,1),1,g);\\\\ng = if(below(g,0),0,g);\\\\nb = if(above(b,1),1,b);\\\\nb = if(below(b,0),0,b);\\\\n\\\\na = 0.4;\\\"},{\\\"baseVals\\\":{\\\"scaling\\\":7.7518,\\\"smoothing\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t2 = 0;\\\\nt3 = 0;\\\\nt4 = 0;\\\\ncl = 0;\\\",\\\"frame_eqs_eel\\\":\\\"t8 = 1;\\\\n\\\\nt1 = 0.5;\\\\nt2 = 0.9;\\\",\\\"point_eqs_eel\\\":\\\"d = d*0.85 + (value1)*1;\\\\n\\\\nx = 0.5 + d*sample*(1-sample);\\\\ny = 0.9 - sample*0.8;\\\"},{\\\"baseVals\\\":{\\\"usedots\\\":1,\\\"thick\\\":1,\\\"scaling\\\":5.92556,\\\"smoothing\\\":0,\\\"g\\\":0,\\\"b\\\":0,\\\"a\\\":0.66,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"t1 = q1;\\\\nt2 = q2;\\\\nt3 = q3;\\\\nt4 = q4;\\\\nt5 = q5;\\\\nt6 = q6;\\\\nt7 = q7;\\\\nt8 = q8;\\\",\\\"point_eqs_eel\\\":\\\"sample = 1-sample;\\\\nxxx = xx;\\\\nyyy = yy;\\\\nxx = pow(sample,5)*t1 + 5*pow(sample,4)*(1-sample)*t1 + 10*pow(sample,3)*sqr(1-sample)*t2\\\\n+ 10*sqr(sample)*pow(1-sample,3)*t3 + 5*pow(1-sample,4)*sample*t4 + pow(1-sample,5)*t4;\\\\n\\\\nyy = pow(sample,5)*t5 + 5*pow(sample,4)*(1-sample)*t5 + 10*pow(sample,3)*sqr(1-sample)*t6\\\\n+ 10*sqr(sample)*pow(1-sample,3)*t7 + 5*pow(1-sample,4)*sample*t8 + pow(1-sample,5)*t8;\\\\n\\\\nd = 1/sqrt(sqr(xx-xxx)+sqr(yy-yyy));\\\\ndd = dd*0.95 + (value1);\\\\nddd = dd*sample*(1-sample)*d;\\\\n\\\\nx = xx + (yy-yyy)*ddd;\\\\ny = yy - (xx-xxx)*ddd;\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"scaling\\\":5.92556,\\\"smoothing\\\":0,\\\"r\\\":0.65,\\\"g\\\":0.45,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t2 = 0\\\",\\\"frame_eqs_eel\\\":\\\"t1 = q1;\\\\nt2 = q2;\\\\nt3 = q3;\\\\nt4 = q4;\\\\nt5 = q5;\\\\nt6 = q6;\\\\nt7 = q7;\\\\nt8 = q8;\\\",\\\"point_eqs_eel\\\":\\\"sample = 1-sample;\\\\nxxx = xx;\\\\nyyy = yy;\\\\nxx = pow(sample,5)*t1 + 5*pow(sample,4)*(1-sample)*t1 + 10*pow(sample,3)*sqr(1-sample)*t2\\\\n+ 10*sqr(sample)*pow(1-sample,3)*t3 + 5*pow(1-sample,4)*sample*t4 + pow(1-sample,5)*t4;\\\\n\\\\nyy = pow(sample,5)*t5 + 5*pow(sample,4)*(1-sample)*t5 + 10*pow(sample,3)*sqr(1-sample)*t6\\\\n+ 10*sqr(sample)*pow(1-sample,3)*t7 + 5*pow(1-sample,4)*sample*t8 + pow(1-sample,5)*t8;\\\\n\\\\nd = 1/sqrt(sqr(xx-xxx)+sqr(yy-yyy));\\\\ndd = dd*0.95 + (value1);\\\\nddd = dd*sample*(1-sample)*d;\\\\nddd = sample*(1-sample)*sin(sample*200)*d*0.05;\\\\nx = xx + (yy-yyy)*ddd;\\\\ny = yy - (xx-xxx)*ddd;\\\"}],\\\"init_eqs_eel\\\":\\\"x1 = 0;\\\\ny1 = 0;\\\",\\\"frame_eqs_eel\\\":\\\"decay = 0.25;\\\\nxx1 = xx1*0.9 + (bass)*0.01;\\\\nxx2 = xx2*0.9 + (treb)*0.01;\\\\nyy1 = yy1*0.94 + (treb+bass)*0.0075;\\\\n\\\\nx1 = 0.5 + (xx1-xx2)*2;\\\\ny1 = 0.4 + yy1;\\\\n\\\\nx1 = max(0,min(1,x1));\\\\ny1 = max(0,min(1,y1));\\\\n//x2 = 0;y2 = 0;x3 = 0;y3 = 0;x4 = 0;y4 = 0;\\\\n\\\\nspring = 50;\\\\ngrav = 2;\\\\nresist = 5;\\\\nbounce = 0.75;\\\\ndt = 0.00015*60/fps;\\\\n\\\\nspx2 = (x1+x3-2*x2)*spring;\\\\nspy2 = (y1+y3-2*y2)*spring;\\\\nspx3 = (x2+x4-2*x3)*spring;\\\\nspy3 = (y2+y4-2*y3)*spring;\\\\nspx4 = (x3-x4)*spring;\\\\nspy4 = (y3-y4)*spring;\\\\n\\\\nvx2 = vx2*(1-resist*dt) + dt*(spx2);\\\\nvy2 = vy2*(1-resist*dt) + dt*(spy2-grav);\\\\nvx3 = vx3*(1-resist*dt) + dt*(spx3);\\\\nvy3 = vy3*(1-resist*dt) + dt*(spy3-grav);\\\\nvx4 = vx4*(1-resist*dt) + dt*(spx4);\\\\nvy4 = vy4*(1-resist*dt) + dt*(spy4-grav);\\\\n\\\\nx2 = x2 + vx2;\\\\ny2 = y2 + vy2;\\\\nx3 = x3 + vx3;\\\\ny3 = y3 + vy3;\\\\nx4 = x4 + vx4;\\\\ny4 = y4 + vy4;\\\\n\\\\nvx2 = if(above(x2,0.1),vx2,abs(vx2)*bounce);\\\\nvx2 = if(below(x2,0.9),vx2,-abs(vx2)*bounce);\\\\nvx3 = if(above(x3,0.1),vx3,abs(vx3)*bounce);\\\\nvx3 = if(below(x3,0.9),vx3,-abs(vx3)*bounce);\\\\nvx4 = if(above(x4,0.1),vx4,abs(vx4)*bounce);\\\\nvx4 = if(below(x4,0.9),vx4,-abs(vx4)*bounce);\\\\n\\\\nvy2 = if(above(y2,0),vy2,abs(vy2)*bounce);\\\\nvy2 = if(below(y2,1),vy2,-abs(vy2)*bounce);\\\\nvy3 = if(above(y3,0),vy3,abs(vy3)*bounce);\\\\nvy3 = if(below(y3,1),vy3,-abs(vy3)*bounce);\\\\nvy4 = if(above(y4,0),vy4,abs(vy4)*bounce);\\\\nvy4 = if(below(y4,1),vy4,-abs(vy4)*bounce);\\\\n\\\\n\\\\nq1 = x1;\\\\nq2 = x2;\\\\nq3 = x3;\\\\nq4 = x4;\\\\n\\\\nq5 = y1;\\\\nq6 = y2;\\\\nq7 = y3;\\\\nq8 = y4;\\\\n\\\\nmonitor = ry4;\\\\n\\\\nzoom = 1.0004;\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\" shader_body { \\\\n vec2 my_uv_1;\\\\n vec3 ret_2;\\\\n float tmpvar_3;\\\\n tmpvar_3 = (((texture (sampler_blur2, \\\\n (uv + vec2(0.005, 0.0))\\\\n ).xyz * scale2) + bias2) - ((texture (sampler_blur2, \\\\n (uv - vec2(0.005, 0.0))\\\\n ).xyz * scale2) + bias2)).y;\\\\n float tmpvar_4;\\\\n tmpvar_4 = (((texture (sampler_blur2, \\\\n (uv + vec2(0.0, 0.005))\\\\n ).xyz * scale2) + bias2) - ((texture (sampler_blur2, \\\\n (uv - vec2(0.0, 0.005))\\\\n ).xyz * scale2) + bias2)).y;\\\\n vec2 tmpvar_5;\\\\n tmpvar_5.x = tmpvar_3;\\\\n tmpvar_5.y = tmpvar_4;\\\\n vec2 tmpvar_6;\\\\n tmpvar_6 = (uv - (tmpvar_5 * 0.01));\\\\n ret_2.y = texture (sampler_fc_main, (tmpvar_6 - floor(tmpvar_6))).y;\\\\n ret_2.y = (ret_2.y + ((ret_2.y - \\\\n ((texture (sampler_blur3, (tmpvar_6 - floor(tmpvar_6))).xyz * scale3) + bias3)\\\\n .y) * 0.1));\\\\n vec2 tmpvar_7;\\\\n tmpvar_7 = floor(uv);\\\\n ret_2.y = (ret_2.y + (0.006 - (\\\\n ((texture (sampler_blur3, (uv - tmpvar_7)).xyz * scale3) + bias3)\\\\n .x * 5.0)));\\\\n ret_2.y = ret_2.y;\\\\n vec2 tmpvar_8;\\\\n tmpvar_8.x = -(tmpvar_4);\\\\n tmpvar_8.y = tmpvar_3;\\\\n my_uv_1 = (tmpvar_8 * 0.05);\\\\n vec2 tmpvar_9;\\\\n tmpvar_9.x = (((texture (sampler_blur2, \\\\n (uv + vec2(0.01, 0.0))\\\\n ).xyz * scale2) + bias2) - ((texture (sampler_blur2, \\\\n (uv - vec2(0.01, 0.0))\\\\n ).xyz * scale2) + bias2)).z;\\\\n tmpvar_9.y = (((texture (sampler_blur2, \\\\n (uv + vec2(0.0, 0.01))\\\\n ).xyz * scale2) + bias2) - ((texture (sampler_blur2, \\\\n (uv - vec2(0.0, 0.01))\\\\n ).xyz * scale2) + bias2)).z;\\\\n my_uv_1 = (my_uv_1 + (uv - (tmpvar_9 * 0.005)));\\\\n ret_2.z = texture (sampler_fw_main, (my_uv_1 - floor(my_uv_1))).z;\\\\n ret_2.z = (ret_2.z + ((ret_2.z - \\\\n ((texture (sampler_blur3, (my_uv_1 - floor(my_uv_1))).xyz * scale3) + bias3)\\\\n .z) * 0.13));\\\\n ret_2.z = (ret_2.z * 0.95);\\\\n ret_2.z = (ret_2.z + ((0.03 - \\\\n ((texture (sampler_blur3, (uv - tmpvar_7)).xyz * scale3) + bias3)\\\\n .x) - (texture (sampler_main, \\\\n (my_uv_1 - floor(my_uv_1))\\\\n ).y * 0.05)));\\\\n ret_2.x = (texture (sampler_main, uv_orig).x - 0.3);\\\\n vec4 tmpvar_10;\\\\n tmpvar_10.w = 1.0;\\\\n tmpvar_10.xyz = ret_2;\\\\n ret = tmpvar_10.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n vec3 ret_1;\\\\n vec2 tmpvar_2;\\\\n tmpvar_2 = (texsize.zw * 8.0);\\\\n vec3 tmpvar_3;\\\\n tmpvar_3 = (((texture (sampler_blur1, \\\\n (uv + (vec2(1.0, 0.0) * tmpvar_2))\\\\n ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n (uv - (vec2(1.0, 0.0) * tmpvar_2))\\\\n ).xyz * scale1) + bias1));\\\\n vec3 tmpvar_4;\\\\n tmpvar_4 = (((texture (sampler_blur1, \\\\n (uv + (vec2(0.0, 1.0) * tmpvar_2))\\\\n ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n (uv - (vec2(0.0, 1.0) * tmpvar_2))\\\\n ).xyz * scale1) + bias1));\\\\n vec2 tmpvar_5;\\\\n tmpvar_5.x = tmpvar_3.y;\\\\n tmpvar_5.y = tmpvar_4.y;\\\\n vec2 tmpvar_6;\\\\n tmpvar_6 = (uv + (tmpvar_5 * 0.1));\\\\n vec4 tmpvar_7;\\\\n tmpvar_7 = texture (sampler_main, uv);\\\\n ret_1 = (((\\\\n ((texture (sampler_blur2, tmpvar_6).xyz * scale2) + bias2)\\\\n .x * \\\\n clamp ((1.0 - tmpvar_7.z), 0.0, 1.0)\\\\n ) * pow (hue_shader.yxz, vec3(8.0, 8.0, 8.0))) * 3.0);\\\\n ret_1 = (mix (ret_1, (\\\\n pow (hue_shader.yzx, vec3(8.0, 8.0, 8.0))\\\\n * 1.4), vec3((\\\\n (texture (sampler_main, tmpvar_6).x * 0.8)\\\\n + \\\\n ((texture (sampler_blur1, tmpvar_6).xyz * scale1) + bias1)\\\\n .x))) * clamp ((1.0 - \\\\n (((texture (sampler_blur1, uv).xyz * scale1) + bias1).y * 4.0)\\\\n ), 0.0, 1.0));\\\\n vec2 tmpvar_8;\\\\n tmpvar_8.x = tmpvar_3.y;\\\\n tmpvar_8.y = tmpvar_4.y;\\\\n vec3 tmpvar_9;\\\\n vec3 tmpvar_10;\\\\n tmpvar_10 = pow (hue_shader, vec3(8.0, 8.0, 8.0));\\\\n tmpvar_9 = mix (mix (ret_1, vec3(1.0, 1.0, 1.0), (\\\\n (tmpvar_10 * texture (sampler_main, clamp ((uv - (tmpvar_8 * 0.04)), 0.0, 1.0)).z)\\\\n * 1.2)), (tmpvar_10.zxy * 1.8), tmpvar_7.yyy);\\\\n ret_1 = tmpvar_9;\\\\n vec4 tmpvar_11;\\\\n tmpvar_11.w = 1.0;\\\\n tmpvar_11.xyz = tmpvar_9;\\\\n ret = tmpvar_11.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Flexi - truly soft piece of software - this is generic texturing (Jelly) .json\":\n/*!**********************************************************************************************************!*\\\n !*** ./presets/converted/Flexi - truly soft piece of software - this is generic texturing (Jelly) .json ***!\n \\**********************************************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":4,\\\"gammaadj\\\":1,\\\"decay\\\":1,\\\"echo_zoom\\\":1,\\\"echo_alpha\\\":0.5,\\\"wave_thick\\\":1,\\\"wave_brighten\\\":0,\\\"wave_a\\\":0.004,\\\"wave_scale\\\":0.01,\\\"wave_smoothing\\\":0,\\\"wave_mystery\\\":-0.44,\\\"modwavealphastart\\\":1,\\\"modwavealphaend\\\":1,\\\"warpanimspeed\\\":0.01,\\\"warpscale\\\":100,\\\"zoomexp\\\":0.24298,\\\"zoom\\\":0.9901,\\\"warp\\\":0.01,\\\"wave_y\\\":0.04,\\\"ob_size\\\":0,\\\"ob_g\\\":1,\\\"ib_size\\\":0,\\\"ib_r\\\":0,\\\"ib_g\\\":0,\\\"ib_b\\\":0,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":0,\\\"mv_b\\\":0,\\\"mv_a\\\":0,\\\"b1ed\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":100,\\\"thickoutline\\\":1,\\\"rad\\\":0.01,\\\"tex_ang\\\":0.12566,\\\"tex_zoom\\\":1.51878,\\\"r\\\":0.05,\\\"a\\\":0.1,\\\"g2\\\":0,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"thickoutline\\\":1,\\\"textured\\\":1,\\\"rad\\\":0.80013,\\\"ang\\\":4.64954,\\\"tex_zoom\\\":1.24471,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":0.77,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"thickoutline\\\":1,\\\"x\\\":1,\\\"rad\\\":3.0054,\\\"tex_ang\\\":0.12566,\\\"tex_zoom\\\":1.51878,\\\"r\\\":0,\\\"g\\\":1,\\\"g2\\\":0,\\\"a2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"thickoutline\\\":1,\\\"x\\\":1,\\\"rad\\\":0.39872,\\\"tex_ang\\\":0.12566,\\\"tex_zoom\\\":1.51878,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"usedots\\\":1,\\\"scaling\\\":2.44415,\\\"smoothing\\\":0,\\\"a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t2 = 0;\\\\nt3 = 0;\\\\nt4 = 0;\\\\ncl = 0;\\\",\\\"frame_eqs_eel\\\":\\\"t1 = 0;\\\\nv = 0.01;\\\\nj = j + (bass)*0.01;\\\\nj2 = j2 + (mid_att)*0.01;\\\\nj3 = j3 + (treb_att)*0.01;\\\\nt2 = j;\\\\nt3 = j2;\\\\nt4 = j3;\\\\n//t5 = 0;\\\\nk = k*0.99 + 10*mid/fps;\\\\nt5 = -k;\\\\n\\\\ncl1 = cl1 + 0.002;\\\\ncl1 = if(above(cl1,1),0,cl1);\\\\ncl1 = if(below(cl1,0),1,cl1);\\\\nt8 = cl1;\\\\n\\\\ncl2 = cl2 -1*q1;\\\\ncl2 = if(above(cl2,1),0,cl2);\\\\ncl2 = if(below(cl2,0),1,cl2);\\\\nt7 = cl2;\\\\n\\\\ncl3 = cl3 +0.001;\\\\ncl3 = if(above(cl3,1),0,cl3);\\\\ncl3 = if(below(cl3,0),1,cl3);\\\\nt6 = cl3;\\\",\\\"point_eqs_eel\\\":\\\"xx = ((sample*0983624912364)%10000000+100)/10000000;\\\\nyy = ((xx*1896575575)%10000000+100)/10000000;\\\\nzz = ((yy*58652340875)%10000000+100)/10000000;\\\\n\\\\n\\\\nd = sqrt(sqr(xx)+sqr(yy)+sqr(zz));\\\\n\\\\nzz = zz + t8 - if(above(zz+t8,1),1,0) - 0.5;\\\\nxx = xx + t7 - if(above(xx+t7,1),1,0) - 0.5;\\\\nyy = yy + t6 - if(above(yy+t6,1),1,0) - 0.5;\\\\n\\\\nv = 0.001;\\\\n\\\\nw = 1;// (sample*sin(time*0.3)*0.01-1);\\\\nbb = d*d*0.5;\\\\nn= 0.3;\\\\ns1 = sin(sin(t2*w+bb)*n);\\\\ns2 = sin(sin(t3*w+bb)*n);\\\\ns3 = sin(sin(t4*w+bb)*n);\\\\nc1 = cos(sin(t2*w+bb)*n);\\\\nc2 = cos(sin(t3*w+bb)*n);\\\\nc3 = cos(sin(t4*w+bb)*n);\\\\n\\\\nz = (c3*s1*c2 + s3*s2)*xx - (c3*s1*s2-s3*c2)*yy + c3*c1*zz;\\\\nx1 = (c1*c2*xx + c1*s2*yy - s1*zz);\\\\ny1 = ((s3*s1*c2 - c3*s2)*xx + (s3*s1*s2+c3*c2)*yy + s3*c1*zz);\\\\n\\\\nzoom = .5*(1/(z+0.5));\\\\nx = 0.5 + zoom*x1 + sin(time*0.1)*0.;;\\\\ny = 0.5 + zoom*y1 + cos(time*0.16801)*0.;\\\\n\\\\npi3 = 3.1415*2*0.3333;\\\\nt = z*2+t2*1;\\\\nc=3;\\\\n//r = sin(t)*c;\\\\n\\\\n//g = sin(t+pi3)*c;\\\\n\\\\n//b = sin(t-pi3)*c;\\\\n\\\\n\\\\nr = if(above(r,1),1,r);\\\\nr = if(below(r,0),0,r);\\\\ng = if(above(g,1),1,g);\\\\ng = if(below(g,0),0,g);\\\\nb = if(above(b,1),1,b);\\\\nb = if(below(b,0),0,b);\\\\n\\\\na = 0.4;\\\"},{\\\"baseVals\\\":{\\\"scaling\\\":2.44415,\\\"smoothing\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t2 = 0;\\\\nt3 = 0;\\\\nt4 = 0;\\\\ncl = 0;\\\",\\\"frame_eqs_eel\\\":\\\"t8 = 1;\\\",\\\"point_eqs_eel\\\":\\\"t8 = -t8;\\\\ny = sample;\\\\nx = 0.5 + t8*0.005;\\\\n\\\\npi3 = 3.1415*2*0.3333;\\\\nt = time + sample*2;\\\\nc=2;\\\\n\\\\nr = sin(t)*c;\\\\ng = sin(t+pi3)*c;\\\\n\\\\nb = sin(t-pi3)*c;\\\\n\\\\n\\\\nr = if(above(r,1),1,r);\\\\nr = if(below(r,0),0,r);\\\\ng = if(above(g,1),1,g);\\\\ng = if(below(g,0),0,g);\\\\nb = if(above(b,1),1,b);\\\\nb = if(below(b,0),0,b);\\\\n\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"additive\\\":1,\\\"scaling\\\":100,\\\"smoothing\\\":0.6,\\\"r\\\":0,\\\"g\\\":0.4,\\\"a\\\":0.3,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"t1 = q1;\\\\nt2 = q2;\\\\nt3 = q3;\\\\nt4 = q4;\\\\nt5 = q5;\\\\nt6 = q6;\\\\nt7 = q7;\\\\nt8 = q8;\\\",\\\"point_eqs_eel\\\":\\\"sample = 1-sample;\\\\nxxx = xx;\\\\nyyy = yy;\\\\nxx = pow(sample,5)*t1 + 5*pow(sample,4)*(1-sample)*t1 + 10*pow(sample,3)*sqr(1-sample)*t2\\\\n+ 10*sqr(sample)*pow(1-sample,3)*t3 + 5*pow(1-sample,4)*sample*t4 + pow(1-sample,5)*t4;\\\\n\\\\nyy = pow(sample,5)*t5 + 5*pow(sample,4)*(1-sample)*t5 + 10*pow(sample,3)*sqr(1-sample)*t6\\\\n+ 10*sqr(sample)*pow(1-sample,3)*t7 + 5*pow(1-sample,4)*sample*t8 + pow(1-sample,5)*t8;\\\\nd = 1/sqrt(sqr(xx-xxx)+sqr(yy-yyy));\\\\nx = xx + sample*(1-sample)*(value1-value2)*(yy-yyy)*d;\\\\ny = yy - sample*(1-sample)*(value1-value2)*(xx-xxx)*d;\\\"},{\\\"baseVals\\\":{\\\"usedots\\\":1,\\\"scaling\\\":2.44415,\\\"smoothing\\\":0,\\\"r\\\":0,\\\"g\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t2 = 0;\\\\nt3 = 0;\\\\nt4 = 0;\\\\ncl = 0;\\\",\\\"frame_eqs_eel\\\":\\\"t8 = 1;\\\",\\\"point_eqs_eel\\\":\\\"t8 = -t8;\\\\ny = (1+t8)*0.01;\\\\nx = sample;\\\"}],\\\"init_eqs_eel\\\":\\\"x1 = 0.9;\\\\ny1 = 0.5;\\\\n\\\\nx2 = 0.5; y2 = 0.5;\\\\nx3 = 0.5; y3 = 0.5;\\\\nx4 = 0.5; y4 = 0.5;\\\",\\\"frame_eqs_eel\\\":\\\"zoom =1;// 0.999;\\\\nwarp = 0;\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\" shader_body { \\\\n vec2 my_uv_1;\\\\n vec3 ret_2;\\\\n vec2 tmpvar_3;\\\\n tmpvar_3 = (0.02 * aspect.zw);\\\\n vec3 tmpvar_4;\\\\n tmpvar_4 = (((texture (sampler_blur2, \\\\n ((uv + (vec2(1.0, 0.0) * tmpvar_3)) - floor((uv + (vec2(1.0, 0.0) * tmpvar_3))))\\\\n ).xyz * scale2) + bias2) - ((texture (sampler_blur2, \\\\n ((uv - (vec2(1.0, 0.0) * tmpvar_3)) - floor((uv - (vec2(1.0, 0.0) * tmpvar_3))))\\\\n ).xyz * scale2) + bias2));\\\\n vec3 tmpvar_5;\\\\n tmpvar_5 = (((texture (sampler_blur2, \\\\n ((uv + (vec2(0.0, 1.0) * tmpvar_3)) - floor((uv + (vec2(0.0, 1.0) * tmpvar_3))))\\\\n ).xyz * scale2) + bias2) - ((texture (sampler_blur2, \\\\n ((uv - (vec2(0.0, 1.0) * tmpvar_3)) - floor((uv - (vec2(0.0, 1.0) * tmpvar_3))))\\\\n ).xyz * scale2) + bias2));\\\\n vec3 tmpvar_6;\\\\n tmpvar_6 = ((texture (sampler_blur1, uv).xyz * scale1) + bias1);\\\\n vec2 tmpvar_7;\\\\n tmpvar_7.x = tmpvar_4.y;\\\\n tmpvar_7.y = tmpvar_5.y;\\\\n vec2 tmpvar_8;\\\\n tmpvar_8.x = tmpvar_5.x;\\\\n tmpvar_8.y = -(tmpvar_4.x);\\\\n vec2 tmpvar_9;\\\\n tmpvar_9 = ((uv - (tmpvar_7 * vec2(0.01, 0.01))) - (tmpvar_8 * -0.02));\\\\n ret_2.y = texture (sampler_fc_main, (tmpvar_9 - floor(tmpvar_9))).y;\\\\n ret_2.y = (ret_2.y + ((\\\\n (ret_2.y - tmpvar_6.y)\\\\n * 0.02) + 0.005));\\\\n vec2 tmpvar_10;\\\\n tmpvar_10.x = tmpvar_4.x;\\\\n tmpvar_10.y = tmpvar_5.x;\\\\n vec2 tmpvar_11;\\\\n tmpvar_11.x = tmpvar_5.z;\\\\n tmpvar_11.y = -(tmpvar_4.z);\\\\n my_uv_1 = ((uv - (tmpvar_10 * vec2(0.01, 0.01))) - (tmpvar_11 * -0.02));\\\\n ret_2.x = texture (sampler_fc_main, (my_uv_1 - floor(my_uv_1))).x;\\\\n ret_2.x = (ret_2.x + ((\\\\n (ret_2.x - tmpvar_6.x)\\\\n * 0.02) + 0.005));\\\\n vec2 tmpvar_12;\\\\n tmpvar_12.x = tmpvar_4.z;\\\\n tmpvar_12.y = tmpvar_5.z;\\\\n vec2 tmpvar_13;\\\\n tmpvar_13.x = tmpvar_5.y;\\\\n tmpvar_13.y = -(tmpvar_4.y);\\\\n my_uv_1 = ((uv - (tmpvar_12 * vec2(0.01, 0.01))) - (tmpvar_13 * -0.02));\\\\n ret_2.z = texture (sampler_fc_main, (my_uv_1 - floor(my_uv_1))).z;\\\\n ret_2.z = (ret_2.z + ((\\\\n (ret_2.z - tmpvar_6.z)\\\\n * 0.02) + 0.005));\\\\n vec4 tmpvar_14;\\\\n tmpvar_14.w = 1.0;\\\\n tmpvar_14.xyz = ret_2;\\\\n ret = tmpvar_14.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n vec2 uv2_1;\\\\n vec3 ret_2;\\\\n uv2_1 = (uv + (vec2(1.0, 0.0) * texsize.zw));\\\\n float tmpvar_3;\\\\n tmpvar_3 = (((texture (sampler_main, uv2_1).xyz + \\\\n (((texture (sampler_blur1, uv2_1).xyz * scale1) + bias1) * 0.4)\\\\n ) + (\\\\n ((texture (sampler_blur2, uv2_1).xyz * scale2) + bias2)\\\\n * 0.15)) + ((\\\\n (texture (sampler_blur3, uv2_1).xyz * scale3)\\\\n + bias3) * 0.1)).x;\\\\n uv2_1 = (uv + (vec2(-1.0, 0.0) * texsize.zw));\\\\n float tmpvar_4;\\\\n tmpvar_4 = (((texture (sampler_main, uv2_1).xyz + \\\\n (((texture (sampler_blur1, uv2_1).xyz * scale1) + bias1) * 0.4)\\\\n ) + (\\\\n ((texture (sampler_blur2, uv2_1).xyz * scale2) + bias2)\\\\n * 0.15)) + ((\\\\n (texture (sampler_blur3, uv2_1).xyz * scale3)\\\\n + bias3) * 0.1)).x;\\\\n uv2_1 = (uv + (vec2(0.0, 1.0) * texsize.zw));\\\\n float tmpvar_5;\\\\n tmpvar_5 = (((texture (sampler_main, uv2_1).xyz + \\\\n (((texture (sampler_blur1, uv2_1).xyz * scale1) + bias1) * 0.4)\\\\n ) + (\\\\n ((texture (sampler_blur2, uv2_1).xyz * scale2) + bias2)\\\\n * 0.15)) + ((\\\\n (texture (sampler_blur3, uv2_1).xyz * scale3)\\\\n + bias3) * 0.1)).x;\\\\n uv2_1 = (uv + (vec2(0.0, -1.0) * texsize.zw));\\\\n vec3 tmpvar_6;\\\\n tmpvar_6.z = 0.14;\\\\n tmpvar_6.x = (tmpvar_3 - tmpvar_4);\\\\n tmpvar_6.y = (tmpvar_5 - ((\\\\n (texture (sampler_main, uv2_1).xyz + (((texture (sampler_blur1, uv2_1).xyz * scale1) + bias1) * 0.4))\\\\n + \\\\n (((texture (sampler_blur2, uv2_1).xyz * scale2) + bias2) * 0.15)\\\\n ) + (\\\\n ((texture (sampler_blur3, uv2_1).xyz * scale3) + bias3)\\\\n * 0.1)).x);\\\\n ret_2 = (0.5 + (0.5 * normalize(tmpvar_6)));\\\\n vec2 x_7;\\\\n x_7 = (ret_2.xy - 0.5);\\\\n ret_2 = (ret_2 * clamp ((\\\\n sqrt(dot (x_7, x_7))\\\\n * 5.0), 0.0, 1.0));\\\\n ret_2 = ret_2.xxy;\\\\n ret_2 = (ret_2 + 1.15);\\\\n ret_2 = (ret_2 * mix (ret_2, (ret_2 * \\\\n (((texture (sampler_blur3, uv).xyz * scale3) + bias3) - ((texture (sampler_blur1, uv).xyz * scale1) + bias1))\\\\n ), pow (hue_shader.zxy, ret_2)));\\\\n ret_2 = (ret_2 * ret_2);\\\\n vec4 tmpvar_8;\\\\n tmpvar_8.w = 1.0;\\\\n tmpvar_8.xyz = ret_2;\\\\n ret = tmpvar_8.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Flexi, fishbrain, Geiss + Martin - tokamak witchery.json\":\n/*!************************************************************************************!*\\\n !*** ./presets/converted/Flexi, fishbrain, Geiss + Martin - tokamak witchery.json ***!\n \\************************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":5,\\\"gammaadj\\\":1.56,\\\"decay\\\":1,\\\"echo_zoom\\\":0.362,\\\"echo_orient\\\":1,\\\"wave_mode\\\":7,\\\"additivewave\\\":1,\\\"modwavealphabyvolume\\\":1,\\\"wave_brighten\\\":0,\\\"darken\\\":1,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":1.286,\\\"wave_smoothing\\\":0.63,\\\"modwavealphastart\\\":0.71,\\\"modwavealphaend\\\":1.3,\\\"warpscale\\\":1.331,\\\"fshader\\\":1,\\\"zoom\\\":1.004,\\\"warp\\\":0.19788,\\\"sx\\\":0.99967,\\\"sy\\\":0.9999,\\\"wave_g\\\":0.65,\\\"wave_b\\\":0.65,\\\"ob_size\\\":0,\\\"ob_a\\\":1,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":0,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"sides\\\":5,\\\"additive\\\":1,\\\"num_inst\\\":2,\\\"x\\\":0.49,\\\"rad\\\":0.11589,\\\"tex_zoom\\\":4.36077,\\\"g2\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x = rand(1000)/1000;\\\\ny = rand(1000)/1000;\\\\nang = rand(150)/100;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"thick\\\":1,\\\"r\\\":0,\\\"g\\\":0.3,\\\"b\\\":0.75},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"ma=ma+(above(bass,1)*3.1415*.01*bass);\\\\nma=ma-(above(treb,1)*3.1415*.01*treb);\\\\n\\\\nmx=mx+(.0002*cos(ma));\\\\nmy=my+(.0002*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.8));\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"thick\\\":1,\\\"r\\\":0,\\\"b\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"ma=ma+(above(bass,1)*3.1415*.05*bass);\\\\nma=ma-(above(mid,1)*3.1415*.05*mid);\\\\n\\\\nmx=mx+(.0001*cos(ma));\\\\nmy=my+(.0001*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.1));\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"thick\\\":1,\\\"g\\\":0.5,\\\"b\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"ma=ma+(above(mid,1)*3.1415*.01*mid);\\\\nma=ma-(above(treb,1)*3.1415*.01*treb);\\\\n\\\\nmx=mx+(.0004*cos(ma));\\\\nmy=my+(.0004*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.3));\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"thick\\\":1,\\\"r\\\":0.4,\\\"g\\\":0,\\\"b\\\":0.6},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"ma=ma+(above(bass,.5)*3.1415*.02*bass);\\\\nma=ma-(above(treb,.5)*3.1415*.02*treb);\\\\n\\\\nmx=mx+(.0008*cos(ma));\\\\nmy=my+(.0008*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.2));\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"wave_r = wave_r + 0.2*( 0.60*sin(0.980*time) + 0.40*sin(1.047*time) );\\\\nwave_g = wave_g + 0.2*( 0.60*sin(0.835*time) + 0.40*sin(1.081*time) );\\\\nwave_b = wave_b + 0.2*( 0.60*sin(0.814*time) + 0.40*sin(1.011*time) );\\\\nq1 = (cx*2-1) + 0.6*( 0.60*sin(0.374*time) + 0.40*sin(0.294*time) );\\\\nq2 = (cy*2-1) + 0.6*( 0.60*sin(0.393*time) + 0.40*sin(0.223*time) );\\\\nwarp = 0;\\\\nzoom = 1;\\\\nbb = bb*0.99 + bass*0.02;\\\\nmm = mm*0.99 + mid*0.02;\\\\ntt = tt*0.99 + treb*0.02;\\\\n\\\\nmx = max(max(bb,mm),tt);\\\\nmn = min(min(bb,mm),tt);\\\\n\\\\nob_r = (bb-mn)/(mx-mn);\\\\nob_b = (mm-mn)/(mx-mn);\\\\nob_g = (tt-mn)/(mx-mn);\\\",\\\"pixel_eqs_eel\\\":\\\"du = (x*2-1) - q1;\\\\ndv = (y*2-1) - q2;\\\\ndist = sqrt(du*du+dv*dv);\\\\nang2 = atan2(du,dv) + time*0.15;\\\\nmult = 0.05*sin(dist*0.05);\\\\ndx = mult*sin(ang2*2-1.5);\\\\ndy = mult*cos(ang2*2-1.5);\\\",\\\"warp\\\":\\\" shader_body { \\\\n vec4 tmpvar_1;\\\\n tmpvar_1.w = 1.0;\\\\n vec4 tmpvar_2;\\\\n tmpvar_2 = texture (sampler_main, uv);\\\\n tmpvar_1.xyz = ((texture (sampler_main, clamp (\\\\n (uv - (((vec2(0.0, 64.0) * texsize.zw) * dot (\\\\n (tmpvar_2.xyz - 0.35)\\\\n , vec3(0.32, 0.49, 0.29))) * (dot (tmpvar_2.xyz, vec3(0.32, 0.49, 0.29)) - 0.4)))\\\\n , 0.0, 1.0)).xyz - 0.0011) + ((texture (sampler_noise_lq, \\\\n (((uv_orig * texsize.xy) * (texsize_noise_lq.zw * 1.5)) + rand_frame.xy)\\\\n ) - 0.5) * 0.0038).xyz);\\\\n ret = tmpvar_1.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n vec2 uv1_1;\\\\n vec2 tmpvar_2;\\\\n tmpvar_2.y = 0.0;\\\\n tmpvar_2.x = texsize.z;\\\\n vec2 tmpvar_3;\\\\n tmpvar_3.x = 0.0;\\\\n tmpvar_3.y = texsize.w;\\\\n vec2 tmpvar_4;\\\\n tmpvar_4.x = (texture (sampler_main, (uv - tmpvar_2)).xyz - texture (sampler_main, (uv + tmpvar_2)).xyz).x;\\\\n tmpvar_4.y = (texture (sampler_main, (uv - tmpvar_3)).xyz - texture (sampler_main, (uv + tmpvar_3)).xyz).x;\\\\n uv1_1 = ((0.3 * cos(\\\\n ((uv - 0.5) * 2.0)\\\\n )) - tmpvar_4);\\\\n float tmpvar_5;\\\\n tmpvar_5 = clamp ((0.04 / sqrt(\\\\n dot (uv1_1, uv1_1)\\\\n )), 0.0, 1.0);\\\\n uv1_1 = ((0.3 * cos(\\\\n (uv1_1 * 12.0)\\\\n )) - (9.0 * tmpvar_4));\\\\n vec4 tmpvar_6;\\\\n tmpvar_6.w = 1.0;\\\\n tmpvar_6.xyz = (tmpvar_5 + ((texture (sampler_main, uv).xyz * 12.0) * vec3(clamp (\\\\n (0.04 / sqrt(dot (uv1_1, uv1_1)))\\\\n , 0.0, 1.0))));\\\\n ret = tmpvar_6.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Flexi, martin + geiss - dedicated to the sherwin maxawow.json\":\n/*!*****************************************************************************************!*\\\n !*** ./presets/converted/Flexi, martin + geiss - dedicated to the sherwin maxawow.json ***!\n \\*****************************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":3,\\\"gammaadj\\\":1.56,\\\"decay\\\":1,\\\"echo_zoom\\\":0.362,\\\"echo_orient\\\":1,\\\"wave_thick\\\":1,\\\"wave_brighten\\\":0,\\\"darken\\\":1,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":1.599,\\\"wave_smoothing\\\":0,\\\"wave_mystery\\\":-0.5,\\\"modwavealphastart\\\":2,\\\"modwavealphaend\\\":2,\\\"warpscale\\\":0.107,\\\"zoomexp\\\":0.1584,\\\"fshader\\\":1,\\\"warp\\\":0.01,\\\"wave_r\\\":0.51,\\\"wave_g\\\":0.5,\\\"ob_size\\\":0,\\\"ob_a\\\":1,\\\"ib_r\\\":0,\\\"ib_g\\\":0,\\\"ib_b\\\":0,\\\"ib_a\\\":1,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":0.5,\\\"mv_r\\\":0,\\\"mv_g\\\":0,\\\"mv_b\\\":0,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"thickoutline\\\":1,\\\"rad\\\":0.50126,\\\"tex_zoom\\\":0.99996,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"g2\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x = 0.5+sin(time*0.618)*0.2;\\\\ny = 0.5+cos(time*1.618)*0.2;\\\\nrad = bass*0.05;\\\\nborder_r = 1-(sin(time*1.25)*0.3+0.7);\\\\nborder_g = 1-(sin(time)*0.3+0.3);\\\\nborder_b = 1-(sin(time/3)*0.5+0.5);\\\"},{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"thickoutline\\\":1,\\\"rad\\\":0.50126,\\\"g\\\":1,\\\"b\\\":1,\\\"g2\\\":0,\\\"b2\\\":1,\\\"border_g\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x = 0.5+sin(time*2.618)*0.3;\\\\ny = 0.5+cos(time*3.14)*0.3;\\\\nrad = bass*0.05;\\\\nborder_r = 1-(sin(time*1.25)*0.3+0.7);\\\\nborder_g = 1-(sin(time)*0.3+0.3);\\\\nborder_b = 1-(sin(time/3)*0.5+0.5);\\\\n\\\"},{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"thickoutline\\\":1,\\\"rad\\\":0.50126,\\\"tex_zoom\\\":0.9998,\\\"g\\\":1,\\\"b\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x = 0.5+sin(-time*2.618)*0.4;\\\\ny = 0.5+cos(-time*1.14)*0.4;\\\\nrad = bass*0.05;\\\\nborder_r = 1-(sin(time*1.25)*0.3+0.7);\\\\nborder_g = 1-(sin(time)*0.3+0.3);\\\\nborder_b = 1-(sin(time/3)*0.5+0.5);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"scaling\\\":0.16188,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"additive\\\":1,\\\"scaling\\\":25.12601,\\\"smoothing\\\":1,\\\"a\\\":0.1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"//zoom = 0.99;\\\\nib_r = sin(time*1.25*4)*0.3+0.7;\\\\nib_g = sin(time*4)*0.3+0.3;\\\\nib_b = sin(time/3*4)*0.5+0.5;\\\\nwave_r = 1- ib_r;\\\\nwave_g = 1- ib_g;\\\\nwave_b = 1- ib_b;\\\\n//wave_mystery = -1+bass/2;\\\\nwave_x = 0.5+sin(time*3)*0.3;\\\\nwave_y = 0.5+cos(time*2.187)*0.3;\\\",\\\"pixel_eqs_eel\\\":\\\"r = bass/4;\\\\ncx1 = 0.5+sin(time*0.618)*0.2;\\\\ncy1 = 0.5+cos(time*1.618)*0.2;\\\\nd = sqrt((x-cx1)*(x-cx1)+(y-cy1)*(y-cy1));\\\\ndir = (bass)*(r*r-d*d)*0.3;\\\\nx1 = if( above(d,r),0, sin(y-cy1)*dir);\\\\ny1 = if( above(d,r),0, -sin(x-cx1)*dir);\\\\n\\\\n\\\\ncx1 = 0.5+sin(time*2.618)*0.3;\\\\ncy1 = 0.5+cos(time*3.14)*0.3;\\\\nd = sqrt((x-cx1)*(x-cx1)+(y-cy1)*(y-cy1));\\\\ndir = -(mid)*(r*r-d*d)*0.3;\\\\nx2 = if( above(d,r),0, sin(y-cy1)*dir);\\\\ny2 = if( above(d,r),0, -sin(x-cx1)*dir);\\\\n\\\\ncx1 = 0.5+sin(-time*2.618)*0.4;\\\\ncy1 = 0.5+cos(-time*1.14)*0.4;\\\\nd = sqrt((x-cx1)*(x-cx1)+(y-cy1)*(y-cy1));\\\\ndir = -(treb)*(r*r-d*d)*0.3;\\\\nx3 = if( above(d,r),0, sin(y-cy1)*dir);\\\\ny3 = if( above(d,r),0, -sin(x-cx1)*dir);\\\\n\\\\n\\\\ndx = x1+x2+x3;\\\\ndy = y1+y2+y3;\\\",\\\"warp\\\":\\\" shader_body { \\\\n vec2 uv_1;\\\\n vec2 tmpvar_2;\\\\n tmpvar_2 = (((uv_orig * texsize.xy) * (texsize_noise_lq.zw * 2.0)) + rand_frame.xy);\\\\n uv_1 = (uv + ((texture (sampler_noise_lq, tmpvar_2).xy - 0.5) * texsize.zw));\\\\n vec2 tmpvar_3;\\\\n tmpvar_3.x = bass;\\\\n tmpvar_3.y = treb;\\\\n vec4 tmpvar_4;\\\\n tmpvar_4.w = 1.0;\\\\n tmpvar_4.xyz = (texture (sampler_main, (uv_1 + (\\\\n (texture (sampler_main, (mix (uv_1, uv_orig, vec2(-1.0, -1.0)) + texsize.zw)).xy - 0.4)\\\\n * \\\\n (-0.004 + (0.04 * clamp ((tmpvar_3 - 1.0), 0.0, 1.0)))\\\\n ))).xyz - (0.0008 + (\\\\n (texture (sampler_noise_lq, tmpvar_2) - 0.5)\\\\n * 0.02)).xyz);\\\\n ret = tmpvar_4.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n vec2 uv1_1;\\\\n vec2 tmpvar_2;\\\\n tmpvar_2.y = 0.0;\\\\n tmpvar_2.x = texsize.z;\\\\n vec2 tmpvar_3;\\\\n tmpvar_3.x = 0.0;\\\\n tmpvar_3.y = texsize.w;\\\\n vec2 tmpvar_4;\\\\n tmpvar_4.x = (texture (sampler_main, (uv - tmpvar_2)).xyz - texture (sampler_main, (uv + tmpvar_2)).xyz).x;\\\\n tmpvar_4.y = (texture (sampler_main, (uv - tmpvar_3)).xyz - texture (sampler_main, (uv + tmpvar_3)).xyz).x;\\\\n uv1_1 = ((0.3 * cos(\\\\n ((uv - 0.5) * 2.0)\\\\n )) - tmpvar_4);\\\\n float tmpvar_5;\\\\n tmpvar_5 = clamp ((0.04 / sqrt(\\\\n dot (uv1_1, uv1_1)\\\\n )), 0.0, 1.0);\\\\n uv1_1 = ((0.3 * cos(\\\\n (uv1_1 * 12.0)\\\\n )) - (9.0 * tmpvar_4));\\\\n vec4 tmpvar_6;\\\\n tmpvar_6.w = 1.0;\\\\n tmpvar_6.xyz = (tmpvar_5 + ((texture (sampler_main, uv).xyz * 12.0) * vec3(clamp (\\\\n (0.04 / sqrt(dot (uv1_1, uv1_1)))\\\\n , 0.0, 1.0))));\\\\n ret = tmpvar_6.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Fumbling_Foo + En D & Martin - Mandelverse.json\":\n/*!***************************************************************************!*\\\n !*** ./presets/converted/Fumbling_Foo + En D & Martin - Mandelverse.json ***!\n \\***************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":1,\\\"gammaadj\\\":1.98,\\\"decay\\\":0.5,\\\"echo_zoom\\\":1,\\\"echo_alpha\\\":0.5,\\\"echo_orient\\\":3,\\\"wave_mode\\\":7,\\\"additivewave\\\":1,\\\"modwavealphabyvolume\\\":1,\\\"wave_brighten\\\":0,\\\"wrap\\\":0,\\\"darken\\\":1,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":1.286,\\\"wave_smoothing\\\":0.63,\\\"modwavealphastart\\\":0.71,\\\"modwavealphaend\\\":1.3,\\\"warpanimspeed\\\":1.459,\\\"warpscale\\\":2.007,\\\"zoom\\\":0.9999,\\\"warp\\\":0.01,\\\"sx\\\":0.9999,\\\"wave_r\\\":0.65,\\\"wave_g\\\":0.65,\\\"wave_b\\\":0.65,\\\"ob_size\\\":0,\\\"ob_g\\\":0.1,\\\"ob_b\\\":1,\\\"ob_a\\\":1,\\\"ib_size\\\":0,\\\"ib_r\\\":0,\\\"ib_g\\\":0,\\\"ib_b\\\":0,\\\"mv_a\\\":0,\\\"b1ed\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":54,\\\"textured\\\":1,\\\"rad\\\":0.49138,\\\"ang\\\":1.5708,\\\"tex_ang\\\":3.14159,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":54,\\\"rad\\\":0.08195,\\\"r\\\":0,\\\"g\\\":1,\\\"g2\\\":0,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x=q3;\\\\ny=1-q4;\\\\n\\\\nr = abs(q20);\\\\ng = abs(q21);\\\\nb = abs(q22);\\\\n\\\\nrad = .1*mid;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":54,\\\"rad\\\":0.08195,\\\"r\\\":0,\\\"g2\\\":0,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x=q5;\\\\ny=1-q6;\\\\n\\\\nrad = .2*bass;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":54,\\\"rad\\\":0.08195,\\\"r\\\":0,\\\"b\\\":1,\\\"g2\\\":0,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x=q1;\\\\ny=1-q2;\\\\n\\\\nr = (q23);\\\\ng = (q24);\\\\nb = (q25);\\\\na = q19;\\\\n\\\\nrad = bass*.1;\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"sep\\\":51,\\\"spectrum\\\":1,\\\"usedots\\\":1,\\\"thick\\\":1,\\\"scaling\\\":1.32735,\\\"smoothing\\\":0.82,\\\"b\\\":3,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"x = rand(1001)*.001;\\\\ny = rand(1001)*.001;\\\\n\\\\ntm = time*.5 + sample*2;\\\\n\\\\nr = .5 + .5*sin(tm*1.132);\\\\ng = .5 + .5*sin(tm*1.121);\\\\nb = .5 + .5*sin(tm*1.187);\\\"},{\\\"baseVals\\\":{\\\"sep\\\":51,\\\"spectrum\\\":1,\\\"usedots\\\":1,\\\"scaling\\\":1.32735,\\\"smoothing\\\":0.82,\\\"b\\\":3,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"x = rand(1001)*.001;\\\\ny = rand(1001)*.001;\\\\n\\\\ntm = time*.5 + sample*2;\\\\n\\\\nr = .5 + .5*sin(tm*1.132);\\\\ng = .5 + .5*sin(tm*1.121);\\\\nb = .5 + .5*sin(tm*1.187);\\\"},{\\\"baseVals\\\":{\\\"sep\\\":51,\\\"usedots\\\":1,\\\"thick\\\":1,\\\"scaling\\\":1.32735,\\\"smoothing\\\":0.82,\\\"b\\\":3,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"x = rand(1001)*.001;\\\\ny = rand(1001)*.001;\\\\n\\\\ntm = time*.5 + sample*2;\\\\n\\\\nr = .5 + .5*sin(tm*1.132);\\\\ng = .5 + .5*sin(tm*1.121);\\\\nb = .5 + .5*sin(tm*1.187);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sep\\\":51,\\\"usedots\\\":1,\\\"additive\\\":1,\\\"scaling\\\":1.32735,\\\"smoothing\\\":0.82,\\\"b\\\":3},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"x = rand(1001)*.001;\\\\ny = rand(1001)*.001;\\\\n\\\\ntm = time*.5 + sample*2;\\\\n\\\\nr = .5 + .5*sin(tm*1.132);\\\\ng = .5 + .5*sin(tm*1.121);\\\\nb = .5 + .5*sin(tm*1.187);\\\"}],\\\"init_eqs_eel\\\":\\\"//******** INITIALIZATION *********\\\\n//---------- some global vars, do not change -------------\\\\navg = 0.01;\\\\nq7 = .25; //MyZoom\\\\nq8 = rand(2.0)-1.0; //fractal modifier\\\\n//q8 = 1; //#\\\\nq16 = 1 + rand(2); //Tele ; rather fish eye\\\\n//q16 = 1; //#\\\\nq18 = rand(0.8)+.1; //brightness balance back/front\\\\nq30 = 1; //logarithmic Z-Dist storage; unused\\\\nq31 =128;\\\\nstart = 1; travel = 0; RotZ = 0; look = 0; slow = 0; t0 = time+3; lampx = .5; lampy = .5;\\\\ncran0 = rand(1);\\\\nn = 0; loop (10000, gmegabuf(n)=0; n=n+1; ); \\\\nn = 0; loop (10000, megabuf(n)=0; n=n+1; ); \\\\ntrelx = 0; trely = 0; trelz = 0;\\\\nreg20 = 1; reg21 = 0; reg22 = 0; reg23 = 0; reg24 = 1; reg25 = 0; reg26 = 0; reg27 = 0; reg28 = 1;\\\\n\\\\n//Find random starting point\\\\nwhile (exec2(\\\\n ran1 = rand(800)/100; ran2 = rand(800)/100; ran3 = rand(800)/100;\\\\n PosX = rand(5)-2; PosY = rand(5)-2; PosZ = rand(5)-2; \\\\n\\\\n// PosX = 3.3; PosY = 2; PosZ = -2; ran1 = 0; ran2 = 0; ran3 = 0; //#\\\\n\\\\n c1 = cos(ran1); c2 = cos(ran2); c3 = cos(ran3); \\\\n s1 = sin(ran1); s2 = sin(ran2); s3 = sin(ran3);\\\\n\\\\n reg20 = c2*c1; reg21 = c2*s1; reg22 = -s2;\\\\n reg23 = s3*s2*c1 - c3*s1; reg24 = s3*s2*s1 + c3*c1; reg25 = s3*c2;\\\\n reg26 = c3*s2*c1 + s3*s1; reg27 = c3*s2*s1 - s3*c1; reg28 = c3*c2;\\\\n\\\\n //***********BOT*************\\\\n //Coord. Trans. must exactly match def in warp S. !!!!\\\\n dist = 0.001;\\\\n while (exec2(\\\\n uvx = reg26*dist/q7; uvy = reg27*dist/q7; uvz = reg28*dist/q7;\\\\n uvx += PosX; uvy += PosY; uvz += PosZ;\\\\n uvx = 8.0*((uvx/8+30.5 - int(uvx/8+30.5))-.5);\\\\n uvy = 8.0*((uvy/8+30.5 - int(uvy/8+30.5))-.5);\\\\n uvz = 8.0*((uvz/8+30.5 - int(uvz/8+30.5))-.5);\\\\n uvx0 = uvx+q8; uvy0 = uvy+q8; uvz0 = uvz+q8;\\\\n loop (7+1,\\\\n uvx = if (uvx > 1, 2-uvx, if(uvx < -1, -2-uvx, uvx));\\\\n uvy = if (uvy > 1, 2-uvy, if(uvy < -1, -2-uvy, uvy));\\\\n uvz = if (uvz > 1, 2-uvz, if(uvz < -1, -2-uvz, uvz));\\\\n slen = uvx*uvx + uvy*uvy + uvz*uvz;\\\\n uvx = if (slen < 0.25, uvx*4, if (slen < 1, uvx/slen, uvx)) *2.6 + uvx0; \\\\n uvy = if (slen < 0.25, uvy*4, if (slen < 1, uvy/slen, uvy)) *2.6 + uvy0; \\\\n uvz = if (slen < 0.25, uvz*4, if (slen < 1, uvz/slen, uvz)) *2.6 + uvz0; \\\\n );\\\\n len = sqrt(uvx*uvx + uvy*uvy + uvz*uvz);\\\\n dist *= 1.05;\\\\n ,(dist < 0.6)*(len > 30)));\\\\n,(dist < .06))); //end while\\\",\\\"frame_eqs_eel\\\":\\\"fps_ = .0 * fps_ + 1*if(fps<=25,fps,25+.5*(fps-25)); \\\\ndec_s = 1-.06*30/fps_;\\\\nbeat = (time > t0+3); t0 = if(beat, time, t0);\\\\n\\\\nspeed = min(0.2,dist_-.02) * (1+2*avg) *(1-slow*.0)*.7/q7; //#\\\\nds = ds * dec_s + (1-dec_s)*speed*.25/fps_; \\\\nRotZ = if (RotZ==0,beat*(rand(100)<20*travel)*(rand(10)/10-.3),\\\\n bnot(beat*(rand(100)<30))*RotZ);\\\\nslow = if (bnot(slow), beat*(rand(1000*avg)<6), bnot(beat*(rand(100)<50)));\\\\nlook = if (bnot(look), beat*(rand(1000*speed)<12), bnot(beat*(rand(100)<50)));\\\\n\\\\n//Lamp View\\\\nlx = if (beat,rand(150)/200+.15,lx);\\\\nly = if (beat,rand(150)/200+.15,ly);\\\\nlampx = lampx * dec_s + (1-dec_s)*if (look,lx,0.5);\\\\nlampy = lampy * dec_s + (1-dec_s)*if (look,ly,0.5);\\\\nq1 = lampx; q2 = lampy;\\\\n\\\\n//Position \\\\nDirX= reg26; DirY= reg27; DirZ = reg28;\\\\nPosX = PosX + ds*DirX ; PosY = PosY + ds*DirY; PosZ = PosZ + ds*DirZ; \\\\nq4 = PosX; q5 = PosY; q6 = PosZ;\\\\n\\\\nangchg = (.2-dist_)*(dist_ < .2)*2;\\\\ntravel = if (angchg > 0,0,travel+ds);\\\\nv1 = v1 * dec_s + (1-dec_s)* RotZ * ds;\\\\nv2 = v2 *dec_s + (1-dec_s)*angchg *xslope/fps_;\\\\nv3 = v3 *dec_s + (1-dec_s)*(angchg *yslope/fps_ + 2*v1*sin(time*.1));\\\\n//v2 = .008;\\\\n//push old RotMat\\\\nreg30 =reg20; reg31 =reg21; reg32 =reg22; \\\\nreg33 =reg23; reg34 =reg24; reg35 =reg25; \\\\nreg36 =reg26; reg37 =reg27; reg38 =reg28; \\\\n\\\\nn = 0; avg = 0;\\\\nloop (5,\\\\n n = n+1;\\\\n //new Rot. Mat for infinitesimal angles\\\\n ran1 = rand(100)/100;\\\\n ran2 = rand(100)/200-.25;\\\\n tx = cos(n*1.57+ran2) * (n <= 4)*ran1; ty = sin(n*1.57+ran2) * (n <= 4)*ran1;\\\\n c1 = cos(v1); c2 = cos(v2+ty); c3 = cos(v3+tx); \\\\n s1 = sin(v1); s2 = sin(v2+ty); s3 = sin(v3+tx);\\\\n reg10 = c2*c1; reg11 = c2*s1; reg12 = -s2;\\\\n reg13 = s3*s2*c1 - c3*s1; reg14 = s3*s2*s1 + c3*c1; reg15 = s3*c2;\\\\n reg16 = c3*s2*c1 + s3*s1; reg17 = c3*s2*s1 - s3*c1; reg18 = c3*c2;\\\\n\\\\n //pop old RotMat\\\\n reg20 =reg30; reg21 =reg31; reg22 =reg32; \\\\n reg23 =reg33; reg24 =reg34; reg25 =reg35; \\\\n reg26 =reg36; reg27 =reg37; reg28 =reg38; \\\\n\\\\n //Multiply new RotMat by old one\\\\n q20 = reg10*reg20 + reg11*reg23 + reg12*reg26;\\\\n q21 = reg10*reg21 + reg11*reg24 + reg12*reg27;\\\\n q22 = reg10*reg22 + reg11*reg25 + reg12*reg28;\\\\n q23 = reg13*reg20 + reg14*reg23 + reg15*reg26;\\\\n q24 = reg13*reg21 + reg14*reg24 + reg15*reg27;\\\\n q25 = reg13*reg22 + reg14*reg25 + reg15*reg28;\\\\n q26 = reg16*reg20 + reg17*reg23 + reg18*reg26;\\\\n q27 = reg16*reg21 + reg17*reg24 + reg18*reg27;\\\\n q28 = reg16*reg22 + reg17*reg25 + reg18*reg28;\\\\n\\\\n reg20 =q20; reg21 =q21; reg22 =q22;\\\\n reg23 =q23; reg24 =q24; reg25 =q25;\\\\n reg26 =q26; reg27 =q27; reg28 =q28;\\\\n\\\\n //***********BOT*************\\\\n //Coord. Trans. must exactly match def in warp S. !!!!\\\\n dist = 0.002;\\\\n while (exec2(\\\\n uvx = reg26*dist/q7; uvy = reg27*dist/q7; uvz = reg28*dist/q7;\\\\n uvx += PosX; uvy += PosY; uvz += PosZ;\\\\n uvx = 8.0*((uvx/8+30.5 - int(uvx/8+30.5))-.5);\\\\n uvy = 8.0*((uvy/8+30.5 - int(uvy/8+30.5))-.5);\\\\n uvz = 8.0*((uvz/8+30.5 - int(uvz/8+30.5))-.5);\\\\n uvx0 = uvx+q8; uvy0 = uvy+q8; uvz0 = uvz+q8;\\\\n loop (7+1,\\\\n uvx = if (uvx > 1, 2-uvx, if(uvx < -1, -2-uvx, uvx));\\\\n uvy = if (uvy > 1, 2-uvy, if(uvy < -1, -2-uvy, uvy));\\\\n uvz = if (uvz > 1, 2-uvz, if(uvz < -1, -2-uvz, uvz));\\\\n slen = uvx*uvx + uvy*uvy + uvz*uvz;\\\\n uvx = if (slen < 0.25, uvx*4, if (slen < 1, uvx/slen, uvx)) *2.6 + uvx0; \\\\n uvy = if (slen < 0.25, uvy*4, if (slen < 1, uvy/slen, uvy)) *2.6 + uvy0; \\\\n uvz = if (slen < 0.25, uvz*4, if (slen < 1, uvz/slen, uvz)) *2.6 + uvz0; \\\\n );\\\\n len = sqrt(uvx*uvx + uvy*uvy + uvz*uvz);\\\\n dist *= 1.1;\\\\n ,(dist < 0.6)*(len > 30)));\\\\n megabuf(n) = megabuf(n)*dec_s + (1-dec_s)*dist; //stores the 4 trial points\\\\n avg = avg+abs(megabuf(n)/5);\\\\n); //end loop 5\\\\n\\\\nn = 0; avg = 0; loop (5, n=n+1; avg = avg+abs(megabuf(n)/5));\\\\n\\\\nxslope = min(max(2/avg*(megabuf(1)-megabuf(3)),-3),3);\\\\nyslope = min(max(2/avg*(megabuf(4)-megabuf(2)),-3),3);\\\\nmonitor = avg;\\\\ndist_ = dist_*dec_s + (1-dec_s)*dist;\\\\n\\\\nq10 = ds*q7; //compensation of lin. movement in GetDist and zoom uv\\\\nq14 = 1*abs(ds) + 2*(abs(v1) + abs(v2) + abs(v3)) + 1.0/255 + start*.05; \\\\n//q15 = sign(4*avg - 1)*pow(abs(4*avg - 1), 1.25); // 500*ds*q7; // + ( sign(v1)*sqrt(abs(v1)) + sign(v2)*sqrt(abs(v2)) + sign(v3)*sqrt(abs(v3)) )\\\\nq15 = 4*avg - 1.4;\\\\nq19 = .6 + .4*sin(time*.02+cran0*6); //brightness backgd\\\\nstart = start * .9;\\\\nq11 = v1; q12 = v2; q13 = v3;\\\\n//forward comp. of Rotation\\\\n\\\\nmonitor = 3.333*q15;\\\",\\\"pixel_eqs_eel\\\":\\\"warp = 0.0; zoom = 1; dx = -q12/q16*(1+0*pow(x-.5,2)); dy = q13/q16*(1+0*pow(y-.5,2)); rot =q11;\\\",\\\"warp\\\":\\\"float sustain;\\\\nfloat xlat_mutabledist;\\\\nfloat xlat_mutablestruc;\\\\nvec2 xlat_mutableuv1;\\\\nvec3 xlat_mutableuv2;\\\\n shader_body { \\\\n mat3 tmpvar_1;\\\\n tmpvar_1[uint(0)].x = q20;\\\\n tmpvar_1[uint(0)].y = q23;\\\\n tmpvar_1[uint(0)].z = q26;\\\\n tmpvar_1[1u].x = q21;\\\\n tmpvar_1[1u].y = q24;\\\\n tmpvar_1[1u].z = q27;\\\\n tmpvar_1[2u].x = q22;\\\\n tmpvar_1[2u].y = q25;\\\\n tmpvar_1[2u].z = q28;\\\\n vec3 tmpvar_2;\\\\n tmpvar_2.x = q4;\\\\n tmpvar_2.y = q5;\\\\n tmpvar_2.z = q6;\\\\n sustain = (0.92 + (q14 * 1.5));\\\\n vec2 uv_3;\\\\n vec3 ret_4;\\\\n uv_3 = (((uv - 0.5) * (1.0 - \\\\n (q10 / (1.0 - ((texture (sampler_blur1, uv).xyz * scale1) + bias1).z))\\\\n )) + 0.5);\\\\n xlat_mutableuv1 = (((uv_orig - 0.5) * aspect.xy) * q16);\\\\n vec4 tmpvar_5;\\\\n tmpvar_5 = fract((8.0 * texture (sampler_noise_lq, (uv_3 + rand_frame.yz))));\\\\n vec3 tmpvar_6;\\\\n tmpvar_6 = tmpvar_5.xyz;\\\\n if ((tmpvar_5.y > 0.1)) {\\\\n vec3 tmpvar_7;\\\\n tmpvar_7 = (tmpvar_5.xyz - vec3(0.5, 0.5, 0.5));\\\\n vec4 nb2_8;\\\\n vec4 nb_9;\\\\n vec2 tmpvar_10;\\\\n tmpvar_10 = (0.003472222 * floor((\\\\n (288.0 * texture (sampler_pc_main, (uv_3 - texsize.zw)).yz)\\\\n + vec2(0.5, 0.5))));\\\\n nb_9.x = (1.0 - (tmpvar_10.y + (0.03125 * \\\\n (tmpvar_10.x - 0.505)\\\\n )));\\\\n vec2 tmpvar_11;\\\\n tmpvar_11 = (0.003472222 * floor((\\\\n (288.0 * texture (sampler_pc_main, (uv_3 + (texsize.zw * vec2(1.0, -1.0)))).yz)\\\\n + vec2(0.5, 0.5))));\\\\n nb_9.y = (1.0 - (tmpvar_11.y + (0.03125 * \\\\n (tmpvar_11.x - 0.505)\\\\n )));\\\\n vec2 tmpvar_12;\\\\n tmpvar_12 = (0.003472222 * floor((\\\\n (288.0 * texture (sampler_pc_main, (uv_3 + texsize.zw)).yz)\\\\n + vec2(0.5, 0.5))));\\\\n nb_9.z = (1.0 - (tmpvar_12.y + (0.03125 * \\\\n (tmpvar_12.x - 0.505)\\\\n )));\\\\n vec2 tmpvar_13;\\\\n tmpvar_13 = (0.003472222 * floor((\\\\n (288.0 * texture (sampler_pc_main, (uv_3 + (texsize.zw * vec2(-1.0, 1.0)))).yz)\\\\n + vec2(0.5, 0.5))));\\\\n nb_9.w = (1.0 - (tmpvar_13.y + (0.03125 * \\\\n (tmpvar_13.x - 0.505)\\\\n )));\\\\n vec2 tmpvar_14;\\\\n tmpvar_14 = (0.003472222 * floor((\\\\n (288.0 * texture (sampler_pc_main, (uv_3 + (texsize.zw * vec2(0.0, -1.0)))).yz)\\\\n + vec2(0.5, 0.5))));\\\\n nb2_8.x = (1.0 - (tmpvar_14.y + (0.03125 * \\\\n (tmpvar_14.x - 0.505)\\\\n )));\\\\n vec2 tmpvar_15;\\\\n tmpvar_15 = (0.003472222 * floor((\\\\n (288.0 * texture (sampler_pc_main, (uv_3 + (texsize.zw * vec2(1.0, 0.0)))).yz)\\\\n + vec2(0.5, 0.5))));\\\\n nb2_8.y = (1.0 - (tmpvar_15.y + (0.03125 * \\\\n (tmpvar_15.x - 0.505)\\\\n )));\\\\n vec2 tmpvar_16;\\\\n tmpvar_16 = (0.003472222 * floor((\\\\n (288.0 * texture (sampler_pc_main, (uv_3 + (texsize.zw * vec2(0.0, 1.0)))).yz)\\\\n + vec2(0.5, 0.5))));\\\\n nb2_8.z = (1.0 - (tmpvar_16.y + (0.03125 * \\\\n (tmpvar_16.x - 0.505)\\\\n )));\\\\n vec2 tmpvar_17;\\\\n tmpvar_17 = (0.003472222 * floor((\\\\n (288.0 * texture (sampler_pc_main, (uv_3 + (texsize.zw * vec2(-1.0, 0.0)))).yz)\\\\n + vec2(0.5, 0.5))));\\\\n nb2_8.w = (1.0 - (tmpvar_17.y + (0.03125 * \\\\n (tmpvar_17.x - 0.505)\\\\n )));\\\\n vec4 tmpvar_18;\\\\n tmpvar_18 = min (nb_9, nb2_8);\\\\n nb_9.zw = tmpvar_18.zw;\\\\n nb_9.xy = min (tmpvar_18.xy, tmpvar_18.zw);\\\\n vec2 tmpvar_19;\\\\n tmpvar_19 = (0.003472222 * floor((\\\\n (288.0 * texture (sampler_pc_main, uv_3).yz)\\\\n + vec2(0.5, 0.5))));\\\\n vec2 tmpvar_20;\\\\n tmpvar_20.x = (tmpvar_7.x * abs(tmpvar_7.y));\\\\n tmpvar_20.y = (abs(tmpvar_7.x) * tmpvar_7.y);\\\\n xlat_mutabledist = (min (min (nb_9.x, nb_9.y), (1.0 - \\\\n (tmpvar_19.y + (0.03125 * (tmpvar_19.x - 0.505)))\\\\n )) + (0.01 * tmpvar_20)).x;\\\\n } else {\\\\n xlat_mutabledist = tmpvar_6.x;\\\\n };\\\\n vec2 tmpvar_21;\\\\n tmpvar_21 = (0.003472222 * floor((\\\\n (288.0 * texture (sampler_pc_main, uv_3).yz)\\\\n + vec2(0.5, 0.5))));\\\\n xlat_mutabledist = (min (xlat_mutabledist, (1.0 - \\\\n (tmpvar_21.y + (0.03125 * (tmpvar_21.x - 0.505)))\\\\n )) - (q10 * 0.8));\\\\n float tmpvar_22;\\\\n tmpvar_22 = (xlat_mutabledist + (pow (xlat_mutabledist, 3.0) * 0.2));\\\\n vec3 tmpvar_23;\\\\n tmpvar_23.xy = (xlat_mutableuv1 * tmpvar_22);\\\\n tmpvar_23.z = tmpvar_22;\\\\n xlat_mutableuv2 = (((tmpvar_23 / q7) * tmpvar_1) + tmpvar_2);\\\\n xlat_mutableuv2 = ((fract(\\\\n ((xlat_mutableuv2 / 8.0) + 0.5)\\\\n ) - 0.5) * 8.0);\\\\n vec4 tmpvar_24;\\\\n tmpvar_24.w = 0.0;\\\\n tmpvar_24.xyz = (vec3((texture (sampler_noisevol_lq, (xlat_mutableuv2 / 16.0)).x * 3.0)) * 80.0);\\\\n float tmpvar_25;\\\\n tmpvar_25 = sqrt(dot (tmpvar_24.xyz, tmpvar_24.xyz));\\\\n xlat_mutablestruc = (sqrt(dot (tmpvar_24.xyz, tmpvar_24.xyz)) / 80.0);\\\\n if (((tmpvar_25 < 80.0) && (xlat_mutabledist > 0.005))) {\\\\n ret_4.x = (((1.0 - sustain) * xlat_mutablestruc) + (sustain * texture (sampler_main, uv_3).x));\\\\n vec2 tmpvar_26;\\\\n tmpvar_26 = (0.003472222 * floor((\\\\n (288.0 * vec2((1.0 - xlat_mutabledist)))\\\\n + vec2(0.5, 0.5))));\\\\n vec2 tmpvar_27;\\\\n tmpvar_27.x = ((32.0 * (\\\\n (1.0 - xlat_mutabledist)\\\\n - tmpvar_26.x)) + 0.495);\\\\n tmpvar_27.y = tmpvar_26.x;\\\\n ret_4.yz = tmpvar_27;\\\\n } else {\\\\n vec3 tmpvar_28;\\\\n tmpvar_28.x = (0.5 * (sustain + 1.0));\\\\n tmpvar_28.y = sustain;\\\\n tmpvar_28.z = sustain;\\\\n vec3 tmpvar_29;\\\\n tmpvar_29.y = 0.0;\\\\n tmpvar_29.x = (1.0 - sustain);\\\\n tmpvar_29.z = (1.0 - sustain);\\\\n ret_4 = ((texture (sampler_fw_main, fract(uv_3)).xyz * tmpvar_28) - (0.01 * tmpvar_29));\\\\n };\\\\n vec4 tmpvar_30;\\\\n tmpvar_30.w = 1.0;\\\\n tmpvar_30.xyz = ret_4;\\\\n ret = tmpvar_30.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n vec2 uv_1;\\\\n vec2 dz_2;\\\\n vec3 ret2_3;\\\\n vec2 tmpvar_4;\\\\n tmpvar_4.x = (abs((uv.x - 0.5)) + 0.5);\\\\n tmpvar_4.y = uv.y;\\\\n uv_1 = (abs((tmpvar_4 - 0.5)) + 0.5);\\\\n ret2_3 = (texture (sampler_main, uv_1).xyz * (0.6 + (0.5 * \\\\n sin(((uv_1.x * 10.0) + (3.141593 * (q27 + q28))))\\\\n )));\\\\n vec3 tmpvar_5;\\\\n tmpvar_5 = mix (vec3(dot (texture (sampler_main, uv_1).xyz, vec3(0.32, 0.49, 0.29))), ret2_3, pow (ret2_3, vec3((0.15 + \\\\n (mid_att * 0.025)\\\\n ))));\\\\n ret2_3 = tmpvar_5;\\\\n vec2 tmpvar_6;\\\\n tmpvar_6 = (uv_1 - 0.5);\\\\n vec2 tmpvar_7;\\\\n vec2 tmpvar_8;\\\\n tmpvar_8 = (vec2(0.0005, 0.0) * q21);\\\\n tmpvar_7.x = (texture (sampler_main, (uv_1 + tmpvar_8)).x - texture (sampler_main, (uv_1 - tmpvar_8)).z);\\\\n vec2 tmpvar_9;\\\\n tmpvar_9 = (vec2(0.0, 0.0005) * q20);\\\\n tmpvar_7.y = (texture (sampler_main, (uv_1 + tmpvar_9)).x - texture (sampler_main, (uv_1 - tmpvar_9)).z);\\\\n dz_2 = (tmpvar_7 + ((texture (sampler_noise_hq, \\\\n (((tmpvar_6 / (\\\\n (((0.5 * q26) + (0.5 * q27)) / q16)\\\\n + rad)) * ((q23 * 0.1) + (q24 * 0.1))) + q31)\\\\n ) - 0.5) * 0.1).xy);\\\\n vec2 tmpvar_10;\\\\n tmpvar_10 = abs((tmpvar_6 - dz_2));\\\\n vec3 tmpvar_11;\\\\n float tmpvar_12;\\\\n tmpvar_12 = abs(q21);\\\\n float tmpvar_13;\\\\n tmpvar_13 = abs(q20);\\\\n tmpvar_11.x = (tmpvar_13 + tmpvar_12);\\\\n float tmpvar_14;\\\\n tmpvar_14 = abs(q22);\\\\n tmpvar_11.y = (tmpvar_12 + tmpvar_14);\\\\n tmpvar_11.z = (tmpvar_14 + tmpvar_13);\\\\n vec3 tmpvar_15;\\\\n tmpvar_15 = log(exp2((\\\\n (3.141593 * tmpvar_11)\\\\n * \\\\n ((0.7 * texture (sampler_main, uv_1).xyz) + ((pow (\\\\n abs((0.03333 / sqrt(dot (tmpvar_10, tmpvar_10))))\\\\n , 0.75) * tmpvar_5) * (5.0 + sqrt(mid))))\\\\n .yzx)));\\\\n vec3 tmpvar_16;\\\\n float tmpvar_17;\\\\n tmpvar_17 = abs(q24);\\\\n float tmpvar_18;\\\\n tmpvar_18 = abs(q23);\\\\n tmpvar_16.x = (tmpvar_18 + tmpvar_17);\\\\n float tmpvar_19;\\\\n tmpvar_19 = abs(q25);\\\\n tmpvar_16.y = (tmpvar_17 + tmpvar_19);\\\\n tmpvar_16.z = (tmpvar_19 + tmpvar_18);\\\\n vec2 tmpvar_20;\\\\n tmpvar_20 = fract(-(tmpvar_10));\\\\n vec2 tmpvar_21;\\\\n tmpvar_21 = fract(dz_2);\\\\n vec3 tmpvar_22;\\\\n tmpvar_22 = log(exp2((\\\\n (3.141593 * tmpvar_16)\\\\n * texture (sampler_main, \\\\n fract(-(abs((tmpvar_20 - \\\\n (2.0 * (dot (tmpvar_21, tmpvar_20) * tmpvar_21))\\\\n ))))\\\\n ).xyz)));\\\\n vec3 tmpvar_23;\\\\n float tmpvar_24;\\\\n tmpvar_24 = abs(q27);\\\\n float tmpvar_25;\\\\n tmpvar_25 = abs(q26);\\\\n tmpvar_23.x = (tmpvar_25 + tmpvar_24);\\\\n float tmpvar_26;\\\\n tmpvar_26 = abs(q28);\\\\n tmpvar_23.y = (tmpvar_24 + tmpvar_26);\\\\n tmpvar_23.z = (tmpvar_26 + tmpvar_25);\\\\n vec3 tmpvar_27;\\\\n tmpvar_27 = log(exp2((\\\\n (3.141593 * tmpvar_23)\\\\n * texture (sampler_main, \\\\n fract(-(tmpvar_10))\\\\n ).zxy)));\\\\n vec3 tmpvar_28;\\\\n tmpvar_28 = mix (tmpvar_15, tmpvar_22, (1.5708 - (1.570796 - \\\\n (sign(tmpvar_27) * (1.570796 - (sqrt(\\\\n (1.0 - abs(tmpvar_27))\\\\n ) * (1.570796 + \\\\n (abs(tmpvar_27) * (-0.2146018 + (abs(tmpvar_27) * (0.08656672 + \\\\n (abs(tmpvar_27) * -0.03102955)\\\\n ))))\\\\n ))))\\\\n )));\\\\n vec3 tmpvar_29;\\\\n tmpvar_29 = mix (tmpvar_15, tmpvar_22, tmpvar_27);\\\\n vec3 tmpvar_30;\\\\n tmpvar_30.z = 0.0;\\\\n tmpvar_30.xy = ((uv_1 - 0.5) + (0.4 * dot (texture (sampler_main, uv_1).xyz, vec3(0.32, 0.49, 0.29))));\\\\n float x_31;\\\\n x_31 = (fract((\\\\n (dot (tmpvar_30, vec3(0.32, 0.49, 0.29)) * 3.0)\\\\n - time)) - 0.5);\\\\n vec4 tmpvar_32;\\\\n tmpvar_32.w = 1.0;\\\\n tmpvar_32.xyz = ((0.637 * abs(\\\\n mix ((1.5708 - (1.570796 - (\\\\n sign(tmpvar_29)\\\\n * \\\\n (1.570796 - (sqrt((1.0 - \\\\n abs(tmpvar_29)\\\\n )) * (1.570796 + (\\\\n abs(tmpvar_29)\\\\n * \\\\n (-0.2146018 + (abs(tmpvar_29) * (0.08656672 + (\\\\n abs(tmpvar_29)\\\\n * -0.03102955))))\\\\n ))))\\\\n ))), (sign(tmpvar_28) * (1.570796 - (\\\\n sqrt((1.0 - abs(tmpvar_28)))\\\\n * \\\\n (1.570796 + (abs(tmpvar_28) * (-0.2146018 + (\\\\n abs(tmpvar_28)\\\\n * \\\\n (0.08656672 + (abs(tmpvar_28) * -0.03102955))\\\\n ))))\\\\n ))), ((3.0 * q15) * mix ((1.5708 - \\\\n (1.570796 - (sign(tmpvar_15) * (1.570796 - (\\\\n sqrt((1.0 - abs(tmpvar_15)))\\\\n * \\\\n (1.570796 + (abs(tmpvar_15) * (-0.2146018 + (\\\\n abs(tmpvar_15)\\\\n * \\\\n (0.08656672 + (abs(tmpvar_15) * -0.03102955))\\\\n ))))\\\\n ))))\\\\n ), (1.5708 - \\\\n (1.570796 - (sign(tmpvar_22) * (1.570796 - (\\\\n sqrt((1.0 - abs(tmpvar_22)))\\\\n * \\\\n (1.570796 + (abs(tmpvar_22) * (-0.2146018 + (\\\\n abs(tmpvar_22)\\\\n * \\\\n (0.08656672 + (abs(tmpvar_22) * -0.03102955))\\\\n ))))\\\\n ))))\\\\n ), (\\\\n sign(tmpvar_27)\\\\n * \\\\n (1.570796 - (sqrt((1.0 - \\\\n abs(tmpvar_27)\\\\n )) * (1.570796 + (\\\\n abs(tmpvar_27)\\\\n * \\\\n (-0.2146018 + (abs(tmpvar_27) * (0.08656672 + (\\\\n abs(tmpvar_27)\\\\n * -0.03102955))))\\\\n ))))\\\\n ))))\\\\n )) + (exp(\\\\n (-20.0 * sqrt((x_31 * x_31)))\\\\n ) * q10));\\\\n ret = tmpvar_32.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Geiss + Flexi + Martin - disconnected.json\":\n/*!**********************************************************************!*\\\n !*** ./presets/converted/Geiss + Flexi + Martin - disconnected.json ***!\n \\**********************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":5,\\\"gammaadj\\\":1,\\\"decay\\\":0.925,\\\"echo_zoom\\\":1.007,\\\"echo_orient\\\":3,\\\"wave_brighten\\\":0,\\\"brighten\\\":1,\\\"darken\\\":1,\\\"solarize\\\":1,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":0.01,\\\"wave_smoothing\\\":0,\\\"modwavealphastart\\\":1,\\\"modwavealphaend\\\":1,\\\"warpanimspeed\\\":1.459,\\\"warpscale\\\":2.007,\\\"fshader\\\":1,\\\"zoom\\\":0.9999,\\\"warp\\\":0.01,\\\"sx\\\":0.9999,\\\"wave_r\\\":0,\\\"wave_g\\\":0,\\\"wave_b\\\":0,\\\"ob_size\\\":0.015,\\\"ob_b\\\":1,\\\"ib_size\\\":0.26,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":5,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":100,\\\"textured\\\":1,\\\"rad\\\":0.789,\\\"ang\\\":0.6283,\\\"tex_zoom\\\":1.17257,\\\"r\\\":0,\\\"g\\\":1,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"vx = 0;\\\\nvy = 0;\\\",\\\"frame_eqs_eel\\\":\\\"rad = 0.65 + bass*0.1;\\\\n\\\\nan = an*0.99 + (bass-treb)*0.1;\\\\nang = an*0.1 + 0.6;\\\"},{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"thickoutline\\\":1,\\\"textured\\\":1,\\\"rad\\\":0.40271,\\\"tex_zoom\\\":2.23888,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":0.08,\\\"g2\\\":0,\\\"a2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"textured\\\":1,\\\"rad\\\":1.21525,\\\"tex_ang\\\":2.57611,\\\"tex_zoom\\\":0.55595,\\\"g\\\":1,\\\"b\\\":1,\\\"g2\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sides\\\":34,\\\"x\\\":0.99,\\\"y\\\":0.99,\\\"rad\\\":0.02558,\\\"r\\\":0,\\\"g\\\":1,\\\"a2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"samples\\\":495,\\\"sep\\\":4,\\\"spectrum\\\":1,\\\"thick\\\":1,\\\"additive\\\":1,\\\"scaling\\\":100,\\\"smoothing\\\":1,\\\"r\\\":0,\\\"g\\\":0.04,\\\"b\\\":0,\\\"a\\\":0.99},\\\"init_eqs_eel\\\":\\\"t2 = 0;\\\\nt3 = 0;\\\\nt4 = 0;\\\\nab = 1;\\\",\\\"frame_eqs_eel\\\":\\\"t1 = q1;\\\\nt2 = q2;\\\\nt3 = q3;\\\\nt4 = q4;\\\\nt5 = q5;\\\\nt6 = q6;\\\\nt8 = .07;\\\\nt7 = 1;\\\",\\\"point_eqs_eel\\\":\\\"t7 = -t7;\\\\npi = asin(1);\\\\nn = 180;\\\\nrd = 0.075;//+(value1*10+1)*((sample*512)%2)*0.02;\\\\nmy_x = sin(sample*pi*4+(t7+1)*t8)*0.5 + cos(sample*pi*n)*rd*sin(sample*pi*4+(t7+1)*t8);\\\\nmy_y = cos(sample*pi*4+(t7+1)*t8)*0.5 + cos(sample*pi*n)*rd*cos(sample*pi*4+(t7+1)*t8);\\\\nmy_z = sin(sample*pi*n)*rd;\\\\n\\\\n\\\\n\\\\nd = 1.4; // makes the perspective impact\\\\nzoom = 0.65;\\\\n\\\\nw1 = q2;\\\\nw2 = q3;\\\\nw3 = q4;\\\\n\\\\nx1 = cos(w1)*my_x + sin(w1)*my_y;\\\\ny1 = -sin(w1)*my_x + cos(w1)*my_y;\\\\nz1 = my_z;\\\\n\\\\nx2 = cos(w2)*x1 + sin(w2)*z1;\\\\nz2 = -sin(w2)*x1 + cos(w2)*z1;\\\\ny2 = y1;\\\\n\\\\ny3 = cos(w3)*y2 + sin(w3)*z2;\\\\nz3 = -sin(w3)*y2 + cos(w3)*z2;\\\\nx3 = x2;\\\\n\\\\n// perspective calculation\\\\n\\\\nl = sqrt(x3*x3 + y3*y3);\\\\nw = atan2(x3,y3);\\\\np = tan(asin(1) + atan2(d+z3,l));\\\\nd = sqrt(x3*x3 + y3*y3 + (z3+d)*(z3+d));\\\\n\\\\nmy_x = zoom*sin(w)*p;\\\\nmy_y = zoom*cos(w)*p;\\\\n\\\\nx = 0.5 + my_x;\\\\ny = 0.5 + my_y;\\\\n\\\\nb = -z3 + 0.5;\\\\nb = min(1,max(0,b))*0.5;\\\\nr = 1-b*2\\\\n//b = (1 - r)*0.1;\\\\n//a = 7/(d*16) - 0.1;\\\"},{\\\"baseVals\\\":{\\\"samples\\\":445,\\\"sep\\\":4,\\\"spectrum\\\":1,\\\"usedots\\\":1,\\\"thick\\\":1,\\\"additive\\\":1,\\\"scaling\\\":100,\\\"smoothing\\\":1,\\\"a\\\":0.99,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t2 = 0;\\\\nt3 = 0;\\\\nt4 = 0;\\\\nab = 1;\\\",\\\"frame_eqs_eel\\\":\\\"t1 = q1;\\\\nt2 = q2;\\\\nt3 = q3;\\\\nt4 = q4;\\\\nt5 = q5;\\\\nt6 = q6;\\\\nt8 = .09;\\\\nt7 = 1;\\\",\\\"point_eqs_eel\\\":\\\"t7 = -t7;\\\\npi = asin(1);\\\\nn = 160;\\\\nrd = 0.075;//+(value1*10+1)*((sample*512)%2)*0.02;\\\\nxx = sin(sample*pi*4+(t7+1)*t8)*0.5 + cos(sample*pi*n)*rd*sin(sample*pi*4);\\\\nyy = cos(sample*pi*4+(t7+1)*t8)*0.5 + cos(sample*pi*n)*rd*cos(sample*pi*4);\\\\nzz = sin(sample*pi*n)*rd;\\\\n\\\\nd = sqrt( xx*xx + yy*yy + zz*zz);\\\\nd1 = 1;\\\\nxx = xx*d1;\\\\nyy = yy*d1;\\\\nzz = zz*d1;\\\\n\\\\nw = -d*t5;\\\\ns1 = sin(t2*1+w);\\\\ns2 = sin(t3*1+w);\\\\ns3 = sin(t4*1+w);\\\\nc1 = cos(t2*1+w);\\\\nc2 = cos(t3*1+w);\\\\nc3 = cos(t4*1+w);\\\\n\\\\nz = (c3*s1*c2 + s3*s2)*xx - (c3*s1*s2-s3*c2)*yy + c3*c1*zz;\\\\nx1 = (c1*c2*xx + c1*s2*yy - s1*zz);\\\\ny1 = ((s3*s1*c2 - c3*s2)*xx + (s3*s1*s2+c3*c2)*yy + s3*c1*zz);\\\\n\\\\na = 0.75;\\\\nzoom = 0.5*atan2(a,a+z);//0.5*(1/(z+a));\\\\nx = 0.5 + zoom*x1;\\\\ny = 0.5 + zoom*y1;\\\\n\\\\npi3 = 3.1415*2*0.3333;\\\\nt = sample*pi*4-2*time;\\\\nc=1.6;\\\\nr = sin(t)*c;\\\\n\\\\ng = sin(t+pi3)*c;\\\\n\\\\nb = sin(t-pi3)*c;\\\\n\\\\nj = 0.71;\\\\n//r = 0.5+xx*j;\\\\n//g = 0.5+yy*j;\\\\n//b = 0.5+zz*j;\\\\n\\\\nr = if(above(r,1),1,r);\\\\nr = if(below(r,0),0,r);\\\\ng = if(above(g,1),1,g);\\\\ng = if(below(g,0),0,g);\\\\nb = if(above(b,1),1,b);\\\\nb = if(below(b,0),0,b);\\\\na = 1-(z + a)/2;\\\\n\\\"},{\\\"baseVals\\\":{\\\"sep\\\":4,\\\"scaling\\\":0.09348,\\\"smoothing\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t2 = 0;\\\\nt3 = 0;\\\\nt4 = 0;\\\\nab = 1;\\\",\\\"frame_eqs_eel\\\":\\\"t1 = q1;\\\\nt2 = q2;\\\\nt3 = q3;\\\\nt4 = q4;\\\\nt5 = q5;\\\\nt6 = q6;\\\",\\\"point_eqs_eel\\\":\\\"s8 = sample*383;\\\\n\\\\ns = 100;//0.3;\\\\nxx = sin(sample*s);//((sample*343)%7 - 3.5)*s;\\\\nzz = cos(sample*s);//((sample*49)%7 - 3.5)*s;\\\\nyy = (sample-0.5);//((sample*7)%7 - 3.5)*s;\\\\n\\\\nd = sqrt( xx*xx + yy*yy + zz*zz);\\\\nd1 = 1/d;\\\\nxx = xx*d1;\\\\nyy = yy*d1;\\\\nzz = zz*d1;\\\\n\\\\nw = 1+0*(d)*(t6);//(sample*sin(time*0.3)*0.02-1);\\\\ns1 = sin(t2*w);\\\\ns2 = sin(t3*w);\\\\ns3 = sin(t4*w);\\\\nc1 = cos(t2*w);\\\\nc2 = cos(t3*w);\\\\nc3 = cos(t4*w);\\\\n\\\\nz = (c3*s1*c2 + s3*s2)*xx - (c3*s1*s2-s3*c2)*yy + c3*c1*zz;\\\\nx1 = (c1*c2*xx + c1*s2*yy - s1*zz);\\\\ny1 = ((s3*s1*c2 - c3*s2)*xx + (s3*s1*s2+c3*c2)*yy + s3*c1*zz);\\\\n\\\\na = 2;\\\\nzoom = 0.3*atan2(a-z,a);//0.5*(1/(z+a));\\\\nx = 0.5 + zoom*x1;\\\\ny = 0.5 + zoom*y1;\\\\n\\\\npi3 = 3.1415*2*0.3333;\\\\nt = -z*13+t5*20;\\\\nc = 10;\\\\nr = sin(t)*c;\\\\n\\\\ng = sin(t+pi3)*c;\\\\n\\\\nb = sin(t-pi3)*c;\\\\n\\\\nj = 0.71;\\\\n//r = 0.5+xx*j;\\\\n//g = 0.5+yy*j;\\\\n//b = 0.5+zz*j;\\\\n\\\\nr = if(above(r,1),1,r);\\\\nr = if(below(r,0),0,r);\\\\ng = if(above(g,1),1,g);\\\\ng = if(below(g,0),0,g);\\\\nb = if(above(b,1),1,b);\\\\nb = if(below(b,0),0,b);\\\\n\\\\n\\\\na = sigmoid(-z,10)*1.0+0.0;\\\"},{\\\"baseVals\\\":{\\\"samples\\\":484,\\\"sep\\\":4,\\\"usedots\\\":1,\\\"scaling\\\":9.94125,\\\"smoothing\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t2 = 0;\\\\nt3 = 0;\\\\nt4 = 0;\\\\nab = 1;\\\",\\\"frame_eqs_eel\\\":\\\"t1 = q1;\\\\nt2 = q2;\\\\nt3 = q3;\\\\nt4 = q4;\\\\nt5 = q5;\\\\nt6 = q6;\\\",\\\"point_eqs_eel\\\":\\\"s8 = sample*383;\\\\n\\\\ns = 0.25;\\\\nxx = ((sample*(465))%15 - 8)*s*2;\\\\nyy = ((sample*31)%31 - 16)*s;\\\\nzz = 0;\\\\n\\\\nd = sqrt( xx*xx + yy*yy + zz*zz);\\\\nw = 1;\\\\n\\\\ns1 = sin(t2*1);\\\\ns2 = sin(t3*0);\\\\ns3 = sin(t4*1);\\\\nc1 = cos(t2*1);\\\\nc2 = cos(t3*0);\\\\nc3 = cos(t4*1);\\\\n\\\\n\\\\nz = (c3*s1*c2 + s3*s2)*xx - (c3*s1*s2-s3*c2)*yy + c3*c1*zz;\\\\nx1 = (c1*c2*xx + c1*s2*yy - s1*zz);\\\\ny1 = ((s3*s1*c2 - c3*s2)*xx + (s3*s1*s2+c3*c2)*yy + s3*c1*zz);\\\\n\\\\na = 500;\\\\nzoom = 0.05*atan2(a-z,a);//0.5*(1/(z+a));\\\\nx = 0.5 + zoom*x1;\\\\ny = 0.5 + zoom*y1;\\\\n\\\\npi3 = 3.1415*2*0.3333;\\\\nt = -z*5+t5;\\\\nc = 10;\\\\nr = sin(t)*c;\\\\n\\\\ng = sin(t+pi3)*c;\\\\n\\\\nb = sin(t-pi3)*c;\\\\n\\\\nj = 0.71;\\\\n//r = 0.5+xx*j;\\\\n//g = 0.5+yy*j;\\\\n//b = 0.5+zz*j;\\\\n\\\\nr = if(above(r,1),1,r);\\\\nr = if(below(r,0),0,r);\\\\ng = if(above(g,1),1,g);\\\\ng = if(below(g,0),0,g);\\\\nb = if(above(b,1),1,b);\\\\nb = if(below(b,0),0,b);\\\\n\\\\n\\\\na = sigmoid(z,5);\\\"}],\\\"init_eqs_eel\\\":\\\"step = 0;\\\",\\\"frame_eqs_eel\\\":\\\"dec_med = pow (0.7, 30/fps);\\\\ndec_slow = pow (0.99, 30/fps);\\\\nbeat = max (max (bass, mid), treb); \\\\navg = avg*dec_slow + beat*(1-dec_slow);\\\\nis_beat = above(beat, -2+avg+peak) * above (time, t0+.1);\\\\nt0 = is_beat*time + (1-is_beat)*t0;\\\\npeak = is_beat * beat + (1-is_beat)*peak*dec_med;\\\\nindex = (index + is_beat) %16;\\\\nindex2 = (index2 + is_beat*bnot(index))%2;\\\\n\\\\nq20 = avg;\\\\nq21 = beat;\\\\nq22 = peak;\\\\nq23 = index;\\\\nq24 = is_beat;\\\\nq26 = bass_att + mid_att + treb_att;\\\\nq27 = index + 1;\\\\nq28 = index2;\\\\n\\\\nq29 = ((index%2)-.5)*2;\\\\n\\\\nk1 = is_beat*equal(index%2,0);\\\\np1 = k1*(p1+1) + (1-k1)*p1;\\\\np2 = dec_med * p2+ (1-dec_med)*p1;\\\\nrott = p2 * 3.1416/8;\\\\n\\\\nq1 = cos(rott);\\\\nq2 = sin(rott);\\\\nq3 = -q2;\\\\nq4 = q1;\\\\n\\\\n//ds = max ((q26-.2),0);\\\\n//step = step + ds/10;\\\\n\\\\nstep = step + q24 ;\\\\n\\\\np3 = p3*dec_slow + (1-dec_slow) * step;\\\\nq30 = step;\\\\n\\\\np4 = dec_slow*p4 + (1-dec_slow)*q27;\\\\nq31 = p4;\\\\n\\\\nq12 = time -t0;\\\\nmonitor = q12;\\\\n\\\\n\\\\n\\\\nzoom = 1;\\\\nrot = -0 ;\\\\ndx = .00;\\\",\\\"pixel_eqs_eel\\\":\\\"zoom = 1.3;\\\",\\\"warp\\\":\\\" shader_body { \\\\n vec2 uv_1;\\\\n vec2 uv6_2;\\\\n vec2 tmpvar_3;\\\\n tmpvar_3 = ((uv - 0.5) * aspect.xy);\\\\n float tmpvar_4;\\\\n tmpvar_4 = (((q29 * 2.0) * sqrt(\\\\n dot (tmpvar_3, tmpvar_3)\\\\n )) + (rand_frame * 64.0)).x;\\\\n uv_1 = (uv + (clamp (\\\\n ((sin(tmpvar_4) / cos(tmpvar_4)) * normalize(tmpvar_3))\\\\n , vec2(-2.0, -2.0), vec2(2.0, 2.0)) / 20.0));\\\\n uv6_2 = (0.4 * sin((tmpvar_3 * 22.0)));\\\\n vec4 tmpvar_5;\\\\n tmpvar_5.w = 1.0;\\\\n tmpvar_5.xyz = (((q24 * \\\\n (((texture (sampler_main, uv_1).xyz - (\\\\n ((texture (sampler_blur1, fract(uv_1)).xyz * scale1) + bias1)\\\\n * 0.04)) + (0.15 * (vec3(\\\\n (0.1 / sqrt(dot (uv6_2, uv6_2)))\\\\n ) * roam_cos.xyz))) - 0.02)\\\\n ) * 0.98) + ((1.0 - q24) * texture (sampler_main, uv_orig).xyz));\\\\n ret = tmpvar_5.xyz;\\\\n }\\\",\\\"comp\\\":\\\"uniform sampler2D sampler_rand00;\\\\n shader_body { \\\\n vec4 tmpvar_1;\\\\n tmpvar_1 = texture (sampler_main, uv);\\\\n vec4 tmpvar_2;\\\\n tmpvar_2.w = 1.0;\\\\n tmpvar_2.xyz = ((texture (sampler_rand00, (0.4 + \\\\n (0.6 * tmpvar_1.xy)\\\\n )) * tmpvar_1.z) * 3.0).xyz;\\\\n ret = tmpvar_2.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Geiss - Cauldron - painterly 2 (saturation remix).json\":\n/*!**********************************************************************************!*\\\n !*** ./presets/converted/Geiss - Cauldron - painterly 2 (saturation remix).json ***!\n \\**********************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":2,\\\"gammaadj\\\":2.7,\\\"wave_mode\\\":1,\\\"modwavealphabyvolume\\\":1,\\\"wave_a\\\":2.707,\\\"wave_scale\\\":1.025,\\\"wave_smoothing\\\":0.1,\\\"modwavealphastart\\\":0.77,\\\"modwavealphaend\\\":1.01,\\\"warpscale\\\":1.331,\\\"zoom\\\":1.014,\\\"warp\\\":0.21786,\\\"wave_r\\\":0.65,\\\"wave_g\\\":0.65,\\\"wave_b\\\":0.65,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"wave_r = wave_r + 0.350*( 0.60*sin(3.980*time) + 0.40*sin(11.047*time) );\\\\nwave_g = wave_g + 0.350*( 0.60*sin(0.835*time) + 0.40*sin(1.081*time) );\\\\nwave_b = wave_b + 0.350*( 0.60*sin(0.814*time) + 0.40*sin(1.011*time) );\\\\ncx = cx + 0.110*( 0.60*sin(0.374*time) + 0.40*sin(0.294*time) );\\\\ncy = cy + 0.110*( 0.60*sin(0.393*time) + 0.40*sin(0.223*time) );\\\\ndx = dx + 0.005*( 0.60*sin(0.173*time) + 0.40*sin(0.223*time) );\\\\ndecay = decay - 0.01*equal(frame%20,0);\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\" shader_body { \\\\n vec4 tmpvar_1;\\\\n tmpvar_1.w = 1.0;\\\\n tmpvar_1.xyz = (texture (sampler_main, (uv + (\\\\n (texture (sampler_main, (mix (uv, uv_orig, vec2(-1.0, -1.0)) + texsize.zw)).xy - 0.37)\\\\n * 0.01))).xyz - 0.004);\\\\n ret = tmpvar_1.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n vec4 tmpvar_1;\\\\n tmpvar_1 = texture (sampler_main, uv);\\\\n vec4 tmpvar_2;\\\\n tmpvar_2.w = 1.0;\\\\n tmpvar_2.xyz = mix (vec3(dot (tmpvar_1.xyz, vec3(0.3333, 0.3333, 0.3333))), tmpvar_1.xyz, vec3(3.0, 3.0, 3.0));\\\\n ret = tmpvar_2.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Geiss - Reaction Diffusion 2.json\":\n/*!*************************************************************!*\\\n !*** ./presets/converted/Geiss - Reaction Diffusion 2.json ***!\n \\*************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":0,\\\"gammaadj\\\":1.9,\\\"echo_zoom\\\":1.16936,\\\"wave_mode\\\":7,\\\"modwavealphabyvolume\\\":1,\\\"wave_a\\\":0,\\\"wave_scale\\\":1.015009,\\\"wave_smoothing\\\":0.522,\\\"modwavealphastart\\\":0.83,\\\"modwavealphaend\\\":1.31,\\\"warpscale\\\":3.138,\\\"zoom\\\":1.009006,\\\"warp\\\":0.000536,\\\"wave_r\\\":0.5,\\\"wave_g\\\":0.5,\\\"wave_b\\\":0.5,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"wave_r = 0.85 + 0.25*sin(0.437*time+1);\\\\nwave_g = 0.85 + 0.25*sin(0.544*time+2);\\\\nwave_b = 0.85 + 0.25*sin(0.751*time+3);\\\\nrot = rot + 0.010*( 0.60*sin(0.381*time) + 0.40*sin(0.579*time) );\\\\ncx = cx + 0.210*( 0.60*sin(0.374*time) + 0.40*sin(0.294*time) );\\\\ncy = cy + 0.210*( 0.60*sin(0.393*time) + 0.40*sin(0.223*time) );\\\\ndx = dx + 0.003*( 0.60*sin(0.234*time) + 0.40*sin(0.277*time) );\\\\ndy = dy + 0.003*( 0.60*sin(0.284*time) + 0.40*sin(0.247*time) );\\\\ndecay = decay - 0.01*equal(frame%6,0);\\\\ndx = dx + dx_residual;\\\\ndy = dy + dy_residual;\\\\nbass_thresh = above(bass_att,bass_thresh)*2 + (1-above(bass_att,bass_thresh))*((bass_thresh-1.3)*0.96+1.3);\\\\ndx_residual = equal(bass_thresh,2.13)*0.016*sin(time*7) + (1-equal(bass_thresh,2.13))*dx_residual;\\\\ndy_residual = equal(bass_thresh,2.13)*0.012*sin(time*9) + (1-equal(bass_thresh,2.13))*dy_residual;\\\\nwave_x = wave_x - dx_residual*7;\\\\nwave_y = wave_y - dy_residual*7;\\\\nwave_mystery = time*0.03;\\\\n\\\\nzoom = zoom + 0.005*( 0.60*sin(0.1934*time+3) + 0.40*sin(0.307*time+9) );\\\\nzoom = zoom + max(0,bass_att-1.1)*0.4;\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\" shader_body { \\\\n vec3 ret_1;\\\\n ret_1 = texture (sampler_main, uv).xyz;\\\\n ret_1 = (ret_1 + ((ret_1 - \\\\n ((texture (sampler_blur2, uv).xyz * scale2) + bias2)\\\\n ) * 0.3));\\\\n ret_1 = (ret_1 * 0.9);\\\\n ret_1 = (ret_1 + ((\\\\n ((texture (sampler_noise_lq, ((\\\\n (uv_orig * texsize.xy)\\\\n * \\\\n (texsize_noise_lq.zw * 0.4)\\\\n ) + rand_frame.xy)).xyz - 0.5) / 256.0)\\\\n * 122.0) * clamp (\\\\n (treb_att - 1.0)\\\\n , 0.0, 1.0)));\\\\n ret_1 = mix (ret_1, vec3(dot (ret_1, vec3(0.32, 0.49, 0.29))), vec3(0.2, 0.2, 0.2));\\\\n vec4 tmpvar_2;\\\\n tmpvar_2.w = 1.0;\\\\n tmpvar_2.xyz = ret_1;\\\\n ret = tmpvar_2.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n vec3 ret_1;\\\\n ret_1 = (texture (sampler_main, uv).xyz + ((\\\\n (texture (sampler_blur1, uv).xyz * scale1)\\\\n + bias1) * 0.4));\\\\n vec3 tmpvar_2;\\\\n tmpvar_2 = pow (ret_1, vec3(0.5, 0.8, 1.7));\\\\n ret_1 = tmpvar_2;\\\\n vec4 tmpvar_3;\\\\n tmpvar_3.w = 1.0;\\\\n tmpvar_3.xyz = tmpvar_2;\\\\n ret = tmpvar_3.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Geiss - Spiral Artifact.json\":\n/*!********************************************************!*\\\n !*** ./presets/converted/Geiss - Spiral Artifact.json ***!\n \\********************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":5,\\\"gammaadj\\\":1,\\\"decay\\\":1,\\\"wave_mode\\\":6,\\\"additivewave\\\":1,\\\"wave_dots\\\":1,\\\"wave_thick\\\":1,\\\"wave_brighten\\\":0,\\\"wave_a\\\":100,\\\"wave_scale\\\":3.63,\\\"wave_smoothing\\\":0.9,\\\"wave_mystery\\\":-0.3,\\\"modwavealphastart\\\":1.15,\\\"modwavealphaend\\\":1.55,\\\"warpscale\\\":1.331,\\\"zoom\\\":0.96971,\\\"warp\\\":0,\\\"wave_r\\\":0.6,\\\"wave_g\\\":0.6,\\\"wave_b\\\":0.6,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":0,\\\"mv_r\\\":0.35,\\\"mv_g\\\":0.35,\\\"mv_b\\\":0.35,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"rot_sum = 0;\\\\nq2 = 0.07 + 0.04*rand(1000)*0.001 + 0.03*rand(1000)*0.001;\\\\nq3 = 1.035 + 0.06*(rand(1000)+rand(1000)+rand(1000))*0.000333;\\\",\\\"frame_eqs_eel\\\":\\\"wave_r = wave_r + 0.500*( 0.60*sin(1.980*time) + 0.40*sin(3.047*time) );\\\\nwave_g = wave_g + 0.500*( 0.60*sin(2.835*time) + 0.40*sin(2.081*time) );\\\\nwave_b = wave_b + 0.500*( 0.60*sin(3.814*time) + 0.40*sin(1.011*time) );\\\\ncx = 0.5;//cx + 0.110*( 0.60*sin(0.374*time) + 0.40*sin(0.294*time) );\\\\ncy = 0.5;//cy + 0.110*( 0.60*sin(0.393*time) + 0.40*sin(0.223*time) );\\\\n\\\\nrot = q2;//0.13;//6.28*(rand(737)/737.0 - 0.5) * 0.03;\\\\nzoom = zoom-1 + q3;\\\\nrot_sum = rot_sum + rot;\\\\nq1 = -rot_sum;\\\\nq5 = cos(rot_sum);\\\\nq6 = sin(rot_sim);\\\\nmonitor = q2;\\\\n\\\\n// custom beat detection code: (fps-independent; quiet songs don't freak out)\\\\nmin_att = 2.5; // lower # = quieter songs can declare beats\\\\ndecay_to = 0.8; // lower # = more hasty to declare a beat\\\\ndecay_rate = pow(0.9990, fps); // lower # = more hasty to declare a beat\\\\nbeat = bass/max(min_att,bass_att);\\\\nbeat = max(beat, mid /max(min_att,mid_att ));\\\\nbeat = max(beat, treb/max(min_att,treb_att));\\\\nbeat = max( beat, (prev_beat-decay_to)*decay_rate + decay_to );\\\\nbeat_level = (beat - prev_beat - 0.02)*24;\\\\nis_beat = above(beat_level, 0.5);\\\\nprev_beat = beat;\\\\n // put your beat responses HERE:\\\\n wave_a = beat_level;\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\" shader_body { \\\\n vec4 tmpvar_1;\\\\n tmpvar_1.w = 1.0;\\\\n tmpvar_1.xyz = (texture (sampler_pw_main, uv).xyz - 0.004);\\\\n ret = tmpvar_1.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n vec2 uv_1;\\\\n vec2 uv2_2;\\\\n uv_1 = (uv - 0.5);\\\\n uv_1 = (uv_1 * (min (aspect.x, aspect.y) * 0.8));\\\\n uv_1 = (uv_1 * aspect.xy);\\\\n float tmpvar_3;\\\\n tmpvar_3 = sin(q1);\\\\n float tmpvar_4;\\\\n tmpvar_4 = cos(q1);\\\\n uv2_2.x = ((uv_1.x * tmpvar_4) - (uv_1.y * tmpvar_3));\\\\n uv2_2.y = ((uv_1.x * tmpvar_3) + (uv_1.y * tmpvar_4));\\\\n uv2_2 = (uv2_2 * aspect.zw);\\\\n uv2_2 = (uv2_2 + 0.5);\\\\n vec4 tmpvar_5;\\\\n tmpvar_5.w = 1.0;\\\\n tmpvar_5.xyz = (abs((\\\\n (texture (sampler_main, uv2_2).xyz * 2.65)\\\\n + \\\\n (((texture (sampler_blur1, uv2_2).xyz * scale1) + bias1) * -2.0)\\\\n )) * 1.5);\\\\n ret = tmpvar_5.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Geiss - Thumb Drum.json\":\n/*!***************************************************!*\\\n !*** ./presets/converted/Geiss - Thumb Drum.json ***!\n \\***************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":5,\\\"gammaadj\\\":1.9,\\\"echo_zoom\\\":1.16936,\\\"wave_mode\\\":5,\\\"additivewave\\\":1,\\\"wave_a\\\":0,\\\"wave_scale\\\":0.899719,\\\"wave_smoothing\\\":0.63,\\\"wave_mystery\\\":1,\\\"modwavealphastart\\\":2,\\\"modwavealphaend\\\":2,\\\"warpscale\\\":2.593743,\\\"zoom\\\":1.00496,\\\"warp\\\":0.278033,\\\"sx\\\":0.999666,\\\"sy\\\":0.9999,\\\"wave_r\\\":0.65,\\\"wave_g\\\":0.65,\\\"wave_b\\\":0.65,\\\"mv_x\\\":0,\\\"mv_y\\\":48,\\\"mv_dx\\\":-0.941273,\\\"mv_dy\\\":0.426319,\\\"mv_l\\\":5,\\\"mv_r\\\":0.315997,\\\"mv_g\\\":0.078173,\\\"mv_b\\\":0.941976,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"rg = 0;\\\",\\\"frame_eqs_eel\\\":\\\"wave_r = wave_r + 0.350*( 0.60*sin(0.980*time) + 0.40*sin(1.047*time) );\\\\nwave_g = wave_g + 0.350*( 0.60*sin(0.835*time) + 0.40*sin(1.081*time) );\\\\nwave_b = wave_b + 0.350*( 0.60*sin(0.814*time) + 0.40*sin(1.011*time) );\\\\nq1 = (cx*2-1) + 0.52*( 0.60*sin(0.374*time) + 0.40*sin(0.294*time) );\\\\nq2 = (cy*2-1) + 0.52*( 0.60*sin(0.393*time) + 0.40*sin(0.223*time) );\\\\nq3 = (cx*2-1) + 0.52*( 0.60*sin(0.174*-time) + 0.40*sin(0.364*time) );\\\\nq4 = (cy*2-1) + 0.52*( 0.60*sin(0.234*time) + 0.40*sin(0.271*-time) );\\\\ndecay = decay - 0.01*equal(frame%5,0);\\\\n\\\\n// this is a great way to respond to beats:\\\\n// once you get one, let it decay at a constant rate!!\\\\nrg = max(rg*0.95, 0.3 + 0.5*min(2,max(0,mid_att-1)*1.3));\\\\nq9 = rg;\\\",\\\"pixel_eqs_eel\\\":\\\"du = x*2-1 - q1;\\\\ndv = y*2-1 - q2;\\\\ndist = sqrt(du*du+dv*dv);\\\\nang2 = atan2(du,dv);\\\\nmult = 0.008/(dist+0.4);\\\\ndx = mult*sin(ang2-1.5);\\\\ndy = mult*cos(ang2-1.5);\\\\ndu = x*2-1 - q3;\\\\ndv = y*2-1 - q4;\\\\ndist = sqrt(du*du+dv*dv);\\\\nang2 = atan2(du,dv);\\\\nmult = 0.008/(dist+0.4);\\\\ndx = dx + mult*sin(ang2+1.5);\\\\ndy = dy + mult*cos(ang2+1.5);\\\",\\\"warp\\\":\\\" shader_body { \\\\n vec3 ret_1;\\\\n vec2 tmpvar_2;\\\\n tmpvar_2 = mix (uv_orig, uv, vec2(q9));\\\\n ret_1 = texture (sampler_main, tmpvar_2).xyz;\\\\n ret_1 = (ret_1 + ((ret_1 - \\\\n ((texture (sampler_blur1, tmpvar_2).xyz * scale1) + bias1)\\\\n ) * 0.3));\\\\n ret_1 = (ret_1 * 0.9);\\\\n ret_1 = (ret_1 + ((\\\\n ((texture (sampler_noise_lq, ((\\\\n (uv_orig * texsize.xy)\\\\n * \\\\n (texsize_noise_lq.zw * 0.4)\\\\n ) + rand_frame.xy)).xyz - 0.5) / 256.0)\\\\n * 122.0) * clamp (\\\\n (treb_att - 1.0)\\\\n , 0.0, 1.0)));\\\\n ret_1 = mix (ret_1, vec3(dot (ret_1, vec3(0.32, 0.49, 0.29))), vec3(0.2, 0.2, 0.2));\\\\n vec4 tmpvar_3;\\\\n tmpvar_3.w = 1.0;\\\\n tmpvar_3.xyz = ret_1;\\\\n ret = tmpvar_3.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n vec4 tmpvar_1;\\\\n tmpvar_1.w = 1.0;\\\\n tmpvar_1.xyz = (0.3 + (0.4 * vec3(dot (texture (sampler_main, uv).xyz, vec3(0.32, 0.49, 0.29)))));\\\\n ret = tmpvar_1.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Geiss, Flexi + Stahlregen - Thumbdrum Tokamak [crossfiring aftermath jelly mashup].json\":\n/*!*******************************************************************************************************************!*\\\n !*** ./presets/converted/Geiss, Flexi + Stahlregen - Thumbdrum Tokamak [crossfiring aftermath jelly mashup].json ***!\n \\*******************************************************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":5,\\\"gammaadj\\\":1.9,\\\"echo_zoom\\\":1.169,\\\"echo_orient\\\":1,\\\"wave_mode\\\":5,\\\"additivewave\\\":1,\\\"wave_a\\\":0,\\\"wave_scale\\\":0.9,\\\"wave_smoothing\\\":0.63,\\\"wave_mystery\\\":1,\\\"modwavealphastart\\\":2,\\\"modwavealphaend\\\":2,\\\"warpscale\\\":1.331,\\\"zoom\\\":1.004,\\\"warp\\\":0.19788,\\\"sx\\\":0.99967,\\\"sy\\\":0.9999,\\\"wave_r\\\":0.65,\\\"wave_g\\\":0.65,\\\"wave_b\\\":0.65,\\\"mv_x\\\":0,\\\"mv_y\\\":48,\\\"mv_dx\\\":-0.941,\\\"mv_dy\\\":0.426,\\\"mv_l\\\":5,\\\"mv_r\\\":0.316,\\\"mv_g\\\":0.078,\\\"mv_b\\\":0.942,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"wave_r = wave_r + 0.2*( 0.60*sin(0.980*time) + 0.40*sin(1.047*time) );\\\\nwave_g = wave_g + 0.2*( 0.60*sin(0.835*time) + 0.40*sin(1.081*time) );\\\\nwave_b = wave_b + 0.2*( 0.60*sin(0.814*time) + 0.40*sin(1.011*time) );\\\\nq1 = (cx*2-1) + 0.6*( 0.60*sin(0.374*time) + 0.40*sin(0.294*time) );\\\\nq2 = (cy*2-1) + 0.6*( 0.60*sin(0.393*time) + 0.40*sin(0.223*time) );\\\",\\\"pixel_eqs_eel\\\":\\\"du = (x*2-1) - q1;\\\\ndv = (y*2-1) - q2;\\\\ndist = sqrt(du*du+dv*dv);\\\\nang2 = atan2(du,dv) + time*0.15;\\\\nmult = 0.65*sin(dist*0.05);\\\\ndx = mult*sin(ang2*2-1.5);\\\\ndy = mult*cos(ang2*2-1.5);\\\",\\\"warp\\\":\\\" shader_body { \\\\n vec3 ret_1;\\\\n vec4 tmpvar_2;\\\\n tmpvar_2 = texture (sampler_main, uv);\\\\n ret_1 = (tmpvar_2.xyz + ((tmpvar_2.xyz - \\\\n ((texture (sampler_blur2, uv).xyz * scale2) + bias2)\\\\n ) * 0.3));\\\\n ret_1 = (ret_1 * 0.9);\\\\n ret_1 = (ret_1 + ((\\\\n ((texture (sampler_noise_lq, ((\\\\n (uv_orig * texsize.xy)\\\\n * \\\\n (texsize_noise_lq.zw * 0.4)\\\\n ) + rand_frame.xy)).xyz - 0.5) / 256.0)\\\\n * 122.0) * clamp (\\\\n (treb_att - 1.0)\\\\n , 0.0, 1.0)));\\\\n vec3 tmpvar_3;\\\\n tmpvar_3 = mix (ret_1, vec3(dot (ret_1, vec3(0.32, 0.49, 0.29))), vec3(0.2, 0.2, 0.2));\\\\n ret_1 = tmpvar_3;\\\\n vec4 tmpvar_4;\\\\n tmpvar_4.w = 1.0;\\\\n tmpvar_4.xyz = tmpvar_3;\\\\n ret = tmpvar_4.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n vec2 uv2_1;\\\\n vec3 ret_2;\\\\n uv2_1 = (uv + (vec2(1.0, 0.0) * texsize.zw));\\\\n float tmpvar_3;\\\\n tmpvar_3 = (((texture (sampler_main, uv2_1).xyz + \\\\n (((texture (sampler_blur1, uv2_1).xyz * scale1) + bias1) * 0.4)\\\\n ) + (\\\\n ((texture (sampler_blur2, uv2_1).xyz * scale2) + bias2)\\\\n * 0.15)) + ((\\\\n (texture (sampler_blur3, uv2_1).xyz * scale3)\\\\n + bias3) * 0.1)).x;\\\\n uv2_1 = (uv + (vec2(-1.0, 0.0) * texsize.zw));\\\\n float tmpvar_4;\\\\n tmpvar_4 = (((texture (sampler_main, uv2_1).xyz + \\\\n (((texture (sampler_blur1, uv2_1).xyz * scale1) + bias1) * 0.4)\\\\n ) + (\\\\n ((texture (sampler_blur2, uv2_1).xyz * scale2) + bias2)\\\\n * 0.15)) + ((\\\\n (texture (sampler_blur3, uv2_1).xyz * scale3)\\\\n + bias3) * 0.1)).x;\\\\n uv2_1 = (uv + (vec2(0.0, 1.0) * texsize.zw));\\\\n float tmpvar_5;\\\\n tmpvar_5 = (((texture (sampler_main, uv2_1).xyz + \\\\n (((texture (sampler_blur1, uv2_1).xyz * scale1) + bias1) * 0.4)\\\\n ) + (\\\\n ((texture (sampler_blur2, uv2_1).xyz * scale2) + bias2)\\\\n * 0.15)) + ((\\\\n (texture (sampler_blur3, uv2_1).xyz * scale3)\\\\n + bias3) * 0.1)).x;\\\\n uv2_1 = (uv + (vec2(0.0, -1.0) * texsize.zw));\\\\n vec3 tmpvar_6;\\\\n tmpvar_6.z = 0.14;\\\\n tmpvar_6.x = (tmpvar_3 - tmpvar_4);\\\\n tmpvar_6.y = (tmpvar_5 - ((\\\\n (texture (sampler_main, uv2_1).xyz + (((texture (sampler_blur1, uv2_1).xyz * scale1) + bias1) * 0.4))\\\\n + \\\\n (((texture (sampler_blur2, uv2_1).xyz * scale2) + bias2) * 0.15)\\\\n ) + (\\\\n ((texture (sampler_blur3, uv2_1).xyz * scale3) + bias3)\\\\n * 0.1)).x);\\\\n ret_2 = (0.5 + (0.5 * normalize(tmpvar_6)));\\\\n vec2 x_7;\\\\n x_7 = (ret_2.xy - 0.5);\\\\n ret_2 = (ret_2 * clamp ((\\\\n sqrt(dot (x_7, x_7))\\\\n * 5.0), 0.0, 1.0));\\\\n ret_2 = ret_2.xxy;\\\\n ret_2 = (ret_2 + 1.15);\\\\n ret_2 = (ret_2 * mix (ret_2, (ret_2 * \\\\n (((texture (sampler_blur3, uv).xyz * scale3) + bias3) - ((texture (sampler_blur1, uv).xyz * scale1) + bias1))\\\\n ), pow (hue_shader.yxz, ret_2)));\\\\n ret_2 = (ret_2 * ret_2);\\\\n vec4 tmpvar_8;\\\\n tmpvar_8.w = 1.0;\\\\n tmpvar_8.xyz = ret_2;\\\\n ret = tmpvar_8.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Goody - The Wild Vort.json\":\n/*!******************************************************!*\\\n !*** ./presets/converted/Goody - The Wild Vort.json ***!\n \\******************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":5,\\\"gammaadj\\\":2.4,\\\"decay\\\":1,\\\"echo_zoom\\\":0.997,\\\"echo_alpha\\\":0.5,\\\"echo_orient\\\":3,\\\"wave_mode\\\":2,\\\"wave_brighten\\\":0,\\\"wrap\\\":0,\\\"darken\\\":1,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":0.28,\\\"wave_smoothing\\\":0.9,\\\"modwavealphastart\\\":0.71,\\\"modwavealphaend\\\":1.3,\\\"warpanimspeed\\\":2.599,\\\"warpscale\\\":0.01,\\\"zoomexp\\\":0.99817,\\\"zoom\\\":0.86978,\\\"warp\\\":0.01,\\\"sy\\\":1.0017,\\\"wave_r\\\":0,\\\"wave_g\\\":0,\\\"wave_b\\\":0,\\\"ob_size\\\":0,\\\"ob_r\\\":1,\\\"ob_g\\\":1,\\\"ob_b\\\":1,\\\"ib_size\\\":0.04,\\\"ib_r\\\":0,\\\"ib_g\\\":0,\\\"ib_b\\\":0,\\\"ib_a\\\":1,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":0.5,\\\"mv_r\\\":0.35,\\\"mv_g\\\":0.35,\\\"mv_b\\\":0.35,\\\"mv_a\\\":0.2},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":20,\\\"additive\\\":1,\\\"textured\\\":1,\\\"rad\\\":1.99867,\\\"tex_zoom\\\":0.49486,\\\"g\\\":1,\\\"b\\\":1,\\\"a\\\":0.75,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":1,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"thickoutline\\\":1,\\\"textured\\\":1,\\\"y\\\":0.85,\\\"rad\\\":0.4404,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"thickoutline\\\":1,\\\"textured\\\":1,\\\"x\\\":0.8,\\\"rad\\\":0.44044,\\\"tex_zoom\\\":0.99991,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sides\\\":40,\\\"additive\\\":1,\\\"thickoutline\\\":1,\\\"textured\\\":1,\\\"y\\\":0.51,\\\"rad\\\":0.36457,\\\"tex_ang\\\":1.88496,\\\"tex_zoom\\\":1.00182,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":1,\\\"border_a\\\":0.2,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"bass_mod=max(x+abs(bass_att),x+sin(time));\\\\n\\\\ny=.5+.5*sin(time);\\\\nx=bass_mod*pow(y,2);\\\\n\\\\na=if(above(x,y),0,a);\\\\na2=a;\\\\nborder_a=.1*a;\\\\n\\\\ntex_zoom=bass+mid;\\\\n\\\\nr=bass*.5;\\\\ng=mid*.6;\\\\nb=treb*.7;\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"smoothing\\\":1,\\\"a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t1 = 1\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"y=rand(10000)*(.0001)+.5;\\\\nx=.5+.85*sin(time)*(.48-y);\\\\n\\\\nvol=(bass+mid+treb)*.333;\\\\n\\\\na=above((.35*bass),x);\\\\n\\\\nr=bass*.75;\\\\ng=mid*.3;\\\\nb=treb*.25;\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"smoothing\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t1 = 1\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"y=rand(10000)*(.0001)+.5;\\\\nx=.5+.5*sin(time)*(.48-y);\\\\n\\\\nvol=(bass+mid+treb)*.333;\\\\n\\\\na=above((.35*mid),x);\\\\n\\\\nr=bass*.3;\\\\ng=mid*.75;\\\\nb=treb*.2;\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"smoothing\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t1 = 1\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"y=rand(10000)*(.0001)+.5;\\\\nx=.5+.25*sin(time)*(.48-y);\\\\n\\\\nvol=(bass+mid+treb)*.333;\\\\n\\\\na=above((.35*treb),x);\\\\n\\\\nr=bass*.2;\\\\ng=mid*.3;\\\\nb=treb*.75;\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"additive\\\":1,\\\"smoothing\\\":1,\\\"a\\\":0.05,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t1 = 1\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"y=rand(10000)*(.0001)+.5;\\\\nx=.5-(pow(sin(time),y)+(.55-y));\\\\nx=if(above(x,y),y+sin(time)+(1-y),x);\\\\n\\\\nvol=(bass+mid+treb)*.333;\\\\n\\\\nr=bass*.5;\\\\ng=mid*.5;\\\\nb=treb*.5;\\\"}],\\\"init_eqs_eel\\\":\\\"decay=0.1;\\\",\\\"frame_eqs_eel\\\":\\\"sx=1;\\\\nsy=1;\\\\n\\\\nredsine=.5+.15*bass*sin(time*3);\\\\ngreensine=.5+.15*mid*sin(time*2);\\\\nbluesine=.5+.15*treb*sin(time);\\\\n\\\\nredif=.9*if(above(bass,1.2),redsine,if(above(redif,.95),0,redif*.98));\\\\ngreenif=.8*if(above(mid,1.2),greensine,if(above(greenif,.95),0,greenif*.8));\\\\nblueif=.8*if(above(treb,1.2),bluesine,if(above(blueif,.95),0,blueif*.8));\\\\n\\\\nib_r=redif;\\\\nib_g=greenif;\\\\nib_b=blueif;\\\",\\\"pixel_eqs_eel\\\":\\\"ang2=sin(ang*3+time+(.05*sin(time*above(mid_att,1.2))));\\\\n\\\\nrot=1.2*(ang2);\\\",\\\"warp\\\":\\\" shader_body { \\\\n vec4 tmpvar_1;\\\\n tmpvar_1.w = 1.0;\\\\n tmpvar_1.xyz = (((texture (sampler_blur1, uv).xyz * scale1) + bias1) - texture (sampler_main, uv).xyz);\\\\n ret = tmpvar_1.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n vec3 ret_1;\\\\n ret_1 = (mix (texture (sampler_main, uv).xyz, texture (sampler_main, (\\\\n (vec2(-1.003, 1.003) * (uv - 0.5))\\\\n + 0.5)).xyz, vec3(0.5, 0.5, 0.5)) * 2.4);\\\\n ret_1 = (ret_1 * ret_1);\\\\n vec4 tmpvar_2;\\\\n tmpvar_2.w = 1.0;\\\\n tmpvar_2.xyz = ret_1;\\\\n ret = tmpvar_2.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Halfbreak - Funny Madness.json\":\n/*!**********************************************************!*\\\n !*** ./presets/converted/Halfbreak - Funny Madness.json ***!\n \\**********************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":1,\\\"gammaadj\\\":1,\\\"decay\\\":0.99,\\\"echo_zoom\\\":1,\\\"echo_alpha\\\":0.5,\\\"wave_mode\\\":7,\\\"additivewave\\\":1,\\\"modwavealphabyvolume\\\":1,\\\"wave_brighten\\\":0,\\\"wrap\\\":0,\\\"darken_center\\\":1,\\\"darken\\\":1,\\\"invert\\\":1,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":1.286,\\\"wave_smoothing\\\":0.63,\\\"modwavealphastart\\\":0.71,\\\"modwavealphaend\\\":1.3,\\\"warpscale\\\":2.853,\\\"zoomexp\\\":3.6,\\\"zoom\\\":1.02109,\\\"rot\\\":-0.16,\\\"warp\\\":0.309,\\\"wave_r\\\":0.65,\\\"wave_g\\\":0.65,\\\"wave_b\\\":0.65,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":0,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"sides\\\":39,\\\"additive\\\":1,\\\"num_inst\\\":126,\\\"rad\\\":0.06989,\\\"tex_ang\\\":0.62832,\\\"a\\\":0,\\\"r2\\\":1,\\\"g2\\\":0,\\\"a2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"ma=ma+(above(bass,1)*3.1415*.01*bass);\\\\nma=ma-(above(treb,1)*3.1415*.01*treb);\\\\n\\\\nmx=mx+(.0002*cos(ma));\\\\nmy=my+(.0002*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.8));\\\"},{\\\"baseVals\\\":{\\\"sides\\\":41,\\\"additive\\\":1,\\\"num_inst\\\":239,\\\"rad\\\":0.06989,\\\"tex_ang\\\":0.62832,\\\"r\\\":0,\\\"g\\\":1,\\\"a2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"ma=ma+(above(bass,1)*3.1415*.05*bass);\\\\nma=ma-(above(mid,1)*3.1415*.05*mid);\\\\n\\\\nmx=mx+(.0001*cos(ma));\\\\nmy=my+(.0001*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.1));\\\"},{\\\"baseVals\\\":{\\\"sides\\\":43,\\\"additive\\\":1,\\\"num_inst\\\":32,\\\"rad\\\":0.06989,\\\"tex_ang\\\":0.62832,\\\"r\\\":0,\\\"b\\\":1,\\\"g2\\\":0,\\\"b2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"ma=ma+(above(mid,1)*3.1415*.01*mid);\\\\nma=ma-(above(treb,1)*3.1415*.01*treb);\\\\n\\\\nmx=mx+(.0004*cos(ma));\\\\nmy=my+(.0004*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.3));\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":14,\\\"rad\\\":0.15964,\\\"tex_ang\\\":0.62832,\\\"a\\\":0,\\\"r2\\\":1,\\\"b2\\\":1,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"ma=ma+(above(bass,1)*3.1415*.01*bass);\\\\nma=ma-(above(treb,1)*3.1415*.01*treb);\\\\n\\\\nmx=mx+(.0002*cos(ma));\\\\nmy=my+(.0002*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.8));\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"ma=ma+(above(bass,1)*3.1415*.05*bass);\\\\nma=ma-(above(mid,1)*3.1415*.05*mid);\\\\n\\\\nmx=mx+(.0001*cos(ma));\\\\nmy=my+(.0001*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.1));\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"ma=ma+(above(mid,1)*3.1415*.01*mid);\\\\nma=ma-(above(treb,1)*3.1415*.01*treb);\\\\n\\\\nmx=mx+(.0004*cos(ma));\\\\nmy=my+(.0004*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.3));\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"ma=ma+(above(bass,.5)*3.1415*.02*bass);\\\\nma=ma-(above(treb,.5)*3.1415*.02*treb);\\\\n\\\\nmx=mx+(.0008*cos(ma));\\\\nmy=my+(.0008*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.2));\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"wave_r = wave_r + 0.400*( 0.60*sin(0.933*time) + 0.40*sin(1.045*time) );\\\\nwave_g = wave_g + 0.400*( 0.60*sin(0.900*time) + 0.40*sin(0.956*time) );\\\\nwave_b = wave_b + 0.400*( 0.60*sin(0.910*time) + 0.40*sin(0.920*time) );\\\\nq8 = oldq8+if(above(bass+bass_att,1.8),q8+0.0005*pow((bass+bass_att-1),9),0);\\\\noldq8 = q8;\\\\nmonitor = q8;\\\\nzoom = zoom + 0.023*( 0.60*sin(0.339*q8) + 0.40*sin(0.276*q8) );\\\\nrot = rot + 0.030*( 0.60*sin(0.381*q8) + 0.40*sin(0.579*q8) );\\\\n//decay = decay - 0.02*equal(frame%40,0);\\\\nmv_r = wave_r;\\\\nmv_b = wave_b;\\\\nmv_g = wave_g;\\\\nmv_x = 1.25;\\\\nmv_y = 1.25;\\\\nmv_dx = 0.1*sin(1.1*time);\\\\nmv_dy = 0.1*cos(1.112*time);\\\",\\\"pixel_eqs_eel\\\":\\\"rot=rot+1/(10*(rad+0.2+0.1*sin(q8)));\\\",\\\"warp\\\":\\\" shader_body { \\\\n vec2 my_uv_1;\\\\n vec3 ret_2;\\\\n vec2 tmpvar_3;\\\\n tmpvar_3 = (vec2(1280.0, 1024.0) * texsize.zw);\\\\n float tmpvar_4;\\\\n vec2 tmpvar_5;\\\\n tmpvar_5 = (uv + vec2(0.005, 0.0));\\\\n vec2 tmpvar_6;\\\\n tmpvar_6 = (uv - vec2(0.005, 0.0));\\\\n tmpvar_4 = (((\\\\n (texture (sampler_blur2, tmpvar_5).xyz * scale2)\\\\n + bias2) - (\\\\n (texture (sampler_blur2, tmpvar_6).xyz * scale2)\\\\n + bias2)).x * tmpvar_3.x);\\\\n float tmpvar_7;\\\\n vec2 tmpvar_8;\\\\n tmpvar_8 = (uv + vec2(0.0, 0.005));\\\\n vec2 tmpvar_9;\\\\n tmpvar_9 = (uv - vec2(0.0, 0.005));\\\\n tmpvar_7 = (((\\\\n (texture (sampler_blur2, tmpvar_8).xyz * scale2)\\\\n + bias2) - (\\\\n (texture (sampler_blur2, tmpvar_9).xyz * scale2)\\\\n + bias2)).x * tmpvar_3.y);\\\\n vec2 tmpvar_10;\\\\n tmpvar_10.x = tmpvar_4;\\\\n tmpvar_10.y = tmpvar_7;\\\\n vec2 tmpvar_11;\\\\n tmpvar_11.x = (((\\\\n (texture (sampler_blur2, tmpvar_5).xyz * scale2)\\\\n + bias2) - (\\\\n (texture (sampler_blur2, tmpvar_6).xyz * scale2)\\\\n + bias2)).x * tmpvar_3.x);\\\\n tmpvar_11.y = (((\\\\n (texture (sampler_blur2, tmpvar_8).xyz * scale2)\\\\n + bias2) - (\\\\n (texture (sampler_blur2, tmpvar_9).xyz * scale2)\\\\n + bias2)).x * tmpvar_3.y);\\\\n ret_2.x = texture (sampler_fw_main, ((uv - (tmpvar_10 * 0.01)) + (tmpvar_11 * 0.003))).x;\\\\n vec4 tmpvar_12;\\\\n tmpvar_12 = texture (sampler_blur3, uv);\\\\n ret_2.x = (ret_2.x + ((ret_2.x - \\\\n ((tmpvar_12.xyz * scale3) + bias3)\\\\n .x) * 0.1));\\\\n ret_2.x = (ret_2.x + 0.004);\\\\n vec2 tmpvar_13;\\\\n tmpvar_13.x = tmpvar_7;\\\\n tmpvar_13.y = -(tmpvar_4);\\\\n my_uv_1 = (uv + ((tmpvar_13 * 0.05) * (1.2 - \\\\n ((tmpvar_12.xyz * scale3) + bias3)\\\\n .y)));\\\\n ret_2.z = texture (sampler_fw_main, my_uv_1).z;\\\\n vec2 x_14;\\\\n x_14 = (my_uv_1 - uv);\\\\n ret_2.z = (ret_2.z + ((\\\\n ((ret_2.z - ((texture (sampler_blur1, uv).xyz * scale1) + bias1).z) * sqrt(dot (x_14, x_14)))\\\\n * 180.0) / sqrt(\\\\n dot (tmpvar_3, tmpvar_3)\\\\n )));\\\\n ret_2.z = (ret_2.z * 0.8);\\\\n ret_2.z = (ret_2.z + 0.004);\\\\n vec2 tmpvar_15;\\\\n tmpvar_15.x = -(tmpvar_7);\\\\n tmpvar_15.y = tmpvar_4;\\\\n my_uv_1 = (tmpvar_15 * 0.045);\\\\n vec2 tmpvar_16;\\\\n tmpvar_16.x = (((\\\\n (texture (sampler_blur2, (uv + vec2(0.01, 0.0))).xyz * scale2)\\\\n + bias2) - (\\\\n (texture (sampler_blur2, (uv - vec2(0.01, 0.0))).xyz * scale2)\\\\n + bias2)).y * tmpvar_3.x);\\\\n tmpvar_16.y = (((\\\\n (texture (sampler_blur2, (uv + vec2(0.0, 0.01))).xyz * scale2)\\\\n + bias2) - (\\\\n (texture (sampler_blur2, (uv - vec2(0.0, 0.01))).xyz * scale2)\\\\n + bias2)).y * tmpvar_3.y);\\\\n my_uv_1 = (my_uv_1 + (uv - (tmpvar_16 * 0.03)));\\\\n ret_2.y = texture (sampler_fw_main, my_uv_1).y;\\\\n ret_2.y = (ret_2.y + ((\\\\n (ret_2.y - ((texture (sampler_blur3, my_uv_1).xyz * scale3) + bias3).y)\\\\n * 0.1) + 0.01));\\\\n vec4 tmpvar_17;\\\\n tmpvar_17.w = 1.0;\\\\n tmpvar_17.xyz = ret_2;\\\\n ret = tmpvar_17.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n vec2 uv2_1;\\\\n float blur_2;\\\\n float crisp_3;\\\\n vec3 ret_4;\\\\n vec4 tmpvar_5;\\\\n tmpvar_5 = texture (sampler_main, uv);\\\\n vec4 tmpvar_6;\\\\n tmpvar_6 = texture (sampler_blur1, uv);\\\\n ret_4 = (tmpvar_5.xyz + ((\\\\n (tmpvar_6.xyz * scale1)\\\\n + bias1) * 3.0));\\\\n uv2_1 = (((uv - 0.5) * 0.8) + 0.5);\\\\n crisp_3 = texture (sampler_main, uv2_1).y;\\\\n blur_2 = ((texture (sampler_blur1, uv2_1).xyz * scale1) + bias1).y;\\\\n ret_4 = (ret_4 * (1.0 - (blur_2 * 1.15)));\\\\n vec3 tmpvar_7;\\\\n tmpvar_7 = max (ret_4, vec3(crisp_3));\\\\n uv2_1 = uv;\\\\n crisp_3 = tmpvar_5.x;\\\\n blur_2 = ((tmpvar_6.xyz * scale1) + bias1).x;\\\\n ret_4 = (tmpvar_7 * (1.0 - (blur_2 * 1.15)));\\\\n vec3 tmpvar_8;\\\\n tmpvar_8 = max (ret_4, tmpvar_5.xxx);\\\\n ret_4 = tmpvar_8;\\\\n vec4 tmpvar_9;\\\\n tmpvar_9.w = 1.0;\\\\n tmpvar_9.xyz = tmpvar_8;\\\\n ret = tmpvar_9.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Halfbreak - Light of Breakers.json\":\n/*!**************************************************************!*\\\n !*** ./presets/converted/Halfbreak - Light of Breakers.json ***!\n \\**************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":1,\\\"gammaadj\\\":1.98,\\\"decay\\\":0.5,\\\"echo_zoom\\\":1,\\\"echo_alpha\\\":0.5,\\\"echo_orient\\\":3,\\\"additivewave\\\":1,\\\"wave_dots\\\":1,\\\"wave_thick\\\":1,\\\"wave_brighten\\\":0,\\\"darken\\\":1,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":0.527,\\\"wave_smoothing\\\":0,\\\"wave_mystery\\\":0.6,\\\"modwavealphastart\\\":0,\\\"modwavealphaend\\\":1.32,\\\"warpanimspeed\\\":1.459,\\\"warpscale\\\":2.007,\\\"zoom\\\":0.9999,\\\"warp\\\":0.01,\\\"sx\\\":0.9999,\\\"wave_g\\\":0.49,\\\"ob_a\\\":1,\\\"ib_size\\\":0.26,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":1.85,\\\"mv_r\\\":0.5,\\\"mv_g\\\":0.5,\\\"mv_b\\\":0.5,\\\"mv_a\\\":0,\\\"b2x\\\":0.6,\\\"b3x\\\":0.4,\\\"b1ed\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"sides\\\":8,\\\"additive\\\":1,\\\"num_inst\\\":256,\\\"rad\\\":0.03632,\\\"tex_ang\\\":1.00531,\\\"tex_zoom\\\":1.53117,\\\"g\\\":1,\\\"b\\\":1,\\\"a\\\":0,\\\"g2\\\":0,\\\"border_r\\\":0,\\\"border_g\\\":0,\\\"border_b\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":5,\\\"additive\\\":1,\\\"num_inst\\\":256,\\\"x\\\":0.26,\\\"y\\\":0.2,\\\"rad\\\":0.39317,\\\"tex_zoom\\\":0.9355,\\\"g2\\\":0,\\\"a2\\\":0.2,\\\"border_g\\\":0,\\\"border_b\\\":0,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"n = (instance);\\\\nFLen = reg00;\\\\nSLen = reg00/2;\\\\n\\\\nz0 = 10;\\\\ny0 = gmegabuf(2000+n+FLen)/z0;\\\\nx0 = gmegabuf(2000+n)/z0;\\\\n\\\\na0 = (gmegabuf(n+10000));\\\\n\\\\nk1 = instance/num_inst-.5;\\\\nx = .5 + x0 + sin(k1*8*sin(q12*.07)) * sin(q11*.13)*q3*.7; \\\\ny = .5 + q32*(y0 + sin(k1*8*sin(q14*.1)) * sin(q13*.2)*q3*.7); \\\\n\\\\narg = q2/8;\\\\nhigh = exp(-500*pow(arg+.5-instance/num_inst,2));\\\\nhigh += exp(-500*pow(-arg+.5-instance/num_inst,2));\\\\n\\\\nexc = sqrt((pow(x-.5,2)+pow(y-.5,2)));\\\\nrad0 = above(z0,0)*min (.1, a0/60)+.005;\\\\nrad0 = rad0 * (1+2*exc) * (1+high);\\\\n\\\\np1 = .5 + sin(q12)/2;\\\\np2 = .5 + sin(q13*1.4)/2;\\\\n//p1 = rand(1)-.5;\\\\n//p2 = rand(1)-.5;\\\\nexc = ((pow(x-p1,2)+pow(y-p2,2)));\\\\nrad = min(rad0 * (1 + .004*q3/abs(exc)),1) ;\\\\n\\\\na = min(a0*8+.4,1);\\\\n\\\\nk1 = instance/num_inst*5 + high;\\\\nw = 1-exp(-treb_att/2-.5);\\\\ng = w + (1-w)*sin(k1);\\\\nr = w + (1-w)*sin(k1-6.28/3);\\\\nb = w + (1-w)*sin(k1-6.28*2/3);\\\\n\\\\na2 = a/4;\\\\ng2 = g*0; b2 = b*0; r2 = r*0;\\\"},{\\\"baseVals\\\":{\\\"sides\\\":13,\\\"additive\\\":1,\\\"num_inst\\\":5,\\\"x\\\":0.65,\\\"y\\\":0.38,\\\"rad\\\":0.57049,\\\"tex_zoom\\\":0.73678,\\\"a\\\":0.7,\\\"g2\\\":0,\\\"border_r\\\":0.5,\\\"border_g\\\":0.5,\\\"border_b\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"k1 = instance/num_inst;\\\\nx = .5 + .3*sin(instance*k1*413);\\\\ny = .5 + .3 * sin(instance*k1*113);\\\\n\\\\nrad = .1 + .4*sin(k1*333);\\\\n\\\\nr = .5*sin(k1*234);\\\\nb = .5*sin(k1*534);\\\\ng = .5*sin(k1*34);\\\"},{\\\"baseVals\\\":{\\\"sides\\\":14,\\\"additive\\\":1,\\\"thickoutline\\\":1,\\\"textured\\\":1,\\\"x\\\":0.6,\\\"y\\\":0.55,\\\"rad\\\":0.97237,\\\"ang\\\":1.25664,\\\"tex_zoom\\\":0.34933,\\\"g\\\":0.6,\\\"g2\\\":0,\\\"b2\\\":1,\\\"border_r\\\":0.2,\\\"border_g\\\":0.7,\\\"border_b\\\":0.5,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sep\\\":120,\\\"spectrum\\\":1,\\\"additive\\\":1,\\\"scaling\\\":7.52386,\\\"smoothing\\\":0,\\\"r\\\":0,\\\"a\\\":0.7},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"FLen = reg00;\\\\n\\\\nn = int(sample*FLen);\\\\nvol = (value1+value2) * (1+ .1 / (sample+.03));\\\\n\\\\nchg = min(max(vol- gmegabuf(n),-1),1);\\\\ndec = if (chg>0, 1-chg*0.3, 1+chg*0.2);\\\\n\\\\nchg = q1 -q2;\\\\ndec = .94 - abs(chg) * if (chg> 0, .2,.1);\\\\n\\\\ndec = min(max(dec,0),1);\\\\ngmegabuf(n) = gmegabuf(n)*dec + vol*(1-dec);\\\\n\\\\ndec = q2/4;\\\\n//dec = .90;\\\\ndec = max(min(dec,1),.1);\\\\n\\\\ngmegabuf(n) = gmegabuf(n)*dec + gmegabuf(n+(q2<.8))*(1-dec);\\\\ngmegabuf(n+10000) = gmegabuf(n+10000)*.2 + .8* vol/3;\\\\na = .0;\\\\nx = sample;\\\\ny = .2 + gmegabuf(n+0)*.23;\\\"},{\\\"baseVals\\\":{\\\"samples\\\":256,\\\"usedots\\\":1,\\\"scaling\\\":0.89152,\\\"smoothing\\\":0.82,\\\"a\\\":0.9,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"samples\\\":32,\\\"thick\\\":1,\\\"scaling\\\":0.89152,\\\"smoothing\\\":0.82,\\\"r\\\":0,\\\"g\\\":0.2,\\\"b\\\":0.6,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"spectrum\\\":1,\\\"usedots\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"n = 0;\\\\nloop (50000,\\\\ngmegabuf(n) = 0;\\\\nmegabuf(n) = 0;\\\\nn = n+1;\\\\n);\\\\n\\\\nsw1 = rand(8);\\\\nsw2 = rand(8);\\\\nsw3 = rand(8);\\\\nsw4 = rand(8);\\\",\\\"frame_eqs_eel\\\":\\\"flen = 512; //Wave Punkte\\\\nreg00 = FLen;\\\\nSLen = FLen/2;\\\\ndec_m = pow(.94, 30/fps);\\\\n\\\\n//Volume\\\\nn = 0; vol = 0;\\\\nloop (SLen,\\\\n vol = vol + pow(gmegabuf(n),2)/FLen; \\\\n n = n+1;\\\\n);\\\\nvol = sqrt(vol)/2;\\\\nvol_ = vol_*dec_m + (1-dec_m)* (vol);\\\\n\\\\n//switches\\\\nlev1 = lev1 * dec_m + (1-dec_m) * gmegabuf(1);\\\\nlev2 = lev2 * dec_m + (1-dec_m) * gmegabuf(20);\\\\nlev3 = lev3 * dec_m + (1-dec_m) * gmegabuf(50);\\\\nlev4 = lev4 * dec_m + (1-dec_m) * gmegabuf(100);\\\\nsw1 = sw1 + (lev1-gmegabuf(1)>0)/fps;\\\\nsw2 = sw2 + (lev2-gmegabuf(20)>0)/fps;\\\\nsw3 = sw3 + (lev3-gmegabuf(50)>0)/fps;\\\\nsw4 = sw4 + (lev4-gmegabuf(100)>0)/fps;\\\\n\\\\ndif = (1+sin(sw3/4))*16+2;\\\\nofs = sin(sw2/3)*8;\\\\nn = 0; k1 = frame*0; \\\\nloop (SLen,\\\\n m1 = (n)%SLen;\\\\n m2 = (n+ofs)%SLen;\\\\n\\\\n k = (m1+dif)%SLen;\\\\n i = (SLen+m2-dif)%SLen;\\\\n\\\\n in1 = (gmegabuf(m1)-gmegabuf(k))/pow(vol_+.03,.8)*1.2;\\\\n in2 = (gmegabuf(m2)-gmegabuf(i))/pow(vol_+.03,.8)*1.2;\\\\n\\\\n dec = if (pow(gmegabuf(2000+n),2) + pow(gmegabuf(2000+FLen+n),2)> in1*in1+in2*in2,.8,.94) ;\\\\n dec = pow (dec, 30/fps); \\\\n\\\\n gmegabuf(2000+n) = gmegabuf(2000+n)*dec +(1-dec)* in1;\\\\n gmegabuf(2000+FLen+n) = gmegabuf(2000+FLen+n)*dec +(1-dec)* in2;\\\\n n=n+1;\\\\n);\\\\n\\\\nq1 = (bass+treb+mid)/3;\\\\nq2 = (bass_att+treb_att+mid_att)/3;\\\\nq3 = vol_;\\\\nq11 = sw1;\\\\nq12 = sw2;\\\\nq13 = sw3;\\\\nq14 = sw4;\\\\n\\\\nrot = 0; zoom = .98; warp = .3; rot = 0;\\\\n\\\\nq32 = aspecty;\\\\nmonitor = dif;\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\" shader_body { \\\\n vec2 uv_1;\\\\n uv_1 = uv;\\\\n vec2 zz_2;\\\\n vec2 tmpvar_3;\\\\n tmpvar_3 = (uv - vec2(0.5, 0.5));\\\\n vec3 tmpvar_4;\\\\n tmpvar_4 = (0.016 * texture (sampler_noise_lq, ((uv * 0.3) + (0.01 * rand_frame).xy))).xyz;\\\\n vec2 tmpvar_5;\\\\n tmpvar_5 = (0.8 * sin((tmpvar_3 * 8.0)));\\\\n float tmpvar_6;\\\\n tmpvar_6 = clamp ((0.01 / sqrt(\\\\n dot (tmpvar_5, tmpvar_5)\\\\n )), 0.0, 1.0);\\\\n vec2 tmpvar_7;\\\\n tmpvar_7 = ((-(tmpvar_3) * texsize.xy) * q26);\\\\n zz_2 = tmpvar_7;\\\\n if ((q25 == 1.0)) {\\\\n zz_2 = (tmpvar_7 * (abs(tmpvar_3.y) / abs(tmpvar_3.x)));\\\\n } else {\\\\n if ((q25 == 2.0)) {\\\\n zz_2 = (zz_2 * (abs(tmpvar_3.y) - abs(tmpvar_3.x)));\\\\n };\\\\n };\\\\n uv_1 = (uv + ((\\\\n clamp ((sin(zz_2) / cos(zz_2)), vec2(-20.0, -20.0), vec2(20.0, 20.0))\\\\n * texsize.zw) * 4.0));\\\\n vec4 tmpvar_8;\\\\n tmpvar_8.w = 1.0;\\\\n tmpvar_8.xyz = (((\\\\n (0.95 * (texture (sampler_main, uv_1) + tmpvar_6).xyz)\\\\n + tmpvar_4) - 0.02) - (0.06 * (\\\\n (texture (sampler_blur2, uv_1).xyz * scale2)\\\\n + bias2).x));\\\\n ret = tmpvar_8.xyz;\\\\n }\\\",\\\"comp\\\":\\\"vec3 xlat_mutableblur;\\\\nvec3 xlat_mutableret1;\\\\n shader_body { \\\\n vec2 uv_1;\\\\n vec2 uv2_2;\\\\n uv_1 = (uv - 0.5);\\\\n uv_1 = (uv_1 * aspect.xy);\\\\n float tmpvar_3;\\\\n tmpvar_3 = (0.02 * q27);\\\\n xlat_mutableblur = ((texture (sampler_blur1, (\\\\n (uv_1 + 0.4)\\\\n + tmpvar_3)).xyz * scale1) + bias1);\\\\n xlat_mutableret1 = max (vec3(0.0, 0.0, 0.0), (texture (sampler_main, (\\\\n (uv_1 + 0.4)\\\\n + tmpvar_3)).xyz + (xlat_mutableblur * 2.0)));\\\\n uv2_2.x = ((uv_1.x * 0.0007962743) - (uv_1.y * 0.9999997));\\\\n uv2_2.y = ((uv_1.x * 0.9999997) + (uv_1.y * 0.0007962743));\\\\n xlat_mutableblur = ((texture (sampler_blur1, (\\\\n (uv2_2 + 0.4)\\\\n + tmpvar_3)).xyz * scale1) + bias1);\\\\n xlat_mutableret1 = max (xlat_mutableret1, (texture (sampler_main, (\\\\n (uv2_2 + 0.4)\\\\n + tmpvar_3)).xyz + (xlat_mutableblur * 2.0)));\\\\n uv2_2.x = ((uv_1.x * -0.9999987) - (uv_1.y * 0.001592548));\\\\n uv2_2.y = ((uv_1.x * 0.001592548) + (uv_1.y * -0.9999987));\\\\n xlat_mutableblur = ((texture (sampler_blur1, (\\\\n (uv2_2 + 0.4)\\\\n + tmpvar_3)).xyz * scale1) + bias1);\\\\n xlat_mutableret1 = max (xlat_mutableret1, (texture (sampler_main, (\\\\n (uv2_2 + 0.4)\\\\n + tmpvar_3)).xyz + (xlat_mutableblur * 2.0)));\\\\n uv2_2.x = ((uv_1.x * -0.00238894) - (uv_1.y * -0.9999971));\\\\n uv2_2.y = ((uv_1.x * -0.9999971) + (uv_1.y * -0.00238894));\\\\n xlat_mutableblur = ((texture (sampler_blur1, (\\\\n (uv2_2 + 0.4)\\\\n + tmpvar_3)).xyz * scale1) + bias1);\\\\n xlat_mutableret1 = max (xlat_mutableret1, (texture (sampler_main, (\\\\n (uv2_2 + 0.4)\\\\n + tmpvar_3)).xyz + (xlat_mutableblur * 2.0)));\\\\n uv2_2.x = ((uv_1.x * 0.9999949) - (uv_1.y * -0.003185092));\\\\n uv2_2.y = ((uv_1.x * -0.003185092) + (uv_1.y * 0.9999949));\\\\n xlat_mutableblur = ((texture (sampler_blur1, (\\\\n (uv2_2 + 0.4)\\\\n + tmpvar_3)).xyz * scale1) + bias1);\\\\n xlat_mutableret1 = max (xlat_mutableret1, (texture (sampler_main, (\\\\n (uv2_2 + 0.4)\\\\n + tmpvar_3)).xyz + (xlat_mutableblur * 2.0)));\\\\n vec4 tmpvar_4;\\\\n tmpvar_4.w = 1.0;\\\\n tmpvar_4.xyz = (xlat_mutableret1 * 1.5);\\\\n ret = tmpvar_4.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Hexcollie, Pieturp, Orb, Flexi, Geiss n Demon Lord - Premeditative Urination Clause.json\":\n/*!********************************************************************************************************************!*\\\n !*** ./presets/converted/Hexcollie, Pieturp, Orb, Flexi, Geiss n Demon Lord - Premeditative Urination Clause.json ***!\n \\********************************************************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":1,\\\"gammaadj\\\":1,\\\"decay\\\":1,\\\"echo_zoom\\\":1,\\\"echo_orient\\\":2,\\\"wave_a\\\":0.001,\\\"warpanimspeed\\\":2.13,\\\"warpscale\\\":2.498,\\\"zoomexp\\\":0.67288,\\\"zoom\\\":1.025,\\\"warp\\\":0.36146,\\\"wave_r\\\":0,\\\"wave_g\\\":0,\\\"wave_b\\\":0,\\\"ob_size\\\":0.005,\\\"ob_b\\\":1,\\\"ob_a\\\":1,\\\"ib_size\\\":0,\\\"ib_r\\\":0,\\\"ib_g\\\":0,\\\"ib_b\\\":0,\\\"ib_a\\\":1,\\\"mv_r\\\":0.8,\\\"mv_a\\\":0,\\\"b1ed\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"thick\\\":1,\\\"smoothing\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"speed = bass_att*0.6;\\\\nv = sample*10000 + value2*bass*0.1;\\\\n\\\\nxs = xs + sin(v*1)*speed*atan(v*1.51);\\\\nys = ys + sin(v*1)*speed;\\\\n\\\\nx = 0.5 + 0.5*sin(xs*0.1)*cos(time*2 + xs);\\\\ny = 0.5 + 0.5*sin(ys*0.1)*cos(time*2.1 + xs);\\\\n\\\\nx = x*0.6;\\\\ny*0.9 + 0.05 + bass*0.08;\\\\n\\\\ny = y*0.8 + 0.1;\\\\n\\\\nr = 0.5 + 0.4*sin(time*1.22 + x);\\\\ng = 0.5 + 0.4*sin(time*1.307 + y);\\\\nb = 0.5 + 0.4*sin(time*1.959 + x/y);\\\\n\\\\nxs = if(above(xs,1000),0 ,xs);\\\\nys = if(above(ys,1000),0 ,ys);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"thick\\\":1,\\\"smoothing\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"speed = bass_att*0.6;\\\\nv = sample*10000 + value2*bass*0.1;\\\\n\\\\nxs = xs + sin(v*1)*speed*atan(v*1.51);\\\\nys = ys + sin(v*1)*speed;\\\\n\\\\nx = 0.5 + 0.5*sin(xs*0.1)*cos(time*2 + xs);\\\\ny = 0.5 + 0.5*sin(ys*0.1)*cos(time*2.1 + xs);\\\\n\\\\nx = -x*0.6 + 1;\\\\ny = y + bass*0.01;\\\\n//y = y*0.5 + 0.25;\\\\ny = y*0.8 + 0.1;\\\\n\\\\nr = 0.5 + 0.4*sin(time*1.22 + x);\\\\ng = 0.5 + 0.4*sin(time*1.307 + y);\\\\nb = 0.5 + 0.4*sin(time*1.959 + x/y);\\\\n\\\\nxs = if(above(xs,1000),0 ,xs);\\\\nys = if(above(ys,1000),0 ,ys);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"thick\\\":1,\\\"smoothing\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"speed = bass_att*0.6;\\\\nv = sample*10000 + value2*bass*0.1;\\\\n\\\\nxs = xs + sin(v*1)*speed*atan(v*1.51);\\\\nys = ys + sin(v*1)*speed;\\\\n\\\\n\\\\nx = 0.5 + 0.5*sin(xs*0.1)*cos(time*2 + xs);\\\\ny = 0.5 + 0.5*sin(ys*0.1)*cos(time*2.1 + xs);\\\\n\\\\nx = x*0.6;\\\\ny = y*0.9 - 0.05 + bass*0.08;\\\\ny = y*0.8 + 0.1;\\\\n\\\\nr = 0.5 + 0.4*sin(time*1.789 + y);\\\\ng = 0.5 + 0.4*sin(time*1.478 + x);\\\\nb = 0.5 + 0.4*sin(time*1.125 + y/x);\\\\n\\\\nxs = if(above(xs,1000),0 ,xs);\\\\nys = if(above(ys,1000),0 ,ys);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"thick\\\":1,\\\"smoothing\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"speed = bass_att*0.6;\\\\nv = sample*10000 + value2*bass*0.1;\\\\n\\\\nxs = xs + sin(v*1)*speed*atan(v*1.51);\\\\nys = ys + sin(v*1)*speed;\\\\n\\\\nx = 0.5 + 0.5*sin(xs*0.1)*cos(time*2 + xs);\\\\ny = 0.5 + 0.5*sin(ys*0.1)*cos(time*2.1 + xs);\\\\n\\\\nx = -x*0.6 + 1;\\\\ny = y*0.9 - 0.05 + bass*0.08;\\\\ny = y*0.8 + 0.1;\\\\n\\\\nr = 0.5 + 0.4*sin(time*1.789 + y);\\\\ng = 0.5 + 0.4*sin(time*1.478 + x);\\\\nb = 0.5 + 0.4*sin(time*1.125 + y/x);\\\\n\\\\nxs = if(above(xs,1000),0 ,xs);\\\\nys = if(above(ys,1000),0 ,ys);\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"wave_a = 0;\\\\n//warp = 0;\\\\nr = r*0.9 + (bass-treb)*0.5;\\\\nrot = r*0.02;\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\" shader_body { \\\\n vec2 my_uv_1;\\\\n vec3 ret_2;\\\\n vec2 tmpvar_3;\\\\n tmpvar_3 = (vec2(1280.0, 1024.0) * texsize.zw);\\\\n float tmpvar_4;\\\\n vec2 tmpvar_5;\\\\n tmpvar_5 = (uv + vec2(0.005, 0.0));\\\\n vec2 tmpvar_6;\\\\n tmpvar_6 = (uv - vec2(0.005, 0.0));\\\\n tmpvar_4 = (((\\\\n (texture (sampler_blur2, tmpvar_5).xyz * scale2)\\\\n + bias2) - (\\\\n (texture (sampler_blur2, tmpvar_6).xyz * scale2)\\\\n + bias2)).x * tmpvar_3.x);\\\\n float tmpvar_7;\\\\n vec2 tmpvar_8;\\\\n tmpvar_8 = (uv + vec2(0.0, 0.005));\\\\n vec2 tmpvar_9;\\\\n tmpvar_9 = (uv - vec2(0.0, 0.005));\\\\n tmpvar_7 = (((\\\\n (texture (sampler_blur2, tmpvar_8).xyz * scale2)\\\\n + bias2) - (\\\\n (texture (sampler_blur2, tmpvar_9).xyz * scale2)\\\\n + bias2)).x * tmpvar_3.y);\\\\n vec2 tmpvar_10;\\\\n tmpvar_10.x = tmpvar_4;\\\\n tmpvar_10.y = tmpvar_7;\\\\n vec2 tmpvar_11;\\\\n tmpvar_11.x = (((\\\\n (texture (sampler_blur2, tmpvar_5).xyz * scale2)\\\\n + bias2) - (\\\\n (texture (sampler_blur2, tmpvar_6).xyz * scale2)\\\\n + bias2)).x * tmpvar_3.x);\\\\n tmpvar_11.y = (((\\\\n (texture (sampler_blur2, tmpvar_8).xyz * scale2)\\\\n + bias2) - (\\\\n (texture (sampler_blur2, tmpvar_9).xyz * scale2)\\\\n + bias2)).x * tmpvar_3.y);\\\\n ret_2.x = texture (sampler_fw_main, ((uv - (tmpvar_10 * 0.01)) + (tmpvar_11 * 0.003))).x;\\\\n vec4 tmpvar_12;\\\\n tmpvar_12 = texture (sampler_blur3, uv);\\\\n ret_2.x = (ret_2.x + ((ret_2.x - \\\\n ((tmpvar_12.xyz * scale3) + bias3)\\\\n .x) * 0.1));\\\\n ret_2.x = (ret_2.x + 0.004);\\\\n vec2 tmpvar_13;\\\\n tmpvar_13.x = tmpvar_7;\\\\n tmpvar_13.y = -(tmpvar_4);\\\\n my_uv_1 = (uv + ((tmpvar_13 * 0.05) * (1.2 - \\\\n ((tmpvar_12.xyz * scale3) + bias3)\\\\n .y)));\\\\n ret_2.z = texture (sampler_fw_main, my_uv_1).z;\\\\n vec2 x_14;\\\\n x_14 = (my_uv_1 - uv);\\\\n ret_2.z = (ret_2.z + ((\\\\n ((ret_2.z - ((texture (sampler_blur1, uv).xyz * scale1) + bias1).z) * sqrt(dot (x_14, x_14)))\\\\n * 180.0) / sqrt(\\\\n dot (tmpvar_3, tmpvar_3)\\\\n )));\\\\n ret_2.z = (ret_2.z * 0.8);\\\\n ret_2.z = (ret_2.z + 0.004);\\\\n vec2 tmpvar_15;\\\\n tmpvar_15.x = -(tmpvar_7);\\\\n tmpvar_15.y = tmpvar_4;\\\\n my_uv_1 = (tmpvar_15 * 0.045);\\\\n vec2 tmpvar_16;\\\\n tmpvar_16.x = (((\\\\n (texture (sampler_blur2, (uv + vec2(0.01, 0.0))).xyz * scale2)\\\\n + bias2) - (\\\\n (texture (sampler_blur2, (uv - vec2(0.01, 0.0))).xyz * scale2)\\\\n + bias2)).y * tmpvar_3.x);\\\\n tmpvar_16.y = (((\\\\n (texture (sampler_blur2, (uv + vec2(0.0, 0.01))).xyz * scale2)\\\\n + bias2) - (\\\\n (texture (sampler_blur2, (uv - vec2(0.0, 0.01))).xyz * scale2)\\\\n + bias2)).y * tmpvar_3.y);\\\\n my_uv_1 = (my_uv_1 + (uv - (tmpvar_16 * 0.03)));\\\\n ret_2.y = texture (sampler_fw_main, my_uv_1).y;\\\\n ret_2.y = (ret_2.y + ((\\\\n (ret_2.y - ((texture (sampler_blur3, my_uv_1).xyz * scale3) + bias3).y)\\\\n * 0.1) + 0.01));\\\\n vec4 tmpvar_17;\\\\n tmpvar_17.w = 1.0;\\\\n tmpvar_17.xyz = ret_2;\\\\n ret = tmpvar_17.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n vec3 ret_1;\\\\n vec2 tmpvar_2;\\\\n tmpvar_2.x = (1.0 - q4);\\\\n tmpvar_2.y = q8;\\\\n vec2 tmpvar_3;\\\\n tmpvar_3 = (tmpvar_2 + ((uv - tmpvar_2) * 0.992));\\\\n ret_1 = (mix (mix (vec3(0.0, 0.0, 0.2), vec3(0.3, 0.0, 1.0), texture (sampler_fw_main, tmpvar_3).yyy), vec3(1.0, 1.0, 0.0), vec3(max (\\\\n (((texture (sampler_blur1, tmpvar_3).xyz * scale1) + bias1).z * 1.5)\\\\n , texture (sampler_main, \\\\n (tmpvar_2 + ((uv - tmpvar_2) * 0.996))\\\\n ).z))) * (1.0 - (\\\\n ((texture (sampler_blur1, tmpvar_3).xyz * scale1) + bias1)\\\\n .x * 2.0)));\\\\n vec3 tmpvar_4;\\\\n tmpvar_4 = mix (ret_1, vec3(1.0, 0.1, 0.4), texture (sampler_fw_main, uv).xxx);\\\\n ret_1 = tmpvar_4;\\\\n vec4 tmpvar_5;\\\\n tmpvar_5.w = 1.0;\\\\n tmpvar_5.xyz = tmpvar_4;\\\\n ret = tmpvar_5.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/LuxXx - Play v3 (the war within all of us).json\":\n/*!***************************************************************************!*\\\n !*** ./presets/converted/LuxXx - Play v3 (the war within all of us).json ***!\n \\***************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":1,\\\"gammaadj\\\":1.78,\\\"decay\\\":0.5,\\\"echo_zoom\\\":1,\\\"echo_alpha\\\":0.5,\\\"echo_orient\\\":3,\\\"wave_dots\\\":1,\\\"wave_thick\\\":1,\\\"modwavealphabyvolume\\\":1,\\\"wave_brighten\\\":0,\\\"darken\\\":1,\\\"wave_a\\\":100,\\\"wave_scale\\\":28.599,\\\"wave_smoothing\\\":0.5,\\\"wave_mystery\\\":-1,\\\"modwavealphastart\\\":0.4,\\\"modwavealphaend\\\":1,\\\"warpanimspeed\\\":1.459,\\\"warpscale\\\":2.007,\\\"zoom\\\":0.9999,\\\"warp\\\":0.01,\\\"sx\\\":0.9999,\\\"ob_size\\\":0,\\\"ob_b\\\":0.2,\\\"ob_a\\\":1,\\\"ib_size\\\":0,\\\"ib_r\\\":0,\\\"ib_g\\\":0,\\\"ib_a\\\":1,\\\"mv_l\\\":1.5,\\\"mv_r\\\":0,\\\"mv_g\\\":0,\\\"mv_b\\\":0,\\\"mv_a\\\":0,\\\"b1x\\\":0.7,\\\"b1ed\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":100,\\\"rad\\\":0.40031,\\\"r\\\":0.5,\\\"g\\\":0.5,\\\"r2\\\":0.5,\\\"g2\\\":0,\\\"border_b\\\":0.5,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"sounds=(bass+treb+mid)/3;\\\\n\\\\nrad=rad*sounds*0.6;\\\\n\\\\nr=r+sin(bass)*g;\\\\ng=g+sin(mid)*g;\\\\n\\\\n\\\\nx=x+0.207*cos(time*bass*0.1);\\\\ny=y+0.207*sin(time*bass*0.1);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":100,\\\"rad\\\":0.13465,\\\"r2\\\":1,\\\"a2\\\":0.3,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\\ng2=g2+0.09*sin((treb+mid)*1.23);\\\\ng=g+0.09*cos((bass+mid)*1.37);\\\\n\\\\nsounds=(bass+mid+treb)/3;\\\\n\\\\nrad=rad*(treb+mid)/3;\\\\n\\\\nx=x+0.300*sin(time*bass);\\\\ny=y+0.317*cos(time*bass);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":100,\\\"rad\\\":0.20047,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":0.5,\\\"g2\\\":0.5,\\\"b2\\\":1,\\\"border_b\\\":0.5,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"sounds=(bass+treb+mid)/3;\\\\natt=(bass_att+treb_att+mid_att)/3;\\\\natt=(bass_att+treb_att+mid_att)/3;\\\\nr2=r2+(0.25*sin(time*6.28))-bass;\\\\ng2=g2+(0.25*sin(time*6.28))-bass;\\\\n\\\\nrad=rad;\\\\nx=x+0.217*cos(time*2.3)+sounds*0.1;\\\\ny=y+0.217*sin((time*3.5)+(sounds*0.3));\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"sep\\\":256,\\\"scaling\\\":20.35074,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"r=r+0.5*sin(treb*1.13);\\\\ng=g+0.5*sin(bass*1.33);\\\\nb=b+0.5*sin(mid*1.23);\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sep\\\":256,\\\"usedots\\\":1,\\\"scaling\\\":100,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"dec_med = pow (0.8, 30/fps);\\\\ndec_slow = pow (0.9, 30/fps);\\\\nbeat = max (max (bass, mid), treb); \\\\navg = avg*dec_slow + beat*(1-dec_slow);\\\\nis_beat = above(beat, .5+avg+peak) * above (time, t0+.2);\\\\nt0 = is_beat*time + (1-is_beat)*t0;\\\\npeak = is_beat * beat + (1-is_beat)*peak*dec_med;\\\\nindex = (index + is_beat) %16;\\\\nindex2 = (index2 + is_beat*bnot(index))%5;\\\\nmonitor = index2;\\\\n\\\\nq20 = avg;\\\\nq21 = beat;\\\\nq22 = peak;\\\\nq23 = index;\\\\nq24 = is_beat;\\\\nq26 = bass + mid + treb;\\\\n\\\\nsb = sb*dec_med + q21*(1-dec_med);\\\\nq29 = sb;\\\\n\\\\nk1 = is_beat*bnot(index)*bnot(index2);\\\\np1 = (index2-2);\\\\n\\\\np2 = dec_med * p2+ (1-dec_med)*p1;\\\\np3 = dec_med * p3+ (1-dec_med)*p2;\\\\nq5 = cos(p3*3.14/2);\\\\n\\\\nrott = rott + .003*30/fps*p3;\\\\n\\\\nq1 = cos(rott);\\\\nq2 = sin(rott);\\\\nq3 = -q2;\\\\nq4 = q1;\\\\n\\\\nmovx = movx + .002*30/fps;\\\\nq28 = movx;\\\\n\\\\nq15 = (1+sin(time/23))*.15;\\\\nq29 = 4*(.5+sin(time/17));\\\\nq30 = 5/(1.2+sin(time/50)); \\\\nq31 = sin(time/38)/3;\\\\nq32 = 2+sin(time/18);\\\\n\\\\nwarp = .06;\\\\nzoom = .998;\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\" shader_body { \\\\n vec2 uv_1;\\\\n vec2 uv6_2;\\\\n uv_1 = (uv + (vec2(0.0, 0.01) * dot (\\\\n ((texture (sampler_blur1, uv).xyz * scale1) + bias1)\\\\n , vec3(0.32, 0.49, 0.29))));\\\\n uv6_2 = (0.4 * sin((\\\\n (uv_1 * 8.0)\\\\n + \\\\n (rand_frame * 6.0)\\\\n .xy)));\\\\n vec4 tmpvar_3;\\\\n tmpvar_3.w = 1.0;\\\\n tmpvar_3.xyz = (((\\\\n (texture (sampler_main, uv_1).xyz - (((texture (sampler_blur2, \\\\n fract(uv_1)\\\\n ).xyz * scale2) + bias2) * 0.03))\\\\n + \\\\n (0.1 * (vec3((0.1 / sqrt(\\\\n dot (uv6_2, uv6_2)\\\\n ))) * ((1.0 + roam_cos) / 2.0).xyz))\\\\n ) * 0.99) - 0.02);\\\\n ret = tmpvar_3.xyz;\\\\n }\\\",\\\"comp\\\":\\\"vec3 xlat_mutableblur;\\\\nvec3 xlat_mutableret1;\\\\nvec2 xlat_mutableuv2;\\\\nvec2 xlat_mutableuv3;\\\\n shader_body { \\\\n vec2 uv_1;\\\\n float inten_2;\\\\n float dist_3;\\\\n float ang2_4;\\\\n uv_1 = (uv - 0.5);\\\\n uv_1 = (uv_1 * aspect.xy);\\\\n float tmpvar_5;\\\\n tmpvar_5 = cos(q30);\\\\n float tmpvar_6;\\\\n tmpvar_6 = sin(q30);\\\\n xlat_mutableuv2.x = ((uv_1.x * tmpvar_5) - (uv_1.y * tmpvar_6));\\\\n xlat_mutableuv2.y = ((uv_1.x * tmpvar_6) + (uv_1.y * tmpvar_5));\\\\n xlat_mutableuv2 = (xlat_mutableuv2 * aspect.yx);\\\\n dist_3 = (1.0 - fract(q29));\\\\n inten_2 = ((4.0 * dist_3) * (1.0 - (dist_3 * dist_3)));\\\\n xlat_mutableuv3 = (((3.0 * xlat_mutableuv2) * dist_3) + 0.5);\\\\n xlat_mutableblur = (((texture (sampler_blur1, \\\\n fract(xlat_mutableuv3)\\\\n ).xyz * scale1) + bias1) * vec3(0.8, 0.9, 1.0));\\\\n xlat_mutableret1 = max (vec3(0.0, 0.0, 0.0), ((texture (sampler_main, xlat_mutableuv3).xyz + xlat_mutableblur) * inten_2));\\\\n ang2_4 = (2.093333 + q30);\\\\n float tmpvar_7;\\\\n tmpvar_7 = cos(ang2_4);\\\\n float tmpvar_8;\\\\n tmpvar_8 = sin(ang2_4);\\\\n xlat_mutableuv2.x = ((uv_1.x * tmpvar_7) - (uv_1.y * tmpvar_8));\\\\n xlat_mutableuv2.y = ((uv_1.x * tmpvar_8) + (uv_1.y * tmpvar_7));\\\\n xlat_mutableuv2 = (xlat_mutableuv2 * aspect.yx);\\\\n dist_3 = (1.0 - fract((0.3333333 + q29)));\\\\n inten_2 = ((4.0 * dist_3) * (1.0 - (dist_3 * dist_3)));\\\\n xlat_mutableuv3 = (((3.0 * xlat_mutableuv2) * dist_3) + 0.5);\\\\n xlat_mutableblur = (((texture (sampler_blur1, \\\\n fract(xlat_mutableuv3)\\\\n ).xyz * scale1) + bias1) * vec3(0.8, 0.9, 1.0));\\\\n xlat_mutableret1 = max (xlat_mutableret1, ((texture (sampler_main, xlat_mutableuv3).xyz + xlat_mutableblur) * inten_2));\\\\n ang2_4 = (4.186667 + q30);\\\\n float tmpvar_9;\\\\n tmpvar_9 = cos(ang2_4);\\\\n float tmpvar_10;\\\\n tmpvar_10 = sin(ang2_4);\\\\n xlat_mutableuv2.x = ((uv_1.x * tmpvar_9) - (uv_1.y * tmpvar_10));\\\\n xlat_mutableuv2.y = ((uv_1.x * tmpvar_10) + (uv_1.y * tmpvar_9));\\\\n xlat_mutableuv2 = (xlat_mutableuv2 * aspect.yx);\\\\n dist_3 = (1.0 - fract((0.6666667 + q29)));\\\\n inten_2 = ((4.0 * dist_3) * (1.0 - (dist_3 * dist_3)));\\\\n xlat_mutableuv3 = (((3.0 * xlat_mutableuv2) * dist_3) + 0.5);\\\\n xlat_mutableblur = (((texture (sampler_blur1, \\\\n fract(xlat_mutableuv3)\\\\n ).xyz * scale1) + bias1) * vec3(0.8, 0.9, 1.0));\\\\n xlat_mutableret1 = max (xlat_mutableret1, ((texture (sampler_main, xlat_mutableuv3).xyz + xlat_mutableblur) * inten_2));\\\\n ang2_4 = (6.28 + q30);\\\\n float tmpvar_11;\\\\n tmpvar_11 = cos(ang2_4);\\\\n float tmpvar_12;\\\\n tmpvar_12 = sin(ang2_4);\\\\n xlat_mutableuv2.x = ((uv_1.x * tmpvar_11) - (uv_1.y * tmpvar_12));\\\\n xlat_mutableuv2.y = ((uv_1.x * tmpvar_12) + (uv_1.y * tmpvar_11));\\\\n xlat_mutableuv2 = (xlat_mutableuv2 * aspect.yx);\\\\n dist_3 = (1.0 - fract((1.0 + q29)));\\\\n inten_2 = ((4.0 * dist_3) * (1.0 - (dist_3 * dist_3)));\\\\n xlat_mutableuv3 = (((3.0 * xlat_mutableuv2) * dist_3) + 0.5);\\\\n xlat_mutableblur = (((texture (sampler_blur1, \\\\n fract(xlat_mutableuv3)\\\\n ).xyz * scale1) + bias1) * vec3(0.8, 0.9, 1.0));\\\\n xlat_mutableret1 = max (xlat_mutableret1, ((texture (sampler_main, xlat_mutableuv3).xyz + xlat_mutableblur) * inten_2));\\\\n vec4 tmpvar_13;\\\\n tmpvar_13.w = 1.0;\\\\n tmpvar_13.xyz = (xlat_mutableret1 - 0.1);\\\\n ret = tmpvar_13.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Martin - acid wiring.json\":\n/*!*****************************************************!*\\\n !*** ./presets/converted/Martin - acid wiring.json ***!\n \\*****************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":0,\\\"gammaadj\\\":1.980001,\\\"decay\\\":0.5,\\\"echo_zoom\\\":0.999998,\\\"echo_alpha\\\":0.5,\\\"echo_orient\\\":3,\\\"wave_mode\\\":4,\\\"additivewave\\\":1,\\\"wave_thick\\\":1,\\\"modwavealphabyvolume\\\":1,\\\"wave_brighten\\\":0,\\\"darken_center\\\":1,\\\"darken\\\":1,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":0.527429,\\\"wave_smoothing\\\":0.45,\\\"modwavealphastart\\\":0,\\\"modwavealphaend\\\":1.32,\\\"warpanimspeed\\\":0.442,\\\"warpscale\\\":0.498,\\\"zoom\\\":0.9999,\\\"warp\\\":0.01,\\\"sx\\\":0.9999,\\\"wave_r\\\":0.8,\\\"wave_g\\\":0.49,\\\"ob_size\\\":0,\\\"ob_r\\\":1,\\\"ob_g\\\":1,\\\"ob_b\\\":1,\\\"ob_a\\\":0.05,\\\"ib_size\\\":0.26,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":1.85,\\\"mv_r\\\":0.4999,\\\"mv_g\\\":0.4999,\\\"mv_b\\\":0.4999,\\\"mv_a\\\":0,\\\"b1ed\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"rad\\\":0.048958,\\\"tex_ang\\\":1.00531,\\\"tex_zoom\\\":1.531168,\\\"r\\\":0.5,\\\"g\\\":1,\\\"b\\\":0.9,\\\"r2\\\":0.83,\\\"g2\\\":0.93,\\\"b2\\\":0.8,\\\"a2\\\":1,\\\"border_b\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\\ntrel = time/3;\\\\n\\\\nx = .5+sin(trel*2);\\\\ny = .5+cos(trel*1.3);\\\\n\\\\n\\\\n\\\\ncent = sqrt((x-.5)*(x-.5)+(y-.5)*(y-.5));\\\\n\\\\nrad = .1*cent;\\\\na = .8;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"thickoutline\\\":1,\\\"textured\\\":1,\\\"x\\\":0.26,\\\"y\\\":0.2,\\\"rad\\\":0.393173,\\\"tex_zoom\\\":1.392831,\\\"r\\\":0,\\\"g\\\":0.55,\\\"b\\\":0.5,\\\"a\\\":0.9,\\\"g2\\\":0.4,\\\"b2\\\":0.4,\\\"border_r\\\":0.3,\\\"border_g\\\":0.7,\\\"border_b\\\":0.8,\\\"border_a\\\":0.2},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"trig = q24;\\\\n\\\\ntextured = 1;\\\\n\\\\nx0 = x0*bnot(trig) + trig*(.2+ rand(100)/200); \\\\ny0 = y0*bnot(trig) + trig*(.2+ rand(100)/200); \\\\n\\\\n\\\\nx0 = x0 + .03*q1*(3+q26)/fps;\\\\ny0 = y0 + .03*q2*(3+q26)/fps;\\\\n\\\\nx0 = x0 - int(x0);\\\\ny0 = y0 - int(y0);\\\\n\\\\ntex_ang = time;\\\\n//tex_zoom = q1;\\\\nang = time*q2;\\\\nx = x0; y = y0;\\\\nrad0 = rad0*bnot(trig) + trig*rand(100)/200;\\\\nrad = rad0;\\\\n\\\\n\\\\nr0 = r0*bnot(trig) + trig * rand(10)/10;\\\\nb0 = b0*bnot(trig) + trig * rand(10)/10;\\\\ng0 = g0*bnot(trig) + trig * rand(10)/10;\\\\n\\\\nborder_r = r0; border_g = g0; border_b = b0;\\\\n\\\\nr = r0; b = b0; g = g0;\\\"},{\\\"baseVals\\\":{\\\"additive\\\":1,\\\"x\\\":0.503,\\\"rad\\\":0.038857,\\\"tex_zoom\\\":0.609857,\\\"g\\\":0.1,\\\"a\\\":0.9,\\\"r2\\\":1,\\\"b2\\\":1,\\\"border_r\\\":0.5,\\\"border_g\\\":0.5,\\\"border_b\\\":0.5,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x = rand(50)/50;\\\\ny = .5 - 0*rand(15)/200;\\\\n\\\\nr = .4;\\\\ng = .6;\\\\nb = 1;\\\\nr2 = r;\\\\ng2 = g;\\\\nb2 = b;\\\\n\\\\na = min(q21/2 ,.9);\\\\nrad = a * (.1+abs(x-.5))/2 ;\\\"},{\\\"baseVals\\\":{\\\"thickoutline\\\":1,\\\"textured\\\":1,\\\"x\\\":0.26,\\\"y\\\":0.76,\\\"rad\\\":0.39478,\\\"tex_zoom\\\":0.499805,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":0.8,\\\"border_r\\\":0.2,\\\"border_g\\\":0.7,\\\"border_b\\\":0.5,\\\"border_a\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"tex_zoom = q27/2;\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"samples\\\":282,\\\"sep\\\":20,\\\"thick\\\":1,\\\"additive\\\":1,\\\"scaling\\\":3.915805,\\\"smoothing\\\":0.1,\\\"r\\\":0.2,\\\"g\\\":0.3,\\\"a\\\":0.6,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"t2 = t2 + bass_att;\\\",\\\"point_eqs_eel\\\":\\\"\\\\nx = sample;\\\\ny = value1 * rand(50)/100 * abs(sample-.5)+ .49;\\\\n\\\\na = q26/4 * (.2 + abs(sample-.5)); \\\"},{\\\"baseVals\\\":{\\\"usedots\\\":1,\\\"thick\\\":1,\\\"scaling\\\":0.891519,\\\"smoothing\\\":0.82,\\\"a\\\":0.1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"xi = rand(100)/100;\\\\nyi = rand(100)/100;\\\\n\\\\nx = xi; y = yi;\\\\n\\\\na = q21/15; \\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"scaling\\\":0.891519,\\\"smoothing\\\":0.82,\\\"r\\\":0,\\\"g\\\":0.2,\\\"b\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"spectrum\\\":1,\\\"usedots\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"dirx = 1;\\\",\\\"frame_eqs_eel\\\":\\\"dec_med = pow (0.6, 30/fps);\\\\ndec_slow = pow (0.9, 30/fps);\\\\nbeat = max (max (bass, mid), treb); \\\\navg = avg*dec_slow + beat*(1-dec_slow);\\\\nis_beat = above(beat, .2+avg+peak) * above (time, t0+.2);\\\\nt0 = is_beat*time + (1-is_beat)*t0;\\\\npeak = is_beat * beat + (1-is_beat)*peak*dec_med;\\\\nindex = (index + is_beat) %8;\\\\nindex2 = (index2 + is_beat*bnot(index))%4;\\\\nindex3 = (index3 + is_beat*bnot(index)*bnot(index2))%3;\\\\n\\\\n\\\\nq20 = avg;\\\\nq21 = beat;\\\\nq22 = peak;\\\\nq23 = index;\\\\nq24 = is_beat;\\\\nq26 = bass + mid + treb;\\\\nava = ava*dec_slow + q26*(1-dec_slow);\\\\n\\\\n\\\\n//k1 = is_beat*bnot(index)*bnot(index2);\\\\n\\\\nk1 = is_beat*equal(index%2,0);\\\\np1 = k1*(p1+1) + (1-k1)*p1;\\\\np2 = dec_med * p2+ (1-dec_med)*p1;\\\\nrott = p2 * 3.1416/2;\\\\nq1 = cos(rott);\\\\nq2 = sin(rott);\\\\nq3 = -q2;\\\\nq4 = q1;\\\\n\\\\nq27 = 8-index;\\\\nq28 = .5 + sin(time/7)/10;\\\\n\\\\nrm = min(q26-1.5*ava,2);\\\\nmov = is_beat*rm + (1-is_beat)*mov;\\\\n\\\\nmovez = movez + .4/fps*mov;\\\\nq30 = movez;\\\\n//**************************\\\\n\\\\nampl = q26/8;\\\\n\\\\nmovex = movex + .2/fps*sin(rott);\\\\nmovey = movey + .2/fps*cos(rott);\\\\n\\\\nq18 = movex; q19 = movey;\\\\ntrel = trel + 1/fps + q24;\\\\nq17 = 2*sin(trel/4);\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\" shader_body { \\\\n vec2 uv_1;\\\\n vec2 uv6_2;\\\\n vec2 tmpvar_3;\\\\n tmpvar_3 = ((uv - 0.5) * aspect.xy);\\\\n float tmpvar_4;\\\\n tmpvar_4 = (((q28 * 2.0) * sqrt(\\\\n dot (tmpvar_3, tmpvar_3)\\\\n )) + (rand_frame * 64.0)).x;\\\\n uv_1 = (uv + (clamp (\\\\n ((sin(tmpvar_4) / cos(tmpvar_4)) * normalize(tmpvar_3))\\\\n , vec2(-16.0, -16.0), vec2(16.0, 16.0)) / 20.0));\\\\n uv6_2 = (0.4 * sin((tmpvar_3 * 12.0)));\\\\n vec4 tmpvar_5;\\\\n tmpvar_5.w = 1.0;\\\\n tmpvar_5.xyz = (((q24 * \\\\n (((texture (sampler_main, uv_1).xyz - (\\\\n ((texture (sampler_blur1, fract(uv_1)).xyz * scale1) + bias1)\\\\n * 0.04)) + (0.15 * (vec3(\\\\n (0.1 / sqrt(dot (uv6_2, uv6_2)))\\\\n ) * roam_cos.xyz))) - 0.04)\\\\n ) * 0.98) + ((1.0 - q24) * texture (sampler_main, uv_orig).xyz));\\\\n ret = tmpvar_5.xyz;\\\\n }\\\",\\\"comp\\\":\\\"vec3 xlat_mutableneu;\\\\nvec3 xlat_mutableret1;\\\\nvec2 xlat_mutablers2;\\\\n shader_body { \\\\n vec2 uv_1;\\\\n float inten_3;\\\\n float dist_4;\\\\n float ang2_5;\\\\n vec2 uv2_6;\\\\n uv_1 = (uv - 0.5);\\\\n uv_1 = (uv_1 * aspect.xy);\\\\n dist_4 = 1.0;\\\\n inten_3 = 1.0;\\\\n xlat_mutableret1 = vec3(0.0, 0.0, 0.0);\\\\n for (float n_2 = 0.0; n_2 <= 4.0; n_2 += 1.0) {\\\\n vec2 uv3_7;\\\\n ang2_5 = ((6.28 * n_2) / 4.0);\\\\n float tmpvar_8;\\\\n tmpvar_8 = cos(ang2_5);\\\\n float tmpvar_9;\\\\n tmpvar_9 = sin(ang2_5);\\\\n uv2_6.x = ((uv_1.x * tmpvar_8) - (uv_1.y * tmpvar_9));\\\\n uv2_6.y = ((uv_1.x * tmpvar_9) + (uv_1.y * tmpvar_8));\\\\n uv2_6 = (uv2_6 * aspect.yx);\\\\n dist_4 = (1.0 - fract((\\\\n (0.25 * n_2)\\\\n + q30)));\\\\n inten_3 = ((sqrt(dist_4) * (1.0 - dist_4)) * 4.0);\\\\n vec2 tmpvar_10;\\\\n tmpvar_10.x = tmpvar_8;\\\\n tmpvar_10.y = tmpvar_9;\\\\n uv3_7 = (fract((\\\\n ((3.0 * uv2_6) * dist_4)\\\\n + \\\\n (0.3 * q27)\\\\n )) + (q17 * tmpvar_10));\\\\n xlat_mutableneu = (texture (sampler_main, uv3_7).xyz - ((texture (sampler_blur2, \\\\n ((uv3_7 * 1.02) * q1)\\\\n ).xyz * scale2) + bias2));\\\\n xlat_mutableneu = (xlat_mutableneu * vec3(greaterThanEqual (xlat_mutableneu, vec3(0.0, 0.0, 0.0))));\\\\n xlat_mutableret1 = max (xlat_mutableret1, (xlat_mutableneu * inten_3));\\\\n };\\\\n xlat_mutablers2 = ((0.4 * cos(\\\\n ((uv_1 * 13.0) + time)\\\\n )) - dot (xlat_mutableret1, vec3(0.32, 0.49, 0.29)));\\\\n vec4 tmpvar_11;\\\\n tmpvar_11.w = 1.0;\\\\n tmpvar_11.xyz = (xlat_mutableret1 + ((\\\\n ((0.05 / sqrt(dot (xlat_mutablers2, xlat_mutablers2))) * q26)\\\\n / 4.0) * hue_shader));\\\\n ret = tmpvar_11.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Martin - charisma.json\":\n/*!**************************************************!*\\\n !*** ./presets/converted/Martin - charisma.json ***!\n \\**************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":0,\\\"gammaadj\\\":1.980001,\\\"decay\\\":0.5,\\\"echo_zoom\\\":0.999998,\\\"echo_alpha\\\":0.5,\\\"echo_orient\\\":3,\\\"wave_mode\\\":4,\\\"additivewave\\\":1,\\\"wave_dots\\\":1,\\\"modwavealphabyvolume\\\":1,\\\"darken\\\":1,\\\"wave_a\\\":0.33064,\\\"wave_scale\\\":0.897961,\\\"wave_smoothing\\\":0.108,\\\"wave_mystery\\\":0.1,\\\"modwavealphastart\\\":0.72,\\\"modwavealphaend\\\":1.28,\\\"warpanimspeed\\\":1.4595,\\\"warpscale\\\":2.0067,\\\"zoom\\\":0.9999,\\\"warp\\\":0.01,\\\"sx\\\":0.9999,\\\"wave_r\\\":0,\\\"wave_g\\\":0.5,\\\"wave_b\\\":0.5,\\\"wave_y\\\":0.54,\\\"ob_r\\\":1,\\\"ob_g\\\":1,\\\"ob_b\\\":1,\\\"ib_size\\\":0.26,\\\"mv_x\\\":24.799994,\\\"mv_dy\\\":0.16,\\\"mv_l\\\":1.5,\\\"mv_a\\\":0,\\\"b1ed\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"sides\\\":3,\\\"rad\\\":0.312746,\\\"tex_zoom\\\":0.179142,\\\"r\\\":0.82,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"xy=0.5+rand_frame;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"samples\\\":352,\\\"usedots\\\":1,\\\"additive\\\":1,\\\"scaling\\\":0.038558,\\\"smoothing\\\":0.2,\\\"g\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"q1=bass_att;\\\",\\\"point_eqs_eel\\\":\\\"r = abs (sin (frame /38));\\\\ng = 0.5*abs (cos (frame /45));\\\\nb = 0.5*abs (sin (frame / 133));\\\\na = 0.3;\\\\nt02 = t02 + q1/10;\\\\nratio = sin (frame/49);\\\\n\\\\nampl = 0.01+0.4*sqr(sin ((frame ) / 18)* cos (frame / 123));\\\\n\\\\nx1 = (r-0.5)/15 +0.5 + ampl* sin (sample*6.28);\\\\ny1 = (b-0.5)/15+0.5 + ampl* cos (sample*6.28);\\\\n\\\\nx = x1+1*0.2*(ampl+ratio )*sin ( sample*6.28 * ratio*7.3);\\\\ny = y1+1*0.2*(ampl+ratio )*cos ( sample*6.28*6);\\\\n\\\"},{\\\"baseVals\\\":{\\\"samples\\\":15,\\\"scaling\\\":2.063781,\\\"smoothing\\\":0.8,\\\"r\\\":0.8,\\\"g\\\":0,\\\"b\\\":0.6,\\\"a\\\":0.9,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"samples\\\":112,\\\"additive\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"clear = 0.5;\\\",\\\"frame_eqs_eel\\\":\\\"dec_med = pow (0.96, 30/fps);\\\\ndec_slow = pow (0.99, 30/fps);\\\\nbeat = max (max (bass, mid), treb); \\\\navg = avg*dec_slow + beat*(1-dec_slow);\\\\nis_beat = above(beat, .2+avg+peak) * above (time, t0+.2);\\\\nt0 = is_beat*time + (1-is_beat)*t0;\\\\npeak = is_beat * beat + (1-is_beat)*peak*dec_med;\\\\nindex = (index + is_beat) %4;\\\\nindex2 = (index2 + is_beat*bnot(index))%8;\\\\nindex3 = (index3 + is_beat*bnot(index)*bnot(index2))%3;\\\\n\\\\n\\\\nq20 = avg;\\\\nq21 = beat;\\\\nq22 = peak;\\\\nq23 = index;\\\\nq24 = is_beat;\\\\nq26 = bass + mid + treb;\\\\n\\\\n//k1 = is_beat*bnot(index)*bnot(index2);\\\\n\\\\nk1 = is_beat*equal(index,0);\\\\np1 = k1*(p1+1) + (1-k1)*p1;\\\\np2 = dec_med * p2+ (1-dec_med)*p1;\\\\np3 = dec_med * p3+ (1-dec_med)*p2;\\\\nrott = p3*3.1416/4;\\\\n\\\\nrot1 = rot1 + q26;\\\\nq25 = .01*rot1;\\\\n\\\\nq27 = 8-index;\\\\nq28 = index3;\\\\n\\\\ndx1 = dec_med*dx1 + (1-dec_med)*bnot(index2);\\\\nq29 = dx1;\\\\nmonitor = q29;\\\\n\\\\nq1 = cos(rott);\\\\nq2 = sin(rott);\\\\nq3 = -q2;\\\\nq4 = q1;\\\\n\\\\n\\\\nq5 = 1.5*cos(time/9);\\\\nq6 = .5*sin(time/7);\\\\n\\\\nclear = clear *dec_med + 1-dec_med;\\\\nq32 = clear;\\\\n\\\\nmov = bnot(q24)*movex + (rand(100)/100-50)*q2;\\\\nmovex = movex + .2/fps *q2;\\\\nq18 = movex;\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\" shader_body { \\\\n vec2 uv6_1;\\\\n vec2 tmpvar_2;\\\\n tmpvar_2 = ((uv - 0.5) * aspect.xy);\\\\n float tmpvar_3;\\\\n tmpvar_3 = (rand_frame * 64.0).x;\\\\n uv6_1 = (0.5 * cos((\\\\n ((tmpvar_2 * mat2(0.7, -0.7, 0.7, 0.7)) * 17.0)\\\\n + \\\\n (rand_frame * 6.0)\\\\n .xy)));\\\\n float x_4;\\\\n x_4 = (uv6_1.x + uv6_1.y);\\\\n vec4 tmpvar_5;\\\\n tmpvar_5.w = 1.0;\\\\n tmpvar_5.xyz = ((0.147 * (\\\\n (texture (sampler_main, (uv + clamp ((\\\\n (sin(tmpvar_3) / cos(tmpvar_3))\\\\n * \\\\n normalize(tmpvar_2)\\\\n ), vec2(-8.0, -8.0), vec2(8.0, 8.0)))).xyz + (0.15 * (vec3((0.01 / \\\\n sqrt((x_4 * x_4))\\\\n )) * roam_cos.xyz)))\\\\n - 0.02)) + ((0.85 * \\\\n (texture (sampler_main, uv_orig).xyz - 0.002)\\\\n ) * q32));\\\\n ret = tmpvar_5.xyz;\\\\n }\\\",\\\"comp\\\":\\\"vec2 xlat_mutabledz;\\\\nvec3 xlat_mutableret1;\\\\nvec2 xlat_mutableuv3;\\\\nvec2 xlat_mutableuv4;\\\\n shader_body { \\\\n vec2 uv_1;\\\\n float inten_2;\\\\n float dist_3;\\\\n vec3 ret_4;\\\\n uv_1 = (uv - 0.5);\\\\n float tmpvar_5;\\\\n tmpvar_5 = (time / 2.0);\\\\n dist_3 = (1.0 - fract(tmpvar_5));\\\\n inten_2 = ((sqrt(dist_3) * (1.0 - dist_3)) * 2.0);\\\\n vec2 tmpvar_6;\\\\n tmpvar_6.y = 0.4;\\\\n tmpvar_6.x = q18;\\\\n xlat_mutableuv3 = (((2.0 * uv_1) * dist_3) + tmpvar_6);\\\\n vec2 tmpvar_7;\\\\n tmpvar_7.y = 0.0;\\\\n tmpvar_7.x = texsize.z;\\\\n vec2 tmpvar_8;\\\\n tmpvar_8.y = 0.0;\\\\n tmpvar_8.x = texsize.z;\\\\n xlat_mutabledz.x = (inten_2 * dot ((texture (sampler_main, \\\\n (xlat_mutableuv3 + tmpvar_7)\\\\n ).xyz - texture (sampler_main, \\\\n (xlat_mutableuv3 - tmpvar_8)\\\\n ).xyz), vec3(0.32, 0.49, 0.29)));\\\\n vec2 tmpvar_9;\\\\n tmpvar_9.x = 0.0;\\\\n tmpvar_9.y = texsize.w;\\\\n vec2 tmpvar_10;\\\\n tmpvar_10.x = 0.0;\\\\n tmpvar_10.y = texsize.w;\\\\n xlat_mutabledz.y = (inten_2 * dot ((texture (sampler_main, \\\\n (xlat_mutableuv3 + tmpvar_9)\\\\n ).xyz - texture (sampler_main, \\\\n (xlat_mutableuv3 - tmpvar_10)\\\\n ).xyz), vec3(0.32, 0.49, 0.29)));\\\\n xlat_mutableret1 = max (vec3(0.0, 0.0, 0.0), (texture (sampler_main, xlat_mutableuv3).xyz * inten_2));\\\\n dist_3 = (1.0 - fract((0.3333333 + tmpvar_5)));\\\\n inten_2 = ((sqrt(dist_3) * (1.0 - dist_3)) * 2.0);\\\\n vec2 tmpvar_11;\\\\n tmpvar_11.y = 0.4;\\\\n tmpvar_11.x = q18;\\\\n xlat_mutableuv3 = (((2.0 * uv_1) * dist_3) + tmpvar_11);\\\\n vec2 tmpvar_12;\\\\n tmpvar_12.y = 0.0;\\\\n tmpvar_12.x = texsize.z;\\\\n vec2 tmpvar_13;\\\\n tmpvar_13.y = 0.0;\\\\n tmpvar_13.x = texsize.z;\\\\n xlat_mutabledz.x = (xlat_mutabledz.x + (inten_2 * dot (\\\\n (texture (sampler_main, (xlat_mutableuv3 + tmpvar_12)).xyz - texture (sampler_main, (xlat_mutableuv3 - tmpvar_13)).xyz)\\\\n , vec3(0.32, 0.49, 0.29))));\\\\n vec2 tmpvar_14;\\\\n tmpvar_14.x = 0.0;\\\\n tmpvar_14.y = texsize.w;\\\\n vec2 tmpvar_15;\\\\n tmpvar_15.x = 0.0;\\\\n tmpvar_15.y = texsize.w;\\\\n xlat_mutabledz.y = (xlat_mutabledz.y + (inten_2 * dot (\\\\n (texture (sampler_main, (xlat_mutableuv3 + tmpvar_14)).xyz - texture (sampler_main, (xlat_mutableuv3 - tmpvar_15)).xyz)\\\\n , vec3(0.32, 0.49, 0.29))));\\\\n xlat_mutableret1 = max (xlat_mutableret1, (texture (sampler_main, xlat_mutableuv3).xyz * inten_2));\\\\n dist_3 = (1.0 - fract((0.6666667 + tmpvar_5)));\\\\n inten_2 = ((sqrt(dist_3) * (1.0 - dist_3)) * 2.0);\\\\n vec2 tmpvar_16;\\\\n tmpvar_16.y = 0.4;\\\\n tmpvar_16.x = q18;\\\\n xlat_mutableuv3 = (((2.0 * uv_1) * dist_3) + tmpvar_16);\\\\n vec2 tmpvar_17;\\\\n tmpvar_17.y = 0.0;\\\\n tmpvar_17.x = texsize.z;\\\\n vec2 tmpvar_18;\\\\n tmpvar_18.y = 0.0;\\\\n tmpvar_18.x = texsize.z;\\\\n xlat_mutabledz.x = (xlat_mutabledz.x + (inten_2 * dot (\\\\n (texture (sampler_main, (xlat_mutableuv3 + tmpvar_17)).xyz - texture (sampler_main, (xlat_mutableuv3 - tmpvar_18)).xyz)\\\\n , vec3(0.32, 0.49, 0.29))));\\\\n vec2 tmpvar_19;\\\\n tmpvar_19.x = 0.0;\\\\n tmpvar_19.y = texsize.w;\\\\n vec2 tmpvar_20;\\\\n tmpvar_20.x = 0.0;\\\\n tmpvar_20.y = texsize.w;\\\\n xlat_mutabledz.y = (xlat_mutabledz.y + (inten_2 * dot (\\\\n (texture (sampler_main, (xlat_mutableuv3 + tmpvar_19)).xyz - texture (sampler_main, (xlat_mutableuv3 - tmpvar_20)).xyz)\\\\n , vec3(0.32, 0.49, 0.29))));\\\\n xlat_mutableret1 = max (xlat_mutableret1, (texture (sampler_main, xlat_mutableuv3).xyz * inten_2));\\\\n dist_3 = (1.0 - fract((1.0 + tmpvar_5)));\\\\n inten_2 = ((sqrt(dist_3) * (1.0 - dist_3)) * 2.0);\\\\n vec2 tmpvar_21;\\\\n tmpvar_21.y = 0.4;\\\\n tmpvar_21.x = q18;\\\\n xlat_mutableuv3 = (((2.0 * uv_1) * dist_3) + tmpvar_21);\\\\n vec2 tmpvar_22;\\\\n tmpvar_22.y = 0.0;\\\\n tmpvar_22.x = texsize.z;\\\\n vec2 tmpvar_23;\\\\n tmpvar_23.y = 0.0;\\\\n tmpvar_23.x = texsize.z;\\\\n xlat_mutabledz.x = (xlat_mutabledz.x + (inten_2 * dot (\\\\n (texture (sampler_main, (xlat_mutableuv3 + tmpvar_22)).xyz - texture (sampler_main, (xlat_mutableuv3 - tmpvar_23)).xyz)\\\\n , vec3(0.32, 0.49, 0.29))));\\\\n vec2 tmpvar_24;\\\\n tmpvar_24.x = 0.0;\\\\n tmpvar_24.y = texsize.w;\\\\n vec2 tmpvar_25;\\\\n tmpvar_25.x = 0.0;\\\\n tmpvar_25.y = texsize.w;\\\\n xlat_mutabledz.y = (xlat_mutabledz.y + (inten_2 * dot (\\\\n (texture (sampler_main, (xlat_mutableuv3 + tmpvar_24)).xyz - texture (sampler_main, (xlat_mutableuv3 - tmpvar_25)).xyz)\\\\n , vec3(0.32, 0.49, 0.29))));\\\\n xlat_mutableret1 = max (xlat_mutableret1, (texture (sampler_main, xlat_mutableuv3).xyz * inten_2));\\\\n uv_1 = (uv_1 + xlat_mutabledz);\\\\n vec2 tmpvar_26;\\\\n tmpvar_26.x = q5;\\\\n tmpvar_26.y = q6;\\\\n xlat_mutableuv4 = (uv_1 - (0.4 * tmpvar_26));\\\\n float tmpvar_27;\\\\n tmpvar_27 = (0.1 * clamp ((1.0/(\\\\n (abs(uv_1.y) + 0.1)\\\\n )), 0.0, 12.0));\\\\n vec2 tmpvar_28;\\\\n tmpvar_28.x = (uv_1.x * tmpvar_27);\\\\n tmpvar_28.y = tmpvar_27;\\\\n vec3 tmpvar_29;\\\\n tmpvar_29.xy = vec2(0.0, 0.0);\\\\n tmpvar_29.z = clamp ((1.0 - (3.0 * uv_1.y)), 0.0, 1.0);\\\\n ret_4 = (vec3(0.0, 0.1, 0.1) + (0.1 * tmpvar_29));\\\\n ret_4 = (ret_4 + (vec3(dot (texture (sampler_noise_hq, \\\\n (tmpvar_28 + (0.1 * time))\\\\n ), vec4(0.32, 0.49, 0.29, 0.0))) * (\\\\n (clamp ((1.0 - (12.0 * uv_1.y)), 0.0, 1.0) * 0.1)\\\\n / \\\\n (0.05 + sqrt(dot (xlat_mutableuv4, xlat_mutableuv4)))\\\\n )));\\\\n ret_4 = (ret_4 + ((0.4 * xlat_mutableret1) + (xlat_mutableret1 * q22)));\\\\n vec4 tmpvar_30;\\\\n tmpvar_30.w = 1.0;\\\\n tmpvar_30.xyz = ret_4;\\\\n ret = tmpvar_30.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Martin - liquid arrows.json\":\n/*!*******************************************************!*\\\n !*** ./presets/converted/Martin - liquid arrows.json ***!\n \\*******************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":5,\\\"gammaadj\\\":1.780001,\\\"decay\\\":0.5,\\\"echo_zoom\\\":0.999998,\\\"echo_alpha\\\":0.5,\\\"echo_orient\\\":3,\\\"wave_mode\\\":5,\\\"wave_dots\\\":1,\\\"wave_thick\\\":1,\\\"wave_brighten\\\":0,\\\"darken\\\":1,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":5.552,\\\"wave_smoothing\\\":0.504,\\\"wave_mystery\\\":-1,\\\"modwavealphastart\\\":0.71,\\\"modwavealphaend\\\":1.3,\\\"warpanimspeed\\\":1.4595,\\\"warpscale\\\":2.0067,\\\"zoom\\\":0.9999,\\\"warp\\\":0.01,\\\"sx\\\":0.9999,\\\"wave_g\\\":0,\\\"wave_b\\\":0,\\\"ob_size\\\":0.06,\\\"ob_r\\\":1,\\\"ob_g\\\":1,\\\"ob_b\\\":1,\\\"ib_size\\\":0.26,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":0.85,\\\"mv_r\\\":0.5,\\\"mv_g\\\":0.5,\\\"mv_b\\\":0.5,\\\"mv_a\\\":0,\\\"b1x\\\":0.6999,\\\"b1ed\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"textured\\\":1,\\\"y\\\":0.9,\\\"rad\\\":0.15493,\\\"tex_zoom\\\":0.77977,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sides\\\":5,\\\"textured\\\":1,\\\"rad\\\":0.986,\\\"tex_ang\\\":3.14159,\\\"tex_zoom\\\":0.99979,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"ang =sin(time/65) ;// ang + (bass*.2) + (time*.4);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":5,\\\"additive\\\":1,\\\"x\\\":0.9,\\\"rad\\\":0.22613,\\\"g\\\":0.6,\\\"g2\\\":0,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x = 0.05 + rand(900)/1000;\\\\ny = 0.05 + rand(900)/1000;\\\\nang = rand(320)/100;\\\\n \\\"},{\\\"baseVals\\\":{\\\"sides\\\":36,\\\"additive\\\":1,\\\"rad\\\":0.18717,\\\"r\\\":0,\\\"g\\\":0.12,\\\"g2\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"spectrum\\\":1,\\\"usedots\\\":1,\\\"additive\\\":1,\\\"scaling\\\":0.5033,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"index4 = rand(2);\\\\nindex3 = rand(4);\\\",\\\"frame_eqs_eel\\\":\\\"dec_med = pow (0.9, 30/fps);\\\\ndec_slow = pow (0.99, 30/fps);\\\\nbeat = max (max (bass, mid), treb); \\\\navg = avg*dec_slow + beat*(1-dec_slow);\\\\nis_beat = above(beat, .5+avg+peak) * above (time, t0+.2);\\\\nt0 = is_beat*time + (1-is_beat)*t0;\\\\npeak = is_beat * beat + (1-is_beat)*peak*dec_med;\\\\nindex = (index + is_beat) %4;\\\\nindex2 = (index2 + is_beat*bnot(index))%4;\\\\nindex3 = (index3 + is_beat*bnot(index)*bnot(index2))%4;\\\\nindex4 = (index4 + is_beat*bnot(index)*bnot(index2)*bnot(index3))%2;\\\\n\\\\n\\\\nq20 = avg;\\\\nq21 = beat;\\\\nq22 = peak;\\\\nq23 = index;\\\\nq24 = is_beat;\\\\nq26 = bass + mid + treb;\\\\n\\\\nready = is_beat * bnot(ready) + bnot(is_beat2)*ready;\\\\nis_beat2 = ready * above (time, t0+.2);\\\\nq19 = is_beat2;\\\\n\\\\n//k1 = is_beat*bnot(index)*bnot(index2);\\\\n\\\\nk1 = is_beat*equal(index,0);\\\\np1 = k1*(p1+1) + (1-k1)*p1;\\\\np2 = dec_med * p2+ (1-dec_med)*p1;\\\\nrott = p2 * 3.14159265359/2;\\\\n\\\\nq27 = index+1;\\\\nq28 = index2+1;\\\\nq29 = index3*4+1;\\\\nq30 = index4;\\\\n\\\\nq1 = cos(rott);\\\\nq2 = sin(rott);\\\\nq3 = -q2;\\\\nq4 = q1;\\\\n\\\\nsp0 = dec_slow*sp0 + (q24+.05)*(1-dec_slow);\\\\ngo = go * dec_med + (1-dec_med)*(1-bnot(index2+index3));\\\\nmovez = movez + .015*30/fps * go ;\\\\nq31 = movez;\\\\nq32 = .5 + .02*sin(time/5);\\\\n\\\\nq5 = index4%2;\\\\n\\\\nzoom = 1.0; rot = 0;\\\\n\\\\ndx = .05*max(sin(time/9.7)-.95,0);\\\\ndy = .002*(1-go);\\\\nrot = 50*(dx-dy);\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\" shader_body { \\\\n vec2 tmpvar_1;\\\\n tmpvar_1 = ((uv * texsize.xy) * 0.03);\\\\n vec2 tmpvar_2;\\\\n tmpvar_2.x = (cos((tmpvar_1.y * q1)) * sin(-(tmpvar_1.y)));\\\\n tmpvar_2.y = (sin(tmpvar_1.x) * cos((tmpvar_1.y * q2)));\\\\n vec4 tmpvar_3;\\\\n tmpvar_3.w = 1.0;\\\\n tmpvar_3.xyz = ((texture (sampler_main, (uv - \\\\n ((tmpvar_2 * texsize.zw) * 18.0)\\\\n )).xyz * 0.99) - 0.01);\\\\n ret = tmpvar_3.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n vec2 uv1_1;\\\\n vec3 tmpvar_2;\\\\n tmpvar_2 = texture (sampler_main, uv).xyz;\\\\n vec2 tmpvar_3;\\\\n tmpvar_3.x = (texture (sampler_main, (uv - vec2(0.001, 0.0))).xyz - texture (sampler_main, (uv + vec2(0.001, 0.0))).xyz).x;\\\\n tmpvar_3.y = (texture (sampler_main, (uv - vec2(0.0, 0.001))).xyz - texture (sampler_main, (uv + vec2(0.0, 0.001))).xyz).x;\\\\n uv1_1 = ((0.3 * cos(\\\\n ((uv - 0.5) + 1.8)\\\\n )) - (2.0 * tmpvar_3));\\\\n vec4 tmpvar_4;\\\\n tmpvar_4.w = 1.0;\\\\n tmpvar_4.xyz = (0.8 * ((0.3 * \\\\n dot (tmpvar_2, vec3(0.32, 0.49, 0.29))\\\\n ) + (\\\\n (22.0 * clamp ((0.01 / sqrt(\\\\n dot (uv1_1, uv1_1)\\\\n )), 0.0, 1.0))\\\\n * \\\\n (tmpvar_2 + 0.1)\\\\n )));\\\\n ret = tmpvar_4.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Milk Artist At our Best - FED - SlowFast Ft AdamFX n Martin - HD CosmoFX.json\":\n/*!*********************************************************************************************************!*\\\n !*** ./presets/converted/Milk Artist At our Best - FED - SlowFast Ft AdamFX n Martin - HD CosmoFX.json ***!\n \\*********************************************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":3,\\\"wave_mode\\\":4,\\\"additivewave\\\":1,\\\"wave_dots\\\":1,\\\"modwavealphabyvolume\\\":1,\\\"wave_a\\\":0.331,\\\"wave_scale\\\":0.898,\\\"wave_smoothing\\\":0.108,\\\"wave_mystery\\\":0.1,\\\"modwavealphastart\\\":0.72,\\\"modwavealphaend\\\":1.28,\\\"zoom\\\":1.3345,\\\"wave_r\\\":0,\\\"wave_g\\\":0.5,\\\"wave_b\\\":0.5,\\\"wave_y\\\":0.54,\\\"mv_x\\\":24.8,\\\"mv_dy\\\":0.16,\\\"mv_l\\\":1.5,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"sides\\\":3,\\\"rad\\\":0.31275,\\\"tex_zoom\\\":0.17914,\\\"r\\\":0.82,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"xy=0.5+rand_frame;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"samples\\\":352,\\\"usedots\\\":1,\\\"additive\\\":1,\\\"scaling\\\":0.03856,\\\"smoothing\\\":0.2,\\\"g\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"q1=bass_att;\\\",\\\"point_eqs_eel\\\":\\\"r = abs (sin (frame /38));\\\\ng = 0.5*abs (cos (frame /45));\\\\nb = 0.5*abs (sin (frame / 133));\\\\na = 0.3;\\\\nt02 = t02 + q1/10;\\\\nratio = sin (frame/49);\\\\n\\\\nampl = 0.01+0.4*sqr(sin ((frame ) / 18)* cos (frame / 123));\\\\n\\\\nx1 = (r-0.5)/15 +0.5 + ampl* sin (sample*6.28);\\\\ny1 = (b-0.5)/15+0.5 + ampl* cos (sample*6.28);\\\\n\\\\nx = x1+1*0.2*(ampl+ratio )*sin ( sample*6.28 * ratio*7.3);\\\\ny = y1+1*0.2*(ampl+ratio )*cos ( sample*6.28*6);\\\\n\\\"},{\\\"baseVals\\\":{\\\"samples\\\":15,\\\"scaling\\\":2.06378,\\\"smoothing\\\":0.8,\\\"r\\\":0.8,\\\"g\\\":0,\\\"b\\\":0.6,\\\"a\\\":0.9,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"samples\\\":112,\\\"additive\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"dx=0;\\\\noldshift=shift;\\\\nnormalframez=normalframez+1;\\\\nshift=above(bass_att,1)*above(treb_att,0.9);\\\\ncrash=abs(oldshift-shift);\\\\nnex=equal(rshift,0)*1+equal(rshift,1)*2;\\\\nrshift=if(crash,nex,rshift);\\\\nmonitor=rshift;\\\\nwave_r=int(rand(200))/200;\\\\nwave_g=int(rand(200))/200;\\\\nwave_b=int(rand(200))/200;\\\\nwarp=0;\\\\nq1=above(bass_att,1.3);\\\\nzoom1=zoom+0.15-0.3*(normalframez%2);\\\\nzoom=if(shift,zoom1,1);\\\\nrot=rot-0.1+rshift*0.1;\\\",\\\"pixel_eqs_eel\\\":\\\"dy=-below(y,0.4)*0.007+above(y,0.6)*0.007;\\\",\\\"warp\\\":\\\" shader_body { \\\\n vec4 tmpvar_1;\\\\n tmpvar_1.w = 1.0;\\\\n tmpvar_1.xyz = ((texture (sampler_main, (uv_orig + \\\\n ((uv - uv_orig) * dot (texture (sampler_main, uv).xyz, vec3(0.32, 0.49, 0.29)))\\\\n )).xyz * 0.99) - 0.002);\\\\n ret = tmpvar_1.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n vec3 ret_1;\\\\n ret_1 = (texture (sampler_main, uv).xyz * 2.0);\\\\n ret_1 = (ret_1 * (1.0 - ret_1));\\\\n ret_1 = (((1.0 - \\\\n pow (clamp (ret_1, 0.0, 1.0), vec3(0.5, 0.5, 0.5))\\\\n ) * 1.5) - 0.75);\\\\n vec4 tmpvar_2;\\\\n tmpvar_2.w = 1.0;\\\\n tmpvar_2.xyz = ret_1;\\\\n ret = tmpvar_2.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/MilkDrop2077.R002.json\":\n/*!**************************************************!*\\\n !*** ./presets/converted/MilkDrop2077.R002.json ***!\n \\**************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":3,\\\"decay\\\":0.975,\\\"echo_zoom\\\":1,\\\"echo_alpha\\\":0.5,\\\"echo_orient\\\":2,\\\"wave_dots\\\":1,\\\"wave_thick\\\":1,\\\"modwavealphabyvolume\\\":1,\\\"wave_brighten\\\":0,\\\"wave_a\\\":100,\\\"wave_scale\\\":27.455,\\\"wave_smoothing\\\":0.5,\\\"wave_mystery\\\":-1,\\\"modwavealphastart\\\":0.4,\\\"modwavealphaend\\\":1,\\\"warpscale\\\":1.772,\\\"zoomexp\\\":1.001,\\\"zoom\\\":1.007,\\\"warp\\\":0,\\\"mv_y\\\":8.64,\\\"mv_l\\\":1.455,\\\"mv_r\\\":0,\\\"mv_g\\\":0,\\\"mv_b\\\":0,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":100,\\\"x\\\":0.455,\\\"rad\\\":0.43233,\\\"r\\\":0.5,\\\"g\\\":0.5,\\\"r2\\\":0.57,\\\"g2\\\":0,\\\"border_b\\\":0.5,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"sounds=(bass+treb+mid)/3;\\\\n\\\\nrad=rad*sounds*0.6;\\\\n\\\\nr=r+sin(bass)*g;\\\\ng=g+sin(mid)*g;\\\\n\\\\n\\\\nx=x+0.207*cos(time*bass*0.1);\\\\ny=y+0.2029*sin(time*bass*0.09);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":100,\\\"rad\\\":0.13465,\\\"tex_zoom\\\":0.91,\\\"r2\\\":1,\\\"a2\\\":0.318,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\\ng2=g2+0.09*sin((treb+mid)*1.23);\\\\ng=g+0.09*cos((bass+mid)*1.37);\\\\n\\\\nsounds=(bass+mid+treb)/3;\\\\n\\\\nrad=rad*(treb+mid)/3;\\\\n\\\\nx=x+0.300*sin(time*bass);\\\\ny=y+0.317*cos(time*bass);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":100,\\\"rad\\\":0.20047,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":0.5,\\\"g2\\\":0.445,\\\"b2\\\":0.94,\\\"border_b\\\":0.5,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"sounds=(bass+treb+mid)/3;\\\\natt=(bass_att+treb_att+mid_att)/3;\\\\natt=(bass_att+treb_att+mid_att)/3;\\\\nr2=r2+(0.25*sin(time*6.28))-bass;\\\\ng2=g2+(0.25*sin(time*6.28))-bass;\\\\n\\\\nrad=rad;\\\\nx=x+0.243*cos(time*2.3)+sounds*0.09;\\\\ny=y+0.217*sin((time*3.5)+(sounds*0.3));\\\"},{\\\"baseVals\\\":{\\\"x\\\":0.475,\\\"border_g\\\":0.9,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"sep\\\":256,\\\"scaling\\\":20.35074,\\\"smoothing\\\":0.435,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"r=r+0.5*sin(treb*1.13);\\\\ng=g+0.5*sin(bass*1.33);\\\\nb=b+0.5*sin(mid*1.23);\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sep\\\":256,\\\"usedots\\\":1,\\\"scaling\\\":100,\\\"smoothing\\\":0.51,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"scaling\\\":0.91,\\\"smoothing\\\":0.45,\\\"b\\\":0.91,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"scaling\\\":1.08,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"wave_x = wave_x + 0.2*( 0.60*sin(2.121*time) + 0.5*sin(1.621*time) );\\\\nwave_y = wave_y + 0.2*( 0.60*sin(1.742*time) + 0.5*sin(2.322*time) );\\\\nwave_r = wave_r + 0.200*( 0.60*sin(0.823*time) + 0.40*sin(0.916*time) );\\\\nwave_g = wave_g + 0.500*( 0.60*sin(0.900*time) + 0.40*sin(1.023*time) );\\\\nwave_b = wave_b + 0.500*( 0.60*sin(0.808*time) + 0.40*sin(0.949*time) );\\\",\\\"pixel_eqs_eel\\\":\\\"zoom = zoom + 0.01 * ( sin(2*cos(3*(sqrt(2)-rad)*ang)) + 1 );\\\",\\\"warp\\\":\\\" shader_body { \\\\n vec2 my_uv_1;\\\\n vec2 d_2;\\\\n vec3 ret_3;\\\\n vec2 tmpvar_4;\\\\n tmpvar_4 = (texsize.zw * 4.0);\\\\n vec3 tmpvar_5;\\\\n tmpvar_5 = (((texture (sampler_blur1, \\\\n fract((uv + (vec2(1.0, 0.0) * tmpvar_4)))\\\\n ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n fract((uv - (vec2(1.0, 0.0) * tmpvar_4)))\\\\n ).xyz * scale1) + bias1));\\\\n vec3 tmpvar_6;\\\\n tmpvar_6 = (((texture (sampler_blur1, \\\\n fract((uv + (vec2(0.0, 1.0) * tmpvar_4)))\\\\n ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n fract((uv - (vec2(0.0, 1.0) * tmpvar_4)))\\\\n ).xyz * scale1) + bias1));\\\\n vec3 tmpvar_7;\\\\n tmpvar_7 = ((texture (sampler_blur1, uv).xyz * scale1) + bias1);\\\\n d_2 = -(tmpvar_4);\\\\n float tmpvar_8;\\\\n tmpvar_8 = (d_2 * 4.0).x;\\\\n vec2 tmpvar_9;\\\\n tmpvar_9.x = tmpvar_5.y;\\\\n tmpvar_9.y = tmpvar_6.y;\\\\n vec2 tmpvar_10;\\\\n tmpvar_10.x = tmpvar_5.x;\\\\n tmpvar_10.y = tmpvar_6.x;\\\\n vec2 tmpvar_11;\\\\n tmpvar_11 = ((uv - (tmpvar_9 * d_2)) - (tmpvar_10 * tmpvar_8));\\\\n ret_3.y = texture (sampler_fc_main, (tmpvar_11 - floor(tmpvar_11))).y;\\\\n ret_3.y = (ret_3.y + ((\\\\n (ret_3.y - tmpvar_7.y)\\\\n * 0.042) + -0.0075));\\\\n vec2 tmpvar_12;\\\\n tmpvar_12.x = tmpvar_5.x;\\\\n tmpvar_12.y = tmpvar_6.x;\\\\n vec2 tmpvar_13;\\\\n tmpvar_13.x = tmpvar_5.z;\\\\n tmpvar_13.y = tmpvar_6.z;\\\\n my_uv_1 = ((uv - (tmpvar_12 * d_2)) - (tmpvar_13 * tmpvar_8));\\\\n ret_3.x = texture (sampler_fc_main, (my_uv_1 - floor(my_uv_1))).x;\\\\n ret_3.x = (ret_3.x + ((\\\\n (ret_3.x - tmpvar_7.x)\\\\n * 0.042) + -0.0075));\\\\n vec2 tmpvar_14;\\\\n tmpvar_14.x = tmpvar_5.z;\\\\n tmpvar_14.y = tmpvar_6.z;\\\\n vec2 tmpvar_15;\\\\n tmpvar_15.x = tmpvar_5.y;\\\\n tmpvar_15.y = tmpvar_6.y;\\\\n my_uv_1 = ((uv - (tmpvar_14 * d_2)) - (tmpvar_15 * tmpvar_8));\\\\n ret_3.z = texture (sampler_fc_main, (my_uv_1 - floor(my_uv_1))).z;\\\\n ret_3.z = (ret_3.z + ((\\\\n (ret_3.z - tmpvar_7.z)\\\\n * 0.042) + -0.0075));\\\\n vec4 tmpvar_16;\\\\n tmpvar_16 = texture (sampler_noisevol_hq, (((vec3(0.04, 0.02, 0.02) * my_uv_1.xyy) * (\\\\n (q27 * texsize.xyy)\\\\n * texsize_noisevol_hq.zww)) + ((time * vec3(2.3, 2.3, 1.8)) * q29)));\\\\n if (((ret_3.x > (q21 * q13)) && (ret_3.x <= (q24 * q11)))) {\\\\n ret_3.y = (ret_3.y - (tmpvar_16.x * 0.5));\\\\n };\\\\n if (((ret_3.y > (q22 * q11)) && (ret_3.y <= (q25 * q12)))) {\\\\n ret_3.z = (ret_3.z - (tmpvar_16.y * 0.5));\\\\n };\\\\n if (((ret_3.z > (q23 * q12)) && (ret_3.z <= (q26 * q13)))) {\\\\n ret_3.x = (ret_3.x - (tmpvar_16.z * 0.5));\\\\n };\\\\n vec4 tmpvar_17;\\\\n tmpvar_17.w = 1.0;\\\\n tmpvar_17.xyz = ret_3;\\\\n ret = tmpvar_17.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n vec3 ret_1;\\\\n vec4 tmpvar_2;\\\\n tmpvar_2 = texture (sampler_main, uv);\\\\n ret_1 = (((vec3(2.8, 2.8, 1.2) * tmpvar_2.x) + (vec3(2.0, 0.4, 2.0) * tmpvar_2.y)) + (vec3(0.1, 1.3, 1.2) * tmpvar_2.z));\\\\n ret_1 = (ret_1 * 0.37);\\\\n ret_1 = ((ret_1 * ret_1) * (1.0 + (\\\\n clamp (((cos(\\\\n (((dot (tmpvar_2.xyz, vec3(0.32, 0.49, 0.29)) * 17.0) + 3.0) + (uv.x * 30.0))\\\\n ) * 3.0) - 2.7), 0.0, 1.0)\\\\n * 4.0)));\\\\n vec4 tmpvar_3;\\\\n tmpvar_3.w = 1.0;\\\\n tmpvar_3.xyz = ret_1;\\\\n ret = tmpvar_3.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/MilkDrop2077.R033.json\":\n/*!**************************************************!*\\\n !*** ./presets/converted/MilkDrop2077.R033.json ***!\n \\**************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":1,\\\"gammaadj\\\":2.7,\\\"decay\\\":0.715,\\\"wrap\\\":0,\\\"solarize\\\":1,\\\"wave_a\\\":0.001,\\\"modwavealphastart\\\":0.848,\\\"warpanimspeed\\\":2.472,\\\"warpscale\\\":3.209,\\\"zoomexp\\\":1.0018,\\\"zoom\\\":1.01,\\\"cx\\\":0.465,\\\"dy\\\":0.00001,\\\"warp\\\":0.01,\\\"wave_r\\\":0,\\\"wave_g\\\":0,\\\"wave_b\\\":0,\\\"wave_x\\\":0,\\\"wave_y\\\":0,\\\"ob_size\\\":0,\\\"ob_a\\\":1,\\\"ib_size\\\":0,\\\"ib_r\\\":0,\\\"ib_g\\\":0,\\\"ib_b\\\":0,\\\"ib_a\\\":1,\\\"mv_y\\\":9.72,\\\"mv_r\\\":1.19,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":20,\\\"num_inst\\\":410,\\\"rad\\\":0.0082,\\\"r\\\":0,\\\"b\\\":1,\\\"a\\\":1.09,\\\"g2\\\":0,\\\"a2\\\":0.1,\\\"border_b\\\":0.87,\\\"border_a\\\":0.006},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"q1 = time/5;\\\\nq2 = time/6;\\\\nrad = 0.005+bass/100;\\\\nq5 = bass_att/70;\\\\nb2 = treb*0.79-bass/2;\\\\nr = instance/num_inst;\\\\ng = abs(treb_att/5-bass);\\\\n//b = abs(treb_att/5-bass);\\\\nsize = 0.3+bass_att/300;\\\\n\\\\nnc = sqrt(num_inst);\\\\nxs=sin(7.662*(instance%nc)/nc)*sin(3.705*int(instance/nc)/nc);\\\\nys=cos(6.28*(instance%nc)/nc)*sin(3.14*int(instance/nc)/nc);\\\\nzs=cos(3.14*int(instance/nc)/nc);\\\\n\\\\n//modulate to allow rotation\\\\ny1 = ys*cos(q1)-zs*sin(q1);\\\\nz1 = ys*sin(q1)+zs*cos(q1);\\\\nx1 = z1*sin(q2)+xs*cos(q2);\\\\nz2 = z1*cos(q2)-xs*sin(q2);\\\\nx2 = x1*cos(q3)-y1*sin(q3);\\\\ny2 = y1*cos(q3)+x1*sin(q3);\\\\n\\\\n//translate shape\\\\nx3 = x2+q4;\\\\ny3 = y2;\\\\nz3 = z2+q5;\\\\n\\\\nx = 0.5 + size*(x3/(1+z3*size));\\\\ny = 0.42 + size*(y3/(1+z3*size));\\\\na=below(z3,0);\\\"},{\\\"baseVals\\\":{\\\"rad\\\":0.102,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"x\\\":0.53,\\\"rad\\\":0.091,\\\"tex_zoom\\\":0.76,\\\"r\\\":1.16,\\\"a\\\":1.05,\\\"g2\\\":0.86,\\\"border_r\\\":0.87,\\\"border_g\\\":0.89,\\\"border_b\\\":1.22,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"y\\\":0.49,\\\"rad\\\":0.089,\\\"tex_zoom\\\":0.78,\\\"a\\\":0.95,\\\"g2\\\":0.81,\\\"border_a\\\":0.114,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"r\\\":0.8,\\\"g\\\":1.05,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"a\\\":0.93,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"scaling\\\":1.1,\\\"r\\\":1.15,\\\"g\\\":0.92,\\\"b\\\":1.22,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"scaling\\\":0.84,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"q1=sin(.5*time);\\\\nq2=sin(.2*time);\\\\nq3=sin(0.34*time);\\\\nq4=abs(sin(40*time));\\\\n\\\\nbt=bt+bass/fps;\\\\nbt=bt*above(100,bt);\\\\nq5=sin(bt);\\\\nq6=bt;\\\\n\\\\nq11=int(rand(200)); q11=q11*equal(q11,1);\\\\nq12=int(rand(100)); q12=q12*equal(q12,1);\\\\nq13=int(rand(150)); q13=q13*equal(q13,1);\\\\n\\\\nrot=rot-0.048*sin(bass_att*0.08)*sin(0.37*time);\\\\n\\\\ndy=.002*sin(time*.623)+.002*cos(time*.31);\\\\ndx=.002*cos(time*.442)+.002*sin(time*.52);\\\",\\\"pixel_eqs_eel\\\":\\\"//zoom=10.1242-0.038*above(rad,0.12);\\\\n//zoom=zoom+0.042*above(rad,0.131);\\\\n//zoom=zoom-.05*above(rad,.2);\\\\n//zoom=zoom+.05*above(rad,.21);\\\\n//zoom=zoom-0.039*above(rad,0.33);\\\\n//zoom=zoom+.05*above(rad,.31);\\\\n//zoom=zoom-0.059*above(rad,0.34);\\\\n//zoom=zoom+.05*above(rad,.41);\\\\n//zoom=zoom-.05*above(rad,.49);\\\\n//zoom=zoom+.05*above(rad,.50);\\\\n//zoom=zoom-.05*above(rad,.6);\\\\n//zoom=zoom+.05*above(rad,.61);\\\\n//zoom=zoom-0.055*above(rad,0.61);\\\\n//zoom=zoom+0.047*above(rad,0.575);\\\\n//zoom=zoom-0.049*above(rad,0.8);\\\\n//zoom=zoom+.05*above(rad,.805);\\\\n//zoom=zoom-.05*above(rad,.9);\\\\n//zoom=zoom+0.051*above(rad,1.046);\\\\n\\\\n\\\\nzoom=zoom+.15*x*.05*sin(rad*time*2);\\\\nzoom=zoom+0.142*(1-x)*0.058*sin(rad*time*2);\\\",\\\"warp\\\":\\\" shader_body { \\\\n vec2 tmpvar_1;\\\\n tmpvar_1 = mix (uv_orig, uv, vec2(0.469, 0.469));\\\\n vec2 tmpvar_2;\\\\n tmpvar_2 = (texsize.zw * 300.0);\\\\n vec2 tmpvar_3;\\\\n tmpvar_3.x = dot (((\\\\n (texture (sampler_blur1, ((tmpvar_1 + vec2(1.0, 2.0)) + tmpvar_2)).xyz * scale1)\\\\n + bias1) - (\\\\n (texture (sampler_blur1, (tmpvar_1 - (vec2(1.0, 0.0) * tmpvar_2))).xyz * scale1)\\\\n + bias1)), vec3(0.32, 0.49, 0.29));\\\\n tmpvar_3.y = dot (((\\\\n (texture (sampler_blur1, (tmpvar_1 + (vec2(0.0, 1.0) * tmpvar_2))).xyz * scale1)\\\\n + bias1) - (\\\\n (texture (sampler_blur1, (tmpvar_1 - (vec2(0.0, 1.0) * tmpvar_2))).xyz * scale1)\\\\n + bias1)), vec3(0.32, 0.49, 0.29));\\\\n vec4 tmpvar_4;\\\\n tmpvar_4.w = 1.0;\\\\n tmpvar_4.xyz = (texture (sampler_fc_main, (tmpvar_1 + (\\\\n (tmpvar_3 * texsize.zw)\\\\n * 50.0))) - 0.01).xyz;\\\\n ret = tmpvar_4.xyz;\\\\n }\\\",\\\"comp\\\":\\\"float xlat_mutablesmask;\\\\nvec2 xlat_mutableuv1;\\\\nvec2 xlat_mutableuv3;\\\\nvec2 xlat_mutableuv4;\\\\n shader_body { \\\\n float dist_1;\\\\n float stars_2;\\\\n vec3 ret_3;\\\\n xlat_mutableuv1 = ((uv - 0.5) * aspect.xy);\\\\n float tmpvar_4;\\\\n tmpvar_4 = (0.109 * time);\\\\n float tmpvar_5;\\\\n tmpvar_5 = (0.24 * rad);\\\\n dist_1 = ((1.0 - fract(\\\\n (0.2425 + tmpvar_4)\\\\n )) * (1.0 - tmpvar_5));\\\\n vec2 tmpvar_6;\\\\n tmpvar_6.x = q1;\\\\n tmpvar_6.y = q2;\\\\n xlat_mutableuv3 = (xlat_mutableuv1 + tmpvar_6);\\\\n xlat_mutableuv4 = ((64.0 * dist_1) * xlat_mutableuv3);\\\\n xlat_mutablesmask = (texture (sampler_pw_noise_lq, (xlat_mutableuv4 / 256.0)).y - 0.81);\\\\n vec2 tmpvar_7;\\\\n tmpvar_7 = abs((fract(xlat_mutableuv4) - 0.5));\\\\n stars_2 = max (0.0, clamp ((\\\\n (1.0 - dist_1)\\\\n * \\\\n ((0.1 / sqrt(dot (tmpvar_7, tmpvar_7))) * xlat_mutablesmask)\\\\n ), 0.0, 1.0));\\\\n dist_1 = ((1.0 - fract(\\\\n (0.485 + tmpvar_4)\\\\n )) * (1.0 - tmpvar_5));\\\\n vec2 tmpvar_8;\\\\n tmpvar_8.x = q1;\\\\n tmpvar_8.y = q2;\\\\n xlat_mutableuv3 = (xlat_mutableuv1 + tmpvar_8);\\\\n xlat_mutableuv4 = ((64.0 * dist_1) * xlat_mutableuv3);\\\\n xlat_mutablesmask = (texture (sampler_pw_noise_lq, (xlat_mutableuv4 / 256.0)).y - 0.81);\\\\n vec2 tmpvar_9;\\\\n tmpvar_9 = abs((fract(xlat_mutableuv4) - 0.5));\\\\n stars_2 = (stars_2 + max (stars_2, clamp (\\\\n ((1.0 - dist_1) * ((0.1 / sqrt(\\\\n dot (tmpvar_9, tmpvar_9)\\\\n )) * xlat_mutablesmask))\\\\n , 0.0, 1.0)));\\\\n dist_1 = ((1.0 - fract(\\\\n (0.7275 + tmpvar_4)\\\\n )) * (1.0 - tmpvar_5));\\\\n vec2 tmpvar_10;\\\\n tmpvar_10.x = q1;\\\\n tmpvar_10.y = q2;\\\\n xlat_mutableuv3 = (xlat_mutableuv1 + tmpvar_10);\\\\n xlat_mutableuv4 = ((64.0 * dist_1) * xlat_mutableuv3);\\\\n xlat_mutablesmask = (texture (sampler_pw_noise_lq, (xlat_mutableuv4 / 256.0)).y - 0.81);\\\\n vec2 tmpvar_11;\\\\n tmpvar_11 = abs((fract(xlat_mutableuv4) - 0.5));\\\\n stars_2 = (stars_2 + max (stars_2, clamp (\\\\n ((1.0 - dist_1) * ((0.1 / sqrt(\\\\n dot (tmpvar_11, tmpvar_11)\\\\n )) * xlat_mutablesmask))\\\\n , 0.0, 1.0)));\\\\n dist_1 = ((1.0 - fract(\\\\n (0.97 + tmpvar_4)\\\\n )) * (1.0 - tmpvar_5));\\\\n vec2 tmpvar_12;\\\\n tmpvar_12.x = q1;\\\\n tmpvar_12.y = q2;\\\\n xlat_mutableuv3 = (xlat_mutableuv1 + tmpvar_12);\\\\n xlat_mutableuv4 = ((64.0 * dist_1) * xlat_mutableuv3);\\\\n xlat_mutablesmask = (texture (sampler_pw_noise_lq, (xlat_mutableuv4 / 256.0)).y - 0.81);\\\\n vec2 tmpvar_13;\\\\n tmpvar_13 = abs((fract(xlat_mutableuv4) - 0.5));\\\\n stars_2 = (stars_2 + max (stars_2, clamp (\\\\n ((1.0 - dist_1) * ((0.1 / sqrt(\\\\n dot (tmpvar_13, tmpvar_13)\\\\n )) * xlat_mutablesmask))\\\\n , 0.0, 1.0)));\\\\n vec3 tmpvar_14;\\\\n tmpvar_14 = max ((texture (sampler_main, uv).xyz * 2.0), ((\\\\n (texture (sampler_blur2, uv).xyz * scale2)\\\\n + bias2) * 2.0));\\\\n ret_3 = (ret_3 + clamp ((stars_2 * stars_2), 0.0, 1.0));\\\\n ret_3 = (ret_3 * clamp ((1.0 - \\\\n (2.0 * dot (tmpvar_14, vec3(0.32, 0.49, 0.29)))\\\\n ), 0.0, 1.0));\\\\n ret_3 = (ret_3 + tmpvar_14);\\\\n vec4 tmpvar_15;\\\\n tmpvar_15.w = 1.0;\\\\n tmpvar_15.xyz = ret_3;\\\\n ret = tmpvar_15.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/ORB - Waaa.json\":\n/*!*******************************************!*\\\n !*** ./presets/converted/ORB - Waaa.json ***!\n \\*******************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":0,\\\"decay\\\":1,\\\"echo_zoom\\\":1,\\\"echo_orient\\\":3,\\\"wave_mode\\\":1,\\\"wrap\\\":0,\\\"darken_center\\\":1,\\\"wave_a\\\":0.001,\\\"zoom\\\":0.97,\\\"rot\\\":-6.27999,\\\"warp\\\":0.00052,\\\"wave_r\\\":0,\\\"wave_g\\\":0,\\\"wave_b\\\":0,\\\"ob_r\\\":1,\\\"ob_g\\\":1,\\\"ob_b\\\":1,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":100,\\\"textured\\\":1,\\\"rad\\\":0.49849,\\\"g\\\":1,\\\"b\\\":1,\\\"a\\\":0.7,\\\"r2\\\":1,\\\"g2\\\":0,\\\"b2\\\":1,\\\"a2\\\":0.7,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"r2 = 0.5 + 0.5*sin(q2*0.35);\\\\ng2 = 0.5 + 0.5*sin(q2*0.578);\\\\nb2 = 0.5 + 0.5*sin(q2*0.689);\\\\n\\\\nang = q2;\\\\ntex_capture = above(q3,2);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":100,\\\"textured\\\":1,\\\"rad\\\":0.74218,\\\"g\\\":1,\\\"b\\\":1,\\\"a\\\":0.6,\\\"r2\\\":1,\\\"g2\\\":0,\\\"b2\\\":1,\\\"a2\\\":0.6,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"r2 = 0.5 + 0.5*sin(q2*0.45);\\\\ng2 = 0.5 + 0.5*sin(q2*0.678);\\\\nb2 = 0.5 + 0.5*sin(q2*0.689);\\\\n\\\\nang = -q2*1.05;\\\\ntex_capture = above(q3,2);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":100,\\\"textured\\\":1,\\\"rad\\\":1.00035,\\\"g\\\":1,\\\"b\\\":1,\\\"a\\\":0.5,\\\"r2\\\":1,\\\"g2\\\":0,\\\"b2\\\":1,\\\"a2\\\":0.5,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"r2 = 0.5 + 0.5*sin(q2*0.45);\\\\ng2 = 0.5 + 0.5*sin(q2*0.578);\\\\nb2 = 0.5 + 0.5*sin(q2*0.789);\\\\n\\\\nang = q2*0.899;\\\\ntex_capture = above(q3,2);\\\"},{\\\"baseVals\\\":{\\\"textured\\\":1,\\\"rad\\\":3.25446,\\\"g\\\":1,\\\"b\\\":1,\\\"a\\\":0.3,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":0.4,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"r = 0.5 + 0.5*sin(q2*0.45);\\\\ng = 0.5 + 0.5*sin(q2*0.578);\\\\nb = 0.5 + 0.5*sin(q2*0.689);\\\\n\\\\nr2 = 0.5 + 0.5*sin(q2*0.45);\\\\ng2 = 0.5 + 0.5*sin(q2*0.578);\\\\nb2 = 0.5 + 0.5*sin(q2*0.689);\\\\n\\\\ntex_capture = above(q3,2);\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sep\\\":1,\\\"spectrum\\\":1,\\\"thick\\\":1,\\\"additive\\\":1},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"u = (cos(q1*0.1))*3.14159;\\\\nv = (cos(q1*0.015))*3.14159*2;\\\\ns = sample*3.14*100;\\\\nss = sample*6.28*1000;\\\\n\\\\n//draw\\\\nxs = (0.3 + 0.1*cos(s))*cos(ss)*0.2*cos(v);\\\\nys = (0.3 + 0.1*cos(s))*sin(ss)*6*u;\\\\nzs = 0.5*sin(s)*0.2*sin(v);\\\\n\\\\n//rotate x axis\\\\nangle = q1*0.1;\\\\nyx = ys*cos(angle) - zs*sin(angle);\\\\nzx = ys*sin(angle) + zs*cos(angle);\\\\nxx = xs;\\\\n\\\\n//rotate y axis\\\\nangle2 = q1*0.11;\\\\nxd = xx*cos(angle2) - zx*sin(angle2);\\\\nzd = xx*sin(angle2) + zx*cos(angle2);\\\\nyd = yx;\\\\n\\\\n//rotaye z axis\\\\nangle3 = q1*0.15;\\\\nxn = xd*cos(angle3) - yd*sin(angle3);\\\\nyn = xd*sin(angle3) + yd*cos(angle3);\\\\n\\\\nzd = zd;\\\\n\\\\nx = xn*zd*0.3 + 0.5;\\\\ny = yn*zd*0.3*1.2 + 0.5;\\\\n\\\\nr = 0.5 + 0.5*sin(q1*1.2 + x + x);\\\\ng = 0.5 + 0.5*sin(q1*1.5 + x + y);\\\\nb = 0.5 + 0.5*sin(q1*1.36 + y + y);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sep\\\":1,\\\"spectrum\\\":1,\\\"thick\\\":1,\\\"additive\\\":1},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"u = (cos(q1*0.1))*3.14159;\\\\nv = (cos(q1*0.015))*3.14159*2;\\\\ns = sample*3.14*100;\\\\nss = sample*6.28*1000;\\\\n\\\\n//draw\\\\nxs = (0.3 + 0.1*cos(s))*cos(ss)*0.2*cos(v);\\\\nys = (0.3 + 0.1*cos(s))*sin(ss)*6*u;\\\\nzs = 0.5*sin(s)*0.2*sin(v);\\\\n\\\\n//rotate x axis\\\\nangle = q1*0.1;\\\\nyx = ys*cos(angle) - zs*sin(angle);\\\\nzx = ys*sin(angle) + zs*cos(angle);\\\\nxx = xs;\\\\n\\\\n//rotate y axis\\\\nangle2 = q1*0.13;\\\\nxd = xx*cos(angle2) - zx*sin(angle2);\\\\nzd = xx*sin(angle2) + zx*cos(angle2);\\\\nyd = yx;\\\\n\\\\n//rotaye z axis\\\\nangle3 = q1*0.16;\\\\nxn = xd*cos(angle3) - yd*sin(angle3);\\\\nyn = xd*sin(angle3) + yd*cos(angle3);\\\\n\\\\nzd = zd;\\\\n\\\\nx = xn*zd*0.3 + 0.5;\\\\ny = yn*zd*0.3*1.2 + 0.5;\\\\n\\\\nr = 0.5 + 0.5*sin(q1*1.2 + x + x);\\\\ng = 0.5 + 0.5*sin(q1*1.5 + x + y);\\\\nb = 0.5 + 0.5*sin(q1*1.36 + y + y);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sep\\\":1,\\\"spectrum\\\":1,\\\"thick\\\":1,\\\"additive\\\":1},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"u = (cos(q1*0.1))*3.14159;\\\\nv = (cos(q1*0.015))*3.14159*2;\\\\ns = sample*3.14*100;\\\\nss = sample*6.28*1000;\\\\n\\\\n//draw\\\\nxs = (0.3 + 0.1*cos(s))*cos(ss)*0.2*cos(v);\\\\nys = (0.3 + 0.1*cos(s))*sin(ss)*6*u;\\\\nzs = 0.5*sin(s)*0.2*sin(v);\\\\n\\\\n//rotate x axis\\\\nangle = q1*0.1;\\\\nyx = ys*cos(angle) - zs*sin(angle);\\\\nzx = ys*sin(angle) + zs*cos(angle);\\\\nxx = xs;\\\\n\\\\n//rotate y axis\\\\nangle2 = q1*0.16;\\\\nxd = xx*cos(angle2) - zx*sin(angle2);\\\\nzd = xx*sin(angle2) + zx*cos(angle2);\\\\nyd = yx;\\\\n\\\\n//rotaye z axis\\\\nangle3 = q1*0.16;\\\\nxn = xd*cos(angle3) - yd*sin(angle3);\\\\nyn = xd*sin(angle3) + yd*cos(angle3);\\\\n\\\\nzd = zd;\\\\n\\\\nx = xn*zd*0.3 + 0.5;\\\\ny = yn*zd*0.3*1.2 + 0.5;\\\\n\\\\nr = 0.5 + 0.5*sin(q1*1.2 + x + x);\\\\ng = 0.5 + 0.5*sin(q1*1.5 + x + y);\\\\nb = 0.5 + 0.5*sin(q1*1.36 + y + y);\\\"},{\\\"baseVals\\\":{\\\"sep\\\":1,\\\"spectrum\\\":1,\\\"usedots\\\":1,\\\"additive\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"u = abs(cos(q1*0.1))*3.14159;\\\\nv = abs(cos(q1*0.015))*3.14159*2;\\\\ns = sample*3.14*100;\\\\nss = sample*6.28*1000;\\\\n\\\\n//draw\\\\nxs = (0.5 + 0.0000001*cos(s))*cos(ss);\\\\nys = (0.5 + 0.0000001*cos(s))*sin(ss);\\\\nzs = 0.5*sin(s);\\\\n\\\\n//rotate x axis\\\\nangle = q1*0.1;\\\\nyx = ys*cos(angle) - zs*sin(angle);\\\\nzx = ys*sin(angle) + zs*cos(angle);\\\\nxx = xs;\\\\n\\\\n//rotate y axis\\\\nangle2 = q1*0.14;\\\\nxd = xx*cos(angle2) - zx*sin(angle2);\\\\nzd = xx*sin(angle2) + zx*cos(angle2);\\\\nyd = yx;\\\\n\\\\n//rotaye z axis\\\\nangle3 = q1*0.15;\\\\nxn = xd*cos(angle3) - yd*sin(angle3);\\\\nyn = xd*sin(angle3) + yd*cos(angle3);\\\\n\\\\nzd = zd + 2;\\\\n\\\\nx = xn*zd*0.3 + 0.5;\\\\ny = yn*zd*0.3*1.2 + 0.5;\\\\n\\\\nr = 0.5 + 0.5*sin(q1*1.2 + x + x);\\\\ng = 0.5 + 0.5*sin(q1*1.5 + x + y);\\\\nb = 0.5 + 0.5*sin(q1*1.66 + y + y);\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"basstime = basstime + bass*0.03;\\\\nq1 = basstime*4;\\\\n\\\\n//start in most active range\\\\nbasstime = if(below(basstime,1000),1000,basstime);\\\\n//basstime = if(above(basstime,495),450,basstime);\\\\n\\\\nbasstime = basstime + bass_att*0.03;\\\\nvol = pow(bass+mid+treb,2);\\\\nbasssum = vol;\\\\n\\\\nstickybit = time%2;\\\\n\\\\n//avg vol\\\\n//buffer 1\\\\nvolAvg = volAvg + vol*equal(stickybit,1);\\\\n//number of samples 1 or framerate\\\\nsample1 = sample1 + equal(stickybit,1);\\\\n//buffer 2\\\\nvolAvg2 = volAvg2 + vol*equal(stickybit,0);\\\\n//number of samples 2\\\\nsample2 = sample2 + equal(stickybit,0);\\\\n\\\\n//transision\\\\nedge = bnot(equal(bit2,stickybit));\\\\n\\\\nvolAvg = volAvg - volAvg*edge*stickybit;\\\\nvolAvg2 = volAvg2 - volAvg2*edge*equal(stickybit,0);\\\\n\\\\nsample1 = sample1 - sample1*edge*stickybit;\\\\nsample2 = sample2 - sample2*edge*equal(stickybit,0);\\\\n\\\\n//test vol against avg buffer lvl\\\\ndiff = if(equal(stickybit,1), (basssum/(volAvg2/sample2)) , 0);\\\\ndiff = if(equal(stickybit,0), (basssum/(volAvg/sample1)), diff);\\\\n\\\\nq3 = diff;\\\\n\\\\nbit2 = time%2;\\\\n\\\\ndifftime = difftime + diff*0.03;\\\\nq2 = difftime;\\\\n\\\\n//fix a strange error\\\\ndifftime = if(above(difftime,2000),0, difftime);\\\\n\\\\nmonitor = abs(cos(time))*3.14;\\\\n\\\\n\\\\nmv_a = above(diff,10);\\\",\\\"pixel_eqs_eel\\\":\\\"zoom = 1 + 0.05*q3*rad;\\\\n\\\\ndecay_r = 0.2*rad*sin(q2*0.35) + 0.85 + 0.1*sin(q2);\\\\ndecay_g = 0.2*rad*sin(q2*0.5) + 0.85 + 0.1*sin(0.7*q2);\\\\ndecay_b = 0.2*rad*sin(q2*0.4) + 0.85 + 0.1*sin(0.8*q2);\\\\n\\\\nrot = 0;\\\",\\\"warp\\\":\\\" shader_body { \\\\n vec4 tmpvar_1;\\\\n tmpvar_1.w = 1.0;\\\\n tmpvar_1.xyz = (texture (sampler_fc_main, uv).xyz * (0.8 + (q3 * 0.1)));\\\\n ret = tmpvar_1.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n vec4 tmpvar_1;\\\\n tmpvar_1.w = 1.0;\\\\n tmpvar_1.xyz = (texture (sampler_main, uv).xyz * 2.0);\\\\n ret = tmpvar_1.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Phat+fiShbRaiN+Eo.S_Mandala_Chasers_remix.json\":\n/*!**************************************************************************!*\\\n !*** ./presets/converted/Phat+fiShbRaiN+Eo.S_Mandala_Chasers_remix.json ***!\n \\**************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":1,\\\"baseVals\\\":{\\\"rating\\\":5,\\\"gammaadj\\\":1,\\\"decay\\\":0.965,\\\"echo_zoom\\\":1.483827,\\\"echo_alpha\\\":0.5,\\\"echo_orient\\\":3,\\\"wave_mode\\\":7,\\\"additivewave\\\":1,\\\"wave_brighten\\\":0,\\\"wrap\\\":0,\\\"darken_center\\\":1,\\\"darken\\\":1,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":1.285751,\\\"wave_smoothing\\\":0.63,\\\"modwavealphastart\\\":0.71,\\\"modwavealphaend\\\":1.3,\\\"warpanimspeed\\\":0.01,\\\"warpscale\\\":1.470245,\\\"zoomexp\\\":4.778023,\\\"zoom\\\":0.998162,\\\"warp\\\":0.01,\\\"sx\\\":1.001828,\\\"wave_r\\\":0.65,\\\"wave_g\\\":0.65,\\\"wave_b\\\":0.65,\\\"ob_size\\\":0.005,\\\"ob_r\\\":1,\\\"ob_g\\\":0.5,\\\"ob_b\\\":0.5,\\\"ob_a\\\":1,\\\"ib_size\\\":0.5,\\\"ib_r\\\":0,\\\"ib_g\\\":0,\\\"ib_b\\\":0,\\\"ib_a\\\":1,\\\"mv_x\\\":64,\\\"mv_y\\\":4.800001,\\\"mv_dx\\\":0.4,\\\"mv_l\\\":1,\\\"mv_r\\\":0,\\\"mv_g\\\":0.5,\\\"mv_a\\\":0.1},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":3,\\\"additive\\\":1,\\\"thickoutline\\\":1,\\\"textured\\\":1,\\\"x\\\":1,\\\"y\\\":0.59,\\\"rad\\\":0.559231,\\\"ang\\\":3.39292,\\\"tex_zoom\\\":100,\\\"r\\\":0,\\\"g\\\":1,\\\"b\\\":1,\\\"g2\\\":0,\\\"border_r\\\":0,\\\"border_g\\\":0,\\\"border_b\\\":0,\\\"border_a\\\":1},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x=sin(time/10)*0.1+0.5+(treb_att*0.1);\\\"},{\\\"baseVals\\\":{\\\"sides\\\":13,\\\"additive\\\":1,\\\"x\\\":0.9,\\\"y\\\":0.84,\\\"rad\\\":0.364567,\\\"ang\\\":3.078761,\\\"tex_zoom\\\":4.141463,\\\"r\\\":0.25,\\\"g\\\":0.05,\\\"a\\\":0.2,\\\"g2\\\":0,\\\"b2\\\":1,\\\"border_r\\\":0.5,\\\"border_g\\\":0.5,\\\"border_b\\\":0.5,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"//additive=above(sin(time*50),.95);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":6,\\\"textured\\\":1,\\\"x\\\":0.3,\\\"y\\\":0.7,\\\"rad\\\":1.089252,\\\"ang\\\":0.816814,\\\"tex_ang\\\":3.141592,\\\"tex_zoom\\\":0.504215,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"//tex_ang=(sin(time/4)*0.5+0.5)*6.28;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":3,\\\"textured\\\":1,\\\"rad\\\":0.284278,\\\"ang\\\":3.141593,\\\"tex_ang\\\":4.900885,\\\"tex_zoom\\\":2.987755,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":0.95,\\\"b2\\\":1,\\\"a2\\\":1,\\\"border_r\\\":0,\\\"border_g\\\":0,\\\"border_b\\\":0,\\\"border_a\\\":1},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"ang=time/10;\\\\ntex_zoom=3.4+(bass*0.03);\\\\nvar=above(bass_att,0.7);\\\\na=var;\\\\na2=var;\\\\nborder_a=var;\\\\n\\\\n\\\\n//This preset fluctuates between 53.2 and 55.44 fps on my box. Texture size_2048 Meshsize_36*24\\\\n//On a SuperScan Pro 800 Hitachi\\\\n//On a Radion_9600\\\\n//1280*1024_Screen_Resolution\\\\n//;) hello! I am ATHEN ANDANDA!\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"usedots\\\":1,\\\"thick\\\":1,\\\"additive\\\":1,\\\"r\\\":0,\\\"a\\\":0.06},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"xspout=.5;\\\\nyspout=-.01;\\\\n\\\\npphase=9999*sample*sample*.0001;\\\\npphase2=.1+((sample*3349*sample)%100)*.01;\\\\npheight=((sample*9893)%100)*.002;\\\\nyheight=((sample*1231*sample)%100)*.01;\\\\n\\\\nr=((sample*5454)%100)*.01*abs(sin(time*.25));\\\\ng=((sample*9954)%100)*.01;\\\\n\\\\nxoffset1=(cos((time*pphase2)+pphase)*pheight);\\\\nxoffset2=-1*(cos((time*pphase2)+pphase)*pheight);\\\\n\\\\nlrorient=if(below(cos((time*pphase2)+pphase),cos(((time-.1)*pphase2)+pphase)),0,1);\\\\n\\\\npx=if(equal(lrorient,0),xspout-pheight+xoffset1,xspout+pheight-xoffset2);\\\\n\\\\npy=yspout+(abs(sin((time*pphase2)+pphase))*yheight);\\\\n\\\\nx=px;\\\\ny=py;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"usedots\\\":1,\\\"thick\\\":1,\\\"additive\\\":1,\\\"r\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"pphase=(sample*5671*cos(time*.0001));\\\\npheight=((sample*7654)%100)*.005*sin(time*.2);\\\\n\\\\n//xspout=.5;\\\\nxspout=if(below(abs(sin(time*.2)),.005),.3+(rand(40)*.01),xspout);\\\\n//yspout=.5;\\\\nyspout=if(below(abs(sin(time*.2)),.005),.3+(rand(40)*.01),yspout);\\\\n\\\\npx=xspout+(cos(time+pphase)*pheight);\\\\npy=yspout+(sin(time+pphase)*pheight);\\\\n\\\\nx=px;\\\\ny=py;\\\\na=abs(sin(time*.2)*.3+(treb_att*.1));\\\\n\\\\nr=treb*2;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"thick\\\":1,\\\"additive\\\":1,\\\"b\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"n=sample*6.283;\\\\nphs=-sample * 0.2;\\\\ntm=q1 + phs*4;\\\\n\\\\nflip=flip+1;\\\\nflip=flip*below(flip,2);\\\\n\\\\nxp=0;\\\\nyp=(flip*0.1-0.05)*(sample);\\\\nzp=0;\\\\n\\\\n//spin;\\\\nang=tm*20 + sin(tm*76 + time*4)*0.4;\\\\nsa=sin(ang);ca=cos(ang);\\\\nxr=xp*sa + yp*ca;\\\\nyr=xp*ca - yp*sa;\\\\nzr=zp;\\\\n\\\\nxp=xr;\\\\nyp=yr + 0.05 + (sin(tm)*0.5 + 0.5)*0.2 + 0.05;\\\\nzp=zr;\\\\n\\\\n//wrist movement;\\\\nang=sin(tm*2);\\\\n\\\\nxq=xp;\\\\nsa=sin(ang);ca=cos(ang);\\\\nyq=yp*sa + zp*ca;\\\\nzq=yp*ca - zp*sa;\\\\n\\\\n\\\\nang=tm*8;\\\\nsa=sin(ang);ca=cos(ang);\\\\nxp=xq*sa + yq*ca;\\\\nyp=xq*ca - yq*sa;\\\\nzp=zq;\\\\n\\\\n//forearm movement;\\\\nzp=zp-0.3;\\\\nang=3.14 + sin(tm*2 - 0.5)*2.5;\\\\nxq=xp;\\\\nsa=sin(ang);ca=cos(ang);\\\\nyq=yp*sa + zp*ca;\\\\nzq=yp*ca - zp*sa;\\\\n\\\\n//upper arm twist\\\\nang=-1.0 + cos(tm*3 + 0.5);\\\\nxp=xq*sa + yq*ca;\\\\nyp=xq*ca - yq*sa;\\\\nzp=zq;\\\\n\\\\n//upper arm outward;\\\\nzp=zp-0.35;\\\\nang=cos(tm*1)*1.75 - 1.05;\\\\nsa=sin(ang);ca=cos(ang);\\\\nxq=xp*sa + zp*ca;\\\\nyq=yp;\\\\nzq=xp*ca - zp*sa;\\\\n\\\\n//upper arm up down;\\\\nang=cos(tm);\\\\nxp=xq;\\\\nsa=sin(ang);ca=cos(ang);\\\\nyp=yq*ca - zq*sa;\\\\nzp=yq*sa + zq*ca;\\\\n\\\\n//xp=xq;yp=yq;zp=zq;\\\\n\\\\n\\\\n//project into screenspace and draw on screen\\\\nzp=zp+1.5;\\\\nxs=xp/zp;\\\\nys=yp/zp;\\\\n\\\\nx=xs+0.5;\\\\ny=ys*1.3+0.5;\\\\n\\\\n\\\\na=(1-sample);\\\\n\\\"},{\\\"baseVals\\\":{\\\"usedots\\\":1,\\\"thick\\\":1,\\\"smoothing\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"t1=q1;\\\\n\\\\nt7=.0;\\\\nt8=.45;\\\\n\\\\nddx=.25*cos(5.7119*t1)+2.5963*t1*sin(5.7119*t1);\\\\nddy=.3125*sin(5.7119*t1)-3.2453*t1*cos(5.7119*t1);\\\\nddtan=atan2(ddy,ddx);\\\\nt2=-ddtan;\\\\n\\\\nval1=((-.5*cos(5.7119*t1))*cos(t2)-(-.625*sin(5.7119*t1))*sin(t2));\\\\nval2=((-.5*cos(5.7119*t1))*sin(t2)+(-.625*sin(5.7119*t1))*cos(t2));\\\\n\\\\nt6=-sign(t1);\\\\nt7=t7-val1;\\\\nt8=t8-val2;\\\\n\\\\nt3=q2;\\\",\\\"point_eqs_eel\\\":\\\"sample=pow(sample,.85);\\\\n\\\\nc1=6.2831*t1/(1.1-sample);\\\\nc=cos(c1);\\\\ns=sin(c1);\\\\nc2=sqrt(1-sample);\\\\n\\\\nox=t7-.5*c2*c;\\\\noy=t8-.625*c2*s;\\\\n\\\\nx=t7+((ox-t7)*cos(t2)-(oy-t8)*sin(t2));\\\\ny=t8+((ox-t7)*sin(t2)+(oy-t8)*cos(t2));\\\\n\\\\ninv=1/sqr(1.1-sample);\\\\nfdx=-.25*pow(1-sample,-.5)*c-c2*s*3.1415*t1*inv;\\\\nfdy=-.3125*c2*s+3.9268*c2*c*t1*inv;\\\\ninvMag=1/sqrt(sqr(fdx)+sqr(fdy));\\\\nfdx=fdx*invMag;\\\\nfdy=fdy*invMag;\\\\n\\\\nrdx=fdx*cos(1.5707+t2)-fdy*sin(1.5707+t2);\\\\nrdy=fdx*sin(1.5707+t2)+fdx*cos(1.5707+t2);\\\\ntt=rand(100)/100;\\\\nx=x+rdx*(.15*tt)*(1-sample);\\\\ny=y+rdy*(.15*tt)*(1-sample);\\\\n\\\\nx=x*.55;\\\\ny=(y-.5)*.55+.5;\\\\n\\\\nr=sample;\\\\ng=1-sample;\\\\nb=1;\\\\na=below(sample,.995);\\\\n\\\\n\\\\ny=y+t3;\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"decay=.999;\\\\nwrap=sin(time*10);\\\\nmv_dx=bass;\\\\nib_a=.005;\\\\n\\\\n\\\\nvol=(bass+mid+treb)*0.25;\\\\nvol=vol*vol;\\\\n\\\\nmtime=mtime+vol*0.01*(55/fps);\\\\n\\\\nq1=time*0.5;\\\",\\\"pixel_eqs_eel\\\":\\\"zoom=1.005-(rad/100);\\\\nrot=rad/600;\\\\nsy=-1;\\\",\\\"warp\\\":\\\"\\\",\\\"comp\\\":\\\"\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Rovastar + Loadus + Geiss - FractalDrop (Triple Mix).json\":\n/*!*************************************************************************************!*\\\n !*** ./presets/converted/Rovastar + Loadus + Geiss - FractalDrop (Triple Mix).json ***!\n \\*************************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":0,\\\"gammaadj\\\":1,\\\"decay\\\":1,\\\"echo_zoom\\\":1.007,\\\"echo_alpha\\\":0.5,\\\"echo_orient\\\":1,\\\"wave_mode\\\":7,\\\"additivewave\\\":1,\\\"modwavealphabyvolume\\\":1,\\\"wave_a\\\":0.1,\\\"wave_scale\\\":3.815,\\\"wave_smoothing\\\":0.9,\\\"modwavealphastart\\\":0,\\\"modwavealphaend\\\":1.1,\\\"zoom\\\":1.0099,\\\"warp\\\":0.04177,\\\"wave_r\\\":0.65,\\\"wave_g\\\":0.65,\\\"ob_size\\\":0.007,\\\"ib_size\\\":0.26,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":0.85,\\\"mv_r\\\":0.5,\\\"mv_g\\\":0.5,\\\"mv_b\\\":0.5,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":3,\\\"x\\\":0.37,\\\"rad\\\":6.81129,\\\"ang\\\":3.64425,\\\"r\\\":0,\\\"a\\\":0.5,\\\"g2\\\":0,\\\"a2\\\":0.5,\\\"border_a\\\":1},\\\"init_eqs_eel\\\":\\\"t1 = rand(100)*0.01;\\\\nt2 = rand(100)*0.01;\\\",\\\"frame_eqs_eel\\\":\\\"ang = q1*(0.303 + 0.01*t1);\\\\nr = min(1,max(0,0+ 0.1*sin(time*0.417 + 1)));\\\\ng = min(1,max(0,0 + 0.1*sin(time*0.391 + 2)));\\\\nb = min(1,max(0,0 + 0.1*sin(time*0.432 + 4)));\\\\nr2 = min(1,max(0,r2 + 0.02*sin(time*0.657 + 3)));\\\\ng2 = min(1,max(0,g2 + 0.02*sin(time*0.737 + 5)));\\\\nb2 = min(1,max(0,b2 + 0.02*sin(time*0.884 + 6)));\\\\nadditive =0.5+0.15*(bass+bass_att);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":100,\\\"additive\\\":1,\\\"textured\\\":1,\\\"x\\\":0.37,\\\"rad\\\":0.89796,\\\"ang\\\":3.64425,\\\"g\\\":1,\\\"b\\\":1,\\\"a\\\":0.5,\\\"g2\\\":0,\\\"a2\\\":1,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"t1 = rand(100)*0.01;\\\\nt2 = rand(100)*0.01;\\\",\\\"frame_eqs_eel\\\":\\\"x = x + 0.07*sin(q1*0.15+3);\\\\ny = y + 0.03*sin(q1*0.19+1);\\\\ntex_ang = q1*(0.01 + 0.0001*t1);\\\\nr = min(1,max(0,r + 0.01*sin(time*0.0417 + 1)));\\\\ng = min(1,max(0,g + 0.01*sin(time*0.391 + 2)));\\\\nb = min(1,max(0,b + 0.01*sin(time*0.432 + 4)));\\\\nr2 = min(1,max(0,r2 + 0.01*sin(time*0.457 + 3)));\\\\ng2 = min(1,max(0,g2 + 0.01*sin(time*0.0437 + 5)));\\\\nb2 = min(1,max(0,b2 + 0.01*sin(time*0.484 + 6)));\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":100,\\\"additive\\\":1,\\\"textured\\\":1,\\\"x\\\":0.67,\\\"y\\\":0.43,\\\"rad\\\":0.51386,\\\"ang\\\":4.20974,\\\"g\\\":1,\\\"b\\\":1,\\\"g2\\\":0,\\\"a2\\\":1,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"t1 = rand(100)*0.01;\\\\nt2 = rand(100)*0.01;\\\",\\\"frame_eqs_eel\\\":\\\"x = x + 0.05*sin(q1*0.017);\\\\ny = y + 0.09*sin(q1*0.013);\\\\ntex_ang = q1*(0.02 + 0.0001*t1);\\\\nrad = rad * (0.9 + 0.2*t2);\\\\nr = min(1,max(0,r + 0.01*sin(time*0.417 + 1)));\\\\ng = min(1,max(0,g + 0.01*sin(time*0.391 + 2)));\\\\nb = min(1,max(0,b + 0.01*sin(time*0.432 + 4)));\\\\nr2 = min(1,max(0,r2 + 0.01*sin(time*0.457 + 3)));\\\\ng2 = min(1,max(0,g2 + 0.01*sin(time*0.437 + 5)));\\\\nb2 = min(1,max(0,b2 + 0.01*sin(time*0.484 + 6)));\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":100,\\\"additive\\\":1,\\\"textured\\\":1,\\\"rad\\\":0.22298,\\\"r\\\":0.6,\\\"g\\\":0.8,\\\"b\\\":1,\\\"g2\\\":0,\\\"a2\\\":1,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x = x + 0.08*sin(q1*0.25);\\\\ny = y + 0.1*sin(q1*0.5+2);\\\\nang = time;\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"movement = movement + 0.1*max(0,bass+bass_att-2) + 0.15*pow(bass,3) + 0.005;\\\\nq1 = movement;\\\\nmonitor =q1;\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\" shader_body { \\\\n vec3 ret_1;\\\\n vec4 tmpvar_2;\\\\n tmpvar_2 = texture (sampler_main, uv);\\\\n ret_1 = (tmpvar_2.xyz + ((tmpvar_2.xyz - \\\\n ((texture (sampler_blur1, uv).xyz * scale1) + bias1)\\\\n ) * 0.5));\\\\n ret_1 = (ret_1 * 0.9);\\\\n ret_1 = (ret_1 + ((\\\\n ((texture (sampler_noise_lq, ((\\\\n (uv_orig * texsize.xy)\\\\n * \\\\n (texsize_noise_lq.zw * 0.4)\\\\n ) + rand_frame.xy)).xyz - 0.5) / 256.0)\\\\n * 12.0) * clamp (\\\\n (treb_att - 1.0)\\\\n , 0.0, 1.0)));\\\\n vec3 tmpvar_3;\\\\n tmpvar_3 = mix (ret_1, vec3(dot (ret_1, vec3(0.32, 0.49, 0.29))), vec3(0.08, 0.08, 0.08));\\\\n ret_1 = tmpvar_3;\\\\n vec4 tmpvar_4;\\\\n tmpvar_4.w = 1.0;\\\\n tmpvar_4.xyz = tmpvar_3;\\\\n ret = tmpvar_4.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n vec2 uv_1;\\\\n vec2 uv3_2;\\\\n vec2 uv2_3;\\\\n uv_1 = (uv - 0.5);\\\\n uv_1 = (uv_1 * aspect.xy);\\\\n uv2_3.x = ((uv_1.x * -0.497265) - (uv_1.y * 0.8675987));\\\\n uv2_3.y = ((uv_1.x * 0.8675987) + (uv_1.y * -0.497265));\\\\n uv3_2.x = ((uv_1.x * -0.5000263) - (uv_1.y * -0.8660102));\\\\n uv3_2.y = ((uv_1.x * -0.8660102) + (uv_1.y * -0.5000263));\\\\n vec4 tmpvar_4;\\\\n tmpvar_4.w = 1.0;\\\\n tmpvar_4.xyz = max (max (texture (sampler_main, (uv_1 + 0.5)).xyz, texture (sampler_main, (uv2_3 + 0.5)).xyz), texture (sampler_main, (uv3_2 + 0.5)).xyz);\\\\n ret = tmpvar_4.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Rovastar - Oozing Resistance.json\":\n/*!*************************************************************!*\\\n !*** ./presets/converted/Rovastar - Oozing Resistance.json ***!\n \\*************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":1,\\\"baseVals\\\":{\\\"rating\\\":5,\\\"gammaadj\\\":1,\\\"decay\\\":1,\\\"echo_zoom\\\":1.006596,\\\"echo_alpha\\\":0.5,\\\"additivewave\\\":1,\\\"wave_thick\\\":1,\\\"wave_brighten\\\":0,\\\"wrap\\\":0,\\\"wave_a\\\":4.099998,\\\"wave_scale\\\":0.01,\\\"wave_smoothing\\\":0.63,\\\"wave_mystery\\\":-0.4,\\\"modwavealphastart\\\":0.71,\\\"modwavealphaend\\\":1.3,\\\"warpscale\\\":1.331,\\\"zoom\\\":0.999513,\\\"warp\\\":0.01,\\\"wave_r\\\":0.65,\\\"wave_g\\\":0.65,\\\"wave_b\\\":0.65,\\\"ob_size\\\":0.005,\\\"ob_r\\\":0.01,\\\"ob_a\\\":1,\\\"ib_size\\\":0.26,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":0.5,\\\"mv_r\\\":0.35,\\\"mv_g\\\":0.35,\\\"mv_b\\\":0.35,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"ob_r = 0.5+0.5*sin(2*time);\\\\nob_g = 0.5+0.5*sin(1.23*time);\\\\nob_b = 0.5+0.5*sin(time*1.321);\\\\nwave_a =0;\\\\nq8 =oldq8+ 0.003*(pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,6)/fps);\\\\noldq8 = q8;\\\\nwarp=0;\\\",\\\"pixel_eqs_eel\\\":\\\"rot = 0.1*(rad+cos((5+5*sin(q8*1.211)*x)-0.5) -sin(((5+5*sin(q8*0.973))*y)-0.5));\\\\ndx = 0.005*(cos((5+5*sin(q8*1.311)*x)-0.5) -sin(((5+5*sin(q8*0.9431))*y)-0.5));\\\\ndy = 0.005*(cos((5+5*sin(q8*1.021)*x)-0.5) -sin(((5+5*sin(q8*0.987))*y)-0.5));\\\\nzoom =1- 0.005*(rad+cos((5+5*sin(q8*0.943)*x)-0.5) -sin(((5+5*sin(q8*1.0961))*y)-0.5));\\\",\\\"warp\\\":\\\"\\\",\\\"comp\\\":\\\"\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/ShadowHarlequin - LovelyShinySquares [ liquid starburst rmx ] - unchained + rovaster - luckless - martin - starfield sector.json\":\n/*!************************************************************************************************************************************************************!*\\\n !*** ./presets/converted/ShadowHarlequin - LovelyShinySquares [ liquid starburst rmx ] - unchained + rovaster - luckless - martin - starfield sector.json ***!\n \\************************************************************************************************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"gammaadj\\\":2.7,\\\"echo_zoom\\\":1,\\\"echo_alpha\\\":0.5,\\\"echo_orient\\\":3,\\\"wave_mode\\\":4,\\\"additivewave\\\":1,\\\"wave_thick\\\":1,\\\"modwavealphabyvolume\\\":1,\\\"wrap\\\":0,\\\"darken\\\":1,\\\"wave_a\\\":0.865,\\\"wave_scale\\\":3.75,\\\"wave_smoothing\\\":0,\\\"modwavealphastart\\\":0.4,\\\"modwavealphaend\\\":1.3,\\\"warpanimspeed\\\":0.01,\\\"warpscale\\\":100,\\\"zoomexp\\\":0.32545,\\\"warp\\\":0.01,\\\"wave_r\\\":0.65,\\\"wave_g\\\":0.65,\\\"wave_b\\\":0.65,\\\"ob_size\\\":0.005,\\\"ob_a\\\":1,\\\"ib_size\\\":0,\\\"ib_r\\\":1,\\\"ib_g\\\":1,\\\"ib_b\\\":1,\\\"ib_a\\\":1,\\\"mv_x\\\":64,\\\"mv_y\\\":9.6,\\\"mv_l\\\":5,\\\"mv_r\\\":0,\\\"mv_g\\\":0,\\\"mv_b\\\":0,\\\"mv_a\\\":0.3},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":100,\\\"textured\\\":1,\\\"x\\\":0.37,\\\"rad\\\":100,\\\"ang\\\":3.64425,\\\"r\\\":0,\\\"a\\\":0.1,\\\"g2\\\":0,\\\"a2\\\":0.13,\\\"border_a\\\":1},\\\"init_eqs_eel\\\":\\\"t1 = rand(100)*0.01;\\\\nt2 = rand(100)*0.01;\\\",\\\"frame_eqs_eel\\\":\\\"tex_ang = time*(0.3 + 0.1*t1);\\\\nrad = rad * (0.9 + 0.2*t2);\\\\nr = min(1,max(0,r + 0.2*sin(time*0.417 + 1)));\\\\ng = min(1,max(0,g + 0.2*sin(time*0.391 + 2)));\\\\nb = min(1,max(0,b + 0.2*sin(time*0.432 + 4)));\\\\nr2 = min(1,max(0,r2 + 0.2*sin(time*0.657 + 3)));\\\\ng2 = min(1,max(0,g2 + 0.2*sin(time*0.737 + 5)));\\\\nb2 = min(1,max(0,b2 + 0.2*sin(time*0.884 + 6)));\\\\n//a1 = (bass_att);\\\\na1 = 0.3 + 0.1 * sin(treb_att * .55);\\\\nmv_l = 3 + 1 * (treb_att * .25);\\\\n\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":100,\\\"additive\\\":1,\\\"textured\\\":1,\\\"x\\\":0.37,\\\"rad\\\":0.89796,\\\"ang\\\":3.64425,\\\"r\\\":0,\\\"a\\\":0.1,\\\"g2\\\":0,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"t1 = rand(100)*0.01;\\\\nt2 = rand(100)*0.01;\\\",\\\"frame_eqs_eel\\\":\\\"x = x + 0.05*sin(mid_att*0.15+3);\\\\ny = y + 0.03*sin(mid_att*0.19+1);\\\\ntex_ang = bass_att*(0.1 + 0.1*treb_att);\\\\nrad = rad * (0.9 + 0.6*treb_att);\\\\n\\\\n\\\\n\\\\nx = x + sin(treb_att * .005);\\\\ny = y + sin(mid_att * .013);\\\\na = 0 + (treb * .1);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":13,\\\"additive\\\":1,\\\"textured\\\":1,\\\"x\\\":0.77,\\\"y\\\":0.43,\\\"rad\\\":0.51386,\\\"ang\\\":4.20974,\\\"g\\\":1,\\\"b\\\":1,\\\"g2\\\":0,\\\"a2\\\":1,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"t1 = rand(100)*0.01;\\\\nt2 = rand(100)*0.01;\\\",\\\"frame_eqs_eel\\\":\\\"x = x + 0.05*(bass_att*0.07);\\\\ny = y + 0.03*(bass_att*0.03);\\\\ntex_ang = mid_att*(0.8 + 0.1*t1);\\\\nrad = rad * (0.9 + 0.2*mid_att);\\\\nr = min(1,max(0,r + 0.1*(bass_att*0.417 + 1)));\\\\ng = min(1,max(0,g + 0.1*(mid_att*0.391 + 2)));\\\\nb = min(1,max(0,b + 0.1*(treb_att*0.432 + 4)));\\\\nr2 = min(1,max(0,r2 + 0.1*sin(bass_att*0.457 + 3)));\\\\ng2 = min(1,max(0,g2 + 0.1*sin(mid_att*0.437 + 5)));\\\\nb2 = min(1,max(0,b2 + 0.1*sin(treb_att*0.484 + 6)));\\\\nsides = treb_att;\\\\n\\\\nx = x + sin(mid_att * .019);\\\\ny = y + sin(treb_att * .015);\\\\nnum_inst = sin(mid_att * .25);\\\\n\\\\nr = 0.5 + 0.5*sin(frame*2.5);\\\\nb = 0.5 + 0.5*sin(frame*0.5 + 2.094);\\\\ng = 0.5 + 0.5*sin(frame*0.5 + 1.188);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":3,\\\"additive\\\":1,\\\"textured\\\":1,\\\"y\\\":0.7,\\\"rad\\\":1.33692,\\\"r\\\":0,\\\"g\\\":0.8,\\\"b\\\":1,\\\"a\\\":0.1,\\\"g2\\\":0,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x = x + 0.2*sin(treb_att*0.25);\\\\ny = y + 0.1*sin(treb_att*0.5+2);\\\\nrot = mid_att * .45;\\\\n\\\\nr = min(1,max(0,r + 0.1*(bass_att*0.417 + 1)));\\\\ng = min(1,max(0,g + 0.1*(mid_att*0.391 + 2)));\\\\nb = min(1,max(0,b + 0.1*(treb_att*0.432 + 4)));\\\\nr2 = min(1,max(0,r2 + 0.1*sin(bass_att*0.457 + 3)));\\\\ng2 = min(1,max(0,g2 + 0.1*sin(mid_att*0.437 + 5)));\\\\nb2 = min(1,max(0,b2 + 0.1*sin(treb_att*0.484 + 6)));\\\\nang = sin(treb_att);\\\\n\\\\nx = x + sin(mid_att * .016);\\\\ny = x + sin(treb_att * .015);\\\\nnum_inst = sin(treb_att * .35);\\\\n\\\\nr = 0.5 + 0.5*sin(frame*2.5);\\\\nb = 0.5 + 0.5*sin(frame*0.5 + 2.094);\\\\ng = 0.5 + 0.5*sin(frame*0.5 + 1.188);\\\\n\\\\n\\\\nrad = rad + (treb * .001);\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"spectrum\\\":1,\\\"thick\\\":1,\\\"additive\\\":1,\\\"scaling\\\":9.86086},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"ma=ma+(above(bass_att,1)*3.1415*.01*bass_att);\\\\nma=ma-(above(treb_att,1)*3.1415*.01*treb_att);\\\\n\\\\nmx=mx+(.0002*cos(ma));\\\\nmy=my+(.0002*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\n//a=(above(bass+mid+treb,.8));\\\\n//a = bass_att * .35;\\\\n\\\\nr = sin(treb+att * .45);\\\\nb = sin(treb+att * .65);\\\\ng = sin(treb+att * .25);\\\\n\\\\n\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"spectrum\\\":1,\\\"thick\\\":1,\\\"additive\\\":1,\\\"scaling\\\":27.42973},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"//r = min(1,max(0,r + 0.1*(bass_att*0.217 + 1)));\\\\n//g = min(1,max(0,g + 0.1*(treb_att*0.191 + 2)));\\\\n//b = min(1,max(0,b + 0.1*sin(mid_att*0.232 + 4)));\\\\n//r2 = min(1,max(0,r2 + 0.1*sin(bass_att*0.257 + 3)));\\\\n//g2 = min(1,max(0,g2 + 0.1*sin(treb_att*0.237 + 5)));\\\\n//b2 = min(1,max(0,b2 + 0.1*sin(mid_att*0.284 + 6)));\\\\n\\\\n\\\\na1 = treb_att * .25;\\\\na2 = mid_att * .15;\\\\na3 = treb_att * .25;\\\\n\\\\n\\\\nr = sin(treb_att);\\\\nb = sin(treb_att);\\\\ng = sin(treb_att);\\\",\\\"point_eqs_eel\\\":\\\"ma=ma+(above(bass_att,1)*3.1415*.01*bass_att);\\\\nma=ma-(above(treb_att,1)*3.1415*.01*treb_att);\\\\n\\\\nmx=mx+(.0002*cos(ma));\\\\nmy=my+(.0002*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\n//a=(above(bass+mid+treb,.8));\\\\n//a = bass_att * .35;\\\\n\\\\nr = sin(treb+att * .45);\\\\nb = sin(treb+att * .65);\\\\ng = sin(treb+att * .25);\\\\n\\\\n\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"thick\\\":1,\\\"additive\\\":1,\\\"scaling\\\":6.62306,\\\"r\\\":0.5,\\\"g\\\":0.5,\\\"b\\\":0.5},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"//r = min(1,max(0,r + 0.1*(bass_att*0.217 + 1)));\\\\n//g = min(1,max(0,g + 0.1*(treb_att*0.191 + 2)));\\\\n//b = min(1,max(0,b + 0.1*(mid_att*0.232 + 4)));\\\\nr2 = min(1,max(0,r2 + 0.1*sin(bass_att*0.257 + 3)));\\\\ng2 = min(1,max(0,g2 + 0.1*sin(treb_att*0.237 + 5)));\\\\nb2 = min(1,max(0,b2 + 0.1*sin(mid_att*0.284 + 6)));\\\\na1 = treb_att * .25;\\\\na2 = mid_att * .15;\\\\na3 = treb_att * .25;\\\\n\\\",\\\"point_eqs_eel\\\":\\\"ma=ma+(above(bass_att,1)*3.1415*.01*bass_att);\\\\nma=ma-(above(treb_att,1)*3.1415*.01*treb_att);\\\\n\\\\nmx=mx+(.0002*cos(ma));\\\\nmy=my+(.0002*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\n//a=(above(bass+mid+treb,.8));\\\\n//a = bass_att * .35;\\\\n\\\\nr = sin(treb+att * .45);\\\\nb = sin(treb+att * .65);\\\\ng = sin(treb+att * .25);\\\\n\\\\n\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"samples\\\":142,\\\"thick\\\":1,\\\"scaling\\\":8.9269,\\\"r\\\":0.6,\\\"g\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"//r = min(1,max(0,r + 0.1*(bass_att*0.217 + 1)));\\\\n//g = min(1,max(0,g + 0.1*(treb_att*0.191 + 2)));\\\\n//b = min(1,max(0,b + 0.1*(mid_att*0.232 + 4)));\\\\nr2 = min(1,max(0,r2 + 0.1*sin(bass_att*0.257 + 3)));\\\\ng2 = min(1,max(0,g2 + 0.1*sin(treb_att*0.237 + 5)));\\\\nb2 = min(1,max(0,b2 + 0.1*sin(mid_att*0.284 + 6)));\\\\n\\\\n\\\\nr = 255;\\\\nb = 255;\\\\ng = 255;\\\",\\\"point_eqs_eel\\\":\\\"ma=ma+(above(bass_att,1)*3.1415*.01*bass_att);\\\\nma=ma-(above(treb_att,1)*3.1415*.01*treb_att);\\\\n\\\\nmx=mx+(.0002*cos(ma));\\\\nmy=my+(.0002*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\n//a=(above(bass+mid+treb,.8));\\\\n//a = bass_att * .35;\\\\n\\\\nr = sin(treb+att * .45);\\\\nb = sin(treb+att * .65);\\\\ng = sin(treb+att * .25);\\\\n\\\\n\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"//Variables controling the glitch effect////////////////////////////////////////\\\\ndecayrate = 0.09; //How fast the glitch effect decays back to original image\\\\ntrebresp = 2.8; //Level of treb needed for effect to take place\\\\n////////////////////////////////////////////////////////////////////////////////\\\\n\\\\n\\\\ncdecay = pow(decayrate, 30/fps);\\\\ncount = above(treb, trebresp)*1 + (1-above(treb, 3))*count;\\\\ncount = count - above(count, cdecay)*cdecay;\\\\nq29=count;\\\\nmonitor = q29;\\\\n\\\\n\\\\n\\\\ndecay = 0;\\\\n\\\\ndt = 0.02;\\\\n\\\\nh = h + v*dt;\\\\n\\\\nv = v*0.986 + a*dt;\\\\na = -(h - 0.5)*0.4 + sqrt(- min(0,(w1v+w2v)*0.1)) - .175;\\\\n\\\\nmonitor = w2;\\\\n\\\\n\\\\nw1 = w1 + w1v*dt;\\\\nw1v = w1v*0.98 + w1a*dt;\\\\nw1a = -(w1)*20 - w2a*0.1 + av*30;\\\\n\\\\nw2 = w2 + w2v*dt;\\\\nw2v = w2v*0.98 + w2a*dt;\\\\nw2a = -(w2-w1)*20;\\\\n\\\\nbb = bb*0.99 + bass*0.02;\\\\nmm = mm*0.99 + mid*0.02;\\\\ntt = tt*0.99 + treb*0.02;\\\\n\\\\nmi = min(min(bb,mm),tt);\\\\nma = max(max(bb,mm),tt);\\\\nav = (bb+mm+tt-mi-ma);\\\\nq5 = av;\\\\navn = (av-mi)/(ma-mi);\\\\nav = abs(avo-avn);\\\\navo = avn;\\\\n\\\\nq1 = h*0.8 + 0.12;\\\\nq2 = (w1);\\\\nq3 = (w2 + w1);\\\\nq4 = 0.1+ avo*0.1;\\\\n\\\\n\\\\n\\\\nwave_r = 0.5 + 0.5*sin(frame*2.5);\\\\nwave_b = 0.5 + 0.5*sin(frame*0.5 + 1.094);\\\\nwave_g = 0.5 + 0.5*sin(frame*0.5 + 1.188);\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\" shader_body { \\\\n vec2 uv_1;\\\\n vec3 ret_2;\\\\n vec2 tmpvar_3;\\\\n tmpvar_3 = ((uv * texsize.xy) * 0.08);\\\\n uv_1 = (uv - ((\\\\n (sin(tmpvar_3) / cos(tmpvar_3))\\\\n * texsize.zw) * (treb * 3.0)));\\\\n vec3 tmpvar_4;\\\\n tmpvar_4 = (texture (sampler_main, uv_1).xyz + (vec3(dot (texture (sampler_noise_lq, \\\\n ((((texsize.xy * texsize_noise_lq.zw).x * uv) * 0.02) + (0.1 * rand_frame).xy)\\\\n ), vec4(0.32, 0.49, 0.29, 0.0))) / 30.0));\\\\n ret_2 = ((mix (tmpvar_4, \\\\n (1.0 - tmpvar_4.zyx)\\\\n , vec3(0.01, 0.01, 0.01)) - 0.03) - (0.2 * pow (\\\\n (1.0 - rad)\\\\n , \\\\n (treb * 90.0)\\\\n )));\\\\n ret_2 = (ret_2 + (ret_2 * (vol * 0.001)));\\\\n ret_2 = (ret_2 + (ret_2 * (treb * 0.025)));\\\\n ret_2 = (ret_2 + 0.001);\\\\n uv_1 = (uv_1 + ((treb_att * 0.001) * texture (sampler_main, uv_1)).xy);\\\\n ret_2 = (ret_2 + ((\\\\n (texture (sampler_blur3, uv_1).xyz * scale3)\\\\n + bias3) * 0.05));\\\\n vec4 tmpvar_5;\\\\n tmpvar_5.w = 1.0;\\\\n tmpvar_5.xyz = ret_2;\\\\n ret = tmpvar_5.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n vec2 uv_1;\\\\n vec3 crisp_2;\\\\n vec2 uv3_3;\\\\n vec2 uv2_4;\\\\n vec3 ret_5;\\\\n vec2 tmpvar_6;\\\\n vec2 tmpvar_7;\\\\n tmpvar_7 = (uv - 0.5);\\\\n tmpvar_6 = (tmpvar_7 * aspect.xy);\\\\n float tmpvar_8;\\\\n tmpvar_8 = (0.1 / (sqrt(\\\\n dot (tmpvar_6, tmpvar_6)\\\\n ) + 0.05));\\\\n vec2 tmpvar_9;\\\\n float tmpvar_10;\\\\n tmpvar_10 = (ang / 3.14);\\\\n tmpvar_9.x = tmpvar_10;\\\\n tmpvar_9.y = (tmpvar_8 * 1.5);\\\\n uv2_4.y = (tmpvar_9.y + (0.1 * time));\\\\n uv2_4.x = (tmpvar_10 + (0.02 * time));\\\\n uv3_3.y = (tmpvar_8 + q30);\\\\n uv3_3.x = (tmpvar_10 + (time / 32.0));\\\\n crisp_2 = ((texture (sampler_main, fract(uv2_4)).xyz + (2.0 * texture (sampler_main, \\\\n fract(uv3_3)\\\\n ).xyz)) + ((2.0 * \\\\n ((texture (sampler_blur2, fract(uv2_4)).xyz * scale2) + bias2)\\\\n ) + (2.0 * \\\\n ((texture (sampler_blur2, fract(uv3_3)).xyz * scale2) + bias2)\\\\n )));\\\\n crisp_2 = ((3.0 * crisp_2) * rad);\\\\n float tmpvar_11;\\\\n tmpvar_11 = clamp ((1.0 - (4.0 * rad)), 0.0, 1.0);\\\\n ret_5 = ((crisp_2 + (\\\\n ((vec3(1.0, 0.0, 1.0) * uv.y) * pow ((1.0 - rad), 8.0))\\\\n * tmpvar_11)) + (tmpvar_11 * texture (sampler_main, fract(uv)).xyz));\\\\n uv_1 = ((tmpvar_7 * aspect.xy) + 0.5);\\\\n vec2 tmpvar_12;\\\\n tmpvar_12 = (1.0 - uv_1);\\\\n vec3 tmpvar_13;\\\\n tmpvar_13 = (texture (sampler_main, uv_1).xyz + (2.0 * (\\\\n (texture (sampler_blur2, uv_1).xyz * scale2)\\\\n + bias2)));\\\\n vec3 tmpvar_14;\\\\n tmpvar_14 = (texture (sampler_main, tmpvar_12).xyz + (2.0 * (\\\\n (texture (sampler_blur2, tmpvar_12).xyz * scale2)\\\\n + bias2)));\\\\n vec3 tmpvar_15;\\\\n tmpvar_15 = mix (ret_5, mix ((tmpvar_13 * tmpvar_14), (tmpvar_13 + tmpvar_14), vec3((q29 * 0.16))), vec3((q29 * 0.5)));\\\\n vec3 tmpvar_16;\\\\n tmpvar_16 = mix (tmpvar_15, (1.0 - tmpvar_15), ((q29 * tmpvar_15) * (rad * \\\\n (2.0 - q29)\\\\n )));\\\\n ret_5 = (tmpvar_16 * (tmpvar_16 + (treb * 0.001)));\\\\n vec4 tmpvar_17;\\\\n tmpvar_17.w = 1.0;\\\\n tmpvar_17.xyz = ret_5;\\\\n ret = tmpvar_17.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/TonyMilkdrop - Leonardo Da Vinci's Balloon [Flexi - merry-go-round + techstyle].json\":\n/*!****************************************************************************************************************!*\\\n !*** ./presets/converted/TonyMilkdrop - Leonardo Da Vinci's Balloon [Flexi - merry-go-round + techstyle].json ***!\n \\****************************************************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":3,\\\"echo_zoom\\\":1,\\\"wave_mode\\\":1,\\\"wave_thick\\\":1,\\\"wrap\\\":0,\\\"invert\\\":1,\\\"wave_scale\\\":0.5,\\\"wave_smoothing\\\":0.45,\\\"warpanimspeed\\\":2.217,\\\"warpscale\\\":100,\\\"zoomexp\\\":100,\\\"zoom\\\":1.01,\\\"warp\\\":1.25946,\\\"wave_r\\\":0,\\\"wave_g\\\":0,\\\"wave_b\\\":0,\\\"ob_r\\\":1,\\\"ob_g\\\":1,\\\"ob_b\\\":1,\\\"ob_a\\\":1,\\\"ib_r\\\":1,\\\"ib_g\\\":1,\\\"ib_b\\\":1,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"q1 = 0.0003*(pow(1.2+1*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,6));\\\\nmonitor = q1;\\\\nwave_r = wave_r + 0.5*sin(time*1.13);\\\\nwave_g = wave_g + 0.5*sin(time*1.23);\\\\nwave_b = wave_b + 0.5*sin(time*1.33);\\\\nob_r = ob_r + 1*sin(time*2.26);\\\\nob_g = ob_g + 1*sin(time*2.46);\\\\nob_b = ob_b + 1*sin(time*2.66);\\\",\\\"pixel_eqs_eel\\\":\\\"zoom = zoom + 0.125*sin(q1);\\\\nrot = rot + 0.25*sin(fps*100)*q1/2;\\\\nzoom = zoom - 0.05*sin(rad);\\\\nrot = rot + 0.05*sin(fps*5);\\\",\\\"warp\\\":\\\" shader_body { \\\\n vec3 ret_1;\\\\n vec2 tmpvar_2;\\\\n tmpvar_2 = fract(uv);\\\\n vec2 tmpvar_3;\\\\n tmpvar_3 = (((uv_orig * texsize.xy) * texsize_noise_lq.zw) + rand_frame.xy);\\\\n vec2 tmpvar_4;\\\\n tmpvar_4 = (texsize.zw * 12.0);\\\\n vec3 tmpvar_5;\\\\n tmpvar_5 = (((2.0 * \\\\n ((texture (sampler_blur3, (uv_orig + (vec2(1.0, 0.0) * tmpvar_4))).xyz * scale3) + bias3)\\\\n ) - (2.0 * \\\\n ((texture (sampler_blur3, (uv_orig - (vec2(1.0, 0.0) * tmpvar_4))).xyz * scale3) + bias3)\\\\n )) * 0.5);\\\\n vec3 tmpvar_6;\\\\n tmpvar_6 = (((2.0 * \\\\n ((texture (sampler_blur3, (uv_orig + (vec2(0.0, 1.0) * tmpvar_4))).xyz * scale3) + bias3)\\\\n ) - (2.0 * \\\\n ((texture (sampler_blur3, (uv_orig - (vec2(0.0, 1.0) * tmpvar_4))).xyz * scale3) + bias3)\\\\n )) * 0.5);\\\\n ret_1.x = ((texture (sampler_fc_main, tmpvar_2).x - (\\\\n (((texture (sampler_blur3, tmpvar_2).xyz * scale3) + bias3) - texture (sampler_fc_main, tmpvar_2).xyz)\\\\n .x * 0.1)) - 0.035);\\\\n vec2 tmpvar_7;\\\\n tmpvar_7.x = tmpvar_5.x;\\\\n tmpvar_7.y = tmpvar_6.x;\\\\n vec2 tmpvar_8;\\\\n tmpvar_8.x = tmpvar_5.y;\\\\n tmpvar_8.y = tmpvar_6.y;\\\\n ret_1.y = (((texture (sampler_fc_main, \\\\n (((uv_orig + (\\\\n ((texture (sampler_noise_lq, tmpvar_3).xy - 0.5) * texsize.zw)\\\\n * 4.0)) - ((tmpvar_7 * texsize.zw) * 4.0)) + ((tmpvar_8 * texsize.zw) * 8.0))\\\\n ).y + \\\\n ((texture (sampler_noise_lq, tmpvar_3).xyz - 0.5) * 0.1)\\\\n ) - 0.012) + (texture (sampler_pc_main, uv_orig).z * 0.2)).x;\\\\n vec2 tmpvar_9;\\\\n tmpvar_9.x = tmpvar_6.x;\\\\n tmpvar_9.y = -(tmpvar_5.x);\\\\n vec2 tmpvar_10;\\\\n tmpvar_10 = ((uv_orig + (\\\\n ((texture (sampler_noise_lq, tmpvar_3).xy - 0.5) * texsize.zw)\\\\n * 2.0)) + ((tmpvar_9 * texsize.zw) * 64.0));\\\\n ret_1.z = (((\\\\n (texture (sampler_fc_main, tmpvar_10).z + ((texture (sampler_fc_main, tmpvar_10).z - (\\\\n (texture (sampler_blur2, tmpvar_10).xyz * scale2)\\\\n + bias2).z) * 0.2))\\\\n + \\\\n (texture (sampler_noise_lq, tmpvar_3).xyz * 0.1)\\\\n ) - (\\\\n (texture (sampler_blur3, uv_orig).xyz * scale3)\\\\n + bias3).x) - (clamp (\\\\n (1.0 - ((texture (sampler_blur2, uv_orig).xyz * scale2) + bias2).x)\\\\n , 0.0, 1.0) * 0.04)).x;\\\\n vec4 tmpvar_11;\\\\n tmpvar_11.w = 1.0;\\\\n tmpvar_11.xyz = ret_1;\\\\n ret = tmpvar_11.xyz;\\\\n }\\\",\\\"comp\\\":\\\"vec2 xlat_mutabled;\\\\nvec3 xlat_mutabledx;\\\\nvec3 xlat_mutabledy;\\\\n shader_body { \\\\n vec3 ret_1;\\\\n xlat_mutabled = (texsize.zw * 1.5);\\\\n xlat_mutabledx = (texture (sampler_main, (uv_orig + (vec2(1.0, 0.0) * xlat_mutabled))).xyz - texture (sampler_main, (uv_orig - (vec2(1.0, 0.0) * xlat_mutabled))).xyz);\\\\n xlat_mutabledy = (texture (sampler_main, (uv_orig + (vec2(0.0, 1.0) * xlat_mutabled))).xyz - texture (sampler_main, (uv_orig - (vec2(0.0, 1.0) * xlat_mutabled))).xyz);\\\\n vec2 tmpvar_2;\\\\n tmpvar_2.x = xlat_mutabledx.y;\\\\n tmpvar_2.y = xlat_mutabledy.y;\\\\n vec2 x_3;\\\\n x_3 = (tmpvar_2 * 8.0);\\\\n ret_1 = (((texture (sampler_main, uv).x * \\\\n (1.0 - sqrt(dot (x_3, x_3)))\\\\n ) * pow (hue_shader, vec3(6.0, 6.0, 6.0))) * 1.4);\\\\n vec2 tmpvar_4;\\\\n tmpvar_4.x = xlat_mutabledx.z;\\\\n tmpvar_4.y = xlat_mutabledy.z;\\\\n vec2 x_5;\\\\n x_5 = (tmpvar_4 * 4.0);\\\\n vec3 tmpvar_6;\\\\n tmpvar_6 = mix (ret_1, vec3(1.0, 1.0, 1.0), vec3(sqrt(dot (x_5, x_5))));\\\\n ret_1 = tmpvar_6;\\\\n vec4 tmpvar_7;\\\\n tmpvar_7.w = 1.0;\\\\n tmpvar_7.xyz = tmpvar_6;\\\\n ret = tmpvar_7.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/TonyMilkdrop - Magellan's Nebula [Flexi - you enter first + multiverse].json\":\n/*!********************************************************************************************************!*\\\n !*** ./presets/converted/TonyMilkdrop - Magellan's Nebula [Flexi - you enter first + multiverse].json ***!\n \\********************************************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":3,\\\"gammaadj\\\":1.3,\\\"decay\\\":1,\\\"echo_zoom\\\":1.75,\\\"echo_alpha\\\":0.15,\\\"echo_orient\\\":3,\\\"wave_mode\\\":1,\\\"wave_dots\\\":1,\\\"darken\\\":1,\\\"wave_scale\\\":0.5,\\\"wave_smoothing\\\":0.9,\\\"warp\\\":0.01,\\\"mv_l\\\":5},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":100,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"r = r + 1*sin(time*0.339);\\\\ng = g + 1*sin(time*0.369);\\\\nb = b + 1*sin(time*0.399);\\\\nr2 = r2 + 1*sin(time*0.113);\\\\ng2 = g2 + 1*sin(time*0.123);\\\\nb2 = b2 + 1*sin(time*0.133);\\\\nrad = q1/3;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"q1 = 0.0003*(pow(1+1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,6));\\\\nmv_a = q1;\\\\nmv_x = mv_x + 1*sin(time);\\\\nmv_y = mv_y + 1*cos(time);\\\\nmv_dx = mv_dx + 1.25*sin(fps*8);\\\\nmv_dy = mv_dy + 1.35*sin(fps*8);\\\\nmv_r = mv_r + 1*sin(time*0.565);\\\\nmv_g = mv_g + 1*sin(time*0.615);\\\\nmv_b = mv_b + 1*sin(time*0.665);\\\\nwave_r = wave_r + 0.5*sin(time*1.13);\\\\nwave_g = wave_g + 0.5*sin(time*1.23);\\\\nwave_b = wave_b + 0.5*sin(time*1.33);\\\",\\\"pixel_eqs_eel\\\":\\\"zoom = zoom + 0.0125*q1;\\\\nrot = rot + 0.025*sin(fps*10)*q1;\\\\nwarp = 0;\\\",\\\"warp\\\":\\\" shader_body { \\\\n vec2 my_uv_1;\\\\n vec3 ret_2;\\\\n vec3 tmpvar_3;\\\\n tmpvar_3 = ((640.0 * texsize.z) * ((2.0 * \\\\n ((texture (sampler_blur2, (uv + vec2(0.01, 0.0))).xyz * scale2) + bias2)\\\\n ) - (2.0 * \\\\n ((texture (sampler_blur2, (uv - vec2(0.01, 0.0))).xyz * scale2) + bias2)\\\\n )));\\\\n vec3 tmpvar_4;\\\\n tmpvar_4 = ((512.0 * texsize.w) * ((2.0 * \\\\n ((texture (sampler_blur2, (uv + vec2(0.0, 0.01))).xyz * scale2) + bias2)\\\\n ) - (2.0 * \\\\n ((texture (sampler_blur2, (uv - vec2(0.0, 0.01))).xyz * scale2) + bias2)\\\\n )));\\\\n vec2 tmpvar_5;\\\\n tmpvar_5.x = tmpvar_3.y;\\\\n tmpvar_5.y = tmpvar_4.y;\\\\n vec2 tmpvar_6;\\\\n tmpvar_6.x = tmpvar_3.x;\\\\n tmpvar_6.y = tmpvar_4.x;\\\\n vec2 tmpvar_7;\\\\n tmpvar_7.x = tmpvar_4.y;\\\\n tmpvar_7.y = -(tmpvar_3.y);\\\\n vec2 tmpvar_8;\\\\n tmpvar_8 = (uv - ((\\\\n ((tmpvar_5 * 0.3) + (tmpvar_6 * 0.1))\\\\n + \\\\n (tmpvar_7 * 0.01)\\\\n ) * 0.01));\\\\n ret_2.x = texture (sampler_fw_main, (tmpvar_8 - floor(tmpvar_8))).x;\\\\n ret_2.x = (ret_2.x + ((\\\\n (2.0 * ret_2.x)\\\\n - \\\\n (2.0 * ((texture (sampler_blur1, tmpvar_8).xyz * scale1) + bias1).x)\\\\n ) * 0.25));\\\\n vec2 tmpvar_9;\\\\n tmpvar_9.x = tmpvar_3.y;\\\\n tmpvar_9.y = tmpvar_4.y;\\\\n vec2 tmpvar_10;\\\\n tmpvar_10.x = tmpvar_4.x;\\\\n tmpvar_10.y = -(tmpvar_3.y);\\\\n my_uv_1 = ((uv - (tmpvar_9 * 0.01)) + (tmpvar_10 * 0.001));\\\\n ret_2.y = texture (sampler_fw_main, (my_uv_1 - floor(my_uv_1))).y;\\\\n ret_2.y = (ret_2.y + ((\\\\n ((2.0 * ret_2.y) - (2.0 * ((texture (sampler_blur3, my_uv_1).xyz * scale3) + bias3).y))\\\\n * 0.025) + 0.01));\\\\n vec4 tmpvar_11;\\\\n tmpvar_11.w = 1.0;\\\\n tmpvar_11.xyz = ret_2;\\\\n ret = tmpvar_11.xyz;\\\\n }\\\",\\\"comp\\\":\\\"vec2 xlat_mutablefactorA;\\\\n shader_body { \\\\n vec2 uv_1;\\\\n vec2 dz_2;\\\\n vec3 dy_3;\\\\n vec3 dx_4;\\\\n vec2 d_5;\\\\n vec3 ret_6;\\\\n xlat_mutablefactorA = (uv - vec2(0.5, 0.5));\\\\n vec2 tmpvar_7;\\\\n tmpvar_7.x = -((xlat_mutablefactorA.y * -1024.0));\\\\n tmpvar_7.y = (xlat_mutablefactorA.x * -1024.0);\\\\n vec2 tmpvar_8;\\\\n tmpvar_8.x = tmpvar_7.x;\\\\n tmpvar_8.y = -(tmpvar_7.y);\\\\n uv_1 = (vec2(-100.0, 100.0) * (tmpvar_8 / (\\\\n (tmpvar_7.x * tmpvar_7.x)\\\\n + \\\\n (tmpvar_7.y * tmpvar_7.y)\\\\n )).yx);\\\\n uv_1 = (0.5 + ((\\\\n (1.0 - abs(((\\\\n fract((mix ((0.5 + \\\\n (((0.5 + (\\\\n (uv - 0.5)\\\\n * vec2(1.1, 0.81))) - 0.5) * 2.0)\\\\n ), (uv_1 + 0.5), vec2(0.5, 0.5)) * 0.5))\\\\n * 2.0) - 1.0)))\\\\n - 0.5) * 0.98));\\\\n vec2 tmpvar_9;\\\\n vec2 tmpvar_10;\\\\n tmpvar_10 = (vec2(1.0, 0.0) * texsize.zw);\\\\n tmpvar_9.x = (texture (sampler_main, (uv_1 + tmpvar_10)).xyz - texture (sampler_main, (uv_1 - tmpvar_10)).xyz).y;\\\\n vec2 tmpvar_11;\\\\n tmpvar_11 = (vec2(0.0, 1.0) * texsize.zw);\\\\n tmpvar_9.y = (texture (sampler_main, (uv_1 + tmpvar_11)).xyz - texture (sampler_main, (uv_1 - tmpvar_11)).xyz).y;\\\\n d_5 = (texsize.zw * 2.0);\\\\n dx_4 = (((2.0 * \\\\n ((texture (sampler_blur1, (uv_1 + (vec2(1.0, 0.0) * d_5))).xyz * scale1) + bias1)\\\\n ) - (2.0 * \\\\n ((texture (sampler_blur1, (uv_1 - (vec2(1.0, 0.0) * d_5))).xyz * scale1) + bias1)\\\\n )) * 0.5);\\\\n dy_3 = (((2.0 * \\\\n ((texture (sampler_blur1, (uv_1 + (vec2(0.0, 1.0) * d_5))).xyz * scale1) + bias1)\\\\n ) - (2.0 * \\\\n ((texture (sampler_blur1, (uv_1 - (vec2(0.0, 1.0) * d_5))).xyz * scale1) + bias1)\\\\n )) * 0.5);\\\\n vec2 tmpvar_12;\\\\n tmpvar_12.x = dx_4.y;\\\\n tmpvar_12.y = dy_3.y;\\\\n dz_2 = ((tmpvar_9 * 3.0) + tmpvar_12);\\\\n ret_6 = (vec3(((\\\\n pow ((sqrt(dot (dz_2, dz_2)) * 0.8), 0.7)\\\\n + \\\\n (((texture (sampler_blur2, uv_1).xyz * scale2) + bias2).y * 0.4)\\\\n ) - 0.1)) * vec3(0.3, 0.5, 0.7));\\\\n vec2 tmpvar_13;\\\\n tmpvar_13.x = dx_4.x;\\\\n tmpvar_13.y = dy_3.x;\\\\n vec3 tmpvar_14;\\\\n tmpvar_14 = mix (mix (ret_6, vec3(0.2, 0.1, 0.0), vec3((texture (sampler_main, \\\\n (uv_1 + ((tmpvar_13 * texsize.zw) * 18.0))\\\\n ).x * 6.0))), vec3(1.0, 1.0, 1.0), texture (sampler_main, uv_1).zzz);\\\\n ret_6 = tmpvar_14;\\\\n vec4 tmpvar_15;\\\\n tmpvar_15.w = 1.0;\\\\n tmpvar_15.xyz = tmpvar_14;\\\\n ret = tmpvar_15.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Unchained - Rewop.json\":\n/*!**************************************************!*\\\n !*** ./presets/converted/Unchained - Rewop.json ***!\n \\**************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":1,\\\"baseVals\\\":{\\\"rating\\\":5,\\\"gammaadj\\\":1,\\\"decay\\\":0.94,\\\"echo_zoom\\\":0.9998,\\\"echo_alpha\\\":0.4999,\\\"echo_orient\\\":3,\\\"wave_mode\\\":1,\\\"additivewave\\\":1,\\\"wave_dots\\\":1,\\\"wave_brighten\\\":0,\\\"wave_a\\\":1.254574,\\\"wave_scale\\\":0.45029,\\\"wave_smoothing\\\":0,\\\"zoomexp\\\":1.008151,\\\"zoom\\\":0.659411,\\\"warp\\\":0.01,\\\"wave_r\\\":0.5,\\\"wave_g\\\":0.5,\\\"wave_b\\\":0.5,\\\"ob_size\\\":0.005,\\\"ob_r\\\":1,\\\"ob_a\\\":1,\\\"ib_size\\\":0.005,\\\"ib_r\\\":0,\\\"ib_g\\\":0,\\\"ib_b\\\":0,\\\"ib_a\\\":0.9,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":0,\\\"mv_r\\\":0,\\\"mv_g\\\":0.7,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"warp=0;\\\\nle=1+.5+2*sin(bass_att);\\\\nbpulse=band(above(le,bth),above(le-bth,bblock));\\\\nbblock=le-bth;\\\\nbth=if(above(le,bth),le+114/(le+10)-7.407,\\\\nbth+bth*.07/(bth-12)+below(bth,2.7)*.1*(2.7-bth));\\\\nbth=if(above(bth,6),6,bth);\\\\nbres=bpulse*sin(pulse+le*.5) + bnot(bpulse)*bres;\\\\n\\\\nle=1+.5+2*sin(treb_att);\\\\ntpulse=band(above(le,tth),above(le-tth,tblock));\\\\ntblock=le-tth;\\\\ntth=if(above(le,tth),le+114/(le+10)-7.407,\\\\ntth+tth*.07/(tth-12)+below(tth,2.7)*.1*(2.7-tth));\\\\ntth=if(above(tth,6),6,tth);\\\\ntres=tpulse*sin(pulse+le*.5) + bnot(tpulse)*tres;\\\\n\\\\nle=1+.5+2*sin(mid_att);\\\\nmpulse=band(above(le,mth),above(le-mth,mblock));\\\\nmblock=le-mth;\\\\nmth=if(above(le,mth),le+114/(le+10)-7.407,\\\\nmth+mth*.07/(mth-12)+below(mth,2.7)*.1*(2.7-mth));\\\\nmth=if(above(mth,6),6,mth);\\\\nmres=mpulse*sin(pulse+le*.5) + bnot(mpulse)*mres;\\\\n\\\\n\\\\n\\\\npulse=if(above(abs(pulse),3.14),-3.14,pulse+(bth+mth+tth)*.003);\\\\nq1=bres;\\\\nq2=tres;\\\\nq3=mres;\\\\nq4=sin(pulse);\\\\n\\\\nmod_state=(above(q1,0)+above(q2,0)+above(q3,0))*(1+above(q4,0));\\\\nccl=ccl+tpulse+mpulse-bpulse;\\\\nq5=cos(pulse*(.5+.1*mod_state));\\\\nq6=sin(pulse*(.5+pow(.25,mod_state)));\\\\nq7=mod_state;\\\\nq8=ccl;\\\\nob_r=.5+.5*cos(q1+q7);\\\\nob_g=.5+.5*cos(q2*3.14+q7);\\\\nob_b=.5+.5*cos(q3*2+sin(time*.0816));\\\\nib_size=.025+.02*q2;\\\\nob_size=.03+.02*q3-.002*q7;\\\\nwave_r=.5+.5*sin(q1*q7+time*2.183);\\\\nwave_g=.5+.5*sin(q2*3+time*1.211);\\\\nwave_b=.5+.5*sin(q3+time*1.541);\\\\n\\\\nob_a=.8+.2*q2;\\\\nzoom=zoom+.01*q4;\\\",\\\"pixel_eqs_eel\\\":\\\"grid=pow(sin(rad*q6*q2+x*y*q6*q3)*2,1+q7%5)%2;\\\\nrot=bnot(grid)+grid*q4;\\\\nsx=sx+sin((q2+.5)*x)*.003;\\\\nsy=sy+sin((q1+3.4)*y)*.003;\\\\nzoom=zoom+.11*cos(rad*3.14)*q4;\\\",\\\"warp\\\":\\\"\\\",\\\"comp\\\":\\\"\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Unchained - Unified Drag 2.json\":\n/*!***********************************************************!*\\\n !*** ./presets/converted/Unchained - Unified Drag 2.json ***!\n \\***********************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":1,\\\"baseVals\\\":{\\\"rating\\\":0,\\\"gammaadj\\\":1,\\\"decay\\\":0.96,\\\"echo_zoom\\\":2.216266,\\\"echo_alpha\\\":0.78,\\\"wave_mode\\\":5,\\\"additivewave\\\":1,\\\"wave_dots\\\":1,\\\"wave_brighten\\\":0,\\\"brighten\\\":1,\\\"wave_a\\\":1.254574,\\\"wave_scale\\\":0.931011,\\\"wave_smoothing\\\":0,\\\"zoomexp\\\":1.0081,\\\"fshader\\\":0.4,\\\"zoom\\\":0.820774,\\\"cx\\\":0.4999,\\\"warp\\\":0.01,\\\"sx\\\":0.999998,\\\"wave_r\\\":0.5,\\\"wave_g\\\":0.5,\\\"wave_b\\\":0.5,\\\"ob_size\\\":0.005,\\\"ob_r\\\":1,\\\"ob_a\\\":1,\\\"ib_size\\\":0.005,\\\"ib_r\\\":0,\\\"ib_g\\\":0,\\\"ib_b\\\":0,\\\"ib_a\\\":0.9,\\\"mv_x\\\":0,\\\"mv_y\\\":0,\\\"mv_l\\\":0.85,\\\"mv_r\\\":0.4999,\\\"mv_g\\\":0.4999,\\\"mv_b\\\":0.4999,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"warp=0;\\\\nle=1+.5+2*sin(bass_att);\\\\nbpulse=band(above(le,bth),above(le-bth,bblock));\\\\nbblock=le-bth;\\\\nbth=if(above(le,bth),le+114/(le+10)-7.407,\\\\nbth+bth*.07/(bth-12)+below(bth,2.7)*.1*(2.7-bth));\\\\nbth=if(above(bth,6),6,bth);\\\\nbres=bpulse*sin(pulse+le*.5) + bnot(bpulse)*bres;\\\\n\\\\nle=1+.5+2*sin(treb_att);\\\\ntpulse=band(above(le,tth),above(le-tth,tblock));\\\\ntblock=le-tth;\\\\ntth=if(above(le,tth),le+114/(le+10)-7.407,\\\\ntth+tth*.07/(tth-12)+below(tth,2.7)*.1*(2.7-tth));\\\\ntth=if(above(tth,6),6,tth);\\\\ntres=tpulse*sin(pulse+le*.5) + bnot(tpulse)*tres;\\\\n\\\\nle=1+.5+2*sin(mid_att);\\\\nmpulse=band(above(le,mth),above(le-mth,mblock));\\\\nmblock=le-mth;\\\\nmth=if(above(le,mth),le+114/(le+10)-7.407,\\\\nmth+mth*.07/(mth-12)+below(mth,2.7)*.1*(2.7-mth));\\\\nmth=if(above(mth,6),6,mth);\\\\nmres=mpulse*sin(pulse+le*.5) + bnot(mpulse)*mres;\\\\n\\\\n\\\\n\\\\npulse=if(above(abs(pulse),3.14),-3.14,pulse+(bth+mth+tth)*.003);\\\\nq1=bres;\\\\nq2=tres;\\\\nq3=mres;\\\\nq4=sin(pulse);\\\\n\\\\nmod_state=(above(q1,0)+above(q2,0)+above(q3,0))*(1+above(q4,0));\\\\nccl=ccl+tpulse+mpulse-bpulse;\\\\nq5=cos(pulse*(.5+.1*mod_state));\\\\nq6=sin(pulse*(.5+pow(.25,mod_state)));\\\\nq7=mod_state;\\\\nq8=ccl;\\\\nob_r=.5+.5*cos(q1+q7);\\\\nob_g=.5+.5*cos(q2*3.14+q7);\\\\nob_b=.5+.5*cos(q3*2+sin(time*.0816));\\\\nib_size=.025+.02*q2;\\\\nob_size=.03+.02*q3-.002*q7;\\\\nwave_r=.5+.5*sin(q1*q7+time*2.183);\\\\nwave_g=.5+.5*sin(q2*3+time*1.211);\\\\nwave_b=.5+.5*sin(q3+time*1.541);\\\\n\\\\nob_a=.8+.2*q2;\\\\nrot=1;\\\\ncx=cx+.05*q4;\\\\ncy=cy+.05*q5;\\\\nzoom=.95+.05*q6;\\\",\\\"pixel_eqs_eel\\\":\\\"snee=bnot(above(sin(ang)-x,.5)*above(q2,0)+above(y-cos(ang),.5)*above(q1,0));\\\\nsnur=bnot(below(x,.5)*above(q3,0)+below(y,.5)*below(q7,4));\\\\ngrid=sin(sigmoid(sin(y*6.28*q2),sin(x*6.28*q6))*(10+q7));\\\\nzoom=zoom+.02*cos(rad*2+rad*q2)*sign(snee)-.04*sin(rad*3.14*q3-3.14*cos(rad*3.14*snur-3.14*q6));\\\\nsx=if(below(x,.5)*below(y,.5),sx+.2*q4*snur,1+.1*q2*grid);\\\\nsy=if(below(x,.5)*below(y,.5),sy+.2*q5*snee,1+.1*q2*grid);\\\",\\\"warp\\\":\\\"\\\",\\\"comp\\\":\\\"\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Zylot - Paint Spill (Music Reactive Paint Mix).json\":\n/*!*******************************************************************************!*\\\n !*** ./presets/converted/Zylot - Paint Spill (Music Reactive Paint Mix).json ***!\n \\*******************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":3,\\\"wave_mode\\\":2,\\\"wrap\\\":0,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":5.819,\\\"wave_mystery\\\":-0.38,\\\"wave_r\\\":0.5,\\\"wave_g\\\":0.5,\\\"wave_b\\\":0.5,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"rad\\\":0.16446,\\\"g\\\":1,\\\"b\\\":1,\\\"a\\\":0,\\\"r2\\\":1,\\\"b2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"a = if(above(bass,2.5),1,0);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"thick\\\":1},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"y = sample;\\\\nx = (value1+value2)*.003;\\\\na = (value1+value2)*.1;\\\\nr = .5+.3*sin(sample*10+time);\\\\ng = .5+.3*cos(sample*10-time*1.334);\\\\nb = .5+.3*sin(sample*10+time*.998);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"warp = 0;\\\\nwave_r = wave_r + .4*sin(time*.333)+bass_att*.2;\\\\nwave_g = wave_g + .4*sin(time*.555)+treb_att*.2;\\\\nwave_b = wave_b + .4*sin(time*.444)+mid_att*.2;\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\" shader_body { \\\\n vec2 muv_1;\\\\n vec3 ret_2;\\\\n float tmpvar_3;\\\\n tmpvar_3 = (2.0 * bass_att);\\\\n muv_1.x = (uv.x - ((\\\\n ((0.01 * cos((\\\\n (uv.x * (5.0 + tmpvar_3))\\\\n + time))) + (0.01 * cos((\\\\n (uv.y * (5.0 + tmpvar_3))\\\\n + time))))\\\\n * 0.5) * treb_att));\\\\n float tmpvar_4;\\\\n tmpvar_4 = (2.0 * mid_att);\\\\n muv_1.y = (uv.y + ((\\\\n ((0.01 * sin((\\\\n (uv.x * (5.0 + tmpvar_4))\\\\n + time))) - (0.01 * cos((\\\\n (uv.y * (5.0 + tmpvar_4))\\\\n + time))))\\\\n * 0.5) * bass_att));\\\\n vec3 tmpvar_5;\\\\n tmpvar_5 = ((texture (sampler_blur2, muv_1).xyz * scale2) + bias2);\\\\n vec4 tmpvar_6;\\\\n tmpvar_6 = texture (sampler_pw_main, muv_1);\\\\n ret_2.x = (tmpvar_6.x + (tmpvar_5.x * (bass_att * 0.05)));\\\\n ret_2.y = (tmpvar_6.y + (tmpvar_5.y * (treb_att * 0.05)));\\\\n ret_2.z = (tmpvar_6.z + (tmpvar_5.z * (mid_att * 0.05)));\\\\n if ((ret_2.x > 0.9)) {\\\\n ret_2.x = 0.0;\\\\n };\\\\n if ((ret_2.y > 0.9)) {\\\\n ret_2.y = 0.0;\\\\n };\\\\n if ((ret_2.z > 0.9)) {\\\\n ret_2.z = 0.0;\\\\n };\\\\n vec4 tmpvar_7;\\\\n tmpvar_7.w = 1.0;\\\\n tmpvar_7.xyz = ret_2;\\\\n ret = tmpvar_7.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n vec3 ret1_1;\\\\n vec2 uv1_2;\\\\n vec3 ret_3;\\\\n vec4 tmpvar_4;\\\\n tmpvar_4 = texture (sampler_main, uv);\\\\n ret_3 = (tmpvar_4.xyz * (0.6 + (0.3 * \\\\n sin(((uv.x * 10.0) + time))\\\\n )));\\\\n vec2 tmpvar_5;\\\\n tmpvar_5.x = (texture (sampler_main, (uv - vec2(0.001, 0.0))).xyz - texture (sampler_main, (uv + vec2(0.001, 0.0))).xyz).x;\\\\n tmpvar_5.y = (texture (sampler_main, (uv - vec2(0.0, 0.001))).xyz - texture (sampler_main, (uv + vec2(0.0, 0.001))).xyz).x;\\\\n uv1_2 = ((0.5 * cos(\\\\n (((uv - 0.5) * 1.5) + 1.6)\\\\n )) - (3.0 * tmpvar_5));\\\\n ret1_1 = ((0.3 * dot (tmpvar_4.xyz, vec3(0.32, 0.49, 0.29))) + ((\\\\n clamp ((0.01 / sqrt(dot (uv1_2, uv1_2))), 0.0, 1.0)\\\\n * \\\\n mix (vec3(dot (((texture (sampler_blur2, uv).xyz * scale2) + bias2), vec3(0.32, 0.49, 0.29))), ret_3, pow (ret_3, vec3((0.05 + (mid_att * 0.03)))))\\\\n ) * (\\\\n (4.0 + bass)\\\\n + \\\\n (mid + treb_att)\\\\n )));\\\\n ret_3 = ret1_1;\\\\n vec4 tmpvar_6;\\\\n tmpvar_6.w = 1.0;\\\\n tmpvar_6.xyz = ret1_1;\\\\n ret = tmpvar_6.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Zylot - Star Ornament.json\":\n/*!******************************************************!*\\\n !*** ./presets/converted/Zylot - Star Ornament.json ***!\n \\******************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":1,\\\"baseVals\\\":{\\\"rating\\\":0,\\\"gammaadj\\\":1,\\\"decay\\\":0.997,\\\"echo_zoom\\\":0.996629,\\\"echo_orient\\\":1,\\\"wave_thick\\\":1,\\\"wave_brighten\\\":0,\\\"darken\\\":1,\\\"wave_a\\\":0.001185,\\\"wave_scale\\\":0.01,\\\"wave_smoothing\\\":0.27,\\\"wave_mystery\\\":-0.38,\\\"modwavealphastart\\\":0.71,\\\"modwavealphaend\\\":1.3,\\\"warpscale\\\":1.331,\\\"zoom\\\":0.999514,\\\"warp\\\":0.01,\\\"ob_size\\\":0,\\\"ob_r\\\":0.01,\\\"ob_a\\\":1,\\\"ib_size\\\":0,\\\"ib_r\\\":1,\\\"ib_g\\\":1,\\\"ib_b\\\":1,\\\"ib_a\\\":1,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":0.85,\\\"mv_r\\\":0.4999,\\\"mv_g\\\":0.4999,\\\"mv_b\\\":0.4999,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":3,\\\"rad\\\":0.34,\\\"ang\\\":0.53,\\\"r\\\":0.56,\\\"g\\\":0.36,\\\"r2\\\":0.9,\\\"a2\\\":0.5,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"bassspin = 0;\\\\nangle = 0;\\\",\\\"frame_eqs_eel\\\":\\\"ang = angle;\\\\nbassspin = if(above(bass*.05,bassspin),bassspin+.001,bassspin-.001);\\\\nbassspin = bassspin*above(bassspin,0);\\\\nangle = angle + bassspin;\\\\n\\\\nr = bass*.3;\\\\ng = treb*.3;\\\\nb = mid*.3;\\\\nr2 = .8+.2*sin(time*1.2);\\\\ng2 = .8+.2*sin(time*.9777);\\\\nb2 = .8+.2*sin(time*.7005);\\\\n\\\\nborder_a = 1*above(bass+treb+mid,5);\\\\n\\\\nx = .5 + q1;\\\\ny = .5 + q2;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":100,\\\"additive\\\":1,\\\"textured\\\":1,\\\"rad\\\":0.108073,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":1,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"bassspin = 0;\\\\nxpos = .25;\\\\nypos = .25;\\\",\\\"frame_eqs_eel\\\":\\\"bassspin = if(above(bass*.05,bassspin),bassspin+.001,bassspin-.001);\\\\nbassspin = bassspin*above(bassspin,0);\\\\nxpos = xpos + bassspin;\\\\nypos = ypos + bassspin;\\\\nx = .5 + q1 + .13*sin(xpos);\\\\ny = .5 + q2 + .18*cos(ypos);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":29,\\\"additive\\\":1,\\\"textured\\\":1,\\\"rad\\\":0.105693,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":1,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"bassspin = 0;\\\\nxpos = 2.3;\\\\nypos = 2.3;\\\",\\\"frame_eqs_eel\\\":\\\"bassspin = if(above(bass*.05,bassspin),bassspin+.001,bassspin-.001);\\\\nbassspin = bassspin*above(bassspin,0);\\\\nxpos = xpos + bassspin;\\\\nypos = ypos + bassspin;\\\\nx = .5 + q1 +.13*sin(xpos);\\\\ny = .5 + q2 + .18*cos(ypos);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":100,\\\"additive\\\":1,\\\"textured\\\":1,\\\"rad\\\":0.091434,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":1,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"bassspin = 0;\\\\nxpos = 4.5;\\\\nypos = 4.5;\\\",\\\"frame_eqs_eel\\\":\\\"bassspin = if(above(bass*.05,bassspin),bassspin+.001,bassspin-.001);\\\\nbassspin = bassspin*above(bassspin,0);\\\\nxpos = xpos + bassspin;\\\\nypos = ypos + bassspin;\\\\nx = .5 + q1 + .13*sin(xpos);\\\\ny = .5 + q2 + .18*cos(ypos);\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"scaling\\\":0.010576,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"pulse = 0;\\\",\\\"frame_eqs_eel\\\":\\\"pulse = if(above(bass*.05,pulse),pulse+.001,pulse-.001);\\\\npulse = pulse*above(pulse,0);\\\\nt1 = pulse;\\\",\\\"point_eqs_eel\\\":\\\"x = sqrt(sample*mid*.05);\\\\ny = .5 + (.1+t1)*cos(sample*20);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"pulse = 0;\\\",\\\"frame_eqs_eel\\\":\\\"pulse = if(above(bass*.05,pulse),pulse+.001,pulse-.001);\\\\npulse = pulse*above(pulse,0);\\\\nt1 = pulse;\\\",\\\"point_eqs_eel\\\":\\\"x = sqrt(sample*mid*.05);\\\\ny = .5 + -(.1+t1)*cos(sample*20);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"pulse = 0;\\\",\\\"frame_eqs_eel\\\":\\\"pulse = if(above(bass*.05,pulse),pulse+.001,pulse-.001);\\\\npulse = pulse*above(pulse,0);\\\\nt1 = pulse;\\\",\\\"point_eqs_eel\\\":\\\"x = 1 - sqrt(sample*mid*.05);\\\\ny = .5 + (.1+t1)*cos(sample*20);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"pulse = 0;\\\",\\\"frame_eqs_eel\\\":\\\"pulse = if(above(bass*.05,pulse),pulse+.001,pulse-.001);\\\\npulse = pulse*above(pulse,0);\\\\nt1 = pulse;\\\",\\\"point_eqs_eel\\\":\\\"x = 1 - sqrt(sample*mid*.05);\\\\ny = .5 + -(.1+t1)*cos(sample*20);\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"warp = 0;\\\\ndecay = .92;\\\\n\\\\nvol = (bass+mid+att)/6;\\\\nxamptarg = if(equal(frame%15,0),min(0.5*vol*bass_att,0.5),xamptarg);\\\\nxamp = xamp + 0.5*(xamptarg-xamp);\\\\nxdir = if(above(abs(xpos),xamp),-sign(xpos),if(below(abs(xspeed),0.1),2*above(xpos,0)-1,xdir));\\\\nxaccel = xdir*xamp - xpos - xspeed*0.055*below(abs(xpos),xamp);\\\\nxspeed = xspeed + xdir*xamp - xpos - xspeed*0.055*below(abs(xpos),xamp);\\\\nxpos = xpos + 0.001*xspeed;\\\\nyamptarg = if(equal(frame%15,0),min(0.3*vol*treb_att,0.5),yamptarg);\\\\nyamp = yamp + 0.5*(yamptarg-yamp);\\\\nydir = if(above(abs(ypos),yamp),-sign(ypos),if(below(abs(yspeed),0.1),2*above(ypos,0)-1,ydir));\\\\nyaccel = ydir*yamp - ypos - yspeed*0.055*below(abs(ypos),yamp);\\\\nyspeed = yspeed + ydir*yamp - ypos - yspeed*0.055*below(abs(ypos),yamp);\\\\nypos = ypos + 0.001*yspeed;\\\\n\\\\nq1 = ypos;\\\\nq2 = xpos;\\\",\\\"pixel_eqs_eel\\\":\\\"zoom = zoom + (q1*q2)*2;\\\\nrot = 10+(rad*treb*.1);\\\",\\\"warp\\\":\\\"\\\",\\\"comp\\\":\\\"\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/Zylot - True Visionary (Final Mix).json\":\n/*!*******************************************************************!*\\\n !*** ./presets/converted/Zylot - True Visionary (Final Mix).json ***!\n \\*******************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":3,\\\"gammaadj\\\":1,\\\"decay\\\":0.997,\\\"echo_zoom\\\":0.997,\\\"echo_orient\\\":1,\\\"wave_thick\\\":1,\\\"wave_brighten\\\":0,\\\"darken\\\":1,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":0.01,\\\"wave_smoothing\\\":0.27,\\\"wave_mystery\\\":-0.38,\\\"modwavealphastart\\\":0.71,\\\"modwavealphaend\\\":1.3,\\\"warpscale\\\":1.331,\\\"zoom\\\":0.99951,\\\"warp\\\":0.01,\\\"ob_size\\\":0.5,\\\"ob_r\\\":0.01,\\\"ib_size\\\":0.26,\\\"ib_r\\\":1,\\\"ib_g\\\":1,\\\"ib_b\\\":1,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":0.85,\\\"mv_r\\\":0.5,\\\"mv_g\\\":0.5,\\\"mv_b\\\":0.5,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"sides\\\":3,\\\"rad\\\":0.34,\\\"ang\\\":0.53,\\\"r\\\":0.56,\\\"g\\\":0.36,\\\"r2\\\":0.9,\\\"border_r\\\":0,\\\"border_g\\\":0,\\\"border_b\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"ang = ang + time;\\\"},{\\\"baseVals\\\":{\\\"sides\\\":3,\\\"rad\\\":0.41,\\\"r\\\":0,\\\"g\\\":0.8,\\\"b\\\":0.7,\\\"g2\\\":0.4,\\\"b2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"ang = ang - time*.333;\\\"},{\\\"baseVals\\\":{\\\"sides\\\":3,\\\"rad\\\":0.21,\\\"r\\\":0.84,\\\"r2\\\":1,\\\"g2\\\":0.58,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"ang = ang + time*4;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"x = .5 + (bass*.2)*sin(sample*2*(time*10*treb));\\\\ny = .5 + (bass*.2)*cos(sample*2*(time*10*treb));\\\\nr = 1 + .5*sin(sample*.10+(time*10*bass));\\\\ng = 1 + .5*sin(sample*2+(time*50*treb));\\\\nb = 1 + .5*sin(sample*5+(time*20*mid));\\\\na = r;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"warp = 0;\\\\ndecay = .92;\\\",\\\"pixel_eqs_eel\\\":\\\"zoom = zoom + (.03*(bass_att*bass_att))*rad;\\\\nrot = rot + rad*(-2.5&(cos(time)*5))*.01;\\\",\\\"warp\\\":\\\" shader_body { \\\\n vec4 tmpvar_1;\\\\n tmpvar_1.w = 1.0;\\\\n tmpvar_1.xyz = texture (sampler_main, uv).xyz;\\\\n ret = tmpvar_1.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n vec2 uv1_1;\\\\n vec3 ret_2;\\\\n vec3 tmpvar_3;\\\\n tmpvar_3 = texture (sampler_main, uv).xyz;\\\\n vec2 tmpvar_4;\\\\n tmpvar_4.x = (texture (sampler_main, (uv - vec2(0.001, 0.0))).xyz - texture (sampler_main, (uv + vec2(0.001, 0.0))).xyz).x;\\\\n tmpvar_4.y = (texture (sampler_main, (uv - vec2(0.0, 0.001))).xyz - texture (sampler_main, (uv + vec2(0.0, 0.001))).xyz).x;\\\\n uv1_1 = ((0.5 * cos(\\\\n (((uv - 0.5) * 1.5) + 1.6)\\\\n )) - (3.0 * tmpvar_4));\\\\n ret_2 = (0.8 * ((0.3 * \\\\n dot (tmpvar_3, vec3(0.32, 0.49, 0.29))\\\\n ) + (\\\\n (clamp ((0.01 / sqrt(\\\\n dot (uv1_1, uv1_1)\\\\n )), 0.0, 1.0) * tmpvar_3)\\\\n * \\\\n ((4.0 + bass) + (mid + treb_att))\\\\n )));\\\\n ret_2 = (ret_2 * 0.77);\\\\n vec4 tmpvar_5;\\\\n tmpvar_5.w = 1.0;\\\\n tmpvar_5.xyz = ret_2;\\\\n ret = tmpvar_5.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/_Aderrasi - Wanderer in Curved Space - mash0000 - faclempt kibitzing meshuggana schmaltz (Geiss color mix).json\":\n/*!*******************************************************************************************************************************************!*\\\n !*** ./presets/converted/_Aderrasi - Wanderer in Curved Space - mash0000 - faclempt kibitzing meshuggana schmaltz (Geiss color mix).json ***!\n \\*******************************************************************************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":5,\\\"gammaadj\\\":1,\\\"decay\\\":0.995,\\\"echo_zoom\\\":1,\\\"echo_orient\\\":1,\\\"wave_mode\\\":5,\\\"wave_brighten\\\":0,\\\"wrap\\\":0,\\\"wave_a\\\":100,\\\"wave_scale\\\":0.721,\\\"wave_smoothing\\\":0.5,\\\"modwavealphastart\\\":0.5,\\\"modwavealphaend\\\":1,\\\"fshader\\\":1,\\\"dx\\\":0.00001,\\\"dy\\\":0.00001,\\\"warp\\\":0.01,\\\"wave_r\\\":0.5,\\\"wave_g\\\":0.5,\\\"wave_b\\\":0.5,\\\"ob_size\\\":0,\\\"ob_a\\\":1,\\\"ib_size\\\":0,\\\"ib_r\\\":0,\\\"ib_g\\\":0,\\\"ib_b\\\":0,\\\"mv_x\\\":0,\\\"mv_y\\\":0,\\\"mv_l\\\":1,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"wave_r = 0.5 + 0.5*sin(6*time);\\\\nwave_g = 0.5 + 0.5*sin(4.1*time);\\\\nwave_b = -1 + (1-wave_r + 1-wave_g);\\\\nwarp = 0;\\\",\\\"pixel_eqs_eel\\\":\\\"thresh = above(bass_att,thresh)*2+(1-above(bass_att,thresh))*((thresh-1.3)*0.96+1.3);\\\\ndx_r = equal(thresh,2)*0.015*sin(5*time)+(1-equal(thresh,2))*dx_r;\\\\ndy_r = equal(thresh,2)*0.015*sin(6*time)+(1-equal(thresh,2))*dy_r;\\\\n\\\\n\\\\nxs = above(sin(12*dx_r*bass),0)*(dy_r*sin(2*rad)) + \\\\nbelow(sin(12*dx_r*bass),0)*(cos(time)*dx_r*sin(0.6*rad));\\\\n\\\\nzoom = zoom + abs(12*xs);\\\\nrot = rot + 5*xs*cos(1-xs*rad*12*dx_r);\\\\ndx = dx + dx_r;\\\\ndy = dy + dy_r;\\\",\\\"warp\\\":\\\" shader_body { \\\\n vec2 my_uv_1;\\\\n vec3 ret_2;\\\\n vec2 tmpvar_3;\\\\n tmpvar_3 = (vec2(1280.0, 1024.0) * texsize.zw);\\\\n float tmpvar_4;\\\\n vec2 tmpvar_5;\\\\n tmpvar_5 = (uv + vec2(0.005, 0.0));\\\\n vec2 tmpvar_6;\\\\n tmpvar_6 = (uv - vec2(0.005, 0.0));\\\\n tmpvar_4 = (((\\\\n (texture (sampler_blur2, tmpvar_5).xyz * scale2)\\\\n + bias2) - (\\\\n (texture (sampler_blur2, tmpvar_6).xyz * scale2)\\\\n + bias2)).x * tmpvar_3.x);\\\\n float tmpvar_7;\\\\n vec2 tmpvar_8;\\\\n tmpvar_8 = (uv + vec2(0.0, 0.005));\\\\n vec2 tmpvar_9;\\\\n tmpvar_9 = (uv - vec2(0.0, 0.005));\\\\n tmpvar_7 = (((\\\\n (texture (sampler_blur2, tmpvar_8).xyz * scale2)\\\\n + bias2) - (\\\\n (texture (sampler_blur2, tmpvar_9).xyz * scale2)\\\\n + bias2)).x * tmpvar_3.y);\\\\n vec2 tmpvar_10;\\\\n tmpvar_10.x = tmpvar_4;\\\\n tmpvar_10.y = tmpvar_7;\\\\n vec2 tmpvar_11;\\\\n tmpvar_11.x = (((\\\\n (texture (sampler_blur2, tmpvar_5).xyz * scale2)\\\\n + bias2) - (\\\\n (texture (sampler_blur2, tmpvar_6).xyz * scale2)\\\\n + bias2)).x * tmpvar_3.x);\\\\n tmpvar_11.y = (((\\\\n (texture (sampler_blur2, tmpvar_8).xyz * scale2)\\\\n + bias2) - (\\\\n (texture (sampler_blur2, tmpvar_9).xyz * scale2)\\\\n + bias2)).x * tmpvar_3.y);\\\\n ret_2.x = texture (sampler_fw_main, ((uv - (tmpvar_10 * 0.01)) + (tmpvar_11 * 0.003))).x;\\\\n vec4 tmpvar_12;\\\\n tmpvar_12 = texture (sampler_blur3, uv);\\\\n ret_2.x = (ret_2.x + ((ret_2.x - \\\\n ((tmpvar_12.xyz * scale3) + bias3)\\\\n .x) * 0.1));\\\\n ret_2.x = (ret_2.x + 0.004);\\\\n vec2 tmpvar_13;\\\\n tmpvar_13.x = tmpvar_7;\\\\n tmpvar_13.y = -(tmpvar_4);\\\\n my_uv_1 = (uv + ((tmpvar_13 * 0.05) * (1.2 - \\\\n ((tmpvar_12.xyz * scale3) + bias3)\\\\n .y)));\\\\n ret_2.z = texture (sampler_fw_main, my_uv_1).z;\\\\n vec2 x_14;\\\\n x_14 = (my_uv_1 - uv);\\\\n ret_2.z = (ret_2.z + ((\\\\n ((ret_2.z - ((texture (sampler_blur1, uv).xyz * scale1) + bias1).z) * sqrt(dot (x_14, x_14)))\\\\n * 180.0) / sqrt(\\\\n dot (tmpvar_3, tmpvar_3)\\\\n )));\\\\n ret_2.z = (ret_2.z * 0.8);\\\\n ret_2.z = (ret_2.z + 0.004);\\\\n vec2 tmpvar_15;\\\\n tmpvar_15.x = -(tmpvar_7);\\\\n tmpvar_15.y = tmpvar_4;\\\\n my_uv_1 = (tmpvar_15 * 0.045);\\\\n vec2 tmpvar_16;\\\\n tmpvar_16.x = (((\\\\n (texture (sampler_blur2, (uv + vec2(0.01, 0.0))).xyz * scale2)\\\\n + bias2) - (\\\\n (texture (sampler_blur2, (uv - vec2(0.01, 0.0))).xyz * scale2)\\\\n + bias2)).y * tmpvar_3.x);\\\\n tmpvar_16.y = (((\\\\n (texture (sampler_blur2, (uv + vec2(0.0, 0.01))).xyz * scale2)\\\\n + bias2) - (\\\\n (texture (sampler_blur2, (uv - vec2(0.0, 0.01))).xyz * scale2)\\\\n + bias2)).y * tmpvar_3.y);\\\\n my_uv_1 = (my_uv_1 + (uv - (tmpvar_16 * 0.03)));\\\\n ret_2.y = texture (sampler_fw_main, my_uv_1).y;\\\\n ret_2.y = (ret_2.y + ((\\\\n (ret_2.y - ((texture (sampler_blur3, my_uv_1).xyz * scale3) + bias3).y)\\\\n * 0.1) + 0.01));\\\\n vec4 tmpvar_17;\\\\n tmpvar_17.w = 1.0;\\\\n tmpvar_17.xyz = ret_2;\\\\n ret = tmpvar_17.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n vec3 ret_1;\\\\n ret_1 = texture (sampler_main, uv).xyz;\\\\n ret_1 = (ret_1 * hue_shader);\\\\n vec3 tmpvar_2;\\\\n tmpvar_2 = mix (ret_1, vec3(dot (ret_1, vec3(0.32, 0.49, 0.29))), vec3(0.5, 1.0, 0.1));\\\\n ret_1 = tmpvar_2;\\\\n vec4 tmpvar_3;\\\\n tmpvar_3.w = 1.0;\\\\n tmpvar_3.xyz = tmpvar_2;\\\\n ret = tmpvar_3.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/_Geiss - Artifact 01.json\":\n/*!*****************************************************!*\\\n !*** ./presets/converted/_Geiss - Artifact 01.json ***!\n \\*****************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":5,\\\"gammaadj\\\":1.998,\\\"echo_zoom\\\":1.421,\\\"wave_mode\\\":7,\\\"additivewave\\\":1,\\\"modwavealphabyvolume\\\":1,\\\"darken_center\\\":1,\\\"wave_a\\\":1.193,\\\"wave_scale\\\":1.489,\\\"wave_smoothing\\\":0,\\\"modwavealphastart\\\":0.87,\\\"modwavealphaend\\\":1.09,\\\"warpscale\\\":3.138,\\\"zoom\\\":1.003,\\\"warp\\\":0.09218,\\\"wave_r\\\":0.5,\\\"wave_g\\\":0.5,\\\"wave_b\\\":0.5,\\\"wave_x\\\":0.6,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"wave_r = wave_r + 0.3650*( 0.60*sin(4.437*time) + 0.40*sin(3.970*time) );\\\\nwave_g = wave_g + 0.3650*( 0.60*sin(4.344*time) + 0.40*sin(3.841*time) );\\\\nwave_b = wave_b + 0.3650*( 0.60*sin(4.251*time) + 0.40*sin(3.055*time) );\\\\nrot = rot + 0.02*( 0.60*sin(0.181*time) + 0.09*sin(-0.279*time) );\\\\nzoom = zoom + 0.025*( 0.60*sin(0.3131*time+2) + 0.4*sin(-0.479*time+4) );\\\\n//cx = cx + 0.10*( 0.60*sin(0.374*time) + 0.10*sin(0.294*time) );\\\\n//cy = cy + 0.10*( 0.60*sin(0.393*time) + 0.10*sin(0.223*time) );\\\\n//dx = dx + 0.0040*( 0.60*sin(0.234*time) + 0.40*sin(0.277*time) );\\\\n//dy = dy + 0.0040*( 0.60*sin(0.284*time) + 0.40*sin(0.247*time) );\\\\ndecay = decay - 0.01*equal(frame%6,0);\\\\n\\\\n//wave_x = 0.1 + rand(80)*0.01;\\\\n//wave_y = 0.1 + rand(80)*0.01;\\\\nt2 = time*6;\\\\nwave_x = 0.5 + 0.2*( 0.60*sin(0.374*t2) + 0.40*sin(0.294*t2) );\\\\nwave_y = 0.5 + 0.2*( 0.60*sin(0.393*t2) + 0.40*sin(0.223*t2) );\\\",\\\"pixel_eqs_eel\\\":\\\"dx = 0;\\\\ndy = 0;\\\\ndx = dx + cos(y*29.37 - time*1.9) * 1.0/pixelsx * 2;\\\\ndy = dy + cos(x*33.21 - time*1.7) * 1.0/pixelsy * 2;\\\\ndx = dx + cos(y*77.55 - time*2.1) * 1.0/pixelsx * 1.5;\\\\ndy = dy + cos(x*78.32 - time*2.4) * 1.0/pixelsy * 1.5;\\\",\\\"warp\\\":\\\" shader_body { \\\\n vec2 dxy_1;\\\\n dxy_1.x = cos(((154.56 * uv_orig.y) - time));\\\\n dxy_1.y = cos(((154.56 * uv_orig.x) - time));\\\\n float tmpvar_2;\\\\n tmpvar_2 = (time * 5.0);\\\\n dxy_1.x = (dxy_1.x + cos((\\\\n (412.16 * uv_orig.y)\\\\n - tmpvar_2)));\\\\n dxy_1.y = (dxy_1.y + cos((\\\\n (412.16 * uv_orig.x)\\\\n - tmpvar_2)));\\\\n dxy_1.y = (dxy_1.y + 0.15);\\\\n vec4 tmpvar_3;\\\\n tmpvar_3.w = 1.0;\\\\n tmpvar_3.xyz = (max (texture (sampler_fw_main, (uv + \\\\n (dxy_1 * texsize.zw)\\\\n )).xyz, (texture (sampler_main, uv_orig).xyz * 0.8)) - 0.004);\\\\n ret = tmpvar_3.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n vec4 tmpvar_1;\\\\n tmpvar_1.w = 1.0;\\\\n tmpvar_1.xyz = ((texture (sampler_main, uv).xyz * 0.8) + ((\\\\n (texture (sampler_blur1, uv).xyz * scale1)\\\\n + bias1) * 0.7));\\\\n ret = tmpvar_1.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/_Geiss - Desert Rose 2.json\":\n/*!*******************************************************!*\\\n !*** ./presets/converted/_Geiss - Desert Rose 2.json ***!\n \\*******************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":5,\\\"gammaadj\\\":1.9,\\\"echo_zoom\\\":1.169,\\\"wave_mode\\\":2,\\\"additivewave\\\":1,\\\"wave_dots\\\":1,\\\"wave_thick\\\":1,\\\"wave_a\\\":0.274,\\\"wave_scale\\\":2.827,\\\"wave_smoothing\\\":0.09,\\\"modwavealphastart\\\":0.83,\\\"modwavealphaend\\\":1.31,\\\"warpscale\\\":3.138,\\\"zoom\\\":0.993,\\\"warp\\\":0.00054,\\\"wave_r\\\":0.5,\\\"wave_g\\\":0.5,\\\"wave_b\\\":0.5,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"wave_r = 0.85 + 0.25*sin(0.437*time+1);\\\\nwave_g = 0.85 + 0.25*sin(0.544*time+2);\\\\nwave_b = 0.85 + 0.25*sin(0.751*time+3);\\\\nrot = rot + 0.010*( 0.60*sin(0.381*time) + 0.40*sin(0.579*time) );\\\\ncx = cx + 0.210*( 0.60*sin(0.374*time) + 0.40*sin(0.294*time) );\\\\ncy = cy + 0.210*( 0.60*sin(0.393*time) + 0.40*sin(0.223*time) );\\\\ndx = dx + 0.003*( 0.60*sin(0.234*time) + 0.40*sin(0.277*time) );\\\\ndy = dy + 0.003*( 0.60*sin(0.284*time) + 0.40*sin(0.247*time) );\\\\ndecay = decay - 0.01*equal(frame%6,0);\\\\ndx = dx + dx_residual;\\\\ndy = dy + dy_residual;\\\\nbass_thresh = above(bass_att,bass_thresh)*2 + (1-above(bass_att,bass_thresh))*((bass_thresh-1.3)*0.96+1.3);\\\\ndx_residual = equal(bass_thresh,2.13)*0.016*sin(time*7) + (1-equal(bass_thresh,2.13))*dx_residual;\\\\ndy_residual = equal(bass_thresh,2.13)*0.012*sin(time*9) + (1-equal(bass_thresh,2.13))*dy_residual;\\\\nwave_x = wave_x - dx_residual*7;\\\\nwave_y = wave_y - dy_residual*7;\\\\nwave_mystery = time*0.03;\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\" shader_body { \\\\n vec3 ret_1;\\\\n vec4 tmpvar_2;\\\\n tmpvar_2 = texture (sampler_main, uv);\\\\n ret_1 = (tmpvar_2.xyz + ((tmpvar_2.xyz - \\\\n ((texture (sampler_blur1, uv).xyz * scale1) + bias1)\\\\n ) * 0.2));\\\\n ret_1 = (ret_1 - 0.02);\\\\n vec4 tmpvar_3;\\\\n tmpvar_3.w = 1.0;\\\\n tmpvar_3.xyz = ret_1;\\\\n ret = tmpvar_3.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n vec4 tmpvar_1;\\\\n tmpvar_1.w = 1.0;\\\\n tmpvar_1.xyz = (texture (sampler_main, uv).xyz * 1.15);\\\\n ret = tmpvar_1.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/_Geiss - untitled.json\":\n/*!**************************************************!*\\\n !*** ./presets/converted/_Geiss - untitled.json ***!\n \\**************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":5,\\\"gammaadj\\\":1,\\\"decay\\\":1,\\\"additivewave\\\":1,\\\"wave_brighten\\\":0,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":0.01,\\\"wave_smoothing\\\":0.63,\\\"wave_mystery\\\":-1,\\\"modwavealphastart\\\":0.71,\\\"modwavealphaend\\\":1.3,\\\"warpanimspeed\\\":30.965,\\\"warpscale\\\":2.572,\\\"zoom\\\":1.00901,\\\"warp\\\":0.00054,\\\"wave_r\\\":0.65,\\\"wave_g\\\":0.65,\\\"wave_b\\\":0.65,\\\"mv_x\\\":12.8,\\\"mv_y\\\":9.6,\\\"mv_l\\\":1,\\\"mv_g\\\":0.91,\\\"mv_b\\\":0.71,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":100,\\\"additive\\\":1,\\\"rad\\\":0.49138,\\\"r\\\":0,\\\"g\\\":1,\\\"b\\\":1,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x=.5+q4;y=.5+q5;\\\\na=bass_att+mid_att+treb_att;\\\\na=a*0.25;\\\\na=a*a*1.5;\\\"},{\\\"baseVals\\\":{\\\"sides\\\":24,\\\"rad\\\":0.01842,\\\"tex_zoom\\\":0.81954,\\\"g\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"tex_ang=0.01;\\\\nx=.5-q4;\\\\ny=.5-q5;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"wave_r = 0.85 + 0.25*sin(0.437*time+1);\\\\nwave_g = 0.85 + 0.25*sin(0.544*time+2);\\\\nwave_b = 0.85 + 0.25*sin(0.751*time+3);\\\\nrot = rot + 0.010*( 0.60*sin(0.381*time) + 0.40*sin(0.579*time) );\\\\ncx = cx + 0.210*( 0.60*sin(0.374*time) + 0.40*sin(0.294*time) );\\\\ncy = cy + 0.210*( 0.60*sin(0.393*time) + 0.40*sin(0.223*time) );\\\\ndx = dx + 0.003*( 0.60*sin(0.234*time) + 0.40*sin(0.277*time) );\\\\ndy = dy + 0.003*( 0.60*sin(0.284*time) + 0.40*sin(0.247*time) );\\\\ndecay = decay - 0.01*equal(frame%6,0);\\\\ndx = dx + dx_residual;\\\\ndy = dy + dy_residual;\\\\nbass_thresh = above(bass_att,bass_thresh)*2 + (1-above(bass_att,bass_thresh))*((bass_thresh-1.3)*0.96+1.3);\\\\ndx_residual = equal(bass_thresh,2.13)*0.016*sin(time*7) + (1-equal(bass_thresh,2.13))*dx_residual;\\\\ndy_residual = equal(bass_thresh,2.13)*0.012*sin(time*9) + (1-equal(bass_thresh,2.13))*dy_residual;\\\\nwave_x = wave_x - dx_residual*7;\\\\nwave_y = wave_y - dy_residual*7;\\\\nwave_mystery = time*0.03;\\\\n\\\\nzoom = zoom + 0.005*( 0.60*sin(0.1934*time+3) + 0.40*sin(0.307*time+9) );\\\\nzoom = zoom + max(0,bass_att-1.1)*0.2;\\\\nwarp = warp + max(0,treb-1.1)*0.5;\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\" shader_body { \\\\n vec3 ret_1;\\\\n vec4 tmpvar_2;\\\\n tmpvar_2 = texture (sampler_main, uv);\\\\n ret_1 = (tmpvar_2.xyz + ((tmpvar_2.xyz - \\\\n ((texture (sampler_blur2, uv).xyz * scale2) + bias2)\\\\n ) * 0.6));\\\\n ret_1 = (ret_1 * 0.9);\\\\n ret_1 = (ret_1 + ((\\\\n ((texture (sampler_noise_lq, ((\\\\n (uv_orig * texsize.xy)\\\\n * \\\\n (texsize_noise_lq.zw * 0.4)\\\\n ) + rand_frame.xy)).xyz - 0.5) / 256.0)\\\\n * 12.0) * clamp (\\\\n (treb_att - 1.0)\\\\n , 0.0, 1.0)));\\\\n vec3 tmpvar_3;\\\\n tmpvar_3 = mix (ret_1, vec3(dot (ret_1, vec3(0.32, 0.49, 0.29))), vec3(0.04, 0.04, 0.04));\\\\n ret_1 = tmpvar_3;\\\\n vec4 tmpvar_4;\\\\n tmpvar_4.w = 1.0;\\\\n tmpvar_4.xyz = tmpvar_3;\\\\n ret = tmpvar_4.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n vec3 N_1;\\\\n vec3 ret_2;\\\\n vec2 tmpvar_3;\\\\n tmpvar_3 = (vec2(1.0, 0.0) * texsize.zw);\\\\n N_1.x = ((texture (sampler_main, (uv_orig + tmpvar_3)).xyz - texture (sampler_main, (uv_orig - tmpvar_3)).xyz).x * 0.8);\\\\n vec2 tmpvar_4;\\\\n tmpvar_4 = (vec2(0.0, 1.0) * texsize.zw);\\\\n N_1.y = ((texture (sampler_main, (uv_orig + tmpvar_4)).xyz - texture (sampler_main, (uv_orig - tmpvar_4)).xyz).x * 0.8);\\\\n N_1.x = (N_1.x + ((\\\\n ((texture (sampler_blur1, (uv_orig + tmpvar_3)).xyz * scale1) + bias1)\\\\n - \\\\n ((texture (sampler_blur1, (uv_orig - tmpvar_3)).xyz * scale1) + bias1)\\\\n ).x * 0.2));\\\\n N_1.y = (N_1.y + ((\\\\n ((texture (sampler_blur1, (uv_orig + tmpvar_4)).xyz * scale1) + bias1)\\\\n - \\\\n ((texture (sampler_blur1, (uv_orig - tmpvar_4)).xyz * scale1) + bias1)\\\\n ).x * 0.2));\\\\n N_1.z = -0.077;\\\\n vec3 tmpvar_5;\\\\n tmpvar_5 = normalize(N_1);\\\\n N_1 = tmpvar_5;\\\\n vec3 tmpvar_6;\\\\n tmpvar_6.z = -0.8;\\\\n tmpvar_6.x = q9;\\\\n tmpvar_6.y = q10;\\\\n vec3 tmpvar_7;\\\\n tmpvar_7.z = 0.0;\\\\n tmpvar_7.xy = ((uv_orig * 2.0) - 1.0);\\\\n vec3 tmpvar_8;\\\\n tmpvar_8 = normalize((tmpvar_6 - tmpvar_7));\\\\n vec3 tmpvar_9;\\\\n tmpvar_9 = normalize((tmpvar_7 - vec3(0.0, 0.0, 1.0)));\\\\n ret_2 = (vec3(clamp (dot (tmpvar_5, tmpvar_8), 0.0, 1.0)) * vec3(1.2, 0.9, 0.7));\\\\n ret_2 = (ret_2 * normalize((\\\\n (texture (sampler_blur3, uv_orig).xyz * scale3)\\\\n + bias3).yzx));\\\\n ret_2 = (ret_2 + (pow (\\\\n clamp (dot (normalize((tmpvar_9 + \\\\n ((2.0 * tmpvar_5) * dot (tmpvar_9, tmpvar_5))\\\\n )), tmpvar_8), 0.0, 1.0)\\\\n , 32.0) * 0.5));\\\\n vec4 tmpvar_10;\\\\n tmpvar_10.w = 1.0;\\\\n tmpvar_10.xyz = ret_2;\\\\n ret = tmpvar_10.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/_Mig_049.json\":\n/*!*****************************************!*\\\n !*** ./presets/converted/_Mig_049.json ***!\n \\*****************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":0,\\\"gammaadj\\\":1,\\\"decay\\\":1,\\\"echo_zoom\\\":1,\\\"wave_brighten\\\":0,\\\"darken\\\":1,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":0.535239,\\\"wave_smoothing\\\":0,\\\"wave_mystery\\\":-0.48,\\\"modwavealphastart\\\":1,\\\"modwavealphaend\\\":1.1,\\\"warpscale\\\":3.138,\\\"fshader\\\":1,\\\"zoom\\\":1.023,\\\"warp\\\":0.122616,\\\"wave_g\\\":0.65,\\\"wave_b\\\":0,\\\"mv_x\\\":6.4,\\\"mv_y\\\":48,\\\"mv_dx\\\":0.5,\\\"mv_dy\\\":0.5,\\\"mv_l\\\":5,\\\"mv_r\\\":0.013716,\\\"mv_g\\\":0.872347,\\\"mv_b\\\":0.522466,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"thickoutline\\\":1,\\\"textured\\\":1,\\\"rad\\\":0.746302,\\\"tex_zoom\\\":0.942039,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":1,\\\"border_r\\\":0,\\\"border_g\\\":0,\\\"border_b\\\":0,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"ang=sin(time)*.5+.5;\\\\nval=3;\\\\na2=val*.33;\\\\na=val*.33;\\\\nrad=cos(time*.3)*.4+0.65;\\\\nx=sin(time*.25)*.25+.5;\\\\ny=cos(time*.45)*.25+.5;\\\\n\\\\n\\\\n\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"thickoutline\\\":1,\\\"textured\\\":1,\\\"rad\\\":0.746302,\\\"tex_zoom\\\":0.942039,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":1,\\\"border_r\\\":0,\\\"border_g\\\":0,\\\"border_b\\\":0,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"ang=cos(time*.3)*.5+.5;\\\\nval=3;\\\\na2=val*.33;\\\\na=val*.33;\\\\nrad=sin(time*.3)*.4+0.65;\\\\nx=cos(time*.25)*.25+.5;\\\\ny=sin(time*.45)*.25+.5;\\\\n\\\\n\\\\n\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"thickoutline\\\":1,\\\"rad\\\":0.364564,\\\"r\\\":0,\\\"g2\\\":0,\\\"a2\\\":1,\\\"border_r\\\":0,\\\"border_g\\\":0,\\\"border_b\\\":0,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\\nh2=h2+(above(treb,1.32)*0.8)*.9;\\\\nvr=sin(h2*.8)*.5+.5;\\\\nvg=sin(h2*.5)*.5+.5;\\\\nvb=sin(h2*.1)*.5+.5;\\\\n\\\\ng=vg;\\\\nr=vr;\\\\nb=vb;\\\\ng2=g;\\\\nr2=r;\\\\nb2=b;\\\\ndist=(frame%100)*.01;\\\\nmaat=maat+(above(bass_att,1.5));\\\\nmaat=below(maat,16)*maat;\\\\nx=if(below(maat,8),if(below(maat,4),dist,1-dist),x);\\\\ny=if(above(maat,8),if(above(maat,4),dist,1-dist),y);\\\"},{\\\"baseVals\\\":{\\\"thickoutline\\\":1,\\\"textured\\\":1,\\\"rad\\\":0.364564,\\\"r\\\":0,\\\"g2\\\":0,\\\"a2\\\":1,\\\"border_r\\\":0,\\\"border_g\\\":0,\\\"border_b\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\\nh2=h2+(above(treb,1.32)*0.8)*.9;\\\\nvr=sin(h2*.8)*.5+.5;\\\\nvg=sin(h2*.5)*.5+.5;\\\\nvb=sin(h2*.1)*.5+.5;\\\\n\\\\ng=vg;\\\\nr=vr;\\\\nb=vb;\\\\ng2=g;\\\\nr2=r;\\\\nb2=b;\\\\ndist=(frame%100)*.01;\\\\nmaat=maat+(above(bass_att,1.5));\\\\nmaat=below(maat,16)*maat;\\\\ny=if(below(maat,8),if(below(maat,4),dist,1-dist),y);\\\\nx=if(above(maat,8),if(above(maat,4),dist,1-dist),x);\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"wave_r = 1;//0.85 + 0.35*sin(0.437*time+1) + 0.55*sin(0.197*time+4);\\\\nwave_g = 0;//0.85 + 0.35*sin(0.544*time+2) + 0.55*sin(0.143*time+5);\\\\nwave_b = 0;//0.85 + 0.35*sin(0.751*time+3) + 0.55*sin(0.117*time+6);\\\\nwave_r = sqrt(wave_r);\\\\nwave_g = sqrt(wave_g);\\\\nwave_b = sqrt(wave_b);\\\\nrot = rot + 0.010*( 0.60*sin(0.381*time) + 0.40*sin(0.579*time) );\\\\ncx = cx + 0.210*( 0.60*sin(0.374*time) + 0.40*sin(0.294*time) );\\\\ncy = cy + 0.210*( 0.60*sin(0.393*time) + 0.40*sin(0.223*time) );\\\\ndx = dx + 0.003*( 0.60*sin(0.234*time) + 0.40*sin(0.277*time) );\\\\ndy = dy + 0.003*( 0.60*sin(0.284*time) + 0.40*sin(0.247*time) );\\\\ndecay = decay - 0.01*equal(frame%6,0);\\\\ndx = dx + dx_residual;\\\\ndy = dy + dy_residual;\\\\nbass_thresh = above(bass_att,bass_thresh)*2 + (1-above(bass_att,bass_thresh))*((bass_thresh-1.3)*0.96+1.3);\\\\ndx_residual = equal(bass_thresh,2.13)*0.016*sin(time*7) + (1-equal(bass_thresh,2.13))*dx_residual;\\\\ndy_residual = equal(bass_thresh,2.13)*0.012*sin(time*9) + (1-equal(bass_thresh,2.13))*dy_residual;\\\\nwave_x = wave_x - dx_residual*7;\\\\nwave_y = wave_y - dy_residual*7;\\\\nwave_mystery = time*0.03;\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\" shader_body { \\\\n vec4 tmpvar_1;\\\\n tmpvar_1.w = 1.0;\\\\n tmpvar_1.xyz = (texture (sampler_main, (uv + (\\\\n (texture (sampler_main, (uv + texsize.zw)).xy - 0.37)\\\\n * 0.03))).xyz - 0.004);\\\\n ret = tmpvar_1.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n vec2 uv_1;\\\\n vec3 ret_2;\\\\n uv_1 = (0.05 + (0.9 * uv));\\\\n ret_2 = (abs((\\\\n ((texture (sampler_blur1, uv_1).xyz * scale1) + bias1)\\\\n - texture (sampler_main, uv_1).xyz)) * 6.0);\\\\n ret_2 = (ret_2 * 1.333);\\\\n vec4 tmpvar_3;\\\\n tmpvar_3.w = 1.0;\\\\n tmpvar_3.xyz = ret_2;\\\\n ret = tmpvar_3.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/_Mig_085.json\":\n/*!*****************************************!*\\\n !*** ./presets/converted/_Mig_085.json ***!\n \\*****************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":5,\\\"gammaadj\\\":1.7,\\\"echo_zoom\\\":1.16936,\\\"wave_mode\\\":2,\\\"wave_dots\\\":1,\\\"wave_brighten\\\":0,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":0.011726,\\\"wave_smoothing\\\":0.9,\\\"zoom\\\":0.999902,\\\"warp\\\":0.01,\\\"wave_r\\\":0.5,\\\"wave_g\\\":0.4,\\\"wave_b\\\":0.3,\\\"ob_size\\\":0.0065,\\\"ib_size\\\":0.26,\\\"mv_x\\\":0,\\\"mv_y\\\":43.199997,\\\"mv_l\\\":1,\\\"mv_g\\\":0.91,\\\"mv_b\\\":0.71,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"sides\\\":5,\\\"textured\\\":1,\\\"rad\\\":1.06779,\\\"ang\\\":0.753982,\\\"tex_zoom\\\":0.779769,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"ang=sin(q1*0.15);\\\\nx=sin(q1*0.5) * 0.05 + 0.5;\\\\ny=cos(q1*0.63)* 0.05 + 0.5\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sides\\\":5,\\\"additive\\\":1,\\\"rad\\\":0.038091,\\\"g\\\":1,\\\"b\\\":1,\\\"g2\\\":0.6,\\\"b2\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"tm=q1;\\\\n\\\\nxp=0;\\\\nyp=0.1;\\\\nzp=0;\\\\n\\\\n//wrist movement;\\\\nang=sin(tm*2 )*0.5 +0.5;\\\\n\\\\nxq=xp;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nyq=yp*sinang + zp*cosang;\\\\nzq=yp*cosang - zp*sinang;\\\\nyq=yp;\\\\nzq=zp;\\\\n\\\\nang=tm*8;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxp=xq*sinang + yq*cosang;\\\\nyp=xq*cosang - yq*sinang;\\\\nzp=zq;\\\\n\\\\n//forearm movement;\\\\nzp=zp-0.3;\\\\nang=3.14 + sin(tm*2 - 0.5)*1.5;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxq=xp;\\\\nyq=yp*sinang + zp*cosang;\\\\nzq=yp*cosang - zp*sinang;\\\\n\\\\n//upper arm twist\\\\nang=-1.0 + cos(tm*3.1 + 0.5);\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxp=xq*sinang + yq*cosang;\\\\nyp=xq*cosang - yq*sinang;\\\\nzp=zq;\\\\n\\\\n//upper arm outward;\\\\nzp=zp-0.35;\\\\nang=cos(tm*2.3)*1.75 - 1.05;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxq=xp*sinang + zp*cosang;\\\\nyq=yp;\\\\nzq=xp*cosang - zp*sinang;\\\\n\\\\n//upper arm up down;\\\\nang=cos(tm)*0.5 - 0.5;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxp=xq;\\\\nyp=yq*cosang - zq*sinang;\\\\nzp=yq*sinang + zq*cosang;\\\\n\\\\n//xp=xq;yp=yq;zp=zq;\\\\n\\\\n\\\\n//project into screenspace and draw on screen\\\\nzp=zp+2;\\\\nxs=xp/zp;\\\\nys=yp/zp;\\\\n\\\\nx=xs+0.5;\\\\ny=ys*1.3+0.5;\\\\n\\\\n\\\\n\\\\n\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"r\\\":0.1,\\\"b\\\":0.7},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"t1=sin(time)*0.5+0.5;\\\\nt2=sin(time+2.1)*0.5+0.5;\\\\nt3=sin(time+4.2)*0.5+0.5;\\\\n\\\\nt4=sin(time+1.1)*0.5+0.5;\\\\nt5=sin(time+3.1)*0.5+0.5;\\\\nt6=sin(time+5.2)*0.5+0.5;\\\",\\\"point_eqs_eel\\\":\\\"n=sample*6.283;\\\\nphs=-sample * 0.2;\\\\ntm=q1 + phs;\\\\n\\\\nflip=flip+1;\\\\nflip=flip*below(flip,2);\\\\n\\\\nxp=0;\\\\nyp=flip*0.1 + (sin(tm)*0.5 + 0.5)*0.2;\\\\nzp=0;\\\\n\\\\n//wrist movement;\\\\nang=sin(tm*2 )*0.5 +0.5;\\\\n\\\\nxq=xp;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nyq=yp*sinang + zp*cosang;\\\\nzq=yp*cosang - zp*sinang;\\\\nyq=yp;\\\\nzq=zp;\\\\n\\\\nang=tm*8;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxp=xq*sinang + yq*cosang;\\\\nyp=xq*cosang - yq*sinang;\\\\nzp=zq;\\\\n\\\\n//forearm movement;\\\\nzp=zp-0.3;\\\\nang=3.14 + sin(tm*2 - 0.5)*1.5;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxq=xp;\\\\nyq=yp*sinang + zp*cosang;\\\\nzq=yp*cosang - zp*sinang;\\\\n\\\\n//upper arm twist\\\\nang=-1.0 + cos(tm*3.1 + 0.5);\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxp=xq*sinang + yq*cosang;\\\\nyp=xq*cosang - yq*sinang;\\\\nzp=zq;\\\\n\\\\n//upper arm outward;\\\\nzp=zp-0.35;\\\\nang=cos(tm*2.3)*1.75 - 1.05;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxq=xp*sinang + zp*cosang;\\\\nyq=yp;\\\\nzq=xp*cosang - zp*sinang;\\\\n\\\\n//upper arm up down;\\\\nang=cos(tm)*0.5 - 0.5;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxp=xq;\\\\nyp=yq*cosang - zq*sinang;\\\\nzp=yq*sinang + zq*cosang;\\\\n\\\\n//xp=xq;yp=yq;zp=zq;\\\\n\\\\n\\\\n//project into screenspace and draw on screen\\\\nzp=zp+2;\\\\nxs=xp/zp;\\\\nys=yp/zp;\\\\n\\\\nx=xs+0.5;\\\\ny=ys*1.3+0.5;\\\\n\\\\n\\\\na=if( equal(q8,1) , (1-sample) , sample);\\\\na=a*a;\\\\n\\\\nb=b+pow(1-sample,2)*0.3;\\\\n\\\\n\\\\n\\\\nr1=t1;\\\\ng1=t2;\\\\nb1=t3;\\\\nr2=t4;\\\\ng2=t5;\\\\nb2=t6;\\\\n\\\\nr=r1*flip + r2*(1-flip);\\\\ng=g1*flip + g2*(1-flip);\\\\nb=b1*flip + b2*(1-flip);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"r\\\":0.2,\\\"b\\\":0.6},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"t1=sin(time)*0.5+0.5;\\\\nt2=sin(time+2.1)*0.5+0.5;\\\\nt3=sin(time+4.2)*0.5+0.5;\\\\n\\\\nt4=sin(time+1.1)*0.5+0.5;\\\\nt5=sin(time+3.1)*0.5+0.5;\\\\nt6=sin(time+5.2)*0.5+0.5;\\\",\\\"point_eqs_eel\\\":\\\"n=sample*6.283;\\\\nphs=-sample * 0.2;\\\\ntm=q1 + phs;\\\\n\\\\nflip=flip+1;\\\\nflip=flip*below(flip,2);\\\\n\\\\nxp=0;\\\\nyp=flip*0.1 + (sin(tm)*0.5 + 0.5)*0.2 +0.1;\\\\nyp=-yp;\\\\nzp=0;\\\\n\\\\n//wrist movement;\\\\nang=sin(tm*2)*0.5 +0.5;\\\\n\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxq=xp;\\\\nyq=yp*sinang + zp*cosang;\\\\nzq=yp*cosang - zp*sinang;\\\\nyq=yp;\\\\nzq=zp;\\\\n\\\\nang=tm*8;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxp=xq*sinang + yq*cosang;\\\\nyp=xq*cosang - yq*sinang;\\\\nzp=zq;\\\\n\\\\n//forearm movement;\\\\nzp=zp-0.3;\\\\nang=3.14 + sin(tm*2 - 0.5)*1.5;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxq=xp;\\\\nyq=yp*sinang + zp*cosang;\\\\nzq=yp*cosang - zp*sinang;\\\\n\\\\n//upper arm twist\\\\nang=-1.0 + cos(tm*3.1 + 0.5);\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxp=xq*sinang + yq*cosang;\\\\nyp=xq*cosang - yq*sinang;\\\\nzp=zq;\\\\n\\\\n//upper arm outward;\\\\nzp=zp-0.35;\\\\nang=cos(tm*2.3)*1.75 - 1.05;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxq=xp*sinang + zp*cosang;\\\\nyq=yp;\\\\nzq=xp*cosang - zp*sinang;\\\\n\\\\n//upper arm up down;\\\\nang=cos(tm)*0.5 - 0.5;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxp=xq;\\\\nyp=yq*cosang - zq*sinang;\\\\nzp=yq*sinang + zq*cosang;\\\\n\\\\n//xp=xq;yp=yq;zp=zq;\\\\n\\\\n\\\\n//project into screenspace and draw on screen\\\\nzp=zp+2;\\\\nxs=xp/zp;\\\\nys=yp/zp;\\\\n\\\\nx=xs+0.5;\\\\ny=ys*1.3+0.5;\\\\n\\\\n\\\\na=if( equal(q8,1) , (1-sample) , sample);\\\\na=a*a;\\\\n\\\\n\\\\nb=b+pow(1-sample,2)*0.3;\\\\n\\\\nr1=t1;\\\\ng1=t2;\\\\nb1=t3;\\\\nr2=t4;\\\\ng2=t5;\\\\nb2=t6;\\\\n\\\\nr=r1*flip + r2*(1-flip);\\\\ng=g1*flip + g2*(1-flip);\\\\nb=b1*flip + b2*(1-flip);\\\"},{\\\"baseVals\\\":{\\\"r\\\":0.1,\\\"b\\\":0.7,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"t1=sin(time)*0.5+0.5;\\\\nt2=sin(time+2.1)*0.5+0.5;\\\\nt3=sin(time+4.2)*0.5+0.5;\\\\n\\\\nt4=sin(time+1.1)*0.5+0.5;\\\\nt5=sin(time+3.1)*0.5+0.5;\\\\nt6=sin(time+5.2)*0.5+0.5;\\\",\\\"point_eqs_eel\\\":\\\"n=sample*6.283;\\\\nphs=-sample * 0.2;\\\\ntm=q1 + phs;\\\\n\\\\nflip=flip+1;\\\\nflip=flip*below(flip,2);\\\\n\\\\nxp=0;\\\\nyp=flip*0.1 + (sin(tm)*0.5 + 0.5)*0.2;\\\\nzp=0;\\\\n\\\\n//wrist movement;\\\\nang=sin(tm*2 )*0.5 +0.5;\\\\n\\\\nxq=xp;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nyq=yp*sinang + zp*cosang;\\\\nzq=yp*cosang - zp*sinang;\\\\nyq=yp;\\\\nzq=zp;\\\\n\\\\nang=tm*8;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxp=xq*sinang + yq*cosang;\\\\nyp=xq*cosang - yq*sinang;\\\\nzp=zq;\\\\n\\\\n//forearm movement;\\\\nzp=zp-0.3;\\\\nang=3.14 + sin(tm*2 - 0.5)*1.5;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxq=xp;\\\\nyq=yp*sinang + zp*cosang;\\\\nzq=yp*cosang - zp*sinang;\\\\n\\\\n//upper arm twist\\\\nang=-1.0 + cos(tm*3.1 + 0.5);\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxp=xq*sinang + yq*cosang;\\\\nyp=xq*cosang - yq*sinang;\\\\nzp=zq;\\\\n\\\\n//upper arm outward;\\\\nzp=zp-0.35;\\\\nang=cos(tm*2.3)*1.75 - 1.05;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxq=xp*sinang + zp*cosang;\\\\nyq=yp;\\\\nzq=xp*cosang - zp*sinang;\\\\n\\\\n//upper arm up down;\\\\nang=cos(tm)*0.5 - 0.5;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxp=xq;\\\\nyp=yq*cosang - zq*sinang;\\\\nzp=yq*sinang + zq*cosang;\\\\n\\\\n//xp=xq;yp=yq;zp=zq;\\\\n\\\\n\\\\n//project into screenspace and draw on screen\\\\nzp=zp+2;\\\\nxs=-xp/zp;\\\\nys=yp/zp;\\\\n\\\\nx=xs+0.5;\\\\ny=ys*1.3+0.5;\\\\n\\\\n\\\\na=if( equal(q8,1) , (1-sample) , sample);\\\\na=a*a;\\\\n\\\\nb=b+pow(1-sample,2)*0.3;\\\\n\\\\n\\\\n\\\\nr1=t1;\\\\ng1=t2;\\\\nb1=t3;\\\\nr2=t4;\\\\ng2=t5;\\\\nb2=t6;\\\\n\\\\nr=r1*flip + r2*(1-flip);\\\\ng=g1*flip + g2*(1-flip);\\\\nb=b1*flip + b2*(1-flip);\\\"},{\\\"baseVals\\\":{\\\"r\\\":0.2,\\\"b\\\":0.6,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"t1=sin(time)*0.5+0.5;\\\\nt2=sin(time+2.1)*0.5+0.5;\\\\nt3=sin(time+4.2)*0.5+0.5;\\\\n\\\\nt4=sin(time+1.1)*0.5+0.5;\\\\nt5=sin(time+3.1)*0.5+0.5;\\\\nt6=sin(time+5.2)*0.5+0.5;\\\",\\\"point_eqs_eel\\\":\\\"n=sample*6.283;\\\\nphs=-sample * 0.2;\\\\ntm=q1 + phs;\\\\n\\\\nflip=flip+1;\\\\nflip=flip*below(flip,2);\\\\n\\\\nxp=0;\\\\nyp=flip*0.1 + (sin(tm)*0.5 + 0.5)*0.2 +0.1;\\\\nyp=-yp;\\\\nzp=0;\\\\n\\\\n//wrist movement;\\\\nang=sin(tm*2)*0.5 +0.5;\\\\n\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxq=xp;\\\\nyq=yp*sinang + zp*cosang;\\\\nzq=yp*cosang - zp*sinang;\\\\nyq=yp;\\\\nzq=zp;\\\\n\\\\nang=tm*8;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxp=xq*sinang + yq*cosang;\\\\nyp=xq*cosang - yq*sinang;\\\\nzp=zq;\\\\n\\\\n//forearm movement;\\\\nzp=zp-0.3;\\\\nang=3.14 + sin(tm*2 - 0.5)*1.5;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxq=xp;\\\\nyq=yp*sinang + zp*cosang;\\\\nzq=yp*cosang - zp*sinang;\\\\n\\\\n//upper arm twist\\\\nang=-1.0 + cos(tm*3.1 + 0.5);\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxp=xq*sinang + yq*cosang;\\\\nyp=xq*cosang - yq*sinang;\\\\nzp=zq;\\\\n\\\\n//upper arm outward;\\\\nzp=zp-0.35;\\\\nang=cos(tm*2.3)*1.75 - 1.05;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxq=xp*sinang + zp*cosang;\\\\nyq=yp;\\\\nzq=xp*cosang - zp*sinang;\\\\n\\\\n//upper arm up down;\\\\nang=cos(tm)*0.5 - 0.5;\\\\nsinang=sin(ang);cosang=cos(ang);\\\\nxp=xq;\\\\nyp=yq*cosang - zq*sinang;\\\\nzp=yq*sinang + zq*cosang;\\\\n\\\\n//xp=xq;yp=yq;zp=zq;\\\\n\\\\n\\\\n//project into screenspace and draw on screen\\\\nzp=zp+2;\\\\nxs=-xp/zp;\\\\nys=yp/zp;\\\\n\\\\nx=xs+0.5;\\\\ny=ys*1.3+0.5;\\\\n\\\\n\\\\na=if( equal(q8,1) , (1-sample) , sample);\\\\na=a*a;\\\\n\\\\n\\\\nb=b+pow(1-sample,2)*0.3;\\\\n\\\\nr1=t1;\\\\ng1=t2;\\\\nb1=t3;\\\\nr2=t4;\\\\ng2=t5;\\\\nb2=t6;\\\\n\\\\nr=r1*flip + r2*(1-flip);\\\\ng=g1*flip + g2*(1-flip);\\\\nb=b1*flip + b2*(1-flip);\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"movement = movement + 0.01*(bass+bass_att) + 0.001*pow(bass+1,3);\\\\nq1 = movement;\\\\nmonitor =q1;\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\" shader_body { \\\\n vec3 ret_1;\\\\n ret_1 = texture (sampler_main, uv).xyz;\\\\n vec2 tmpvar_2;\\\\n tmpvar_2 = (normalize((uv - uv_orig)) * texsize.zw);\\\\n vec4 tmpvar_3;\\\\n tmpvar_3.w = 0.0;\\\\n tmpvar_3.xyz = ret_1;\\\\n vec4 tmpvar_4;\\\\n tmpvar_4.w = 0.0;\\\\n tmpvar_4.xyz = max (tmpvar_3, (texture (sampler_main, (uv - tmpvar_2)) * 0.9)).xyz;\\\\n vec4 tmpvar_5;\\\\n tmpvar_5.w = 0.0;\\\\n tmpvar_5.xyz = max (tmpvar_4, (texture (sampler_main, (uv + tmpvar_2)) * 0.97)).xyz;\\\\n vec4 tmpvar_6;\\\\n tmpvar_6.w = 0.0;\\\\n tmpvar_6.xyz = max (tmpvar_5, (texture (sampler_main, (uv + \\\\n (tmpvar_2 * 2.0)\\\\n )) * 0.97)).xyz;\\\\n ret_1 = (max (tmpvar_6, (texture (sampler_main, \\\\n (uv + (tmpvar_2 * 3.0))\\\\n ) * 0.9)).xyz * 0.92);\\\\n vec4 tmpvar_7;\\\\n tmpvar_7.w = 1.0;\\\\n tmpvar_7.xyz = ret_1;\\\\n ret = tmpvar_7.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n vec2 uv_1;\\\\n vec3 ret_2;\\\\n uv_1 = (0.05 + (0.9 * uv));\\\\n ret_2 = (abs((\\\\n ((texture (sampler_blur1, uv_1).xyz * scale1) + bias1)\\\\n - texture (sampler_main, uv_1).xyz)) * 6.0);\\\\n ret_2 = (ret_2 * 1.333);\\\\n vec4 tmpvar_3;\\\\n tmpvar_3.w = 1.0;\\\\n tmpvar_3.xyz = ret_2;\\\\n ret = tmpvar_3.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/_Rovastar + Geiss - Hurricane Nightmare (Posterize Mix).json\":\n/*!****************************************************************************************!*\\\n !*** ./presets/converted/_Rovastar + Geiss - Hurricane Nightmare (Posterize Mix).json ***!\n \\****************************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":5,\\\"gammaadj\\\":1,\\\"decay\\\":1,\\\"echo_zoom\\\":1,\\\"echo_orient\\\":3,\\\"wave_mode\\\":1,\\\"wave_thick\\\":1,\\\"wrap\\\":0,\\\"darken_center\\\":1,\\\"wave_a\\\":0.3,\\\"wave_scale\\\":0.881,\\\"wave_smoothing\\\":0.5,\\\"wave_mystery\\\":-1,\\\"warpscale\\\":2.853,\\\"zoomexp\\\":3.6,\\\"zoom\\\":1.02109,\\\"rot\\\":-0.16,\\\"warp\\\":0.309,\\\"wave_r\\\":0.6,\\\"wave_g\\\":0.6,\\\"wave_b\\\":0.6,\\\"wave_y\\\":0.47,\\\"mv_l\\\":1.75},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"wave_r = wave_r + 0.400*( 0.60*sin(0.933*time) + 0.40*sin(1.045*time) );\\\\nwave_g = wave_g + 0.400*( 0.60*sin(0.900*time) + 0.40*sin(0.956*time) );\\\\nwave_b = wave_b + 0.400*( 0.60*sin(0.910*time) + 0.40*sin(0.920*time) );\\\\nq8 = oldq8+if(above(bass+bass_att,1.8),q8+0.0005*pow((bass+bass_att-1),9),0);\\\\noldq8 = q8;\\\\nmonitor = q8;\\\\nzoom = zoom + 0.023*( 0.60*sin(0.339*q8) + 0.40*sin(0.276*q8) );\\\\nrot = rot + 0.030*( 0.60*sin(0.381*q8) + 0.40*sin(0.579*q8) );\\\\n//decay = decay - 0.02*equal(frame%40,0);\\\\nmv_r = wave_r;\\\\nmv_b = wave_b;\\\\nmv_g = wave_g;\\\\nmv_x = 1.25;\\\\nmv_y = 1.25;\\\\nmv_dx = 0.1*sin(1.1*time);\\\\nmv_dy = 0.1*cos(1.112*time);\\\",\\\"pixel_eqs_eel\\\":\\\"rot=rot+1/(10*(rad+0.2+0.1*sin(q8)));\\\",\\\"warp\\\":\\\"\\\",\\\"comp\\\":\\\" shader_body { \\\\n vec4 tmpvar_1;\\\\n tmpvar_1 = texture (sampler_main, uv);\\\\n vec4 tmpvar_2;\\\\n tmpvar_2.w = 1.0;\\\\n tmpvar_2.xyz = (tmpvar_1.xyz * (1.0 + (\\\\n (abs((fract(\\\\n (tmpvar_1.xyz * 8.0)\\\\n ) - 0.5)) - 0.25)\\\\n * 0.4)));\\\\n ret = tmpvar_2.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/cope + flexi - colorful marble (ghost mix).json\":\n/*!***************************************************************************!*\\\n !*** ./presets/converted/cope + flexi - colorful marble (ghost mix).json ***!\n \\***************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":1,\\\"gammaadj\\\":1,\\\"decay\\\":1,\\\"echo_orient\\\":1,\\\"additivewave\\\":1,\\\"wave_a\\\":0.002,\\\"wave_scale\\\":2.713,\\\"wave_smoothing\\\":0,\\\"modwavealphastart\\\":1.2,\\\"modwavealphaend\\\":1.2,\\\"warpscale\\\":1.331,\\\"zoom\\\":0.9995,\\\"warp\\\":0.009,\\\"wave_r\\\":0.44,\\\"wave_g\\\":0.4,\\\"ob_size\\\":0.5,\\\"ob_r\\\":0.01,\\\"ib_size\\\":0.26,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":0.85,\\\"mv_r\\\":0.5,\\\"mv_g\\\":0.5,\\\"mv_b\\\":0.5,\\\"mv_a\\\":0,\\\"b1ed\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"sides\\\":3,\\\"additive\\\":1,\\\"num_inst\\\":347,\\\"rad\\\":0.20065,\\\"ang\\\":0.75398,\\\"tex_ang\\\":3.14159,\\\"tex_zoom\\\":0.99979,\\\"r\\\":0,\\\"g2\\\":0,\\\"border_g\\\":0.5,\\\"border_b\\\":0.15,\\\"border_a\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"//lorenz-attractor calc\\\\nxx1 = if(equal(instance,0),q11,xx1);\\\\nyy1 = if(equal(instance,0),q12,yy1);\\\\nzz1 = if(equal(instance,0),q13,zz1);\\\\n\\\\ndx1 = q14*(yy1-xx1);\\\\ndy1 = xx1*(q15-zz1)-yy1;\\\\ndz1 = xx1*yy1-q16*zz1;\\\\ndd = sqrt(dx1*dx1+dy1*dy1+dz1*dz1);\\\\nxx1 = xx1 + q17*dx1/dd;\\\\nyy1 = yy1 + q17*dy1/dd;\\\\nzz1 = zz1 + q17*dz1/dd;\\\\n\\\\n\\\\n// 3D object model coordinates\\\\nmy_x = xx1*0.1;\\\\nmy_y = yy1*0.1;\\\\nmy_z = zz1*0.1 - 3;\\\\n\\\\n\\\\nd = 5; // camera distance\\\\nzoom = 0.66;\\\\n\\\\n// solid angles\\\\nw3 = -q3;\\\\nw2 = q4;\\\\nw1 = q5;\\\\n\\\\n// 3D rotation\\\\nx1 = cos(w1)*my_x + sin(w1)*my_y;\\\\ny1 = -sin(w1)*my_x + cos(w1)*my_y;\\\\nz1 = my_z;\\\\n\\\\nx2 = cos(w2)*x1 + sin(w2)*z1;\\\\nz2 = -sin(w2)*x1 + cos(w2)*z1;\\\\ny2 = y1;\\\\n\\\\ny3 = cos(w3)*y2 + sin(w3)*z2;\\\\nz3 = -sin(w3)*y2 + cos(w3)*z2;\\\\nx3 = x2;\\\\n\\\\n// perspective calculation\\\\n\\\\nl = sqrt(x3*x3 + y3*y3);\\\\nw = atan2(x3,y3);\\\\np = tan(asin(1) + atan2(d+z3,l));\\\\nd = sqrt(x3*x3 + y3*y3 + (z3+d)*(z3+d));\\\\n\\\\nmy_x = zoom*sin(w)*p;\\\\nmy_y = zoom*cos(w)*p;\\\\n\\\\nx = 0.5 + my_x;\\\\ny = 0.5 + my_y;\\\\n\\\\nrad = rad/d;\\\\nang = ang-instance/num_inst*asin(1)*8;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":52,\\\"rad\\\":0.72136,\\\"tex_zoom\\\":0.7874,\\\"r\\\":0,\\\"a\\\":0.05,\\\"g2\\\":0,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"started = 0;\\\\nt1 = 0.412; //seeds for pseudo random generator\\\\nt2 = 0.4563;\\\\nt3 = 0.6452;\\\\nt4 = 0.2565;\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sides\\\":12,\\\"additive\\\":1,\\\"num_inst\\\":512,\\\"y\\\":0.55,\\\"rad\\\":0.2667,\\\"tex_zoom\\\":0.7874,\\\"r\\\":0,\\\"g\\\":0.1,\\\"b\\\":0.55,\\\"g2\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"started = 0;\\\\nt1 = 0.412; //seeds for pseudo random generator\\\\nt2 = 0.4563;\\\\nt3 = 0.6452;\\\\nt4 = 0.2565;\\\",\\\"frame_eqs_eel\\\":\\\"rnd1 = if(equal(instance,0),t1,rnd1);\\\\nrnd2 = if(equal(instance,0),t2,rnd2);\\\\nrnd3 = if(equal(instance,0),t3,rnd3);\\\\nrnd4 = if(equal(instance,0),t4,rnd4);\\\\nrnd1 = 4*rnd1*(1-rnd1);\\\\nrnd2 = 4*rnd2*(1-rnd2);\\\\nrnd3 = 4*rnd3*(1-rnd3);\\\\nrnd4 = 4*rnd4*(1-rnd4);\\\\nt = .6;\\\\nt = (rnd1+time*t) - int(rnd1+time*t);\\\\nt = t + rnd2*0.1;\\\\nwh = rnd4*asin(1)*4;\\\\nwv = 0.25 + rnd3*0.1;\\\\n\\\\nd = 6; // makes the perspective impact\\\\nzoom = 1;\\\\nl = 1;\\\\n\\\\n// Kardan angles\\\\n\\\\nw1 = q3; // first rotation: clockwise in the desktop pane\\\\nw2 = q4; // rotation around vertical axis\\\\nw3 = q5; // rotation around horizontal axis\\\\n\\\\n\\\\n// definition of the 3D shape\\\\n\\\\ni = instance;\\\\n\\\\nmy_x = t *(cos(wh)*sin(wv)*l)*4;\\\\nmy_z = (-0.5 +(t-0.75)*(t-0.75))*cos(wv)*l*4;\\\\nmy_y = t*(sin(wh)*sin(wv)*l)*4;\\\\n\\\\n\\\\n// 3D rotations\\\\n\\\\nx1 = cos(w1)*my_x + sin(w1)*my_y;\\\\ny1 = -sin(w1)*my_x + cos(w1)*my_y;\\\\nz1 = my_z;\\\\n\\\\nx2 = cos(w2)*x1 + sin(w2)*z1;\\\\nz2 = -sin(w2)*x1 + cos(w2)*z1;\\\\ny2 = y1;\\\\n\\\\ny3 = cos(w3)*y2 + sin(w3)*z2;\\\\nz3 = -sin(w3)*y2 + cos(w3)*z2;\\\\nx3 = x2;\\\\n\\\\n// perspective calculation\\\\n\\\\np = tan(asin(1) + atan2(d+z3,sqrt(x3*x3 + y3*y3)));\\\\nd = sqrt(x3*x3 + y3*y3 + (z3+d)*(z3+d));\\\\n\\\\nrad = rad/d;\\\\nmy_x = zoom*sin(atan2(x3,y3))*p;\\\\nmy_y = zoom*cos(atan2(x3,y3))*p;\\\\n\\\\nx = 0.5 + my_x;\\\\ny = 0.5 + my_y;\\\\n\\\\nx = 0.5 + (x-0.5)/q2;\\\\ny = 0.5 + (y-0.5)/q1;\\\"},{\\\"baseVals\\\":{\\\"sides\\\":12,\\\"additive\\\":1,\\\"num_inst\\\":512,\\\"y\\\":0.55,\\\"rad\\\":0.05012,\\\"tex_zoom\\\":0.7874,\\\"r\\\":0,\\\"g\\\":0.02,\\\"b\\\":0.11,\\\"g2\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"started = 0;\\\\nt1 = 0.412; //seeds for pseudo random generator\\\\nt2 = 0.4563;\\\\nt3 = 0.6452;\\\\nt4 = 0.2565;\\\",\\\"frame_eqs_eel\\\":\\\"rnd1 = if(equal(instance,0),t1,rnd1);\\\\nrnd2 = if(equal(instance,0),t2,rnd2);\\\\nrnd3 = if(equal(instance,0),t3,rnd3);\\\\nrnd4 = if(equal(instance,0),t4,rnd4);\\\\nrnd1 = 4*rnd1*(1-rnd1);\\\\nrnd2 = 4*rnd2*(1-rnd2);\\\\nrnd3 = 4*rnd3*(1-rnd3);\\\\nrnd4 = 4*rnd4*(1-rnd4);\\\\nt = .6;\\\\nt = (rnd1+time*t) - int(rnd1+time*t);\\\\nt = t + rnd2*0.1;\\\\nwh = rnd4*asin(1)*4;\\\\nwv = 0.25 + rnd3*0.1;\\\\n\\\\nd = 1.4; // makes the perspective impact\\\\nzoom = 1;\\\\nl = 1;\\\\n\\\\n// Kardan angles\\\\n\\\\nw1 = q3; // first rotation: clockwise in the desktop pane\\\\nw2 = q4; // rotation around vertical axis\\\\nw3 = q5; // rotation around horizontal axis\\\\n\\\\n\\\\n// definition of the 3D shape\\\\n\\\\ni = instance;\\\\n\\\\nmy_x = t *(cos(wh)*sin(wv)*l);\\\\nmy_y = (-0.5 +(t-0.75)*(t-0.75))*cos(wv)*l;\\\\nmy_z = t*(sin(wh)*sin(wv)*l);\\\\n\\\\n\\\\n// 3D rotations\\\\n\\\\nx1 = cos(w1)*my_x + sin(w1)*my_y;\\\\ny1 = -sin(w1)*my_x + cos(w1)*my_y;\\\\nz1 = my_z;\\\\n\\\\nx2 = cos(w2)*x1 + sin(w2)*z1;\\\\nz2 = -sin(w2)*x1 + cos(w2)*z1;\\\\ny2 = y1;\\\\n\\\\ny3 = cos(w3)*y2 + sin(w3)*z2;\\\\nz3 = -sin(w3)*y2 + cos(w3)*z2;\\\\nx3 = x2;\\\\n\\\\n// perspective calculation\\\\n\\\\np = tan(asin(1) + atan2(d+z3,sqrt(x3*x3 + y3*y3)));\\\\nd = sqrt(x3*x3 + y3*y3 + (z3+d)*(z3+d));\\\\n\\\\nrad = rad/d;\\\\nmy_x = zoom*sin(atan2(x3,y3))*p;\\\\nmy_y = zoom*cos(atan2(x3,y3))*p;\\\\n\\\\nx = 0.5 + my_x;\\\\ny = 0.5 + my_y;\\\\n\\\\nx = 0.5 + (x-0.5)/q2;\\\\ny = 0.5 + (y-0.5)/q1;\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"samples\\\":495,\\\"sep\\\":4,\\\"spectrum\\\":1,\\\"thick\\\":1,\\\"additive\\\":1,\\\"scaling\\\":100,\\\"smoothing\\\":1,\\\"a\\\":0.21,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t2 = 0;\\\\nt3 = 0;\\\\nt4 = 0;\\\\nab = 1;\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"// lorenz-attractor calc\\\\nxx1 = if(equal(sample,0),q11,xx1);\\\\nyy1 = if(equal(sample,0),q12,yy1);\\\\nzz1 = if(equal(sample,0),q13,zz1);\\\\ndx1 = q14*(yy1-xx1);\\\\ndy1 = xx1*(q15-zz1)-yy1;\\\\ndz1 = xx1*yy1-q16*zz1;\\\\nxx1 = xx1 + q17*dx1;\\\\nyy1 = yy1 + q17*dy1;\\\\nzz1 = zz1 + q17*dz1;\\\\n\\\\n// 3D model coordinates\\\\nmy_x = xx1*0.1;\\\\nmy_y = yy1*0.1;\\\\nmy_z = zz1*0.1 - 3;\\\\n\\\\n\\\\nd = 5; // distance of the camera (on the z-axis) to the origin\\\\nzoom = 0.4;\\\\n\\\\n// solid angles\\\\nw1 = q2;\\\\nw2 = q3;\\\\nw3 = q4;\\\\n\\\\n// rotations\\\\nx1 = cos(w1)*my_x + sin(w1)*my_y;\\\\ny1 = -sin(w1)*my_x + cos(w1)*my_y;\\\\nz1 = my_z;\\\\n\\\\nx2 = cos(w2)*x1 + sin(w2)*z1;\\\\nz2 = -sin(w2)*x1 + cos(w2)*z1;\\\\ny2 = y1;\\\\n\\\\ny3 = cos(w3)*y2 + sin(w3)*z2;\\\\nz3 = -sin(w3)*y2 + cos(w3)*z2;\\\\nx3 = x2;\\\\n\\\\n// perspective calculation\\\\n\\\\nl = sqrt(x3*x3 + y3*y3);\\\\nw = atan2(x3,y3);\\\\np = tan(asin(1) + atan2(d+z3,l));\\\\nd = sqrt(x3*x3 + y3*y3 + (z3+d)*(z3+d));\\\\n\\\\nmy_x = zoom*sin(w)*p;\\\\nmy_y = zoom*cos(w)*p;\\\\n\\\\nx = 0.5 + my_x;\\\\ny = 0.5 + my_y;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"xx1 = if(equal(sample,0),q11,xx1);\\\\nyy1 = if(equal(sample,0),q12,yy1);\\\\nzz1 = if(equal(sample,0),q13,zz1);\\\\n\\\\ndx1 = q14*(yy1-xx1);\\\\ndy1 = xx1*(q15-zz1)-yy1;\\\\ndz1 = xx1*yy1-q16*zz1;\\\\nxx1 = xx1 + q17*dx1;\\\\nyy1 = yy1 + q17*dy1;\\\\nzz1 = zz1 + q17*dz1;\\\\n\\\\nmy_x = xx1*0.02;\\\\nmy_y = yy1*0.02;\\\\nmy_z = zz1*0.02;\\\\n\\\\nx = 0.5 + my_x;\\\\ny = 0.5 + my_y;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"x1 = 2;\\\\ny1= 2;\\\\nz1 = 2;\\\",\\\"frame_eqs_eel\\\":\\\"// raytraced sphere code\\\\n\\\\nd = 20; // distance of the sphere, the farther you're away the more you'll see on the horizon\\\\nz = 4; // distance of the pane where the scene is projected on, wider distance = smaller apex angle of the camera, very small distances = fish eyes view\\\\n\\\\nzz = 1 + bass_att*0; // linear zoom\\\\n\\\\npi = asin(1)*2;\\\\npi2inv = 0.5/pi;\\\\nmaskangle = asin( 1/d);\\\\nq32 = maskangle; // hit = (cameras angle < mask_angle)\\\\nq31 = d;\\\\nq30 = z;\\\\nq29 = pi2inv;\\\\nq28 = pi;\\\\nq27 = 1/zz;\\\\n\\\\nv = 0.4;\\\\nj1 = j1*0.95 + sqr(bass*4)*v;\\\\nj2 = j2*0.95 + sqr(mid*4)*v;\\\\nj3 = j3*0.95 + sqr(treb*4)*v;\\\\n\\\\nn = n + j1*0.0152;\\\\nn1 = n1 + j2*0.0152;\\\\nn2 = n2 + j3*0.0152;\\\\n\\\\nvol=(bass+mid+treb)*0.25;\\\\nvol=vol;\\\\nq3=vol;\\\\nmtime = mtime+vol*0.01;\\\\nq1=mtime;\\\\n\\\\nzoom = zoom + 0.015*vol;\\\\n\\\\nw1 = n*0.01; // solid angles to rotate the sphere in its origin\\\\nw2 = n1*0.01;\\\\nw3 = n2*0.01;\\\\n\\\\nq20 = cos(w1);\\\\nq21 = sin(w1);\\\\nq22 = cos(w2);\\\\nq23 = sin(w2);\\\\nq24 = cos(w3);\\\\nq25 = sin(w3);\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\" shader_body { \\\\n vec3 noise2_1;\\\\n vec3 rc_2;\\\\n vec3 p_3;\\\\n vec2 polar_4;\\\\n vec3 ret_5;\\\\n vec2 tmpvar_6;\\\\n tmpvar_6 = ((q27 * (uv - 0.5)) * aspect.xy);\\\\n float tmpvar_7;\\\\n tmpvar_7 = sqrt(dot (tmpvar_6, tmpvar_6));\\\\n float tmpvar_8;\\\\n float tmpvar_9;\\\\n tmpvar_9 = (min (abs(\\\\n (tmpvar_7 / q30)\\\\n ), 1.0) / max (abs(\\\\n (tmpvar_7 / q30)\\\\n ), 1.0));\\\\n float tmpvar_10;\\\\n tmpvar_10 = (tmpvar_9 * tmpvar_9);\\\\n tmpvar_10 = (((\\\\n ((((\\\\n ((((-0.01213232 * tmpvar_10) + 0.05368138) * tmpvar_10) - 0.1173503)\\\\n * tmpvar_10) + 0.1938925) * tmpvar_10) - 0.3326756)\\\\n * tmpvar_10) + 0.9999793) * tmpvar_9);\\\\n tmpvar_10 = (tmpvar_10 + (float(\\\\n (abs((tmpvar_7 / q30)) > 1.0)\\\\n ) * (\\\\n (tmpvar_10 * -2.0)\\\\n + 1.570796)));\\\\n tmpvar_8 = (tmpvar_10 * sign((tmpvar_7 / q30)));\\\\n if ((abs(q30) > (1e-08 * abs(tmpvar_7)))) {\\\\n if ((q30 < 0.0)) {\\\\n if ((tmpvar_7 >= 0.0)) {\\\\n tmpvar_8 += 3.141593;\\\\n } else {\\\\n tmpvar_8 = (tmpvar_8 - 3.141593);\\\\n };\\\\n };\\\\n } else {\\\\n tmpvar_8 = (sign(tmpvar_7) * 1.570796);\\\\n };\\\\n bool tmpvar_11;\\\\n tmpvar_11 = (q32 >= tmpvar_8);\\\\n float tmpvar_12;\\\\n float tmpvar_13;\\\\n tmpvar_13 = (min (abs(\\\\n (tmpvar_6.x / tmpvar_6.y)\\\\n ), 1.0) / max (abs(\\\\n (tmpvar_6.x / tmpvar_6.y)\\\\n ), 1.0));\\\\n float tmpvar_14;\\\\n tmpvar_14 = (tmpvar_13 * tmpvar_13);\\\\n tmpvar_14 = (((\\\\n ((((\\\\n ((((-0.01213232 * tmpvar_14) + 0.05368138) * tmpvar_14) - 0.1173503)\\\\n * tmpvar_14) + 0.1938925) * tmpvar_14) - 0.3326756)\\\\n * tmpvar_14) + 0.9999793) * tmpvar_13);\\\\n tmpvar_14 = (tmpvar_14 + (float(\\\\n (abs((tmpvar_6.x / tmpvar_6.y)) > 1.0)\\\\n ) * (\\\\n (tmpvar_14 * -2.0)\\\\n + 1.570796)));\\\\n tmpvar_12 = (tmpvar_14 * sign((tmpvar_6.x / tmpvar_6.y)));\\\\n if ((abs(tmpvar_6.y) > (1e-08 * abs(tmpvar_6.x)))) {\\\\n if ((tmpvar_6.y < 0.0)) {\\\\n if ((tmpvar_6.x >= 0.0)) {\\\\n tmpvar_12 += 3.141593;\\\\n } else {\\\\n tmpvar_12 = (tmpvar_12 - 3.141593);\\\\n };\\\\n };\\\\n } else {\\\\n tmpvar_12 = (sign(tmpvar_6.x) * 1.570796);\\\\n };\\\\n float x_15;\\\\n x_15 = (q31 * sin(tmpvar_8));\\\\n vec2 tmpvar_16;\\\\n tmpvar_16.x = tmpvar_12;\\\\n tmpvar_16.y = ((q28 - tmpvar_8) + (sign(x_15) * (1.570796 - \\\\n (sqrt((1.0 - abs(x_15))) * (1.570796 + (abs(x_15) * (-0.2146018 + \\\\n (abs(x_15) * (0.08656672 + (abs(x_15) * -0.03102955)))\\\\n ))))\\\\n )));\\\\n polar_4 = tmpvar_16;\\\\n vec3 tmpvar_17;\\\\n tmpvar_17.x = (sin(tmpvar_12) * sin(tmpvar_16.y));\\\\n tmpvar_17.y = (cos(tmpvar_12) * sin(tmpvar_16.y));\\\\n tmpvar_17.z = cos(tmpvar_16.y);\\\\n vec2 tmpvar_18;\\\\n tmpvar_18.x = ((tmpvar_17.z * q20) - (tmpvar_17.y * q21));\\\\n tmpvar_18.y = ((tmpvar_17.z * q21) + (tmpvar_17.y * q20));\\\\n vec2 tmpvar_19;\\\\n tmpvar_19.x = ((tmpvar_18.x * q22) - (tmpvar_17.x * q23));\\\\n tmpvar_19.y = ((tmpvar_18.x * q23) + (tmpvar_17.x * q22));\\\\n p_3.z = tmpvar_19.x;\\\\n vec2 tmpvar_20;\\\\n tmpvar_20.x = ((tmpvar_18.y * q24) - (tmpvar_19.y * q25));\\\\n tmpvar_20.y = ((tmpvar_18.y * q25) + (tmpvar_19.y * q24));\\\\n p_3.xy = tmpvar_20.yx;\\\\n float tmpvar_21;\\\\n float tmpvar_22;\\\\n tmpvar_22 = (min (abs(\\\\n (tmpvar_19.x / tmpvar_20.y)\\\\n ), 1.0) / max (abs(\\\\n (tmpvar_19.x / tmpvar_20.y)\\\\n ), 1.0));\\\\n float tmpvar_23;\\\\n tmpvar_23 = (tmpvar_22 * tmpvar_22);\\\\n tmpvar_23 = (((\\\\n ((((\\\\n ((((-0.01213232 * tmpvar_23) + 0.05368138) * tmpvar_23) - 0.1173503)\\\\n * tmpvar_23) + 0.1938925) * tmpvar_23) - 0.3326756)\\\\n * tmpvar_23) + 0.9999793) * tmpvar_22);\\\\n tmpvar_23 = (tmpvar_23 + (float(\\\\n (abs((tmpvar_19.x / tmpvar_20.y)) > 1.0)\\\\n ) * (\\\\n (tmpvar_23 * -2.0)\\\\n + 1.570796)));\\\\n tmpvar_21 = (tmpvar_23 * sign((tmpvar_19.x / tmpvar_20.y)));\\\\n if ((abs(tmpvar_20.y) > (1e-08 * abs(tmpvar_19.x)))) {\\\\n if ((tmpvar_20.y < 0.0)) {\\\\n if ((tmpvar_19.x >= 0.0)) {\\\\n tmpvar_21 += 3.141593;\\\\n } else {\\\\n tmpvar_21 = (tmpvar_21 - 3.141593);\\\\n };\\\\n };\\\\n } else {\\\\n tmpvar_21 = (sign(tmpvar_19.x) * 1.570796);\\\\n };\\\\n float tmpvar_24;\\\\n tmpvar_24 = sqrt(dot (p_3.xz, p_3.xz));\\\\n float tmpvar_25;\\\\n float tmpvar_26;\\\\n tmpvar_26 = (min (abs(\\\\n (tmpvar_20.x / tmpvar_24)\\\\n ), 1.0) / max (abs(\\\\n (tmpvar_20.x / tmpvar_24)\\\\n ), 1.0));\\\\n float tmpvar_27;\\\\n tmpvar_27 = (tmpvar_26 * tmpvar_26);\\\\n tmpvar_27 = (((\\\\n ((((\\\\n ((((-0.01213232 * tmpvar_27) + 0.05368138) * tmpvar_27) - 0.1173503)\\\\n * tmpvar_27) + 0.1938925) * tmpvar_27) - 0.3326756)\\\\n * tmpvar_27) + 0.9999793) * tmpvar_26);\\\\n tmpvar_27 = (tmpvar_27 + (float(\\\\n (abs((tmpvar_20.x / tmpvar_24)) > 1.0)\\\\n ) * (\\\\n (tmpvar_27 * -2.0)\\\\n + 1.570796)));\\\\n tmpvar_25 = (tmpvar_27 * sign((tmpvar_20.x / tmpvar_24)));\\\\n if ((abs(tmpvar_24) > (1e-08 * abs(tmpvar_20.x)))) {\\\\n if ((tmpvar_24 < 0.0)) {\\\\n if ((tmpvar_20.x >= 0.0)) {\\\\n tmpvar_25 += 3.141593;\\\\n } else {\\\\n tmpvar_25 = (tmpvar_25 - 3.141593);\\\\n };\\\\n };\\\\n } else {\\\\n tmpvar_25 = (sign(tmpvar_20.x) * 1.570796);\\\\n };\\\\n vec2 tmpvar_28;\\\\n tmpvar_28.x = tmpvar_21;\\\\n tmpvar_28.y = tmpvar_25;\\\\n polar_4 = (((tmpvar_28 * q29) * vec2(1.0, 2.0)) + vec2(0.0, 0.5));\\\\n vec3 tmpvar_29;\\\\n tmpvar_29.xy = polar_4;\\\\n tmpvar_29.z = (time * 0.15);\\\\n rc_2 = (texture (sampler_noisevol_hq, tmpvar_29).xyz + (texture (sampler_noisevol_hq, (2.0 * tmpvar_29)) * 0.5).xyz);\\\\n rc_2 = (rc_2 + (texture (sampler_noisevol_hq, (4.0 * tmpvar_29)) * 0.25).xyz);\\\\n rc_2 = (rc_2 + (texture (sampler_noisevol_hq, (8.0 * tmpvar_29)) * 0.125).xyz);\\\\n rc_2 = (rc_2 + (texture (sampler_noisevol_hq, (16.0 * tmpvar_29)) * 0.0625).xyz);\\\\n rc_2 = ((rc_2 * rc_2) * (rc_2 * 2.0));\\\\n rc_2 = (rc_2 * (q3 * 0.5));\\\\n vec4 tmpvar_30;\\\\n tmpvar_30 = texture (sampler_fc_main, (0.5 + (uv - 0.5)));\\\\n noise2_1 = (texture (sampler_noise_lq, ((\\\\n (uv_orig * texsize.xy)\\\\n * texsize_noise_lq.zw) + rand_frame.xy)).xyz + mix ((rc_2 * 2.0), vec3(2.0, 2.0, 2.0), vec3(rad)));\\\\n vec3 a_31;\\\\n a_31 = (1.0 - tmpvar_30.xyz);\\\\n ret_5 = (tmpvar_30.xyz + (vec3(0.3, 0.25, 0.2) * dot (\\\\n ((a_31.yzx * noise2_1.zxy) - (a_31.zxy * noise2_1.yzx))\\\\n , vec3(0.32, 0.49, 0.29))));\\\\n ret_5 = (ret_5 - (0.1 * rad));\\\\n ret_5 = (ret_5 + ((0.1 * texture (sampler_noisevol_hq, \\\\n ((p_3 + (time * 0.1)) * 0.7)\\\\n )) * float(tmpvar_11)).xyz);\\\\n vec4 tmpvar_32;\\\\n tmpvar_32.w = 1.0;\\\\n tmpvar_32.xyz = ret_5;\\\\n ret = tmpvar_32.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n vec3 ret_1;\\\\n ret_1 = (texture (sampler_main, uv).xyz - ((\\\\n (texture (sampler_blur1, uv).xyz * scale1)\\\\n + bias1) * 0.5));\\\\n ret_1 = (ret_1 * 2.0);\\\\n vec4 tmpvar_2;\\\\n tmpvar_2.w = 1.0;\\\\n tmpvar_2.xyz = ret_1;\\\\n ret = tmpvar_2.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/cope + martin - mother-of-pearl.json\":\n/*!****************************************************************!*\\\n !*** ./presets/converted/cope + martin - mother-of-pearl.json ***!\n \\****************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":0,\\\"gammaadj\\\":1.14,\\\"decay\\\":1,\\\"echo_zoom\\\":1,\\\"wave_mode\\\":6,\\\"wave_thick\\\":1,\\\"wave_brighten\\\":0,\\\"wrap\\\":0,\\\"darken\\\":1,\\\"wave_a\\\":1.17,\\\"wave_scale\\\":0.797,\\\"wave_smoothing\\\":0,\\\"modwavealphastart\\\":0.71,\\\"modwavealphaend\\\":1.3,\\\"warpscale\\\":1.331,\\\"zoomexp\\\":0.9995,\\\"zoom\\\":0.9998,\\\"rot\\\":0.02,\\\"dy\\\":-0.008,\\\"warp\\\":0.01,\\\"sx\\\":1.0098,\\\"wave_r\\\":0.5,\\\"wave_g\\\":0.5,\\\"wave_b\\\":0.5,\\\"wave_x\\\":0.9,\\\"ob_size\\\":0.005,\\\"ob_a\\\":0.8,\\\"ib_size\\\":0,\\\"ib_r\\\":0,\\\"ib_g\\\":0,\\\"ib_b\\\":0,\\\"ib_a\\\":1,\\\"mv_x\\\":44.8,\\\"mv_y\\\":38.4,\\\"mv_l\\\":5,\\\"mv_g\\\":0.91,\\\"mv_b\\\":0.71,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"sides\\\":33,\\\"y\\\":0,\\\"rad\\\":0.11039,\\\"ang\\\":3.4054,\\\"r\\\":0,\\\"g2\\\":0,\\\"border_g\\\":0,\\\"border_b\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"//ang = ang + time*2;\\\\n\\\\n//x = x + 0.4*sin(time);\\\\n//y = y + 0.4*sin(-time*1.4);\\\"},{\\\"baseVals\\\":{\\\"sides\\\":34,\\\"y\\\":0.45,\\\"rad\\\":1.62175,\\\"r\\\":0,\\\"a\\\":0.05,\\\"g2\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sides\\\":54,\\\"x\\\":0,\\\"y\\\":0.6,\\\"rad\\\":0.13478,\\\"r\\\":0.7,\\\"g\\\":0.6,\\\"b\\\":0.7,\\\"r2\\\":0.6,\\\"g2\\\":0.6,\\\"b2\\\":0.6,\\\"a2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"//r = r + 0.3*(0.6*sin(time*1.87) + 0.4*sin(1.98*time));\\\\n//b = b + 0.3*(0.6*sin(time*1.3434) + 0.4*sin(1.78*time));\\\\n//g = g + 0.3*(0.6*sin(time*1.9887) + 0.4*sin(1.6*time));\\\\nr=0;\\\\nb=0;\\\\ng=0;\\\\nr2=r;\\\\nb2=b;\\\\ng2=g;\\\"},{\\\"baseVals\\\":{\\\"x\\\":0,\\\"y\\\":0.2,\\\"rad\\\":0.20068,\\\"r\\\":0,\\\"g2\\\":0,\\\"a2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"usedots\\\":1,\\\"r\\\":0.2,\\\"g\\\":0.7,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"wave_r = wave_r + 0.3*sin(vol*50);\\\\nwave_b = wave_b + 0.3*sin(vol*20);\\\\nwave_g = wave_g + 0.5*sin(vol*35);\\\\n\\\\n\\\\nq8=wave_r;\\\\nq7=wave_b;\\\\nq6=wave_g;\\\\n\\\\nwr = 0.5+0.4*(0.6*sin(time*1.1) + 0.4*sin(0.8*time));\\\\nwb = 0.5+0.4*(0.6*sin(time*1.6) + 0.4*sin(0.5*time));\\\\nwg = 0.5+0.4*(0.6*sin(time*1.34) + 0.4*sin(0.4*time));\\\\n\\\\nmonitor=wg;\\\\nq10=wr;\\\\nq11=wb;\\\\nq12=wg;\\\\nq18 = 0.007*sin(time*0.1);\\\\nq17 = -0.007*sin(time*0.254);\\\\nq2=bass_thresh;\\\\n\\\\nvol=(bass+mid+treb)*0.25;\\\\nvol=vol*vol;\\\\nq3=vol;\\\\n\\\\nwarp=0;\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\" shader_body { \\\\n vec3 noise3_1;\\\\n vec3 tmpvar_2;\\\\n tmpvar_2 = (texture (sampler_main, uv).xyz + ((texture (sampler_blur1, uv).xyz * scale1) + bias1));\\\\n vec2 tmpvar_3;\\\\n tmpvar_3 = (0.5 + ((\\\\n (uv - vec2(0.0, 1.0))\\\\n - 0.5) * (1.0 + \\\\n (tmpvar_2.y * 0.03)\\\\n )));\\\\n vec2 tmpvar_4;\\\\n tmpvar_4.x = (tmpvar_3.x + pow (tmpvar_2.x, 0.0));\\\\n tmpvar_4.y = (tmpvar_3.y + pow (tmpvar_2.x, 0.005));\\\\n noise3_1 = (texture (sampler_noise_lq, ((\\\\n (uv_orig * texsize.xy)\\\\n * texsize_noise_lq.zw) + rand_frame.xy)).xyz * fract(q15));\\\\n vec3 tmpvar_5;\\\\n tmpvar_5 = (noise3_1 * (vec3(1.0, 1.0, 1.0) - vec3(fract(\\\\n (q3 * 0.5)\\\\n ))));\\\\n noise3_1 = tmpvar_5;\\\\n vec4 tmpvar_6;\\\\n tmpvar_6 = texture (sampler_main, fract(tmpvar_4));\\\\n vec3 tmpvar_7;\\\\n tmpvar_7.x = q10;\\\\n tmpvar_7.y = q11;\\\\n tmpvar_7.z = q12;\\\\n vec3 tmpvar_8;\\\\n tmpvar_8 = mix (tmpvar_5, tmpvar_7, tmpvar_6.xxx);\\\\n vec4 tmpvar_9;\\\\n tmpvar_9.w = 1.0;\\\\n tmpvar_9.xyz = (tmpvar_6.xyz + clamp ((\\\\n (tmpvar_6.yzx * tmpvar_8.zxy)\\\\n - \\\\n (tmpvar_6.zxy * tmpvar_8.yzx)\\\\n ), 0.0, 1.0));\\\\n ret = tmpvar_9.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n vec2 uv1_1;\\\\n vec2 tmpvar_2;\\\\n tmpvar_2.y = 0.0;\\\\n tmpvar_2.x = texsize.z;\\\\n vec2 tmpvar_3;\\\\n tmpvar_3.x = 0.0;\\\\n tmpvar_3.y = texsize.w;\\\\n vec2 tmpvar_4;\\\\n tmpvar_4.x = (texture (sampler_main, (uv - tmpvar_2)).xyz - texture (sampler_main, (uv + tmpvar_2)).xyz).x;\\\\n tmpvar_4.y = (texture (sampler_main, (uv - tmpvar_3)).xyz - texture (sampler_main, (uv + tmpvar_3)).xyz).x;\\\\n uv1_1 = ((0.3 * cos(\\\\n ((uv - 0.5) * 2.0)\\\\n )) - tmpvar_4);\\\\n float tmpvar_5;\\\\n tmpvar_5 = clamp ((0.04 / sqrt(\\\\n dot (uv1_1, uv1_1)\\\\n )), 0.0, 1.0);\\\\n uv1_1 = ((0.3 * cos(\\\\n (uv1_1 * 12.0)\\\\n )) - (9.0 * tmpvar_4));\\\\n vec4 tmpvar_6;\\\\n tmpvar_6.w = 1.0;\\\\n tmpvar_6.xyz = (tmpvar_5 + ((texture (sampler_main, uv).xyz * 12.0) * vec3(clamp (\\\\n (0.04 / sqrt(dot (uv1_1, uv1_1)))\\\\n , 0.0, 1.0))));\\\\n ret = tmpvar_6.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/fiShbRaiN + Flexi - witchcraft 2.0.json\":\n/*!*******************************************************************!*\\\n !*** ./presets/converted/fiShbRaiN + Flexi - witchcraft 2.0.json ***!\n \\*******************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":5,\\\"gammaadj\\\":1.28,\\\"decay\\\":0.8,\\\"echo_zoom\\\":1,\\\"echo_orient\\\":3,\\\"wave_mode\\\":7,\\\"additivewave\\\":1,\\\"modwavealphabyvolume\\\":1,\\\"wave_brighten\\\":0,\\\"brighten\\\":1,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":1.286,\\\"wave_smoothing\\\":0.63,\\\"modwavealphastart\\\":0.71,\\\"modwavealphaend\\\":1.3,\\\"zoomexp\\\":3.04777,\\\"zoom\\\":1.0173,\\\"warp\\\":0.01605,\\\"wave_g\\\":0.65,\\\"wave_b\\\":0.65,\\\"ob_size\\\":0,\\\"ob_a\\\":1,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":0,\\\"mv_a\\\":0,\\\"b1ed\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"sides\\\":5,\\\"additive\\\":1,\\\"num_inst\\\":2,\\\"x\\\":0.49,\\\"rad\\\":0.11589,\\\"tex_zoom\\\":4.36077,\\\"g2\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x = rand(1000)/1000;\\\\ny = rand(1000)/1000;\\\\nang = rand(150)/100;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"thick\\\":1,\\\"additive\\\":1,\\\"g\\\":0,\\\"b\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"ma=ma+(above(bass,1)*3.1415*.01*bass);\\\\nma=ma-(above(treb,1)*3.1415*.01*treb);\\\\n\\\\nmx=mx+(.0002*cos(ma));\\\\nmy=my+(.0002*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.8));\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"thick\\\":1,\\\"additive\\\":1,\\\"r\\\":0,\\\"g\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"ma=ma+(above(bass,1)*3.1415*.05*bass);\\\\nma=ma-(above(mid,1)*3.1415*.05*mid);\\\\n\\\\nmx=mx+(.0001*cos(ma));\\\\nmy=my+(.0001*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.1));\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"thick\\\":1,\\\"additive\\\":1,\\\"r\\\":0,\\\"b\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"ma=ma+(above(mid,1)*3.1415*.01*mid);\\\\nma=ma-(above(treb,1)*3.1415*.01*treb);\\\\n\\\\nmx=mx+(.0004*cos(ma));\\\\nmy=my+(.0004*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.3));\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"thick\\\":1,\\\"additive\\\":1,\\\"g\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"ma=ma+(above(bass,.5)*3.1415*.02*bass);\\\\nma=ma-(above(treb,.5)*3.1415*.02*treb);\\\\n\\\\nmx=mx+(.0008*cos(ma));\\\\nmy=my+(.0008*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.2));\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"dec_med = pow (0.9, 30/fps);\\\\ndec_slow = pow (0.99, 30/fps);\\\\nbeat = max (max (bass, mid), treb); \\\\navg = avg*dec_slow + beat*(1-dec_slow);\\\\nis_beat = above(beat, .5+avg+peak) * above (time, t0+.2);\\\\nt0 = is_beat*time + (1-is_beat)*t0;\\\\npeak = is_beat * beat + (1-is_beat)*peak*dec_med;\\\\nindex = (index + is_beat) %2;\\\\n\\\\n\\\\nd_x = if(is_beat, (rand(2000)-1000)*0.001 , d_x);\\\\nd_y = if(is_beat, (rand(2000)-1000)*0.001 , d_y);\\\\nr = if(is_beat, (rand(2000)-1000)*0.001 , r);\\\\nz = if(is_beat, rand(1000)*0.001 , z);\\\\nzoom = 1.03 + z*0.06;\\\\nrot = r*0.06;\\\\ndx = d_x*0.01;\\\\ndy = d_y*0.01;\\\\nq1 = 1;\\\\n\\\\nq23 = rand(1000)/1000;\\\\nq24 = rand(1000)/1000;\\\\nq25 = (rand(1000)/1000)*6.28;\\\\nq26 = q25 - 3.14;\\\\nq27 = (rand(1000)/12000)+0.04;\\\\n\\\\nq28 = rand(1000)/1000;\\\\nq29 = rand(1000)/1000;\\\\nq30 = (rand(1000)/1000)*6.28;\\\\nq31 = q30 - 3.14;\\\\nq32 = (rand(1000)/14000)+0.04;\\\\n\\\\ndb = db*0.98 + bass*0.2;\\\\nbb = bb + db*0.1;\\\\n\\\\ndt = dt*0.98 + treb*0.2;\\\\ntt = tt + dt*0.1;\\\\n\\\\ndm = dm*0.98 + mid*0.2;\\\\nmm = mm + dm*0.1;\\\\n\\\\n\\\\nw = (bb-tt)*0.1;\\\\nq11 = sin(w);\\\\nq12 = cos(w);\\\\nq13 = 0.5 + sin((bb-mm)*0.1)*0.25; // cx\\\\nq14 = 0.5 + sin((tt-mm)*0.1)*0.25; // cy\\\\nq15 = 4;\\\\nq16 = 0.06;\\\\nq17 = sin(-w);\\\\nq18 = cos(-w);\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\" shader_body { \\\\n vec3 ret_1;\\\\n vec2 tmpvar_2;\\\\n tmpvar_2 = (texsize.zw * 8.0);\\\\n vec3 tmpvar_3;\\\\n tmpvar_3 = (((texture (sampler_blur1, \\\\n (uv + (vec2(1.0, 0.0) * tmpvar_2))\\\\n ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n (uv - (vec2(1.0, 0.0) * tmpvar_2))\\\\n ).xyz * scale1) + bias1));\\\\n vec3 tmpvar_4;\\\\n tmpvar_4 = (((texture (sampler_blur1, \\\\n (uv + (vec2(0.0, 1.0) * tmpvar_2))\\\\n ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n (uv - (vec2(0.0, 1.0) * tmpvar_2))\\\\n ).xyz * scale1) + bias1));\\\\n vec2 tmpvar_5;\\\\n tmpvar_5.x = tmpvar_3.x;\\\\n tmpvar_5.y = tmpvar_4.x;\\\\n vec2 tmpvar_6;\\\\n vec2 tmpvar_7;\\\\n tmpvar_7 = mix (uv_orig, uv, vec2(0.1, 0.1));\\\\n tmpvar_6 = (tmpvar_7 + ((tmpvar_5 * texsize.zw) * 2.0));\\\\n vec2 tmpvar_8;\\\\n tmpvar_8.x = tmpvar_3.y;\\\\n tmpvar_8.y = tmpvar_4.y;\\\\n vec2 tmpvar_9;\\\\n tmpvar_9 = (mix (uv_orig, uv, vec2(0.3, 0.3)) + ((tmpvar_8 * texsize.zw) * 2.0));\\\\n vec2 tmpvar_10;\\\\n tmpvar_10.x = tmpvar_3.z;\\\\n tmpvar_10.y = tmpvar_4.z;\\\\n vec2 tmpvar_11;\\\\n tmpvar_11 = (tmpvar_7 + ((tmpvar_10 * texsize.zw) * 2.0));\\\\n ret_1.x = (texture (sampler_main, tmpvar_6).x - ((texture (sampler_main, tmpvar_6).xyz - \\\\n ((texture (sampler_blur3, tmpvar_6).xyz * scale3) + bias3)\\\\n ).x * 0.01));\\\\n ret_1.y = (texture (sampler_main, tmpvar_9).y - ((texture (sampler_main, tmpvar_9).xyz - \\\\n ((texture (sampler_blur3, tmpvar_9).xyz * scale3) + bias3)\\\\n ).y * 0.01));\\\\n ret_1.z = (texture (sampler_main, tmpvar_11).z - ((texture (sampler_main, tmpvar_11).xyz - \\\\n ((texture (sampler_blur3, tmpvar_11).xyz * scale3) + bias3)\\\\n ).z * 0.01));\\\\n ret_1 = (ret_1 + (-0.004 + (\\\\n (texture (sampler_noise_lq, (((uv_orig * texsize.xy) * (texsize_noise_lq.zw * 1.2)) + rand_frame.xy)).xyz - 0.5)\\\\n * 0.1)));\\\\n vec4 tmpvar_12;\\\\n tmpvar_12.w = 1.0;\\\\n tmpvar_12.xyz = ret_1;\\\\n ret = tmpvar_12.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n vec3 ret_1;\\\\n vec2 tmpvar_2;\\\\n tmpvar_2 = (texsize.zw * 8.0);\\\\n vec3 tmpvar_3;\\\\n tmpvar_3 = (((texture (sampler_blur1, \\\\n (uv + (vec2(1.0, 0.0) * tmpvar_2))\\\\n ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n (uv - (vec2(1.0, 0.0) * tmpvar_2))\\\\n ).xyz * scale1) + bias1));\\\\n vec3 tmpvar_4;\\\\n tmpvar_4 = (((texture (sampler_blur1, \\\\n (uv + (vec2(0.0, 1.0) * tmpvar_2))\\\\n ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n (uv - (vec2(0.0, 1.0) * tmpvar_2))\\\\n ).xyz * scale1) + bias1));\\\\n vec2 tmpvar_5;\\\\n tmpvar_5.x = tmpvar_3.z;\\\\n tmpvar_5.y = tmpvar_4.z;\\\\n vec2 tmpvar_6;\\\\n tmpvar_6.x = tmpvar_3.y;\\\\n tmpvar_6.y = tmpvar_4.y;\\\\n ret_1 = (mix (vec3(0.2, 0.0, 0.1), vec3(0.8, 0.6, 0.0), texture (sampler_main, (uv - \\\\n (tmpvar_5 * 0.2)\\\\n )).yyy) * ((\\\\n (-(tmpvar_3.y) + tmpvar_4.y)\\\\n + 1.0) + (\\\\n (-(tmpvar_3.z) + tmpvar_4.z)\\\\n * 2.0)));\\\\n vec3 tmpvar_7;\\\\n tmpvar_7 = mix (mix (ret_1, vec3(0.3, 0.0, 0.8), vec3((\\\\n ((texture (sampler_blur1, (uv - (tmpvar_6 * 0.04))).xyz * scale1) + bias1)\\\\n .x * 1.4))), vec3(1.0, 0.9, 0.4), texture (sampler_main, uv).zzz);\\\\n ret_1 = tmpvar_7;\\\\n vec4 tmpvar_8;\\\\n tmpvar_8.w = 1.0;\\\\n tmpvar_8.xyz = tmpvar_7;\\\\n ret = tmpvar_8.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/flexi + amandio c - organic [random mashup].json\":\n/*!****************************************************************************!*\\\n !*** ./presets/converted/flexi + amandio c - organic [random mashup].json ***!\n \\****************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":1,\\\"gammaadj\\\":1,\\\"decay\\\":1,\\\"echo_zoom\\\":1,\\\"wrap\\\":0,\\\"darken_center\\\":1,\\\"brighten\\\":1,\\\"darken\\\":1,\\\"wave_a\\\":0.001,\\\"warpanimspeed\\\":0.141,\\\"warpscale\\\":14.497,\\\"zoom\\\":0.99951,\\\"warp\\\":0.75055,\\\"wave_r\\\":0,\\\"wave_g\\\":0,\\\"wave_b\\\":0,\\\"ob_size\\\":0.5,\\\"ob_r\\\":0.01,\\\"ib_size\\\":0.26,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":6,\\\"rad\\\":0.17809,\\\"ang\\\":0.26,\\\"tex_zoom\\\":0.39711,\\\"g\\\":0.7,\\\"b\\\":0.6,\\\"r2\\\":0.4,\\\"g2\\\":0,\\\"a2\\\":1,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x=.11+.22*rand(5);\\\\ny=.1+.16*(2*time%6);\\\\n\\\\nb=.6+.3*q3;\\\\ng=.7+.2*q3;\\\\nr= .7;\\\\n\\\\ng2=.3*g;\\\\nr2=.3*r;\\\\nb2=.3*b;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":6,\\\"additive\\\":1,\\\"rad\\\":0.17809,\\\"ang\\\":0.26,\\\"tex_zoom\\\":0.99999,\\\"g\\\":1,\\\"b\\\":0.4,\\\"a\\\":0.5,\\\"r2\\\":0.2,\\\"g2\\\":0,\\\"b2\\\":0.3,\\\"a2\\\":0.6,\\\"border_r\\\":0,\\\"border_g\\\":0,\\\"border_b\\\":0,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x=.11+.22*rand(5);\\\\ny=.1+.16*(2*time%6);\\\\n\\\\nb=.6+.3*q3;\\\\ng=.7+.2*q3;\\\\nr= .7;\\\\n\\\\ng2=.3*g;\\\\nr2=.3*r;\\\\nb2=.3*b;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":6,\\\"textured\\\":1,\\\"rad\\\":0.17633,\\\"ang\\\":0.26,\\\"tex_zoom\\\":1.19615,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":0.2,\\\"border_r\\\":0,\\\"border_g\\\":0,\\\"border_b\\\":0,\\\"border_a\\\":0.2},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x=.22*rand(6);\\\\ny=.18+.16*(2*time%5);\\\\n\\\\ng=1.5*q3;\\\\nr=1.3*q4;\\\\nb=1.7*q5;\\\\n\\\\ntex_ang=-q1;\\\\ntex_zoom=2+sin(q1);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":6,\\\"textured\\\":1,\\\"rad\\\":0.16284,\\\"ang\\\":0.26,\\\"r2\\\":0.8,\\\"g2\\\":0.8,\\\"b2\\\":0.8,\\\"a2\\\":0.2,\\\"border_r\\\":0,\\\"border_g\\\":0,\\\"border_b\\\":0,\\\"border_a\\\":0.2},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x=.11+.22*rand(5);\\\\ny=.1+.16*(2*time%6);\\\\n\\\\nr=.3*q3;\\\\nb=.2*q2;\\\\ng=.1*q1;\\\\n\\\\ntex_ang=q1;\\\\ntex_zoom=2+1.2*sin(1.5*q1);\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"samples\\\":395,\\\"usedots\\\":1,\\\"r\\\":0.15,\\\"g\\\":0.15,\\\"b\\\":0.15,\\\"a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"usedots\\\":1,\\\"scaling\\\":0.01,\\\"a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"additive\\\":1,\\\"a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"additive\\\":1,\\\"a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"x1 = 0.5;\\\\nx2 = 0.51;\\\\n\\\\ny2 = 1;\\\\ny1 = 0.7;\\\\n\\\\nx3 = 0.8;\\\\ny3 = 0.5;\\\\n\\\\nx4 = 0.2;\\\\ny4 = 0.5;\\\\n\\\\n\\\\nax1 = 0;\\\\nay1 = 0;\\\\nax2 = 0;\\\\nay2 = 0;\\\\nax3 = 0;\\\\nay3 = 0;\\\\n\\\\nvx1 = 0.000;\\\\nvx2 = 0.000;\\\",\\\"frame_eqs_eel\\\":\\\"sx=1+.01*(8*bass%8)*equal(time%(int(24-2*bass)),0);\\\\nsy=1+.01*(8*mid%8) *equal(time%(12+int(24-2*bass)),0);\\\\n\\\\nzoom = 0.99;\\\\n//warp = 0;\\\\nwave_a = 0;\\\\n//pogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogo\\\\nr = 0.12+ max(bass_att,treb_att)*0.004;\\\\nbounce = below(y1,r);\\\\ny1 = y1+vy1;vy1 = if(bounce, abs(vy1)*0.94 + (r-y1)*0.1, vy1-0.00006*60/fps);\\\\nbounce = below(x1,r);x1 = x1+vx1;vx1 = if(bounce, abs(vx1)*0.94 + (r-x1)*0.1, vx1);\\\\nbounce = above(x1,1-r);vx1 = if(bounce, - abs(vx1)*0.94 + (1-r-x1)*0.04, vx1);\\\\nbounce = below(y2,r);y2 = y2 + vy2;vy2 = if(bounce,abs(vy2)*0.94+(r-y2)*.1, vy2-0.00006*60/fps);\\\\nbounce = below(x2,r);x2 = x2+ vx2;vx2 = if(bounce, abs(vx2)*0.94 + (r-x2)*0.1, vx2);\\\\nbounce = above(x2,1-r);vx2 = if(bounce, - abs(vx2)*0.94 + (1-r-x2)*0.1, vx2);\\\\nbounce = below(y3,r);y3 = y3 + vy3;vy3 = if(bounce,abs(vy3)*0.94+(r-y3)*.1, vy3-0.00006*60/fps);\\\\nbounce = below(x3,r);x3 = x3+ vx3;vx3 = if(bounce, abs(vx3)*0.94 + (r-x3)*0.1, vx3);\\\\nbounce = above(x3,1-r);vx3 = if(bounce, - abs(vx3)*0.94 + (1-r-x3)*0.1, vx3);\\\\nbounce = below(y4,r);y4 = y4 + vy4;vy4 = if(bounce,abs(vy4)*0.94+(r-y4)*.1, vy4-0.00006*60/fps);\\\\nbounce = below(x4,r);x4 = x4+ vx4;vx4 = if(bounce, abs(vx4)*0.94 + (r-x4)*0.1, vx4);\\\\nbounce = above(x4,1-r);vx4 = if(bounce, - abs(vx4)*0.94 + (1-r-x4)*0.1, vx4);\\\\nbounce = below( sqrt( sqr(x1+vx1-x2-vx2) + sqr(y1+vy1-y2-vy2)), 2*r);\\\\nref_ang = atan2(x2-x1,y2-y1)+asin(1); // common tangent\\\\nv1 = sqrt(vx1*vx1+vy1*vy1);v2 = sqrt(vx2*vx2+vy2*vy2);w1 = atan2(vx1,vy1);w2 = atan2(vx2,vy2);\\\\nvx1 = if(bounce,sin(ref_ang)*v1*cos(w1-ref_ang) + sin(ref_ang+asin(1))*v2*cos(w2-ref_ang-asin(1)), vx1);\\\\nvy1 = if(bounce,cos(ref_ang)*v1*cos(w1-ref_ang) + cos(ref_ang+asin(1))*v2*cos(w2-ref_ang-asin(1)), vy1);\\\\nvx2 = if(bounce,sin(ref_ang)*v2*cos(w2-ref_ang) + sin(ref_ang+asin(1))*v1*cos(w1-ref_ang-asin(1)), vx2);\\\\nvy2 = if(bounce,cos(ref_ang)*v2*cos(w2-ref_ang) + cos(ref_ang+asin(1))*v1*cos(w1-ref_ang-asin(1)), vy2);\\\\nbounce = below( sqrt( sqr(x1+vx1-x3-vx3) + sqr(y1+vy1-y3-vy3)), 2*r);\\\\nref_ang = atan2(x3-x1,y3-y1)+asin(1); // common tangent\\\\nv1 = sqrt(vx1*vx1+vy1*vy1);v2 = sqrt(vx3*vx3+vy3*vy3);w1 = atan2(vx1,vy1);w2 = atan2(vx3,vy3);\\\\nvx1 = if(bounce,sin(ref_ang)*v1*cos(w1-ref_ang) + sin(ref_ang+asin(1))*v2*cos(w2-ref_ang-asin(1)), vx1);\\\\nvy1 = if(bounce,cos(ref_ang)*v1*cos(w1-ref_ang) + cos(ref_ang+asin(1))*v2*cos(w2-ref_ang-asin(1)), vy1);\\\\nvx3 = if(bounce,sin(ref_ang)*v2*cos(w2-ref_ang) + sin(ref_ang+asin(1))*v1*cos(w1-ref_ang-asin(1)), vx3);\\\\nvy3 = if(bounce,cos(ref_ang)*v2*cos(w2-ref_ang) + cos(ref_ang+asin(1))*v1*cos(w1-ref_ang-asin(1)), vy3);\\\\nbounce = below( sqrt( sqr(x2+vx2-x3-vx3) + sqr(y2+vy2-y3-vy3)), 2*r);\\\\nref_ang = atan2(x3-x2,y3-y2)+asin(1); // common tangent\\\\nv1 = sqrt(vx2*vx2+vy2*vy2);v2 = sqrt(vx3*vx3+vy3*vy3);w1 = atan2(vx2,vy2);w2 = atan2(vx3,vy3);\\\\nvx2 = if(bounce,sin(ref_ang)*v1*cos(w1-ref_ang) + sin(ref_ang+asin(1))*v2*cos(w2-ref_ang-asin(1)), vx2);\\\\nvy2 = if(bounce,cos(ref_ang)*v1*cos(w1-ref_ang) + cos(ref_ang+asin(1))*v2*cos(w2-ref_ang-asin(1)), vy2);\\\\nvx3 = if(bounce,sin(ref_ang)*v2*cos(w2-ref_ang) + sin(ref_ang+asin(1))*v1*cos(w1-ref_ang-asin(1)), vx3);\\\\nvy3 = if(bounce,cos(ref_ang)*v2*cos(w2-ref_ang) + cos(ref_ang+asin(1))*v1*cos(w1-ref_ang-asin(1)), vy3);\\\\nbounce = below( sqrt( sqr(x1+vx1-x4-vx4) + sqr(y1+vy1-y4-vy4)), 2*r);\\\\nref_ang = atan2(x4-x1,y4-y1)+asin(1); // common tangent\\\\nv1 = sqrt(vx1*vx1+vy1*vy1);v2 = sqrt(vx4*vx4+vy4*vy4);w1 = atan2(vx1,vy1);w2 = atan2(vx4,vy4);\\\\nvx1 = if(bounce,sin(ref_ang)*v1*cos(w1-ref_ang) + sin(ref_ang+asin(1))*v2*cos(w2-ref_ang-asin(1)), vx1);\\\\nvy1 = if(bounce,cos(ref_ang)*v1*cos(w1-ref_ang) + cos(ref_ang+asin(1))*v2*cos(w2-ref_ang-asin(1)), vy1);\\\\nvx4 = if(bounce,sin(ref_ang)*v2*cos(w2-ref_ang) + sin(ref_ang+asin(1))*v1*cos(w1-ref_ang-asin(1)), vx4);\\\\nvy4 = if(bounce,cos(ref_ang)*v2*cos(w2-ref_ang) + cos(ref_ang+asin(1))*v1*cos(w1-ref_ang-asin(1)), vy4);\\\\nbounce = below( sqrt( sqr(x2+vx2-x4-vx4) + sqr(y2+vy2-y4-vy4)), 2*r);\\\\nref_ang = atan2(x4-x2,y4-y2)+asin(1); // common tangent\\\\nv1 = sqrt(vx2*vx2+vy2*vy2);v2 = sqrt(vx4*vx4+vy4*vy4);w1 = atan2(vx2,vy2);w2 = atan2(vx4,vy4);\\\\nvx2 = if(bounce,sin(ref_ang)*v1*cos(w1-ref_ang) + sin(ref_ang+asin(1))*v2*cos(w2-ref_ang-asin(1)), vx2);\\\\nvy2 = if(bounce,cos(ref_ang)*v1*cos(w1-ref_ang) + cos(ref_ang+asin(1))*v2*cos(w2-ref_ang-asin(1)), vy2);\\\\nvx4 = if(bounce,sin(ref_ang)*v2*cos(w2-ref_ang) + sin(ref_ang+asin(1))*v1*cos(w1-ref_ang-asin(1)), vx4);\\\\nvy4 = if(bounce,cos(ref_ang)*v2*cos(w2-ref_ang) + cos(ref_ang+asin(1))*v1*cos(w1-ref_ang-asin(1)), vy4);\\\\nbounce = below( sqrt( sqr(x3+vx3-x4-vx4) + sqr(y3+vy3-y4-vy4)), 2*r);\\\\nref_ang = atan2(x4-x3,y4-y3)+asin(1); // common tangent\\\\nv1 = sqrt(vx3*vx3+vy3*vy3);v2 = sqrt(vx4*vx4+vy4*vy4);w1 = atan2(vx3,vy3);w2 = atan2(vx4,vy4);\\\\nvx3 = if(bounce,sin(ref_ang)*v1*cos(w1-ref_ang) + sin(ref_ang+asin(1))*v2*cos(w2-ref_ang-asin(1)), vx3);\\\\nvy3 = if(bounce,cos(ref_ang)*v1*cos(w1-ref_ang) + cos(ref_ang+asin(1))*v2*cos(w2-ref_ang-asin(1)), vy3);\\\\nvx4 = if(bounce,sin(ref_ang)*v2*cos(w2-ref_ang) + sin(ref_ang+asin(1))*v1*cos(w1-ref_ang-asin(1)), vx4);\\\\nvy4 = if(bounce,cos(ref_ang)*v2*cos(w2-ref_ang) + cos(ref_ang+asin(1))*v1*cos(w1-ref_ang-asin(1)), vy4);\\\\n//pogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogo\\\\nq1 = aspectx;\\\\nq2 = aspecty;\\\\nq3 = x1;\\\\nq4 = y1;\\\\nq5 = r;\\\\nq6 = x2;\\\\nq7 = y2;\\\\nq8 = r;\\\\nq9 = x3;\\\\nq10 = y3;\\\\nq11 = r;\\\\nq12 = x4;\\\\nq13 = y4;\\\\nq14 = r;\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\" shader_body { \\\\n vec3 ret_1;\\\\n ret_1.z = (texture (sampler_main, uv).z * 0.5);\\\\n vec2 tmpvar_2;\\\\n tmpvar_2 = ((uv_orig * texsize.xy) * texsize_noise_lq.zw);\\\\n vec2 tmpvar_3;\\\\n tmpvar_3 = (texsize.zw * 4.0);\\\\n vec2 tmpvar_4;\\\\n tmpvar_4.x = (((2.0 * \\\\n ((texture (sampler_blur1, (uv_orig + (vec2(1.0, 0.0) * tmpvar_3))).xyz * scale1) + bias1)\\\\n ) - (2.0 * \\\\n ((texture (sampler_blur1, (uv_orig - (vec2(1.0, 0.0) * tmpvar_3))).xyz * scale1) + bias1)\\\\n )).y * 0.5);\\\\n tmpvar_4.y = (((2.0 * \\\\n ((texture (sampler_blur1, (uv_orig + (vec2(0.0, 1.0) * tmpvar_3))).xyz * scale1) + bias1)\\\\n ) - (2.0 * \\\\n ((texture (sampler_blur1, (uv_orig - (vec2(0.0, 1.0) * tmpvar_3))).xyz * scale1) + bias1)\\\\n )).y * 0.5);\\\\n ret_1.y = texture (sampler_fw_main, clamp ((uv_orig + (\\\\n (tmpvar_4 * texsize.zw)\\\\n * 4.0)), 0.0, 1.0)).y;\\\\n ret_1.y = (ret_1.y + ((\\\\n (ret_1 - ((texture (sampler_blur1, uv_orig).xyz * scale1) + bias1))\\\\n .y * 0.025) + -0.014));\\\\n ret_1.y = (ret_1.y + ((texture (sampler_noise_lq, tmpvar_2).y - 0.5) * 0.02));\\\\n vec2 tmpvar_5;\\\\n tmpvar_5.x = (((2.0 * \\\\n ((texture (sampler_blur1, (uv_orig + (vec2(1.0, 0.0) * tmpvar_3))).xyz * scale1) + bias1)\\\\n ) - (2.0 * \\\\n ((texture (sampler_blur1, (uv_orig - (vec2(1.0, 0.0) * tmpvar_3))).xyz * scale1) + bias1)\\\\n )).x * 0.5);\\\\n tmpvar_5.y = (((2.0 * \\\\n ((texture (sampler_blur1, (uv_orig + (vec2(0.0, 1.0) * tmpvar_3))).xyz * scale1) + bias1)\\\\n ) - (2.0 * \\\\n ((texture (sampler_blur1, (uv_orig - (vec2(0.0, 1.0) * tmpvar_3))).xyz * scale1) + bias1)\\\\n )).x * 0.5);\\\\n ret_1.x = ((texture (sampler_main, (uv - \\\\n ((tmpvar_5 * texsize.zw) * 4.0)\\\\n )).x - (ret_1.y * 0.01)) + 0.004);\\\\n ret_1.x = (ret_1.x + ((\\\\n (texture (sampler_noise_lq, tmpvar_2).x - 0.5)\\\\n * 0.01) + (ret_1.z * 0.14)));\\\\n vec4 tmpvar_6;\\\\n tmpvar_6.w = 1.0;\\\\n tmpvar_6.xyz = ret_1;\\\\n ret = tmpvar_6.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n vec2 tmpvar_1;\\\\n tmpvar_1.x = q3;\\\\n tmpvar_1.y = q4;\\\\n vec2 tmpvar_2;\\\\n tmpvar_2.x = q6;\\\\n tmpvar_2.y = q7;\\\\n vec2 tmpvar_3;\\\\n tmpvar_3.x = q9;\\\\n tmpvar_3.y = q10;\\\\n vec2 tmpvar_4;\\\\n tmpvar_4.x = q12;\\\\n tmpvar_4.y = q13;\\\\n vec2 tmpvar_5;\\\\n tmpvar_5 = (texsize.zw * 1.2);\\\\n vec3 tmpvar_6;\\\\n tmpvar_6 = (texture (sampler_main, (uv + (vec2(1.0, 0.0) * tmpvar_5))).xyz - texture (sampler_main, (uv - (vec2(1.0, 0.0) * tmpvar_5))).xyz);\\\\n vec3 tmpvar_7;\\\\n tmpvar_7 = (texture (sampler_main, (uv + (vec2(0.0, 1.0) * tmpvar_5))).xyz - texture (sampler_main, (uv - (vec2(0.0, 1.0) * tmpvar_5))).xyz);\\\\n vec2 tmpvar_8;\\\\n tmpvar_8.x = dot (tmpvar_6, vec3(0.32, 0.49, 0.29));\\\\n tmpvar_8.y = dot (tmpvar_7, vec3(0.32, 0.49, 0.29));\\\\n vec2 x_9;\\\\n x_9 = ((uv - (tmpvar_8 * 8.0)) - (1.0 - tmpvar_1));\\\\n vec2 tmpvar_10;\\\\n tmpvar_10.x = dot (tmpvar_6, vec3(0.32, 0.49, 0.29));\\\\n tmpvar_10.y = dot (tmpvar_7, vec3(0.32, 0.49, 0.29));\\\\n vec2 x_11;\\\\n x_11 = ((uv - (tmpvar_10 * 8.0)) - (1.0 - tmpvar_2));\\\\n vec2 tmpvar_12;\\\\n tmpvar_12.x = dot (tmpvar_6, vec3(0.32, 0.49, 0.29));\\\\n tmpvar_12.y = dot (tmpvar_7, vec3(0.32, 0.49, 0.29));\\\\n vec2 x_13;\\\\n x_13 = ((uv - (tmpvar_12 * 8.0)) - (1.0 - tmpvar_3));\\\\n vec2 tmpvar_14;\\\\n tmpvar_14.x = dot (tmpvar_6, vec3(0.32, 0.49, 0.29));\\\\n tmpvar_14.y = dot (tmpvar_7, vec3(0.32, 0.49, 0.29));\\\\n vec2 x_15;\\\\n x_15 = ((uv - (tmpvar_14 * 8.0)) - (1.0 - tmpvar_4));\\\\n vec4 tmpvar_16;\\\\n tmpvar_16.w = 1.0;\\\\n tmpvar_16.xyz = (mix (texture (sampler_main, uv).xyz, max (\\\\n max ((vec3((1.0 - pow (\\\\n sqrt(dot (x_9, x_9))\\\\n , 0.2))) * vec3(2.0, 1.0, -1.0)), (vec3((1.0 - pow (\\\\n sqrt(dot (x_11, x_11))\\\\n , 0.2))) * vec3(2.0, -1.0, 1.0)))\\\\n , \\\\n max ((vec3((1.0 - pow (\\\\n sqrt(dot (x_13, x_13))\\\\n , 0.2))) * vec3(-1.0, 1.0, 2.0)), (vec3((1.0 - pow (\\\\n sqrt(dot (x_15, x_15))\\\\n , 0.2))) * vec3(1.0, -1.0, 2.0)))\\\\n ), vec3(0.5, 0.5, 0.5)) * 1.25);\\\\n ret = tmpvar_16.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/flexi + amandio c - organic12-3d-2.json\":\n/*!*******************************************************************!*\\\n !*** ./presets/converted/flexi + amandio c - organic12-3d-2.json ***!\n \\*******************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":4,\\\"gammaadj\\\":1,\\\"decay\\\":0.995,\\\"echo_zoom\\\":1.007,\\\"echo_orient\\\":3,\\\"wave_mode\\\":7,\\\"additivewave\\\":1,\\\"wave_thick\\\":1,\\\"modwavealphabyvolume\\\":1,\\\"wave_brighten\\\":0,\\\"wrap\\\":0,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":0.958,\\\"wave_smoothing\\\":0.45,\\\"modwavealphastart\\\":0,\\\"modwavealphaend\\\":1.32,\\\"warpanimspeed\\\":1.459,\\\"warpscale\\\":2.007,\\\"zoom\\\":0.9999,\\\"warp\\\":0.01,\\\"sx\\\":0.9999,\\\"wave_r\\\":0,\\\"wave_g\\\":0,\\\"wave_b\\\":0,\\\"ob_size\\\":0.05,\\\"ob_g\\\":0.1,\\\"ob_b\\\":1,\\\"ob_a\\\":1,\\\"ib_size\\\":0,\\\"ib_r\\\":0,\\\"ib_g\\\":0,\\\"ib_b\\\":0,\\\"mv_x\\\":25.6,\\\"mv_y\\\":9.6,\\\"mv_l\\\":0,\\\"mv_r\\\":0.5,\\\"mv_g\\\":0.5,\\\"mv_b\\\":0.5,\\\"mv_a\\\":0,\\\"b1ed\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"textured\\\":1,\\\"x\\\":0.09,\\\"y\\\":0.9,\\\"rad\\\":0.22437,\\\"tex_zoom\\\":1.76002,\\\"r2\\\":1,\\\"g2\\\":0,\\\"a2\\\":0.6,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"additive\\\":1,\\\"x\\\":0.26,\\\"y\\\":0.2,\\\"rad\\\":0.39317,\\\"tex_zoom\\\":6.19589,\\\"r\\\":0,\\\"g\\\":0.55,\\\"b\\\":0.5,\\\"g2\\\":0.4,\\\"b2\\\":0.4,\\\"a2\\\":0.07,\\\"border_r\\\":0.3,\\\"border_g\\\":0.7,\\\"border_b\\\":0.8,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sides\\\":44,\\\"additive\\\":1,\\\"x\\\":0.503,\\\"rad\\\":0.03886,\\\"tex_zoom\\\":0.60986,\\\"g\\\":0.1,\\\"a\\\":0.9,\\\"r2\\\":1,\\\"b2\\\":1,\\\"border_r\\\":0.5,\\\"border_g\\\":0.5,\\\"border_b\\\":0.5,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"rad\\\":0.01,\\\"tex_zoom\\\":0.49981,\\\"r\\\":0,\\\"g2\\\":0,\\\"border_r\\\":0.2,\\\"border_g\\\":0.7,\\\"border_b\\\":0.5,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"samples\\\":282,\\\"sep\\\":20,\\\"usedots\\\":1,\\\"thick\\\":1,\\\"additive\\\":1,\\\"scaling\\\":3.91581,\\\"smoothing\\\":0.1,\\\"r\\\":0.2,\\\"g\\\":0.3,\\\"a\\\":0.6,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"usedots\\\":1,\\\"thick\\\":1,\\\"scaling\\\":0.89152,\\\"smoothing\\\":0.82,\\\"a\\\":0.1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"scaling\\\":0.89152,\\\"smoothing\\\":0.82,\\\"r\\\":0,\\\"g\\\":0.2,\\\"b\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"spectrum\\\":1,\\\"usedots\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"//******** INITIALIZATION *********\\\\n//---------- some global vars, do not change -------------\\\\navg = 0.01;\\\\nq7 = .25; //MyZoom\\\\nq8 = rand(2.0)-1.0; //fractal modifier\\\\n//q8 = 1; //#\\\\nq16 = 1 + rand(2); //Tele ; rather fish eye\\\\n//q16 = 1; //#\\\\nq18 = rand(0.8)+.1; //brightness balance back/front\\\\nq30 = 1; //logarithmic Z-Dist storage; unused\\\\nq31 =128;\\\\nstart = 1; travel = 0; RotZ = 0; look = 0; slow = 0; t0 = time+3; lampx = .5; lampy = .5;\\\\ncran0 = rand(1);\\\\nn = 0; loop (10000, gmegabuf(n)=0; n=n+1; ); \\\\nn = 0; loop (10000, megabuf(n)=0; n=n+1; ); \\\\ntrelx = 0; trely = 0; trelz = 0;\\\\nreg20 = 1; reg21 = 0; reg22 = 0; reg23 = 0; reg24 = 1; reg25 = 0; reg26 = 0; reg27 = 0; reg28 = 1;\\\\n\\\\n//Find random starting point\\\\nwhile (exec2(\\\\n ran1 = rand(800)/100; ran2 = rand(800)/100; ran3 = rand(800)/100;\\\\n PosX = rand(5)-2; PosY = rand(5)-2; PosZ = rand(5)-2; \\\\n\\\\n// PosX = 3.3; PosY = 2; PosZ = -2; ran1 = 0; ran2 = 0; ran3 = 0; //#\\\\n\\\\n c1 = cos(ran1); c2 = cos(ran2); c3 = cos(ran3); \\\\n s1 = sin(ran1); s2 = sin(ran2); s3 = sin(ran3);\\\\n\\\\n reg20 = c2*c1; reg21 = c2*s1; reg22 = -s2;\\\\n reg23 = s3*s2*c1 - c3*s1; reg24 = s3*s2*s1 + c3*c1; reg25 = s3*c2;\\\\n reg26 = c3*s2*c1 + s3*s1; reg27 = c3*s2*s1 - s3*c1; reg28 = c3*c2;\\\\n\\\\n //***********BOT*************\\\\n //Coord. Trans. must exactly match def in warp S. !!!!\\\\n dist = 0.001;\\\\n while (exec2(\\\\n uvx = reg26*dist/q7; uvy = reg27*dist/q7; uvz = reg28*dist/q7;\\\\n uvx += PosX; uvy += PosY; uvz += PosZ;\\\\n uvx = 8.0*((uvx/8+30.5 - int(uvx/8+30.5))-.5);\\\\n uvy = 8.0*((uvy/8+30.5 - int(uvy/8+30.5))-.5);\\\\n uvz = 8.0*((uvz/8+30.5 - int(uvz/8+30.5))-.5);\\\\n uvx0 = uvx+q8; uvy0 = uvy+q8; uvz0 = uvz+q8;\\\\n loop (7+1,\\\\n uvx = if (uvx > 1, 2-uvx, if(uvx < -1, -2-uvx, uvx));\\\\n uvy = if (uvy > 1, 2-uvy, if(uvy < -1, -2-uvy, uvy));\\\\n uvz = if (uvz > 1, 2-uvz, if(uvz < -1, -2-uvz, uvz));\\\\n slen = uvx*uvx + uvy*uvy + uvz*uvz;\\\\n uvx = if (slen < 0.25, uvx*4, if (slen < 1, uvx/slen, uvx)) *2.6 + uvx0; \\\\n uvy = if (slen < 0.25, uvy*4, if (slen < 1, uvy/slen, uvy)) *2.6 + uvy0; \\\\n uvz = if (slen < 0.25, uvz*4, if (slen < 1, uvz/slen, uvz)) *2.6 + uvz0; \\\\n );\\\\n len = sqrt(uvx*uvx + uvy*uvy + uvz*uvz);\\\\n dist *= 1.05;\\\\n ,(dist < 0.6)*(len > 30)));\\\\n,(dist < .06))); //end while\\\",\\\"frame_eqs_eel\\\":\\\"fps_ = .0 * fps_ + 1*if(fps<=25,fps,25+.5*(fps-25)); \\\\ndec_s = 1-.06*30/fps_;\\\\nbeat = (time > t0+3); t0 = if(beat, time, t0);\\\\n\\\\nspeed = min(0.2,dist_-.02) * (1+2*avg) *(1-slow*.0)*.7/q7; //#\\\\nds = ds * dec_s + (1-dec_s)*speed*.25/fps_; \\\\nRotZ = if (RotZ==0,beat*(rand(100)<20*travel)*(rand(10)/10-.3),\\\\n bnot(beat*(rand(100)<30))*RotZ);\\\\nslow = if (bnot(slow), beat*(rand(1000*avg)<6), bnot(beat*(rand(100)<50)));\\\\nlook = if (bnot(look), beat*(rand(1000*speed)<12), bnot(beat*(rand(100)<50)));\\\\n\\\\n//Lamp View\\\\nlx = if (beat,rand(150)/200+.15,lx);\\\\nly = if (beat,rand(150)/200+.15,ly);\\\\nlampx = lampx * dec_s + (1-dec_s)*if (look,lx,0.5);\\\\nlampy = lampy * dec_s + (1-dec_s)*if (look,ly,0.5);\\\\nq1 = lampx; q2 = lampy;\\\\n\\\\n//Position \\\\nDirX= reg26; DirY= reg27; DirZ = reg28;\\\\nPosX = PosX + ds*DirX ; PosY = PosY + ds*DirY; PosZ = PosZ + ds*DirZ; \\\\nq4 = PosX; q5 = PosY; q6 = PosZ;\\\\n\\\\nangchg = (.2-dist_)*(dist_ < .2)*2;\\\\ntravel = if (angchg > 0,0,travel+ds);\\\\nv1 = v1 * dec_s + (1-dec_s)* RotZ * ds;\\\\nv2 = v2 *dec_s + (1-dec_s)*angchg *xslope/fps_;\\\\nv3 = v3 *dec_s + (1-dec_s)*(angchg *yslope/fps_ + 2*v1*sin(time*.1));\\\\n//v2 = .008;\\\\n//push old RotMat\\\\nreg30 =reg20; reg31 =reg21; reg32 =reg22; \\\\nreg33 =reg23; reg34 =reg24; reg35 =reg25; \\\\nreg36 =reg26; reg37 =reg27; reg38 =reg28; \\\\n\\\\nn = 0; avg = 0;\\\\nloop (5,\\\\n n = n+1;\\\\n //new Rot. Mat for infinitesimal angles\\\\n ran1 = rand(100)/100;\\\\n ran2 = rand(100)/200-.25;\\\\n tx = cos(n*1.57+ran2) * (n <= 4)*ran1; ty = sin(n*1.57+ran2) * (n <= 4)*ran1;\\\\n c1 = cos(v1); c2 = cos(v2+ty); c3 = cos(v3+tx); \\\\n s1 = sin(v1); s2 = sin(v2+ty); s3 = sin(v3+tx);\\\\n reg10 = c2*c1; reg11 = c2*s1; reg12 = -s2;\\\\n reg13 = s3*s2*c1 - c3*s1; reg14 = s3*s2*s1 + c3*c1; reg15 = s3*c2;\\\\n reg16 = c3*s2*c1 + s3*s1; reg17 = c3*s2*s1 - s3*c1; reg18 = c3*c2;\\\\n\\\\n //pop old RotMat\\\\n reg20 =reg30; reg21 =reg31; reg22 =reg32; \\\\n reg23 =reg33; reg24 =reg34; reg25 =reg35; \\\\n reg26 =reg36; reg27 =reg37; reg28 =reg38; \\\\n\\\\n //Multiply new RotMat by old one\\\\n q20 = reg10*reg20 + reg11*reg23 + reg12*reg26;\\\\n q21 = reg10*reg21 + reg11*reg24 + reg12*reg27;\\\\n q22 = reg10*reg22 + reg11*reg25 + reg12*reg28;\\\\n q23 = reg13*reg20 + reg14*reg23 + reg15*reg26;\\\\n q24 = reg13*reg21 + reg14*reg24 + reg15*reg27;\\\\n q25 = reg13*reg22 + reg14*reg25 + reg15*reg28;\\\\n q26 = reg16*reg20 + reg17*reg23 + reg18*reg26;\\\\n q27 = reg16*reg21 + reg17*reg24 + reg18*reg27;\\\\n q28 = reg16*reg22 + reg17*reg25 + reg18*reg28;\\\\n\\\\n reg20 =q20; reg21 =q21; reg22 =q22;\\\\n reg23 =q23; reg24 =q24; reg25 =q25;\\\\n reg26 =q26; reg27 =q27; reg28 =q28;\\\\n\\\\n //***********BOT*************\\\\n //Coord. Trans. must exactly match def in warp S. !!!!\\\\n dist = 0.002;\\\\n while (exec2(\\\\n uvx = reg26*dist/q7; uvy = reg27*dist/q7; uvz = reg28*dist/q7;\\\\n uvx += PosX; uvy += PosY; uvz += PosZ;\\\\n uvx = 8.0*((uvx/8+30.5 - int(uvx/8+30.5))-.5);\\\\n uvy = 8.0*((uvy/8+30.5 - int(uvy/8+30.5))-.5);\\\\n uvz = 8.0*((uvz/8+30.5 - int(uvz/8+30.5))-.5);\\\\n uvx0 = uvx+q8; uvy0 = uvy+q8; uvz0 = uvz+q8;\\\\n loop (7+1,\\\\n uvx = if (uvx > 1, 2-uvx, if(uvx < -1, -2-uvx, uvx));\\\\n uvy = if (uvy > 1, 2-uvy, if(uvy < -1, -2-uvy, uvy));\\\\n uvz = if (uvz > 1, 2-uvz, if(uvz < -1, -2-uvz, uvz));\\\\n slen = uvx*uvx + uvy*uvy + uvz*uvz;\\\\n uvx = if (slen < 0.25, uvx*4, if (slen < 1, uvx/slen, uvx)) *2.6 + uvx0; \\\\n uvy = if (slen < 0.25, uvy*4, if (slen < 1, uvy/slen, uvy)) *2.6 + uvy0; \\\\n uvz = if (slen < 0.25, uvz*4, if (slen < 1, uvz/slen, uvz)) *2.6 + uvz0; \\\\n );\\\\n len = sqrt(uvx*uvx + uvy*uvy + uvz*uvz);\\\\n dist *= 1.1;\\\\n ,(dist < 0.6)*(len > 30)));\\\\n megabuf(n) = megabuf(n)*dec_s + (1-dec_s)*dist; //stores the 4 trial points\\\\n avg = avg+abs(megabuf(n)/5);\\\\n); //end loop 5\\\\n\\\\nn = 0; avg = 0; loop (5, n=n+1; avg = avg+abs(megabuf(n)/5));\\\\n\\\\nxslope = min(max(2/avg*(megabuf(1)-megabuf(3)),-3),3);\\\\nyslope = min(max(2/avg*(megabuf(4)-megabuf(2)),-3),3);\\\\nmonitor = avg;\\\\ndist_ = dist_*dec_s + (1-dec_s)*dist;\\\\n\\\\nq10 = ds*q7; //compensation of lin. movement in GetDist and zoom uv\\\\nq14 = 1*abs(ds) + 2*(abs(v1) + abs(v2) + abs(v3)) + 1.0/255 + start*.05; \\\\nq19 = .6 + .4*sin(time*.02+cran0*6); //brightness backgd\\\\nstart = start * .9;\\\\nq11 = v1; q12 = v2; q13 = v3;\\\\n//forward comp. of Rotation\\\\nmonitor = q16;\\\\n\\\\n\\\\nbb = bb*0.99 + bass*0.02;\\\\nmm = mm*0.99 + mid*0.02;\\\\ntt = tt*0.99 + treb*0.02;\\\\n\\\\nmx = max(max(bb,mm),tt);\\\\nmn = min(min(bb,mm),tt);\\\\n\\\\nh1 = (bb-mn)/(mx-mn);\\\\nh2 = (mm-mn)/(mx-mn);\\\\nh3 = (tt-mn)/(mx-mn);\\\\n\\\\nv = 0.1333/fps;\\\\nbm = bm + (h1-h2)*v;\\\\nmt = mt + (h2-h3)*v;\\\\nbt = bt + (h1-h3)*v;\\\\n\\\\nw = bm*2;\\\\nq3 = sin(w);\\\\nq9 = cos(w);\\\\n\\\\n\\\\nq17 = bm;\\\\nq18 = mt;\\\\nq19 = bt;\\\",\\\"pixel_eqs_eel\\\":\\\"warp = 0.0; zoom = 1; dx = -q12/q16*(1+0*pow(x-.5,2)); dy = q13/q16*(1+0*pow(y-.5,2)); rot =q11;\\\",\\\"warp\\\":\\\"float sustain;\\\\nfloat xlat_mutabledist;\\\\nfloat xlat_mutablestruc;\\\\nvec2 xlat_mutableuv1;\\\\nvec3 xlat_mutableuv2;\\\\n shader_body { \\\\n mat3 tmpvar_1;\\\\n tmpvar_1[uint(0)].x = q20;\\\\n tmpvar_1[uint(0)].y = q23;\\\\n tmpvar_1[uint(0)].z = q26;\\\\n tmpvar_1[1u].x = q21;\\\\n tmpvar_1[1u].y = q24;\\\\n tmpvar_1[1u].z = q27;\\\\n tmpvar_1[2u].x = q22;\\\\n tmpvar_1[2u].y = q25;\\\\n tmpvar_1[2u].z = q28;\\\\n vec3 tmpvar_2;\\\\n tmpvar_2.x = q4;\\\\n tmpvar_2.y = q5;\\\\n tmpvar_2.z = q6;\\\\n sustain = (1.0123 - q14);\\\\n vec2 uv_3;\\\\n vec3 ret_4;\\\\n vec2 tmpvar_5;\\\\n tmpvar_5 = (uv - 0.5);\\\\n xlat_mutableuv1 = ((tmpvar_5 * aspect.xy) * q16);\\\\n vec4 tmpvar_6;\\\\n tmpvar_6 = texture (sampler_pc_main, uv);\\\\n uv_3 = ((tmpvar_5 * (1.0 - \\\\n (q10 / (1.0 - ((tmpvar_6.z + \\\\n (0.003921569 * tmpvar_6.y)\\\\n ) + (q10 * 0.7))))\\\\n )) + 0.5);\\\\n vec4 tmpvar_7;\\\\n tmpvar_7 = fract((8.0 * texture (sampler_noise_lq, (uv_3 + rand_frame.yz))));\\\\n xlat_mutabledist = tmpvar_7.x;\\\\n if ((tmpvar_7.y > 0.2)) {\\\\n vec3 tmpvar_8;\\\\n tmpvar_8 = (tmpvar_7.xyz - vec3(0.4, 0.5, 0.5));\\\\n vec2 uvi_9;\\\\n uvi_9 = ((tmpvar_8.zy * 0.003) + uv_3);\\\\n vec2 pix_10;\\\\n vec4 nb2_11;\\\\n vec4 nb_12;\\\\n vec2 x_13;\\\\n x_13 = (uvi_9 - 0.5);\\\\n pix_10 = (texsize.zw * (1.0 + (\\\\n sqrt(dot (x_13, x_13))\\\\n * 8.0)));\\\\n float tmpvar_14;\\\\n tmpvar_14 = (q10 * 0.7);\\\\n vec4 tmpvar_15;\\\\n tmpvar_15 = texture (sampler_pc_main, (uvi_9 - pix_10));\\\\n nb_12.x = (1.0 - ((tmpvar_15.z + \\\\n (0.003921569 * tmpvar_15.y)\\\\n ) + tmpvar_14));\\\\n vec4 tmpvar_16;\\\\n tmpvar_16 = texture (sampler_pc_main, (uvi_9 + (pix_10 * vec2(1.0, -1.0))));\\\\n nb_12.y = (1.0 - ((tmpvar_16.z + \\\\n (0.003921569 * tmpvar_16.y)\\\\n ) + tmpvar_14));\\\\n vec4 tmpvar_17;\\\\n tmpvar_17 = texture (sampler_pc_main, (uvi_9 + pix_10));\\\\n nb_12.z = (1.0 - ((tmpvar_17.z + \\\\n (0.003921569 * tmpvar_17.y)\\\\n ) + tmpvar_14));\\\\n vec4 tmpvar_18;\\\\n tmpvar_18 = texture (sampler_pc_main, (uvi_9 + (pix_10 * vec2(-1.0, 1.0))));\\\\n nb_12.w = (1.0 - ((tmpvar_18.z + \\\\n (0.003921569 * tmpvar_18.y)\\\\n ) + tmpvar_14));\\\\n vec4 tmpvar_19;\\\\n tmpvar_19 = texture (sampler_pc_main, (uvi_9 + (pix_10 * vec2(0.0, -1.0))));\\\\n nb2_11.x = (1.0 - ((tmpvar_19.z + \\\\n (0.003921569 * tmpvar_19.y)\\\\n ) + tmpvar_14));\\\\n vec4 tmpvar_20;\\\\n tmpvar_20 = texture (sampler_pc_main, (uvi_9 + (pix_10 * vec2(1.0, 0.0))));\\\\n nb2_11.y = (1.0 - ((tmpvar_20.z + \\\\n (0.003921569 * tmpvar_20.y)\\\\n ) + tmpvar_14));\\\\n vec4 tmpvar_21;\\\\n tmpvar_21 = texture (sampler_pc_main, (uvi_9 + (pix_10 * vec2(0.0, 1.0))));\\\\n nb2_11.z = (1.0 - ((tmpvar_21.z + \\\\n (0.003921569 * tmpvar_21.y)\\\\n ) + tmpvar_14));\\\\n vec4 tmpvar_22;\\\\n tmpvar_22 = texture (sampler_pc_main, (uvi_9 + (pix_10 * vec2(-1.0, 0.0))));\\\\n nb2_11.w = (1.0 - ((tmpvar_22.z + \\\\n (0.003921569 * tmpvar_22.y)\\\\n ) + tmpvar_14));\\\\n vec4 tmpvar_23;\\\\n tmpvar_23 = min (nb_12, nb2_11);\\\\n nb_12.zw = tmpvar_23.zw;\\\\n nb_12.xy = min (tmpvar_23.xy, tmpvar_23.zw);\\\\n xlat_mutabledist = (min (nb_12.x, nb_12.y) + ((0.008 * tmpvar_8.x) * abs(tmpvar_8.y)));\\\\n };\\\\n vec4 tmpvar_24;\\\\n tmpvar_24 = texture (sampler_pc_main, uv_3);\\\\n float tmpvar_25;\\\\n tmpvar_25 = min (xlat_mutabledist, (1.0 - (\\\\n (tmpvar_24.z + (0.003921569 * tmpvar_24.y))\\\\n + \\\\n (q10 * 0.7)\\\\n )));\\\\n xlat_mutabledist = tmpvar_25;\\\\n float tmpvar_26;\\\\n tmpvar_26 = (tmpvar_25 + pow (tmpvar_25, 3.0));\\\\n vec3 tmpvar_27;\\\\n tmpvar_27.xy = (xlat_mutableuv1 * tmpvar_26);\\\\n tmpvar_27.z = tmpvar_26;\\\\n xlat_mutableuv2 = (((tmpvar_27 / q7) * tmpvar_1) + tmpvar_2);\\\\n xlat_mutableuv2 = ((fract(\\\\n ((xlat_mutableuv2 / 8.0) + 0.5)\\\\n ) - 0.5) * 8.0);\\\\n float li_28;\\\\n vec3 zz0_29;\\\\n vec3 zz_30;\\\\n zz0_29 = (xlat_mutableuv2 + q8);\\\\n li_28 = 0.0;\\\\n zz_30 = ((2.0 * clamp (xlat_mutableuv2, vec3(-1.0, -1.0, -1.0), vec3(1.0, 1.0, 1.0))) - xlat_mutableuv2);\\\\n float tmpvar_31;\\\\n tmpvar_31 = dot (zz_30, zz_30);\\\\n if ((tmpvar_31 <= 0.25)) {\\\\n zz_30 = (zz_30 * 4.0);\\\\n li_28 = 24.0;\\\\n } else {\\\\n if ((tmpvar_31 <= 1.0)) {\\\\n zz_30 = (zz_30 / tmpvar_31);\\\\n };\\\\n };\\\\n zz_30 = ((2.6 * zz_30) + zz0_29);\\\\n zz_30 = ((2.0 * clamp (zz_30, vec3(-1.0, -1.0, -1.0), vec3(1.0, 1.0, 1.0))) - zz_30);\\\\n float tmpvar_32;\\\\n tmpvar_32 = dot (zz_30, zz_30);\\\\n if ((tmpvar_32 <= 0.25)) {\\\\n zz_30 = (zz_30 * 4.0);\\\\n li_28 = 24.0;\\\\n } else {\\\\n if ((tmpvar_32 <= 1.0)) {\\\\n zz_30 = (zz_30 / tmpvar_32);\\\\n };\\\\n };\\\\n zz_30 = ((2.6 * zz_30) + zz0_29);\\\\n zz_30 = ((2.0 * clamp (zz_30, vec3(-1.0, -1.0, -1.0), vec3(1.0, 1.0, 1.0))) - zz_30);\\\\n float tmpvar_33;\\\\n tmpvar_33 = dot (zz_30, zz_30);\\\\n if ((tmpvar_33 <= 0.25)) {\\\\n zz_30 = (zz_30 * 4.0);\\\\n li_28 = 24.0;\\\\n } else {\\\\n if ((tmpvar_33 <= 1.0)) {\\\\n zz_30 = (zz_30 / tmpvar_33);\\\\n };\\\\n };\\\\n zz_30 = ((2.6 * zz_30) + zz0_29);\\\\n zz_30 = ((2.0 * clamp (zz_30, vec3(-1.0, -1.0, -1.0), vec3(1.0, 1.0, 1.0))) - zz_30);\\\\n float tmpvar_34;\\\\n tmpvar_34 = dot (zz_30, zz_30);\\\\n if ((tmpvar_34 <= 0.25)) {\\\\n zz_30 = (zz_30 * 4.0);\\\\n li_28 = 24.0;\\\\n } else {\\\\n if ((tmpvar_34 <= 1.0)) {\\\\n zz_30 = (zz_30 / tmpvar_34);\\\\n };\\\\n };\\\\n zz_30 = ((2.6 * zz_30) + zz0_29);\\\\n zz_30 = ((2.0 * clamp (zz_30, vec3(-1.0, -1.0, -1.0), vec3(1.0, 1.0, 1.0))) - zz_30);\\\\n float tmpvar_35;\\\\n tmpvar_35 = dot (zz_30, zz_30);\\\\n if ((tmpvar_35 <= 0.25)) {\\\\n zz_30 = (zz_30 * 4.0);\\\\n li_28 = 24.0;\\\\n } else {\\\\n if ((tmpvar_35 <= 1.0)) {\\\\n zz_30 = (zz_30 / tmpvar_35);\\\\n };\\\\n };\\\\n zz_30 = ((2.6 * zz_30) + zz0_29);\\\\n zz_30 = ((2.0 * clamp (zz_30, vec3(-1.0, -1.0, -1.0), vec3(1.0, 1.0, 1.0))) - zz_30);\\\\n float tmpvar_36;\\\\n tmpvar_36 = dot (zz_30, zz_30);\\\\n if ((tmpvar_36 <= 0.25)) {\\\\n zz_30 = (zz_30 * 4.0);\\\\n li_28 = 24.0;\\\\n } else {\\\\n if ((tmpvar_36 <= 1.0)) {\\\\n zz_30 = (zz_30 / tmpvar_36);\\\\n };\\\\n };\\\\n zz_30 = ((2.6 * zz_30) + zz0_29);\\\\n zz_30 = ((2.0 * clamp (zz_30, vec3(-1.0, -1.0, -1.0), vec3(1.0, 1.0, 1.0))) - zz_30);\\\\n float tmpvar_37;\\\\n tmpvar_37 = dot (zz_30, zz_30);\\\\n if ((tmpvar_37 <= 0.25)) {\\\\n zz_30 = (zz_30 * 4.0);\\\\n li_28 = 24.0;\\\\n } else {\\\\n if ((tmpvar_37 <= 1.0)) {\\\\n zz_30 = (zz_30 / tmpvar_37);\\\\n };\\\\n };\\\\n zz_30 = ((2.6 * zz_30) + zz0_29);\\\\n zz_30 = ((2.0 * clamp (zz_30, vec3(-1.0, -1.0, -1.0), vec3(1.0, 1.0, 1.0))) - zz_30);\\\\n float tmpvar_38;\\\\n tmpvar_38 = dot (zz_30, zz_30);\\\\n if ((tmpvar_38 <= 0.25)) {\\\\n zz_30 = (zz_30 * 4.0);\\\\n li_28 = 24.0;\\\\n } else {\\\\n if ((tmpvar_38 <= 1.0)) {\\\\n zz_30 = (zz_30 / tmpvar_38);\\\\n };\\\\n };\\\\n zz_30 = ((2.6 * zz_30) + zz0_29);\\\\n vec4 tmpvar_39;\\\\n tmpvar_39.xyz = zz_30;\\\\n tmpvar_39.w = li_28;\\\\n float tmpvar_40;\\\\n tmpvar_40 = sqrt(dot (zz_30, zz_30));\\\\n xlat_mutablestruc = (sqrt(dot (tmpvar_39.xyw, tmpvar_39.xyw)) / 24.0);\\\\n vec4 tmpvar_41;\\\\n tmpvar_41 = texture (sampler_pc_main, uv_3);\\\\n float tmpvar_42;\\\\n float tmpvar_43;\\\\n tmpvar_43 = (q10 * 0.7);\\\\n tmpvar_42 = ((log(\\\\n (1.0 + (tmpvar_40 / 24.0))\\\\n ) * 0.02) * (1.0 - (1.0 - \\\\n ((tmpvar_41.z + (0.003921569 * tmpvar_41.y)) + tmpvar_43)\\\\n )));\\\\n float tmpvar_44;\\\\n vec4 tmpvar_45;\\\\n tmpvar_45 = texture (sampler_pc_main, uv_3);\\\\n tmpvar_44 = (1.0 - ((tmpvar_45.z + \\\\n (0.003921569 * tmpvar_45.y)\\\\n ) + tmpvar_43));\\\\n if ((((tmpvar_25 <= tmpvar_44) && (tmpvar_40 < 24.0)) && (tmpvar_25 > 0.005))) {\\\\n ret_4.x = (((1.0 - sustain) * xlat_mutablestruc) + (sustain * mix (texture (sampler_main, uv_3).xyz, \\\\n ((texture (sampler_blur1, uv_3).xyz * scale1) + bias1)\\\\n , vec3(\\\\n (q14 * 4.0)\\\\n )).x));\\\\n float x_46;\\\\n x_46 = ((1.0 - tmpvar_25) * 255.0);\\\\n float ip_47;\\\\n ip_47 = float(int(x_46));\\\\n vec2 tmpvar_48;\\\\n tmpvar_48.x = (x_46 - ip_47);\\\\n tmpvar_48.y = (ip_47 / 255.0);\\\\n ret_4.yz = tmpvar_48;\\\\n } else {\\\\n vec3 tmpvar_49;\\\\n tmpvar_49.y = 0.0;\\\\n tmpvar_49.x = sustain;\\\\n tmpvar_49.z = (1.0 - tmpvar_42);\\\\n vec3 tmpvar_50;\\\\n tmpvar_50.xy = vec2(0.003921569, 0.0);\\\\n tmpvar_50.z = (q14 / 6.0);\\\\n ret_4 = ((texture (sampler_fc_main, uv_3).xyz * tmpvar_49) - tmpvar_50);\\\\n };\\\\n vec4 tmpvar_51;\\\\n tmpvar_51.w = 1.0;\\\\n tmpvar_51.xyz = ret_4;\\\\n ret = tmpvar_51.xyz;\\\\n }\\\",\\\"comp\\\":\\\"vec2 xlat_mutabled;\\\\nvec3 xlat_mutabledx;\\\\nvec3 xlat_mutabledy;\\\\n shader_body { \\\\n vec3 ret_1;\\\\n xlat_mutabled = (texsize.zw * 1.5);\\\\n xlat_mutabledx = (texture (sampler_main, (uv_orig + (vec2(1.0, 0.0) * xlat_mutabled))).xyz - texture (sampler_main, (uv_orig - (vec2(1.0, 0.0) * xlat_mutabled))).xyz);\\\\n xlat_mutabledy = (texture (sampler_main, (uv_orig + (vec2(0.0, 1.0) * xlat_mutabled))).xyz - texture (sampler_main, (uv_orig - (vec2(0.0, 1.0) * xlat_mutabled))).xyz);\\\\n vec2 tmpvar_2;\\\\n tmpvar_2.x = xlat_mutabledx.y;\\\\n tmpvar_2.y = xlat_mutabledy.y;\\\\n vec2 x_3;\\\\n x_3 = (tmpvar_2 * 8.0);\\\\n ret_1 = (((texture (sampler_main, uv).x * \\\\n (1.0 - sqrt(dot (x_3, x_3)))\\\\n ) * pow (hue_shader, vec3(6.0, 6.0, 6.0))) * 1.4);\\\\n vec2 tmpvar_4;\\\\n tmpvar_4.x = xlat_mutabledx.z;\\\\n tmpvar_4.y = xlat_mutabledy.z;\\\\n vec2 x_5;\\\\n x_5 = (tmpvar_4 * 4.0);\\\\n vec3 tmpvar_6;\\\\n tmpvar_6 = mix (ret_1, vec3(1.0, 1.0, 1.0), vec3(sqrt(dot (x_5, x_5))));\\\\n ret_1 = tmpvar_6;\\\\n vec4 tmpvar_7;\\\\n tmpvar_7.w = 1.0;\\\\n tmpvar_7.xyz = tmpvar_6;\\\\n ret = tmpvar_7.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/flexi + fishbrain - neon mindblob grafitti.json\":\n/*!***************************************************************************!*\\\n !*** ./presets/converted/flexi + fishbrain - neon mindblob grafitti.json ***!\n \\***************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":5,\\\"gammaadj\\\":1,\\\"decay\\\":0.955,\\\"echo_zoom\\\":0.997,\\\"echo_alpha\\\":0.5,\\\"wave_mode\\\":7,\\\"additivewave\\\":1,\\\"modwavealphabyvolume\\\":1,\\\"wave_brighten\\\":0,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":0.49,\\\"wave_smoothing\\\":0,\\\"modwavealphastart\\\":0.71,\\\"modwavealphaend\\\":1.3,\\\"warpscale\\\":16.016,\\\"zoomexp\\\":11.56276,\\\"fshader\\\":1,\\\"zoom\\\":1.05971,\\\"warp\\\":0.13126,\\\"wave_r\\\":0.65,\\\"wave_g\\\":0.65,\\\"wave_b\\\":0.65,\\\"ob_size\\\":0,\\\"ob_a\\\":1,\\\"ib_size\\\":0,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":0,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":14,\\\"additive\\\":1,\\\"num_inst\\\":126,\\\"rad\\\":0.0303,\\\"tex_ang\\\":0.62832,\\\"r\\\":0,\\\"b\\\":1,\\\"g2\\\":0,\\\"b2\\\":1,\\\"a2\\\":1,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"ma=ma+(above(bass,1)*3.1415*.01*bass);\\\\nma=ma-(above(treb,1)*3.1415*.01*treb);\\\\n\\\\nmx=mx+(.0002*cos(ma));\\\\nmy=my+(.0002*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.8));\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":14,\\\"additive\\\":1,\\\"num_inst\\\":128,\\\"rad\\\":0.03,\\\"tex_ang\\\":0.62832,\\\"r\\\":0,\\\"b\\\":1,\\\"g2\\\":0,\\\"b2\\\":1,\\\"a2\\\":1,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"ma=ma+(above(bass,1)*3.1415*.05*bass);\\\\nma=ma-(above(mid,1)*3.1415*.05*mid);\\\\n\\\\nmx=mx+(.0001*cos(ma));\\\\nmy=my+(.0001*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.1));\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":14,\\\"additive\\\":1,\\\"num_inst\\\":32,\\\"rad\\\":0.0297,\\\"tex_ang\\\":0.62832,\\\"r\\\":0,\\\"b\\\":1,\\\"g2\\\":0,\\\"b2\\\":1,\\\"a2\\\":1,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"ma=ma+(above(mid,1)*3.1415*.01*mid);\\\\nma=ma-(above(treb,1)*3.1415*.01*treb);\\\\n\\\\nmx=mx+(.0004*cos(ma));\\\\nmy=my+(.0004*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.3));\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":14,\\\"additive\\\":1,\\\"num_inst\\\":16,\\\"rad\\\":0.0303,\\\"tex_ang\\\":0.62832,\\\"r\\\":0,\\\"b\\\":1,\\\"g2\\\":0,\\\"b2\\\":1,\\\"a2\\\":1,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"ma=ma+(above(bass,.5)*3.1415*.02*bass);\\\\nma=ma-(above(treb,.5)*3.1415*.02*treb);\\\\n\\\\nmx=mx+(.0008*cos(ma));\\\\nmy=my+(.0008*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.2));\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"thick\\\":1,\\\"additive\\\":1,\\\"scaling\\\":2.0231,\\\"smoothing\\\":0,\\\"r\\\":0,\\\"b\\\":0},\\\"init_eqs_eel\\\":\\\"t2 = 0;\\\\nt3 = 0;\\\\nt4 = 0;\\\\ncl = 0;\\\",\\\"frame_eqs_eel\\\":\\\"vol = bass*8 + mid*5 + treb*3;\\\\nm = m*0.97 + vol*0.08;\\\\nmonitor = vol;\\\\nbeat = above(vol,res)*above(vol,m)*above(vol,16);\\\\ndiff = (1-beat)*diff + beat*(vol-res);\\\\nres = beat*(vol + m*0.04) + (1-beat)*(res - (0.1+diff*0.02)*60/fps);\\\\nres = max(0,res);\\\\n\\\\na = beat;\\\",\\\"point_eqs_eel\\\":\\\"tt3 = tt3*0.6 + (value1)*1;\\\\ntt2 = tt2*0.7 + tt3*0.2;\\\\ntt1 = tt1*0.8 + tt2*0.1;\\\\nd = d*0.9 + tt1*0.2;\\\\n\\\\ny = 0.5 + d*sample*(1-sample)*4;\\\\nx = -0.05 + sample*1.1;\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"ma=ma+(above(bass,1)*3.1415*.05*bass);\\\\nma=ma-(above(mid,1)*3.1415*.05*mid);\\\\n\\\\nmx=mx+(.0001*cos(ma));\\\\nmy=my+(.0001*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.1));\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"ma=ma+(above(mid,1)*3.1415*.01*mid);\\\\nma=ma-(above(treb,1)*3.1415*.01*treb);\\\\n\\\\nmx=mx+(.0004*cos(ma));\\\\nmy=my+(.0004*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.3));\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"ma=ma+(above(bass,.5)*3.1415*.02*bass);\\\\nma=ma-(above(treb,.5)*3.1415*.02*treb);\\\\n\\\\nmx=mx+(.0008*cos(ma));\\\\nmy=my+(.0008*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.2));\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"xx1 = xx1*0.9 + (bass)*0.01;\\\\nxx2 = xx2*0.9 + (treb)*0.01;\\\\nyy1 = yy1*0.94 + (treb+bass)*0.0075;\\\\n\\\\nx1 = 0.5 + (xx1-xx2)*2;\\\\ny1 = 0.4 + yy1;\\\\n\\\\nx1 = max(0,min(1,x1)); y1 = max(0,min(1,y1));\\\\n\\\\nspring = 10;\\\\ngrav = .5;\\\\nresist = 1;\\\\nbounce = 0.75;\\\\ndt = 0.0005*(60/fps);\\\\n\\\\nvx2 = vx2*(1-resist*dt) + dt*((x1+x3-2*x2)*spring);\\\\nvy2 = vy2*(1-resist*dt) + dt*((y1+y3-2*y2)*spring-grav);\\\\nvx3 = vx3*(1-resist*dt) + dt*((x2+x4-2*x3)*spring);\\\\nvy3 = vy3*(1-resist*dt) + dt*((y2+y4-2*y3)*spring-grav);\\\\nvx4 = vx4*(1-resist*dt) + dt*((x3-x4)*spring);\\\\nvy4 = vy4*(1-resist*dt) + dt*((y3-y4)*spring-grav);\\\\n\\\\nx2 = x2 + vx2;\\\\ny2 = y2 + vy2;\\\\nx3 = x3 + vx3;\\\\ny3 = y3 + vy3;\\\\nx4 = x4 + vx4;\\\\ny4 = y4 + vy4;\\\\n\\\\nvx2 = if(above(x2,0),vx2,abs(vx2)*bounce);\\\\nvx2 = if(below(x2,1),vx2,-abs(vx2)*bounce);\\\\nvx3 = if(above(x3,0),vx3,abs(vx3)*bounce);\\\\nvx3 = if(below(x3,1),vx3,-abs(vx3)*bounce);\\\\nvx4 = if(above(x4,0),vx4,abs(vx4)*bounce);\\\\nvx4 = if(below(x4,1),vx4,-abs(vx4)*bounce);\\\\nvy2 = if(above(y2,0),vy2,abs(vy2)*bounce);\\\\nvy2 = if(below(y2,1),vy2,-abs(vy2)*bounce);\\\\nvy3 = if(above(y3,0),vy3,abs(vy3)*bounce);\\\\nvy3 = if(below(y3,1),vy3,-abs(vy3)*bounce);\\\\nvy4 = if(above(y4,0),vy4,abs(vy4)*bounce);\\\\nvy4 = if(below(y4,1),vy4,-abs(vy4)*bounce);\\\\n\\\\n\\\\nq1 = x1; q2 = x2; q3 = x3; q4 = x4;\\\\nq5 = y1; q6 = y2; q7 = y3; q8 = y4;\\\\nq9 =1/ aspectX;\\\\nq10 = 1/aspectY;\\\\n\\\\nzoom = 1;\\\\nr = r*0.96 +(x1-0.5);\\\\nrot = (r*0.1);\\\\n\\\\nq12 = atan2(vx4,vy4);\\\\nq11 = sqrt(vx4*vx4 + vy4*vy4);\\\\n\\\\nzoom = 1.001;\\\\nrot = 0.00;\\\\nwarp = 0.2;\\\\nwave_a = 0;\\\",\\\"pixel_eqs_eel\\\":\\\"dir = -q12*1 + asin(1)*1;\\\\n\\\\nb1 = 0.1; // distance\\\\nm1 = q11*25;//-0.6 + q5*200; // size\\\\nt1 = 0.05; // velocity\\\\n\\\\nxx = q4;\\\\nyy = 1-q8;\\\\n\\\\n\\\\nx1 = xx +cos(dir+1.5708)*b1;\\\\ny1 = yy -sin(dir+1.5708)*b1;\\\\n\\\\nx2 = xx -cos(dir+1.5708)*b1;\\\\ny2 = yy +sin(dir+1.5708)*b1;\\\\n\\\\nd1 = sqrt((x1-x)*(x1-x)+(y1-y)*(y1-y))-b1*2;\\\\nsi1 = 1- 1/(1+pow(2,-d1*1000));\\\\n\\\\nd2 = sqrt((x2-x)*(x2-x)+(y2-y)*(y2-y))-b1*2;\\\\nsi2 = 1- 1/(1+pow(2,-d2*1000));\\\\n\\\\nsi3 = -pow(q5,3)*00;\\\\n\\\\ndx = (si1*sin(y1-y)*m1*d1 - si2*sin(y2-y)*m1*d2 + si3*cos(dir)*t1)*2;\\\\ndy = (-si1*sin(x1-x)*m1*d1 + si2*sin(x2-x)*m1*d2 - si3*sin(dir)*t1)*2;\\\",\\\"warp\\\":\\\" shader_body { \\\\n vec3 ret_1;\\\\n vec2 tmpvar_2;\\\\n tmpvar_2 = (texsize.zw * 8.0);\\\\n vec3 tmpvar_3;\\\\n tmpvar_3 = (((texture (sampler_blur1, \\\\n (uv + (vec2(1.0, 0.0) * tmpvar_2))\\\\n ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n (uv - (vec2(1.0, 0.0) * tmpvar_2))\\\\n ).xyz * scale1) + bias1));\\\\n vec3 tmpvar_4;\\\\n tmpvar_4 = (((texture (sampler_blur1, \\\\n (uv + (vec2(0.0, 1.0) * tmpvar_2))\\\\n ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n (uv - (vec2(0.0, 1.0) * tmpvar_2))\\\\n ).xyz * scale1) + bias1));\\\\n vec2 tmpvar_5;\\\\n tmpvar_5.x = tmpvar_3.z;\\\\n tmpvar_5.y = tmpvar_4.z;\\\\n vec2 tmpvar_6;\\\\n tmpvar_6 = (uv + ((tmpvar_5 * texsize.zw) * 4.0));\\\\n ret_1.z = (((texture (sampler_main, tmpvar_6).z - \\\\n ((texture (sampler_main, tmpvar_6).z - ((texture (sampler_blur3, tmpvar_6).xyz * scale3) + bias3).z) * 0.02)\\\\n ) - 0.008) + ((texture (sampler_noise_lq, \\\\n (((uv_orig * texsize.xy) * texsize_noise_lq.zw) + rand_frame.xy)\\\\n ).xyz - 0.5) * 0.1)).x;\\\\n vec2 tmpvar_7;\\\\n tmpvar_7.x = tmpvar_3.x;\\\\n tmpvar_7.y = tmpvar_4.x;\\\\n vec2 tmpvar_8;\\\\n tmpvar_8 = ((0.5 + (uv - 0.5)) - (tmpvar_7 * texsize.zw));\\\\n ret_1.x = texture (sampler_main, tmpvar_8).x;\\\\n ret_1.x = (ret_1.x + ((\\\\n (ret_1.x - ((texture (sampler_blur3, tmpvar_8).xyz * scale3) + bias3))\\\\n .x * 0.4) + 0.006));\\\\n vec2 tmpvar_9;\\\\n tmpvar_9.x = tmpvar_3.x;\\\\n tmpvar_9.y = tmpvar_4.x;\\\\n vec2 tmpvar_10;\\\\n tmpvar_10.x = tmpvar_3.y;\\\\n tmpvar_10.y = tmpvar_4.y;\\\\n vec2 tmpvar_11;\\\\n tmpvar_11.x = tmpvar_3.z;\\\\n tmpvar_11.y = tmpvar_4.z;\\\\n ret_1.y = texture (sampler_fc_main, (((uv - \\\\n ((tmpvar_9 * texsize.zw) * 8.0)\\\\n ) + (\\\\n (tmpvar_10 * texsize.zw)\\\\n * 4.0)) + ((tmpvar_11 * texsize.zw) * 8.0))).y;\\\\n ret_1.y = (ret_1.y * (1.0 + (ret_1.x * 0.1)));\\\\n ret_1.y = (ret_1.y - (0.004 + (\\\\n clamp (ret_1.z, 0.0, 1.0)\\\\n * 0.012)));\\\\n vec4 tmpvar_12;\\\\n tmpvar_12.w = 1.0;\\\\n tmpvar_12.xyz = ret_1;\\\\n ret = tmpvar_12.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n vec3 ret_1;\\\\n vec2 tmpvar_2;\\\\n tmpvar_2 = (texsize.zw * 4.0);\\\\n vec3 tmpvar_3;\\\\n tmpvar_3 = (((texture (sampler_blur1, \\\\n (uv + (vec2(1.0, 0.0) * tmpvar_2))\\\\n ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n (uv - (vec2(1.0, 0.0) * tmpvar_2))\\\\n ).xyz * scale1) + bias1));\\\\n vec3 tmpvar_4;\\\\n tmpvar_4 = (((texture (sampler_blur1, \\\\n (uv + (vec2(0.0, 1.0) * tmpvar_2))\\\\n ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n (uv - (vec2(0.0, 1.0) * tmpvar_2))\\\\n ).xyz * scale1) + bias1));\\\\n vec2 tmpvar_5;\\\\n tmpvar_5.x = tmpvar_3.z;\\\\n tmpvar_5.y = tmpvar_4.z;\\\\n vec2 tmpvar_6;\\\\n tmpvar_6.x = tmpvar_3.y;\\\\n tmpvar_6.y = tmpvar_4.y;\\\\n vec2 tmpvar_7;\\\\n tmpvar_7 = ((uv - (tmpvar_5 * 0.1)) + (tmpvar_6 * 0.06));\\\\n vec4 tmpvar_8;\\\\n tmpvar_8 = texture (sampler_main, uv);\\\\n ret_1 = (((\\\\n ((texture (sampler_blur2, tmpvar_7).xyz * scale2) + bias2)\\\\n .x * \\\\n clamp ((1.0 - tmpvar_8.z), 0.0, 1.0)\\\\n ) * pow (hue_shader.yxz, vec3(8.0, 8.0, 8.0))) * 3.0);\\\\n ret_1 = (mix (ret_1, (\\\\n pow (hue_shader.yzx, vec3(8.0, 8.0, 8.0))\\\\n * 1.4), vec3((\\\\n (texture (sampler_main, tmpvar_7).x * 0.8)\\\\n + \\\\n ((texture (sampler_blur1, tmpvar_7).xyz * scale1) + bias1)\\\\n .x))) * clamp ((1.0 - \\\\n (((texture (sampler_blur1, uv).xyz * scale1) + bias1).y * 4.0)\\\\n ), 0.0, 1.0));\\\\n vec2 tmpvar_9;\\\\n tmpvar_9.x = tmpvar_3.y;\\\\n tmpvar_9.y = tmpvar_4.y;\\\\n vec3 tmpvar_10;\\\\n vec3 tmpvar_11;\\\\n tmpvar_11 = pow (hue_shader, vec3(8.0, 8.0, 8.0));\\\\n tmpvar_10 = mix (mix (ret_1, vec3(1.0, 1.0, 1.0), (\\\\n (tmpvar_11 * texture (sampler_main, clamp ((uv - (tmpvar_9 * 2.0)), 0.0, 1.0)).z)\\\\n * 1.2)), (tmpvar_11.zxy * 1.8), tmpvar_8.yyy);\\\\n ret_1 = tmpvar_10;\\\\n vec4 tmpvar_12;\\\\n tmpvar_12.w = 1.0;\\\\n tmpvar_12.xyz = tmpvar_10;\\\\n ret = tmpvar_12.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/flexi + geiss - pogo cubes vs. tokamak vs. game of life [stahls jelly 4.5 finish].json\":\n/*!******************************************************************************************************************!*\\\n !*** ./presets/converted/flexi + geiss - pogo cubes vs. tokamak vs. game of life [stahls jelly 4.5 finish].json ***!\n \\******************************************************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":5,\\\"gammaadj\\\":1.9,\\\"echo_zoom\\\":1.169,\\\"additivewave\\\":1,\\\"modwavealphabyvolume\\\":1,\\\"wave_brighten\\\":0,\\\"wrap\\\":0,\\\"wave_a\\\":1.413,\\\"wave_scale\\\":0.418,\\\"wave_smoothing\\\":0,\\\"wave_mystery\\\":-0.66,\\\"modwavealphastart\\\":2,\\\"modwavealphaend\\\":2,\\\"warpanimspeed\\\":0.626,\\\"warpscale\\\":1.331,\\\"zoomexp\\\":1.00001,\\\"zoom\\\":0.99951,\\\"warp\\\":0.08925,\\\"wave_r\\\":0,\\\"wave_g\\\":0,\\\"wave_x\\\":0.24,\\\"wave_y\\\":0.44,\\\"ob_size\\\":0.5,\\\"ob_r\\\":0.01,\\\"ib_size\\\":0.26,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":0,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"additive\\\":1,\\\"rad\\\":0.0277,\\\"ang\\\":6.03186,\\\"tex_ang\\\":6.03186,\\\"tex_zoom\\\":0.6839,\\\"g\\\":1,\\\"r2\\\":1,\\\"a2\\\":1,\\\"border_r\\\":0,\\\"border_g\\\":0,\\\"border_b\\\":0,\\\"border_a\\\":1},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"an = an + q6;\\\\nang = an*0.5;\\\\nx = q4;\\\\ny = q5;\\\\nrad = q3*sqrt(2);\\\\n\\\\n\\\\nx = 0.5 + (x-0.5)/q2;\\\\ny = 0.5 + (y-0.5)/q1;\\\\n\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"additive\\\":1,\\\"rad\\\":0.0277,\\\"ang\\\":6.03186,\\\"tex_ang\\\":6.03186,\\\"tex_zoom\\\":0.6839,\\\"g\\\":1,\\\"r2\\\":1,\\\"a2\\\":1,\\\"border_r\\\":0,\\\"border_g\\\":0,\\\"border_b\\\":0,\\\"border_a\\\":1},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"an = an + q9;\\\\nang = an*0.5;\\\\nx = q7;\\\\ny = q8;\\\\nrad = q3*sqrt(2);\\\\n\\\\nx = 0.5 + (x-0.5)/q2;\\\\ny = 0.5 + (y-0.5)/q1;\\\\n\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"additive\\\":1,\\\"rad\\\":0.0277,\\\"ang\\\":6.03186,\\\"tex_ang\\\":6.03186,\\\"tex_zoom\\\":0.6839,\\\"b\\\":1,\\\"r2\\\":1,\\\"g2\\\":0,\\\"b2\\\":1,\\\"a2\\\":1,\\\"border_r\\\":0,\\\"border_g\\\":0,\\\"border_b\\\":0,\\\"border_a\\\":1},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"an = an + q12;\\\\nang = an*0.5;\\\\nx = q10;\\\\ny = q11;\\\\nrad = q3*sqrt(2);\\\\n\\\\nx = 0.5 + (x-0.5)/q2;\\\\ny = 0.5 + (y-0.5)/q1;\\\\n\\\"},{\\\"baseVals\\\":{\\\"sides\\\":48,\\\"additive\\\":1,\\\"num_inst\\\":4,\\\"rad\\\":0.0277,\\\"ang\\\":6.03186,\\\"tex_ang\\\":6.03186,\\\"tex_zoom\\\":0.6839,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":1,\\\"border_r\\\":0,\\\"border_g\\\":0,\\\"border_b\\\":0,\\\"border_a\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"an = an + 0.5*q16/num_inst;\\\\nw = asin(1)*4*instance/num_inst + an;\\\\nx = q6 + sin(w)*q5*0.5;\\\\ny = q7 + cos(w)*q5*0.5;\\\\nrad = q5*0.25;\\\\n\\\\n\\\\n//x = 0.5 + (x-0.5)/q2;\\\\n//y = 0.5 + (y-0.5)/q1;\\\\n\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"thick\\\":1,\\\"additive\\\":1,\\\"scaling\\\":2.0231,\\\"smoothing\\\":0,\\\"r\\\":0},\\\"init_eqs_eel\\\":\\\"t2 = 0;\\\\nt3 = 0;\\\\nt4 = 0;\\\\ncl = 0;\\\",\\\"frame_eqs_eel\\\":\\\"vol = bass*8 + mid*5 + treb*3;\\\\nm = m*0.97 + vol*0.08;\\\\nmonitor = vol;\\\\nbeat = above(vol,res)*above(vol,m)*above(vol,16);\\\\ndiff = (1-beat)*diff + beat*(vol-res);\\\\nres = beat*(vol + m*0.04) + (1-beat)*(res - (0.1+diff*0.02)*60/fps);\\\\nres = max(0,res);\\\\n\\\\na = beat;\\\",\\\"point_eqs_eel\\\":\\\"tt3 = tt3*0.6 + (value1)*1;\\\\ntt2 = tt2*0.7 + tt3*0.2;\\\\ntt1 = tt1*0.8 + tt2*0.1;\\\\nd = d*0.9 + tt1*0.2;\\\\n\\\\ny = 0.5 + d*sample*(1-sample)*2;\\\\nx = -0.05 + sample*1.1;\\\"},{\\\"baseVals\\\":{\\\"spectrum\\\":1,\\\"thick\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"chance = 0;\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"// the velocity vector\\\\n\\\\nx = q3 + sample*sin(q14)*q13*40;\\\\ny = q4 + sample*cos(q14)*q13*40;\\\\n\\\\n// tangential velocity of rotation\\\\n//x = q3 + sample*q16*40;\\\\n//y = q4 - q5/2;\\\\n\\\\n\\\\nx = 0.5 + (x-0.5)/q1;\\\\ny = 0.5 + (y-0.5)/q2;\\\"},{\\\"baseVals\\\":{\\\"spectrum\\\":1,\\\"thick\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"chance = 0;\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"// tangential property of velocity vector\\\\n\\\\nx = q3 + sample*sin(q10)*cos(q14-q10)*q13*40;\\\\ny = q4 + sample*cos(q10)*cos(q14-q10)*q13*40;\\\\n\\\\n// vx\\\\n//x = q3 + sample*q11*40;\\\\n//y = q4;\\\\n\\\\nx = 0.5 + (x-0.5)/q1;\\\\ny = 0.5 + (y-0.5)/q2;\\\"},{\\\"baseVals\\\":{\\\"spectrum\\\":1,\\\"thick\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"chance = 0;\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"// orthogonal property of velocity vector\\\\n\\\\nx = q3 + sample*sin(q10+asin(1))*cos(q14-q10-asin(1))*q13*40;\\\\ny = q4 + sample*cos(q10+asin(1))*cos(q14-q10-asin(1))*q13*40;\\\\n\\\\n// vy\\\\n//x = q3;\\\\n//y = q4 + sample*q12*40;\\\\n\\\\nx = 0.5 + (x-0.5)/q1;\\\\ny = 0.5 + (y-0.5)/q2;\\\"}],\\\"init_eqs_eel\\\":\\\"x1 = 0.5;\\\\ny1 = 0.6;\\\\n\\\\nx2 = 0.5;\\\\ny2 = 0.4;\\\\n\\\\nx3 = 0.5;\\\\ny3 = 0.2;\\\\n\\\\nvr1 = 0.0001;\\\\nvr2 = 0.0;\\\\nvr3 = 0.0;\\\\n\\\\nvx1 = 0;\\\\nvx2 = 0;\\\\nvx3 = 0;\\\",\\\"frame_eqs_eel\\\":\\\"zoom = 1;\\\\nwarp = 0;\\\\nwave_a = 0;\\\\n\\\\nr = 0.03+ (bass_att+treb_att)*0.004;\\\\nmonitor = aspecty;\\\\nvr = sin(vr1)*r;\\\\nbounce = below(y1,r-(aspectx-1)*0.5);y1 = y1+vy1;vy1 = if(bounce, abs(vy1)*0.96 + (r-y1-(aspectx-1)*0.5)*0.1, vy1-0.0003*60/fps);\\\\nvx1 = if(bounce, vx1 + (vr-vx1)*0.15, vx1);vr = if(bounce, vr + (vx1-vr)*0.85 , vr);vr1 = asin(vr/r);\\\\nbounce = above(x1,1-r+(aspecty-1)*0.5);vx1 = if(bounce, - abs(vx1)*0.96 + (1-r-x1+(aspecty-1)*0.5)*0.1, vx1);\\\\nvy1 = if(bounce, vy1 + (vr-vy1)*0.15, vy1);vr = if(bounce, vr + (vy1-vr)*0.85 , vr);vr1 = asin(vr/r);\\\\nbounce = below(x1,r-(aspecty-1)*0.5);x1 = x1+vx1;vx1 = if(bounce, abs(vx1)*0.96 + (r-x1-(aspecty-1)*0.5)*0.1, vx1);\\\\nvy1 = if(bounce, vy1 + (-vr-vy1)*0.15, vy1);vr = if(bounce, vr - (vy1+vr)*0.85 , vr);vr1 = asin(vr/r);\\\\n\\\\nvr = sin(vr2)*r;\\\\nbounce = below(y2,r-(aspectx-1)*0.5);y2 = y2+vy2;vy2 = if(bounce, abs(vy2)*0.96 + (r-y2-(aspectx-1)*0.5)*0.1, vy2-0.0003*60/fps);\\\\nvx2 = if(bounce, vx2 + (vr-vx2)*0.15, vx2);vr = if(bounce, vr + (vx2-vr)*0.85 , vr);vr2 = asin(vr/r);\\\\nbounce = above(x2,1-r+(aspecty-1)*0.5);vx2 = if(bounce, - abs(vx2)*0.96 + (1-r-x2+(aspecty-1)*0.5)*0.1, vx2);\\\\nvy2 = if(bounce, vy2 + (vr-vy2)*0.15, vy2);vr = if(bounce, vr + (vy2-vr)*0.85 , vr);vr2 = asin(vr/r);\\\\nbounce = below(x2,r-(aspecty-1)*0.5);x2 = x2+vx2;vx2 = if(bounce, abs(vx2)*0.96 + (r-x2-(aspecty-1)*0.5)*0.1, vx2);\\\\nvy2 = if(bounce, vy2 + (-vr-vy2)*0.15, vy2);vr = if(bounce, vr - (vy2+vr)*0.85 , vr);vr2 = asin(vr/r);\\\\n\\\\nvr = sin(vr3)*r;\\\\nbounce = below(y3,r-(aspectx-1)*0.5);y3 = y3+vy3;vy3 = if(bounce, abs(vy3)*0.96 + (r-y3-(aspectx-1)*0.5)*0.1, vy3-0.0003*60/fps);\\\\nvx3 = if(bounce, vx3 + (vr-vx3)*0.15, vx3);vr = if(bounce, vr + (vx3-vr)*0.85 , vr);vr3 = asin(vr/r);\\\\nbounce = above(x3,1-r+(aspecty-1)*0.5);vx3 = if(bounce, - abs(vx3)*0.96 + (1-r-x3+(aspecty-1)*0.5)*0.1, vx3);\\\\nvy3 = if(bounce, vy3 + (vr-vy3)*0.15, vy3);vr = if(bounce, vr + (vy3-vr)*0.85 , vr);vr3 = asin(vr/r);\\\\nbounce = below(x3,r-(aspecty-1)*0.5);x3 = x3+vx3;vx3 = if(bounce, abs(vx3)*0.96 + (r-x3-(aspecty-1)*0.5)*0.1, vx3);\\\\nvy3 = if(bounce, vy3 + (-vr-vy3)*0.15, vy3);vr = if(bounce, vr - (vy3+vr)*0.85 , vr);vr3 = asin(vr/r);\\\\n\\\\nbounce = below( sqrt( sqr(x1+vx1-x2-vx2) + sqr(y1+vy1-y2-vy2)), 2*r);\\\\nbounce = bounce*below(sqrt( sqr(x1+vx1-x2-vx2) + sqr(y1+vy1-y2-vy2)),sqrt( sqr(x1-x2) + sqr(y1-y2)));\\\\nref_ang = atan2(x2-x1,y2-y1)+asin(1); // common tangent\\\\nv1 = sqrt(vx1*vx1+vy1*vy1);v2 = sqrt(vx2*vx2+vy2*vy2);w1 = atan2(vx1,vy1);w2 = atan2(vx2,vy2);\\\\nvr = sin(vr1)*r; v2r=sin(vr2)*r;\\\\nvx1 = if(bounce,sin(ref_ang)*v1*cos(w1-ref_ang) + ((vr-v2r)-sin(ref_ang)*v1*cos(w1-ref_ang))*0.1\\\\n + sin(ref_ang+asin(1))*v2*cos(w2-ref_ang-asin(1)), vx1);\\\\nvy1 = if(bounce,cos(ref_ang)*v1*cos(w1-ref_ang) + ((vr-v2r)-cos(ref_ang)*v1*cos(w1-ref_ang))*0.1\\\\n + cos(ref_ang+asin(1))*v2*cos(w2-ref_ang-asin(1)), vy1);\\\\nvx2 = if(bounce,sin(ref_ang)*v2*cos(w2-ref_ang) + ((v2r-vr)-sin(ref_ang)*v2*cos(w2-ref_ang))*0.1\\\\n + sin(ref_ang+asin(1))*v1*cos(w1-ref_ang-asin(1)), vx2);\\\\nvy2 = if(bounce,cos(ref_ang)*v2*cos(w2-ref_ang) + ((v2r-vr)-cos(ref_ang)*v2*cos(w2-ref_ang))*0.1\\\\n + cos(ref_ang+asin(1))*v1*cos(w1-ref_ang-asin(1)), vy2);\\\\nvr = if(bounce, vr + (cos(w1-ref_ang)*(v1-v2)-vr)*0.9 , vr);vr1 = asin(vr/r);\\\\nv2r = if(bounce, v2r + (cos(w2-ref_ang)*(v2-v1)-v2r)*0.9 , v2r);vr2 = asin(v2r/r);\\\\n\\\\nbounce = below( sqrt( sqr(x1+vx1-x3-vx3) + sqr(y1+vy1-y3-vy3)), 2*r);\\\\nbounce = bounce*below(sqrt( sqr(x1+vx1-x3-vx3) + sqr(y1+vy1-y3-vy3)),sqrt( sqr(x1-x3) + sqr(y1-y3)));\\\\nref_ang = atan2(x3-x1,y3-y1)+asin(1); // common tangent\\\\nv1 = sqrt(vx1*vx1+vy1*vy1);v2 = sqrt(vx3*vx3+vy3*vy3);w1 = atan2(vx1,vy1);w2 = atan2(vx3,vy3);\\\\nvr = sin(vr1)*r; v2r=sin(vr3)*r;\\\\nvx1 = if(bounce,sin(ref_ang)*v1*cos(w1-ref_ang) + ((vr-v2r)-sin(ref_ang)*v1*cos(w1-ref_ang))*0.1\\\\n + sin(ref_ang+asin(1))*v2*cos(w2-ref_ang-asin(1)), vx1);\\\\nvy1 = if(bounce,cos(ref_ang)*v1*cos(w1-ref_ang) + ((vr-v2r)-cos(ref_ang)*v1*cos(w1-ref_ang))*0.1\\\\n + cos(ref_ang+asin(1))*v2*cos(w2-ref_ang-asin(1)), vy1);\\\\nvx3 = if(bounce,sin(ref_ang)*v2*cos(w2-ref_ang) + ((v2r-vr)-sin(ref_ang)*v2*cos(w2-ref_ang))*0.1\\\\n + sin(ref_ang+asin(1))*v1*cos(w1-ref_ang-asin(1)), vx3);\\\\nvy3 = if(bounce,cos(ref_ang)*v2*cos(w2-ref_ang) + ((v2r-vr)-cos(ref_ang)*v2*cos(w2-ref_ang))*0.1\\\\n + cos(ref_ang+asin(1))*v1*cos(w1-ref_ang-asin(1)), vy3);\\\\nvr = if(bounce, vr + (cos(w1-ref_ang)*(v1-v2)-vr)*0.9 , vr);vr1 = asin(vr/r);\\\\nv2r = if(bounce, v2r + (cos(w2-ref_ang)*(v2-v1)-v2r)*0.9 , v2r);vr3 = asin(v2r/r);\\\\n\\\\nbounce = below( sqrt( sqr(x3+vx3-x2-vx2) + sqr(y3+vy3-y2-vy2)), 2*r);\\\\nbounce = bounce*below(sqrt( sqr(x2+vx2-x3-vx3) + sqr(y2+vy2-y3-vy3)),sqrt( sqr(x2-x3) + sqr(y2-y3)));\\\\nref_ang = atan2(x2-x3,y2-y3)+asin(1); // common tangent\\\\nv1 = sqrt(vx3*vx3+vy3*vy3);v2 = sqrt(vx2*vx2+vy2*vy2);w1 = atan2(vx3,vy3);w2 = atan2(vx2,vy2);\\\\nvr = sin(vr3)*r; v2r=sin(vr2)*r;\\\\nvx3 = if(bounce,sin(ref_ang)*v1*cos(w1-ref_ang) + ((vr-v2r)-sin(ref_ang)*v1*cos(w1-ref_ang))*0.1\\\\n + sin(ref_ang+asin(1))*v2*cos(w2-ref_ang-asin(1)), vx3);\\\\nvy3 = if(bounce,cos(ref_ang)*v1*cos(w1-ref_ang) + ((vr-v2r)-cos(ref_ang)*v1*cos(w1-ref_ang))*0.1\\\\n + cos(ref_ang+asin(1))*v2*cos(w2-ref_ang-asin(1)), vy3);\\\\nvx2 = if(bounce,sin(ref_ang)*v2*cos(w2-ref_ang) + ((v2r-vr)-sin(ref_ang)*v2*cos(w2-ref_ang))*0.1\\\\n + sin(ref_ang+asin(1))*v1*cos(w1-ref_ang-asin(1)), vx2);\\\\nvy2 = if(bounce,cos(ref_ang)*v2*cos(w2-ref_ang) + ((v2r-vr)-cos(ref_ang)*v2*cos(w2-ref_ang))*0.1\\\\n + cos(ref_ang+asin(1))*v1*cos(w1-ref_ang-asin(1)), vy2);\\\\nvr = if(bounce, vr + (cos(w1-ref_ang)*(v1-v2)-vr)*0.9 , vr);vr3 = asin(vr/r);\\\\nv2r = if(bounce, v2r + (cos(w2-ref_ang)*(v2-v1)-v2r)*0.9 , v2r);vr2 = asin(v2r/r);\\\\n\\\\n\\\\n\\\\n\\\\nq1 = aspectx;\\\\nq2 = aspecty;\\\\nq3 = r*2;\\\\n\\\\nq4 = x1; q5 = y1; q6 = vr1;\\\\nq7 = x2; q8 = y2; q9 = vr2;\\\\nq10 = x3; q11 = y3; q12 = vr3;\\\\n\\\\nq13 = atan2( (x1+x2+x3)/3 - 0.5, (y1+y2+y3)/3-0.5);\\\\nq14 = sigmoid(sqrt( sqr((x1+x2+x3)/3 - 0.5) + sqr((y1+y2+y3)/3-0.5) ),2)*0.2;\\\",\\\"pixel_eqs_eel\\\":\\\"du = (x*2-1) - (q4+q7+q10-1.5)*2/3;\\\\ndv = (y*2-1) + (q5+q8+q11-1.5)*2/3;\\\\ndist = sqrt(du*du+dv*dv);\\\\nang2 = atan2(du,dv);\\\\nmult = sin(dist*0.05)*0.4*q14;\\\\ndx = mult*sin(ang2*2+q13)*aspectx;\\\\ndy = mult*cos(ang2*2+q13)*aspecty;\\\",\\\"warp\\\":\\\" shader_body { \\\\n float n_1;\\\\n vec3 ret_2;\\\\n vec4 tmpvar_3;\\\\n tmpvar_3 = texture (sampler_pw_main, uv);\\\\n ret_2 = tmpvar_3.xyz;\\\\n n_1 = (clamp ((texture (sampler_pw_main, \\\\n (uv + texsize.zw)\\\\n ).x * 999.0), 0.0, 1.0) + clamp ((texture (sampler_pw_main, \\\\n (uv + (texsize.zw * vec2(1.0, 0.0)))\\\\n ).x * 999.0), 0.0, 1.0));\\\\n n_1 = (n_1 + clamp ((texture (sampler_pw_main, \\\\n (uv + (texsize.zw * vec2(1.0, -1.0)))\\\\n ).x * 999.0), 0.0, 1.0));\\\\n n_1 = (n_1 + clamp ((texture (sampler_pw_main, \\\\n (uv + (texsize.zw * vec2(0.0, 1.0)))\\\\n ).x * 999.0), 0.0, 1.0));\\\\n n_1 = (n_1 + clamp ((texture (sampler_pw_main, \\\\n (uv + (texsize.zw * vec2(0.0, -1.0)))\\\\n ).x * 999.0), 0.0, 1.0));\\\\n n_1 = (n_1 + clamp ((texture (sampler_pw_main, \\\\n (uv + (texsize.zw * vec2(-1.0, 1.0)))\\\\n ).x * 999.0), 0.0, 1.0));\\\\n n_1 = (n_1 + clamp ((texture (sampler_pw_main, \\\\n (uv + (texsize.zw * vec2(-1.0, 0.0)))\\\\n ).x * 999.0), 0.0, 1.0));\\\\n n_1 = (n_1 + clamp ((texture (sampler_pw_main, \\\\n (uv - texsize.zw)\\\\n ).x * 999.0), 0.0, 1.0));\\\\n if ((n_1 < 1.9)) {\\\\n ret_2 = (tmpvar_3.xyz - 0.4);\\\\n };\\\\n if ((n_1 > 3.1)) {\\\\n ret_2 = (ret_2 - 0.4);\\\\n };\\\\n bool tmpvar_4;\\\\n if ((ret_2.x < 0.1)) {\\\\n tmpvar_4 = (abs((n_1 - 3.0)) < 0.5);\\\\n } else {\\\\n tmpvar_4 = bool(0);\\\\n };\\\\n if (tmpvar_4) {\\\\n ret_2 = (ret_2 + 0.4);\\\\n };\\\\n vec4 tmpvar_5;\\\\n tmpvar_5.w = 1.0;\\\\n tmpvar_5.xyz = ret_2;\\\\n ret = tmpvar_5.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n vec3 ret2_1;\\\\n vec3 ret_2;\\\\n vec2 tmpvar_3;\\\\n tmpvar_3 = (texsize.zw * 8.0);\\\\n vec2 tmpvar_4;\\\\n tmpvar_4.x = (((texture (sampler_blur1, \\\\n (uv + (vec2(1.0, 0.0) * tmpvar_3))\\\\n ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n (uv - (vec2(1.0, 0.0) * tmpvar_3))\\\\n ).xyz * scale1) + bias1)).y;\\\\n tmpvar_4.y = (((texture (sampler_blur1, \\\\n (uv + (vec2(0.0, 1.0) * tmpvar_3))\\\\n ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n (uv - (vec2(0.0, 1.0) * tmpvar_3))\\\\n ).xyz * scale1) + bias1)).y;\\\\n vec2 tmpvar_5;\\\\n tmpvar_5 = (uv + (tmpvar_4 * 0.55));\\\\n vec4 tmpvar_6;\\\\n tmpvar_6 = texture (sampler_blur3, uv);\\\\n ret_2 = (vec3((0.25 * dot (\\\\n clamp ((2.0 * ((tmpvar_6.xyz * scale3) + bias3)), 0.0, 1.0)\\\\n , vec3(0.32, 0.49, 0.29)))) - (0.8 * dot (\\\\n clamp (((20.0 * (\\\\n (0.6 * ((texture (sampler_blur2, uv).xyz * scale2) + bias2))\\\\n - 0.01)) - 2.0), 0.0, 1.0)\\\\n , vec3(0.32, 0.49, 0.29))));\\\\n vec4 tmpvar_7;\\\\n tmpvar_7 = texture (sampler_blur1, uv);\\\\n ret_2 = (ret_2 + dot (clamp (\\\\n ((30.0 * ((texture (sampler_main, uv).xyz + \\\\n (((tmpvar_7.xyz * scale1) + bias1) * 0.15)\\\\n ) - 0.01)) - 2.0)\\\\n , 0.0, 1.0), vec3(0.32, 0.49, 0.29)));\\\\n ret_2 = (ret_2 + 1.0);\\\\n vec3 tmpvar_8;\\\\n tmpvar_8 = mix (ret_2, (ret_2 * (\\\\n ((texture (sampler_blur3, tmpvar_5).xyz * scale3) + bias3)\\\\n - \\\\n ((texture (sampler_blur1, tmpvar_5).xyz * scale1) + bias1)\\\\n )), pow (hue_shader, ret_2));\\\\n ret2_1 = (vec3((-0.5 * dot (\\\\n ((texture (sampler_blur3, tmpvar_5).xyz * scale3) + bias3)\\\\n , vec3(0.32, 0.49, 0.29)))) + (0.8 * (\\\\n (texture (sampler_blur1, tmpvar_5).xyz * scale1)\\\\n + bias1)));\\\\n ret2_1 = (ret2_1 - (0.9 * texture (sampler_main, tmpvar_5).xyz));\\\\n ret2_1 = (ret2_1 - 1.5);\\\\n vec3 tmpvar_9;\\\\n tmpvar_9 = mix (ret2_1, (ret2_1 * (\\\\n ((tmpvar_6.xyz * scale3) + bias3)\\\\n - \\\\n ((tmpvar_7.xyz * scale1) + bias1)\\\\n )), pow (hue_shader.zxy, tmpvar_8));\\\\n ret2_1 = tmpvar_9;\\\\n vec3 tmpvar_10;\\\\n tmpvar_10 = abs((tmpvar_8 - tmpvar_9));\\\\n ret_2 = (tmpvar_10 * tmpvar_10);\\\\n ret_2 = (ret_2 * 1.15);\\\\n vec4 tmpvar_11;\\\\n tmpvar_11.w = 1.0;\\\\n tmpvar_11.xyz = ret_2;\\\\n ret = tmpvar_11.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/flexi - bouncing balls [double mindblob neon mix].json\":\n/*!**********************************************************************************!*\\\n !*** ./presets/converted/flexi - bouncing balls [double mindblob neon mix].json ***!\n \\**********************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":5,\\\"gammaadj\\\":1,\\\"decay\\\":0.995,\\\"echo_zoom\\\":1.007,\\\"echo_orient\\\":3,\\\"additivewave\\\":1,\\\"modwavealphabyvolume\\\":1,\\\"wave_brighten\\\":0,\\\"wrap\\\":0,\\\"wave_a\\\":1.413,\\\"wave_scale\\\":0.418,\\\"wave_smoothing\\\":0,\\\"wave_mystery\\\":-0.66,\\\"modwavealphastart\\\":2,\\\"modwavealphaend\\\":2,\\\"warpanimspeed\\\":0.626,\\\"warpscale\\\":8.642,\\\"zoomexp\\\":7.10084,\\\"zoom\\\":0.99951,\\\"warp\\\":0.09014,\\\"wave_r\\\":0,\\\"wave_g\\\":0,\\\"wave_x\\\":0.24,\\\"wave_y\\\":0.44,\\\"ob_size\\\":0,\\\"ob_a\\\":1,\\\"ib_size\\\":0.26,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":0,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":48,\\\"additive\\\":1,\\\"rad\\\":0.0277,\\\"ang\\\":6.03186,\\\"tex_ang\\\":6.03186,\\\"tex_zoom\\\":0.6839,\\\"r\\\":0,\\\"g\\\":1,\\\"a2\\\":1,\\\"border_r\\\":0,\\\"border_g\\\":0,\\\"border_b\\\":0,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x = q3;\\\\ny = q4;\\\\nrad = q5;\\\\n\\\\n\\\\nx = 0.5 + (x-0.5)/q2;\\\\ny = 0.5 + (y-0.5)/q1;\\\\n\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":48,\\\"additive\\\":1,\\\"rad\\\":0.0277,\\\"ang\\\":6.03186,\\\"tex_ang\\\":6.03186,\\\"tex_zoom\\\":0.6839,\\\"r\\\":0,\\\"b\\\":1,\\\"g2\\\":0,\\\"b2\\\":1,\\\"a2\\\":1,\\\"border_r\\\":0,\\\"border_g\\\":0,\\\"border_b\\\":0,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x = q6;\\\\ny = q7;\\\\nrad = q8;\\\\n\\\\nx = 0.5 + (x-0.5)/q2;\\\\ny = 0.5 + (y-0.5)/q1;\\\\n\\\"},{\\\"baseVals\\\":{\\\"sides\\\":48,\\\"rad\\\":0.0277,\\\"ang\\\":6.03186,\\\"tex_ang\\\":6.03186,\\\"tex_zoom\\\":0.6839,\\\"r\\\":0,\\\"g\\\":1,\\\"a2\\\":1,\\\"border_r\\\":0,\\\"border_g\\\":0,\\\"border_b\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x = q9;\\\\ny = q10;\\\\nrad = q11;\\\\n\\\\nx = 0.5 + (x-0.5)/q2;\\\\ny = 0.5 + (y-0.5)/q1;\\\\n\\\"},{\\\"baseVals\\\":{\\\"sides\\\":48,\\\"additive\\\":1,\\\"thickoutline\\\":1,\\\"rad\\\":0.0277,\\\"ang\\\":6.03186,\\\"tex_ang\\\":6.03186,\\\"tex_zoom\\\":0.6839,\\\"r\\\":0,\\\"g\\\":1,\\\"a\\\":0,\\\"border_a\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x = q12;\\\\ny = q13;\\\\nrad = q14;\\\\n\\\\nx = 0.5 + (x-0.5)/q2;\\\\ny = 0.5 + (y-0.5)/q1;\\\\n\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"thick\\\":1,\\\"additive\\\":1,\\\"scaling\\\":2.0231,\\\"smoothing\\\":0,\\\"g\\\":0,\\\"b\\\":0},\\\"init_eqs_eel\\\":\\\"t2 = 0;\\\\nt3 = 0;\\\\nt4 = 0;\\\\ncl = 0;\\\",\\\"frame_eqs_eel\\\":\\\"vol = bass*8 + mid*5 + treb*3;\\\\nm = m*0.97 + vol*0.08;\\\\nmonitor = vol;\\\\nbeat = above(vol,res)*above(vol,m)*above(vol,16);\\\\ndiff = (1-beat)*diff + beat*(vol-res);\\\\nres = beat*(vol + m*0.04) + (1-beat)*(res - (0.1+diff*0.02)*60/fps);\\\\nres = max(0,res);\\\\n\\\\na = beat;\\\",\\\"point_eqs_eel\\\":\\\"tt3 = tt3*0.6 + (value1)*1;\\\\ntt2 = tt2*0.7 + tt3*0.2;\\\\ntt1 = tt1*0.8 + tt2*0.1;\\\\nd = d*0.9 + tt1*0.2;\\\\n\\\\ny = 0.5 + d*sample*(1-sample)*2;\\\\nx = -0.05 + sample*1.1;\\\"},{\\\"baseVals\\\":{\\\"spectrum\\\":1,\\\"g\\\":0,\\\"b\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"chance = 0;\\\",\\\"frame_eqs_eel\\\":\\\"x = if(q9,q15,x);\\\\ny = if(q9,q16,y);\\\\nv = if(q9,q19,v);\\\\nw = if(q9,q20,w);\\\\n\\\\nref_w = if(q9, q10, ref_w);\\\\n\\\\nt1 = x;\\\\nt2 = y;\\\\nt3 = v;\\\\nt4 = w;\\\\nt5 = ref_w;\\\\n\\\\nt8 = 1;\\\",\\\"point_eqs_eel\\\":\\\"x = t1 + sample*sin(t4)*t3*20;\\\\ny = t2 + sample*cos(t4)*t3*20;\\\\n\\\\nx = 0.5 + (x-0.5)/q1;\\\\ny = 0.5 + (y-0.5)/q2;\\\"},{\\\"baseVals\\\":{\\\"spectrum\\\":1,\\\"g\\\":0,\\\"b\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"chance = 0;\\\",\\\"frame_eqs_eel\\\":\\\"x = if(q9,q15,x);\\\\ny = if(q9,q16,y);\\\\nv = if(q9,q19,v);\\\\nw = if(q9,q20,w);\\\\n\\\\nref_w = if(q9, q10, ref_w);\\\\n\\\\nt1 = x;\\\\nt2 = y;\\\\nt3 = v;\\\\nt4 = w;\\\\nt5 = ref_w;\\\\n\\\\nt8 = 1;\\\",\\\"point_eqs_eel\\\":\\\"x = t1 + sample*sin(t5)*t3*20*cos(t4-t5);\\\\ny = t2 + sample*cos(t5)*t3*20*cos(t4-t5);\\\\n\\\\nx = 0.5 + (x-0.5)/q1;\\\\ny = 0.5 + (y-0.5)/q2;\\\"},{\\\"baseVals\\\":{\\\"spectrum\\\":1,\\\"g\\\":0,\\\"b\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"chance = 0;\\\",\\\"frame_eqs_eel\\\":\\\"x = if(q9,q15,x);\\\\ny = if(q9,q16,y);\\\\nv = if(q9,q19,v);\\\\nw = if(q9,q20,w);\\\\n\\\\nref_w = if(q9, q10 + asin(1), ref_w);\\\\n\\\\nt1 = x;\\\\nt2 = y;\\\\nt3 = v;\\\\nt4 = w;\\\\nt5 = ref_w;\\\\n\\\\nt8 = 1;\\\",\\\"point_eqs_eel\\\":\\\"x = t1 + sample*sin(t5)*t3*20*cos(t4-t5);\\\\ny = t2 + sample*cos(t5)*t3*20*cos(t4-t5);\\\\n\\\\nx = 0.5 + (x-0.5)/q1;\\\\ny = 0.5 + (y-0.5)/q2;\\\"}],\\\"init_eqs_eel\\\":\\\"x1 = 0.5;\\\\nx2 = 0.51;\\\\n\\\\ny2 = 0.9;\\\\ny1 = 0.7;\\\\n\\\\nx3 = 0.8;\\\\ny3 = 0.5;\\\\n\\\\nx4 = 0.2;\\\\ny4 = 0.5;\\\\n\\\\n\\\\nax1 = 0;\\\\nay1 = 0;\\\\nax2 = 0;\\\\nay2 = 0;\\\\nax3 = 0;\\\\nay3 = 0;\\\\n\\\\nvx1 = 0.000;\\\\nvx2 = 0.000;\\\",\\\"frame_eqs_eel\\\":\\\"zoom = 1.002;\\\\nwarp = 0.2;\\\\nwave_a = 0;\\\\n//pogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogo\\\\nr = 0.04+ max(bass_att,treb_att)*0.008;\\\\nbounce = below(y1,r);y1 = y1+vy1;vy1 = if(bounce, abs(vy1)*0.94 + (r-y1)*0.1, vy1-0.0003*60/fps);\\\\nbounce = below(x1,r);x1 = x1+vx1;vx1 = if(bounce, abs(vx1)*0.94 + (r-x1)*0.1, vx1);\\\\nbounce = above(x1,1-r);vx1 = if(bounce, - abs(vx1)*0.94 + (1-r-x1)*0.04, vx1);\\\\nbounce = below(y2,r);y2 = y2 + vy2;vy2 = if(bounce,abs(vy2)*0.94+(r-y2)*.1, vy2-0.0003*60/fps);\\\\nbounce = below(x2,r);x2 = x2+ vx2;vx2 = if(bounce, abs(vx2)*0.94 + (r-x2)*0.1, vx2);\\\\nbounce = above(x2,1-r);vx2 = if(bounce, - abs(vx2)*0.94 + (1-r-x2)*0.1, vx2);\\\\nbounce = below(y3,r);y3 = y3 + vy3;vy3 = if(bounce,abs(vy3)*0.94+(r-y3)*.1, vy3-0.0003*60/fps);\\\\nbounce = below(x3,r);x3 = x3+ vx3;vx3 = if(bounce, abs(vx3)*0.94 + (r-x3)*0.1, vx3);\\\\nbounce = above(x3,1-r);vx3 = if(bounce, - abs(vx3)*0.94 + (1-r-x3)*0.1, vx3);\\\\nbounce = below(y4,r);y4 = y4 + vy4;vy4 = if(bounce,abs(vy4)*0.94+(r-y4)*.1, vy4-0.0003*60/fps);\\\\nbounce = below(x4,r);x4 = x4+ vx4;vx4 = if(bounce, abs(vx4)*0.94 + (r-x4)*0.1, vx4);\\\\nbounce = above(x4,1-r);vx4 = if(bounce, - abs(vx4)*0.94 + (1-r-x4)*0.1, vx4);\\\\nbounce = below( sqrt( sqr(x1+vx1-x2-vx2) + sqr(y1+vy1-y2-vy2)), 2*r);\\\\nref_ang = atan2(x2-x1,y2-y1)+asin(1); // common tangent\\\\nv1 = sqrt(vx1*vx1+vy1*vy1);v2 = sqrt(vx2*vx2+vy2*vy2);w1 = atan2(vx1,vy1);w2 = atan2(vx2,vy2);\\\\nvx1 = if(bounce,sin(ref_ang)*v1*cos(w1-ref_ang) + sin(ref_ang+asin(1))*v2*cos(w2-ref_ang-asin(1)), vx1);\\\\nvy1 = if(bounce,cos(ref_ang)*v1*cos(w1-ref_ang) + cos(ref_ang+asin(1))*v2*cos(w2-ref_ang-asin(1)), vy1);\\\\nvx2 = if(bounce,sin(ref_ang)*v2*cos(w2-ref_ang) + sin(ref_ang+asin(1))*v1*cos(w1-ref_ang-asin(1)), vx2);\\\\nvy2 = if(bounce,cos(ref_ang)*v2*cos(w2-ref_ang) + cos(ref_ang+asin(1))*v1*cos(w1-ref_ang-asin(1)), vy2);\\\\nbounce = below( sqrt( sqr(x1+vx1-x3-vx3) + sqr(y1+vy1-y3-vy3)), 2*r);\\\\nref_ang = atan2(x3-x1,y3-y1)+asin(1); // common tangent\\\\nv1 = sqrt(vx1*vx1+vy1*vy1);v2 = sqrt(vx3*vx3+vy3*vy3);w1 = atan2(vx1,vy1);w2 = atan2(vx3,vy3);\\\\nvx1 = if(bounce,sin(ref_ang)*v1*cos(w1-ref_ang) + sin(ref_ang+asin(1))*v2*cos(w2-ref_ang-asin(1)), vx1);\\\\nvy1 = if(bounce,cos(ref_ang)*v1*cos(w1-ref_ang) + cos(ref_ang+asin(1))*v2*cos(w2-ref_ang-asin(1)), vy1);\\\\nvx3 = if(bounce,sin(ref_ang)*v2*cos(w2-ref_ang) + sin(ref_ang+asin(1))*v1*cos(w1-ref_ang-asin(1)), vx3);\\\\nvy3 = if(bounce,cos(ref_ang)*v2*cos(w2-ref_ang) + cos(ref_ang+asin(1))*v1*cos(w1-ref_ang-asin(1)), vy3);\\\\nbounce = below( sqrt( sqr(x2+vx2-x3-vx3) + sqr(y2+vy2-y3-vy3)), 2*r);\\\\nref_ang = atan2(x3-x2,y3-y2)+asin(1); // common tangent\\\\nv1 = sqrt(vx2*vx2+vy2*vy2);v2 = sqrt(vx3*vx3+vy3*vy3);w1 = atan2(vx2,vy2);w2 = atan2(vx3,vy3);\\\\nvx2 = if(bounce,sin(ref_ang)*v1*cos(w1-ref_ang) + sin(ref_ang+asin(1))*v2*cos(w2-ref_ang-asin(1)), vx2);\\\\nvy2 = if(bounce,cos(ref_ang)*v1*cos(w1-ref_ang) + cos(ref_ang+asin(1))*v2*cos(w2-ref_ang-asin(1)), vy2);\\\\nvx3 = if(bounce,sin(ref_ang)*v2*cos(w2-ref_ang) + sin(ref_ang+asin(1))*v1*cos(w1-ref_ang-asin(1)), vx3);\\\\nvy3 = if(bounce,cos(ref_ang)*v2*cos(w2-ref_ang) + cos(ref_ang+asin(1))*v1*cos(w1-ref_ang-asin(1)), vy3);\\\\nbounce = below( sqrt( sqr(x1+vx1-x4-vx4) + sqr(y1+vy1-y4-vy4)), 2*r);\\\\nref_ang = atan2(x4-x1,y4-y1)+asin(1); // common tangent\\\\nv1 = sqrt(vx1*vx1+vy1*vy1);v2 = sqrt(vx4*vx4+vy4*vy4);w1 = atan2(vx1,vy1);w2 = atan2(vx4,vy4);\\\\nvx1 = if(bounce,sin(ref_ang)*v1*cos(w1-ref_ang) + sin(ref_ang+asin(1))*v2*cos(w2-ref_ang-asin(1)), vx1);\\\\nvy1 = if(bounce,cos(ref_ang)*v1*cos(w1-ref_ang) + cos(ref_ang+asin(1))*v2*cos(w2-ref_ang-asin(1)), vy1);\\\\nvx4 = if(bounce,sin(ref_ang)*v2*cos(w2-ref_ang) + sin(ref_ang+asin(1))*v1*cos(w1-ref_ang-asin(1)), vx4);\\\\nvy4 = if(bounce,cos(ref_ang)*v2*cos(w2-ref_ang) + cos(ref_ang+asin(1))*v1*cos(w1-ref_ang-asin(1)), vy4);\\\\nbounce = below( sqrt( sqr(x2+vx2-x4-vx4) + sqr(y2+vy2-y4-vy4)), 2*r);\\\\nref_ang = atan2(x4-x2,y4-y2)+asin(1); // common tangent\\\\nv1 = sqrt(vx2*vx2+vy2*vy2);v2 = sqrt(vx4*vx4+vy4*vy4);w1 = atan2(vx2,vy2);w2 = atan2(vx4,vy4);\\\\nvx2 = if(bounce,sin(ref_ang)*v1*cos(w1-ref_ang) + sin(ref_ang+asin(1))*v2*cos(w2-ref_ang-asin(1)), vx2);\\\\nvy2 = if(bounce,cos(ref_ang)*v1*cos(w1-ref_ang) + cos(ref_ang+asin(1))*v2*cos(w2-ref_ang-asin(1)), vy2);\\\\nvx4 = if(bounce,sin(ref_ang)*v2*cos(w2-ref_ang) + sin(ref_ang+asin(1))*v1*cos(w1-ref_ang-asin(1)), vx4);\\\\nvy4 = if(bounce,cos(ref_ang)*v2*cos(w2-ref_ang) + cos(ref_ang+asin(1))*v1*cos(w1-ref_ang-asin(1)), vy4);\\\\nbounce = below( sqrt( sqr(x3+vx3-x4-vx4) + sqr(y3+vy3-y4-vy4)), 2*r);\\\\nref_ang = atan2(x4-x3,y4-y3)+asin(1); // common tangent\\\\nv1 = sqrt(vx3*vx3+vy3*vy3);v2 = sqrt(vx4*vx4+vy4*vy4);w1 = atan2(vx3,vy3);w2 = atan2(vx4,vy4);\\\\nvx3 = if(bounce,sin(ref_ang)*v1*cos(w1-ref_ang) + sin(ref_ang+asin(1))*v2*cos(w2-ref_ang-asin(1)), vx3);\\\\nvy3 = if(bounce,cos(ref_ang)*v1*cos(w1-ref_ang) + cos(ref_ang+asin(1))*v2*cos(w2-ref_ang-asin(1)), vy3);\\\\nvx4 = if(bounce,sin(ref_ang)*v2*cos(w2-ref_ang) + sin(ref_ang+asin(1))*v1*cos(w1-ref_ang-asin(1)), vx4);\\\\nvy4 = if(bounce,cos(ref_ang)*v2*cos(w2-ref_ang) + cos(ref_ang+asin(1))*v1*cos(w1-ref_ang-asin(1)), vy4);\\\\n//pogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogopogo\\\\nq1 = aspectx;\\\\nq2 = aspecty;\\\\nq3 = x1;\\\\nq4 = y1;\\\\nq5 = r*2;\\\\nq6 = x2;\\\\nq7 = y2;\\\\nq8 = r*2;\\\\nq9 = x3;\\\\nq10 = y3;\\\\nq11 = r*2;\\\\nq12 = x4;\\\\nq13 = y4;\\\\nq14 = r*2;\\\\nq15 = atan2(vx4,vy4);\\\\nq16 = sqrt(vx4*vx4+vy4*vy4);\\\\nq17 = atan2(vx3,vy3);\\\\nq18 = sqrt(vx3*vx3+vy3*vy3);\\\",\\\"pixel_eqs_eel\\\":\\\"x = 0.5 + (x-0.5)*q2;\\\\ny = 0.5 + (y-0.5)*q1;\\\\n\\\\n\\\\ndir = -q15 + asin(1);\\\\nb1 = 0.075;\\\\nm1 = q16*25;\\\\nxx = q12;\\\\nyy = 1-q13;\\\\nx1 = xx -sin(dir)*b1;\\\\ny1 = yy -cos(dir)*b1;\\\\nx2 = xx +sin(dir)*b1;\\\\ny2 = yy +cos(dir)*b1;\\\\nd1 = sqrt((x1-x)*(x1-x)+(y1-y)*(y1-y))-b1*2;\\\\nd2 = sqrt((x2-x)*(x2-x)+(y2-y)*(y2-y))-b1*2;\\\\nsi1 = sigmoid(-d1,1000);\\\\nsi2 = sigmoid(-d2,1000);\\\\ndx = (si1*sin(y1-y)*m1*d1 - si2*sin(y2-y)*m1*d2)*3*q1;\\\\ndy = (-si1*sin(x1-x)*m1*d1 + si2*sin(x2-x)*m1*d2)*3*q2;\\\\n\\\\ndir = -q17 + asin(1);\\\\nm1 = q18*25;\\\\nxx = q9;\\\\nyy = 1-q10;\\\\nx1 = xx -sin(dir)*b1;\\\\ny1 = yy -cos(dir)*b1;\\\\nx2 = xx +sin(dir)*b1;\\\\ny2 = yy +cos(dir)*b1;\\\\nd1 = sqrt((x1-x)*(x1-x)+(y1-y)*(y1-y))-b1*2;\\\\nd2 = sqrt((x2-x)*(x2-x)+(y2-y)*(y2-y))-b1*2;\\\\nsi1 = sigmoid(-d1,1000);\\\\nsi2 = sigmoid(-d2,1000);\\\\ndx = dx + (si1*sin(y1-y)*m1*d1 - si2*sin(y2-y)*m1*d2)*3*q1;\\\\ndy = dy + (-si1*sin(x1-x)*m1*d1 + si2*sin(x2-x)*m1*d2)*3*q2;\\\",\\\"warp\\\":\\\" shader_body { \\\\n vec3 ret_1;\\\\n vec2 tmpvar_2;\\\\n tmpvar_2 = (texsize.zw * 8.0);\\\\n vec3 tmpvar_3;\\\\n tmpvar_3 = (((texture (sampler_blur1, \\\\n (uv + (vec2(1.0, 0.0) * tmpvar_2))\\\\n ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n (uv - (vec2(1.0, 0.0) * tmpvar_2))\\\\n ).xyz * scale1) + bias1));\\\\n vec3 tmpvar_4;\\\\n tmpvar_4 = (((texture (sampler_blur1, \\\\n (uv + (vec2(0.0, 1.0) * tmpvar_2))\\\\n ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n (uv - (vec2(0.0, 1.0) * tmpvar_2))\\\\n ).xyz * scale1) + bias1));\\\\n vec2 tmpvar_5;\\\\n tmpvar_5.x = tmpvar_3.z;\\\\n tmpvar_5.y = tmpvar_4.z;\\\\n vec2 tmpvar_6;\\\\n tmpvar_6 = (uv + ((tmpvar_5 * texsize.zw) * 4.0));\\\\n ret_1.z = (((texture (sampler_main, tmpvar_6).z - \\\\n ((texture (sampler_main, tmpvar_6).z - ((texture (sampler_blur3, tmpvar_6).xyz * scale3) + bias3).z) * 0.02)\\\\n ) - 0.008) + ((texture (sampler_noise_lq, \\\\n (((uv_orig * texsize.xy) * texsize_noise_lq.zw) + rand_frame.xy)\\\\n ).xyz - 0.5) * 0.1)).x;\\\\n vec2 tmpvar_7;\\\\n tmpvar_7.x = tmpvar_3.x;\\\\n tmpvar_7.y = tmpvar_4.x;\\\\n vec2 tmpvar_8;\\\\n tmpvar_8 = ((0.5 + (uv - 0.5)) - (tmpvar_7 * texsize.zw));\\\\n ret_1.x = texture (sampler_main, tmpvar_8).x;\\\\n ret_1.x = (ret_1.x + ((\\\\n (ret_1.x - ((texture (sampler_blur3, tmpvar_8).xyz * scale3) + bias3))\\\\n .x * 0.4) + 0.006));\\\\n vec2 tmpvar_9;\\\\n tmpvar_9.x = tmpvar_3.x;\\\\n tmpvar_9.y = tmpvar_4.x;\\\\n vec2 tmpvar_10;\\\\n tmpvar_10.x = tmpvar_3.y;\\\\n tmpvar_10.y = tmpvar_4.y;\\\\n vec2 tmpvar_11;\\\\n tmpvar_11.x = tmpvar_3.z;\\\\n tmpvar_11.y = tmpvar_4.z;\\\\n ret_1.y = texture (sampler_fc_main, (((uv - \\\\n ((tmpvar_9 * texsize.zw) * 8.0)\\\\n ) + (\\\\n (tmpvar_10 * texsize.zw)\\\\n * 4.0)) + ((tmpvar_11 * texsize.zw) * 8.0))).y;\\\\n ret_1.y = (ret_1.y * (1.0 + (ret_1.x * 0.1)));\\\\n ret_1.y = (ret_1.y - (0.004 + (\\\\n clamp (ret_1.z, 0.0, 1.0)\\\\n * 0.04)));\\\\n vec4 tmpvar_12;\\\\n tmpvar_12.w = 1.0;\\\\n tmpvar_12.xyz = ret_1;\\\\n ret = tmpvar_12.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n vec3 ret_1;\\\\n vec2 tmpvar_2;\\\\n tmpvar_2 = (texsize.zw * 4.0);\\\\n vec3 tmpvar_3;\\\\n tmpvar_3 = (((texture (sampler_blur1, \\\\n (uv + (vec2(1.0, 0.0) * tmpvar_2))\\\\n ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n (uv - (vec2(1.0, 0.0) * tmpvar_2))\\\\n ).xyz * scale1) + bias1));\\\\n vec3 tmpvar_4;\\\\n tmpvar_4 = (((texture (sampler_blur1, \\\\n (uv + (vec2(0.0, 1.0) * tmpvar_2))\\\\n ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n (uv - (vec2(0.0, 1.0) * tmpvar_2))\\\\n ).xyz * scale1) + bias1));\\\\n vec2 tmpvar_5;\\\\n tmpvar_5.x = tmpvar_3.z;\\\\n tmpvar_5.y = tmpvar_4.z;\\\\n vec2 tmpvar_6;\\\\n tmpvar_6.x = tmpvar_3.y;\\\\n tmpvar_6.y = tmpvar_4.y;\\\\n vec2 tmpvar_7;\\\\n tmpvar_7 = ((uv - (tmpvar_5 * 0.1)) + (tmpvar_6 * 0.06));\\\\n vec4 tmpvar_8;\\\\n tmpvar_8 = texture (sampler_main, uv);\\\\n ret_1 = (((\\\\n ((texture (sampler_blur2, tmpvar_7).xyz * scale2) + bias2)\\\\n .x * \\\\n clamp ((1.0 - tmpvar_8.z), 0.0, 1.0)\\\\n ) * pow (hue_shader.yxz, vec3(8.0, 8.0, 8.0))) * 3.0);\\\\n ret_1 = (mix (ret_1, (\\\\n pow (hue_shader.yzx, vec3(8.0, 8.0, 8.0))\\\\n * 1.4), vec3((\\\\n (texture (sampler_main, tmpvar_7).x * 0.8)\\\\n + \\\\n ((texture (sampler_blur1, tmpvar_7).xyz * scale1) + bias1)\\\\n .x))) * clamp ((1.0 - \\\\n (((texture (sampler_blur1, uv).xyz * scale1) + bias1).y * 4.0)\\\\n ), 0.0, 1.0));\\\\n vec2 tmpvar_9;\\\\n tmpvar_9.x = tmpvar_3.y;\\\\n tmpvar_9.y = tmpvar_4.y;\\\\n vec3 tmpvar_10;\\\\n vec3 tmpvar_11;\\\\n tmpvar_11 = pow (hue_shader, vec3(8.0, 8.0, 8.0));\\\\n tmpvar_10 = mix (mix (ret_1, vec3(1.0, 1.0, 1.0), (\\\\n (tmpvar_11 * texture (sampler_main, clamp ((uv - (tmpvar_9 * 2.0)), 0.0, 1.0)).z)\\\\n * 1.2)), (tmpvar_11.zxy * 1.8), tmpvar_8.yyy);\\\\n ret_1 = tmpvar_10;\\\\n vec4 tmpvar_12;\\\\n tmpvar_12.w = 1.0;\\\\n tmpvar_12.xyz = tmpvar_10;\\\\n ret = tmpvar_12.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/flexi - mom, why the sky looks different today.json\":\n/*!*******************************************************************************!*\\\n !*** ./presets/converted/flexi - mom, why the sky looks different today.json ***!\n \\*******************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":5,\\\"gammaadj\\\":1,\\\"decay\\\":1,\\\"echo_zoom\\\":1,\\\"echo_alpha\\\":0.5,\\\"wave_thick\\\":1,\\\"wave_brighten\\\":0,\\\"wave_a\\\":0.004,\\\"wave_scale\\\":0.267,\\\"wave_smoothing\\\":0,\\\"wave_mystery\\\":-0.44,\\\"modwavealphastart\\\":1,\\\"modwavealphaend\\\":1,\\\"warpscale\\\":16.016,\\\"zoomexp\\\":11.56276,\\\"zoom\\\":1.05971,\\\"warp\\\":0.13126,\\\"wave_y\\\":0.04,\\\"ob_size\\\":0,\\\"ob_a\\\":1,\\\"ib_size\\\":0,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":0,\\\"mv_b\\\":0,\\\"mv_a\\\":0,\\\"b1ed\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":100,\\\"thickoutline\\\":1,\\\"rad\\\":0.01,\\\"tex_ang\\\":0.12566,\\\"tex_zoom\\\":1.51878,\\\"g\\\":0.99,\\\"b\\\":1,\\\"a\\\":0.1,\\\"g2\\\":0,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"thickoutline\\\":1,\\\"textured\\\":1,\\\"rad\\\":0.80013,\\\"ang\\\":4.64954,\\\"tex_zoom\\\":1.24471,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":0.77,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"thickoutline\\\":1,\\\"x\\\":1,\\\"rad\\\":3.0054,\\\"tex_ang\\\":0.12566,\\\"tex_zoom\\\":1.51878,\\\"r\\\":0,\\\"g\\\":1,\\\"g2\\\":0,\\\"a2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"thickoutline\\\":1,\\\"x\\\":1,\\\"rad\\\":0.39872,\\\"tex_ang\\\":0.12566,\\\"tex_zoom\\\":1.51878,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"scaling\\\":2.0231,\\\"smoothing\\\":0,\\\"r\\\":0,\\\"g\\\":0,\\\"b\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t2 = 0;\\\\nt3 = 0;\\\\nt4 = 0;\\\\ncl = 0;\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"tt3 = tt3*0.6 + (value1)*1;\\\\ntt2 = tt2*0.7 + tt3*0.2;\\\\ntt1 = tt1*0.8 + tt2*0.1;\\\\nd = d*0.9 + tt1*0.2;\\\\n\\\\ny = 0.5 + d*sample*(1-sample)*4;\\\\nx = -0.05 + sample*1.1;\\\"},{\\\"baseVals\\\":{\\\"scaling\\\":2.0231,\\\"smoothing\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t2 = 0;\\\\nt3 = 0;\\\\nt4 = 0;\\\\ncl = 0;\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"tt3 = tt3*0.6 + (value1)*1;\\\\ntt2 = tt2*0.7 + tt3*0.2;\\\\ntt1 = tt1*0.8 + tt2*0.1;\\\\nd = d*0.9 + tt1*0.2;\\\\n\\\\ny = 0.5 + d*sample*(1-sample)*4;\\\\nx = -0.05 + sample*1.1;\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"additive\\\":1,\\\"scaling\\\":100,\\\"smoothing\\\":0.6,\\\"r\\\":0,\\\"g\\\":0.4,\\\"a\\\":0.3,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"t1 = q1;\\\\nt2 = q2;\\\\nt3 = q3;\\\\nt4 = q4;\\\\nt5 = q5;\\\\nt6 = q6;\\\\nt7 = q7;\\\\nt8 = q8;\\\",\\\"point_eqs_eel\\\":\\\"sample = 1-sample;\\\\nxxx = xx;\\\\nyyy = yy;\\\\nxx = pow(sample,5)*t1 + 5*pow(sample,4)*(1-sample)*t1 + 10*pow(sample,3)*sqr(1-sample)*t2\\\\n+ 10*sqr(sample)*pow(1-sample,3)*t3 + 5*pow(1-sample,4)*sample*t4 + pow(1-sample,5)*t4;\\\\n\\\\nyy = pow(sample,5)*t5 + 5*pow(sample,4)*(1-sample)*t5 + 10*pow(sample,3)*sqr(1-sample)*t6\\\\n+ 10*sqr(sample)*pow(1-sample,3)*t7 + 5*pow(1-sample,4)*sample*t8 + pow(1-sample,5)*t8;\\\\nd = 1/sqrt(sqr(xx-xxx)+sqr(yy-yyy));\\\\nx = xx + sample*(1-sample)*(value1-value2)*(yy-yyy)*d;\\\\ny = yy - sample*(1-sample)*(value1-value2)*(xx-xxx)*d;\\\"},{\\\"baseVals\\\":{\\\"usedots\\\":1,\\\"scaling\\\":2.44415,\\\"smoothing\\\":0,\\\"r\\\":0,\\\"g\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t2 = 0;\\\\nt3 = 0;\\\\nt4 = 0;\\\\ncl = 0;\\\",\\\"frame_eqs_eel\\\":\\\"t8 = 1;\\\",\\\"point_eqs_eel\\\":\\\"t8 = -t8;\\\\ny = (1+t8)*0.01;\\\\nx = sample;\\\"}],\\\"init_eqs_eel\\\":\\\"q11 = 0.5/asin(1);\\\",\\\"frame_eqs_eel\\\":\\\"zoom = 1;\\\\nv = v*0.9 + (bass-treb)*0.04;\\\\nt = t+ v*0.01;\\\\nq12 = time*0.1 + t;\\\\nq13 = 0.25 + (bass_att-treb_att)*0.01;\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\" shader_body { \\\\n vec2 my_uv_1;\\\\n vec2 d_2;\\\\n vec3 ret_3;\\\\n vec2 tmpvar_4;\\\\n tmpvar_4 = (texsize.zw * 4.0);\\\\n vec3 tmpvar_5;\\\\n tmpvar_5 = (((texture (sampler_blur1, \\\\n fract((uv + (vec2(1.0, 0.0) * tmpvar_4)))\\\\n ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n fract((uv - (vec2(1.0, 0.0) * tmpvar_4)))\\\\n ).xyz * scale1) + bias1));\\\\n vec3 tmpvar_6;\\\\n tmpvar_6 = (((texture (sampler_blur1, \\\\n fract((uv + (vec2(0.0, 1.0) * tmpvar_4)))\\\\n ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n fract((uv - (vec2(0.0, 1.0) * tmpvar_4)))\\\\n ).xyz * scale1) + bias1));\\\\n vec3 tmpvar_7;\\\\n tmpvar_7 = ((texture (sampler_blur1, uv).xyz * scale1) + bias1);\\\\n d_2 = -(tmpvar_4);\\\\n float tmpvar_8;\\\\n tmpvar_8 = (d_2 * 4.0).x;\\\\n vec2 tmpvar_9;\\\\n tmpvar_9.x = tmpvar_5.y;\\\\n tmpvar_9.y = tmpvar_6.y;\\\\n vec2 tmpvar_10;\\\\n tmpvar_10.x = tmpvar_5.x;\\\\n tmpvar_10.y = tmpvar_6.x;\\\\n vec2 tmpvar_11;\\\\n tmpvar_11 = ((uv - (tmpvar_9 * d_2)) - (tmpvar_10 * tmpvar_8));\\\\n ret_3.y = texture (sampler_fc_main, (tmpvar_11 - floor(tmpvar_11))).y;\\\\n ret_3.y = (ret_3.y + ((\\\\n (ret_3.y - tmpvar_7.y)\\\\n * 0.042) + -0.0075));\\\\n vec2 tmpvar_12;\\\\n tmpvar_12.x = tmpvar_5.x;\\\\n tmpvar_12.y = tmpvar_6.x;\\\\n vec2 tmpvar_13;\\\\n tmpvar_13.x = tmpvar_5.z;\\\\n tmpvar_13.y = tmpvar_6.z;\\\\n my_uv_1 = ((uv - (tmpvar_12 * d_2)) - (tmpvar_13 * tmpvar_8));\\\\n ret_3.x = texture (sampler_fc_main, (my_uv_1 - floor(my_uv_1))).x;\\\\n ret_3.x = (ret_3.x + ((\\\\n (ret_3.x - tmpvar_7.x)\\\\n * 0.042) + -0.0075));\\\\n vec2 tmpvar_14;\\\\n tmpvar_14.x = tmpvar_5.z;\\\\n tmpvar_14.y = tmpvar_6.z;\\\\n vec2 tmpvar_15;\\\\n tmpvar_15.x = tmpvar_5.y;\\\\n tmpvar_15.y = tmpvar_6.y;\\\\n my_uv_1 = ((uv - (tmpvar_14 * d_2)) - (tmpvar_15 * tmpvar_8));\\\\n ret_3.z = texture (sampler_fc_main, (my_uv_1 - floor(my_uv_1))).z;\\\\n ret_3.z = (ret_3.z + ((\\\\n (ret_3.z - tmpvar_7.z)\\\\n * 0.042) + -0.0075));\\\\n vec4 tmpvar_16;\\\\n tmpvar_16.w = 1.0;\\\\n tmpvar_16.xyz = ret_3;\\\\n ret = tmpvar_16.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n vec2 uv_1;\\\\n uv_1 = uv;\\\\n vec3 ret_2;\\\\n float tmpvar_3;\\\\n tmpvar_3 = -(q12);\\\\n vec2 tmpvar_4;\\\\n tmpvar_4 = ((uv - 0.5) * aspect.wz);\\\\n float tmpvar_5;\\\\n float tmpvar_6;\\\\n tmpvar_6 = (min (abs(\\\\n (tmpvar_4.x / tmpvar_4.y)\\\\n ), 1.0) / max (abs(\\\\n (tmpvar_4.x / tmpvar_4.y)\\\\n ), 1.0));\\\\n float tmpvar_7;\\\\n tmpvar_7 = (tmpvar_6 * tmpvar_6);\\\\n tmpvar_7 = (((\\\\n ((((\\\\n ((((-0.01213232 * tmpvar_7) + 0.05368138) * tmpvar_7) - 0.1173503)\\\\n * tmpvar_7) + 0.1938925) * tmpvar_7) - 0.3326756)\\\\n * tmpvar_7) + 0.9999793) * tmpvar_6);\\\\n tmpvar_7 = (tmpvar_7 + (float(\\\\n (abs((tmpvar_4.x / tmpvar_4.y)) > 1.0)\\\\n ) * (\\\\n (tmpvar_7 * -2.0)\\\\n + 1.570796)));\\\\n tmpvar_5 = (tmpvar_7 * sign((tmpvar_4.x / tmpvar_4.y)));\\\\n if ((abs(tmpvar_4.y) > (1e-08 * abs(tmpvar_4.x)))) {\\\\n if ((tmpvar_4.y < 0.0)) {\\\\n if ((tmpvar_4.x >= 0.0)) {\\\\n tmpvar_5 += 3.141593;\\\\n } else {\\\\n tmpvar_5 = (tmpvar_5 - 3.141593);\\\\n };\\\\n };\\\\n } else {\\\\n tmpvar_5 = (sign(tmpvar_4.x) * 1.570796);\\\\n };\\\\n vec2 tmpvar_8;\\\\n tmpvar_8.x = ((tmpvar_5 * q11) - tmpvar_3);\\\\n tmpvar_8.y = (((q13 * \\\\n log(sqrt(dot (tmpvar_4, tmpvar_4)))\\\\n ) + (tmpvar_5 * q11)) + tmpvar_3);\\\\n uv_1 = (0.5 + (0.5 - abs(\\\\n ((fract((tmpvar_8 * 0.5)) * 2.0) - 1.0)\\\\n )));\\\\n vec4 tmpvar_9;\\\\n tmpvar_9 = texture (sampler_main, uv_1);\\\\n ret_2 = (vec3(dot (tmpvar_9.xyz, vec3(0.32, 0.49, 0.29))) * mix (vec3(1.0, 1.0, 1.0), vec3(0.2, 0.5, 1.0), tmpvar_9.xxx));\\\\n ret_2 = (ret_2 * 2.0);\\\\n vec4 tmpvar_10;\\\\n tmpvar_10.w = 1.0;\\\\n tmpvar_10.xyz = ret_2;\\\\n ret = tmpvar_10.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/flexi - patternton, district of media, capitol of the united abstractions of fractopia.json\":\n/*!***********************************************************************************************************************!*\\\n !*** ./presets/converted/flexi - patternton, district of media, capitol of the united abstractions of fractopia.json ***!\n \\***********************************************************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":5,\\\"gammaadj\\\":1,\\\"decay\\\":1,\\\"echo_zoom\\\":1,\\\"echo_alpha\\\":0.5,\\\"wave_thick\\\":1,\\\"wave_brighten\\\":0,\\\"wrap\\\":0,\\\"wave_a\\\":0.004,\\\"wave_scale\\\":0.242,\\\"wave_smoothing\\\":0,\\\"wave_mystery\\\":-0.44,\\\"modwavealphastart\\\":1,\\\"modwavealphaend\\\":1,\\\"warpanimspeed\\\":0.88,\\\"warpscale\\\":9.181,\\\"zoomexp\\\":0.65309,\\\"zoom\\\":0.87866,\\\"warp\\\":0.04914,\\\"wave_y\\\":0.04,\\\"ob_size\\\":0.05,\\\"ob_a\\\":1,\\\"ib_size\\\":0,\\\"ib_r\\\":0,\\\"ib_g\\\":0,\\\"ib_b\\\":0,\\\"ib_a\\\":1,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":0,\\\"mv_b\\\":0,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":100,\\\"thickoutline\\\":1,\\\"y\\\":0.04,\\\"rad\\\":0.01,\\\"tex_ang\\\":0.12566,\\\"tex_zoom\\\":1.51878,\\\"r\\\":0,\\\"a\\\":0,\\\"g2\\\":0,\\\"b2\\\":0.01,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"additive\\\":1,\\\"thickoutline\\\":1,\\\"textured\\\":1,\\\"x\\\":0.49,\\\"rad\\\":1.32907,\\\"tex_zoom\\\":0.49831,\\\"g\\\":1,\\\"b\\\":1,\\\"a\\\":0.99,\\\"g2\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"thickoutline\\\":1,\\\"x\\\":1,\\\"rad\\\":3.0054,\\\"tex_ang\\\":0.12566,\\\"tex_zoom\\\":1.51878,\\\"r\\\":0,\\\"g\\\":1,\\\"g2\\\":0,\\\"a2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"thickoutline\\\":1,\\\"x\\\":1,\\\"rad\\\":0.39872,\\\"tex_ang\\\":0.12566,\\\"tex_zoom\\\":1.51878,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"thick\\\":1,\\\"additive\\\":1,\\\"scaling\\\":2.0231,\\\"smoothing\\\":0,\\\"r\\\":0,\\\"b\\\":0},\\\"init_eqs_eel\\\":\\\"t2 = 0;\\\\nt3 = 0;\\\\nt4 = 0;\\\\ncl = 0;\\\",\\\"frame_eqs_eel\\\":\\\"r = 1; g = 0; b = 1;\\\",\\\"point_eqs_eel\\\":\\\"tt3 = tt3*0.6 + (value1)*1;\\\\ntt2 = tt2*0.7 + tt3*0.2;\\\\ntt1 = tt1*0.8 + tt2*0.1;\\\\nd = d*0.9 + tt1*0.2;\\\\n\\\\ny = 0.6 + d*sample*(1-sample)*2;\\\\nx = -0.05 + sample*1.1;\\\"},{\\\"baseVals\\\":{\\\"scaling\\\":2.44415,\\\"smoothing\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t2 = 0;\\\\nt3 = 0;\\\\nt4 = 0;\\\\ncl = 0;\\\",\\\"frame_eqs_eel\\\":\\\"t8 = 1;\\\",\\\"point_eqs_eel\\\":\\\"t8 = -t8;\\\\ny = sample;\\\\nx = 0.5 + t8*0.005;\\\\n\\\\npi3 = 3.1415*2*0.3333;\\\\nt = time + sample*2;\\\\nc=2;\\\\n\\\\nr = sin(t)*c;\\\\ng = sin(t+pi3)*c;\\\\n\\\\nb = sin(t-pi3)*c;\\\\n\\\\n\\\\nr = if(above(r,1),1,r);\\\\nr = if(below(r,0),0,r);\\\\ng = if(above(g,1),1,g);\\\\ng = if(below(g,0),0,g);\\\\nb = if(above(b,1),1,b);\\\\nb = if(below(b,0),0,b);\\\\n\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"additive\\\":1,\\\"scaling\\\":100,\\\"smoothing\\\":0.6,\\\"r\\\":0,\\\"g\\\":0.4,\\\"a\\\":0.3,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"t1 = q1;\\\\nt2 = q2;\\\\nt3 = q3;\\\\nt4 = q4;\\\\nt5 = q5;\\\\nt6 = q6;\\\\nt7 = q7;\\\\nt8 = q8;\\\",\\\"point_eqs_eel\\\":\\\"sample = 1-sample;\\\\nxxx = xx;\\\\nyyy = yy;\\\\nxx = pow(sample,5)*t1 + 5*pow(sample,4)*(1-sample)*t1 + 10*pow(sample,3)*sqr(1-sample)*t2\\\\n+ 10*sqr(sample)*pow(1-sample,3)*t3 + 5*pow(1-sample,4)*sample*t4 + pow(1-sample,5)*t4;\\\\n\\\\nyy = pow(sample,5)*t5 + 5*pow(sample,4)*(1-sample)*t5 + 10*pow(sample,3)*sqr(1-sample)*t6\\\\n+ 10*sqr(sample)*pow(1-sample,3)*t7 + 5*pow(1-sample,4)*sample*t8 + pow(1-sample,5)*t8;\\\\nd = 1/sqrt(sqr(xx-xxx)+sqr(yy-yyy));\\\\nx = xx + sample*(1-sample)*(value1-value2)*(yy-yyy)*d;\\\\ny = yy - sample*(1-sample)*(value1-value2)*(xx-xxx)*d;\\\"},{\\\"baseVals\\\":{\\\"usedots\\\":1,\\\"scaling\\\":2.44415,\\\"smoothing\\\":0,\\\"r\\\":0,\\\"g\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t2 = 0;\\\\nt3 = 0;\\\\nt4 = 0;\\\\ncl = 0;\\\",\\\"frame_eqs_eel\\\":\\\"t8 = 1;\\\",\\\"point_eqs_eel\\\":\\\"t8 = -t8;\\\\ny = (1+t8)*0.01;\\\\nx = sample;\\\"}],\\\"init_eqs_eel\\\":\\\"x1 = 0.9;\\\\ny1 = 0.5;\\\\n\\\\nx2 = 0.5; y2 = 0.5;\\\\nx3 = 0.5; y3 = 0.5;\\\\nx4 = 0.5; y4 = 0.5;\\\",\\\"frame_eqs_eel\\\":\\\"zoom = 1;\\\\n//warp = 0;\\\\nscale = 1;\\\\nangle = time*.1;\\\\ntranslation_x = 0;\\\\ntranslation_y = 0.12;\\\\n\\\\na_r = cos(angle)*scale;\\\\na_i = sin(angle)*scale;\\\\nb_r = translation_x;\\\\nb_i = translation_y;\\\\n\\\\n//complex inverted\\\\nscale = 1.6;\\\\nangle = 0;\\\\ntranslation_u = 0;\\\\ntranslation_v = 0;\\\\n\\\\n// c\\\\nq15 = cos(angle)*scale;\\\\nq16 = sin(angle)*scale;\\\\n\\\\n// d\\\\nq17 = translation_u;\\\\nq18 = translation_v;\\\\n\\\\n// c^(-1)\\\\nc_inv_r = q15/(q15*q15+q16*q16);\\\\nc_inv_i = q16/(q15*q15+q16*q16);\\\\n\\\\n// a*c^(-1)\\\\nq11 = (a_r*c_inv_r - a_i*c_inv_i);\\\\nq12 = (a_r*c_inv_i - a_i*c_inv_r);\\\\n\\\\n// (bc-ad)\\\\nbcad_r = (b_r*q15 - b_i*q16)-(a_r*q17-a_i*q18);\\\\nbcad_i = (b_r*q16 - b_i*q15)-(a_r*q18-a_i*q17);\\\\n\\\\n// mu*c^(-1)\\\\nq13 = bcad_r*c_inv_r - bcad_i*c_inv_i;\\\\nq14 = bcad_r*c_inv_i - bcad_i*c_inv_r;\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\" shader_body { \\\\n float conway_1;\\\\n vec3 ret_2;\\\\n vec2 tmpvar_3;\\\\n tmpvar_3.x = (((\\\\n ((texture (sampler_blur2, (uv + vec2(0.02, 0.0))).xyz * scale2) + bias2)\\\\n - \\\\n ((texture (sampler_blur2, (uv - vec2(0.02, 0.0))).xyz * scale2) + bias2)\\\\n ).y * 1280.0) * texsize.z);\\\\n tmpvar_3.y = (((\\\\n ((texture (sampler_blur2, (uv + vec2(0.0, 0.02))).xyz * scale2) + bias2)\\\\n - \\\\n ((texture (sampler_blur2, (uv - vec2(0.0, 0.02))).xyz * scale2) + bias2)\\\\n ).y * 1024.0) * texsize.w);\\\\n ret_2.y = texture (sampler_pc_main, (uv - (tmpvar_3 * 0.004))).y;\\\\n ret_2.y = (ret_2.y + ((\\\\n ((ret_2.y - ((texture (sampler_blur1, uv).xyz * scale1) + bias1).y) - 0.1)\\\\n * 0.1) + 0.02));\\\\n vec2 tmpvar_4;\\\\n tmpvar_4 = (vec2(0.0, 1.0) * texsize.zw);\\\\n ret_2.z = (texture (sampler_fc_main, (uv - tmpvar_4)).z - 0.004);\\\\n conway_1 = (texture (sampler_pw_main, (uv_orig - texsize.zw)).x + texture (sampler_pw_main, (uv_orig + (vec2(0.0, -1.0) * texsize.zw))).x);\\\\n conway_1 = (conway_1 + texture (sampler_pw_main, (uv_orig + (vec2(1.0, -1.0) * texsize.zw))).x);\\\\n conway_1 = (conway_1 + texture (sampler_pw_main, (uv_orig + (vec2(-1.0, 0.0) * texsize.zw))).x);\\\\n conway_1 = (conway_1 + texture (sampler_pw_main, (uv_orig + (vec2(1.0, 0.0) * texsize.zw))).x);\\\\n conway_1 = (conway_1 + texture (sampler_pw_main, (uv_orig + (vec2(-1.0, 1.0) * texsize.zw))).x);\\\\n conway_1 = (conway_1 + texture (sampler_pw_main, (uv_orig + tmpvar_4)).x);\\\\n conway_1 = (conway_1 + texture (sampler_pw_main, (uv_orig + texsize.zw)).x);\\\\n conway_1 = (conway_1 - fract(conway_1));\\\\n float tmpvar_5;\\\\n tmpvar_5 = clamp (texture (sampler_pc_main, uv_orig).x, 0.0, 1.0);\\\\n ret_2.x = (clamp ((1.0 - \\\\n abs((conway_1 - 3.0))\\\\n ), 0.0, 1.0) * (1.0 - tmpvar_5));\\\\n ret_2.x = (ret_2.x + (clamp (\\\\n max ((1.0 - abs((conway_1 - 2.0))), (1.0 - abs((conway_1 - 3.0))))\\\\n , 0.0, 1.0) * tmpvar_5));\\\\n vec4 tmpvar_6;\\\\n tmpvar_6.w = 1.0;\\\\n tmpvar_6.xyz = ret_2;\\\\n ret = tmpvar_6.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n vec2 moebius_1;\\\\n vec3 ret_2;\\\\n vec2 tmpvar_3;\\\\n tmpvar_3.x = q11;\\\\n tmpvar_3.y = q12;\\\\n vec2 tmpvar_4;\\\\n tmpvar_4.x = q17;\\\\n tmpvar_4.y = q18;\\\\n vec2 tmpvar_5;\\\\n vec2 tmpvar_6;\\\\n tmpvar_6 = (uv - 0.5);\\\\n tmpvar_5 = (tmpvar_6 * aspect.xy);\\\\n vec2 tmpvar_7;\\\\n tmpvar_7.x = ((tmpvar_5.x * q15) - (tmpvar_5.y * q16));\\\\n tmpvar_7.y = ((tmpvar_5.x * q16) - (tmpvar_5.y * q15));\\\\n vec2 tmpvar_8;\\\\n tmpvar_8 = (tmpvar_7 + tmpvar_4);\\\\n vec2 tmpvar_9;\\\\n tmpvar_9.x = ((q13 * tmpvar_8.x) + (q14 * tmpvar_8.y));\\\\n tmpvar_9.y = ((q14 * tmpvar_8.x) - (q13 * tmpvar_8.y));\\\\n moebius_1 = (((tmpvar_9 / \\\\n ((tmpvar_8.x * tmpvar_8.x) + (tmpvar_8.y * tmpvar_8.y))\\\\n ) + tmpvar_3) * 0.5);\\\\n float tmpvar_10;\\\\n tmpvar_10 = sqrt(dot (moebius_1, moebius_1));\\\\n moebius_1 = (0.5 + ((\\\\n (1.0 - abs(((\\\\n fract((moebius_1 * 0.5))\\\\n * 2.0) - 1.0)))\\\\n - 0.5) * 0.95));\\\\n vec2 tmpvar_11;\\\\n tmpvar_11 = (0.5 + (tmpvar_6 * 0.2));\\\\n ret_2 = (texture (sampler_main, tmpvar_11).z * vec3(0.4, 0.0, 0.7));\\\\n ret_2 = (mix (ret_2, vec3(0.0, 1.0, 1.0), vec3(clamp (texture (sampler_fc_main, moebius_1).y, 0.0, 1.0))) * (1.4 - pow (\\\\n (tmpvar_10 * 0.8)\\\\n , 0.3)));\\\\n vec3 tmpvar_12;\\\\n tmpvar_12 = mix (mix (mix (ret_2, vec3(4.0, 1.0, 0.0), vec3(\\\\n ((clamp ((texture (sampler_fc_main, tmpvar_11).y - texture (sampler_pc_main, tmpvar_11).y), 0.0, 1.0) * 4.0) * (tmpvar_10 * tmpvar_10))\\\\n )), vec3(-4.0, -4.0, -4.0), texture (sampler_main, tmpvar_11).xxx), vec3(2.0, 2.0, 2.0), vec3((texture (sampler_pc_main, tmpvar_11).x * 0.75)));\\\\n ret_2 = tmpvar_12;\\\\n vec4 tmpvar_13;\\\\n tmpvar_13.w = 1.0;\\\\n tmpvar_13.xyz = tmpvar_12;\\\\n ret = tmpvar_13.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/flexi - swing out on the spiral.json\":\n/*!****************************************************************!*\\\n !*** ./presets/converted/flexi - swing out on the spiral.json ***!\n \\****************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":5,\\\"gammaadj\\\":1.56,\\\"decay\\\":1,\\\"echo_zoom\\\":0.362,\\\"echo_orient\\\":1,\\\"wave_thick\\\":1,\\\"wave_brighten\\\":0,\\\"darken\\\":1,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":1.599,\\\"wave_smoothing\\\":0,\\\"wave_mystery\\\":-0.5,\\\"modwavealphastart\\\":2,\\\"modwavealphaend\\\":2,\\\"warpscale\\\":0.107,\\\"zoomexp\\\":0.1584,\\\"fshader\\\":1,\\\"warp\\\":0.01,\\\"wave_r\\\":0.51,\\\"wave_g\\\":0.5,\\\"ob_size\\\":0,\\\"ob_a\\\":1,\\\"ib_r\\\":0,\\\"ib_g\\\":0,\\\"ib_b\\\":0,\\\"ib_a\\\":1,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":0.5,\\\"mv_r\\\":0,\\\"mv_g\\\":0,\\\"mv_b\\\":0,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"thickoutline\\\":1,\\\"rad\\\":0.50126,\\\"tex_zoom\\\":0.99996,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"g2\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x = 0.5+sin(time*0.618)*0.2;\\\\ny = 0.5+cos(time*1.618)*0.2;\\\\nrad = bass*0.05;\\\\nborder_r = 1-(sin(time*1.25)*0.3+0.7);\\\\nborder_g = 1-(sin(time)*0.3+0.3);\\\\nborder_b = 1-(sin(time/3)*0.5+0.5);\\\"},{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"thickoutline\\\":1,\\\"rad\\\":0.50126,\\\"g\\\":1,\\\"b\\\":1,\\\"g2\\\":0,\\\"b2\\\":1,\\\"border_g\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x = 0.5+sin(time*2.618)*0.3;\\\\ny = 0.5+cos(time*3.14)*0.3;\\\\nrad = bass*0.05;\\\\nborder_r = 1-(sin(time*1.25)*0.3+0.7);\\\\nborder_g = 1-(sin(time)*0.3+0.3);\\\\nborder_b = 1-(sin(time/3)*0.5+0.5);\\\\n\\\"},{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"thickoutline\\\":1,\\\"rad\\\":0.50126,\\\"tex_zoom\\\":0.9998,\\\"g\\\":1,\\\"b\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x = 0.5+sin(-time*2.618)*0.4;\\\\ny = 0.5+cos(-time*1.14)*0.4;\\\\nrad = bass*0.05;\\\\nborder_r = 1-(sin(time*1.25)*0.3+0.7);\\\\nborder_g = 1-(sin(time)*0.3+0.3);\\\\nborder_b = 1-(sin(time/3)*0.5+0.5);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"scaling\\\":0.16188,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"additive\\\":1,\\\"scaling\\\":25.12601,\\\"smoothing\\\":1,\\\"a\\\":0.1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"q11 = 0.5/asin(1);\\\",\\\"frame_eqs_eel\\\":\\\"//zoom = 0.99;\\\\nib_r = sin(time*1.25*4)*0.3+0.7;\\\\nib_g = sin(time*4)*0.3+0.3;\\\\nib_b = sin(time/3*4)*0.5+0.5;\\\\n\\\\nxx1 = xx1*0.9 + (bass)*0.01;\\\\nxx2 = xx2*0.9 + (treb)*0.01;\\\\nyy1 = yy1*0.94 + (treb+bass)*0.0075;\\\\n\\\\nx1 = 0.5 + (xx1-xx2)*3;\\\\ny1 = 0.4 + yy1;\\\\n\\\\nx1 = max(0,min(1,x1)); y1 = max(0,min(1,y1));\\\\n\\\\nspring = 25;\\\\ngrav = 1.1;\\\\nresist = 1;\\\\nbounce = 0.85;\\\\ndt = 0.0002*(60/fps);\\\\n\\\\nvx2 = vx2*(1-resist*dt) + dt*((x1+x3-2*x2)*spring);\\\\nvy2 = vy2*(1-resist*dt) + dt*((y1+y3-2*y2)*spring-grav);\\\\nvx3 = vx3*(1-resist*dt) + dt*((x2+x4-2*x3)*spring);\\\\nvy3 = vy3*(1-resist*dt) + dt*((y2+y4-2*y3)*spring-grav);\\\\nvx4 = vx4*(1-resist*dt) + dt*((x3-x4)*spring);\\\\nvy4 = vy4*(1-resist*dt) + dt*((y3-y4)*spring-grav);\\\\n\\\\nx2 = x2 + vx2;\\\\ny2 = y2 + vy2;\\\\nx3 = x3 + vx3;\\\\ny3 = y3 + vy3;\\\\nx4 = x4 + vx4;\\\\ny4 = y4 + vy4;\\\\n\\\\nvx2 = if(above(x2,0),vx2,abs(vx2)*bounce);\\\\nvx2 = if(below(x2,1),vx2,-abs(vx2)*bounce);\\\\nvx3 = if(above(x3,0),vx3,abs(vx3)*bounce);\\\\nvx3 = if(below(x3,1),vx3,-abs(vx3)*bounce);\\\\nvx4 = if(above(x4,0),vx4,abs(vx4)*bounce);\\\\nvx4 = if(below(x4,1),vx4,-abs(vx4)*bounce);\\\\nvy2 = if(above(y2,0),vy2,abs(vy2)*bounce);\\\\nvy2 = if(below(y2,1),vy2,-abs(vy2)*bounce);\\\\nvy3 = if(above(y3,0),vy3,abs(vy3)*bounce);\\\\nvy3 = if(below(y3,1),vy3,-abs(vy3)*bounce);\\\\nvy4 = if(above(y4,0),vy4,abs(vy4)*bounce);\\\\nvy4 = if(below(y4,1),vy4,-abs(vy4)*bounce);\\\\nq4 = x4;\\\\nq8 = y4;\\\\n\\\\nq1 = aspectx;\\\\nq2 = aspecty;\\\\n\\\\nzoom = 1;\\\\nwarp = 0;\\\\nbb = bb*0.99 + bass*0.02;\\\\nmm = mm*0.99 + mid*0.02;\\\\ntt = tt*0.99 + treb*0.02;\\\\n\\\\nmx = max(max(bb,mm),tt);\\\\nmn = min(min(bb,mm),tt);\\\\n\\\\nob_r = (bb-mn)/(mx-mn);\\\\nob_b = (mm-mn)/(mx-mn);\\\\nob_g = (tt-mn)/(mx-mn);\\\\nq6 = atan2(vx4,vy4);\\\\nq5 = sqrt(vx4*vx4 + vy4*vy4);\\\\n\\\\na = a*0.95 + q5;\\\\n\\\\ns = s*0.9 + a;\\\\nq3 = s*0.1;\\\\nt = t + 0.1/fps;\\\\nt = if(above(t,2),t-2,t);\\\\nq12 = -t;\\\\nmonitor = t;\\\\nwave_a = 0;\\\",\\\"pixel_eqs_eel\\\":\\\"x = 0.5 + (x-0.5)*q1;\\\\ny = 0.5 + (y-0.5)*q2;\\\\n\\\\ndir = -q6*1 + asin(1)*0;\\\\n\\\\nxx = q4;\\\\nyy = 1-q8;\\\\n\\\\ndx = 0; dy = 0;\\\\n\\\\nd = sqrt((x-xx)*(x-xx)+(y-yy)*(y-yy));\\\\n\\\\nr = 0.08;\\\\nv = -15*q5;\\\\ndx = v*sin(dir)*(r-d)*(1-sigmoid(d-r,200))*q2;\\\\ndy = v*cos(dir)*(r-d)*(1-sigmoid(d-r,200))*q1;\\\",\\\"warp\\\":\\\" shader_body { \\\\n vec3 tmpvar_1;\\\\n vec4 tmpvar_2;\\\\n tmpvar_2 = texture (sampler_main, uv);\\\\n tmpvar_1 = vec3((((tmpvar_2.x + tmpvar_2.y) + tmpvar_2.z) * 0.33333));\\\\n vec4 tmpvar_3;\\\\n tmpvar_3.w = 1.0;\\\\n tmpvar_3.xyz = ((texture (sampler_main, clamp (\\\\n (uv - ((vec2(0.0, 0.0168) * (tmpvar_1 - 0.35).xy) * (tmpvar_1 - 0.4).xy))\\\\n , 0.0, 1.0)).xyz - 0.001) + ((texture (sampler_noise_lq, \\\\n (((uv_orig * texsize.xy) * (texsize_noise_lq.zw * 2.0)) + rand_frame.xy)\\\\n ) - 0.5) * 0.04).xyz);\\\\n ret = tmpvar_3.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n vec2 tmpvar_1;\\\\n tmpvar_1 = ((uv - 0.5).yx * aspect.zw);\\\\n float tmpvar_2;\\\\n float tmpvar_3;\\\\n tmpvar_3 = (min (abs(\\\\n (tmpvar_1.x / tmpvar_1.y)\\\\n ), 1.0) / max (abs(\\\\n (tmpvar_1.x / tmpvar_1.y)\\\\n ), 1.0));\\\\n float tmpvar_4;\\\\n tmpvar_4 = (tmpvar_3 * tmpvar_3);\\\\n tmpvar_4 = (((\\\\n ((((\\\\n ((((-0.01213232 * tmpvar_4) + 0.05368138) * tmpvar_4) - 0.1173503)\\\\n * tmpvar_4) + 0.1938925) * tmpvar_4) - 0.3326756)\\\\n * tmpvar_4) + 0.9999793) * tmpvar_3);\\\\n tmpvar_4 = (tmpvar_4 + (float(\\\\n (abs((tmpvar_1.x / tmpvar_1.y)) > 1.0)\\\\n ) * (\\\\n (tmpvar_4 * -2.0)\\\\n + 1.570796)));\\\\n tmpvar_2 = (tmpvar_4 * sign((tmpvar_1.x / tmpvar_1.y)));\\\\n if ((abs(tmpvar_1.y) > (1e-08 * abs(tmpvar_1.x)))) {\\\\n if ((tmpvar_1.y < 0.0)) {\\\\n if ((tmpvar_1.x >= 0.0)) {\\\\n tmpvar_2 += 3.141593;\\\\n } else {\\\\n tmpvar_2 = (tmpvar_2 - 3.141593);\\\\n };\\\\n };\\\\n } else {\\\\n tmpvar_2 = (sign(tmpvar_1.x) * 1.570796);\\\\n };\\\\n vec2 tmpvar_5;\\\\n tmpvar_5.x = (tmpvar_2 * q11);\\\\n tmpvar_5.y = (((0.5 * \\\\n log(sqrt(dot (tmpvar_1, tmpvar_1)))\\\\n ) - (tmpvar_2 * q11)) + q12);\\\\n vec4 tmpvar_6;\\\\n tmpvar_6.w = 1.0;\\\\n tmpvar_6.xyz = pow (texture (sampler_main, (0.5 + (\\\\n (0.5 - abs(((\\\\n fract((tmpvar_5 * 0.5))\\\\n * 2.0) - 1.0)))\\\\n * vec2(0.96, 1.0)))).xyz, vec3(0.618034, 0.618034, 0.618034));\\\\n ret = tmpvar_6.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/flexi - what is the matrix.json\":\n/*!***********************************************************!*\\\n !*** ./presets/converted/flexi - what is the matrix.json ***!\n \\***********************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":5,\\\"gammaadj\\\":1,\\\"decay\\\":1,\\\"echo_zoom\\\":1,\\\"echo_alpha\\\":0.5,\\\"wave_thick\\\":1,\\\"wave_brighten\\\":0,\\\"wrap\\\":0,\\\"wave_a\\\":0.004,\\\"wave_scale\\\":0.242,\\\"wave_smoothing\\\":0,\\\"wave_mystery\\\":-0.44,\\\"modwavealphastart\\\":1,\\\"modwavealphaend\\\":1,\\\"warpanimspeed\\\":0.397,\\\"warpscale\\\":15.099,\\\"zoomexp\\\":0.65309,\\\"zoom\\\":0.87866,\\\"warp\\\":0.04027,\\\"wave_y\\\":0.04,\\\"ob_size\\\":0,\\\"ob_a\\\":1,\\\"ib_size\\\":0,\\\"ib_r\\\":0,\\\"ib_g\\\":0,\\\"ib_b\\\":0,\\\"ib_a\\\":1,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":0,\\\"mv_b\\\":0,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":100,\\\"thickoutline\\\":1,\\\"y\\\":0.04,\\\"rad\\\":0.01,\\\"tex_ang\\\":0.12566,\\\"tex_zoom\\\":1.51878,\\\"r\\\":0,\\\"a\\\":0,\\\"g2\\\":0,\\\"b2\\\":0.01,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"additive\\\":1,\\\"thickoutline\\\":1,\\\"textured\\\":1,\\\"x\\\":0.49,\\\"rad\\\":1.32907,\\\"tex_zoom\\\":0.49831,\\\"g\\\":1,\\\"b\\\":1,\\\"a\\\":0.99,\\\"g2\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"thickoutline\\\":1,\\\"x\\\":1,\\\"rad\\\":3.0054,\\\"tex_ang\\\":0.12566,\\\"tex_zoom\\\":1.51878,\\\"r\\\":0,\\\"g\\\":1,\\\"g2\\\":0,\\\"a2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"thickoutline\\\":1,\\\"x\\\":1,\\\"rad\\\":0.39872,\\\"tex_ang\\\":0.12566,\\\"tex_zoom\\\":1.51878,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"thick\\\":1,\\\"additive\\\":1,\\\"scaling\\\":2.0231,\\\"smoothing\\\":0,\\\"r\\\":0,\\\"b\\\":0},\\\"init_eqs_eel\\\":\\\"t2 = 0;\\\\nt3 = 0;\\\\nt4 = 0;\\\\ncl = 0;\\\",\\\"frame_eqs_eel\\\":\\\"r = 1; g = 0; b = 1;\\\",\\\"point_eqs_eel\\\":\\\"tt3 = tt3*0.6 + (value1)*1;\\\\ntt2 = tt2*0.7 + tt3*0.2;\\\\ntt1 = tt1*0.8 + tt2*0.1;\\\\nd = d*0.9 + tt1*0.2;\\\\n\\\\ny = 0.6 + d*sample*(1-sample)*2;\\\\nx = -0.05 + sample*1.1;\\\"},{\\\"baseVals\\\":{\\\"scaling\\\":2.44415,\\\"smoothing\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t2 = 0;\\\\nt3 = 0;\\\\nt4 = 0;\\\\ncl = 0;\\\",\\\"frame_eqs_eel\\\":\\\"t8 = 1;\\\",\\\"point_eqs_eel\\\":\\\"t8 = -t8;\\\\ny = sample;\\\\nx = 0.5 + t8*0.005;\\\\n\\\\npi3 = 3.1415*2*0.3333;\\\\nt = time + sample*2;\\\\nc=2;\\\\n\\\\nr = sin(t)*c;\\\\ng = sin(t+pi3)*c;\\\\n\\\\nb = sin(t-pi3)*c;\\\\n\\\\n\\\\nr = if(above(r,1),1,r);\\\\nr = if(below(r,0),0,r);\\\\ng = if(above(g,1),1,g);\\\\ng = if(below(g,0),0,g);\\\\nb = if(above(b,1),1,b);\\\\nb = if(below(b,0),0,b);\\\\n\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"additive\\\":1,\\\"scaling\\\":100,\\\"smoothing\\\":0.6,\\\"r\\\":0,\\\"g\\\":0.4,\\\"a\\\":0.3,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"t1 = q1;\\\\nt2 = q2;\\\\nt3 = q3;\\\\nt4 = q4;\\\\nt5 = q5;\\\\nt6 = q6;\\\\nt7 = q7;\\\\nt8 = q8;\\\",\\\"point_eqs_eel\\\":\\\"sample = 1-sample;\\\\nxxx = xx;\\\\nyyy = yy;\\\\nxx = pow(sample,5)*t1 + 5*pow(sample,4)*(1-sample)*t1 + 10*pow(sample,3)*sqr(1-sample)*t2\\\\n+ 10*sqr(sample)*pow(1-sample,3)*t3 + 5*pow(1-sample,4)*sample*t4 + pow(1-sample,5)*t4;\\\\n\\\\nyy = pow(sample,5)*t5 + 5*pow(sample,4)*(1-sample)*t5 + 10*pow(sample,3)*sqr(1-sample)*t6\\\\n+ 10*sqr(sample)*pow(1-sample,3)*t7 + 5*pow(1-sample,4)*sample*t8 + pow(1-sample,5)*t8;\\\\nd = 1/sqrt(sqr(xx-xxx)+sqr(yy-yyy));\\\\nx = xx + sample*(1-sample)*(value1-value2)*(yy-yyy)*d;\\\\ny = yy - sample*(1-sample)*(value1-value2)*(xx-xxx)*d;\\\"},{\\\"baseVals\\\":{\\\"usedots\\\":1,\\\"scaling\\\":2.44415,\\\"smoothing\\\":0,\\\"r\\\":0,\\\"g\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t2 = 0;\\\\nt3 = 0;\\\\nt4 = 0;\\\\ncl = 0;\\\",\\\"frame_eqs_eel\\\":\\\"t8 = 1;\\\",\\\"point_eqs_eel\\\":\\\"t8 = -t8;\\\\ny = (1+t8)*0.01;\\\\nx = sample;\\\"}],\\\"init_eqs_eel\\\":\\\"x1 = 0.9;\\\\ny1 = 0.5;\\\\n\\\\nx2 = 0.5; y2 = 0.5;\\\\nx3 = 0.5; y3 = 0.5;\\\\nx4 = 0.5; y4 = 0.5;\\\",\\\"frame_eqs_eel\\\":\\\"zoom = 0.998;\\\\n//warp = 0;\\\\nscale = 1;\\\\nangle = time*.02;\\\\ntranslation_x = 0;\\\\ntranslation_y = 0.12;\\\\n\\\\na_r = cos(angle)*scale;\\\\na_i = sin(angle)*scale;\\\\nb_r = translation_x;\\\\nb_i = translation_y;\\\\n\\\\n//complex inverted\\\\nscale = 1;\\\\nangle = sin(time*0.1337)*0.3*0;\\\\ntranslation_u = 0;\\\\ntranslation_v = -0.2;\\\\n\\\\n// c\\\\nq15 = cos(angle)*scale;\\\\nq16 = sin(angle)*scale;\\\\n\\\\n// d\\\\nq17 = translation_u;\\\\nq18 = translation_v;\\\\n\\\\n// c^(-1)\\\\nc_inv_r = q15/(q15*q15+q16*q16);\\\\nc_inv_i = q16/(q15*q15+q16*q16);\\\\n\\\\n// a*c^(-1)\\\\nq11 = (a_r*c_inv_r - a_i*c_inv_i);\\\\nq12 = (a_r*c_inv_i - a_i*c_inv_r);\\\\n\\\\n// (bc-ad)\\\\nbcad_r = (b_r*q15 - b_i*q16)-(a_r*q17-a_i*q18);\\\\nbcad_i = (b_r*q16 - b_i*q15)-(a_r*q18-a_i*q17);\\\\n\\\\n// mu*c^(-1)\\\\nq13 = bcad_r*c_inv_r - bcad_i*c_inv_i;\\\\nq14 = bcad_r*c_inv_i - bcad_i*c_inv_r;\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\" shader_body { \\\\n float conway_1;\\\\n vec3 ret_2;\\\\n vec2 tmpvar_3;\\\\n tmpvar_3.x = (((\\\\n ((texture (sampler_blur2, (uv + vec2(0.02, 0.0))).xyz * scale2) + bias2)\\\\n - \\\\n ((texture (sampler_blur2, (uv - vec2(0.02, 0.0))).xyz * scale2) + bias2)\\\\n ).y * 1280.0) * texsize.z);\\\\n tmpvar_3.y = (((\\\\n ((texture (sampler_blur2, (uv + vec2(0.0, 0.02))).xyz * scale2) + bias2)\\\\n - \\\\n ((texture (sampler_blur2, (uv - vec2(0.0, 0.02))).xyz * scale2) + bias2)\\\\n ).y * 1024.0) * texsize.w);\\\\n ret_2.y = texture (sampler_pc_main, (uv - (tmpvar_3 * 0.004))).y;\\\\n ret_2.y = (ret_2.y + ((\\\\n ((ret_2.y - ((texture (sampler_blur1, uv).xyz * scale1) + bias1).y) - 0.1)\\\\n * 0.1) + 0.02));\\\\n ret_2.z = (texture (sampler_fc_main, (0.5 + (\\\\n (uv - 0.5)\\\\n * 0.992))).z - 0.004);\\\\n conway_1 = (texture (sampler_pw_main, (uv_orig - texsize.zw)).x + texture (sampler_pw_main, (uv_orig + (vec2(0.0, -1.0) * texsize.zw))).x);\\\\n conway_1 = (conway_1 + texture (sampler_pw_main, (uv_orig + (vec2(1.0, -1.0) * texsize.zw))).x);\\\\n conway_1 = (conway_1 + texture (sampler_pw_main, (uv_orig + (vec2(-1.0, 0.0) * texsize.zw))).x);\\\\n conway_1 = (conway_1 + texture (sampler_pw_main, (uv_orig + (vec2(1.0, 0.0) * texsize.zw))).x);\\\\n conway_1 = (conway_1 + texture (sampler_pw_main, (uv_orig + (vec2(-1.0, 1.0) * texsize.zw))).x);\\\\n conway_1 = (conway_1 + texture (sampler_pw_main, (uv_orig + (vec2(0.0, 1.0) * texsize.zw))).x);\\\\n conway_1 = (conway_1 + texture (sampler_pw_main, (uv_orig + texsize.zw)).x);\\\\n conway_1 = (conway_1 - fract(conway_1));\\\\n float tmpvar_4;\\\\n tmpvar_4 = clamp (texture (sampler_pc_main, uv_orig).x, 0.0, 1.0);\\\\n ret_2.x = (clamp ((1.0 - \\\\n abs((conway_1 - 3.0))\\\\n ), 0.0, 1.0) * (1.0 - tmpvar_4));\\\\n ret_2.x = (ret_2.x + (clamp (\\\\n max ((1.0 - abs((conway_1 - 2.0))), (1.0 - abs((conway_1 - 3.0))))\\\\n , 0.0, 1.0) * tmpvar_4));\\\\n vec4 tmpvar_5;\\\\n tmpvar_5.w = 1.0;\\\\n tmpvar_5.xyz = ret_2;\\\\n ret = tmpvar_5.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n vec2 moebius_1;\\\\n vec3 ret_2;\\\\n vec2 tmpvar_3;\\\\n tmpvar_3.x = q11;\\\\n tmpvar_3.y = q12;\\\\n vec2 tmpvar_4;\\\\n tmpvar_4.x = q17;\\\\n tmpvar_4.y = q18;\\\\n vec2 tmpvar_5;\\\\n vec2 tmpvar_6;\\\\n tmpvar_6 = (uv - 0.5);\\\\n tmpvar_5 = (tmpvar_6 * aspect.xy);\\\\n vec2 tmpvar_7;\\\\n tmpvar_7.x = ((tmpvar_5.x * q15) - (tmpvar_5.y * q16));\\\\n tmpvar_7.y = ((tmpvar_5.x * q16) - (tmpvar_5.y * q15));\\\\n vec2 tmpvar_8;\\\\n tmpvar_8 = (tmpvar_7 + tmpvar_4);\\\\n vec2 tmpvar_9;\\\\n tmpvar_9.x = ((q13 * tmpvar_8.x) + (q14 * tmpvar_8.y));\\\\n tmpvar_9.y = ((q14 * tmpvar_8.x) - (q13 * tmpvar_8.y));\\\\n moebius_1 = (((tmpvar_9 / \\\\n ((tmpvar_8.x * tmpvar_8.x) + (tmpvar_8.y * tmpvar_8.y))\\\\n ) + tmpvar_3) * 0.5);\\\\n float tmpvar_10;\\\\n tmpvar_10 = sqrt(dot (moebius_1, moebius_1));\\\\n moebius_1 = (0.5 + ((\\\\n (1.0 - abs(((\\\\n fract((moebius_1 * 0.5))\\\\n * 2.0) - 1.0)))\\\\n - 0.5) * 0.99));\\\\n vec3 tmpvar_11;\\\\n tmpvar_11 = mix (mix (mix (\\\\n mix (mix ((mix (ret_2, vec3(0.2, 0.6, 1.0), vec3(\\\\n (texture (sampler_pc_main, moebius_1).y * 2.0)\\\\n )) * (vec3(1.0, 1.0, 1.0) - vec3(\\\\n ((((texture (sampler_blur1, \\\\n (0.5 + (tmpvar_6 * 0.5))\\\\n ).xyz * scale1) + bias1).y * 2.0) * tmpvar_10)\\\\n ))), vec3(1.0, 1.0, 1.0), texture (sampler_pc_main, moebius_1).xxx), vec3(4.0, 1.0, 0.0), vec3(clamp (((texture (sampler_pc_main, \\\\n (0.5 + (tmpvar_6 * 0.2))\\\\n ).y * 2.0) * (\\\\n (tmpvar_10 * tmpvar_10)\\\\n * tmpvar_10)), 0.0, 1.0)))\\\\n , vec3(0.1, 0.0, 0.0), vec3(\\\\n clamp ((((texture (sampler_blur1, \\\\n (0.5 + (tmpvar_6 * 0.2))\\\\n ).xyz * scale1) + bias1).x * 12.0), 0.0, 1.0)\\\\n )), (vec3(0.5, 0.8, 1.0) * texture (sampler_pc_main, uv).z), vec3((\\\\n clamp ((((texture (sampler_blur1, \\\\n (0.5 + (tmpvar_6 * 0.2))\\\\n ).xyz * scale1) + bias1).x * 4.0), 0.0, 1.0)\\\\n * 1.4))), vec3(1.0, 1.0, 1.0), texture (sampler_pc_main, (0.5 + (tmpvar_6 * 0.2))).xxx);\\\\n ret_2 = tmpvar_11;\\\\n vec4 tmpvar_12;\\\\n tmpvar_12.w = 1.0;\\\\n tmpvar_12.xyz = tmpvar_11;\\\\n ret = tmpvar_12.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/gunthry is out back bloodying up the pine trees - adm atomising (v) the disintigrate (n).json\":\n/*!*************************************************************************************************************************!*\\\n !*** ./presets/converted/gunthry is out back bloodying up the pine trees - adm atomising (v) the disintigrate (n).json ***!\n \\*************************************************************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":1,\\\"gammaadj\\\":1.7,\\\"decay\\\":1,\\\"echo_zoom\\\":1.002,\\\"echo_orient\\\":1,\\\"wave_mode\\\":7,\\\"additivewave\\\":1,\\\"modwavealphabyvolume\\\":1,\\\"wave_brighten\\\":0,\\\"wrap\\\":0,\\\"darken\\\":1,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":1.157,\\\"wave_smoothing\\\":0.63,\\\"modwavealphastart\\\":0.71,\\\"modwavealphaend\\\":1.3,\\\"fshader\\\":1,\\\"dx\\\":0.00001,\\\"dy\\\":0.00001,\\\"warp\\\":0.01,\\\"wave_r\\\":0.65,\\\"wave_g\\\":0.65,\\\"wave_b\\\":0.65,\\\"ob_size\\\":0.005,\\\"ob_a\\\":0.2,\\\"ib_size\\\":0.005,\\\"ib_r\\\":0,\\\"ib_g\\\":0,\\\"ib_b\\\":0,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":0,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":14,\\\"num_inst\\\":512,\\\"rad\\\":0.1026,\\\"tex_ang\\\":0.62832,\\\"r2\\\":1,\\\"g2\\\":0,\\\"a2\\\":1,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"ma=ma+(above(bass,1)*3.1415*.01*bass);\\\\nma=ma-(above(treb,1)*3.1415*.01*treb);\\\\n\\\\nmx=mx+(.0002*cos(ma));\\\\nmy=my+(.0002*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\nrad=(bass+treb)/100;\\\\na=(above(bass+mid+treb,.8));\\\\nr=int(rand(100))/100;\\\\ng=int(rand(100))/100;\\\\nb=int(rand(100))/100;\\\\nr2=int(rand(100))/100;\\\\ng2=int(rand(100))/100;\\\\nb2=int(rand(100))/100;\\\\nr_border=int(rand(100))/100;\\\\ng_border=int(rand(100))/100;\\\\nb_border=int(rand(100))/100;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":23,\\\"num_inst\\\":1024,\\\"rad\\\":0.10262,\\\"ang\\\":0.43982,\\\"tex_ang\\\":0.62832,\\\"a\\\":0.5,\\\"r2\\\":1,\\\"g2\\\":0,\\\"a2\\\":0.5,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"ma=ma+(above(bass,1)*3.1415*.05*bass);\\\\nma=ma-(above(mid,1)*3.1415*.05*mid);\\\\n\\\\nmx=mx+(.0001*cos(ma));\\\\nmy=my+(.0001*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\nrad=(bass+treb)/75;\\\\na=(above(bass+mid+treb,.1));\\\\nr=int(rand(100))/100;\\\\ng=int(rand(100))/100;\\\\nb=int(rand(100))/100;\\\\nr2=int(rand(100))/100;\\\\ng2=int(rand(100))/100;\\\\nb2=int(rand(100))/100;\\\\nr_border=int(rand(100))/100;\\\\ng_border=int(rand(100))/100;\\\\nb_border=int(rand(100))/100;\\\"},{\\\"baseVals\\\":{\\\"sides\\\":14,\\\"additive\\\":1,\\\"num_inst\\\":256,\\\"rad\\\":0.20269,\\\"tex_ang\\\":0.62832,\\\"r2\\\":1,\\\"g2\\\":0,\\\"a2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"ma=ma+(above(mid,1)*3.1415*.01*mid);\\\\nma=ma-(above(treb,1)*3.1415*.01*treb);\\\\n\\\\nmx=mx+(.0004*cos(ma));\\\\nmy=my+(.0004*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.3));\\\"},{\\\"baseVals\\\":{\\\"sides\\\":14,\\\"additive\\\":1,\\\"num_inst\\\":256,\\\"rad\\\":0.22389,\\\"tex_ang\\\":0.62832,\\\"r2\\\":1,\\\"g2\\\":0,\\\"a2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"ma=ma+(above(bass,.5)*3.1415*.02*bass);\\\\nma=ma-(above(treb,.5)*3.1415*.02*treb);\\\\n\\\\nmx=mx+(.0008*cos(ma));\\\\nmy=my+(.0008*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.2));\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"ma=ma+(above(bass,1)*3.1415*.01*bass);\\\\nma=ma-(above(treb,1)*3.1415*.01*treb);\\\\n\\\\nmx=mx+(.0002*cos(ma));\\\\nmy=my+(.0002*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.8));\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"ma=ma+(above(bass,1)*3.1415*.05*bass);\\\\nma=ma-(above(mid,1)*3.1415*.05*mid);\\\\n\\\\nmx=mx+(.0001*cos(ma));\\\\nmy=my+(.0001*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.1));\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"ma=ma+(above(mid,1)*3.1415*.01*mid);\\\\nma=ma-(above(treb,1)*3.1415*.01*treb);\\\\n\\\\nmx=mx+(.0004*cos(ma));\\\\nmy=my+(.0004*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.3));\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"ma=ma+(above(bass,.5)*3.1415*.02*bass);\\\\nma=ma-(above(treb,.5)*3.1415*.02*treb);\\\\n\\\\nmx=mx+(.0008*cos(ma));\\\\nmy=my+(.0008*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.2));\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"bass_tick = above(bass_att,bass_tick)*2 + (1-above(bass_att,bass_tick))*\\\\n((bass_tick-1.3)*0.96+1.3);\\\\ntreb_tick = above(treb_att,treb_tick)*2 + (1-above(treb_att,treb_tick))*\\\\n((treb_tick-1.3)*0.96+1.3);\\\\nmid_tick = above(mid_att,mid_tick)*2 + (1-above(mid_att,mid_tick))*\\\\n((mid_tick-1.3)*0.96+1.3);\\\\nbass_shift = equal(bass_tick,2)*0.95*sin(time*5) + (1-equal(bass_tick,2))*bass_shift;\\\\ntreb_shift = equal(treb_tick,2)*0.95*sin(time*5) + (1-equal(treb_tick,2))*treb_shift;\\\\nmid_shift = equal(mid_tick,2)*0.95*sin(time*5) + (1-equal(mid_tick,2))*mid_shift;\\\\n\\\\n//wave_x = wave_x + 0.12*sin(time);\\\\n//wave_y =wave_y + 0.12*cos(time);\\\\nwave_r = wave_r + bass_shift;\\\\nwave_g = wave_g + mid_shift;\\\\nwave_b = wave_b + treb_shift;\\\\nq1 = bass_shift;\\\\nq2= mid_shift;\\\\nq3 = treb_shift;\\\\nzoom = zoom + abs(0.05*(treb/2*cos(bass_att*treb_shift)*bass_shift));\\\\nq4=sin(time);\\\\nq5=tan(time);\\\",\\\"pixel_eqs_eel\\\":\\\"thresh = above(bass_att,thresh)*2+(1-above(bass_att,thresh))*((thresh-1.3)*0.96+1.3);\\\\ndx_r = equal(thresh,2)*0.015*sin(5*time)+(1-equal(thresh,2))*dx_r;\\\\ndy_r = equal(thresh,2)*0.015*sin(6*time)+(1-equal(thresh,2))*dy_r;\\\\n\\\\nrot = rot - 0.25*abs(((bass_att*q3)+0.55*q1)*(0.5*sin(time)-cos(0.5-2*(2.5*rad))));\\\\nrot = rot - 0.5*if (above(bass_att,((q1*q2*q3)/3)),(sin(12*rad))*(6.5*rad)*2*dy-r,dx_r);\\\\nzoom = zoom + equal(zoom,0)*dy_r;\\\\nrot = rot + 0.25*(q1/6+(q2*q1));\\\\ncx = cx - 0.25*(cos(time)-0.5*sin(time*1.2));\\\\ncy = cy - 0.25*(sin(time)+0.5*cos(1.22*time));\\\\ndx = dx + dx_r;\\\\ndy = dy + dy_r;\\\",\\\"warp\\\":\\\" shader_body { \\\\n vec2 uv_1;\\\\n vec3 ret_2;\\\\n ret_2 = ((1.25 * (\\\\n (texture (sampler_blur3, uv).xyz * scale3)\\\\n + bias3)) - (0.25 * (\\\\n (texture (sampler_blur1, uv).xyz * scale1)\\\\n + bias1)));\\\\n vec3 theta_3;\\\\n theta_3 = (1.33 * ((texture (sampler_blur1, \\\\n clamp (ret_2.xy, 0.0, 1.0)\\\\n ).xyz * scale1) + bias1));\\\\n uv_1 = (uv * (1.0 + (0.15 * \\\\n (sin(theta_3) / cos(theta_3))\\\\n )).xy);\\\\n vec3 theta_4;\\\\n theta_4 = (1.33 * ((texture (sampler_blur1, \\\\n clamp (ret_2.xy, 0.0, 1.0)\\\\n ).xyz * scale1) + bias1));\\\\n uv_1 = (uv_1 - (0.075 * (\\\\n sin(theta_4)\\\\n / \\\\n cos(theta_4)\\\\n )).xy);\\\\n float tmpvar_5;\\\\n tmpvar_5 = dot (texsize.zw, texsize.zw);\\\\n ret_2 = (max (max (texture (sampler_main, uv_1).xyz, texture (sampler_main, \\\\n (((uv_1 - 0.5) * (1.0 - (8.0 * \\\\n sqrt(tmpvar_5)\\\\n ))) + 0.5)\\\\n ).xyz), texture (sampler_main, (\\\\n ((uv_1 - 0.5) * (1.0 + (8.0 * sqrt(tmpvar_5))))\\\\n + 0.5)).xyz) - 0.024);\\\\n vec4 tmpvar_6;\\\\n tmpvar_6.w = 1.0;\\\\n tmpvar_6.xyz = ret_2;\\\\n ret = tmpvar_6.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n vec2 uv_1;\\\\n vec3 ret3_2;\\\\n vec3 ret_3;\\\\n vec2 tmpvar_4;\\\\n tmpvar_4 = (((uv - 0.5) * vec2(-1.0, 1.0)) + 0.5);\\\\n vec3 tmpvar_5;\\\\n tmpvar_5 = abs(((texture (sampler_main, uv).xyz * \\\\n clamp ((((\\\\n (texture (sampler_blur2, uv).xyz * scale2)\\\\n + bias2) * 2.8) - 0.13), 0.0, 1.0)\\\\n ) - (texture (sampler_main, tmpvar_4).xyz * \\\\n clamp ((((\\\\n (texture (sampler_blur2, tmpvar_4).xyz * scale2)\\\\n + bias2) * 2.8) - 0.13), 0.0, 1.0)\\\\n )));\\\\n ret3_2 = (tmpvar_5 * sqrt(tmpvar_5));\\\\n ret3_2 = (ret3_2 * vec3(0.9, 1.6, 2.3));\\\\n ret3_2 = (ret3_2 * 3.0);\\\\n vec3 tmpvar_6;\\\\n tmpvar_6 = pow (ret3_2, (1.0 - ret3_2));\\\\n ret3_2 = tmpvar_6;\\\\n uv_1 = (uv * 2.0);\\\\n vec2 tmpvar_7;\\\\n tmpvar_7 = floor((fract(\\\\n (uv_1 * 0.5)\\\\n ) * 2.0));\\\\n uv_1 = ((fract(uv_1) * (1.0 - tmpvar_7)) + (tmpvar_7 * fract(\\\\n (1.0 - uv_1)\\\\n )));\\\\n vec2 tmpvar_8;\\\\n tmpvar_8.x = rad;\\\\n tmpvar_8.y = uv_1.y;\\\\n uv_1 = tmpvar_8;\\\\n vec2 tmpvar_9;\\\\n tmpvar_9 = ((0.5 - tmpvar_8.yx) + 0.5);\\\\n ret_3 = (texture (sampler_main, tmpvar_8.yx).xyz * clamp ((\\\\n (((texture (sampler_blur2, tmpvar_8.yx).xyz * scale2) + bias2) * 2.8)\\\\n - 0.13), 0.0, 1.0));\\\\n vec3 tmpvar_10;\\\\n tmpvar_10 = mix (ret_3, (texture (sampler_main, tmpvar_9).xyz * clamp (\\\\n ((((texture (sampler_blur2, tmpvar_9).xyz * scale2) + bias2) * 2.8) - 0.13)\\\\n , 0.0, 1.0)), vec3(0.5, 0.5, 0.5));\\\\n ret_3 = (tmpvar_10 * tmpvar_10);\\\\n ret_3 = (ret_3 * vec3(0.9, 1.6, 2.3));\\\\n ret_3 = (ret_3 * 3.0);\\\\n vec3 tmpvar_11;\\\\n tmpvar_11 = max (tmpvar_6, (0.8 * vec3((0.5 * \\\\n dot (ret_3, vec3(0.32, 0.49, 0.29))\\\\n ))));\\\\n ret_3 = tmpvar_11;\\\\n vec4 tmpvar_12;\\\\n tmpvar_12.w = 1.0;\\\\n tmpvar_12.xyz = tmpvar_11;\\\\n ret = tmpvar_12.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/high-altitude basket unraveling - singh grooves nitrogen argon nz+.json\":\n/*!***************************************************************************************************!*\\\n !*** ./presets/converted/high-altitude basket unraveling - singh grooves nitrogen argon nz+.json ***!\n \\***************************************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":4,\\\"gammaadj\\\":1,\\\"decay\\\":0.995,\\\"echo_zoom\\\":1,\\\"echo_alpha\\\":0.5,\\\"echo_orient\\\":1,\\\"wave_mode\\\":6,\\\"additivewave\\\":1,\\\"wave_thick\\\":1,\\\"modwavealphabyvolume\\\":1,\\\"wave_brighten\\\":0,\\\"wrap\\\":0,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":2.103,\\\"wave_smoothing\\\":0.54,\\\"wave_mystery\\\":0.38,\\\"modwavealphastart\\\":0.81,\\\"modwavealphaend\\\":1.4,\\\"warpscale\\\":1.331,\\\"warp\\\":0.01,\\\"wave_r\\\":0,\\\"wave_g\\\":0,\\\"wave_b\\\":0,\\\"ob_size\\\":0.005,\\\"ob_a\\\":1,\\\"ib_size\\\":0.005,\\\"ib_a\\\":1,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":1.85,\\\"mv_r\\\":0.5,\\\"mv_g\\\":0.5,\\\"mv_b\\\":0.5,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"sides\\\":64,\\\"thickoutline\\\":1,\\\"textured\\\":1,\\\"rad\\\":0.53526,\\\"tex_zoom\\\":1.35028,\\\"g\\\":1,\\\"b\\\":1,\\\"a\\\":0.4,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":0.5,\\\"border_b\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":14,\\\"num_inst\\\":78,\\\"x\\\":0.6,\\\"rad\\\":0.02217,\\\"tex_zoom\\\":60.80383,\\\"g\\\":1,\\\"b\\\":1,\\\"a\\\":0.9,\\\"g2\\\":0,\\\"a2\\\":1,\\\"border_g\\\":0.59,\\\"border_a\\\":1},\\\"init_eqs_eel\\\":\\\"t1 = int(rand(10))/10;\\\\nt2 = .2 + int(rand(8))/10;\\\",\\\"frame_eqs_eel\\\":\\\"speed = .02;\\\\ntrel = int(time*speed)- time*speed+1;\\\\nk1 = instance/num_inst; \\\\nk1 = k1 - int(k1);\\\\ndist = 1.4-k1; //################# soll 1 sein\\\\n//dist = dist - int(dist);\\\\n\\\\n\\\\nfov = .1;\\\\narg = dist-.02*time;\\\\nposx = fov/dist * (sin(arg*13) + .2*sin(dist*332));\\\\nposy = fov/dist * (cos(arg*36)+ .2*sin(dist*332));\\\\n\\\\nxl = .5 + posx;\\\\nyl = .5 + posy;\\\\n\\\\ntime2 = time/4 + cos(instance) ;\\\\nxw = .5 + .5 * (sin(arg*14) + .02*cos(arg*1131)) ;\\\\nyw = time2 - int(time2);\\\\n\\\\nx = if(bnot(q19),xl,xw);\\\\ny = if(bnot(q19),yl,yw);\\\\n\\\\nang = time * sin(k1*44)*12;\\\\na = t1; border_a = 0; a2 = t2;\\\\nrad = .01/dist;\\\\n\\\\nr = .5 + .3* sin(instance+arg); \\\\nb = .5 + .3* sin(instance-2+arg); \\\\ng = .5 + .3* sin(instance*2+arg);\\\\n\\\\n\\\"},{\\\"baseVals\\\":{\\\"sides\\\":63,\\\"x\\\":0.503,\\\"y\\\":0.67,\\\"rad\\\":0.05033,\\\"tex_zoom\\\":0.49981,\\\"r\\\":0,\\\"g\\\":1,\\\"b\\\":1,\\\"g2\\\":0,\\\"a2\\\":1,\\\"border_r\\\":0.5,\\\"border_g\\\":0.5,\\\"border_b\\\":0.5,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"y\\\":0.51,\\\"rad\\\":0.19869,\\\"tex_ang\\\":1.00531,\\\"tex_zoom\\\":0.49981,\\\"g\\\":0.4,\\\"a\\\":0.7,\\\"r2\\\":1,\\\"b2\\\":1,\\\"border_r\\\":0.5,\\\"border_g\\\":0.5,\\\"border_b\\\":0.5,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"samples\\\":128,\\\"thick\\\":1,\\\"additive\\\":1,\\\"scaling\\\":0.89152,\\\"smoothing\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"samples\\\":100,\\\"usedots\\\":1,\\\"thick\\\":1,\\\"scaling\\\":0.89152,\\\"smoothing\\\":0,\\\"a\\\":0.1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"scaling\\\":0.89152,\\\"smoothing\\\":0.82,\\\"a\\\":0.1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"spectrum\\\":1,\\\"usedots\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"q8=0;\\\",\\\"frame_eqs_eel\\\":\\\"chng=sin(time*.5);\\\\ncthr=.9999;\\\\nmq21=if(above(chng,cthr),rand(3),mq21);\\\\nmq22=if(above(chng,cthr),rand(3),mq22);\\\\nmq23=if(above(chng,cthr),rand(3),mq23);\\\\nmq24=if(above(chng,cthr),rand(2),mq24);\\\\nmq25=if(above(chng,cthr),rand(2),mq25);\\\\nmq26=if(above(chng,cthr),rand(2),mq26);\\\\nmq27=if(above(chng,cthr),rand(1),mq27);\\\\nmq28=if(above(chng,cthr),rand(1),mq28);\\\\nmq29=if(above(chng,cthr),rand(1)*.3,mq29);\\\\nmq31=if(above(chng,cthr),rand(1)*.3,mq31);\\\\nmonitor=chng;\\\\nq21=mq21;q22=mq22;q23=mq23;q24=mq24;q25=mq25;q26=mq26;\\\\nq27=mq27;q28=mq28;q29=mq29;q31=mq31;\\\\n\\\\nmonitor=mq1;\\\\nvol=bass+treb+mid;\\\\natime=atime+vol;\\\\nq11=.4+sin(atime*.006 )*.4;\\\\nq12=.4+cos(atime*.00613828348)*.4;\\\\nq13=.4+sin(atime*.00598593455)*.4;\\\\nmonitor=q13;\\\\n\\\\nwarp=0;\\\\nq8 =oldq8+ 0.0003*(pow(1+1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,6)/fps);\\\\noldq8 = q8;\\\\nwave_r = 0.5+0.5*sin(1.123*q8);\\\\nwave_g = 0.5+0.5*sin(q8*1.576);\\\\nwave_b = 0.5+0.5*cos(q8*1.465);\\\\nib_a =0.2*bass;\\\",\\\"pixel_eqs_eel\\\":\\\"dx=dx+0.008*sin((y*2-1)*meshx)+0.008*sin((y*2-1)*meshx*1.3333);\\\\ndy=dy+0.008*cos((x*2-1)*meshx*1.3333)+0.008*cos((x*2-1)*meshx);\\\",\\\"warp\\\":\\\" shader_body { \\\\n vec3 ret_1;\\\\n vec4 tmpvar_2;\\\\n tmpvar_2 = texture (sampler_main, uv);\\\\n ret_1 = tmpvar_2.xyz;\\\\n vec4 tmpvar_3;\\\\n tmpvar_3 = texture (sampler_noisevol_hq, (((vec3(0.05, 0.05, 0.0) * uv.xyy) * (\\\\n (q27 * texsize.xyy)\\\\n * texsize_noisevol_hq.zww)) + ((time * vec3(0.0, 0.0, 1.0)) * q29)));\\\\n if (((tmpvar_2.x > (q21 * q13)) && (tmpvar_2.x <= (q24 * q11)))) {\\\\n ret_1.y = (tmpvar_2.y - (tmpvar_3.x * 0.5));\\\\n };\\\\n if (((ret_1.y > (q22 * q11)) && (ret_1.y <= (q25 * q12)))) {\\\\n ret_1.z = (tmpvar_2.z - (tmpvar_3.y * 0.5));\\\\n };\\\\n if (((ret_1.z > (q23 * q12)) && (ret_1.z <= (q26 * q13)))) {\\\\n ret_1.x = (tmpvar_2.x - (tmpvar_3.z * 0.5));\\\\n };\\\\n ret_1 = (ret_1 + ((ret_1 - \\\\n ((texture (sampler_blur1, uv).xyz * scale1) + bias1)\\\\n ) * 0.2));\\\\n ret_1 = (ret_1 - 0.02);\\\\n vec4 tmpvar_4;\\\\n tmpvar_4.w = 1.0;\\\\n tmpvar_4.xyz = ret_1;\\\\n ret = tmpvar_4.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n vec2 uv_1;\\\\n vec3 ret_2;\\\\n uv_1 = (0.05 + (0.9 * uv));\\\\n vec4 tmpvar_3;\\\\n tmpvar_3 = texture (sampler_main, uv_1);\\\\n ret_2 = tmpvar_3.xyz;\\\\n vec4 tmpvar_4;\\\\n tmpvar_4 = texture (sampler_noisevol_hq, (((vec3(0.05, 0.05, 0.0) * uv_1.xyy) * (\\\\n (q28 * texsize.xyy)\\\\n * texsize_noisevol_hq.zww)) + ((time * vec3(0.0, 0.0, 1.0)) * q31)));\\\\n if (((tmpvar_3.x > (q26 * q13)) && (tmpvar_3.x <= (q23 * q11)))) {\\\\n ret_2.z = (tmpvar_3.z - (tmpvar_4.x * 0.5));\\\\n };\\\\n if (((tmpvar_3.y > (q25 * q11)) && (tmpvar_3.y <= (q22 * q12)))) {\\\\n ret_2.x = (tmpvar_3.x - (tmpvar_4.y * 0.5));\\\\n };\\\\n if (((ret_2.z > (q24 * q12)) && (ret_2.z <= (q21 * q13)))) {\\\\n ret_2.y = (tmpvar_3.y - (tmpvar_4.z * 0.5));\\\\n };\\\\n ret_2 = (abs((\\\\n ((texture (sampler_blur1, uv_1).xyz * scale1) + bias1)\\\\n - ret_2)) * 6.0);\\\\n ret_2 = (ret_2 * 1.333);\\\\n vec4 tmpvar_5;\\\\n tmpvar_5.w = 1.0;\\\\n tmpvar_5.xyz = ret_2;\\\\n ret = tmpvar_5.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/martin + flexi - diamond cutter [prismaticvortex.com] - camille - i wish i wish i wish i was constrained.json\":\n/*!*****************************************************************************************************************************************!*\\\n !*** ./presets/converted/martin + flexi - diamond cutter [prismaticvortex.com] - camille - i wish i wish i wish i was constrained.json ***!\n \\*****************************************************************************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":4,\\\"gammaadj\\\":1.98,\\\"decay\\\":0.5,\\\"echo_zoom\\\":1,\\\"echo_alpha\\\":0.5,\\\"echo_orient\\\":3,\\\"wave_mode\\\":7,\\\"additivewave\\\":1,\\\"modwavealphabyvolume\\\":1,\\\"wave_brighten\\\":0,\\\"darken\\\":1,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":1.157,\\\"wave_smoothing\\\":0.63,\\\"modwavealphastart\\\":0.71,\\\"modwavealphaend\\\":1.3,\\\"warpscale\\\":1.331,\\\"zoom\\\":0.9995,\\\"warp\\\":0.009,\\\"wave_r\\\":0.65,\\\"wave_g\\\":0.65,\\\"wave_b\\\":0.65,\\\"ob_size\\\":0.5,\\\"ob_r\\\":0.01,\\\"ib_size\\\":0.26,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":0,\\\"mv_a\\\":0,\\\"b1x\\\":0.7,\\\"b1ed\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":14,\\\"num_inst\\\":512,\\\"rad\\\":0.1026,\\\"tex_ang\\\":0.62832,\\\"r2\\\":1,\\\"g2\\\":0,\\\"a2\\\":1,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"ma=ma+(above(bass,1)*3.1415*.01*bass);\\\\nma=ma-(above(treb,1)*3.1415*.01*treb);\\\\n\\\\nmx=mx+(.0002*cos(ma));\\\\nmy=my+(.0002*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\nrad=(bass+treb)/100;\\\\na=(above(bass+mid+treb,.8));\\\\nr=int(rand(100))/100;\\\\ng=int(rand(100))/100;\\\\nb=int(rand(100))/100;\\\\nr2=int(rand(100))/100;\\\\ng2=int(rand(100))/100;\\\\nb2=int(rand(100))/100;\\\\nr_border=int(rand(100))/100;\\\\ng_border=int(rand(100))/100;\\\\nb_border=int(rand(100))/100;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":23,\\\"num_inst\\\":1024,\\\"rad\\\":0.10262,\\\"ang\\\":0.43982,\\\"tex_ang\\\":0.62832,\\\"a\\\":0.5,\\\"r2\\\":1,\\\"g2\\\":0,\\\"a2\\\":0.5,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"ma=ma+(above(bass,1)*3.1415*.05*bass);\\\\nma=ma-(above(mid,1)*3.1415*.05*mid);\\\\n\\\\nmx=mx+(.0001*cos(ma));\\\\nmy=my+(.0001*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\nrad=(bass+treb)/75;\\\\na=(above(bass+mid+treb,.1));\\\\nr=int(rand(100))/100;\\\\ng=int(rand(100))/100;\\\\nb=int(rand(100))/100;\\\\nr2=int(rand(100))/100;\\\\ng2=int(rand(100))/100;\\\\nb2=int(rand(100))/100;\\\\nr_border=int(rand(100))/100;\\\\ng_border=int(rand(100))/100;\\\\nb_border=int(rand(100))/100;\\\"},{\\\"baseVals\\\":{\\\"sides\\\":14,\\\"additive\\\":1,\\\"num_inst\\\":256,\\\"rad\\\":0.20269,\\\"tex_ang\\\":0.62832,\\\"r2\\\":1,\\\"g2\\\":0,\\\"a2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"ma=ma+(above(mid,1)*3.1415*.01*mid);\\\\nma=ma-(above(treb,1)*3.1415*.01*treb);\\\\n\\\\nmx=mx+(.0004*cos(ma));\\\\nmy=my+(.0004*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.3));\\\"},{\\\"baseVals\\\":{\\\"sides\\\":14,\\\"additive\\\":1,\\\"num_inst\\\":256,\\\"rad\\\":0.22389,\\\"tex_ang\\\":0.62832,\\\"r2\\\":1,\\\"g2\\\":0,\\\"a2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"ma=ma+(above(bass,.5)*3.1415*.02*bass);\\\\nma=ma-(above(treb,.5)*3.1415*.02*treb);\\\\n\\\\nmx=mx+(.0008*cos(ma));\\\\nmy=my+(.0008*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.2));\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"ma=ma+(above(bass,1)*3.1415*.01*bass);\\\\nma=ma-(above(treb,1)*3.1415*.01*treb);\\\\n\\\\nmx=mx+(.0002*cos(ma));\\\\nmy=my+(.0002*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.8));\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"ma=ma+(above(bass,1)*3.1415*.05*bass);\\\\nma=ma-(above(mid,1)*3.1415*.05*mid);\\\\n\\\\nmx=mx+(.0001*cos(ma));\\\\nmy=my+(.0001*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.1));\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"ma=ma+(above(mid,1)*3.1415*.01*mid);\\\\nma=ma-(above(treb,1)*3.1415*.01*treb);\\\\n\\\\nmx=mx+(.0004*cos(ma));\\\\nmy=my+(.0004*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.3));\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"ma=ma+(above(bass,.5)*3.1415*.02*bass);\\\\nma=ma-(above(treb,.5)*3.1415*.02*treb);\\\\n\\\\nmx=mx+(.0008*cos(ma));\\\\nmy=my+(.0008*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.2));\\\"}],\\\"init_eqs_eel\\\":\\\"x1 = 2;\\\\ny1= 2;\\\\nz1 = 2;\\\",\\\"frame_eqs_eel\\\":\\\"// raytraced sphere code\\\\n\\\\nd = 20; // distance of the sphere, the farther you're away the more you'll see on the horizon\\\\nz = 4; // distance of the pane where the scene is projected on, wider distance = smaller apex angle of the camera, very small distances = fish eyes view\\\\n\\\\nzz = 1 + bass_att*0; // linear zoom\\\\n\\\\npi = asin(1)*2;\\\\npi2inv = 0.5/pi;\\\\nmaskangle = asin( 1/d);\\\\nq32 = maskangle; // hit = (cameras angle < mask_angle)\\\\nq31 = d;\\\\nq30 = z;\\\\nq29 = pi2inv;\\\\nq28 = pi;\\\\nq27 = 1/zz;\\\\n\\\\nv = 0.4;\\\\nj1 = j1*0.95 + sqr(bass*4)*v;\\\\nj2 = j2*0.95 + sqr(mid*4)*v;\\\\nj3 = j3*0.95 + sqr(treb*4)*v;\\\\n\\\\nn = n + j1*0.0152;\\\\nn1 = n1 + j2*0.0152;\\\\nn2 = n2 + j3*0.0152;\\\\n\\\\nvol=(bass+mid+treb)*0.25;\\\\nvol=vol;\\\\nq3=vol;\\\\nmtime = mtime+vol*0.01;\\\\nq1=mtime;\\\\n\\\\nzoom = zoom + 0.015*vol;\\\\n\\\\nw1 = n*0.01; // solid angles to rotate the sphere in its origin\\\\nw2 = n1*0.01;\\\\nw3 = n2*0.01;\\\\n\\\\nq20 = cos(w1);\\\\nq21 = sin(w1);\\\\nq22 = cos(w2);\\\\nq23 = sin(w2);\\\\nq24 = cos(w3);\\\\nq25 = sin(w3);\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\" shader_body { \\\\n vec2 tmpvar_1;\\\\n tmpvar_1 = (((uv_orig * texsize.xy) * (texsize_noise_lq.zw * 1.5)) + rand_frame.xy);\\\\n vec4 tmpvar_2;\\\\n tmpvar_2.w = 1.0;\\\\n tmpvar_2.xyz = ((texture (sampler_main, (\\\\n mix (uv_orig, uv, vec2(((dot (texture (sampler_main, \\\\n mix (uv_orig, uv, vec2(4.0, 4.0))\\\\n ).xyz, vec3(0.32, 0.49, 0.29)) - dot (\\\\n ((texture (sampler_blur2, mix (uv_orig, uv, vec2(-12.0, -12.0))).xyz * scale2) + bias2)\\\\n , vec3(0.32, 0.49, 0.29))) * 12.0)))\\\\n + \\\\n (((texture (sampler_noise_lq, tmpvar_1) - 0.5).xy * texsize.zw) * 0.5)\\\\n )).xyz + (\\\\n (texture (sampler_noise_lq, tmpvar_1) - 0.5)\\\\n * 0.006).xyz) + -0.0006);\\\\n ret = tmpvar_2.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n vec2 uv_1;\\\\n vec3 ret2_2;\\\\n vec2 uv2_3;\\\\n vec3 ret_4;\\\\n uv2_3.y = uv.y;\\\\n uv2_3.x = (1.0 - uv.x);\\\\n uv2_3 = (0.5 + ((uv2_3 - 0.5) * 0.98));\\\\n uv_1 = (0.5 + ((uv - 0.5) * 0.98));\\\\n vec2 tmpvar_5;\\\\n tmpvar_5 = (texsize.zw * 4.0);\\\\n vec3 tmpvar_6;\\\\n tmpvar_6 = (((texture (sampler_blur1, \\\\n (uv_1 + (vec2(1.0, 0.0) * tmpvar_5))\\\\n ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n (uv_1 - (vec2(1.0, 0.0) * tmpvar_5))\\\\n ).xyz * scale1) + bias1));\\\\n vec3 tmpvar_7;\\\\n tmpvar_7 = (((texture (sampler_blur1, \\\\n (uv_1 + (vec2(0.0, 1.0) * tmpvar_5))\\\\n ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n (uv_1 - (vec2(0.0, 1.0) * tmpvar_5))\\\\n ).xyz * scale1) + bias1));\\\\n vec3 tmpvar_8;\\\\n tmpvar_8.z = 0.0;\\\\n tmpvar_8.x = dot (tmpvar_6, vec3(0.32, 0.49, 0.29));\\\\n tmpvar_8.y = dot (tmpvar_7, vec3(0.32, 0.49, 0.29));\\\\n vec4 tmpvar_9;\\\\n tmpvar_9 = texture (sampler_noisevol_hq, ((vec3(0.05, 0.05, 0.0) * (\\\\n ((uv_1.xyy + (tmpvar_8 * 0.5)) * texsize.xyy)\\\\n * texsize_noisevol_hq.zww)) + (vec3(0.0, 0.0, 0.2) * time)));\\\\n vec2 tmpvar_10;\\\\n tmpvar_10.x = dot (tmpvar_6, vec3(0.32, 0.49, 0.29));\\\\n tmpvar_10.y = dot (tmpvar_7, vec3(0.32, 0.49, 0.29));\\\\n uv_1 = (uv_1 - (tmpvar_10 * 0.04));\\\\n vec2 tmpvar_11;\\\\n tmpvar_11.x = dot (((\\\\n (texture (sampler_blur1, (uv2_3 + (vec2(1.0, 0.0) * tmpvar_5))).xyz * scale1)\\\\n + bias1) - (\\\\n (texture (sampler_blur1, (uv2_3 - (vec2(1.0, 0.0) * tmpvar_5))).xyz * scale1)\\\\n + bias1)), vec3(0.32, 0.49, 0.29));\\\\n tmpvar_11.y = dot (((\\\\n (texture (sampler_blur1, (uv2_3 + (vec2(0.0, 1.0) * tmpvar_5))).xyz * scale1)\\\\n + bias1) - (\\\\n (texture (sampler_blur1, (uv2_3 - (vec2(0.0, 1.0) * tmpvar_5))).xyz * scale1)\\\\n + bias1)), vec3(0.32, 0.49, 0.29));\\\\n uv2_3 = (uv2_3 - (tmpvar_11 * 0.04));\\\\n ret_4 = (abs((\\\\n ((texture (sampler_main, uv_1).xyz + ((texture (sampler_blur1, uv_1).xyz * scale1) + bias1)) - ((texture (sampler_blur2, uv_1).xyz * scale2) + bias2))\\\\n - \\\\n ((texture (sampler_blur3, uv_1).xyz * scale3) + bias3)\\\\n )) * (dot (tmpvar_9, vec4(0.32, 0.49, 0.29, 0.0)) * 3.0));\\\\n ret2_2 = (abs((\\\\n ((texture (sampler_main, uv2_3).xyz + ((texture (sampler_blur1, uv2_3).xyz * scale1) + bias1)) - ((texture (sampler_blur2, uv2_3).xyz * scale2) + bias2))\\\\n - \\\\n ((texture (sampler_blur3, uv2_3).xyz * scale3) + bias3)\\\\n )) * (dot (tmpvar_9, vec4(0.32, 0.49, 0.29, 0.0)) * 3.0));\\\\n ret2_2 = (0.5 - pow (ret2_2, vec3(0.5, 0.5, 0.5)));\\\\n ret_4 = (pow (ret_4, vec3(0.5, 0.5, 0.5)) - (0.3 - ret2_2));\\\\n vec4 tmpvar_12;\\\\n tmpvar_12.w = 1.0;\\\\n tmpvar_12.xyz = ret_4;\\\\n ret = tmpvar_12.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/martin - The Bridge of Khazad-Dum.json\":\n/*!******************************************************************!*\\\n !*** ./presets/converted/martin - The Bridge of Khazad-Dum.json ***!\n \\******************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":4,\\\"gammaadj\\\":1.98,\\\"decay\\\":0.5,\\\"echo_zoom\\\":0.952,\\\"echo_alpha\\\":0.5,\\\"echo_orient\\\":3,\\\"wave_mode\\\":4,\\\"additivewave\\\":1,\\\"wave_thick\\\":1,\\\"modwavealphabyvolume\\\":1,\\\"wave_brighten\\\":0,\\\"darken\\\":1,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":0.527,\\\"wave_smoothing\\\":0.45,\\\"modwavealphastart\\\":0,\\\"modwavealphaend\\\":1.32,\\\"warpanimspeed\\\":1.459,\\\"warpscale\\\":2.007,\\\"zoom\\\":0.9999,\\\"warp\\\":0.01,\\\"sx\\\":0.9999,\\\"wave_r\\\":0.8,\\\"wave_g\\\":0.49,\\\"ob_size\\\":0.015,\\\"ob_b\\\":1,\\\"ib_size\\\":0.26,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":1.85,\\\"mv_r\\\":0.5,\\\"mv_g\\\":0.5,\\\"mv_b\\\":0.5,\\\"mv_a\\\":0,\\\"b1ed\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"sides\\\":33,\\\"additive\\\":1,\\\"num_inst\\\":81,\\\"rad\\\":0.04896,\\\"tex_ang\\\":1.00531,\\\"tex_zoom\\\":1.53117,\\\"g\\\":1,\\\"b\\\":1,\\\"a\\\":0,\\\"g2\\\":0,\\\"border_b\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\\ntrel = time/8;\\\\nk1 = instance/num_inst;\\\\nk2 = k1 + trel - int(k1+trel);\\\\n\\\\ny0 = k2+.01 ;\\\\n\\\\nxwidth = .1*(cos(6*k1)+3); //breite\\\\nxofs = .1*cos(k2*6+trel)*y0;\\\\nx = .5 + .4*xwidth*(.2+y0)*sin(k1*1383*xwidth) + xofs;\\\\n//xwidth in der letzten Klammer : Test\\\\n\\\\ny = y0;\\\\n\\\\nbright = 1-sqr(y0); \\\\na = max(bright,0); a2 = 0;\\\\nrad = .4*y0+.1 - .0*sin(k1*954);\\\\n\\\\nr = .0; g = 0; b = .0;\\\\nr2 = 0; g2 = 0; b2= .48; //## rot mit ampl. mod !\\\\nadditive = 1; ///sonst andere farben im warp-s gestoert\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":12,\\\"additive\\\":1,\\\"num_inst\\\":571,\\\"x\\\":0.26,\\\"y\\\":0.2,\\\"rad\\\":0.39317,\\\"tex_zoom\\\":0.9355,\\\"g2\\\":0,\\\"a2\\\":0.2,\\\"border_g\\\":0,\\\"border_b\\\":0,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"mov1 = q1;\\\\nRotMode = q3;\\\\nburst = q10;\\\\ncopies = q14;\\\\ncopy = (instance%copies)/copies;\\\\nk1 = int(instance/copies)*copies/num_inst;\\\\nk1 = int(k1*burst)/burst+k1/burst;\\\\n\\\\nmov1 = mov1 + k1 -copy*q2;//dt\\\\nmov1 = mov1 - int(mov1);\\\\n\\\\nRotMode = RotMode - copy*q4;\\\\nrota = mov1 * RotMode*q5*2 ;\\\\nmov1 = mov1*(1-RotMode) + RotMode*(.5+.025*k1);\\\\n\\\\nmov1 = pow(mov1,.9); //Schneller bei t=0;\\\\n\\\\nTht = sin(k1*k1*123.2)*(.2 + RotMode*.0);\\\\nPhi = k1*1613.3+rota;\\\\nv0 = (1.0 + .3*cos(k1*13234.7))*q5;\\\\n\\\\nz0 = q18/q5; //proximity\\\\n\\\\nt0 = .4;\\\\nspur = (mov1-t0) * above(mov1-t0,0)*q15 ;\\\\npy = spur*sin(copy*6.28);\\\\npx = spur*cos(copy*6.28);\\\\n\\\\nfov = z0*2; //kein vol hier, sonst y-skal daneben\\\\nox = (mov1-q19)*v0*sin(Tht) * cos(Phi); //### -.5 bis .5\\\\noy = mov1*v0*(1-mov1)*cos(2*Tht) -.25;\\\\noz = mov1*v0*sin(Tht)*sin(Phi); \\\\n\\\\nox = ox + (k1-.5)*q17 +px; \\\\noy = oy -py;\\\\noz = oz +py*3;\\\\n\\\\n//flim = below(((ox+oy+oz)*800)%32,q13-.1); //ctrl\\\\n//flim = q13/(((ox+oy+oz)*600)%16+1); //ctrl\\\\nrad = .025*z0/(oz+z0)*(1-mov1*.5);\\\\n\\\\nx = .5 + fov*ox/(oz+z0);\\\\ny = .5 + fov*oy/(oz+z0);\\\\nvis = above(mov1,q11)*below(mov1,q12)*above(oz,-z0);\\\\n\\\\na = vis*.7/sqrt(copies)*(1+above(spur,0));\\\\na2 = 0.;\\\\ng = flim;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":13,\\\"additive\\\":1,\\\"num_inst\\\":212,\\\"x\\\":0.65,\\\"y\\\":0.38,\\\"rad\\\":1.26467,\\\"tex_zoom\\\":0.73678,\\\"g\\\":1,\\\"a\\\":0.3,\\\"r2\\\":1,\\\"g2\\\":0,\\\"border_r\\\":0.5,\\\"border_g\\\":0.5,\\\"border_b\\\":0,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"//q25 = time/4;\\\\n//trel = 2* (q25/2-int(q25/2));\\\\ntrel = q25;\\\\ncopies = 1;\\\\ncopy = (instance%copies)/copies;\\\\nk1 = int(instance/copies)*copies/num_inst;\\\\nk2 = k1 + .5;\\\\ntrel = trel ;\\\\nt0 = .5; //do not change\\\\n\\\\nphase = above(trel,t0);\\\\nmov1 = bnot(phase)* (t0-trel + .01*k1);\\\\nmov2 = phase * (trel-t0); //####\\\\n//mov2 = pow(mov2,.8);\\\\nstray = 1.2-phase;\\\\n\\\\nTht = 3.14*sin(1234.2*k1+time*bnot(phase)) * stray ;\\\\nPhi = 3245.1*k1;\\\\n\\\\nsize0 = .02;\\\\nox = mov1*q27 + sin(Tht)*cos(phi)* (size0+mov2*(2+k1));\\\\noy = mov1*12 + cos(Tht)* (size0+4*mov2*k2)*(1-mov2*k2)/2;\\\\noz = mov1*8 + sin(Tht)*sin(phi)* (size0+mov2*2*(2+k1));\\\\n\\\\nz0 = 1;\\\\nrad = .03 / (oz+z0)/(1+trel*rand(100)/50);\\\\n\\\\nx = .5 + ox/(oz+z0);\\\\ny = q29+.2+ oy/(oz+z0);\\\\n\\\\na = .1*bnot(phase)+phase*max(0,1-mov2*0)*above(oz+z0,0)*.8; \\\"},{\\\"baseVals\\\":{\\\"sides\\\":14,\\\"additive\\\":1,\\\"thickoutline\\\":1,\\\"textured\\\":1,\\\"num_inst\\\":31,\\\"x\\\":0.75,\\\"y\\\":0.6,\\\"rad\\\":0.01,\\\"tex_zoom\\\":0.3357,\\\"g\\\":1,\\\"a\\\":0.5,\\\"r2\\\":1,\\\"g2\\\":0,\\\"border_r\\\":0.2,\\\"border_g\\\":0.7,\\\"border_b\\\":0.5,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"samples\\\":75,\\\"sep\\\":20,\\\"usedots\\\":1,\\\"additive\\\":1,\\\"scaling\\\":7.858,\\\"smoothing\\\":0.1,\\\"g\\\":0,\\\"b\\\":0,\\\"a\\\":0.2,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"usedots\\\":1,\\\"thick\\\":1,\\\"scaling\\\":0.89152,\\\"smoothing\\\":0.82,\\\"a\\\":0.1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"scaling\\\":0.89152,\\\"smoothing\\\":0.82,\\\"r\\\":0,\\\"g\\\":0.2,\\\"b\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"spectrum\\\":1,\\\"usedots\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"t0a = time; t0 = time+.5;\\\\nspb_ = .5; ;\\\\nvolb = .5; volx = .5;\\\\nvol_= 1; index = 0; mov1 = 0;\\\",\\\"frame_eqs_eel\\\":\\\"dec_med = pow (0.85, 30/fps); dec_slow = pow (0.95, 30/fps);\\\\nvol = (bass+med+treb)/1.5; vol_ = vol_*dec_slow + (1-dec_slow)*vol;\\\\n\\\\nis_beat = above(vol, .1+vol_+2*peak) * above (time, t0+spb_*.45);\\\\nt0a = if(is_beat,t0,t0a); t0 = if(is_beat,time,t0);\\\\npeak = if(is_beat,vol,peak*dec_med);\\\\nindex = (index + is_beat) %128;\\\\nspb_ = if(is_beat,spb_ *.9 +.1*min(t0-t0a + .01,2), spb_);\\\\n\\\\nq20 = vol_;\\\\nq21 = above(vol,2.7*vol_);\\\\nq22 = max(0,peak-.0)+.01;\\\\nhpeak = hpeak*dec_med + (1-dec_med)*q21;\\\\nq23 = hpeak * (1+rand(8));\\\\nq24 = is_beat;\\\\nvolb = bnot(q24)*volb + q24*vol_; //# vol oder vol_ ?\\\\nvolx = volx + .2/fps*max(min(volb-volx,1),-1)*bnot(RotMode);\\\\n\\\\n// *********** CENTRAL TIMELINE **************\\\\nrotmode = max(min(sin(mov1/2.4-1.5)*4-3,1),0); //####\\\\nstop = if(bnot(stop),bnot(index%24),below(lo,1))*bnot(rotmode);\\\\n//tmp = status%16;\\\\nspread = if (below(lo,1),spread,rand(2)*rand(12)/20);\\\\ncopies = if (below(lo,1),copies,3+rand(2)*rand(8));\\\\nspur = if (below(lo,1),spur, above(copies,5)*.1);\\\\nbursts = if (below(lo,1),bursts,1+rand(2)*rand(6));\\\\nxbase = if (below(lo,1),xbase,rand(2)*(rand(10)/10-.5));\\\\nvs0 = if (is_beat * bnot(index%77),rand(5)/4-.7,vs0);\\\\nvshift = vshift + 3/fps*max(min((vs0-vshift),.04),-.04);\\\\n//*********** SMOOTH MOVEMENTS q1 - q8 for SHAPE2 ********\\\\n//FONTAENE\\\\nspeed = .15/fps/spb_;\\\\ntmp = mov1; mov1 = mov1+speed; q2 = mov1-tmp; q1 = mov1;\\\\n\\\\n//ROTATION\\\\n//evtl q5 mit rotmode fixieren statt volx blockieren\\\\ntmp = RotMode; q3 = RotMode; q4 = RotMode-tmp;\\\\n\\\\n//VOLUME\\\\ntmp = volx; q5 = volx; q6 = q5-tmp; //nicht aendern waehrend Rotation\\\\n\\\\n//********* SWITCHES SHAPE2 *************\\\\nq10 = bursts; //num bursts\\\\nlo = if(stop,lo+speed,0); //ident. wie bei mov 1!!\\\\nhi = if(above(lo,1),0,hi+speed); //ident. wie bei mov 1!!\\\\nq11 = lo; //fade out\\\\nq12 = hi;\\\\nq13 = sqrt(q22)*0; //blink effect, ca. 0..16\\\\nq14 = copies; //copies - noch implementieren\\\\nq15 = spur*(1-RotMode); //Ampl. multiple spurs; nur mit >8 copies !\\\\nq16 = 0; //reserved for spur start\\\\nq17 = spread * (1-rotmode); //hor. spread, max. ca. 0.4\\\\nq18 = 1/min(max(sin(mov1/2)*10,1),4); //proximity - smaller values: closer;\\\\nq19 = xbase;\\\\n//********* CONTROL PARAMETERS SHAPE3 *************\\\\nxtime = if (stop*q21*above(xtime,2),0,xtime+.2/fps); //impact\\\\nq25 = xtime;\\\\nq26 = if (below(xtime,.55),pow(32,-sqr(xtime-.55)*512),pow(2,-sqr(xtime-.55)*3));\\\\nq27 = sin(time/29)*4; //x-direction impact\\\\n\\\\n//********* GENERAL CONTROL PARAMETERS ***************\\\\nwind = wind+.5/fps * (volx-1.5);\\\\nq28 = wind;//wind direction - warp shader\\\\nq29 = vshift ;// in warp+comp+impact shape\\\\nq30 = max(sin(mov1/2.2)*sin(time/7),0)+q26;// front cloud dens. - comp.\\\\nq31 = q5*2-2 + sin(time/17); //back cloud lighting - comp shader\\\\nq32 = 3+2*sin(time/27); //back cloud density - comp shader\\\\n\\\\nmonitor = vshift;;\\\",\\\"pixel_eqs_eel\\\":\\\"zoom = 1;\\\\ndy = -.00;\\\\nwarp =.0;\\\",\\\"warp\\\":\\\"mat2 ofs;\\\\nfloat xlat_mutablegreen;\\\\nfloat xlat_mutablek1;\\\\nfloat xlat_mutablered;\\\\nvec2 xlat_mutableuv2;\\\\nfloat xlat_mutablewave;\\\\nfloat xlat_mutablezv;\\\\n shader_body { \\\\n mat2 tmpvar_1;\\\\n tmpvar_1[uint(0)].x = texsize.z;\\\\n tmpvar_1[uint(0)].y = 0.0;\\\\n tmpvar_1[1u].x = 0.0;\\\\n tmpvar_1[1u].y = texsize.w;\\\\n ofs = (tmpvar_1 * 4.0);\\\\n float delta_2;\\\\n float ky_3;\\\\n vec2 tmpvar_4;\\\\n tmpvar_4.x = (uv.x - 0.5);\\\\n tmpvar_4.y = ((uv.y - 0.5) + q29);\\\\n vec2 v_5;\\\\n v_5.x = ofs[0].x;\\\\n v_5.y = ofs[1].x;\\\\n vec2 v_6;\\\\n v_6.x = ofs[0].x;\\\\n v_6.y = ofs[1].x;\\\\n vec2 v_7;\\\\n v_7.x = ofs[0].y;\\\\n v_7.y = ofs[1].y;\\\\n vec2 v_8;\\\\n v_8.x = ofs[0].y;\\\\n v_8.y = ofs[1].y;\\\\n vec2 tmpvar_9;\\\\n tmpvar_9.x = (texture (sampler_main, (uv + v_5)) - texture (sampler_main, (uv - v_6))).x;\\\\n tmpvar_9.y = (texture (sampler_main, (uv + v_7)) - texture (sampler_main, (uv - v_8))).x;\\\\n xlat_mutablered = (0.5 * texture (sampler_main, (uv - (0.004 * tmpvar_9))).x);\\\\n xlat_mutablered = (xlat_mutablered + (0.5 * texture (sampler_main, uv).x));\\\\n vec2 tmpvar_10;\\\\n tmpvar_10.x = tmpvar_4.x;\\\\n tmpvar_10.y = (0.0078125 * (float(\\\\n int((tmpvar_4.y * 128.0))\\\\n ) + abs(\\\\n (fract((tmpvar_4.y * 128.0)) - 0.5)\\\\n )));\\\\n vec2 tmpvar_11;\\\\n tmpvar_11 = (tmpvar_10 * 4.0);\\\\n ky_3 = clamp ((-0.5 - tmpvar_11.y), 0.0, 1.0);\\\\n xlat_mutablek1 = (abs((\\\\n fract((tmpvar_11.x * 2.0))\\\\n - 0.5)) * 8.0);\\\\n xlat_mutablek1 = (xlat_mutablek1 - sign(xlat_mutablek1));\\\\n delta_2 = (0.1 + (rand_preset * 0.05)).x;\\\\n xlat_mutablek1 = (xlat_mutablek1 - ((\\\\n (4.0 * sign(xlat_mutablek1))\\\\n * ky_3) * ky_3));\\\\n ky_3 = clamp ((ky_3 - delta_2), 0.0, 1.0);\\\\n xlat_mutablek1 = (xlat_mutablek1 - ((\\\\n (8.0 * sign(xlat_mutablek1))\\\\n * ky_3) * ky_3));\\\\n ky_3 = clamp ((ky_3 - delta_2), 0.0, 1.0);\\\\n xlat_mutablek1 = (xlat_mutablek1 - ((\\\\n (12.0 * sign(xlat_mutablek1))\\\\n * ky_3) * ky_3));\\\\n ky_3 = clamp ((ky_3 - delta_2), 0.0, 1.0);\\\\n xlat_mutablek1 = (xlat_mutablek1 - ((\\\\n (16.0 * sign(xlat_mutablek1))\\\\n * ky_3) * ky_3));\\\\n ky_3 = clamp ((ky_3 - delta_2), 0.0, 1.0);\\\\n float tmpvar_12;\\\\n tmpvar_12 = clamp (xlat_mutablek1, -1.6, 1.6);\\\\n xlat_mutablek1 = tmpvar_12;\\\\n xlat_mutablegreen = (cos((tmpvar_12 * 2.0)) - 0.1);\\\\n xlat_mutablewave = ((sin(\\\\n ((q1 * 8.0) - (uv.x * 6.0))\\\\n ) / 2.0) * q3);\\\\n xlat_mutablewave = ((xlat_mutablewave * float(\\\\n (xlat_mutablewave >= 0.0)\\\\n )) + (q30 * 0.02));\\\\n xlat_mutablered = (xlat_mutablered + ((\\\\n (xlat_mutablewave / abs(sin((\\\\n (1.0/(tmpvar_12))\\\\n + \\\\n (q1 / 8.0)\\\\n ))))\\\\n * xlat_mutablegreen) * ky_3));\\\\n xlat_mutablezv = ((time * 0.08) + (0.2 * sin(\\\\n ((uv * 16.0) + time)\\\\n ))).x;\\\\n vec2 tmpvar_13;\\\\n tmpvar_13.x = q28;\\\\n tmpvar_13.y = (0.2 * time);\\\\n xlat_mutableuv2 = ((tmpvar_4 * 2.0) + tmpvar_13);\\\\n vec3 tmpvar_14;\\\\n tmpvar_14.xy = xlat_mutableuv2;\\\\n tmpvar_14.z = xlat_mutablezv;\\\\n vec3 tmpvar_15;\\\\n tmpvar_15.xy = (xlat_mutableuv2 * vec2(2.0, 2.0));\\\\n tmpvar_15.z = (xlat_mutablezv * 2.0);\\\\n vec3 tmpvar_16;\\\\n tmpvar_16.xy = (xlat_mutableuv2 * vec2(4.0, 4.0));\\\\n tmpvar_16.z = (xlat_mutablezv * 3.0);\\\\n vec3 tmpvar_17;\\\\n tmpvar_17.xy = (xlat_mutableuv2 * vec2(8.0, 8.0));\\\\n tmpvar_17.z = (xlat_mutablezv * 7.0);\\\\n xlat_mutableuv2 = (tmpvar_4 + ((\\\\n ((texture (sampler_noisevol_hq, tmpvar_14).z + (texture (sampler_noisevol_hq, tmpvar_15).z / 2.0)) + (texture (sampler_noisevol_hq, tmpvar_16).z / 4.0))\\\\n + \\\\n (texture (sampler_noisevol_hq, tmpvar_17).z / 8.0)\\\\n ) * 0.1));\\\\n vec3 tmpvar_18;\\\\n tmpvar_18.x = xlat_mutablered;\\\\n tmpvar_18.y = xlat_mutablegreen;\\\\n tmpvar_18.z = ((1.0 + xlat_mutableuv2.y) * sqrt(dot (xlat_mutableuv2, xlat_mutableuv2)));\\\\n vec4 tmpvar_19;\\\\n tmpvar_19.w = 1.0;\\\\n tmpvar_19.xyz = ((tmpvar_18 * 0.8) - 0.005);\\\\n ret = tmpvar_19.xyz;\\\\n }\\\",\\\"comp\\\":\\\"float trel;\\\\nfloat vshift;\\\\nvec3 xlat_mutableret1;\\\\nvec2 xlat_mutablers;\\\\nvec2 xlat_mutablers0;\\\\nfloat xlat_mutablesmoke;\\\\nfloat xlat_mutablesmoke2;\\\\nvec2 xlat_mutableuv_l;\\\\nfloat xlat_mutablew;\\\\nfloat xlat_mutablez;\\\\n shader_body { \\\\n trel = (time / 2.0);\\\\n vshift = (0.5 - q29);\\\\n vec2 tmpvar_1;\\\\n tmpvar_1.x = rand_preset.x;\\\\n tmpvar_1.y = ((-0.1 - (rand_preset.y / 2.0)) + vshift);\\\\n vec2 tmpvar_2;\\\\n tmpvar_2.y = 0.0;\\\\n tmpvar_2.x = (0.005 * time);\\\\n xlat_mutableuv_l = (uv + tmpvar_2);\\\\n vec2 tmpvar_3;\\\\n vec2 tmpvar_4;\\\\n tmpvar_4 = (uv - 0.5);\\\\n tmpvar_3 = sin(((\\\\n (tmpvar_4 * aspect.xy)\\\\n + 0.5) - (tmpvar_1 * aspect.xy)));\\\\n vec2 tmpvar_5;\\\\n tmpvar_5 = fract(uv);\\\\n vec3 tmpvar_6;\\\\n tmpvar_6 = vec3((texture (sampler_fc_main, tmpvar_5).x + (2.0 * (\\\\n (texture (sampler_blur2, tmpvar_5).xyz * scale2)\\\\n + bias2).x)));\\\\n vec3 tmpvar_7;\\\\n tmpvar_7.x = tmpvar_6.x;\\\\n tmpvar_7.y = pow (tmpvar_6.x, 2.1);\\\\n tmpvar_7.z = pow (tmpvar_6.x, 4.0);\\\\n xlat_mutablew = ((uv.y - (\\\\n ((dot (texture (sampler_noise_hq, vec2((xlat_mutableuv_l.x / 6.0))), vec4(0.32, 0.49, 0.29, 0.0)) + uv.x) - 0.5)\\\\n / 4.0)) - vshift);\\\\n xlat_mutablez = (0.2 / xlat_mutablew);\\\\n float tmpvar_8;\\\\n tmpvar_8 = clamp ((-0.2 - (\\\\n (8.0 * q5)\\\\n * xlat_mutablew)), 0.0, 1.0);\\\\n xlat_mutablers0.x = (((uv.x - 0.5) * (1.0 + \\\\n abs(xlat_mutablez)\\\\n )) * 2.0);\\\\n xlat_mutablers0.y = xlat_mutablez;\\\\n xlat_mutablers0 = (xlat_mutablers0 * ((4.0 * \\\\n float((xlat_mutablez <= 0.0))\\\\n ) + 1.0));\\\\n vec2 tmpvar_9;\\\\n tmpvar_9.x = 0.0;\\\\n tmpvar_9.y = (1.5 + xlat_mutablew);\\\\n vec2 x_10;\\\\n x_10 = (xlat_mutablers0 - tmpvar_9);\\\\n float tmpvar_11;\\\\n tmpvar_11 = ((q26 / sqrt(\\\\n dot (x_10, x_10)\\\\n )) / 4.0);\\\\n xlat_mutablers0 = (xlat_mutablers0 * (1.0 + (tmpvar_11 * tmpvar_11)));\\\\n xlat_mutablers.x = (xlat_mutablers0 * 2.0).x;\\\\n xlat_mutablers.y = (xlat_mutablers0.y + (trel * 0.5));\\\\n float tmpvar_12;\\\\n tmpvar_12 = (texture (sampler_main, uv).y * tmpvar_8);\\\\n vec3 tmpvar_13;\\\\n tmpvar_13.xy = (xlat_mutablers * 2.0);\\\\n tmpvar_13.z = (0.2 * trel);\\\\n float tmpvar_14;\\\\n tmpvar_14 = dot (((\\\\n ((2.0 * clamp ((texture (sampler_noisevol_hq, \\\\n (tmpvar_13 * float((xlat_mutablez >= 0.0)))\\\\n ) - 0.2), 0.0, 1.0)).xyz * clamp ((texture (sampler_noise_hq, (xlat_mutablers / 16.0)) - 0.5), 0.0, 1.0).x)\\\\n / \\\\n sqrt(abs(xlat_mutablez))\\\\n ) + tmpvar_11), vec3(0.32, 0.49, 0.29));\\\\n vec3 tmpvar_15;\\\\n tmpvar_15.x = tmpvar_14;\\\\n tmpvar_15.y = pow (tmpvar_14, 2.1);\\\\n tmpvar_15.z = pow (tmpvar_14, 6.0);\\\\n xlat_mutableret1 = (((\\\\n ((uv.y * (1.0 + q23)) + (0.1 / sqrt(dot (tmpvar_3, tmpvar_3))))\\\\n * vec3(0.1, 0.1, 0.2)) * tmpvar_8) + (clamp (tmpvar_15, 0.0, 1.0) * (1.0 - \\\\n clamp ((-1.0 - (12.0 * xlat_mutablew)), 0.0, 1.0)\\\\n )));\\\\n xlat_mutableret1 = (xlat_mutableret1 * clamp ((1.0 - \\\\n (tmpvar_12 * 8.0)\\\\n ), 0.0, 1.0));\\\\n vec4 tmpvar_16;\\\\n tmpvar_16 = texture (sampler_main, fract((tmpvar_4 + 0.5)));\\\\n xlat_mutablesmoke = (tmpvar_16.z * (tmpvar_16.z * q5));\\\\n xlat_mutableret1 = (xlat_mutableret1 * clamp ((1.0 - \\\\n ((xlat_mutablesmoke * q32) * tmpvar_8)\\\\n ), 0.0, 1.0));\\\\n xlat_mutablesmoke2 = (texture (sampler_main, ((tmpvar_4 / 2.0) + 0.5)).z * q30);\\\\n xlat_mutableret1 = (xlat_mutableret1 + (clamp (tmpvar_7, 0.0, 1.0) - (\\\\n ((xlat_mutablez * clamp ((xlat_mutablesmoke + \\\\n (xlat_mutablew * q31)\\\\n ), 0.0, 1.0)) * vec3(1.0, 0.4, 0.1))\\\\n * tmpvar_8)));\\\\n float tmpvar_17;\\\\n tmpvar_17 = clamp (((\\\\n (tmpvar_12 * xlat_mutablez)\\\\n * xlat_mutablez) / 16.0), 0.0, 1.0);\\\\n vec3 tmpvar_18;\\\\n tmpvar_18.x = tmpvar_17;\\\\n tmpvar_18.y = pow (tmpvar_17, 2.1);\\\\n tmpvar_18.z = pow (tmpvar_17, 6.0);\\\\n xlat_mutableret1 = (xlat_mutableret1 + clamp (tmpvar_18, 0.0, 1.0));\\\\n xlat_mutableret1 = (xlat_mutableret1 * clamp ((\\\\n (((dot (texture (sampler_noise_mq, vec2(\\\\n ((xlat_mutableuv_l.x / 4.0) + (0.02 * trel))\\\\n )), vec4(0.32, 0.49, 0.29, 0.0)) / 6.0) - uv.y) + 0.8)\\\\n * 32.0), 0.0, 1.0));\\\\n vec3 tmpvar_19;\\\\n tmpvar_19.x = xlat_mutablesmoke2;\\\\n tmpvar_19.y = pow (xlat_mutablesmoke2, 2.1);\\\\n tmpvar_19.z = pow (xlat_mutablesmoke2, 6.0);\\\\n xlat_mutableret1 = ((xlat_mutableret1 * clamp (\\\\n (1.0 - xlat_mutablesmoke2)\\\\n , 0.0, 1.0)) + clamp (tmpvar_19, 0.0, 1.0));\\\\n vec4 tmpvar_20;\\\\n tmpvar_20.w = 1.0;\\\\n tmpvar_20.xyz = (1.0 - exp((\\\\n -(xlat_mutableret1)\\\\n * 2.0)));\\\\n ret = tmpvar_20.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/martin - angel flight.json\":\n/*!******************************************************!*\\\n !*** ./presets/converted/martin - angel flight.json ***!\n \\******************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":0,\\\"gammaadj\\\":1.980001,\\\"decay\\\":0.5,\\\"echo_zoom\\\":0.999998,\\\"echo_alpha\\\":0.5,\\\"echo_orient\\\":3,\\\"wave_mode\\\":7,\\\"wave_dots\\\":1,\\\"wave_thick\\\":1,\\\"wave_brighten\\\":0,\\\"darken\\\":1,\\\"wave_a\\\":0.39158,\\\"wave_scale\\\":0.01,\\\"wave_smoothing\\\":0.504,\\\"wave_mystery\\\":-1,\\\"modwavealphastart\\\":0.71,\\\"modwavealphaend\\\":1.3,\\\"warpanimspeed\\\":1.4595,\\\"warpscale\\\":2.0067,\\\"zoom\\\":0.9999,\\\"warp\\\":0.01,\\\"sx\\\":0.9999,\\\"wave_r\\\":0.7,\\\"wave_g\\\":0,\\\"ob_r\\\":1,\\\"ob_g\\\":1,\\\"ob_b\\\":1,\\\"ib_size\\\":0.26,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":0,\\\"mv_r\\\":0.5,\\\"mv_g\\\":0.5,\\\"mv_b\\\":0.5,\\\"mv_a\\\":0,\\\"b1ed\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"textured\\\":1,\\\"x\\\":0.3,\\\"rad\\\":0.379365,\\\"tex_ang\\\":0.628319,\\\"tex_zoom\\\":4.141529,\\\"r\\\":0.3,\\\"g\\\":0.7,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":0.7,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x = q1/6 + .5;\\\\ny = q2/6 + .5;\\\"},{\\\"baseVals\\\":{\\\"sides\\\":5,\\\"textured\\\":1,\\\"rad\\\":0.986,\\\"tex_ang\\\":3.14159,\\\"tex_zoom\\\":0.99979,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"ang =sin(time/65) ;// ang + (bass*.2) + (time*.4);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":5,\\\"additive\\\":1,\\\"x\\\":0.9,\\\"rad\\\":0.22613,\\\"g\\\":0.6,\\\"g2\\\":0,\\\"b2\\\":0.4,\\\"a2\\\":0.3,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"t_rel = 5*time;\\\\nt1 = int(t_rel);\\\",\\\"frame_eqs_eel\\\":\\\"dx = rand(1000)/1000-.5;\\\\ndy = rand(1000)/1000-.5;\\\\n\\\\nx = .5 + dx*(1-q22/4);\\\\ny = .5 + dy*(1-q22/4);\\\\n\\\\nang = time;\\\\n\\\\na = 1;\\\\nrad = .1*q24+0.08 +q22/40;\\\"},{\\\"baseVals\\\":{\\\"additive\\\":1,\\\"textured\\\":1,\\\"x\\\":0.51,\\\"rad\\\":0.249779,\\\"tex_ang\\\":0.125664,\\\"tex_zoom\\\":5.536972,\\\"r\\\":0.6,\\\"g\\\":0.3,\\\"b\\\":0.4,\\\"a\\\":0.6,\\\"g2\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"a = max(q22-2,0);\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"samples\\\":256,\\\"spectrum\\\":1,\\\"usedots\\\":1,\\\"scaling\\\":0.5033,\\\"g\\\":0.6,\\\"b\\\":0.4},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\\nt_abs = sample;\\\\nt_rel = sample-time/1;\\\\nampl = time;\\\\n\\\\nox = ampl*10*sin (t_abs*68);\\\\noy = ampl*10*cos (t_abs*28);\\\\noz = ampl*10*cos (t_abs*128);\\\\n\\\\n\\\\nr = 1;\\\\ng = .5 ;\\\\nb = 1 ;\\\\na=q26/18;\\\\n\\\\nxang = t1 ;\\\\nyang = t1*2;\\\\nzang = t1;\\\\nfov = 0.12;\\\\n\\\\n\\\\n// Rotation um x,y,z\\\\n\\\\nmx = ox*cos(zang) - oy*sin(zang);\\\\nmy = ox*sin(zang) + oy*cos(zang);\\\\n\\\\nox = mx;\\\\noy = my;\\\\nmx = ox*cos(yang) + oz*sin(yang);\\\\nmz = -ox*sin(yang) + oz*cos(yang);\\\\nox = mx;\\\\noz = mz;\\\\nmy = oy*cos(xang) - oz*sin(xang);\\\\nmz = oy*sin(xang) + oz*cos(xang);\\\\noy = my;\\\\noz = mz;\\\\n\\\\noz = oz - 6;\\\\nx = ox*fov/oz +0.5;\\\\n//x = (x-.5)*0.75 + 0.5;\\\\ny = oy*fov/oz + 0.5;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"a = max(sin(time/8)-.5,0);\\\\nr = .4; g = .2; b = .7;\\\\n\\\\nx = sample + .01*cos(sample*243+time);\\\\ny = .5+.5*sin(time/13) + .02*sin(sample*143);\\\\na = .7 ;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"dec_med = pow (0.9, 30/fps);\\\\ndec_slow = pow (0.99, 30/fps);\\\\nbeat = max (max (bass, mid), treb);\\\\navg = avg*dec_slow + beat*(1-dec_slow);\\\\nis_beat = above(beat, .5+avg+peak) * above (time, t0+.2);\\\\nt0 = is_beat*time + (1-is_beat)*t0;\\\\npeak = is_beat * beat + (1-is_beat)*peak*dec_med;\\\\nindex = (index + is_beat) %8;\\\\nindex2 = (index2 + is_beat*bnot(index))%4;\\\\nindex3 = (index3 + is_beat*bnot(index)*bnot(index2))%3;\\\\n\\\\n\\\\nq20 = avg;\\\\nq21 = beat;\\\\nq22 = peak;\\\\nq23 = index;\\\\nq24 = is_beat;\\\\nq26 = bass + mid + treb;\\\\n\\\\n//k1 = is_beat*bnot(index)*bnot(index2);\\\\n\\\\nk1 = is_beat*equal(index,0);\\\\np1 = k1*(p1+1) + (1-k1)*p1;\\\\np2 = dec_slow * p2+ (1-dec_slow)*p1;\\\\nrott = p2 * 3.14159265359/2;\\\\n\\\\nq27 = 8-index;\\\\nq28 = .5 + sin(time/7)/10;\\\\nq29 = index4;\\\\n\\\\nmv_a = 0.2;\\\\nt_rel = time/3;\\\\nwave_a = max(sin(time/8)-.5,0);\\\\nwave_a = 0;\\\\nwave_x = .5+.5*sin(time/13);\\\\n\\\\nq1 = cos(rott);\\\\nq2 = sin(rott);\\\\nq3 = -q2;\\\\nq4 = q1;\\\\n\\\\nmovez = movez + .01 * 30/fps ;\\\\nq29 = movez;\\\\n\\\\n\\\\nzoom = 1;\\\\nrot = .0;\\\\ndx = .003\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\" shader_body { \\\\n vec2 tmpvar_1;\\\\n tmpvar_1 = (((uv - vec2(0.5, 0.5)) * texsize.xy) * 0.03);\\\\n vec4 tmpvar_2;\\\\n tmpvar_2.w = 1.0;\\\\n tmpvar_2.xyz = ((0.99 * texture (sampler_main, (uv + \\\\n (((clamp (\\\\n (sin(tmpvar_1) / cos(tmpvar_1))\\\\n , vec2(-12.0, -12.0), vec2(12.0, 12.0)) * cos(\\\\n (tmpvar_1.yx * tmpvar_1.yx)\\\\n )) * texsize.zw) * 12.0)\\\\n )).xyz) - 0.01);\\\\n ret = tmpvar_2.xyz;\\\\n }\\\",\\\"comp\\\":\\\"vec3 xlat_mutableret1;\\\\nvec2 xlat_mutableuv2;\\\\n shader_body { \\\\n vec2 uv_1;\\\\n float inten_2;\\\\n float dist_3;\\\\n uv_1 = (uv - 0.5);\\\\n uv_1 = (uv_1 * aspect.xy);\\\\n dist_3 = (1.0 - fract((0.25 + q29)));\\\\n inten_2 = (sqrt(dist_3) * (1.0 - (dist_3 * dist_3)));\\\\n xlat_mutableret1 = max (vec3(0.0, 0.0, 0.0), (texture (sampler_main, fract(\\\\n (((2.0 * uv_1) * dist_3) + 0.5)\\\\n )).xyz * inten_2));\\\\n xlat_mutableuv2.x = -(uv_1.y);\\\\n xlat_mutableuv2.y = uv_1.x;\\\\n dist_3 = (1.0 - fract((0.5 + q29)));\\\\n inten_2 = (sqrt(dist_3) * (1.0 - (dist_3 * dist_3)));\\\\n xlat_mutableret1 = max (xlat_mutableret1, (texture (sampler_main, fract(\\\\n (((2.0 * xlat_mutableuv2) * dist_3) + 0.5)\\\\n )).xyz * inten_2));\\\\n dist_3 = (1.0 - fract((0.75 + q29)));\\\\n inten_2 = (sqrt(dist_3) * (1.0 - (dist_3 * dist_3)));\\\\n xlat_mutableret1 = max (xlat_mutableret1, (texture (sampler_main, fract(\\\\n (((2.0 * uv_1) * dist_3) + 0.5)\\\\n )).xyz * inten_2));\\\\n xlat_mutableuv2.x = -(uv_1.y);\\\\n xlat_mutableuv2.y = uv_1.x;\\\\n dist_3 = (1.0 - fract((1.0 + q29)));\\\\n inten_2 = (sqrt(dist_3) * (1.0 - (dist_3 * dist_3)));\\\\n xlat_mutableret1 = max (xlat_mutableret1, (texture (sampler_main, fract(\\\\n (((2.0 * xlat_mutableuv2) * dist_3) + 0.5)\\\\n )).xyz * inten_2));\\\\n vec4 tmpvar_4;\\\\n tmpvar_4.w = 1.0;\\\\n tmpvar_4.xyz = (xlat_mutableret1 * 3.0);\\\\n ret = tmpvar_4.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/martin - another kind of groove.json\":\n/*!****************************************************************!*\\\n !*** ./presets/converted/martin - another kind of groove.json ***!\n \\****************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":5,\\\"gammaadj\\\":1.980001,\\\"decay\\\":0.5,\\\"echo_zoom\\\":0.952379,\\\"echo_alpha\\\":0.5,\\\"echo_orient\\\":3,\\\"wave_mode\\\":4,\\\"modwavealphabyvolume\\\":1,\\\"wave_brighten\\\":0,\\\"darken\\\":1,\\\"wave_a\\\":0.391579,\\\"wave_scale\\\":1.575857,\\\"wave_smoothing\\\":0.45,\\\"wave_mystery\\\":0.08,\\\"modwavealphastart\\\":0,\\\"modwavealphaend\\\":1.32,\\\"warpanimspeed\\\":1.4595,\\\"warpscale\\\":2.0067,\\\"zoom\\\":0.9999,\\\"warp\\\":0.01,\\\"sx\\\":0.9999,\\\"wave_r\\\":0.5,\\\"wave_g\\\":0.79,\\\"ob_size\\\":0,\\\"ob_a\\\":0.8,\\\"ib_size\\\":0.26,\\\"mv_x\\\":31.999998,\\\"mv_y\\\":24.000004,\\\"mv_l\\\":0.05,\\\"mv_r\\\":0.4999,\\\"mv_g\\\":0.4999,\\\"mv_b\\\":0.4999,\\\"mv_a\\\":0,\\\"b1ed\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"textured\\\":1,\\\"rad\\\":0.545996,\\\"ang\\\":2.199115,\\\"tex_ang\\\":0.502655,\\\"tex_zoom\\\":2.02311,\\\"g\\\":1,\\\"b\\\":0.9,\\\"a\\\":0.6,\\\"r2\\\":0.8,\\\"g2\\\":0.8,\\\"b2\\\":0.8,\\\"a2\\\":0.6,\\\"border_b\\\":0,\\\"border_a\\\":0.7},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"tex_ang = 1 + sin(time/9);\\\\nrad = q29;\\\\ntex_zoom = (2 + sin(time/17));\\\\nadditive = q22/6;\\\\ntextured = 1-bnot(q23)*q24;\\\"},{\\\"baseVals\\\":{\\\"sides\\\":34,\\\"thickoutline\\\":1,\\\"rad\\\":0.728634,\\\"tex_zoom\\\":0.9355,\\\"r\\\":0.5,\\\"g\\\":0.55,\\\"b\\\":0.5,\\\"a\\\":0.0999,\\\"r2\\\":0.7,\\\"g2\\\":0.4,\\\"border_r\\\":0.5,\\\"border_g\\\":0.5,\\\"border_b\\\":0.5,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":100,\\\"x\\\":0.503,\\\"rad\\\":0.01,\\\"tex_zoom\\\":0.609857,\\\"g\\\":0.1,\\\"a\\\":0.9,\\\"r2\\\":1,\\\"b2\\\":1,\\\"border_r\\\":0.5,\\\"border_g\\\":0.5,\\\"border_b\\\":0.5,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x = .5 + rand(10)/25;\\\\ny = .5 + rand(10)/25;\\\\nang = rand(6);\\\\nr = rand(4)/3;\\\\ng = rand(4)/3;\\\\nb = rand(4)/3;\\\\nr2 = b;\\\\ng2 = r;\\\\nb2 = g;\\\\na = min(q21/2 ,.9);\\\\nrad = a/9 ;\\\\n\\\\na = .5;a2 = .8;\\\"},{\\\"baseVals\\\":{\\\"sides\\\":63,\\\"textured\\\":1,\\\"y\\\":1,\\\"rad\\\":0.548217,\\\"tex_zoom\\\":0.499805,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"border_r\\\":0.5,\\\"border_g\\\":0.5,\\\"border_b\\\":0.5,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"samples\\\":142,\\\"sep\\\":120,\\\"usedots\\\":1,\\\"additive\\\":1,\\\"scaling\\\":0.01,\\\"smoothing\\\":0.82,\\\"a\\\":0.6,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t1 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt2 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt3 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt4 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt5 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt6 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt7 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt8 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\n\\\",\\\"frame_eqs_eel\\\":\\\"t2 = t2 + bass_att;\\\",\\\"point_eqs_eel\\\":\\\"\\\\nt_abs = sample;\\\\nt_rel = sample-time/8;\\\\n\\\\nox = sin (sample*110) ;\\\\noy = cos (sample*110);\\\\n\\\\noz = 4+1/(t_rel - int(t_rel));\\\\n\\\\nr = .3;\\\\ng = 0.7;\\\\nb = 1;\\\\n\\\\na = .8;\\\\n\\\\nxang = 0;\\\\nyang = 0;\\\\nzang = 0;\\\\nfov = .5;\\\\n\\\\n\\\\n// Rotation um x,y,z\\\\n\\\\nmx = ox*cos(zang) - oy*sin(zang);\\\\nmy = ox*sin(zang) + oy*cos(zang);\\\\n\\\\nox = mx;\\\\noy = my;\\\\nmx = ox*cos(yang) + oz*sin(yang);\\\\nmz = -ox*sin(yang) + oz*cos(yang);\\\\nox = mx;\\\\noz = mz;\\\\nmy = oy*cos(xang) - oz*sin(xang);\\\\nmz = oy*sin(xang) + oz*cos(xang);\\\\noy = my;\\\\noz = mz;\\\\n\\\\nx = ox*fov/oz +0.45;\\\\ny = oy*fov/oz + 0.45;\\\"},{\\\"baseVals\\\":{\\\"usedots\\\":1,\\\"thick\\\":1,\\\"scaling\\\":0.891519,\\\"smoothing\\\":0.82,\\\"a\\\":0.1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t1 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt2 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt3 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt4 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt5 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt6 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt7 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt8 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\n\\\",\\\"frame_eqs_eel\\\":\\\"tm = time*.1;\\\\nt1 = t1*sin(tm*t4) + (1-t1)*sin(tm*t7);\\\\nt2 = t2*sin(tm*t5) + (1-t2)*sin(tm*t8);\\\\nt3 = t3*sin(tm*t6) + (1-t3)*sin(tm*1);\\\\n\\\\ntic = min(time - tin,1);\\\\ntin = time;\\\\n\\\\ntva = (tic*q1*.5);\\\\ntvb = (tic*q2*.5);\\\\ntvc = (tic*q3*.5);\\\\n\\\\nq1 = tva;\\\\nq2 = tvb;\\\\nq3 = tvc;\\\\n\\\\nsz = .5;\\\\nlen = q4;\\\\nt4 = len;\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"scaling\\\":0.891519,\\\"smoothing\\\":0.82,\\\"r\\\":0,\\\"g\\\":0.2,\\\"b\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t1 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt2 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt3 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt4 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt5 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt6 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt7 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt8 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\n\\\",\\\"frame_eqs_eel\\\":\\\"tm = time*.1;\\\\nt1 = t1*sin(tm*t4) + (1-t1)*sin(tm*t7);\\\\nt2 = t2*sin(tm*t5) + (1-t2)*sin(tm*t8);\\\\nt3 = t3*sin(tm*t6) + (1-t3)*sin(tm*1);\\\\n\\\\ntic = min(time - tin,1);\\\\ntin = time;\\\\n\\\\ntva = (tic*q1*.5);\\\\ntvb = (tic*q2*.5);\\\\ntvc = (tic*q3*.5);\\\\n\\\\nq1 = tva;\\\\nq2 = tvb;\\\\nq3 = tvc;\\\\n\\\\nsz = .5;\\\\nlen = 1;\\\\nt4 = len;\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"spectrum\\\":1,\\\"usedots\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"dec_med = pow (0.9, 30/fps);\\\\ndec_slow = pow (0.99, 30/fps);\\\\nbeat = max (max (bass, mid), treb);\\\\navg = avg*dec_slow + beat*(1-dec_slow);\\\\nis_beat = above(beat, .5+avg+peak) * above (time, t0+.2);\\\\nt0 = is_beat*time + (1-is_beat)*t0;\\\\npeak = is_beat * beat + (1-is_beat)*peak*dec_med;\\\\nindex = (index + is_beat) %4;\\\\nindex2 = (index2 + is_beat*bnot(index))%4;\\\\nindex3 = (index3 + is_beat*bnot(index)*bnot(index2))%3;\\\\n\\\\n\\\\nq20 = avg;\\\\nq21 = beat;\\\\nq22 = max(peak,4);\\\\nq23 = index;\\\\nq24 = is_beat;\\\\nq26 = max(bass + mid + treb,3);\\\\n\\\\ngo = go*dec_slow + (1-dec_slow) * equal(index2,2);\\\\n\\\\nmovez = movez + .1*(1+.3*q26)*30/fps * go;\\\\nq30 = movez;\\\\n\\\\nk1 = is_beat*equal(index,0);\\\\np1 = k1*(p1+1) + (1-k1)*p1;\\\\np2 = dec_med * p2+ (1-dec_med)*p1;\\\\np3 = dec_med * p3+ (1-dec_med)*p2;\\\\nrott = p3*3.1416/2;\\\\n\\\\nq1 = cos(rott);\\\\nq2 = sin(rott);\\\\nq3 = -q2;\\\\nq4 = q1;\\\\n\\\\n\\\\nstr = str * dec_slow + (1-dec_slow) * index3;\\\\nq27 = 4 - str;\\\\n\\\\ngrid = grid*(dec_med) + (1-dec_med)* equal(index2,2)*bnot(index);\\\\nmv_a = grid * .6;\\\\n\\\\nrot1 = dec_med * rot1 + (1-dec_med) * bnot(index2) ;\\\\nq28 = rot1 ;\\\\n\\\\ncopy = copy * dec_slow + (1-dec_slow)*index3;\\\\nq29 = .3*copy;\\\",\\\"pixel_eqs_eel\\\":\\\"dx = 0.02*q28;\\\\nrot = .04*q2;\\\\nzoom = .96 + .1*sin(time/7);\\\\n//zoom = 1.04;\\\",\\\"warp\\\":\\\" shader_body { \\\\n vec2 zz_1;\\\\n mat2 tmpvar_2;\\\\n tmpvar_2[uint(0)] = _qa.xy;\\\\n tmpvar_2[1u] = _qa.zw;\\\\n zz_1 = (((\\\\n (uv - vec2(0.5, 0.5))\\\\n * texsize.xy) * 0.01) * tmpvar_2);\\\\n zz_1 = -(zz_1.yx);\\\\n vec4 tmpvar_3;\\\\n tmpvar_3.w = 1.0;\\\\n tmpvar_3.xyz = ((texture (sampler_main, (uv + \\\\n (((clamp (\\\\n (sin(zz_1.yx) / cos(zz_1.yx))\\\\n , vec2(-8.0, -8.0), vec2(8.0, 8.0)) * cos(\\\\n (4.0 * zz_1)\\\\n )) * texsize.zw) * 16.0)\\\\n )).xyz * 0.99) - 0.01);\\\\n ret = tmpvar_3.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n vec2 uv3_1;\\\\n vec2 uv2_2;\\\\n vec2 tmpvar_3;\\\\n tmpvar_3 = ((uv - 0.5) * aspect.xy);\\\\n float tmpvar_4;\\\\n tmpvar_4 = (0.1 / (sqrt(\\\\n dot (tmpvar_3, tmpvar_3)\\\\n ) + 0.1));\\\\n vec2 tmpvar_5;\\\\n float tmpvar_6;\\\\n tmpvar_6 = (ang / 3.14);\\\\n tmpvar_5.x = tmpvar_6;\\\\n tmpvar_5.y = (q27 * tmpvar_4);\\\\n uv2_2.y = (tmpvar_5.y + (0.1 * q30));\\\\n uv2_2.x = (tmpvar_6 + (0.2 * time));\\\\n vec2 tmpvar_7;\\\\n tmpvar_7.x = tmpvar_6;\\\\n tmpvar_7.y = (4.0 * tmpvar_4);\\\\n uv3_1.y = (tmpvar_7.y - (0.2 * q30));\\\\n uv3_1.x = tmpvar_7.x;\\\\n vec2 tmpvar_8;\\\\n tmpvar_8 = fract(uv3_1);\\\\n uv3_1 = tmpvar_8;\\\\n float tmpvar_9;\\\\n tmpvar_9 = clamp ((1.0 - (4.0 * rad)), 0.0, 1.0);\\\\n vec4 tmpvar_10;\\\\n tmpvar_10.w = 1.0;\\\\n tmpvar_10.xyz = (((\\\\n (3.0 * max (((2.0 * texture (sampler_main, uv2_2).xyz) + texture (sampler_main, tmpvar_8).xyz), ((2.0 * \\\\n ((texture (sampler_blur2, fract(uv2_2)).xyz * scale2) + bias2)\\\\n ) + (\\\\n (texture (sampler_blur2, fract(tmpvar_8)).xyz * scale2)\\\\n + bias2))))\\\\n * rad) + (\\\\n ((uv.y * pow ((1.0 - rad), 8.0)) * roam_cos)\\\\n .xyz * tmpvar_9)) + ((tmpvar_9 * 2.0) * (\\\\n (texture (sampler_blur1, fract(uv)).xyz * scale1)\\\\n + bias1)));\\\\n ret = tmpvar_10.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/martin - bombyx mori.json\":\n/*!*****************************************************!*\\\n !*** ./presets/converted/martin - bombyx mori.json ***!\n \\*****************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":4,\\\"gammaadj\\\":1.98,\\\"decay\\\":0.5,\\\"echo_zoom\\\":1,\\\"echo_alpha\\\":0.5,\\\"echo_orient\\\":3,\\\"wave_mode\\\":6,\\\"additivewave\\\":1,\\\"modwavealphabyvolume\\\":1,\\\"wave_brighten\\\":0,\\\"darken_center\\\":1,\\\"darken\\\":1,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":0.236,\\\"wave_smoothing\\\":0,\\\"wave_mystery\\\":-0.64,\\\"modwavealphastart\\\":0.81,\\\"modwavealphaend\\\":1.4,\\\"warpanimspeed\\\":1.459,\\\"warpscale\\\":2.007,\\\"zoom\\\":0.9999,\\\"warp\\\":0.01,\\\"sx\\\":0.9999,\\\"wave_r\\\":0,\\\"wave_b\\\":0.6,\\\"ob_size\\\":0.005,\\\"ob_a\\\":0.8,\\\"ib_size\\\":0.26,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":1.85,\\\"mv_r\\\":0.5,\\\"mv_g\\\":0.5,\\\"mv_b\\\":0.5,\\\"mv_a\\\":0,\\\"b1ed\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":18,\\\"num_inst\\\":4,\\\"x\\\":0.83,\\\"rad\\\":0.14349,\\\"tex_ang\\\":3.76991,\\\"tex_zoom\\\":5.27784,\\\"r\\\":0,\\\"g\\\":1,\\\"b\\\":1,\\\"a\\\":0.5,\\\"r2\\\":1,\\\"g2\\\":0.2,\\\"b2\\\":1,\\\"border_b\\\":0,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"d = .3+(frame%8)/8*.2;\\\\n//d = .3;\\\\nk1 = instance/num_inst*6.28;\\\\nd = .3 + q22/8 ;\\\\n\\\\nx = .5 + d*cos(k1);\\\\ny = .5 + d*sin(k1);\\\\n\\\\na = min(1, .2+ .8*q22/2*((q27)%2));\\\\na2 = 0;\\\\nr = .6 + .4*sin(time/4+1.56);\\\\nb = .6 + .4*sin(time/4+3.14);\\\\ng = .6 + .4*sin(time/4);\\\\n\\\\nr0 = r0 * bnot(q24) + (.5+.5*sin(time))*q24;\\\\ng0 = g0 * bnot(q24) + (.5+.5*sin(time*1.7))*q24;\\\\nb0 = (2-r0-g0)/2;\\\\n\\\\nr = r0;\\\\nb = b0;\\\\ng = g0;\\\\n\\\\nr2 = 1-g;\\\\ng2 = 1-b;\\\\nb2 = 1-r;\\\"},{\\\"baseVals\\\":{\\\"sides\\\":32,\\\"num_inst\\\":4,\\\"rad\\\":0.16218,\\\"tex_zoom\\\":1.8315,\\\"g\\\":1,\\\"b\\\":1,\\\"a\\\":0.9,\\\"border_r\\\":0.5,\\\"border_g\\\":0.5,\\\"border_b\\\":0.5,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"a = q24/2; a2 = 0;\\\\na = min(1, .2+ .8*q22/2*((q27)%2));\\\\n\\\\nr = rand(10)/10;\\\\ng = rand(10)/10;\\\\nb = rand(10)/10;\\\\n\\\\nrad = .06*q22;\\\\n\\\\n\\\\n\\\\n\\\\nd = .3+(frame%8)/8*.2;\\\\nd = .3 + q22/12;\\\\n\\\\nx = .5 + d*cos(6.28*instance/num_inst);\\\\ny = .5 + d*sin(6.28*instance/num_inst);\\\\na = min(1, .2+ .8*q22/2*((q27)%2));\\\\nb = 1; g = 1;\\\"},{\\\"baseVals\\\":{\\\"sides\\\":63,\\\"textured\\\":1,\\\"rad\\\":8.85459,\\\"tex_zoom\\\":0.03204,\\\"g\\\":1,\\\"b\\\":1,\\\"a\\\":0.4,\\\"r2\\\":1,\\\"b2\\\":1,\\\"border_r\\\":0.5,\\\"border_g\\\":0.5,\\\"border_b\\\":0.5,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"x\\\":0.4,\\\"rad\\\":0.14741,\\\"tex_zoom\\\":1.59918,\\\"g\\\":0.4,\\\"r2\\\":1,\\\"g2\\\":0.6,\\\"border_r\\\":0.5,\\\"border_g\\\":0.5,\\\"border_b\\\":0.5,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"a = q24*.3;\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"samples\\\":128,\\\"scaling\\\":0.89152,\\\"smoothing\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"t1 = t1 * bnot(q24) + (.5+.5*sin(time))*q24;\\\\nt2 = t2 * bnot(q24) + (.5+.5*sin(time*1.7))*q24;\\\",\\\"point_eqs_eel\\\":\\\"x = sample ;\\\\ny = .5;\\\\n\\\\na = q22*((q27+1)%2);\\\\n//a = 1;\\\\na = q24*((q27+1)%2)/2+.0;\\\\n\\\\nr = t1; b = t2; g = (2-r0-g0)/2;\\\\n;\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"scaling\\\":0.89152,\\\"smoothing\\\":0,\\\"a\\\":0.1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"scaling\\\":0.89152,\\\"smoothing\\\":0.82,\\\"a\\\":0.1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"spectrum\\\":1,\\\"usedots\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"ra = .8;\\\\nrb = .5;\\\\npib = 6.28318530718;\\\\n\\\\n\\\\ntic = min(time-tin,.1);\\\\ntin = if(equal(sample,0),time,tin);\\\\n\\\\nmod = 1.5 + .5*sin(time*.15);\\\\nmed = 1.5 + .5*sin(time*.134);\\\\nmed = 5;\\\\namod = 3;\\\\n\\\\nvr = rand(10001)*.0001;\\\\nrb = rb + rand(10001)*.0001*.1;\\\\n\\\\na = vr;\\\\n\\\\nsa = vr*pib*.5;\\\\nsp = sa*mod + q1*1.3;\\\\nsam = sa*med - q1*.219;\\\\n\\\\nox = ra*sin(sam*pib);\\\\noy = ra*cos(sam*pib);\\\\nox = ox + rb*-cos(sp)*sin(sam*pib);\\\\noz = rb*-sin(sp);\\\\noy = oy + rb*-cos(sp)*cos(sam*pib);\\\\n\\\\n\\\\nxang = time*.132;\\\\nxang = q2;\\\\nyang = time*.153;\\\\nyang = q3;\\\\nzang = time*.110;\\\\nzang = q4;\\\\nfov = 0.6 + 0.2*sin(time);\\\\nfov = .5;\\\\n\\\\nmx = ox*cos(zang) - oy*sin(zang);\\\\nmy = ox*sin(zang) + oy*cos(zang);\\\\nox = mx;\\\\noy = my;\\\\nmx = ox*cos(yang) + oz*sin(yang);\\\\nmz = -ox*sin(yang) + oz*cos(yang);\\\\nox = mx;\\\\noz = mz;\\\\nmy = oy*cos(xang) - oz*sin(xang);\\\\nmz = oy*sin(xang) + oz*cos(xang);\\\\noy = my;\\\\noz = mz;\\\\n\\\\noz = oz - 2;\\\\nx = ox*fov/oz + 0.5;\\\\nx = (x-.5)*0.75 + 0.5;\\\\ny = oy*fov/oz + 0.5;\\\\n\\\"}],\\\"init_eqs_eel\\\":\\\"speed_=1;\\\",\\\"frame_eqs_eel\\\":\\\"dec_med = pow (0.9, 30/fps);\\\\ndec_slow = pow (0.96, 30/fps);\\\\nbeat = max (max (bass, mid), treb);\\\\navg = avg*dec_slow + beat*(1-dec_slow);\\\\nis_beat = above(beat, 0.2+avg+peak) * above (time, t0+.1);\\\\nt0 = is_beat*time + (1-is_beat)*t0;\\\\npeak = is_beat * beat + (1-is_beat)*peak*dec_med;\\\\nindex = (index + is_beat) %12;\\\\nindex2 = (index2 + is_beat*bnot(index))%8;\\\\n\\\\nq20 = avg;\\\\nq21 = beat;\\\\nq22 = peak;\\\\nq24 = is_beat;\\\\nvol = (bass_att + mid_att + treb_att)/2;\\\\nvol_ = dec_med * vol_ + (1-dec_med)* vol;\\\\nvol__ = dec_med * vol__ + (1-dec_med)* vol_;\\\\nq27 = index + 1;\\\\nq28 = index2 + 2;\\\\n\\\\nk1 = is_beat*equal(index%4,0);\\\\np1 = k1*(p1+1) + (1-k1)*p1;\\\\np2 = dec_med * p2+ (1-dec_med)*p1;\\\\nrott = p2 * 3.1416/4;\\\\n\\\\nq1 = cos(rott);\\\\nq2 = sin(rott);\\\\nq3 = -q2;\\\\nq4 = q1;\\\\n\\\\ntrig = q24 * bnot(index%8);\\\\nvx = vx*bnot(trig) + trig* (rand(100)/100-.5);\\\\nvy = vy*bnot(trig) + trig* (rand(100)/100-.5);\\\\nvz = vz*bnot(trig) + trig* (rand(100)/100-.5);\\\\n\\\\nspeed = min(vol_-vol__+.5,1);\\\\nspeed = max(speed,-.5);\\\\nspeed_ = bnot(trig)*speed_ + trig*speed;\\\\nspg = dec_med*spg + (1-dec_med)*speed_;\\\\nmovz = movz + 1/fps*(speed_+0*vol_/6);\\\\nq9 = movz;\\\\nq12 = min(q22,6)*2;\\\\n\\\\n//puls = puls*dec_med + (1-dec_med)*q22;\\\\n\\\\nq13 = 2* sin(movz/3-time/11);\\\\n\\\\ntrig = bnot(index%4) * q24;\\\\ndir = bnot(trig)*dir + trig*(rand(10)-5);\\\\ntrel = trel + .1/fps*dir;\\\\nq5 = cos(trel-movz);\\\\nq6 = sin(trel/2-movz);\\\\nq7 = -q6;\\\\nq8 = q5;\\\\n\\\\nang0 = ang0*dec_med + vz*(1-dec_med);\\\\nq17 = ang0*2;\\\\nq30 = .2*sin(time/8);\\\\n\\\\nq31 = .5 + .5*sin(time/3.3);\\\\n\\\\nzoom = 1;\\\\nrot = .0;\\\\ndx = .00;\\\\nmonitor = q28;\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\"vec3 xlat_mutablemus;\\\\n shader_body { \\\\n vec2 d_1;\\\\n vec2 uv6_2;\\\\n vec2 uv1_3;\\\\n vec2 tmpvar_4;\\\\n tmpvar_4 = (uv - 0.5);\\\\n uv1_3 = tmpvar_4;\\\\n uv6_2 = tmpvar_4;\\\\n float x_5;\\\\n x_5 = (abs(tmpvar_4.x) - abs(tmpvar_4.y));\\\\n float tmpvar_6;\\\\n tmpvar_6 = (12.0 * sqrt((x_5 * x_5)));\\\\n vec2 tmpvar_7;\\\\n tmpvar_7 = normalize(tmpvar_4);\\\\n d_1 = tmpvar_7;\\\\n float tmpvar_8;\\\\n tmpvar_8 = (float(mod (q28, 2.0)));\\\\n if ((tmpvar_8 == 0.0)) {\\\\n d_1 = ((q1 * tmpvar_7) - (q2 / tmpvar_7));\\\\n };\\\\n uv1_3 = (tmpvar_4 + ((-0.06 * \\\\n dot (((texture (sampler_blur1, uv).xyz * scale1) + bias1), vec3(0.32, 0.49, 0.29))\\\\n ) * normalize(tmpvar_4)));\\\\n uv1_3 = (uv1_3 - (clamp (\\\\n ((sin(tmpvar_6) / cos(tmpvar_6)) * d_1)\\\\n , vec2(-4.0, -4.0), vec2(4.0, 4.0)) / 60.0));\\\\n uv6_2 = (0.4 * cos((\\\\n (uv1_3 * 2.0)\\\\n * q28)));\\\\n xlat_mutablemus = (clamp (vec3((0.0006 / \\\\n (sqrt(dot (uv6_2, uv6_2)) - (0.002 * (q27 + (8.0 * q28))))\\\\n )), 0.0, 1.0) * q31);\\\\n xlat_mutablemus = (xlat_mutablemus * (1.0 + roam_cos).xyz);\\\\n vec4 tmpvar_9;\\\\n tmpvar_9.w = 1.0;\\\\n tmpvar_9.xyz = ((0.4 * (\\\\n ((texture (sampler_main, ((uv1_3 * \\\\n (0.8 + (0.2 * tmpvar_6))\\\\n ) + 0.5)).xyz + xlat_mutablemus) * 0.95)\\\\n - 0.025)) + (0.6 * texture (sampler_main, uv_orig)).xyz);\\\\n ret = tmpvar_9.xyz;\\\\n }\\\",\\\"comp\\\":\\\"vec3 xlat_mutableneu;\\\\nvec3 xlat_mutableret2;\\\\nvec2 xlat_mutablers0;\\\\nvec2 xlat_mutablerss;\\\\nvec2 xlat_mutableuv2;\\\\n shader_body { \\\\n vec2 uv_1;\\\\n vec2 ofs_2;\\\\n vec3 ret1_3;\\\\n vec2 uv5_4;\\\\n uv_1 = ((uv - 0.5) * aspect.xy);\\\\n vec2 tmpvar_5;\\\\n tmpvar_5.x = q5;\\\\n tmpvar_5.y = q6;\\\\n uv_1 = (uv_1 + (tmpvar_5 / 4.0));\\\\n uv5_4 = uv_1;\\\\n mat2 tmpvar_6;\\\\n tmpvar_6[uint(0)] = _qb.xy;\\\\n tmpvar_6[1u] = _qb.zw;\\\\n uv_1 = (uv_1 * tmpvar_6);\\\\n float tmpvar_7;\\\\n float tmpvar_8;\\\\n tmpvar_8 = (min (abs(\\\\n (uv5_4.y / uv5_4.x)\\\\n ), 1.0) / max (abs(\\\\n (uv5_4.y / uv5_4.x)\\\\n ), 1.0));\\\\n float tmpvar_9;\\\\n tmpvar_9 = (tmpvar_8 * tmpvar_8);\\\\n tmpvar_9 = (((\\\\n ((((\\\\n ((((-0.01213232 * tmpvar_9) + 0.05368138) * tmpvar_9) - 0.1173503)\\\\n * tmpvar_9) + 0.1938925) * tmpvar_9) - 0.3326756)\\\\n * tmpvar_9) + 0.9999793) * tmpvar_8);\\\\n tmpvar_9 = (tmpvar_9 + (float(\\\\n (abs((uv5_4.y / uv5_4.x)) > 1.0)\\\\n ) * (\\\\n (tmpvar_9 * -2.0)\\\\n + 1.570796)));\\\\n tmpvar_7 = (tmpvar_9 * sign((uv5_4.y / uv5_4.x)));\\\\n if ((abs(uv5_4.x) > (1e-08 * abs(uv5_4.y)))) {\\\\n if ((uv5_4.x < 0.0)) {\\\\n if ((uv5_4.y >= 0.0)) {\\\\n tmpvar_7 += 3.141593;\\\\n } else {\\\\n tmpvar_7 = (tmpvar_7 - 3.141593);\\\\n };\\\\n };\\\\n } else {\\\\n tmpvar_7 = (sign(uv5_4.y) * 1.570796);\\\\n };\\\\n xlat_mutablers0.x = (((tmpvar_7 / 3.1416) * 6.0) * q28);\\\\n float tmpvar_10;\\\\n tmpvar_10 = (1.5 / sqrt(dot (uv_1, uv_1)));\\\\n xlat_mutablers0.y = tmpvar_10;\\\\n vec2 tmpvar_11;\\\\n tmpvar_11.x = (xlat_mutablers0.x + (q9 * 4.0));\\\\n tmpvar_11.y = (tmpvar_10 + ((q9 * q28) * 4.0));\\\\n xlat_mutablerss = (tmpvar_11 / 12.0);\\\\n vec2 tmpvar_12;\\\\n tmpvar_12.x = q5;\\\\n tmpvar_12.y = q6;\\\\n ofs_2 = (0.1 * tmpvar_12.yx);\\\\n float tmpvar_13;\\\\n float tmpvar_14;\\\\n tmpvar_14 = -(q9);\\\\n tmpvar_13 = fract(tmpvar_14);\\\\n mat2 tmpvar_15;\\\\n tmpvar_15[uint(0)].x = 1.0;\\\\n tmpvar_15[uint(0)].y = -0.0;\\\\n tmpvar_15[1u].x = 0.0;\\\\n tmpvar_15[1u].y = 1.0;\\\\n xlat_mutableuv2 = ((uv_1 * (\\\\n (q13 * tmpvar_13)\\\\n * tmpvar_15)) * aspect.yx);\\\\n xlat_mutableneu = (3.0 * texture (sampler_main, fract((\\\\n (xlat_mutableuv2 + 0.5)\\\\n + ofs_2)))).xyz;\\\\n ret1_3 = max (vec3(0.0, 0.0, 0.0), (xlat_mutableneu * (1.0 - \\\\n (tmpvar_13 * tmpvar_13)\\\\n )));\\\\n float tmpvar_16;\\\\n tmpvar_16 = fract((tmpvar_14 + 0.3333333));\\\\n mat2 tmpvar_17;\\\\n tmpvar_17[uint(0)].x = -0.4990803;\\\\n tmpvar_17[uint(0)].y = -0.8665558;\\\\n tmpvar_17[1u].x = 0.8665558;\\\\n tmpvar_17[1u].y = -0.4990803;\\\\n xlat_mutableuv2 = ((uv_1 * (\\\\n (q13 * tmpvar_16)\\\\n * tmpvar_17)) * aspect.yx);\\\\n xlat_mutableneu = (3.0 * texture (sampler_main, fract((\\\\n (xlat_mutableuv2 + 0.5)\\\\n + ofs_2)))).xyz;\\\\n ret1_3 = max (ret1_3, (xlat_mutableneu * (1.0 - \\\\n (tmpvar_16 * tmpvar_16)\\\\n )));\\\\n float tmpvar_18;\\\\n tmpvar_18 = fract((tmpvar_14 + 0.6666667));\\\\n mat2 tmpvar_19;\\\\n tmpvar_19[uint(0)].x = -0.5018377;\\\\n tmpvar_19[uint(0)].y = 0.8649619;\\\\n tmpvar_19[1u].x = -0.8649619;\\\\n tmpvar_19[1u].y = -0.5018377;\\\\n xlat_mutableuv2 = ((uv_1 * (\\\\n (q13 * tmpvar_18)\\\\n * tmpvar_19)) * aspect.yx);\\\\n xlat_mutableneu = (3.0 * texture (sampler_main, fract((\\\\n (xlat_mutableuv2 + 0.5)\\\\n + ofs_2)))).xyz;\\\\n ret1_3 = max (ret1_3, (xlat_mutableneu * (1.0 - \\\\n (tmpvar_18 * tmpvar_18)\\\\n )));\\\\n float tmpvar_20;\\\\n tmpvar_20 = fract((tmpvar_14 + 1.0));\\\\n mat2 tmpvar_21;\\\\n tmpvar_21[uint(0)].x = 0.9999949;\\\\n tmpvar_21[uint(0)].y = 0.003185092;\\\\n tmpvar_21[1u].x = -0.003185092;\\\\n tmpvar_21[1u].y = 0.9999949;\\\\n xlat_mutableuv2 = ((uv_1 * (\\\\n (q13 * tmpvar_20)\\\\n * tmpvar_21)) * aspect.yx);\\\\n xlat_mutableneu = (3.0 * texture (sampler_main, fract((\\\\n (xlat_mutableuv2 + 0.5)\\\\n + ofs_2)))).xyz;\\\\n ret1_3 = max (ret1_3, (xlat_mutableneu * (1.0 - \\\\n (tmpvar_20 * tmpvar_20)\\\\n )));\\\\n vec2 tmpvar_22;\\\\n tmpvar_22.x = (ret1_3.x + ret1_3.z);\\\\n tmpvar_22.y = (ret1_3.x - ret1_3.y);\\\\n xlat_mutableret2 = (((\\\\n (texture (sampler_blur1, fract((xlat_mutablerss + (tmpvar_22 / 2.0)))).xyz * scale1)\\\\n + bias1) / tmpvar_10) * 12.0);\\\\n vec4 tmpvar_23;\\\\n tmpvar_23.w = 1.0;\\\\n tmpvar_23.xyz = ((ret1_3 + (\\\\n ((bass_att * 0.004) / sqrt(dot (uv_1, uv_1)))\\\\n * roam_sin).xyz) + (sqrt(xlat_mutableret2.zxy) * clamp (\\\\n (1.0 - (ret1_3 * 4.0))\\\\n , 0.0, 1.0)));\\\\n ret = tmpvar_23.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/martin - castle in the air.json\":\n/*!***********************************************************!*\\\n !*** ./presets/converted/martin - castle in the air.json ***!\n \\***********************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":2,\\\"gammaadj\\\":1.98,\\\"decay\\\":0.5,\\\"echo_zoom\\\":1,\\\"echo_alpha\\\":0.5,\\\"echo_orient\\\":3,\\\"wave_mode\\\":7,\\\"additivewave\\\":1,\\\"wave_thick\\\":1,\\\"modwavealphabyvolume\\\":1,\\\"wave_brighten\\\":0,\\\"wrap\\\":0,\\\"darken\\\":1,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":0.958,\\\"wave_smoothing\\\":0.45,\\\"modwavealphastart\\\":0,\\\"modwavealphaend\\\":1.32,\\\"warpanimspeed\\\":1.459,\\\"warpscale\\\":2.007,\\\"zoom\\\":0.9999,\\\"warp\\\":0.01,\\\"sx\\\":0.9999,\\\"wave_r\\\":0,\\\"wave_g\\\":0,\\\"wave_b\\\":0,\\\"ob_size\\\":0,\\\"ob_g\\\":0.1,\\\"ob_b\\\":1,\\\"ob_a\\\":1,\\\"ib_size\\\":0,\\\"ib_r\\\":0,\\\"ib_g\\\":0,\\\"ib_b\\\":0,\\\"mv_x\\\":25.6,\\\"mv_y\\\":9.6,\\\"mv_l\\\":0,\\\"mv_r\\\":0.5,\\\"mv_g\\\":0.5,\\\"mv_b\\\":0.5,\\\"mv_a\\\":0,\\\"b1ed\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"textured\\\":1,\\\"x\\\":0.09,\\\"y\\\":0.9,\\\"rad\\\":0.22437,\\\"tex_zoom\\\":1.76002,\\\"r2\\\":1,\\\"g2\\\":0,\\\"a2\\\":0.6,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"additive\\\":1,\\\"x\\\":0.26,\\\"y\\\":0.2,\\\"rad\\\":0.39317,\\\"tex_zoom\\\":6.19589,\\\"r\\\":0,\\\"g\\\":0.55,\\\"b\\\":0.5,\\\"g2\\\":0.4,\\\"b2\\\":0.4,\\\"a2\\\":0.07,\\\"border_r\\\":0.3,\\\"border_g\\\":0.7,\\\"border_b\\\":0.8,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sides\\\":44,\\\"additive\\\":1,\\\"x\\\":0.503,\\\"rad\\\":0.03886,\\\"tex_zoom\\\":0.60986,\\\"g\\\":0.1,\\\"a\\\":0.9,\\\"r2\\\":1,\\\"b2\\\":1,\\\"border_r\\\":0.5,\\\"border_g\\\":0.5,\\\"border_b\\\":0.5,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"rad\\\":0.01,\\\"tex_zoom\\\":0.49981,\\\"r\\\":0,\\\"g2\\\":0,\\\"border_r\\\":0.2,\\\"border_g\\\":0.7,\\\"border_b\\\":0.5,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"samples\\\":282,\\\"sep\\\":20,\\\"usedots\\\":1,\\\"thick\\\":1,\\\"additive\\\":1,\\\"scaling\\\":3.91581,\\\"smoothing\\\":0.1,\\\"r\\\":0.2,\\\"g\\\":0.3,\\\"a\\\":0.6,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"usedots\\\":1,\\\"thick\\\":1,\\\"scaling\\\":0.89152,\\\"smoothing\\\":0.82,\\\"a\\\":0.1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"scaling\\\":0.89152,\\\"smoothing\\\":0.82,\\\"r\\\":0,\\\"g\\\":0.2,\\\"b\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"spectrum\\\":1,\\\"usedots\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"//******** INITIALIZATION *********\\\\n//---------- some global vars, do not change -------------\\\\navg = 0.01;\\\\nq7 = .2; //MyZoom\\\\nq8 = rand(200)/100-1; //fractal modifier\\\\n//q8 = -0; //#\\\\nq16 = 1.2; //Tele\\\\nq18 = rand(0.8)+.1; //brightness balance back/front\\\\nq17 = 2.6; //fractal density factor ffac\\\\nstart = 1; travel = 0; RotZ = 0; look = 0; slow = 0; t0 = time+3; lampx = .5; lampy = .5;\\\\ncran0 = rand(1);\\\\nn = 0; loop (10000, gmegabuf(n)=0; n=n+1; ); \\\\nn = 0; loop (10000, megabuf(n)=0; n=n+1; ); \\\\ntrelx = 0; trely = 0; trelz = 0;\\\\nreg20 = 1; reg21 = 0; reg22 = 0; reg23 = 0; reg24 = 1; reg25 = 0; reg26 = 0; reg27 = 0; reg28 = 1;\\\\n\\\\n//Find random starting point\\\\nwhile (exec2(\\\\n ran1 = rand(800)/100; ran2 = rand(800)/100; ran3 = rand(800)/100;\\\\n PosX = rand(10)-5; PosY = rand(10)-5; PosZ = rand(10)-5; \\\\n\\\\n// PosX = 3.3; PosY = 2; PosZ = -2; ran1 = 0; ran2 = 0; ran3 = 0; //#\\\\n\\\\n c1 = cos(ran1); c2 = cos(ran2); c3 = cos(ran3); \\\\n s1 = sin(ran1); s2 = sin(ran2); s3 = sin(ran3);\\\\n\\\\n reg20 = c2*c1; reg21 = c2*s1; reg22 = -s2;\\\\n reg23 = s3*s2*c1 - c3*s1; reg24 = s3*s2*s1 + c3*c1; reg25 = s3*c2;\\\\n reg26 = c3*s2*c1 + s3*s1; reg27 = c3*s2*s1 - s3*c1; reg28 = c3*c2;\\\\n\\\\n //***********BOT*************\\\\n //Coord. Trans. must exactly match def in warp S. !!!!\\\\n dist = 0.001;\\\\n while (exec2(\\\\n uvx = reg26*dist/q7; uvy = reg27*dist/q7; uvz = reg28*dist/q7;\\\\n uvx += PosX; uvy += PosY; uvz += PosZ;\\\\n uvx = 8.0*((uvx/8+30.5 - int(uvx/8+30.5))-.5);\\\\n uvy = 8.0*((uvy/8+30.5 - int(uvy/8+30.5))-.5);\\\\n uvz = 8.0*((uvz/8+30.5 - int(uvz/8+30.5))-.5);\\\\n uvx0 = uvx+q8; uvy0 = uvy+q8; uvz0 = uvz+q8;\\\\n loop (7+1,\\\\n uvx = if (uvx > 1, 2-uvx, if(uvx < -1, -2-uvx, uvx));\\\\n uvy = if (uvy > 1, 2-uvy, if(uvy < -1, -2-uvy, uvy));\\\\n uvz = if (uvz > 1, 2-uvz, if(uvz < -1, -2-uvz, uvz));\\\\n slen = uvx*uvx + uvy*uvy + uvz*uvz;\\\\n uvx = if (slen < 0.25, uvx*4, if (slen < 1, uvx/slen, uvx)) *q17 + uvx0; \\\\n uvy = if (slen < 0.25, uvy*4, if (slen < 1, uvy/slen, uvy)) *q17 + uvy0; \\\\n uvz = if (slen < 0.25, uvz*4, if (slen < 1, uvz/slen, uvz)) *q17 + uvz0; \\\\n );\\\\n len = sqrt(uvx*uvx + uvy*uvy + uvz*uvz);\\\\n dist *= 1.05;\\\\n ,(dist < 0.6)*(len > 30)));\\\\n,(dist < .06))); //end while\\\",\\\"frame_eqs_eel\\\":\\\"fps_ = .0 * fps_ + 1*if(fps<=25,fps,25+.5*(fps-25)); \\\\ndec_s = 1-.03*30/fps_;\\\\ndec_m = 1-.1*30/fps_;\\\\nbeat = (time > t0+3); t0 = if(beat, time, t0);\\\\n\\\\nspeed = min(0.2,dist_-.02) * (1+2*avg) *(1-slow*.0)*.1/q7; //#\\\\nds = ds * dec_s + (1-dec_s)*speed*.4/fps_; \\\\nRotZ = if (travel > 2,.5,0);\\\\nvol = vol*dec_m + (1-dec_m)*(bass_att +mid_att + treb_att)/4;\\\\nq1 = vol/2+.3;\\\\n//Position \\\\nDirX= reg26; DirY= reg27; DirZ = reg28;\\\\nPosX = PosX + ds*DirX ; PosY = PosY + ds*DirY; PosZ = PosZ + ds*DirZ; \\\\nq4 = PosX; q5 = PosY; q6 = PosZ;\\\\n\\\\nangchg = (.1-dist_)*(dist_ < .1);\\\\ntravel = if (angchg > 0,0,travel+ds);\\\\nv1 = v1 * dec_s + (1-dec_s)* RotZ * ds/2;\\\\nv2 = v2 *dec_s + (1-dec_s)*angchg *xslope/fps_;\\\\nv3 = v3 *dec_s + (1-dec_s)*(angchg *yslope/fps_ + 2*v1*sin(time*.1));\\\\n//v1 = 0.00;\\\\n//push old RotMat\\\\nreg30 =reg20; reg31 =reg21; reg32 =reg22; \\\\nreg33 =reg23; reg34 =reg24; reg35 =reg25; \\\\nreg36 =reg26; reg37 =reg27; reg38 =reg28; \\\\n\\\\nn = 0; avg = 0;\\\\nloop (5,\\\\n n = n+1;\\\\n //new Rot. Mat for infinitesimal angles\\\\n ran1 = rand(100)/100;\\\\n ran2 = rand(100)/200-.25;\\\\n tx = cos(n*1.57+ran2) * (n <= 4)*ran1; ty = sin(n*1.57+ran2) * (n <= 4)*ran1;\\\\n c1 = cos(v1); c2 = cos(v2+ty); c3 = cos(v3+tx); \\\\n s1 = sin(v1); s2 = sin(v2+ty); s3 = sin(v3+tx);\\\\n reg10 = c2*c1; reg11 = c2*s1; reg12 = -s2;\\\\n reg13 = s3*s2*c1 - c3*s1; reg14 = s3*s2*s1 + c3*c1; reg15 = s3*c2;\\\\n reg16 = c3*s2*c1 + s3*s1; reg17 = c3*s2*s1 - s3*c1; reg18 = c3*c2;\\\\n\\\\n //pop old RotMat\\\\n reg20 =reg30; reg21 =reg31; reg22 =reg32; \\\\n reg23 =reg33; reg24 =reg34; reg25 =reg35; \\\\n reg26 =reg36; reg27 =reg37; reg28 =reg38; \\\\n\\\\n //Multiply new RotMat by old one\\\\n q20 = reg10*reg20 + reg11*reg23 + reg12*reg26;\\\\n q21 = reg10*reg21 + reg11*reg24 + reg12*reg27;\\\\n q22 = reg10*reg22 + reg11*reg25 + reg12*reg28;\\\\n q23 = reg13*reg20 + reg14*reg23 + reg15*reg26;\\\\n q24 = reg13*reg21 + reg14*reg24 + reg15*reg27;\\\\n q25 = reg13*reg22 + reg14*reg25 + reg15*reg28;\\\\n q26 = reg16*reg20 + reg17*reg23 + reg18*reg26;\\\\n q27 = reg16*reg21 + reg17*reg24 + reg18*reg27;\\\\n q28 = reg16*reg22 + reg17*reg25 + reg18*reg28;\\\\n\\\\n reg20 =q20; reg21 =q21; reg22 =q22;\\\\n reg23 =q23; reg24 =q24; reg25 =q25;\\\\n reg26 =q26; reg27 =q27; reg28 =q28;\\\\n\\\\n //***********BOT*************\\\\n //Coord. Trans. must exactly match def in warp S. !!!!\\\\n dist = 0.002;\\\\n while (exec2(\\\\n uvx = reg26*dist/q7; uvy = reg27*dist/q7; uvz = reg28*dist/q7;\\\\n uvx += PosX; uvy += PosY; uvz += PosZ;\\\\n uvx = 8.0*((uvx/8+30.5 - int(uvx/8+30.5))-.5);\\\\n uvy = 8.0*((uvy/8+30.5 - int(uvy/8+30.5))-.5);\\\\n uvz = 8.0*((uvz/8+30.5 - int(uvz/8+30.5))-.5);\\\\n uvx0 = uvx+q8; uvy0 = uvy+q8; uvz0 = uvz+q8;\\\\n loop (7+1,\\\\n uvx = if (uvx > 1, 2-uvx, if(uvx < -1, -2-uvx, uvx));\\\\n uvy = if (uvy > 1, 2-uvy, if(uvy < -1, -2-uvy, uvy));\\\\n uvz = if (uvz > 1, 2-uvz, if(uvz < -1, -2-uvz, uvz));\\\\n slen = uvx*uvx + uvy*uvy + uvz*uvz;\\\\n uvx = if (slen < 0.25, uvx*4, if (slen < 1, uvx/slen, uvx)) *q17 + uvx0; \\\\n uvy = if (slen < 0.25, uvy*4, if (slen < 1, uvy/slen, uvy)) *q17 + uvy0; \\\\n uvz = if (slen < 0.25, uvz*4, if (slen < 1, uvz/slen, uvz)) *q17 + uvz0; \\\\n );\\\\n len = sqrt(uvx*uvx + uvy*uvy + uvz*uvz);\\\\n dist *= 1.1;\\\\n ,(dist < 0.6)*(len > 30)));\\\\n megabuf(n) = megabuf(n)*dec_s + (1-dec_s)*dist; //stores the 4 trial points\\\\n avg = avg+abs(megabuf(n)/5);\\\\n); //end loop 5\\\\n\\\\nn = 0; avg = 0; loop (5, n=n+1; avg = avg+abs(megabuf(n)/5));\\\\n\\\\nxslope = min(max(2/avg*(megabuf(1)-megabuf(3)),-3),3);\\\\nyslope = min(max(2/avg*(megabuf(4)-megabuf(2)),-3),3);\\\\nmonitor = avg;\\\\ndist_ = dist_*dec_s + (1-dec_s)*dist;\\\\n\\\\nq10 = ds*q7; //compensation of lin. movement in GetDist and zoom uv\\\\nq14 = 1*abs(ds) + 2*(abs(v1) + abs(v2) + abs(v3)) + start*.05; \\\\nq19 = .6 + .4*sin(time*.02+cran0*6); //brightness backgd\\\\nstart = start * .9;\\\\n\\\\nwarp = 0.0; zoom = 1; \\\\ndx = -v2/q16; dy = v3/q16; rot = v1;\\\\nvx = vx -v2/q16; vy = vy +v3/q16; vz = vz + v1;\\\\nq11 = vx; q12 = vy;\\\\nmovz = movz + ds;\\\\nq13 = movz;\\\\nmonitor = q13;\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\"float sustain;\\\\nfloat ffac;\\\\nfloat xlat_mutabledist;\\\\nfloat xlat_mutablelimit;\\\\nfloat xlat_mutablestruc;\\\\nvec2 xlat_mutableuv1;\\\\nvec3 xlat_mutableuv2;\\\\n shader_body { \\\\n mat3 tmpvar_1;\\\\n tmpvar_1[uint(0)].x = q20;\\\\n tmpvar_1[uint(0)].y = q23;\\\\n tmpvar_1[uint(0)].z = q26;\\\\n tmpvar_1[1u].x = q21;\\\\n tmpvar_1[1u].y = q24;\\\\n tmpvar_1[1u].z = q27;\\\\n tmpvar_1[2u].x = q22;\\\\n tmpvar_1[2u].y = q25;\\\\n tmpvar_1[2u].z = q28;\\\\n vec3 tmpvar_2;\\\\n tmpvar_2.x = q4;\\\\n tmpvar_2.y = q5;\\\\n tmpvar_2.z = q6;\\\\n sustain = (0.98 - q14);\\\\n ffac = q17;\\\\n vec2 uv_3;\\\\n uv_3 = (((uv - 0.5) * (1.0 - \\\\n (q10 / (1.0 - ((texture (sampler_blur1, uv).xyz * scale1) + bias1).z))\\\\n )) + 0.5);\\\\n xlat_mutableuv1 = (((uv_orig - 0.5) * aspect.xy) * q16);\\\\n vec4 tmpvar_4;\\\\n tmpvar_4 = fract((8.0 * texture (sampler_noise_lq, (uv_3 + rand_frame.yz))));\\\\n vec3 tmpvar_5;\\\\n tmpvar_5 = tmpvar_4.xyz;\\\\n if ((tmpvar_4.y > (0.4 * rad))) {\\\\n vec3 tmpvar_6;\\\\n tmpvar_6 = (tmpvar_4.xyz - vec3(0.5, 0.5, 0.5));\\\\n vec4 nb2_7;\\\\n vec4 nb_8;\\\\n vec2 tmpvar_9;\\\\n tmpvar_9 = (0.0078125 * floor((\\\\n (128.0 * texture (sampler_pc_main, (uv_3 - texsize.zw)).yz)\\\\n + vec2(0.5, 0.5))));\\\\n nb_8.x = (1.0 - (tmpvar_9.y + (0.015625 * \\\\n (tmpvar_9.x - 0.5)\\\\n )));\\\\n vec2 tmpvar_10;\\\\n tmpvar_10 = (0.0078125 * floor((\\\\n (128.0 * texture (sampler_pc_main, (uv_3 + (texsize.zw * vec2(1.0, -1.0)))).yz)\\\\n + vec2(0.5, 0.5))));\\\\n nb_8.y = (1.0 - (tmpvar_10.y + (0.015625 * \\\\n (tmpvar_10.x - 0.5)\\\\n )));\\\\n vec2 tmpvar_11;\\\\n tmpvar_11 = (0.0078125 * floor((\\\\n (128.0 * texture (sampler_pc_main, (uv_3 + texsize.zw)).yz)\\\\n + vec2(0.5, 0.5))));\\\\n nb_8.z = (1.0 - (tmpvar_11.y + (0.015625 * \\\\n (tmpvar_11.x - 0.5)\\\\n )));\\\\n vec2 tmpvar_12;\\\\n tmpvar_12 = (0.0078125 * floor((\\\\n (128.0 * texture (sampler_pc_main, (uv_3 + (texsize.zw * vec2(-1.0, 1.0)))).yz)\\\\n + vec2(0.5, 0.5))));\\\\n nb_8.w = (1.0 - (tmpvar_12.y + (0.015625 * \\\\n (tmpvar_12.x - 0.5)\\\\n )));\\\\n vec2 tmpvar_13;\\\\n tmpvar_13 = (0.0078125 * floor((\\\\n (128.0 * texture (sampler_pc_main, (uv_3 + (texsize.zw * vec2(0.0, -1.0)))).yz)\\\\n + vec2(0.5, 0.5))));\\\\n nb2_7.x = (1.0 - (tmpvar_13.y + (0.015625 * \\\\n (tmpvar_13.x - 0.5)\\\\n )));\\\\n vec2 tmpvar_14;\\\\n tmpvar_14 = (0.0078125 * floor((\\\\n (128.0 * texture (sampler_pc_main, (uv_3 + (texsize.zw * vec2(1.0, 0.0)))).yz)\\\\n + vec2(0.5, 0.5))));\\\\n nb2_7.y = (1.0 - (tmpvar_14.y + (0.015625 * \\\\n (tmpvar_14.x - 0.5)\\\\n )));\\\\n vec2 tmpvar_15;\\\\n tmpvar_15 = (0.0078125 * floor((\\\\n (128.0 * texture (sampler_pc_main, (uv_3 + (texsize.zw * vec2(0.0, 1.0)))).yz)\\\\n + vec2(0.5, 0.5))));\\\\n nb2_7.z = (1.0 - (tmpvar_15.y + (0.015625 * \\\\n (tmpvar_15.x - 0.5)\\\\n )));\\\\n vec2 tmpvar_16;\\\\n tmpvar_16 = (0.0078125 * floor((\\\\n (128.0 * texture (sampler_pc_main, (uv_3 + (texsize.zw * vec2(-1.0, 0.0)))).yz)\\\\n + vec2(0.5, 0.5))));\\\\n nb2_7.w = (1.0 - (tmpvar_16.y + (0.015625 * \\\\n (tmpvar_16.x - 0.5)\\\\n )));\\\\n vec4 tmpvar_17;\\\\n tmpvar_17 = min (nb_8, nb2_7);\\\\n nb_8.zw = tmpvar_17.zw;\\\\n nb_8.xy = min (tmpvar_17.xy, tmpvar_17.zw);\\\\n xlat_mutabledist = (min (nb_8.x, nb_8.y) + ((0.006 * tmpvar_6.x) * abs(tmpvar_6.y)));\\\\n } else {\\\\n xlat_mutabledist = tmpvar_5.x;\\\\n };\\\\n vec2 tmpvar_18;\\\\n tmpvar_18 = (0.0078125 * floor((\\\\n (128.0 * texture (sampler_pc_main, uv_3).yz)\\\\n + vec2(0.5, 0.5))));\\\\n xlat_mutabledist = (min (xlat_mutabledist, (1.0 - \\\\n (tmpvar_18.y + (0.015625 * (tmpvar_18.x - 0.5)))\\\\n )) - (q10 * 0.8));\\\\n xlat_mutablelimit = (15.0 + (10.0 * xlat_mutabledist));\\\\n vec3 tmpvar_19;\\\\n tmpvar_19.xy = (xlat_mutableuv1 * xlat_mutabledist);\\\\n tmpvar_19.z = xlat_mutabledist;\\\\n xlat_mutableuv2 = (((tmpvar_19 / q7) * tmpvar_1) + tmpvar_2);\\\\n xlat_mutableuv2 = ((fract(\\\\n ((xlat_mutableuv2 / 8.0) + 0.5)\\\\n ) - 0.5) * 8.0);\\\\n int iterations_21;\\\\n vec3 zz0_22;\\\\n vec3 zz_23;\\\\n zz_23 = xlat_mutableuv2;\\\\n zz0_22 = (xlat_mutableuv2 + q8);\\\\n iterations_21 = int((8.0 - float(\\\\n (xlat_mutabledist > 0.8)\\\\n )));\\\\n for (int n_20 = 0; n_20 <= iterations_21; n_20++) {\\\\n zz_23 = ((2.0 * clamp (zz_23, vec3(-1.0, -1.0, -1.0), vec3(1.0, 1.0, 1.0))) - zz_23);\\\\n zz_23 = (zz_23 * (clamp (\\\\n max ((0.25 / dot (zz_23, zz_23)), 0.25)\\\\n , 0.0, 1.0) * 4.0));\\\\n zz_23 = ((ffac * zz_23) + zz0_22);\\\\n };\\\\n xlat_mutablestruc = (sqrt(dot (zz_23.xz, zz_23.xz)) / xlat_mutablelimit);\\\\n vec2 tmpvar_24;\\\\n tmpvar_24 = (0.0078125 * floor((\\\\n (128.0 * vec2((1.0 - xlat_mutabledist)))\\\\n + vec2(0.5, 0.5))));\\\\n vec2 tmpvar_25;\\\\n tmpvar_25.x = ((64.0 * (\\\\n (1.0 - xlat_mutabledist)\\\\n - tmpvar_24.x)) + 0.5);\\\\n tmpvar_25.y = tmpvar_24.x;\\\\n vec3 tmpvar_26;\\\\n float tmpvar_27;\\\\n tmpvar_27 = (q14 * 2.0);\\\\n tmpvar_26.x = (((1.0 - sustain) * xlat_mutablestruc) + (sustain * mix (texture (sampler_main, uv_3).xyz, \\\\n ((texture (sampler_blur1, uv_3).xyz * scale1) + bias1)\\\\n , vec3(tmpvar_27)).x));\\\\n tmpvar_26.yz = tmpvar_25;\\\\n vec3 tmpvar_28;\\\\n tmpvar_28.y = 1.0;\\\\n tmpvar_28.x = sustain;\\\\n tmpvar_28.z = 1.0;\\\\n vec3 tmpvar_29;\\\\n tmpvar_29.y = 0.0;\\\\n tmpvar_29.x = 0.003921569;\\\\n tmpvar_29.z = (0.01568628 * (0.2 + rad));\\\\n vec4 tmpvar_30;\\\\n tmpvar_30.w = 1.0;\\\\n tmpvar_30.xyz = mix (tmpvar_26, ((\\\\n mix (texture (sampler_main, uv_3).xyz, ((texture (sampler_blur1, uv_3).xyz * scale1) + bias1), vec3(tmpvar_27))\\\\n * tmpvar_28) - tmpvar_29), vec3(clamp ((\\\\n sqrt(dot (zz_23, zz_23))\\\\n - xlat_mutablelimit), 0.0, 1.0)));\\\\n ret = tmpvar_30.xyz;\\\\n }\\\",\\\"comp\\\":\\\"float xlat_mutableinten;\\\\nfloat xlat_mutabletmp;\\\\nvec2 xlat_mutableuv1;\\\\nvec2 xlat_mutableuv2;\\\\nfloat xlat_mutablez;\\\\n shader_body { \\\\n float t_rel_2;\\\\n vec3 ret1_3;\\\\n float struc_4;\\\\n xlat_mutableuv1 = ((uv * aspect.xy) - vec2(0.5, 0.5));\\\\n vec4 tmpvar_5;\\\\n tmpvar_5 = texture (sampler_main, uv);\\\\n float tmpvar_6;\\\\n vec4 tmpvar_7;\\\\n tmpvar_7 = texture (sampler_blur1, uv);\\\\n tmpvar_6 = mix (min ((1.0 - tmpvar_5.z), (1.0 - \\\\n ((texture (sampler_blur2, uv).xyz * scale2) + bias2)\\\\n .z)), (1.0 - (\\\\n (tmpvar_7.xyz * scale1)\\\\n + bias1).z), 0.5);\\\\n struc_4 = ((mix (tmpvar_5.xyz, \\\\n ((tmpvar_7.xyz * scale1) + bias1)\\\\n , vec3(tmpvar_6)).x * (1.0 - tmpvar_6)) * tmpvar_6);\\\\n vec2 tmpvar_8;\\\\n tmpvar_8.x = q11;\\\\n tmpvar_8.y = q12;\\\\n xlat_mutableuv2 = ((xlat_mutableuv1 * 0.2) - (tmpvar_8 * 0.2));\\\\n vec2 uvi_9;\\\\n uvi_9 = (xlat_mutableuv2 * 4.0);\\\\n float zv_10;\\\\n zv_10 = (0.008 * time);\\\\n xlat_mutabletmp = clamp (dot ((texture (sampler_noise_hq, \\\\n (xlat_mutableuv2 + (0.03 * ((\\\\n (dot (texture (sampler_noise_hq, uvi_9), vec4(0.32, 0.49, 0.29, 0.0)) + (dot (texture (sampler_noise_hq, (\\\\n (uvi_9 * 2.0)\\\\n + zv_10)), vec4(0.32, 0.49, 0.29, 0.0)) / 2.0))\\\\n + \\\\n (dot (texture (sampler_noise_hq, ((uvi_9 * 4.0) + (2.0 * zv_10))), vec4(0.32, 0.49, 0.29, 0.0)) / 4.0)\\\\n ) + (\\\\n dot (texture (sampler_noise_hq, ((uvi_9 * 8.0) + (4.0 * zv_10))), vec4(0.32, 0.49, 0.29, 0.0))\\\\n / 8.0))))\\\\n ) - 0.4), vec4(0.32, 0.49, 0.29, 0.0)), 0.0, 1.0);\\\\n float tmpvar_11;\\\\n tmpvar_11 = clamp ((pow (xlat_mutabletmp, 1.2) * sign(xlat_mutabletmp)), 0.0, 1.0);\\\\n xlat_mutabletmp = tmpvar_11;\\\\n vec3 tmpvar_12;\\\\n tmpvar_12.xy = vec2(0.1, 0.1);\\\\n tmpvar_12.z = (1.2 - uv.y);\\\\n ret1_3 = ((tmpvar_12 + 0.07) + ((\\\\n clamp (((tmpvar_6 * 2.0) - 1.5), 0.0, 1.0)\\\\n * tmpvar_11) * 4.0));\\\\n t_rel_2 = (q13 * 6.0);\\\\n for (int n_1 = 1; n_1 <= 3; n_1++) {\\\\n xlat_mutablez = (1.0 - fract((\\\\n (float(n_1) / 3.0)\\\\n - \\\\n (fract(-(t_rel_2)) / 3.0)\\\\n )));\\\\n xlat_mutableinten = (((1.0 - xlat_mutablez) * xlat_mutablez) * 2.0);\\\\n vec2 tmpvar_13;\\\\n tmpvar_13.x = q11;\\\\n tmpvar_13.y = q12;\\\\n xlat_mutableuv2 = (((xlat_mutablez * xlat_mutableuv1) / 4.0) - (tmpvar_13 / 6.0));\\\\n vec2 uvi_14;\\\\n uvi_14 = (xlat_mutableuv2 * 4.0);\\\\n float zv_15;\\\\n zv_15 = (0.008 * time);\\\\n xlat_mutabletmp = clamp (dot ((\\\\n (texture (sampler_noise_hq, (xlat_mutableuv2 + (0.03 * (\\\\n ((dot (texture (sampler_noise_hq, uvi_14), vec4(0.32, 0.49, 0.29, 0.0)) + (dot (texture (sampler_noise_hq, \\\\n ((uvi_14 * 2.0) + zv_15)\\\\n ), vec4(0.32, 0.49, 0.29, 0.0)) / 2.0)) + (dot (texture (sampler_noise_hq, (\\\\n (uvi_14 * 4.0)\\\\n + \\\\n (2.0 * zv_15)\\\\n )), vec4(0.32, 0.49, 0.29, 0.0)) / 4.0))\\\\n + \\\\n (dot (texture (sampler_noise_hq, ((uvi_14 * 8.0) + (4.0 * zv_15))), vec4(0.32, 0.49, 0.29, 0.0)) / 8.0)\\\\n )))) - (xlat_mutablez * 0.5))\\\\n - 0.3), vec4(0.32, 0.49, 0.29, 0.0)), 0.0, 1.0);\\\\n xlat_mutabletmp = (((\\\\n clamp ((xlat_mutabletmp * sign(xlat_mutabletmp)), 0.0, 1.0)\\\\n * xlat_mutableinten) * q1) * 2.0);\\\\n ret1_3 = (((ret1_3 + \\\\n ((vec3(4.0, 3.0, 0.8) * q1) * struc_4)\\\\n ) * clamp (\\\\n (1.0 - xlat_mutabletmp)\\\\n , 0.0, 1.0)) + xlat_mutabletmp);\\\\n };\\\\n vec4 tmpvar_16;\\\\n tmpvar_16.w = 1.0;\\\\n tmpvar_16.xyz = (1.0 - exp((-1.6 * ret1_3)));\\\\n ret = tmpvar_16.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/martin - chain breaker.json\":\n/*!*******************************************************!*\\\n !*** ./presets/converted/martin - chain breaker.json ***!\n \\*******************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":4,\\\"gammaadj\\\":1.98,\\\"decay\\\":0.5,\\\"echo_zoom\\\":1,\\\"echo_alpha\\\":0.5,\\\"echo_orient\\\":3,\\\"additivewave\\\":1,\\\"wave_dots\\\":1,\\\"wave_thick\\\":1,\\\"wave_brighten\\\":0,\\\"darken\\\":1,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":0.527,\\\"wave_smoothing\\\":0,\\\"wave_mystery\\\":0.6,\\\"modwavealphastart\\\":0,\\\"modwavealphaend\\\":1.32,\\\"warpanimspeed\\\":1.459,\\\"warpscale\\\":2.007,\\\"zoom\\\":0.9999,\\\"warp\\\":0.01,\\\"sx\\\":0.9999,\\\"wave_g\\\":0.49,\\\"ob_a\\\":1,\\\"ib_size\\\":0.26,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":1.85,\\\"mv_r\\\":0.5,\\\"mv_g\\\":0.5,\\\"mv_b\\\":0.5,\\\"mv_a\\\":0,\\\"b2x\\\":0.6,\\\"b3x\\\":0.4,\\\"b1ed\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"sides\\\":8,\\\"additive\\\":1,\\\"num_inst\\\":256,\\\"rad\\\":0.03632,\\\"tex_ang\\\":1.00531,\\\"tex_zoom\\\":1.53117,\\\"g\\\":1,\\\"b\\\":1,\\\"a\\\":0,\\\"g2\\\":0,\\\"border_r\\\":0,\\\"border_g\\\":0,\\\"border_b\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":5,\\\"additive\\\":1,\\\"num_inst\\\":256,\\\"x\\\":0.26,\\\"y\\\":0.2,\\\"rad\\\":0.39317,\\\"tex_zoom\\\":0.9355,\\\"g2\\\":0,\\\"a2\\\":0.2,\\\"border_g\\\":0,\\\"border_b\\\":0,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"n = (instance);\\\\nFLen = reg00;\\\\nSLen = reg00/2;\\\\n\\\\nz0 = 10;\\\\ny0 = gmegabuf(2000+n+FLen)/z0;\\\\nx0 = gmegabuf(2000+n)/z0;\\\\n\\\\na0 = (gmegabuf(n+10000));\\\\n\\\\nk1 = instance/num_inst-.5;\\\\nx = .5 + x0 + sin(k1*8*sin(q12*.07)) * sin(q11*.13)*q3*.7; \\\\ny = .5 + q32*(y0 + sin(k1*8*sin(q14*.1)) * sin(q13*.2)*q3*.7); \\\\n\\\\narg = q2/8;\\\\nhigh = exp(-500*pow(arg+.5-instance/num_inst,2));\\\\nhigh += exp(-500*pow(-arg+.5-instance/num_inst,2));\\\\n\\\\nexc = sqrt((pow(x-.5,2)+pow(y-.5,2)));\\\\nrad0 = above(z0,0)*min (.1, a0/60)+.005;\\\\nrad0 = rad0 * (1+2*exc) * (1+high);\\\\n\\\\np1 = .5 + sin(q12)/2;\\\\np2 = .5 + sin(q13*1.4)/2;\\\\n//p1 = rand(1)-.5;\\\\n//p2 = rand(1)-.5;\\\\nexc = ((pow(x-p1,2)+pow(y-p2,2)));\\\\nrad = min(rad0 * (1 + .004*q3/abs(exc)),1) ;\\\\n\\\\na = min(a0*8+.4,1);\\\\n\\\\nk1 = instance/num_inst*5 + high;\\\\nw = 1-exp(-treb_att/2-.5);\\\\ng = w + (1-w)*sin(k1);\\\\nr = w + (1-w)*sin(k1-6.28/3);\\\\nb = w + (1-w)*sin(k1-6.28*2/3);\\\\n\\\\na2 = a/4;\\\\ng2 = g*0; b2 = b*0; r2 = r*0;\\\"},{\\\"baseVals\\\":{\\\"sides\\\":13,\\\"additive\\\":1,\\\"num_inst\\\":5,\\\"x\\\":0.65,\\\"y\\\":0.38,\\\"rad\\\":0.57049,\\\"tex_zoom\\\":0.73678,\\\"a\\\":0.7,\\\"g2\\\":0,\\\"border_r\\\":0.5,\\\"border_g\\\":0.5,\\\"border_b\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"k1 = instance/num_inst;\\\\nx = .5 + .3*sin(instance*k1*413);\\\\ny = .5 + .3 * sin(instance*k1*113);\\\\n\\\\nrad = .1 + .4*sin(k1*333);\\\\n\\\\nr = .5*sin(k1*234);\\\\nb = .5*sin(k1*534);\\\\ng = .5*sin(k1*34);\\\"},{\\\"baseVals\\\":{\\\"sides\\\":14,\\\"additive\\\":1,\\\"thickoutline\\\":1,\\\"textured\\\":1,\\\"x\\\":0.6,\\\"y\\\":0.55,\\\"rad\\\":0.97237,\\\"ang\\\":1.25664,\\\"tex_zoom\\\":0.34933,\\\"g\\\":0.6,\\\"g2\\\":0,\\\"b2\\\":1,\\\"border_r\\\":0.2,\\\"border_g\\\":0.7,\\\"border_b\\\":0.5,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sep\\\":120,\\\"spectrum\\\":1,\\\"additive\\\":1,\\\"scaling\\\":7.52386,\\\"smoothing\\\":0,\\\"r\\\":0,\\\"a\\\":0.7},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"FLen = reg00;\\\\n\\\\nn = int(sample*FLen);\\\\nvol = (value1+value2) * (1+ .1 / (sample+.03));\\\\n\\\\nchg = min(max(vol- gmegabuf(n),-1),1);\\\\ndec = if (chg>0, 1-chg*0.3, 1+chg*0.2);\\\\n\\\\nchg = q1 -q2;\\\\ndec = .94 - abs(chg) * if (chg> 0, .2,.1);\\\\n\\\\ndec = min(max(dec,0),1);\\\\ngmegabuf(n) = gmegabuf(n)*dec + vol*(1-dec);\\\\n\\\\ndec = q2/4;\\\\n//dec = .90;\\\\ndec = max(min(dec,1),.1);\\\\n\\\\ngmegabuf(n) = gmegabuf(n)*dec + gmegabuf(n+(q2<.8))*(1-dec);\\\\ngmegabuf(n+10000) = gmegabuf(n+10000)*.2 + .8* vol/3;\\\\na = .0;\\\\nx = sample;\\\\ny = .2 + gmegabuf(n+0)*.23;\\\"},{\\\"baseVals\\\":{\\\"samples\\\":256,\\\"usedots\\\":1,\\\"scaling\\\":0.89152,\\\"smoothing\\\":0.82,\\\"a\\\":0.9,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"samples\\\":32,\\\"thick\\\":1,\\\"scaling\\\":0.89152,\\\"smoothing\\\":0.82,\\\"r\\\":0,\\\"g\\\":0.2,\\\"b\\\":0.6,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"spectrum\\\":1,\\\"usedots\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"n = 0;\\\\nloop (50000,\\\\ngmegabuf(n) = 0;\\\\nmegabuf(n) = 0;\\\\nn = n+1;\\\\n);\\\\n\\\\nsw1 = rand(8);\\\\nsw2 = rand(8);\\\\nsw3 = rand(8);\\\\nsw4 = rand(8);\\\",\\\"frame_eqs_eel\\\":\\\"flen = 512; //Wave Punkte\\\\nreg00 = FLen;\\\\nSLen = FLen/2;\\\\ndec_m = pow(.94, 30/fps);\\\\n\\\\n//Volume\\\\nn = 0; vol = 0;\\\\nloop (SLen,\\\\n vol = vol + pow(gmegabuf(n),2)/FLen; \\\\n n = n+1;\\\\n);\\\\nvol = sqrt(vol)/2;\\\\nvol_ = vol_*dec_m + (1-dec_m)* (vol);\\\\n\\\\n//switches\\\\nlev1 = lev1 * dec_m + (1-dec_m) * gmegabuf(1);\\\\nlev2 = lev2 * dec_m + (1-dec_m) * gmegabuf(20);\\\\nlev3 = lev3 * dec_m + (1-dec_m) * gmegabuf(50);\\\\nlev4 = lev4 * dec_m + (1-dec_m) * gmegabuf(100);\\\\nsw1 = sw1 + (lev1-gmegabuf(1)>0)/fps;\\\\nsw2 = sw2 + (lev2-gmegabuf(20)>0)/fps;\\\\nsw3 = sw3 + (lev3-gmegabuf(50)>0)/fps;\\\\nsw4 = sw4 + (lev4-gmegabuf(100)>0)/fps;\\\\n\\\\ndif = (1+sin(sw3/4))*16+2;\\\\nofs = sin(sw2/3)*8;\\\\nn = 0; k1 = frame*0; \\\\nloop (SLen,\\\\n m1 = (n)%SLen;\\\\n m2 = (n+ofs)%SLen;\\\\n\\\\n k = (m1+dif)%SLen;\\\\n i = (SLen+m2-dif)%SLen;\\\\n\\\\n in1 = (gmegabuf(m1)-gmegabuf(k))/pow(vol_+.03,.8)*1.2;\\\\n in2 = (gmegabuf(m2)-gmegabuf(i))/pow(vol_+.03,.8)*1.2;\\\\n\\\\n dec = if (pow(gmegabuf(2000+n),2) + pow(gmegabuf(2000+FLen+n),2)> in1*in1+in2*in2,.8,.94) ;\\\\n dec = pow (dec, 30/fps); \\\\n\\\\n gmegabuf(2000+n) = gmegabuf(2000+n)*dec +(1-dec)* in1;\\\\n gmegabuf(2000+FLen+n) = gmegabuf(2000+FLen+n)*dec +(1-dec)* in2;\\\\n n=n+1;\\\\n);\\\\n\\\\nq1 = (bass+treb+mid)/3;\\\\nq2 = (bass_att+treb_att+mid_att)/3;\\\\nq3 = vol_;\\\\nq11 = sw1;\\\\nq12 = sw2;\\\\nq13 = sw3;\\\\nq14 = sw4;\\\\n\\\\nrot = 0; zoom = .98; warp = .3; rot = 0;\\\\n\\\\nq32 = aspecty;\\\\nmonitor = dif;\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\" shader_body { \\\\n vec4 tmpvar_1;\\\\n tmpvar_1.w = 1.0;\\\\n tmpvar_1.xyz = ((texture (sampler_main, uv).xyz * clamp (\\\\n (q1 - 0.8)\\\\n , 0.0, 1.0)) * 0.92);\\\\n ret = tmpvar_1.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n vec3 ret_1;\\\\n ret_1 = (texture (sampler_main, uv).xyz + ((texture (sampler_blur2, uv).xyz * scale2) + bias2));\\\\n ret_1 = (ret_1 + ((0.8 * \\\\n (hue_shader - 0.8)\\\\n ) * (1.0 - uv.y)));\\\\n vec4 tmpvar_2;\\\\n tmpvar_2.w = 1.0;\\\\n tmpvar_2.xyz = ret_1;\\\\n ret = tmpvar_2.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/martin - disco mix 4.json\":\n/*!*****************************************************!*\\\n !*** ./presets/converted/martin - disco mix 4.json ***!\n \\*****************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":0,\\\"gammaadj\\\":1.980001,\\\"decay\\\":0.5,\\\"echo_zoom\\\":0.999998,\\\"echo_alpha\\\":0.5,\\\"echo_orient\\\":3,\\\"wave_mode\\\":2,\\\"modwavealphabyvolume\\\":1,\\\"wave_brighten\\\":0,\\\"wrap\\\":0,\\\"darken\\\":1,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":20.944651,\\\"wave_smoothing\\\":0,\\\"wave_mystery\\\":0.08,\\\"modwavealphastart\\\":0,\\\"modwavealphaend\\\":1.32,\\\"warpanimspeed\\\":1.4595,\\\"warpscale\\\":2.0067,\\\"zoom\\\":0.9999,\\\"warp\\\":0.01,\\\"sx\\\":0.9999,\\\"wave_r\\\":0,\\\"wave_g\\\":0.99,\\\"ob_size\\\":0.015,\\\"ob_b\\\":1,\\\"ib_size\\\":0.26,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":1.85,\\\"mv_r\\\":0.4999,\\\"mv_g\\\":0.4999,\\\"mv_b\\\":0.4999,\\\"mv_a\\\":0,\\\"b1ed\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"textured\\\":1,\\\"y\\\":0.47,\\\"rad\\\":0.24057,\\\"tex_zoom\\\":0.14057,\\\"g\\\":0.3,\\\"b\\\":0.5,\\\"g2\\\":0,\\\"b2\\\":0.3,\\\"a2\\\":1,\\\"border_b\\\":0,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\\nx = .5; y = .5;\\\\na = q24; \\\\na2 = q24;\\\\n//a = 1;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":100,\\\"additive\\\":1,\\\"thickoutline\\\":1,\\\"rad\\\":0.05134,\\\"tex_zoom\\\":0.12288,\\\"r\\\":0.3,\\\"g\\\":0.2,\\\"b\\\":0.2,\\\"a\\\":0.7,\\\"g2\\\":0,\\\"border_r\\\":0,\\\"border_g\\\":0.5,\\\"border_b\\\":0.5,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"r = .5 + .3 * sin(time);\\\\ng = .5 + .3 * sin(time/1.5);\\\\nb = .5 + .3 * sin(time/3.7);\\\\n\\\\nr2 = 0; b2 = 0; g2 = 0;\\\\n\\\\na = .05; a2 = 0;\\\"},{\\\"baseVals\\\":{\\\"x\\\":0.503,\\\"rad\\\":0.01,\\\"tex_zoom\\\":0.609857,\\\"r\\\":0,\\\"a\\\":0,\\\"g2\\\":0,\\\"a2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\\ndy = .1 * sin(time*14);;\\\\ndx = q1*dy;\\\\n\\\\nx = .5 + dx;\\\\ny = .5 + dy;\\\\n\\\\na = q25; a2 = q25;\\\\nrad = q21/110;\\\"},{\\\"baseVals\\\":{\\\"sides\\\":63,\\\"textured\\\":1,\\\"y\\\":1,\\\"rad\\\":0.548217,\\\"tex_zoom\\\":0.499805,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"border_r\\\":0.5,\\\"border_g\\\":0.5,\\\"border_b\\\":0.5,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"samples\\\":100,\\\"thick\\\":1,\\\"scaling\\\":0.045052,\\\"smoothing\\\":0.1,\\\"a\\\":0.6},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"t2 = .45 + rand(10)/100;\\\",\\\"point_eqs_eel\\\":\\\"k1 = bnot((sample*100+time)%2);\\\\n\\\\ndy = .015*above(sin(sample*11),0) \\\\n +.008*above(sin(time+sample*74),0)\\\\n +.008*above(sin(time+sample*128),0);\\\\n \\\\ndx = .01*above(sin(sample*27),0) + \\\\n +.01*above(sin(time+sample*134),0);\\\\n\\\\nx = .2*(sample-.5) + .5 + dx;\\\\ny = t2 + dy;\\\\n\\\\na = q24 * k1 * bnot(q27%4);\\\\n\\\\nr = .6; g = 0; b = .6;\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"scaling\\\":0.891519,\\\"smoothing\\\":0.82,\\\"a\\\":0.02,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"tm = time*.1;\\\\nt1 = t1*sin(tm*t4) + (1-t1)*sin(tm*t7);\\\\nt2 = t2*sin(tm*t5) + (1-t2)*sin(tm*t8);\\\\nt3 = t3*sin(tm*t6) + (1-t3)*sin(tm*1);\\\\n\\\\ntic = min(time - tin,1);\\\\ntin = time;\\\\n\\\\ntva = (tic*q1*.5);\\\\ntvb = (tic*q2*.5);\\\\ntvc = (tic*q3*.5);\\\\n\\\\nq1 = tva;\\\\nq2 = tvb;\\\\nq3 = tvc;\\\\n\\\\nsz = .5;\\\\nlen = q4;\\\\nt4 = len;\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"scaling\\\":0.891519,\\\"smoothing\\\":0.82,\\\"r\\\":0,\\\"g\\\":0.2,\\\"b\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"tm = time*.1;\\\\nt1 = t1*sin(tm*t4) + (1-t1)*sin(tm*t7);\\\\nt2 = t2*sin(tm*t5) + (1-t2)*sin(tm*t8);\\\\nt3 = t3*sin(tm*t6) + (1-t3)*sin(tm*1);\\\\n\\\\ntic = min(time - tin,1);\\\\ntin = time;\\\\n\\\\ntva = (tic*q1*.5);\\\\ntvb = (tic*q2*.5);\\\\ntvc = (tic*q3*.5);\\\\n\\\\nq1 = tva;\\\\nq2 = tvb;\\\\nq3 = tvc;\\\\n\\\\nsz = .5;\\\\nlen = 1;\\\\nt4 = len;\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"spectrum\\\":1,\\\"usedots\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"xk = 0;\\\",\\\"frame_eqs_eel\\\":\\\"dec_med = pow (0.8, 30/fps);\\\\ndec_slow = pow (0.95, 30/fps);\\\\ndec_xlow = pow (0.995, 30/fps);\\\\nbeat = max (max (bass, mid), treb); \\\\navg = avg*dec_slow + beat*(1-dec_slow);\\\\nis_beat = above(beat, .2+avg+peak) * above (time, t0+.2);\\\\nt0 = is_beat*time + (1-is_beat)*t0;\\\\npeak = is_beat * beat + (1-is_beat)*peak*dec_med;\\\\nindex = (index + is_beat) %16;\\\\nindex2 = (index2 + is_beat*bnot(index))%2;\\\\n\\\\nq20 = avg;\\\\nq21 = beat;\\\\nq22 = peak;\\\\nq23 = index;\\\\nq24 = is_beat;\\\\nq26 = bass_att + mid_att + treb_att;\\\\nq27 = index + 1;\\\\n\\\\npeakx = above(q22,1.5*maxp);\\\\nmaxp = max(maxp, q22);\\\\nmaxp = maxp*dec_xlow;\\\\n\\\\nk1 = is_beat*equal(index%3,0);\\\\np1 = k1*(p1+1) + (1-k1)*p1;\\\\np2 = dec_med * p2+ (1-dec_med)*p1;\\\\nrott = p2 * 3.1416/4;\\\\n\\\\nq1 = cos(rott);\\\\nq2 = sin(rott);\\\\nq3 = -q2;\\\\nq4 = q1;\\\\n\\\\ntrig = q24 * bnot(index%4);\\\\ndir = dir + trig * q26*(rand(100)/100-.5)/2 + peakx;\\\\ndir_ = dir_ * dec_slow + dir*(1-dec_slow);\\\\ndir__ = dir__ * dec_slow + dir_*(1-dec_slow);\\\\n\\\\nq5 = cos(dir__); \\\\nq6 = sin(dir__);\\\\n\\\\nspeed = speed * bnot(trig) + trig*q26*5/fps ;\\\\nspeed_= speed_* dec_slow + speed*(1-dec_slow);\\\\n\\\\nmovx = movx + speed_*q6;\\\\nmovy = movy + speed_*q5;\\\\n\\\\n//movx = movx + speed;\\\\n//movy = movy + speed;\\\\n\\\\n\\\\nq7 = movx;\\\\nq8 = movy;\\\\n\\\\ntilt = dir - dir__;\\\\ntilt_ = dec_slow*tilt_ + (1-dec_slow)*tilt;\\\\n\\\\n\\\\nmonitor = maxp;\\\\nq9 = cos(tilt_*speed_);\\\\nq10 = sin(tilt_*speed_);\\\\n\\\\nq12 = time;\\\",\\\"pixel_eqs_eel\\\":\\\"zoom = 1.3;\\\",\\\"warp\\\":\\\" shader_body { \\\\n vec2 uv_1;\\\\n vec2 uv6_2;\\\\n vec2 tmpvar_3;\\\\n tmpvar_3 = ((uv - 0.5) * aspect.xy);\\\\n float tmpvar_4;\\\\n tmpvar_4 = ((2.0 * sqrt(\\\\n dot (tmpvar_3, tmpvar_3)\\\\n )) + (rand_frame * 64.0)).x;\\\\n uv_1 = (uv + (clamp (\\\\n ((sin(tmpvar_4) / cos(tmpvar_4)) * normalize(tmpvar_3))\\\\n , vec2(-2.0, -2.0), vec2(2.0, 2.0)) / 20.0));\\\\n uv6_2 = (0.4 * sin((tmpvar_3 * 22.0)));\\\\n vec4 tmpvar_5;\\\\n tmpvar_5.w = 1.0;\\\\n tmpvar_5.xyz = (((q24 * \\\\n (((texture (sampler_main, uv_1).xyz - (\\\\n ((texture (sampler_blur1, fract(uv_1)).xyz * scale1) + bias1)\\\\n * 0.04)) + (0.15 * (vec3(\\\\n (0.1 / sqrt(dot (uv6_2, uv6_2)))\\\\n ) * roam_cos.xyz))) - 0.02)\\\\n ) * 0.98) + ((1.0 - q24) * texture (sampler_main, uv_orig).xyz));\\\\n ret = tmpvar_5.xyz;\\\\n }\\\",\\\"comp\\\":\\\"vec3 xlat_mutableret1;\\\\nvec2 xlat_mutablers;\\\\n shader_body { \\\\n vec2 uv1_1;\\\\n mat2 tmpvar_2;\\\\n tmpvar_2[uint(0)].x = q9;\\\\n tmpvar_2[uint(0)].y = -(q10);\\\\n tmpvar_2[1u].x = q10;\\\\n tmpvar_2[1u].y = q9;\\\\n uv1_1 = (((uv_orig - 0.5) * aspect.xy) * tmpvar_2);\\\\n uv1_1 = (uv1_1 * aspect.yx);\\\\n float tmpvar_3;\\\\n tmpvar_3 = (3.0 / abs(uv1_1.y));\\\\n xlat_mutablers.x = (uv1_1.x * tmpvar_3);\\\\n xlat_mutablers.y = (tmpvar_3 / 2.0);\\\\n mat2 tmpvar_4;\\\\n tmpvar_4[uint(0)].x = q5;\\\\n tmpvar_4[uint(0)].y = -(q6);\\\\n tmpvar_4[1u].x = q6;\\\\n tmpvar_4[1u].y = q5;\\\\n xlat_mutablers = (tmpvar_4 * xlat_mutablers);\\\\n vec2 tmpvar_5;\\\\n tmpvar_5.x = q7;\\\\n tmpvar_5.y = q8;\\\\n xlat_mutablers = (xlat_mutablers + tmpvar_5);\\\\n xlat_mutableret1 = ((texture (sampler_blur1, fract(\\\\n (xlat_mutablers / 12.0)\\\\n )).xyz * scale1) + bias1);\\\\n vec2 tmpvar_6;\\\\n tmpvar_6.y = 0.0;\\\\n tmpvar_6.x = q5;\\\\n vec4 tmpvar_7;\\\\n tmpvar_7.w = 1.0;\\\\n tmpvar_7.xyz = (((xlat_mutableret1 * 32.0) / tmpvar_3) + ((\\\\n ((q22 * sqrt(tmpvar_3)) / 4.0)\\\\n * \\\\n sin(((uv1_1 - q12) * q27))\\\\n .x) * texture (sampler_main, (\\\\n (((4.0 * xlat_mutableret1) / tmpvar_3).xy + ((uv1_1 / 2.0) / (0.5 + abs(uv1_1.y))))\\\\n + tmpvar_6)).xyz));\\\\n ret = tmpvar_7.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/martin - extreme heat.json\":\n/*!******************************************************!*\\\n !*** ./presets/converted/martin - extreme heat.json ***!\n \\******************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":5,\\\"gammaadj\\\":1.98,\\\"decay\\\":0.5,\\\"echo_zoom\\\":0.952,\\\"echo_alpha\\\":0.5,\\\"echo_orient\\\":3,\\\"wave_mode\\\":5,\\\"additivewave\\\":1,\\\"wave_thick\\\":1,\\\"modwavealphabyvolume\\\":1,\\\"wave_brighten\\\":0,\\\"darken\\\":1,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":0.474,\\\"wave_smoothing\\\":0.45,\\\"modwavealphastart\\\":0,\\\"modwavealphaend\\\":1.32,\\\"warpanimspeed\\\":1.459,\\\"warpscale\\\":2.007,\\\"zoom\\\":0.9999,\\\"warp\\\":0.01,\\\"sx\\\":0.9999,\\\"wave_r\\\":0.8,\\\"wave_g\\\":0.49,\\\"ob_size\\\":0,\\\"ob_a\\\":0.3,\\\"ib_size\\\":0.26,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":1.85,\\\"mv_r\\\":0.5,\\\"mv_g\\\":0.5,\\\"mv_b\\\":0.5,\\\"mv_a\\\":0,\\\"b1x\\\":0.8,\\\"b1ed\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":7,\\\"additive\\\":1,\\\"num_inst\\\":1024,\\\"rad\\\":0.04896,\\\"tex_ang\\\":1.00531,\\\"tex_zoom\\\":1.53117,\\\"r\\\":0,\\\"g\\\":1,\\\"b\\\":1,\\\"a\\\":0,\\\"g2\\\":0,\\\"border_b\\\":0,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"max_age = reg00;\\\\nn = instance*12;\\\\n\\\\nx0 = gmegabuf (n);\\\\ny0 = gmegabuf (n+1);\\\\nz0 = gmegabuf (n+2); \\\\nif (z0 < -100, rad = 0; gmegabuf(n+8) = max_age,\\\\n rad0 = pow(1-gmegabuf(n+8)/max_age,0.2)/z0* gmegabuf(n+7) + 0.01;\\\\n rad = abs(rad0)*0.032 ;\\\\n\\\\n x = 0.5 + x0/z0;\\\\n y = 0.5 + y0/z0;\\\\n);\\\\n\\\\na = 1; a2 = 0.2;\\\\n\\\\ng = .8; g2 = .0;\\\\n//b = (gmegabuf(n+7)>0)*0.04/abs(rad0); b2 = 0;\\\\nb = (rand(10)>3)*0.2 + 0.2*(z0<0); b2 =0;\\\\n\\\\n\\\"},{\\\"baseVals\\\":{\\\"sides\\\":12,\\\"thickoutline\\\":1,\\\"x\\\":0.9,\\\"y\\\":0.7,\\\"rad\\\":0.02958,\\\"tex_zoom\\\":0.9355,\\\"g\\\":0.5,\\\"b\\\":1,\\\"g2\\\":0,\\\"b2\\\":0.4,\\\"border_r\\\":0.3,\\\"border_g\\\":0.7,\\\"border_b\\\":0.8,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"a = 1;\\\"},{\\\"baseVals\\\":{\\\"sides\\\":44,\\\"textured\\\":1,\\\"rad\\\":1.397,\\\"tex_zoom\\\":0.44799,\\\"a\\\":0.5,\\\"r2\\\":1,\\\"g2\\\":0,\\\"border_r\\\":0.5,\\\"border_g\\\":0.5,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sides\\\":34,\\\"thickoutline\\\":1,\\\"x\\\":0.65,\\\"y\\\":0.8,\\\"rad\\\":0.14595,\\\"tex_zoom\\\":0.3357,\\\"g2\\\":0,\\\"border_r\\\":0.2,\\\"border_g\\\":0.7,\\\"border_b\\\":0.5,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"a = q22;\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"samples\\\":160,\\\"sep\\\":20,\\\"usedots\\\":1,\\\"additive\\\":1,\\\"scaling\\\":7.858,\\\"smoothing\\\":0.1,\\\"r\\\":0.2,\\\"g\\\":0.3,\\\"a\\\":0.6},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"x = rand(100)/100;\\\\ny = 0.5 - (1-0.7)/q32- 0.15*(rand(100)/100-0.5);\\\\na = 0.15;\\\\n\\\\nr= 0; b=1; g = 0;\\\"},{\\\"baseVals\\\":{\\\"usedots\\\":1,\\\"thick\\\":1,\\\"scaling\\\":0.89152,\\\"smoothing\\\":0.82,\\\"a\\\":0.1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"scaling\\\":0.89152,\\\"smoothing\\\":0.82,\\\"r\\\":0,\\\"g\\\":0.2,\\\"b\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"spectrum\\\":1,\\\"usedots\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"max_age = 4.5; // Sekunden\\\\nreg00 = max_age;\\\\n\\\\nn = 0;\\\\nloop (12*1024, gmegabuf(n) = max_age-1 + rand(2); n+=1);\\\\n\\\\n\\\\nq9 = (rand(25)-10)*2;\\\\nq3 = rand (100)/100;\\\\nq4 = rand (100)/100;\\\\n\\\\n//q2 = q3 = q4 = 0;\\\\n//record\\\\n// 0 : xpos\\\\n// 1 : ypos\\\\n// 2 : zpos\\\\n// 3 :vx\\\\n// 4 :vy\\\\n// 5 :vz\\\\n\\\\n\\\\n// 8 : age\\\",\\\"frame_eqs_eel\\\":\\\"dec_fast = 1 - 0.22*40/fps;\\\\ndec_med = 1 - 0.15*40/fps;\\\\ndec_slow = 1 - 0.04* 40/fps;\\\\n\\\\nvol = (bass+med+treb)/3;\\\\nvol_ = vol_*dec_slow + (1-dec_slow)*vol;\\\\nbeat = vol;\\\\nis_beat = above(beat, 1+peak*4) * above (time, t0+.2);\\\\nt0 = if (is_beat,time,t0);\\\\npeak = if (is_beat, beat, peak*dec_med);\\\\n\\\\nindex = (index + is_beat) %1024;\\\\nind1 = ind1*dec_med + (1-dec_fast)*index;\\\\nind2 = ind2*dec_med + (1-dec_fast)*ind1;\\\\nq27 = ind2;\\\\nq24 = is_beat;\\\\n\\\\n//Partikel\\\\nran1 = if (is_beat, rand(100)/100-0.5, ran1);\\\\nran2 = if (is_beat, rand(100)/50+1, ran2);\\\\nran1_ = dec_med * ran1_ + (1-dec_med)*ran1;\\\\nhigh = ran2 > 2.9;\\\\nq5 = ran1_;\\\\n\\\\nn = 0;\\\\npush = max(0,vol-vol_alt)*vol_; air = 0.1*dt; \\\\ndt = 1/fps;\\\\nv00 = pow(push,0.25)+0.4; Free = 512; New = 0;\\\\n\\\\ny0 = -0.68; yobf = y0+0.1;\\\\nloop (512,\\\\n megabuf (n) = gmegabuf (n);\\\\n megabuf (n+1) = gmegabuf (n+1);\\\\n megabuf (n+2) = gmegabuf (n+2);\\\\n if (gmegabuf(n+8) > max_age,\\\\n if (band(push >= dt*10 * !high,New < 200), \\\\n Free -= 1; New +=1;\\\\n // Init Neues Partikel\\\\n Tht = rand (100) / 500 * (1+high*1.5);\\\\n Phi = rand (12);\\\\n v0 = v00 * (1 + rand(10)/40);\\\\n gmegabuf (n) = ran1*1.7;\\\\n gmegabuf (n+1) = y0 + 2.2 * high;\\\\n gmegabuf (n+2) = 2;\\\\n gmegabuf (n+3) = v0*sin(Tht) * cos(Phi);\\\\n gmegabuf (n+4) = v0*cos(4*Tht) * (1-high*1.5);\\\\n gmegabuf (n+5) = v0*sin(Tht)*sin(Phi)*1.5*vol;\\\\n gmegabuf (n+7) = 0;\\\\n gmegabuf (n+8) = rand(100)/100;,0)\\\\n ,\\\\n //Integration\\\\n Free -= 1;\\\\n gmegabuf (n) += gmegabuf(n+3)*dt;\\\\n gmegabuf (n+1) += gmegabuf(n+4)*dt;\\\\n gmegabuf (n+2) += gmegabuf(n+5)*dt;\\\\n\\\\n gmegabuf (n+3) *= (1-air);\\\\n gmegabuf (n+4) *= (1-air);\\\\n gmegabuf (n+4) -= 0.8*dt;\\\\n gmegabuf (n+5) *= (1-air);\\\\n gmegabuf (n+7) = (gmegabuf(n+1)>yobf) * min(1,18*(gmegabuf(n+1)-yobf));\\\\n if (band(gmegabuf(n+1)bass1,0.5,0.9);\\\\nbass1 = bass1*dec + bass*(1-dec);\\\\nq1 = min(1,max(0,bass1-1.5) * abs(q3-0.5)*3);\\\\n\\\\nq10 = max (vol_-0.1,0.1);\\\\nvol_alt = vol;\\\\n\\\\n\\\\nq32 = aspecty;\\\\n\\\\n\\\\nnew1 = if (new>0,new,new1);\\\\n\\\\nmonitor = New1;\\\",\\\"pixel_eqs_eel\\\":\\\"dy = -.007*y;\\\\nwarp =.0;\\\\nrot = .025*sin(q27+x*7+y*0)*0.2/(abs(y-0.7)+0.1) * q10;// * (1-2*(y>0.7));\\\\nzoom = 1.003 + 0.2*max(0,y-0.7);\\\",\\\"warp\\\":\\\"vec2 ver;\\\\nfloat xlat_mutablecloud;\\\\nvec2 xlat_mutabledz;\\\\nvec2 xlat_mutableuv1;\\\\nvec2 xlat_mutableuv2;\\\\nfloat xlat_mutablez;\\\\n shader_body { \\\\n vec2 tmpvar_1;\\\\n tmpvar_1.y = 0.0;\\\\n tmpvar_1.x = texsize.z;\\\\n vec2 tmpvar_2;\\\\n tmpvar_2.x = 0.0;\\\\n tmpvar_2.y = texsize.w;\\\\n ver = (tmpvar_2 * 2.0);\\\\n vec3 ret_3;\\\\n xlat_mutabledz.x = (2.0 * dot (vec3((texture (sampler_main, \\\\n (uv + tmpvar_1)\\\\n ).z - texture (sampler_main, \\\\n (uv - tmpvar_1)\\\\n ).z)), vec3(0.32, 0.49, 0.29)));\\\\n xlat_mutabledz.y = (2.0 * dot (vec3((texture (sampler_main, \\\\n (uv + ver)\\\\n ).z - texture (sampler_main, \\\\n (uv - ver)\\\\n ).z)), vec3(0.32, 0.49, 0.29)));\\\\n vec2 tmpvar_4;\\\\n tmpvar_4.x = q3;\\\\n tmpvar_4.y = (0.4 + (q4 * 0.4));\\\\n xlat_mutableuv1 = (uv_orig - tmpvar_4);\\\\n vec4 tmpvar_5;\\\\n tmpvar_5 = texture (sampler_main, uv_orig);\\\\n xlat_mutablez = ((0.8 * (xlat_mutableuv1.y - 0.4)) - (mix (tmpvar_5.x, \\\\n ((texture (sampler_blur1, uv_orig).xyz * scale1) + bias1)\\\\n .x, 0.5) * 0.03));\\\\n vec2 tmpvar_6;\\\\n tmpvar_6.x = (xlat_mutableuv1.x * xlat_mutablez);\\\\n tmpvar_6.y = xlat_mutablez;\\\\n vec2 tmpvar_7;\\\\n tmpvar_7.x = 0.0;\\\\n tmpvar_7.y = (-(time) * 0.014);\\\\n xlat_mutableuv2 = (tmpvar_6 + tmpvar_7);\\\\n vec2 tmpvar_8;\\\\n tmpvar_8.x = 0.0;\\\\n tmpvar_8.y = (time * 0.004);\\\\n vec2 uvi_9;\\\\n uvi_9 = ((xlat_mutableuv2 * 1.5) + tmpvar_8);\\\\n float zv_10;\\\\n zv_10 = (0.002 * time);\\\\n xlat_mutablecloud = (1.0 - (1.5 * abs(\\\\n (texture (sampler_noise_hq, ((xlat_mutableuv2 + (0.07 * \\\\n abs((((\\\\n (dot (texture (sampler_noise_hq, uvi_9), vec4(0.32, 0.49, 0.29, 0.0)) + (dot (texture (sampler_noise_hq, (\\\\n (uvi_9 * 2.0)\\\\n + zv_10)), vec4(0.32, 0.49, 0.29, 0.0)) / 2.0))\\\\n + \\\\n (dot (texture (sampler_noise_hq, ((uvi_9 * 4.0) + zv_10)), vec4(0.32, 0.49, 0.29, 0.0)) / 4.0)\\\\n ) + (\\\\n dot (texture (sampler_noise_hq, ((uvi_9 * 8.0) + zv_10)), vec4(0.32, 0.49, 0.29, 0.0))\\\\n / -8.0)) - 1.0))\\\\n )) / 2.0)) - 0.5)\\\\n ))).x;\\\\n xlat_mutablecloud = (xlat_mutablecloud * clamp ((\\\\n (texture (sampler_noise_hq, (xlat_mutableuv2 * vec2(2.0, 0.5))).x + 0.5)\\\\n - \\\\n (3.0 * abs(xlat_mutableuv2.x))\\\\n ), 0.0, 1.0));\\\\n vec2 tmpvar_11;\\\\n tmpvar_11.x = 0.0;\\\\n tmpvar_11.y = ((-0.01 * time) * (0.125 * float(\\\\n int((8.0 * pow (xlat_mutablecloud, 4.0)))\\\\n )));\\\\n float tmpvar_12;\\\\n tmpvar_12 = (texture (sampler_noise_hq, (18.0 * (\\\\n (xlat_mutableuv2 + (0.05 * xlat_mutablecloud))\\\\n + tmpvar_11))) - 0.75).x;\\\\n xlat_mutablecloud = (xlat_mutablecloud * (1.0 + (\\\\n (0.2 * tmpvar_12)\\\\n * \\\\n (xlat_mutablecloud * xlat_mutablecloud)\\\\n )));\\\\n ret_3.x = ((0.3 * xlat_mutablecloud) + (0.7 * tmpvar_5.xyz)).x;\\\\n xlat_mutableuv1 = (uv - vec2(0.0, 0.71));\\\\n vec4 tmpvar_13;\\\\n tmpvar_13 = texture (sampler_blur1, uv);\\\\n float tmpvar_14;\\\\n tmpvar_14 = clamp (((12.0 * \\\\n (((10.0 * xlat_mutableuv1.y) + ((\\\\n (tmpvar_13.xyz * scale1)\\\\n + bias1).x / 2.0)) - 1.0)\\\\n ) + tmpvar_12), 0.0, 1.0);\\\\n xlat_mutableuv1 = (uv - 0.7);\\\\n ret_3.z = (((\\\\n ((((4.0 * tmpvar_14) * (1.0 - tmpvar_14)) * clamp ((tmpvar_5.x - 0.2), 0.0, 1.0)) + texture (sampler_main, (uv + (xlat_mutabledz * 0.003))).z)\\\\n - \\\\n (0.03 * sqrt(dot (xlat_mutabledz, xlat_mutabledz)))\\\\n ) - (\\\\n pow (((tmpvar_13.xyz * scale1) + bias1).z, 8.0)\\\\n * 0.2)) - 0.01);\\\\n ret_3.y = (texture (sampler_main, mix (uv, uv_orig, vec2(0.5, 0.5))).y * (0.85 - (0.2 * \\\\n ((tmpvar_13.xyz * scale1) + bias1)\\\\n .y)));\\\\n ret_3.x = (ret_3.x + ((texture (sampler_noise_lq, \\\\n (2.0 * xlat_mutableuv2)\\\\n ) * 0.08) * clamp (\\\\n (1.0 - (3.0 * ret_3.x))\\\\n , 0.0, 1.0)).x);\\\\n vec4 tmpvar_15;\\\\n tmpvar_15.w = 1.0;\\\\n tmpvar_15.xyz = ret_3;\\\\n ret = tmpvar_15.xyz;\\\\n }\\\",\\\"comp\\\":\\\"float dunk;\\\\nfloat xlat_mutablenoise;\\\\nvec2 xlat_mutablers;\\\\nvec2 xlat_mutablers0;\\\\nfloat xlat_mutablesmask;\\\\nfloat xlat_mutablesmoke;\\\\nvec2 xlat_mutableuv1;\\\\nfloat xlat_mutablez;\\\\n shader_body { \\\\n vec2 tmpvar_1;\\\\n tmpvar_1.y = 0.0;\\\\n tmpvar_1.x = texsize.z;\\\\n dunk = ((rand_preset.x * 0.3) + 0.1);\\\\n vec2 uv_2;\\\\n vec3 ret_3;\\\\n uv_2 = (uv + (texsize.zw / 2.0));\\\\n xlat_mutableuv1 = (uv_2 - vec2(0.0, 0.7));\\\\n xlat_mutablesmask = (((10.0 * xlat_mutableuv1.y) + (\\\\n ((texture (sampler_blur1, uv_2).xyz * scale1) + bias1)\\\\n .x / 2.0)) - 1.0);\\\\n float tmpvar_4;\\\\n tmpvar_4 = clamp (((2.0 * xlat_mutablesmask) + 0.3), 0.0, 1.0);\\\\n xlat_mutablenoise = ((3.0 * (1.0 - tmpvar_4)) * texture (sampler_noise_lq, ((xlat_mutableuv1 * 1.5) + (rand_frame * 0.2).xy)).x);\\\\n float tmpvar_5;\\\\n tmpvar_5 = clamp (((12.0 * xlat_mutablesmask) + (xlat_mutablenoise / 2.0)), 0.0, 1.0);\\\\n xlat_mutablez = ((0.35 / xlat_mutableuv1.y) + (xlat_mutablenoise / 2.0));\\\\n xlat_mutablers0.x = (xlat_mutableuv1.x * xlat_mutablez);\\\\n xlat_mutablers0.y = xlat_mutablez;\\\\n vec2 tmpvar_6;\\\\n tmpvar_6.x = (xlat_mutablers0.x + (time / 4.0));\\\\n tmpvar_6.y = (xlat_mutablez + (time * 0.21));\\\\n xlat_mutablers = (tmpvar_6 * tmpvar_5);\\\\n float t_7;\\\\n t_7 = ((texture (sampler_main, uv_2).x - dunk) * (1.0 - (tmpvar_5 * \\\\n pow (uv_2.y, 4.0)\\\\n )));\\\\n float tmpvar_8;\\\\n tmpvar_8 = clamp (((1.2 * t_7) - 0.2), 0.0, 1.0);\\\\n t_7 = tmpvar_8;\\\\n vec3 tmpvar_9;\\\\n tmpvar_9.x = tmpvar_8;\\\\n tmpvar_9.y = (tmpvar_8 * tmpvar_8);\\\\n tmpvar_9.z = pow (tmpvar_8, 8.0);\\\\n vec3 tmpvar_10;\\\\n tmpvar_10 = clamp ((tmpvar_9 / vec3(0.8, 0.8, 0.8)), 0.0, 1.0);\\\\n float t_11;\\\\n t_11 = ((texture (sampler_blur2, (uv_2 + 0.03)).xyz * scale2) + bias2).x;\\\\n float tmpvar_12;\\\\n tmpvar_12 = clamp (((1.2 * t_11) - 0.2), 0.0, 1.0);\\\\n t_11 = tmpvar_12;\\\\n vec3 tmpvar_13;\\\\n tmpvar_13.x = tmpvar_12;\\\\n tmpvar_13.y = (tmpvar_12 * tmpvar_12);\\\\n tmpvar_13.z = pow (tmpvar_12, 8.0);\\\\n vec3 tmpvar_14;\\\\n tmpvar_14 = clamp ((tmpvar_13 / vec3(0.8, 0.8, 0.8)), 0.0, 1.0);\\\\n ret_3 = ((tmpvar_10 * (tmpvar_10 * \\\\n (3.0 - (2.0 * tmpvar_10))\\\\n )) + ((\\\\n (((1.0 - texture (sampler_main, uv_2).x) * (1.0 - tmpvar_5)) * abs((texture (sampler_main, (uv_2 - tmpvar_1)).x - texture (sampler_main, (uv_2 + tmpvar_1)).x)))\\\\n * \\\\n (tmpvar_14 * (tmpvar_14 * (3.0 - (2.0 * tmpvar_14))))\\\\n ) * q9));\\\\n xlat_mutablesmoke = ((texture (sampler_blur1, uv_2).xyz * scale1) + bias1).z;\\\\n vec2 tmpvar_15;\\\\n tmpvar_15.x = uv_2.x;\\\\n tmpvar_15.y = ((0.85 - xlat_mutableuv1.y) + ((\\\\n ((texture (sampler_noise_hq, xlat_mutablers) + texture (sampler_noise_hq, ((xlat_mutablers / 4.0) - (time / 8.0)))) - 1.0)\\\\n .x * 0.2) * q10));\\\\n float t_16;\\\\n t_16 = ((texture (sampler_main, tmpvar_15).x + texture (sampler_main, tmpvar_15).y) - dunk);\\\\n float tmpvar_17;\\\\n tmpvar_17 = clamp (((1.2 * t_16) - 0.2), 0.0, 1.0);\\\\n t_16 = tmpvar_17;\\\\n vec3 tmpvar_18;\\\\n tmpvar_18.x = tmpvar_17;\\\\n tmpvar_18.y = (tmpvar_17 * tmpvar_17);\\\\n tmpvar_18.z = pow (tmpvar_17, 8.0);\\\\n vec3 tmpvar_19;\\\\n tmpvar_19 = clamp ((tmpvar_18 / vec3(0.8, 0.8, 0.8)), 0.0, 1.0);\\\\n ret_3 = (ret_3 + ((\\\\n (tmpvar_19 * (tmpvar_19 * (3.0 - (2.0 * tmpvar_19))))\\\\n * tmpvar_5) * 0.85));\\\\n float tmpvar_20;\\\\n tmpvar_20 = ((3.6 * tmpvar_4) * (1.0 - tmpvar_4));\\\\n ret_3 = (ret_3 * (clamp (\\\\n (1.0 - (xlat_mutablesmoke * (1.0 - tmpvar_20)))\\\\n , 0.0, 1.0) * clamp (\\\\n (1.0 - (tmpvar_20 * float((rand_preset.x > 0.5))))\\\\n , 0.0, 1.0)));\\\\n vec3 tmpvar_21;\\\\n tmpvar_21.z = 0.0;\\\\n tmpvar_21.xy = (((texture (sampler_blur3, uv_2).xyz * scale3) + bias3).xy * vec2(3.0, 5.0));\\\\n ret_3 = (ret_3 + ((xlat_mutablesmoke * \\\\n dot (tmpvar_21, vec3(0.32, 0.49, 0.29))\\\\n ) * vec3(1.0, 0.84, 0.62)));\\\\n float tmpvar_22;\\\\n tmpvar_22 = clamp (((1.2 * \\\\n clamp (texture (sampler_main, uv_2).y, 0.0, 1.0)\\\\n ) - 0.2), 0.0, 1.0);\\\\n vec3 tmpvar_23;\\\\n tmpvar_23.x = tmpvar_22;\\\\n tmpvar_23.y = (tmpvar_22 * tmpvar_22);\\\\n tmpvar_23.z = pow (tmpvar_22, 8.0);\\\\n vec3 tmpvar_24;\\\\n tmpvar_24 = clamp ((tmpvar_23 / vec3(0.8, 0.8, 0.8)), 0.0, 1.0);\\\\n ret_3 = (ret_3 + (tmpvar_24 * (tmpvar_24 * \\\\n (3.0 - (2.0 * tmpvar_24))\\\\n )));\\\\n float tmpvar_25;\\\\n tmpvar_25 = clamp (0.52, 0.0, 1.0);\\\\n vec3 tmpvar_26;\\\\n tmpvar_26.x = tmpvar_25;\\\\n tmpvar_26.y = (tmpvar_25 * tmpvar_25);\\\\n tmpvar_26.z = pow (tmpvar_25, 8.0);\\\\n vec3 tmpvar_27;\\\\n tmpvar_27 = clamp ((tmpvar_26 / vec3(0.8, 0.8, 0.8)), 0.0, 1.0);\\\\n vec3 tmpvar_28;\\\\n tmpvar_28 = mix (clamp (ret_3, 0.0, 1.0), (tmpvar_27 * (tmpvar_27 * \\\\n (3.0 - (2.0 * tmpvar_27))\\\\n )), vec3((pow (\\\\n ((1.0 - uv_2.y) - ((uv_2.x - 0.5) * (q3 - 0.5)))\\\\n , 4.0) * q1)));\\\\n ret_3 = tmpvar_28;\\\\n vec4 tmpvar_29;\\\\n tmpvar_29.w = 1.0;\\\\n tmpvar_29.xyz = tmpvar_28;\\\\n ret = tmpvar_29.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/martin - frosty caves 2.json\":\n/*!********************************************************!*\\\n !*** ./presets/converted/martin - frosty caves 2.json ***!\n \\********************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":5,\\\"gammaadj\\\":1.98,\\\"decay\\\":0.5,\\\"echo_zoom\\\":1,\\\"echo_alpha\\\":0.5,\\\"echo_orient\\\":3,\\\"wave_mode\\\":7,\\\"additivewave\\\":1,\\\"wave_thick\\\":1,\\\"modwavealphabyvolume\\\":1,\\\"wave_brighten\\\":0,\\\"wrap\\\":0,\\\"darken\\\":1,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":0.698,\\\"wave_smoothing\\\":0.45,\\\"modwavealphastart\\\":0,\\\"modwavealphaend\\\":1.32,\\\"warpanimspeed\\\":1.459,\\\"warpscale\\\":2.007,\\\"zoom\\\":0.9999,\\\"warp\\\":0.01,\\\"sx\\\":0.9999,\\\"wave_r\\\":0,\\\"wave_g\\\":0,\\\"wave_b\\\":0,\\\"ob_size\\\":0,\\\"ob_g\\\":0.1,\\\"ob_b\\\":1,\\\"ob_a\\\":1,\\\"ib_size\\\":0,\\\"ib_r\\\":0,\\\"ib_g\\\":0,\\\"ib_b\\\":0,\\\"mv_x\\\":25.6,\\\"mv_y\\\":9.6,\\\"mv_l\\\":5,\\\"mv_g\\\":0.5,\\\"mv_a\\\":0,\\\"b1ed\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"textured\\\":1,\\\"x\\\":0.09,\\\"y\\\":0.9,\\\"rad\\\":0.22437,\\\"tex_zoom\\\":1.76002,\\\"r2\\\":1,\\\"g2\\\":0,\\\"a2\\\":0.6,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"additive\\\":1,\\\"x\\\":0.26,\\\"y\\\":0.2,\\\"rad\\\":0.39317,\\\"tex_zoom\\\":6.19589,\\\"r\\\":0,\\\"g\\\":0.55,\\\"b\\\":0.5,\\\"g2\\\":0.4,\\\"b2\\\":0.4,\\\"a2\\\":0.07,\\\"border_r\\\":0.3,\\\"border_g\\\":0.7,\\\"border_b\\\":0.8,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"additive\\\":1,\\\"x\\\":0.803,\\\"rad\\\":0.314,\\\"tex_zoom\\\":1.49332,\\\"g\\\":1,\\\"b\\\":1,\\\"a\\\":0,\\\"g2\\\":0,\\\"border_r\\\":0.5,\\\"border_g\\\":0.5,\\\"border_b\\\":0.5,\\\"border_a\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"rad\\\":0.01,\\\"tex_zoom\\\":0.49981,\\\"r\\\":0,\\\"g2\\\":0,\\\"border_r\\\":0.2,\\\"border_g\\\":0.7,\\\"border_b\\\":0.5,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"samples\\\":132,\\\"sep\\\":20,\\\"thick\\\":1,\\\"additive\\\":1,\\\"scaling\\\":0.48454,\\\"smoothing\\\":0.1,\\\"g\\\":0,\\\"b\\\":0.2,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"usedots\\\":1,\\\"thick\\\":1,\\\"scaling\\\":0.89152,\\\"smoothing\\\":0.82,\\\"a\\\":0.1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"scaling\\\":0.89152,\\\"smoothing\\\":0.82,\\\"r\\\":0,\\\"g\\\":0.2,\\\"b\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"spectrum\\\":1,\\\"usedots\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"n = 0; loop (20000, megabuf(n)=0; gmegabuf(n)=0; n +=1; );\\\\n\\\\nMINBPM = 30; MAXBPM = 230; num_res = 100;\\\\nindex = 0;\\\\nloop (num_res,\\\\n n = 12*index;\\\\n BPM = minbpm * pow(maxbpm/minbpm,index/num_res);\\\\n gmegabuf(n) = BPM;\\\\n index += 1;);\\\\npi = 3.1416;\\\\nOCTAVE = (num_res) * log(2) / log (MAXBPM / MINBPM);\\\\n\\\\nq7 = .15; //MyZoom\\\\nq8 = 0.2 + rand(1); //fractal modifier\\\\nq16 = 1.6; //#fish eye\\\\nstart = 1; travel = 0; RotZ = 0; t0 = time+3;\\\\ncran0 = rand(1);\\\\ntrelx = 0; trely = 0; trelz = 0;\\\\nreg20 = 1; reg21 = 0; reg22 = 0; reg23 = 0; reg24 = 1; reg25 = 0; reg26 = 0; reg27 = 0; reg28 = 1;\\\\n\\\\n//Find random starting point\\\\nwhile (exec2(\\\\n ran1 = rand(8); ran2 = rand(8); ran3 = rand(8);\\\\n PosX = rand(8); PosY = rand(8); PosZ = rand(8); \\\\n\\\\n c1 = cos(ran1); c2 = cos(ran2); c3 = cos(ran3); \\\\n s1 = sin(ran1); s2 = sin(ran2); s3 = sin(ran3);\\\\n\\\\n reg20 = c2*c1; reg21 = c2*s1; reg22 = -s2;\\\\n reg23 = s3*s2*c1 - c3*s1; reg24 = s3*s2*s1 + c3*c1; reg25 = s3*c2;\\\\n reg26 = c3*s2*c1 + s3*s1; reg27 = c3*s2*s1 - s3*c1; reg28 = c3*c2;\\\\n\\\\n //***********BOT*************\\\\n //Coord. Trans. must exactly match def in warp S. !!!!\\\\n dist = 0.001;\\\\n while (exec2(\\\\n uvx = reg26*dist/q7; uvy = reg27*dist/q7; uvz = reg28*dist/q7;\\\\n uvx += PosX; uvy += PosY; uvz += PosZ;\\\\n uvx = 1+2*((uvx/4+30.5 - int(uvx/4+30.5))-.5);\\\\n uvy = 2+2*((uvy/4+30.5 - int(uvy/4+30.5))-.5);\\\\n uvz = 3+2*((uvz/4+30.5 - int(uvz/4+30.5))-.5);\\\\n uvx0 = uvx+q8; uvy0 = uvy+q8; uvz0 = uvz+q8;\\\\n loop (7+1,\\\\n uvx = if (uvx > 1, 2-uvx, if(uvx < -1, -2-uvx, uvx));\\\\n uvy = if (uvy > 1, 2-uvy, if(uvy < -1, -2-uvy, uvy));\\\\n uvz = if (uvz > 1, 2-uvz, if(uvz < -1, -2-uvz, uvz));\\\\n slen = uvx*uvx + uvy*uvy + uvz*uvz;\\\\n uvx = if (slen < 0.25, uvx*4, if (slen < 1, uvx/slen, uvx)) *2.6 + uvx0; \\\\n uvy = if (slen < 0.25, uvy*4, if (slen < 1, uvy/slen, uvy)) *2.6 + uvy0; \\\\n uvz = if (slen < 0.25, uvz*4, if (slen < 1, uvz/slen, uvz)) *2.6 + uvz0; \\\\n );\\\\n len = sqrt(uvx*uvx + uvy*uvy + uvz*uvz);\\\\n dist *= 1.05;\\\\n ,(dist < 0.6)*(len > 30)));\\\\n,(dist < .06))); //end while\\\",\\\"frame_eqs_eel\\\":\\\"dt = min (1/fps,0.1);\\\\ndec_f = 0.8; dec_m = 1 - 4*dt; dec_s = 1 - dt;\\\\nvol = (bass+mid/2+treb)/3;\\\\nvol_ = vol_*dec_m + (1-dec_m)*vol;\\\\ndec = dec_s;\\\\nvol2 = vol2*dec + (1-dec)*min(3,vol);\\\\nmaxvol = if (vol>maxvol,vol,maxvol*dec_s);\\\\n\\\\nexcite = vol-vol_;\\\\nindex = 0; maxind1 = 0; mean = 0;\\\\nloop (num_res, \\\\n n = index*12; omega=gmegabuf(n) * 2*pi/60;\\\\n gmegabuf (n+1) *= 1- 0.25*dt; \\\\n EC_Steps = int (10*dt*omega)+1; dt1 = dt/EC_Steps;\\\\n ex = excite ;\\\\n loop (EC_Steps, // Euler-Cauchy \\\\n gmegabuf (n+1) += (ex - sqr(omega)*gmegabuf(n+2)) * dt1;\\\\n gmegabuf (n+2) += gmegabuf(n+1) * dt1);\\\\n beatcos = gmegabuf(n+1); beatsin = gmegabuf(n+2)*omega;\\\\n quad = sqrt (pow(beatsin,2) + pow(beatcos,2)) ;\\\\n mean += quad/num_res;\\\\n gmegabuf (n+3) = gmegabuf(n+3) *dec_m + quad* (1-dec_m);\\\\n if (gmegabuf(n+3) > gmegabuf(maxind1*12+3), maxind1 = index, 0); \\\\nindex += 1;);\\\\nquali = gmegabuf(maxind1*12+3)/mean;\\\\n\\\\nBPM = minbpm * pow(maxbpm/minbpm,maxind1/num_res);\\\\nif (BPM>160, BPM/=2,0);\\\\ntrel1 += (BPM/60*pi+excite*cosb) * (maxvol>0.7)*dt;\\\\nq32 = trel1;\\\\n\\\\nspeed = (0.15 + dist_*0.25)* (1+avg)/q7*(0.34+vol_*0.34)*(q8+0.8);\\\\nds = ds * dec_s + (1-dec_s)*speed*.25*dt; \\\\nRotZ = 0.8*pow (sin(time/12),5);\\\\n\\\\n//Position \\\\nDirX= reg26; DirY= reg27; DirZ = reg28;\\\\nPosX += ds*DirX ; PosY += ds*DirY; PosZ += ds*DirZ; \\\\nq4 = PosX; q5 = PosY; q6 = PosZ;\\\\n\\\\nangchg = max(0,.4-dist_);\\\\nv1 = v1 * dec_m + (1-dec_m)* RotZ * ds;\\\\ndec = 1-3*dt;\\\\nv2p = v2p *dec + (1-dec)*(angchg*xslope + p2*0.02)*dt;\\\\nv3p = v3p *dec + (1-dec)*(angchg*yslope + p3*0.02)*dt ;\\\\nv2 = v2 *dec + (1-dec)* v2p;\\\\nv3 = v3 *dec + (1-dec)* v3p;\\\\np3 = sign(v3);\\\\np4 = sign(v2);\\\\n//push old RotMat\\\\nreg30 =reg20; reg31 =reg21; reg32 =reg22; \\\\nreg33 =reg23; reg34 =reg24; reg35 =reg25; \\\\nreg36 =reg26; reg37 =reg27; reg38 =reg28; \\\\n\\\\nn = 0; avg = 0;\\\\nloop (5,\\\\n n = n+1;\\\\n //new Rot. Mat for infinitesimal angles\\\\n ran1 = rand(100)/100;\\\\n ran2 = rand(100)/200-.25;\\\\n tx = cos(n*1.57+ran2) * (n <= 4)*ran1; ty = sin(n*1.57+ran2) * (n <= 4)*ran1;\\\\n c1 = cos(v1); c2 = cos(v2+ty); c3 = cos(v3+tx); \\\\n s1 = sin(v1); s2 = sin(v2+ty); s3 = sin(v3+tx);\\\\n reg10 = c2*c1; reg11 = c2*s1; reg12 = -s2;\\\\n reg13 = s3*s2*c1 - c3*s1; reg14 = s3*s2*s1 + c3*c1; reg15 = s3*c2;\\\\n reg16 = c3*s2*c1 + s3*s1; reg17 = c3*s2*s1 - s3*c1; reg18 = c3*c2;\\\\n\\\\n //pop old RotMat\\\\n reg20 =reg30; reg21 =reg31; reg22 =reg32; \\\\n reg23 =reg33; reg24 =reg34; reg25 =reg35; \\\\n reg26 =reg36; reg27 =reg37; reg28 =reg38; \\\\n\\\\n //Multiply new RotMat by old one\\\\n q20 = reg10*reg20 + reg11*reg23 + reg12*reg26;\\\\n q21 = reg10*reg21 + reg11*reg24 + reg12*reg27;\\\\n q22 = reg10*reg22 + reg11*reg25 + reg12*reg28;\\\\n q23 = reg13*reg20 + reg14*reg23 + reg15*reg26;\\\\n q24 = reg13*reg21 + reg14*reg24 + reg15*reg27;\\\\n q25 = reg13*reg22 + reg14*reg25 + reg15*reg28;\\\\n q26 = reg16*reg20 + reg17*reg23 + reg18*reg26;\\\\n q27 = reg16*reg21 + reg17*reg24 + reg18*reg27;\\\\n q28 = reg16*reg22 + reg17*reg25 + reg18*reg28;\\\\n\\\\n reg20 =q20; reg21 =q21; reg22 =q22;\\\\n reg23 =q23; reg24 =q24; reg25 =q25;\\\\n reg26 =q26; reg27 =q27; reg28 =q28;\\\\n\\\\n //***********BOT*************\\\\n //Coord. Trans. must exactly match def in warp S. !!!!\\\\n dist = 0.002;\\\\n while (exec2(\\\\n uvx = reg26*dist/q7; uvy = reg27*dist/q7; uvz = reg28*dist/q7;\\\\n uvx += PosX; uvy += PosY; uvz += PosZ;\\\\n// uvx = 8.0*((uvx/8+30.5 - int(uvx/8+30.5))-.5);\\\\n// uvy = 8.0*((uvy/8+30.5 - int(uvy/8+30.5))-.5);\\\\n// uvz = 8.0*((uvz/8+30.5 - int(uvz/8+30.5))-.5);\\\\n uvx = 1+2*((uvx/4+30.5 - int(uvx/4+30.5))-.5);\\\\n uvy = 2+2*((uvy/4+30.5 - int(uvy/4+30.5))-.5);\\\\n uvz = 3+2*((uvz/4+30.5 - int(uvz/4+30.5))-.5);\\\\n uvx0 = uvx+q8; uvy0 = uvy+q8; uvz0 = uvz+q8;\\\\n loop (7+1,\\\\n uvx = if (uvx > 1, 2-uvx, if(uvx < -1, -2-uvx, uvx));\\\\n uvy = if (uvy > 1, 2-uvy, if(uvy < -1, -2-uvy, uvy));\\\\n uvz = if (uvz > 1, 2-uvz, if(uvz < -1, -2-uvz, uvz));\\\\n slen = uvx*uvx + uvy*uvy + uvz*uvz;\\\\n uvx = if (slen < 0.25, uvx*4, if (slen < 1, uvx/slen, uvx)) *2.6 + uvx0; \\\\n uvy = if (slen < 0.25, uvy*4, if (slen < 1, uvy/slen, uvy)) *2.6 + uvy0; \\\\n uvz = if (slen < 0.25, uvz*4, if (slen < 1, uvz/slen, uvz)) *2.6 + uvz0; \\\\n );\\\\n len = sqrt(uvx*uvx + uvy*uvy + uvz*uvz);\\\\n dist *= 1.1;\\\\n ,(dist < 0.6)*(len > 30)));\\\\n megabuf(n) = megabuf(n)*dec_s + (1-dec_s)*dist; //stores the 4 trial points\\\\n avg = avg+abs(megabuf(n)/5);\\\\n); //end loop 5\\\\nn = 0; avg = 0; loop (5, n=n+1; avg = avg+abs(megabuf(n)/5));\\\\n\\\\nxslope = min(max(8*(megabuf(1)-megabuf(3)),-2),2);\\\\nyslope = min(max(8*(megabuf(4)-megabuf(2)),-2),2);\\\\ndist_ = dist_*dec_m + (1-dec_m)*dist;\\\\n\\\\nq10 = ds*q7; //compensation of lin. movement in GetDist and zoom uv\\\\nq14 = 1*abs(ds) + 2*(abs(v1) + abs(v2) + abs(v3)) + 1.0/255 + start*.0; \\\\nstart = start * .9;\\\\nreg52 = -v2; reg53 = v3;\\\\n//forward comp. of Rotation\\\\nwarp = 0.0; zoom = 1; \\\\nrot = v1;\\\\n\\\\n//light ctrl\\\\nsinb = sin(trel1);\\\\ncosb = cos(trel1);\\\\n\\\\nbt1 = sinb*sinb_<0; bt2 = cosb*cosb_<0;\\\\n\\\\nif (bt1, b1x = rand(2)-1; b1y = rand(2)-1;,0);\\\\nif (bt2, b2x = rand(2)-1; b2y = rand(2)-1;,0);\\\\nsinb_=sinb; cosb_=cosb;\\\\n\\\\nbri = vol2*0.012*sqrt(100/bpm)+excite*0.01;\\\\nmov = sqrt (v3*v3+v2*v2)/dt; \\\\n\\\\nq1= b1x*abs(b1x);\\\\nq2= b1y*abs(b1y);\\\\n\\\\nq17 =b2x*0.4;\\\\nq18= b2y*0.4;\\\\n\\\\nlen = pow(q1,2)+ pow(q2,2);\\\\nq3 = pow(sinb,2)*bri * (1+len*4)* max(0,1-5*mov);\\\\nq19= pow(cosb,2)*bri*1.2;\\\\n\\\\nmonitor = q8;\\\\n//frei: q9, q11, q12, q13, q15, q29m q30, q31, q32\\\",\\\"pixel_eqs_eel\\\":\\\"warp = 0.0; zoom = 1; \\\\ntx = tan((2*x-1)*0.9);\\\\nty = tan((2*y-1)*0.9);\\\\n\\\\ndx = reg52/q16* (1+0.5*abs(tx)); \\\\ndy = reg53/q16* (1+0.5*abs(ty)); \\\\n\\\\n\\\\ndx += reg53*ty*(x-0.5)*1; \\\\ndy += reg52*tx*(y-0.5)*1; \\\\n\\\\n//muss experimentell an tele angepasst werden; momentan 1.5 !!!\\\",\\\"warp\\\":\\\"float sustain;\\\\nfloat pix;\\\\nvec3 mod1;\\\\nfloat xlat_mutabledist;\\\\nfloat xlat_mutablestruc;\\\\nvec2 xlat_mutableuv1;\\\\nvec3 xlat_mutableuv2;\\\\n shader_body { \\\\n mat3 tmpvar_1;\\\\n tmpvar_1[uint(0)].x = q20;\\\\n tmpvar_1[uint(0)].y = q23;\\\\n tmpvar_1[uint(0)].z = q26;\\\\n tmpvar_1[1u].x = q21;\\\\n tmpvar_1[1u].y = q24;\\\\n tmpvar_1[1u].z = q27;\\\\n tmpvar_1[2u].x = q22;\\\\n tmpvar_1[2u].y = q25;\\\\n tmpvar_1[2u].z = q28;\\\\n vec3 tmpvar_2;\\\\n tmpvar_2.x = q4;\\\\n tmpvar_2.y = q5;\\\\n tmpvar_2.z = q6;\\\\n sustain = (0.97 - q14);\\\\n pix = (texsize.z * 2.0);\\\\n mod1 = (rand_preset.xyz - 0.5);\\\\n vec2 uv_3;\\\\n vec3 ret_4;\\\\n vec2 tmpvar_5;\\\\n tmpvar_5 = (uv - 0.5);\\\\n xlat_mutableuv1 = ((tmpvar_5 * aspect.xy) * q16);\\\\n vec4 tmpvar_6;\\\\n tmpvar_6 = texture (sampler_pw_main, uv);\\\\n uv_3 = ((tmpvar_5 * (1.0 - \\\\n (q10 / (1.0 - (tmpvar_6.z + (0.003921569 * tmpvar_6.y))))\\\\n )) + 0.5);\\\\n vec4 tmpvar_7;\\\\n tmpvar_7 = fract((8.0 * texture (sampler_noise_lq, (uv_3 + rand_frame.yz))));\\\\n xlat_mutabledist = tmpvar_7.x;\\\\n if ((tmpvar_7.y > 0.16)) {\\\\n vec4 nb2_8;\\\\n vec4 nb_9;\\\\n vec4 tmpvar_10;\\\\n tmpvar_10 = texture (sampler_pw_main, (uv_3 + vec2(-(pix))));\\\\n nb_9.x = (1.0 - (tmpvar_10.z + (0.003921569 * tmpvar_10.y)));\\\\n vec4 tmpvar_11;\\\\n tmpvar_11 = texture (sampler_pw_main, (uv_3 + (pix * vec2(1.0, -1.0))));\\\\n nb_9.y = (1.0 - (tmpvar_11.z + (0.003921569 * tmpvar_11.y)));\\\\n vec4 tmpvar_12;\\\\n tmpvar_12 = texture (sampler_pw_main, (uv_3 + vec2(pix)));\\\\n nb_9.z = (1.0 - (tmpvar_12.z + (0.003921569 * tmpvar_12.y)));\\\\n vec4 tmpvar_13;\\\\n tmpvar_13 = texture (sampler_pw_main, (uv_3 + (pix * vec2(-1.0, 1.0))));\\\\n nb_9.w = (1.0 - (tmpvar_13.z + (0.003921569 * tmpvar_13.y)));\\\\n vec4 tmpvar_14;\\\\n tmpvar_14 = texture (sampler_pw_main, (uv_3 + (pix * vec2(0.0, -1.0))));\\\\n nb2_8.x = (1.0 - (tmpvar_14.z + (0.003921569 * tmpvar_14.y)));\\\\n vec4 tmpvar_15;\\\\n tmpvar_15 = texture (sampler_pw_main, (uv_3 + (pix * vec2(1.0, 0.0))));\\\\n nb2_8.y = (1.0 - (tmpvar_15.z + (0.003921569 * tmpvar_15.y)));\\\\n vec4 tmpvar_16;\\\\n tmpvar_16 = texture (sampler_pw_main, (uv_3 + (pix * vec2(0.0, 1.0))));\\\\n nb2_8.z = (1.0 - (tmpvar_16.z + (0.003921569 * tmpvar_16.y)));\\\\n vec4 tmpvar_17;\\\\n tmpvar_17 = texture (sampler_pw_main, (uv_3 + (pix * vec2(-1.0, 0.0))));\\\\n nb2_8.w = (1.0 - (tmpvar_17.z + (0.003921569 * tmpvar_17.y)));\\\\n vec4 tmpvar_18;\\\\n tmpvar_18 = min (nb_9, nb2_8);\\\\n nb_9.zw = tmpvar_18.zw;\\\\n nb_9.xy = min (tmpvar_18.xy, tmpvar_18.zw);\\\\n xlat_mutabledist = ((min (nb_9.x, nb_9.y) + (\\\\n (0.006 * (tmpvar_7.xyz - 0.5).x)\\\\n * tmpvar_7.y)) - (q10 * 0.5));\\\\n };\\\\n float theta_19;\\\\n theta_19 = (xlat_mutabledist * 1.35);\\\\n float theta_20;\\\\n theta_20 = (xlat_mutabledist * 1.35);\\\\n vec3 tmpvar_21;\\\\n tmpvar_21.xy = (xlat_mutableuv1 * ((\\\\n sin(theta_19)\\\\n / \\\\n cos(theta_19)\\\\n ) / 1.35));\\\\n tmpvar_21.z = ((sin(theta_20) / cos(theta_20)) / 1.35);\\\\n xlat_mutableuv2 = (((tmpvar_21 / q7) * tmpvar_1) + tmpvar_2);\\\\n xlat_mutableuv2 = (((\\\\n fract(((xlat_mutableuv2 / 4.0) + 0.5))\\\\n - 0.5) * 2.0) + vec3(1.0, 2.0, 3.0));\\\\n vec3 zz0_23;\\\\n vec3 zz_24;\\\\n zz_24 = xlat_mutableuv2;\\\\n zz0_23 = (xlat_mutableuv2 + q8);\\\\n for (int n_22 = 0; n_22 <= 8; n_22++) {\\\\n zz_24 = ((2.0 * clamp (zz_24, vec3(-1.0, -1.0, -1.0), vec3(1.0, 1.0, 1.0))) - zz_24);\\\\n zz_24 = (zz_24 * max ((1.0/(\\\\n dot (zz_24, zz_24)\\\\n )), 1.0));\\\\n zz_24 = ((2.6 * zz_24) + zz0_23);\\\\n };\\\\n vec4 tmpvar_25;\\\\n tmpvar_25.w = 0.0;\\\\n tmpvar_25.xyz = zz_24;\\\\n float tmpvar_26;\\\\n tmpvar_26 = sqrt(dot (zz_24, zz_24));\\\\n vec4 tmpvar_27;\\\\n tmpvar_27.w = 0.0;\\\\n tmpvar_27.xyz = mod1;\\\\n xlat_mutablestruc = ((1.0 - (\\\\n (1.4 * dot (tmpvar_25, tmpvar_27))\\\\n / 40.0)) - (xlat_mutabledist * 0.3));\\\\n if (((tmpvar_26 < 40.0) && (xlat_mutabledist > (0.04 * \\\\n (1.0 - rad)\\\\n )))) {\\\\n ret_4.x = mix (xlat_mutablestruc, texture (sampler_main, uv_3).x, sustain);\\\\n float x_28;\\\\n x_28 = ((1.0 - xlat_mutabledist) * 255.0);\\\\n float ip_29;\\\\n ip_29 = float(int(x_28));\\\\n vec2 tmpvar_30;\\\\n tmpvar_30.x = (x_28 - ip_29);\\\\n tmpvar_30.y = (ip_29 / 255.0);\\\\n ret_4.yz = tmpvar_30;\\\\n } else {\\\\n ret_4 = ((texture (sampler_fc_main, uv_3) * sustain) - 0.003921569).xyz;\\\\n };\\\\n vec4 tmpvar_31;\\\\n tmpvar_31.w = 1.0;\\\\n tmpvar_31.xyz = ret_4;\\\\n ret = tmpvar_31.xyz;\\\\n }\\\",\\\"comp\\\":\\\"float xlat_mutablecross1;\\\\nvec2 xlat_mutabledz1;\\\\nfloat xlat_mutablerdist;\\\\nvec2 xlat_mutableuv0;\\\\nvec2 xlat_mutableuv4;\\\\nvec2 xlat_mutableuva;\\\\nvec2 xlat_mutableuvb;\\\\n shader_body { \\\\n vec2 tmpvar_1;\\\\n tmpvar_1.x = q1;\\\\n tmpvar_1.y = q2;\\\\n vec2 tmpvar_2;\\\\n tmpvar_2.x = q17;\\\\n tmpvar_2.y = q18;\\\\n vec2 uv_3;\\\\n vec3 ret_4;\\\\n uv_3 = (uv + (texsize.zw / 2.0));\\\\n xlat_mutableuv0 = uv_3;\\\\n vec2 uvi_5;\\\\n uvi_5 = (uv_3 + vec2(0.002, 0.0));\\\\n float tmpvar_6;\\\\n tmpvar_6 = mix (((texture (sampler_blur1, uvi_5).xyz * scale1) + bias1).x, texture (sampler_main, uvi_5).x, 0.1);\\\\n vec2 uvi_7;\\\\n uvi_7 = (uv_3 - vec2(0.002, 0.0));\\\\n float tmpvar_8;\\\\n tmpvar_8 = mix (((texture (sampler_blur1, uvi_7).xyz * scale1) + bias1).x, texture (sampler_main, uvi_7).x, 0.1);\\\\n xlat_mutabledz1.x = ((tmpvar_6 * float(\\\\n (tmpvar_6 > 0.02)\\\\n )) - (tmpvar_8 * float(\\\\n (tmpvar_8 > 0.02)\\\\n )));\\\\n vec2 uvi_9;\\\\n uvi_9 = (uv_3 + vec2(0.0, 0.002));\\\\n float tmpvar_10;\\\\n tmpvar_10 = mix (((texture (sampler_blur1, uvi_9).xyz * scale1) + bias1).x, texture (sampler_main, uvi_9).x, 0.1);\\\\n vec2 uvi_11;\\\\n uvi_11 = (uv_3 - vec2(0.0, 0.002));\\\\n float tmpvar_12;\\\\n tmpvar_12 = mix (((texture (sampler_blur1, uvi_11).xyz * scale1) + bias1).x, texture (sampler_main, uvi_11).x, 0.1);\\\\n xlat_mutabledz1.y = ((tmpvar_10 * float(\\\\n (tmpvar_10 > 0.02)\\\\n )) - (tmpvar_12 * float(\\\\n (tmpvar_12 > 0.02)\\\\n )));\\\\n uv_3 = (uv_3 + (xlat_mutabledz1 * 0.26));\\\\n xlat_mutablerdist = ((texture (sampler_blur1, uv_3).xyz * scale1) + bias1).z;\\\\n vec4 tmpvar_13;\\\\n tmpvar_13.w = 0.0;\\\\n tmpvar_13.xyz = texture (sampler_noise_hq, vec2(((xlat_mutablerdist * 0.05) + (time * 0.02)))).xyz;\\\\n vec4 tmpvar_14;\\\\n tmpvar_14 = mix (tmpvar_13, roam_sin, vec4(0.5, 0.5, 0.5, 0.5));\\\\n xlat_mutableuv4 = (uv_3 - 0.4);\\\\n xlat_mutableuva = ((xlat_mutableuv4 - tmpvar_1) - ((\\\\n ((texture (sampler_blur1, uv_3).xyz * scale1) + bias1)\\\\n .x * 0.4) * float(\\\\n (xlat_mutablerdist > 0.2)\\\\n )));\\\\n xlat_mutableuvb = ((xlat_mutableuv4 - tmpvar_2) - ((\\\\n (texture (sampler_blur1, uv_3).xyz * scale1)\\\\n + bias1).x * 0.4));\\\\n float angle_15;\\\\n float tmpvar_16;\\\\n tmpvar_16 = abs(xlat_mutableuva.x);\\\\n if ((xlat_mutableuva.y >= 0.0)) {\\\\n angle_15 = (1.0 - ((xlat_mutableuva.y - tmpvar_16) / (xlat_mutableuva.y + tmpvar_16)));\\\\n } else {\\\\n angle_15 = (3.0 - ((xlat_mutableuva.y + tmpvar_16) / (tmpvar_16 - xlat_mutableuva.y)));\\\\n };\\\\n float tmpvar_17;\\\\n if ((xlat_mutableuva.x < 0.0)) {\\\\n tmpvar_17 = -(angle_15);\\\\n } else {\\\\n tmpvar_17 = angle_15;\\\\n };\\\\n xlat_mutablecross1 = ((pow (\\\\n sin((3.141593 * (tmpvar_17 + (5.1 * q20))))\\\\n , 1.5) + (xlat_mutablerdist / 2.0)) + 0.1);\\\\n vec3 tmpvar_18;\\\\n tmpvar_18 = vec3((((1.0/(\\\\n dot (xlat_mutableuva, xlat_mutableuva)\\\\n )) / xlat_mutablecross1) * q3));\\\\n vec3 tmpvar_19;\\\\n tmpvar_19 = vec3(((1.0/(dot (xlat_mutableuvb, xlat_mutableuvb))) * q19));\\\\n ret_4 = (clamp ((1.0 - \\\\n (2.0 * xlat_mutablerdist)\\\\n ), 0.0, 1.0) * ((\\\\n (tmpvar_18 * tmpvar_14.xyz)\\\\n + \\\\n (tmpvar_19 * (1.0 - tmpvar_14.xyz))\\\\n ) + 0.1));\\\\n ret_4 = (ret_4 + (clamp (\\\\n (2.0 * xlat_mutablerdist)\\\\n , 0.0, 1.0) * (\\\\n (tmpvar_18 * tmpvar_14.zyx)\\\\n + \\\\n (tmpvar_19 * (1.0 - tmpvar_14.zyx))\\\\n )));\\\\n ret_4 = (ret_4 + ((\\\\n (texture (sampler_blur1, xlat_mutableuv0).xyz * scale1)\\\\n + bias1).x * 0.05));\\\\n ret_4 = (1.0 - exp(-(ret_4)));\\\\n vec4 tmpvar_20;\\\\n tmpvar_20.w = 1.0;\\\\n tmpvar_20.xyz = ret_4;\\\\n ret = tmpvar_20.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/martin - fruit machine.json\":\n/*!*******************************************************!*\\\n !*** ./presets/converted/martin - fruit machine.json ***!\n \\*******************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":2,\\\"gammaadj\\\":1.980001,\\\"decay\\\":0.5,\\\"echo_zoom\\\":0.999998,\\\"echo_alpha\\\":0.5,\\\"echo_orient\\\":3,\\\"wave_mode\\\":5,\\\"wave_dots\\\":1,\\\"modwavealphabyvolume\\\":1,\\\"wave_brighten\\\":0,\\\"darken\\\":1,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":1.169162,\\\"wave_smoothing\\\":0,\\\"wave_mystery\\\":0.08,\\\"modwavealphastart\\\":0,\\\"modwavealphaend\\\":1.32,\\\"warpanimspeed\\\":1.4595,\\\"warpscale\\\":2.0067,\\\"zoom\\\":0.9999,\\\"warp\\\":0.01,\\\"sx\\\":0.9999,\\\"wave_r\\\":0,\\\"wave_g\\\":0.99,\\\"ob_size\\\":0.015,\\\"ob_b\\\":1,\\\"ib_size\\\":0.26,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":0,\\\"mv_r\\\":0.4999,\\\"mv_g\\\":0.4999,\\\"mv_b\\\":0.4999,\\\"mv_a\\\":0,\\\"b2x\\\":0.3,\\\"b1ed\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":53,\\\"rad\\\":0.05408,\\\"tex_ang\\\":1.00531,\\\"tex_zoom\\\":1.531168,\\\"r\\\":0.2,\\\"g\\\":0.7,\\\"g2\\\":0,\\\"a2\\\":1,\\\"border_b\\\":0,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\\nx = .5;\\\\ny = .5;\\\\na = q24; \\\\na2 = 0;\\\\n//a = 1; \\\\na = 0;\\\\nrad0 = bnot(q24) * rad0 + rand(10)/50*q24;\\\\nrad = rad0;\\\\nb = 0; r = rand(10)/10; g = 1;\\\\na2 = q24;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":44,\\\"textured\\\":1,\\\"x\\\":0.7,\\\"rad\\\":0.2173,\\\"tex_zoom\\\":3.277448,\\\"g\\\":1,\\\"b\\\":0.5,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":1,\\\"border_r\\\":0.5,\\\"border_g\\\":0.5,\\\"border_b\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"textured = 1;\\\\nrot0 = rot0 + 1/fps * q1;\\\\n\\\\n\\\\nposx = (1-q24)*posx + q24*(.3+rand(100)/200);\\\\nposy = (1-q24)*posy + q24*(.3+rand(100)/200);;\\\\n\\\\nrad0 = (1-q24)*rad0 + q24*(.05+rand(100)/300);\\\\nrad = rad0;\\\\n\\\\n\\\\nx = posx;\\\\ny = posy;\\\\nang = rot0;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":63,\\\"x\\\":0.503,\\\"rad\\\":0.038857,\\\"tex_zoom\\\":2.2233,\\\"g\\\":0.1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":0.7,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"textured = 1;\\\\nrot0 = rot0 + .1/fps * q2;\\\\n\\\\n\\\\nposx = (1-q24)*posx + q24*(.3+rand(100)/200);\\\\nposy = (1-q24)*posy + q24*(.3+rand(100)/200);;\\\\n\\\\nrad0 = (1-q24)*rad0 + q24*(.05+rand(100)/400);\\\\nrad = rad0;\\\\n\\\\n\\\\nx = posx+q26;\\\\ny = posy;\\\\nang = rot0;\\\"},{\\\"baseVals\\\":{\\\"sides\\\":63,\\\"textured\\\":1,\\\"y\\\":1,\\\"rad\\\":0.548217,\\\"tex_zoom\\\":0.499805,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"border_r\\\":0.5,\\\"border_g\\\":0.5,\\\"border_b\\\":0.5,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"sep\\\":120,\\\"usedots\\\":1,\\\"additive\\\":1,\\\"scaling\\\":0.891519,\\\"smoothing\\\":0.82,\\\"a\\\":0.6,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"t2 = t2 + bass_att;\\\",\\\"point_eqs_eel\\\":\\\"k1 = (sample*100)%8;\\\\nk2 = bnot (k1);\\\\nxi = value1*k2 + xi*(1-k2);\\\\nyi = value2*(1-k2) + yi*k2;\\\\n\\\\ndx = dx*.99 + xi;\\\\ndy = dy*.99 + yi;\\\\n\\\\nx = .5 + xi/2;\\\\ny = .5 + yi/2;\\\\n\\\\na = q22/8; \\\\na = min(a,.4);\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"scaling\\\":0.891519,\\\"smoothing\\\":0.82,\\\"a\\\":0.02,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"tm = time*.1;\\\\nt1 = t1*sin(tm*t4) + (1-t1)*sin(tm*t7);\\\\nt2 = t2*sin(tm*t5) + (1-t2)*sin(tm*t8);\\\\nt3 = t3*sin(tm*t6) + (1-t3)*sin(tm*1);\\\\n\\\\ntic = min(time - tin,1);\\\\ntin = time;\\\\n\\\\ntva = (tic*q1*.5);\\\\ntvb = (tic*q2*.5);\\\\ntvc = (tic*q3*.5);\\\\n\\\\nq1 = tva;\\\\nq2 = tvb;\\\\nq3 = tvc;\\\\n\\\\nsz = .5;\\\\nlen = q4;\\\\nt4 = len;\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"scaling\\\":0.891519,\\\"smoothing\\\":0.82,\\\"r\\\":0,\\\"g\\\":0.2,\\\"b\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"tm = time*.1;\\\\nt1 = t1*sin(tm*t4) + (1-t1)*sin(tm*t7);\\\\nt2 = t2*sin(tm*t5) + (1-t2)*sin(tm*t8);\\\\nt3 = t3*sin(tm*t6) + (1-t3)*sin(tm*1);\\\\n\\\\ntic = min(time - tin,1);\\\\ntin = time;\\\\n\\\\ntva = (tic*q1*.5);\\\\ntvb = (tic*q2*.5);\\\\ntvc = (tic*q3*.5);\\\\n\\\\nq1 = tva;\\\\nq2 = tvb;\\\\nq3 = tvc;\\\\n\\\\nsz = .5;\\\\nlen = 1;\\\\nt4 = len;\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"spectrum\\\":1,\\\"usedots\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"dec_med = pow (0.7, 30/fps);\\\\ndec_slow = pow (0.99, 30/fps);\\\\nbeat = max (max (bass, mid), treb); \\\\n\\\\nbeat = bass+mid+treb;\\\\nbeat = beat*beat;\\\\n\\\\navg = avg*dec_slow + beat*(1-dec_slow);\\\\nis_beat = above(beat, .2*avg+peak) * above (time, t0+.2);\\\\nt0 = is_beat*time + (1-is_beat)*t0;\\\\npeak = is_beat * beat + (1-is_beat)*peak*dec_med;\\\\nindex = (index + is_beat) %8;\\\\nindex2 = (index2 + is_beat*bnot(index))%2;\\\\n\\\\nq20 = avg;\\\\nq21 = beat;\\\\nq22 = peak;\\\\nq23 = index;\\\\nq24 = is_beat;\\\\nq26 = bass_att + mid_att + treb_att + 3;\\\\nq27 = index + 1;\\\\nq28 = index2;\\\\nq29 = index2;\\\\nmonitor = q29;\\\\nk1 = is_\\\\nbeat*equal(index%2,0);\\\\np1 = k1*(p1+1) + (1-k1)*p1;\\\\np2 = dec_med * p2+ (1-dec_med)*p1;\\\\nrott = p2 * 3.1416/4;\\\\n\\\\nq1 = cos(rott);\\\\nq2 = sin(rott);\\\\nq3 = -q2;\\\\nq4 = q1;\\\\n\\\\n\\\\nq5 = cos(time/17);\\\\nq6 = sin(time/17);\\\\nq7 = -q2;\\\\nq8 = q1;\\\\n\\\\n\\\\nds = ds*dec_med + q24*(1-dec_med);\\\\nq25 = q24;\\\\n//q25 = above(ds,.5);\\\\n\\\\nq10 = q22+3;\\\\n\\\\nt_rel = time*8;\\\\n//q25 = below((t_rel)-int(t_rel),.2);\\\\n\\\\n\\\\np3 = p3*dec_med + (1-dec_med) * (100*index + .0*q26);\\\\nq30 = p3 ;\\\\n\\\\np4 = dec_med*p4 + (1-dec_med)*q27;\\\\nq31 = p4;\\\\n\\\\n\\\\nzoom = 1.1 + q1*.2;\\\\nwarp =0;\\\\nob_size = .01;\\\\nob_r = .9;\\\\nob_g = 1;\\\\nob_b = 0;\\\\nob_a = .2*sin(time/7);\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\" shader_body { \\\\n vec2 uv_1;\\\\n vec2 tmpvar_2;\\\\n tmpvar_2 = ((uv - 0.5) * aspect.xy);\\\\n float tmpvar_3;\\\\n tmpvar_3 = (sqrt(dot (tmpvar_2, tmpvar_2)) + (rand_frame * 13.0)).x;\\\\n uv_1 = (uv + (clamp (\\\\n ((sin(tmpvar_3) / cos(tmpvar_3)) / normalize(tmpvar_2))\\\\n , vec2(-2.0, -2.0), vec2(2.0, 2.0)) / 16.0));\\\\n vec4 tmpvar_4;\\\\n tmpvar_4.w = 1.0;\\\\n tmpvar_4.xyz = ((q24 * (\\\\n ((texture (sampler_main, uv_1).xyz + ((0.1 * vec3(\\\\n ((q1 * cos((uv_1.x * 44.0))) - cos((uv_1.y * 82.0)))\\\\n )) * (1.0 + texture (sampler_noise_lq, \\\\n ((uv_1 / 16.0) + (time / 100.0))\\\\n )).xyz)) * 0.98)\\\\n - 0.025)) + ((1.0 - q24) * texture (sampler_main, uv_orig).xyz));\\\\n ret = tmpvar_4.xyz;\\\\n }\\\",\\\"comp\\\":\\\"vec2 xlat_mutabledz;\\\\nvec3 xlat_mutableneu;\\\\nvec3 xlat_mutableret1;\\\\nvec2 xlat_mutableuv3;\\\\n shader_body { \\\\n vec2 uv2_1;\\\\n vec2 tmpvar_2;\\\\n tmpvar_2.y = 0.0;\\\\n tmpvar_2.x = texsize.z;\\\\n vec2 tmpvar_3;\\\\n tmpvar_3.x = 0.0;\\\\n tmpvar_3.y = texsize.w;\\\\n xlat_mutabledz.x = dot ((texture (sampler_main, (uv + tmpvar_2)).xyz - texture (sampler_main, (uv - tmpvar_2)).xyz), vec3(0.32, 0.49, 0.29));\\\\n xlat_mutabledz.y = dot ((texture (sampler_main, (uv + tmpvar_3)).xyz - texture (sampler_main, (uv - tmpvar_3)).xyz), vec3(0.32, 0.49, 0.29));\\\\n uv2_1 = (uv - 0.5);\\\\n vec2 tmpvar_4;\\\\n tmpvar_4.y = 0.0;\\\\n float tmpvar_5;\\\\n tmpvar_5 = (time / 8.0);\\\\n tmpvar_4.x = tmpvar_5;\\\\n float tmpvar_6;\\\\n tmpvar_6 = (q27 * 2.0);\\\\n xlat_mutableuv3 = (((tmpvar_6 * uv2_1) * 0.1) + tmpvar_4);\\\\n xlat_mutableuv3 = (fract(xlat_mutableuv3) * aspect.yx);\\\\n xlat_mutableuv3 = ((0.1 * cos(\\\\n (22.0 * xlat_mutableuv3)\\\\n )) + (18.0 * xlat_mutabledz));\\\\n float tmpvar_7;\\\\n tmpvar_7 = clamp ((0.02 / sqrt(\\\\n dot (xlat_mutableuv3, xlat_mutableuv3)\\\\n )), 0.0, 1.0);\\\\n vec4 tmpvar_8;\\\\n tmpvar_8 = (1.0 + roam_cos);\\\\n xlat_mutableneu = ((0.1 * vec3(tmpvar_7)) + ((0.45 * \\\\n dot (vec3(tmpvar_7), vec3(0.32, 0.49, 0.29))\\\\n ) * tmpvar_8).xyz);\\\\n xlat_mutableret1 = max (vec3(0.0, 0.0, 0.0), (xlat_mutableneu * 1.252262));\\\\n vec2 tmpvar_9;\\\\n tmpvar_9.y = 0.0;\\\\n tmpvar_9.x = tmpvar_5;\\\\n xlat_mutableuv3 = (((tmpvar_6 * uv2_1) * 0.1) + tmpvar_9);\\\\n xlat_mutableuv3 = (fract(xlat_mutableuv3) * aspect.yx);\\\\n xlat_mutableuv3 = ((0.1 * cos(\\\\n (22.0 * xlat_mutableuv3)\\\\n )) + (18.0 * xlat_mutabledz));\\\\n float tmpvar_10;\\\\n tmpvar_10 = clamp ((0.02 / sqrt(\\\\n dot (xlat_mutableuv3, xlat_mutableuv3)\\\\n )), 0.0, 1.0);\\\\n xlat_mutableneu = ((0.1 * vec3(tmpvar_10)) + ((0.45 * \\\\n dot (vec3(tmpvar_10), vec3(0.32, 0.49, 0.29))\\\\n ) * tmpvar_8).xyz);\\\\n xlat_mutableret1 = max (xlat_mutableret1, (xlat_mutableneu * 1.252262));\\\\n vec4 tmpvar_11;\\\\n tmpvar_11.w = 1.0;\\\\n tmpvar_11.xyz = (xlat_mutableret1 + clamp ((\\\\n (texture (sampler_main, uv).xyz * 4.0)\\\\n * \\\\n (0.2 + xlat_mutableret1)\\\\n ), 0.0, 1.0));\\\\n ret = tmpvar_11.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/martin - glass corridor.json\":\n/*!********************************************************!*\\\n !*** ./presets/converted/martin - glass corridor.json ***!\n \\********************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":5,\\\"gammaadj\\\":1.980001,\\\"decay\\\":0.5,\\\"echo_zoom\\\":0.999998,\\\"echo_alpha\\\":0.5,\\\"echo_orient\\\":3,\\\"wave_mode\\\":6,\\\"wave_dots\\\":1,\\\"modwavealphabyvolume\\\":1,\\\"darken\\\":1,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":1.740724,\\\"wave_smoothing\\\":0.45,\\\"wave_mystery\\\":0.08,\\\"modwavealphastart\\\":0,\\\"modwavealphaend\\\":1.32,\\\"warpanimspeed\\\":1.4595,\\\"warpscale\\\":2.0067,\\\"zoom\\\":0.9999,\\\"warp\\\":0.01,\\\"sx\\\":0.9999,\\\"wave_g\\\":0.99,\\\"ob_size\\\":0,\\\"ob_r\\\":1,\\\"ob_b\\\":1,\\\"ob_a\\\":1,\\\"ib_size\\\":0.26,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":1.85,\\\"mv_r\\\":0.4999,\\\"mv_g\\\":0.4999,\\\"mv_b\\\":0.4999,\\\"mv_a\\\":0,\\\"b1ed\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"textured\\\":1,\\\"x\\\":0.71,\\\"rad\\\":0.657209,\\\"tex_zoom\\\":0.391734,\\\"g\\\":1,\\\"b\\\":1,\\\"a\\\":0.8,\\\"r2\\\":0.83,\\\"g2\\\":0.93,\\\"b2\\\":0.8,\\\"border_b\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"rad\\\":1.264578,\\\"tex_ang\\\":1.4451,\\\"tex_zoom\\\":1.493308,\\\"r\\\":0.7,\\\"g\\\":0.4,\\\"a\\\":0.01,\\\"r2\\\":0.7,\\\"g2\\\":0.4,\\\"border_r\\\":0.5,\\\"border_g\\\":0.5,\\\"border_b\\\":0.5,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sides\\\":44,\\\"x\\\":0.503,\\\"rad\\\":0.038857,\\\"tex_zoom\\\":0.609857,\\\"g\\\":0.1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":1,\\\"border_r\\\":0.5,\\\"border_g\\\":0.5,\\\"border_b\\\":0.5,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x = rand(10)/10;\\\\ny = rand(10)/10;\\\\n\\\\nr = 0;\\\\ng = 0;\\\\nb = 0;\\\\n\\\\nr2= .5;\\\\nb2 = 0;\\\\ng2 = 0;\\\\na = 0; a2 = 1;\\\\nrad = bass_att/30;\\\"},{\\\"baseVals\\\":{\\\"sides\\\":63,\\\"textured\\\":1,\\\"y\\\":1,\\\"rad\\\":0.548217,\\\"tex_zoom\\\":0.499805,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"border_r\\\":0.5,\\\"border_g\\\":0.5,\\\"border_b\\\":0.5,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"sep\\\":120,\\\"thick\\\":1,\\\"additive\\\":1,\\\"scaling\\\":0.891519,\\\"smoothing\\\":0.82,\\\"r\\\":0,\\\"g\\\":0.5,\\\"a\\\":0.9,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"t2 = t2 + bass_att;\\\",\\\"point_eqs_eel\\\":\\\"k1 = (sample*100)%2;\\\\n\\\\nxi = value1*k1 + xi*(1-k1);\\\\nyi = value2*(1-k1) + yi*k1;\\\\n\\\\nx = .5 + xi/2;\\\\ny = .5 + yi/2;\\\\n\\\\n\\\\na = bass + mid + treb ;\\\\na = a/10 * sqrt(xi*xi+yi*yi);\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"scaling\\\":0.891519,\\\"smoothing\\\":0.82,\\\"a\\\":0.1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"scaling\\\":0.891519,\\\"smoothing\\\":0.82,\\\"r\\\":0,\\\"g\\\":0.2,\\\"b\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"x0 = .5 + (-1) * q1/1;\\\\ny0 = .0 - (-1)* .5;\\\\n\\\\n//x0 = .5; y0 = .5;\\\\n\\\\nk1 = int(100.0*sample);\\\\nk2 = int(100.0*sample+1);\\\\nk1 = k1%2;\\\\nf1 = rand(100)/200-.25;\\\\nf2 = rand(100)/200-.25;\\\\n\\\\nx = x0 + k1* f1;;\\\\ny = y0 + k1* f2;\\\\na = k2%2 /4;\\\"},{\\\"baseVals\\\":{\\\"spectrum\\\":1,\\\"usedots\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"ra = .8;\\\\nrb = .5;\\\\npib = 6.28318530718;\\\\n\\\\n\\\\ntic = min(time-tin,.1);\\\\ntin = if(equal(sample,0),time,tin);\\\\n\\\\nmod = 1.5 + .5*sin(time*.15);\\\\nmed = 1.5 + .5*sin(time*.134);\\\\nmed = 5;\\\\namod = 3;\\\\n\\\\nvr = rand(10001)*.0001;\\\\nrb = rb + rand(10001)*.0001*.1;\\\\n\\\\na = vr;\\\\n\\\\nsa = vr*pib*.5;\\\\nsp = sa*mod + q1*1.3;\\\\nsam = sa*med - q1*.219;\\\\n\\\\nox = ra*sin(sam*pib);\\\\noy = ra*cos(sam*pib);\\\\nox = ox + rb*-cos(sp)*sin(sam*pib);\\\\noz = rb*-sin(sp);\\\\noy = oy + rb*-cos(sp)*cos(sam*pib);\\\\n\\\\n\\\\nxang = time*.132;\\\\nxang = q2;\\\\nyang = time*.153;\\\\nyang = q3;\\\\nzang = time*.110;\\\\nzang = q4;\\\\nfov = 0.6 + 0.2*sin(time);\\\\nfov = .5;\\\\n\\\\nmx = ox*cos(zang) - oy*sin(zang);\\\\nmy = ox*sin(zang) + oy*cos(zang);\\\\nox = mx;\\\\noy = my;\\\\nmx = ox*cos(yang) + oz*sin(yang);\\\\nmz = -ox*sin(yang) + oz*cos(yang);\\\\nox = mx;\\\\noz = mz;\\\\nmy = oy*cos(xang) - oz*sin(xang);\\\\nmz = oy*sin(xang) + oz*cos(xang);\\\\noy = my;\\\\noz = mz;\\\\n\\\\noz = oz - 2;\\\\nx = ox*fov/oz + 0.5;\\\\nx = (x-.5)*0.75 + 0.5;\\\\ny = oy*fov/oz + 0.5;\\\\n\\\"}],\\\"init_eqs_eel\\\":\\\"p3 = 0;\\\\nt_rel = 0;\\\",\\\"frame_eqs_eel\\\":\\\"dec_med = pow (0.9, 30/fps);\\\\ndec_slow = pow (0.99, 30/fps);\\\\nbeat = max (max (bass, mid), treb);\\\\navg = avg*dec_slow + beat*(1-dec_slow);\\\\nis_beat = above(beat, .5+avg+peak) * above (time, t0+.2);\\\\nt0 = is_beat*time + (1-is_beat)*t0;\\\\npeak = is_beat * beat + (1-is_beat)*peak*dec_med;\\\\nindex = (index + is_beat) %8;\\\\nindex2 = (index2 + is_beat*bnot(index))%4;\\\\nindex3 = (index3 + is_beat*bnot(index)*bnot(index2))%3;\\\\n\\\\nmonitor = index4;\\\\n\\\\nq20 = avg;\\\\nq21 = beat;\\\\nq22 = peak;\\\\nq23 = index;\\\\nq24 = is_beat;\\\\nq26 = bass_att + mid_att + treb_att+1;\\\\n\\\\n//k1 = is_beat*bnot(index)*bnot(index2);\\\\n\\\\nk1 = is_beat*equal(index,0);\\\\np1 = k1*(p1+1) + (1-k1)*p1;\\\\np2 = dec_med * p2+ (1-dec_med)*p1;\\\\np3 = dec_med * p3+ (1-dec_med)*p2;\\\\nrott = p3 * 3.14159265359/2;\\\\n\\\\n\\\\nq27 = 8-index;\\\\nq28 = index2+1;\\\\n\\\\n//q28 = sin(time)+1;\\\\n\\\\nq1 = cos(rott);\\\\nq2 = sin(rott);\\\\nq3 = -q2;\\\\nq4 = q1;\\\\n\\\\nt_rel = t_rel + .02*30/fps*q1*q1;\\\\n\\\\nq5 = cos(t_rel);\\\\nq6 = sin(t_rel);\\\\nq7 = -q6;\\\\nq8 = q5;\\\\n\\\\nmovez = movez + .02*30/fps / ((1.4-q5)*(1.4-q5));\\\\nq30 = movez;\\\\n\\\\n\\\\nzoom = 1.0;\\\",\\\"pixel_eqs_eel\\\":\\\"dx = 0*q28/8;\\\",\\\"warp\\\":\\\"vec3 xlat_mutablenoise;\\\\nvec3 xlat_mutableret1;\\\\nvec2 xlat_mutablers;\\\\n shader_body { \\\\n float z_1;\\\\n mat2 tmpvar_2;\\\\n tmpvar_2[uint(0)] = _qb.xy;\\\\n tmpvar_2[1u] = _qb.zw;\\\\n vec2 tmpvar_3;\\\\n tmpvar_3 = ((uv * tmpvar_2) - 0.5);\\\\n float tmpvar_4;\\\\n tmpvar_4 = (0.4 / abs(tmpvar_3.y));\\\\n xlat_mutablers.x = (tmpvar_3.x * tmpvar_4);\\\\n xlat_mutablers.y = (tmpvar_4 + q30);\\\\n vec4 tmpvar_5;\\\\n tmpvar_5 = texture (sampler_pw_noise_lq, (xlat_mutablers / 32.0));\\\\n xlat_mutablenoise = (tmpvar_5.xyz * vec3(greaterThanEqual (tmpvar_5.xyz, vec3(0.9, 0.9, 0.9))));\\\\n xlat_mutablenoise = (xlat_mutablenoise * (1.0 + (0.5 * \\\\n (dot (texture (sampler_noise_hq, (16.0 * xlat_mutablers)), vec4(0.32, 0.49, 0.29, 0.0)) - 0.5)\\\\n )));\\\\n xlat_mutableret1 = xlat_mutablenoise;\\\\n z_1 = (1.2 / abs(tmpvar_3.y));\\\\n xlat_mutablers.x = (tmpvar_3.x * z_1);\\\\n xlat_mutablers.y = (z_1 + q30);\\\\n vec4 tmpvar_6;\\\\n tmpvar_6 = texture (sampler_pw_noise_lq, (xlat_mutablers / 32.0));\\\\n xlat_mutablenoise = (tmpvar_6.xyz * vec3(greaterThanEqual (tmpvar_6.xyz, vec3(0.9, 0.9, 0.9))));\\\\n xlat_mutableret1 = (xlat_mutableret1 + xlat_mutablenoise);\\\\n z_1 = (0.4 / abs(tmpvar_3.x));\\\\n xlat_mutablers.y = (tmpvar_3.y * z_1);\\\\n xlat_mutablers.x = (z_1 + q30);\\\\n vec4 tmpvar_7;\\\\n tmpvar_7 = texture (sampler_pw_noise_lq, (xlat_mutablers / 32.0));\\\\n xlat_mutablenoise = (tmpvar_7.xyz * vec3(greaterThanEqual (tmpvar_7.xyz, vec3(0.9, 0.9, 0.9))));\\\\n xlat_mutablenoise = (xlat_mutablenoise * (1.0 + (0.5 * \\\\n (dot (texture (sampler_noise_hq, (16.0 * xlat_mutablers)), vec4(0.32, 0.49, 0.29, 0.0)) - 0.5)\\\\n )));\\\\n xlat_mutableret1 = (xlat_mutableret1 + xlat_mutablenoise);\\\\n z_1 = (1.2 / abs(tmpvar_3.x));\\\\n xlat_mutablers.y = (tmpvar_3.y * z_1);\\\\n xlat_mutablers.x = (z_1 + q30);\\\\n vec4 tmpvar_8;\\\\n tmpvar_8 = texture (sampler_pw_noise_lq, (xlat_mutablers / 32.0));\\\\n xlat_mutablenoise = (tmpvar_8.xyz * vec3(greaterThanEqual (tmpvar_8.xyz, vec3(0.9, 0.9, 0.9))));\\\\n xlat_mutableret1 = (xlat_mutableret1 + xlat_mutablenoise);\\\\n vec4 tmpvar_9;\\\\n tmpvar_9.w = 1.0;\\\\n tmpvar_9.xyz = xlat_mutableret1;\\\\n ret = tmpvar_9.xyz;\\\\n }\\\",\\\"comp\\\":\\\"uniform sampler2D sampler_clouds2;\\\\n shader_body { \\\\n vec2 uv_1;\\\\n vec2 uv1_2;\\\\n uv_1 = (uv * aspect.xy);\\\\n vec2 tmpvar_3;\\\\n tmpvar_3.y = 0.0;\\\\n tmpvar_3.x = texsize.z;\\\\n vec2 tmpvar_4;\\\\n tmpvar_4.x = 0.0;\\\\n tmpvar_4.y = texsize.w;\\\\n vec2 tmpvar_5;\\\\n tmpvar_5.x = (dot (texture (sampler_main, (uv_1 - tmpvar_3)).xyz, vec3(0.32, 0.49, 0.29)) - dot (texture (sampler_main, (uv_1 + tmpvar_3)).xyz, vec3(0.32, 0.49, 0.29)));\\\\n tmpvar_5.y = (dot (texture (sampler_main, (uv_1 - tmpvar_4)).xyz, vec3(0.32, 0.49, 0.29)) - dot (texture (sampler_main, (uv_1 + tmpvar_4)).xyz, vec3(0.32, 0.49, 0.29)));\\\\n uv1_2 = ((0.3 * sin(\\\\n ((uv_1 + (0.02 * time)) * 6.0)\\\\n )) + (0.2 * tmpvar_5));\\\\n vec4 tmpvar_6;\\\\n tmpvar_6 = texture (sampler_clouds2, (uv_orig + tmpvar_5));\\\\n vec4 tmpvar_7;\\\\n tmpvar_7.w = 1.0;\\\\n tmpvar_7.xyz = (((-2.0 * \\\\n (0.1 * texture (sampler_main, uv_1))\\\\n .xyz) + (\\\\n clamp (((0.004 * q26) / sqrt(dot (uv1_2, uv1_2))), 0.0, 1.0)\\\\n * vec3(1.0, 0.8, 0.4))) + (0.4 * (tmpvar_6.xyz + \\\\n (dot (tmpvar_6.xyz, vec3(0.32, 0.49, 0.29)) - 0.7)\\\\n )));\\\\n ret = tmpvar_7.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/martin - mandelbox explorer - high speed demo version.json\":\n/*!**************************************************************************************!*\\\n !*** ./presets/converted/martin - mandelbox explorer - high speed demo version.json ***!\n \\**************************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":3,\\\"gammaadj\\\":1.98,\\\"decay\\\":0.5,\\\"echo_zoom\\\":1,\\\"echo_alpha\\\":0.5,\\\"echo_orient\\\":3,\\\"wave_mode\\\":7,\\\"additivewave\\\":1,\\\"wave_thick\\\":1,\\\"modwavealphabyvolume\\\":1,\\\"wave_brighten\\\":0,\\\"wrap\\\":0,\\\"darken\\\":1,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":0.958,\\\"wave_smoothing\\\":0.45,\\\"modwavealphastart\\\":0,\\\"modwavealphaend\\\":1.32,\\\"warpanimspeed\\\":1.459,\\\"warpscale\\\":2.007,\\\"zoom\\\":0.9999,\\\"warp\\\":0.01,\\\"sx\\\":0.9999,\\\"wave_r\\\":0,\\\"wave_g\\\":0,\\\"wave_b\\\":0,\\\"ob_size\\\":0.05,\\\"ob_g\\\":0.1,\\\"ob_b\\\":1,\\\"ob_a\\\":1,\\\"ib_size\\\":0,\\\"ib_r\\\":0,\\\"ib_g\\\":0,\\\"ib_b\\\":0,\\\"mv_x\\\":25.6,\\\"mv_y\\\":9.6,\\\"mv_l\\\":0,\\\"mv_r\\\":0.5,\\\"mv_g\\\":0.5,\\\"mv_b\\\":0.5,\\\"mv_a\\\":0,\\\"b1ed\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"textured\\\":1,\\\"x\\\":0.09,\\\"y\\\":0.9,\\\"rad\\\":0.22437,\\\"tex_zoom\\\":1.76002,\\\"r2\\\":1,\\\"g2\\\":0,\\\"a2\\\":0.6,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"additive\\\":1,\\\"x\\\":0.26,\\\"y\\\":0.2,\\\"rad\\\":0.39317,\\\"tex_zoom\\\":6.19589,\\\"r\\\":0,\\\"g\\\":0.55,\\\"b\\\":0.5,\\\"g2\\\":0.4,\\\"b2\\\":0.4,\\\"a2\\\":0.07,\\\"border_r\\\":0.3,\\\"border_g\\\":0.7,\\\"border_b\\\":0.8,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sides\\\":44,\\\"additive\\\":1,\\\"x\\\":0.503,\\\"rad\\\":0.03886,\\\"tex_zoom\\\":0.60986,\\\"g\\\":0.1,\\\"a\\\":0.9,\\\"r2\\\":1,\\\"b2\\\":1,\\\"border_r\\\":0.5,\\\"border_g\\\":0.5,\\\"border_b\\\":0.5,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"rad\\\":0.01,\\\"tex_zoom\\\":0.49981,\\\"r\\\":0,\\\"g2\\\":0,\\\"border_r\\\":0.2,\\\"border_g\\\":0.7,\\\"border_b\\\":0.5,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"samples\\\":282,\\\"sep\\\":20,\\\"usedots\\\":1,\\\"thick\\\":1,\\\"additive\\\":1,\\\"scaling\\\":3.91581,\\\"smoothing\\\":0.1,\\\"r\\\":0.2,\\\"g\\\":0.3,\\\"a\\\":0.6,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"usedots\\\":1,\\\"thick\\\":1,\\\"scaling\\\":0.89152,\\\"smoothing\\\":0.82,\\\"a\\\":0.1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"scaling\\\":0.89152,\\\"smoothing\\\":0.82,\\\"r\\\":0,\\\"g\\\":0.2,\\\"b\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"spectrum\\\":1,\\\"usedots\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"//******** INITIALIZATION *********\\\\n//---------- some global vars, do not change -------------\\\\navg = 0.01;\\\\nq7 = .25; //MyZoom\\\\nq8 = rand(2.0)-1.0; //fractal modifier\\\\n//q8 = 1; //#\\\\nq16 = 1 + rand(2); //Tele ; rather fish eye\\\\n//q16 = 1; //#\\\\nq18 = rand(0.8)+.1; //brightness balance back/front\\\\nq30 = 1; //logarithmic Z-Dist storage; unused\\\\nq31 =128;\\\\nstart = 1; travel = 0; RotZ = 0; look = 0; slow = 0; t0 = time+3; lampx = .5; lampy = .5;\\\\ncran0 = rand(1);\\\\nn = 0; loop (10000, gmegabuf(n)=0; n=n+1; );\\\\nn = 0; loop (10000, megabuf(n)=0; n=n+1; );\\\\ntrelx = 0; trely = 0; trelz = 0;\\\\nreg20 = 1; reg21 = 0; reg22 = 0; reg23 = 0; reg24 = 1; reg25 = 0; reg26 = 0; reg27 = 0; reg28 = 1;\\\\n\\\\n//Find random starting point\\\\nwhile (exec2(\\\\n ran1 = rand(800)/100; ran2 = rand(800)/100; ran3 = rand(800)/100;\\\\n PosX = rand(5)-2; PosY = rand(5)-2; PosZ = rand(5)-2;\\\\n\\\\n// PosX = 3.3; PosY = 2; PosZ = -2; ran1 = 0; ran2 = 0; ran3 = 0; //#\\\\n\\\\n c1 = cos(ran1); c2 = cos(ran2); c3 = cos(ran3);\\\\n s1 = sin(ran1); s2 = sin(ran2); s3 = sin(ran3);\\\\n\\\\n reg20 = c2*c1; reg21 = c2*s1; reg22 = -s2;\\\\n reg23 = s3*s2*c1 - c3*s1; reg24 = s3*s2*s1 + c3*c1; reg25 = s3*c2;\\\\n reg26 = c3*s2*c1 + s3*s1; reg27 = c3*s2*s1 - s3*c1; reg28 = c3*c2;\\\\n\\\\n //***********BOT*************\\\\n //Coord. Trans. must exactly match def in warp S. !!!!\\\\n dist = 0.001;\\\\n while (exec2(\\\\n uvx = reg26*dist/q7; uvy = reg27*dist/q7; uvz = reg28*dist/q7;\\\\n uvx += PosX; uvy += PosY; uvz += PosZ;\\\\n uvx = 8.0*((uvx/8+30.5 - int(uvx/8+30.5))-.5);\\\\n uvy = 8.0*((uvy/8+30.5 - int(uvy/8+30.5))-.5);\\\\n uvz = 8.0*((uvz/8+30.5 - int(uvz/8+30.5))-.5);\\\\n uvx0 = uvx+q8; uvy0 = uvy+q8; uvz0 = uvz+q8;\\\\n loop (7+1,\\\\n uvx = if (uvx > 1, 2-uvx, if(uvx < -1, -2-uvx, uvx));\\\\n uvy = if (uvy > 1, 2-uvy, if(uvy < -1, -2-uvy, uvy));\\\\n uvz = if (uvz > 1, 2-uvz, if(uvz < -1, -2-uvz, uvz));\\\\n slen = uvx*uvx + uvy*uvy + uvz*uvz;\\\\n uvx = if (slen < 0.25, uvx*4, if (slen < 1, uvx/slen, uvx)) *2.6 + uvx0;\\\\n uvy = if (slen < 0.25, uvy*4, if (slen < 1, uvy/slen, uvy)) *2.6 + uvy0;\\\\n uvz = if (slen < 0.25, uvz*4, if (slen < 1, uvz/slen, uvz)) *2.6 + uvz0;\\\\n );\\\\n len = sqrt(uvx*uvx + uvy*uvy + uvz*uvz);\\\\n dist *= 1.05;\\\\n ,(dist < 0.6)*(len > 30)));\\\\n,(dist < .06))); //end while\\\",\\\"frame_eqs_eel\\\":\\\"fps_ = .0 * fps_ + 1*if(fps<=25,fps,25+.5*(fps-25));\\\\ndec_s = 1-.06*30/fps_;\\\\nbeat = (time > t0+3); t0 = if(beat, time, t0);\\\\n\\\\nspeed = min(0.2,dist_-.02) * (1+2*avg) *(1-slow*.0)*.7/q7; //#\\\\nds = ds * dec_s + (1-dec_s)*speed*.25/fps_;\\\\nRotZ = if (RotZ==0,beat*(rand(100)<20*travel)*(rand(10)/10-.3),\\\\n bnot(beat*(rand(100)<30))*RotZ);\\\\nslow = if (bnot(slow), beat*(rand(1000*avg)<6), bnot(beat*(rand(100)<50)));\\\\nlook = if (bnot(look), beat*(rand(1000*speed)<12), bnot(beat*(rand(100)<50)));\\\\n\\\\n//Lamp View\\\\nlx = if (beat,rand(150)/200+.15,lx);\\\\nly = if (beat,rand(150)/200+.15,ly);\\\\nlampx = lampx * dec_s + (1-dec_s)*if (look,lx,0.5);\\\\nlampy = lampy * dec_s + (1-dec_s)*if (look,ly,0.5);\\\\nq1 = lampx; q2 = lampy;\\\\n\\\\n//Position\\\\nDirX= reg26; DirY= reg27; DirZ = reg28;\\\\nPosX = PosX + ds*DirX ; PosY = PosY + ds*DirY; PosZ = PosZ + ds*DirZ;\\\\nq4 = PosX; q5 = PosY; q6 = PosZ;\\\\n\\\\nangchg = (.2-dist_)*(dist_ < .2)*2;\\\\ntravel = if (angchg > 0,0,travel+ds);\\\\nv1 = v1 * dec_s + (1-dec_s)* RotZ * ds;\\\\nv2 = v2 *dec_s + (1-dec_s)*angchg *xslope/fps_;\\\\nv3 = v3 *dec_s + (1-dec_s)*(angchg *yslope/fps_ + 2*v1*sin(time*.1));\\\\n//v2 = .008;\\\\n//push old RotMat\\\\nreg30 =reg20; reg31 =reg21; reg32 =reg22;\\\\nreg33 =reg23; reg34 =reg24; reg35 =reg25;\\\\nreg36 =reg26; reg37 =reg27; reg38 =reg28;\\\\n\\\\nn = 0; avg = 0;\\\\nloop (5,\\\\n n = n+1;\\\\n //new Rot. Mat for infinitesimal angles\\\\n ran1 = rand(100)/100;\\\\n ran2 = rand(100)/200-.25;\\\\n tx = cos(n*1.57+ran2) * (n <= 4)*ran1; ty = sin(n*1.57+ran2) * (n <= 4)*ran1;\\\\n c1 = cos(v1); c2 = cos(v2+ty); c3 = cos(v3+tx);\\\\n s1 = sin(v1); s2 = sin(v2+ty); s3 = sin(v3+tx);\\\\n reg10 = c2*c1; reg11 = c2*s1; reg12 = -s2;\\\\n reg13 = s3*s2*c1 - c3*s1; reg14 = s3*s2*s1 + c3*c1; reg15 = s3*c2;\\\\n reg16 = c3*s2*c1 + s3*s1; reg17 = c3*s2*s1 - s3*c1; reg18 = c3*c2;\\\\n\\\\n //pop old RotMat\\\\n reg20 =reg30; reg21 =reg31; reg22 =reg32;\\\\n reg23 =reg33; reg24 =reg34; reg25 =reg35;\\\\n reg26 =reg36; reg27 =reg37; reg28 =reg38;\\\\n\\\\n //Multiply new RotMat by old one\\\\n q20 = reg10*reg20 + reg11*reg23 + reg12*reg26;\\\\n q21 = reg10*reg21 + reg11*reg24 + reg12*reg27;\\\\n q22 = reg10*reg22 + reg11*reg25 + reg12*reg28;\\\\n q23 = reg13*reg20 + reg14*reg23 + reg15*reg26;\\\\n q24 = reg13*reg21 + reg14*reg24 + reg15*reg27;\\\\n q25 = reg13*reg22 + reg14*reg25 + reg15*reg28;\\\\n q26 = reg16*reg20 + reg17*reg23 + reg18*reg26;\\\\n q27 = reg16*reg21 + reg17*reg24 + reg18*reg27;\\\\n q28 = reg16*reg22 + reg17*reg25 + reg18*reg28;\\\\n\\\\n reg20 =q20; reg21 =q21; reg22 =q22;\\\\n reg23 =q23; reg24 =q24; reg25 =q25;\\\\n reg26 =q26; reg27 =q27; reg28 =q28;\\\\n\\\\n //***********BOT*************\\\\n //Coord. Trans. must exactly match def in warp S. !!!!\\\\n dist = 0.002;\\\\n while (exec2(\\\\n uvx = reg26*dist/q7; uvy = reg27*dist/q7; uvz = reg28*dist/q7;\\\\n uvx += PosX; uvy += PosY; uvz += PosZ;\\\\n uvx = 8.0*((uvx/8+30.5 - int(uvx/8+30.5))-.5);\\\\n uvy = 8.0*((uvy/8+30.5 - int(uvy/8+30.5))-.5);\\\\n uvz = 8.0*((uvz/8+30.5 - int(uvz/8+30.5))-.5);\\\\n uvx0 = uvx+q8; uvy0 = uvy+q8; uvz0 = uvz+q8;\\\\n loop (7+1,\\\\n uvx = if (uvx > 1, 2-uvx, if(uvx < -1, -2-uvx, uvx));\\\\n uvy = if (uvy > 1, 2-uvy, if(uvy < -1, -2-uvy, uvy));\\\\n uvz = if (uvz > 1, 2-uvz, if(uvz < -1, -2-uvz, uvz));\\\\n slen = uvx*uvx + uvy*uvy + uvz*uvz;\\\\n uvx = if (slen < 0.25, uvx*4, if (slen < 1, uvx/slen, uvx)) *2.6 + uvx0;\\\\n uvy = if (slen < 0.25, uvy*4, if (slen < 1, uvy/slen, uvy)) *2.6 + uvy0;\\\\n uvz = if (slen < 0.25, uvz*4, if (slen < 1, uvz/slen, uvz)) *2.6 + uvz0;\\\\n );\\\\n len = sqrt(uvx*uvx + uvy*uvy + uvz*uvz);\\\\n dist *= 1.1;\\\\n ,(dist < 0.6)*(len > 30)));\\\\n megabuf(n) = megabuf(n)*dec_s + (1-dec_s)*dist; //stores the 4 trial points\\\\n avg = avg+abs(megabuf(n)/5);\\\\n); //end loop 5\\\\n\\\\nn = 0; avg = 0; loop (5, n=n+1; avg = avg+abs(megabuf(n)/5));\\\\n\\\\nxslope = min(max(2/avg*(megabuf(1)-megabuf(3)),-3),3);\\\\nyslope = min(max(2/avg*(megabuf(4)-megabuf(2)),-3),3);\\\\nmonitor = avg;\\\\ndist_ = dist_*dec_s + (1-dec_s)*dist;\\\\n\\\\nq10 = ds*q7; //compensation of lin. movement in GetDist and zoom uv\\\\nq14 = 1*abs(ds) + 2*(abs(v1) + abs(v2) + abs(v3)) + 1.0/255 + start*.05;\\\\nq19 = .6 + .4*sin(time*.02+cran0*6); //brightness backgd\\\\nstart = start * .9;\\\\nq11 = v1; q12 = v2; q13 = v3;\\\\n//forward comp. of Rotation\\\\nmonitor = q16;\\\",\\\"pixel_eqs_eel\\\":\\\"warp = 0.0; zoom = 1; dx = -q12/q16*(1+0*pow(x-.5,2)); dy = q13/q16*(1+0*pow(y-.5,2)); rot =q11;\\\",\\\"warp\\\":\\\"float sustain;\\\\nfloat xlat_mutabledist;\\\\nfloat xlat_mutablestruc;\\\\nvec2 xlat_mutableuv1;\\\\nvec3 xlat_mutableuv2;\\\\n shader_body { \\\\n mat3 tmpvar_1;\\\\n tmpvar_1[uint(0)].x = q20;\\\\n tmpvar_1[uint(0)].y = q23;\\\\n tmpvar_1[uint(0)].z = q26;\\\\n tmpvar_1[1u].x = q21;\\\\n tmpvar_1[1u].y = q24;\\\\n tmpvar_1[1u].z = q27;\\\\n tmpvar_1[2u].x = q22;\\\\n tmpvar_1[2u].y = q25;\\\\n tmpvar_1[2u].z = q28;\\\\n vec3 tmpvar_2;\\\\n tmpvar_2.x = q4;\\\\n tmpvar_2.y = q5;\\\\n tmpvar_2.z = q6;\\\\n sustain = (0.98 - q14);\\\\n vec2 uv_3;\\\\n vec3 ret_4;\\\\n vec2 tmpvar_5;\\\\n tmpvar_5 = (uv - 0.5);\\\\n xlat_mutableuv1 = ((tmpvar_5 * aspect.xy) * q16);\\\\n vec4 tmpvar_6;\\\\n tmpvar_6 = texture (sampler_pc_main, uv);\\\\n uv_3 = ((tmpvar_5 * (1.0 - \\\\n (q10 / (1.0 - ((tmpvar_6.z + \\\\n (0.003921569 * tmpvar_6.y)\\\\n ) + (q10 * 0.7))))\\\\n )) + 0.5);\\\\n vec4 tmpvar_7;\\\\n tmpvar_7 = fract((8.0 * texture (sampler_noise_lq, (uv_3 + rand_frame.yz))));\\\\n xlat_mutabledist = tmpvar_7.x;\\\\n if ((tmpvar_7.y > 0.2)) {\\\\n vec3 tmpvar_8;\\\\n tmpvar_8 = (tmpvar_7.xyz - vec3(0.4, 0.5, 0.5));\\\\n vec2 uvi_9;\\\\n uvi_9 = ((tmpvar_8.zy * 0.003) + uv_3);\\\\n vec2 pix_10;\\\\n vec4 nb2_11;\\\\n vec4 nb_12;\\\\n vec2 x_13;\\\\n x_13 = (uvi_9 - 0.5);\\\\n pix_10 = (texsize.zw * (1.0 + (\\\\n sqrt(dot (x_13, x_13))\\\\n * 8.0)));\\\\n float tmpvar_14;\\\\n tmpvar_14 = (q10 * 0.7);\\\\n vec4 tmpvar_15;\\\\n tmpvar_15 = texture (sampler_pc_main, (uvi_9 - pix_10));\\\\n nb_12.x = (1.0 - ((tmpvar_15.z + \\\\n (0.003921569 * tmpvar_15.y)\\\\n ) + tmpvar_14));\\\\n vec4 tmpvar_16;\\\\n tmpvar_16 = texture (sampler_pc_main, (uvi_9 + (pix_10 * vec2(1.0, -1.0))));\\\\n nb_12.y = (1.0 - ((tmpvar_16.z + \\\\n (0.003921569 * tmpvar_16.y)\\\\n ) + tmpvar_14));\\\\n vec4 tmpvar_17;\\\\n tmpvar_17 = texture (sampler_pc_main, (uvi_9 + pix_10));\\\\n nb_12.z = (1.0 - ((tmpvar_17.z + \\\\n (0.003921569 * tmpvar_17.y)\\\\n ) + tmpvar_14));\\\\n vec4 tmpvar_18;\\\\n tmpvar_18 = texture (sampler_pc_main, (uvi_9 + (pix_10 * vec2(-1.0, 1.0))));\\\\n nb_12.w = (1.0 - ((tmpvar_18.z + \\\\n (0.003921569 * tmpvar_18.y)\\\\n ) + tmpvar_14));\\\\n vec4 tmpvar_19;\\\\n tmpvar_19 = texture (sampler_pc_main, (uvi_9 + (pix_10 * vec2(0.0, -1.0))));\\\\n nb2_11.x = (1.0 - ((tmpvar_19.z + \\\\n (0.003921569 * tmpvar_19.y)\\\\n ) + tmpvar_14));\\\\n vec4 tmpvar_20;\\\\n tmpvar_20 = texture (sampler_pc_main, (uvi_9 + (pix_10 * vec2(1.0, 0.0))));\\\\n nb2_11.y = (1.0 - ((tmpvar_20.z + \\\\n (0.003921569 * tmpvar_20.y)\\\\n ) + tmpvar_14));\\\\n vec4 tmpvar_21;\\\\n tmpvar_21 = texture (sampler_pc_main, (uvi_9 + (pix_10 * vec2(0.0, 1.0))));\\\\n nb2_11.z = (1.0 - ((tmpvar_21.z + \\\\n (0.003921569 * tmpvar_21.y)\\\\n ) + tmpvar_14));\\\\n vec4 tmpvar_22;\\\\n tmpvar_22 = texture (sampler_pc_main, (uvi_9 + (pix_10 * vec2(-1.0, 0.0))));\\\\n nb2_11.w = (1.0 - ((tmpvar_22.z + \\\\n (0.003921569 * tmpvar_22.y)\\\\n ) + tmpvar_14));\\\\n vec4 tmpvar_23;\\\\n tmpvar_23 = min (nb_12, nb2_11);\\\\n nb_12.zw = tmpvar_23.zw;\\\\n nb_12.xy = min (tmpvar_23.xy, tmpvar_23.zw);\\\\n xlat_mutabledist = (min (nb_12.x, nb_12.y) + ((0.008 * tmpvar_8.x) * abs(tmpvar_8.y)));\\\\n };\\\\n vec4 tmpvar_24;\\\\n tmpvar_24 = texture (sampler_pc_main, uv_3);\\\\n float tmpvar_25;\\\\n tmpvar_25 = min (xlat_mutabledist, (1.0 - (\\\\n (tmpvar_24.z + (0.003921569 * tmpvar_24.y))\\\\n + \\\\n (q10 * 0.7)\\\\n )));\\\\n xlat_mutabledist = tmpvar_25;\\\\n float tmpvar_26;\\\\n tmpvar_26 = (tmpvar_25 + pow (tmpvar_25, 3.0));\\\\n vec3 tmpvar_27;\\\\n tmpvar_27.xy = (xlat_mutableuv1 * tmpvar_26);\\\\n tmpvar_27.z = tmpvar_26;\\\\n xlat_mutableuv2 = (((tmpvar_27 / q7) * tmpvar_1) + tmpvar_2);\\\\n xlat_mutableuv2 = ((fract(\\\\n ((xlat_mutableuv2 / 8.0) + 0.5)\\\\n ) - 0.5) * 8.0);\\\\n float li_28;\\\\n vec3 zz0_29;\\\\n vec3 zz_30;\\\\n zz0_29 = (xlat_mutableuv2 + q8);\\\\n li_28 = 0.0;\\\\n zz_30 = ((2.0 * clamp (xlat_mutableuv2, vec3(-1.0, -1.0, -1.0), vec3(1.0, 1.0, 1.0))) - xlat_mutableuv2);\\\\n float tmpvar_31;\\\\n tmpvar_31 = dot (zz_30, zz_30);\\\\n if ((tmpvar_31 <= 0.25)) {\\\\n zz_30 = (zz_30 * 4.0);\\\\n li_28 = 24.0;\\\\n } else {\\\\n if ((tmpvar_31 <= 1.0)) {\\\\n zz_30 = (zz_30 / tmpvar_31);\\\\n };\\\\n };\\\\n zz_30 = ((2.6 * zz_30) + zz0_29);\\\\n zz_30 = ((2.0 * clamp (zz_30, vec3(-1.0, -1.0, -1.0), vec3(1.0, 1.0, 1.0))) - zz_30);\\\\n float tmpvar_32;\\\\n tmpvar_32 = dot (zz_30, zz_30);\\\\n if ((tmpvar_32 <= 0.25)) {\\\\n zz_30 = (zz_30 * 4.0);\\\\n li_28 = 24.0;\\\\n } else {\\\\n if ((tmpvar_32 <= 1.0)) {\\\\n zz_30 = (zz_30 / tmpvar_32);\\\\n };\\\\n };\\\\n zz_30 = ((2.6 * zz_30) + zz0_29);\\\\n zz_30 = ((2.0 * clamp (zz_30, vec3(-1.0, -1.0, -1.0), vec3(1.0, 1.0, 1.0))) - zz_30);\\\\n float tmpvar_33;\\\\n tmpvar_33 = dot (zz_30, zz_30);\\\\n if ((tmpvar_33 <= 0.25)) {\\\\n zz_30 = (zz_30 * 4.0);\\\\n li_28 = 24.0;\\\\n } else {\\\\n if ((tmpvar_33 <= 1.0)) {\\\\n zz_30 = (zz_30 / tmpvar_33);\\\\n };\\\\n };\\\\n zz_30 = ((2.6 * zz_30) + zz0_29);\\\\n zz_30 = ((2.0 * clamp (zz_30, vec3(-1.0, -1.0, -1.0), vec3(1.0, 1.0, 1.0))) - zz_30);\\\\n float tmpvar_34;\\\\n tmpvar_34 = dot (zz_30, zz_30);\\\\n if ((tmpvar_34 <= 0.25)) {\\\\n zz_30 = (zz_30 * 4.0);\\\\n li_28 = 24.0;\\\\n } else {\\\\n if ((tmpvar_34 <= 1.0)) {\\\\n zz_30 = (zz_30 / tmpvar_34);\\\\n };\\\\n };\\\\n zz_30 = ((2.6 * zz_30) + zz0_29);\\\\n zz_30 = ((2.0 * clamp (zz_30, vec3(-1.0, -1.0, -1.0), vec3(1.0, 1.0, 1.0))) - zz_30);\\\\n float tmpvar_35;\\\\n tmpvar_35 = dot (zz_30, zz_30);\\\\n if ((tmpvar_35 <= 0.25)) {\\\\n zz_30 = (zz_30 * 4.0);\\\\n li_28 = 24.0;\\\\n } else {\\\\n if ((tmpvar_35 <= 1.0)) {\\\\n zz_30 = (zz_30 / tmpvar_35);\\\\n };\\\\n };\\\\n zz_30 = ((2.6 * zz_30) + zz0_29);\\\\n zz_30 = ((2.0 * clamp (zz_30, vec3(-1.0, -1.0, -1.0), vec3(1.0, 1.0, 1.0))) - zz_30);\\\\n float tmpvar_36;\\\\n tmpvar_36 = dot (zz_30, zz_30);\\\\n if ((tmpvar_36 <= 0.25)) {\\\\n zz_30 = (zz_30 * 4.0);\\\\n li_28 = 24.0;\\\\n } else {\\\\n if ((tmpvar_36 <= 1.0)) {\\\\n zz_30 = (zz_30 / tmpvar_36);\\\\n };\\\\n };\\\\n zz_30 = ((2.6 * zz_30) + zz0_29);\\\\n zz_30 = ((2.0 * clamp (zz_30, vec3(-1.0, -1.0, -1.0), vec3(1.0, 1.0, 1.0))) - zz_30);\\\\n float tmpvar_37;\\\\n tmpvar_37 = dot (zz_30, zz_30);\\\\n if ((tmpvar_37 <= 0.25)) {\\\\n zz_30 = (zz_30 * 4.0);\\\\n li_28 = 24.0;\\\\n } else {\\\\n if ((tmpvar_37 <= 1.0)) {\\\\n zz_30 = (zz_30 / tmpvar_37);\\\\n };\\\\n };\\\\n zz_30 = ((2.6 * zz_30) + zz0_29);\\\\n zz_30 = ((2.0 * clamp (zz_30, vec3(-1.0, -1.0, -1.0), vec3(1.0, 1.0, 1.0))) - zz_30);\\\\n float tmpvar_38;\\\\n tmpvar_38 = dot (zz_30, zz_30);\\\\n if ((tmpvar_38 <= 0.25)) {\\\\n zz_30 = (zz_30 * 4.0);\\\\n li_28 = 24.0;\\\\n } else {\\\\n if ((tmpvar_38 <= 1.0)) {\\\\n zz_30 = (zz_30 / tmpvar_38);\\\\n };\\\\n };\\\\n zz_30 = ((2.6 * zz_30) + zz0_29);\\\\n vec4 tmpvar_39;\\\\n tmpvar_39.xyz = zz_30;\\\\n tmpvar_39.w = li_28;\\\\n float tmpvar_40;\\\\n tmpvar_40 = sqrt(dot (zz_30, zz_30));\\\\n xlat_mutablestruc = (sqrt(dot (tmpvar_39.xyw, tmpvar_39.xyw)) / 24.0);\\\\n vec4 tmpvar_41;\\\\n tmpvar_41 = texture (sampler_pc_main, uv_3);\\\\n float tmpvar_42;\\\\n float tmpvar_43;\\\\n tmpvar_43 = (q10 * 0.7);\\\\n tmpvar_42 = ((log(\\\\n (1.0 + (tmpvar_40 / 24.0))\\\\n ) * 0.02) * (1.0 - (1.0 - \\\\n ((tmpvar_41.z + (0.003921569 * tmpvar_41.y)) + tmpvar_43)\\\\n )));\\\\n float tmpvar_44;\\\\n vec4 tmpvar_45;\\\\n tmpvar_45 = texture (sampler_pc_main, uv_3);\\\\n tmpvar_44 = (1.0 - ((tmpvar_45.z + \\\\n (0.003921569 * tmpvar_45.y)\\\\n ) + tmpvar_43));\\\\n if ((((tmpvar_25 <= tmpvar_44) && (tmpvar_40 < 24.0)) && (tmpvar_25 > 0.005))) {\\\\n ret_4.x = (((1.0 - sustain) * xlat_mutablestruc) + (sustain * mix (texture (sampler_main, uv_3).xyz, \\\\n ((texture (sampler_blur1, uv_3).xyz * scale1) + bias1)\\\\n , vec3(\\\\n (q14 * 4.0)\\\\n )).x));\\\\n float x_46;\\\\n x_46 = ((1.0 - tmpvar_25) * 255.0);\\\\n float ip_47;\\\\n ip_47 = float(int(x_46));\\\\n vec2 tmpvar_48;\\\\n tmpvar_48.x = (x_46 - ip_47);\\\\n tmpvar_48.y = (ip_47 / 255.0);\\\\n ret_4.yz = tmpvar_48;\\\\n } else {\\\\n vec3 tmpvar_49;\\\\n tmpvar_49.y = 0.0;\\\\n tmpvar_49.x = sustain;\\\\n tmpvar_49.z = (1.0 - tmpvar_42);\\\\n vec3 tmpvar_50;\\\\n tmpvar_50.xy = vec2(0.003921569, 0.0);\\\\n tmpvar_50.z = (q14 / 6.0);\\\\n ret_4 = ((texture (sampler_fc_main, uv_3).xyz * tmpvar_49) - tmpvar_50);\\\\n };\\\\n vec4 tmpvar_51;\\\\n tmpvar_51.w = 1.0;\\\\n tmpvar_51.xyz = ret_4;\\\\n ret = tmpvar_51.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n vec3 tmpvar_1;\\\\n tmpvar_1.x = q4;\\\\n tmpvar_1.y = q5;\\\\n tmpvar_1.z = q6;\\\\n mat3 tmpvar_2;\\\\n tmpvar_2[uint(0)].x = q20;\\\\n tmpvar_2[uint(0)].y = q23;\\\\n tmpvar_2[uint(0)].z = q26;\\\\n tmpvar_2[1u].x = q21;\\\\n tmpvar_2[1u].y = q24;\\\\n tmpvar_2[1u].z = q27;\\\\n tmpvar_2[2u].x = q22;\\\\n tmpvar_2[2u].y = q25;\\\\n tmpvar_2[2u].z = q28;\\\\n vec2 tmpvar_3;\\\\n tmpvar_3.x = q1;\\\\n tmpvar_3.y = q2;\\\\n vec2 uv_4;\\\\n vec3 ret_5;\\\\n uv_4 = (((uv - 0.5) * 0.9) + 0.5);\\\\n vec3 tmpvar_6;\\\\n tmpvar_6.xy = ((uv_4 - 0.5) * min ((1.0 - texture (sampler_main, uv_4).z), (1.0 - \\\\n ((texture (sampler_blur2, uv_4).xyz * scale2) + bias2)\\\\n .z)));\\\\n tmpvar_6.z = min ((1.0 - texture (sampler_main, uv_4).z), (1.0 - (\\\\n (texture (sampler_blur2, uv_4).xyz * scale2)\\\\n + bias2).z));\\\\n float tmpvar_7;\\\\n tmpvar_7 = clamp ((abs(\\\\n ((1.0 - ((texture (sampler_blur2, uv_4).xyz * scale2) + bias2).z) - clamp ((1.0 - (\\\\n (texture (sampler_blur2, tmpvar_3).xyz * scale2)\\\\n + bias2).z), 0.1, 0.4))\\\\n ) + 0.2), 0.0, 1.0);\\\\n float tmpvar_8;\\\\n tmpvar_8 = clamp (((1.0 - \\\\n exp(-(((texture (sampler_blur1, uv_4).xyz * scale1) + bias1).x))\\\\n ) - 0.2), 0.0, 1.0);\\\\n ret_5 = ((mix (texture (sampler_main, uv_4).xyz, \\\\n ((texture (sampler_blur1, uv_4).xyz * scale1) + bias1)\\\\n , vec3(tmpvar_7)).x * (0.2 + \\\\n ((1.0 - tmpvar_7) * (1.0 - min ((1.0 - texture (sampler_main, uv_4).z), (1.0 - \\\\n ((texture (sampler_blur2, uv_4).xyz * scale2) + bias2)\\\\n .z))))\\\\n )) * (1.0 + (0.5 * \\\\n sin((((tmpvar_6 / q7) * tmpvar_2) + tmpvar_1))\\\\n )));\\\\n vec3 tmpvar_9;\\\\n tmpvar_9.xy = vec2(0.0, 1.0);\\\\n tmpvar_9.z = (tmpvar_8 * 3.0);\\\\n ret_5 = (mix (ret_5, tmpvar_9, vec3(tmpvar_8)) + ((\\\\n pow ((1.0 - mix (texture (sampler_main, uv_4).xyz, (\\\\n (texture (sampler_blur1, uv_4).xyz * scale1)\\\\n + bias1), vec3(0.8, 0.8, 0.8)).z), 3.0)\\\\n * \\\\n (0.5 + (0.5 * slow_roam_cos))\\\\n ) * q19).xyz);\\\\n ret_5 = (1.0 - exp((-2.0 * ret_5)));\\\\n vec4 tmpvar_10;\\\\n tmpvar_10.w = 1.0;\\\\n tmpvar_10.xyz = ret_5;\\\\n ret = tmpvar_10.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/martin - mucus cervix.json\":\n/*!******************************************************!*\\\n !*** ./presets/converted/martin - mucus cervix.json ***!\n \\******************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":0,\\\"gammaadj\\\":1.980001,\\\"decay\\\":0.5,\\\"echo_zoom\\\":0.999998,\\\"echo_alpha\\\":0.5,\\\"echo_orient\\\":3,\\\"wave_mode\\\":7,\\\"additivewave\\\":1,\\\"wave_thick\\\":1,\\\"modwavealphabyvolume\\\":1,\\\"wave_brighten\\\":0,\\\"darken\\\":1,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":0.958178,\\\"wave_smoothing\\\":0.45,\\\"modwavealphastart\\\":0,\\\"modwavealphaend\\\":1.32,\\\"warpanimspeed\\\":1.4595,\\\"warpscale\\\":2.0067,\\\"zoom\\\":0.9999,\\\"warp\\\":0.01,\\\"sx\\\":0.9999,\\\"ob_r\\\":0.3999,\\\"ob_a\\\":0.2,\\\"ib_size\\\":0,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":1.85,\\\"mv_r\\\":0.4999,\\\"mv_g\\\":0.4999,\\\"mv_b\\\":0.4999,\\\"mv_a\\\":0,\\\"b1ed\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"rad\\\":0.048958,\\\"tex_ang\\\":1.00531,\\\"tex_zoom\\\":1.531168,\\\"r\\\":0.5,\\\"g\\\":1,\\\"b\\\":0.9,\\\"r2\\\":0.83,\\\"g2\\\":0.93,\\\"b2\\\":0.8,\\\"a2\\\":1,\\\"border_b\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\\ntrel = time/3;\\\\n\\\\nx = .5+sin(trel*2);\\\\ny = .5+cos(trel*1.3);\\\\n\\\\n\\\\n\\\\ncent = sqrt((x-.5)*(x-.5)+(y-.5)*(y-.5));\\\\n\\\\nrad = .1*cent;\\\\na = .8;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":100,\\\"additive\\\":1,\\\"x\\\":0.26,\\\"y\\\":0.2,\\\"rad\\\":0.393173,\\\"tex_zoom\\\":0.9355,\\\"r\\\":0,\\\"g\\\":0.55,\\\"b\\\":0.5,\\\"g2\\\":0.4,\\\"b2\\\":0.4,\\\"a2\\\":0.07,\\\"border_r\\\":0.3,\\\"border_g\\\":0.7,\\\"border_b\\\":0.8,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"trig = q24;\\\\n\\\\n\\\\nx0 = x0*bnot(trig) + trig*(.5+ rand(100)/200); \\\\ny0 = y0*bnot(trig) + trig*(.5+ rand(100)/200); \\\\n\\\\n\\\\nx0 = x0 + .1*q1*(3+q26)/fps;\\\\ny0 = y0 + .1*q2*(3+q26)/fps;\\\\n\\\\nx0 = x0 - int(x0);\\\\ny0 = y0 - int(y0);\\\\n\\\\ntex_ang = time;\\\\ntex_zoom = q1;\\\\nang = time/100*q2;\\\\nx = x0; y = y0;\\\\nrad0 = rad0*bnot(trig) + trig*(.04+rand(100)/1000);\\\\nrad = rad0;\\\\n\\\\n\\\\nr0 = bnot(trig)*r0 + trig * rand(10)/10;\\\\ng0 = bnot(trig)*g0 + trig * rand(10)/10;\\\\nb0 = bnot(trig)*b0 + trig * rand(10)/10;\\\\n\\\\nr = r0; b = b0; g = g0;\\\\nr2 = 0; b2 = 0; g2 = 0;\\\\na= 1; a2 = .3; \\\"},{\\\"baseVals\\\":{\\\"sides\\\":44,\\\"additive\\\":1,\\\"x\\\":0.503,\\\"rad\\\":0.038857,\\\"tex_zoom\\\":0.609857,\\\"g\\\":0.1,\\\"a\\\":0.9,\\\"r2\\\":1,\\\"b2\\\":1,\\\"border_r\\\":0.5,\\\"border_g\\\":0.5,\\\"border_b\\\":0.5,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x = rand(50)/50;\\\\ny = .5 - 0*rand(15)/200;\\\\n\\\\nr = .4;\\\\ng = .6;\\\\nb = 1;\\\\nr2 = r;\\\\ng2 = g;\\\\nb2 = b;\\\\n\\\\na = min(q21/2 ,.9);\\\\nrad = a * (.1+abs(x-.5))/2 ;\\\"},{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"rad\\\":0.01,\\\"tex_zoom\\\":0.499805,\\\"r\\\":0,\\\"g2\\\":0,\\\"border_r\\\":0.2,\\\"border_g\\\":0.7,\\\"border_b\\\":0.5,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"rad = q2+.02\\\\n;\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"samples\\\":282,\\\"sep\\\":20,\\\"thick\\\":1,\\\"additive\\\":1,\\\"scaling\\\":3.915805,\\\"smoothing\\\":0.1,\\\"r\\\":0.2,\\\"g\\\":0.3,\\\"a\\\":0.6,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t1 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt2 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt3 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt4 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt5 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt6 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt7 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt8 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\n\\\",\\\"frame_eqs_eel\\\":\\\"t2 = t2 + bass_att;\\\",\\\"point_eqs_eel\\\":\\\"\\\\nx = sample;\\\\ny = value1 * rand(50)/100 * abs(sample-.5)+ .49;\\\\n\\\\na = q26/4 * (.2 + abs(sample-.5)); \\\"},{\\\"baseVals\\\":{\\\"usedots\\\":1,\\\"thick\\\":1,\\\"scaling\\\":0.891519,\\\"smoothing\\\":0.82,\\\"a\\\":0.1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"xi = rand(100)/100;\\\\nyi = rand(100)/100;\\\\n\\\\nx = xi; y = yi;\\\\n\\\\na = q21/15;\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"scaling\\\":0.891519,\\\"smoothing\\\":0.82,\\\"r\\\":0,\\\"g\\\":0.2,\\\"b\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t1 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt2 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt3 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt4 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt5 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt6 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt7 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt8 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\n\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"spectrum\\\":1,\\\"usedots\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"dec_med = pow (0.9, 30/fps);\\\\ndec_slow = pow (0.99, 30/fps);\\\\nbeat = max (max (bass, mid), treb); \\\\navg = avg*dec_slow + beat*(1-dec_slow);\\\\nis_beat = above(beat, .2+avg+peak) * above (time, t0+.2);\\\\nt0 = is_beat*time + (1-is_beat)*t0;\\\\npeak = is_beat * beat + (1-is_beat)*peak*dec_med;\\\\nindex = (index + is_beat) %8;\\\\nindex2 = (index2 + is_beat*bnot(index))%2;\\\\nindex3 = (index3 + is_beat*bnot(index)*bnot(index2))%3;\\\\n\\\\nmonitor = index4;\\\\n\\\\nq20 = avg;\\\\nq21 = beat;\\\\nq22 = peak;\\\\nq23 = index;\\\\nq24 = is_beat;\\\\nq26 = bass + mid + treb;\\\\nq11 = min(q22,3);\\\\n\\\\n//k1 = is_beat*bnot(index)*bnot(index2);\\\\n\\\\nk1 = is_beat*equal(index,0);\\\\np1 = k1*(p1+1) + (1-k1)*p1;\\\\np2 = dec_med * p2+ (1-dec_med)*p1;\\\\nrott = p2 * 3.14159265359/2;\\\\n\\\\nq27 = 8-index;\\\\nq28 = index2;\\\\n\\\\nq1 = cos(rott);\\\\nq2 = sin(rott);\\\\nq3 = -q2;\\\\nq4 = q1;\\\\n\\\\nzoom = 1.0 + .02*q1;\\\\nrot = .01*q2;\\\\ndx = .0*index;\\\\n\\\\nwave_a = 0;\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\"float xlat_mutabledx;\\\\nfloat xlat_mutabledy;\\\\nvec2 xlat_mutableuv2;\\\\nvec2 xlat_mutablezz;\\\\n shader_body { \\\\n vec2 uv_1;\\\\n vec3 crisp_2;\\\\n vec2 tmpvar_3;\\\\n tmpvar_3.y = 0.0;\\\\n tmpvar_3.x = texsize.w;\\\\n vec2 tmpvar_4;\\\\n tmpvar_4.x = 0.0;\\\\n tmpvar_4.y = texsize.z;\\\\n xlat_mutablezz = ((uv * texsize.xy) * 0.01);\\\\n vec2 tmpvar_5;\\\\n tmpvar_5.x = (cos((xlat_mutablezz.y * q1)) * sin(-(xlat_mutablezz.y)));\\\\n tmpvar_5.y = (sin(xlat_mutablezz.x) * cos((xlat_mutablezz.y * q2)));\\\\n uv_1 = (uv - ((tmpvar_5 * texsize.zw) * (8.0 + \\\\n (6.0 * q11)\\\\n )));\\\\n xlat_mutableuv2 = (((uv_1 / 2.0) * q27) / 4.0);\\\\n xlat_mutabledx = dot ((texture (sampler_main, (xlat_mutableuv2 + tmpvar_3)).xyz - texture (sampler_main, (xlat_mutableuv2 - tmpvar_3)).xyz), vec3(0.32, 0.49, 0.29));\\\\n xlat_mutabledy = dot ((texture (sampler_main, (xlat_mutableuv2 + tmpvar_4)).xyz - texture (sampler_main, (xlat_mutableuv2 - tmpvar_4)).xyz), vec3(0.32, 0.49, 0.29));\\\\n float tmpvar_6;\\\\n tmpvar_6 = (0.15 + (0.1 * q28));\\\\n vec2 tmpvar_7;\\\\n tmpvar_7 = (xlat_mutableuv2 + (time / 100.0));\\\\n xlat_mutabledx = (xlat_mutabledx + (tmpvar_6 * (texture (sampler_noise_hq, tmpvar_7).x - 0.5)));\\\\n xlat_mutabledy = (xlat_mutabledy + (tmpvar_6 * (texture (sampler_noise_hq, tmpvar_7).y - 0.5)));\\\\n vec2 tmpvar_8;\\\\n tmpvar_8.x = xlat_mutabledx;\\\\n tmpvar_8.y = xlat_mutabledy;\\\\n xlat_mutablezz = tmpvar_8;\\\\n crisp_2 = (texture (sampler_main, (uv_1 + (tmpvar_8 * 0.04))).xyz + texture (sampler_main, uv_1).xyz);\\\\n crisp_2 = (crisp_2 * 0.5);\\\\n crisp_2 = (crisp_2 + ((0.05 * \\\\n (0.9 + (0.1 * roam_cos))\\\\n .xyz) - (\\\\n sqrt(dot (tmpvar_8, tmpvar_8))\\\\n * 0.3)));\\\\n vec4 tmpvar_9;\\\\n tmpvar_9.w = 1.0;\\\\n tmpvar_9.xyz = ((crisp_2 * 0.97) - 0.015);\\\\n ret = tmpvar_9.xyz;\\\\n }\\\",\\\"comp\\\":\\\"vec2 xlat_mutabledz;\\\\nvec3 xlat_mutableneu;\\\\nvec3 xlat_mutableret1;\\\\nvec2 xlat_mutableuv3;\\\\n shader_body { \\\\n vec2 uv2_1;\\\\n vec2 tmpvar_2;\\\\n tmpvar_2.y = 0.0;\\\\n tmpvar_2.x = texsize.z;\\\\n vec2 tmpvar_3;\\\\n tmpvar_3.x = 0.0;\\\\n tmpvar_3.y = texsize.w;\\\\n xlat_mutabledz.x = dot ((texture (sampler_main, (uv + tmpvar_2)).xyz - texture (sampler_main, (uv - tmpvar_2)).xyz), vec3(0.32, 0.49, 0.29));\\\\n xlat_mutabledz.y = dot ((texture (sampler_main, (uv + tmpvar_3)).xyz - texture (sampler_main, (uv - tmpvar_3)).xyz), vec3(0.32, 0.49, 0.29));\\\\n uv2_1 = (uv - 0.5);\\\\n xlat_mutableuv3 = ((0.2 * uv2_1) + 0.5);\\\\n float tmpvar_4;\\\\n tmpvar_4 = (time / 2.0);\\\\n xlat_mutableuv3 = ((0.2 * cos(\\\\n ((42.0 * fract(xlat_mutableuv3)) + tmpvar_4)\\\\n )) + (99.0 * xlat_mutabledz));\\\\n float tmpvar_5;\\\\n tmpvar_5 = clamp ((0.01 / sqrt(\\\\n dot (xlat_mutableuv3, xlat_mutableuv3)\\\\n )), 0.0, 1.0);\\\\n xlat_mutableneu = ((0.1 * vec3(tmpvar_5)) + (0.9 * dot (vec3(tmpvar_5), vec3(0.32, 0.49, 0.29))));\\\\n xlat_mutableret1 = max (vec3(0.0, 0.0, 0.0), (xlat_mutableneu * 1.252262));\\\\n xlat_mutableuv3 = ((0.2 * uv2_1) + 0.5);\\\\n xlat_mutableuv3 = ((0.2 * cos(\\\\n ((42.0 * fract(xlat_mutableuv3)) + tmpvar_4)\\\\n )) + (99.0 * xlat_mutabledz));\\\\n float tmpvar_6;\\\\n tmpvar_6 = clamp ((0.01 / sqrt(\\\\n dot (xlat_mutableuv3, xlat_mutableuv3)\\\\n )), 0.0, 1.0);\\\\n xlat_mutableneu = ((0.1 * vec3(tmpvar_6)) + (0.9 * dot (vec3(tmpvar_6), vec3(0.32, 0.49, 0.29))));\\\\n xlat_mutableret1 = max (xlat_mutableret1, (xlat_mutableneu * 1.252262));\\\\n vec4 tmpvar_7;\\\\n tmpvar_7.w = 1.0;\\\\n tmpvar_7.xyz = (xlat_mutableret1 + clamp ((\\\\n (16.0 * ((0.5 * texture (sampler_main, (uv + \\\\n (0.1 * xlat_mutabledz)\\\\n )).xyz) + 0.01))\\\\n * \\\\n (0.1 + xlat_mutableret1)\\\\n ), 0.0, 1.0));\\\\n ret = tmpvar_7.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/martin - reflections on black tiles.json\":\n/*!********************************************************************!*\\\n !*** ./presets/converted/martin - reflections on black tiles.json ***!\n \\********************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":5,\\\"gammaadj\\\":1.980001,\\\"decay\\\":0.5,\\\"echo_zoom\\\":0.999998,\\\"echo_alpha\\\":0.5,\\\"echo_orient\\\":3,\\\"modwavealphabyvolume\\\":1,\\\"darken\\\":1,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":10.437056,\\\"wave_smoothing\\\":0.45,\\\"wave_mystery\\\":0.08,\\\"modwavealphastart\\\":0,\\\"modwavealphaend\\\":1.32,\\\"warpanimspeed\\\":1.4595,\\\"warpscale\\\":2.0067,\\\"zoom\\\":0.9999,\\\"warp\\\":0.01,\\\"sx\\\":0.9999,\\\"wave_r\\\":0,\\\"wave_g\\\":0.99,\\\"ob_size\\\":0,\\\"ob_r\\\":1,\\\"ob_g\\\":1,\\\"ob_b\\\":1,\\\"ib_size\\\":0,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":1.85,\\\"mv_r\\\":0.4999,\\\"mv_g\\\":0.4999,\\\"mv_b\\\":0.4999,\\\"mv_a\\\":0,\\\"b1ed\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"rad\\\":0.048958,\\\"tex_ang\\\":1.00531,\\\"tex_zoom\\\":1.531168,\\\"r\\\":0.5,\\\"g\\\":1,\\\"b\\\":0.9,\\\"r2\\\":0.83,\\\"g2\\\":0.93,\\\"b2\\\":0.8,\\\"a2\\\":1,\\\"border_b\\\":0,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\\ntrel = time/2+q20;\\\\n\\\\nx = .5+sin(trel*2);\\\\ny = .5+cos(trel*1.3 +q28/3);\\\\n\\\\na = q26/4+.2; \\\\n//a = 1;\\\"},{\\\"baseVals\\\":{\\\"thickoutline\\\":1,\\\"x\\\":0.4,\\\"rad\\\":2.366958,\\\"tex_ang\\\":3.455753,\\\"tex_zoom\\\":0.993053,\\\"r\\\":0.5,\\\"b\\\":1,\\\"a\\\":0.2,\\\"r2\\\":0.7,\\\"g2\\\":0.4,\\\"border_r\\\":0.5,\\\"border_g\\\":0.5,\\\"border_b\\\":0.5,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"a2 =0;a = 0;\\\\na = q24/2;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"x\\\":0.503,\\\"rad\\\":0.038857,\\\"tex_zoom\\\":0.609857,\\\"g\\\":0.1,\\\"a\\\":0.9,\\\"r2\\\":1,\\\"b2\\\":1,\\\"border_r\\\":0.5,\\\"border_g\\\":0.5,\\\"border_b\\\":0.5,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x = rand(10)/10;\\\\ny = rand(10)/10;\\\\n\\\\nr = rand(4)/3;\\\\ng = rand(4)/3;\\\\nb = rand(4)/3;\\\\n\\\\n\\\\nis_beat = above(time, t0+.03);\\\\nt0 = is_beat*time + (1-is_beat)*t0;\\\\n\\\\n \\\\na = min(q21/2 ,.9) * is_beat;\\\\nrad = a*a/3 ;\\\"},{\\\"baseVals\\\":{\\\"sides\\\":63,\\\"textured\\\":1,\\\"y\\\":1,\\\"rad\\\":0.548217,\\\"tex_zoom\\\":0.499805,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"border_r\\\":0.5,\\\"border_g\\\":0.5,\\\"border_b\\\":0.5,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sep\\\":120,\\\"additive\\\":1,\\\"scaling\\\":0.891519,\\\"smoothing\\\":0.82,\\\"a\\\":0.6},\\\"init_eqs_eel\\\":\\\"t1 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt2 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt3 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt4 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt5 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt6 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt7 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt8 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\n\\\",\\\"frame_eqs_eel\\\":\\\"t2 = t2 + bass_att;\\\",\\\"point_eqs_eel\\\":\\\"k1 = (sample*100)%8;\\\\nk2 = bnot (k1);\\\\nxi = value1*k2 + xi*(1-k2);\\\\nyi = value2*(1-k2) + yi*k2;\\\\n\\\\ndx = dx*.99 + xi;\\\\ndy = dy*.99 + yi;\\\\n\\\\nx = .5 + xi/2;\\\\ny = .5 + yi/2;\\\\n\\\\na = q22/8; \\\\na = min(a,.2);\\\"},{\\\"baseVals\\\":{\\\"usedots\\\":1,\\\"thick\\\":1,\\\"scaling\\\":0.891519,\\\"smoothing\\\":0.82,\\\"a\\\":0.1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t1 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt2 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt3 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt4 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt5 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt6 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt7 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt8 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\n\\\",\\\"frame_eqs_eel\\\":\\\"tm = time*.1;\\\\nt1 = t1*sin(tm*t4) + (1-t1)*sin(tm*t7);\\\\nt2 = t2*sin(tm*t5) + (1-t2)*sin(tm*t8);\\\\nt3 = t3*sin(tm*t6) + (1-t3)*sin(tm*1);\\\\n\\\\ntic = min(time - tin,1);\\\\ntin = time;\\\\n\\\\ntva = (tic*q1*.5);\\\\ntvb = (tic*q2*.5);\\\\ntvc = (tic*q3*.5);\\\\n\\\\nq1 = tva;\\\\nq2 = tvb;\\\\nq3 = tvc;\\\\n\\\\nsz = .5;\\\\nlen = q4;\\\\nt4 = len;\\\",\\\"point_eqs_eel\\\":\\\"xi = rand(100)/100;\\\\nyi = rand(100)/100;\\\\n\\\\nx = xi; y = yi;\\\\n\\\\na = q21/15;\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"scaling\\\":0.891519,\\\"smoothing\\\":0.82,\\\"r\\\":0,\\\"g\\\":0.2,\\\"b\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t1 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt2 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt3 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt4 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt5 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt6 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt7 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\nt8 = 1 + (rand(101)*.01 - rand(101)*.01)*.3;\\\\n\\\",\\\"frame_eqs_eel\\\":\\\"tm = time*.1;\\\\nt1 = t1*sin(tm*t4) + (1-t1)*sin(tm*t7);\\\\nt2 = t2*sin(tm*t5) + (1-t2)*sin(tm*t8);\\\\nt3 = t3*sin(tm*t6) + (1-t3)*sin(tm*1);\\\\n\\\\ntic = min(time - tin,1);\\\\ntin = time;\\\\n\\\\ntva = (tic*q1*.5);\\\\ntvb = (tic*q2*.5);\\\\ntvc = (tic*q3*.5);\\\\n\\\\nq1 = tva;\\\\nq2 = tvb;\\\\nq3 = tvc;\\\\n\\\\nsz = .5;\\\\nlen = 1;\\\\nt4 = len;\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"spectrum\\\":1,\\\"usedots\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"fade = .5;\\\",\\\"frame_eqs_eel\\\":\\\"dec_med = pow (0.9, 30/fps);\\\\ndec_slow = pow (0.99, 30/fps);\\\\nbeat = max (max (bass, mid), treb); \\\\navg = avg*dec_slow + beat*(1-dec_slow);\\\\nis_beat = above(beat, .5+avg+peak) * above (time, t0+.2);\\\\nt0 = is_beat*time + (1-is_beat)*t0;\\\\npeak = is_beat * beat + (1-is_beat)*peak*dec_med;\\\\nindex = (index + is_beat) %8;\\\\n\\\\nq20 = avg;\\\\nq21 = beat;\\\\nq22 = peak;\\\\nq23 = index;\\\\nq24 = is_beat;\\\\nq26 = bass + mid + treb;\\\\n\\\\nk1 = is_beat*equal(index,0);\\\\np1 = k1*(p1+1) + (1-k1)*p1;\\\\np2 = dec_med * p2+ (1-dec_med)*p1;\\\\nrott = p2 * 3.14159265358/2;\\\\nq27 = index + 1;\\\\n\\\\nq1 = cos(rott);\\\\nq2 = sin(rott);\\\\nq3 = -q2;\\\\nq4 = q1;\\\\n\\\\nzoom = 1.0;\\\\nrot = -0.00 * index;\\\\n\\\\nfade = fade*dec_med + pow(0.996, 30/fps) * (1-dec_med);\\\\nq32 = fade;\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\" shader_body { \\\\n vec2 zz_1;\\\\n mat2 tmpvar_2;\\\\n tmpvar_2[uint(0)] = _qa.xy;\\\\n tmpvar_2[1u] = _qa.zw;\\\\n zz_1 = (((\\\\n (uv - vec2(0.5, 0.5))\\\\n * texsize.xy) * (0.015 * q27)) * tmpvar_2);\\\\n vec4 tmpvar_3;\\\\n tmpvar_3.w = 1.0;\\\\n tmpvar_3.xyz = (((q32 * texture (sampler_main, \\\\n (uv + ((clamp (\\\\n (sin(zz_1) / cos(zz_1))\\\\n , vec2(-20.0, -20.0), vec2(20.0, 20.0)) * texsize.zw) * 8.0))\\\\n ).xyz) + (\\\\n (0.03 * texture (sampler_noise_lq, ((uv * 0.3) + (0.01 * rand_frame).xy)))\\\\n .xyz * \\\\n (1.0 - ((texture (sampler_blur1, uv).xyz * scale1) + bias1))\\\\n )) - 0.02);\\\\n ret = tmpvar_3.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n vec4 tmpvar_1;\\\\n tmpvar_1 = texture (sampler_main, uv);\\\\n vec4 tmpvar_2;\\\\n tmpvar_2.w = 1.0;\\\\n tmpvar_2.xyz = ((tmpvar_1.xyz + clamp (\\\\n (3.0 * (((texture (sampler_blur1, \\\\n (uv - (0.01 * tmpvar_1.xyz).xy)\\\\n ).xyz * scale1) + bias1) - vec3(0.1, 0.1, 0.2)))\\\\n , 0.0, 1.0)) * 1.3);\\\\n ret = tmpvar_2.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/martin - stormy sea (2010 update).json\":\n/*!******************************************************************!*\\\n !*** ./presets/converted/martin - stormy sea (2010 update).json ***!\n \\******************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":4,\\\"gammaadj\\\":1.98,\\\"decay\\\":0.5,\\\"echo_zoom\\\":0.952,\\\"echo_alpha\\\":0.5,\\\"echo_orient\\\":3,\\\"wave_mode\\\":6,\\\"additivewave\\\":1,\\\"wave_thick\\\":1,\\\"modwavealphabyvolume\\\":1,\\\"wave_brighten\\\":0,\\\"darken\\\":1,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":2.103,\\\"wave_smoothing\\\":0.54,\\\"wave_mystery\\\":0.38,\\\"modwavealphastart\\\":0.81,\\\"modwavealphaend\\\":1.4,\\\"warpanimspeed\\\":1.459,\\\"warpscale\\\":2.007,\\\"zoom\\\":0.9999,\\\"warp\\\":0.01,\\\"sx\\\":0.9999,\\\"wave_r\\\":0,\\\"wave_g\\\":0,\\\"wave_b\\\":0,\\\"ob_size\\\":0.015,\\\"ob_b\\\":1,\\\"ib_size\\\":0.26,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":1.85,\\\"mv_r\\\":0.5,\\\"mv_g\\\":0.5,\\\"mv_b\\\":0.5,\\\"mv_a\\\":0,\\\"b1ed\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":16,\\\"thickoutline\\\":1,\\\"textured\\\":1,\\\"num_inst\\\":3,\\\"x\\\":0.73,\\\"rad\\\":0.29466,\\\"tex_zoom\\\":1.87511,\\\"r\\\":0.7,\\\"g\\\":0.7,\\\"b\\\":1,\\\"g2\\\":0,\\\"border_b\\\":0,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"trig = q25;\\\\na = trig*.8; a2 = 0;\\\\n\\\\nx0 = x0 *bnot(trig) + trig*rand(100)/100;\\\\ny0 = y0 *bnot(trig) + trig*rand(100)/100;\\\\ntex_ang = rand(20);\\\\nrad = .1+rand(10)/8;\\\\n\\\\nx = x0; y = y0;\\\\nr = .7+.3*sin(time/12);\\\\nb = .7+.3*sin(time/15);\\\\ng = .7+.3*sin(time/8);\\\\nr2 = r; b2 = b; g2 = g;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":36,\\\"thickoutline\\\":1,\\\"textured\\\":1,\\\"num_inst\\\":4,\\\"x\\\":0.3,\\\"rad\\\":0.05429,\\\"ang\\\":1.25664,\\\"tex_ang\\\":0.37699,\\\"tex_zoom\\\":1.02841,\\\"g\\\":0.7,\\\"b\\\":0.5,\\\"r2\\\":1,\\\"g2\\\":0,\\\"border_g\\\":0.59,\\\"border_b\\\":0,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x = q31; y = q32;\\\\nrad = .06;\\\\ntex_ang = time;\\\\na = q30;\\\"},{\\\"baseVals\\\":{\\\"sides\\\":63,\\\"x\\\":0.123,\\\"y\\\":0,\\\"rad\\\":0.27319,\\\"tex_zoom\\\":0.49981,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"border_r\\\":0.5,\\\"border_g\\\":0.5,\\\"border_b\\\":0.5,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sides\\\":24,\\\"textured\\\":1,\\\"x\\\":0.7,\\\"y\\\":0.51,\\\"rad\\\":0.19869,\\\"tex_ang\\\":1.00531,\\\"tex_zoom\\\":0.49981,\\\"g\\\":1,\\\"b\\\":0.99,\\\"a\\\":0,\\\"g2\\\":0,\\\"a2\\\":1,\\\"border_r\\\":0,\\\"border_g\\\":0.5,\\\"border_b\\\":0.5,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"additive\\\":1,\\\"scaling\\\":0.04505,\\\"smoothing\\\":0,\\\"a\\\":0.1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"samples\\\":100,\\\"usedots\\\":1,\\\"thick\\\":1,\\\"scaling\\\":0.89152,\\\"smoothing\\\":0,\\\"a\\\":0.1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"scaling\\\":0.89152,\\\"smoothing\\\":0.82,\\\"a\\\":0.1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"spectrum\\\":1,\\\"usedots\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"t0a = time; t0 = time+.5;\\\\nspb_ = .5; ;\\\\nvolb = .5; volx = .5;\\\\nvol_= 1; index = 0; mov1 = 0;\\\\nsdev = .1; wamp_ = .1;\\\",\\\"frame_eqs_eel\\\":\\\"dec_med = pow (0.8, 30/fps); dec_slow = pow (0.95, 30/fps);\\\\nvol = (bass+med+treb)/1.5; vol_ = vol_*dec_slow + (1-dec_slow)*vol;\\\\n\\\\nis_beat = above(vol, vol_+2*peak) * above (time, t0+spb_*.45);\\\\nt0a = if(is_beat,t0,t0a); t0 = if(is_beat,time,t0);\\\\npeak = if(is_beat,vol,peak*dec_med);\\\\nindex = (index + is_beat) %128;\\\\n\\\\nspb = min(t0-t0a + .01,2);\\\\nspb_ = if(is_beat,spb_ *.9 +.1*spb, spb_);\\\\n\\\\n\\\\nq20 = vol_;\\\\nq21 = above(vol,2.7*vol_);\\\\nq22 = max(0,peak-.0)+.01;\\\\nhpeak = hpeak*dec_med + (1-dec_med)*q21;\\\\nq23 = hpeak * (1+rand(8));\\\\nq24 = is_beat;\\\\nq25 = q22*(1+rand(8))/8;\\\\n\\\\nmindev = min(min(abs(spb-spb_),abs(spb*2-spb_)),abs(spb-spb_*2));\\\\nsdev = if(is_beat,sdev * .8 + .2*pow(mindev+.02,2),sdev);\\\\n\\\\nspeed = 1/fps/spb_;\\\\ntrel = trel + speed;\\\\nq10 = trel;\\\\n\\\\nwamp = min(.001/sdev,.15);\\\\nwamp_ = wamp_*dec_slow + (1-dec_slow)*wamp;\\\\nq11 = sin(trel/2)*wamp_;\\\\nq12 = wamp_/2;\\\\n\\\\nrota = 2*wamp_*sin(trel/3);\\\\n//rota = .2*sin(wamp_*32);\\\\nq5 = cos(rota);\\\\nq6 = sin(rota);\\\\nq7 = -q6;\\\\nq8 = q5;\\\\n\\\\nq15 = -sin(trel*.5)*.05;\\\\nq16 = cos(trel)*wamp_/2;\\\\n\\\\nq19 = .1*sin(trel/12);\\\\n\\\\n//ODD PLANET MOVEMENT\\\\ntrig1 = bnot(vis)*bnot(rand(100*fps));\\\\nvis = if (trig1,1,vis*below(mov1,1));\\\\nq30 = vis;\\\\nmov1 = if (vis,mov1+2*speed/fps,-1);\\\\ndir = if(trig1,rand(100),dir); \\\\nq31 = .5+.5*cos(dir)*mov1;\\\\nq32 = .5+.5*sin(dir)*mov1;\\\\n\\\\nq29 = (2+sin(time/17)); //reflection water\\\\n\\\\nmonitor = wamp;\\\",\\\"pixel_eqs_eel\\\":\\\"zoom = 1+.02*rad*q20;\\\\ndy = -.00;\\\\nwarp =.1; dx = .0;\\\",\\\"warp\\\":\\\"mat2 ofs;\\\\nvec2 xlat_mutableuv2;\\\\nfloat xlat_mutablezv;\\\\n shader_body { \\\\n mat2 tmpvar_1;\\\\n tmpvar_1[uint(0)].x = texsize.z;\\\\n tmpvar_1[uint(0)].y = 0.0;\\\\n tmpvar_1[1u].x = 0.0;\\\\n tmpvar_1[1u].y = texsize.w;\\\\n ofs = (tmpvar_1 * 4.0);\\\\n vec2 tmpvar_2;\\\\n tmpvar_2.x = ((uv.x - 0.5) + q19);\\\\n tmpvar_2.y = (uv.y - 0.5);\\\\n vec2 v_3;\\\\n v_3.x = ofs[0].x;\\\\n v_3.y = ofs[1].x;\\\\n vec2 v_4;\\\\n v_4.x = ofs[0].x;\\\\n v_4.y = ofs[1].x;\\\\n vec2 v_5;\\\\n v_5.x = ofs[0].y;\\\\n v_5.y = ofs[1].y;\\\\n vec2 v_6;\\\\n v_6.x = ofs[0].y;\\\\n v_6.y = ofs[1].y;\\\\n vec2 tmpvar_7;\\\\n tmpvar_7.x = (texture (sampler_main, (uv + v_3)) - texture (sampler_main, (uv - v_4))).z;\\\\n tmpvar_7.y = (texture (sampler_main, (uv + v_5)) - texture (sampler_main, (uv - v_6))).z;\\\\n xlat_mutablezv = (time * 0.08);\\\\n vec2 tmpvar_8;\\\\n tmpvar_8.x = (0.02 * time);\\\\n tmpvar_8.y = (-0.05 * time);\\\\n xlat_mutableuv2 = ((3.0 * tmpvar_2) + tmpvar_8);\\\\n vec3 tmpvar_9;\\\\n tmpvar_9.xy = xlat_mutableuv2;\\\\n tmpvar_9.z = xlat_mutablezv;\\\\n vec3 tmpvar_10;\\\\n tmpvar_10.xy = (xlat_mutableuv2 * vec2(2.0, 2.0));\\\\n tmpvar_10.z = (xlat_mutablezv * 2.0);\\\\n vec3 tmpvar_11;\\\\n tmpvar_11.xy = (xlat_mutableuv2 * vec2(4.0, 4.0));\\\\n tmpvar_11.z = (xlat_mutablezv * 3.0);\\\\n vec3 tmpvar_12;\\\\n tmpvar_12.xy = (xlat_mutableuv2 * vec2(8.0, 8.0));\\\\n tmpvar_12.z = (xlat_mutablezv * 7.0);\\\\n xlat_mutableuv2 = (tmpvar_2 + ((\\\\n (((texture (sampler_noisevol_hq, tmpvar_9).z + (texture (sampler_noisevol_hq, tmpvar_10).z / 2.0)) + (texture (sampler_noisevol_hq, tmpvar_11).z / 4.0)) + (texture (sampler_noisevol_hq, tmpvar_12).z / 8.0))\\\\n - 1.0) * 0.1));\\\\n vec4 tmpvar_13;\\\\n tmpvar_13.w = 1.0;\\\\n tmpvar_13.xyz = (((\\\\n (((0.2 + (\\\\n (((1.0 + bass_att) * 0.01) / sqrt(dot (xlat_mutableuv2, xlat_mutableuv2)))\\\\n * \\\\n (1.0 + normalize(slow_roam_cos))\\\\n .xyz)) + ((rand_preset.z - 0.5) * xlat_mutableuv2.y)) * 0.1)\\\\n / 2.0) + (texture (sampler_main, \\\\n (uv - (0.02 * tmpvar_7))\\\\n ).xyz * 0.9)) - 0.01);\\\\n ret = tmpvar_13.xyz;\\\\n }\\\",\\\"comp\\\":\\\"float xlat_mutablerain;\\\\nvec3 xlat_mutableret1;\\\\nvec2 xlat_mutablers;\\\\nvec2 xlat_mutablers0;\\\\nvec2 xlat_mutableuv1;\\\\nfloat xlat_mutablewater;\\\\nfloat xlat_mutablez;\\\\n shader_body { \\\\n vec2 uv_1;\\\\n mat2 tmpvar_2;\\\\n tmpvar_2[uint(0)] = _qb.xy;\\\\n tmpvar_2[1u] = _qb.zw;\\\\n vec2 tmpvar_3;\\\\n tmpvar_3.x = q15;\\\\n tmpvar_3.y = q16;\\\\n uv_1 = (((\\\\n (((uv - 0.5) * tmpvar_2) * 0.7)\\\\n * aspect.xy) + 0.5) + tmpvar_3);\\\\n vec2 tmpvar_4;\\\\n tmpvar_4.x = 0.5;\\\\n tmpvar_4.y = ((q11 + 0.6) + (q12 * (\\\\n sin(((uv_1.x * 6.0) + q10))\\\\n * \\\\n cos(((uv_1.y * 8.0) + (time * 0.6)))\\\\n )));\\\\n vec2 tmpvar_5;\\\\n tmpvar_5.x = (uv_1.x * 4.0);\\\\n tmpvar_5.y = uv_1.y;\\\\n vec2 tmpvar_6;\\\\n tmpvar_6.x = (uv_1.x * 4.0);\\\\n tmpvar_6.y = uv_1.y;\\\\n xlat_mutablerain = (texture (sampler_noise_lq, ((tmpvar_5 * 0.2) - time)).x + texture (sampler_noise_lq, ((tmpvar_6 * 0.5) - time)).x);\\\\n float tmpvar_7;\\\\n tmpvar_7 = (time / 4.0);\\\\n xlat_mutablerain = (xlat_mutablerain * clamp ((\\\\n (q20 / 2.0)\\\\n - \\\\n abs(sin(((uv.x / 4.0) - tmpvar_7)))\\\\n ), 0.0, 1.0));\\\\n xlat_mutableuv1 = ((uv_1 - tmpvar_4) + (xlat_mutablerain * 0.01));\\\\n vec3 tmpvar_8;\\\\n tmpvar_8.x = xlat_mutableuv1.y;\\\\n tmpvar_8.y = (xlat_mutableuv1.x * 2.0);\\\\n tmpvar_8.z = (time * 0.2);\\\\n xlat_mutableuv1 = (xlat_mutableuv1 + ((texture (sampler_noisevol_hq, tmpvar_8) * \\\\n (0.5 - abs(xlat_mutableuv1.y))\\\\n ).x * 0.05));\\\\n float tmpvar_9;\\\\n tmpvar_9 = clamp ((128.0 * xlat_mutableuv1.y), 0.0, 1.0);\\\\n xlat_mutablez = (0.4 / xlat_mutableuv1.y);\\\\n xlat_mutablers0.x = (xlat_mutableuv1.x * xlat_mutablez);\\\\n xlat_mutablers0.y = xlat_mutablez;\\\\n vec2 tmpvar_10;\\\\n tmpvar_10.x = (xlat_mutablers0.x + tmpvar_7);\\\\n tmpvar_10.y = (xlat_mutablez + (time * 4.0));\\\\n xlat_mutablers = (tmpvar_10 * tmpvar_9);\\\\n xlat_mutablewater = (texture (sampler_noise_hq, xlat_mutablers) + texture (sampler_noise_hq, ((xlat_mutablers / 4.0) - (time / 8.0)))).x;\\\\n xlat_mutablewater = (xlat_mutablewater - 1.0);\\\\n vec2 tmpvar_11;\\\\n tmpvar_11.x = (xlat_mutableuv1.x + 0.5);\\\\n tmpvar_11.y = abs((0.5 - xlat_mutableuv1.y));\\\\n xlat_mutableret1 = (((texture (sampler_main, uv_1).xyz * \\\\n (1.0 - tmpvar_9)\\\\n ) + (\\\\n ((texture (sampler_main, (tmpvar_11 - (0.2 * xlat_mutablewater))).xyz * tmpvar_9) * pow ((1.0/(xlat_mutablez)), 0.2))\\\\n * \\\\n (2.0 - rand_preset.y)\\\\n )) + ((\\\\n (((0.25 + rand_preset.y) * (1.0 + (rand_preset.x * xlat_mutablewater))) * tmpvar_9)\\\\n / xlat_mutablez) * vec3(0.0, 0.1, 0.1)));\\\\n xlat_mutableret1 = (xlat_mutableret1 + (0.06 * xlat_mutablerain));\\\\n vec4 tmpvar_12;\\\\n tmpvar_12.w = 1.0;\\\\n tmpvar_12.xyz = (1.0 - exp((\\\\n (-(pow (xlat_mutableret1, vec3(1.5, 1.5, 1.5))) * 8.0)\\\\n * \\\\n (1.0 + (q23 * 4.0))\\\\n )));\\\\n ret = tmpvar_12.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/martin - witchcraft reloaded.json\":\n/*!*************************************************************!*\\\n !*** ./presets/converted/martin - witchcraft reloaded.json ***!\n \\*************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":3,\\\"gammaadj\\\":1.98,\\\"decay\\\":0.5,\\\"echo_zoom\\\":1,\\\"echo_alpha\\\":0.5,\\\"echo_orient\\\":3,\\\"wave_mode\\\":6,\\\"wave_thick\\\":1,\\\"modwavealphabyvolume\\\":1,\\\"wave_brighten\\\":0,\\\"darken\\\":1,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":0.527,\\\"wave_smoothing\\\":0.09,\\\"modwavealphastart\\\":0,\\\"modwavealphaend\\\":1.32,\\\"warpanimspeed\\\":1.459,\\\"warpscale\\\":2.007,\\\"zoom\\\":0.9999,\\\"warp\\\":0.01,\\\"sx\\\":0.9999,\\\"wave_r\\\":0.8,\\\"wave_g\\\":0.49,\\\"ob_a\\\":1,\\\"ib_size\\\":0.26,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":1.85,\\\"mv_r\\\":0.5,\\\"mv_g\\\":0.5,\\\"mv_b\\\":0.5,\\\"mv_a\\\":0,\\\"b2x\\\":0.7,\\\"b1ed\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":12,\\\"num_inst\\\":1024,\\\"rad\\\":0.03632,\\\"tex_ang\\\":1.00531,\\\"tex_zoom\\\":1.53117,\\\"b\\\":1,\\\"a\\\":0,\\\"g2\\\":0,\\\"border_b\\\":0,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"fov = reg03;\\\\nn = instance*reg00;\\\\n\\\\n\\\\nx0 = gmegabuf(n);\\\\ny0 = gmegabuf(n+1);\\\\nz0 = gmegabuf(n+2)+reg02;\\\\n\\\\nx = x0/z0*fov + 0.5;\\\\ny = y0/z0*q32*fov + 0.5;\\\\n\\\\n\\\\n//k1 = reg01+t1;\\\\nr = gmegabuf(n+3);\\\\ng = gmegabuf(n+4);\\\\nb = gmegabuf(n+5);\\\\nr2 = r/2; g2 = g/2; b2 = b2/2;\\\\n\\\\na = instance/1024; a2 = a*.5;\\\\nrad = min(0.02/z0,.5) * (z0 > 0)*2.5*sqrt(a);\\\\nrad *= gmegabuf(n+6);\\\\n\\\\nt1 -= 1;\\\\n\\\"},{\\\"baseVals\\\":{\\\"num_inst\\\":128,\\\"x\\\":0.26,\\\"y\\\":0.2,\\\"rad\\\":0.39317,\\\"tex_zoom\\\":0.9355,\\\"g\\\":1,\\\"b\\\":0.6,\\\"g2\\\":0,\\\"border_r\\\":0,\\\"border_g\\\":0,\\\"border_b\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sides\\\":13,\\\"additive\\\":1,\\\"num_inst\\\":5,\\\"x\\\":0.65,\\\"y\\\":0.38,\\\"rad\\\":0.57049,\\\"tex_zoom\\\":0.73678,\\\"a\\\":0.7,\\\"g2\\\":0,\\\"border_r\\\":0.5,\\\"border_g\\\":0.5,\\\"border_b\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sides\\\":14,\\\"additive\\\":1,\\\"thickoutline\\\":1,\\\"textured\\\":1,\\\"x\\\":0.6,\\\"y\\\":0.55,\\\"rad\\\":0.97237,\\\"ang\\\":1.25664,\\\"tex_zoom\\\":0.34933,\\\"g\\\":0.6,\\\"g2\\\":0,\\\"b2\\\":1,\\\"border_r\\\":0.2,\\\"border_g\\\":0.7,\\\"border_b\\\":0.5,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"scaling\\\":2.15542,\\\"smoothing\\\":0.2,\\\"r\\\":0,\\\"a\\\":0.7},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"t1 = 1023;\\\\nt2 = 0;\\\",\\\"point_eqs_eel\\\":\\\"fov = reg03;\\\\nn = t1 * reg00;\\\\n\\\\n\\\\nx0 = gmegabuf(n);\\\\ny0 = gmegabuf(n+1);\\\\nz0 = gmegabuf(n+2)+reg02;\\\\n\\\\nx = x0/z0*fov + 0.5;\\\\ny = y0/z0*fov + 0.5;\\\\n\\\\n\\\\na= max(0,t1/1024);\\\\n\\\\nk1 = reg01+t1;\\\\nr = gmegabuf(n+3);\\\\ng = gmegabuf(n+4);\\\\nb = gmegabuf(n+5);\\\\n\\\\n\\\\na = t1/1024 * (z0 >= 0.5)/2;\\\\n\\\\nt1 -= 1;\\\\ngmegabuf (10000 +t2) = abs(value1+value2);\\\\nt2 += 1;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"scaling\\\":0.89152,\\\"smoothing\\\":0.82,\\\"r\\\":0,\\\"a\\\":0.1},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"t1 = 512;\\\",\\\"point_eqs_eel\\\":\\\"fov = reg03;\\\\nn = t1 * reg00;\\\\n\\\\n\\\\nx0 = gmegabuf(n);\\\\ny0 = gmegabuf(n+1);\\\\nz0 = gmegabuf(n+2)+reg02;\\\\n\\\\nx = x0/z0*fov + 0.5;\\\\ny = y0/z0*fov + 0.5;\\\\n\\\\nr = gmegabuf(n+3);\\\\ng = gmegabuf(n+4);\\\\nb = gmegabuf(n+5);\\\\n\\\\na= t1/1024* (z0 >= 0.5)/2;\\\\nt1 -= 1;\\\\n\\\"},{\\\"baseVals\\\":{\\\"samples\\\":32,\\\"scaling\\\":0.89152,\\\"smoothing\\\":0.82,\\\"r\\\":0,\\\"g\\\":0.2,\\\"b\\\":0.6,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"spectrum\\\":1,\\\"usedots\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"index = 0;\\\\nloop (100000,\\\\n megabuf(index) = 0;\\\\n gmegabuf(index) = 0;\\\\n index = index + 1;\\\\n);\\\\n\\\\nrecsize = 8;\\\\nreg00 = recsize;\\\\n\\\\npoints = 512*2;\\\\n\\\\nreg01 = 0; //benoetigt fuer \\\\\\\"new\\\\\\\"\\\\nzofs = 1 + rand(100)/100*2; reg02 = zofs;\\\\n\\\\nfov = .3; reg03 = fov;\\\",\\\"frame_eqs_eel\\\":\\\"dec_f = pow (0.3, 30/fps);\\\\ndec_m = pow (0.85, 30/fps);\\\\ndec_s = pow (0.95, 30/fps);\\\\nbeat = (bass + mid+ treb)-(bass_att + mid_att+ treb_att) + (bass+mid+treb);\\\\nbeat /= 3;\\\\n\\\\npeak = peak*dec_m + (1-dec_m)*pow(beat-1,1)*(beat>1)*4;\\\\nis_beat = above(beat, 1) * above (time, t0+.2);\\\\nt0 = is_beat*time + (1-is_beat)*t0;\\\\nindex = (index + is_beat) %8;\\\\nindex2 = (index2 + is_beat*bnot(index)) %8;\\\\n\\\\nif (is_beat,\\\\n ran1 = rand(100)/50-1;\\\\n ran2 = rand(100)/50-1;\\\\n ran3 = rand(100)/50-1;\\\\n,0);\\\\nran1_ = dec_m * ran1_ + (1-dec_m) * ran1;\\\\nran2_ = dec_m * ran2_ + (1-dec_m) * ran2;\\\\nran3_ = dec_m * ran3_ + (1-dec_m) * ran3;\\\\nrsum = sqrt(ran1_*ran1_ + ran2_*ran2_ + ran3_*ran3_);\\\\n\\\\nif (is_beat * (index==2),\\\\n ran4 = (rand(100)/50-1);\\\\n ran5 = (rand(100)/50-1);\\\\n ran6 = (rand(100)/50-1);\\\\n,0;);\\\\nran4_ = dec_m * ran4_ + (1-dec_m) * ran4;\\\\nran5_ = dec_m * ran5_ + (1-dec_m) * ran5;\\\\nran6_ = dec_m * ran6_ + (1-dec_m) * ran6;\\\\n\\\\nif (is_beat * (index==6),\\\\n ran7 = (rand(100)/50-1) ;\\\\n ran8 = (rand(100)/50-1) ;\\\\n ran9 = (rand(100)/50-1) ;\\\\n,0;);\\\\nran7_ = dec_m * ran7_ + (1-dec_m) * ran7;\\\\nran8_ = dec_m * ran8_ + (1-dec_m) * ran8;\\\\nran9_ = dec_m * ran9_ + (1-dec_m) * ran9;\\\\n\\\\n\\\\n//Neue Punkte #####################\\\\npk = sqrt(peak+.1);\\\\nNew = int(12*(ran4-ran5)*pk-12*(ran3-ran1)/pk); //##spielen\\\\nnew = max(min (new,20),2);\\\\nreg01 += new;\\\\n\\\\ndec = dec_m;\\\\n\\\\n//Neue Punkte oberhalb des Arrays\\\\nn = recsize*points; m = 0;\\\\ndt1 = (if (ran1>0,4*pk,4/pk))/fps*new/6;\\\\nvol = max(ran1+ran2,.2)*pk*2;\\\\nloop (new,\\\\n trel1 = trel1 + dt1;\\\\n x0 = x0 * dec + (1-dec)* (sin(trel1+ran3*6)*vol +ran1);\\\\n y0 = y0 * dec + (1-dec)* (sin(trel1+ran2*6)*vol +ran2);\\\\n z0 = z0 * dec + (1-dec)* (sin(trel1+ran1*6)*vol +ran3);\\\\n\\\\n gmegabuf(n) = x0;\\\\n gmegabuf(n+1) = y0;\\\\n gmegabuf(n+2) = z0;\\\\n//Farben\\\\n gmegabuf(n+3) = ran1_/rsum/3+.5;\\\\n gmegabuf(n+4) = ran2_/rsum/3+.5;\\\\n gmegabuf(n+5) = ran3_/rsum/3+.5;\\\\n//Groesse\\\\n gmegabuf(n+6) = gmegabuf(10000+m)*0+1;;\\\\n n += recsize; m+=1;);\\\\n\\\\n//Nach unten um \\\\\\\"new\\\\\\\" points umkopieren\\\\nn = 0;\\\\nloop (recsize*points,\\\\n gmegabuf (n) = gmegabuf(n+new*recsize) ;\\\\n n += 1;);\\\\n\\\\nxang = ran4_/fps;\\\\nyang = ran5_/fps;\\\\nzang = ran6_/fps;\\\\nddx = min(max(ddx+yang/fps,-1),1);\\\\nddy = min(max(ddy+xang/fps,-1),1);\\\\nq1 = ddx*2;\\\\nq2 = ddy*2;\\\\n//Rotieren\\\\nn = 0;\\\\nloop (points,\\\\n ox = gmegabuf (n);\\\\n oy = gmegabuf (n+1);\\\\n oz = gmegabuf (n+2);\\\\n mx = ox*cos(zang) - oy*sin(zang);\\\\n my = ox*sin(zang) + oy*cos(zang);\\\\n ox = mx; oy = my;\\\\n mx = ox*cos(yang) + oz*sin(yang);\\\\n mz = -ox*sin(yang) + oz*cos(yang);\\\\n ox = mx; oz = mz;\\\\n my = oy*cos(xang) - oz*sin(xang);\\\\n mz = oy*sin(xang) + oz*cos(xang);\\\\n oy = my; oz = mz;\\\\n gmegabuf (n) = ox;\\\\n gmegabuf (n+1) = oy;\\\\n gmegabuf (n+2) = oz;\\\\nn += recsize;);\\\\n\\\\n\\\\n//SPIEL\\\\nk1 = ran7_/fps/2;\\\\nk2 = ran8_/fps/2;\\\\nk3 = abs(ran9_)/fps;\\\\n\\\\ndec = .4 + .6*ran5_; dec2 = (1-dec);\\\\nr1 = .5+.3*ran4_;\\\\nn = 0;\\\\nloop (points-1,\\\\n m = n*recsize;\\\\n left = ((n-1+points)%points) * recsize;\\\\n right = ((n+1+points)%points) * recsize;\\\\n gmegabuf (m) = dec*gmegabuf(m) + dec2*(gmegabuf(left)*r1 +gmegabuf(right)*(1-r1) + k1) ;\\\\n gmegabuf (m+1) = dec*gmegabuf(m+1) + dec2*(gmegabuf(left+1)*r1 +gmegabuf(right+1)*(1-r1) + k2) ;\\\\n// gmegabuf (m+2) = dec*gmegabuf(m+2) + dec2*(gmegabuf(left+2)*r1 +gmegabuf(right+2)*(1-r1) + k3) ;\\\\n n += 1;\\\\n);\\\\n\\\\n\\\\nm = (frame%points);\\\\nm = max(0,int(1024 + (t0-time)*200));\\\\nn = m * recsize;\\\\nq5 = gmegabuf(n)/(gmegabuf(n+2)+zofs)*fov;\\\\nq6 = -gmegabuf(n+1)/(gmegabuf(n+2)+zofs)*fov;\\\\n\\\\nq10= sqrt(gmegabuf (n+3));\\\\nq11= sqrt(gmegabuf(n+4));\\\\nq12= sqrt(gmegabuf (n+5));\\\\n\\\\n\\\\nmonitor = m;\\\\n\\\\nq32 = aspecty;\\\",\\\"pixel_eqs_eel\\\":\\\"rot = 0; zoom = 1; warp = 0; dy = .00; dx = -.00;\\\",\\\"warp\\\":\\\" shader_body { \\\\n vec4 tmpvar_1;\\\\n tmpvar_1.w = 1.0;\\\\n tmpvar_1.xyz = vec3(0.0, 0.0, 0.0);\\\\n ret = tmpvar_1.xyz;\\\\n }\\\",\\\"comp\\\":\\\"float xlat_mutablesmask;\\\\nvec2 xlat_mutableuv1;\\\\nvec2 xlat_mutableuv2;\\\\nvec2 xlat_mutableuv3;\\\\nvec2 xlat_mutableuv4;\\\\n shader_body { \\\\n float flash_1;\\\\n float dist_2;\\\\n float stars_3;\\\\n vec3 ret_4;\\\\n xlat_mutableuv1 = ((uv - 0.5) * aspect.xy);\\\\n float tmpvar_5;\\\\n tmpvar_5 = (0.1 * time);\\\\n float tmpvar_6;\\\\n tmpvar_6 = (0.2 * rad);\\\\n dist_2 = ((1.0 - fract(\\\\n (0.3333333 + tmpvar_5)\\\\n )) * (1.0 - tmpvar_6));\\\\n vec2 tmpvar_7;\\\\n tmpvar_7.x = q1;\\\\n tmpvar_7.y = q2;\\\\n xlat_mutableuv3 = (xlat_mutableuv1 + tmpvar_7);\\\\n xlat_mutableuv4 = ((32.0 * dist_2) * xlat_mutableuv3);\\\\n xlat_mutablesmask = (texture (sampler_pw_noise_lq, (xlat_mutableuv4 / 256.0)).y - 0.9);\\\\n vec2 tmpvar_8;\\\\n tmpvar_8 = abs((fract(xlat_mutableuv4) - 0.5));\\\\n stars_3 = max (0.0, clamp ((\\\\n (1.0 - dist_2)\\\\n * \\\\n ((0.1 / sqrt(dot (tmpvar_8, tmpvar_8))) * xlat_mutablesmask)\\\\n ), 0.0, 1.0));\\\\n dist_2 = ((1.0 - fract(\\\\n (0.6666667 + tmpvar_5)\\\\n )) * (1.0 - tmpvar_6));\\\\n vec2 tmpvar_9;\\\\n tmpvar_9.x = q1;\\\\n tmpvar_9.y = q2;\\\\n xlat_mutableuv3 = (xlat_mutableuv1 + tmpvar_9);\\\\n xlat_mutableuv4 = ((32.0 * dist_2) * xlat_mutableuv3);\\\\n xlat_mutablesmask = (texture (sampler_pw_noise_lq, (xlat_mutableuv4 / 256.0)).y - 0.9);\\\\n vec2 tmpvar_10;\\\\n tmpvar_10 = abs((fract(xlat_mutableuv4) - 0.5));\\\\n stars_3 = (stars_3 + max (stars_3, clamp (\\\\n ((1.0 - dist_2) * ((0.1 / sqrt(\\\\n dot (tmpvar_10, tmpvar_10)\\\\n )) * xlat_mutablesmask))\\\\n , 0.0, 1.0)));\\\\n dist_2 = ((1.0 - fract(\\\\n (1.0 + tmpvar_5)\\\\n )) * (1.0 - tmpvar_6));\\\\n vec2 tmpvar_11;\\\\n tmpvar_11.x = q1;\\\\n tmpvar_11.y = q2;\\\\n xlat_mutableuv3 = (xlat_mutableuv1 + tmpvar_11);\\\\n xlat_mutableuv4 = ((32.0 * dist_2) * xlat_mutableuv3);\\\\n xlat_mutablesmask = (texture (sampler_pw_noise_lq, (xlat_mutableuv4 / 256.0)).y - 0.9);\\\\n vec2 tmpvar_12;\\\\n tmpvar_12 = abs((fract(xlat_mutableuv4) - 0.5));\\\\n stars_3 = (stars_3 + max (stars_3, clamp (\\\\n ((1.0 - dist_2) * ((0.1 / sqrt(\\\\n dot (tmpvar_12, tmpvar_12)\\\\n )) * xlat_mutablesmask))\\\\n , 0.0, 1.0)));\\\\n vec2 tmpvar_13;\\\\n tmpvar_13.x = q5;\\\\n tmpvar_13.y = q6;\\\\n xlat_mutableuv2 = (xlat_mutableuv1 - tmpvar_13);\\\\n float tmpvar_14;\\\\n tmpvar_14 = ((0.01 / sqrt(\\\\n dot (xlat_mutableuv2, xlat_mutableuv2)\\\\n )) * min (3.0, (\\\\n ((mid - 0.5) * float((mid > 0.5)))\\\\n * 2.0)));\\\\n flash_1 = tmpvar_14;\\\\n float angle_15;\\\\n float tmpvar_16;\\\\n tmpvar_16 = abs(xlat_mutableuv2.x);\\\\n if ((xlat_mutableuv2.y >= 0.0)) {\\\\n angle_15 = (1.0 - ((xlat_mutableuv2.y - tmpvar_16) / (xlat_mutableuv2.y + tmpvar_16)));\\\\n } else {\\\\n angle_15 = (3.0 - ((xlat_mutableuv2.y + tmpvar_16) / (tmpvar_16 - xlat_mutableuv2.y)));\\\\n };\\\\n angle_15 = (angle_15 * 0.25);\\\\n float tmpvar_17;\\\\n if ((xlat_mutableuv2.x < 0.0)) {\\\\n tmpvar_17 = -(angle_15);\\\\n } else {\\\\n tmpvar_17 = angle_15;\\\\n };\\\\n flash_1 = (tmpvar_14 * (tmpvar_14 / (\\\\n abs((fract((\\\\n (3.0 * tmpvar_17)\\\\n + \\\\n (time * 2.0)\\\\n )) - 0.5))\\\\n + 0.18)));\\\\n vec3 tmpvar_18;\\\\n tmpvar_18 = max ((texture (sampler_main, uv).xyz * 2.0), ((\\\\n (texture (sampler_blur2, uv).xyz * scale2)\\\\n + bias2) * 2.0));\\\\n vec2 tmpvar_19;\\\\n tmpvar_19 = sin(xlat_mutableuv3);\\\\n ret_4 = (clamp ((0.025 / \\\\n sqrt(dot (tmpvar_19, tmpvar_19))\\\\n ), 0.0, 1.0) * vec3(0.4, 0.1, 1.0));\\\\n ret_4 = (ret_4 + clamp ((stars_3 * stars_3), 0.0, 1.0));\\\\n ret_4 = (ret_4 * clamp ((1.0 - \\\\n (2.0 * dot (tmpvar_18, vec3(0.32, 0.49, 0.29)))\\\\n ), 0.0, 1.0));\\\\n ret_4 = (ret_4 + tmpvar_18);\\\\n vec3 tmpvar_20;\\\\n tmpvar_20.x = q10;\\\\n tmpvar_20.y = q11;\\\\n tmpvar_20.z = q12;\\\\n ret_4 = (ret_4 + ((2.0 * \\\\n clamp (flash_1, 0.0, 1.0)\\\\n ) * tmpvar_20));\\\\n vec4 tmpvar_21;\\\\n tmpvar_21.w = 1.0;\\\\n tmpvar_21.xyz = ret_4;\\\\n ret = tmpvar_21.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/martin [shadow harlequins shape code] - fata morgana.json\":\n/*!*************************************************************************************!*\\\n !*** ./presets/converted/martin [shadow harlequins shape code] - fata morgana.json ***!\n \\*************************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":4,\\\"gammaadj\\\":1.98,\\\"decay\\\":0.5,\\\"echo_zoom\\\":1,\\\"echo_alpha\\\":0.5,\\\"echo_orient\\\":3,\\\"additivewave\\\":1,\\\"wave_thick\\\":1,\\\"modwavealphabyvolume\\\":1,\\\"darken\\\":1,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":0.133,\\\"wave_smoothing\\\":0,\\\"wave_mystery\\\":-1,\\\"modwavealphastart\\\":1,\\\"modwavealphaend\\\":1.3,\\\"warpanimspeed\\\":1.459,\\\"warpscale\\\":2.007,\\\"zoom\\\":0.9999,\\\"warp\\\":0.01,\\\"sx\\\":0.9999,\\\"wave_r\\\":0.5,\\\"wave_g\\\":0.5,\\\"wave_b\\\":0.5,\\\"ob_size\\\":0.015,\\\"ob_b\\\":1,\\\"ib_size\\\":0.26,\\\"mv_a\\\":0,\\\"b2x\\\":0.3,\\\"b1ed\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":40,\\\"thickoutline\\\":1,\\\"rad\\\":0.06623,\\\"tex_zoom\\\":1.79845,\\\"r\\\":0,\\\"a\\\":0.1,\\\"g2\\\":0,\\\"border_b\\\":0,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"bob = 1.5;\\\\nro = 0;\\\\nred = rand(20);\\\",\\\"frame_eqs_eel\\\":\\\"vol = 1 + 0.2*((bass_att+treb_att+mid_att)/3);\\\\nbob = bob*above(bob,0.01) - 0.01 + 1*(1 - above(bob,0.01));\\\\nbob = 0.4 + 0.4*sin(time*0.8);\\\\nbob = bob*vol;\\\\n//rad = bob;\\\\nborder_1 = 0.4;\\\\nsides = 30;\\\\nro = ro + 0.02;\\\\nang = ro;\\\\n//rad = 0.6;\\\\n\\\\nsp = red*0.025;\\\\nspi = 0.5 - sp;\\\\ntm = time*0.1;\\\\nborder_r = 0.5 + sp*sin(tm*0.6) + spi*cos(tm*1.46);\\\\nborder_g = 0.5 + sp*sin(tm*1.294) + spi*cos(tm*0.87);\\\\nborder_b = 0.5 + sp*sin(tm*1.418) + spi*cos(tm*0.76);\\\\n\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":40,\\\"additive\\\":1,\\\"num_inst\\\":4,\\\"g\\\":1,\\\"b\\\":1,\\\"g2\\\":0,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x = 0.5 + 0.225*sin(time /instance*0.7);\\\\ny = 0.5 + 0.3*cos(time /instance*0.7);\\\\nx = x- 0.4*x*sin(time);\\\\ny = y- 0.4*y*cos(time);\\\\n\\\\n\\\\n\\\\nrad = rad*mid_att;\\\\nr = 0.5 + 0.5*sin(frame*0.5);\\\\nb = 0.5 + 0.5*sin(frame*0.5 + 2.094);\\\\ng = 0.5 + 0.5*sin(frame*0.5 + 4.188);\\\\n\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":40,\\\"additive\\\":1,\\\"g\\\":1,\\\"b\\\":1,\\\"g2\\\":0,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x = 0.5 + 0.5*(sin(time*1.1)*0.3 + 0.7*sin(time*0.5));\\\\nx = 0.5 + 0.225*sin(time + 2.09);\\\\ny = 0.5 + 0.3*cos(time + 2.09);\\\\n\\\\nrad = rad*bass_att;\\\\nr = 0.5 + 0.5*sin(frame*0.5);\\\\nb = 0.5 + 0.5*sin(frame*0.5 + 2.094);\\\\ng = 0.5 + 0.5*sin(frame*0.5 + 4.188);\\\\n\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":40,\\\"additive\\\":1,\\\"num_inst\\\":5,\\\"rad\\\":0.07419,\\\"g\\\":1,\\\"b\\\":1,\\\"g2\\\":0,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"//x = 0.5 + 0.5*(sin(time*1.1)*0.3 + 0.7*sin(time*0.5));\\\\nx = 0.5 + 0.225*sin(time /instance);\\\\ny = 0.5 + 0.3*cos(time /instance);\\\\nx = x+ 0.4*x*sin(time);\\\\ny = y+ 0.4*y*cos(time);\\\\n\\\\n\\\\n//x = x+(0.1*q3)*sin((instance*2.4));\\\\n//y = y+(0.1*q4)*cos((instance*2.4));\\\\n\\\\n\\\\nrad = rad*treb_att;\\\\nr = 0.5 + 0.5*sin(frame*0.5);\\\\nb = 0.5 + 0.5*sin(frame*0.5 + 2.094);\\\\ng = 0.5 + 0.5*sin(frame*0.5 + 4.188);\\\\n\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"dec_med = pow (0.7, 30/fps);\\\\ndec_slow = pow (0.99, 30/fps);\\\\nbeat = max (max (bass, mid), treb); \\\\navg = avg*dec_slow + beat*(1-dec_slow);\\\\nis_beat = above(beat, .2+avg+peak) * above (time, t0+.2);\\\\nt0 = is_beat*time + (1-is_beat)*t0;\\\\npeak = is_beat * beat + (1-is_beat)*peak*dec_med;\\\\nindex = (index + is_beat) %8;\\\\nindex2 = (index2 + is_beat*bnot(index))%2;\\\\n\\\\nq20 = avg;\\\\nq21 = beat;\\\\nq22 = peak;\\\\n\\\\nps = .9*ps + .1*q22;\\\\nq23 = ps;\\\\nq24 = is_beat;\\\\nq26 = bass_att + mid_att + treb_att;\\\\nq27 = index +1;\\\\nq28 = index2;\\\\n\\\\n\\\\nk1 = is_\\\\nbeat*equal(index%2,0);\\\\np1 = k1*(p1+1) + (1-k1)*p1;\\\\np2 = dec_med * p2+ (1-dec_med)*p1;\\\\nrott = p2 * 3.1416/4;\\\\n\\\\nq1 = cos(rott);\\\\nq2 = sin(rott);\\\\nq3 = -q2;\\\\nq4 = q1;\\\",\\\"pixel_eqs_eel\\\":\\\"zoom = 1.05;\\\",\\\"warp\\\":\\\" shader_body { \\\\n vec2 uv_1;\\\\n vec2 tmpvar_2;\\\\n tmpvar_2 = (uv - vec2(0.5, 0.5));\\\\n vec4 tmpvar_3;\\\\n tmpvar_3.w = 0.0;\\\\n vec4 tmpvar_4;\\\\n tmpvar_4 = texture (sampler_blur1, uv);\\\\n tmpvar_3.xyz = ((tmpvar_4.xyz * scale1) + bias1);\\\\n float tmpvar_5;\\\\n tmpvar_5 = (dot (tmpvar_3, roam_sin) * 16.0);\\\\n mat2 tmpvar_6;\\\\n tmpvar_6[uint(0)].x = cos(tmpvar_5);\\\\n tmpvar_6[uint(0)].y = -(sin(tmpvar_5));\\\\n tmpvar_6[1u].x = sin(tmpvar_5);\\\\n tmpvar_6[1u].y = cos(tmpvar_5);\\\\n uv_1 = ((tmpvar_2 + (\\\\n (0.2 * dot (((tmpvar_4.xyz * scale1) + bias1), vec3(0.32, 0.49, 0.29)))\\\\n * \\\\n (tmpvar_2 * tmpvar_6)\\\\n )) - 0.5);\\\\n vec2 tmpvar_7;\\\\n tmpvar_7 = ((uv_1 * texsize.xy) * 0.02);\\\\n vec2 tmpvar_8;\\\\n tmpvar_8.x = (cos((tmpvar_7.y * q1)) * sin(-(tmpvar_7.y)));\\\\n tmpvar_8.y = (sin(tmpvar_7.x) * cos((tmpvar_7.y * q2)));\\\\n uv_1 = (uv_1 - ((tmpvar_8 * texsize.zw) * 12.0));\\\\n vec4 tmpvar_9;\\\\n tmpvar_9.w = 1.0;\\\\n tmpvar_9.xyz = ((texture (sampler_main, uv_1).xyz * 0.98) - 0.02);\\\\n ret = tmpvar_9.xyz;\\\\n }\\\",\\\"comp\\\":\\\"vec3 xlat_mutableret1;\\\\nvec2 xlat_mutablers;\\\\nvec2 xlat_mutableuv1;\\\\nfloat xlat_mutablez;\\\\n shader_body { \\\\n xlat_mutableuv1 = (uv - 0.5);\\\\n xlat_mutablez = (0.2 / abs(xlat_mutableuv1.y));\\\\n xlat_mutablers.x = (xlat_mutableuv1.x * xlat_mutablez);\\\\n xlat_mutablers.y = ((xlat_mutablez / 2.0) + (time * 4.0));\\\\n vec4 tmpvar_1;\\\\n tmpvar_1 = texture (sampler_noise_hq, xlat_mutablers);\\\\n xlat_mutableret1 = ((tmpvar_1.xyz * vec3(\\\\n greaterThanEqual (tmpvar_1.xyz, vec3(0.0, 0.0, 0.0))\\\\n )) - 0.6);\\\\n float tmpvar_2;\\\\n tmpvar_2 = clamp ((128.0 * xlat_mutableuv1.y), 0.0, 1.0);\\\\n vec2 tmpvar_3;\\\\n tmpvar_3 = fract(((\\\\n (xlat_mutableuv1 * (1.0 - abs(xlat_mutableuv1.x)))\\\\n - 0.5) - (\\\\n (xlat_mutableret1 * 0.05)\\\\n * tmpvar_2).xy));\\\\n float x_4;\\\\n x_4 = (tmpvar_3.y - 0.52);\\\\n vec3 tmpvar_5;\\\\n tmpvar_5 = (texture (sampler_main, tmpvar_3) + ((0.02 / \\\\n (0.02 + sqrt((x_4 * x_4)))\\\\n ) * slow_roam_sin)).xyz;\\\\n xlat_mutableret1 = tmpvar_5;\\\\n vec2 tmpvar_6;\\\\n tmpvar_6 = (32.0 * ((\\\\n (uv * mat2(0.6, -0.8, 0.8, 0.6))\\\\n + \\\\n (tmpvar_5 * 0.1)\\\\n .xy) + (time / 64.0)));\\\\n vec2 tmpvar_7;\\\\n tmpvar_7 = abs((fract(tmpvar_6) - 0.5));\\\\n vec3 tmpvar_8;\\\\n tmpvar_8 = clamp (((0.25 / \\\\n sqrt(dot (tmpvar_7, tmpvar_7))\\\\n ) * vec3((texture (sampler_pw_noise_lq, \\\\n (tmpvar_6 / 256.0)\\\\n ).y - 0.9))), 0.0, 1.0);\\\\n vec4 tmpvar_9;\\\\n tmpvar_9.w = 1.0;\\\\n tmpvar_9.xyz = (tmpvar_5 + ((\\\\n (tmpvar_8.x * tmpvar_8.x)\\\\n + \\\\n ((rand_preset * (0.5 - uv.y)).xyz * vec3(0.0, 0.0, 1.0))\\\\n ) * (1.0 - tmpvar_2)));\\\\n ret = tmpvar_9.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/martin, flexi, fishbrain + sto - enterstate [random mashup].json\":\n/*!********************************************************************************************!*\\\n !*** ./presets/converted/martin, flexi, fishbrain + sto - enterstate [random mashup].json ***!\n \\********************************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":2,\\\"gammaadj\\\":1.98,\\\"decay\\\":0.5,\\\"echo_zoom\\\":1,\\\"echo_alpha\\\":0.5,\\\"echo_orient\\\":3,\\\"wave_mode\\\":3,\\\"wave_thick\\\":1,\\\"wrap\\\":0,\\\"darken\\\":1,\\\"wave_a\\\":100,\\\"wave_scale\\\":0.282,\\\"wave_smoothing\\\":0.9,\\\"wave_mystery\\\":1,\\\"warpanimspeed\\\":1.459,\\\"warpscale\\\":2.007,\\\"zoom\\\":0.9999,\\\"warp\\\":0.01,\\\"sx\\\":0.9999,\\\"wave_r\\\":0.5,\\\"wave_g\\\":0.5,\\\"wave_b\\\":0.5,\\\"ob_size\\\":0.05,\\\"ob_g\\\":0.1,\\\"ob_b\\\":1,\\\"ob_a\\\":1,\\\"ib_size\\\":0,\\\"ib_r\\\":0,\\\"ib_g\\\":0,\\\"ib_b\\\":0,\\\"mv_a\\\":0,\\\"b1ed\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"rad\\\":0.16446,\\\"g\\\":1,\\\"b\\\":1,\\\"a\\\":0,\\\"r2\\\":1,\\\"b2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"a = if(above(bass,2.5),1,0);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"spectrum\\\":1,\\\"thick\\\":1,\\\"scaling\\\":0.2248},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"r = bass;\\\\ng = treb;\\\\nb = .5;\\\",\\\"point_eqs_eel\\\":\\\"ma=ma+(above(bass,1)*3.1415*.01*bass);\\\\nma=ma-(above(treb,1)*3.1415*.01*treb);\\\\n\\\\nmx=mx+(.0002*cos(ma));\\\\nmy=my+(.0002*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.8));\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"spectrum\\\":1,\\\"thick\\\":1,\\\"scaling\\\":0.2743},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"r = bass;\\\\ng = treb;\\\\nb = .5;\\\",\\\"point_eqs_eel\\\":\\\"ma=ma+(above(mid,1)*3.1415*.01*mid);\\\\nma=ma-(above(treb,1)*3.1415*.01*treb);\\\\n\\\\nmx=mx+(.0004*cos(ma));\\\\nmy=my+(.0004*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.3));\\\\n\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"thick\\\":1,\\\"scaling\\\":2.0231,\\\"smoothing\\\":0},\\\"init_eqs_eel\\\":\\\"t2 = 0;\\\\nt3 = 0;\\\\nt4 = 0;\\\\ncl = 0;\\\",\\\"frame_eqs_eel\\\":\\\"vol = bass*8 + mid*5 + treb*3;\\\\nm = m*0.97 + vol*0.08;\\\\nmonitor = vol;\\\\nbeat = above(vol,res)*above(vol,m)*above(vol,16);\\\\ndiff = (1-beat)*diff + beat*(vol-res);\\\\nres = beat*(vol + m*0.04) + (1-beat)*(res - (0.1+diff*0.02)*60/fps);\\\\nres = max(0,res);\\\\n\\\\n//a = beat;\\\",\\\"point_eqs_eel\\\":\\\"tt3 = tt3*0.6 + (value1)*1;\\\\ntt2 = tt2*0.7 + tt3*0.2;\\\\ntt1 = tt1*0.8 + tt2*0.1;\\\\nd = d*0.9 + tt1*0.2;\\\\n\\\\ny = 0.5 + d*sample*(1-sample)*2;\\\\nx = -0.05 + sample*1.1;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"//******** INITIALIZATION *********\\\\n//---------- some global vars, do not change -------------\\\\navg = 0.01;\\\\nq7 = .25; //MyZoom\\\\nq8 = rand(2.0)-1.0; //fractal modifier\\\\n//q8 = 1; //#\\\\nq16 = 1 + rand(2); //Tele ; rather fish eye\\\\n//q16 = 1; //#\\\\nq18 = rand(0.8)+.1; //brightness balance back/front\\\\nq30 = 1; //logarithmic Z-Dist storage; unused\\\\nq31 =128;\\\\nstart = 1; travel = 0; RotZ = 0; look = 0; slow = 0; t0 = time+3; lampx = .5; lampy = .5;\\\\ncran0 = rand(1);\\\\nn = 0; loop (10000, gmegabuf(n)=0; n=n+1; ); \\\\nn = 0; loop (10000, megabuf(n)=0; n=n+1; ); \\\\ntrelx = 0; trely = 0; trelz = 0;\\\\nreg20 = 1; reg21 = 0; reg22 = 0; reg23 = 0; reg24 = 1; reg25 = 0; reg26 = 0; reg27 = 0; reg28 = 1;\\\\n\\\\n//Find random starting point\\\\nwhile (exec2(\\\\n ran1 = rand(800)/100; ran2 = rand(800)/100; ran3 = rand(800)/100;\\\\n PosX = rand(5)-2; PosY = rand(5)-2; PosZ = rand(5)-2; \\\\n\\\\n// PosX = 3.3; PosY = 2; PosZ = -2; ran1 = 0; ran2 = 0; ran3 = 0; //#\\\\n\\\\n c1 = cos(ran1); c2 = cos(ran2); c3 = cos(ran3); \\\\n s1 = sin(ran1); s2 = sin(ran2); s3 = sin(ran3);\\\\n\\\\n reg20 = c2*c1; reg21 = c2*s1; reg22 = -s2;\\\\n reg23 = s3*s2*c1 - c3*s1; reg24 = s3*s2*s1 + c3*c1; reg25 = s3*c2;\\\\n reg26 = c3*s2*c1 + s3*s1; reg27 = c3*s2*s1 - s3*c1; reg28 = c3*c2;\\\\n\\\\n //***********BOT*************\\\\n //Coord. Trans. must exactly match def in warp S. !!!!\\\\n dist = 0.001;\\\\n while (exec2(\\\\n uvx = reg26*dist/q7; uvy = reg27*dist/q7; uvz = reg28*dist/q7;\\\\n uvx += PosX; uvy += PosY; uvz += PosZ;\\\\n uvx = 8.0*((uvx/8+30.5 - int(uvx/8+30.5))-.5);\\\\n uvy = 8.0*((uvy/8+30.5 - int(uvy/8+30.5))-.5);\\\\n uvz = 8.0*((uvz/8+30.5 - int(uvz/8+30.5))-.5);\\\\n uvx0 = uvx+q8; uvy0 = uvy+q8; uvz0 = uvz+q8;\\\\n loop (7+1,\\\\n uvx = if (uvx > 1, 2-uvx, if(uvx < -1, -2-uvx, uvx));\\\\n uvy = if (uvy > 1, 2-uvy, if(uvy < -1, -2-uvy, uvy));\\\\n uvz = if (uvz > 1, 2-uvz, if(uvz < -1, -2-uvz, uvz));\\\\n slen = uvx*uvx + uvy*uvy + uvz*uvz;\\\\n uvx = if (slen < 0.25, uvx*4, if (slen < 1, uvx/slen, uvx)) *2.6 + uvx0; \\\\n uvy = if (slen < 0.25, uvy*4, if (slen < 1, uvy/slen, uvy)) *2.6 + uvy0; \\\\n uvz = if (slen < 0.25, uvz*4, if (slen < 1, uvz/slen, uvz)) *2.6 + uvz0; \\\\n );\\\\n len = sqrt(uvx*uvx + uvy*uvy + uvz*uvz);\\\\n dist *= 1.05;\\\\n ,(dist < 0.6)*(len > 30)));\\\\n,(dist < .06))); //end while\\\",\\\"frame_eqs_eel\\\":\\\"wave_a = 0;\\\\nfps_ = .0 * fps_ + 1*if(fps<=25,fps,25+.5*(fps-25)); \\\\ndec_s = 1-.06*30/fps_;\\\\nbeat = (time > t0+3); t0 = if(beat, time, t0);\\\\n\\\\nspeed = min(0.2,dist_-.02) * (1+2*avg) *(1-slow*.0)*.7/q7; //#\\\\nds = ds * dec_s + (1-dec_s)*speed*.25/fps_; \\\\nRotZ = if (RotZ==0,beat*(rand(100)<20*travel)*(rand(10)/10-.3),\\\\n bnot(beat*(rand(100)<30))*RotZ);\\\\nslow = if (bnot(slow), beat*(rand(1000*avg)<6), bnot(beat*(rand(100)<50)));\\\\nlook = if (bnot(look), beat*(rand(1000*speed)<12), bnot(beat*(rand(100)<50)));\\\\n\\\\n//Lamp View\\\\nlx = if (beat,rand(150)/200+.15,lx);\\\\nly = if (beat,rand(150)/200+.15,ly);\\\\nlampx = lampx * dec_s + (1-dec_s)*if (look,lx,0.5);\\\\nlampy = lampy * dec_s + (1-dec_s)*if (look,ly,0.5);\\\\nq1 = lampx; q2 = lampy;\\\\n\\\\n//Position \\\\nDirX= reg26; DirY= reg27; DirZ = reg28;\\\\nPosX = PosX + ds*DirX ; PosY = PosY + ds*DirY; PosZ = PosZ + ds*DirZ; \\\\nq4 = PosX; q5 = PosY; q6 = PosZ;\\\\n\\\\nangchg = (.2-dist_)*(dist_ < .2)*2;\\\\ntravel = if (angchg > 0,0,travel+ds);\\\\nv1 = v1 * dec_s + (1-dec_s)* RotZ * ds;\\\\nv2 = v2 *dec_s + (1-dec_s)*angchg *xslope/fps_;\\\\nv3 = v3 *dec_s + (1-dec_s)*(angchg *yslope/fps_ + 2*v1*sin(time*.1));\\\\n//v2 = .008;\\\\n//push old RotMat\\\\nreg30 =reg20; reg31 =reg21; reg32 =reg22; \\\\nreg33 =reg23; reg34 =reg24; reg35 =reg25; \\\\nreg36 =reg26; reg37 =reg27; reg38 =reg28; \\\\n\\\\nn = 0; avg = 0;\\\\nloop (5,\\\\n n = n+1;\\\\n //new Rot. Mat for infinitesimal angles\\\\n ran1 = rand(100)/100;\\\\n ran2 = rand(100)/200-.25;\\\\n tx = cos(n*1.57+ran2) * (n <= 4)*ran1; ty = sin(n*1.57+ran2) * (n <= 4)*ran1;\\\\n c1 = cos(v1); c2 = cos(v2+ty); c3 = cos(v3+tx); \\\\n s1 = sin(v1); s2 = sin(v2+ty); s3 = sin(v3+tx);\\\\n reg10 = c2*c1; reg11 = c2*s1; reg12 = -s2;\\\\n reg13 = s3*s2*c1 - c3*s1; reg14 = s3*s2*s1 + c3*c1; reg15 = s3*c2;\\\\n reg16 = c3*s2*c1 + s3*s1; reg17 = c3*s2*s1 - s3*c1; reg18 = c3*c2;\\\\n\\\\n //pop old RotMat\\\\n reg20 =reg30; reg21 =reg31; reg22 =reg32; \\\\n reg23 =reg33; reg24 =reg34; reg25 =reg35; \\\\n reg26 =reg36; reg27 =reg37; reg28 =reg38; \\\\n\\\\n //Multiply new RotMat by old one\\\\n q20 = reg10*reg20 + reg11*reg23 + reg12*reg26;\\\\n q21 = reg10*reg21 + reg11*reg24 + reg12*reg27;\\\\n q22 = reg10*reg22 + reg11*reg25 + reg12*reg28;\\\\n q23 = reg13*reg20 + reg14*reg23 + reg15*reg26;\\\\n q24 = reg13*reg21 + reg14*reg24 + reg15*reg27;\\\\n q25 = reg13*reg22 + reg14*reg25 + reg15*reg28;\\\\n q26 = reg16*reg20 + reg17*reg23 + reg18*reg26;\\\\n q27 = reg16*reg21 + reg17*reg24 + reg18*reg27;\\\\n q28 = reg16*reg22 + reg17*reg25 + reg18*reg28;\\\\n\\\\n reg20 =q20; reg21 =q21; reg22 =q22;\\\\n reg23 =q23; reg24 =q24; reg25 =q25;\\\\n reg26 =q26; reg27 =q27; reg28 =q28;\\\\n\\\\n //***********BOT*************\\\\n //Coord. Trans. must exactly match def in warp S. !!!!\\\\n dist = 0.002;\\\\n while (exec2(\\\\n uvx = reg26*dist/q7; uvy = reg27*dist/q7; uvz = reg28*dist/q7;\\\\n uvx += PosX; uvy += PosY; uvz += PosZ;\\\\n uvx = 8.0*((uvx/8+30.5 - int(uvx/8+30.5))-.5);\\\\n uvy = 8.0*((uvy/8+30.5 - int(uvy/8+30.5))-.5);\\\\n uvz = 8.0*((uvz/8+30.5 - int(uvz/8+30.5))-.5);\\\\n uvx0 = uvx+q8; uvy0 = uvy+q8; uvz0 = uvz+q8;\\\\n loop (7+1,\\\\n uvx = if (uvx > 1, 2-uvx, if(uvx < -1, -2-uvx, uvx));\\\\n uvy = if (uvy > 1, 2-uvy, if(uvy < -1, -2-uvy, uvy));\\\\n uvz = if (uvz > 1, 2-uvz, if(uvz < -1, -2-uvz, uvz));\\\\n slen = uvx*uvx + uvy*uvy + uvz*uvz;\\\\n uvx = if (slen < 0.25, uvx*4, if (slen < 1, uvx/slen, uvx)) *2.6 + uvx0; \\\\n uvy = if (slen < 0.25, uvy*4, if (slen < 1, uvy/slen, uvy)) *2.6 + uvy0; \\\\n uvz = if (slen < 0.25, uvz*4, if (slen < 1, uvz/slen, uvz)) *2.6 + uvz0; \\\\n );\\\\n len = sqrt(uvx*uvx + uvy*uvy + uvz*uvz);\\\\n dist *= 1.1;\\\\n ,(dist < 0.6)*(len > 30)));\\\\n megabuf(n) = megabuf(n)*dec_s + (1-dec_s)*dist; //stores the 4 trial points\\\\n avg = avg+abs(megabuf(n)/5);\\\\n); //end loop 5\\\\n\\\\nn = 0; avg = 0; loop (5, n=n+1; avg = avg+abs(megabuf(n)/5));\\\\n\\\\nxslope = min(max(2/avg*(megabuf(1)-megabuf(3)),-3),3);\\\\nyslope = min(max(2/avg*(megabuf(4)-megabuf(2)),-3),3);\\\\nmonitor = avg;\\\\ndist_ = dist_*dec_s + (1-dec_s)*dist;\\\\n\\\\nq10 = ds*q7; //compensation of lin. movement in GetDist and zoom uv\\\\nq14 = 1*abs(ds) + 2*(abs(v1) + abs(v2) + abs(v3)) + 1.0/255 + start*.05; \\\\nq19 = .6 + .4*sin(time*.02+cran0*6); //brightness backgd\\\\nstart = start * .9;\\\\nq11 = v1; q12 = v2; q13 = v3;\\\\n//forward comp. of Rotation\\\\nmonitor = q16;\\\",\\\"pixel_eqs_eel\\\":\\\"warp = 0.0; zoom = 1; dx = -q12/q16*(1+0*pow(x-.5,2)); dy = q13/q16*(1+0*pow(y-.5,2)); rot =q11;\\\",\\\"warp\\\":\\\" shader_body { \\\\n float dy_1;\\\\n float dx_2;\\\\n vec3 ret_3;\\\\n vec2 tmpvar_4;\\\\n tmpvar_4 = ((uv * texsize.xy) * texsize_noise_lq.zw);\\\\n vec2 tmpvar_5;\\\\n tmpvar_5 = (texsize.zw * 4.0);\\\\n vec2 tmpvar_6;\\\\n tmpvar_6.x = (((2.0 * \\\\n ((texture (sampler_blur1, (uv + (vec2(1.0, 0.0) * tmpvar_5))).xyz * scale1) + bias1)\\\\n ) - (2.0 * \\\\n ((texture (sampler_blur1, (uv - (vec2(1.0, 0.0) * tmpvar_5))).xyz * scale1) + bias1)\\\\n )).y * 0.5);\\\\n tmpvar_6.y = (((2.0 * \\\\n ((texture (sampler_blur1, (uv + (vec2(0.0, 1.0) * tmpvar_5))).xyz * scale1) + bias1)\\\\n ) - (2.0 * \\\\n ((texture (sampler_blur1, (uv - (vec2(0.0, 1.0) * tmpvar_5))).xyz * scale1) + bias1)\\\\n )).y * 0.5);\\\\n ret_3.y = texture (sampler_fw_main, clamp ((uv + (\\\\n (tmpvar_6 * texsize.zw)\\\\n * 4.0)), 0.0, 1.0)).y;\\\\n ret_3.y = (ret_3.y + ((\\\\n (ret_3 - ((texture (sampler_blur1, uv).xyz * scale1) + bias1))\\\\n .y * 0.025) + -0.01));\\\\n ret_3.y = (ret_3.y + ((texture (sampler_noise_lq, tmpvar_4).y - 0.5) * 0.02));\\\\n dx_2 = (((2.0 * \\\\n ((texture (sampler_blur1, (uv + (vec2(1.0, 0.0) * tmpvar_5))).xyz * scale1) + bias1)\\\\n ) - (2.0 * \\\\n ((texture (sampler_blur1, (uv - (vec2(1.0, 0.0) * tmpvar_5))).xyz * scale1) + bias1)\\\\n )).z * 0.5);\\\\n dy_1 = (((2.0 * \\\\n ((texture (sampler_blur1, (uv + (vec2(0.0, 1.0) * tmpvar_5))).xyz * scale1) + bias1)\\\\n ) - (2.0 * \\\\n ((texture (sampler_blur1, (uv - (vec2(0.0, 1.0) * tmpvar_5))).xyz * scale1) + bias1)\\\\n )).z * 0.5);\\\\n vec2 tmpvar_7;\\\\n tmpvar_7.x = dx_2;\\\\n tmpvar_7.y = dy_1;\\\\n ret_3.z = ((texture (sampler_main, (uv - \\\\n ((tmpvar_7 * texsize.zw) * 4.0)\\\\n )).z - (ret_3.y * 0.01)) + 0.004);\\\\n ret_3.z = (ret_3.z + ((texture (sampler_noise_lq, tmpvar_4).y - 0.5) * 0.01));\\\\n dx_2 = (((2.0 * \\\\n ((texture (sampler_blur1, (uv + (tmpvar_5 * vec2(1.0, 0.0)))).xyz * scale1) + bias1)\\\\n ) - (2.0 * \\\\n ((texture (sampler_blur1, (uv + (tmpvar_5 * vec2(-1.0, 0.0)))).xyz * scale1) + bias1)\\\\n )).x * 0.5);\\\\n dy_1 = (((2.0 * \\\\n ((texture (sampler_blur1, (uv + (tmpvar_5 * vec2(0.0, 1.0)))).xyz * scale1) + bias1)\\\\n ) - (2.0 * \\\\n ((texture (sampler_blur1, (uv + (tmpvar_5 * vec2(0.0, -1.0)))).xyz * scale1) + bias1)\\\\n )).x * 0.5);\\\\n vec2 tmpvar_8;\\\\n tmpvar_8.x = dx_2;\\\\n tmpvar_8.y = dy_1;\\\\n vec2 tmpvar_9;\\\\n tmpvar_9 = (tmpvar_8 * texsize.zw);\\\\n vec2 domain_10;\\\\n domain_10 = (uv - (tmpvar_9 * 2.5));\\\\n vec4 tmpvar_11;\\\\n tmpvar_11.w = 0.0;\\\\n tmpvar_11.xyz = max (vec4(0.0, 0.0, 0.0, 0.0), texture (sampler_fc_main, (domain_10 + (texsize.zw * vec2(-1.0, 0.0))))).xyz;\\\\n vec4 tmpvar_12;\\\\n tmpvar_12.w = 0.0;\\\\n tmpvar_12.xyz = max (tmpvar_11, texture (sampler_fc_main, (domain_10 + (texsize.zw * vec2(0.0, -1.0))))).xyz;\\\\n vec4 tmpvar_13;\\\\n tmpvar_13.w = 0.0;\\\\n tmpvar_13.xyz = max (tmpvar_12, texture (sampler_fc_main, domain_10)).xyz;\\\\n vec4 tmpvar_14;\\\\n tmpvar_14.w = 0.0;\\\\n tmpvar_14.xyz = max (tmpvar_13, texture (sampler_fc_main, (domain_10 + (texsize.zw * vec2(0.0, 1.0))))).xyz;\\\\n ret_3.x = ((max (tmpvar_14, texture (sampler_fc_main, \\\\n (domain_10 + (texsize.zw * vec2(1.0, 0.0)))\\\\n )).x + (\\\\n (texture (sampler_main, (uv + (tmpvar_9 * 4.0))).x - ((texture (sampler_blur1, (uv + \\\\n (tmpvar_9 * 4.0)\\\\n )).xyz * scale1) + bias1).x)\\\\n * 0.206)) - 0.09);\\\\n vec4 tmpvar_15;\\\\n tmpvar_15.w = 1.0;\\\\n tmpvar_15.xyz = ret_3;\\\\n ret = tmpvar_15.xyz;\\\\n }\\\",\\\"comp\\\":\\\"float xlat_mutablelamp;\\\\nvec2 xlat_mutablers0;\\\\nvec2 xlat_mutablerss;\\\\nvec2 xlat_mutableuv1;\\\\n shader_body { \\\\n vec3 tmpvar_1;\\\\n tmpvar_1.x = q4;\\\\n tmpvar_1.y = q5;\\\\n tmpvar_1.z = q6;\\\\n mat3 tmpvar_2;\\\\n tmpvar_2[uint(0)].x = q20;\\\\n tmpvar_2[uint(0)].y = q23;\\\\n tmpvar_2[uint(0)].z = q26;\\\\n tmpvar_2[1u].x = q21;\\\\n tmpvar_2[1u].y = q24;\\\\n tmpvar_2[1u].z = q27;\\\\n tmpvar_2[2u].x = q22;\\\\n tmpvar_2[2u].y = q25;\\\\n tmpvar_2[2u].z = q28;\\\\n vec2 tmpvar_3;\\\\n tmpvar_3.x = q1;\\\\n tmpvar_3.y = q2;\\\\n vec2 uv_4;\\\\n vec3 dots_5;\\\\n vec3 ret_6;\\\\n vec2 tmpvar_7;\\\\n vec2 tmpvar_8;\\\\n tmpvar_8 = (uv - 0.5);\\\\n tmpvar_7 = (0.5 + (tmpvar_8 * vec2(1.1, 0.81)));\\\\n vec2 tmpvar_9;\\\\n tmpvar_9 = (uv - vec2(0.5, 0.5));\\\\n uv_4 = (tmpvar_8 * aspect.xy);\\\\n float tmpvar_10;\\\\n float tmpvar_11;\\\\n tmpvar_11 = (min (abs(\\\\n (uv_4.y / uv_4.x)\\\\n ), 1.0) / max (abs(\\\\n (uv_4.y / uv_4.x)\\\\n ), 1.0));\\\\n float tmpvar_12;\\\\n tmpvar_12 = (tmpvar_11 * tmpvar_11);\\\\n tmpvar_12 = (((\\\\n ((((\\\\n ((((-0.01213232 * tmpvar_12) + 0.05368138) * tmpvar_12) - 0.1173503)\\\\n * tmpvar_12) + 0.1938925) * tmpvar_12) - 0.3326756)\\\\n * tmpvar_12) + 0.9999793) * tmpvar_11);\\\\n tmpvar_12 = (tmpvar_12 + (float(\\\\n (abs((uv_4.y / uv_4.x)) > 1.0)\\\\n ) * (\\\\n (tmpvar_12 * -2.0)\\\\n + 1.570796)));\\\\n tmpvar_10 = (tmpvar_12 * sign((uv_4.y / uv_4.x)));\\\\n if ((abs(uv_4.x) > (1e-08 * abs(uv_4.y)))) {\\\\n if ((uv_4.x < 0.0)) {\\\\n if ((uv_4.y >= 0.0)) {\\\\n tmpvar_10 += 3.141593;\\\\n } else {\\\\n tmpvar_10 = (tmpvar_10 - 3.141593);\\\\n };\\\\n };\\\\n } else {\\\\n tmpvar_10 = (sign(uv_4.y) * 1.570796);\\\\n };\\\\n xlat_mutablers0.x = ((tmpvar_10 / 3.1416) * 2.0);\\\\n xlat_mutablers0.y = (0.02 / sqrt(dot (uv_4, uv_4)));\\\\n vec2 tmpvar_13;\\\\n tmpvar_13.x = xlat_mutablers0.x;\\\\n tmpvar_13.y = (xlat_mutablers0.y + time);\\\\n xlat_mutablerss = (tmpvar_13 * mat2(0.7, -0.7, 0.7, 0.7));\\\\n vec4 tmpvar_14;\\\\n tmpvar_14 = vec4(greaterThanEqual ((texture (sampler_pw_noise_lq, \\\\n (xlat_mutablerss / 32.0)\\\\n ) - 0.7), vec4(0.0, 0.0, 0.0, 0.0)));\\\\n vec2 tmpvar_15;\\\\n tmpvar_15 = abs((fract(\\\\n (xlat_mutablerss * 8.0)\\\\n ) - 0.5));\\\\n vec2 tmpvar_16;\\\\n tmpvar_16.x = (xlat_mutablers0.x * 2.0);\\\\n tmpvar_16.y = (xlat_mutablers0.y + (time / 2.0));\\\\n xlat_mutablerss = (tmpvar_16 * mat2(0.7, -0.7, 0.7, 0.7));\\\\n vec4 tmpvar_17;\\\\n tmpvar_17 = vec4(greaterThanEqual ((texture (sampler_pw_noise_lq, \\\\n (xlat_mutablerss / 32.0)\\\\n ) - 0.7), vec4(0.0, 0.0, 0.0, 0.0)));\\\\n vec2 tmpvar_18;\\\\n tmpvar_18 = abs((fract(\\\\n (xlat_mutablerss * 8.0)\\\\n ) - 0.5));\\\\n xlat_mutablerss = tmpvar_18;\\\\n dots_5 = (vec3((clamp (\\\\n (0.04 / sqrt(dot (tmpvar_15, tmpvar_15)))\\\\n , 0.0, 1.0) * tmpvar_14.x)) + (clamp (\\\\n (0.04 / sqrt(dot (tmpvar_18, tmpvar_18)))\\\\n , 0.0, 1.0) * tmpvar_17.x));\\\\n dots_5 = (dots_5 * clamp ((0.04 / \\\\n abs((0.01 / xlat_mutablers0.y))\\\\n ), 0.0, 1.0));\\\\n dots_5 = (dots_5 * (dots_5 * 2.0));\\\\n vec2 tmpvar_19;\\\\n tmpvar_19.x = -((tmpvar_9.y * -1024.0));\\\\n tmpvar_19.y = (tmpvar_9.x * -1024.0);\\\\n vec2 tmpvar_20;\\\\n tmpvar_20.x = tmpvar_19.x;\\\\n tmpvar_20.y = -(tmpvar_19.y);\\\\n uv_4 = (vec2(-100.0, 100.0) * (tmpvar_20 / (\\\\n (tmpvar_19.x * tmpvar_19.x)\\\\n + \\\\n (tmpvar_19.y * tmpvar_19.y)\\\\n )).yx);\\\\n uv_4 = (0.5 + ((\\\\n (1.0 - abs(((\\\\n fract((mix ((0.5 + \\\\n ((tmpvar_7 - 0.5) * 2.0)\\\\n ), (uv_4 + 0.5), vec2(0.5, 0.5)) * 0.5))\\\\n * 2.0) - 1.0)))\\\\n - 0.5) * 0.98));\\\\n uv_4 = (((uv_4 - 0.5) * 0.9) + 0.5);\\\\n xlat_mutableuv1 = ((uv_4 - tmpvar_3) * aspect.xy);\\\\n float tmpvar_21;\\\\n tmpvar_21 = min ((1.0 - texture (sampler_main, uv_4).z), (1.0 - (\\\\n (texture (sampler_blur2, uv_4).xyz * scale2)\\\\n + bias2).z));\\\\n vec3 tmpvar_22;\\\\n tmpvar_22.xy = ((uv_4 - 0.5) * min ((1.0 - texture (sampler_main, uv_4).z), (1.0 - \\\\n ((texture (sampler_blur2, uv_4).xyz * scale2) + bias2)\\\\n .z)));\\\\n tmpvar_22.z = min ((1.0 - texture (sampler_main, uv_4).z), (1.0 - (\\\\n (texture (sampler_blur2, uv_4).xyz * scale2)\\\\n + bias2).z));\\\\n float tmpvar_23;\\\\n tmpvar_23 = clamp ((abs(\\\\n ((1.0 - ((texture (sampler_blur2, uv_4).xyz * scale2) + bias2).z) - clamp ((1.0 - (\\\\n (texture (sampler_blur2, tmpvar_3).xyz * scale2)\\\\n + bias2).z), 0.1, 0.4))\\\\n ) + 0.2), 0.0, 1.0);\\\\n vec3 tmpvar_24;\\\\n tmpvar_24 = mix (texture (sampler_main, uv_4).xyz, ((texture (sampler_blur1, uv_4).xyz * scale1) + bias1), vec3(tmpvar_23));\\\\n float tmpvar_25;\\\\n tmpvar_25 = clamp (((1.0 - \\\\n exp(-(((texture (sampler_blur1, uv_4).xyz * scale1) + bias1).x))\\\\n ) - 0.2), 0.0, 1.0);\\\\n ret_6 = ((tmpvar_24.x * (0.2 + \\\\n ((1.0 - tmpvar_23) * (1.0 - tmpvar_21))\\\\n )) * (1.0 + (0.5 * \\\\n sin((((tmpvar_22 / q7) * tmpvar_2) + tmpvar_1))\\\\n )));\\\\n vec3 tmpvar_26;\\\\n tmpvar_26.xy = vec2(0.0, 1.0);\\\\n tmpvar_26.z = (tmpvar_25 * 3.0);\\\\n vec3 tmpvar_27;\\\\n tmpvar_27 = mix (ret_6, tmpvar_26, vec3(tmpvar_25));\\\\n xlat_mutablelamp = (((\\\\n clamp ((1.0 - (4.0 * sqrt(\\\\n dot (xlat_mutableuv1, xlat_mutableuv1)\\\\n ))), 0.0, 1.0)\\\\n * tmpvar_24.x) * clamp (\\\\n (1.0 - (2.0 * mix (tmpvar_21, (1.0 - \\\\n ((texture (sampler_blur1, uv_4).xyz * scale1) + bias1)\\\\n .z), 0.2)))\\\\n , 0.0, 1.0)) * 1.8);\\\\n ret_6 = (tmpvar_27 + ((1.0 - \\\\n dot (tmpvar_27, vec3(0.32, 0.49, 0.29))\\\\n ) * xlat_mutablelamp));\\\\n ret_6 = (1.0 - exp((-2.0 * ret_6)));\\\\n ret_6 = (ret_6 + (dots_5 * (1.0 + ret_6)));\\\\n vec4 tmpvar_28;\\\\n tmpvar_28.w = 1.0;\\\\n tmpvar_28.xyz = ret_6;\\\\n ret = tmpvar_28.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/sawtooth grin roam.json\":\n/*!***************************************************!*\\\n !*** ./presets/converted/sawtooth grin roam.json ***!\n \\***************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":4,\\\"gammaadj\\\":1.49,\\\"decay\\\":0.5,\\\"echo_zoom\\\":1.002,\\\"echo_alpha\\\":0.5,\\\"echo_orient\\\":1,\\\"wave_mode\\\":7,\\\"additivewave\\\":1,\\\"modwavealphabyvolume\\\":1,\\\"wave_brighten\\\":0,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":1.157,\\\"wave_smoothing\\\":0.63,\\\"modwavealphastart\\\":0.71,\\\"modwavealphaend\\\":1.3,\\\"warpscale\\\":16.016,\\\"zoomexp\\\":11.56276,\\\"fshader\\\":1,\\\"zoom\\\":1.05971,\\\"warp\\\":0.13126,\\\"wave_r\\\":0.65,\\\"wave_g\\\":0.65,\\\"wave_b\\\":0.65,\\\"ob_size\\\":0,\\\"ob_a\\\":1,\\\"ib_size\\\":0,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":0,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":14,\\\"num_inst\\\":512,\\\"rad\\\":0.1026,\\\"tex_ang\\\":0.62832,\\\"r2\\\":1,\\\"g2\\\":0,\\\"a2\\\":1,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"ma=ma+(above(bass,1)*3.1415*.01*bass);\\\\nma=ma-(above(treb,1)*3.1415*.01*treb);\\\\n\\\\nmx=mx+(.0002*cos(ma));\\\\nmy=my+(.0002*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\nrad=(bass+treb)/30;\\\\na=(above(bass+mid+treb,.8));\\\\nr=int(rand(100))/100;\\\\ng=int(rand(100))/100;\\\\nb=int(rand(100))/100;\\\\nr2=int(rand(100))/100;\\\\ng2=int(rand(100))/100;\\\\nb2=int(rand(100))/100;\\\\nr_border=int(rand(100))/100;\\\\ng_border=int(rand(100))/100;\\\\nb_border=int(rand(100))/100;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":23,\\\"num_inst\\\":1024,\\\"rad\\\":0.10262,\\\"ang\\\":0.43982,\\\"tex_ang\\\":0.62832,\\\"a\\\":0.5,\\\"r2\\\":1,\\\"g2\\\":0,\\\"a2\\\":0.5,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"ma=ma+(above(bass,1)*3.1415*.05*bass);\\\\nma=ma-(above(mid,1)*3.1415*.05*mid);\\\\n\\\\nmx=mx+(.0001*cos(ma));\\\\nmy=my+(.0001*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\nrad=(bass+treb)/25;\\\\na=(above(bass+mid+treb,.1));\\\\nr=int(rand(100))/100;\\\\ng=int(rand(100))/100;\\\\nb=int(rand(100))/100;\\\\nr2=int(rand(100))/100;\\\\ng2=int(rand(100))/100;\\\\nb2=int(rand(100))/100;\\\\nr_border=int(rand(100))/100;\\\\ng_border=int(rand(100))/100;\\\\nb_border=int(rand(100))/100;\\\"},{\\\"baseVals\\\":{\\\"sides\\\":14,\\\"additive\\\":1,\\\"num_inst\\\":256,\\\"rad\\\":0.20269,\\\"tex_ang\\\":0.62832,\\\"r2\\\":1,\\\"g2\\\":0,\\\"a2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"ma=ma+(above(mid,1)*3.1415*.01*mid);\\\\nma=ma-(above(treb,1)*3.1415*.01*treb);\\\\n\\\\nmx=mx+(.0004*cos(ma));\\\\nmy=my+(.0004*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.3));\\\"},{\\\"baseVals\\\":{\\\"sides\\\":14,\\\"additive\\\":1,\\\"num_inst\\\":256,\\\"rad\\\":0.22389,\\\"tex_ang\\\":0.62832,\\\"r2\\\":1,\\\"g2\\\":0,\\\"a2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"ma=ma+(above(bass,.5)*3.1415*.02*bass);\\\\nma=ma-(above(treb,.5)*3.1415*.02*treb);\\\\n\\\\nmx=mx+(.0008*cos(ma));\\\\nmy=my+(.0008*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.2));\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"ma=ma+(above(bass,1)*3.1415*.01*bass);\\\\nma=ma-(above(treb,1)*3.1415*.01*treb);\\\\n\\\\nmx=mx+(.0002*cos(ma));\\\\nmy=my+(.0002*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.8));\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"ma=ma+(above(bass,1)*3.1415*.05*bass);\\\\nma=ma-(above(mid,1)*3.1415*.05*mid);\\\\n\\\\nmx=mx+(.0001*cos(ma));\\\\nmy=my+(.0001*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.1));\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"ma=ma+(above(mid,1)*3.1415*.01*mid);\\\\nma=ma-(above(treb,1)*3.1415*.01*treb);\\\\n\\\\nmx=mx+(.0004*cos(ma));\\\\nmy=my+(.0004*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.3));\\\"},{\\\"baseVals\\\":{\\\"thick\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"ma=ma+(above(bass,.5)*3.1415*.02*bass);\\\\nma=ma-(above(treb,.5)*3.1415*.02*treb);\\\\n\\\\nmx=mx+(.0008*cos(ma));\\\\nmy=my+(.0008*sin(ma));\\\\n\\\\nmx=if(above(mx,.9),(.9-mx),mx);\\\\nmy=if(above(my,.9),(.9-my),my);\\\\nmx=if(below(mx,.1),(.9+mx),mx);\\\\nmy=if(below(my,.1),(.9+my),my);\\\\n\\\\nx=mx;\\\\ny=my;\\\\n\\\\na=(above(bass+mid+treb,.2));\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"xx1 = xx1*0.9 + (bass)*0.01;\\\\nxx2 = xx2*0.9 + (treb)*0.01;\\\\nyy1 = yy1*0.94 + (treb+bass)*0.0075;\\\\n\\\\nx1 = 0.5 + (xx1-xx2)*2;\\\\ny1 = 0.4 + yy1;\\\\n\\\\nx1 = max(0,min(1,x1)); y1 = max(0,min(1,y1));\\\\n\\\\nspring = 10;\\\\ngrav = .5;\\\\nresist = 1;\\\\nbounce = 0.75;\\\\ndt = 0.0005*(60/fps);\\\\n\\\\nvx2 = vx2*(1-resist*dt) + dt*((x1+x3-2*x2)*spring);\\\\nvy2 = vy2*(1-resist*dt) + dt*((y1+y3-2*y2)*spring-grav);\\\\nvx3 = vx3*(1-resist*dt) + dt*((x2+x4-2*x3)*spring);\\\\nvy3 = vy3*(1-resist*dt) + dt*((y2+y4-2*y3)*spring-grav);\\\\nvx4 = vx4*(1-resist*dt) + dt*((x3-x4)*spring);\\\\nvy4 = vy4*(1-resist*dt) + dt*((y3-y4)*spring-grav);\\\\n\\\\nx2 = x2 + vx2;\\\\ny2 = y2 + vy2;\\\\nx3 = x3 + vx3;\\\\ny3 = y3 + vy3;\\\\nx4 = x4 + vx4;\\\\ny4 = y4 + vy4;\\\\n\\\\nvx2 = if(above(x2,0),vx2,abs(vx2)*bounce);\\\\nvx2 = if(below(x2,1),vx2,-abs(vx2)*bounce);\\\\nvx3 = if(above(x3,0),vx3,abs(vx3)*bounce);\\\\nvx3 = if(below(x3,1),vx3,-abs(vx3)*bounce);\\\\nvx4 = if(above(x4,0),vx4,abs(vx4)*bounce);\\\\nvx4 = if(below(x4,1),vx4,-abs(vx4)*bounce);\\\\nvy2 = if(above(y2,0),vy2,abs(vy2)*bounce);\\\\nvy2 = if(below(y2,1),vy2,-abs(vy2)*bounce);\\\\nvy3 = if(above(y3,0),vy3,abs(vy3)*bounce);\\\\nvy3 = if(below(y3,1),vy3,-abs(vy3)*bounce);\\\\nvy4 = if(above(y4,0),vy4,abs(vy4)*bounce);\\\\nvy4 = if(below(y4,1),vy4,-abs(vy4)*bounce);\\\\n\\\\n\\\\nq1 = x1; q2 = x2; q3 = x3; q4 = x4;\\\\nq5 = y1; q6 = y2; q7 = y3; q8 = y4;\\\\nq9 =1/ aspectX;\\\\nq10 = 1/aspectY;\\\\n\\\\nzoom = 1;\\\\nr = r*0.96 +(x1-0.5);\\\\nrot = (r*0.1);\\\\n\\\\nq12 = atan2(vx4,vy4);\\\\nq11 = sqrt(vx4*vx4 + vy4*vy4);\\\\n\\\\nzoom = 1.001;\\\\nrot = 0.00;\\\\nwarp = 0.2;\\\\nwave_a = 0;\\\",\\\"pixel_eqs_eel\\\":\\\"dir = -q12 + asin(1);\\\\n\\\\nb1 = 0.1;\\\\nm1 = q11*25;\\\\n\\\\nxx = q4;\\\\nyy = 1-q8;\\\\n\\\\n\\\\nx1 = xx -sin(dir)*b1;\\\\ny1 = yy -cos(dir)*b1;\\\\nx2 = xx +sin(dir)*b1;\\\\ny2 = yy +cos(dir)*b1;\\\\n\\\\nd1 = sqrt((x1-x)*(x1-x)+(y1-y)*(y1-y))-b1*2;\\\\nd2 = sqrt((x2-x)*(x2-x)+(y2-y)*(y2-y))-b1*2;\\\\n\\\\nsi1 = sigmoid(-d1,1000);\\\\nsi2 = sigmoid(-d2,1000);\\\\n\\\\ndx = (si1*sin(y1-y)*m1*d1 - si2*sin(y2-y)*m1*d2)*2;\\\\ndy = (-si1*sin(x1-x)*m1*d1 + si2*sin(x2-x)*m1*d2)*2;\\\",\\\"warp\\\":\\\" shader_body { \\\\n vec2 tmpvar_1;\\\\n tmpvar_1 = mix (uv_orig, uv, vec2(0.3, 0.3));\\\\n vec2 tmpvar_2;\\\\n tmpvar_2 = (texsize.zw * 3.0);\\\\n vec2 tmpvar_3;\\\\n tmpvar_3.x = dot (((\\\\n (texture (sampler_blur1, (tmpvar_1 + (vec2(1.0, 0.0) * tmpvar_2))).xyz * scale1)\\\\n + bias1) - (\\\\n (texture (sampler_blur1, (tmpvar_1 - (vec2(1.0, 0.0) * tmpvar_2))).xyz * scale1)\\\\n + bias1)), vec3(0.32, 0.49, 0.29));\\\\n tmpvar_3.y = dot (((\\\\n (texture (sampler_blur1, (tmpvar_1 + (vec2(0.0, 1.0) * tmpvar_2))).xyz * scale1)\\\\n + bias1) - (\\\\n (texture (sampler_blur1, (tmpvar_1 - (vec2(0.0, 1.0) * tmpvar_2))).xyz * scale1)\\\\n + bias1)), vec3(0.32, 0.49, 0.29));\\\\n vec4 tmpvar_4;\\\\n tmpvar_4.w = 1.0;\\\\n tmpvar_4.xyz = (texture (sampler_fc_main, (tmpvar_1 + (\\\\n (tmpvar_3 * texsize.zw)\\\\n * 9.0))) - 0.01).xyz;\\\\n ret = tmpvar_4.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n vec2 uv_1;\\\\n vec3 ret3_2;\\\\n vec3 ret_3;\\\\n vec2 tmpvar_4;\\\\n tmpvar_4 = (((uv - 0.5) * vec2(-1.0, 1.0)) + 0.5);\\\\n vec3 tmpvar_5;\\\\n tmpvar_5 = abs(((texture (sampler_main, uv).xyz * \\\\n clamp ((((\\\\n (texture (sampler_blur2, uv).xyz * scale2)\\\\n + bias2) * 2.8) - 0.13), 0.0, 1.0)\\\\n ) - (texture (sampler_main, tmpvar_4).xyz * \\\\n clamp ((((\\\\n (texture (sampler_blur2, tmpvar_4).xyz * scale2)\\\\n + bias2) * 2.8) - 0.13), 0.0, 1.0)\\\\n )));\\\\n ret3_2 = (tmpvar_5 * sqrt(tmpvar_5));\\\\n ret3_2 = (ret3_2 * vec3(0.9, 1.6, 2.3));\\\\n ret3_2 = (ret3_2 * 3.0);\\\\n vec3 tmpvar_6;\\\\n tmpvar_6 = pow (ret3_2, (1.0 - ret3_2));\\\\n ret3_2 = tmpvar_6;\\\\n uv_1 = (uv * 2.0);\\\\n vec2 tmpvar_7;\\\\n tmpvar_7 = floor((fract(\\\\n (uv_1 * 0.5)\\\\n ) * 2.0));\\\\n uv_1 = ((fract(uv_1) * (1.0 - tmpvar_7)) + (tmpvar_7 * fract(\\\\n (1.0 - uv_1)\\\\n )));\\\\n vec2 tmpvar_8;\\\\n tmpvar_8.x = rad;\\\\n tmpvar_8.y = uv_1.y;\\\\n uv_1 = tmpvar_8;\\\\n vec2 tmpvar_9;\\\\n tmpvar_9 = ((0.5 - tmpvar_8.yx) + 0.5);\\\\n ret_3 = (texture (sampler_main, tmpvar_8.yx).xyz * clamp ((\\\\n (((texture (sampler_blur2, tmpvar_8.yx).xyz * scale2) + bias2) * 2.8)\\\\n - 0.13), 0.0, 1.0));\\\\n vec3 tmpvar_10;\\\\n tmpvar_10 = mix (ret_3, (texture (sampler_main, tmpvar_9).xyz * clamp (\\\\n ((((texture (sampler_blur2, tmpvar_9).xyz * scale2) + bias2) * 2.8) - 0.13)\\\\n , 0.0, 1.0)), vec3(0.5, 0.5, 0.5));\\\\n ret_3 = (tmpvar_10 * tmpvar_10);\\\\n ret_3 = (ret_3 * vec3(0.9, 1.6, 2.3));\\\\n ret_3 = (ret_3 * 3.0);\\\\n ret_3 = (max (tmpvar_6, (0.8 * vec3(\\\\n (0.5 * dot (ret_3, vec3(0.32, 0.49, 0.29)))\\\\n ))) - (roam_sin.xyz * roam_cos.zxy));\\\\n vec4 tmpvar_11;\\\\n tmpvar_11.w = 1.0;\\\\n tmpvar_11.xyz = ret_3;\\\\n ret = tmpvar_11.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/shifter - dark tides bdrv mix 2.json\":\n/*!****************************************************************!*\\\n !*** ./presets/converted/shifter - dark tides bdrv mix 2.json ***!\n \\****************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":0,\\\"gammaadj\\\":1.35,\\\"decay\\\":1,\\\"echo_zoom\\\":2.144269,\\\"echo_alpha\\\":0.31,\\\"echo_orient\\\":3,\\\"wave_mode\\\":7,\\\"wave_brighten\\\":0,\\\"wrap\\\":0,\\\"wave_a\\\":4.1,\\\"wave_scale\\\":5.552,\\\"wave_smoothing\\\":0.504,\\\"modwavealphastart\\\":0.71,\\\"modwavealphaend\\\":1.3,\\\"warpscale\\\":1.331,\\\"zoom\\\":0.999514,\\\"cx\\\":-1,\\\"warp\\\":0.72142,\\\"sy\\\":0.980296,\\\"wave_g\\\":0,\\\"wave_b\\\":0,\\\"ob_size\\\":0.5,\\\"ob_r\\\":1,\\\"ib_size\\\":0.5,\\\"ib_r\\\":1,\\\"ib_g\\\":0,\\\"ib_b\\\":0,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":0.85,\\\"mv_r\\\":0.5,\\\"mv_g\\\":0.5,\\\"mv_b\\\":0.5,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"textured\\\":1,\\\"y\\\":0.9,\\\"rad\\\":0.15493,\\\"tex_zoom\\\":0.77977,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":5,\\\"textured\\\":1,\\\"rad\\\":0.98608,\\\"tex_ang\\\":3.14159,\\\"tex_zoom\\\":0.999794,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":1,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"ang =sin(time/65) ;// ang + (bass*.2) + (time*.4);\\\"},{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"textured\\\":1,\\\"x\\\":0.9,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x = sin(time) * .4 + .5;\\\\n\\\\n\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"spectrum\\\":1,\\\"usedots\\\":1,\\\"additive\\\":1,\\\"scaling\\\":0.5033,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"bl = 3.8;\\\\nul = 7.9;\\\\nrate = 11.9;\\\\ncha = .01;\\\\n\\\\ngv = if(above(gv,bl), if(below(gv,ul), if(above(fps,rate),gv + cha,gv - cha), ul-.1),bl+.1);\\\\n\\\\n\\\\n\\\\nmonitor = gv;\\\\n\\\\nwave_a = 0;\\\\n\\\\ntic = min(time - tin,1);\\\\ntin = time;\\\\n\\\\nra = 10;\\\\n\\\\n\\\\ntreb_avg = tic*(treb_avg*(1/tic - ra) + ra*treb);\\\\nmid_avg = tic*(mid_avg*(1/tic - ra) + ra*mid);\\\\nbass_avg = tic*(bass_avg*(1/tic - ra) + ra*bass);\\\\n\\\\nrb = 1;\\\\nvav = tic*(vav*(1/tic - rb) + rb*(bass+treb+mid)*.33333);\\\\nq1 = treb_avg;\\\\nq2 = mid_avg;\\\\nq3 = bass_avg;\\\\n\\\\ndb = bass - bass_avg;\\\\n\\\\nit = (it + tic)*below(it,1);\\\\n\\\\nrb = .5*(1/tic);\\\\nbvb = tic*(bass*rb + (1/tic-rb)*bvb);\\\\nbd = bass - bvb;\\\\n\\\\nvm = vm - tic + swi;\\\\nswi = above(bd - vm,0);\\\\n\\\\nq4 = 1-swi;\\\\n\\\\ncm = if(above(iter,30) + equal(time,0),rand(3) + 1,cm);\\\\niter = (iter + tic)*(1-above(iter,30));\\\\nq5 = if(equal(cm,0),3,cm);\\\\n\\\\ncma = if(above(itar,5) + equal(time,0),int(vav*5),cma);\\\\nitar = (itar + tic)*(1-above(itar,5));\\\\n\\\\nq6 = int(vav*5);\\\\n\\\\n\\\\ndecay=0.97;\\\\nzoom=1.01;\\\\nsx=1;sy=1;\\\",\\\"pixel_eqs_eel\\\":\\\"warp = bass;\\\",\\\"warp\\\":\\\" shader_body { \\\\n vec3 ret_1;\\\\n ret_1 = ((texture (sampler_main, uv_orig).xyz * vec3(0.97, 1.0, 0.97)) - vec3(0.03, 0.0, 0.03));\\\\n vec4 tmpvar_2;\\\\n tmpvar_2 = texture (sampler_blur1, uv_orig);\\\\n ret_1.z = (ret_1.z + ((\\\\n (tmpvar_2.xyz * scale1)\\\\n + bias1).z * 0.45));\\\\n ret_1.x = (ret_1.x + ((\\\\n ((tmpvar_2.xyz * scale1) + bias1)\\\\n .z * 0.05) + (\\\\n ((texture (sampler_blur3, uv_orig).xyz * scale3) + bias3)\\\\n .z * 0.05)));\\\\n ret_1.z = (ret_1.z - ret_1.x);\\\\n ret_1.y = clamp (texture (sampler_pw_main, uv_orig).y, 0.0, 1.0);\\\\n ret_1 = (ret_1 * 0.98);\\\\n vec4 tmpvar_3;\\\\n tmpvar_3.w = 1.0;\\\\n tmpvar_3.xyz = ret_1;\\\\n ret = tmpvar_3.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n vec3 ret_1;\\\\n vec3 tmpvar_2;\\\\n tmpvar_2.z = 0.0;\\\\n tmpvar_2.xy = texsize.zw;\\\\n vec3 tmpvar_3;\\\\n tmpvar_3 = (tmpvar_2 * 2.5);\\\\n ret_1 = (texture (sampler_main, uv).xyz * 0.5);\\\\n ret_1 = (ret_1 + (vec3(3.4, 2.38, 1.02) * (\\\\n dot (((texture (sampler_blur1, (uv + tmpvar_3.xz)).xyz * scale1) + bias1), vec3(0.32, 0.49, 0.29))\\\\n - \\\\n dot (((texture (sampler_blur1, (uv - tmpvar_3.xz)).xyz * scale1) + bias1), vec3(0.32, 0.49, 0.29))\\\\n )));\\\\n ret_1 = (ret_1 + (vec3(0.68, 1.7, 2.38) * (\\\\n dot (((texture (sampler_blur1, (uv + tmpvar_3.zy)).xyz * scale1) + bias1), vec3(0.32, 0.49, 0.29))\\\\n - \\\\n dot (((texture (sampler_blur1, (uv - tmpvar_3.zy)).xyz * scale1) + bias1), vec3(0.32, 0.49, 0.29))\\\\n )));\\\\n ret_1 = (ret_1 * 1.5);\\\\n vec4 tmpvar_4;\\\\n tmpvar_4.w = 1.0;\\\\n tmpvar_4.xyz = ret_1;\\\\n ret = tmpvar_4.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/shifter - escape (sigur ros).json\":\n/*!*************************************************************!*\\\n !*** ./presets/converted/shifter - escape (sigur ros).json ***!\n \\*************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":1,\\\"gammaadj\\\":1,\\\"decay\\\":1,\\\"echo_zoom\\\":1,\\\"echo_alpha\\\":0.5,\\\"wave_mode\\\":7,\\\"wave_brighten\\\":0,\\\"wave_a\\\":0.005,\\\"wave_scale\\\":0.167,\\\"wave_smoothing\\\":0,\\\"modwavealphastart\\\":1,\\\"modwavealphaend\\\":1,\\\"warpscale\\\":0.107,\\\"zoomexp\\\":4.10046,\\\"warp\\\":0.01,\\\"wave_x\\\":0.95,\\\"wave_y\\\":1,\\\"ob_size\\\":0.005,\\\"ob_r\\\":1,\\\"ob_g\\\":1,\\\"ob_b\\\":1,\\\"ib_size\\\":0,\\\"ib_r\\\":1,\\\"ib_g\\\":1,\\\"ib_b\\\":1,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":0,\\\"mv_b\\\":0,\\\"mv_a\\\":0,\\\"b1ed\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"sides\\\":34,\\\"thickoutline\\\":1,\\\"textured\\\":1,\\\"x\\\":0.75,\\\"rad\\\":0.30478,\\\"tex_ang\\\":1.5708,\\\"tex_zoom\\\":0.82773,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"vx = 0;\\\\nvy = 0;\\\",\\\"frame_eqs_eel\\\":\\\"rad = .3;\\\\ntex_zoom = .28;\\\\ntex_zoom = 1/rad*tex_zoom;\\\\n\\\\nx = .5 + sin(time*.957)*.1;\\\"},{\\\"baseVals\\\":{\\\"sides\\\":74,\\\"thickoutline\\\":1,\\\"textured\\\":1,\\\"x\\\":0.25,\\\"rad\\\":0.45378,\\\"tex_zoom\\\":0.5033,\\\"g\\\":1,\\\"b\\\":1,\\\"b2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"rad = .3;\\\\ntex_zoom = .3;\\\\ntex_zoom = 1/rad*tex_zoom;\\\\n\\\\nx = .5 + sin(time)*.15;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":84,\\\"additive\\\":1,\\\"thickoutline\\\":1,\\\"num_inst\\\":3,\\\"rad\\\":0.01,\\\"tex_zoom\\\":0.5033,\\\"r\\\":0,\\\"b\\\":0.2,\\\"a\\\":0.6,\\\"g2\\\":0,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"vx = 0;\\\\nvy = 0;\\\",\\\"frame_eqs_eel\\\":\\\"ti = q2 + instance*2.45;\\\\n\\\\nx = .5 + (.26*sin(ti*.95) + .14*sin(ti*2.80))*1.3;\\\\n//y = .5 + (.26*cos(ti*1.05) + .14*cos(ti*2.13))*.5;\\\\ny = .5;\\\\n\\\\nym = (q3 + instance*1.33)*.5;\\\\nym = ym-int(ym);\\\\n\\\\ny = y + (ym-.5)*2;\\\\n\\\\nrad = bass*bass*.25;\\\\nrad = q1*(.3+max(0,y)*.5);\\\"},{\\\"baseVals\\\":{\\\"sides\\\":74,\\\"additive\\\":1,\\\"rad\\\":0.16777,\\\"r2\\\":1,\\\"g2\\\":0,\\\"a2\\\":1,\\\"border_b\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"ti = -time*.3;\\\\nx = .5 + .3*sin(ti);\\\\ny = .5 + .3*cos(ti);\\\\n\\\\nti = -time*2.3;\\\\nx = x + .2*sin(ti);\\\\ny = y + .2*cos(ti);\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"samples\\\":41,\\\"usedots\\\":1,\\\"additive\\\":1,\\\"scaling\\\":0.01,\\\"smoothing\\\":0,\\\"g\\\":0},\\\"init_eqs_eel\\\":\\\"t8 = 1;\\\\nt1 = q5;\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"x = rand(1001)*.001;\\\\ny = rand(1001)*.001;\\\\n\\\\n//r = rand(1001)*.001;\\\\ng=above(rand(1001)*.001,.9)*.5;\\\\nb = 0;\\\\nr = 0;\\\\n\\\"},{\\\"baseVals\\\":{\\\"samples\\\":61,\\\"additive\\\":1,\\\"scaling\\\":0.0124,\\\"smoothing\\\":0,\\\"b\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t8 = 1;\\\\nt1 = q5;\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"x = (sample-.5)*.02 + .2;\\\\ny = .5;\\\\nr = 1;\\\\ng = 1;\\\\nb = 1;\\\"},{\\\"baseVals\\\":{\\\"samples\\\":31,\\\"usedots\\\":1,\\\"thick\\\":1,\\\"scaling\\\":0.01303,\\\"smoothing\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t8 = 1;\\\\nt1 = q5;\\\",\\\"frame_eqs_eel\\\":\\\"t1 = q5;\\\\nt2 = q4;\\\\nt3 = q6;\\\",\\\"point_eqs_eel\\\":\\\"t8 = -t8;\\\\nd1 = 0.15 + t8*0.01 - value1*0.1*(t8+1);\\\\ndir1 = t2;\\\\ndir2 = t2*0.5 + t1*3/2 - t3*3;\\\\ndir3 = sample*asin(1)*4 + t3 - t2*5/6 + t1*3/2;\\\\n\\\\nx = 0.5 + sin(dir1)*0.1 + sin(dir2)*0.05 + sin(dir3)*d1;\\\\ny = 0.5 + cos(dir1)*0.1 + cos(dir2)*0.05 + cos(dir3)*d1;\\\\ny = (y-0.5)*1.2 + 0.5;\\\"},{\\\"baseVals\\\":{\\\"samples\\\":511,\\\"sep\\\":4,\\\"thick\\\":1,\\\"additive\\\":1,\\\"scaling\\\":0.02345,\\\"smoothing\\\":0,\\\"a\\\":0.99,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t2 = 0;\\\\nt3 = 0;\\\\nt4 = 0;\\\\nab = 1;\\\",\\\"frame_eqs_eel\\\":\\\"t1 = q4*0.75;\\\\nt2 = q5*0.75;\\\\nt3 = q6*0.75;\\\\nt4 = q4*0.75;\\\\nt5 = q5*0.75;\\\\nt6 = q6*0.75;\\\\nt8 = 1;\\\",\\\"point_eqs_eel\\\":\\\"\\\\npi = asin(1);\\\\nn = 80;\\\\nt8 = -t8;\\\\nrd = 0.075+0.02*(t8+1)/2;\\\\nxx = sin(sample*pi*4)*0.5 + cos(sample*pi*n)*rd*sin(sample*pi*4);\\\\nyy = cos(sample*pi*4)*0.5 + cos(sample*pi*n)*rd*cos(sample*pi*4);\\\\nzz = sin(sample*pi*n)*rd;\\\\n\\\\nd = sqrt( xx*xx + yy*yy + zz*zz)*0.004;\\\\nd1 = 1;\\\\nxx = xx*d1;\\\\nyy = yy*d1;\\\\nzz = zz*d1;\\\\n\\\\n\\\\n\\\\n\\\\nw1 = d*t4;\\\\nw2 = d*t5;\\\\nw3 = d*t6;\\\\n\\\\ns1 = sin(t1*1+w1);\\\\ns2 = sin(t2*1+w2);\\\\ns3 = sin(t3*1+w3);\\\\nc1 = cos(t1*1+w1);\\\\nc2 = cos(t2*1+w2);\\\\nc3 = cos(t3*1+w3);\\\\n\\\\nz = (c3*s1*c2 + s3*s2)*xx - (c3*s1*s2-s3*c2)*yy + c3*c1*zz;\\\\nx1 = (c1*c2*xx + c1*s2*yy - s1*zz);\\\\ny1 = ((s3*s1*c2 - c3*s2)*xx + (s3*s1*s2+c3*c2)*yy + s3*c1*zz);\\\\n\\\\na = 0.5;\\\\nzoom = 0.5*atan2(a,a+z);//0.5*(1/(z+a));\\\\nx = 0.5 + zoom*x1;\\\\ny = 0.5 + zoom*y1;\\\\n\\\\npi3 = 3.1415*2*0.3333;\\\\nt = -z*2 - time*0.8;//sample*pi*4-0*time +t4*3;\\\\nc=2;\\\\nr = sin(t)*c;\\\\n\\\\ng = sin(t+pi3)*c;\\\\n\\\\nb = sin(t-pi3)*c;\\\\n\\\\nj = 0.71;\\\\n//r = 0.5+xx*j;\\\\n//g = 0.5+yy*j;\\\\n//b = 0.5+zz*j;\\\\n\\\\nr = if(above(r,1),1,r);\\\\nr = if(below(r,0),0,r);\\\\ng = if(above(g,1),1,g);\\\\ng = if(below(g,0),0,g);\\\\nb = if(above(b,1),1,b);\\\\nb = if(below(b,0),0,b);\\\\n\\\\na = sigmoid(-z,7)+0.;\\\\n\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"zoom = 1;\\\\ndecay = 1;\\\\nwarp = 0;\\\\nwave_a = 0;\\\\n\\\\ntic = min(time-tin,.1);\\\\ntin = time;\\\\n\\\\ntb = tb + tic*bass*bass*.1 + tic*.2;\\\\nq2 = tb;\\\\n\\\\nt2 = t2 + tic*bass*bass*.2 + tic*.1;\\\\nq3 = t2;\\\\n\\\\nbav = bav + (bass-bav)*tic*.01;\\\\n\\\\nq1 = bass-bav;\\\\nq1 = pow(q1,2);\\\\nq1 = bass*bass;\\\\nq1 = q1*.5;\\\\n\\\\nmonitor = bass - bav;\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\" shader_body { \\\\n vec3 ret_1;\\\\n ret_1 = clamp (((texture (sampler_pw_main, uv_orig).xyz * vec3(1.0, 1.0, 0.97)) - vec3(0.0, 0.0, 0.001)), 0.0, 1.0);\\\\n vec4 tmpvar_2;\\\\n tmpvar_2 = texture (sampler_pw_main, (uv_orig + ((\\\\n (texture (sampler_noise_hq, fract(((\\\\n ((uv_orig * texsize.xy) * texsize_noise_lq.zw)\\\\n + rand_frame.xy) * 8.0))).xy - 0.5)\\\\n * 6.0) * texsize.zw)));\\\\n vec3 tmpvar_3;\\\\n tmpvar_3 = tmpvar_2.xyz;\\\\n float tmpvar_4;\\\\n vec2 x_5;\\\\n x_5 = (ret_1.xy - uv_orig);\\\\n tmpvar_4 = sqrt(dot (x_5, x_5));\\\\n float tmpvar_6;\\\\n vec2 x_7;\\\\n x_7 = (tmpvar_2.xy - uv_orig);\\\\n tmpvar_6 = sqrt(dot (x_7, x_7));\\\\n if ((tmpvar_4 > tmpvar_6)) {\\\\n ret_1.xy = tmpvar_3.xy;\\\\n ret_1.z = tmpvar_3.z;\\\\n };\\\\n ret_1.xy = (ret_1.xy * pow (ret_1.z, 0.01));\\\\n vec4 tmpvar_8;\\\\n tmpvar_8.w = 1.0;\\\\n tmpvar_8.xyz = ret_1;\\\\n ret = tmpvar_8.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n vec3 tmpvar_1;\\\\n tmpvar_1 = texture (sampler_main, uv).zzz;\\\\n vec4 tmpvar_2;\\\\n tmpvar_2.w = 1.0;\\\\n tmpvar_2.xyz = ((pow (\\\\n mix (vec3((((texture (sampler_blur1, uv).xyz * scale1) + bias1).z + ((texture (sampler_blur3, uv).xyz * scale3) + bias3).z)), tmpvar_1, tmpvar_1)\\\\n , vec3(8.0, 2.0, 0.8)) * 1.25) - 0.25);\\\\n ret = tmpvar_2.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/shifter - liquid circuitry - conjugoth.json\":\n/*!***********************************************************************!*\\\n !*** ./presets/converted/shifter - liquid circuitry - conjugoth.json ***!\n \\***********************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":2,\\\"gammaadj\\\":1,\\\"decay\\\":1,\\\"echo_zoom\\\":1,\\\"echo_alpha\\\":0.5,\\\"wave_mode\\\":2,\\\"wave_brighten\\\":0,\\\"wave_a\\\":1,\\\"wave_scale\\\":0,\\\"wave_smoothing\\\":0.9,\\\"wave_mystery\\\":0.173,\\\"warpscale\\\":0.107,\\\"zoomexp\\\":4.10046,\\\"warp\\\":0.01,\\\"wave_g\\\":0,\\\"wave_b\\\":0,\\\"wave_x\\\":0.448,\\\"wave_y\\\":0.122,\\\"ob_size\\\":0.005,\\\"ob_r\\\":1,\\\"ob_g\\\":1,\\\"ob_b\\\":1,\\\"ib_size\\\":0,\\\"ib_r\\\":1,\\\"ib_g\\\":1,\\\"ib_b\\\":1,\\\"mv_x\\\":1,\\\"mv_y\\\":1,\\\"mv_dx\\\":0.087,\\\"mv_dy\\\":0.343,\\\"mv_l\\\":1.663,\\\"mv_r\\\":0.89,\\\"mv_g\\\":0.03,\\\"mv_b\\\":0.881,\\\"mv_a\\\":0.199,\\\"b1ed\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"thickoutline\\\":1,\\\"textured\\\":1,\\\"rad\\\":1.32775,\\\"tex_zoom\\\":0.57959,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":1,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"border_r = border_r + 1.5*sin(q2*1.13);\\\\nborder_b = border_b + 0.5*sin(q2*1.23);\\\\nborder_g = border_g + 0.5*sin(q2*1.33);\\\\n//ang = 0.503 + (bass_att * 0.04);\\\\nmy_ang = my_ang + (0.005 + (0.001 * bass));\\\\nang = my_ang;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"//begin beat code\\\\nvolume = 0.3*(bass+mid);\\\\nbeatrate = equal(beatrate,0) + (1-equal(beatrate,0))*(below(volume,0.01) + (1-below(volume,0.01))*beatrate);\\\\nlastbeat = lastbeat + equal(lastbeat,0)*time;\\\\nmeanbass_att = 0.05*(meanbass_att*19 + bass_att);\\\\npeakbass_att = max(bass_att,peakbass_att);\\\\nbeat = above(volume,0.8)*below(peakbass_att - bass_att, 0.05*peakbass_att)*above(time - lastbeat, 0.1 + 0.5*(beatrate - 0.1));\\\\nbeatrate = max(if(beat,if(below(time-lastbeat,2*beatrate),0.1*(beatrate*9 + time - lastbeat),beatrate),beatrate),0.1);\\\\n//Adjust responsiveness: To increase responsiveness, set the \\\\\\\"0.96 and \\\\\\\"0.996\\\\\\\" on the next line to slightly lower values. Higher values decrease responsiveness.\\\\npeakbass_att = beat*bass_att + (1-beat)*peakbass_att*(above(time - lastbeat, 2*beatrate)*0.96 + (1-above(time - lastbeat, 2*beatrate))*0.996);\\\\nlastbeat = beat*time + (1-beat)*lastbeat;\\\\npeakbass_att = max(peakbass_att,1.1*meanbass_att);\\\\n//end beat code\\\\n\\\\nzoom = 1;\\\\ndecay = 1;\\\\nwarp = 0;\\\\nwave_a = 0;\\\\n\\\\ntic = min(time-tin,.1);\\\\ntin = time;\\\\n\\\\nq2 = 1;\\\\n\\\\nq1=1;\\\\nvol = vol + ((alt + bass + mid)/3-vol)*tic*1;\\\\nq5 = vol*vol*vol*2;\\\\n\\\\n\\\\nq8 = sin(time)*.5;\\\\nq9 = sin(time*.75)*.5;\\\\n\\\\nsw = abs(sw - beat);\\\\nan = an + tic*.5*(1-2*sw);\\\\n\\\\n\\\\nq7 = 1+(pow(q8,2) + pow(q9,2))*1;\\\\nq10 = sin(an);\\\\nq11 = cos(an);\\\\n\\\\nsp = sp + tic*vol*vol*.5;\\\\n\\\\nq12 = sp;\\\\n\\\\nmonitor = q12;\\\\nvol2=bass+treb+mid;\\\\nmtime=mtime+vol2;\\\\nq1=3-sin(mtime*.01)*.1;\\\",\\\"pixel_eqs_eel\\\":\\\"//zoom = pow(rad,2)+.01;\\\",\\\"warp\\\":\\\" shader_body { \\\\n vec3 ret_1;\\\\n vec3 tmpvar_2;\\\\n tmpvar_2 = (texture (sampler_noise_lq, ((\\\\n ((texsize.xy * texsize_noise_lq.zw).x * uv)\\\\n / 2.0) + q23)) + 1.0).xyz;\\\\n vec3 tmpvar_3;\\\\n tmpvar_3 = (((texture (sampler_blur1, uv).xyz * scale1) + bias1) - 0.3);\\\\n vec2 tmpvar_4;\\\\n tmpvar_4.x = (0.3 * tmpvar_3.x);\\\\n tmpvar_4.y = tmpvar_3.y;\\\\n ret_1 = ((-0.4 * (\\\\n ((texture (sampler_blur1, ((uv / 4.0) + (0.4 * tmpvar_4))).xyz * scale1) + bias1)\\\\n - \\\\n (tmpvar_2 * 0.1)\\\\n )) + (texture (sampler_main, (uv + \\\\n (tmpvar_3 * 0.01)\\\\n .xy)).xyz + (tmpvar_2 * 0.1)));\\\\n float tmpvar_5;\\\\n tmpvar_5 = (1.0 - ((0.01 * q28) * (q28 * rad)));\\\\n ret_1 = (ret_1 * (0.98 * (tmpvar_5 * tmpvar_5)));\\\\n ret_1 = (ret_1 - 0.04);\\\\n vec4 tmpvar_6;\\\\n tmpvar_6.w = 1.0;\\\\n tmpvar_6.xyz = ret_1;\\\\n ret = tmpvar_6.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n vec2 uv3_1;\\\\n vec2 uvm_2;\\\\n vec3 ret_3;\\\\n uvm_2 = (((\\\\n ((uv - 0.5) * q7)\\\\n * \\\\n (1.0/((((1.0 - \\\\n (rad * 0.1)\\\\n ) + (q9 * \\\\n (uv.x - 0.5)\\\\n )) + (q8 * (uv.y - 0.5)))))\\\\n ) + 0.5) - 0.5);\\\\n uvm_2 = (((\\\\n (q10 * uvm_2)\\\\n + \\\\n ((vec2(1.0, -1.0) * q11) * uvm_2.yx)\\\\n ) * aspect.yw) + 0.5);\\\\n uvm_2 = (abs((\\\\n fract(((uvm_2 + q12) * 0.5))\\\\n - 0.5)) * 2.0);\\\\n uv3_1 = (((texture (sampler_main, uvm_2).zx - 0.37) * 0.13) + uvm_2);\\\\n vec3 tmpvar_4;\\\\n tmpvar_4.x = (roam_cos.x * 0.3);\\\\n tmpvar_4.y = (roam_cos.z * 0.2);\\\\n tmpvar_4.z = (roam_sin.y * 0.4);\\\\n ret_3 = (texture (sampler_pw_main, uvm_2).yzx + tmpvar_4);\\\\n ret_3 = (pow (mix (vec3(\\\\n ((((texture (sampler_blur1, uv3_1).xyz * scale1) + bias1).x + ((texture (sampler_blur3, uv3_1).xyz * scale3) + bias3).z) + (0.1 * roam_cos.y))\\\\n ), ret_3, ret_3), vec3(0.3, 2.0, 1.0)) - 0.25);\\\\n ret_3 = (ret_3 * ((texture (sampler_blur3, uv3_1).xyz * scale3) + bias3).y);\\\\n vec4 tmpvar_5;\\\\n tmpvar_5.w = 1.0;\\\\n tmpvar_5.xyz = ret_3;\\\\n ret = tmpvar_5.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/suksma - Hexcollie - Julian Carnival - shimmy dumb grid.json\":\n/*!****************************************************************************************!*\\\n !*** ./presets/converted/suksma - Hexcollie - Julian Carnival - shimmy dumb grid.json ***!\n \\****************************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":1,\\\"gammaadj\\\":1,\\\"decay\\\":0.5,\\\"echo_zoom\\\":1.007,\\\"echo_orient\\\":3,\\\"wave_mode\\\":7,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":0.64,\\\"wave_smoothing\\\":0.27,\\\"warpanimspeed\\\":0.01,\\\"warpscale\\\":0.01,\\\"zoom\\\":9.86086,\\\"warp\\\":0.01,\\\"wave_r\\\":0.5,\\\"wave_g\\\":0.5,\\\"wave_b\\\":0.5,\\\"wave_y\\\":0.96,\\\"ob_size\\\":0.015,\\\"ob_r\\\":0.84,\\\"ob_g\\\":0.7,\\\"ob_b\\\":1,\\\"ob_a\\\":0.18,\\\"ib_size\\\":0.5,\\\"ib_r\\\":0.98,\\\"ib_g\\\":0.27,\\\"ib_b\\\":0.24,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":0,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":32,\\\"rad\\\":0.2,\\\"b\\\":0.4,\\\"a\\\":0.5,\\\"a2\\\":0.2,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"ang = time*0.4;;\\\\nx = 0.5 + 0.3*cos(time*1.23) + 0.03*cos(time*0.7);\\\\ny = 0.5 + 0.3*sin(time*1.43) + 0.03*sin(time*0.7);\\\\nr =0.5 + 0.5*sin(q8*0.613 + 1);\\\\ng = 0.5 + 0.5*sin(q8*0.763 + 2);\\\\nb = 0.5 + 0.5*sin(q8*0.771 + 5);\\\\nr2 = 0.5 + 0.5*sin(q8*0.635 + 4);\\\\ng2 = 0.5 + 0.5*sin(q8*0.616+ 1);\\\\nb2 = 0.5 + 0.5*sin(q8*0.538 + 3);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":32,\\\"rad\\\":0.2,\\\"a\\\":0.5,\\\"a2\\\":0.2},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"ang = time*0.4;;\\\\nx = 0.5 + 0.3*cos(time*1.104) + 0.03*cos(time*0.7);\\\\ny = 0.5 + 0.3*sin(time*1.27) + 0.03*sin(time*0.7);\\\\nr =0.5 + 0.5*sin(q8*0.613 + 1);\\\\ng = 0.5 + 0.5*sin(q8*0.763 + 2);\\\\nb = 0.5 + 0.5*sin(q8*0.771 + 5);\\\\nr2 = 0.5 + 0.5*sin(q8*0.635 + 4);\\\\ng2 = 0.5 + 0.5*sin(q8*0.616+ 1);\\\\nb2 = 0.5 + 0.5*sin(q8*0.538 + 3);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"rad\\\":0.2,\\\"a\\\":0.5,\\\"a2\\\":0.2},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"ang = time*0.4;;\\\\nx = 0.5 + 0.3*cos(time*1.23) + 0.03*cos(time*0.9);\\\\ny = 0.5 + 0.3*sin(time*1.18) + 0.03*sin(time*0.9);\\\\nr =0.5 + 0.5*sin(q8*0.413 + 1);\\\\ng = 0.5 + 0.5*sin(q8*0.363 + 2);\\\\nb = 0.5 + 0.5*sin(q8*0.871 + 5);\\\\nr2 = 0.5 + 0.5*sin(q8*0.835 + 4);\\\\ng2 = 0.5 + 0.5*sin(q8*0.686+ 1);\\\\nb2 = 0.5 + 0.5*sin(q8*0.938 + 3);\\\\nsides = 360;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"mv_x=64;mv_y=48;\\\\nnut=0;\\\\nstp=0;stq=0;\\\\nrtp=0;rtq=0;\\\\nwvr=0;\\\\ndecay=0;\\\\ndcsp=0\\\",\\\"frame_eqs_eel\\\":\\\"//per frame less reactive volume for all unused q vars, put before other q vars are set for cop out mashing\\\\nvb = vb*0.95 + (1-vb)*pow(bass_att*treb_att*mid_att,2)*0.02;\\\\nvvb = vvb*0.95 + (1-vvb)*vb*0.01;\\\\nvm = vm*0.95 + (1-vm)*pow(mid_att,2)*0.02;\\\\nvvm = vvm*0.95 + (1-vvm)*vm*0.01;\\\\nvt = vt*0.95 + (1-vt)*pow(treb_att,2)*0.02;\\\\nvvt = vvt*0.95 + (1-vvt)*vt*0.01;\\\\nvvb = min(1,max(0,vvb));\\\\nvvm = min(1,max(0,vvm));\\\\nvvt = min(1,max(0,vvt));\\\\nq1 = vvb*2;//0.5 + vb - vvb;\\\\nq2 = vvm*2;//0.5 + vm - vvm;\\\\nq3 = vvt*2;//0.5 + vt - vvt;\\\\nv=2;\\\\nbb = bb - vvb*v;\\\\nmm = mm - vvm*v;\\\\ntt = tt - vvt*v;\\\\nq4 = -bb;\\\\nq5 = -mm;\\\\nq6 = -tt;\\\\nq4=(q1+q2+q3)*5;\\\\nq5=(q1+q2+q3)*5;\\\\nq6=(q1+q2+q3)*5;\\\\nq7=(q1+q2+q3)*1;\\\\nq8=(q1+q2+q3)*5;\\\\nq9=(q1+q2+q3)*5;\\\\nq10=(q1+q2+q3)*5;\\\\nq11=(q1+q2+q3)*5;\\\\nq12=(q1+q2+q3)*5;\\\\nq13=(q1+q2+q3)*5;\\\\nq14=(q1+q2+q3)*5;\\\\nq15=(q1+q2+q3)*5;\\\\nq16=(q1+q2+q3)*5;\\\\nq17=(q1+q2+q3)*5;\\\\nq18=(q1+q2+q3)*5;\\\\nq19=(q1+q2+q3)*5;\\\\nq20=(q1+q2+q3)*5;\\\\nq21=(q1+q2+q3)*5;\\\\nq22=(q1+q2+q3)*5;\\\\nq23=(q1+q2+q3)*5;\\\\nq24=(q1+q2+q3)*5;\\\\nq25=(q1+q2+q3)*5;\\\\nq26=(q1+q2+q3)*5;\\\\nq27=(q1+q2+q3)*5;\\\\nq28=(q1+q2+q3)*5;\\\\nq29=(q1+q2+q3)*5;\\\\nq30=(q1+q2+q3)*5;\\\\nq31=(q1+q2+q3)*5;\\\\nq32=(q1+q2+q3)*5;\\\\n\\\\necho_orient=1 + above(sin(time/2), 0 );\\\\nwrap=above(sin(time/1), 0 );\\\\nwarp=0.0;\\\\nzoom=1.00 + sin(time/1)/30;\\\\nmv_x=sin(time/10)*12 + 52;\\\\nmv_y=cos(time/10)*8 + 40;\\\\nsparkadv=sparkadv-0.03 + below(sparkadv, 1);\\\\ngamma=1 + bass*bass_att\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\" shader_body { \\\\n float conway_1;\\\\n vec3 ret_2;\\\\n vec2 tmpvar_3;\\\\n tmpvar_3.x = (((\\\\n ((texture (sampler_blur2, (uv + vec2(0.02, 0.0))).xyz * scale2) + bias2)\\\\n - \\\\n ((texture (sampler_blur2, (uv - vec2(0.02, 0.0))).xyz * scale2) + bias2)\\\\n ).y * 1280.0) * texsize.z);\\\\n tmpvar_3.y = (((\\\\n ((texture (sampler_blur2, (uv + vec2(0.0, 0.02))).xyz * scale2) + bias2)\\\\n - \\\\n ((texture (sampler_blur2, (uv - vec2(0.0, 0.02))).xyz * scale2) + bias2)\\\\n ).y * 1024.0) * texsize.w);\\\\n ret_2.y = texture (sampler_pc_main, (uv - (tmpvar_3 * 0.004))).y;\\\\n ret_2.y = (ret_2.y + ((\\\\n ((ret_2.y - ((texture (sampler_blur1, uv).xyz * scale1) + bias1).y) - 0.1)\\\\n * 0.1) + 0.02));\\\\n vec2 tmpvar_4;\\\\n tmpvar_4 = (vec2(0.0, 1.0) * texsize.zw);\\\\n ret_2.z = (texture (sampler_fc_main, (uv - tmpvar_4)).z - 0.004);\\\\n conway_1 = (texture (sampler_pw_main, (uv_orig - texsize.zw)).x + texture (sampler_pw_main, (uv_orig + (vec2(0.0, -1.0) * texsize.zw))).x);\\\\n conway_1 = (conway_1 + texture (sampler_pw_main, (uv_orig + (vec2(1.0, -1.0) * texsize.zw))).x);\\\\n conway_1 = (conway_1 + texture (sampler_pw_main, (uv_orig + (vec2(-1.0, 0.0) * texsize.zw))).x);\\\\n conway_1 = (conway_1 + texture (sampler_pw_main, (uv_orig + (vec2(1.0, 0.0) * texsize.zw))).x);\\\\n conway_1 = (conway_1 + texture (sampler_pw_main, (uv_orig + (vec2(-1.0, 1.0) * texsize.zw))).x);\\\\n conway_1 = (conway_1 + texture (sampler_pw_main, (uv_orig + tmpvar_4)).x);\\\\n conway_1 = (conway_1 + texture (sampler_pw_main, (uv_orig + texsize.zw)).x);\\\\n conway_1 = (conway_1 - fract(conway_1));\\\\n float tmpvar_5;\\\\n tmpvar_5 = clamp (texture (sampler_pc_main, uv_orig).x, 0.0, 1.0);\\\\n ret_2.x = (clamp ((1.0 - \\\\n abs((conway_1 - 3.0))\\\\n ), 0.0, 1.0) * (1.0 - tmpvar_5));\\\\n ret_2.x = (ret_2.x + (clamp (\\\\n max ((1.0 - abs((conway_1 - 2.0))), (1.0 - abs((conway_1 - 3.0))))\\\\n , 0.0, 1.0) * tmpvar_5));\\\\n vec4 tmpvar_6;\\\\n tmpvar_6.w = 1.0;\\\\n tmpvar_6.xyz = ret_2;\\\\n ret = tmpvar_6.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n vec2 moebius_1;\\\\n vec3 ret_2;\\\\n vec2 tmpvar_3;\\\\n tmpvar_3.x = q11;\\\\n tmpvar_3.y = q12;\\\\n vec2 tmpvar_4;\\\\n tmpvar_4.x = q17;\\\\n tmpvar_4.y = q18;\\\\n vec2 tmpvar_5;\\\\n vec2 tmpvar_6;\\\\n tmpvar_6 = (uv - 0.5);\\\\n tmpvar_5 = (tmpvar_6 * aspect.xy);\\\\n vec2 tmpvar_7;\\\\n tmpvar_7.x = ((tmpvar_5.x * q15) - (tmpvar_5.y * q16));\\\\n tmpvar_7.y = ((tmpvar_5.x * q16) - (tmpvar_5.y * q15));\\\\n vec2 tmpvar_8;\\\\n tmpvar_8 = (tmpvar_7 + tmpvar_4);\\\\n vec2 tmpvar_9;\\\\n tmpvar_9.x = ((q13 * tmpvar_8.x) + (q14 * tmpvar_8.y));\\\\n tmpvar_9.y = ((q14 * tmpvar_8.x) - (q13 * tmpvar_8.y));\\\\n moebius_1 = (((tmpvar_9 / \\\\n ((tmpvar_8.x * tmpvar_8.x) + (tmpvar_8.y * tmpvar_8.y))\\\\n ) + tmpvar_3) * 0.5);\\\\n float tmpvar_10;\\\\n tmpvar_10 = sqrt(dot (moebius_1, moebius_1));\\\\n moebius_1 = (0.5 + ((\\\\n (1.0 - abs(((\\\\n fract((moebius_1 * 0.5))\\\\n * 2.0) - 1.0)))\\\\n - 0.5) * 0.95));\\\\n vec2 tmpvar_11;\\\\n tmpvar_11 = (0.5 + (tmpvar_6 * 0.2));\\\\n ret_2 = (texture (sampler_main, tmpvar_11).z * vec3(0.4, 0.0, 0.7));\\\\n ret_2 = (mix (ret_2, vec3(0.0, 1.0, 1.0), vec3(clamp (texture (sampler_fc_main, moebius_1).y, 0.0, 1.0))) * (1.4 - pow (\\\\n (tmpvar_10 * 0.8)\\\\n , 0.3)));\\\\n ret_2 = (mix (mix (\\\\n mix (ret_2, vec3(4.0, 1.0, 0.0), vec3(((clamp (\\\\n (texture (sampler_fc_main, tmpvar_11).y - texture (sampler_pc_main, tmpvar_11).y)\\\\n , 0.0, 1.0) * 4.0) * (tmpvar_10 * tmpvar_10))))\\\\n , vec3(-4.0, -4.0, -4.0), texture (sampler_main, tmpvar_11).xxx), vec3(2.0, 2.0, 2.0), vec3((texture (sampler_pc_main, tmpvar_11).x * 0.75))) - (roam_sin.zyx * roam_cos.ywx));\\\\n vec4 tmpvar_12;\\\\n tmpvar_12.w = 1.0;\\\\n tmpvar_12.xyz = ret_2;\\\\n ret = tmpvar_12.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/suksma - Rovastar - Sunflower Passion (Enlightment Mix)_Phat_edit + flexi und martin shaders - circumflex in character classes in regular expression.json\":\n/*!*************************************************************************************************************************************************************************************!*\\\n !*** ./presets/converted/suksma - Rovastar - Sunflower Passion (Enlightment Mix)_Phat_edit + flexi und martin shaders - circumflex in character classes in regular expression.json ***!\n \\*************************************************************************************************************************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":4,\\\"gammaadj\\\":1.98,\\\"echo_zoom\\\":2.448,\\\"echo_alpha\\\":0.5,\\\"wave_thick\\\":1,\\\"wrap\\\":0,\\\"wave_a\\\":3.645,\\\"wave_scale\\\":1.951,\\\"wave_smoothing\\\":0.5,\\\"wave_mystery\\\":-0.5,\\\"warpscale\\\":2.853,\\\"zoomexp\\\":2.1,\\\"zoom\\\":1.025,\\\"warp\\\":1.29077,\\\"wave_g\\\":0,\\\"wave_b\\\":0,\\\"ob_size\\\":0,\\\"ob_a\\\":1,\\\"ib_size\\\":0,\\\"ib_r\\\":0,\\\"ib_g\\\":0,\\\"ib_b\\\":0,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":0,\\\"mv_b\\\":0,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":100,\\\"rad\\\":0.13518,\\\"g2\\\":0,\\\"a2\\\":1,\\\"border_r\\\":0,\\\"border_g\\\":0,\\\"border_b\\\":0,\\\"border_a\\\":1},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x = 0.3 + 0.05*sin(0.89*q8);\\\\ny = 0.4 - 0.05*cos(0.77*q8);\\\\n\\\\nr = 0.25+0.25*sin(time*0.7679);\\\\ng = 0.25+0.25*sin(time*0.8079);\\\\nb = 0.25+0.25*sin(time*0.7339);\\\\nr2 = 0.25+0.25*sin(time*0.6979);\\\\ng2 = 0.25+0.25*sin(time*0.849);\\\\nb2 = 0.25+0.25*sin(time*0.8079);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":100,\\\"rad\\\":0.06623,\\\"g2\\\":0,\\\"a2\\\":1,\\\"border_r\\\":0,\\\"border_g\\\":0,\\\"border_b\\\":0,\\\"border_a\\\":1},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x = 0.3 - 0.05*sin(0.7089*q8);\\\\ny = 0.4 + 0.05*cos(0.5077*q8);\\\\n\\\\nr = 0.25+0.25*sin(time*0.6479);\\\\ng = 0.25+0.25*sin(time*0.5079);\\\\nb = 0.25+0.25*sin(time*0.9339);\\\\nr2 = 0.25+0.25*sin(time*0.779);\\\\ng2 = 0.25+0.25*sin(time*0.707);\\\\nb2 = 0.25+0.25*sin(time*0.747);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":100,\\\"rad\\\":0.03646,\\\"g2\\\":0,\\\"a2\\\":1,\\\"border_r\\\":0,\\\"border_g\\\":0,\\\"border_b\\\":0,\\\"border_a\\\":1},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x = 0.3 + 0.05*sin(0.679*q8);\\\\ny = 0.4 - 0.05*cos(0.877*q8);\\\\n\\\\nr = 0.25+0.25*sin(time*0.5679);\\\\ng = 0.25+0.25*sin(time*0.4079);\\\\nb = 0.25+0.25*sin(time*1.1339);\\\\nr2 = 0.25+0.25*sin(time*0.9979);\\\\ng2 = 0.25+0.25*sin(time*0.891);\\\\nb2 = 0.25+0.25*sin(time*0.713);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":100,\\\"rad\\\":0.0122,\\\"g2\\\":0,\\\"a2\\\":1,\\\"border_r\\\":0,\\\"border_g\\\":0,\\\"border_b\\\":0,\\\"border_a\\\":1},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x = 0.3 + 0.05*sin(0.916*q8);\\\\ny = 0.4 - 0.05*cos(0.977*q8);\\\\n\\\\nr = 0.25+0.25*sin(time*1.1679);\\\\ng = 0.25+0.25*sin(time*1.18079);\\\\nb = 0.25+0.25*sin(time*1.17339);\\\\nr2 = 0.25+0.25*sin(time*1.16979);\\\\ng2 = 0.25+0.25*sin(time*1.1849);\\\\nb2 = 0.25+0.25*sin(time*1.81079);\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"//per frame less reactive volume for all unused q vars, put before other q vars are set for cop out mashing\\\\nvb = vb*0.95 + (1-vb)*pow(bass_att,2)*0.02;\\\\nvvb = vvb*0.95 + (1-vvb)*vb*0.01;\\\\nvm = vm*0.95 + (1-vm)*pow(mid_att,2)*0.02;\\\\nvvm = vvm*0.95 + (1-vvm)*vm*0.01;\\\\nvt = vt*0.95 + (1-vt)*pow(treb_att,2)*0.02;\\\\nvvt = vvt*0.95 + (1-vvt)*vt*0.01;\\\\nvvb = min(1,max(0,vvb));\\\\nvvm = min(1,max(0,vvm));\\\\nvvt = min(1,max(0,vvt));\\\\nq1 = vvb*2;//0.5 + vb - vvb;\\\\nq2 = vvm*2;//0.5 + vm - vvm;\\\\nq3 = vvt*2;//0.5 + vt - vvt;\\\\nq4=(q1+q2+q3)*5;\\\\nq5=(q1+q2+q3)*5;\\\\nq6=(q1+q2+q3)*5;\\\\nq7=(q1+q2+q3)*5;\\\\nq8=(q1+q2+q3)*5;\\\\nq9=(q1+q2+q3)*5;\\\\nq10=(q1+q2+q3)*5;\\\\nq11=(q1+q2+q3)*5;\\\\nq12=(q1+q2+q3)*5;\\\\nq13=(q1+q2+q3)*5;\\\\nq14=(q1+q2+q3)*5;\\\\nq15=(q1+q2+q3)*5;\\\\nq16=(q1+q2+q3)*5;\\\\nq17=(q1+q2+q3)*5;\\\\nq18=(q1+q2+q3)*5;\\\\nq19=(q1+q2+q3)*5;\\\\nq20=(q1+q2+q3)*5;\\\\nq21=(q1+q2+q3)*5;\\\\nq22=(q1+q2+q3)*5;\\\\nq23=(q1+q2+q3)*5;\\\\nq24=(q1+q2+q3)*5;\\\\nq25=(q1+q2+q3)*5;\\\\nq26=(q1+q2+q3)*5;\\\\nq27=(q1+q2+q3)*5;\\\\nq28=(q1+q2+q3)*5;\\\\nq29=(q1+q2+q3)*5;\\\\nq30=(q1+q2+q3)*5;\\\\nq31=(q1+q2+q3)*5;\\\\nq32=(q1+q2+q3)*5;\\\\n\\\\n//wave_r = 0.0 + 0.000*( 0.60*sin(0.933*time) + 0.40*sin(1.045*time) );\\\\n//wave_g = 0.0 + 0.000*( 0.60*sin(0.900*time) + 0.40*sin(0.956*time) );\\\\n//wave_b = 0.0 + 0.000*( 0.60*sin(0.910*time) + 0.40*sin(0.920*time) );\\\\n//zoom = zoom + 0.01*( 0.60*sin(0.339*time) + 0.40*sin(0.276*time) );\\\\n//rot = rot + 0.010*( 0.60*sin(0.381*time) + 0.40*sin(0.579*time) );\\\\n//decay = decay - 0.01*equal(frame%6,0);\\\\nwarp=0;\\\\n//zoom =1;\\\\nrot =0;\\\\ncx=0.5;\\\\ncy=0.5;\\\\nq1 = 0.5 + 0.1*sin(time);\\\\nq2 = 0.5 - 0.1*cos(time);\\\\nwave_a =0;\\\\ndecay=.95;\\\\nq1=0.5 +0.1*sin(q8);\\\\nq2=0.5;\\\\n\\\\n\\\\nq8 = oldq8+ 0.003*(pow(1+1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,6)/fps);\\\\noldq8 =q8;\\\\nmybass = mybass + 0.01*(bass + bass_att);\\\\n\\\\n//rot =1 + 0.15*sin(mybass*0.1789);\\\\n//zoom = 1.6 + 0.1*sin(mybass*0.786);\\\\nzoom = 1.09;\\\\n//rot =0.12;\\\\n//cx = 0.4;\\\\n//cy = 0.4;\\\\nq1=0.5 +0.00*sin(0.12*q8);\\\\nq2=0.5 -0.00*cos(0.177*q8);\\\",\\\"pixel_eqs_eel\\\":\\\"myx = (x-q1)*1.1;\\\\nmyy= (y-q2)*1.1;\\\\nmyrad = (myx*myx) + (myy*myy);\\\\ndx = (0.5+0.02*sin(q8))*(myy/(myrad+1));\\\\ndy = -(0.5+0.02*sin(q8*0.897))*(myx/(myrad+1));\\\\nrd=bass*rad;\\\\nrot=rd/10;\\\\n\\\\nsy=1.02+(rad/10);\\\\nsx=sy-myrad;\\\",\\\"warp\\\":\\\" shader_body { \\\\n vec2 tmpvar_1;\\\\n tmpvar_1 = ((uv_orig - 0.5) * vec2(1.81, 1.81));\\\\n vec2 tmpvar_2;\\\\n tmpvar_2.x = ((tmpvar_1.x * tmpvar_1.x) - (tmpvar_1.y * tmpvar_1.y));\\\\n tmpvar_2.y = ((2.0 * tmpvar_1.x) * tmpvar_1.y);\\\\n vec4 tmpvar_3;\\\\n tmpvar_3.w = 1.0;\\\\n tmpvar_3.xyz = (texture (sampler_fc_main, (tmpvar_2 + vec2(0.448, 0.701))) - 0.004).xyz;\\\\n ret = tmpvar_3.xyz;\\\\n }\\\",\\\"comp\\\":\\\"vec3 xlat_mutableneu;\\\\nvec3 xlat_mutableret1;\\\\n shader_body { \\\\n vec2 uv_1;\\\\n float inten_2;\\\\n float dist_3;\\\\n vec2 uv2_4;\\\\n uv_1 = (uv - 0.5);\\\\n uv_1 = (uv_1 * aspect.xy);\\\\n float tmpvar_5;\\\\n tmpvar_5 = (time / 2.0);\\\\n dist_3 = (1.0 - fract(tmpvar_5));\\\\n inten_2 = ((sqrt(dist_3) * (1.0 - dist_3)) * 8.0);\\\\n vec2 tmpvar_6;\\\\n tmpvar_6.x = q1;\\\\n tmpvar_6.y = q2;\\\\n vec2 tmpvar_7;\\\\n tmpvar_7 = fract(((\\\\n ((3.0 * uv_1) * dist_3)\\\\n + 0.5) + (tmpvar_6 * 0.05)));\\\\n xlat_mutableneu = (texture (sampler_main, tmpvar_7).xyz - ((texture (sampler_blur1, \\\\n (tmpvar_7 + 0.003)\\\\n ).xyz * scale1) + bias1));\\\\n xlat_mutableret1 = max (vec3(0.0, 0.0, 0.0), (xlat_mutableneu * inten_2));\\\\n uv2_4.x = ((uv_1.x * -0.4990803) - (uv_1.y * 0.8665558));\\\\n uv2_4.y = ((uv_1.x * 0.8665558) + (uv_1.y * -0.4990803));\\\\n dist_3 = (1.0 - fract((0.3333333 + tmpvar_5)));\\\\n inten_2 = ((sqrt(dist_3) * (1.0 - dist_3)) * 8.0);\\\\n vec2 tmpvar_8;\\\\n tmpvar_8.x = q1;\\\\n tmpvar_8.y = q2;\\\\n vec2 tmpvar_9;\\\\n tmpvar_9 = fract(((\\\\n ((3.0 * uv2_4) * dist_3)\\\\n + 0.5) + (tmpvar_8 * 0.05)));\\\\n xlat_mutableneu = (texture (sampler_main, tmpvar_9).xyz - ((texture (sampler_blur1, \\\\n (tmpvar_9 + 0.003)\\\\n ).xyz * scale1) + bias1));\\\\n xlat_mutableret1 = max (xlat_mutableret1, (xlat_mutableneu * inten_2));\\\\n uv2_4.x = ((uv_1.x * -0.5018377) - (uv_1.y * -0.8649619));\\\\n uv2_4.y = ((uv_1.x * -0.8649619) + (uv_1.y * -0.5018377));\\\\n dist_3 = (1.0 - fract((0.6666667 + tmpvar_5)));\\\\n inten_2 = ((sqrt(dist_3) * (1.0 - dist_3)) * 8.0);\\\\n vec2 tmpvar_10;\\\\n tmpvar_10.x = q1;\\\\n tmpvar_10.y = q2;\\\\n vec2 tmpvar_11;\\\\n tmpvar_11 = fract(((\\\\n ((3.0 * uv2_4) * dist_3)\\\\n + 0.5) + (tmpvar_10 * 0.05)));\\\\n xlat_mutableneu = (texture (sampler_main, tmpvar_11).xyz - ((texture (sampler_blur1, \\\\n (tmpvar_11 + 0.003)\\\\n ).xyz * scale1) + bias1));\\\\n xlat_mutableret1 = max (xlat_mutableret1, (xlat_mutableneu * inten_2));\\\\n uv2_4.x = ((uv_1.x * 0.9999949) - (uv_1.y * -0.003185092));\\\\n uv2_4.y = ((uv_1.x * -0.003185092) + (uv_1.y * 0.9999949));\\\\n dist_3 = (1.0 - fract((1.0 + tmpvar_5)));\\\\n inten_2 = ((sqrt(dist_3) * (1.0 - dist_3)) * 8.0);\\\\n vec2 tmpvar_12;\\\\n tmpvar_12.x = q1;\\\\n tmpvar_12.y = q2;\\\\n vec2 tmpvar_13;\\\\n tmpvar_13 = fract(((\\\\n ((3.0 * uv2_4) * dist_3)\\\\n + 0.5) + (tmpvar_12 * 0.05)));\\\\n xlat_mutableneu = (texture (sampler_main, tmpvar_13).xyz - ((texture (sampler_blur1, \\\\n (tmpvar_13 + 0.003)\\\\n ).xyz * scale1) + bias1));\\\\n xlat_mutableret1 = max (xlat_mutableret1, (xlat_mutableneu * inten_2));\\\\n vec4 tmpvar_14;\\\\n tmpvar_14.w = 1.0;\\\\n tmpvar_14.xyz = (xlat_mutableret1 * 4.0);\\\\n ret = tmpvar_14.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/suksma - ed geining hateops - squeakers.json\":\n/*!************************************************************************!*\\\n !*** ./presets/converted/suksma - ed geining hateops - squeakers.json ***!\n \\************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":5,\\\"gammaadj\\\":1.7,\\\"decay\\\":1,\\\"echo_zoom\\\":2.221,\\\"echo_alpha\\\":0.6,\\\"wave_mode\\\":3,\\\"additivewave\\\":1,\\\"wave_thick\\\":1,\\\"darken\\\":1,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":0.625,\\\"wave_smoothing\\\":0.9,\\\"modwavealphastart\\\":0.88,\\\"modwavealphaend\\\":1.98,\\\"warpanimspeed\\\":0.01,\\\"warpscale\\\":0.01,\\\"fshader\\\":1,\\\"dx\\\":0.005,\\\"warp\\\":0.01,\\\"sx\\\":0.9999,\\\"sy\\\":1.0018,\\\"wave_r\\\":0,\\\"wave_g\\\":0,\\\"wave_b\\\":0,\\\"ob_size\\\":0,\\\"ob_g\\\":0.8,\\\"ob_b\\\":0.7,\\\"ib_size\\\":0.005,\\\"ib_r\\\":0,\\\"ib_g\\\":0,\\\"ib_b\\\":0.3,\\\"mv_x\\\":0,\\\"mv_y\\\":0,\\\"mv_l\\\":1,\\\"mv_r\\\":0.39,\\\"mv_g\\\":0.44,\\\"mv_b\\\":0.9},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"sides\\\":16,\\\"thickoutline\\\":1,\\\"textured\\\":1,\\\"rad\\\":0.97235,\\\"ang\\\":0.1884,\\\"tex_ang\\\":0.62832,\\\"tex_zoom\\\":0.77829,\\\"g\\\":1,\\\"b\\\":1,\\\"a\\\":0.9,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":0.5,\\\"border_r\\\":0.59,\\\"border_g\\\":0.81,\\\"border_b\\\":0.69,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"//DMT=1-below((bass_att+mid_att+treb_att)/3,0.7);\\\\n//a=DMT;\\\\n//a2=.5*DMT;\\\\n//border_a=0.4*DMT;\\\\n//atime=atime+(above( sin(time),0 )*0.02 );\\\\n//ang=0.188+((sin(atime/5)*0.5+0.5)*2.39);\\\\n//x=(sin(atime*0.3)*0.07)+0.5;\\\\n//y=(cos(atime*0.1)*0.07)+0.5;\\\\n//rad=((bass+mid+treb)/6)*1.4+0.2;\\\\n//sides=bass*16\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":5,\\\"thickoutline\\\":1,\\\"rad\\\":0.4149,\\\"tex_ang\\\":0.25133,\\\"tex_zoom\\\":1.136,\\\"r\\\":0.36,\\\"g2\\\":0,\\\"b2\\\":0.2,\\\"border_r\\\":0,\\\"border_g\\\":0,\\\"border_b\\\":0,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\\nadv=adv+(bass*bass)/15;\\\\n\\\\nr=int(rand(10))*0.1*0.5+0.5;\\\\ng=r;\\\\nb=r;\\\\n\\\\nx=int(rand(100))*0.01*0.5 + 0.25;\\\\ny=int(rand(100))*0.01*0.5 + 0.25;\\\\nrad=int(rand(100))*0.01*0.4+0.1;\\\\nang=rad\\\"},{\\\"baseVals\\\":{\\\"sides\\\":24,\\\"textured\\\":1,\\\"x\\\":0.2,\\\"y\\\":0.8,\\\"rad\\\":0.59958,\\\"tex_ang\\\":1.25664,\\\"tex_zoom\\\":0.49831,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"textured\\\":1,\\\"x\\\":0.86,\\\"y\\\":0.2,\\\"rad\\\":0.80814,\\\"tex_zoom\\\":0.45112,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":0.9,\\\"a2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"sep\\\":256,\\\"thick\\\":1,\\\"additive\\\":1,\\\"scaling\\\":100,\\\"smoothing\\\":0.9,\\\"r\\\":0,\\\"g\\\":0.7,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"x=cos(time)*0.1;\\\\ny=sin(time)*0.1\\\"},{\\\"baseVals\\\":{\\\"scaling\\\":81.95444,\\\"smoothing\\\":1,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"wave_x=1;\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"mv_x=64;mv_y=48;\\\\nnut=0;\\\\nstp=0;stq=0;\\\\nrtp=0;rtq=0;\\\\nwvr=0;\\\\ndecay=0;\\\\ndcsp=0\\\",\\\"frame_eqs_eel\\\":\\\"chng=sin(time*.5);\\\\ncthr=.9999;\\\\nmq21=if(above(chng,cthr),rand(3),mq21);\\\\nmq22=if(above(chng,cthr),rand(3),mq22);\\\\nmq23=if(above(chng,cthr),rand(3),mq23);\\\\nmq24=if(above(chng,cthr),rand(2),mq24);\\\\nmq25=if(above(chng,cthr),rand(2),mq25);\\\\nmq26=if(above(chng,cthr),rand(2),mq26);\\\\nmq27=if(above(chng,cthr),rand(1),mq27);\\\\nmq28=if(above(chng,cthr),rand(1),mq28);\\\\nmq29=if(above(chng,cthr),rand(1)*.3,mq29);\\\\nmq31=if(above(chng,cthr),rand(1)*.3,mq31);\\\\nmonitor=chng;\\\\nq21=mq21;q22=mq22;q23=mq23;q24=mq24;q25=mq25;q26=mq26;\\\\nq27=mq27;q28=mq28;q29=mq29;q31=mq31;\\\\n\\\\nmonitor=mq1;\\\\nvol=bass+treb+mid;\\\\natime=atime+vol;\\\\nq11=.4+sin(atime*.006 )*.4;\\\\nq12=.4+cos(atime*.00613828348)*.4;\\\\nq13=.4+sin(atime*.00598593455)*.4;\\\\nmonitor=q13;\\\\n\\\\ndecay=1.0;\\\\nzoom=1.009;\\\\ndx=0;dy=0;sx=1.000001;sy=0.999999;\\\\n\\\\nmv_r=.360+(((cos(time/5)*0.3)+0.5*0.5)*0.1);\\\\nmv_g=.390+(((sin(time/7)*0.3)+0.5*0.5)*0.1);\\\\nmv_b=.500+((sin((time/7)+0.9)+0.5*0.5)*0.1);\\\\n\\\\n\\\\ncx=-1;cy=2;rot=-treb*0.002;\\\\n\\\\ncx=sin(time*0.1)*1.5 + 0.5;\\\\ncy=cos(time*0.2)*1.5 + 0.5\\\",\\\"pixel_eqs_eel\\\":\\\"//adv=min( (bass*bass*bass), 1);\\\\n//warp=1*((( atan(time/3) *0.5+0.5)*3)* (x*rad)*2 )+( (y*ang)*2 )*rad;\\\\n//warp=warp*adv;\\\\n\\\\n//dx=cos(y)*0.005*(rad+2)*treb ;\\\\n//dy=sin(x)*0.005*(rad+2)*treb\\\\n\\\\n//Do people that don't do drugs make shit like this??\\\\n//flexi per vertex\\\\ncx1 = 0.5+sin(time*0.618)*0.2;\\\\ncy1 = 0.5+cos(time*1.618)*0.2;\\\\ndir = bass;\\\\nd = sqrt((x-cx1)*(x-cx1)+(y-cy1)*(y-cy1));\\\\nx1 = if( above(d,0.3),0, sin(y-cy1)*0.05*dir);\\\\ny1 = if( above(d,0.3),0, -sin(x-cx1)*0.05*dir);\\\\ncx1 = 0.5+sin(time*2.618)*0.3;\\\\ncy1 = 0.5+cos(time*3.14)*0.3;\\\\ndir = -mid*2;\\\\nd = sqrt((x-cx1)*(x-cx1)+(y-cy1)*(y-cy1));\\\\nx2 = if( above(d,0.2),0, sin(y-cy1)*0.05*dir);\\\\ny2 = if( above(d,0.2),0, -sin(x-cx1)*0.05*dir);\\\\ncx1 = 0.5+sin(-time*2.618)*0.4;\\\\ncy1 = 0.5+cos(-time*1.14)*0.4;\\\\ndir = treb*3;\\\\nd = sqrt((x-cx1)*(x-cx1)+(y-cy1)*(y-cy1));\\\\nx3 = if( above(d,0.1),0, sin(y-cy1)*0.05*dir);\\\\ny3 = if( above(d,0.1),0, -sin(x-cx1)*0.05*dir);\\\\ndx = dx+x1+x2+x3;\\\\ndy = dy+y1+y2+y3;\\\",\\\"warp\\\":\\\" shader_body { \\\\n vec2 uv_1;\\\\n vec3 ret_2;\\\\n vec2 tmpvar_3;\\\\n tmpvar_3 = (((uv_orig * texsize.xy) * (texsize_noise_lq.zw * 1.5)) + rand_frame.xy);\\\\n uv_1 = (mix (uv_orig, uv, vec2((\\\\n (dot (texture (sampler_main, mix (uv_orig, uv, vec2(4.0, 4.0))).xyz, vec3(0.32, 0.49, 0.29)) - dot (((texture (sampler_blur1, \\\\n mix (uv_orig, uv, vec2(-8.0, -8.0))\\\\n ).xyz * scale1) + bias1), vec3(0.32, 0.49, 0.29)))\\\\n * 8.0))) + ((\\\\n (texture (sampler_noise_lq, tmpvar_3) - 0.5)\\\\n .xy * texsize.zw) * 0.3));\\\\n ret_2 = ((texture (sampler_main, uv_1).xyz + (\\\\n (texture (sampler_noise_lq, tmpvar_3) - 0.5)\\\\n * 0.004).xyz) + -0.001);\\\\n vec4 tmpvar_4;\\\\n tmpvar_4 = texture (sampler_noisevol_hq, (((vec3(0.05, 0.05, 0.0) * uv_1.xyy) * (\\\\n (q27 * texsize.xyy)\\\\n * texsize_noisevol_hq.zww)) + ((time * vec3(0.0, 0.0, 1.0)) * q29)));\\\\n if (((ret_2.x > (q21 * q13)) && (ret_2.x <= (q24 * q11)))) {\\\\n ret_2.y = (ret_2.y + (tmpvar_4.x * 0.5));\\\\n };\\\\n if (((ret_2.y > (q22 * q11)) && (ret_2.y <= (q25 * q12)))) {\\\\n ret_2.z = (ret_2.z + (tmpvar_4.y * 0.5));\\\\n };\\\\n if (((ret_2.z > (q23 * q12)) && (ret_2.z <= (q26 * q13)))) {\\\\n ret_2.x = (ret_2.x + (tmpvar_4.z * 0.5));\\\\n };\\\\n ret_2 = (ret_2 - ((roam_sin.xyz * slow_roam_cos.wzy) * 0.5));\\\\n vec4 tmpvar_5;\\\\n tmpvar_5.w = 1.0;\\\\n tmpvar_5.xyz = ret_2;\\\\n ret = tmpvar_5.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n vec2 dz_1;\\\\n vec3 dy_2;\\\\n vec3 dx_3;\\\\n vec2 d_4;\\\\n vec3 ret_5;\\\\n vec2 tmpvar_6;\\\\n vec2 tmpvar_7;\\\\n tmpvar_7 = (vec2(1.0, 0.0) * texsize.zw);\\\\n tmpvar_6.x = (texture (sampler_main, (uv + tmpvar_7)).xyz - texture (sampler_main, (uv - tmpvar_7)).xyz).y;\\\\n vec2 tmpvar_8;\\\\n tmpvar_8 = (vec2(0.0, 1.0) * texsize.zw);\\\\n tmpvar_6.y = (texture (sampler_main, (uv + tmpvar_8)).xyz - texture (sampler_main, (uv - tmpvar_8)).xyz).y;\\\\n d_4 = (texsize.zw * 2.0);\\\\n dx_3 = (((2.0 * \\\\n ((texture (sampler_blur1, (uv + (vec2(1.0, 0.0) * d_4))).xyz * scale1) + bias1)\\\\n ) - (2.0 * \\\\n ((texture (sampler_blur1, (uv - (vec2(1.0, 0.0) * d_4))).xyz * scale1) + bias1)\\\\n )) * 0.5);\\\\n dy_2 = (((2.0 * \\\\n ((texture (sampler_blur1, (uv + (vec2(0.0, 1.0) * d_4))).xyz * scale1) + bias1)\\\\n ) - (2.0 * \\\\n ((texture (sampler_blur1, (uv - (vec2(0.0, 1.0) * d_4))).xyz * scale1) + bias1)\\\\n )) * 0.5);\\\\n vec2 tmpvar_9;\\\\n tmpvar_9.x = dx_3.y;\\\\n tmpvar_9.y = dy_2.y;\\\\n dz_1 = ((tmpvar_6 * 3.0) + tmpvar_9);\\\\n ret_5 = (vec3(((\\\\n pow ((sqrt(dot (dz_1, dz_1)) * 0.8), 0.7)\\\\n * 2.0) + (\\\\n ((texture (sampler_blur1, uv).xyz * scale1) + bias1)\\\\n .y * 2.0))) * vec3(0.2, 0.3, 0.6));\\\\n vec2 tmpvar_10;\\\\n tmpvar_10.x = q19;\\\\n tmpvar_10.y = q20;\\\\n vec2 tmpvar_11;\\\\n tmpvar_11 = fract(((0.5 + \\\\n (uv - 0.5)\\\\n ) + (tmpvar_10 * vec2(-1.0, 1.0))));\\\\n vec2 tmpvar_12;\\\\n tmpvar_12.x = dx_3.y;\\\\n tmpvar_12.y = dy_2.y;\\\\n vec3 tmpvar_13;\\\\n tmpvar_13 = ((mix (ret_5, vec3(3.0, 2.0, 1.0), \\\\n ((texture (sampler_blur3, (tmpvar_11 - tmpvar_12)).xyz * scale3) + bias3)\\\\n .xxx) * (vec3(1.0, 1.0, 1.0) - \\\\n ((texture (sampler_blur2, (tmpvar_11 - dz_1)).xyz * scale2) + bias2)\\\\n .xxx)) * (vec3(1.0, 1.0, 1.0) - vec3((0.75 * texture (sampler_main, tmpvar_11).x))));\\\\n ret_5 = tmpvar_13;\\\\n vec4 tmpvar_14;\\\\n tmpvar_14 = texture (sampler_noisevol_hq, (((vec3(0.05, 0.05, 0.0) * dz_1.xyy) * (\\\\n (q28 * texsize.xyy)\\\\n * texsize_noisevol_hq.zww)) + ((time * vec3(0.0, 0.0, 1.0)) * q31)));\\\\n if (((tmpvar_13.x > (q26 * q13)) && (tmpvar_13.x <= (q23 * q11)))) {\\\\n ret_5.z = (tmpvar_13.z - (tmpvar_14.x * 0.5));\\\\n };\\\\n if (((tmpvar_13.y > (q25 * q11)) && (tmpvar_13.y <= (q22 * q12)))) {\\\\n ret_5.x = (tmpvar_13.x - (tmpvar_14.y * 0.5));\\\\n };\\\\n if (((ret_5.z > (q24 * q12)) && (ret_5.z <= (q21 * q13)))) {\\\\n ret_5.y = (tmpvar_13.y - (tmpvar_14.z * 0.5));\\\\n };\\\\n vec3 tmpvar_15;\\\\n tmpvar_15 = mix ((ret_5 * (vec3(1.0, 1.0, 1.0) - vec3(\\\\n (((texture (sampler_blur1, uv).xyz * scale1) + bias1).z * 4.0)\\\\n ))), vec3(2.0, 2.0, 2.0), texture (sampler_main, uv).zzz);\\\\n ret_5 = tmpvar_15;\\\\n vec4 tmpvar_16;\\\\n tmpvar_16.w = 1.0;\\\\n tmpvar_16.xyz = tmpvar_15;\\\\n ret = tmpvar_16.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/suksma - heretical crosscut playpen.json\":\n/*!********************************************************************!*\\\n !*** ./presets/converted/suksma - heretical crosscut playpen.json ***!\n \\********************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":5,\\\"gammaadj\\\":2.05,\\\"decay\\\":0.99,\\\"echo_zoom\\\":1.008,\\\"echo_alpha\\\":0.5,\\\"echo_orient\\\":1,\\\"wave_thick\\\":1,\\\"wave_brighten\\\":0,\\\"darken\\\":1,\\\"wave_a\\\":0.625,\\\"wave_scale\\\":1.187,\\\"wave_smoothing\\\":0,\\\"modwavealphastart\\\":0.71,\\\"modwavealphaend\\\":1.3,\\\"warpanimspeed\\\":1.459,\\\"warpscale\\\":2.007,\\\"fshader\\\":0.19,\\\"zoom\\\":0.9999,\\\"warp\\\":0.01,\\\"sx\\\":0.9999,\\\"wave_r\\\":0.5,\\\"wave_g\\\":0.5,\\\"wave_b\\\":0.5,\\\"ob_r\\\":1,\\\"ob_g\\\":1,\\\"ob_b\\\":1,\\\"ib_size\\\":0.26,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":0.85,\\\"mv_r\\\":0.5,\\\"mv_g\\\":0.5,\\\"mv_b\\\":0.5,\\\"mv_a\\\":0.5},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":9,\\\"thickoutline\\\":1,\\\"textured\\\":1,\\\"rad\\\":0.12566,\\\"ang\\\":3.39292,\\\"tex_ang\\\":0.3768,\\\"tex_zoom\\\":0.32473,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":1,\\\"border_r\\\":0.03,\\\"border_g\\\":0.67,\\\"border_b\\\":0.79,\\\"border_a\\\":1},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x=x+sin(time*0.9)*.13;\\\\ny=y+sin(time*0.5)*.16;\\\\nborder_r = q1;\\\\nborder_b = q2;\\\\nborder_g = q3;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":3,\\\"thickoutline\\\":1,\\\"rad\\\":0.12572,\\\"a2\\\":1,\\\"border_g\\\":0,\\\"border_b\\\":0,\\\"border_a\\\":1},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"//: Aderrasi was here too\\\\nrad = rad -0.2 + 0.2*bass_att;;\\\\nr = r + 0.25*sin(1.1*time) + 0.2*sin(0.25*time);\\\\ng = g + 0.25*cos(1.5*time) + 0.22*cos(0.24*time);\\\\nb = b + 0.25*sin(0.6*time) + 0.27*cos(0.7*time);\\\\nr2 = 1-abs(r);\\\\ng2 = 1-abs(g);\\\\nb2 = 1-abs(b);\\\\nang = ang + 3*abs(tan(1*time));\\\\nx = x + 0.14*cos(time) + 0.2*sin(0.42*time);\\\\ny = y + 0.16*sin(1.2*time) + 0.15*sin(0.8*time) + 0.21*cos(0.45*time);\\\\nborder_r = q1;\\\\nborder_b = q2;\\\\nborder_g = q3;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"ang\\\":0.03,\\\"r\\\":0.21,\\\"g\\\":0.44,\\\"b\\\":0.23,\\\"r2\\\":0.18,\\\"b2\\\":0.11,\\\"a2\\\":1,\\\"border_r\\\":0.15,\\\"border_g\\\":0.4,\\\"border_b\\\":0.48,\\\"border_a\\\":1},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"ang = time*2.4;\\\\nx = 0.5 + 0.22*cos(time*3.3) + 0.14*cos(time*1.2);\\\\ny = 0.5 + 0.26*sin(time*3.1) + 0.13*sin(time*1.7);\\\\nr = 0.5 + 0.5*sin(time*1.013 + 5);\\\\ng = 0.5 + 0.5*sin(time*1.063 + 2);\\\\nb = 0.5 + 0.5*sin(time*1.054 + 1);\\\\nr2 = 0.5 + 0.5*sin(time*1.085 + 3);\\\\ng2 = 0.5 + 0.5*sin(time*1.056+ 1);\\\\nb2 = 0.5 + 0.5*sin(time*1.038 + 4);\\\\nborder_r = q1;\\\\nborder_b = q2;\\\\nborder_g = q3;\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":5,\\\"x\\\":0.51,\\\"y\\\":0.49,\\\"rad\\\":0.09986,\\\"ang\\\":0.06283,\\\"a2\\\":1,\\\"border_r\\\":0.46,\\\"border_g\\\":0.28,\\\"border_b\\\":0.54,\\\"border_a\\\":1},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"x = 0.5 + 0.07*cos(q4*0.5) + 0.31*sin(time*3.5);\\\\ny = 0.5 + 0.07*sin(q4*0.5) + 0.31*cos(time*3.5);\\\\nr = 0.5 + 0.5*sin(time*1.013 + 2);\\\\ng = 0.5 + 0.5*sin(time*0.863 + 3);\\\\nb = 0.5 + 0.5*sin(time*1.054 + 1);\\\\nr2 = 0.5 + 0.5*sin(time*1.185 + 3);\\\\ng2 = 0.5 + 0.5*sin(time*1.356+ 2);\\\\nb2 = 0.5 + 0.5*sin(time*0.738 + 4);\\\\nborder_r = q1;\\\\nborder_b = q2;\\\\nborder_g = q3;\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"vol = 0; p1 = 0;\\\\nvx = .2; vy = -0.1;\\\\nkx = 0; ky = 0;\\\",\\\"frame_eqs_eel\\\":\\\"dec_med = pow (0.96, 30/fps);\\\\ndec_slow = pow (0.999, 30/fps);\\\\nbeat = max (max (bass, mid), treb); \\\\navg = avg*dec_slow + beat*(1-dec_slow);\\\\nis_beat = above(beat, .5+avg+peak) * above (time, t0+.2);\\\\nt0 = is_beat*time + (1-is_beat)*t0;\\\\npeak = is_beat * beat + (1-is_beat)*peak*dec_med;\\\\nindex = (index + is_beat) %8;\\\\nindex2 = (index2 + is_beat*bnot(index))%2;\\\\nindex3 = (index3 + is_beat*bnot(index) * bnot(index2))%2;\\\\n\\\\nq20 = avg;\\\\nq21 = beat;\\\\nq22 = peak;\\\\nq23 = index;\\\\nq24 = is_beat;\\\\n\\\\nvol = bass_att + treb_att;\\\\nv2 = v2 * dec_med + vol * (1-dec_med) ;\\\\nq26 = max(atan (vol - v2),0);\\\\nq27 = index + 1;\\\\n\\\\nsw = sw*dec_med + (1-dec_med)*(index2%2);\\\\nq28 = sw;\\\\nkiss = kiss*dec_med \\\\n +(1-dec_med)*bnot(index2)*below(index,4);\\\\nq29 = kiss;\\\\n\\\\nk1 = is_beat*bnot(index);\\\\nk2 = is_beat*bnot(index);\\\\np1 = k1*(p1+1) + (1-k1)*p1;\\\\np2 = dec_med * p2+ (1-dec_med)*p1;\\\\nrott = p2 * 3.1416/2;\\\\nmonitor = k1;\\\\nq1 = cos(rott);\\\\nq2 = sin(rott);\\\\nq3 = -q2;\\\\nq4 = q1;\\\\n\\\\n\\\\nq5 = cos(time/4);\\\\nq6 = -sin(time/4);\\\\nq7 = -q6;\\\\nq8 = q5;\\\\n\\\\nzoom = 1;\\\\nrot = -0;\\\\n\\\\n\\\\n//KUGEL-POS\\\\ndt = .1*30/fps;\\\\nm = 1; //Masse\\\\n//Gravitationszentrum\\\\nx0 = .0; y0 = 0;\\\\n\\\\nax = -(xk-x0)/m + sign(vx+.001)*dt*bass/40; \\\\nay = -(yk-y0)/m + sign(vy+.001)*dt*treb/40;\\\\nmonitor = index3;\\\\nvx = vx*dec_slow + ax * dt; \\\\nvy = vy*dec_slow + ay * dt;\\\\n\\\\nxk = xk + vx*dt; \\\\nyk = yk + vy*dt;\\\\n\\\\nq9 = xk; q10 = yk;\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\" shader_body { \\\\n vec2 tmpvar_1;\\\\n tmpvar_1 = ((uv * texsize.xy) * 0.08);\\\\n vec3 tmpvar_2;\\\\n tmpvar_2 = (texture (sampler_main, (uv - (\\\\n ((sin(tmpvar_1) / cos(tmpvar_1)) * texsize.zw)\\\\n * 3.0))).xyz + (vec3(dot (texture (sampler_noise_lq, \\\\n ((((texsize.xy * texsize_noise_lq.zw).x * uv) * 0.02) + (0.1 * rand_frame).xy)\\\\n ), vec4(0.32, 0.49, 0.29, 0.0))) / 30.0));\\\\n vec4 tmpvar_3;\\\\n tmpvar_3.w = 1.0;\\\\n tmpvar_3.xyz = ((mix (tmpvar_2, \\\\n (1.0 - tmpvar_2.zyx)\\\\n , vec3(0.01, 0.01, 0.01)) - 0.03) - (0.2 * pow (\\\\n (1.0 - rad)\\\\n , 18.0)));\\\\n ret = tmpvar_3.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n vec2 uv_1;\\\\n vec2 tmpvar_2;\\\\n tmpvar_2.x = cos(((uv.y * texsize.y) / 2.0));\\\\n tmpvar_2.y = sin(((uv.x * texsize.x) / 2.0));\\\\n uv_1 = (uv + ((2.0 * texsize.zw) * tmpvar_2));\\\\n vec4 tmpvar_3;\\\\n tmpvar_3.w = 1.0;\\\\n tmpvar_3.xyz = (1.4 * pow ((\\\\n clamp (((texture (sampler_blur1, uv_1).xyz * scale1) + bias1), 0.0, 1.0)\\\\n * \\\\n (texture (sampler_pc_main, uv_1).xyz - ((texture (sampler_blur3, uv_1).xyz * scale3) + bias3))\\\\n ), vec3(0.5, 0.5, 0.5)));\\\\n ret = tmpvar_3.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/suksma - uninitialized variabowl (hydroponic chronic).json\":\n/*!**************************************************************************************!*\\\n !*** ./presets/converted/suksma - uninitialized variabowl (hydroponic chronic).json ***!\n \\**************************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":5,\\\"gammaadj\\\":1,\\\"decay\\\":1,\\\"echo_zoom\\\":1,\\\"echo_orient\\\":1,\\\"wave_thick\\\":1,\\\"wave_brighten\\\":0,\\\"wrap\\\":0,\\\"brighten\\\":1,\\\"wave_a\\\":0.401,\\\"wave_scale\\\":3.177,\\\"wave_smoothing\\\":0,\\\"wave_mystery\\\":-0.4,\\\"modwavealphastart\\\":1,\\\"modwavealphaend\\\":1,\\\"warpanimspeed\\\":2.289,\\\"warpscale\\\":5.472,\\\"zoomexp\\\":0.01,\\\"zoom\\\":0.9901,\\\"warp\\\":1.8566,\\\"ob_size\\\":0.005,\\\"ob_a\\\":1,\\\"ib_size\\\":0,\\\"ib_r\\\":1,\\\"ib_g\\\":0,\\\"ib_b\\\":0,\\\"ib_a\\\":1,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":0,\\\"mv_b\\\":0,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":12,\\\"additive\\\":1,\\\"num_inst\\\":512,\\\"y\\\":0.55,\\\"rad\\\":0.034,\\\"tex_zoom\\\":0.7874,\\\"g\\\":0.45,\\\"g2\\\":0,\\\"border_a\\\":0},\\\"init_eqs_eel\\\":\\\"started = 0;\\\\nt1 = 0.412; //seeds for pseudo random generator\\\\nt2 = 0.4563;\\\\nt3 = 0.6452;\\\\nt4 = 0.2565;\\\",\\\"frame_eqs_eel\\\":\\\"\\\\nrnd1 = if(equal(instance,0),t1,rnd1);\\\\nrnd2 = if(equal(instance,0),t2,rnd2);\\\\nrnd3 = if(equal(instance,0),t3,rnd3);\\\\nrnd4 = if(equal(instance,0),t4,rnd4);\\\\nrnd1 = 4*rnd1*(1-rnd1);\\\\nrnd2 = 4*rnd2*(1-rnd2);\\\\nrnd3 = 4*rnd3*(1-rnd3);\\\\nrnd4 = 4*rnd4*(1-rnd4);\\\\nt = .6;\\\\nt = (rnd1+time*t) - int(rnd1+time*t);\\\\nt = t + rnd2*0.1;\\\\nwh = rnd4*asin(1)*4;\\\\nwv = 0.25 + rnd3*0.1;\\\\n\\\\nd = 1.4; // makes the perspective impact\\\\nzoom = 1;\\\\nl = 1;\\\\n\\\\n// Kardan angles\\\\n\\\\nw1 = q3; // first rotation: clockwise in the desktop pane\\\\nw2 = q4; // rotation around vertical axis\\\\nw3 = q5; // rotation around horizontal axis\\\\n\\\\n\\\\n// definition of the 3D shape\\\\n\\\\ni = instance;\\\\n\\\\nmy_x = t *(cos(wh)*sin(wv)*l);\\\\nmy_y = (-0.5 +(t-0.75)*(t-0.75))*cos(wv)*l;\\\\nmy_z = t*(sin(wh)*sin(wv)*l);\\\\n\\\\n\\\\n// 3D rotations\\\\n\\\\nx1 = cos(w1)*my_x + sin(w1)*my_y;\\\\ny1 = -sin(w1)*my_x + cos(w1)*my_y;\\\\nz1 = my_z;\\\\n\\\\nx2 = cos(w2)*x1 + sin(w2)*z1;\\\\nz2 = -sin(w2)*x1 + cos(w2)*z1;\\\\ny2 = y1;\\\\n\\\\ny3 = cos(w3)*y2 + sin(w3)*z2;\\\\nz3 = -sin(w3)*y2 + cos(w3)*z2;\\\\nx3 = x2;\\\\n\\\\n// perspective calculation\\\\n\\\\nl = sqrt(x3*x3 + y3*y3);\\\\nw = atan2(x3,y3);\\\\np = tan(asin(1) + atan2(d+z3,l));\\\\nd = sqrt(x3*x3 + y3*y3 + (z3+d)*(z3+d));\\\\n\\\\nrad = rad/d;\\\\nmy_x = zoom*sin(w)*p;\\\\nmy_y = zoom*cos(w)*p;\\\\n\\\\nx = 0.5 + my_x;\\\\ny = 0.5 + my_y;\\\\n\\\\nx = 0.5 + (x-0.5)/q2;\\\\ny = 0.5 + (y-0.5)/q1;\\\"},{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"additive\\\":1,\\\"thickoutline\\\":1,\\\"textured\\\":1,\\\"x\\\":0.52,\\\"y\\\":0.41,\\\"rad\\\":0.5216,\\\"ang\\\":0.1885,\\\"tex_zoom\\\":0.73458,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":0.75,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"vx = 0\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"additive\\\":1,\\\"thickoutline\\\":1,\\\"textured\\\":1,\\\"x\\\":0.48,\\\"y\\\":0.41,\\\"rad\\\":0.61162,\\\"ang\\\":5.96903,\\\"tex_zoom\\\":0.73458,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":0.75,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"vx = 0\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"additive\\\":1,\\\"thickoutline\\\":1,\\\"y\\\":0.75,\\\"rad\\\":0.07059,\\\"tex_zoom\\\":0.73458,\\\"g2\\\":0,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"vx = 0\\\",\\\"frame_eqs_eel\\\":\\\"x = q1;\\\\ny = q5;\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"additive\\\":1,\\\"r\\\":0.2,\\\"g\\\":0,\\\"b\\\":0,\\\"a\\\":0.3,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"n=sample*6.283;\\\\nphs=-sample * 0.2;\\\\ntm=time*0.4 + phs;\\\\n\\\\nflip=flip+1;\\\\nflip=flip*below(flip,2);\\\\n\\\\nxp=0;\\\\nyp=flip*0.1 + (sin(tm)*0.5 + 0.5)*0.2;\\\\nzp=0;\\\\n\\\\n//wrist movement;\\\\nang=sin(tm*2)*0.5 +0.5;\\\\n\\\\nxq=xp;\\\\nyq=yp*sin(ang) + zp*cos(ang);\\\\nzq=yp*cos(ang) - zp*sin(ang);\\\\nyq=yp;\\\\nzq=zp;\\\\n\\\\nang=tm*8;\\\\nxp=xq*sin(ang) + yq*cos(ang);\\\\nyp=xq*cos(ang) - yq*sin(ang);\\\\nzp=zq;\\\\n\\\\n//forearm movement;\\\\nzp=zp-0.3;\\\\nang=3.14 + sin(tm*2 - 0.5)*1.5;\\\\nxq=xp;\\\\nyq=yp*sin(ang) + zp*cos(ang);\\\\nzq=yp*cos(ang) - zp*sin(ang);\\\\n\\\\n//upper arm twist\\\\nang=-1.0 + cos(tm*3 + 0.5);\\\\nxp=xq*sin(ang) + yq*cos(ang);\\\\nyp=xq*cos(ang) - yq*sin(ang);\\\\nzp=zq;\\\\n\\\\n//upper arm outward;\\\\nzp=zp-0.35;\\\\nang=cos(tm*2)*0.75 - 1.05;\\\\nxq=xp*sin(ang) + zp*cos(ang);\\\\nyq=yp;\\\\nzq=xp*cos(ang) - zp*sin(ang);\\\\n\\\\n//upper arm up down;\\\\nang=cos(tm)*0.5 - 0.5;\\\\nxp=xq;\\\\nyp=yq*cos(ang) - zq*sin(ang);\\\\nzp=yq*sin(ang) + zq*cos(ang);\\\\n\\\\n//xp=xq;yp=yq;zp=zq;\\\\n\\\\n\\\\n//project into screenspace and draw on screen\\\\nzp=zp+2;\\\\nxs=xp/zp;\\\\nys=yp/zp;\\\\n\\\\nx=xs+0.5;\\\\ny=ys*1.3+0.5;\\\\n\\\\n\\\\n//a=(1-sample)*flip;\\\\n\\\\n//b=b+pow(1-sample,2)*0.3;\\\\n\\\\nx = 0.5 + (x-0.5)/q1;\\\\ny = 0.5 + (y-0.5)/q2 + 0.1;\\\"},{\\\"baseVals\\\":{\\\"additive\\\":1,\\\"r\\\":0.2,\\\"g\\\":0,\\\"b\\\":0,\\\"a\\\":0.3,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"n=sample*6.283;\\\\nphs=-sample * 0.2;\\\\ntm=time*0.4 + phs;\\\\n\\\\nflip=flip+1;\\\\nflip=flip*below(flip,2);\\\\n\\\\nxp=0;\\\\nyp=flip*0.1 + (sin(tm)*0.5 + 0.5)*0.2;\\\\nyp=-yp;\\\\nzp=0;\\\\n\\\\n//wrist movement;\\\\nang=sin(tm*2)*0.5 +0.5;\\\\n\\\\nxq=xp;\\\\nyq=yp*sin(ang) + zp*cos(ang);\\\\nzq=yp*cos(ang) - zp*sin(ang);\\\\nyq=yp;\\\\nzq=zp;\\\\n\\\\nang=tm*8;\\\\nxp=xq*sin(ang) + yq*cos(ang);\\\\nyp=xq*cos(ang) - yq*sin(ang);\\\\nzp=zq;\\\\n\\\\n//forearm movement;\\\\nzp=zp-0.3;\\\\nang=3.14 + sin(tm*2 - 0.5)*1.5;\\\\nxq=xp;\\\\nyq=yp*sin(ang) + zp*cos(ang);\\\\nzq=yp*cos(ang) - zp*sin(ang);\\\\n\\\\n//upper arm twist\\\\nang=-1.0 + cos(tm*3 + 0.5);\\\\nxp=xq*sin(ang) + yq*cos(ang);\\\\nyp=xq*cos(ang) - yq*sin(ang);\\\\nzp=zq;\\\\n\\\\n//upper arm outward;\\\\nzp=zp-0.35;\\\\nang=cos(tm*2)*0.75 - 1.05;\\\\nxq=xp*sin(ang) + zp*cos(ang);\\\\nyq=yp;\\\\nzq=xp*cos(ang) - zp*sin(ang);\\\\n\\\\n//upper arm up down;\\\\nang=cos(tm)*0.5 - 0.5;\\\\nxp=xq;\\\\nyp=yq*cos(ang) - zq*sin(ang);\\\\nzp=yq*sin(ang) + zq*cos(ang);\\\\n\\\\n//xp=xq;yp=yq;zp=zq;\\\\n\\\\n\\\\n//project into screenspace and draw on screen\\\\nzp=zp+2;\\\\nxs=xp/zp;\\\\nys=yp/zp;\\\\n\\\\nx=xs+0.5;\\\\ny=ys*1.3+0.5;\\\\n\\\\n\\\\n//a=(1-sample)*flip;\\\\n\\\\n\\\\n//b=b+pow(1-sample,2)*0.3;\\\\n\\\\n\\\\nx = 0.5 + (x-0.5)/q1;\\\\ny = 0.5 + (y-0.5)/q2 + 0.1;\\\\n\\\"},{\\\"baseVals\\\":{\\\"samples\\\":61,\\\"thick\\\":1,\\\"scaling\\\":2.44415,\\\"smoothing\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"t1 = q1;\\\\nt2 = q2;\\\\nt3 = q3;\\\\nt4 = q4;\\\\nt5 = q5;\\\\nt6 = q6;\\\\nt7 = q7;\\\\nt8 = q8;\\\",\\\"point_eqs_eel\\\":\\\"x = pow(sample,5)*t1 + 5*pow(sample,4)*(1-sample)*t1 + 10*pow(sample,3)*sqr(1-sample)*t2\\\\n+ 10*sqr(sample)*pow(1-sample,3)*t3 + 5*pow(1-sample,4)*sample*t4 + pow(1-sample,5)*t4;\\\\n\\\\ny = pow(sample,5)*t5 + 5*pow(sample,4)*(1-sample)*t5 + 10*pow(sample,3)*sqr(1-sample)*t6\\\\n+ 10*sqr(sample)*pow(1-sample,3)*t7 + 5*pow(1-sample,4)*sample*t8 + pow(1-sample,5)*t8;\\\"},{\\\"baseVals\\\":{\\\"samples\\\":61,\\\"scaling\\\":2.44415,\\\"smoothing\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"t2 = 0\\\",\\\"frame_eqs_eel\\\":\\\"t1 = q1;\\\\nt2 = q2;\\\\nt3 = q3;\\\\nt4 = q4;\\\\nt5 = q5;\\\\nt6 = q6;\\\\nt7 = q7;\\\\nt8 = q8;\\\",\\\"point_eqs_eel\\\":\\\"x = pow(sample,5)*t1 + 5*pow(sample,4)*(1-sample)*t1 + 10*pow(sample,3)*sqr(1-sample)*t2\\\\n+ 10*sqr(sample)*pow(1-sample,3)*t3 + 5*pow(1-sample,4)*sample*t4 + pow(1-sample,5)*t4;\\\\n\\\\ny = pow(sample,5)*t5 + 5*pow(sample,4)*(1-sample)*t5 + 10*pow(sample,3)*sqr(1-sample)*t6\\\\n+ 10*sqr(sample)*pow(1-sample,3)*t7 + 5*pow(1-sample,4)*sample*t8 + pow(1-sample,5)*t8;\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"wave_a = 0;\\\\nq1 =aspectx;\\\\nq2 = aspecty;\\\\n\\\\n\\\\nb = b + bass*bass*0.85;\\\\nm = m + mid*mid*0.85;\\\\nt = t + treb*treb*0.85;\\\\n\\\\nq3 = b*0.012;\\\\nq4 = m*0.012;\\\\nq5 = t*0.012;\\\",\\\"pixel_eqs_eel\\\":\\\"\\\",\\\"warp\\\":\\\" shader_body { \\\\n vec2 my_uv_1;\\\\n vec3 ret_2;\\\\n vec2 tmpvar_3;\\\\n tmpvar_3 = (vec2(1280.0, 1024.0) * texsize.zw);\\\\n float tmpvar_4;\\\\n vec2 tmpvar_5;\\\\n tmpvar_5 = (uv + vec2(0.005, 0.0));\\\\n vec2 tmpvar_6;\\\\n tmpvar_6 = (uv - vec2(0.005, 0.0));\\\\n tmpvar_4 = (((\\\\n (texture (sampler_blur2, tmpvar_5).xyz * scale2)\\\\n + bias2) - (\\\\n (texture (sampler_blur2, tmpvar_6).xyz * scale2)\\\\n + bias2)).x * tmpvar_3.x);\\\\n float tmpvar_7;\\\\n vec2 tmpvar_8;\\\\n tmpvar_8 = (uv + vec2(0.0, 0.005));\\\\n vec2 tmpvar_9;\\\\n tmpvar_9 = (uv - vec2(0.0, 0.005));\\\\n tmpvar_7 = (((\\\\n (texture (sampler_blur2, tmpvar_8).xyz * scale2)\\\\n + bias2) - (\\\\n (texture (sampler_blur2, tmpvar_9).xyz * scale2)\\\\n + bias2)).x * tmpvar_3.y);\\\\n vec2 tmpvar_10;\\\\n tmpvar_10.x = tmpvar_4;\\\\n tmpvar_10.y = tmpvar_7;\\\\n vec2 tmpvar_11;\\\\n tmpvar_11.x = (((\\\\n (texture (sampler_blur2, tmpvar_5).xyz * scale2)\\\\n + bias2) - (\\\\n (texture (sampler_blur2, tmpvar_6).xyz * scale2)\\\\n + bias2)).x * tmpvar_3.x);\\\\n tmpvar_11.y = (((\\\\n (texture (sampler_blur2, tmpvar_8).xyz * scale2)\\\\n + bias2) - (\\\\n (texture (sampler_blur2, tmpvar_9).xyz * scale2)\\\\n + bias2)).x * tmpvar_3.y);\\\\n ret_2.x = texture (sampler_fw_main, ((uv - (tmpvar_10 * 0.01)) + (tmpvar_11 * 0.003))).x;\\\\n vec4 tmpvar_12;\\\\n tmpvar_12 = texture (sampler_blur3, uv);\\\\n ret_2.x = (ret_2.x + ((ret_2.x - \\\\n ((tmpvar_12.xyz * scale3) + bias3)\\\\n .x) * 0.1));\\\\n ret_2.x = (ret_2.x + 0.004);\\\\n vec2 tmpvar_13;\\\\n tmpvar_13.x = tmpvar_7;\\\\n tmpvar_13.y = -(tmpvar_4);\\\\n my_uv_1 = (uv + ((tmpvar_13 * 0.05) * (1.2 - \\\\n ((tmpvar_12.xyz * scale3) + bias3)\\\\n .y)));\\\\n ret_2.z = texture (sampler_fw_main, my_uv_1).z;\\\\n vec2 x_14;\\\\n x_14 = (my_uv_1 - uv);\\\\n ret_2.z = (ret_2.z + ((\\\\n ((ret_2.z - ((texture (sampler_blur1, uv).xyz * scale1) + bias1).z) * sqrt(dot (x_14, x_14)))\\\\n * 180.0) / sqrt(\\\\n dot (tmpvar_3, tmpvar_3)\\\\n )));\\\\n ret_2.z = (ret_2.z * 0.8);\\\\n ret_2.z = (ret_2.z + 0.004);\\\\n vec2 tmpvar_15;\\\\n tmpvar_15.x = -(tmpvar_7);\\\\n tmpvar_15.y = tmpvar_4;\\\\n my_uv_1 = (tmpvar_15 * 0.045);\\\\n vec2 tmpvar_16;\\\\n tmpvar_16.x = (((\\\\n (texture (sampler_blur2, (uv + vec2(0.01, 0.0))).xyz * scale2)\\\\n + bias2) - (\\\\n (texture (sampler_blur2, (uv - vec2(0.01, 0.0))).xyz * scale2)\\\\n + bias2)).y * tmpvar_3.x);\\\\n tmpvar_16.y = (((\\\\n (texture (sampler_blur2, (uv + vec2(0.0, 0.01))).xyz * scale2)\\\\n + bias2) - (\\\\n (texture (sampler_blur2, (uv - vec2(0.0, 0.01))).xyz * scale2)\\\\n + bias2)).y * tmpvar_3.y);\\\\n my_uv_1 = (my_uv_1 + (uv - (tmpvar_16 * 0.03)));\\\\n ret_2.y = texture (sampler_fw_main, my_uv_1).y;\\\\n ret_2.y = (ret_2.y + ((\\\\n (ret_2.y - ((texture (sampler_blur3, my_uv_1).xyz * scale3) + bias3).y)\\\\n * 0.1) + 0.01));\\\\n vec4 tmpvar_17;\\\\n tmpvar_17.w = 1.0;\\\\n tmpvar_17.xyz = ret_2;\\\\n ret = tmpvar_17.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n vec2 uv1_1;\\\\n vec3 tmpvar_2;\\\\n tmpvar_2 = texture (sampler_main, uv).xyz;\\\\n vec2 tmpvar_3;\\\\n tmpvar_3.y = 0.0;\\\\n tmpvar_3.x = texsize.z;\\\\n vec2 tmpvar_4;\\\\n tmpvar_4.x = 0.0;\\\\n tmpvar_4.y = texsize.w;\\\\n vec2 tmpvar_5;\\\\n tmpvar_5.x = (texture (sampler_main, (uv - tmpvar_3)).xyz - texture (sampler_main, (uv + tmpvar_3)).xyz).x;\\\\n tmpvar_5.y = (texture (sampler_main, (uv - tmpvar_4)).xyz - texture (sampler_main, (uv + tmpvar_4)).xyz).x;\\\\n uv1_1 = ((0.3 * cos(\\\\n (((uv - 0.5) * 2.0) + 1.7)\\\\n )) - (2.0 * tmpvar_5));\\\\n vec4 tmpvar_6;\\\\n tmpvar_6.w = 1.0;\\\\n tmpvar_6.xyz = ((-(tmpvar_2) / 4.0) + ((6.0 * vec3(\\\\n clamp ((0.03 / sqrt(dot (uv1_1, uv1_1))), 0.0, 1.0)\\\\n )) * (-0.08 + tmpvar_2)));\\\\n ret = tmpvar_6.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/suksma - vector exp 1 - couldn′t not.json\":\n/*!*********************************************************************!*\\\n !*** ./presets/converted/suksma - vector exp 1 - couldn′t not.json ***!\n \\*********************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":2,\\\"baseVals\\\":{\\\"rating\\\":2,\\\"decay\\\":0.99,\\\"wave_brighten\\\":0,\\\"wave_a\\\":1,\\\"wave_scale\\\":0.01,\\\"wave_mystery\\\":-0.2,\\\"warpanimspeed\\\":3.434,\\\"warpscale\\\":1.295,\\\"zoom\\\":1.025,\\\"warp\\\":0.11284,\\\"wave_r\\\":0,\\\"wave_g\\\":0,\\\"wave_b\\\":0,\\\"ob_size\\\":0.005,\\\"ob_b\\\":1,\\\"ob_a\\\":1,\\\"mv_x\\\":64,\\\"mv_y\\\":48,\\\"mv_l\\\":5,\\\"mv_g\\\":0,\\\"mv_b\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"sides\\\":100,\\\"textured\\\":1,\\\"rad\\\":0.53742,\\\"tex_zoom\\\":1.72509,\\\"g\\\":1,\\\"b\\\":1,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":1,\\\"border_a\\\":0,\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"//per frame less reactive volume for all unused q vars, put before other q vars are set for cop out mashing\\\\nvb = vb*0.95 + (1-vb)*pow(bass_att,2)*0.02;\\\\nvvb = vvb*0.95 + (1-vvb)*vb*0.01;\\\\nvm = vm*0.95 + (1-vm)*pow(mid_att,2)*0.02;\\\\nvvm = vvm*0.95 + (1-vvm)*vm*0.01;\\\\nvt = vt*0.95 + (1-vt)*pow(treb_att,2)*0.02;\\\\nvvt = vvt*0.95 + (1-vvt)*vt*0.01;\\\\nvvb = min(1,max(0,vvb));\\\\nvvm = min(1,max(0,vvm));\\\\nvvt = min(1,max(0,vvt));\\\\nq1 = (vvb+vvm+vvt)*10;\\\\nq2 = (vvb+vvm+vvt)*10;\\\\nq3 = (vvb+vvm+vvt)*10;\\\\nq4 = (vvb+vvm+vvt)*10;\\\\nq5 = (vvb+vvm+vvt)*10;\\\\nq6 = (vvb+vvm+vvt)*10;\\\\nq7 = (vvb+vvm+vvt)*10;\\\\nq8 = (vvb+vvm+vvt)*10;\\\\nq9 = (vvb+vvm+vvt)*10;\\\\nq10 = (vvb+vvm+vvt)*10;\\\\nq11 = (vvb+vvm+vvt)*10;\\\\nq12 = (vvb+vvm+vvt)*10;\\\\nq13 = (vvb+vvm+vvt)*10;\\\\nq14 = (vvb+vvm+vvt)*10;\\\\nq15 = (vvb+vvm+vvt)*10;\\\\nq16 = (vvb+vvm+vvt)*10;\\\\nq17 = (vvb+vvm+vvt)*10;\\\\nq18 = (vvb+vvm+vvt)*10;\\\\nq19 = (vvb+vvm+vvt)*10;\\\\nq20 = (vvb+vvm+vvt)*10;\\\\nq21 = (vvb+vvm+vvt)*10;\\\\nq22 = (vvb+vvm+vvt)*10;\\\\nq23 = (vvb+vvm+vvt)*10;\\\\nq24 = (vvb+vvm+vvt)*10;\\\\nq25 = (vvb+vvm+vvt)*10;\\\\nq26 = (vvb+vvm+vvt)*10;\\\\nq27 = (vvb+vvm+vvt)*10;\\\\nq28 = (vvb+vvm+vvt)*10;\\\\nq29 = (vvb+vvm+vvt)*10;\\\\nq30 = (vvb+vvm+vvt)*10;\\\\nq31 = (vvb+vvm+vvt)*10;\\\\nq32 = (vvb+vvm+vvt)*10;\\\\n\\\\nzoom = .995;\\\\nwave_a = 0;\\\\nmv_g = 0.45 + 0.3*sin(time*1.33)+0.25*sin(treb);\\\\nmv_r = 0.45 + 0.3*sin(time*1.13)+0.25*(0.33*(bass+treb+mid));\\\\nmv_b = 0.45 + 0.3*sin(time*1.23)+0.25*sin(bass);\\\\nmv_dx=.1*sin(time*.1);\\\\nmv_dy=.13*cos(time*.084);\\\\nmv_x=64-int((sin(time*1.5)+1)*32);\\\\nmv_y=48-int((cos(time*1.5)+1)*22);\\\\nmonitor=mv_y;\\\",\\\"pixel_eqs_eel\\\":\\\"//flexi per vertex\\\\ncx1 = 0.5+sin(time*0.618)*0.2;\\\\ncy1 = 0.5+cos(time*1.618)*0.2;\\\\ndir = bass;\\\\nd = sqrt((x-cx1)*(x-cx1)+(y-cy1)*(y-cy1));\\\\nx1 = if( above(d,0.3),0, sin(y-cy1)*0.05*dir);\\\\ny1 = if( above(d,0.3),0, -sin(x-cx1)*0.05*dir);\\\\ncx1 = 0.5+sin(time*2.618)*0.3;\\\\ncy1 = 0.5+cos(time*3.14)*0.3;\\\\ndir = -mid*2;\\\\nd = sqrt((x-cx1)*(x-cx1)+(y-cy1)*(y-cy1));\\\\nx2 = if( above(d,0.2),0, sin(y-cy1)*0.05*dir);\\\\ny2 = if( above(d,0.2),0, -sin(x-cx1)*0.05*dir);\\\\ncx1 = 0.5+sin(-time*2.618)*0.4;\\\\ncy1 = 0.5+cos(-time*1.14)*0.4;\\\\ndir = treb*3;\\\\nd = sqrt((x-cx1)*(x-cx1)+(y-cy1)*(y-cy1));\\\\nx3 = if( above(d,0.1),0, sin(y-cy1)*0.05*dir);\\\\ny3 = if( above(d,0.1),0, -sin(x-cx1)*0.05*dir);\\\\ndx = dx+x1+x2+x3;\\\\ndy = dy+y1+y2+y3;\\\",\\\"warp\\\":\\\" shader_body { \\\\n vec2 tmpvar_1;\\\\n tmpvar_1 = mix (uv_orig, uv, vec2(0.3, 0.3));\\\\n vec2 tmpvar_2;\\\\n tmpvar_2 = (texsize.zw * 3.0);\\\\n vec2 tmpvar_3;\\\\n tmpvar_3.x = dot (((\\\\n (texture (sampler_blur1, (tmpvar_1 + (vec2(1.0, 0.0) * tmpvar_2))).xyz * scale1)\\\\n + bias1) - (\\\\n (texture (sampler_blur1, (tmpvar_1 - (vec2(1.0, 0.0) * tmpvar_2))).xyz * scale1)\\\\n + bias1)), vec3(0.32, 0.49, 0.29));\\\\n tmpvar_3.y = dot (((\\\\n (texture (sampler_blur1, (tmpvar_1 + (vec2(0.0, 1.0) * tmpvar_2))).xyz * scale1)\\\\n + bias1) - (\\\\n (texture (sampler_blur1, (tmpvar_1 - (vec2(0.0, 1.0) * tmpvar_2))).xyz * scale1)\\\\n + bias1)), vec3(0.32, 0.49, 0.29));\\\\n vec4 tmpvar_4;\\\\n tmpvar_4.w = 1.0;\\\\n tmpvar_4.xyz = (texture (sampler_fc_main, (tmpvar_1 + (\\\\n (tmpvar_3 * texsize.zw)\\\\n * 9.0))) - 0.01).xyz;\\\\n ret = tmpvar_4.xyz;\\\\n }\\\",\\\"comp\\\":\\\" shader_body { \\\\n vec2 uv_1;\\\\n vec3 ret_2;\\\\n uv_1 = (0.5 + ((uv - 0.5) * 0.98));\\\\n vec2 tmpvar_3;\\\\n tmpvar_3 = (texsize.zw * 4.0);\\\\n vec3 tmpvar_4;\\\\n tmpvar_4 = (((texture (sampler_blur1, \\\\n (uv_1 + (vec2(1.0, 0.0) * tmpvar_3))\\\\n ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n (uv_1 - (vec2(1.0, 0.0) * tmpvar_3))\\\\n ).xyz * scale1) + bias1));\\\\n vec3 tmpvar_5;\\\\n tmpvar_5 = (((texture (sampler_blur1, \\\\n (uv_1 + (vec2(0.0, 1.0) * tmpvar_3))\\\\n ).xyz * scale1) + bias1) - ((texture (sampler_blur1, \\\\n (uv_1 - (vec2(0.0, 1.0) * tmpvar_3))\\\\n ).xyz * scale1) + bias1));\\\\n vec3 tmpvar_6;\\\\n tmpvar_6.z = 0.0;\\\\n tmpvar_6.x = dot (tmpvar_4, vec3(0.32, 0.49, 0.29));\\\\n tmpvar_6.y = dot (tmpvar_5, vec3(0.32, 0.49, 0.29));\\\\n vec4 tmpvar_7;\\\\n tmpvar_7 = texture (sampler_noisevol_hq, ((vec3(0.05, 0.05, 0.0) * (\\\\n ((uv_1.xyy + (tmpvar_6 * 0.5)) * texsize.xyy)\\\\n * texsize_noisevol_hq.zww)) + (vec3(0.0, 0.0, 0.2) * time)));\\\\n vec2 tmpvar_8;\\\\n tmpvar_8.x = dot (tmpvar_4, vec3(0.32, 0.49, 0.29));\\\\n tmpvar_8.y = dot (tmpvar_5, vec3(0.32, 0.49, 0.29));\\\\n uv_1 = (uv_1 - (tmpvar_8 * 0.04));\\\\n ret_2 = (abs((\\\\n ((texture (sampler_main, uv_1).xyz + ((texture (sampler_blur1, uv_1).xyz * scale1) + bias1)) - ((texture (sampler_blur2, uv_1).xyz * scale2) + bias2))\\\\n - \\\\n ((texture (sampler_blur3, uv_1).xyz * scale3) + bias3)\\\\n )) * (dot (tmpvar_7, vec4(0.32, 0.49, 0.29, 0.0)) * 3.0));\\\\n vec3 tmpvar_9;\\\\n tmpvar_9 = pow (ret_2, vec3(0.5, 0.5, 0.5));\\\\n ret_2 = tmpvar_9;\\\\n vec4 tmpvar_10;\\\\n tmpvar_10.w = 1.0;\\\\n tmpvar_10.xyz = tmpvar_9;\\\\n ret = tmpvar_10.xyz;\\\\n }\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/yin - 191 - Temporal singularities.json\":\n/*!*******************************************************************!*\\\n !*** ./presets/converted/yin - 191 - Temporal singularities.json ***!\n \\*******************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":1,\\\"baseVals\\\":{\\\"rating\\\":5,\\\"gammaadj\\\":4.990001,\\\"decay\\\":1,\\\"echo_zoom\\\":10.784553,\\\"wave_mode\\\":7,\\\"additivewave\\\":1,\\\"wave_dots\\\":1,\\\"wave_brighten\\\":0,\\\"wrap\\\":0,\\\"wave_a\\\":0.997938,\\\"wave_scale\\\":1.990516,\\\"wave_smoothing\\\":0,\\\"wave_mystery\\\":-1,\\\"modwavealphastart\\\":0.5,\\\"modwavealphaend\\\":1,\\\"warpscale\\\":0.999998,\\\"zoomexp\\\":0.999985,\\\"fshader\\\":1,\\\"zoom\\\":0.9999,\\\"dy\\\":0.00001,\\\"warp\\\":0.01,\\\"wave_r\\\":0.400001,\\\"wave_g\\\":0.4,\\\"wave_y\\\":1,\\\"ob_size\\\":0,\\\"ob_r\\\":0.300001,\\\"ob_g\\\":1,\\\"ob_b\\\":0.3,\\\"ob_a\\\":0.100001,\\\"ib_size\\\":0.005,\\\"ib_r\\\":0,\\\"ib_g\\\":0,\\\"ib_b\\\":0,\\\"ib_a\\\":0.5,\\\"mv_x\\\":8.960042,\\\"mv_y\\\":12.960033,\\\"mv_dx\\\":-0.26,\\\"mv_dy\\\":0.44,\\\"mv_l\\\":5,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\",\\\"point_eqs_eel\\\":\\\"\\\"}],\\\"init_eqs_eel\\\":\\\"flip=-1;\\\",\\\"frame_eqs_eel\\\":\\\"warp=0;decay=1;\\\\nvol = (.75*(bass_att+mid_att+treb_att)/3+.25*prevVol);\\\\nprevAvgBass=avgBass;\\\\navgBass=avgBass + (bass-AvgBass)*0.01;\\\\nq4=max(avgBass*1.001-.999*prevAvgBass,0);\\\\nq4=min(q4,.006);\\\\n// -------------------------------- Beat Detective 007 ----------------------------------\\\\nsure=if(equal(sure,0),.6,sure);\\\\ninterval=if(equal(interval,0),40,interval);\\\\nlastbeat=if(equal(lastbeat,0),frame-FPS,lastbeat);\\\\ndbass=(bass-pbass)/FPS;\\\\nbeat=above(dbass,.6*maxdbass)*above(frame-lastbeat,FPS/3);\\\\nsure=if(beat*below(abs(frame-(interval+lastbeat)),FPS/5),\\\\nmin(.095+sure,1),beat*(sure-.095)+(1-beat)*sure*.9996);\\\\nsure=max(.5,sure);\\\\ncheat=if(above(frame,lastbeat+interval+ int(FPS/10))*above(sure,.91),1,cheat);\\\\nbeat=if(cheat,1,beat);\\\\nsure=if(cheat,.95*sure,sure);\\\\nmaxdbass=max(maxdbass*.999,dbass);\\\\nmaxdbass=max(.012,maxdbass);\\\\nmaxdbass=min(.02,maxdbass);\\\\ninterval=if(beat, frame-lastbeat,interval);\\\\nlastbeat=if(beat,frame-cheat*int(FPS/10),lastbeat);\\\\ncheat=0;\\\\npbass=bass;\\\\n// ----------------------------------------------------------------------------------------------\\\\nlastFlip=if( above(bass/avgBass,2)*above(frame-lastFlip,100)*beat, frame,lastFlip );\\\\nflip = if(equal(frame,lastFlip),abs(flip)-1, flip);\\\\nwave_mystery=flip;\\\\nob_size = below(frame-lastBeat,FPS/8)*.08*(frame-lastBeat)/FPS;\\\\nf=abs(cos(time/8+.54+sin(time/3+1.075)));\\\\nob_r=1*f + 1*(1-f);\\\\nob_g=.3*f + 1*(1-f);\\\\nob_b=.3*f + .3*(1-f);\\\\nf=(frame-lastbeat)/interval;\\\\nf=above(f,.8)*below(f,1)*f; f=max(0,f); f=min(f,1);\\\\n\\\\nwave_g=.4+.6*(f);\\\\nwave_b=.4+.6*(1-f);\\\\n\\\\nq1= 3.1416*(wave_mystery+1)/2;\\\\nq2=.25*cos(time+abs(2*sin(time*2+2.311)*( vol-amt))*sin(time*7.45+.876));\\\\nq3=-q2;\\\\n\\\\namt=amt+ .05*(vol-amt);\\\\nprevVol=vol;\\\\nBPM = BPM + .01*(60*FPS/interval - BPM);\\\\nmonitor = 0*pctg+1*BPM;\\\",\\\"pixel_eqs_eel\\\":\\\"x=x-.5;\\\\ny=-(y-.5);\\\\nttan1 = tan(q1+1.5708)*(x-q3)-y+q2;\\\\nttan2 = tan(q1+1.5708);\\\\nIsLeftYtonosY = above(ttan1*(sign(3.1416-q1)),0);\\\\n\\\\ndist = abs(ttan1)/sqrt(ttan2*ttan2 + 1);\\\\ntotX=.5*cos(q1)*sign(IsLeftYtonosY-.5)*sqr(dist)/(.5-q2);\\\\ntotY=-.5*sin(q1)*sign(IsLeftYtonosY-.5)*sqr(dist)/(.5-q2);\\\\n\\\\ndx=dx+totX;\\\\ndy=dy+totY;\\\\nprevRot=q1;\\\\nzoom = 1-25*q4*sqrt(pow(.5-dist,3))/abs(.5-q2);\\\",\\\"warp\\\":\\\"\\\",\\\"comp\\\":\\\"\\\"}\");\n\n/***/ }),\n\n/***/ \"./presets/converted/yin - 393 - Artificial Inspiration (music driven - outward).json\":\n/*!********************************************************************************************!*\\\n !*** ./presets/converted/yin - 393 - Artificial Inspiration (music driven - outward).json ***!\n \\********************************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = JSON.parse(\"{\\\"version\\\":1,\\\"baseVals\\\":{\\\"rating\\\":1,\\\"gammaadj\\\":1,\\\"decay\\\":0.898999,\\\"echo_zoom\\\":0.999993,\\\"wave_brighten\\\":0,\\\"wrap\\\":0,\\\"wave_a\\\":0.001,\\\"wave_scale\\\":0.411715,\\\"wave_smoothing\\\":0.9,\\\"wave_mystery\\\":-0.18,\\\"fshader\\\":0.3,\\\"zoom\\\":0.999999,\\\"warp\\\":0.01,\\\"wave_r\\\":0,\\\"wave_g\\\":0,\\\"wave_b\\\":0,\\\"ob_size\\\":0.005,\\\"ob_a\\\":0.92,\\\"ib_size\\\":0,\\\"ib_r\\\":0,\\\"ib_g\\\":0,\\\"ib_b\\\":0,\\\"mv_a\\\":0},\\\"shapes\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":0},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"sides\\\":100,\\\"additive\\\":1,\\\"textured\\\":1,\\\"rad\\\":1.773681,\\\"tex_ang\\\":3.141593,\\\"tex_zoom\\\":1.244713,\\\"r\\\":0,\\\"a\\\":0,\\\"r2\\\":1,\\\"b2\\\":1,\\\"a2\\\":0.5},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"/////////// new hue2rgb algorithm ////////////\\\\nt=time;\\\\nr2=max(min(-1+.955*acos(cos(t)),1),0);\\\\ng2=max(min(-1+.955*acos(cos(t+2.0942)),1),0);\\\\nb2=max(min(-1+.955*acos(cos(t+4.1883)),1),0);\\\\n//////////////////////////////////////////////\\\\n\\\\nr=r2;\\\\ng=g2;\\\\nb=b2;\\\\n\\\\na2=.25*(1-.5*above(q1,1)*min(q1-1,2));\\\\na=below(q1,1)*sqrt(q1)*.07*a2;\\\"}],\\\"waves\\\":[{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"additive\\\":1,\\\"g\\\":0.25,\\\"b\\\":0.12},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"bt=bt+(.5+2*above(bass-pbass,0)*(bass-pbass))/FPS;\\\\npbass=bass;\\\\n\\\\nt1=bt; //mytime\\\\nt2=q1;\\\\nt3=.3*q1;\\\",\\\"point_eqs_eel\\\":\\\"t=t1+t2*(1-sample);\\\\n\\\\nox=.5+(.3+.05*sample)*cos(t+.65+3.1415*sin(1.7*t+.98))*sin(1.32*t+3.21);\\\\noy=.5+(.3+.05*sample)*1.25*sin(.78*t+1.71)*cos(.91*t+3.09+3.1415*sin(1.49*t+.43));\\\\n\\\\nang=atan2( (py-oy),(px-ox) );\\\\nl=tan(ang);\\\\nx2=.5+(.3-.05*sample)*cos(t+.65+3.1415*sin(1.7*t+.98))*sin(1.32*t+3.21);\\\\ny2=.5+(.3-.05*sample)*1.25*sin(.78*t+1.71)*cos(.91*t+3.09+3.1415*sin(1.49*t+.43));\\\\nsum = (l*x2-y2+oy-l*ox)*sign(ang)*sign(l);\\\\ndir=-1+2*above(sum,-.001);\\\\n\\\\nxtrudx=(1-counter%2)*t3*sample*cos(ang+dir*1.5707)*abs(value1+value2);\\\\nxtrudy=(1-counter%2)*t3*sample*sin(ang+dir*1.5707)*abs(value1+value2);\\\\n\\\\nx=ox+xtrudx;\\\\ny=oy+xtrudy;\\\\n\\\\npx=ox;\\\\npy=oy;\\\\n\\\\ncounter=1-counter;\\\\na=sqr(sample);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"additive\\\":1,\\\"g\\\":0.25,\\\"b\\\":0.12},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"bt=bt+(.5+2*above(bass-pbass,0)*(bass-pbass))/FPS;\\\\npbass=bass;\\\\n\\\\nt1=bt; //mytime\\\\nt2=q1;\\\\nt3=.3*q1;\\\",\\\"point_eqs_eel\\\":\\\"t=t1+t2*(1-sample);\\\\n\\\\nox=.5+(.3-.05*sample)*cos(t+.65+3.1415*sin(1.7*t+.98))*sin(1.32*t+3.21);\\\\noy=.5+(.3-.05*sample)*1.25*sin(.78*t+1.71)*cos(.91*t+3.09+3.1415*sin(1.49*t+.43));\\\\n\\\\nang=atan2( (py-oy),(px-ox) );\\\\nl=tan(ang);\\\\nx2=.5+(.3+.05*sample)*cos(t+.65+3.1415*sin(1.7*t+.98))*sin(1.32*t+3.21);\\\\ny2=.5+(.3+.05*sample)*1.25*sin(.78*t+1.71)*cos(.91*t+3.09+3.1415*sin(1.49*t+.43));\\\\nsum = (l*x2-y2+oy-l*ox)*sign(ang)*sign(l);\\\\ndir=-1+2*above(sum,-.001);\\\\n\\\\nxtrudx=(counter%2)*t3*sample*cos(ang+dir*1.5707)*abs(value1+value2);\\\\nxtrudy=(counter%2)*t3*sample*sin(ang+dir*1.5707)*abs(value1+value2);\\\\n\\\\nx=ox+xtrudx;\\\\ny=oy+xtrudy;\\\\n\\\\npx=ox;\\\\npy=oy;\\\\n\\\\ncounter=1-counter;\\\\na=sqr(sample);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"additive\\\":1,\\\"r\\\":0.12,\\\"g\\\":0.25},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"tt=tt+(.5+2*above(treb-ptreb,0)*(treb-ptreb))/FPS;\\\\nptreb=treb;\\\\n\\\\nt1=tt;\\\\nt2=q1;\\\\nt3=.3*q1;\\\",\\\"point_eqs_eel\\\":\\\"t=t1+t2*(1-sample);\\\\n\\\\nox=.5+(.3+.05*sample)*cos(.78*t+2.09+3.1415*sin(1.39*t+.91))*sin(1.72*t+1.43);\\\\noy=.5+(.3+.05*sample)*1.25*sin(1.41*t+.43)*cos(1.29*t+2.9+3.1415*sin(.93*t+2.6));\\\\n\\\\n\\\\nang=atan( (py-oy)/(px-ox) );\\\\n\\\\nl=tan(ang);\\\\nx2=.5+(.3-.05*sample)*cos(.78*t+2.09+3.1415*sin(1.39*t+.91))*sin(1.72*t+1.43);\\\\ny2=.5+(.3-.05*sample)*1.25*sin(1.41*t+.43)*cos(1.29*t+2.9+3.1415*sin(.93*t+2.6));\\\\nsum = (l*x2-y2+oy-l*ox)*sign(ang)*sign(l);\\\\ndir=-1+2*above(sum,-.001);\\\\n\\\\nxtrudx=(1-counter%2)*t3*sample*cos(ang+dir*1.5707)*abs(value1+value2);\\\\nxtrudy=(1-counter%2)*t3*sample*sin(ang+dir*1.5707)*abs(value1+value2);\\\\n\\\\nx=ox+xtrudx;\\\\ny=oy+xtrudy;\\\\n\\\\npx=ox;\\\\npy=oy;\\\\n\\\\ncounter=1-counter;\\\\na=sqr(sample);\\\"},{\\\"baseVals\\\":{\\\"enabled\\\":1,\\\"additive\\\":1,\\\"r\\\":0.12,\\\"g\\\":0.25},\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"tt=tt+(.5+2*above(treb-ptreb,0)*(treb-ptreb))/FPS;\\\\nptreb=treb;\\\\n\\\\nt1=tt;\\\\nt2=q1;\\\\nt3=.3*q1;\\\",\\\"point_eqs_eel\\\":\\\"t=t1+t2*(1-sample);\\\\n\\\\nox=.5+(.3-.05*sample)*cos(.78*t+2.09+3.1415*sin(1.39*t+.91))*sin(1.72*t+1.43);\\\\noy=.5+(.3-.05*sample)*1.25*sin(1.41*t+.43)*cos(1.29*t+2.9+3.1415*sin(.93*t+2.6));\\\\n\\\\n\\\\nang=atan( (py-oy)/(px-ox) );\\\\nl=tan(ang);\\\\nx2=.5+(.3+.05*sample)*cos(.78*t+2.09+3.1415*sin(1.39*t+.91))*sin(1.72*t+1.43);\\\\ny2=.5+(.3+.05*sample)*1.25*sin(1.41*t+.43)*cos(1.29*t+2.9+3.1415*sin(.93*t+2.6));\\\\nsum = (l*x2-y2+oy-l*ox)*sign(ang)*sign(l);\\\\ndir=-1+2*above(sum,-.001);\\\\n\\\\nxtrudx=(1-counter%2)*t3*sample*cos(ang+dir*1.5707)*abs(value1+value2);\\\\nxtrudy=(1-counter%2)*t3*sample*sin(ang+dir*1.5707)*abs(value1+value2);\\\\n\\\\nx=ox+xtrudx;\\\\ny=oy+xtrudy;\\\\n\\\\npx=ox;\\\\npy=oy;\\\\n\\\\ncounter=1-counter;\\\\na=sqr(sample);\\\"}],\\\"init_eqs_eel\\\":\\\"\\\",\\\"frame_eqs_eel\\\":\\\"// -------------------------------- Beat Detective v0.07 ----------------------------------\\\\nsure=if(equal(sure,0),.6,sure);\\\\ninterval=if(equal(interval,0),40,interval);\\\\nlastbeat=if(equal(lastbeat,0),frame-FPS,lastbeat);\\\\ndbass=(bass-pbass)/FPS;\\\\nbeat=above(dbass,.6*maxdbass)*above(frame-lastbeat,FPS/3);\\\\nsure=if(beat*below(abs(frame-(interval+lastbeat)),FPS/5),\\\\nmin(.095+sure,1),beat*(sure-.095)+(1-beat)*sure*.9996);\\\\nsure=max(.5,sure);\\\\ncheat=if(above(frame,lastbeat+interval+ int(FPS/10))*above(sure,.91),1,cheat);\\\\nbeat=if(cheat,1,beat);\\\\nsure=if(cheat,.95*sure,sure);\\\\nmaxdbass=max(maxdbass*.999,dbass);\\\\nmaxdbass=max(.012,maxdbass);\\\\nmaxdbass=min(.02,maxdbass);\\\\ninterval=if(beat, frame-lastbeat,interval);\\\\nlastbeat=if(beat,frame-cheat*int(FPS/10),lastbeat);\\\\ncheat=0;\\\\npbass=bass;\\\\n// ----------------------------------------------------------------------------------------------\\\\n\\\\nwarp=0;\\\\ngamma=1.1;\\\\ndt=1/FPS;\\\\n\\\\nmytime=mytime+dt;\\\\ncontvol=min( max(.5, (1-.5*dt)*contvol+.5*dt*(bass+mid+treb)*.333 ) ,2 ) ;\\\\nq1=contvol;\\\\nq2=mytime;\\\\nq8=beat;\\\\n\\\\ndecay=.935-above(q1,1.5)*(q1-1.5)*.03;\\\\nmonitor=q1;\\\",\\\"pixel_eqs_eel\\\":\\\"zoom=1+ .1*(rad-.5)*abs(rad-.5);\\\",\\\"warp\\\":\\\"\\\",\\\"comp\\\":\\\"\\\"}\");\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(__webpack_module_cache__[moduleId]) {\n/******/ \t\t\treturn __webpack_module_cache__[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t/* webpack/runtime/define property getters */\n/******/ \t(() => {\n/******/ \t\t// define getter functions for harmony exports\n/******/ \t\t__webpack_require__.d = (exports, definition) => {\n/******/ \t\t\tfor(var key in definition) {\n/******/ \t\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t})();\n/******/ \t\n/******/ \t/* webpack/runtime/hasOwnProperty shorthand */\n/******/ \t(() => {\n/******/ \t\t__webpack_require__.o = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop)\n/******/ \t})();\n/******/ \t\n/******/ \t/* webpack/runtime/make namespace object */\n/******/ \t(() => {\n/******/ \t\t// define __esModule on exports\n/******/ \t\t__webpack_require__.r = (exports) => {\n/******/ \t\t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t\t}\n/******/ \t\t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t\t};\n/******/ \t})();\n/******/ \t\n/************************************************************************/\n/******/ \t// module exports must be returned from runtime so entry inlining is disabled\n/******/ \t// startup\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(\"./base.js\");\n/******/ })()\n;\n});\n//# sourceMappingURL=base.js.map"],"mappings":"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","names":["require_base","__commonJSMin","exports","module","__name","root","factory","__webpack_modules__","__unused_webpack_module","__webpack_exports__","__webpack_require__","__WEBPACK_DEFAULT_EXPORT__","presets","__webpack_module_cache__","moduleId","definition","key","obj","prop"],"sourceRoot":"","file":"/base-DQOOZU4W.js.map"} \ No newline at end of file diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/browserconfig.xml b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/browserconfig.xml similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/browserconfig.xml rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/browserconfig.xml diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/browserconfig.xml.br b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/browserconfig.xml.br similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/browserconfig.xml.br rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/browserconfig.xml.br diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/butterchurn-Q7SUG6GB.js b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/butterchurn-Q7SUG6GB.js similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/butterchurn-Q7SUG6GB.js rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/butterchurn-Q7SUG6GB.js diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/butterchurn-Q7SUG6GB.js.br b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/butterchurn-Q7SUG6GB.js.br similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/butterchurn-Q7SUG6GB.js.br rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/butterchurn-Q7SUG6GB.js.br diff --git a/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/butterchurn-Q7SUG6GB.js.map b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/butterchurn-Q7SUG6GB.js.map new file mode 100644 index 00000000..f7bc87ec --- /dev/null +++ b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/butterchurn-Q7SUG6GB.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["/node_modules/.deno/butterchurn@3.0.0-beta.5/node_modules/butterchurn/dist/butterchurn.js"],"sourcesContent":["{\n const defineMath = (name, assignment) => {\n var configurable = typeof assignment === \"function\" ? true : false;\n var writable = typeof assignment === \"function\" ? true : false;\n var enumerable = typeof assignment === \"function\" ? true : false;\n\n Object.defineProperty(Math, name, {\n configurable: configurable,\n enumerable: enumerable,\n writable: writable,\n value: assignment\n });\n };\n\n defineMath(\"DEG_PER_RAD\", Math.PI / 180);\n defineMath(\"RAD_PER_DEG\", 180 / Math.PI);\n\n const f32A = new Float32Array(1);\n\n defineMath(\"scale\", function scale(x, inLow, inHigh, outLow, outHigh) {\n if (arguments.length === 0) {\n return NaN;\n }\n\n if (Number.isNaN(x) ||\n Number.isNaN(inLow) ||\n Number.isNaN(inHigh) ||\n Number.isNaN(outLow) ||\n Number.isNaN(outHigh)) {\n return NaN;\n }\n\n if (x === Infinity ||\n x === -Infinity) {\n return x;\n }\n\n return (x - inLow) * (outHigh - outLow) /\n (inHigh - inLow) + outLow;\n });\n\n defineMath(\"fscale\", function fscale(x, inLow, inHigh, outLow, outHigh) {\n f32A[0] = Math.scale(x, inLow, inHigh, outLow, outHigh);\n return f32A[0];\n });\n\n defineMath(\"clamp\", function clamp(x, lower, upper) {\n return Math.min(upper, Math.max(lower, x));\n });\n\n defineMath(\"radians\", function radians(degrees) {\n return degrees * Math.DEG_PER_RAD;\n });\n\n defineMath(\"degrees\", function degrees(radians) {\n return radians * Math.RAD_PER_DEG;\n });\n}\n\n/* eslint-disable */\nvar EPSILON = 0.00001;\n\nwindow.sqr = function sqr(x) {\n return x * x;\n};\n\nwindow.sqrt = function sqrt(x) {\n return Math.sqrt(Math.abs(x));\n};\n\nwindow.log10 = function log10(val) {\n return Math.log(val) * Math.LOG10E;\n};\n\nwindow.sign = function sign(x) {\n return x > 0 ? 1 : x < 0 ? -1 : 0;\n};\n\nwindow.rand = function rand(x) {\n var xf = Math.floor(x);\n if (xf < 1) {\n return Math.random();\n }\n return Math.random() * xf;\n};\n\nwindow.randint = function randint(x) {\n return Math.floor(rand(x));\n};\n\nwindow.bnot = function bnot(x) {\n return Math.abs(x) < EPSILON ? 1 : 0;\n};\n\nfunction isFiniteNumber(num) {\n return isFinite(num) && !isNaN(num);\n}\n\nwindow.pow = function pow(x, y) {\n var z = Math.pow(x, y);\n if (!isFiniteNumber(z)) {\n // mostly from complex results\n return 0;\n }\n return z;\n};\n\nwindow.div = function div(x, y) {\n if (y === 0) {\n return 0;\n }\n return x / y;\n};\n\nwindow.mod = function mod(x, y) {\n if (y === 0) {\n return 0;\n }\n var z = Math.floor(x) % Math.floor(y);\n return z;\n};\n\nwindow.bitor = function bitor(x, y) {\n var z = Math.floor(x) | Math.floor(y);\n return z;\n};\n\nwindow.bitand = function bitand(x, y) {\n var z = Math.floor(x) & Math.floor(y);\n return z;\n};\n\nwindow.sigmoid = function sigmoid(x, y) {\n var t = 1 + Math.exp(-x * y);\n return Math.abs(t) > EPSILON ? 1.0 / t : 0;\n};\n\nwindow.bor = function bor(x, y) {\n return Math.abs(x) > EPSILON || Math.abs(y) > EPSILON ? 1 : 0;\n};\n\nwindow.band = function band(x, y) {\n return Math.abs(x) > EPSILON && Math.abs(y) > EPSILON ? 1 : 0;\n};\n\nwindow.equal = function equal(x, y) {\n return Math.abs(x - y) < EPSILON ? 1 : 0;\n};\n\nwindow.above = function above(x, y) {\n return x > y ? 1 : 0;\n};\n\nwindow.below = function below(x, y) {\n return x < y ? 1 : 0;\n};\n\nwindow.ifcond = function ifcond(x, y, z) {\n return Math.abs(x) > EPSILON ? y : z;\n};\n\nwindow.memcpy = function memcpy(megabuf, dst, src, len) {\n let destOffset = dst;\n let srcOffset = src;\n let copyLen = len;\n\n if (srcOffset < 0) {\n copyLen += srcOffset;\n destOffset -= srcOffset;\n srcOffset = 0;\n }\n\n if (destOffset < 0) {\n copyLen += destOffset;\n srcOffset -= destOffset;\n destOffset = 0;\n }\n\n if (copyLen > 0) {\n megabuf.copyWithin(destOffset, srcOffset, copyLen);\n }\n\n return dst;\n};\n/* eslint-enable */\n\nvar src = {};\n\nvar parser$1 = {};\n\nvar preProcessor = {};\n\nvar hasRequiredPreProcessor;\n\nfunction requirePreProcessor () {\n\tif (hasRequiredPreProcessor) return preProcessor;\n\thasRequiredPreProcessor = 1;\n\tObject.defineProperty(preProcessor, \"__esModule\", { value: true });\n\tfunction getLoc(mapper, destCol) {\n\t let previousAnchor = { destCol: 1, srcCol: 1, srcLine: 1 };\n\t // Find the last anchor with a destCol > destCol.\n\t // Reversed: Find the first anchor with a destCol <= destCol\n\t // TODO: Use binary search\n\t mapper.forEach(anchor => {\n\t if (anchor.destCol > destCol) {\n\t return;\n\t }\n\t previousAnchor = anchor;\n\t });\n\t const remainingColumns = destCol - previousAnchor.destCol;\n\t return {\n\t column: previousAnchor.srcCol + remainingColumns,\n\t line: previousAnchor.srcLine,\n\t };\n\t}\n\tpreProcessor.getLoc = getLoc;\n\t// Started with this function: https://github.com/WACUP/vis_milk2/blob/cc2e85aed44373d0b6b2115c0806ec035856860a/vis_milk2/state.cpp#L1532-L1557\n\tfunction preProcess(src) {\n\t const mapper = [];\n\t let srcLine = 1;\n\t let dest = \"\";\n\t let lineStart = 0;\n\t let inlineComment = false;\n\t let blockComment = false;\n\t let emitAnchor = false;\n\t for (let i = 0; i < src.length; i++) {\n\t const char = src[i];\n\t if (emitAnchor) {\n\t const destCol = dest.length + 1;\n\t const srcCol = i - lineStart + 1;\n\t mapper.push({ destCol, srcCol, srcLine });\n\t emitAnchor = false;\n\t }\n\t if (char === \"\\n\") {\n\t inlineComment = false;\n\t srcLine++;\n\t lineStart = i + 1;\n\t emitAnchor = true;\n\t }\n\t else if (char === \"\\r\" && src[i + 1] === \"\\n\") {\n\t i++;\n\t inlineComment = false;\n\t srcLine++;\n\t lineStart = i + 1;\n\t emitAnchor = true;\n\t }\n\t else if (blockComment && char === \"*\" && src[i + 1] === \"/\") {\n\t // TODO: What if we are not currently in a block comment?\n\t blockComment = false;\n\t i++;\n\t emitAnchor = true;\n\t }\n\t else if ((char === \"\\\\\" && src[i + 1] === \"\\\\\") ||\n\t (char === \"/\" && src[i + 1] === \"/\")) {\n\t inlineComment = true;\n\t i++;\n\t }\n\t else if (char === \"/\" && src[i + 1] === \"*\") {\n\t blockComment = true;\n\t i++;\n\t }\n\t else if (!inlineComment && !blockComment) {\n\t dest += char;\n\t }\n\t }\n\t return [dest, mapper];\n\t}\n\tpreProcessor.preProcess = preProcess;\n\t\n\treturn preProcessor;\n}\n\nfunction commonjsRequire(path) {\n\tthrow new Error('Could not dynamically require \"' + path + '\". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');\n}\n\nvar parser = {};\n\n/* parser generated by jison 0.4.18 */\n\nvar hasRequiredParser$1;\n\nfunction requireParser$1 () {\n\tif (hasRequiredParser$1) return parser;\n\thasRequiredParser$1 = 1;\n\t(function (exports) {\n\t\t/*\n\t\t Returns a Parser object of the following structure:\n\n\t\t Parser: {\n\t\t yy: {}\n\t\t }\n\n\t\t Parser.prototype: {\n\t\t yy: {},\n\t\t trace: function(),\n\t\t symbols_: {associative list: name ==> number},\n\t\t terminals_: {associative list: number ==> name},\n\t\t productions_: [...],\n\t\t performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n\t\t table: [...],\n\t\t defaultActions: {...},\n\t\t parseError: function(str, hash),\n\t\t parse: function(input),\n\n\t\t lexer: {\n\t\t EOF: 1,\n\t\t parseError: function(str, hash),\n\t\t setInput: function(input),\n\t\t input: function(),\n\t\t unput: function(str),\n\t\t more: function(),\n\t\t less: function(n),\n\t\t pastInput: function(),\n\t\t upcomingInput: function(),\n\t\t showPosition: function(),\n\t\t test_match: function(regex_match_array, rule_index),\n\t\t next: function(),\n\t\t lex: function(),\n\t\t begin: function(condition),\n\t\t popState: function(),\n\t\t _currentRules: function(),\n\t\t topState: function(),\n\t\t pushState: function(condition),\n\n\t\t options: {\n\t\t ranges: boolean (optional: true ==> token location info will include a .range[] member)\n\t\t flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n\t\t backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n\t\t },\n\n\t\t performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n\t\t rules: [...],\n\t\t conditions: {associative list: name ==> set},\n\t\t }\n\t\t }\n\n\n\t\t token location info (@$, _$, etc.): {\n\t\t first_line: n,\n\t\t last_line: n,\n\t\t first_column: n,\n\t\t last_column: n,\n\t\t range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n\t\t }\n\n\n\t\t the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n\t\t text: (matched text)\n\t\t token: (the produced terminal token, if any)\n\t\t line: (yylineno)\n\t\t }\n\t\t while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n\t\t loc: (yylloc)\n\t\t expected: (string describing the set of expected tokens)\n\t\t recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n\t\t }\n\t\t*/\n\t\tvar parser = (function () {\n\t\t var o = function (k, v, o, l) { for (o = o || {}, l = k.length; l--; o[k[l]] = v)\n\t\t ; return o; }, $V0 = [1, 18], $V1 = [1, 7], $V2 = [1, 19], $V3 = [1, 20], $V4 = [1, 14], $V5 = [1, 15], $V6 = [1, 16], $V7 = [1, 33], $V8 = [1, 31], $V9 = [1, 23], $Va = [1, 22], $Vb = [1, 24], $Vc = [1, 25], $Vd = [1, 26], $Ve = [1, 27], $Vf = [1, 28], $Vg = [1, 29], $Vh = [1, 30], $Vi = [5, 8, 15, 18, 20, 28, 29, 32, 33, 34, 35, 36, 37, 38], $Vj = [5, 15, 18], $Vk = [5, 12, 15, 17, 18, 24, 25, 28, 29, 30], $Vl = [1, 57], $Vm = [5, 8, 12, 15, 17, 18, 24, 25, 28, 29, 30], $Vn = [15, 18], $Vo = [5, 8, 15, 18, 28, 29, 38], $Vp = [5, 8, 15, 18, 28, 29, 32, 33, 38], $Vq = [5, 8, 15, 18, 28, 29, 32, 33, 34, 37, 38], $Vr = [5, 8, 15, 18, 28, 29, 32, 33, 34, 35, 36, 37, 38], $Vs = [5, 8, 15, 18], $Vt = [5, 8, 15, 18, 20, 22, 28, 29, 32, 33, 34, 35, 36, 37, 38];\n\t\t var parser = { trace: function trace() { },\n\t\t yy: {},\n\t\t symbols_: { \"error\": 2, \"SCRIPT\": 3, \"expression\": 4, \"EOF\": 5, \"expressionsOptionalTrailingSemi\": 6, \"separator\": 7, \";\": 8, \"expressions\": 9, \"EXPRESSION_BLOCK\": 10, \"IDENTIFIER\": 11, \"IDENTIFIER_TOKEN\": 12, \"argument\": 13, \"arguments\": 14, \",\": 15, \"FUNCTION_CALL\": 16, \"(\": 17, \")\": 18, \"LOGICAL_EXPRESSION\": 19, \"LOGICAL_OPERATOR_TOKEN\": 20, \"ASSIGNMENT\": 21, \"ASSIGNMENT_OPERATOR_TOKEN\": 22, \"number\": 23, \"DIGITS_TOKEN\": 24, \".\": 25, \"NUMBER_LITERAL\": 26, \"UNARY_EXPRESSION\": 27, \"-\": 28, \"+\": 29, \"!\": 30, \"BINARY_EXPRESSION\": 31, \"*\": 32, \"/\": 33, \"%\": 34, \"&\": 35, \"|\": 36, \"^\": 37, \"COMPARISON_TOKEN\": 38, \"$accept\": 0, \"$end\": 1 },\n\t\t terminals_: { 2: \"error\", 5: \"EOF\", 8: \";\", 12: \"IDENTIFIER_TOKEN\", 15: \",\", 17: \"(\", 18: \")\", 20: \"LOGICAL_OPERATOR_TOKEN\", 22: \"ASSIGNMENT_OPERATOR_TOKEN\", 24: \"DIGITS_TOKEN\", 25: \".\", 28: \"-\", 29: \"+\", 30: \"!\", 32: \"*\", 33: \"/\", 34: \"%\", 35: \"&\", 36: \"|\", 37: \"^\", 38: \"COMPARISON_TOKEN\" },\n\t\t productions_: [0, [3, 2], [3, 2], [3, 1], [7, 1], [7, 2], [9, 2], [9, 3], [6, 1], [6, 2], [10, 1], [11, 1], [13, 1], [13, 1], [14, 1], [14, 3], [16, 3], [16, 4], [19, 3], [21, 3], [21, 3], [23, 1], [23, 2], [23, 3], [23, 2], [23, 1], [26, 1], [27, 2], [27, 2], [27, 2], [31, 3], [31, 3], [31, 3], [31, 3], [31, 3], [31, 3], [31, 3], [31, 3], [31, 3], [4, 1], [4, 1], [4, 3], [4, 1], [4, 1], [4, 1], [4, 1], [4, 1], [4, 3]],\n\t\t performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n\t\t /* this == yyval */\n\t\t var $0 = $$.length - 1;\n\t\t switch (yystate) {\n\t\t case 1:\n\t\t return { type: 'SCRIPT', body: [$$[$0 - 1]], loc: this._$ };\n\t\t case 2:\n\t\t return { type: 'SCRIPT', body: $$[$0 - 1], loc: this._$ };\n\t\t case 3:\n\t\t return { type: 'SCRIPT', body: [], loc: this._$ };\n\t\t case 6:\n\t\t this.$ = [$$[$0 - 1]];\n\t\t break;\n\t\t case 7:\n\t\t this.$ = $$[$0 - 2].concat([$$[$0 - 1]]);\n\t\t break;\n\t\t case 8:\n\t\t this.$ = $$[$0];\n\t\t break;\n\t\t case 9:\n\t\t this.$ = $$[$0 - 1].concat([$$[$0]]);\n\t\t break;\n\t\t case 10:\n\t\t this.$ = { type: 'EXPRESSION_BLOCK', body: $$[$0], loc: this._$ };\n\t\t break;\n\t\t case 11:\n\t\t this.$ = { type: 'IDENTIFIER', value: $$[$0].toLowerCase(), loc: this._$ };\n\t\t break;\n\t\t case 14:\n\t\t this.$ = [$$[$0]];\n\t\t break;\n\t\t case 15:\n\t\t this.$ = $$[$0 - 2].concat([$$[$0]]);\n\t\t break;\n\t\t case 16:\n\t\t this.$ = { type: 'CALL_EXPRESSION', callee: $$[$0 - 2], arguments: [], loc: this._$ };\n\t\t break;\n\t\t case 17:\n\t\t this.$ = { type: 'CALL_EXPRESSION', callee: $$[$0 - 3], arguments: $$[$0 - 1], loc: this._$ };\n\t\t break;\n\t\t case 18:\n\t\t this.$ = { type: 'LOGICAL_EXPRESSION', left: $$[$0 - 2], right: $$[$0], operator: $$[$0 - 1], loc: this._$ };\n\t\t break;\n\t\t case 19:\n\t\t case 20:\n\t\t this.$ = { type: 'ASSIGNMENT_EXPRESSION', left: $$[$0 - 2], operator: $$[$0 - 1], right: $$[$0], loc: this._$ };\n\t\t break;\n\t\t case 21:\n\t\t this.$ = Number($$[$0]);\n\t\t break;\n\t\t case 22:\n\t\t this.$ = Number($$[$0 - 1]);\n\t\t break;\n\t\t case 23:\n\t\t this.$ = Number($$[$0 - 2] + $$[$0 - 1] + $$[$0]);\n\t\t break;\n\t\t case 24:\n\t\t this.$ = Number('0' + $$[$0 - 1] + $$[$0]);\n\t\t break;\n\t\t case 25:\n\t\t this.$ = 0;\n\t\t break;\n\t\t case 26:\n\t\t this.$ = { type: 'NUMBER_LITERAL', value: $$[$0], loc: this._$ };\n\t\t break;\n\t\t case 27:\n\t\t case 28:\n\t\t case 29:\n\t\t this.$ = { type: 'UNARY_EXPRESSION', value: $$[$0], operator: $$[$0 - 1], loc: this._$ };\n\t\t break;\n\t\t case 30:\n\t\t case 31:\n\t\t case 32:\n\t\t case 33:\n\t\t case 34:\n\t\t case 35:\n\t\t case 36:\n\t\t case 37:\n\t\t case 38:\n\t\t this.$ = { type: 'BINARY_EXPRESSION', left: $$[$0 - 2], right: $$[$0], operator: $$[$0 - 1], loc: this._$ };\n\t\t break;\n\t\t case 41:\n\t\t case 47:\n\t\t this.$ = $$[$0 - 1];\n\t\t break;\n\t\t }\n\t\t },\n\t\t table: [{ 3: 1, 4: 2, 5: [1, 4], 6: 3, 9: 13, 11: 11, 12: $V0, 16: 10, 17: $V1, 19: 12, 21: 9, 23: 17, 24: $V2, 25: $V3, 26: 8, 27: 6, 28: $V4, 29: $V5, 30: $V6, 31: 5 }, { 1: [3] }, { 5: [1, 21], 7: 32, 8: $V7, 20: $V8, 28: $V9, 29: $Va, 32: $Vb, 33: $Vc, 34: $Vd, 35: $Ve, 36: $Vf, 37: $Vg, 38: $Vh }, { 5: [1, 34] }, { 1: [2, 3] }, o($Vi, [2, 39]), o($Vi, [2, 40]), { 4: 35, 6: 37, 9: 13, 10: 36, 11: 11, 12: $V0, 16: 10, 17: $V1, 19: 12, 21: 9, 23: 17, 24: $V2, 25: $V3, 26: 8, 27: 6, 28: $V4, 29: $V5, 30: $V6, 31: 5 }, o($Vi, [2, 42]), o($Vi, [2, 43]), o($Vi, [2, 44], { 22: [1, 38] }), o($Vi, [2, 45], { 17: [1, 40], 22: [1, 39] }), o($Vi, [2, 46]), o($Vj, [2, 8], { 31: 5, 27: 6, 26: 8, 21: 9, 16: 10, 11: 11, 19: 12, 23: 17, 4: 41, 12: $V0, 17: $V1, 24: $V2, 25: $V3, 28: $V4, 29: $V5, 30: $V6 }), { 4: 42, 11: 11, 12: $V0, 16: 10, 17: $V1, 19: 12, 21: 9, 23: 17, 24: $V2, 25: $V3, 26: 8, 27: 6, 28: $V4, 29: $V5, 30: $V6, 31: 5 }, { 4: 43, 11: 11, 12: $V0, 16: 10, 17: $V1, 19: 12, 21: 9, 23: 17, 24: $V2, 25: $V3, 26: 8, 27: 6, 28: $V4, 29: $V5, 30: $V6, 31: 5 }, { 4: 44, 11: 11, 12: $V0, 16: 10, 17: $V1, 19: 12, 21: 9, 23: 17, 24: $V2, 25: $V3, 26: 8, 27: 6, 28: $V4, 29: $V5, 30: $V6, 31: 5 }, o($Vi, [2, 26]), o([5, 8, 15, 17, 18, 20, 22, 28, 29, 32, 33, 34, 35, 36, 37, 38], [2, 11]), o($Vi, [2, 21], { 25: [1, 45] }), o($Vi, [2, 25], { 24: [1, 46] }), { 1: [2, 1] }, { 4: 47, 11: 11, 12: $V0, 16: 10, 17: $V1, 19: 12, 21: 9, 23: 17, 24: $V2, 25: $V3, 26: 8, 27: 6, 28: $V4, 29: $V5, 30: $V6, 31: 5 }, { 4: 48, 11: 11, 12: $V0, 16: 10, 17: $V1, 19: 12, 21: 9, 23: 17, 24: $V2, 25: $V3, 26: 8, 27: 6, 28: $V4, 29: $V5, 30: $V6, 31: 5 }, { 4: 49, 11: 11, 12: $V0, 16: 10, 17: $V1, 19: 12, 21: 9, 23: 17, 24: $V2, 25: $V3, 26: 8, 27: 6, 28: $V4, 29: $V5, 30: $V6, 31: 5 }, { 4: 50, 11: 11, 12: $V0, 16: 10, 17: $V1, 19: 12, 21: 9, 23: 17, 24: $V2, 25: $V3, 26: 8, 27: 6, 28: $V4, 29: $V5, 30: $V6, 31: 5 }, { 4: 51, 11: 11, 12: $V0, 16: 10, 17: $V1, 19: 12, 21: 9, 23: 17, 24: $V2, 25: $V3, 26: 8, 27: 6, 28: $V4, 29: $V5, 30: $V6, 31: 5 }, { 4: 52, 11: 11, 12: $V0, 16: 10, 17: $V1, 19: 12, 21: 9, 23: 17, 24: $V2, 25: $V3, 26: 8, 27: 6, 28: $V4, 29: $V5, 30: $V6, 31: 5 }, { 4: 53, 11: 11, 12: $V0, 16: 10, 17: $V1, 19: 12, 21: 9, 23: 17, 24: $V2, 25: $V3, 26: 8, 27: 6, 28: $V4, 29: $V5, 30: $V6, 31: 5 }, { 4: 54, 11: 11, 12: $V0, 16: 10, 17: $V1, 19: 12, 21: 9, 23: 17, 24: $V2, 25: $V3, 26: 8, 27: 6, 28: $V4, 29: $V5, 30: $V6, 31: 5 }, { 4: 55, 11: 11, 12: $V0, 16: 10, 17: $V1, 19: 12, 21: 9, 23: 17, 24: $V2, 25: $V3, 26: 8, 27: 6, 28: $V4, 29: $V5, 30: $V6, 31: 5 }, { 4: 56, 11: 11, 12: $V0, 16: 10, 17: $V1, 19: 12, 21: 9, 23: 17, 24: $V2, 25: $V3, 26: 8, 27: 6, 28: $V4, 29: $V5, 30: $V6, 31: 5 }, o($Vk, [2, 6], { 8: $Vl }), o($Vm, [2, 4]), { 1: [2, 2] }, { 7: 32, 8: $V7, 18: [1, 58], 20: $V8, 28: $V9, 29: $Va, 32: $Vb, 33: $Vc, 34: $Vd, 35: $Ve, 36: $Vf, 37: $Vg, 38: $Vh }, { 18: [1, 59] }, o($Vn, [2, 10]), { 4: 60, 11: 11, 12: $V0, 16: 10, 17: $V1, 19: 12, 21: 9, 23: 17, 24: $V2, 25: $V3, 26: 8, 27: 6, 28: $V4, 29: $V5, 30: $V6, 31: 5 }, { 4: 61, 11: 11, 12: $V0, 16: 10, 17: $V1, 19: 12, 21: 9, 23: 17, 24: $V2, 25: $V3, 26: 8, 27: 6, 28: $V4, 29: $V5, 30: $V6, 31: 5 }, { 4: 65, 6: 37, 9: 13, 10: 66, 11: 11, 12: $V0, 13: 64, 14: 63, 16: 10, 17: $V1, 18: [1, 62], 19: 12, 21: 9, 23: 17, 24: $V2, 25: $V3, 26: 8, 27: 6, 28: $V4, 29: $V5, 30: $V6, 31: 5 }, o($Vj, [2, 9], { 7: 67, 8: $V7, 20: $V8, 28: $V9, 29: $Va, 32: $Vb, 33: $Vc, 34: $Vd, 35: $Ve, 36: $Vf, 37: $Vg, 38: $Vh }), o($Vo, [2, 27], { 20: $V8, 32: $Vb, 33: $Vc, 34: $Vd, 35: $Ve, 36: $Vf, 37: $Vg }), o($Vo, [2, 28], { 20: $V8, 32: $Vb, 33: $Vc, 34: $Vd, 35: $Ve, 36: $Vf, 37: $Vg }), o($Vo, [2, 29], { 20: $V8, 32: $Vb, 33: $Vc, 34: $Vd, 35: $Ve, 36: $Vf, 37: $Vg }), o($Vi, [2, 22], { 24: [1, 68] }), o($Vi, [2, 24]), o($Vo, [2, 30], { 20: $V8, 32: $Vb, 33: $Vc, 34: $Vd, 35: $Ve, 36: $Vf, 37: $Vg }), o($Vo, [2, 31], { 20: $V8, 32: $Vb, 33: $Vc, 34: $Vd, 35: $Ve, 36: $Vf, 37: $Vg }), o($Vp, [2, 32], { 20: $V8, 34: $Vd, 35: $Ve, 36: $Vf, 37: $Vg }), o($Vp, [2, 33], { 20: $V8, 34: $Vd, 35: $Ve, 36: $Vf, 37: $Vg }), o($Vq, [2, 34], { 20: $V8, 35: $Ve, 36: $Vf }), o($Vr, [2, 35], { 20: $V8 }), o($Vr, [2, 36], { 20: $V8 }), o($Vq, [2, 37], { 20: $V8, 35: $Ve, 36: $Vf }), o($Vs, [2, 38], { 20: $V8, 28: $V9, 29: $Va, 32: $Vb, 33: $Vc, 34: $Vd, 35: $Ve, 36: $Vf, 37: $Vg, 38: $Vh }), o($Vi, [2, 18]), o($Vm, [2, 5]), o($Vi, [2, 41]), o($Vi, [2, 47]), o($Vs, [2, 20], { 20: $V8, 28: $V9, 29: $Va, 32: $Vb, 33: $Vc, 34: $Vd, 35: $Ve, 36: $Vf, 37: $Vg, 38: $Vh }), o($Vs, [2, 19], { 20: $V8, 28: $V9, 29: $Va, 32: $Vb, 33: $Vc, 34: $Vd, 35: $Ve, 36: $Vf, 37: $Vg, 38: $Vh }), o($Vt, [2, 16]), { 15: [1, 70], 18: [1, 69] }, o($Vn, [2, 14]), o($Vn, [2, 12], { 7: 32, 8: $V7, 20: $V8, 28: $V9, 29: $Va, 32: $Vb, 33: $Vc, 34: $Vd, 35: $Ve, 36: $Vf, 37: $Vg, 38: $Vh }), o($Vn, [2, 13]), o($Vk, [2, 7], { 8: $Vl }), o($Vi, [2, 23]), o($Vt, [2, 17]), { 4: 65, 6: 37, 9: 13, 10: 66, 11: 11, 12: $V0, 13: 71, 16: 10, 17: $V1, 19: 12, 21: 9, 23: 17, 24: $V2, 25: $V3, 26: 8, 27: 6, 28: $V4, 29: $V5, 30: $V6, 31: 5 }, o($Vn, [2, 15])],\n\t\t defaultActions: { 4: [2, 3], 21: [2, 1], 34: [2, 2] },\n\t\t parseError: function parseError(str, hash) {\n\t\t if (hash.recoverable) {\n\t\t this.trace(str);\n\t\t }\n\t\t else {\n\t\t var error = new Error(str);\n\t\t error.hash = hash;\n\t\t throw error;\n\t\t }\n\t\t },\n\t\t parse: function parse(input) {\n\t\t var self = this, stack = [0], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, TERROR = 2, EOF = 1;\n\t\t var args = lstack.slice.call(arguments, 1);\n\t\t var lexer = Object.create(this.lexer);\n\t\t var sharedState = { yy: {} };\n\t\t for (var k in this.yy) {\n\t\t if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n\t\t sharedState.yy[k] = this.yy[k];\n\t\t }\n\t\t }\n\t\t lexer.setInput(input, sharedState.yy);\n\t\t sharedState.yy.lexer = lexer;\n\t\t sharedState.yy.parser = this;\n\t\t if (typeof lexer.yylloc == 'undefined') {\n\t\t lexer.yylloc = {};\n\t\t }\n\t\t var yyloc = lexer.yylloc;\n\t\t lstack.push(yyloc);\n\t\t var ranges = lexer.options && lexer.options.ranges;\n\t\t if (typeof sharedState.yy.parseError === 'function') {\n\t\t this.parseError = sharedState.yy.parseError;\n\t\t }\n\t\t else {\n\t\t this.parseError = Object.getPrototypeOf(this).parseError;\n\t\t }\n\t\t var lex = function () {\n\t\t var token;\n\t\t token = lexer.lex() || EOF;\n\t\t if (typeof token !== 'number') {\n\t\t token = self.symbols_[token] || token;\n\t\t }\n\t\t return token;\n\t\t };\n\t\t var symbol, state, action, r, yyval = {}, p, len, newState, expected;\n\t\t while (true) {\n\t\t state = stack[stack.length - 1];\n\t\t if (this.defaultActions[state]) {\n\t\t action = this.defaultActions[state];\n\t\t }\n\t\t else {\n\t\t if (symbol === null || typeof symbol == 'undefined') {\n\t\t symbol = lex();\n\t\t }\n\t\t action = table[state] && table[state][symbol];\n\t\t }\n\t\t if (typeof action === 'undefined' || !action.length || !action[0]) {\n\t\t var errStr = '';\n\t\t expected = [];\n\t\t for (p in table[state]) {\n\t\t if (this.terminals_[p] && p > TERROR) {\n\t\t expected.push('\\'' + this.terminals_[p] + '\\'');\n\t\t }\n\t\t }\n\t\t if (lexer.showPosition) {\n\t\t errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n\t\t }\n\t\t else {\n\t\t errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n\t\t }\n\t\t this.parseError(errStr, {\n\t\t text: lexer.match,\n\t\t token: this.terminals_[symbol] || symbol,\n\t\t line: lexer.yylineno,\n\t\t loc: yyloc,\n\t\t expected: expected\n\t\t });\n\t\t }\n\t\t if (action[0] instanceof Array && action.length > 1) {\n\t\t throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n\t\t }\n\t\t switch (action[0]) {\n\t\t case 1:\n\t\t stack.push(symbol);\n\t\t vstack.push(lexer.yytext);\n\t\t lstack.push(lexer.yylloc);\n\t\t stack.push(action[1]);\n\t\t symbol = null;\n\t\t {\n\t\t yyleng = lexer.yyleng;\n\t\t yytext = lexer.yytext;\n\t\t yylineno = lexer.yylineno;\n\t\t yyloc = lexer.yylloc;\n\t\t }\n\t\t break;\n\t\t case 2:\n\t\t len = this.productions_[action[1]][1];\n\t\t yyval.$ = vstack[vstack.length - len];\n\t\t yyval._$ = {\n\t\t first_line: lstack[lstack.length - (len || 1)].first_line,\n\t\t last_line: lstack[lstack.length - 1].last_line,\n\t\t first_column: lstack[lstack.length - (len || 1)].first_column,\n\t\t last_column: lstack[lstack.length - 1].last_column\n\t\t };\n\t\t if (ranges) {\n\t\t yyval._$.range = [\n\t\t lstack[lstack.length - (len || 1)].range[0],\n\t\t lstack[lstack.length - 1].range[1]\n\t\t ];\n\t\t }\n\t\t r = this.performAction.apply(yyval, [\n\t\t yytext,\n\t\t yyleng,\n\t\t yylineno,\n\t\t sharedState.yy,\n\t\t action[1],\n\t\t vstack,\n\t\t lstack\n\t\t ].concat(args));\n\t\t if (typeof r !== 'undefined') {\n\t\t return r;\n\t\t }\n\t\t if (len) {\n\t\t stack = stack.slice(0, -1 * len * 2);\n\t\t vstack = vstack.slice(0, -1 * len);\n\t\t lstack = lstack.slice(0, -1 * len);\n\t\t }\n\t\t stack.push(this.productions_[action[1]][0]);\n\t\t vstack.push(yyval.$);\n\t\t lstack.push(yyval._$);\n\t\t newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n\t\t stack.push(newState);\n\t\t break;\n\t\t case 3:\n\t\t return true;\n\t\t }\n\t\t }\n\t\t return true;\n\t\t } };\n\t\t /* generated by jison-lex 0.3.4 */\n\t\t var lexer = (function () {\n\t\t var lexer = ({\n\t\t EOF: 1,\n\t\t parseError: function parseError(str, hash) {\n\t\t if (this.yy.parser) {\n\t\t this.yy.parser.parseError(str, hash);\n\t\t }\n\t\t else {\n\t\t throw new Error(str);\n\t\t }\n\t\t },\n\t\t // resets the lexer, sets new input\n\t\t setInput: function (input, yy) {\n\t\t this.yy = yy || this.yy || {};\n\t\t this._input = input;\n\t\t this._more = this._backtrack = this.done = false;\n\t\t this.yylineno = this.yyleng = 0;\n\t\t this.yytext = this.matched = this.match = '';\n\t\t this.conditionStack = ['INITIAL'];\n\t\t this.yylloc = {\n\t\t first_line: 1,\n\t\t first_column: 0,\n\t\t last_line: 1,\n\t\t last_column: 0\n\t\t };\n\t\t if (this.options.ranges) {\n\t\t this.yylloc.range = [0, 0];\n\t\t }\n\t\t this.offset = 0;\n\t\t return this;\n\t\t },\n\t\t // consumes and returns one char from the input\n\t\t input: function () {\n\t\t var ch = this._input[0];\n\t\t this.yytext += ch;\n\t\t this.yyleng++;\n\t\t this.offset++;\n\t\t this.match += ch;\n\t\t this.matched += ch;\n\t\t var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n\t\t if (lines) {\n\t\t this.yylineno++;\n\t\t this.yylloc.last_line++;\n\t\t }\n\t\t else {\n\t\t this.yylloc.last_column++;\n\t\t }\n\t\t if (this.options.ranges) {\n\t\t this.yylloc.range[1]++;\n\t\t }\n\t\t this._input = this._input.slice(1);\n\t\t return ch;\n\t\t },\n\t\t // unshifts one char (or a string) into the input\n\t\t unput: function (ch) {\n\t\t var len = ch.length;\n\t\t var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\t\t this._input = ch + this._input;\n\t\t this.yytext = this.yytext.substr(0, this.yytext.length - len);\n\t\t //this.yyleng -= len;\n\t\t this.offset -= len;\n\t\t var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n\t\t this.match = this.match.substr(0, this.match.length - 1);\n\t\t this.matched = this.matched.substr(0, this.matched.length - 1);\n\t\t if (lines.length - 1) {\n\t\t this.yylineno -= lines.length - 1;\n\t\t }\n\t\t var r = this.yylloc.range;\n\t\t this.yylloc = {\n\t\t first_line: this.yylloc.first_line,\n\t\t last_line: this.yylineno + 1,\n\t\t first_column: this.yylloc.first_column,\n\t\t last_column: lines ?\n\t\t (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n\t\t + oldLines[oldLines.length - lines.length].length - lines[0].length :\n\t\t this.yylloc.first_column - len\n\t\t };\n\t\t if (this.options.ranges) {\n\t\t this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n\t\t }\n\t\t this.yyleng = this.yytext.length;\n\t\t return this;\n\t\t },\n\t\t // When called from action, caches matched text and appends it on next action\n\t\t more: function () {\n\t\t this._more = true;\n\t\t return this;\n\t\t },\n\t\t // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\n\t\t reject: function () {\n\t\t if (this.options.backtrack_lexer) {\n\t\t this._backtrack = true;\n\t\t }\n\t\t else {\n\t\t return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n\t\t text: \"\",\n\t\t token: null,\n\t\t line: this.yylineno\n\t\t });\n\t\t }\n\t\t return this;\n\t\t },\n\t\t // retain first n characters of the match\n\t\t less: function (n) {\n\t\t this.unput(this.match.slice(n));\n\t\t },\n\t\t // displays already matched input, i.e. for error messages\n\t\t pastInput: function () {\n\t\t var past = this.matched.substr(0, this.matched.length - this.match.length);\n\t\t return (past.length > 20 ? '...' : '') + past.substr(-20).replace(/\\n/g, \"\");\n\t\t },\n\t\t // displays upcoming input, i.e. for error messages\n\t\t upcomingInput: function () {\n\t\t var next = this.match;\n\t\t if (next.length < 20) {\n\t\t next += this._input.substr(0, 20 - next.length);\n\t\t }\n\t\t return (next.substr(0, 20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n\t\t },\n\t\t // displays the character position where the lexing error occurred, i.e. for error messages\n\t\t showPosition: function () {\n\t\t var pre = this.pastInput();\n\t\t var c = new Array(pre.length + 1).join(\"-\");\n\t\t return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n\t\t },\n\t\t // test the lexed token: return FALSE when not a match, otherwise return token\n\t\t test_match: function (match, indexed_rule) {\n\t\t var token, lines, backup;\n\t\t if (this.options.backtrack_lexer) {\n\t\t // save context\n\t\t backup = {\n\t\t yylineno: this.yylineno,\n\t\t yylloc: {\n\t\t first_line: this.yylloc.first_line,\n\t\t last_line: this.last_line,\n\t\t first_column: this.yylloc.first_column,\n\t\t last_column: this.yylloc.last_column\n\t\t },\n\t\t yytext: this.yytext,\n\t\t match: this.match,\n\t\t matches: this.matches,\n\t\t matched: this.matched,\n\t\t yyleng: this.yyleng,\n\t\t offset: this.offset,\n\t\t _more: this._more,\n\t\t _input: this._input,\n\t\t yy: this.yy,\n\t\t conditionStack: this.conditionStack.slice(0),\n\t\t done: this.done\n\t\t };\n\t\t if (this.options.ranges) {\n\t\t backup.yylloc.range = this.yylloc.range.slice(0);\n\t\t }\n\t\t }\n\t\t lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n\t\t if (lines) {\n\t\t this.yylineno += lines.length;\n\t\t }\n\t\t this.yylloc = {\n\t\t first_line: this.yylloc.last_line,\n\t\t last_line: this.yylineno + 1,\n\t\t first_column: this.yylloc.last_column,\n\t\t last_column: lines ?\n\t\t lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n\t\t this.yylloc.last_column + match[0].length\n\t\t };\n\t\t this.yytext += match[0];\n\t\t this.match += match[0];\n\t\t this.matches = match;\n\t\t this.yyleng = this.yytext.length;\n\t\t if (this.options.ranges) {\n\t\t this.yylloc.range = [this.offset, this.offset += this.yyleng];\n\t\t }\n\t\t this._more = false;\n\t\t this._backtrack = false;\n\t\t this._input = this._input.slice(match[0].length);\n\t\t this.matched += match[0];\n\t\t token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n\t\t if (this.done && this._input) {\n\t\t this.done = false;\n\t\t }\n\t\t if (token) {\n\t\t return token;\n\t\t }\n\t\t else if (this._backtrack) {\n\t\t // recover context\n\t\t for (var k in backup) {\n\t\t this[k] = backup[k];\n\t\t }\n\t\t return false; // rule action called reject() implying the next rule should be tested instead.\n\t\t }\n\t\t return false;\n\t\t },\n\t\t // return next match in input\n\t\t next: function () {\n\t\t if (this.done) {\n\t\t return this.EOF;\n\t\t }\n\t\t if (!this._input) {\n\t\t this.done = true;\n\t\t }\n\t\t var token, match, tempMatch, index;\n\t\t if (!this._more) {\n\t\t this.yytext = '';\n\t\t this.match = '';\n\t\t }\n\t\t var rules = this._currentRules();\n\t\t for (var i = 0; i < rules.length; i++) {\n\t\t tempMatch = this._input.match(this.rules[rules[i]]);\n\t\t if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n\t\t match = tempMatch;\n\t\t index = i;\n\t\t if (this.options.backtrack_lexer) {\n\t\t token = this.test_match(tempMatch, rules[i]);\n\t\t if (token !== false) {\n\t\t return token;\n\t\t }\n\t\t else if (this._backtrack) {\n\t\t match = false;\n\t\t continue; // rule action called reject() implying a rule MISmatch.\n\t\t }\n\t\t else {\n\t\t // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n\t\t return false;\n\t\t }\n\t\t }\n\t\t else if (!this.options.flex) {\n\t\t break;\n\t\t }\n\t\t }\n\t\t }\n\t\t if (match) {\n\t\t token = this.test_match(match, rules[index]);\n\t\t if (token !== false) {\n\t\t return token;\n\t\t }\n\t\t // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n\t\t return false;\n\t\t }\n\t\t if (this._input === \"\") {\n\t\t return this.EOF;\n\t\t }\n\t\t else {\n\t\t return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n\t\t text: \"\",\n\t\t token: null,\n\t\t line: this.yylineno\n\t\t });\n\t\t }\n\t\t },\n\t\t // return next match that has a token\n\t\t lex: function lex() {\n\t\t var r = this.next();\n\t\t if (r) {\n\t\t return r;\n\t\t }\n\t\t else {\n\t\t return this.lex();\n\t\t }\n\t\t },\n\t\t // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n\t\t begin: function begin(condition) {\n\t\t this.conditionStack.push(condition);\n\t\t },\n\t\t // pop the previously active lexer condition state off the condition stack\n\t\t popState: function popState() {\n\t\t var n = this.conditionStack.length - 1;\n\t\t if (n > 0) {\n\t\t return this.conditionStack.pop();\n\t\t }\n\t\t else {\n\t\t return this.conditionStack[0];\n\t\t }\n\t\t },\n\t\t // produce the lexer rule set which is active for the currently active lexer condition state\n\t\t _currentRules: function _currentRules() {\n\t\t if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n\t\t return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n\t\t }\n\t\t else {\n\t\t return this.conditions[\"INITIAL\"].rules;\n\t\t }\n\t\t },\n\t\t // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n\t\t topState: function topState(n) {\n\t\t n = this.conditionStack.length - 1 - Math.abs(n || 0);\n\t\t if (n >= 0) {\n\t\t return this.conditionStack[n];\n\t\t }\n\t\t else {\n\t\t return \"INITIAL\";\n\t\t }\n\t\t },\n\t\t // alias for begin(condition)\n\t\t pushState: function pushState(condition) {\n\t\t this.begin(condition);\n\t\t },\n\t\t // return the number of states currently on the stack\n\t\t stateStackSize: function stateStackSize() {\n\t\t return this.conditionStack.length;\n\t\t },\n\t\t options: {},\n\t\t performAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n\t\t switch ($avoiding_name_collisions) {\n\t\t case 0: /* skip whitespace */\n\t\t break;\n\t\t case 1:\n\t\t return 24;\n\t\t case 2:\n\t\t return 38;\n\t\t case 3:\n\t\t return 22;\n\t\t case 4:\n\t\t return 20;\n\t\t case 5:\n\t\t return 12;\n\t\t case 6:\n\t\t return 5;\n\t\t case 7:\n\t\t return yy_.yytext[0];\n\t\t }\n\t\t },\n\t\t rules: [/^(?:\\s+)/, /^(?:[0-9]+)/, /^(?:(==|!=|<=|>=|<|>))/, /^(?:[+\\-*/%]?=)/, /^(?:(\\&\\&)|\\|\\|)/, /^(?:[a-zA-Z_][a-zA-Z0-9._]*)/, /^(?:$)/, /^(?:.)/],\n\t\t conditions: { \"INITIAL\": { \"rules\": [0, 1, 2, 3, 4, 5, 6, 7], \"inclusive\": true } }\n\t\t });\n\t\t return lexer;\n\t\t })();\n\t\t parser.lexer = lexer;\n\t\t function Parser() {\n\t\t this.yy = {};\n\t\t }\n\t\t Parser.prototype = parser;\n\t\t parser.Parser = Parser;\n\t\t return new Parser;\n\t\t})();\n\t\tif (typeof commonjsRequire !== 'undefined' && 'object' !== 'undefined') {\n\t\t exports.parser = parser;\n\t\t exports.Parser = parser.Parser;\n\t\t exports.parse = function () { return parser.parse.apply(parser, arguments); };\n\t\t exports.main = () => { };\n\t\t}\n\t\t\n\t} (parser));\n\treturn parser;\n}\n\nvar envParser;\nvar hasRequiredEnvParser;\n\nfunction requireEnvParser () {\n\tif (hasRequiredEnvParser) return envParser;\n\thasRequiredEnvParser = 1;\n\t// This module is in charge of selecting either the pre-built module or the one\n\t// that builds it a runtime with jison.\n\tlet parserImpl = requireParser$1();\n\t/*\n\tlet parserImpl = null;\n\t// Always use the dynamic one, while we figure out why the built one doens't work.\n\tif (process.env.NODE_ENV === \"production\") {\n\t parserImpl = require(\"../build/parser\");\n\t} else {\n\t parserImpl = require(\"../tools/buildParser\");\n\t}\n\t*/\n\tenvParser = { parse: parserImpl.parse };\n\t\n\treturn envParser;\n}\n\nvar astUtils = {};\n\nvar hasRequiredAstUtils;\n\nfunction requireAstUtils () {\n\tif (hasRequiredAstUtils) return astUtils;\n\thasRequiredAstUtils = 1;\n\tObject.defineProperty(astUtils, \"__esModule\", { value: true });\n\tconst CHILDREN = {\n\t ASSIGNMENT_EXPRESSION: [\n\t { type: \"NODE\", key: \"right\" },\n\t ],\n\t SCRIPT: [{ type: \"ARRAY\", key: \"body\" }],\n\t EXPRESSION_BLOCK: [{ type: \"ARRAY\", key: \"body\" }],\n\t UNARY_EXPRESSION: [{ type: \"NODE\", key: \"value\" }],\n\t NUMBER_LITERAL: [],\n\t IDENTIFIER: [],\n\t CALL_EXPRESSION: [\n\t { type: \"ARRAY\", key: \"arguments\" },\n\t { type: \"NODE\", key: \"callee\" },\n\t ],\n\t BINARY_EXPRESSION: [\n\t { type: \"NODE\", key: \"left\" },\n\t { type: \"NODE\", key: \"right\" },\n\t ],\n\t LOGICAL_EXPRESSION: [\n\t { type: \"NODE\", key: \"left\" },\n\t { type: \"NODE\", key: \"right\" },\n\t ],\n\t};\n\tfunction mapAst(ast, cb) {\n\t const children = CHILDREN[ast.type];\n\t let newAst = ast;\n\t if (children == null) {\n\t throw new Error(`Unknown children definition for ${ast.type}`);\n\t }\n\t children.forEach(child => {\n\t if (child.type === \"NODE\") {\n\t const orignalChild = ast[child.key];\n\t const newChild = mapAst(orignalChild, cb);\n\t if (newChild !== orignalChild) {\n\t newAst = Object.assign(Object.assign({}, newAst), { [child.key]: newChild });\n\t }\n\t }\n\t else if (child.type === \"ARRAY\") {\n\t const orignalChildren = ast[child.key];\n\t const newChildren = orignalChildren.map(originalChild => mapAst(originalChild, cb));\n\t const childrenHaveChanged = orignalChildren.some((child, i) => child !== newChildren[i]);\n\t if (childrenHaveChanged) {\n\t newAst = Object.assign(Object.assign({}, newAst), { [child.key]: newChildren });\n\t }\n\t }\n\t });\n\t return cb(newAst);\n\t}\n\tastUtils.mapAst = mapAst;\n\t\n\treturn astUtils;\n}\n\nvar errorUtils = {};\n\nvar utils = {};\n\nvar hasRequiredUtils;\n\nfunction requireUtils () {\n\tif (hasRequiredUtils) return utils;\n\thasRequiredUtils = 1;\n\tObject.defineProperty(utils, \"__esModule\", { value: true });\n\tfunction arrayJoin(arr, joiner) {\n\t const newArr = [];\n\t for (let i = 0; i < arr.length; i++) {\n\t newArr.push(arr[i]);\n\t const last = i === arr.length - 1;\n\t if (!last) {\n\t newArr.push(joiner);\n\t }\n\t }\n\t return newArr;\n\t}\n\tutils.arrayJoin = arrayJoin;\n\tfunction flatten(arr) {\n\t return [].concat.apply([], arr);\n\t}\n\tutils.flatten = flatten;\n\tfunction times(n, cb) {\n\t return new Array(n).fill(null).map((_, i) => cb(i));\n\t}\n\tutils.times = times;\n\tfunction repeat(n, char) {\n\t return new Array(n).fill(char).join(\"\");\n\t}\n\tutils.repeat = repeat;\n\t// Maintain an ordered list of indexes for namespace/key pairs.\n\t// In Wasm binary variables are referenced by their index. In our emitter we\n\t// want to emit variables indexes as we encounter their names. This data\n\t// structure lets us issue variable indexes on demmand and then iterate through\n\t// them post facto.\n\t//\n\t// `null` may be passed for the namespace argument in order to get a global\n\t// variable that exists in all namespaces.\n\tclass ScopedIdMap {\n\t constructor() {\n\t this._map = new Map();\n\t }\n\t // Get the index of a given namespace/key pair\n\t get(namespace, key) {\n\t const jointKey = namespace == null ? key : `${namespace}::${key}`;\n\t if (!this._map.has(jointKey)) {\n\t this._map.set(jointKey, this._map.size);\n\t }\n\t // @ts-ignore We know the key is here.\n\t return this._map.get(jointKey);\n\t }\n\t size() {\n\t return this._map.size;\n\t }\n\t}\n\tutils.ScopedIdMap = ScopedIdMap;\n\tfunction formatList(list) {\n\t if (list.length === 0) {\n\t throw new Error(\"Cannot format an empty list\");\n\t }\n\t if (list.length === 1) {\n\t return list[0];\n\t }\n\t const quoted = list.map(name => `\"${name}\"`);\n\t const last = quoted.pop();\n\t return quoted.join(\", \") + ` and ${last}`;\n\t}\n\tutils.formatList = formatList;\n\t\n\treturn utils;\n}\n\nvar hasRequiredErrorUtils;\n\nfunction requireErrorUtils () {\n\tif (hasRequiredErrorUtils) return errorUtils;\n\thasRequiredErrorUtils = 1;\n\tObject.defineProperty(errorUtils, \"__esModule\", { value: true });\n\tconst utils_1 = requireUtils();\n\t/* Build up a string showing a formatted source location in context with line numbers.\n\t *\n\t * 2 | z = sqr(y, 10);\n\t * > 3 | x = wat();\n\t * | ^^^\n\t * 4 | y = 100;\n\t */\n\tfunction printLoc(loc, rawSource, contextLines = 1) {\n\t const firstIndex = Math.max(loc.first_line - 1 - contextLines, 0);\n\t const lastIndex = loc.last_line + contextLines;\n\t const sourceLines = rawSource.split(\"\\n\").slice(firstIndex, lastIndex);\n\t const annotatedLines = sourceLines.map((line, i) => {\n\t const lineNumber = i + firstIndex + 1;\n\t const inRange = lineNumber >= loc.first_line && lineNumber <= loc.last_line;\n\t const gutter = inRange ? \">\" : \" \";\n\t return `${gutter} ${lineNumber} | ${line}`;\n\t });\n\t if (loc.first_line === loc.last_line) {\n\t const padding = utils_1.repeat(loc.first_column, \" \");\n\t const underline = utils_1.repeat(loc.last_column - loc.first_column, \"^\");\n\t const insertIndex = loc.first_line - firstIndex;\n\t annotatedLines.splice(insertIndex, 0, ` | ${padding}${underline}`);\n\t }\n\t return annotatedLines.join(\"\\n\");\n\t}\n\terrorUtils.printLoc = printLoc;\n\tclass CompilerError extends Error {\n\t constructor(message, loc, rawSource) {\n\t super(message);\n\t // TODO: Create an error message that encourages users to open an issue at\n\t // https://github.com/captbaritone/eel-wasm/issues is they see this, and gives\n\t // Them an easy way to attach the right context.\n\t this.sourceContext = printLoc(loc, rawSource);\n\t this.loc = loc;\n\t }\n\t}\n\tclass UserError extends CompilerError {\n\t}\n\tfunction createUserError(message, loc, rawSource) {\n\t return new UserError(message, loc, rawSource);\n\t}\n\terrorUtils.createUserError = createUserError;\n\tfunction createCompilerError(message, loc, rawSource) {\n\t return new CompilerError(message, loc, rawSource);\n\t}\n\terrorUtils.createCompilerError = createCompilerError;\n\t\n\treturn errorUtils;\n}\n\nvar hasRequiredParser;\n\nfunction requireParser () {\n\tif (hasRequiredParser) return parser$1;\n\thasRequiredParser = 1;\n\tObject.defineProperty(parser$1, \"__esModule\", { value: true });\n\tconst preProcessor_1 = requirePreProcessor();\n\tconst envParser_1 = requireEnvParser();\n\tconst astUtils_1 = requireAstUtils();\n\tconst errorUtils_1 = requireErrorUtils();\n\tfunction mapLoc(loc, mapper) {\n\t const first = preProcessor_1.getLoc(mapper, loc.first_column);\n\t const last = preProcessor_1.getLoc(mapper, loc.last_column);\n\t return {\n\t first_column: first.column,\n\t last_column: last.column,\n\t first_line: first.line,\n\t last_line: last.line,\n\t };\n\t}\n\tfunction parse(code) {\n\t const [processedCode, mapper] = preProcessor_1.preProcess(code);\n\t try {\n\t const ast = envParser_1.parse(processedCode);\n\t return astUtils_1.mapAst(ast, (node) => {\n\t if (node.loc.first_line !== 1 || node.loc.last_line != 1) {\n\t throw errorUtils_1.createCompilerError(\"Unexpected multiline\", node.loc, code);\n\t }\n\t return Object.assign(Object.assign({}, node), { loc: mapLoc(node.loc, mapper) });\n\t });\n\t }\n\t catch (e) {\n\t if (e.hash == null) {\n\t throw e;\n\t }\n\t throw errorUtils_1.createUserError(`Parse Error: ${e.message.split(\"\\n\")[3]}`, mapLoc(e.hash.loc, mapper), code);\n\t }\n\t}\n\tparser$1.parse = parse;\n\t\n\treturn parser$1;\n}\n\nvar compiler = {};\n\nvar emitter = {};\n\nvar encoding = {};\n\nvar ieee754 = {};\n\nvar hasRequiredIeee754;\n\nfunction requireIeee754 () {\n\tif (hasRequiredIeee754) return ieee754;\n\thasRequiredIeee754 = 1;\n\tObject.defineProperty(ieee754, \"__esModule\", { value: true });\n\t// Copied from https://github.com/feross/ieee754/blob/master/index.js\n\tfunction write(buffer, value) {\n\t // Originally these four were arguments, but we only ever use it like this.\n\t const offset = 0;\n\t let mLen = 52;\n\t const nBytes = 8;\n\t var e, m, c;\n\t var eLen = nBytes * 8 - mLen - 1;\n\t var eMax = (1 << eLen) - 1;\n\t var eBias = eMax >> 1;\n\t var rt = mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0;\n\t var i = 0 ;\n\t var d = 1 ;\n\t var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0;\n\t value = Math.abs(value);\n\t if (isNaN(value) || value === Infinity) {\n\t m = isNaN(value) ? 1 : 0;\n\t e = eMax;\n\t }\n\t else {\n\t e = Math.floor(Math.log(value) / Math.LN2);\n\t if (value * (c = Math.pow(2, -e)) < 1) {\n\t e--;\n\t c *= 2;\n\t }\n\t if (e + eBias >= 1) {\n\t value += rt / c;\n\t }\n\t else {\n\t value += rt * Math.pow(2, 1 - eBias);\n\t }\n\t if (value * c >= 2) {\n\t e++;\n\t c /= 2;\n\t }\n\t if (e + eBias >= eMax) {\n\t m = 0;\n\t e = eMax;\n\t }\n\t else if (e + eBias >= 1) {\n\t m = (value * c - 1) * Math.pow(2, mLen);\n\t e = e + eBias;\n\t }\n\t else {\n\t m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);\n\t e = 0;\n\t }\n\t }\n\t for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) { }\n\t e = (e << mLen) | m;\n\t eLen += mLen;\n\t for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) { }\n\t buffer[offset + i - d] |= s * 128;\n\t}\n\tieee754.write = write;\n\t\n\treturn ieee754;\n}\n\nvar hasRequiredEncoding;\n\nfunction requireEncoding () {\n\tif (hasRequiredEncoding) return encoding;\n\thasRequiredEncoding = 1;\n\t(function (exports) {\n\t\tvar __importStar = (encoding && encoding.__importStar) || function (mod) {\n\t\t if (mod && mod.__esModule) return mod;\n\t\t var result = {};\n\t\t if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n\t\t result[\"default\"] = mod;\n\t\t return result;\n\t\t};\n\t\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\t\tconst ieee754 = __importStar(requireIeee754());\n\t\tconst utils_1 = requireUtils();\n\t\texports.MAGIC = [0x00, 0x61, 0x73, 0x6d];\n\t\texports.WASM_VERSION = [0x01, 0x00, 0x00, 0x00];\n\t\texports.EPSILON = 0.00001;\n\t\t// An intial attempt to construct a Wasm binary by hand.\n\t\t/*\n\t\t0\tcustom section\n\t\t1\ttype section\n\t\t2\timport section\n\t\t3\tfunction section\n\t\t4\ttable section\n\t\t5\tmemory section\n\t\t6\tglobal section\n\t\t7\texport section\n\t\t8\tstart section\n\t\t9\telement section\n\t\t10\tcode section\n\t\t11\tdata section\n\t\t*/\n\t\t// https://webassembly.github.io/spec/core/binary/modules.html#sections\n\t\texports.SECTION = {\n\t\t TYPE: 1,\n\t\t IMPORT: 2,\n\t\t FUNC: 3,\n\t\t MEMORY: 5,\n\t\t GLOBAL: 6,\n\t\t EXPORT: 7,\n\t\t CODE: 10,\n\t\t};\n\t\texports.EXPORT_TYPE = {\n\t\t FUNC: 0x00,\n\t\t TABLE: 0x01,\n\t\t MEMORY: 0x02,\n\t\t GLOBAL: 0x03,\n\t\t};\n\t\texports.op = {\n\t\t /*\n\t\t * Control Instructions\n\t\t * https://webassembly.github.io/spec/core/binary/instructions.html#control-instructions\n\t\t */\n\t\t // unreachable: 0x00,\n\t\t // nop: 0x01,\n\t\t block: (blockType) => [0x02, blockType],\n\t\t loop: (blockType) => [0x03, blockType],\n\t\t if: (retType) => [0x04, retType],\n\t\t else: 0x05,\n\t\t end: 0x0b,\n\t\t // br: (i: number) => [0x0c, ...signedLEB128(i)],\n\t\t br_if: (i) => [0x0d, ...unsignedLEB128(i)],\n\t\t // br_table: 0x0d,\n\t\t // return: 0x0f,\n\t\t call: (i) => [0x10, ...unsignedLEB128(i)],\n\t\t // call_indirect: 0x11,\n\t\t /*\n\t\t * Parametric Instructions\n\t\t * https://webassembly.github.io/spec/core/binary/instructions.html#parametric-instructions\n\t\t */\n\t\t drop: 0x1a,\n\t\t select: 0x1b,\n\t\t /*\n\t\t * Variable Instructions\n\t\t * https://webassembly.github.io/spec/core/binary/instructions.html#variable-instructions\n\t\t */\n\t\t local_get: (i) => [0x20, ...unsignedLEB128(i)],\n\t\t local_set: (i) => [0x21, ...unsignedLEB128(i)],\n\t\t local_tee: (i) => [0x22, ...unsignedLEB128(i)],\n\t\t global_get: (i) => [0x23, ...unsignedLEB128(i)],\n\t\t global_set: (i) => [0x24, ...unsignedLEB128(i)],\n\t\t /*\n\t\t * Memory Instructions\n\t\t * https://webassembly.github.io/spec/core/binary/instructions.html#memory-instructions\n\t\t */\n\t\t f64_load: (align, offset) => [\n\t\t 0x2b,\n\t\t ...unsignedLEB128(align),\n\t\t ...unsignedLEB128(offset),\n\t\t ],\n\t\t f64_store: (align, offset) => [\n\t\t 0x39,\n\t\t ...unsignedLEB128(align),\n\t\t ...unsignedLEB128(offset),\n\t\t ],\n\t\t /*\n\t\t * Numeric Instructions\n\t\t * https://webassembly.github.io/spec/core/binary/instructions.html#numeric-instructions\n\t\t */\n\t\t i32_const: (i) => [0x41, ...signedLEB128(i)],\n\t\t // i64_const: 0x42,\n\t\t // f32_const: 0x43,\n\t\t f64_const: (i) => [0x44, ...encodef64(i)],\n\t\t i32_eqz: 0x45,\n\t\t // i32_eq: 0x46,\n\t\t i32_ne: 0x47,\n\t\t i32_lt_s: 0x48,\n\t\t i32_lt_u: 0x49,\n\t\t i32_gt_s: 0x4a,\n\t\t // i32_gt_u: 0x4b,\n\t\t i32_le_s: 0x4c,\n\t\t i32_le_u: 0x4d,\n\t\t i32_ge_s: 0x4e,\n\t\t // i32_ge_u: 0x4f,\n\t\t // [0x50...0x5a] i64\n\t\t // [0x5b...0x60] f32\n\t\t f64_eq: 0x61,\n\t\t f64_ne: 0x62,\n\t\t f64_lt: 0x63,\n\t\t f64_gt: 0x64,\n\t\t f64_le: 0x65,\n\t\t f64_ge: 0x66,\n\t\t // i32_clz: 0x67,\n\t\t // i32_ctz: 0x68,\n\t\t // i32_popcnt: 0x69,\n\t\t i32_add: 0x6a,\n\t\t i32_sub: 0x6b,\n\t\t i32_mul: 0x6c,\n\t\t // i32_div_s: 0x6d,\n\t\t // i32_div_u: 0x6e,\n\t\t i32_rem_s: 0x6f,\n\t\t // i32_rem_u: 0x70,\n\t\t i32_and: 0x71,\n\t\t i32_or: 0x72,\n\t\t // [0x73...0x78] More i32\n\t\t // [0x79...0x8a] More i64\n\t\t i64_rem_s: 0x81,\n\t\t i64_and: 0x83,\n\t\t i64_or: 0x84,\n\t\t // [0x8b...0x98] More f32\n\t\t f64_abs: 0x99,\n\t\t f64_neg: 0x9a,\n\t\t f64_ceil: 0x9b,\n\t\t f64_floor: 0x9c,\n\t\t // f64_trunc: 0x9d,\n\t\t // f64_nearest: 0x9e,\n\t\t f64_sqrt: 0x9f,\n\t\t f64_add: 0xa0,\n\t\t f64_sub: 0xa1,\n\t\t f64_mul: 0xa2,\n\t\t f64_div: 0xa3,\n\t\t f64_min: 0xa4,\n\t\t f64_max: 0xa5,\n\t\t // f64_copysign: 0xa6,\n\t\t i32_trunc_f64_s: 0xaa,\n\t\t i32_trunc_f64_u: 0xab,\n\t\t i64_trunc_s_f64: 0xb0,\n\t\t f64_convert_i64_s: 0xb9,\n\t\t f64_convert_i32_s: 0xb7,\n\t\t};\n\t\t// https://webassembly.github.io/spec/core/binary/instructions.html#binary-blocktype\n\t\texports.VAL_TYPE = {\n\t\t i32: 0x7f,\n\t\t i64: 0x7e,\n\t\t f32: 0x7d,\n\t\t f64: 0x7c,\n\t\t};\n\t\texports.MUTABILITY = {\n\t\t const: 0x00,\n\t\t var: 0x01,\n\t\t};\n\t\texports.BLOCK = {\n\t\t void: 0x40,\n\t\t i32: 0x7f,\n\t\t i64: 0x7e,\n\t\t f32: 0x7d,\n\t\t f64: 0x7c,\n\t\t};\n\t\t// http://webassembly.github.io/spec/core/binary/types.html#function-types\n\t\texports.FUNCTION_TYPE = 0x60;\n\t\t// I think these might actually be specific to importdesc\n\t\texports.MEMORY_IDX = 0x02;\n\t\texports.GLOBAL_TYPE = 0x03;\n\t\texports.TYPE_IDX = 0x00;\n\t\t// Takes an f64 on the stack and leaves an int32 boolean representing if it's\n\t\t// within epsilon of zero.\n\t\texports.IS_ZEROISH = [\n\t\t exports.op.f64_abs,\n\t\t ...exports.op.f64_const(exports.EPSILON),\n\t\t exports.op.f64_lt,\n\t\t];\n\t\texports.IS_NOT_ZEROISH = [\n\t\t exports.op.f64_abs,\n\t\t ...exports.op.f64_const(exports.EPSILON),\n\t\t exports.op.f64_gt,\n\t\t];\n\t\t// f64\n\t\tfunction encodef64(num) {\n\t\t const arr = new Uint8Array(8);\n\t\t ieee754.write(arr, num);\n\t\t return arr;\n\t\t}\n\t\texports.encodef64 = encodef64;\n\t\texports.encodeString = (str) => [str.length].concat(str.split(\"\").map(s => s.charCodeAt(0)));\n\t\tfunction unsignedLEB128(n) {\n\t\t const buffer = [];\n\t\t do {\n\t\t let byte = n & 0x7f;\n\t\t n >>>= 7;\n\t\t if (n !== 0) {\n\t\t byte |= 0x80;\n\t\t }\n\t\t buffer.push(byte);\n\t\t } while (n !== 0);\n\t\t return buffer;\n\t\t}\n\t\texports.unsignedLEB128 = unsignedLEB128;\n\t\t// https://github.com/shmishtopher/wasm-LEB128/blob/2f1039636e758293e571f996e8012c4d69f4b58f/lib/index.js#L6\n\t\tfunction signedLEB128(value) {\n\t\t let bytes = [];\n\t\t let byte = 0x00;\n\t\t let size = Math.ceil(Math.log2(Math.abs(value)));\n\t\t let negative = value < 0;\n\t\t let more = true;\n\t\t while (more) {\n\t\t byte = value & 127;\n\t\t value = value >> 7;\n\t\t if (negative) {\n\t\t value = value | -(1 << (size - 7));\n\t\t }\n\t\t if ((value == 0 && (byte & 0x40) == 0) ||\n\t\t (value == -1 && (byte & 0x40) == 0x40)) {\n\t\t more = false;\n\t\t }\n\t\t else {\n\t\t byte = byte | 128;\n\t\t }\n\t\t bytes.push(byte);\n\t\t }\n\t\t return bytes;\n\t\t}\n\t\texports.signedLEB128 = signedLEB128;\n\t\t// https://webassembly.github.io/spec/core/binary/conventions.html#binary-vec\n\t\t// Vectors are encoded with their length followed by their element sequence\n\t\texports.encodeFlatVector = (data) => unsignedLEB128(data.length).concat(data);\n\t\texports.encodeNestedVector = (data) => unsignedLEB128(data.length).concat(utils_1.flatten(data));\n\t\t// subSections is an array of arrays\n\t\tfunction encodeSection(type, subSections) {\n\t\t // Sections are all optional, so if we get an empty vector of subSections, we\n\t\t // can omit the whole section.\n\t\t if (subSections.length === 0) {\n\t\t return [];\n\t\t }\n\t\t // The size of this vector is not needed for decoding, but can be\n\t\t // used to skip sections when navigating through a binary.\n\t\t // TODO: Remove this assertion once we are more confident in our output.\n\t\t const vec = exports.encodeFlatVector(exports.encodeNestedVector(subSections));\n\t\t vec.unshift(type);\n\t\t return vec;\n\t\t}\n\t\texports.encodeSection = encodeSection;\n\t\t\n\t} (encoding));\n\treturn encoding;\n}\n\nvar shims = {};\n\nvar hasRequiredShims;\n\nfunction requireShims () {\n\tif (hasRequiredShims) return shims;\n\thasRequiredShims = 1;\n\tObject.defineProperty(shims, \"__esModule\", { value: true });\n\tconst EPSILON = 0.00001;\n\tconst shims$1 = {\n\t // TODO: Reimplement some of these functions natively in Wasm?\n\t sin: Math.sin,\n\t cos: Math.cos,\n\t tan: Math.tan,\n\t asin: Math.asin,\n\t acos: Math.acos,\n\t atan: Math.atan,\n\t atan2: Math.atan2,\n\t rand: a => Math.random() * a,\n\t pow: Math.pow,\n\t log: Math.log,\n\t log10: Math.log10,\n\t exp: Math.exp,\n\t sigmoid: function (x, y) {\n\t const t = 1 + Math.exp(-x * y);\n\t return Math.abs(t) > EPSILON ? 1.0 / t : 0;\n\t },\n\t};\n\tshims.default = shims$1;\n\t\n\treturn shims;\n}\n\nvar wasmFunctions = {};\n\nvar constants = {};\n\nvar hasRequiredConstants;\n\nfunction requireConstants () {\n\tif (hasRequiredConstants) return constants;\n\thasRequiredConstants = 1;\n\t(function (exports) {\n\t\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\t\t// https://webassembly.github.io/spec/core/exec/runtime.html#page-size\n\t\tconst WASM_PAGE_SIZE = 65536;\n\t\tconst BYTES_PER_F64 = 8;\n\t\tconst BUFFER_COUNT = 2;\n\t\t// https://github.com/WACUP/vis_milk2/blob/de9625a89e724afe23ed273b96b8e48496095b6c/ns-eel2/ns-eel.h#L136\n\t\texports.MAX_LOOP_COUNT = 1048576;\n\t\t// The number of items allowed in each buffer (megabuf/gmegabuf).\n\t\t// https://github.com/WACUP/vis_milk2/blob/de9625a89e724afe23ed273b96b8e48496095b6c/ns-eel2/ns-eel.h#L145\n\t\texports.BUFFER_SIZE = 65536 * 128;\n\t\texports.WASM_MEMORY_SIZE = Math.ceil((exports.BUFFER_SIZE * BYTES_PER_F64 * BUFFER_COUNT) / WASM_PAGE_SIZE);\n\t\t\n\t} (constants));\n\treturn constants;\n}\n\nvar hasRequiredWasmFunctions;\n\nfunction requireWasmFunctions () {\n\tif (hasRequiredWasmFunctions) return wasmFunctions;\n\thasRequiredWasmFunctions = 1;\n\tObject.defineProperty(wasmFunctions, \"__esModule\", { value: true });\n\tconst encoding_1 = requireEncoding();\n\tconst constants_1 = requireConstants();\n\twasmFunctions.localFuncMap = {\n\t sqr: {\n\t args: [encoding_1.VAL_TYPE.f64],\n\t returns: [encoding_1.VAL_TYPE.f64],\n\t binary: [...encoding_1.op.local_get(0), ...encoding_1.op.local_get(0), encoding_1.op.f64_mul],\n\t },\n\t bor: {\n\t args: [encoding_1.VAL_TYPE.f64, encoding_1.VAL_TYPE.f64],\n\t returns: [encoding_1.VAL_TYPE.f64],\n\t binary: [\n\t ...encoding_1.op.local_get(0),\n\t ...encoding_1.IS_NOT_ZEROISH,\n\t ...encoding_1.op.local_get(1),\n\t ...encoding_1.IS_NOT_ZEROISH,\n\t encoding_1.op.i32_or,\n\t ...encoding_1.op.i32_const(0),\n\t encoding_1.op.i32_ne,\n\t encoding_1.op.f64_convert_i32_s,\n\t ],\n\t },\n\t band: {\n\t args: [encoding_1.VAL_TYPE.f64, encoding_1.VAL_TYPE.f64],\n\t returns: [encoding_1.VAL_TYPE.f64],\n\t binary: [\n\t ...encoding_1.op.local_get(0),\n\t ...encoding_1.IS_NOT_ZEROISH,\n\t ...encoding_1.op.local_get(1),\n\t ...encoding_1.IS_NOT_ZEROISH,\n\t encoding_1.op.i32_and,\n\t ...encoding_1.op.i32_const(0),\n\t encoding_1.op.i32_ne,\n\t encoding_1.op.f64_convert_i32_s,\n\t ],\n\t },\n\t sign: {\n\t args: [encoding_1.VAL_TYPE.f64],\n\t returns: [encoding_1.VAL_TYPE.f64],\n\t binary: [\n\t ...encoding_1.op.f64_const(0),\n\t ...encoding_1.op.local_get(0),\n\t encoding_1.op.f64_lt,\n\t ...encoding_1.op.local_get(0),\n\t ...encoding_1.op.f64_const(0),\n\t encoding_1.op.f64_lt,\n\t encoding_1.op.i32_sub,\n\t encoding_1.op.f64_convert_i32_s,\n\t ],\n\t },\n\t mod: {\n\t args: [encoding_1.VAL_TYPE.f64, encoding_1.VAL_TYPE.f64],\n\t returns: [encoding_1.VAL_TYPE.f64],\n\t localVariables: [encoding_1.VAL_TYPE.i32],\n\t // TODO: Simplify all this type coersion\n\t binary: [\n\t ...encoding_1.op.local_get(1),\n\t encoding_1.op.i32_trunc_f64_s,\n\t ...encoding_1.op.local_tee(2),\n\t ...encoding_1.op.i32_const(0),\n\t encoding_1.op.i32_ne,\n\t ...encoding_1.op.if(encoding_1.BLOCK.f64),\n\t ...encoding_1.op.local_get(0),\n\t encoding_1.op.i32_trunc_f64_s,\n\t ...encoding_1.op.local_get(2),\n\t encoding_1.op.i32_rem_s,\n\t encoding_1.op.f64_convert_i32_s,\n\t encoding_1.op.else,\n\t ...encoding_1.op.f64_const(0),\n\t encoding_1.op.end,\n\t ],\n\t },\n\t bitwiseOr: {\n\t args: [encoding_1.VAL_TYPE.f64, encoding_1.VAL_TYPE.f64],\n\t returns: [encoding_1.VAL_TYPE.f64],\n\t binary: [\n\t ...encoding_1.op.local_get(0),\n\t encoding_1.op.i64_trunc_s_f64,\n\t ...encoding_1.op.local_get(1),\n\t encoding_1.op.i64_trunc_s_f64,\n\t encoding_1.op.i64_or,\n\t encoding_1.op.f64_convert_i64_s,\n\t ],\n\t },\n\t bitwiseAnd: {\n\t args: [encoding_1.VAL_TYPE.f64, encoding_1.VAL_TYPE.f64],\n\t returns: [encoding_1.VAL_TYPE.f64],\n\t binary: [\n\t ...encoding_1.op.local_get(0),\n\t encoding_1.op.i64_trunc_s_f64,\n\t ...encoding_1.op.local_get(1),\n\t encoding_1.op.i64_trunc_s_f64,\n\t encoding_1.op.i64_and,\n\t encoding_1.op.f64_convert_i64_s,\n\t ],\n\t },\n\t div: {\n\t args: [encoding_1.VAL_TYPE.f64, encoding_1.VAL_TYPE.f64],\n\t returns: [encoding_1.VAL_TYPE.f64],\n\t localVariables: [encoding_1.VAL_TYPE.i32],\n\t binary: [\n\t ...encoding_1.op.local_get(1),\n\t ...encoding_1.op.f64_const(0),\n\t encoding_1.op.f64_ne,\n\t ...encoding_1.op.if(encoding_1.BLOCK.f64),\n\t ...encoding_1.op.local_get(0),\n\t ...encoding_1.op.local_get(1),\n\t encoding_1.op.f64_div,\n\t encoding_1.op.else,\n\t ...encoding_1.op.f64_const(0),\n\t encoding_1.op.end,\n\t ],\n\t },\n\t // Takes a float buffer index and converts it to an int. Values out of range\n\t // are returned as `-1`.\n\t //\n\t // NOTE: There's actually a subtle bug that exists in Milkdrop's Eel\n\t // implementation, which we reproduce here.\n\t //\n\t // Wasm's `trunc()` rounds towards zero. This means that for index `-1` we\n\t // will return zero, since: `roundTowardZero(-1 + EPSILON) == 0`\n\t //\n\t // A subsequent check handles negative indexes, so negative indexes > than\n\t // `-1` are not affected.\n\t _getBufferIndex: {\n\t args: [encoding_1.VAL_TYPE.f64 /* 0: $index */],\n\t returns: [encoding_1.VAL_TYPE.i32 /* $noramlizedIndex */],\n\t localVariables: [\n\t encoding_1.VAL_TYPE.f64,\n\t encoding_1.VAL_TYPE.i32,\n\t ],\n\t binary: [\n\t ...encoding_1.op.f64_const(encoding_1.EPSILON),\n\t ...encoding_1.op.local_get(0),\n\t encoding_1.op.f64_add,\n\t // STACK: [$i + EPSILON]\n\t ...encoding_1.op.local_tee(1),\n\t encoding_1.op.i32_trunc_f64_s,\n\t // TODO We could probably make this a tee and get rid of the next get if we swap the final condition\n\t ...encoding_1.op.local_set(2),\n\t // STACK: []\n\t ...encoding_1.op.i32_const(-1),\n\t ...encoding_1.op.local_get(2),\n\t // STACK: [-1, $truncated]\n\t ...encoding_1.op.i32_const(8),\n\t encoding_1.op.i32_mul,\n\t // STACK: [-1, $truncated * 8]\n\t ...encoding_1.op.local_get(2),\n\t ...encoding_1.op.i32_const(0),\n\t // STACK: [-1, $truncated * 8, $truncated, 0]\n\t encoding_1.op.i32_lt_s,\n\t // STACK: [-1, $truncated * 8, ]\n\t ...encoding_1.op.local_get(2),\n\t ...encoding_1.op.i32_const(constants_1.BUFFER_SIZE - 1),\n\t encoding_1.op.i32_gt_s,\n\t // STACK: [-1, $truncated * 8, , ]\n\t encoding_1.op.i32_or,\n\t // STACK: [-1, $truncated * 8, ]\n\t encoding_1.op.select,\n\t ],\n\t },\n\t};\n\t\n\treturn wasmFunctions;\n}\n\nvar hasRequiredEmitter;\n\nfunction requireEmitter () {\n\tif (hasRequiredEmitter) return emitter;\n\thasRequiredEmitter = 1;\n\tvar __importDefault = (emitter && emitter.__importDefault) || function (mod) {\n\t return (mod && mod.__esModule) ? mod : { \"default\": mod };\n\t};\n\tObject.defineProperty(emitter, \"__esModule\", { value: true });\n\tconst encoding_1 = requireEncoding();\n\tconst shims_1 = __importDefault(requireShims());\n\tconst errorUtils_1 = requireErrorUtils();\n\tconst wasmFunctions_1 = requireWasmFunctions();\n\tconst utils_1 = requireUtils();\n\tconst constants_1 = requireConstants();\n\tfunction emit(ast, context) {\n\t var _a, _b, _c;\n\t switch (ast.type) {\n\t case \"SCRIPT\": {\n\t const body = ast.body.map((statement, i) => {\n\t return [...emit(statement, context), encoding_1.op.drop];\n\t });\n\t return utils_1.flatten(body);\n\t }\n\t case \"EXPRESSION_BLOCK\": {\n\t return emitExpressionBlock(ast.body, context);\n\t }\n\t case \"BINARY_EXPRESSION\": {\n\t const left = emit(ast.left, context);\n\t const right = emit(ast.right, context);\n\t const operatorToOps = {\n\t \"+\": [encoding_1.op.f64_add],\n\t \"-\": [encoding_1.op.f64_sub],\n\t \"*\": [encoding_1.op.f64_mul],\n\t \"/\": context.resolveFunc(\"div\"),\n\t \"%\": context.resolveFunc(\"mod\"),\n\t \"|\": context.resolveFunc(\"bitwiseOr\"),\n\t \"&\": context.resolveFunc(\"bitwiseAnd\"),\n\t \"^\": context.resolveFunc(\"pow\"),\n\t // Comparison operators\n\t \"==\": [encoding_1.op.f64_sub, ...encoding_1.IS_ZEROISH, encoding_1.op.f64_convert_i32_s],\n\t \"!=\": [encoding_1.op.f64_sub, ...encoding_1.IS_NOT_ZEROISH, encoding_1.op.f64_convert_i32_s],\n\t \"<\": [encoding_1.op.f64_lt, encoding_1.op.f64_convert_i32_s],\n\t \">\": [encoding_1.op.f64_gt, encoding_1.op.f64_convert_i32_s],\n\t \"<=\": [encoding_1.op.f64_le, encoding_1.op.f64_convert_i32_s],\n\t \">=\": [encoding_1.op.f64_ge, encoding_1.op.f64_convert_i32_s],\n\t };\n\t const code = operatorToOps[ast.operator];\n\t if (code == null) {\n\t throw errorUtils_1.createCompilerError(`Unknown binary expression operator ${ast.operator}`, ast.loc, context.rawSource);\n\t }\n\t return [...left, ...right, ...code];\n\t }\n\t case \"CALL_EXPRESSION\": {\n\t const functionName = ast.callee.value;\n\t // Destructure this so that TypeScript knows it won't get mutated.\n\t const argList = ast.arguments;\n\t const assertArity = (arity) => {\n\t if (argList.length < arity) {\n\t throw errorUtils_1.createUserError(`Too few arguments passed to \\`${functionName}()\\`. Expected ${arity} but only got ${argList.length}.`, ast.loc, context.rawSource);\n\t }\n\t if (argList.length > arity) {\n\t throw errorUtils_1.createUserError(`Too many arguments passed to \\`${functionName}()\\`. Expected ${arity} but got ${argList.length}.`, argList[arity].loc, context.rawSource);\n\t }\n\t };\n\t // Some functions have special behavior\n\t switch (functionName) {\n\t case \"exec2\":\n\t assertArity(2);\n\t return emitExpressionBlock(ast.arguments, context);\n\t case \"exec3\":\n\t assertArity(3);\n\t return emitExpressionBlock(ast.arguments, context);\n\t case \"if\":\n\t assertArity(3);\n\t const [test, consiquent, alternate] = ast.arguments;\n\t return emitConditional(test, consiquent, alternate, context);\n\t case \"while\":\n\t assertArity(1);\n\t return emitWhile(ast.arguments[0], context);\n\t case \"loop\":\n\t assertArity(2);\n\t return emitLoop(ast.arguments[0], ast.arguments[1], context);\n\t case \"megabuf\":\n\t case \"gmegabuf\":\n\t assertArity(1);\n\t const index = context.resolveLocal(encoding_1.VAL_TYPE.i32);\n\t return [\n\t ...emit(ast.arguments[0], context),\n\t ...((_a = context.resolveFunc(\"_getBufferIndex\")) !== null && _a !== void 0 ? _a : []),\n\t ...encoding_1.op.local_tee(index),\n\t ...encoding_1.op.i32_const(-1),\n\t encoding_1.op.i32_ne,\n\t // STACK: [in range]\n\t ...encoding_1.op.if(encoding_1.BLOCK.f64),\n\t ...encoding_1.op.local_get(index),\n\t ...encoding_1.op.f64_load(3, emitAddMemoryOffset(functionName)),\n\t encoding_1.op.else,\n\t ...encoding_1.op.f64_const(0),\n\t encoding_1.op.end,\n\t ];\n\t case \"assign\":\n\t assertArity(2);\n\t const variableIdentifier = ast.arguments[0];\n\t if (variableIdentifier.type != \"IDENTIFIER\") {\n\t throw errorUtils_1.createUserError(\"Expected the first argument of `assign()` to be an identifier.\", variableIdentifier.loc, context.rawSource);\n\t }\n\t const resolvedName = context.resolveVar(variableIdentifier.value);\n\t return [\n\t ...emit(ast.arguments[1], context),\n\t ...encoding_1.op.global_set(resolvedName),\n\t ...encoding_1.op.global_get(resolvedName),\n\t ];\n\t }\n\t // Function calls which can be linlined\n\t const args = utils_1.flatten(ast.arguments.map(node => emit(node, context)));\n\t // This is just a continuation of the above switch statement, but it's for functions which all parse their args the same.\n\t switch (functionName) {\n\t case \"abs\":\n\t assertArity(1);\n\t return [...args, encoding_1.op.f64_abs];\n\t case \"sqrt\":\n\t assertArity(1);\n\t return [...args, encoding_1.op.f64_abs, encoding_1.op.f64_sqrt];\n\t case \"int\":\n\t assertArity(1);\n\t return [...args, encoding_1.op.f64_floor];\n\t case \"min\":\n\t assertArity(2);\n\t return [...args, encoding_1.op.f64_min];\n\t case \"max\":\n\t assertArity(2);\n\t return [...args, encoding_1.op.f64_max];\n\t case \"above\":\n\t assertArity(2);\n\t return [...args, encoding_1.op.f64_gt, encoding_1.op.f64_convert_i32_s];\n\t case \"below\":\n\t assertArity(2);\n\t return [...args, encoding_1.op.f64_lt, encoding_1.op.f64_convert_i32_s];\n\t case \"equal\":\n\t assertArity(2);\n\t return [...args, encoding_1.op.f64_sub, ...encoding_1.IS_ZEROISH, encoding_1.op.f64_convert_i32_s];\n\t case \"bnot\":\n\t assertArity(1);\n\t return [...args, ...encoding_1.IS_ZEROISH, encoding_1.op.f64_convert_i32_s];\n\t case \"floor\":\n\t assertArity(1);\n\t return [...args, encoding_1.op.f64_floor];\n\t case \"ceil\":\n\t assertArity(1);\n\t return [...args, encoding_1.op.f64_ceil];\n\t }\n\t const invocation = context.resolveFunc(functionName);\n\t if (invocation == null ||\n\t // Ensure this isn't a private function. This is a bit awkward becuase\n\t // Eel does implement some _ functions but while they are _intended_ to be\n\t // private, they accidentally expose them. We should find a cleaner way\n\t // to defining user accessible functions vs utility functions used by\n\t // the compiler.\n\t functionName.startsWith(\"_\")) {\n\t throw errorUtils_1.createUserError(`\"${functionName}\" is not defined.`, ast.callee.loc, context.rawSource);\n\t }\n\t if (shims_1.default[functionName] != null) {\n\t assertArity(shims_1.default[functionName].length);\n\t }\n\t else if (wasmFunctions_1.localFuncMap[functionName] != null) {\n\t assertArity(wasmFunctions_1.localFuncMap[functionName].args.length);\n\t }\n\t else {\n\t throw errorUtils_1.createCompilerError(`Missing arity information for the function \\`${functionName}()\\``, ast.callee.loc, context.rawSource);\n\t }\n\t return [...args, ...invocation];\n\t }\n\t case \"ASSIGNMENT_EXPRESSION\": {\n\t const { left } = ast;\n\t const rightCode = emit(ast.right, context);\n\t const mutationCode = getAssignmentOperatorMutation(ast, context);\n\t if (left.type === \"IDENTIFIER\") {\n\t const resolvedName = context.resolveVar(left.value);\n\t // TODO: In lots of cases we don't care about the return value. In those\n\t // cases we should try to find a way to omit the `get/drop` combo.\n\t // Peephole optimization seems to be the conventional way to do this.\n\t // https://en.wikipedia.org/wiki/Peephole_optimization\n\t const get = encoding_1.op.global_get(resolvedName);\n\t const set = encoding_1.op.global_set(resolvedName);\n\t // `=` is a special case in that it does not need the original value.\n\t if (mutationCode === null) {\n\t return [...rightCode, ...set, ...get];\n\t }\n\t return [...get, ...rightCode, ...mutationCode, ...set, ...get];\n\t }\n\t if (left.type !== \"CALL_EXPRESSION\") {\n\t throw errorUtils_1.createCompilerError(\n\t // @ts-ignore This is a guard in case the parser has an error\n\t `Unexpected left hand side type for assignment: ${left.type}`, ast.loc, context.rawSource);\n\t }\n\t // Special assignment case for `megabuf(n) = e` and `gmegabuf(n) = e`.\n\t const localIndex = context.resolveLocal(encoding_1.VAL_TYPE.i32);\n\t if (left.arguments.length !== 1) {\n\t throw errorUtils_1.createUserError(`Expected 1 argument when assinging to a buffer but got ${left.arguments.length}.`, left.arguments.length === 0 ? left.loc : left.arguments[1].loc, context.rawSource);\n\t }\n\t const bufferName = left.callee.value;\n\t if (bufferName !== \"gmegabuf\" && bufferName !== \"megabuf\") {\n\t throw errorUtils_1.createUserError(\"The only function calls which may be assigned to are `gmegabuf()` and `megabuf()`.\", left.callee.loc, context.rawSource);\n\t }\n\t const addOffset = emitAddMemoryOffset(bufferName);\n\t if (mutationCode === null) {\n\t // TODO: Move this to wasmFunctions once we know how to call functions\n\t // from within functions (need to get the offset).\n\t const unnormalizedIndex = context.resolveLocal(encoding_1.VAL_TYPE.i32);\n\t const rightValue = context.resolveLocal(encoding_1.VAL_TYPE.f64);\n\t return [\n\t // Emit the right hand side unconditionally to ensure it always runs.\n\t ...rightCode,\n\t ...encoding_1.op.local_set(rightValue),\n\t ...emit(left.arguments[0], context),\n\t ...((_b = context.resolveFunc(\"_getBufferIndex\")) !== null && _b !== void 0 ? _b : []),\n\t ...encoding_1.op.local_tee(unnormalizedIndex),\n\t ...encoding_1.op.i32_const(0),\n\t encoding_1.op.i32_lt_s,\n\t // STACK: [is the index out of range?]\n\t ...encoding_1.op.if(encoding_1.BLOCK.f64),\n\t ...encoding_1.op.f64_const(0),\n\t encoding_1.op.else,\n\t ...encoding_1.op.local_get(unnormalizedIndex),\n\t ...encoding_1.op.local_tee(localIndex),\n\t // STACK: [buffer index]\n\t ...encoding_1.op.local_get(rightValue),\n\t // STACK: [buffer index, right]\n\t ...encoding_1.op.f64_store(3, addOffset),\n\t // STACK: []\n\t ...encoding_1.op.local_get(rightValue),\n\t // STACK: [Right/Buffer value]\n\t encoding_1.op.end,\n\t ];\n\t }\n\t // TODO: Move this to wasmFunctions once we know how to call functions\n\t // from within functions (need to get the offset).\n\t const index = context.resolveLocal(encoding_1.VAL_TYPE.i32);\n\t const inBounds = context.resolveLocal(encoding_1.VAL_TYPE.i32);\n\t const rightValue = context.resolveLocal(encoding_1.VAL_TYPE.f64);\n\t const result = context.resolveLocal(encoding_1.VAL_TYPE.f64);\n\t return [\n\t ...rightCode,\n\t ...encoding_1.op.local_set(rightValue),\n\t ...emit(left.arguments[0], context),\n\t ...((_c = context.resolveFunc(\"_getBufferIndex\")) !== null && _c !== void 0 ? _c : []),\n\t ...encoding_1.op.local_tee(index),\n\t // STACK: [index]\n\t ...encoding_1.op.i32_const(-1),\n\t encoding_1.op.i32_ne,\n\t ...encoding_1.op.local_tee(inBounds),\n\t ...encoding_1.op.if(encoding_1.BLOCK.f64),\n\t ...encoding_1.op.local_get(index),\n\t ...encoding_1.op.f64_load(3, addOffset),\n\t encoding_1.op.else,\n\t ...encoding_1.op.f64_const(0),\n\t encoding_1.op.end,\n\t // STACK: [current value from memory || 0]\n\t // Apply the mutation\n\t ...encoding_1.op.local_get(rightValue),\n\t ...mutationCode,\n\t ...encoding_1.op.local_tee(result),\n\t // STACK: [new value]\n\t ...encoding_1.op.local_get(inBounds),\n\t ...encoding_1.op.if(encoding_1.BLOCK.void),\n\t ...encoding_1.op.local_get(index),\n\t ...encoding_1.op.local_get(result),\n\t ...encoding_1.op.f64_store(3, addOffset),\n\t encoding_1.op.end,\n\t ];\n\t }\n\t case \"LOGICAL_EXPRESSION\": {\n\t const left = emit(ast.left, context);\n\t const right = emit(ast.right, context);\n\t const behaviorMap = {\n\t \"&&\": {\n\t comparison: encoding_1.IS_ZEROISH,\n\t shortCircutValue: 0,\n\t },\n\t \"||\": {\n\t comparison: encoding_1.IS_NOT_ZEROISH,\n\t shortCircutValue: 1,\n\t },\n\t };\n\t const behavior = behaviorMap[ast.operator];\n\t if (behavior == null) {\n\t throw errorUtils_1.createCompilerError(`Unknown logical expression operator ${ast.operator}`, ast.loc, context.rawSource);\n\t }\n\t const { comparison, shortCircutValue } = behavior;\n\t return [\n\t ...left,\n\t ...comparison,\n\t ...encoding_1.op.if(encoding_1.BLOCK.f64),\n\t ...encoding_1.op.f64_const(shortCircutValue),\n\t encoding_1.op.else,\n\t ...right,\n\t ...encoding_1.IS_NOT_ZEROISH,\n\t encoding_1.op.f64_convert_i32_s,\n\t encoding_1.op.end,\n\t ];\n\t }\n\t case \"UNARY_EXPRESSION\": {\n\t const value = emit(ast.value, context);\n\t const operatorToCode = {\n\t \"-\": [encoding_1.op.f64_neg],\n\t \"+\": [],\n\t \"!\": [...encoding_1.IS_ZEROISH, encoding_1.op.f64_convert_i32_s],\n\t };\n\t const code = operatorToCode[ast.operator];\n\t if (code == null) {\n\t throw errorUtils_1.createCompilerError(`Unknown logical unary operator ${ast.operator}`, ast.loc, context.rawSource);\n\t }\n\t return [...value, ...code];\n\t }\n\t case \"IDENTIFIER\":\n\t const variableName = ast.value;\n\t // TODO: It's a bit odd that not every IDENTIFIER node gets emitted. In\n\t // function calls and assignments we just peek at the name and never emit\n\t // it.\n\t return encoding_1.op.global_get(context.resolveVar(variableName));\n\t case \"NUMBER_LITERAL\":\n\t return encoding_1.op.f64_const(ast.value);\n\t default:\n\t throw errorUtils_1.createCompilerError(\n\t // @ts-ignore This runtime check is here because the caller may not be type-checked\n\t `Unknown AST node type ${ast.type}`, \n\t // @ts-ignore This runtime check is here because the caller may not be type-checked\n\t ast.loc, context.rawSource);\n\t }\n\t}\n\temitter.emit = emit;\n\tfunction emitExpressionBlock(body, context) {\n\t const statements = body.map((statement, i) => {\n\t return emit(statement, context);\n\t });\n\t return utils_1.flatten(utils_1.arrayJoin(statements, [encoding_1.op.drop]));\n\t}\n\tfunction emitWhile(expression, context) {\n\t const body = emit(expression, context);\n\t const iterationCount = context.resolveLocal(encoding_1.VAL_TYPE.i32);\n\t return [\n\t ...encoding_1.op.i32_const(0),\n\t ...encoding_1.op.local_set(iterationCount),\n\t ...encoding_1.op.loop(encoding_1.BLOCK.void),\n\t // Increment and check loop count\n\t ...encoding_1.op.local_get(iterationCount),\n\t ...encoding_1.op.i32_const(1),\n\t encoding_1.op.i32_add,\n\t ...encoding_1.op.local_tee(iterationCount),\n\t // STACK: [iteration count]\n\t ...encoding_1.op.i32_const(constants_1.MAX_LOOP_COUNT),\n\t encoding_1.op.i32_lt_u,\n\t // STACK: [loop in range]\n\t ...body,\n\t ...encoding_1.IS_NOT_ZEROISH,\n\t // STACK: [loop in range, body is truthy]\n\t encoding_1.op.i32_and,\n\t // STACK: [can continue]\n\t ...encoding_1.op.br_if(0),\n\t encoding_1.op.end,\n\t ...encoding_1.op.f64_const(0),\n\t ];\n\t}\n\tfunction emitLoop(count, expression, context) {\n\t const body = emit(expression, context);\n\t const localIndex = context.resolveLocal(encoding_1.VAL_TYPE.i32);\n\t return [\n\t ...encoding_1.op.block(encoding_1.BLOCK.void),\n\t // Assign the count to a variable\n\t ...emit(count, context),\n\t encoding_1.op.i32_trunc_f64_s,\n\t ...encoding_1.op.local_tee(localIndex),\n\t ...encoding_1.op.i32_const(0),\n\t encoding_1.op.i32_le_s,\n\t ...encoding_1.op.br_if(1),\n\t ...encoding_1.op.loop(encoding_1.BLOCK.void),\n\t // Run the body\n\t ...body,\n\t encoding_1.op.drop,\n\t // Decrement the count\n\t ...encoding_1.op.local_get(localIndex),\n\t ...encoding_1.op.i32_const(1),\n\t encoding_1.op.i32_sub,\n\t ...encoding_1.op.local_tee(localIndex),\n\t ...encoding_1.op.i32_const(0),\n\t encoding_1.op.i32_ne,\n\t ...encoding_1.op.br_if(0),\n\t encoding_1.op.end,\n\t encoding_1.op.end,\n\t ...encoding_1.op.f64_const(0),\n\t ];\n\t}\n\tfunction emitConditional(test, consiquent, alternate, context) {\n\t // TODO: In some cases https://webassembly.studio/ compiles these to use `select`.\n\t // Is that an optimization that we might want as well?\n\t return [\n\t ...emit(test, context),\n\t ...encoding_1.IS_NOT_ZEROISH,\n\t ...encoding_1.op.if(encoding_1.BLOCK.f64),\n\t ...emit(consiquent, context),\n\t encoding_1.op.else,\n\t ...emit(alternate, context),\n\t encoding_1.op.end,\n\t ];\n\t}\n\t// There are two sections of memory. This function emits code to add the correct\n\t// offset to an i32 index already on the stack.\n\tfunction emitAddMemoryOffset(name) {\n\t switch (name) {\n\t case \"gmegabuf\":\n\t return constants_1.BUFFER_SIZE * 8;\n\t case \"megabuf\":\n\t return 0;\n\t }\n\t}\n\tfunction getAssignmentOperatorMutation(ast, context) {\n\t const operatorToCode = {\n\t \"+=\": [encoding_1.op.f64_add],\n\t \"-=\": [encoding_1.op.f64_sub],\n\t \"*=\": [encoding_1.op.f64_mul],\n\t \"/=\": [encoding_1.op.f64_div],\n\t \"%=\": context.resolveFunc(\"mod\"),\n\t \"=\": null,\n\t };\n\t const operatorCode = operatorToCode[ast.operator];\n\t if (operatorCode === undefined) {\n\t throw errorUtils_1.createCompilerError(`Unknown assignment operator \"${ast.operator}\"`, ast.loc, context.rawSource);\n\t }\n\t return operatorCode;\n\t}\n\t\n\treturn emitter;\n}\n\nvar hasRequiredCompiler;\n\nfunction requireCompiler () {\n\tif (hasRequiredCompiler) return compiler;\n\thasRequiredCompiler = 1;\n\tvar __importDefault = (compiler && compiler.__importDefault) || function (mod) {\n\t return (mod && mod.__esModule) ? mod : { \"default\": mod };\n\t};\n\tvar __importStar = (compiler && compiler.__importStar) || function (mod) {\n\t if (mod && mod.__esModule) return mod;\n\t var result = {};\n\t if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n\t result[\"default\"] = mod;\n\t return result;\n\t};\n\tObject.defineProperty(compiler, \"__esModule\", { value: true });\n\tconst parser_1 = requireParser();\n\tconst emitter_1 = requireEmitter();\n\tconst encoding_1 = requireEncoding();\n\tconst shims_1 = __importDefault(requireShims());\n\tconst Utils = __importStar(requireUtils());\n\tconst wasmFunctions_1 = requireWasmFunctions();\n\tconst constants_1 = requireConstants();\n\tfunction compileModule({ pools, functions: funcs, eelVersion = 2, preParsed = false, }) {\n\t if (Object.keys(pools).includes(\"shims\")) {\n\t throw new Error('You may not name a pool \"shims\". \"shims\" is reserved for injected JavaScript functions.');\n\t }\n\t // Collect all the globals that we expect to get as imports.\n\t const importedVars = [];\n\t Object.entries(pools).forEach(([poolName, pool]) => {\n\t pool.forEach(variableName => {\n\t importedVars.push([poolName, variableName]);\n\t });\n\t });\n\t // Ensure all the imported globals get the first ids.\n\t const varResolver = new Utils.ScopedIdMap();\n\t importedVars.forEach(([poolName, variableName]) => {\n\t varResolver.get(poolName, variableName);\n\t });\n\t const functionImports = Object.entries(shims_1.default).map(([name, func]) => {\n\t return {\n\t args: new Array(func.length).fill(null).map(_ => encoding_1.VAL_TYPE.f64),\n\t // Shims implicitly always return a number\n\t returns: [encoding_1.VAL_TYPE.f64],\n\t name,\n\t };\n\t });\n\t const localFuncOrder = [];\n\t const moduleFuncs = [];\n\t Object.entries(funcs).forEach(([name, { pool, code }]) => {\n\t if (pools[pool] == null) {\n\t const poolsList = Object.keys(pools);\n\t if (poolsList.length === 0) {\n\t throw new Error(`The function \"${name}\" was declared as using a variable ` +\n\t `pool named \"${pool}\" but no pools were defined.`);\n\t }\n\t throw new Error(`The function \"${name}\" was declared as using a variable ` +\n\t `pool named \"${pool}\" which is not among the variable ` +\n\t `pools defined. The defined variable pools are: ` +\n\t `${Utils.formatList(poolsList)}.`);\n\t }\n\t const ast = preParsed ? code : parser_1.parse(code);\n\t if (typeof ast === \"string\") {\n\t // TODO: Change the API so this can be enforced by types\n\t throw new Error(\"Got passed unparsed code without setting the preParsed flag\");\n\t }\n\t if (ast.type !== \"SCRIPT\") {\n\t throw new Error(\"Invalid AST\");\n\t }\n\t if (ast.body.length === 0) {\n\t return;\n\t }\n\t const localVariables = [];\n\t const context = {\n\t resolveVar: name => {\n\t // The `reg00`-`reg99` variables are special in that they are shared between all pools.\n\t if (/^reg\\d\\d$/.test(name)) {\n\t return varResolver.get(null, name);\n\t }\n\t return varResolver.get(pool, name);\n\t },\n\t resolveLocal: type => {\n\t // TODO: We could provide a way for the emitter to release a local\n\t // variable so that we can reuse it, much in the same way a traditional\n\t // compiler does in register allocation.\n\t localVariables.push(type);\n\t return localVariables.length - 1;\n\t },\n\t resolveFunc: name => {\n\t // If this is a shim, return the shim index.\n\t const shimdex = functionImports.findIndex(func => func.name === name);\n\t if (shimdex !== -1) {\n\t const call = encoding_1.op.call(shimdex);\n\t if (name === \"rand\" && eelVersion === 1) {\n\t return [...call, encoding_1.op.f64_floor];\n\t }\n\t return call;\n\t }\n\t // If it's not a shim and it's not a defined function, return null.\n\t // The emitter will generate a nice error.\n\t if (wasmFunctions_1.localFuncMap[name] == null) {\n\t return null;\n\t }\n\t let index = localFuncOrder.indexOf(name);\n\t if (index === -1) {\n\t localFuncOrder.push(name);\n\t index = localFuncOrder.length - 1;\n\t }\n\t return encoding_1.op.call(index + functionImports.length);\n\t },\n\t rawSource: code,\n\t };\n\t const binary = emitter_1.emit(ast, context);\n\t moduleFuncs.push({\n\t binary,\n\t exportName: name,\n\t args: [],\n\t returns: [],\n\t localVariables,\n\t });\n\t });\n\t const localFuncs = localFuncOrder.map(name => {\n\t const func = wasmFunctions_1.localFuncMap[name];\n\t // This check is technicaly redundant since we check inside resolveLocalFunc\n\t // in the compiler context. It's here just to catch potential compiler bugs.\n\t if (func == null) {\n\t throw new Error(`Undefined local function \"${name}\"`);\n\t }\n\t return func;\n\t });\n\t // Given a function definition, return a hashable string representation of its signature.\n\t const getSignatureKey = (func) => {\n\t return [...func.args, \"|\", ...func.returns].join(\"-\");\n\t };\n\t // https://webassembly.github.io/spec/core/binary/modules.html#type-section\n\t const types = [];\n\t const typeIndexByKey = new Map();\n\t [...functionImports, ...localFuncs, ...moduleFuncs].forEach(func => {\n\t const key = getSignatureKey(func);\n\t if (typeIndexByKey.has(key)) {\n\t return;\n\t }\n\t types.push([\n\t encoding_1.FUNCTION_TYPE,\n\t ...encoding_1.encodeFlatVector(func.args),\n\t ...encoding_1.encodeFlatVector(func.returns),\n\t ]);\n\t typeIndexByKey.set(key, types.length - 1);\n\t });\n\t function getTypeIndex(func) {\n\t const key = getSignatureKey(func);\n\t const typeIndex = typeIndexByKey.get(key);\n\t if (typeIndex == null) {\n\t throw new Error(`Failed to get a type index for key ${key}`);\n\t }\n\t return typeIndex;\n\t }\n\t // https://webassembly.github.io/spec/core/binary/modules.html#import-section\n\t const imports = [\n\t ...importedVars.map(([namespace, name]) => {\n\t return [\n\t ...encoding_1.encodeString(namespace),\n\t ...encoding_1.encodeString(name),\n\t ...[encoding_1.GLOBAL_TYPE, encoding_1.VAL_TYPE.f64, encoding_1.MUTABILITY.var],\n\t ];\n\t }),\n\t ...functionImports.map((func, i) => {\n\t const typeIndex = getTypeIndex(func);\n\t return [\n\t ...encoding_1.encodeString(\"shims\"),\n\t ...encoding_1.encodeString(func.name),\n\t ...[encoding_1.TYPE_IDX, ...encoding_1.unsignedLEB128(typeIndex)],\n\t ];\n\t }),\n\t ];\n\t // https://webassembly.github.io/spec/core/binary/modules.html#function-section\n\t //\n\t // > Functions are referenced through function indices, starting with the smallest\n\t // > index not referencing a function import.\n\t const functions = [...localFuncs, ...moduleFuncs].map(func => {\n\t const typeIndex = getTypeIndex(func);\n\t return encoding_1.unsignedLEB128(typeIndex);\n\t });\n\t const memories = [\n\t // Only one memory\n\t [\n\t 0x01,\n\t ...encoding_1.unsignedLEB128(constants_1.WASM_MEMORY_SIZE),\n\t ...encoding_1.unsignedLEB128(constants_1.WASM_MEMORY_SIZE),\n\t ],\n\t ];\n\t // https://webassembly.github.io/spec/core/binary/modules.html#global-section\n\t const globalCount = varResolver.size() - importedVars.length;\n\t const globals = Utils.times(globalCount, () => {\n\t return [\n\t encoding_1.VAL_TYPE.f64,\n\t encoding_1.MUTABILITY.var,\n\t ...encoding_1.op.f64_const(0),\n\t encoding_1.op.end,\n\t ];\n\t });\n\t // https://webassembly.github.io/spec/core/binary/modules.html#binary-exportsec\n\t const xports = [...moduleFuncs].map((func, i) => {\n\t const funcIndex = i + functionImports.length + localFuncs.length;\n\t return [\n\t ...encoding_1.encodeString(func.exportName),\n\t encoding_1.EXPORT_TYPE.FUNC,\n\t ...encoding_1.unsignedLEB128(funcIndex),\n\t ];\n\t });\n\t /* Uncomment this to expose memory\n\t xports.push([\n\t ...encodeString(\"memory\"),\n\t EXPORT_TYPE.MEMORY,\n\t ...unsignedLEB128(0),\n\t ]);\n\t */\n\t // https://webassembly.github.io/spec/core/binary/modules.html#code-section\n\t const codes = [...localFuncs, ...moduleFuncs].map(func => {\n\t var _a;\n\t // TODO: We could collapose consecutive types here, or even move to a two\n\t // pass approach where ids are resolved after the emitter is run.\n\t const localTypes = ((_a = func.localVariables) !== null && _a !== void 0 ? _a : []).map(type => {\n\t return [...encoding_1.unsignedLEB128(1), type];\n\t });\n\t // It's a bit odd that every other section is an array of arrays and this\n\t // one is an array of vectors. The spec says this is so that when navigating\n\t // the binary functions can be skipped efficiently.\n\t return encoding_1.encodeFlatVector([\n\t ...encoding_1.encodeNestedVector(localTypes),\n\t ...func.binary,\n\t encoding_1.op.end,\n\t ]);\n\t });\n\t return new Uint8Array([\n\t // Magic module header\n\t ...encoding_1.MAGIC,\n\t // Version number\n\t ...encoding_1.WASM_VERSION,\n\t ...encoding_1.encodeSection(encoding_1.SECTION.TYPE, types),\n\t ...encoding_1.encodeSection(encoding_1.SECTION.IMPORT, imports),\n\t ...encoding_1.encodeSection(encoding_1.SECTION.FUNC, functions),\n\t ...encoding_1.encodeSection(encoding_1.SECTION.MEMORY, memories),\n\t ...encoding_1.encodeSection(encoding_1.SECTION.GLOBAL, globals),\n\t ...encoding_1.encodeSection(encoding_1.SECTION.EXPORT, xports),\n\t ...encoding_1.encodeSection(encoding_1.SECTION.CODE, codes),\n\t ]);\n\t}\n\tcompiler.compileModule = compileModule;\n\t\n\treturn compiler;\n}\n\nvar loader = {};\n\nvar hasRequiredLoader;\n\nfunction requireLoader () {\n\tif (hasRequiredLoader) return loader;\n\thasRequiredLoader = 1;\n\tvar __importDefault = (loader && loader.__importDefault) || function (mod) {\n\t return (mod && mod.__esModule) ? mod : { \"default\": mod };\n\t};\n\tObject.defineProperty(loader, \"__esModule\", { value: true });\n\tconst shims_1 = __importDefault(requireShims());\n\tconst compiler_1 = requireCompiler();\n\tasync function loadModule({ pools, functions, eelVersion = 2, }) {\n\t let compilerPools = {};\n\t Object.entries(pools).forEach(([key, globals]) => {\n\t compilerPools[key] = new Set(Object.keys(globals));\n\t });\n\t const buffer = compiler_1.compileModule({\n\t pools: compilerPools,\n\t functions,\n\t eelVersion,\n\t });\n\t const mod = await WebAssembly.compile(buffer);\n\t var importObject = Object.assign(Object.assign({}, pools), { shims: shims_1.default });\n\t return await WebAssembly.instantiate(mod, importObject);\n\t}\n\tloader.loadModule = loadModule;\n\t\n\treturn loader;\n}\n\nvar hasRequiredSrc;\n\nfunction requireSrc () {\n\tif (hasRequiredSrc) return src;\n\thasRequiredSrc = 1;\n\tvar __importDefault = (src && src.__importDefault) || function (mod) {\n\t return (mod && mod.__esModule) ? mod : { \"default\": mod };\n\t};\n\tObject.defineProperty(src, \"__esModule\", { value: true });\n\tconst parser_1 = requireParser();\n\tsrc.parse = parser_1.parse;\n\tconst compiler_1 = requireCompiler();\n\tsrc.compileModule = compiler_1.compileModule;\n\tconst shims_1 = __importDefault(requireShims());\n\tsrc.shims = shims_1.default;\n\tconst loader_1 = requireLoader();\n\tsrc.loadModule = loader_1.loadModule;\n\t\n\treturn src;\n}\n\nvar srcExports = requireSrc();\n\n// Runtime header offsets\nconst ID_OFFSET = -8;\nconst SIZE_OFFSET = -4;\n\n// Runtime ids\nconst ARRAYBUFFER_ID = 0;\nconst STRING_ID = 1;\n// const ARRAYBUFFERVIEW_ID = 2;\n\n// Runtime type information\nconst ARRAYBUFFERVIEW = 1 << 0;\nconst ARRAY = 1 << 1;\nconst STATICARRAY = 1 << 2;\n// const SET = 1 << 3;\n// const MAP = 1 << 4;\nconst VAL_ALIGN_OFFSET = 6;\n// const VAL_ALIGN = 1 << VAL_ALIGN_OFFSET;\nconst VAL_SIGNED = 1 << 11;\nconst VAL_FLOAT = 1 << 12;\n// const VAL_NULLABLE = 1 << 13;\nconst VAL_MANAGED = 1 << 14;\n// const KEY_ALIGN_OFFSET = 15;\n// const KEY_ALIGN = 1 << KEY_ALIGN_OFFSET;\n// const KEY_SIGNED = 1 << 20;\n// const KEY_FLOAT = 1 << 21;\n// const KEY_NULLABLE = 1 << 22;\n// const KEY_MANAGED = 1 << 23;\n\n// Array(BufferView) layout\nconst ARRAYBUFFERVIEW_BUFFER_OFFSET = 0;\nconst ARRAYBUFFERVIEW_DATASTART_OFFSET = 4;\nconst ARRAYBUFFERVIEW_DATALENGTH_OFFSET = 8;\nconst ARRAYBUFFERVIEW_SIZE = 12;\nconst ARRAY_LENGTH_OFFSET = 12;\nconst ARRAY_SIZE = 16;\n\nconst BIGINT = typeof BigUint64Array !== \"undefined\";\nconst THIS = Symbol();\n\nconst STRING_DECODE_THRESHOLD = 32;\nconst decoder = new TextDecoder(\"utf-16le\");\n\n/** Gets a string from an U32 and an U16 view on a memory. */\nfunction getStringImpl(buffer, ptr) {\n const len = new Uint32Array(buffer)[ptr + SIZE_OFFSET >>> 2] >>> 1;\n const arr = new Uint16Array(buffer, ptr, len);\n if (len <= STRING_DECODE_THRESHOLD) {\n return String.fromCharCode.apply(String, arr);\n }\n return decoder.decode(arr);\n}\n\n/** Prepares the base module prior to instantiation. */\nfunction preInstantiate(imports) {\n const extendedExports = {};\n\n function getString(memory, ptr) {\n if (!memory) return \"\";\n return getStringImpl(memory.buffer, ptr);\n }\n\n // add common imports used by stdlib for convenience\n const env = (imports.env = imports.env || {});\n env.abort = env.abort || function abort(msg, file, line, colm) {\n const memory = extendedExports.memory || env.memory; // prefer exported, otherwise try imported\n throw Error(`abort: ${getString(memory, msg)} at ${getString(memory, file)}:${line}:${colm}`);\n };\n env.trace = env.trace || function trace(msg, n, ...args) {\n const memory = extendedExports.memory || env.memory;\n console.log(`trace: ${getString(memory, msg)}${n ? \" \" : \"\"}${args.slice(0, n).join(\", \")}`);\n };\n env.seed = env.seed || Date.now;\n imports.Math = imports.Math || Math;\n imports.Date = imports.Date || Date;\n\n return extendedExports;\n}\n\n/** Prepares the final module once instantiation is complete. */\nfunction postInstantiate(extendedExports, instance) {\n const exports = instance.exports;\n const memory = exports.memory;\n const table = exports.table;\n const __new = exports[\"__new\"];\n const __retain = exports[\"__retain\"];\n const __rtti_base = exports[\"__rtti_base\"] || -1; // oob if not present\n\n /** Gets the runtime type info for the given id. */\n function getInfo(id) {\n const U32 = new Uint32Array(memory.buffer);\n const count = U32[__rtti_base >>> 2];\n if ((id >>>= 0) >= count) throw Error(`invalid id: ${id}`);\n return U32[(__rtti_base + 4 >>> 2) + id * 2];\n }\n\n /** Gets and validate runtime type info for the given id for array like objects */\n function getArrayInfo(id) {\n const info = getInfo(id);\n if (!(info & (ARRAYBUFFERVIEW | ARRAY | STATICARRAY))) throw Error(`not an array: ${id}, flags=${info}`);\n return info;\n }\n\n /** Gets the runtime base id for the given id. */\n function getBase(id) {\n const U32 = new Uint32Array(memory.buffer);\n const count = U32[__rtti_base >>> 2];\n if ((id >>>= 0) >= count) throw Error(`invalid id: ${id}`);\n return U32[(__rtti_base + 4 >>> 2) + id * 2 + 1];\n }\n\n /** Gets the runtime alignment of a collection's values. */\n function getValueAlign(info) {\n return 31 - Math.clz32((info >>> VAL_ALIGN_OFFSET) & 31); // -1 if none\n }\n\n /** Gets the runtime alignment of a collection's keys. */\n // function getKeyAlign(info) {\n // return 31 - Math.clz32((info >>> KEY_ALIGN_OFFSET) & 31); // -1 if none\n // }\n\n /** Allocates a new string in the module's memory and returns its retained pointer. */\n function __newString(str) {\n if (str == null) return 0;\n const length = str.length;\n const ptr = __new(length << 1, STRING_ID);\n const U16 = new Uint16Array(memory.buffer);\n for (var i = 0, p = ptr >>> 1; i < length; ++i) U16[p + i] = str.charCodeAt(i);\n return ptr;\n }\n\n extendedExports.__newString = __newString;\n\n /** Reads a string from the module's memory by its pointer. */\n function __getString(ptr) {\n if (!ptr) return null;\n const buffer = memory.buffer;\n const id = new Uint32Array(buffer)[ptr + ID_OFFSET >>> 2];\n if (id !== STRING_ID) throw Error(`not a string: ${ptr}`);\n return getStringImpl(buffer, ptr);\n }\n\n extendedExports.__getString = __getString;\n\n /** Gets the view matching the specified alignment, signedness and floatness. */\n function getView(alignLog2, signed, float) {\n const buffer = memory.buffer;\n if (float) {\n switch (alignLog2) {\n case 2: return new Float32Array(buffer);\n case 3: return new Float64Array(buffer);\n }\n } else {\n switch (alignLog2) {\n case 0: return new (signed ? Int8Array : Uint8Array)(buffer);\n case 1: return new (signed ? Int16Array : Uint16Array)(buffer);\n case 2: return new (signed ? Int32Array : Uint32Array)(buffer);\n case 3: return new (signed ? BigInt64Array : BigUint64Array)(buffer);\n }\n }\n throw Error(`unsupported align: ${alignLog2}`);\n }\n\n /** Allocates a new array in the module's memory and returns its retained pointer. */\n function __newArray(id, values) {\n const info = getArrayInfo(id);\n const align = getValueAlign(info);\n const length = values.length;\n const buf = __new(length << align, info & STATICARRAY ? id : ARRAYBUFFER_ID);\n let result;\n if (info & STATICARRAY) {\n result = buf;\n } else {\n const arr = __new(info & ARRAY ? ARRAY_SIZE : ARRAYBUFFERVIEW_SIZE, id);\n const U32 = new Uint32Array(memory.buffer);\n U32[arr + ARRAYBUFFERVIEW_BUFFER_OFFSET >>> 2] = __retain(buf);\n U32[arr + ARRAYBUFFERVIEW_DATASTART_OFFSET >>> 2] = buf;\n U32[arr + ARRAYBUFFERVIEW_DATALENGTH_OFFSET >>> 2] = length << align;\n if (info & ARRAY) U32[arr + ARRAY_LENGTH_OFFSET >>> 2] = length;\n result = arr;\n }\n const view = getView(align, info & VAL_SIGNED, info & VAL_FLOAT);\n if (info & VAL_MANAGED) {\n for (let i = 0; i < length; ++i) view[(buf >>> align) + i] = __retain(values[i]);\n } else {\n view.set(values, buf >>> align);\n }\n return result;\n }\n\n extendedExports.__newArray = __newArray;\n\n /** Gets a live view on an array's values in the module's memory. Infers the array type from RTTI. */\n function __getArrayView(arr) {\n const U32 = new Uint32Array(memory.buffer);\n const id = U32[arr + ID_OFFSET >>> 2];\n const info = getArrayInfo(id);\n const align = getValueAlign(info);\n let buf = info & STATICARRAY\n ? arr\n : U32[arr + ARRAYBUFFERVIEW_DATASTART_OFFSET >>> 2];\n const length = info & ARRAY\n ? U32[arr + ARRAY_LENGTH_OFFSET >>> 2]\n : U32[buf + SIZE_OFFSET >>> 2] >>> align;\n return getView(align, info & VAL_SIGNED, info & VAL_FLOAT).subarray(buf >>>= align, buf + length);\n }\n\n extendedExports.__getArrayView = __getArrayView;\n\n /** Copies an array's values from the module's memory. Infers the array type from RTTI. */\n function __getArray(arr) {\n const input = __getArrayView(arr);\n const len = input.length;\n const out = new Array(len);\n for (let i = 0; i < len; i++) out[i] = input[i];\n return out;\n }\n\n extendedExports.__getArray = __getArray;\n\n /** Copies an ArrayBuffer's value from the module's memory. */\n function __getArrayBuffer(ptr) {\n const buffer = memory.buffer;\n const length = new Uint32Array(buffer)[ptr + SIZE_OFFSET >>> 2];\n return buffer.slice(ptr, ptr + length);\n }\n\n extendedExports.__getArrayBuffer = __getArrayBuffer;\n\n /** Copies a typed array's values from the module's memory. */\n function getTypedArray(Type, alignLog2, ptr) {\n return new Type(getTypedArrayView(Type, alignLog2, ptr));\n }\n\n /** Gets a live view on a typed array's values in the module's memory. */\n function getTypedArrayView(Type, alignLog2, ptr) {\n const buffer = memory.buffer;\n const U32 = new Uint32Array(buffer);\n const bufPtr = U32[ptr + ARRAYBUFFERVIEW_DATASTART_OFFSET >>> 2];\n return new Type(buffer, bufPtr, U32[bufPtr + SIZE_OFFSET >>> 2] >>> alignLog2);\n }\n\n /** Attach a set of get TypedArray and View functions to the exports. */\n function attachTypedArrayFunctions(ctor, name, align) {\n extendedExports[`__get${name}`] = getTypedArray.bind(null, ctor, align);\n extendedExports[`__get${name}View`] = getTypedArrayView.bind(null, ctor, align);\n }\n\n [\n Int8Array,\n Uint8Array,\n Uint8ClampedArray,\n Int16Array,\n Uint16Array,\n Int32Array,\n Uint32Array,\n Float32Array,\n Float64Array\n ].forEach(ctor => {\n attachTypedArrayFunctions(ctor, ctor.name, 31 - Math.clz32(ctor.BYTES_PER_ELEMENT));\n });\n\n if (BIGINT) {\n [BigUint64Array, BigInt64Array].forEach(ctor => {\n attachTypedArrayFunctions(ctor, ctor.name.slice(3), 3);\n });\n }\n\n /** Tests whether an object is an instance of the class represented by the specified base id. */\n function __instanceof(ptr, baseId) {\n const U32 = new Uint32Array(memory.buffer);\n let id = U32[ptr + ID_OFFSET >>> 2];\n if (id <= U32[__rtti_base >>> 2]) {\n do {\n if (id == baseId) return true;\n id = getBase(id);\n } while (id);\n }\n return false;\n }\n\n extendedExports.__instanceof = __instanceof;\n\n // Pull basic exports to extendedExports so code in preInstantiate can use them\n extendedExports.memory = extendedExports.memory || memory;\n extendedExports.table = extendedExports.table || table;\n\n // Demangle exports and provide the usual utility on the prototype\n return demangle(exports, extendedExports);\n}\n\nfunction isResponse(src) {\n return typeof Response !== \"undefined\" && src instanceof Response;\n}\n\nfunction isModule(src) {\n return src instanceof WebAssembly.Module;\n}\n\n/** Asynchronously instantiates an AssemblyScript module from anything that can be instantiated. */\nasync function instantiate(source, imports = {}) {\n if (isResponse(source = await source)) return instantiateStreaming(source, imports);\n const module = isModule(source) ? source : await WebAssembly.compile(source);\n const extended = preInstantiate(imports);\n const instance = await WebAssembly.instantiate(module, imports);\n const exports = postInstantiate(extended, instance);\n return { module, instance, exports };\n}\n\n/** Synchronously instantiates an AssemblyScript module from a WebAssembly.Module or binary buffer. */\nfunction instantiateSync(source, imports = {}) {\n const module = isModule(source) ? source : new WebAssembly.Module(source);\n const extended = preInstantiate(imports);\n const instance = new WebAssembly.Instance(module, imports);\n const exports = postInstantiate(extended, instance);\n return { module, instance, exports };\n}\n\n/** Asynchronously instantiates an AssemblyScript module from a response, i.e. as obtained by `fetch`. */\nasync function instantiateStreaming(source, imports = {}) {\n if (!WebAssembly.instantiateStreaming) {\n return instantiate(\n isResponse(source = await source)\n ? source.arrayBuffer()\n : source,\n imports\n );\n }\n const extended = preInstantiate(imports);\n const result = await WebAssembly.instantiateStreaming(source, imports);\n const exports = postInstantiate(extended, result.instance);\n return { ...result, exports };\n}\n\n/** Demangles an AssemblyScript module's exports to a friendly object structure. */\nfunction demangle(exports, extendedExports = {}) {\n const setArgumentsLength = exports[\"__argumentsLength\"]\n ? length => { exports[\"__argumentsLength\"].value = length; }\n : exports[\"__setArgumentsLength\"] || exports[\"__setargc\"] || (() => { /* nop */ });\n for (let internalName in exports) {\n if (!Object.prototype.hasOwnProperty.call(exports, internalName)) continue;\n const elem = exports[internalName];\n let parts = internalName.split(\".\");\n let curr = extendedExports;\n while (parts.length > 1) {\n let part = parts.shift();\n if (!Object.prototype.hasOwnProperty.call(curr, part)) curr[part] = {};\n curr = curr[part];\n }\n let name = parts[0];\n let hash = name.indexOf(\"#\");\n if (hash >= 0) {\n const className = name.substring(0, hash);\n const classElem = curr[className];\n if (typeof classElem === \"undefined\" || !classElem.prototype) {\n const ctor = function(...args) {\n return ctor.wrap(ctor.prototype.constructor(0, ...args));\n };\n ctor.prototype = {\n valueOf() { return this[THIS]; }\n };\n ctor.wrap = function(thisValue) {\n return Object.create(ctor.prototype, { [THIS]: { value: thisValue, writable: false } });\n };\n if (classElem) Object.getOwnPropertyNames(classElem).forEach(name =>\n Object.defineProperty(ctor, name, Object.getOwnPropertyDescriptor(classElem, name))\n );\n curr[className] = ctor;\n }\n name = name.substring(hash + 1);\n curr = curr[className].prototype;\n if (/^(get|set):/.test(name)) {\n if (!Object.prototype.hasOwnProperty.call(curr, name = name.substring(4))) {\n let getter = exports[internalName.replace(\"set:\", \"get:\")];\n let setter = exports[internalName.replace(\"get:\", \"set:\")];\n Object.defineProperty(curr, name, {\n get() { return getter(this[THIS]); },\n set(value) { setter(this[THIS], value); },\n enumerable: true\n });\n }\n } else {\n if (name === 'constructor') {\n (curr[name] = (...args) => {\n setArgumentsLength(args.length);\n return elem(...args);\n }).original = elem;\n } else { // instance method\n (curr[name] = function(...args) { // !\n setArgumentsLength(args.length);\n return elem(this[THIS], ...args);\n }).original = elem;\n }\n }\n } else {\n if (/^(get|set):/.test(name)) {\n if (!Object.prototype.hasOwnProperty.call(curr, name = name.substring(4))) {\n Object.defineProperty(curr, name, {\n get: exports[internalName.replace(\"set:\", \"get:\")],\n set: exports[internalName.replace(\"get:\", \"set:\")],\n enumerable: true\n });\n }\n } else if (typeof elem === \"function\" && elem !== setArgumentsLength) {\n (curr[name] = (...args) => {\n setArgumentsLength(args.length);\n return elem(...args);\n }).original = elem;\n } else {\n curr[name] = elem;\n }\n }\n }\n return extendedExports;\n}\n\nvar ascLoader = {\n instantiate,\n instantiateSync,\n instantiateStreaming,\n demangle\n};\n\nclass FFT {\n constructor(samplesIn, samplesOut, equalize = false) {\n this.samplesIn = samplesIn;\n this.samplesOut = samplesOut;\n this.equalize = equalize;\n this.NFREQ = samplesOut * 2;\n\n if (this.equalize) {\n this.initEqualizeTable();\n }\n this.initBitRevTable();\n this.initCosSinTable();\n }\n\n initEqualizeTable() {\n this.equalizeArr = new Float32Array(this.samplesOut);\n const invHalfNFREQ = 1.0 / this.samplesOut;\n for (let i = 0; i < this.samplesOut; i++) {\n this.equalizeArr[i] =\n -0.02 * Math.log((this.samplesOut - i) * invHalfNFREQ);\n }\n }\n\n /* eslint-disable no-bitwise */\n initBitRevTable() {\n this.bitrevtable = new Uint16Array(this.NFREQ);\n\n for (let i = 0; i < this.NFREQ; i++) {\n this.bitrevtable[i] = i;\n }\n\n let j = 0;\n for (let i = 0; i < this.NFREQ; i++) {\n if (j > i) {\n const temp = this.bitrevtable[i];\n this.bitrevtable[i] = this.bitrevtable[j];\n this.bitrevtable[j] = temp;\n }\n\n let m = this.NFREQ >> 1;\n\n while (m >= 1 && j >= m) {\n j -= m;\n m >>= 1;\n }\n\n j += m;\n }\n }\n\n initCosSinTable() {\n let dftsize = 2;\n let tabsize = 0;\n while (dftsize <= this.NFREQ) {\n tabsize += 1;\n dftsize <<= 1;\n }\n\n this.cossintable = [new Float32Array(tabsize), new Float32Array(tabsize)];\n\n dftsize = 2;\n let i = 0;\n while (dftsize <= this.NFREQ) {\n const theta = (-2 * Math.PI) / dftsize;\n this.cossintable[0][i] = Math.cos(theta);\n this.cossintable[1][i] = Math.sin(theta);\n i += 1;\n dftsize <<= 1;\n }\n }\n\n timeToFrequencyDomain(waveDataIn) {\n const real = new Float32Array(this.NFREQ);\n const imag = new Float32Array(this.NFREQ);\n\n for (let i = 0; i < this.NFREQ; i++) {\n const idx = this.bitrevtable[i];\n if (idx < this.samplesIn) {\n real[i] = waveDataIn[idx];\n } else {\n real[i] = 0;\n }\n imag[i] = 0;\n }\n\n let dftsize = 2;\n let t = 0;\n while (dftsize <= this.NFREQ) {\n const wpr = this.cossintable[0][t];\n const wpi = this.cossintable[1][t];\n let wr = 1.0;\n let wi = 0.0;\n const hdftsize = dftsize >> 1;\n\n for (let m = 0; m < hdftsize; m++) {\n for (let i = m; i < this.NFREQ; i += dftsize) {\n const j = i + hdftsize;\n const tempr = wr * real[j] - wi * imag[j];\n const tempi = wr * imag[j] + wi * real[j];\n real[j] = real[i] - tempr;\n imag[j] = imag[i] - tempi;\n real[i] += tempr;\n imag[i] += tempi;\n }\n\n const wtemp = wr;\n wr = wtemp * wpr - wi * wpi;\n wi = wi * wpr + wtemp * wpi;\n }\n\n dftsize <<= 1;\n t += 1;\n }\n\n const spectralDataOut = new Float32Array(this.samplesOut);\n if (this.equalize) {\n for (let i = 0; i < this.samplesOut; i++) {\n spectralDataOut[i] =\n this.equalizeArr[i] *\n Math.sqrt(real[i] * real[i] + imag[i] * imag[i]);\n }\n } else {\n for (let i = 0; i < this.samplesOut; i++) {\n spectralDataOut[i] = Math.sqrt(real[i] * real[i] + imag[i] * imag[i]);\n }\n }\n\n return spectralDataOut;\n }\n /* eslint-enable no-bitwise */\n}\n\nclass AudioProcessor {\n constructor(context) {\n this.numSamps = 512;\n this.fftSize = this.numSamps * 2;\n\n this.fft = new FFT(this.fftSize, 512, true);\n\n if (context) {\n this.audioContext = context;\n this.audible = context.createDelay();\n\n this.analyser = context.createAnalyser();\n this.analyser.smoothingTimeConstant = 0.0;\n this.analyser.fftSize = this.fftSize;\n\n this.audible.connect(this.analyser);\n\n // Split channels\n this.analyserL = context.createAnalyser();\n this.analyserL.smoothingTimeConstant = 0.0;\n this.analyserL.fftSize = this.fftSize;\n\n this.analyserR = context.createAnalyser();\n this.analyserR.smoothingTimeConstant = 0.0;\n this.analyserR.fftSize = this.fftSize;\n\n this.splitter = context.createChannelSplitter(2);\n\n this.audible.connect(this.splitter);\n this.splitter.connect(this.analyserL, 0);\n this.splitter.connect(this.analyserR, 1);\n }\n\n // Initialised once as typed arrays\n // Used for webaudio API raw (time domain) samples. 0 -> 255\n this.timeByteArray = new Uint8Array(this.fftSize);\n this.timeByteArrayL = new Uint8Array(this.fftSize);\n this.timeByteArrayR = new Uint8Array(this.fftSize);\n\n // Signed raw samples shifted to -128 -> 127\n this.timeArray = new Int8Array(this.fftSize);\n this.timeByteArraySignedL = new Int8Array(this.fftSize);\n this.timeByteArraySignedR = new Int8Array(this.fftSize);\n\n // Temporary array for smoothing\n this.tempTimeArrayL = new Int8Array(this.fftSize);\n this.tempTimeArrayR = new Int8Array(this.fftSize);\n\n // Undersampled from this.fftSize to this.numSamps\n this.timeArrayL = new Int8Array(this.numSamps);\n this.timeArrayR = new Int8Array(this.numSamps);\n }\n\n sampleAudio() {\n this.analyser.getByteTimeDomainData(this.timeByteArray);\n this.analyserL.getByteTimeDomainData(this.timeByteArrayL);\n this.analyserR.getByteTimeDomainData(this.timeByteArrayR);\n this.processAudio();\n }\n updateAudio(timeByteArray, timeByteArrayL, timeByteArrayR) {\n this.timeByteArray.set(timeByteArray);\n this.timeByteArrayL.set(timeByteArrayL);\n this.timeByteArrayR.set(timeByteArrayR);\n this.processAudio();\n }\n /* eslint-disable no-bitwise */\n processAudio() {\n for (let i = 0, j = 0, lastIdx = 0; i < this.fftSize; i++) {\n // Shift Unsigned to Signed about 0\n this.timeArray[i] = this.timeByteArray[i] - 128;\n this.timeByteArraySignedL[i] = this.timeByteArrayL[i] - 128;\n this.timeByteArraySignedR[i] = this.timeByteArrayR[i] - 128;\n\n this.tempTimeArrayL[i] =\n 0.5 *\n (this.timeByteArraySignedL[i] + this.timeByteArraySignedL[lastIdx]);\n this.tempTimeArrayR[i] =\n 0.5 *\n (this.timeByteArraySignedR[i] + this.timeByteArraySignedR[lastIdx]);\n\n // Undersampled\n if (i % 2 === 0) {\n this.timeArrayL[j] = this.tempTimeArrayL[i];\n this.timeArrayR[j] = this.tempTimeArrayR[i];\n j += 1;\n }\n\n lastIdx = i;\n }\n\n // Use full width samples for the FFT\n this.freqArray = this.fft.timeToFrequencyDomain(this.timeArray);\n this.freqArrayL = this.fft.timeToFrequencyDomain(this.timeByteArraySignedL);\n this.freqArrayR = this.fft.timeToFrequencyDomain(this.timeByteArraySignedR);\n }\n\n connectAudio(audionode) {\n audionode.connect(this.audible);\n }\n\n disconnectAudio(audionode) {\n audionode.disconnect(this.audible);\n }\n /* eslint-enable no-bitwise */\n}\n\nclass AudioLevels {\n constructor(audio) {\n this.audio = audio;\n\n let sampleRate;\n if (this.audio.audioContext) {\n sampleRate = this.audio.audioContext.sampleRate;\n } else {\n sampleRate = 44100;\n }\n\n const bucketHz = sampleRate / this.audio.fftSize;\n\n const bassLow = Math.clamp(\n Math.round(20 / bucketHz) - 1,\n 0,\n this.audio.numSamps - 1\n );\n const bassHigh = Math.clamp(\n Math.round(320 / bucketHz) - 1,\n 0,\n this.audio.numSamps - 1\n );\n const midHigh = Math.clamp(\n Math.round(2800 / bucketHz) - 1,\n 0,\n this.audio.numSamps - 1\n );\n const trebHigh = Math.clamp(\n Math.round(11025 / bucketHz) - 1,\n 0,\n this.audio.numSamps - 1\n );\n\n this.starts = [bassLow, bassHigh, midHigh];\n this.stops = [bassHigh, midHigh, trebHigh];\n\n this.val = new Float32Array(3);\n this.imm = new Float32Array(3);\n this.att = new Float32Array(3);\n this.avg = new Float32Array(3);\n this.longAvg = new Float32Array(3);\n\n this.att.fill(1);\n this.avg.fill(1);\n this.longAvg.fill(1);\n }\n\n /* eslint-disable camelcase */\n get bass() {\n return this.val[0];\n }\n\n get bass_att() {\n return this.att[0];\n }\n\n get mid() {\n return this.val[1];\n }\n\n get mid_att() {\n return this.att[1];\n }\n\n get treb() {\n return this.val[2];\n }\n\n get treb_att() {\n return this.att[2];\n }\n /* eslint-enable camelcase */\n\n static isFiniteNumber(num) {\n return Number.isFinite(num) && !Number.isNaN(num);\n }\n\n static adjustRateToFPS(rate, baseFPS, FPS) {\n return rate ** (baseFPS / FPS);\n }\n\n updateAudioLevels(fps, frame) {\n if (this.audio.freqArray.length > 0) {\n let effectiveFPS = fps;\n if (!AudioLevels.isFiniteNumber(effectiveFPS) || effectiveFPS < 15) {\n effectiveFPS = 15;\n } else if (effectiveFPS > 144) {\n effectiveFPS = 144;\n }\n\n // Clear for next loop\n this.imm.fill(0);\n for (let i = 0; i < 3; i++) {\n for (let j = this.starts[i]; j < this.stops[i]; j++) {\n this.imm[i] += this.audio.freqArray[j];\n }\n }\n\n for (let i = 0; i < 3; i++) {\n let rate;\n if (this.imm[i] > this.avg[i]) {\n rate = 0.2;\n } else {\n rate = 0.5;\n }\n rate = AudioLevels.adjustRateToFPS(rate, 30.0, effectiveFPS);\n this.avg[i] = this.avg[i] * rate + this.imm[i] * (1 - rate);\n\n if (frame < 50) {\n rate = 0.9;\n } else {\n rate = 0.992;\n }\n rate = AudioLevels.adjustRateToFPS(rate, 30.0, effectiveFPS);\n this.longAvg[i] = this.longAvg[i] * rate + this.imm[i] * (1 - rate);\n\n if (this.longAvg[i] < 0.001) {\n this.val[i] = 1.0;\n this.att[i] = 1.0;\n } else {\n this.val[i] = this.imm[i] / this.longAvg[i];\n this.att[i] = this.avg[i] / this.longAvg[i];\n }\n }\n }\n }\n}\n\n/* eslint-disable */\nconst pmap = {\n baseVals: {\n gammaadj: 1.25,\n wave_g: 0.5,\n mv_x: 12.0,\n warpscale: 1.0,\n brighten: 0.0,\n mv_y: 9.0,\n wave_scale: 1.0,\n echo_alpha: 0.0,\n additivewave: 0.0,\n sx: 1.0,\n sy: 1.0,\n warp: 0.01,\n red_blue: 0.0,\n wave_mode: 0.0,\n wave_brighten: 0.0,\n wrap: 0.0,\n zoomexp: 1.0,\n fshader: 0.0,\n wave_r: 0.5,\n echo_zoom: 1.0,\n wave_smoothing: 0.75,\n warpanimspeed: 1.0,\n wave_dots: 0.0,\n wave_x: 0.5,\n wave_y: 0.5,\n zoom: 1.0,\n solarize: 0.0,\n modwavealphabyvolume: 0.0,\n dx: 0.0,\n cx: 0.5,\n dy: 0.0,\n darken_center: 0.0,\n cy: 0.5,\n invert: 0.0,\n bmotionvectorson: 0.0,\n rot: 0.0,\n modwavealphaend: 0.95,\n wave_mystery: -0.2,\n decay: 0.9,\n wave_a: 1.0,\n wave_b: 0.5,\n rating: 5.0,\n modwavealphastart: 0.75,\n darken: 0.0,\n echo_orient: 0.0,\n ib_r: 0.5,\n ib_g: 0.5,\n ib_b: 0.5,\n ib_a: 0.0,\n ib_size: 0.0,\n ob_r: 0.5,\n ob_g: 0.5,\n ob_b: 0.5,\n ob_a: 0.0,\n ob_size: 0.0,\n mv_dx: 0.0,\n mv_dy: 0.0,\n mv_a: 0.0,\n mv_r: 0.5,\n mv_g: 0.5,\n mv_b: 0.5,\n mv_l: 0.0,\n },\n init_eqs: function () {\n var m = {};\n return m;\n },\n frame_eqs: function (m) {\n m.rkeys = [\"warp\"];\n m.zoom = 1.01 + 0.02 * m.treb_att;\n m.warp = 0.15 + 0.25 * m.bass_att;\n return m;\n },\n pixel_eqs: function (m) {\n m.warp = m.warp + m.rad * 0.15;\n return m;\n },\n waves: [\n {\n baseVals: {\n a: 1.0,\n enabled: 0.0,\n b: 1.0,\n g: 1.0,\n scaling: 1.0,\n samples: 512.0,\n additive: 0.0,\n usedots: 0.0,\n spectrum: 0.0,\n r: 1.0,\n smoothing: 0.5,\n thick: 0.0,\n sep: 0.0,\n },\n init_eqs: function (m) {\n m.rkeys = [];\n return m;\n },\n frame_eqs: function (m) {\n return m;\n },\n point_eqs: \"\",\n },\n {\n baseVals: {\n a: 1.0,\n enabled: 0.0,\n b: 1.0,\n g: 1.0,\n scaling: 1.0,\n samples: 512.0,\n additive: 0.0,\n usedots: 0.0,\n spectrum: 0.0,\n r: 1.0,\n smoothing: 0.5,\n thick: 0.0,\n sep: 0.0,\n },\n init_eqs: function (m) {\n m.rkeys = [];\n return m;\n },\n frame_eqs: function (m) {\n return m;\n },\n point_eqs: \"\",\n },\n {\n baseVals: {\n a: 1.0,\n enabled: 0.0,\n b: 1.0,\n g: 1.0,\n scaling: 1.0,\n samples: 512.0,\n additive: 0.0,\n usedots: 0.0,\n spectrum: 0.0,\n r: 1.0,\n smoothing: 0.5,\n thick: 0.0,\n sep: 0.0,\n },\n init_eqs: function (m) {\n m.rkeys = [];\n return m;\n },\n frame_eqs: function (m) {\n return m;\n },\n point_eqs: \"\",\n },\n {\n baseVals: {\n a: 1.0,\n enabled: 0.0,\n b: 1.0,\n g: 1.0,\n scaling: 1.0,\n samples: 512.0,\n additive: 0.0,\n usedots: 0.0,\n spectrum: 0.0,\n r: 1.0,\n smoothing: 0.5,\n thick: 0.0,\n sep: 0.0,\n },\n init_eqs: function (m) {\n m.rkeys = [];\n return m;\n },\n frame_eqs: function (m) {\n return m;\n },\n point_eqs: \"\",\n },\n ],\n shapes: [\n {\n baseVals: {\n r2: 0.0,\n a: 1.0,\n enabled: 0.0,\n b: 0.0,\n tex_ang: 0.0,\n thickoutline: 0.0,\n g: 0.0,\n textured: 0.0,\n g2: 1.0,\n tex_zoom: 1.0,\n additive: 0.0,\n border_a: 0.1,\n border_b: 1.0,\n b2: 0.0,\n a2: 0.0,\n r: 1.0,\n border_g: 1.0,\n rad: 0.1,\n x: 0.5,\n y: 0.5,\n ang: 0.0,\n sides: 4.0,\n border_r: 1.0,\n },\n init_eqs: function (m) {\n m.rkeys = [];\n return m;\n },\n frame_eqs: function (m) {\n return m;\n },\n },\n {\n baseVals: {\n r2: 0.0,\n a: 1.0,\n enabled: 0.0,\n b: 0.0,\n tex_ang: 0.0,\n thickoutline: 0.0,\n g: 0.0,\n textured: 0.0,\n g2: 1.0,\n tex_zoom: 1.0,\n additive: 0.0,\n border_a: 0.1,\n border_b: 1.0,\n b2: 0.0,\n a2: 0.0,\n r: 1.0,\n border_g: 1.0,\n rad: 0.1,\n x: 0.5,\n y: 0.5,\n ang: 0.0,\n sides: 4.0,\n border_r: 1.0,\n },\n init_eqs: function (m) {\n m.rkeys = [];\n return m;\n },\n frame_eqs: function (m) {\n return m;\n },\n },\n {\n baseVals: {\n r2: 0.0,\n a: 1.0,\n enabled: 0.0,\n b: 0.0,\n tex_ang: 0.0,\n thickoutline: 0.0,\n g: 0.0,\n textured: 0.0,\n g2: 1.0,\n tex_zoom: 1.0,\n additive: 0.0,\n border_a: 0.1,\n border_b: 1.0,\n b2: 0.0,\n a2: 0.0,\n r: 1.0,\n border_g: 1.0,\n rad: 0.1,\n x: 0.5,\n y: 0.5,\n ang: 0.0,\n sides: 4.0,\n border_r: 1.0,\n },\n init_eqs: function (m) {\n m.rkeys = [];\n return m;\n },\n frame_eqs: function (m) {\n return m;\n },\n },\n {\n baseVals: {\n r2: 0.0,\n a: 1.0,\n enabled: 0.0,\n b: 0.0,\n tex_ang: 0.0,\n thickoutline: 0.0,\n g: 0.0,\n textured: 0.0,\n g2: 1.0,\n tex_zoom: 1.0,\n additive: 0.0,\n border_a: 0.1,\n border_b: 1.0,\n b2: 0.0,\n a2: 0.0,\n r: 1.0,\n border_g: 1.0,\n rad: 0.1,\n x: 0.5,\n y: 0.5,\n ang: 0.0,\n sides: 4.0,\n border_r: 1.0,\n },\n init_eqs: function (m) {\n m.rkeys = [];\n return m;\n },\n frame_eqs: function (m) {\n return m;\n },\n },\n ],\n warp:\n \"shader_body {\\nret = texture2D(sampler_main, uv).rgb;\\nret -= 0.004;\\n}\\n\",\n comp:\n \"shader_body {\\nret = texture2D(sampler_main, uv).rgb;\\nret *= hue_shader;\\n}\\n\",\n };\n/* eslint-enable */\n\nclass Utils {\n static atan2(x, y) {\n let a = Math.atan2(x, y);\n if (a < 0) {\n a += 2 * Math.PI;\n }\n return a;\n }\n\n static cloneVars(vars) {\n return Object.assign({}, vars);\n }\n\n static range(start, end) {\n if (end === undefined) {\n return [...Array(start).keys()];\n }\n\n return Array.from({ length: end - start }, (_, i) => i + start);\n }\n\n static pick(obj, keys) {\n const newObj = {};\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n newObj[key] = obj[key] || 0;\n }\n return newObj;\n }\n\n static omit(obj, keys) {\n const newObj = Object.assign({}, obj);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n delete newObj[key];\n }\n return newObj;\n }\n\n static setWasm(wasmGlobals, obj, keys) {\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n // eslint-disable-next-line no-param-reassign\n wasmGlobals[key].value = obj[key];\n }\n }\n\n static pickWasm(wasmGlobals, keys) {\n const newObj = {};\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n newObj[key] = wasmGlobals[key].value;\n }\n return newObj;\n }\n}\n\n/**\n * SeededRandom - Deterministic pseudo-random number generator\n * Using xorshift128+ algorithm\n */\nclass SeededRandom {\n constructor(seed = 1) {\n this.state = new Uint32Array(4);\n SeededRandom.initializeState(this.state, seed);\n this.warmUp();\n }\n\n static initializeState(state, seed) {\n state[0] = seed;\n state[1] = seed ^ 0x9e3779b9;\n state[2] = seed ^ 0x6a09e667;\n state[3] = seed ^ 0xbb67ae85;\n }\n\n warmUp() {\n for (let i = 0; i < 10; i++) {\n this.next();\n }\n }\n\n /**\n * Generate next random number in [0, 1)\n */\n next() {\n // xorshift128+ algorithm\n let t = this.state[3];\n let s = this.state[0];\n this.state[3] = this.state[2];\n this.state[2] = this.state[1];\n this.state[1] = s;\n\n t ^= t << 11;\n t ^= t >>> 8;\n this.state[0] = t ^ s ^ (s >>> 19);\n\n // Convert to [0, 1) range\n return (this.state[0] >>> 0) / 0x100000000;\n }\n\n /**\n * Generate random integer in [0, max)\n */\n nextInt(max) {\n return Math.floor(this.next() * max);\n }\n\n /**\n * Generate random number in [0, max)\n * Mimics butterchurn's rand() behavior\n */\n rand(max) {\n if (max < 1) {\n return this.next();\n }\n return Math.floor(this.next() * Math.floor(max));\n }\n\n /**\n * Reset generator to initial seed\n */\n reset(seed) {\n SeededRandom.initializeState(this.state, seed);\n this.warmUp();\n }\n}\n\nfunction createRNGContext(seed = 1) {\n const rng = new SeededRandom(seed);\n\n return {\n random: () => rng.next(),\n rand: (x) => rng.rand(x),\n randint: (x) => Math.floor(rng.rand(x) + 1),\n getRNG: () => rng,\n reset: (newSeed) => {\n if (newSeed !== undefined) {\n rng.reset(newSeed);\n } else {\n rng.reset(seed);\n }\n }\n };\n}\n\nfunction createDefaultRNGContext() {\n return {\n random: Math.random,\n rand: (x) => x < 1 ? Math.random() : Math.random() * Math.floor(x),\n randint: (x) => Math.floor((x < 1 ? Math.random() : Math.random() * Math.floor(x)) + 1),\n getRNG: () => null,\n reset: () => {}\n };\n}\n\nlet globalRNG = null;\n\nfunction initializeRNG(opts = {}) {\n if (opts.deterministic || opts.testMode) {\n globalRNG = createRNGContext(opts.seed || 12345);\n } else {\n globalRNG = createDefaultRNGContext();\n }\n\n if (opts.deterministic || opts.testMode) {\n\n // Override globals with our RNG\n window.rand = (x) => globalRNG.rand(x);\n window.randint = (x) => globalRNG.randint(x);\n Math.random = () => globalRNG.random();\n }\n\n return globalRNG;\n}\n\nfunction getRNG() {\n if (!globalRNG) {\n globalRNG = createDefaultRNGContext();\n }\n return globalRNG;\n}\n\nclass PresetEquationRunner {\n constructor(preset, globalVars, opts) {\n this.rng = getRNG();\n this.preset = preset;\n\n this.texsizeX = opts.texsizeX;\n this.texsizeY = opts.texsizeY;\n this.mesh_width = opts.mesh_width;\n this.mesh_height = opts.mesh_height;\n this.aspectx = opts.aspectx;\n this.aspecty = opts.aspecty;\n this.invAspectx = 1.0 / this.aspectx;\n this.invAspecty = 1.0 / this.aspecty;\n\n this.qs = Utils.range(1, 33).map((x) => `q${x}`);\n this.ts = Utils.range(1, 9).map((x) => `t${x}`);\n this.regs = Utils.range(100).map((x) => {\n if (x < 10) {\n return `reg0${x}`;\n }\n return `reg${x}`;\n });\n\n this.initializeEquations(globalVars);\n }\n\n initializeEquations(globalVars) {\n this.runVertEQs = this.preset.pixel_eqs !== \"\";\n\n this.mdVSQInit = null;\n this.mdVSRegs = null;\n this.mdVSFrame = null;\n this.mdVSUserKeys = null;\n this.mdVSFrameMap = null;\n\n this.mdVSShapes = null;\n this.mdVSUserKeysShapes = null;\n this.mdVSFrameMapShapes = null;\n\n this.mdVSWaves = null;\n this.mdVSUserKeysWaves = null;\n this.mdVSFrameMapWaves = null;\n\n this.mdVSQAfterFrame = null;\n\n this.gmegabuf = new Array(1048576).fill(0);\n\n const mdVSBase = {\n frame: globalVars.frame,\n time: globalVars.time,\n fps: globalVars.fps,\n bass: globalVars.bass,\n bass_att: globalVars.bass_att,\n mid: globalVars.mid,\n mid_att: globalVars.mid_att,\n treb: globalVars.treb,\n treb_att: globalVars.treb_att,\n meshx: this.mesh_width,\n meshy: this.mesh_height,\n aspectx: this.invAspectx,\n aspecty: this.invAspecty,\n pixelsx: this.texsizeX,\n pixelsy: this.texsizeY,\n gmegabuf: this.gmegabuf,\n };\n\n this.mdVS = Object.assign({}, this.preset.baseVals, mdVSBase);\n\n this.mdVS.megabuf = new Array(1048576).fill(0);\n this.mdVS.rand_start = new Float32Array([\n this.rng.random(),\n this.rng.random(),\n this.rng.random(),\n this.rng.random(),\n ]);\n this.mdVS.rand_preset = new Float32Array([\n this.rng.random(),\n this.rng.random(),\n this.rng.random(),\n this.rng.random(),\n ]);\n\n const nonUserKeys = this.qs.concat(this.regs, Object.keys(this.mdVS));\n\n const mdVSAfterInit = this.preset.init_eqs(Utils.cloneVars(this.mdVS));\n\n // qs need to be initialized to there init values every frame\n this.mdVSQInit = Utils.pick(mdVSAfterInit, this.qs);\n this.mdVSRegs = Utils.pick(mdVSAfterInit, this.regs);\n const initUserVars = Utils.pick(\n mdVSAfterInit,\n Object.keys(Utils.omit(mdVSAfterInit, nonUserKeys))\n );\n initUserVars.megabuf = mdVSAfterInit.megabuf;\n initUserVars.gmegabuf = mdVSAfterInit.gmegabuf;\n\n this.mdVSFrame = this.preset.frame_eqs(\n Object.assign({}, this.mdVS, this.mdVSQInit, this.mdVSRegs, initUserVars)\n );\n\n // user vars need to be copied between frames\n this.mdVSUserKeys = Object.keys(Utils.omit(this.mdVSFrame, nonUserKeys));\n\n // Determine vars to carry over between frames\n this.mdVSFrameMap = Utils.pick(this.mdVSFrame, this.mdVSUserKeys);\n\n // qs for shapes\n this.mdVSQAfterFrame = Utils.pick(this.mdVSFrame, this.qs);\n this.mdVSRegs = Utils.pick(this.mdVSFrame, this.regs);\n\n this.mdVSWaves = [];\n this.mdVSTWaveInits = [];\n this.mdVSUserKeysWaves = [];\n this.mdVSFrameMapWaves = [];\n if (this.preset.waves && this.preset.waves.length > 0) {\n for (let i = 0; i < this.preset.waves.length; i++) {\n const wave = this.preset.waves[i];\n const baseVals = wave.baseVals;\n if (baseVals.enabled !== 0) {\n let mdVSWave = Object.assign({}, baseVals, mdVSBase);\n\n const nonUserWaveKeys = this.qs.concat(\n this.ts,\n this.regs,\n Object.keys(mdVSWave)\n );\n\n Object.assign(mdVSWave, this.mdVSQAfterFrame, this.mdVSRegs);\n mdVSWave.megabuf = new Array(1048576).fill(0);\n\n if (wave.init_eqs) {\n mdVSWave = wave.init_eqs(mdVSWave);\n\n this.mdVSRegs = Utils.pick(mdVSWave, this.regs);\n\n // base vals need to be reset\n Object.assign(mdVSWave, baseVals);\n }\n this.mdVSWaves.push(mdVSWave);\n this.mdVSTWaveInits.push(Utils.pick(mdVSWave, this.ts));\n\n this.mdVSUserKeysWaves.push(\n Object.keys(Utils.omit(mdVSWave, nonUserWaveKeys))\n );\n this.mdVSFrameMapWaves.push(\n Utils.pick(mdVSWave, this.mdVSUserKeysWaves[i])\n );\n } else {\n this.mdVSWaves.push({});\n this.mdVSTWaveInits.push({});\n\n this.mdVSUserKeysWaves.push([]);\n this.mdVSFrameMapWaves.push({});\n }\n }\n }\n\n this.mdVSShapes = [];\n this.mdVSTShapeInits = [];\n this.mdVSUserKeysShapes = [];\n this.mdVSFrameMapShapes = [];\n if (this.preset.shapes && this.preset.shapes.length > 0) {\n for (let i = 0; i < this.preset.shapes.length; i++) {\n const shape = this.preset.shapes[i];\n const baseVals = shape.baseVals;\n if (baseVals.enabled !== 0) {\n let mdVSShape = Object.assign({}, baseVals, mdVSBase);\n\n const nonUserShapeKeys = this.qs.concat(\n this.ts,\n this.regs,\n Object.keys(mdVSShape)\n );\n\n Object.assign(mdVSShape, this.mdVSQAfterFrame, this.mdVSRegs);\n mdVSShape.megabuf = new Array(1048576).fill(0);\n\n if (shape.init_eqs) {\n mdVSShape = shape.init_eqs(mdVSShape);\n\n this.mdVSRegs = Utils.pick(mdVSShape, this.regs);\n\n // base vals need to be reset\n Object.assign(mdVSShape, baseVals);\n }\n this.mdVSShapes.push(mdVSShape);\n this.mdVSTShapeInits.push(Utils.pick(mdVSShape, this.ts));\n\n this.mdVSUserKeysShapes.push(\n Object.keys(Utils.omit(mdVSShape, nonUserShapeKeys))\n );\n this.mdVSFrameMapShapes.push(\n Utils.pick(mdVSShape, this.mdVSUserKeysShapes[i])\n );\n } else {\n this.mdVSShapes.push({});\n this.mdVSTShapeInits.push({});\n\n this.mdVSUserKeysShapes.push([]);\n this.mdVSFrameMapShapes.push({});\n }\n }\n }\n }\n\n updatePreset(preset, globalVars) {\n this.preset = preset;\n this.initializeEquations(globalVars);\n }\n\n updateGlobals(opts) {\n this.texsizeX = opts.texsizeX;\n this.texsizeY = opts.texsizeY;\n this.mesh_width = opts.mesh_width;\n this.mesh_height = opts.mesh_height;\n this.aspectx = opts.aspectx;\n this.aspecty = opts.aspecty;\n this.invAspectx = 1.0 / this.aspectx;\n this.invAspecty = 1.0 / this.aspecty;\n }\n\n runFrameEquations(globalVars) {\n this.mdVSFrame = Object.assign(\n {},\n this.mdVS,\n this.mdVSQInit,\n this.mdVSFrameMap,\n globalVars\n );\n\n this.mdVSFrame = this.preset.frame_eqs(this.mdVSFrame);\n\n this.mdVSFrameMap = Utils.pick(this.mdVSFrame, this.mdVSUserKeys);\n this.mdVSQAfterFrame = Utils.pick(this.mdVSFrame, this.qs);\n\n return this.mdVSFrame;\n }\n\n runPixelEquations(mdVSVertex) {\n return this.preset.pixel_eqs(mdVSVertex);\n }\n\n runShapeFrameEquations(shapeIdx, mdVSShape) {\n return this.preset.shapes[shapeIdx].frame_eqs(mdVSShape);\n }\n\n runWaveFrameEquations(waveIdx, mdVSWave) {\n return this.preset.waves[waveIdx].frame_eqs(mdVSWave);\n }\n\n runWavePointEquations(waveIdx, mdVSWaveFrame) {\n return this.preset.waves[waveIdx].point_eqs(mdVSWaveFrame);\n }\n}\n\nclass PresetEquationRunnerWASM {\n constructor(preset, globalVars, opts) {\n this.rng = getRNG();\n this.preset = preset;\n\n this.texsizeX = opts.texsizeX;\n this.texsizeY = opts.texsizeY;\n this.mesh_width = opts.mesh_width;\n this.mesh_height = opts.mesh_height;\n this.aspectx = opts.aspectx;\n this.aspecty = opts.aspecty;\n this.invAspectx = 1.0 / this.aspectx;\n this.invAspecty = 1.0 / this.aspecty;\n\n this.qs = Utils.range(1, 33).map((x) => `q${x}`);\n this.ts = Utils.range(1, 9).map((x) => `t${x}`);\n this.regs = Utils.range(100).map((x) => {\n if (x < 10) {\n return `reg0${x}`;\n }\n return `reg${x}`;\n });\n\n this.globalKeys = [\n \"frame\",\n \"time\",\n \"fps\",\n \"bass\",\n \"bass_att\",\n \"mid\",\n \"mid_att\",\n \"treb\",\n \"treb_att\",\n \"meshx\",\n \"meshy\",\n \"aspectx\",\n \"aspecty\",\n \"pixelsx\",\n \"pixelsy\",\n ];\n\n this.frameKeys = [\n \"decay\",\n \"wave_a\",\n \"wave_r\",\n \"wave_g\",\n \"wave_b\",\n \"wave_x\",\n \"wave_y\",\n \"wave_scale\",\n \"wave_smoothing\",\n \"wave_mode\",\n \"old_wave_mode\",\n \"wave_mystery\",\n \"ob_size\",\n \"ob_r\",\n \"ob_g\",\n \"ob_b\",\n \"ob_a\",\n \"ib_size\",\n \"ib_r\",\n \"ib_g\",\n \"ib_b\",\n \"ib_a\",\n \"mv_x\",\n \"mv_y\",\n \"mv_dx\",\n \"mv_dy\",\n \"mv_l\",\n \"mv_r\",\n \"mv_g\",\n \"mv_b\",\n \"mv_a\",\n \"echo_zoom\",\n \"echo_alpha\",\n \"echo_orient\",\n \"wave_dots\",\n \"wave_thick\",\n \"additivewave\",\n \"wave_brighten\",\n \"modwavealphabyvolume\",\n \"modwavealphastart\",\n \"modwavealphaend\",\n \"darken_center\",\n \"gammaadj\",\n \"warp\",\n \"warpanimspeed\",\n \"warpscale\",\n \"zoom\",\n \"zoomexp\",\n \"rot\",\n \"cx\",\n \"cy\",\n \"dx\",\n \"dy\",\n \"sx\",\n \"sy\",\n \"fshader\",\n \"wrap\",\n \"invert\",\n \"brighten\",\n \"darken\",\n \"solarize\",\n \"bmotionvectorson\",\n \"b1n\",\n \"b2n\",\n \"b3n\",\n \"b1x\",\n \"b2x\",\n \"b3x\",\n \"b1ed\",\n ];\n\n this.waveFrameKeys = [\n \"samples\",\n \"sep\",\n \"scaling\",\n \"spectrum\",\n \"smoothing\",\n \"r\",\n \"g\",\n \"b\",\n \"a\",\n ];\n\n this.waveFrameInputKeys = [\"samples\", \"r\", \"g\", \"b\", \"a\"];\n\n this.initializeEquations(globalVars);\n }\n\n getQVars(pool) {\n return Utils.pickWasm(this.preset.globalPools[pool], this.qs);\n }\n\n getTVars(pool) {\n return Utils.pickWasm(this.preset.globalPools[pool], this.ts);\n }\n\n initializeEquations(globalVars) {\n this.runVertEQs = !!this.preset.pixel_eqs;\n\n this.mdVSQInit = null;\n this.mdVSQAfterFrame = null;\n\n const mdVSBase = {\n frame: globalVars.frame,\n time: globalVars.time,\n fps: globalVars.fps,\n bass: globalVars.bass,\n bass_att: globalVars.bass_att,\n mid: globalVars.mid,\n mid_att: globalVars.mid_att,\n treb: globalVars.treb,\n treb_att: globalVars.treb_att,\n meshx: this.mesh_width,\n meshy: this.mesh_height,\n aspectx: this.invAspectx,\n aspecty: this.invAspecty,\n pixelsx: this.texsizeX,\n pixelsy: this.texsizeY,\n };\n\n this.mdVS = Object.assign({}, this.preset.baseVals, mdVSBase);\n\n // eslint-disable-next-line max-len\n Utils.setWasm(\n this.preset.globalPools.perFrame,\n this.mdVS,\n Object.keys(this.mdVS)\n );\n\n this.rand_start = new Float32Array([\n this.rng.random(),\n this.rng.random(),\n this.rng.random(),\n this.rng.random(),\n ]);\n this.rand_preset = new Float32Array([\n this.rng.random(),\n this.rng.random(),\n this.rng.random(),\n this.rng.random(),\n ]);\n\n this.preset.init_eqs();\n\n // qs need to be initialized to there init values every frame\n this.mdVSQInit = this.getQVars(\"perFrame\");\n\n this.preset.frame_eqs();\n\n this.mdVSQAfterFrame = this.getQVars(\"perFrame\");\n\n this.mdVSTWaveInits = [];\n if (this.preset.waves && this.preset.waves.length > 0) {\n for (let i = 0; i < this.preset.waves.length; i++) {\n const wave = this.preset.waves[i];\n const baseVals = wave.baseVals;\n if (baseVals.enabled !== 0) {\n // eslint-disable-next-line max-len\n Utils.setWasm(\n this.preset.globalPools[`wavePerFrame${i}`],\n baseVals,\n Object.keys(baseVals)\n );\n if (wave.init_eqs) {\n wave.init_eqs();\n\n // base vals need to be reset\n // eslint-disable-next-line max-len\n Utils.setWasm(\n this.preset.globalPools[`wavePerFrame${i}`],\n baseVals,\n Object.keys(baseVals)\n );\n }\n this.mdVSTWaveInits.push(this.getTVars(`wavePerFrame${i}`));\n } else {\n this.mdVSTWaveInits.push({});\n }\n }\n }\n\n this.mdVSTShapeInits = [];\n if (this.preset.shapes && this.preset.shapes.length > 0) {\n for (let i = 0; i < this.preset.shapes.length; i++) {\n const shape = this.preset.shapes[i];\n const baseVals = shape.baseVals;\n if (baseVals.enabled !== 0) {\n // eslint-disable-next-line max-len\n Utils.setWasm(\n this.preset.globalPools[`shapePerFrame${i}`],\n baseVals,\n Object.keys(baseVals)\n );\n if (shape.init_eqs) {\n shape.init_eqs();\n\n // base vals need to be reset\n // eslint-disable-next-line max-len\n Utils.setWasm(\n this.preset.globalPools[`shapePerFrame${i}`],\n baseVals,\n Object.keys(baseVals)\n );\n }\n this.mdVSTShapeInits.push(this.getTVars(`shapePerFrame${i}`));\n } else {\n this.mdVSTShapeInits.push({});\n }\n }\n }\n }\n\n updatePreset(preset, globalVars) {\n this.preset = preset;\n this.initializeEquations(globalVars);\n }\n\n updateGlobals(opts) {\n this.texsizeX = opts.texsizeX;\n this.texsizeY = opts.texsizeY;\n this.mesh_width = opts.mesh_width;\n this.mesh_height = opts.mesh_height;\n this.aspectx = opts.aspectx;\n this.aspecty = opts.aspecty;\n this.invAspectx = 1.0 / this.aspectx;\n this.invAspecty = 1.0 / this.aspecty;\n }\n\n runFrameEquations(globalVars) {\n Utils.setWasm(this.preset.globalPools.perFrame, this.mdVS, this.frameKeys);\n Utils.setWasm(this.preset.globalPools.perFrame, this.mdVSQInit, this.qs);\n Utils.setWasm(\n this.preset.globalPools.perFrame,\n globalVars,\n this.globalKeys\n );\n\n this.preset.frame_eqs();\n this.preset.save_qs();\n\n this.mdVSQAfterFrame = this.getQVars(\"perFrame\");\n\n // eslint-disable-next-line max-len\n const mdVSFrame = Utils.pickWasm(this.preset.globalPools.perFrame, [\n ...this.frameKeys,\n ...this.globalKeys,\n ]);\n mdVSFrame.rand_preset = this.rand_preset;\n mdVSFrame.rand_start = this.rand_start;\n\n return mdVSFrame;\n }\n\n /* eslint-disable max-len */\n runWaveFrameEquations(waveIdx, globalVars) {\n const baseVals = this.preset.waves[waveIdx].baseVals;\n Utils.setWasm(\n this.preset.globalPools[`wavePerFrame${waveIdx}`],\n baseVals,\n this.waveFrameInputKeys\n );\n Utils.setWasm(\n this.preset.globalPools[`wavePerFrame${waveIdx}`],\n this.mdVSQAfterFrame,\n this.qs\n );\n Utils.setWasm(\n this.preset.globalPools[`wavePerFrame${waveIdx}`],\n this.mdVSTWaveInits[waveIdx],\n this.ts\n );\n Utils.setWasm(\n this.preset.globalPools[`wavePerFrame${waveIdx}`],\n globalVars,\n this.globalKeys\n );\n this.preset.waves[waveIdx].frame_eqs();\n return Utils.pickWasm(\n this.preset.globalPools[`wavePerFrame${waveIdx}`],\n this.waveFrameKeys\n );\n }\n /* eslint-enable max-len */\n}\n\nconst lineMatcher = /uniform sampler2D sampler_(?:.+?);/g;\nconst samplerMatcher = /uniform sampler2D sampler_(.+?);/;\n\nclass ShaderUtils {\n static getShaderParts(t) {\n const sbIndex = t.indexOf(\"shader_body\");\n if (t && sbIndex > -1) {\n const beforeShaderBody = t.substring(0, sbIndex);\n const afterShaderBody = t.substring(sbIndex);\n const firstCurly = afterShaderBody.indexOf(\"{\");\n const lastCurly = afterShaderBody.lastIndexOf(\"}\");\n const shaderBody = afterShaderBody.substring(firstCurly + 1, lastCurly);\n return [beforeShaderBody, shaderBody];\n }\n\n return [\"\", t];\n }\n\n static getFragmentFloatPrecision(gl) {\n if (\n gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.HIGH_FLOAT).precision >\n 0\n ) {\n return \"highp\";\n } else if (\n gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.MEDIUM_FLOAT)\n .precision > 0\n ) {\n return \"mediump\";\n }\n return \"lowp\";\n }\n\n static getUserSamplers(text) {\n const samplers = [];\n const lineMatches = text.match(lineMatcher);\n if (lineMatches && lineMatches.length > 0) {\n for (let i = 0; i < lineMatches.length; i++) {\n const samplerMatches = lineMatches[i].match(samplerMatcher);\n if (samplerMatches && samplerMatches.length > 0) {\n const sampler = samplerMatches[1];\n samplers.push({ sampler });\n }\n }\n }\n return samplers;\n }\n}\n\nclass WaveUtils {\n /* eslint-disable no-param-reassign */\n static smoothWave(positions, positionsSmoothed, nVertsIn, zCoord = false) {\n const c1 = -0.15;\n const c2 = 1.15;\n const c3 = 1.15;\n const c4 = -0.15;\n const invSum = 1.0 / (c1 + c2 + c3 + c4);\n\n let j = 0;\n\n let iBelow = 0;\n let iAbove;\n let iAbove2 = 1;\n for (let i = 0; i < nVertsIn - 1; i++) {\n iAbove = iAbove2;\n iAbove2 = Math.min(nVertsIn - 1, i + 2);\n\n for (let k = 0; k < 3; k++) {\n positionsSmoothed[j * 3 + k] = positions[i * 3 + k];\n }\n\n if (zCoord) {\n for (let k = 0; k < 3; k++) {\n positionsSmoothed[(j + 1) * 3 + k] =\n (c1 * positions[iBelow * 3 + k] +\n c2 * positions[i * 3 + k] +\n c3 * positions[iAbove * 3 + k] +\n c4 * positions[iAbove2 * 3 + k]) *\n invSum;\n }\n } else {\n for (let k = 0; k < 2; k++) {\n positionsSmoothed[(j + 1) * 3 + k] =\n (c1 * positions[iBelow * 3 + k] +\n c2 * positions[i * 3 + k] +\n c3 * positions[iAbove * 3 + k] +\n c4 * positions[iAbove2 * 3 + k]) *\n invSum;\n }\n positionsSmoothed[(j + 1) * 3 + 2] = 0;\n }\n\n iBelow = i;\n j += 2;\n }\n\n for (let k = 0; k < 3; k++) {\n positionsSmoothed[j * 3 + k] = positions[(nVertsIn - 1) * 3 + k];\n }\n }\n\n static smoothWaveAndColor(\n positions,\n colors,\n positionsSmoothed,\n colorsSmoothed,\n nVertsIn,\n zCoord = false\n ) {\n const c1 = -0.15;\n const c2 = 1.15;\n const c3 = 1.15;\n const c4 = -0.15;\n const invSum = 1.0 / (c1 + c2 + c3 + c4);\n\n let j = 0;\n\n let iBelow = 0;\n let iAbove;\n let iAbove2 = 1;\n for (let i = 0; i < nVertsIn - 1; i++) {\n iAbove = iAbove2;\n iAbove2 = Math.min(nVertsIn - 1, i + 2);\n\n for (let k = 0; k < 3; k++) {\n positionsSmoothed[j * 3 + k] = positions[i * 3 + k];\n }\n\n if (zCoord) {\n for (let k = 0; k < 3; k++) {\n positionsSmoothed[(j + 1) * 3 + k] =\n (c1 * positions[iBelow * 3 + k] +\n c2 * positions[i * 3 + k] +\n c3 * positions[iAbove * 3 + k] +\n c4 * positions[iAbove2 * 3 + k]) *\n invSum;\n }\n } else {\n for (let k = 0; k < 2; k++) {\n positionsSmoothed[(j + 1) * 3 + k] =\n (c1 * positions[iBelow * 3 + k] +\n c2 * positions[i * 3 + k] +\n c3 * positions[iAbove * 3 + k] +\n c4 * positions[iAbove2 * 3 + k]) *\n invSum;\n }\n positionsSmoothed[(j + 1) * 3 + 2] = 0;\n }\n\n for (let k = 0; k < 4; k++) {\n colorsSmoothed[j * 4 + k] = colors[i * 4 + k];\n colorsSmoothed[(j + 1) * 4 + k] = colors[i * 4 + k];\n }\n\n iBelow = i;\n j += 2;\n }\n\n for (let k = 0; k < 3; k++) {\n positionsSmoothed[j * 3 + k] = positions[(nVertsIn - 1) * 3 + k];\n }\n\n for (let k = 0; k < 4; k++) {\n colorsSmoothed[j * 4 + k] = colors[(nVertsIn - 1) * 4 + k];\n }\n }\n\n /* eslint-enable no-param-reassign */\n}\n\nclass BasicWaveform {\n constructor(gl, opts = {}) {\n this.gl = gl;\n\n const numAudioSamples = 512;\n this.positions = new Float32Array(numAudioSamples * 3);\n this.positions2 = new Float32Array(numAudioSamples * 3);\n this.oldPositions = new Float32Array(numAudioSamples * 3);\n this.oldPositions2 = new Float32Array(numAudioSamples * 3);\n this.smoothedPositions = new Float32Array((numAudioSamples * 2 - 1) * 3);\n this.smoothedPositions2 = new Float32Array((numAudioSamples * 2 - 1) * 3);\n this.color = [0, 0, 0, 1];\n\n this.texsizeX = opts.texsizeX;\n this.texsizeY = opts.texsizeY;\n this.aspectx = opts.aspectx;\n this.aspecty = opts.aspecty;\n this.invAspectx = 1.0 / this.aspectx;\n this.invAspecty = 1.0 / this.aspecty;\n\n this.floatPrecision = ShaderUtils.getFragmentFloatPrecision(this.gl);\n this.createShader();\n\n this.vertexBuf = this.gl.createBuffer();\n }\n\n updateGlobals(opts) {\n this.texsizeX = opts.texsizeX;\n this.texsizeY = opts.texsizeY;\n this.aspectx = opts.aspectx;\n this.aspecty = opts.aspecty;\n this.invAspectx = 1.0 / this.aspectx;\n this.invAspecty = 1.0 / this.aspecty;\n }\n\n createShader() {\n this.shaderProgram = this.gl.createProgram();\n\n const vertShader = this.gl.createShader(this.gl.VERTEX_SHADER);\n this.gl.shaderSource(\n vertShader,\n `\n #version 300 es\n in vec3 aPos;\n uniform vec2 thickOffset;\n void main(void) {\n gl_Position = vec4(aPos + vec3(thickOffset, 0.0), 1.0);\n }\n `.trim()\n );\n this.gl.compileShader(vertShader);\n\n const fragShader = this.gl.createShader(this.gl.FRAGMENT_SHADER);\n this.gl.shaderSource(\n fragShader,\n `\n #version 300 es\n precision ${this.floatPrecision} float;\n precision highp int;\n precision mediump sampler2D;\n out vec4 fragColor;\n uniform vec4 u_color;\n void main(void) {\n fragColor = u_color;\n }\n `.trim()\n );\n this.gl.compileShader(fragShader);\n\n this.gl.attachShader(this.shaderProgram, vertShader);\n this.gl.attachShader(this.shaderProgram, fragShader);\n this.gl.linkProgram(this.shaderProgram);\n\n this.aPosLoc = this.gl.getAttribLocation(this.shaderProgram, \"aPos\");\n\n this.colorLoc = this.gl.getUniformLocation(this.shaderProgram, \"u_color\");\n this.thickOffsetLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"thickOffset\"\n );\n }\n\n static processWaveform(timeArray, mdVSFrame) {\n const waveform = [];\n\n const scale = mdVSFrame.wave_scale / 128.0;\n const smooth = mdVSFrame.wave_smoothing;\n const smooth2 = scale * (1.0 - smooth);\n\n waveform.push(timeArray[0] * scale);\n for (let i = 1; i < timeArray.length; i++) {\n waveform.push(timeArray[i] * smooth2 + waveform[i - 1] * smooth);\n }\n\n return waveform;\n }\n\n generateWaveform(blending, blendProgress, timeArrayL, timeArrayR, mdVSFrame) {\n let alpha = mdVSFrame.wave_a;\n const vol = (mdVSFrame.bass + mdVSFrame.mid + mdVSFrame.treb) / 3.0;\n\n if (vol > -0.01 && alpha > 0.001 && timeArrayL.length > 0) {\n const waveL = BasicWaveform.processWaveform(timeArrayL, mdVSFrame);\n const waveR = BasicWaveform.processWaveform(timeArrayR, mdVSFrame);\n\n const newWaveMode = Math.floor(mdVSFrame.wave_mode) % 8;\n const oldWaveMode = Math.floor(mdVSFrame.old_wave_mode) % 8;\n\n const wavePosX = mdVSFrame.wave_x * 2.0 - 1.0;\n const wavePosY = mdVSFrame.wave_y * 2.0 - 1.0;\n\n this.numVert = 0;\n this.oldNumVert = 0;\n\n const its = blending && newWaveMode !== oldWaveMode ? 2 : 1;\n for (let it = 0; it < its; it++) {\n const waveMode = it === 0 ? newWaveMode : oldWaveMode;\n\n let fWaveParam2 = mdVSFrame.wave_mystery;\n if (\n (waveMode === 0 || waveMode === 1 || waveMode === 4) &&\n (fWaveParam2 < -1 || fWaveParam2 > 1)\n ) {\n fWaveParam2 = fWaveParam2 * 0.5 + 0.5;\n fWaveParam2 -= Math.floor(fWaveParam2);\n fWaveParam2 = Math.abs(fWaveParam2);\n fWaveParam2 = fWaveParam2 * 2 - 1;\n }\n\n let numVert;\n let positions;\n let positions2;\n if (it === 0) {\n positions = this.positions;\n positions2 = this.positions2;\n } else {\n positions = this.oldPositions;\n positions2 = this.oldPositions2;\n }\n\n alpha = mdVSFrame.wave_a;\n if (waveMode === 0) {\n if (mdVSFrame.modwavealphabyvolume > 0) {\n const alphaDiff =\n mdVSFrame.modwavealphaend - mdVSFrame.modwavealphastart;\n alpha *= (vol - mdVSFrame.modwavealphastart) / alphaDiff;\n }\n alpha = Math.clamp(alpha, 0, 1);\n\n numVert = Math.floor(waveL.length / 2) + 1;\n const numVertInv = 1.0 / (numVert - 1);\n const sampleOffset = Math.floor((waveL.length - numVert) / 2);\n for (let i = 0; i < numVert - 1; i++) {\n let rad = 0.5 + 0.4 * waveR[i + sampleOffset] + fWaveParam2;\n const ang = i * numVertInv * 2 * Math.PI + mdVSFrame.time * 0.2;\n\n if (i < numVert / 10) {\n let mix = i / (numVert * 0.1);\n mix = 0.5 - 0.5 * Math.cos(mix * Math.PI);\n const rad2 =\n 0.5 + 0.4 * waveR[i + numVert + sampleOffset] + fWaveParam2;\n rad = (1.0 - mix) * rad2 + rad * mix;\n }\n\n positions[i * 3 + 0] =\n rad * Math.cos(ang) * this.aspecty + wavePosX;\n positions[i * 3 + 1] =\n rad * Math.sin(ang) * this.aspectx + wavePosY;\n positions[i * 3 + 2] = 0;\n }\n\n // connect the loop\n positions[(numVert - 1) * 3 + 0] = positions[0];\n positions[(numVert - 1) * 3 + 1] = positions[1];\n positions[(numVert - 1) * 3 + 2] = 0;\n } else if (waveMode === 1) {\n alpha *= 1.25;\n if (mdVSFrame.modwavealphabyvolume > 0) {\n const alphaDiff =\n mdVSFrame.modwavealphaend - mdVSFrame.modwavealphastart;\n alpha *= (vol - mdVSFrame.modwavealphastart) / alphaDiff;\n }\n alpha = Math.clamp(alpha, 0, 1);\n\n numVert = Math.floor(waveL.length / 2);\n for (let i = 0; i < numVert; i++) {\n const rad = 0.53 + 0.43 * waveR[i] + fWaveParam2;\n const ang = waveL[i + 32] * 0.5 * Math.PI + mdVSFrame.time * 2.3;\n\n positions[i * 3 + 0] =\n rad * Math.cos(ang) * this.aspecty + wavePosX;\n positions[i * 3 + 1] =\n rad * Math.sin(ang) * this.aspectx + wavePosY;\n positions[i * 3 + 2] = 0;\n }\n } else if (waveMode === 2) {\n if (this.texsizeX < 1024) {\n alpha *= 0.09;\n } else if (this.texsizeX >= 1024 && this.texsizeX < 2048) {\n alpha *= 0.11;\n } else {\n alpha *= 0.13;\n }\n\n if (mdVSFrame.modwavealphabyvolume > 0) {\n const alphaDiff =\n mdVSFrame.modwavealphaend - mdVSFrame.modwavealphastart;\n alpha *= (vol - mdVSFrame.modwavealphastart) / alphaDiff;\n }\n alpha = Math.clamp(alpha, 0, 1);\n\n numVert = waveL.length;\n for (let i = 0; i < waveL.length; i++) {\n positions[i * 3 + 0] = waveR[i] * this.aspecty + wavePosX;\n positions[i * 3 + 1] =\n waveL[(i + 32) % waveL.length] * this.aspectx + wavePosY;\n positions[i * 3 + 2] = 0;\n }\n } else if (waveMode === 3) {\n if (this.texsizeX < 1024) {\n alpha *= 0.15;\n } else if (this.texsizeX >= 1024 && this.texsizeX < 2048) {\n alpha *= 0.22;\n } else {\n alpha *= 0.33;\n }\n\n alpha *= 1.3;\n alpha *= mdVSFrame.treb * mdVSFrame.treb; // should be treb_imm\n\n if (mdVSFrame.modwavealphabyvolume > 0) {\n const alphaDiff =\n mdVSFrame.modwavealphaend - mdVSFrame.modwavealphastart;\n alpha *= (vol - mdVSFrame.modwavealphastart) / alphaDiff;\n }\n alpha = Math.clamp(alpha, 0, 1);\n\n numVert = waveL.length;\n for (let i = 0; i < waveL.length; i++) {\n positions[i * 3 + 0] = waveR[i] * this.aspecty + wavePosX;\n positions[i * 3 + 1] =\n waveL[(i + 32) % waveL.length] * this.aspectx + wavePosY;\n positions[i * 3 + 2] = 0;\n }\n } else if (waveMode === 4) {\n if (mdVSFrame.modwavealphabyvolume > 0) {\n const alphaDiff =\n mdVSFrame.modwavealphaend - mdVSFrame.modwavealphastart;\n alpha *= (vol - mdVSFrame.modwavealphastart) / alphaDiff;\n }\n alpha = Math.clamp(alpha, 0, 1);\n\n numVert = waveL.length;\n if (numVert > this.texsizeX / 3) {\n numVert = Math.floor(this.texsizeX / 3);\n }\n const numVertInv = 1.0 / numVert;\n const sampleOffset = Math.floor((waveL.length - numVert) / 2);\n\n const w1 = 0.45 + 0.5 * (fWaveParam2 * 0.5 + 0.5);\n const w2 = 1.0 - w1;\n for (let i = 0; i < numVert; i++) {\n let x =\n 2.0 * i * numVertInv +\n (wavePosX - 1) +\n waveR[(i + 25 + sampleOffset) % waveL.length] * 0.44;\n let y = waveL[i + sampleOffset] * 0.47 + wavePosY;\n\n // momentum\n if (i > 1) {\n x =\n x * w2 +\n w1 *\n (positions[(i - 1) * 3 + 0] * 2.0 -\n positions[(i - 2) * 3 + 0]);\n y =\n y * w2 +\n w1 *\n (positions[(i - 1) * 3 + 1] * 2.0 -\n positions[(i - 2) * 3 + 1]);\n }\n\n positions[i * 3 + 0] = x;\n positions[i * 3 + 1] = y;\n positions[i * 3 + 2] = 0;\n }\n } else if (waveMode === 5) {\n if (this.texsizeX < 1024) {\n alpha *= 0.09;\n } else if (this.texsizeX >= 1024 && this.texsizeX < 2048) {\n alpha *= 0.11;\n } else {\n alpha *= 0.13;\n }\n\n if (mdVSFrame.modwavealphabyvolume > 0) {\n const alphaDiff =\n mdVSFrame.modwavealphaend - mdVSFrame.modwavealphastart;\n alpha *= (vol - mdVSFrame.modwavealphastart) / alphaDiff;\n }\n alpha = Math.clamp(alpha, 0, 1);\n\n const cosRot = Math.cos(mdVSFrame.time * 0.3);\n const sinRot = Math.sin(mdVSFrame.time * 0.3);\n\n numVert = waveL.length;\n for (let i = 0; i < waveL.length; i++) {\n const ioff = (i + 32) % waveL.length;\n const x0 = waveR[i] * waveL[ioff] + waveL[i] * waveR[ioff];\n const y0 = waveR[i] * waveR[i] - waveL[ioff] * waveL[ioff];\n\n positions[i * 3 + 0] =\n (x0 * cosRot - y0 * sinRot) * (this.aspecty + wavePosX);\n positions[i * 3 + 1] =\n (x0 * sinRot + y0 * cosRot) * (this.aspectx + wavePosY);\n positions[i * 3 + 2] = 0;\n }\n } else if (waveMode === 6 || waveMode === 7) {\n if (mdVSFrame.modwavealphabyvolume > 0) {\n const alphaDiff =\n mdVSFrame.modwavealphaend - mdVSFrame.modwavealphastart;\n alpha *= (vol - mdVSFrame.modwavealphastart) / alphaDiff;\n }\n alpha = Math.clamp(alpha, 0, 1);\n\n numVert = Math.floor(waveL.length / 2);\n if (numVert > this.texsizeX / 3) {\n numVert = Math.floor(this.texsizeX / 3);\n }\n const sampleOffset = Math.floor((waveL.length - numVert) / 2);\n\n const ang = Math.PI * 0.5 * fWaveParam2;\n let dx = Math.cos(ang);\n let dy = Math.sin(ang);\n\n const edgex = [\n wavePosX * Math.cos(ang + Math.PI * 0.5) - dx * 3.0,\n wavePosX * Math.cos(ang + Math.PI * 0.5) + dx * 3.0,\n ];\n const edgey = [\n wavePosX * Math.sin(ang + Math.PI * 0.5) - dy * 3.0,\n wavePosX * Math.sin(ang + Math.PI * 0.5) + dy * 3.0,\n ];\n\n for (let i = 0; i < 2; i++) {\n for (let j = 0; j < 4; j++) {\n let t;\n let bClip = false;\n\n switch (j) {\n case 0:\n if (edgex[i] > 1.1) {\n t = (1.1 - edgex[1 - i]) / (edgex[i] - edgex[1 - i]);\n bClip = true;\n }\n break;\n case 1:\n if (edgex[i] < -1.1) {\n t = (-1.1 - edgex[1 - i]) / (edgex[i] - edgex[1 - i]);\n bClip = true;\n }\n break;\n case 2:\n if (edgey[i] > 1.1) {\n t = (1.1 - edgey[1 - i]) / (edgey[i] - edgey[1 - i]);\n bClip = true;\n }\n break;\n case 3:\n if (edgey[i] < -1.1) {\n t = (-1.1 - edgey[1 - i]) / (edgey[i] - edgey[1 - i]);\n bClip = true;\n }\n break;\n }\n\n if (bClip) {\n const dxi = edgex[i] - edgex[1 - i];\n const dyi = edgey[i] - edgey[1 - i];\n edgex[i] = edgex[1 - i] + dxi * t;\n edgey[i] = edgey[1 - i] + dyi * t;\n }\n }\n }\n\n dx = (edgex[1] - edgex[0]) / numVert;\n dy = (edgey[1] - edgey[0]) / numVert;\n\n const ang2 = Math.atan2(dy, dx);\n const perpDx = Math.cos(ang2 + Math.PI * 0.5);\n const perpDy = Math.sin(ang2 + Math.PI * 0.5);\n\n if (waveMode === 6) {\n for (let i = 0; i < numVert; i++) {\n const sample = waveL[i + sampleOffset];\n positions[i * 3 + 0] = edgex[0] + dx * i + perpDx * 0.25 * sample;\n positions[i * 3 + 1] = edgey[0] + dy * i + perpDy * 0.25 * sample;\n positions[i * 3 + 2] = 0;\n }\n } else if (waveMode === 7) {\n const sep = (wavePosY * 0.5 + 0.5) ** 2;\n for (let i = 0; i < numVert; i++) {\n const sample = waveL[i + sampleOffset];\n positions[i * 3 + 0] =\n edgex[0] + dx * i + perpDx * (0.25 * sample + sep);\n positions[i * 3 + 1] =\n edgey[0] + dy * i + perpDy * (0.25 * sample + sep);\n positions[i * 3 + 2] = 0;\n }\n\n for (let i = 0; i < numVert; i++) {\n const sample = waveR[i + sampleOffset];\n positions2[i * 3 + 0] =\n edgex[0] + dx * i + perpDx * (0.25 * sample - sep);\n positions2[i * 3 + 1] =\n edgey[0] + dy * i + perpDy * (0.25 * sample - sep);\n positions2[i * 3 + 2] = 0;\n }\n }\n }\n\n if (it === 0) {\n this.positions = positions;\n this.positions2 = positions2;\n this.numVert = numVert;\n this.alpha = alpha;\n } else {\n this.oldPositions = positions;\n this.oldPositions2 = positions2;\n this.oldNumVert = numVert;\n this.oldAlpha = alpha;\n }\n }\n\n const mix = 0.5 - 0.5 * Math.cos(blendProgress * Math.PI);\n const mix2 = 1 - mix;\n\n if (this.oldNumVert > 0) {\n alpha = mix * this.alpha + mix2 * this.oldAlpha;\n }\n\n let r = Math.clamp(mdVSFrame.wave_r, 0, 1);\n let g = Math.clamp(mdVSFrame.wave_g, 0, 1);\n let b = Math.clamp(mdVSFrame.wave_b, 0, 1);\n\n if (mdVSFrame.wave_brighten !== 0) {\n const maxc = Math.max(r, g, b);\n if (maxc > 0.01) {\n r /= maxc;\n g /= maxc;\n b /= maxc;\n }\n }\n\n this.color = [r, g, b, alpha];\n\n if (this.oldNumVert > 0) {\n if (newWaveMode === 7) {\n const m = (this.oldNumVert - 1) / (this.numVert * 2);\n for (let i = 0; i < this.numVert; i++) {\n const fIdx = i * m;\n const nIdx = Math.floor(fIdx);\n const t = fIdx - nIdx;\n\n const x =\n this.oldPositions[nIdx * 3 + 0] * (1 - t) +\n this.oldPositions[(nIdx + 1) * 3 + 0] * t;\n const y =\n this.oldPositions[nIdx * 3 + 1] * (1 - t) +\n this.oldPositions[(nIdx + 1) * 3 + 1] * t;\n\n this.positions[i * 3 + 0] =\n this.positions[i * 3 + 0] * mix + x * mix2;\n this.positions[i * 3 + 1] =\n this.positions[i * 3 + 1] * mix + y * mix2;\n this.positions[i * 3 + 2] = 0;\n }\n\n for (let i = 0; i < this.numVert; i++) {\n const fIdx = (i + this.numVert) * m;\n const nIdx = Math.floor(fIdx);\n const t = fIdx - nIdx;\n\n const x =\n this.oldPositions[nIdx * 3 + 0] * (1 - t) +\n this.oldPositions[(nIdx + 1) * 3 + 0] * t;\n const y =\n this.oldPositions[nIdx * 3 + 1] * (1 - t) +\n this.oldPositions[(nIdx + 1) * 3 + 1] * t;\n\n this.positions2[i * 3 + 0] =\n this.positions2[i * 3 + 0] * mix + x * mix2;\n this.positions2[i * 3 + 1] =\n this.positions2[i * 3 + 1] * mix + y * mix2;\n this.positions2[i * 3 + 2] = 0;\n }\n } else if (oldWaveMode === 7) {\n const halfNumVert = this.numVert / 2;\n const m = (this.oldNumVert - 1) / halfNumVert;\n for (let i = 0; i < halfNumVert; i++) {\n const fIdx = i * m;\n const nIdx = Math.floor(fIdx);\n const t = fIdx - nIdx;\n\n const x =\n this.oldPositions[nIdx * 3 + 0] * (1 - t) +\n this.oldPositions[(nIdx + 1) * 3 + 0] * t;\n const y =\n this.oldPositions[nIdx * 3 + 1] * (1 - t) +\n this.oldPositions[(nIdx + 1) * 3 + 1] * t;\n\n this.positions[i * 3 + 0] =\n this.positions[i * 3 + 0] * mix + x * mix2;\n this.positions[i * 3 + 1] =\n this.positions[i * 3 + 1] * mix + y * mix2;\n this.positions[i * 3 + 2] = 0;\n }\n\n for (let i = 0; i < halfNumVert; i++) {\n const fIdx = i * m;\n const nIdx = Math.floor(fIdx);\n const t = fIdx - nIdx;\n\n const x =\n this.oldPositions2[nIdx * 3 + 0] * (1 - t) +\n this.oldPositions2[(nIdx + 1) * 3 + 0] * t;\n const y =\n this.oldPositions2[nIdx * 3 + 1] * (1 - t) +\n this.oldPositions2[(nIdx + 1) * 3 + 1] * t;\n\n this.positions2[i * 3 + 0] =\n this.positions[(i + halfNumVert) * 3 + 0] * mix + x * mix2;\n this.positions2[i * 3 + 1] =\n this.positions[(i + halfNumVert) * 3 + 1] * mix + y * mix2;\n this.positions2[i * 3 + 2] = 0;\n }\n } else {\n const m = (this.oldNumVert - 1) / this.numVert;\n for (let i = 0; i < this.numVert; i++) {\n const fIdx = i * m;\n const nIdx = Math.floor(fIdx);\n const t = fIdx - nIdx;\n\n const x =\n this.oldPositions[nIdx * 3 + 0] * (1 - t) +\n this.oldPositions[(nIdx + 1) * 3 + 0] * t;\n const y =\n this.oldPositions[nIdx * 3 + 1] * (1 - t) +\n this.oldPositions[(nIdx + 1) * 3 + 1] * t;\n\n this.positions[i * 3 + 0] =\n this.positions[i * 3 + 0] * mix + x * mix2;\n this.positions[i * 3 + 1] =\n this.positions[i * 3 + 1] * mix + y * mix2;\n this.positions[i * 3 + 2] = 0;\n }\n }\n }\n\n for (let i = 0; i < this.numVert; i++) {\n this.positions[i * 3 + 1] = -this.positions[i * 3 + 1];\n }\n\n this.smoothedNumVert = this.numVert * 2 - 1;\n WaveUtils.smoothWave(\n this.positions,\n this.smoothedPositions,\n this.numVert\n );\n\n if (newWaveMode === 7 || oldWaveMode === 7) {\n for (let i = 0; i < this.numVert; i++) {\n this.positions2[i * 3 + 1] = -this.positions2[i * 3 + 1];\n }\n\n WaveUtils.smoothWave(\n this.positions2,\n this.smoothedPositions2,\n this.numVert\n );\n }\n\n return true;\n }\n\n return false;\n }\n\n drawBasicWaveform(\n blending,\n blendProgress,\n timeArrayL,\n timeArrayR,\n mdVSFrame\n ) {\n if (\n this.generateWaveform(\n blending,\n blendProgress,\n timeArrayL,\n timeArrayR,\n mdVSFrame\n )\n ) {\n this.gl.useProgram(this.shaderProgram);\n\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.vertexBuf);\n this.gl.bufferData(\n this.gl.ARRAY_BUFFER,\n this.smoothedPositions,\n this.gl.STATIC_DRAW\n );\n\n this.gl.vertexAttribPointer(this.aPosLoc, 3, this.gl.FLOAT, false, 0, 0);\n this.gl.enableVertexAttribArray(this.aPosLoc);\n\n this.gl.uniform4fv(this.colorLoc, this.color);\n\n let instances = 1;\n if (mdVSFrame.wave_thick !== 0 || mdVSFrame.wave_dots !== 0) {\n instances = 4;\n }\n\n if (mdVSFrame.additivewave !== 0) {\n this.gl.blendFunc(this.gl.SRC_ALPHA, this.gl.ONE);\n } else {\n this.gl.blendFunc(this.gl.SRC_ALPHA, this.gl.ONE_MINUS_SRC_ALPHA);\n }\n\n const drawMode =\n mdVSFrame.wave_dots !== 0 ? this.gl.POINTS : this.gl.LINE_STRIP;\n\n // TODO: use drawArraysInstanced\n for (let i = 0; i < instances; i++) {\n const offset = 2;\n if (i === 0) {\n this.gl.uniform2fv(this.thickOffsetLoc, [0, 0]);\n } else if (i === 1) {\n this.gl.uniform2fv(this.thickOffsetLoc, [offset / this.texsizeX, 0]);\n } else if (i === 2) {\n this.gl.uniform2fv(this.thickOffsetLoc, [0, offset / this.texsizeY]);\n } else if (i === 3) {\n this.gl.uniform2fv(this.thickOffsetLoc, [\n offset / this.texsizeX,\n offset / this.texsizeY,\n ]);\n }\n\n this.gl.drawArrays(drawMode, 0, this.smoothedNumVert);\n }\n\n const waveMode = Math.floor(mdVSFrame.wave_mode) % 8;\n if (waveMode === 7) {\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.vertexBuf);\n this.gl.bufferData(\n this.gl.ARRAY_BUFFER,\n this.smoothedPositions2,\n this.gl.STATIC_DRAW\n );\n\n this.gl.vertexAttribPointer(\n this.aPosLoc,\n 3,\n this.gl.FLOAT,\n false,\n 0,\n 0\n );\n this.gl.enableVertexAttribArray(this.aPosLoc);\n\n for (let i = 0; i < instances; i++) {\n const offset = 2;\n if (i === 0) {\n this.gl.uniform2fv(this.thickOffsetLoc, [0, 0]);\n } else if (i === 1) {\n this.gl.uniform2fv(this.thickOffsetLoc, [\n offset / this.texsizeX,\n 0,\n ]);\n } else if (i === 2) {\n this.gl.uniform2fv(this.thickOffsetLoc, [\n 0,\n offset / this.texsizeY,\n ]);\n } else if (i === 3) {\n this.gl.uniform2fv(this.thickOffsetLoc, [\n offset / this.texsizeX,\n offset / this.texsizeY,\n ]);\n }\n\n this.gl.drawArrays(drawMode, 0, this.smoothedNumVert);\n }\n }\n }\n }\n}\n\nclass CustomWaveform {\n constructor(index, gl, opts) {\n this.index = index;\n this.gl = gl;\n\n const maxSamples = 512;\n this.pointsData = [\n new Float32Array(maxSamples),\n new Float32Array(maxSamples),\n ];\n this.positions = new Float32Array(maxSamples * 3);\n this.colors = new Float32Array(maxSamples * 4);\n this.smoothedPositions = new Float32Array((maxSamples * 2 - 1) * 3);\n this.smoothedColors = new Float32Array((maxSamples * 2 - 1) * 4);\n\n this.texsizeX = opts.texsizeX;\n this.texsizeY = opts.texsizeY;\n this.mesh_width = opts.mesh_width;\n this.mesh_height = opts.mesh_height;\n this.aspectx = opts.aspectx;\n this.aspecty = opts.aspecty;\n this.invAspectx = 1.0 / this.aspectx;\n this.invAspecty = 1.0 / this.aspecty;\n\n this.positionVertexBuf = this.gl.createBuffer();\n this.colorVertexBuf = this.gl.createBuffer();\n\n this.floatPrecision = ShaderUtils.getFragmentFloatPrecision(this.gl);\n this.createShader();\n }\n\n updateGlobals(opts) {\n this.texsizeX = opts.texsizeX;\n this.texsizeY = opts.texsizeY;\n this.mesh_width = opts.mesh_width;\n this.mesh_height = opts.mesh_height;\n this.aspectx = opts.aspectx;\n this.aspecty = opts.aspecty;\n this.invAspectx = 1.0 / this.aspectx;\n this.invAspecty = 1.0 / this.aspecty;\n }\n\n createShader() {\n this.shaderProgram = this.gl.createProgram();\n\n const vertShader = this.gl.createShader(this.gl.VERTEX_SHADER);\n this.gl.shaderSource(\n vertShader,\n `\n #version 300 es\n uniform float uSize;\n uniform vec2 thickOffset;\n in vec3 aPos;\n in vec4 aColor;\n out vec4 vColor;\n void main(void) {\n vColor = aColor;\n gl_PointSize = uSize;\n gl_Position = vec4(aPos + vec3(thickOffset, 0.0), 1.0);\n }\n `.trim()\n );\n this.gl.compileShader(vertShader);\n\n const fragShader = this.gl.createShader(this.gl.FRAGMENT_SHADER);\n this.gl.shaderSource(\n fragShader,\n `\n #version 300 es\n precision ${this.floatPrecision} float;\n precision highp int;\n precision mediump sampler2D;\n in vec4 vColor;\n out vec4 fragColor;\n void main(void) {\n fragColor = vColor;\n }\n `.trim()\n );\n this.gl.compileShader(fragShader);\n\n this.gl.attachShader(this.shaderProgram, vertShader);\n this.gl.attachShader(this.shaderProgram, fragShader);\n this.gl.linkProgram(this.shaderProgram);\n\n this.aPosLocation = this.gl.getAttribLocation(this.shaderProgram, \"aPos\");\n this.aColorLocation = this.gl.getAttribLocation(\n this.shaderProgram,\n \"aColor\"\n );\n\n this.sizeLoc = this.gl.getUniformLocation(this.shaderProgram, \"uSize\");\n this.thickOffsetLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"thickOffset\"\n );\n }\n\n generateWaveform(\n timeArrayL,\n timeArrayR,\n freqArrayL,\n freqArrayR,\n globalVars,\n presetEquationRunner,\n waveEqs,\n alphaMult\n ) {\n if (waveEqs.baseVals.enabled !== 0 && timeArrayL.length > 0) {\n let mdVSWaveFrame;\n if (presetEquationRunner.preset.useWASM) {\n mdVSWaveFrame = presetEquationRunner.runWaveFrameEquations(\n this.index,\n globalVars\n );\n } else {\n const mdVSWave = Object.assign(\n {},\n presetEquationRunner.mdVSWaves[this.index],\n presetEquationRunner.mdVSFrameMapWaves[this.index],\n presetEquationRunner.mdVSQAfterFrame,\n presetEquationRunner.mdVSTWaveInits[this.index],\n globalVars\n );\n\n mdVSWaveFrame = presetEquationRunner.runWaveFrameEquations(\n this.index,\n mdVSWave\n );\n }\n\n const maxSamples = 512;\n if (Object.prototype.hasOwnProperty.call(mdVSWaveFrame, \"samples\")) {\n this.samples = mdVSWaveFrame.samples;\n } else {\n this.samples = maxSamples;\n }\n\n if (this.samples > maxSamples) {\n this.samples = maxSamples;\n }\n this.samples = Math.floor(this.samples);\n\n const baseVals = presetEquationRunner.preset.waves[this.index].baseVals;\n\n const sep = Math.floor(mdVSWaveFrame.sep);\n const scaling = mdVSWaveFrame.scaling;\n const spectrum = mdVSWaveFrame.spectrum;\n const smoothing = mdVSWaveFrame.smoothing;\n const usedots = baseVals.usedots;\n\n const frameR = mdVSWaveFrame.r;\n const frameG = mdVSWaveFrame.g;\n const frameB = mdVSWaveFrame.b;\n const frameA = mdVSWaveFrame.a;\n\n const waveScale = presetEquationRunner.preset.baseVals.wave_scale;\n\n this.samples -= sep;\n\n if (this.samples >= 2 || (usedots !== 0 && this.samples >= 1)) {\n const useSpectrum = spectrum !== 0;\n const scale = (useSpectrum ? 0.15 : 0.004) * scaling * waveScale;\n const pointsLeft = useSpectrum ? freqArrayL : timeArrayL;\n const pointsRight = useSpectrum ? freqArrayR : timeArrayR;\n\n const j0 = useSpectrum\n ? 0\n : Math.floor((maxSamples - this.samples) / 2 - sep / 2);\n const j1 = useSpectrum\n ? 0\n : Math.floor((maxSamples - this.samples) / 2 + sep / 2);\n const t = useSpectrum ? (maxSamples - sep) / this.samples : 1;\n const mix1 = (smoothing * 0.98) ** 0.5;\n const mix2 = 1 - mix1;\n\n // Milkdrop smooths waveform forward, backward and then scales\n this.pointsData[0][0] = pointsLeft[j0];\n this.pointsData[1][0] = pointsRight[j1];\n for (let j = 1; j < this.samples; j++) {\n const left = pointsLeft[Math.floor(j * t + j0)];\n const right = pointsRight[Math.floor(j * t + j1)];\n this.pointsData[0][j] =\n left * mix2 + this.pointsData[0][j - 1] * mix1;\n this.pointsData[1][j] =\n right * mix2 + this.pointsData[1][j - 1] * mix1;\n }\n for (let j = this.samples - 2; j >= 0; j--) {\n this.pointsData[0][j] =\n this.pointsData[0][j] * mix2 + this.pointsData[0][j + 1] * mix1;\n this.pointsData[1][j] =\n this.pointsData[1][j] * mix2 + this.pointsData[1][j + 1] * mix1;\n }\n for (let j = 0; j < this.samples; j++) {\n this.pointsData[0][j] *= scale;\n this.pointsData[1][j] *= scale;\n }\n\n if (!presetEquationRunner.preset.useWASM) {\n for (let j = 0; j < this.samples; j++) {\n const value1 = this.pointsData[0][j];\n const value2 = this.pointsData[1][j];\n\n mdVSWaveFrame.sample = j / (this.samples - 1);\n mdVSWaveFrame.value1 = value1;\n mdVSWaveFrame.value2 = value2;\n mdVSWaveFrame.x = 0.5 + value1;\n mdVSWaveFrame.y = 0.5 + value2;\n mdVSWaveFrame.r = frameR;\n mdVSWaveFrame.g = frameG;\n mdVSWaveFrame.b = frameB;\n mdVSWaveFrame.a = frameA;\n\n if (waveEqs.point_eqs !== \"\") {\n mdVSWaveFrame = presetEquationRunner.runWavePointEquations(\n this.index,\n mdVSWaveFrame\n );\n }\n\n const x = (mdVSWaveFrame.x * 2 - 1) * this.invAspectx;\n const y = (mdVSWaveFrame.y * -2 + 1) * this.invAspecty;\n const r = mdVSWaveFrame.r;\n const g = mdVSWaveFrame.g;\n const b = mdVSWaveFrame.b;\n const a = mdVSWaveFrame.a;\n\n this.positions[j * 3 + 0] = x;\n this.positions[j * 3 + 1] = y;\n this.positions[j * 3 + 2] = 0;\n\n this.colors[j * 4 + 0] = r;\n this.colors[j * 4 + 1] = g;\n this.colors[j * 4 + 2] = b;\n this.colors[j * 4 + 3] = a * alphaMult;\n }\n } else {\n const varPool =\n presetEquationRunner.preset.globalPools[\n `wavePerFrame${this.index}`\n ];\n for (let j = 0; j < this.samples; j++) {\n const value1 = this.pointsData[0][j];\n const value2 = this.pointsData[1][j];\n\n varPool.sample.value = j / (this.samples - 1);\n varPool.value1.value = value1;\n varPool.value2.value = value2;\n varPool.x.value = 0.5 + value1;\n varPool.y.value = 0.5 + value2;\n varPool.r.value = frameR;\n varPool.g.value = frameG;\n varPool.b.value = frameB;\n varPool.a.value = frameA;\n\n if (waveEqs.point_eqs) {\n presetEquationRunner.preset.waves[this.index].point_eqs();\n }\n\n const x = (varPool.x.value * 2 - 1) * this.invAspectx;\n const y = (varPool.y.value * -2 + 1) * this.invAspecty;\n const r = varPool.r.value;\n const g = varPool.g.value;\n const b = varPool.b.value;\n const a = varPool.a.value;\n\n this.positions[j * 3 + 0] = x;\n this.positions[j * 3 + 1] = y;\n this.positions[j * 3 + 2] = 0;\n\n this.colors[j * 4 + 0] = r;\n this.colors[j * 4 + 1] = g;\n this.colors[j * 4 + 2] = b;\n this.colors[j * 4 + 3] = a * alphaMult;\n }\n }\n\n // this needs to be after per point (check fishbrain - witchcraft)\n if (!presetEquationRunner.preset.useWASM) {\n const mdvsUserKeysWave =\n presetEquationRunner.mdVSUserKeysWaves[this.index];\n const mdVSNewFrameMapWave = Utils.pick(\n mdVSWaveFrame,\n mdvsUserKeysWave\n );\n\n // eslint-disable-next-line no-param-reassign\n presetEquationRunner.mdVSFrameMapWaves[\n this.index\n ] = mdVSNewFrameMapWave;\n } else {\n mdVSWaveFrame.usedots = usedots;\n mdVSWaveFrame.thick = baseVals.thick;\n mdVSWaveFrame.additive = baseVals.additive;\n }\n\n this.mdVSWaveFrame = mdVSWaveFrame;\n\n if (usedots === 0) {\n WaveUtils.smoothWaveAndColor(\n this.positions,\n this.colors,\n this.smoothedPositions,\n this.smoothedColors,\n this.samples\n );\n }\n\n return true;\n }\n }\n\n return false;\n }\n\n drawCustomWaveform(\n blendProgress,\n timeArrayL,\n timeArrayR,\n freqArrayL,\n freqArrayR,\n globalVars,\n presetEquationRunner,\n waveEqs\n ) {\n if (\n waveEqs &&\n this.generateWaveform(\n timeArrayL,\n timeArrayR,\n freqArrayL,\n freqArrayR,\n globalVars,\n presetEquationRunner,\n waveEqs,\n blendProgress\n )\n ) {\n this.gl.useProgram(this.shaderProgram);\n\n const waveUseDots = this.mdVSWaveFrame.usedots !== 0;\n const waveThick = this.mdVSWaveFrame.thick !== 0;\n const waveAdditive = this.mdVSWaveFrame.additive !== 0;\n\n let positions;\n let colors;\n let numVerts;\n if (!waveUseDots) {\n positions = this.smoothedPositions;\n colors = this.smoothedColors;\n numVerts = this.samples * 2 - 1;\n } else {\n positions = this.positions;\n colors = this.colors;\n numVerts = this.samples;\n }\n\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.positionVertexBuf);\n this.gl.bufferData(this.gl.ARRAY_BUFFER, positions, this.gl.STATIC_DRAW);\n\n this.gl.vertexAttribPointer(\n this.aPosLocation,\n 3,\n this.gl.FLOAT,\n false,\n 0,\n 0\n );\n this.gl.enableVertexAttribArray(this.aPosLocation);\n\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.colorVertexBuf);\n this.gl.bufferData(this.gl.ARRAY_BUFFER, colors, this.gl.STATIC_DRAW);\n\n this.gl.vertexAttribPointer(\n this.aColorLocation,\n 4,\n this.gl.FLOAT,\n false,\n 0,\n 0\n );\n this.gl.enableVertexAttribArray(this.aColorLocation);\n\n let instances = 1;\n if (waveUseDots) {\n if (waveThick) {\n this.gl.uniform1f(this.sizeLoc, 2 + (this.texsizeX >= 1024 ? 1 : 0));\n } else {\n this.gl.uniform1f(this.sizeLoc, 1 + (this.texsizeX >= 1024 ? 1 : 0));\n }\n } else {\n this.gl.uniform1f(this.sizeLoc, 1);\n if (waveThick) {\n instances = 4;\n }\n }\n\n if (waveAdditive) {\n this.gl.blendFunc(this.gl.SRC_ALPHA, this.gl.ONE);\n } else {\n this.gl.blendFunc(this.gl.SRC_ALPHA, this.gl.ONE_MINUS_SRC_ALPHA);\n }\n\n const drawMode = waveUseDots ? this.gl.POINTS : this.gl.LINE_STRIP;\n\n // TODO: use drawArraysInstanced\n for (let i = 0; i < instances; i++) {\n const offset = 2;\n if (i === 0) {\n this.gl.uniform2fv(this.thickOffsetLoc, [0, 0]);\n } else if (i === 1) {\n this.gl.uniform2fv(this.thickOffsetLoc, [offset / this.texsizeX, 0]);\n } else if (i === 2) {\n this.gl.uniform2fv(this.thickOffsetLoc, [0, offset / this.texsizeY]);\n } else if (i === 3) {\n this.gl.uniform2fv(this.thickOffsetLoc, [\n offset / this.texsizeX,\n offset / this.texsizeY,\n ]);\n }\n\n this.gl.drawArrays(drawMode, 0, numVerts);\n }\n }\n }\n}\n\nlet CustomShape$1 = class CustomShape {\n constructor(index, gl, opts) {\n this.index = index;\n this.gl = gl;\n\n const maxSides = 101;\n this.positions = new Float32Array((maxSides + 2) * 3);\n this.colors = new Float32Array((maxSides + 2) * 4);\n this.uvs = new Float32Array((maxSides + 2) * 2);\n this.borderPositions = new Float32Array((maxSides + 1) * 3);\n\n this.texsizeX = opts.texsizeX;\n this.texsizeY = opts.texsizeY;\n this.mesh_width = opts.mesh_width;\n this.mesh_height = opts.mesh_height;\n this.aspectx = opts.aspectx;\n this.aspecty = opts.aspecty;\n this.invAspectx = 1.0 / this.aspectx;\n this.invAspecty = 1.0 / this.aspecty;\n\n this.positionVertexBuf = this.gl.createBuffer();\n this.colorVertexBuf = this.gl.createBuffer();\n this.uvVertexBuf = this.gl.createBuffer();\n this.borderPositionVertexBuf = this.gl.createBuffer();\n\n this.floatPrecision = ShaderUtils.getFragmentFloatPrecision(this.gl);\n this.createShader();\n this.createBorderShader();\n\n this.mainSampler = this.gl.createSampler();\n\n gl.samplerParameteri(\n this.mainSampler,\n gl.TEXTURE_MIN_FILTER,\n gl.LINEAR_MIPMAP_LINEAR\n );\n gl.samplerParameteri(this.mainSampler, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n gl.samplerParameteri(this.mainSampler, gl.TEXTURE_WRAP_S, gl.REPEAT);\n gl.samplerParameteri(this.mainSampler, gl.TEXTURE_WRAP_T, gl.REPEAT);\n }\n\n updateGlobals(opts) {\n this.texsizeX = opts.texsizeX;\n this.texsizeY = opts.texsizeY;\n this.mesh_width = opts.mesh_width;\n this.mesh_height = opts.mesh_height;\n this.aspectx = opts.aspectx;\n this.aspecty = opts.aspecty;\n this.invAspectx = 1.0 / this.aspectx;\n this.invAspecty = 1.0 / this.aspecty;\n }\n\n createShader() {\n this.shaderProgram = this.gl.createProgram();\n\n const vertShader = this.gl.createShader(this.gl.VERTEX_SHADER);\n this.gl.shaderSource(\n vertShader,\n `\n #version 300 es\n in vec3 aPos;\n in vec4 aColor;\n in vec2 aUv;\n out vec4 vColor;\n out vec2 vUv;\n void main(void) {\n vColor = aColor;\n vUv = aUv;\n gl_Position = vec4(aPos, 1.0);\n }\n `.trim()\n );\n this.gl.compileShader(vertShader);\n\n const fragShader = this.gl.createShader(this.gl.FRAGMENT_SHADER);\n this.gl.shaderSource(\n fragShader,\n `\n #version 300 es\n precision ${this.floatPrecision} float;\n precision highp int;\n precision mediump sampler2D;\n uniform sampler2D uTexture;\n uniform float uTextured;\n in vec4 vColor;\n in vec2 vUv;\n out vec4 fragColor;\n void main(void) {\n if (uTextured != 0.0) {\n fragColor = texture(uTexture, vUv) * vColor;\n } else {\n fragColor = vColor;\n }\n }\n `.trim()\n );\n this.gl.compileShader(fragShader);\n\n this.gl.attachShader(this.shaderProgram, vertShader);\n this.gl.attachShader(this.shaderProgram, fragShader);\n this.gl.linkProgram(this.shaderProgram);\n\n this.aPosLocation = this.gl.getAttribLocation(this.shaderProgram, \"aPos\");\n this.aColorLocation = this.gl.getAttribLocation(\n this.shaderProgram,\n \"aColor\"\n );\n this.aUvLocation = this.gl.getAttribLocation(this.shaderProgram, \"aUv\");\n\n this.texturedLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"uTextured\"\n );\n this.textureLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"uTexture\"\n );\n }\n\n createBorderShader() {\n this.borderShaderProgram = this.gl.createProgram();\n\n const vertShader = this.gl.createShader(this.gl.VERTEX_SHADER);\n this.gl.shaderSource(\n vertShader,\n `\n #version 300 es\n in vec3 aBorderPos;\n uniform vec2 thickOffset;\n void main(void) {\n gl_Position = vec4(aBorderPos +\n vec3(thickOffset, 0.0), 1.0);\n }\n `.trim()\n );\n this.gl.compileShader(vertShader);\n\n const fragShader = this.gl.createShader(this.gl.FRAGMENT_SHADER);\n this.gl.shaderSource(\n fragShader,\n `\n #version 300 es\n precision ${this.floatPrecision} float;\n precision highp int;\n precision mediump sampler2D;\n out vec4 fragColor;\n uniform vec4 uBorderColor;\n void main(void) {\n fragColor = uBorderColor;\n }\n `.trim()\n );\n this.gl.compileShader(fragShader);\n\n this.gl.attachShader(this.borderShaderProgram, vertShader);\n this.gl.attachShader(this.borderShaderProgram, fragShader);\n this.gl.linkProgram(this.borderShaderProgram);\n\n this.aBorderPosLoc = this.gl.getAttribLocation(\n this.borderShaderProgram,\n \"aBorderPos\"\n );\n\n this.uBorderColorLoc = this.gl.getUniformLocation(\n this.borderShaderProgram,\n \"uBorderColor\"\n );\n this.thickOffsetLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"thickOffset\"\n );\n }\n\n drawCustomShape(\n blendProgress,\n globalVars,\n presetEquationRunner,\n shapeEqs,\n prevTexture\n ) {\n if (shapeEqs.baseVals.enabled !== 0) {\n if (!presetEquationRunner.preset.useWASM) {\n this.setupShapeBuffers(presetEquationRunner.mdVSFrame.wrap);\n\n let mdVSShape = Object.assign(\n {},\n presetEquationRunner.mdVSShapes[this.index],\n presetEquationRunner.mdVSFrameMapShapes[this.index],\n globalVars\n );\n\n // If we aren't setting these every instance, set them initially\n if (\n presetEquationRunner.preset.shapes[this.index].frame_eqs_str === \"\"\n ) {\n mdVSShape = Object.assign(\n mdVSShape,\n presetEquationRunner.mdVSQAfterFrame,\n presetEquationRunner.mdVSTShapeInits[this.index]\n );\n }\n\n const baseVals =\n presetEquationRunner.preset.shapes[this.index].baseVals;\n\n const numInst = Math.clamp(baseVals.num_inst, 1, 1024);\n for (let j = 0; j < numInst; j++) {\n mdVSShape.instance = j;\n mdVSShape.x = baseVals.x;\n mdVSShape.y = baseVals.y;\n mdVSShape.rad = baseVals.rad;\n mdVSShape.ang = baseVals.ang;\n mdVSShape.r = baseVals.r;\n mdVSShape.g = baseVals.g;\n mdVSShape.b = baseVals.b;\n mdVSShape.a = baseVals.a;\n mdVSShape.r2 = baseVals.r2;\n mdVSShape.g2 = baseVals.g2;\n mdVSShape.b2 = baseVals.b2;\n mdVSShape.a2 = baseVals.a2;\n mdVSShape.border_r = baseVals.border_r;\n mdVSShape.border_g = baseVals.border_g;\n mdVSShape.border_b = baseVals.border_b;\n mdVSShape.border_a = baseVals.border_a;\n mdVSShape.thickoutline = baseVals.thickoutline;\n mdVSShape.textured = baseVals.textured;\n mdVSShape.tex_zoom = baseVals.tex_zoom;\n mdVSShape.tex_ang = baseVals.tex_ang;\n mdVSShape.additive = baseVals.additive;\n\n let mdVSShapeFrame;\n if (\n presetEquationRunner.preset.shapes[this.index].frame_eqs_str !== \"\"\n ) {\n mdVSShape = Object.assign(\n mdVSShape,\n presetEquationRunner.mdVSQAfterFrame,\n presetEquationRunner.mdVSTShapeInits[this.index]\n );\n\n mdVSShapeFrame = presetEquationRunner.runShapeFrameEquations(\n this.index,\n mdVSShape\n );\n } else {\n mdVSShapeFrame = mdVSShape;\n }\n\n let sides = mdVSShapeFrame.sides;\n sides = Math.clamp(sides, 3, 100);\n sides = Math.floor(sides);\n\n const rad = mdVSShapeFrame.rad;\n const ang = mdVSShapeFrame.ang;\n\n const x = mdVSShapeFrame.x * 2 - 1;\n const y = mdVSShapeFrame.y * -2 + 1;\n\n const r = mdVSShapeFrame.r;\n const g = mdVSShapeFrame.g;\n const b = mdVSShapeFrame.b;\n const a = mdVSShapeFrame.a;\n const r2 = mdVSShapeFrame.r2;\n const g2 = mdVSShapeFrame.g2;\n const b2 = mdVSShapeFrame.b2;\n const a2 = mdVSShapeFrame.a2;\n\n const borderR = mdVSShapeFrame.border_r;\n const borderG = mdVSShapeFrame.border_g;\n const borderB = mdVSShapeFrame.border_b;\n const borderA = mdVSShapeFrame.border_a;\n this.borderColor = [\n borderR,\n borderG,\n borderB,\n borderA * blendProgress,\n ];\n\n const thickoutline = mdVSShapeFrame.thickoutline;\n\n const textured = mdVSShapeFrame.textured;\n const texZoom = mdVSShapeFrame.tex_zoom;\n const texAng = mdVSShapeFrame.tex_ang;\n\n const additive = mdVSShapeFrame.additive;\n\n const hasBorder = this.borderColor[3] > 0;\n const isTextured = Math.abs(textured) >= 1;\n const isBorderThick = Math.abs(thickoutline) >= 1;\n const isAdditive = Math.abs(additive) >= 1;\n\n this.positions[0] = x;\n this.positions[1] = y;\n this.positions[2] = 0;\n\n this.colors[0] = r;\n this.colors[1] = g;\n this.colors[2] = b;\n this.colors[3] = a * blendProgress;\n\n if (isTextured) {\n this.uvs[0] = 0.5;\n this.uvs[1] = 0.5;\n }\n\n const quarterPi = Math.PI * 0.25;\n for (let k = 1; k <= sides + 1; k++) {\n const p = (k - 1) / sides;\n const pTwoPi = p * 2 * Math.PI;\n\n const angSum = pTwoPi + ang + quarterPi;\n this.positions[k * 3 + 0] =\n x + rad * Math.cos(angSum) * this.aspecty;\n this.positions[k * 3 + 1] = y + rad * Math.sin(angSum);\n this.positions[k * 3 + 2] = 0;\n\n this.colors[k * 4 + 0] = r2;\n this.colors[k * 4 + 1] = g2;\n this.colors[k * 4 + 2] = b2;\n this.colors[k * 4 + 3] = a2 * blendProgress;\n\n if (isTextured) {\n const texAngSum = pTwoPi + texAng + quarterPi;\n this.uvs[k * 2 + 0] =\n 0.5 + ((0.5 * Math.cos(texAngSum)) / texZoom) * this.aspecty;\n this.uvs[k * 2 + 1] = 0.5 + (0.5 * Math.sin(texAngSum)) / texZoom;\n }\n\n if (hasBorder) {\n this.borderPositions[(k - 1) * 3 + 0] = this.positions[k * 3 + 0];\n this.borderPositions[(k - 1) * 3 + 1] = this.positions[k * 3 + 1];\n this.borderPositions[(k - 1) * 3 + 2] = this.positions[k * 3 + 2];\n }\n }\n\n this.mdVSShapeFrame = mdVSShapeFrame;\n\n this.drawCustomShapeInstance(\n prevTexture,\n sides,\n isTextured,\n hasBorder,\n isBorderThick,\n isAdditive\n );\n }\n\n const mdVSUserKeysShape =\n presetEquationRunner.mdVSUserKeysShapes[this.index];\n const mdVSNewFrameMapShape = Utils.pick(\n this.mdVSShapeFrame,\n mdVSUserKeysShape\n );\n\n // eslint-disable-next-line no-param-reassign\n presetEquationRunner.mdVSFrameMapShapes[\n this.index\n ] = mdVSNewFrameMapShape;\n } else {\n // eslint-disable-next-line max-len\n this.setupShapeBuffers(\n presetEquationRunner.preset.globalPools.perFrame.wrap.value\n );\n\n const baseVals =\n presetEquationRunner.preset.shapes[this.index].baseVals;\n const varPool =\n presetEquationRunner.preset.globalPools[`shapePerFrame${this.index}`];\n Utils.setWasm(varPool, globalVars, presetEquationRunner.globalKeys);\n\n // If we aren't setting these every instance, set them initially\n if (!presetEquationRunner.preset.shapes[this.index].frame_eqs) {\n presetEquationRunner.preset.restore_qs();\n }\n\n Utils.setWasm(\n varPool,\n presetEquationRunner.mdVSTShapeInits[this.index],\n presetEquationRunner.ts\n );\n presetEquationRunner.preset.save_ts();\n\n varPool.x.value = baseVals.x;\n varPool.y.value = baseVals.y;\n varPool.rad.value = baseVals.rad;\n varPool.ang.value = baseVals.ang;\n varPool.r.value = baseVals.r;\n varPool.g.value = baseVals.g;\n varPool.b.value = baseVals.b;\n varPool.a.value = baseVals.a;\n varPool.r2.value = baseVals.r2;\n varPool.g2.value = baseVals.g2;\n varPool.b2.value = baseVals.b2;\n varPool.a2.value = baseVals.a2;\n varPool.border_r.value = baseVals.border_r;\n varPool.border_g.value = baseVals.border_g;\n varPool.border_b.value = baseVals.border_b;\n varPool.border_a.value = baseVals.border_a;\n varPool.thickoutline.value = baseVals.thickoutline;\n varPool.textured.value = baseVals.textured;\n varPool.tex_zoom.value = baseVals.tex_zoom;\n varPool.tex_ang.value = baseVals.tex_ang;\n varPool.additive.value = baseVals.additive;\n presetEquationRunner.preset.shapes[this.index].frame_eqs_save();\n\n const numInst = Math.clamp(baseVals.num_inst, 1, 1024);\n for (let j = 0; j < numInst; j++) {\n varPool.instance.value = j;\n\n // this condition should check the JS equations because of comments\n if (presetEquationRunner.preset.shapes[this.index].frame_eqs) {\n presetEquationRunner.preset.shapes[this.index].frame_eqs_restore();\n presetEquationRunner.preset.restore_qs();\n presetEquationRunner.preset.restore_ts();\n presetEquationRunner.preset.shapes[this.index].frame_eqs();\n }\n\n let sides = varPool.sides.value;\n sides = Math.clamp(sides, 3, 100);\n sides = Math.floor(sides);\n\n const rad = varPool.rad.value;\n const ang = varPool.ang.value;\n\n const x = varPool.x.value * 2 - 1;\n const y = varPool.y.value * -2 + 1;\n\n const r = varPool.r.value;\n const g = varPool.g.value;\n const b = varPool.b.value;\n const a = varPool.a.value;\n const r2 = varPool.r2.value;\n const g2 = varPool.g2.value;\n const b2 = varPool.b2.value;\n const a2 = varPool.a2.value;\n\n const borderR = varPool.border_r.value;\n const borderG = varPool.border_g.value;\n const borderB = varPool.border_b.value;\n const borderA = varPool.border_a.value;\n this.borderColor = [\n borderR,\n borderG,\n borderB,\n borderA * blendProgress,\n ];\n\n const thickoutline = varPool.thickoutline.value;\n\n const textured = varPool.textured.value;\n const texZoom = varPool.tex_zoom.value;\n const texAng = varPool.tex_ang.value;\n\n const additive = varPool.additive.value;\n\n const hasBorder = this.borderColor[3] > 0;\n const isTextured = Math.abs(textured) >= 1;\n const isBorderThick = Math.abs(thickoutline) >= 1;\n const isAdditive = Math.abs(additive) >= 1;\n\n this.positions[0] = x;\n this.positions[1] = y;\n this.positions[2] = 0;\n\n this.colors[0] = r;\n this.colors[1] = g;\n this.colors[2] = b;\n this.colors[3] = a * blendProgress;\n\n if (isTextured) {\n this.uvs[0] = 0.5;\n this.uvs[1] = 0.5;\n }\n\n const quarterPi = Math.PI * 0.25;\n for (let k = 1; k <= sides + 1; k++) {\n const p = (k - 1) / sides;\n const pTwoPi = p * 2 * Math.PI;\n\n const angSum = pTwoPi + ang + quarterPi;\n this.positions[k * 3 + 0] =\n x + rad * Math.cos(angSum) * this.aspecty;\n this.positions[k * 3 + 1] = y + rad * Math.sin(angSum);\n this.positions[k * 3 + 2] = 0;\n\n this.colors[k * 4 + 0] = r2;\n this.colors[k * 4 + 1] = g2;\n this.colors[k * 4 + 2] = b2;\n this.colors[k * 4 + 3] = a2 * blendProgress;\n\n if (isTextured) {\n const texAngSum = pTwoPi + texAng + quarterPi;\n this.uvs[k * 2 + 0] =\n 0.5 + ((0.5 * Math.cos(texAngSum)) / texZoom) * this.aspecty;\n this.uvs[k * 2 + 1] = 0.5 + (0.5 * Math.sin(texAngSum)) / texZoom;\n }\n\n if (hasBorder) {\n this.borderPositions[(k - 1) * 3 + 0] = this.positions[k * 3 + 0];\n this.borderPositions[(k - 1) * 3 + 1] = this.positions[k * 3 + 1];\n this.borderPositions[(k - 1) * 3 + 2] = this.positions[k * 3 + 2];\n }\n }\n\n this.drawCustomShapeInstance(\n prevTexture,\n sides,\n isTextured,\n hasBorder,\n isBorderThick,\n isAdditive\n );\n }\n }\n }\n }\n\n setupShapeBuffers(wrap) {\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.positionVertexBuf);\n this.gl.bufferData(\n this.gl.ARRAY_BUFFER,\n this.positions,\n this.gl.DYNAMIC_DRAW\n );\n\n this.gl.vertexAttribPointer(\n this.aPosLocation,\n 3,\n this.gl.FLOAT,\n false,\n 0,\n 0\n );\n this.gl.enableVertexAttribArray(this.aPosLocation);\n\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.colorVertexBuf);\n this.gl.bufferData(this.gl.ARRAY_BUFFER, this.colors, this.gl.DYNAMIC_DRAW);\n\n this.gl.vertexAttribPointer(\n this.aColorLocation,\n 4,\n this.gl.FLOAT,\n false,\n 0,\n 0\n );\n this.gl.enableVertexAttribArray(this.aColorLocation);\n\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.uvVertexBuf);\n this.gl.bufferData(this.gl.ARRAY_BUFFER, this.uvs, this.gl.DYNAMIC_DRAW);\n\n this.gl.vertexAttribPointer(\n this.aUvLocation,\n 2,\n this.gl.FLOAT,\n false,\n 0,\n 0\n );\n this.gl.enableVertexAttribArray(this.aUvLocation);\n\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.borderPositionVertexBuf);\n this.gl.bufferData(\n this.gl.ARRAY_BUFFER,\n this.borderPositions,\n this.gl.DYNAMIC_DRAW\n );\n\n this.gl.vertexAttribPointer(\n this.aBorderPosLoc,\n 3,\n this.gl.FLOAT,\n false,\n 0,\n 0\n );\n this.gl.enableVertexAttribArray(this.aBorderPosLoc);\n\n const wrapping = wrap !== 0 ? this.gl.REPEAT : this.gl.CLAMP_TO_EDGE;\n this.gl.samplerParameteri(\n this.mainSampler,\n this.gl.TEXTURE_WRAP_S,\n wrapping\n );\n this.gl.samplerParameteri(\n this.mainSampler,\n this.gl.TEXTURE_WRAP_T,\n wrapping\n );\n }\n\n drawCustomShapeInstance(\n prevTexture,\n sides,\n isTextured,\n hasBorder,\n isBorderThick,\n isAdditive\n ) {\n this.gl.useProgram(this.shaderProgram);\n\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.positionVertexBuf);\n this.gl.bufferSubData(\n this.gl.ARRAY_BUFFER,\n 0,\n this.positions,\n 0,\n (sides + 2) * 3\n );\n\n this.gl.vertexAttribPointer(\n this.aPosLocation,\n 3,\n this.gl.FLOAT,\n false,\n 0,\n 0\n );\n this.gl.enableVertexAttribArray(this.aPosLocation);\n\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.colorVertexBuf);\n this.gl.bufferSubData(\n this.gl.ARRAY_BUFFER,\n 0,\n this.colors,\n 0,\n (sides + 2) * 4\n );\n\n this.gl.vertexAttribPointer(\n this.aColorLocation,\n 4,\n this.gl.FLOAT,\n false,\n 0,\n 0\n );\n this.gl.enableVertexAttribArray(this.aColorLocation);\n\n if (isTextured) {\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.uvVertexBuf);\n this.gl.bufferSubData(\n this.gl.ARRAY_BUFFER,\n 0,\n this.uvs,\n 0,\n (sides + 2) * 2\n );\n\n this.gl.vertexAttribPointer(\n this.aUvLocation,\n 2,\n this.gl.FLOAT,\n false,\n 0,\n 0\n );\n this.gl.enableVertexAttribArray(this.aUvLocation);\n }\n\n this.gl.uniform1f(this.texturedLoc, isTextured ? 1 : 0);\n\n this.gl.activeTexture(this.gl.TEXTURE0);\n this.gl.bindTexture(this.gl.TEXTURE_2D, prevTexture);\n this.gl.bindSampler(0, this.mainSampler);\n this.gl.uniform1i(this.textureLoc, 0);\n\n if (isAdditive) {\n this.gl.blendFunc(this.gl.SRC_ALPHA, this.gl.ONE);\n } else {\n this.gl.blendFunc(this.gl.SRC_ALPHA, this.gl.ONE_MINUS_SRC_ALPHA);\n }\n\n this.gl.drawArrays(this.gl.TRIANGLE_FAN, 0, sides + 2);\n\n if (hasBorder) {\n this.gl.useProgram(this.borderShaderProgram);\n\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.borderPositionVertexBuf);\n this.gl.bufferSubData(\n this.gl.ARRAY_BUFFER,\n 0,\n this.borderPositions,\n 0,\n (sides + 1) * 3\n );\n\n this.gl.vertexAttribPointer(\n this.aBorderPosLoc,\n 3,\n this.gl.FLOAT,\n false,\n 0,\n 0\n );\n this.gl.enableVertexAttribArray(this.aBorderPosLoc);\n\n this.gl.uniform4fv(this.uBorderColorLoc, this.borderColor);\n\n // TODO: use drawArraysInstanced\n const instances = isBorderThick ? 4 : 1;\n for (let i = 0; i < instances; i++) {\n const offset = 2;\n if (i === 0) {\n this.gl.uniform2fv(this.thickOffsetLoc, [0, 0]);\n } else if (i === 1) {\n this.gl.uniform2fv(this.thickOffsetLoc, [offset / this.texsizeX, 0]);\n } else if (i === 2) {\n this.gl.uniform2fv(this.thickOffsetLoc, [0, offset / this.texsizeY]);\n } else if (i === 3) {\n this.gl.uniform2fv(this.thickOffsetLoc, [\n offset / this.texsizeX,\n offset / this.texsizeY,\n ]);\n }\n\n this.gl.drawArrays(this.gl.LINE_STRIP, 0, sides + 1);\n }\n }\n }\n};\n\nclass Border {\n constructor(gl, opts = {}) {\n this.gl = gl;\n\n this.positions = new Float32Array(72);\n\n this.aspectx = opts.aspectx;\n this.aspecty = opts.aspecty;\n this.invAspectx = 1.0 / this.aspectx;\n this.invAspecty = 1.0 / this.aspecty;\n\n this.floatPrecision = ShaderUtils.getFragmentFloatPrecision(this.gl);\n this.createShader();\n\n this.vertexBuf = this.gl.createBuffer();\n }\n\n updateGlobals(opts) {\n this.aspectx = opts.aspectx;\n this.aspecty = opts.aspecty;\n this.invAspectx = 1.0 / this.aspectx;\n this.invAspecty = 1.0 / this.aspecty;\n }\n\n createShader() {\n this.shaderProgram = this.gl.createProgram();\n\n const vertShader = this.gl.createShader(this.gl.VERTEX_SHADER);\n this.gl.shaderSource(\n vertShader,\n `\n #version 300 es\n in vec3 aPos;\n void main(void) {\n gl_Position = vec4(aPos, 1.0);\n }\n `.trim()\n );\n this.gl.compileShader(vertShader);\n\n const fragShader = this.gl.createShader(this.gl.FRAGMENT_SHADER);\n this.gl.shaderSource(\n fragShader,\n `\n #version 300 es\n precision ${this.floatPrecision} float;\n precision highp int;\n precision mediump sampler2D;\n out vec4 fragColor;\n uniform vec4 u_color;\n void main(void) {\n fragColor = u_color;\n }\n `.trim()\n );\n this.gl.compileShader(fragShader);\n\n this.gl.attachShader(this.shaderProgram, vertShader);\n this.gl.attachShader(this.shaderProgram, fragShader);\n this.gl.linkProgram(this.shaderProgram);\n\n this.aPosLoc = this.gl.getAttribLocation(this.shaderProgram, \"aPos\");\n\n this.colorLoc = this.gl.getUniformLocation(this.shaderProgram, \"u_color\");\n }\n\n addTriangle(offset, point1, point2, point3) {\n this.positions[offset + 0] = point1[0];\n this.positions[offset + 1] = point1[1];\n this.positions[offset + 2] = point1[2];\n\n this.positions[offset + 3] = point2[0];\n this.positions[offset + 4] = point2[1];\n this.positions[offset + 5] = point2[2];\n\n this.positions[offset + 6] = point3[0];\n this.positions[offset + 7] = point3[1];\n this.positions[offset + 8] = point3[2];\n }\n\n // based on https://github.com/mrdoob/three.js/blob/master/src/geometries/PlaneGeometry.js\n generateBorder(borderColor, borderSize, prevBorderSize) {\n if (borderSize > 0 && borderColor[3] > 0) {\n const width = 2;\n const height = 2;\n\n const widthHalf = width / 2;\n const heightHalf = height / 2;\n\n const prevBorderWidth = prevBorderSize / 2;\n const borderWidth = borderSize / 2 + prevBorderWidth;\n\n const prevBorderWidthWidth = prevBorderWidth * width;\n const prevBorderWidthHeight = prevBorderWidth * height;\n const borderWidthWidth = borderWidth * width;\n const borderWidthHeight = borderWidth * height;\n\n // 1st side\n let point1 = [\n -widthHalf + prevBorderWidthWidth,\n -heightHalf + borderWidthHeight,\n 0,\n ];\n let point2 = [\n -widthHalf + prevBorderWidthWidth,\n heightHalf - borderWidthHeight,\n 0,\n ];\n let point3 = [\n -widthHalf + borderWidthWidth,\n heightHalf - borderWidthHeight,\n 0,\n ];\n let point4 = [\n -widthHalf + borderWidthWidth,\n -heightHalf + borderWidthHeight,\n 0,\n ];\n\n this.addTriangle(0, point4, point2, point1);\n this.addTriangle(9, point4, point3, point2);\n\n // 2nd side\n point1 = [\n widthHalf - prevBorderWidthWidth,\n -heightHalf + borderWidthHeight,\n 0,\n ];\n point2 = [\n widthHalf - prevBorderWidthWidth,\n heightHalf - borderWidthHeight,\n 0,\n ];\n point3 = [\n widthHalf - borderWidthWidth,\n heightHalf - borderWidthHeight,\n 0,\n ];\n point4 = [\n widthHalf - borderWidthWidth,\n -heightHalf + borderWidthHeight,\n 0,\n ];\n\n this.addTriangle(18, point1, point2, point4);\n this.addTriangle(27, point2, point3, point4);\n\n // Top\n point1 = [\n -widthHalf + prevBorderWidthWidth,\n -heightHalf + prevBorderWidthHeight,\n 0,\n ];\n point2 = [\n -widthHalf + prevBorderWidthWidth,\n borderWidthHeight - heightHalf,\n 0,\n ];\n point3 = [\n widthHalf - prevBorderWidthWidth,\n borderWidthHeight - heightHalf,\n 0,\n ];\n point4 = [\n widthHalf - prevBorderWidthWidth,\n -heightHalf + prevBorderWidthHeight,\n 0,\n ];\n\n this.addTriangle(36, point4, point2, point1);\n this.addTriangle(45, point4, point3, point2);\n\n // Bottom\n point1 = [\n -widthHalf + prevBorderWidthWidth,\n heightHalf - prevBorderWidthHeight,\n 0,\n ];\n point2 = [\n -widthHalf + prevBorderWidthWidth,\n heightHalf - borderWidthHeight,\n 0,\n ];\n point3 = [\n widthHalf - prevBorderWidthWidth,\n heightHalf - borderWidthHeight,\n 0,\n ];\n point4 = [\n widthHalf - prevBorderWidthWidth,\n heightHalf - prevBorderWidthHeight,\n 0,\n ];\n\n this.addTriangle(54, point1, point2, point4);\n this.addTriangle(63, point2, point3, point4);\n\n return true;\n }\n\n return false;\n }\n\n drawBorder(borderColor, borderSize, prevBorderSize) {\n if (this.generateBorder(borderColor, borderSize, prevBorderSize)) {\n this.gl.useProgram(this.shaderProgram);\n\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.vertexBuf);\n this.gl.bufferData(\n this.gl.ARRAY_BUFFER,\n this.positions,\n this.gl.STATIC_DRAW\n );\n\n this.gl.vertexAttribPointer(this.aPosLoc, 3, this.gl.FLOAT, false, 0, 0);\n this.gl.enableVertexAttribArray(this.aPosLoc);\n\n this.gl.uniform4fv(this.colorLoc, borderColor);\n\n this.gl.blendFunc(this.gl.SRC_ALPHA, this.gl.ONE_MINUS_SRC_ALPHA);\n\n this.gl.drawArrays(this.gl.TRIANGLES, 0, this.positions.length / 3);\n }\n }\n}\n\nclass CustomShape {\n constructor(gl, opts) {\n this.gl = gl;\n\n this.aspectx = opts.aspectx;\n this.aspecty = opts.aspecty;\n this.invAspectx = 1.0 / this.aspectx;\n this.invAspecty = 1.0 / this.aspecty;\n\n this.generatePositions();\n\n this.colors = new Float32Array([\n 0,\n 0,\n 0,\n 3 / 32,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n ]);\n\n this.positionVertexBuf = this.gl.createBuffer();\n this.colorVertexBuf = this.gl.createBuffer();\n\n this.floatPrecision = ShaderUtils.getFragmentFloatPrecision(this.gl);\n this.createShader();\n }\n\n updateGlobals(opts) {\n this.aspectx = opts.aspectx;\n this.aspecty = opts.aspecty;\n this.invAspectx = 1.0 / this.aspectx;\n this.invAspecty = 1.0 / this.aspecty;\n\n this.generatePositions();\n }\n\n generatePositions() {\n const halfSize = 0.05;\n this.positions = new Float32Array([\n 0,\n 0,\n 0,\n -halfSize * this.aspecty,\n 0,\n 0,\n 0,\n -halfSize,\n 0,\n halfSize * this.aspecty,\n 0,\n 0,\n 0,\n halfSize,\n 0,\n -halfSize * this.aspecty,\n 0,\n 0,\n ]);\n }\n\n createShader() {\n this.shaderProgram = this.gl.createProgram();\n\n const vertShader = this.gl.createShader(this.gl.VERTEX_SHADER);\n this.gl.shaderSource(\n vertShader,\n `\n #version 300 es\n in vec3 aPos;\n in vec4 aColor;\n out vec4 vColor;\n void main(void) {\n vColor = aColor;\n gl_Position = vec4(aPos, 1.0);\n }\n `.trim()\n );\n this.gl.compileShader(vertShader);\n\n const fragShader = this.gl.createShader(this.gl.FRAGMENT_SHADER);\n this.gl.shaderSource(\n fragShader,\n `\n #version 300 es\n precision ${this.floatPrecision} float;\n precision highp int;\n precision mediump sampler2D;\n in vec4 vColor;\n out vec4 fragColor;\n void main(void) {\n fragColor = vColor;\n }\n `.trim()\n );\n this.gl.compileShader(fragShader);\n\n this.gl.attachShader(this.shaderProgram, vertShader);\n this.gl.attachShader(this.shaderProgram, fragShader);\n this.gl.linkProgram(this.shaderProgram);\n\n this.aPosLocation = this.gl.getAttribLocation(this.shaderProgram, \"aPos\");\n this.aColorLocation = this.gl.getAttribLocation(\n this.shaderProgram,\n \"aColor\"\n );\n }\n\n drawDarkenCenter(mdVSFrame) {\n if (mdVSFrame.darken_center !== 0) {\n this.gl.useProgram(this.shaderProgram);\n\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.positionVertexBuf);\n this.gl.bufferData(\n this.gl.ARRAY_BUFFER,\n this.positions,\n this.gl.STATIC_DRAW\n );\n\n this.gl.vertexAttribPointer(\n this.aPosLocation,\n 3,\n this.gl.FLOAT,\n false,\n 0,\n 0\n );\n this.gl.enableVertexAttribArray(this.aPosLocation);\n\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.colorVertexBuf);\n this.gl.bufferData(\n this.gl.ARRAY_BUFFER,\n this.colors,\n this.gl.STATIC_DRAW\n );\n\n this.gl.vertexAttribPointer(\n this.aColorLocation,\n 4,\n this.gl.FLOAT,\n false,\n 0,\n 0\n );\n this.gl.enableVertexAttribArray(this.aColorLocation);\n\n this.gl.blendFunc(this.gl.SRC_ALPHA, this.gl.ONE_MINUS_SRC_ALPHA);\n\n this.gl.drawArrays(this.gl.TRIANGLE_FAN, 0, this.positions.length / 3);\n }\n }\n}\n\nclass MotionVectors {\n constructor(gl, opts) {\n this.gl = gl;\n\n this.maxX = 64;\n this.maxY = 48;\n this.positions = new Float32Array(this.maxX * this.maxY * 2 * 3);\n\n this.texsizeX = opts.texsizeX;\n this.texsizeY = opts.texsizeY;\n this.mesh_width = opts.mesh_width;\n this.mesh_height = opts.mesh_height;\n\n this.positionVertexBuf = this.gl.createBuffer();\n\n this.floatPrecision = ShaderUtils.getFragmentFloatPrecision(this.gl);\n this.createShader();\n }\n\n updateGlobals(opts) {\n this.texsizeX = opts.texsizeX;\n this.texsizeY = opts.texsizeY;\n this.mesh_width = opts.mesh_width;\n this.mesh_height = opts.mesh_height;\n }\n\n createShader() {\n this.shaderProgram = this.gl.createProgram();\n\n const vertShader = this.gl.createShader(this.gl.VERTEX_SHADER);\n this.gl.shaderSource(\n vertShader,\n `\n #version 300 es\n in vec3 aPos;\n void main(void) {\n gl_Position = vec4(aPos, 1.0);\n }\n `.trim()\n );\n this.gl.compileShader(vertShader);\n\n const fragShader = this.gl.createShader(this.gl.FRAGMENT_SHADER);\n this.gl.shaderSource(\n fragShader,\n `\n #version 300 es\n precision ${this.floatPrecision} float;\n precision highp int;\n precision mediump sampler2D;\n out vec4 fragColor;\n uniform vec4 u_color;\n void main(void) {\n fragColor = u_color;\n }\n `.trim()\n );\n this.gl.compileShader(fragShader);\n\n this.gl.attachShader(this.shaderProgram, vertShader);\n this.gl.attachShader(this.shaderProgram, fragShader);\n this.gl.linkProgram(this.shaderProgram);\n\n this.aPosLoc = this.gl.getAttribLocation(this.shaderProgram, \"aPos\");\n\n this.colorLoc = this.gl.getUniformLocation(this.shaderProgram, \"u_color\");\n }\n\n getMotionDir(warpUVs, fx, fy) {\n const y0 = Math.floor(fy * this.mesh_height);\n const dy = fy * this.mesh_height - y0;\n\n const x0 = Math.floor(fx * this.mesh_width);\n const dx = fx * this.mesh_width - x0;\n\n const x1 = x0 + 1;\n const y1 = y0 + 1;\n\n const gridX1 = this.mesh_width + 1;\n\n let fx2;\n let fy2;\n fx2 = warpUVs[(y0 * gridX1 + x0) * 2 + 0] * (1 - dx) * (1 - dy);\n fy2 = warpUVs[(y0 * gridX1 + x0) * 2 + 1] * (1 - dx) * (1 - dy);\n fx2 += warpUVs[(y0 * gridX1 + x1) * 2 + 0] * dx * (1 - dy);\n fy2 += warpUVs[(y0 * gridX1 + x1) * 2 + 1] * dx * (1 - dy);\n fx2 += warpUVs[(y1 * gridX1 + x0) * 2 + 0] * (1 - dx) * dy;\n fy2 += warpUVs[(y1 * gridX1 + x0) * 2 + 1] * (1 - dx) * dy;\n fx2 += warpUVs[(y1 * gridX1 + x1) * 2 + 0] * dx * dy;\n fy2 += warpUVs[(y1 * gridX1 + x1) * 2 + 1] * dx * dy;\n\n return [fx2, 1.0 - fy2];\n }\n\n generateMotionVectors(mdVSFrame, warpUVs) {\n const mvOn = mdVSFrame.bmotionvectorson;\n const mvA = mvOn === 0 ? 0 : mdVSFrame.mv_a;\n let nX = Math.floor(mdVSFrame.mv_x);\n let nY = Math.floor(mdVSFrame.mv_y);\n\n if (mvA > 0.001 && nX > 0 && nY > 0) {\n let dx = mdVSFrame.mv_x - nX;\n let dy = mdVSFrame.mv_y - nY;\n\n if (nX > this.maxX) {\n nX = this.maxX;\n dx = 0;\n }\n\n if (nY > this.maxY) {\n nY = this.maxY;\n dy = 0;\n }\n\n const dx2 = mdVSFrame.mv_dx;\n const dy2 = mdVSFrame.mv_dy;\n\n const lenMult = mdVSFrame.mv_l;\n const minLen = 1.0 / this.texsizeX;\n\n this.numVecVerts = 0;\n for (let j = 0; j < nY; j++) {\n let fy = (j + 0.25) / (nY + dy + 0.25 - 1.0);\n fy -= dy2;\n\n if (fy > 0.0001 && fy < 0.9999) {\n for (let i = 0; i < nX; i++) {\n let fx = (i + 0.25) / (nX + dx + 0.25 - 1.0);\n fx += dx2;\n\n if (fx > 0.0001 && fx < 0.9999) {\n const fx2arr = this.getMotionDir(warpUVs, fx, fy);\n let fx2 = fx2arr[0];\n let fy2 = fx2arr[1];\n\n let dxi = fx2 - fx;\n let dyi = fy2 - fy;\n dxi *= lenMult;\n dyi *= lenMult;\n\n let fdist = Math.sqrt(dxi * dxi + dyi * dyi);\n\n if (fdist < minLen && fdist > 0.00000001) {\n fdist = minLen / fdist;\n dxi *= fdist;\n dyi *= fdist;\n } else {\n dxi = minLen;\n dxi = minLen;\n }\n\n fx2 = fx + dxi;\n fy2 = fy + dyi;\n\n const vx1 = 2.0 * fx - 1.0;\n const vy1 = 2.0 * fy - 1.0;\n const vx2 = 2.0 * fx2 - 1.0;\n const vy2 = 2.0 * fy2 - 1.0;\n\n this.positions[this.numVecVerts * 3 + 0] = vx1;\n this.positions[this.numVecVerts * 3 + 1] = vy1;\n this.positions[this.numVecVerts * 3 + 2] = 0;\n\n this.positions[(this.numVecVerts + 1) * 3 + 0] = vx2;\n this.positions[(this.numVecVerts + 1) * 3 + 1] = vy2;\n this.positions[(this.numVecVerts + 1) * 3 + 2] = 0;\n\n this.numVecVerts += 2;\n }\n }\n }\n }\n\n if (this.numVecVerts > 0) {\n this.color = [mdVSFrame.mv_r, mdVSFrame.mv_g, mdVSFrame.mv_b, mvA];\n\n return true;\n }\n }\n\n return false;\n }\n\n drawMotionVectors(mdVSFrame, warpUVs) {\n if (this.generateMotionVectors(mdVSFrame, warpUVs)) {\n this.gl.useProgram(this.shaderProgram);\n\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.positionVertexBuf);\n this.gl.bufferData(\n this.gl.ARRAY_BUFFER,\n this.positions,\n this.gl.STATIC_DRAW\n );\n\n this.gl.vertexAttribPointer(this.aPosLoc, 3, this.gl.FLOAT, false, 0, 0);\n this.gl.enableVertexAttribArray(this.aPosLoc);\n\n this.gl.uniform4fv(this.colorLoc, this.color);\n\n this.gl.lineWidth(1);\n this.gl.blendFunc(this.gl.SRC_ALPHA, this.gl.ONE_MINUS_SRC_ALPHA);\n\n this.gl.drawArrays(this.gl.LINES, 0, this.numVecVerts);\n }\n }\n}\n\nclass WarpShader {\n constructor(gl, noise, image, opts = {}) {\n this.gl = gl;\n this.noise = noise;\n this.image = image;\n this.rng = getRNG();\n\n this.texsizeX = opts.texsizeX;\n this.texsizeY = opts.texsizeY;\n this.mesh_width = opts.mesh_width;\n this.mesh_height = opts.mesh_height;\n this.aspectx = opts.aspectx;\n this.aspecty = opts.aspecty;\n this.invAspectx = 1.0 / this.aspectx;\n this.invAspecty = 1.0 / this.aspecty;\n\n this.buildPositions();\n\n this.indexBuf = gl.createBuffer();\n this.positionVertexBuf = this.gl.createBuffer();\n this.warpUvVertexBuf = this.gl.createBuffer();\n this.warpColorVertexBuf = this.gl.createBuffer();\n\n this.floatPrecision = ShaderUtils.getFragmentFloatPrecision(this.gl);\n this.createShader();\n\n this.mainSampler = this.gl.createSampler();\n this.mainSamplerFW = this.gl.createSampler();\n this.mainSamplerFC = this.gl.createSampler();\n this.mainSamplerPW = this.gl.createSampler();\n this.mainSamplerPC = this.gl.createSampler();\n\n gl.samplerParameteri(\n this.mainSampler,\n gl.TEXTURE_MIN_FILTER,\n gl.LINEAR_MIPMAP_LINEAR\n );\n gl.samplerParameteri(this.mainSampler, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n gl.samplerParameteri(this.mainSampler, gl.TEXTURE_WRAP_S, gl.REPEAT);\n gl.samplerParameteri(this.mainSampler, gl.TEXTURE_WRAP_T, gl.REPEAT);\n\n gl.samplerParameteri(\n this.mainSamplerFW,\n gl.TEXTURE_MIN_FILTER,\n gl.LINEAR_MIPMAP_LINEAR\n );\n gl.samplerParameteri(this.mainSamplerFW, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n gl.samplerParameteri(this.mainSamplerFW, gl.TEXTURE_WRAP_S, gl.REPEAT);\n gl.samplerParameteri(this.mainSamplerFW, gl.TEXTURE_WRAP_T, gl.REPEAT);\n\n gl.samplerParameteri(\n this.mainSamplerFC,\n gl.TEXTURE_MIN_FILTER,\n gl.LINEAR_MIPMAP_LINEAR\n );\n gl.samplerParameteri(this.mainSamplerFC, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n gl.samplerParameteri(\n this.mainSamplerFC,\n gl.TEXTURE_WRAP_S,\n gl.CLAMP_TO_EDGE\n );\n gl.samplerParameteri(\n this.mainSamplerFC,\n gl.TEXTURE_WRAP_T,\n gl.CLAMP_TO_EDGE\n );\n\n gl.samplerParameteri(\n this.mainSamplerPW,\n gl.TEXTURE_MIN_FILTER,\n gl.NEAREST_MIPMAP_NEAREST\n );\n gl.samplerParameteri(this.mainSamplerPW, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.samplerParameteri(this.mainSamplerPW, gl.TEXTURE_WRAP_S, gl.REPEAT);\n gl.samplerParameteri(this.mainSamplerPW, gl.TEXTURE_WRAP_T, gl.REPEAT);\n\n gl.samplerParameteri(\n this.mainSamplerPC,\n gl.TEXTURE_MIN_FILTER,\n gl.NEAREST_MIPMAP_NEAREST\n );\n gl.samplerParameteri(this.mainSamplerPC, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.samplerParameteri(\n this.mainSamplerPC,\n gl.TEXTURE_WRAP_S,\n gl.CLAMP_TO_EDGE\n );\n gl.samplerParameteri(\n this.mainSamplerPC,\n gl.TEXTURE_WRAP_T,\n gl.CLAMP_TO_EDGE\n );\n }\n\n // based on https://github.com/mrdoob/three.js/blob/master/src/geometries/PlaneGeometry.js\n buildPositions() {\n const width = 2;\n const height = 2;\n\n const widthHalf = width / 2;\n const heightHalf = height / 2;\n\n const gridX = this.mesh_width;\n const gridY = this.mesh_height;\n\n const gridX1 = gridX + 1;\n const gridY1 = gridY + 1;\n\n const segmentWidth = width / gridX;\n const segmentHeight = height / gridY;\n\n const vertices = [];\n for (let iy = 0; iy < gridY1; iy++) {\n const y = iy * segmentHeight - heightHalf;\n for (let ix = 0; ix < gridX1; ix++) {\n const x = ix * segmentWidth - widthHalf;\n vertices.push(x, -y, 0);\n }\n }\n\n const indices = [];\n for (let iy = 0; iy < gridY; iy++) {\n for (let ix = 0; ix < gridX; ix++) {\n const a = ix + gridX1 * iy;\n const b = ix + gridX1 * (iy + 1);\n const c = ix + 1 + gridX1 * (iy + 1);\n const d = ix + 1 + gridX1 * iy;\n\n indices.push(a, b, d);\n indices.push(b, c, d);\n }\n }\n\n this.vertices = new Float32Array(vertices);\n this.indices = new Uint16Array(indices);\n }\n\n updateGlobals(opts) {\n this.texsizeX = opts.texsizeX;\n this.texsizeY = opts.texsizeY;\n this.mesh_width = opts.mesh_width;\n this.mesh_height = opts.mesh_height;\n this.aspectx = opts.aspectx;\n this.aspecty = opts.aspecty;\n this.invAspectx = 1.0 / this.aspectx;\n this.invAspecty = 1.0 / this.aspecty;\n\n this.buildPositions();\n }\n\n createShader(shaderText = \"\") {\n let fragShaderText;\n let fragShaderHeaderText;\n if (shaderText.length === 0) {\n fragShaderText = \"ret = texture(sampler_main, uv).rgb * decay;\";\n fragShaderHeaderText = \"\";\n } else {\n const shaderParts = ShaderUtils.getShaderParts(shaderText);\n fragShaderHeaderText = shaderParts[0];\n fragShaderText = shaderParts[1];\n }\n\n fragShaderText = fragShaderText.replace(/texture2D/g, \"texture\");\n fragShaderText = fragShaderText.replace(/texture3D/g, \"texture\");\n\n this.userTextures = ShaderUtils.getUserSamplers(fragShaderHeaderText);\n\n this.shaderProgram = this.gl.createProgram();\n\n const vertShader = this.gl.createShader(this.gl.VERTEX_SHADER);\n this.gl.shaderSource(\n vertShader,\n `\n #version 300 es\n precision ${this.floatPrecision} float;\n const vec2 halfmad = vec2(0.5);\n in vec2 aPos;\n in vec2 aWarpUv;\n in vec4 aWarpColor;\n out vec2 uv;\n out vec2 uv_orig;\n out vec4 vColor;\n void main(void) {\n gl_Position = vec4(aPos, 0.0, 1.0);\n uv_orig = aPos * halfmad + halfmad;\n uv = aWarpUv;\n vColor = aWarpColor;\n }\n `.trim()\n );\n this.gl.compileShader(vertShader);\n\n const fragShader = this.gl.createShader(this.gl.FRAGMENT_SHADER);\n this.gl.shaderSource(\n fragShader,\n `\n #version 300 es\n precision ${this.floatPrecision} float;\n precision highp int;\n precision mediump sampler2D;\n precision mediump sampler3D;\n\n in vec2 uv;\n in vec2 uv_orig;\n in vec4 vColor;\n out vec4 fragColor;\n uniform sampler2D sampler_main;\n uniform sampler2D sampler_fw_main;\n uniform sampler2D sampler_fc_main;\n uniform sampler2D sampler_pw_main;\n uniform sampler2D sampler_pc_main;\n uniform sampler2D sampler_blur1;\n uniform sampler2D sampler_blur2;\n uniform sampler2D sampler_blur3;\n uniform sampler2D sampler_noise_lq;\n uniform sampler2D sampler_noise_lq_lite;\n uniform sampler2D sampler_noise_mq;\n uniform sampler2D sampler_noise_hq;\n uniform sampler2D sampler_pw_noise_lq;\n uniform sampler3D sampler_noisevol_lq;\n uniform sampler3D sampler_noisevol_hq;\n uniform float time;\n uniform float decay;\n uniform vec2 resolution;\n uniform vec4 aspect;\n uniform vec4 texsize;\n uniform vec4 texsize_noise_lq;\n uniform vec4 texsize_noise_mq;\n uniform vec4 texsize_noise_hq;\n uniform vec4 texsize_noise_lq_lite;\n uniform vec4 texsize_noisevol_lq;\n uniform vec4 texsize_noisevol_hq;\n\n uniform float bass;\n uniform float mid;\n uniform float treb;\n uniform float vol;\n uniform float bass_att;\n uniform float mid_att;\n uniform float treb_att;\n uniform float vol_att;\n\n uniform float frame;\n uniform float fps;\n\n uniform vec4 _qa;\n uniform vec4 _qb;\n uniform vec4 _qc;\n uniform vec4 _qd;\n uniform vec4 _qe;\n uniform vec4 _qf;\n uniform vec4 _qg;\n uniform vec4 _qh;\n\n #define q1 _qa.x\n #define q2 _qa.y\n #define q3 _qa.z\n #define q4 _qa.w\n #define q5 _qb.x\n #define q6 _qb.y\n #define q7 _qb.z\n #define q8 _qb.w\n #define q9 _qc.x\n #define q10 _qc.y\n #define q11 _qc.z\n #define q12 _qc.w\n #define q13 _qd.x\n #define q14 _qd.y\n #define q15 _qd.z\n #define q16 _qd.w\n #define q17 _qe.x\n #define q18 _qe.y\n #define q19 _qe.z\n #define q20 _qe.w\n #define q21 _qf.x\n #define q22 _qf.y\n #define q23 _qf.z\n #define q24 _qf.w\n #define q25 _qg.x\n #define q26 _qg.y\n #define q27 _qg.z\n #define q28 _qg.w\n #define q29 _qh.x\n #define q30 _qh.y\n #define q31 _qh.z\n #define q32 _qh.w\n\n uniform vec4 slow_roam_cos;\n uniform vec4 roam_cos;\n uniform vec4 slow_roam_sin;\n uniform vec4 roam_sin;\n\n uniform float blur1_min;\n uniform float blur1_max;\n uniform float blur2_min;\n uniform float blur2_max;\n uniform float blur3_min;\n uniform float blur3_max;\n\n uniform float scale1;\n uniform float scale2;\n uniform float scale3;\n uniform float bias1;\n uniform float bias2;\n uniform float bias3;\n\n uniform vec4 rand_frame;\n uniform vec4 rand_preset;\n\n float PI = ${Math.PI};\n\n ${fragShaderHeaderText}\n\n void main(void) {\n vec3 ret;\n float rad = length(uv_orig - 0.5);\n float ang = atan(uv_orig.x - 0.5, uv_orig.y - 0.5);\n\n ${fragShaderText}\n\n fragColor = vec4(ret, 1.0) * vColor;\n }\n `.trim()\n );\n this.gl.compileShader(fragShader);\n\n this.gl.attachShader(this.shaderProgram, vertShader);\n this.gl.attachShader(this.shaderProgram, fragShader);\n this.gl.linkProgram(this.shaderProgram);\n\n this.positionLocation = this.gl.getAttribLocation(\n this.shaderProgram,\n \"aPos\"\n );\n this.warpUvLocation = this.gl.getAttribLocation(\n this.shaderProgram,\n \"aWarpUv\"\n );\n this.warpColorLocation = this.gl.getAttribLocation(\n this.shaderProgram,\n \"aWarpColor\"\n );\n this.textureLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"sampler_main\"\n );\n this.textureFWLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"sampler_fw_main\"\n );\n this.textureFCLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"sampler_fc_main\"\n );\n this.texturePWLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"sampler_pw_main\"\n );\n this.texturePCLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"sampler_pc_main\"\n );\n this.blurTexture1Loc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"sampler_blur1\"\n );\n this.blurTexture2Loc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"sampler_blur2\"\n );\n this.blurTexture3Loc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"sampler_blur3\"\n );\n this.noiseLQLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"sampler_noise_lq\"\n );\n this.noiseMQLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"sampler_noise_mq\"\n );\n this.noiseHQLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"sampler_noise_hq\"\n );\n this.noiseLQLiteLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"sampler_noise_lq_lite\"\n );\n this.noisePointLQLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"sampler_pw_noise_lq\"\n );\n this.noiseVolLQLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"sampler_noisevol_lq\"\n );\n this.noiseVolHQLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"sampler_noisevol_hq\"\n );\n this.decayLoc = this.gl.getUniformLocation(this.shaderProgram, \"decay\");\n this.texsizeLoc = this.gl.getUniformLocation(this.shaderProgram, \"texsize\");\n this.texsizeNoiseLQLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"texsize_noise_lq\"\n );\n this.texsizeNoiseMQLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"texsize_noise_mq\"\n );\n this.texsizeNoiseHQLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"texsize_noise_hq\"\n );\n this.texsizeNoiseLQLiteLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"texsize_noise_lq_lite\"\n );\n this.texsizeNoiseVolLQLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"texsize_noisevol_lq\"\n );\n this.texsizeNoiseVolHQLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"texsize_noisevol_hq\"\n );\n this.resolutionLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"resolution\"\n );\n this.aspectLoc = this.gl.getUniformLocation(this.shaderProgram, \"aspect\");\n this.bassLoc = this.gl.getUniformLocation(this.shaderProgram, \"bass\");\n this.midLoc = this.gl.getUniformLocation(this.shaderProgram, \"mid\");\n this.trebLoc = this.gl.getUniformLocation(this.shaderProgram, \"treb\");\n this.volLoc = this.gl.getUniformLocation(this.shaderProgram, \"vol\");\n this.bassAttLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"bass_att\"\n );\n this.midAttLoc = this.gl.getUniformLocation(this.shaderProgram, \"mid_att\");\n this.trebAttLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"treb_att\"\n );\n this.volAttLoc = this.gl.getUniformLocation(this.shaderProgram, \"vol_att\");\n this.timeLoc = this.gl.getUniformLocation(this.shaderProgram, \"time\");\n this.frameLoc = this.gl.getUniformLocation(this.shaderProgram, \"frame\");\n this.fpsLoc = this.gl.getUniformLocation(this.shaderProgram, \"fps\");\n this.blur1MinLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"blur1_min\"\n );\n this.blur1MaxLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"blur1_max\"\n );\n this.blur2MinLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"blur2_min\"\n );\n this.blur2MaxLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"blur2_max\"\n );\n this.blur3MinLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"blur3_min\"\n );\n this.blur3MaxLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"blur3_max\"\n );\n this.scale1Loc = this.gl.getUniformLocation(this.shaderProgram, \"scale1\");\n this.scale2Loc = this.gl.getUniformLocation(this.shaderProgram, \"scale2\");\n this.scale3Loc = this.gl.getUniformLocation(this.shaderProgram, \"scale3\");\n this.bias1Loc = this.gl.getUniformLocation(this.shaderProgram, \"bias1\");\n this.bias2Loc = this.gl.getUniformLocation(this.shaderProgram, \"bias2\");\n this.bias3Loc = this.gl.getUniformLocation(this.shaderProgram, \"bias3\");\n this.randPresetLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"rand_preset\"\n );\n this.randFrameLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"rand_frame\"\n );\n\n this.qaLoc = this.gl.getUniformLocation(this.shaderProgram, \"_qa\");\n this.qbLoc = this.gl.getUniformLocation(this.shaderProgram, \"_qb\");\n this.qcLoc = this.gl.getUniformLocation(this.shaderProgram, \"_qc\");\n this.qdLoc = this.gl.getUniformLocation(this.shaderProgram, \"_qd\");\n this.qeLoc = this.gl.getUniformLocation(this.shaderProgram, \"_qe\");\n this.qfLoc = this.gl.getUniformLocation(this.shaderProgram, \"_qf\");\n this.qgLoc = this.gl.getUniformLocation(this.shaderProgram, \"_qg\");\n this.qhLoc = this.gl.getUniformLocation(this.shaderProgram, \"_qh\");\n\n this.slowRoamCosLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"slow_roam_cos\"\n );\n this.roamCosLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"roam_cos\"\n );\n this.slowRoamSinLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"slow_roam_sin\"\n );\n this.roamSinLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"roam_sin\"\n );\n\n for (let i = 0; i < this.userTextures.length; i++) {\n const userTexture = this.userTextures[i];\n userTexture.textureLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n `sampler_${userTexture.sampler}`\n );\n }\n }\n\n updateShader(shaderText) {\n this.createShader(shaderText);\n }\n\n bindBlurVals(blurMins, blurMaxs) {\n const blurMin1 = blurMins[0];\n const blurMin2 = blurMins[1];\n const blurMin3 = blurMins[2];\n const blurMax1 = blurMaxs[0];\n const blurMax2 = blurMaxs[1];\n const blurMax3 = blurMaxs[2];\n\n const scale1 = blurMax1 - blurMin1;\n const bias1 = blurMin1;\n\n const scale2 = blurMax2 - blurMin2;\n const bias2 = blurMin2;\n\n const scale3 = blurMax3 - blurMin3;\n const bias3 = blurMin3;\n\n this.gl.uniform1f(this.blur1MinLoc, blurMin1);\n this.gl.uniform1f(this.blur1MaxLoc, blurMax1);\n this.gl.uniform1f(this.blur2MinLoc, blurMin2);\n this.gl.uniform1f(this.blur2MaxLoc, blurMax2);\n this.gl.uniform1f(this.blur3MinLoc, blurMin3);\n this.gl.uniform1f(this.blur3MaxLoc, blurMax3);\n this.gl.uniform1f(this.scale1Loc, scale1);\n this.gl.uniform1f(this.scale2Loc, scale2);\n this.gl.uniform1f(this.scale3Loc, scale3);\n this.gl.uniform1f(this.bias1Loc, bias1);\n this.gl.uniform1f(this.bias2Loc, bias2);\n this.gl.uniform1f(this.bias3Loc, bias3);\n }\n\n renderQuadTexture(\n blending,\n texture,\n blurTexture1,\n blurTexture2,\n blurTexture3,\n blurMins,\n blurMaxs,\n mdVSFrame,\n mdVSQs,\n warpUVs,\n warpColor\n ) {\n this.gl.useProgram(this.shaderProgram);\n\n this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER, this.indexBuf);\n this.gl.bufferData(\n this.gl.ELEMENT_ARRAY_BUFFER,\n this.indices,\n this.gl.STATIC_DRAW\n );\n\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.positionVertexBuf);\n this.gl.bufferData(\n this.gl.ARRAY_BUFFER,\n this.vertices,\n this.gl.STATIC_DRAW\n );\n\n this.gl.vertexAttribPointer(\n this.positionLocation,\n 3,\n this.gl.FLOAT,\n false,\n 0,\n 0\n );\n this.gl.enableVertexAttribArray(this.positionLocation);\n\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.warpUvVertexBuf);\n this.gl.bufferData(this.gl.ARRAY_BUFFER, warpUVs, this.gl.STATIC_DRAW);\n\n this.gl.vertexAttribPointer(\n this.warpUvLocation,\n 2,\n this.gl.FLOAT,\n false,\n 0,\n 0\n );\n this.gl.enableVertexAttribArray(this.warpUvLocation);\n\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.warpColorVertexBuf);\n this.gl.bufferData(this.gl.ARRAY_BUFFER, warpColor, this.gl.STATIC_DRAW);\n\n this.gl.vertexAttribPointer(\n this.warpColorLocation,\n 4,\n this.gl.FLOAT,\n false,\n 0,\n 0\n );\n this.gl.enableVertexAttribArray(this.warpColorLocation);\n\n const wrapping =\n mdVSFrame.wrap !== 0 ? this.gl.REPEAT : this.gl.CLAMP_TO_EDGE;\n this.gl.samplerParameteri(\n this.mainSampler,\n this.gl.TEXTURE_WRAP_S,\n wrapping\n );\n this.gl.samplerParameteri(\n this.mainSampler,\n this.gl.TEXTURE_WRAP_T,\n wrapping\n );\n\n this.gl.activeTexture(this.gl.TEXTURE0);\n this.gl.bindTexture(this.gl.TEXTURE_2D, texture);\n this.gl.bindSampler(0, this.mainSampler);\n this.gl.uniform1i(this.textureLoc, 0);\n\n this.gl.activeTexture(this.gl.TEXTURE1);\n this.gl.bindTexture(this.gl.TEXTURE_2D, texture);\n this.gl.bindSampler(1, this.mainSamplerFW);\n this.gl.uniform1i(this.textureFWLoc, 1);\n\n this.gl.activeTexture(this.gl.TEXTURE2);\n this.gl.bindTexture(this.gl.TEXTURE_2D, texture);\n this.gl.bindSampler(2, this.mainSamplerFC);\n this.gl.uniform1i(this.textureFCLoc, 2);\n\n this.gl.activeTexture(this.gl.TEXTURE3);\n this.gl.bindTexture(this.gl.TEXTURE_2D, texture);\n this.gl.bindSampler(3, this.mainSamplerPW);\n this.gl.uniform1i(this.texturePWLoc, 3);\n\n this.gl.activeTexture(this.gl.TEXTURE4);\n this.gl.bindTexture(this.gl.TEXTURE_2D, texture);\n this.gl.bindSampler(4, this.mainSamplerPC);\n this.gl.uniform1i(this.texturePCLoc, 4);\n\n this.gl.activeTexture(this.gl.TEXTURE5);\n this.gl.bindTexture(this.gl.TEXTURE_2D, blurTexture1);\n this.gl.uniform1i(this.blurTexture1Loc, 5);\n\n this.gl.activeTexture(this.gl.TEXTURE6);\n this.gl.bindTexture(this.gl.TEXTURE_2D, blurTexture2);\n this.gl.uniform1i(this.blurTexture2Loc, 6);\n\n this.gl.activeTexture(this.gl.TEXTURE7);\n this.gl.bindTexture(this.gl.TEXTURE_2D, blurTexture3);\n this.gl.uniform1i(this.blurTexture3Loc, 7);\n\n this.gl.activeTexture(this.gl.TEXTURE8);\n this.gl.bindTexture(this.gl.TEXTURE_2D, this.noise.noiseTexLQ);\n this.gl.uniform1i(this.noiseLQLoc, 8);\n\n this.gl.activeTexture(this.gl.TEXTURE9);\n this.gl.bindTexture(this.gl.TEXTURE_2D, this.noise.noiseTexMQ);\n this.gl.uniform1i(this.noiseMQLoc, 9);\n\n this.gl.activeTexture(this.gl.TEXTURE10);\n this.gl.bindTexture(this.gl.TEXTURE_2D, this.noise.noiseTexHQ);\n this.gl.uniform1i(this.noiseHQLoc, 10);\n\n this.gl.activeTexture(this.gl.TEXTURE11);\n this.gl.bindTexture(this.gl.TEXTURE_2D, this.noise.noiseTexLQLite);\n this.gl.uniform1i(this.noiseLQLiteLoc, 11);\n\n this.gl.activeTexture(this.gl.TEXTURE12);\n this.gl.bindTexture(this.gl.TEXTURE_2D, this.noise.noiseTexLQ);\n this.gl.bindSampler(12, this.noise.noiseTexPointLQ);\n this.gl.uniform1i(this.noisePointLQLoc, 12);\n\n this.gl.activeTexture(this.gl.TEXTURE13);\n this.gl.bindTexture(this.gl.TEXTURE_3D, this.noise.noiseTexVolLQ);\n this.gl.uniform1i(this.noiseVolLQLoc, 13);\n\n this.gl.activeTexture(this.gl.TEXTURE14);\n this.gl.bindTexture(this.gl.TEXTURE_3D, this.noise.noiseTexVolHQ);\n this.gl.uniform1i(this.noiseVolHQLoc, 14);\n\n for (let i = 0; i < this.userTextures.length; i++) {\n const userTexture = this.userTextures[i];\n this.gl.activeTexture(this.gl.TEXTURE15 + i);\n this.gl.bindTexture(\n this.gl.TEXTURE_2D,\n this.image.getTexture(userTexture.sampler)\n );\n this.gl.uniform1i(userTexture.textureLoc, 15 + i);\n }\n\n this.gl.uniform1f(this.decayLoc, mdVSFrame.decay);\n this.gl.uniform2fv(this.resolutionLoc, [this.texsizeX, this.texsizeY]);\n this.gl.uniform4fv(this.aspectLoc, [\n this.aspectx,\n this.aspecty,\n this.invAspectx,\n this.invAspecty,\n ]);\n this.gl.uniform4fv(this.texsizeLoc, [\n this.texsizeX,\n this.texsizeY,\n 1.0 / this.texsizeX,\n 1.0 / this.texsizeY,\n ]);\n this.gl.uniform4fv(this.texsizeNoiseLQLoc, [256, 256, 1 / 256, 1 / 256]);\n this.gl.uniform4fv(this.texsizeNoiseMQLoc, [256, 256, 1 / 256, 1 / 256]);\n this.gl.uniform4fv(this.texsizeNoiseHQLoc, [256, 256, 1 / 256, 1 / 256]);\n this.gl.uniform4fv(this.texsizeNoiseLQLiteLoc, [32, 32, 1 / 32, 1 / 32]);\n this.gl.uniform4fv(this.texsizeNoiseVolLQLoc, [32, 32, 1 / 32, 1 / 32]);\n this.gl.uniform4fv(this.texsizeNoiseVolHQLoc, [32, 32, 1 / 32, 1 / 32]);\n\n this.gl.uniform1f(this.bassLoc, mdVSFrame.bass);\n this.gl.uniform1f(this.midLoc, mdVSFrame.mid);\n this.gl.uniform1f(this.trebLoc, mdVSFrame.treb);\n this.gl.uniform1f(\n this.volLoc,\n (mdVSFrame.bass + mdVSFrame.mid + mdVSFrame.treb) / 3\n );\n this.gl.uniform1f(this.bassAttLoc, mdVSFrame.bass_att);\n this.gl.uniform1f(this.midAttLoc, mdVSFrame.mid_att);\n this.gl.uniform1f(this.trebAttLoc, mdVSFrame.treb_att);\n this.gl.uniform1f(\n this.volAttLoc,\n (mdVSFrame.bass_att + mdVSFrame.mid_att + mdVSFrame.treb_att) / 3\n );\n this.gl.uniform1f(this.timeLoc, mdVSFrame.time);\n this.gl.uniform1f(this.frameLoc, mdVSFrame.frame);\n this.gl.uniform1f(this.fpsLoc, mdVSFrame.fps);\n this.gl.uniform4fv(this.randPresetLoc, mdVSFrame.rand_preset);\n this.gl.uniform4fv(\n this.randFrameLoc,\n new Float32Array([\n this.rng.random(),\n this.rng.random(),\n this.rng.random(),\n this.rng.random(),\n ])\n );\n\n this.gl.uniform4fv(\n this.qaLoc,\n new Float32Array([\n mdVSQs.q1 || 0,\n mdVSQs.q2 || 0,\n mdVSQs.q3 || 0,\n mdVSQs.q4 || 0,\n ])\n );\n this.gl.uniform4fv(\n this.qbLoc,\n new Float32Array([\n mdVSQs.q5 || 0,\n mdVSQs.q6 || 0,\n mdVSQs.q7 || 0,\n mdVSQs.q8 || 0,\n ])\n );\n this.gl.uniform4fv(\n this.qcLoc,\n new Float32Array([\n mdVSQs.q9 || 0,\n mdVSQs.q10 || 0,\n mdVSQs.q11 || 0,\n mdVSQs.q12 || 0,\n ])\n );\n this.gl.uniform4fv(\n this.qdLoc,\n new Float32Array([\n mdVSQs.q13 || 0,\n mdVSQs.q14 || 0,\n mdVSQs.q15 || 0,\n mdVSQs.q16 || 0,\n ])\n );\n this.gl.uniform4fv(\n this.qeLoc,\n new Float32Array([\n mdVSQs.q17 || 0,\n mdVSQs.q18 || 0,\n mdVSQs.q19 || 0,\n mdVSQs.q20 || 0,\n ])\n );\n this.gl.uniform4fv(\n this.qfLoc,\n new Float32Array([\n mdVSQs.q21 || 0,\n mdVSQs.q22 || 0,\n mdVSQs.q23 || 0,\n mdVSQs.q24 || 0,\n ])\n );\n this.gl.uniform4fv(\n this.qgLoc,\n new Float32Array([\n mdVSQs.q25 || 0,\n mdVSQs.q26 || 0,\n mdVSQs.q27 || 0,\n mdVSQs.q28 || 0,\n ])\n );\n this.gl.uniform4fv(\n this.qhLoc,\n new Float32Array([\n mdVSQs.q29 || 0,\n mdVSQs.q30 || 0,\n mdVSQs.q31 || 0,\n mdVSQs.q32 || 0,\n ])\n );\n this.gl.uniform4fv(this.slowRoamCosLoc, [\n 0.5 + 0.5 * Math.cos(mdVSFrame.time * 0.005),\n 0.5 + 0.5 * Math.cos(mdVSFrame.time * 0.008),\n 0.5 + 0.5 * Math.cos(mdVSFrame.time * 0.013),\n 0.5 + 0.5 * Math.cos(mdVSFrame.time * 0.022),\n ]);\n this.gl.uniform4fv(this.roamCosLoc, [\n 0.5 + 0.5 * Math.cos(mdVSFrame.time * 0.3),\n 0.5 + 0.5 * Math.cos(mdVSFrame.time * 1.3),\n 0.5 + 0.5 * Math.cos(mdVSFrame.time * 5.0),\n 0.5 + 0.5 * Math.cos(mdVSFrame.time * 20.0),\n ]);\n this.gl.uniform4fv(this.slowRoamSinLoc, [\n 0.5 + 0.5 * Math.sin(mdVSFrame.time * 0.005),\n 0.5 + 0.5 * Math.sin(mdVSFrame.time * 0.008),\n 0.5 + 0.5 * Math.sin(mdVSFrame.time * 0.013),\n 0.5 + 0.5 * Math.sin(mdVSFrame.time * 0.022),\n ]);\n this.gl.uniform4fv(this.roamSinLoc, [\n 0.5 + 0.5 * Math.sin(mdVSFrame.time * 0.3),\n 0.5 + 0.5 * Math.sin(mdVSFrame.time * 1.3),\n 0.5 + 0.5 * Math.sin(mdVSFrame.time * 5.0),\n 0.5 + 0.5 * Math.sin(mdVSFrame.time * 20.0),\n ]);\n\n this.bindBlurVals(blurMins, blurMaxs);\n\n if (blending) {\n this.gl.blendFunc(this.gl.SRC_ALPHA, this.gl.ONE_MINUS_SRC_ALPHA);\n } else {\n this.gl.disable(this.gl.BLEND);\n }\n\n this.gl.drawElements(\n this.gl.TRIANGLES,\n this.indices.length,\n this.gl.UNSIGNED_SHORT,\n 0\n );\n\n if (!blending) {\n this.gl.enable(this.gl.BLEND);\n }\n }\n}\n\nclass CompShader {\n constructor(gl, noise, image, opts = {}) {\n this.gl = gl;\n this.noise = noise;\n this.image = image;\n this.rng = getRNG();\n\n this.mesh_width = opts.mesh_width;\n this.mesh_height = opts.mesh_height;\n this.texsizeX = opts.texsizeX;\n this.texsizeY = opts.texsizeY;\n this.aspectx = opts.aspectx;\n this.aspecty = opts.aspecty;\n this.invAspectx = 1.0 / this.aspectx;\n this.invAspecty = 1.0 / this.aspecty;\n\n this.compWidth = 32;\n this.compHeight = 24;\n\n this.buildPositions();\n\n this.indexBuf = gl.createBuffer();\n this.positionVertexBuf = this.gl.createBuffer();\n this.compColorVertexBuf = this.gl.createBuffer();\n\n this.floatPrecision = ShaderUtils.getFragmentFloatPrecision(this.gl);\n this.createShader();\n\n this.mainSampler = this.gl.createSampler();\n this.mainSamplerFW = this.gl.createSampler();\n this.mainSamplerFC = this.gl.createSampler();\n this.mainSamplerPW = this.gl.createSampler();\n this.mainSamplerPC = this.gl.createSampler();\n\n gl.samplerParameteri(\n this.mainSampler,\n gl.TEXTURE_MIN_FILTER,\n gl.LINEAR_MIPMAP_LINEAR\n );\n gl.samplerParameteri(this.mainSampler, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n gl.samplerParameteri(this.mainSampler, gl.TEXTURE_WRAP_S, gl.REPEAT);\n gl.samplerParameteri(this.mainSampler, gl.TEXTURE_WRAP_T, gl.REPEAT);\n\n gl.samplerParameteri(\n this.mainSamplerFW,\n gl.TEXTURE_MIN_FILTER,\n gl.LINEAR_MIPMAP_LINEAR\n );\n gl.samplerParameteri(this.mainSamplerFW, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n gl.samplerParameteri(this.mainSamplerFW, gl.TEXTURE_WRAP_S, gl.REPEAT);\n gl.samplerParameteri(this.mainSamplerFW, gl.TEXTURE_WRAP_T, gl.REPEAT);\n\n gl.samplerParameteri(\n this.mainSamplerFC,\n gl.TEXTURE_MIN_FILTER,\n gl.LINEAR_MIPMAP_LINEAR\n );\n gl.samplerParameteri(this.mainSamplerFC, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n gl.samplerParameteri(\n this.mainSamplerFC,\n gl.TEXTURE_WRAP_S,\n gl.CLAMP_TO_EDGE\n );\n gl.samplerParameteri(\n this.mainSamplerFC,\n gl.TEXTURE_WRAP_T,\n gl.CLAMP_TO_EDGE\n );\n\n gl.samplerParameteri(\n this.mainSamplerPW,\n gl.TEXTURE_MIN_FILTER,\n gl.NEAREST_MIPMAP_NEAREST\n );\n gl.samplerParameteri(this.mainSamplerPW, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.samplerParameteri(this.mainSamplerPW, gl.TEXTURE_WRAP_S, gl.REPEAT);\n gl.samplerParameteri(this.mainSamplerPW, gl.TEXTURE_WRAP_T, gl.REPEAT);\n\n gl.samplerParameteri(\n this.mainSamplerPC,\n gl.TEXTURE_MIN_FILTER,\n gl.NEAREST_MIPMAP_NEAREST\n );\n gl.samplerParameteri(this.mainSamplerPC, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.samplerParameteri(\n this.mainSamplerPC,\n gl.TEXTURE_WRAP_S,\n gl.CLAMP_TO_EDGE\n );\n gl.samplerParameteri(\n this.mainSamplerPC,\n gl.TEXTURE_WRAP_T,\n gl.CLAMP_TO_EDGE\n );\n }\n\n // based on https://github.com/mrdoob/three.js/blob/master/src/geometries/PlaneGeometry.js\n buildPositions() {\n const width = 2;\n const height = 2;\n\n const widthHalf = width / 2;\n const heightHalf = height / 2;\n\n const gridX = this.compWidth;\n const gridY = this.compHeight;\n\n const gridX1 = gridX + 1;\n const gridY1 = gridY + 1;\n\n const segmentWidth = width / gridX;\n const segmentHeight = height / gridY;\n\n const vertices = [];\n for (let iy = 0; iy < gridY1; iy++) {\n const y = iy * segmentHeight - heightHalf;\n for (let ix = 0; ix < gridX1; ix++) {\n const x = ix * segmentWidth - widthHalf;\n\n vertices.push(x, -y, 0);\n }\n }\n\n const indices = [];\n for (let iy = 0; iy < gridY; iy++) {\n for (let ix = 0; ix < gridX; ix++) {\n const a = ix + gridX1 * iy;\n const b = ix + gridX1 * (iy + 1);\n const c = ix + 1 + gridX1 * (iy + 1);\n const d = ix + 1 + gridX1 * iy;\n\n indices.push(a, b, d);\n indices.push(b, c, d);\n }\n }\n\n this.vertices = new Float32Array(vertices);\n this.indices = new Uint16Array(indices);\n }\n\n updateGlobals(opts) {\n this.mesh_width = opts.mesh_width;\n this.mesh_height = opts.mesh_height;\n this.texsizeX = opts.texsizeX;\n this.texsizeY = opts.texsizeY;\n this.aspectx = opts.aspectx;\n this.aspecty = opts.aspecty;\n this.invAspectx = 1.0 / this.aspectx;\n this.invAspecty = 1.0 / this.aspecty;\n\n this.buildPositions();\n }\n\n createShader(shaderText = \"\") {\n let fragShaderText;\n let fragShaderHeaderText;\n if (shaderText.length === 0) {\n fragShaderText = `float orient_horiz = mod(echo_orientation, 2.0);\n float orient_x = (orient_horiz != 0.0) ? -1.0 : 1.0;\n float orient_y = (echo_orientation >= 2.0) ? -1.0 : 1.0;\n vec2 uv_echo = ((uv - 0.5) *\n (1.0 / echo_zoom) *\n vec2(orient_x, orient_y)) + 0.5;\n\n ret = mix(texture(sampler_main, uv).rgb,\n texture(sampler_main, uv_echo).rgb,\n echo_alpha);\n\n ret *= gammaAdj;\n\n if(fShader >= 1.0) {\n ret *= hue_shader;\n } else if(fShader > 0.001) {\n ret *= (1.0 - fShader) + (fShader * hue_shader);\n }\n\n if(brighten != 0) ret = sqrt(ret);\n if(darken != 0) ret = ret*ret;\n if(solarize != 0) ret = ret * (1.0 - ret) * 4.0;\n if(invert != 0) ret = 1.0 - ret;`;\n fragShaderHeaderText = \"\";\n } else {\n const shaderParts = ShaderUtils.getShaderParts(shaderText);\n fragShaderHeaderText = shaderParts[0];\n fragShaderText = shaderParts[1];\n }\n\n fragShaderText = fragShaderText.replace(/texture2D/g, \"texture\");\n fragShaderText = fragShaderText.replace(/texture3D/g, \"texture\");\n\n this.userTextures = ShaderUtils.getUserSamplers(fragShaderHeaderText);\n\n this.shaderProgram = this.gl.createProgram();\n\n const vertShader = this.gl.createShader(this.gl.VERTEX_SHADER);\n this.gl.shaderSource(\n vertShader,\n `\n #version 300 es\n const vec2 halfmad = vec2(0.5);\n in vec2 aPos;\n in vec4 aCompColor;\n out vec2 vUv;\n out vec4 vColor;\n void main(void) {\n gl_Position = vec4(aPos, 0.0, 1.0);\n vUv = aPos * halfmad + halfmad;\n vColor = aCompColor;\n }\n `.trim()\n );\n this.gl.compileShader(vertShader);\n\n const fragShader = this.gl.createShader(this.gl.FRAGMENT_SHADER);\n this.gl.shaderSource(\n fragShader,\n `\n #version 300 es\n precision ${this.floatPrecision} float;\n precision highp int;\n precision mediump sampler2D;\n precision mediump sampler3D;\n\n vec3 lum(vec3 v){\n return vec3(dot(v, vec3(0.32,0.49,0.29)));\n }\n\n in vec2 vUv;\n in vec4 vColor;\n out vec4 fragColor;\n uniform sampler2D sampler_main;\n uniform sampler2D sampler_fw_main;\n uniform sampler2D sampler_fc_main;\n uniform sampler2D sampler_pw_main;\n uniform sampler2D sampler_pc_main;\n uniform sampler2D sampler_blur1;\n uniform sampler2D sampler_blur2;\n uniform sampler2D sampler_blur3;\n uniform sampler2D sampler_noise_lq;\n uniform sampler2D sampler_noise_lq_lite;\n uniform sampler2D sampler_noise_mq;\n uniform sampler2D sampler_noise_hq;\n uniform sampler2D sampler_pw_noise_lq;\n uniform sampler3D sampler_noisevol_lq;\n uniform sampler3D sampler_noisevol_hq;\n\n uniform float time;\n uniform float gammaAdj;\n uniform float echo_zoom;\n uniform float echo_alpha;\n uniform float echo_orientation;\n uniform int invert;\n uniform int brighten;\n uniform int darken;\n uniform int solarize;\n uniform vec2 resolution;\n uniform vec4 aspect;\n uniform vec4 texsize;\n uniform vec4 texsize_noise_lq;\n uniform vec4 texsize_noise_mq;\n uniform vec4 texsize_noise_hq;\n uniform vec4 texsize_noise_lq_lite;\n uniform vec4 texsize_noisevol_lq;\n uniform vec4 texsize_noisevol_hq;\n\n uniform float bass;\n uniform float mid;\n uniform float treb;\n uniform float vol;\n uniform float bass_att;\n uniform float mid_att;\n uniform float treb_att;\n uniform float vol_att;\n\n uniform float frame;\n uniform float fps;\n\n uniform vec4 _qa;\n uniform vec4 _qb;\n uniform vec4 _qc;\n uniform vec4 _qd;\n uniform vec4 _qe;\n uniform vec4 _qf;\n uniform vec4 _qg;\n uniform vec4 _qh;\n\n #define q1 _qa.x\n #define q2 _qa.y\n #define q3 _qa.z\n #define q4 _qa.w\n #define q5 _qb.x\n #define q6 _qb.y\n #define q7 _qb.z\n #define q8 _qb.w\n #define q9 _qc.x\n #define q10 _qc.y\n #define q11 _qc.z\n #define q12 _qc.w\n #define q13 _qd.x\n #define q14 _qd.y\n #define q15 _qd.z\n #define q16 _qd.w\n #define q17 _qe.x\n #define q18 _qe.y\n #define q19 _qe.z\n #define q20 _qe.w\n #define q21 _qf.x\n #define q22 _qf.y\n #define q23 _qf.z\n #define q24 _qf.w\n #define q25 _qg.x\n #define q26 _qg.y\n #define q27 _qg.z\n #define q28 _qg.w\n #define q29 _qh.x\n #define q30 _qh.y\n #define q31 _qh.z\n #define q32 _qh.w\n\n uniform vec4 slow_roam_cos;\n uniform vec4 roam_cos;\n uniform vec4 slow_roam_sin;\n uniform vec4 roam_sin;\n\n uniform float blur1_min;\n uniform float blur1_max;\n uniform float blur2_min;\n uniform float blur2_max;\n uniform float blur3_min;\n uniform float blur3_max;\n\n uniform float scale1;\n uniform float scale2;\n uniform float scale3;\n uniform float bias1;\n uniform float bias2;\n uniform float bias3;\n\n uniform vec4 rand_frame;\n uniform vec4 rand_preset;\n\n uniform float fShader;\n\n float PI = ${Math.PI};\n\n ${fragShaderHeaderText}\n\n void main(void) {\n vec3 ret;\n vec2 uv = vUv;\n vec2 uv_orig = vUv;\n uv.y = 1.0 - uv.y;\n uv_orig.y = 1.0 - uv_orig.y;\n float rad = length(uv - 0.5);\n float ang = atan(uv.x - 0.5, uv.y - 0.5);\n vec3 hue_shader = vColor.rgb;\n\n ${fragShaderText}\n\n fragColor = vec4(ret, vColor.a);\n }\n `.trim()\n );\n this.gl.compileShader(fragShader);\n\n this.gl.attachShader(this.shaderProgram, vertShader);\n this.gl.attachShader(this.shaderProgram, fragShader);\n this.gl.linkProgram(this.shaderProgram);\n\n this.positionLocation = this.gl.getAttribLocation(\n this.shaderProgram,\n \"aPos\"\n );\n this.compColorLocation = this.gl.getAttribLocation(\n this.shaderProgram,\n \"aCompColor\"\n );\n this.textureLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"sampler_main\"\n );\n this.textureFWLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"sampler_fw_main\"\n );\n this.textureFCLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"sampler_fc_main\"\n );\n this.texturePWLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"sampler_pw_main\"\n );\n this.texturePCLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"sampler_pc_main\"\n );\n this.blurTexture1Loc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"sampler_blur1\"\n );\n this.blurTexture2Loc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"sampler_blur2\"\n );\n this.blurTexture3Loc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"sampler_blur3\"\n );\n this.noiseLQLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"sampler_noise_lq\"\n );\n this.noiseMQLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"sampler_noise_mq\"\n );\n this.noiseHQLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"sampler_noise_hq\"\n );\n this.noiseLQLiteLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"sampler_noise_lq_lite\"\n );\n this.noisePointLQLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"sampler_pw_noise_lq\"\n );\n this.noiseVolLQLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"sampler_noisevol_lq\"\n );\n this.noiseVolHQLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"sampler_noisevol_hq\"\n );\n this.timeLoc = this.gl.getUniformLocation(this.shaderProgram, \"time\");\n this.gammaAdjLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"gammaAdj\"\n );\n this.echoZoomLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"echo_zoom\"\n );\n this.echoAlphaLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"echo_alpha\"\n );\n this.echoOrientationLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"echo_orientation\"\n );\n this.invertLoc = this.gl.getUniformLocation(this.shaderProgram, \"invert\");\n this.brightenLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"brighten\"\n );\n this.darkenLoc = this.gl.getUniformLocation(this.shaderProgram, \"darken\");\n this.solarizeLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"solarize\"\n );\n this.texsizeLoc = this.gl.getUniformLocation(this.shaderProgram, \"texsize\");\n this.texsizeNoiseLQLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"texsize_noise_lq\"\n );\n this.texsizeNoiseMQLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"texsize_noise_mq\"\n );\n this.texsizeNoiseHQLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"texsize_noise_hq\"\n );\n this.texsizeNoiseLQLiteLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"texsize_noise_lq_lite\"\n );\n this.texsizeNoiseVolLQLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"texsize_noisevol_lq\"\n );\n this.texsizeNoiseVolHQLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"texsize_noisevol_hq\"\n );\n this.resolutionLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"resolution\"\n );\n this.aspectLoc = this.gl.getUniformLocation(this.shaderProgram, \"aspect\");\n this.bassLoc = this.gl.getUniformLocation(this.shaderProgram, \"bass\");\n this.midLoc = this.gl.getUniformLocation(this.shaderProgram, \"mid\");\n this.trebLoc = this.gl.getUniformLocation(this.shaderProgram, \"treb\");\n this.volLoc = this.gl.getUniformLocation(this.shaderProgram, \"vol\");\n this.bassAttLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"bass_att\"\n );\n this.midAttLoc = this.gl.getUniformLocation(this.shaderProgram, \"mid_att\");\n this.trebAttLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"treb_att\"\n );\n this.volAttLoc = this.gl.getUniformLocation(this.shaderProgram, \"vol_att\");\n this.frameLoc = this.gl.getUniformLocation(this.shaderProgram, \"frame\");\n this.fpsLoc = this.gl.getUniformLocation(this.shaderProgram, \"fps\");\n this.blur1MinLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"blur1_min\"\n );\n this.blur1MaxLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"blur1_max\"\n );\n this.blur2MinLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"blur2_min\"\n );\n this.blur2MaxLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"blur2_max\"\n );\n this.blur3MinLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"blur3_min\"\n );\n this.blur3MaxLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"blur3_max\"\n );\n this.scale1Loc = this.gl.getUniformLocation(this.shaderProgram, \"scale1\");\n this.scale2Loc = this.gl.getUniformLocation(this.shaderProgram, \"scale2\");\n this.scale3Loc = this.gl.getUniformLocation(this.shaderProgram, \"scale3\");\n this.bias1Loc = this.gl.getUniformLocation(this.shaderProgram, \"bias1\");\n this.bias2Loc = this.gl.getUniformLocation(this.shaderProgram, \"bias2\");\n this.bias3Loc = this.gl.getUniformLocation(this.shaderProgram, \"bias3\");\n this.randPresetLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"rand_preset\"\n );\n this.randFrameLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"rand_frame\"\n );\n this.fShaderLoc = this.gl.getUniformLocation(this.shaderProgram, \"fShader\");\n\n this.qaLoc = this.gl.getUniformLocation(this.shaderProgram, \"_qa\");\n this.qbLoc = this.gl.getUniformLocation(this.shaderProgram, \"_qb\");\n this.qcLoc = this.gl.getUniformLocation(this.shaderProgram, \"_qc\");\n this.qdLoc = this.gl.getUniformLocation(this.shaderProgram, \"_qd\");\n this.qeLoc = this.gl.getUniformLocation(this.shaderProgram, \"_qe\");\n this.qfLoc = this.gl.getUniformLocation(this.shaderProgram, \"_qf\");\n this.qgLoc = this.gl.getUniformLocation(this.shaderProgram, \"_qg\");\n this.qhLoc = this.gl.getUniformLocation(this.shaderProgram, \"_qh\");\n\n this.slowRoamCosLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"slow_roam_cos\"\n );\n this.roamCosLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"roam_cos\"\n );\n this.slowRoamSinLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"slow_roam_sin\"\n );\n this.roamSinLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"roam_sin\"\n );\n\n for (let i = 0; i < this.userTextures.length; i++) {\n const userTexture = this.userTextures[i];\n userTexture.textureLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n `sampler_${userTexture.sampler}`\n );\n }\n }\n\n updateShader(shaderText) {\n this.createShader(shaderText);\n }\n\n bindBlurVals(blurMins, blurMaxs) {\n const blurMin1 = blurMins[0];\n const blurMin2 = blurMins[1];\n const blurMin3 = blurMins[2];\n const blurMax1 = blurMaxs[0];\n const blurMax2 = blurMaxs[1];\n const blurMax3 = blurMaxs[2];\n\n const scale1 = blurMax1 - blurMin1;\n const bias1 = blurMin1;\n\n const scale2 = blurMax2 - blurMin2;\n const bias2 = blurMin2;\n\n const scale3 = blurMax3 - blurMin3;\n const bias3 = blurMin3;\n\n this.gl.uniform1f(this.blur1MinLoc, blurMin1);\n this.gl.uniform1f(this.blur1MaxLoc, blurMax1);\n this.gl.uniform1f(this.blur2MinLoc, blurMin2);\n this.gl.uniform1f(this.blur2MaxLoc, blurMax2);\n this.gl.uniform1f(this.blur3MinLoc, blurMin3);\n this.gl.uniform1f(this.blur3MaxLoc, blurMax3);\n this.gl.uniform1f(this.scale1Loc, scale1);\n this.gl.uniform1f(this.scale2Loc, scale2);\n this.gl.uniform1f(this.scale3Loc, scale3);\n this.gl.uniform1f(this.bias1Loc, bias1);\n this.gl.uniform1f(this.bias2Loc, bias2);\n this.gl.uniform1f(this.bias3Loc, bias3);\n }\n\n static generateHueBase(mdVSFrame) {\n const hueBase = new Float32Array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]);\n\n /* eslint-disable max-len */\n for (let i = 0; i < 4; i++) {\n hueBase[i * 3 + 0] =\n 0.6 +\n 0.3 *\n Math.sin(\n mdVSFrame.time * 30.0 * 0.0143 +\n 3 +\n i * 21 +\n mdVSFrame.rand_start[3]\n );\n hueBase[i * 3 + 1] =\n 0.6 +\n 0.3 *\n Math.sin(\n mdVSFrame.time * 30.0 * 0.0107 +\n 1 +\n i * 13 +\n mdVSFrame.rand_start[1]\n );\n hueBase[i * 3 + 2] =\n 0.6 +\n 0.3 *\n Math.sin(\n mdVSFrame.time * 30.0 * 0.0129 + 6 + i * 9 + mdVSFrame.rand_start[2]\n );\n const maxshade = Math.max(\n hueBase[i * 3],\n hueBase[i * 3 + 1],\n hueBase[i * 3 + 2]\n );\n for (let k = 0; k < 3; k++) {\n hueBase[i * 3 + k] = hueBase[i * 3 + k] / maxshade;\n hueBase[i * 3 + k] = 0.5 + 0.5 * hueBase[i * 3 + k];\n }\n }\n /* eslint-enable max-len */\n\n return hueBase;\n }\n\n generateCompColors(blending, mdVSFrame, warpColor) {\n const hueBase = CompShader.generateHueBase(mdVSFrame);\n const gridX1 = this.compWidth + 1;\n const gridY1 = this.compHeight + 1;\n const compColor = new Float32Array(gridX1 * gridY1 * 4);\n\n let offsetColor = 0;\n for (let j = 0; j < gridY1; j++) {\n for (let i = 0; i < gridX1; i++) {\n let x = i / this.compWidth;\n let y = j / this.compHeight;\n\n const col = [1, 1, 1];\n for (let c = 0; c < 3; c++) {\n col[c] =\n hueBase[0 + c] * x * y +\n hueBase[3 + c] * (1 - x) * y +\n hueBase[6 + c] * x * (1 - y) +\n hueBase[9 + c] * (1 - x) * (1 - y);\n }\n\n let alpha = 1;\n if (blending) {\n x *= this.mesh_width + 1;\n y *= this.mesh_height + 1;\n x = Math.clamp(x, 0, this.mesh_width - 1);\n y = Math.clamp(y, 0, this.mesh_height - 1);\n const nx = Math.floor(x);\n const ny = Math.floor(y);\n const dx = x - nx;\n const dy = y - ny;\n const alpha00 = warpColor[(ny * (this.mesh_width + 1) + nx) * 4 + 3];\n const alpha01 =\n warpColor[(ny * (this.mesh_width + 1) + (nx + 1)) * 4 + 3];\n const alpha10 =\n warpColor[((ny + 1) * (this.mesh_width + 1) + nx) * 4 + 3];\n const alpha11 =\n warpColor[((ny + 1) * (this.mesh_width + 1) + (nx + 1)) * 4 + 3];\n alpha =\n alpha00 * (1 - dx) * (1 - dy) +\n alpha01 * dx * (1 - dy) +\n alpha10 * (1 - dx) * dy +\n alpha11 * dx * dy;\n }\n\n compColor[offsetColor + 0] = col[0];\n compColor[offsetColor + 1] = col[1];\n compColor[offsetColor + 2] = col[2];\n compColor[offsetColor + 3] = alpha;\n\n offsetColor += 4;\n }\n }\n\n return compColor;\n }\n\n renderQuadTexture(\n blending,\n texture,\n blurTexture1,\n blurTexture2,\n blurTexture3,\n blurMins,\n blurMaxs,\n mdVSFrame,\n mdVSQs,\n warpColor\n ) {\n const compColors = this.generateCompColors(blending, mdVSFrame, warpColor);\n\n this.gl.useProgram(this.shaderProgram);\n\n this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER, this.indexBuf);\n this.gl.bufferData(\n this.gl.ELEMENT_ARRAY_BUFFER,\n this.indices,\n this.gl.STATIC_DRAW\n );\n\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.positionVertexBuf);\n this.gl.bufferData(\n this.gl.ARRAY_BUFFER,\n this.vertices,\n this.gl.STATIC_DRAW\n );\n\n this.gl.vertexAttribPointer(\n this.positionLocation,\n 3,\n this.gl.FLOAT,\n false,\n 0,\n 0\n );\n this.gl.enableVertexAttribArray(this.positionLocation);\n\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.compColorVertexBuf);\n this.gl.bufferData(this.gl.ARRAY_BUFFER, compColors, this.gl.STATIC_DRAW);\n\n this.gl.vertexAttribPointer(\n this.compColorLocation,\n 4,\n this.gl.FLOAT,\n false,\n 0,\n 0\n );\n this.gl.enableVertexAttribArray(this.compColorLocation);\n\n const wrapping =\n mdVSFrame.wrap !== 0 ? this.gl.REPEAT : this.gl.CLAMP_TO_EDGE;\n this.gl.samplerParameteri(\n this.mainSampler,\n this.gl.TEXTURE_WRAP_S,\n wrapping\n );\n this.gl.samplerParameteri(\n this.mainSampler,\n this.gl.TEXTURE_WRAP_T,\n wrapping\n );\n\n this.gl.activeTexture(this.gl.TEXTURE0);\n this.gl.bindTexture(this.gl.TEXTURE_2D, texture);\n this.gl.bindSampler(0, this.mainSampler);\n this.gl.uniform1i(this.textureLoc, 0);\n\n this.gl.activeTexture(this.gl.TEXTURE1);\n this.gl.bindTexture(this.gl.TEXTURE_2D, texture);\n this.gl.bindSampler(1, this.mainSamplerFW);\n this.gl.uniform1i(this.textureFWLoc, 1);\n\n this.gl.activeTexture(this.gl.TEXTURE2);\n this.gl.bindTexture(this.gl.TEXTURE_2D, texture);\n this.gl.bindSampler(2, this.mainSamplerFC);\n this.gl.uniform1i(this.textureFCLoc, 2);\n\n this.gl.activeTexture(this.gl.TEXTURE3);\n this.gl.bindTexture(this.gl.TEXTURE_2D, texture);\n this.gl.bindSampler(3, this.mainSamplerPW);\n this.gl.uniform1i(this.texturePWLoc, 3);\n\n this.gl.activeTexture(this.gl.TEXTURE4);\n this.gl.bindTexture(this.gl.TEXTURE_2D, texture);\n this.gl.bindSampler(4, this.mainSamplerPC);\n this.gl.uniform1i(this.texturePCLoc, 4);\n\n this.gl.activeTexture(this.gl.TEXTURE5);\n this.gl.bindTexture(this.gl.TEXTURE_2D, blurTexture1);\n this.gl.uniform1i(this.blurTexture1Loc, 5);\n\n this.gl.activeTexture(this.gl.TEXTURE6);\n this.gl.bindTexture(this.gl.TEXTURE_2D, blurTexture2);\n this.gl.uniform1i(this.blurTexture2Loc, 6);\n\n this.gl.activeTexture(this.gl.TEXTURE7);\n this.gl.bindTexture(this.gl.TEXTURE_2D, blurTexture3);\n this.gl.uniform1i(this.blurTexture3Loc, 7);\n\n this.gl.activeTexture(this.gl.TEXTURE8);\n this.gl.bindTexture(this.gl.TEXTURE_2D, this.noise.noiseTexLQ);\n this.gl.uniform1i(this.noiseLQLoc, 8);\n\n this.gl.activeTexture(this.gl.TEXTURE9);\n this.gl.bindTexture(this.gl.TEXTURE_2D, this.noise.noiseTexMQ);\n this.gl.uniform1i(this.noiseMQLoc, 9);\n\n this.gl.activeTexture(this.gl.TEXTURE10);\n this.gl.bindTexture(this.gl.TEXTURE_2D, this.noise.noiseTexHQ);\n this.gl.uniform1i(this.noiseHQLoc, 10);\n\n this.gl.activeTexture(this.gl.TEXTURE11);\n this.gl.bindTexture(this.gl.TEXTURE_2D, this.noise.noiseTexLQLite);\n this.gl.uniform1i(this.noiseLQLiteLoc, 11);\n\n this.gl.activeTexture(this.gl.TEXTURE12);\n this.gl.bindTexture(this.gl.TEXTURE_2D, this.noise.noiseTexLQ);\n this.gl.bindSampler(12, this.noise.noiseTexPointLQ);\n this.gl.uniform1i(this.noisePointLQLoc, 12);\n\n this.gl.activeTexture(this.gl.TEXTURE13);\n this.gl.bindTexture(this.gl.TEXTURE_3D, this.noise.noiseTexVolLQ);\n this.gl.uniform1i(this.noiseVolLQLoc, 13);\n\n this.gl.activeTexture(this.gl.TEXTURE14);\n this.gl.bindTexture(this.gl.TEXTURE_3D, this.noise.noiseTexVolHQ);\n this.gl.uniform1i(this.noiseVolHQLoc, 14);\n\n for (let i = 0; i < this.userTextures.length; i++) {\n const userTexture = this.userTextures[i];\n this.gl.activeTexture(this.gl.TEXTURE15 + i);\n this.gl.bindTexture(\n this.gl.TEXTURE_2D,\n this.image.getTexture(userTexture.sampler)\n );\n this.gl.uniform1i(userTexture.textureLoc, 15 + i);\n }\n\n this.gl.uniform1f(this.timeLoc, mdVSFrame.time);\n this.gl.uniform1f(this.gammaAdjLoc, mdVSFrame.gammaadj);\n this.gl.uniform1f(this.echoZoomLoc, mdVSFrame.echo_zoom);\n this.gl.uniform1f(this.echoAlphaLoc, mdVSFrame.echo_alpha);\n this.gl.uniform1f(this.echoOrientationLoc, mdVSFrame.echo_orient);\n this.gl.uniform1i(this.invertLoc, mdVSFrame.invert);\n this.gl.uniform1i(this.brightenLoc, mdVSFrame.brighten);\n this.gl.uniform1i(this.darkenLoc, mdVSFrame.darken);\n this.gl.uniform1i(this.solarizeLoc, mdVSFrame.solarize);\n this.gl.uniform2fv(this.resolutionLoc, [this.texsizeX, this.texsizeY]);\n this.gl.uniform4fv(this.aspectLoc, [\n this.aspectx,\n this.aspecty,\n this.invAspectx,\n this.invAspecty,\n ]);\n this.gl.uniform4fv(\n this.texsizeLoc,\n new Float32Array([\n this.texsizeX,\n this.texsizeY,\n 1.0 / this.texsizeX,\n 1.0 / this.texsizeY,\n ])\n );\n this.gl.uniform4fv(this.texsizeNoiseLQLoc, [256, 256, 1 / 256, 1 / 256]);\n this.gl.uniform4fv(this.texsizeNoiseMQLoc, [256, 256, 1 / 256, 1 / 256]);\n this.gl.uniform4fv(this.texsizeNoiseHQLoc, [256, 256, 1 / 256, 1 / 256]);\n this.gl.uniform4fv(this.texsizeNoiseLQLiteLoc, [32, 32, 1 / 32, 1 / 32]);\n this.gl.uniform4fv(this.texsizeNoiseVolLQLoc, [32, 32, 1 / 32, 1 / 32]);\n this.gl.uniform4fv(this.texsizeNoiseVolHQLoc, [32, 32, 1 / 32, 1 / 32]);\n this.gl.uniform1f(this.bassLoc, mdVSFrame.bass);\n this.gl.uniform1f(this.midLoc, mdVSFrame.mid);\n this.gl.uniform1f(this.trebLoc, mdVSFrame.treb);\n this.gl.uniform1f(\n this.volLoc,\n (mdVSFrame.bass + mdVSFrame.mid + mdVSFrame.treb) / 3\n );\n this.gl.uniform1f(this.bassAttLoc, mdVSFrame.bass_att);\n this.gl.uniform1f(this.midAttLoc, mdVSFrame.mid_att);\n this.gl.uniform1f(this.trebAttLoc, mdVSFrame.treb_att);\n this.gl.uniform1f(\n this.volAttLoc,\n (mdVSFrame.bass_att + mdVSFrame.mid_att + mdVSFrame.treb_att) / 3\n );\n this.gl.uniform1f(this.frameLoc, mdVSFrame.frame);\n this.gl.uniform1f(this.fpsLoc, mdVSFrame.fps);\n this.gl.uniform4fv(this.randPresetLoc, mdVSFrame.rand_preset);\n this.gl.uniform4fv(\n this.randFrameLoc,\n new Float32Array([\n this.rng.random(),\n this.rng.random(),\n this.rng.random(),\n this.rng.random(),\n ])\n );\n this.gl.uniform1f(this.fShaderLoc, mdVSFrame.fshader);\n\n this.gl.uniform4fv(\n this.qaLoc,\n new Float32Array([\n mdVSQs.q1 || 0,\n mdVSQs.q2 || 0,\n mdVSQs.q3 || 0,\n mdVSQs.q4 || 0,\n ])\n );\n this.gl.uniform4fv(\n this.qbLoc,\n new Float32Array([\n mdVSQs.q5 || 0,\n mdVSQs.q6 || 0,\n mdVSQs.q7 || 0,\n mdVSQs.q8 || 0,\n ])\n );\n this.gl.uniform4fv(\n this.qcLoc,\n new Float32Array([\n mdVSQs.q9 || 0,\n mdVSQs.q10 || 0,\n mdVSQs.q11 || 0,\n mdVSQs.q12 || 0,\n ])\n );\n this.gl.uniform4fv(\n this.qdLoc,\n new Float32Array([\n mdVSQs.q13 || 0,\n mdVSQs.q14 || 0,\n mdVSQs.q15 || 0,\n mdVSQs.q16 || 0,\n ])\n );\n this.gl.uniform4fv(\n this.qeLoc,\n new Float32Array([\n mdVSQs.q17 || 0,\n mdVSQs.q18 || 0,\n mdVSQs.q19 || 0,\n mdVSQs.q20 || 0,\n ])\n );\n this.gl.uniform4fv(\n this.qfLoc,\n new Float32Array([\n mdVSQs.q21 || 0,\n mdVSQs.q22 || 0,\n mdVSQs.q23 || 0,\n mdVSQs.q24 || 0,\n ])\n );\n this.gl.uniform4fv(\n this.qgLoc,\n new Float32Array([\n mdVSQs.q25 || 0,\n mdVSQs.q26 || 0,\n mdVSQs.q27 || 0,\n mdVSQs.q28 || 0,\n ])\n );\n this.gl.uniform4fv(\n this.qhLoc,\n new Float32Array([\n mdVSQs.q29 || 0,\n mdVSQs.q30 || 0,\n mdVSQs.q31 || 0,\n mdVSQs.q32 || 0,\n ])\n );\n this.gl.uniform4fv(this.slowRoamCosLoc, [\n 0.5 + 0.5 * Math.cos(mdVSFrame.time * 0.005),\n 0.5 + 0.5 * Math.cos(mdVSFrame.time * 0.008),\n 0.5 + 0.5 * Math.cos(mdVSFrame.time * 0.013),\n 0.5 + 0.5 * Math.cos(mdVSFrame.time * 0.022),\n ]);\n this.gl.uniform4fv(this.roamCosLoc, [\n 0.5 + 0.5 * Math.cos(mdVSFrame.time * 0.3),\n 0.5 + 0.5 * Math.cos(mdVSFrame.time * 1.3),\n 0.5 + 0.5 * Math.cos(mdVSFrame.time * 5.0),\n 0.5 + 0.5 * Math.cos(mdVSFrame.time * 20.0),\n ]);\n this.gl.uniform4fv(this.slowRoamSinLoc, [\n 0.5 + 0.5 * Math.sin(mdVSFrame.time * 0.005),\n 0.5 + 0.5 * Math.sin(mdVSFrame.time * 0.008),\n 0.5 + 0.5 * Math.sin(mdVSFrame.time * 0.013),\n 0.5 + 0.5 * Math.sin(mdVSFrame.time * 0.022),\n ]);\n this.gl.uniform4fv(this.roamSinLoc, [\n 0.5 + 0.5 * Math.sin(mdVSFrame.time * 0.3),\n 0.5 + 0.5 * Math.sin(mdVSFrame.time * 1.3),\n 0.5 + 0.5 * Math.sin(mdVSFrame.time * 5.0),\n 0.5 + 0.5 * Math.sin(mdVSFrame.time * 20.0),\n ]);\n\n this.bindBlurVals(blurMins, blurMaxs);\n\n if (blending) {\n this.gl.blendFunc(this.gl.SRC_ALPHA, this.gl.ONE_MINUS_SRC_ALPHA);\n } else {\n this.gl.disable(this.gl.BLEND);\n }\n\n this.gl.drawElements(\n this.gl.TRIANGLES,\n this.indices.length,\n this.gl.UNSIGNED_SHORT,\n 0\n );\n\n if (!blending) {\n this.gl.enable(this.gl.BLEND);\n }\n }\n}\n\nclass OutputShader {\n constructor(gl, opts) {\n this.gl = gl;\n\n this.textureRatio = opts.textureRatio;\n this.texsizeX = opts.texsizeX;\n this.texsizeY = opts.texsizeY;\n\n this.positions = new Float32Array([-1, -1, 1, -1, -1, 1, 1, 1]);\n\n this.vertexBuf = this.gl.createBuffer();\n\n this.floatPrecision = ShaderUtils.getFragmentFloatPrecision(this.gl);\n if (this.useFXAA()) {\n this.createFXAAShader();\n } else {\n this.createShader();\n }\n }\n\n useFXAA() {\n return this.textureRatio <= 1;\n }\n\n updateGlobals(opts) {\n this.textureRatio = opts.textureRatio;\n this.texsizeX = opts.texsizeX;\n this.texsizeY = opts.texsizeY;\n\n this.gl.deleteProgram(this.shaderProgram);\n\n if (this.useFXAA()) {\n this.createFXAAShader();\n } else {\n this.createShader();\n }\n }\n\n // based on https://github.com/mattdesl/glsl-fxaa\n createFXAAShader() {\n this.shaderProgram = this.gl.createProgram();\n\n const vertShader = this.gl.createShader(this.gl.VERTEX_SHADER);\n this.gl.shaderSource(\n vertShader,\n `#version 300 es\n const vec2 halfmad = vec2(0.5);\n in vec2 aPos;\n out vec2 v_rgbM;\n out vec2 v_rgbNW;\n out vec2 v_rgbNE;\n out vec2 v_rgbSW;\n out vec2 v_rgbSE;\n uniform vec4 texsize;\n void main(void) {\n gl_Position = vec4(aPos, 0.0, 1.0);\n\n v_rgbM = aPos * halfmad + halfmad;\n v_rgbNW = v_rgbM + (vec2(-1.0, -1.0) * texsize.zx);\n v_rgbNE = v_rgbM + (vec2(1.0, -1.0) * texsize.zx);\n v_rgbSW = v_rgbM + (vec2(-1.0, 1.0) * texsize.zx);\n v_rgbSE = v_rgbM + (vec2(1.0, 1.0) * texsize.zx);\n }`\n );\n this.gl.compileShader(vertShader);\n\n const fragShader = this.gl.createShader(this.gl.FRAGMENT_SHADER);\n this.gl.shaderSource(\n fragShader,\n `#version 300 es\n precision ${this.floatPrecision} float;\n precision highp int;\n precision mediump sampler2D;\n\n in vec2 v_rgbM;\n in vec2 v_rgbNW;\n in vec2 v_rgbNE;\n in vec2 v_rgbSW;\n in vec2 v_rgbSE;\n out vec4 fragColor;\n uniform vec4 texsize;\n uniform sampler2D uTexture;\n\n #ifndef FXAA_REDUCE_MIN\n #define FXAA_REDUCE_MIN (1.0/ 128.0)\n #endif\n #ifndef FXAA_REDUCE_MUL\n #define FXAA_REDUCE_MUL (1.0 / 8.0)\n #endif\n #ifndef FXAA_SPAN_MAX\n #define FXAA_SPAN_MAX 8.0\n #endif\n\n void main(void) {\n vec4 color;\n vec3 rgbNW = textureLod(uTexture, v_rgbNW, 0.0).xyz;\n vec3 rgbNE = textureLod(uTexture, v_rgbNE, 0.0).xyz;\n vec3 rgbSW = textureLod(uTexture, v_rgbSW, 0.0).xyz;\n vec3 rgbSE = textureLod(uTexture, v_rgbSE, 0.0).xyz;\n vec3 rgbM = textureLod(uTexture, v_rgbM, 0.0).xyz;\n vec3 luma = vec3(0.299, 0.587, 0.114);\n float lumaNW = dot(rgbNW, luma);\n float lumaNE = dot(rgbNE, luma);\n float lumaSW = dot(rgbSW, luma);\n float lumaSE = dot(rgbSE, luma);\n float lumaM = dot(rgbM, luma);\n float lumaMin = min(lumaM, min(min(lumaNW, lumaNE), min(lumaSW, lumaSE)));\n float lumaMax = max(lumaM, max(max(lumaNW, lumaNE), max(lumaSW, lumaSE)));\n\n mediump vec2 dir;\n dir.x = -((lumaNW + lumaNE) - (lumaSW + lumaSE));\n dir.y = ((lumaNW + lumaSW) - (lumaNE + lumaSE));\n\n float dirReduce = max((lumaNW + lumaNE + lumaSW + lumaSE) *\n (0.25 * FXAA_REDUCE_MUL), FXAA_REDUCE_MIN);\n\n float rcpDirMin = 1.0 / (min(abs(dir.x), abs(dir.y)) + dirReduce);\n dir = min(vec2(FXAA_SPAN_MAX, FXAA_SPAN_MAX),\n max(vec2(-FXAA_SPAN_MAX, -FXAA_SPAN_MAX),\n dir * rcpDirMin)) * texsize.zw;\n\n vec3 rgbA = 0.5 * (\n textureLod(uTexture, v_rgbM + dir * (1.0 / 3.0 - 0.5), 0.0).xyz +\n textureLod(uTexture, v_rgbM + dir * (2.0 / 3.0 - 0.5), 0.0).xyz);\n vec3 rgbB = rgbA * 0.5 + 0.25 * (\n textureLod(uTexture, v_rgbM + dir * -0.5, 0.0).xyz +\n textureLod(uTexture, v_rgbM + dir * 0.5, 0.0).xyz);\n\n float lumaB = dot(rgbB, luma);\n if ((lumaB < lumaMin) || (lumaB > lumaMax))\n color = vec4(rgbA, 1.0);\n else\n color = vec4(rgbB, 1.0);\n\n fragColor = color;\n }`\n );\n this.gl.compileShader(fragShader);\n\n this.gl.attachShader(this.shaderProgram, vertShader);\n this.gl.attachShader(this.shaderProgram, fragShader);\n this.gl.linkProgram(this.shaderProgram);\n\n this.positionLocation = this.gl.getAttribLocation(\n this.shaderProgram,\n \"aPos\"\n );\n this.textureLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"uTexture\"\n );\n this.texsizeLoc = this.gl.getUniformLocation(this.shaderProgram, \"texsize\");\n }\n\n createShader() {\n this.shaderProgram = this.gl.createProgram();\n\n const vertShader = this.gl.createShader(this.gl.VERTEX_SHADER);\n this.gl.shaderSource(\n vertShader,\n `#version 300 es\n const vec2 halfmad = vec2(0.5);\n in vec2 aPos;\n out vec2 uv;\n void main(void) {\n gl_Position = vec4(aPos, 0.0, 1.0);\n uv = aPos * halfmad + halfmad;\n }`\n );\n this.gl.compileShader(vertShader);\n\n const fragShader = this.gl.createShader(this.gl.FRAGMENT_SHADER);\n this.gl.shaderSource(\n fragShader,\n `#version 300 es\n precision ${this.floatPrecision} float;\n precision highp int;\n precision mediump sampler2D;\n\n in vec2 uv;\n out vec4 fragColor;\n uniform sampler2D uTexture;\n\n void main(void) {\n fragColor = vec4(texture(uTexture, uv).rgb, 1.0);\n }`\n );\n this.gl.compileShader(fragShader);\n\n this.gl.attachShader(this.shaderProgram, vertShader);\n this.gl.attachShader(this.shaderProgram, fragShader);\n this.gl.linkProgram(this.shaderProgram);\n\n this.positionLocation = this.gl.getAttribLocation(\n this.shaderProgram,\n \"aPos\"\n );\n this.textureLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"uTexture\"\n );\n }\n\n renderQuadTexture(texture) {\n this.gl.useProgram(this.shaderProgram);\n\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.vertexBuf);\n this.gl.bufferData(\n this.gl.ARRAY_BUFFER,\n this.positions,\n this.gl.STATIC_DRAW\n );\n\n this.gl.vertexAttribPointer(\n this.positionLocation,\n 2,\n this.gl.FLOAT,\n false,\n 0,\n 0\n );\n this.gl.enableVertexAttribArray(this.positionLocation);\n\n this.gl.activeTexture(this.gl.TEXTURE0);\n this.gl.bindTexture(this.gl.TEXTURE_2D, texture);\n\n this.gl.uniform1i(this.textureLoc, 0);\n\n if (this.useFXAA()) {\n this.gl.uniform4fv(\n this.texsizeLoc,\n new Float32Array([\n this.texsizeX,\n this.texsizeY,\n 1.0 / this.texsizeX,\n 1.0 / this.texsizeY,\n ])\n );\n }\n\n this.gl.blendFunc(this.gl.SRC_ALPHA, this.gl.ONE_MINUS_SRC_ALPHA);\n\n this.gl.drawArrays(this.gl.TRIANGLE_STRIP, 0, 4);\n }\n}\n\nclass ResampleShader {\n constructor(gl) {\n this.gl = gl;\n\n this.positions = new Float32Array([-1, -1, 1, -1, -1, 1, 1, 1]);\n\n this.vertexBuf = this.gl.createBuffer();\n\n this.floatPrecision = ShaderUtils.getFragmentFloatPrecision(this.gl);\n this.createShader();\n }\n\n createShader() {\n this.shaderProgram = this.gl.createProgram();\n\n const vertShader = this.gl.createShader(this.gl.VERTEX_SHADER);\n this.gl.shaderSource(\n vertShader,\n `#version 300 es\n const vec2 halfmad = vec2(0.5);\n in vec2 aPos;\n out vec2 uv;\n void main(void) {\n gl_Position = vec4(aPos, 0.0, 1.0);\n uv = aPos * halfmad + halfmad;\n }`\n );\n this.gl.compileShader(vertShader);\n\n const fragShader = this.gl.createShader(this.gl.FRAGMENT_SHADER);\n this.gl.shaderSource(\n fragShader,\n `#version 300 es\n precision ${this.floatPrecision} float;\n precision highp int;\n precision mediump sampler2D;\n\n in vec2 uv;\n out vec4 fragColor;\n uniform sampler2D uTexture;\n\n void main(void) {\n fragColor = vec4(texture(uTexture, uv).rgb, 1.0);\n }`\n );\n this.gl.compileShader(fragShader);\n\n this.gl.attachShader(this.shaderProgram, vertShader);\n this.gl.attachShader(this.shaderProgram, fragShader);\n this.gl.linkProgram(this.shaderProgram);\n\n this.positionLocation = this.gl.getAttribLocation(\n this.shaderProgram,\n \"aPos\"\n );\n this.textureLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"uTexture\"\n );\n }\n\n renderQuadTexture(texture) {\n this.gl.useProgram(this.shaderProgram);\n\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.vertexBuf);\n this.gl.bufferData(\n this.gl.ARRAY_BUFFER,\n this.positions,\n this.gl.STATIC_DRAW\n );\n\n this.gl.vertexAttribPointer(\n this.positionLocation,\n 2,\n this.gl.FLOAT,\n false,\n 0,\n 0\n );\n this.gl.enableVertexAttribArray(this.positionLocation);\n\n this.gl.activeTexture(this.gl.TEXTURE0);\n this.gl.bindTexture(this.gl.TEXTURE_2D, texture);\n this.gl.generateMipmap(this.gl.TEXTURE_2D);\n\n this.gl.uniform1i(this.textureLoc, 0);\n\n this.gl.blendFunc(this.gl.SRC_ALPHA, this.gl.ONE_MINUS_SRC_ALPHA);\n\n this.gl.drawArrays(this.gl.TRIANGLE_STRIP, 0, 4);\n }\n}\n\nclass BlurVertical {\n constructor(gl, blurLevel) {\n this.gl = gl;\n this.blurLevel = blurLevel;\n\n const w = [4.0, 3.8, 3.5, 2.9, 1.9, 1.2, 0.7, 0.3];\n const w1V = w[0] + w[1] + w[2] + w[3];\n const w2V = w[4] + w[5] + w[6] + w[7];\n const d1V = 0 + 2 * ((w[2] + w[3]) / w1V);\n const d2V = 2 + 2 * ((w[6] + w[7]) / w2V);\n\n this.wds = new Float32Array([w1V, w2V, d1V, d2V]);\n this.wDiv = 1.0 / ((w1V + w2V) * 2);\n\n this.positions = new Float32Array([-1, -1, 1, -1, -1, 1, 1, 1]);\n\n this.vertexBuf = this.gl.createBuffer();\n\n this.floatPrecision = ShaderUtils.getFragmentFloatPrecision(this.gl);\n this.createShader();\n }\n\n createShader() {\n this.shaderProgram = this.gl.createProgram();\n\n const vertShader = this.gl.createShader(this.gl.VERTEX_SHADER);\n this.gl.shaderSource(\n vertShader,\n `\n #version 300 es\n const vec2 halfmad = vec2(0.5);\n in vec2 aPos;\n out vec2 uv;\n void main(void) {\n gl_Position = vec4(aPos, 0.0, 1.0);\n uv = aPos * halfmad + halfmad;\n }\n `.trim()\n );\n this.gl.compileShader(vertShader);\n\n const fragShader = this.gl.createShader(this.gl.FRAGMENT_SHADER);\n this.gl.shaderSource(\n fragShader,\n `#version 300 es\n precision ${this.floatPrecision} float;\n precision highp int;\n precision mediump sampler2D;\n\n in vec2 uv;\n out vec4 fragColor;\n uniform sampler2D uTexture;\n uniform vec4 texsize;\n uniform float ed1;\n uniform float ed2;\n uniform float ed3;\n uniform vec4 wds;\n uniform float wdiv;\n\n void main(void) {\n float w1 = wds[0];\n float w2 = wds[1];\n float d1 = wds[2];\n float d2 = wds[3];\n\n vec2 uv2 = uv.xy;\n\n vec3 blur =\n ( texture(uTexture, uv2 + vec2(0.0, d1 * texsize.w) ).xyz\n + texture(uTexture, uv2 + vec2(0.0,-d1 * texsize.w) ).xyz) * w1 +\n ( texture(uTexture, uv2 + vec2(0.0, d2 * texsize.w) ).xyz\n + texture(uTexture, uv2 + vec2(0.0,-d2 * texsize.w) ).xyz) * w2;\n\n blur.xyz *= wdiv;\n\n float t = min(min(uv.x, uv.y), 1.0 - max(uv.x, uv.y));\n t = sqrt(t);\n t = ed1 + ed2 * clamp(t * ed3, 0.0, 1.0);\n blur.xyz *= t;\n\n fragColor = vec4(blur, 1.0);\n }`\n );\n this.gl.compileShader(fragShader);\n\n this.gl.attachShader(this.shaderProgram, vertShader);\n this.gl.attachShader(this.shaderProgram, fragShader);\n this.gl.linkProgram(this.shaderProgram);\n\n this.positionLocation = this.gl.getAttribLocation(\n this.shaderProgram,\n \"aPos\"\n );\n this.textureLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"uTexture\"\n );\n this.texsizeLocation = this.gl.getUniformLocation(\n this.shaderProgram,\n \"texsize\"\n );\n this.ed1Loc = this.gl.getUniformLocation(this.shaderProgram, \"ed1\");\n this.ed2Loc = this.gl.getUniformLocation(this.shaderProgram, \"ed2\");\n this.ed3Loc = this.gl.getUniformLocation(this.shaderProgram, \"ed3\");\n this.wdsLocation = this.gl.getUniformLocation(this.shaderProgram, \"wds\");\n this.wdivLoc = this.gl.getUniformLocation(this.shaderProgram, \"wdiv\");\n }\n\n renderQuadTexture(texture, mdVSFrame, srcTexsize) {\n this.gl.useProgram(this.shaderProgram);\n\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.vertexBuf);\n this.gl.bufferData(\n this.gl.ARRAY_BUFFER,\n this.positions,\n this.gl.STATIC_DRAW\n );\n\n this.gl.vertexAttribPointer(\n this.positionLocation,\n 2,\n this.gl.FLOAT,\n false,\n 0,\n 0\n );\n this.gl.enableVertexAttribArray(this.positionLocation);\n\n this.gl.activeTexture(this.gl.TEXTURE0);\n this.gl.bindTexture(this.gl.TEXTURE_2D, texture);\n\n this.gl.uniform1i(this.textureLoc, 0);\n\n const b1ed = this.blurLevel === 0 ? mdVSFrame.b1ed : 0.0;\n\n this.gl.uniform4fv(this.texsizeLocation, [\n srcTexsize[0],\n srcTexsize[1],\n 1.0 / srcTexsize[0],\n 1.0 / srcTexsize[1],\n ]);\n this.gl.uniform1f(this.ed1Loc, 1.0 - b1ed);\n this.gl.uniform1f(this.ed2Loc, b1ed);\n this.gl.uniform1f(this.ed3Loc, 5.0);\n this.gl.uniform4fv(this.wdsLocation, this.wds);\n this.gl.uniform1f(this.wdivLoc, this.wDiv);\n\n this.gl.blendFunc(this.gl.SRC_ALPHA, this.gl.ONE_MINUS_SRC_ALPHA);\n\n this.gl.drawArrays(this.gl.TRIANGLE_STRIP, 0, 4);\n }\n}\n\nclass BlurHorizontal {\n constructor(gl, blurLevel) {\n this.gl = gl;\n this.blurLevel = blurLevel;\n\n const w = [4.0, 3.8, 3.5, 2.9, 1.9, 1.2, 0.7, 0.3];\n const w1H = w[0] + w[1];\n const w2H = w[2] + w[3];\n const w3H = w[4] + w[5];\n const w4H = w[6] + w[7];\n const d1H = 0 + (2 * w[1]) / w1H;\n const d2H = 2 + (2 * w[3]) / w2H;\n const d3H = 4 + (2 * w[5]) / w3H;\n const d4H = 6 + (2 * w[7]) / w4H;\n\n this.ws = new Float32Array([w1H, w2H, w3H, w4H]);\n this.ds = new Float32Array([d1H, d2H, d3H, d4H]);\n this.wDiv = 0.5 / (w1H + w2H + w3H + w4H);\n\n this.positions = new Float32Array([-1, -1, 1, -1, -1, 1, 1, 1]);\n\n this.vertexBuf = this.gl.createBuffer();\n\n this.floatPrecision = ShaderUtils.getFragmentFloatPrecision(this.gl);\n this.createShader();\n }\n\n createShader() {\n this.shaderProgram = this.gl.createProgram();\n\n const vertShader = this.gl.createShader(this.gl.VERTEX_SHADER);\n this.gl.shaderSource(\n vertShader,\n `\n #version 300 es\n const vec2 halfmad = vec2(0.5);\n in vec2 aPos;\n out vec2 uv;\n void main(void) {\n gl_Position = vec4(aPos, 0.0, 1.0);\n uv = aPos * halfmad + halfmad;\n }\n `.trim()\n );\n this.gl.compileShader(vertShader);\n\n const fragShader = this.gl.createShader(this.gl.FRAGMENT_SHADER);\n this.gl.shaderSource(\n fragShader,\n `#version 300 es\n precision ${this.floatPrecision} float;\n precision highp int;\n precision mediump sampler2D;\n\n in vec2 uv;\n out vec4 fragColor;\n uniform sampler2D uTexture;\n uniform vec4 texsize;\n uniform float scale;\n uniform float bias;\n uniform vec4 ws;\n uniform vec4 ds;\n uniform float wdiv;\n\n void main(void) {\n float w1 = ws[0];\n float w2 = ws[1];\n float w3 = ws[2];\n float w4 = ws[3];\n float d1 = ds[0];\n float d2 = ds[1];\n float d3 = ds[2];\n float d4 = ds[3];\n\n vec2 uv2 = uv.xy;\n\n vec3 blur =\n ( texture(uTexture, uv2 + vec2( d1 * texsize.z,0.0) ).xyz\n + texture(uTexture, uv2 + vec2(-d1 * texsize.z,0.0) ).xyz) * w1 +\n ( texture(uTexture, uv2 + vec2( d2 * texsize.z,0.0) ).xyz\n + texture(uTexture, uv2 + vec2(-d2 * texsize.z,0.0) ).xyz) * w2 +\n ( texture(uTexture, uv2 + vec2( d3 * texsize.z,0.0) ).xyz\n + texture(uTexture, uv2 + vec2(-d3 * texsize.z,0.0) ).xyz) * w3 +\n ( texture(uTexture, uv2 + vec2( d4 * texsize.z,0.0) ).xyz\n + texture(uTexture, uv2 + vec2(-d4 * texsize.z,0.0) ).xyz) * w4;\n\n blur.xyz *= wdiv;\n blur.xyz = blur.xyz * scale + bias;\n\n fragColor = vec4(blur, 1.0);\n }`\n );\n this.gl.compileShader(fragShader);\n\n this.gl.attachShader(this.shaderProgram, vertShader);\n this.gl.attachShader(this.shaderProgram, fragShader);\n this.gl.linkProgram(this.shaderProgram);\n\n this.positionLocation = this.gl.getAttribLocation(\n this.shaderProgram,\n \"aPos\"\n );\n this.textureLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"uTexture\"\n );\n this.texsizeLocation = this.gl.getUniformLocation(\n this.shaderProgram,\n \"texsize\"\n );\n this.scaleLoc = this.gl.getUniformLocation(this.shaderProgram, \"scale\");\n this.biasLoc = this.gl.getUniformLocation(this.shaderProgram, \"bias\");\n this.wsLoc = this.gl.getUniformLocation(this.shaderProgram, \"ws\");\n this.dsLocation = this.gl.getUniformLocation(this.shaderProgram, \"ds\");\n this.wdivLoc = this.gl.getUniformLocation(this.shaderProgram, \"wdiv\");\n }\n\n getScaleAndBias(blurMins, blurMaxs) {\n const scale = [1, 1, 1];\n const bias = [0, 0, 0];\n\n let tempMin;\n let tempMax;\n scale[0] = 1.0 / (blurMaxs[0] - blurMins[0]);\n bias[0] = -blurMins[0] * scale[0];\n tempMin = (blurMins[1] - blurMins[0]) / (blurMaxs[0] - blurMins[0]);\n tempMax = (blurMaxs[1] - blurMins[0]) / (blurMaxs[0] - blurMins[0]);\n scale[1] = 1.0 / (tempMax - tempMin);\n bias[1] = -tempMin * scale[1];\n tempMin = (blurMins[2] - blurMins[1]) / (blurMaxs[1] - blurMins[1]);\n tempMax = (blurMaxs[2] - blurMins[1]) / (blurMaxs[1] - blurMins[1]);\n scale[2] = 1.0 / (tempMax - tempMin);\n bias[2] = -tempMin * scale[2];\n\n return {\n scale: scale[this.blurLevel],\n bias: bias[this.blurLevel],\n };\n }\n\n renderQuadTexture(texture, mdVSFrame, blurMins, blurMaxs, srcTexsize) {\n this.gl.useProgram(this.shaderProgram);\n\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.vertexBuf);\n this.gl.bufferData(\n this.gl.ARRAY_BUFFER,\n this.positions,\n this.gl.STATIC_DRAW\n );\n\n this.gl.vertexAttribPointer(\n this.positionLocation,\n 2,\n this.gl.FLOAT,\n false,\n 0,\n 0\n );\n this.gl.enableVertexAttribArray(this.positionLocation);\n\n this.gl.activeTexture(this.gl.TEXTURE0);\n this.gl.bindTexture(this.gl.TEXTURE_2D, texture);\n\n this.gl.uniform1i(this.textureLoc, 0);\n\n const { scale, bias } = this.getScaleAndBias(blurMins, blurMaxs);\n\n this.gl.uniform4fv(this.texsizeLocation, [\n srcTexsize[0],\n srcTexsize[1],\n 1.0 / srcTexsize[0],\n 1.0 / srcTexsize[1],\n ]);\n this.gl.uniform1f(this.scaleLoc, scale);\n this.gl.uniform1f(this.biasLoc, bias);\n this.gl.uniform4fv(this.wsLoc, this.ws);\n this.gl.uniform4fv(this.dsLocation, this.ds);\n this.gl.uniform1f(this.wdivLoc, this.wDiv);\n\n this.gl.blendFunc(this.gl.SRC_ALPHA, this.gl.ONE_MINUS_SRC_ALPHA);\n\n this.gl.drawArrays(this.gl.TRIANGLE_STRIP, 0, 4);\n }\n}\n\nclass BlurShader {\n constructor(blurLevel, blurRatios, gl, opts = {}) {\n this.blurLevel = blurLevel;\n this.blurRatios = blurRatios;\n this.gl = gl;\n\n this.texsizeX = opts.texsizeX;\n this.texsizeY = opts.texsizeY;\n\n this.anisoExt =\n this.gl.getExtension(\"EXT_texture_filter_anisotropic\") ||\n this.gl.getExtension(\"MOZ_EXT_texture_filter_anisotropic\") ||\n this.gl.getExtension(\"WEBKIT_EXT_texture_filter_anisotropic\");\n\n this.blurHorizontalFrameBuffer = this.gl.createFramebuffer();\n this.blurVerticalFrameBuffer = this.gl.createFramebuffer();\n\n this.blurHorizontalTexture = this.gl.createTexture();\n this.blurVerticalTexture = this.gl.createTexture();\n\n this.setupFrameBufferTextures();\n\n this.blurHorizontal = new BlurHorizontal(gl, this.blurLevel, opts);\n this.blurVertical = new BlurVertical(gl, this.blurLevel, opts);\n }\n\n updateGlobals(opts) {\n this.texsizeX = opts.texsizeX;\n this.texsizeY = opts.texsizeY;\n\n this.setupFrameBufferTextures();\n }\n\n getTextureSize(sizeRatio) {\n let sizeX = Math.max(this.texsizeX * sizeRatio, 16);\n sizeX = Math.floor((sizeX + 3) / 16) * 16;\n let sizeY = Math.max(this.texsizeY * sizeRatio, 16);\n sizeY = Math.floor((sizeY + 3) / 4) * 4;\n return [sizeX, sizeY];\n }\n\n setupFrameBufferTextures() {\n const srcBlurRatios =\n this.blurLevel > 0 ? this.blurRatios[this.blurLevel - 1] : [1, 1];\n const dstBlurRatios = this.blurRatios[this.blurLevel];\n const srcTexsizeHorizontal = this.getTextureSize(srcBlurRatios[1]);\n const dstTexsizeHorizontal = this.getTextureSize(dstBlurRatios[0]);\n this.bindFrameBufferTexture(\n this.blurHorizontalFrameBuffer,\n this.blurHorizontalTexture,\n dstTexsizeHorizontal\n );\n\n const srcTexsizeVertical = dstTexsizeHorizontal;\n const dstTexsizeVertical = this.getTextureSize(dstBlurRatios[1]);\n this.bindFrameBufferTexture(\n this.blurVerticalFrameBuffer,\n this.blurVerticalTexture,\n dstTexsizeVertical\n );\n\n this.horizontalTexsizes = [srcTexsizeHorizontal, dstTexsizeHorizontal];\n this.verticalTexsizes = [srcTexsizeVertical, dstTexsizeVertical];\n }\n\n bindFrambufferAndSetViewport(fb, texsize) {\n this.gl.bindFramebuffer(this.gl.FRAMEBUFFER, fb);\n this.gl.viewport(0, 0, texsize[0], texsize[1]);\n }\n\n bindFrameBufferTexture(targetFrameBuffer, targetTexture, texsize) {\n this.gl.bindTexture(this.gl.TEXTURE_2D, targetTexture);\n\n this.gl.pixelStorei(this.gl.UNPACK_ALIGNMENT, 1);\n this.gl.texImage2D(\n this.gl.TEXTURE_2D,\n 0,\n this.gl.RGBA,\n texsize[0],\n texsize[1],\n 0,\n this.gl.RGBA,\n this.gl.UNSIGNED_BYTE,\n new Uint8Array(texsize[0] * texsize[1] * 4)\n );\n\n this.gl.generateMipmap(this.gl.TEXTURE_2D);\n\n this.gl.texParameteri(\n this.gl.TEXTURE_2D,\n this.gl.TEXTURE_WRAP_S,\n this.gl.CLAMP_TO_EDGE\n );\n this.gl.texParameteri(\n this.gl.TEXTURE_2D,\n this.gl.TEXTURE_WRAP_T,\n this.gl.CLAMP_TO_EDGE\n );\n this.gl.texParameteri(\n this.gl.TEXTURE_2D,\n this.gl.TEXTURE_MIN_FILTER,\n this.gl.LINEAR_MIPMAP_LINEAR\n );\n this.gl.texParameteri(\n this.gl.TEXTURE_2D,\n this.gl.TEXTURE_MAG_FILTER,\n this.gl.LINEAR\n );\n if (this.anisoExt) {\n const max = this.gl.getParameter(\n this.anisoExt.MAX_TEXTURE_MAX_ANISOTROPY_EXT\n );\n this.gl.texParameterf(\n this.gl.TEXTURE_2D,\n this.anisoExt.TEXTURE_MAX_ANISOTROPY_EXT,\n max\n );\n }\n\n this.gl.bindFramebuffer(this.gl.FRAMEBUFFER, targetFrameBuffer);\n this.gl.framebufferTexture2D(\n this.gl.FRAMEBUFFER,\n this.gl.COLOR_ATTACHMENT0,\n this.gl.TEXTURE_2D,\n targetTexture,\n 0\n );\n }\n\n renderBlurTexture(prevTexture, mdVSFrame, blurMins, blurMaxs) {\n this.bindFrambufferAndSetViewport(\n this.blurHorizontalFrameBuffer,\n this.horizontalTexsizes[1]\n );\n this.blurHorizontal.renderQuadTexture(\n prevTexture,\n mdVSFrame,\n blurMins,\n blurMaxs,\n this.horizontalTexsizes[0]\n );\n\n this.gl.bindTexture(this.gl.TEXTURE_2D, this.blurHorizontalTexture);\n this.gl.generateMipmap(this.gl.TEXTURE_2D);\n\n this.bindFrambufferAndSetViewport(\n this.blurVerticalFrameBuffer,\n this.verticalTexsizes[1]\n );\n this.blurVertical.renderQuadTexture(\n this.blurHorizontalTexture,\n mdVSFrame,\n this.verticalTexsizes[0]\n );\n\n this.gl.bindTexture(this.gl.TEXTURE_2D, this.blurVerticalTexture);\n this.gl.generateMipmap(this.gl.TEXTURE_2D);\n }\n}\n\nclass Noise {\n constructor(gl) {\n this.gl = gl;\n this.randomFn = getRNG().random;\n\n this.anisoExt =\n this.gl.getExtension(\"EXT_texture_filter_anisotropic\") ||\n this.gl.getExtension(\"MOZ_EXT_texture_filter_anisotropic\") ||\n this.gl.getExtension(\"WEBKIT_EXT_texture_filter_anisotropic\");\n\n this.noiseTexLQ = this.gl.createTexture();\n this.noiseTexLQLite = this.gl.createTexture();\n this.noiseTexMQ = this.gl.createTexture();\n this.noiseTexHQ = this.gl.createTexture();\n\n this.noiseTexVolLQ = this.gl.createTexture();\n this.noiseTexVolHQ = this.gl.createTexture();\n\n this.nTexArrLQ = Noise.createNoiseTex(256, 1, this.randomFn);\n this.nTexArrLQLite = Noise.createNoiseTex(32, 1, this.randomFn);\n this.nTexArrMQ = Noise.createNoiseTex(256, 4, this.randomFn);\n this.nTexArrHQ = Noise.createNoiseTex(256, 8, this.randomFn);\n\n this.nTexArrVolLQ = Noise.createNoiseVolTex(32, 1, this.randomFn);\n this.nTexArrVolHQ = Noise.createNoiseVolTex(32, 4, this.randomFn);\n\n this.bindTexture(this.noiseTexLQ, this.nTexArrLQ, 256, 256);\n this.bindTexture(this.noiseTexLQLite, this.nTexArrLQLite, 32, 32);\n this.bindTexture(this.noiseTexMQ, this.nTexArrMQ, 256, 256);\n this.bindTexture(this.noiseTexHQ, this.nTexArrHQ, 256, 256);\n\n this.bindTexture3D(this.noiseTexVolLQ, this.nTexArrVolLQ, 32, 32, 32);\n this.bindTexture3D(this.noiseTexVolHQ, this.nTexArrVolHQ, 32, 32, 32);\n\n this.noiseTexPointLQ = this.gl.createSampler();\n gl.samplerParameteri(\n this.noiseTexPointLQ,\n gl.TEXTURE_MIN_FILTER,\n gl.NEAREST_MIPMAP_NEAREST\n );\n gl.samplerParameteri(\n this.noiseTexPointLQ,\n gl.TEXTURE_MAG_FILTER,\n gl.NEAREST\n );\n gl.samplerParameteri(this.noiseTexPointLQ, gl.TEXTURE_WRAP_S, gl.REPEAT);\n gl.samplerParameteri(this.noiseTexPointLQ, gl.TEXTURE_WRAP_T, gl.REPEAT);\n }\n\n bindTexture(texture, data, width, height) {\n this.gl.bindTexture(this.gl.TEXTURE_2D, texture);\n\n this.gl.pixelStorei(this.gl.UNPACK_ALIGNMENT, 1);\n this.gl.texImage2D(\n this.gl.TEXTURE_2D,\n 0,\n this.gl.RGBA,\n width,\n height,\n 0,\n this.gl.RGBA,\n this.gl.UNSIGNED_BYTE,\n data\n );\n\n this.gl.generateMipmap(this.gl.TEXTURE_2D);\n\n this.gl.texParameteri(\n this.gl.TEXTURE_2D,\n this.gl.TEXTURE_WRAP_S,\n this.gl.REPEAT\n );\n this.gl.texParameteri(\n this.gl.TEXTURE_2D,\n this.gl.TEXTURE_WRAP_T,\n this.gl.REPEAT\n );\n this.gl.texParameteri(\n this.gl.TEXTURE_2D,\n this.gl.TEXTURE_MIN_FILTER,\n this.gl.LINEAR_MIPMAP_LINEAR\n );\n this.gl.texParameteri(\n this.gl.TEXTURE_2D,\n this.gl.TEXTURE_MAG_FILTER,\n this.gl.LINEAR\n );\n if (this.anisoExt) {\n const max = this.gl.getParameter(\n this.anisoExt.MAX_TEXTURE_MAX_ANISOTROPY_EXT\n );\n this.gl.texParameterf(\n this.gl.TEXTURE_2D,\n this.anisoExt.TEXTURE_MAX_ANISOTROPY_EXT,\n max\n );\n }\n }\n\n bindTexture3D(texture, data, width, height, depth) {\n this.gl.bindTexture(this.gl.TEXTURE_3D, texture);\n\n this.gl.pixelStorei(this.gl.UNPACK_ALIGNMENT, 1);\n this.gl.texImage3D(\n this.gl.TEXTURE_3D,\n 0,\n this.gl.RGBA,\n width,\n height,\n depth,\n 0,\n this.gl.RGBA,\n this.gl.UNSIGNED_BYTE,\n data\n );\n\n this.gl.generateMipmap(this.gl.TEXTURE_3D);\n\n this.gl.texParameteri(\n this.gl.TEXTURE_3D,\n this.gl.TEXTURE_WRAP_S,\n this.gl.REPEAT\n );\n this.gl.texParameteri(\n this.gl.TEXTURE_3D,\n this.gl.TEXTURE_WRAP_T,\n this.gl.REPEAT\n );\n this.gl.texParameteri(\n this.gl.TEXTURE_3D,\n this.gl.TEXTURE_WRAP_R,\n this.gl.REPEAT\n );\n this.gl.texParameteri(\n this.gl.TEXTURE_3D,\n this.gl.TEXTURE_MIN_FILTER,\n this.gl.LINEAR_MIPMAP_LINEAR\n );\n this.gl.texParameteri(\n this.gl.TEXTURE_3D,\n this.gl.TEXTURE_MAG_FILTER,\n this.gl.LINEAR\n );\n if (this.anisoExt) {\n const max = this.gl.getParameter(\n this.anisoExt.MAX_TEXTURE_MAX_ANISOTROPY_EXT\n );\n this.gl.texParameterf(\n this.gl.TEXTURE_3D,\n this.anisoExt.TEXTURE_MAX_ANISOTROPY_EXT,\n max\n );\n }\n }\n\n static fCubicInterpolate(y0, y1, y2, y3, t) {\n const t2 = t * t;\n const t3 = t * t2;\n const a0 = y3 - y2 - y0 + y1;\n const a1 = y0 - y1 - a0;\n const a2 = y2 - y0;\n const a3 = y1;\n\n return a0 * t3 + a1 * t2 + a2 * t + a3;\n }\n\n static dwCubicInterpolate(y0, y1, y2, y3, t) {\n const ret = [];\n for (let i = 0; i < 4; i++) {\n let f = Noise.fCubicInterpolate(\n y0[i] / 255.0,\n y1[i] / 255.0,\n y2[i] / 255.0,\n y3[i] / 255.0,\n t\n );\n f = Math.clamp(f, 0, 1);\n ret[i] = f * 255;\n }\n\n return ret;\n }\n\n static createNoiseVolTex(noiseSize, zoom, randomFn) {\n const nsize = noiseSize * noiseSize * noiseSize;\n const texArr = new Uint8Array(nsize * 4);\n const texRange = zoom > 1 ? 216 : 256;\n const halfTexRange = texRange * 0.5;\n for (let i = 0; i < nsize; i++) {\n texArr[i * 4 + 0] = Math.floor(randomFn() * texRange + halfTexRange);\n texArr[i * 4 + 1] = Math.floor(randomFn() * texRange + halfTexRange);\n texArr[i * 4 + 2] = Math.floor(randomFn() * texRange + halfTexRange);\n texArr[i * 4 + 3] = Math.floor(randomFn() * texRange + halfTexRange);\n }\n\n const wordsPerSlice = noiseSize * noiseSize;\n const wordsPerLine = noiseSize;\n if (zoom > 1) {\n for (let z = 0; z < noiseSize; z += zoom) {\n for (let y = 0; y < noiseSize; y += zoom) {\n for (let x = 0; x < noiseSize; x++) {\n if (x % zoom !== 0) {\n const baseX = Math.floor(x / zoom) * zoom + noiseSize;\n const baseY = z * wordsPerSlice + y * wordsPerLine;\n\n const y0 = [];\n const y1 = [];\n const y2 = [];\n const y3 = [];\n for (let i = 0; i < 4; i++) {\n y0[i] =\n texArr[baseY * 4 + ((baseX - zoom) % noiseSize) * 4 + i];\n y1[i] = texArr[baseY * 4 + (baseX % noiseSize) * 4 + i];\n y2[i] =\n texArr[baseY * 4 + ((baseX + zoom) % noiseSize) * 4 + i];\n y3[i] =\n texArr[baseY * 4 + ((baseX + zoom * 2) % noiseSize) * 4 + i];\n }\n\n const t = (x % zoom) / zoom;\n const result = Noise.dwCubicInterpolate(y0, y1, y2, y3, t);\n\n for (let i = 0; i < 4; i++) {\n const offset = x * 4 + i;\n texArr[z * wordsPerSlice * 4 + y * wordsPerLine * 4 + offset] =\n result[i];\n }\n }\n }\n }\n }\n\n for (let z = 0; z < noiseSize; z += zoom) {\n for (let x = 0; x < noiseSize; x++) {\n for (let y = 0; y < noiseSize; y++) {\n if (y % zoom !== 0) {\n const baseY = Math.floor(y / zoom) * zoom + noiseSize;\n const baseZ = z * wordsPerSlice;\n\n const y0 = [];\n const y1 = [];\n const y2 = [];\n const y3 = [];\n for (let i = 0; i < 4; i++) {\n const offset = x * 4 + baseZ * 4 + i;\n y0[i] =\n texArr[\n ((baseY - zoom) % noiseSize) * wordsPerLine * 4 + offset\n ];\n y1[i] = texArr[(baseY % noiseSize) * wordsPerLine * 4 + offset];\n y2[i] =\n texArr[\n ((baseY + zoom) % noiseSize) * wordsPerLine * 4 + offset\n ];\n y3[i] =\n texArr[\n ((baseY + zoom * 2) % noiseSize) * wordsPerLine * 4 + offset\n ];\n }\n\n const t = (y % zoom) / zoom;\n const result = Noise.dwCubicInterpolate(y0, y1, y2, y3, t);\n\n for (let i = 0; i < 4; i++) {\n const offset = x * 4 + baseZ * 4 + i;\n texArr[y * wordsPerLine * 4 + offset] = result[i];\n }\n }\n }\n }\n }\n\n for (let x = 0; x < noiseSize; x++) {\n for (let y = 0; y < noiseSize; y++) {\n for (let z = 0; z < noiseSize; z++) {\n if (z % zoom !== 0) {\n const baseY = y * wordsPerLine;\n const baseZ = Math.floor(z / zoom) * zoom + noiseSize;\n\n const y0 = [];\n const y1 = [];\n const y2 = [];\n const y3 = [];\n for (let i = 0; i < 4; i++) {\n const offset = x * 4 + baseY * 4 + i;\n y0[i] =\n texArr[\n ((baseZ - zoom) % noiseSize) * wordsPerSlice * 4 + offset\n ];\n y1[i] =\n texArr[(baseZ % noiseSize) * wordsPerSlice * 4 + offset];\n y2[i] =\n texArr[\n ((baseZ + zoom) % noiseSize) * wordsPerSlice * 4 + offset\n ];\n y3[i] =\n texArr[\n ((baseZ + zoom * 2) % noiseSize) * wordsPerSlice * 4 +\n offset\n ];\n }\n\n const t = (y % zoom) / zoom;\n const result = Noise.dwCubicInterpolate(y0, y1, y2, y3, t);\n\n for (let i = 0; i < 4; i++) {\n const offset = x * 4 + baseY * 4 + i;\n texArr[z * wordsPerSlice * 4 + offset] = result[i];\n }\n }\n }\n }\n }\n }\n\n return texArr;\n }\n\n static createNoiseTex(noiseSize, zoom, randomFn) {\n const nsize = noiseSize * noiseSize;\n const texArr = new Uint8Array(nsize * 4);\n const texRange = zoom > 1 ? 216 : 256;\n const halfTexRange = texRange * 0.5;\n for (let i = 0; i < nsize; i++) {\n texArr[i * 4 + 0] = Math.floor(randomFn() * texRange + halfTexRange);\n texArr[i * 4 + 1] = Math.floor(randomFn() * texRange + halfTexRange);\n texArr[i * 4 + 2] = Math.floor(randomFn() * texRange + halfTexRange);\n texArr[i * 4 + 3] = Math.floor(randomFn() * texRange + halfTexRange);\n }\n\n if (zoom > 1) {\n for (let y = 0; y < noiseSize; y += zoom) {\n for (let x = 0; x < noiseSize; x++) {\n if (x % zoom !== 0) {\n const baseX = Math.floor(x / zoom) * zoom + noiseSize;\n const baseY = y * noiseSize;\n\n const y0 = [];\n const y1 = [];\n const y2 = [];\n const y3 = [];\n for (let z = 0; z < 4; z++) {\n y0[z] = texArr[baseY * 4 + ((baseX - zoom) % noiseSize) * 4 + z];\n y1[z] = texArr[baseY * 4 + (baseX % noiseSize) * 4 + z];\n y2[z] = texArr[baseY * 4 + ((baseX + zoom) % noiseSize) * 4 + z];\n y3[z] =\n texArr[baseY * 4 + ((baseX + zoom * 2) % noiseSize) * 4 + z];\n }\n\n const t = (x % zoom) / zoom;\n const result = Noise.dwCubicInterpolate(y0, y1, y2, y3, t);\n\n for (let z = 0; z < 4; z++) {\n texArr[y * noiseSize * 4 + x * 4 + z] = result[z];\n }\n }\n }\n }\n\n for (let x = 0; x < noiseSize; x++) {\n for (let y = 0; y < noiseSize; y++) {\n if (y % zoom !== 0) {\n const baseY = Math.floor(y / zoom) * zoom + noiseSize;\n\n const y0 = [];\n const y1 = [];\n const y2 = [];\n const y3 = [];\n for (let z = 0; z < 4; z++) {\n y0[z] =\n texArr[\n ((baseY - zoom) % noiseSize) * noiseSize * 4 + x * 4 + z\n ];\n y1[z] = texArr[(baseY % noiseSize) * noiseSize * 4 + x * 4 + z];\n y2[z] =\n texArr[\n ((baseY + zoom) % noiseSize) * noiseSize * 4 + x * 4 + z\n ];\n y3[z] =\n texArr[\n ((baseY + zoom * 2) % noiseSize) * noiseSize * 4 + x * 4 + z\n ];\n }\n\n const t = (y % zoom) / zoom;\n const result = Noise.dwCubicInterpolate(y0, y1, y2, y3, t);\n\n for (let z = 0; z < 4; z++) {\n texArr[y * noiseSize * 4 + x * 4 + z] = result[z];\n }\n }\n }\n }\n }\n\n return texArr;\n }\n}\n\nclass ImageTextures {\n constructor(gl) {\n this.gl = gl;\n\n this.anisoExt =\n this.gl.getExtension(\"EXT_texture_filter_anisotropic\") ||\n this.gl.getExtension(\"MOZ_EXT_texture_filter_anisotropic\") ||\n this.gl.getExtension(\"WEBKIT_EXT_texture_filter_anisotropic\");\n\n this.samplers = {};\n\n /* eslint-disable max-len */\n this.clouds2Image = new Image();\n this.clouds2Image.onload = () => {\n this.samplers.clouds2 = this.gl.createTexture();\n this.bindTexture(this.samplers.clouds2, this.clouds2Image, 128, 128);\n };\n this.clouds2Image.src =\n \"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/4RP+RXhpZgAASUkqAAgAAAAJAA8BAgAGAAAAegAAABABAgAVAAAAgAAAABIBAwABAAAAAQAAABoBBQABAAAAoAAAABsBBQABAAAAqAAAACgBAwABAAAAAgAAADIBAgAUAAAAsAAAABMCAwABAAAAAQAAAGmHBAABAAAAxAAAAGYFAABDYW5vbgBDYW5vbiBQb3dlclNob3QgUzExMAAAAAAAAAAAAAAAAEgAAAABAAAASAAAAAEAAAAyMDAyOjAxOjE5IDE3OjMzOjIwABsAmoIFAAEAAABWAwAAnYIFAAEAAABeAwAAAJAHAAQAAAAwMjEwA5ACABQAAAAOAgAABJACABQAAAAiAgAAAZEHAAQAAAABAgMAApEFAAEAAAA+AwAAAZIKAAEAAABGAwAAApIFAAEAAABOAwAABJIKAAEAAABmAwAABZIFAAEAAABuAwAABpIFAAEAAAB2AwAAB5IDAAEAAAAFAAAACZIDAAEAAAAAAAAACpIFAAEAAAB+AwAAfJIHAJoBAACGAwAAhpIHAAgBAAA2AgAAAKAHAAQAAAAwMTAwAaADAAEAAAABAAAAAqAEAAEAAACAAAAAA6AEAAEAAACAAAAABaAEAAEAAAAwBQAADqIFAAEAAAAgBQAAD6IFAAEAAAAoBQAAEKIDAAEAAAACAAAAF6IDAAEAAAACAAAAAKMHAAEAAAADAAAAAAAAADIwMDI6MDE6MTkgMTc6MzM6MjAAMjAwMjowMToxOSAxNzozMzoyMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAQAAACoBAAAgAAAAuAAAACAAAAABAAAAgAIAAEgAAAAKAAAA/////wMAAACK+AIAAAABAL8BAADoAwAArQAAACAAAAAMAAEAAwAmAAAAHAQAAAIAAwAEAAAAaAQAAAMAAwAEAAAAcAQAAAQAAwAaAAAAeAQAAAAAAwAGAAAArAQAAAAAAwAEAAAAuAQAAAYAAgAgAAAAwAQAAAcAAgAYAAAA4AQAAAgABAABAAAAkc4UAAkAAgAgAAAA+AQAABAABAABAAAAAAAJAQ0AAwAEAAAAGAUAAAAAAABMAAIAAAAFAAAAAAAAAAQAAAABAAAAAQAAAAAAAAAAAAAAAwABAAEwAAD/////WgGtACAAYgC4AP//AAAAAAAAAAAAAP//SABABkAGAgCtANMAngAAAAAAAAAAADQAAACPAEYBtQAqAfT/AgABAAEAAAAAAAAAAAAEMAAAAAAAAAAAvwEAALgAJwEAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAElNRzpQb3dlclNob3QgUzExMCBKUEVHAAAAAAAAAAAARmlybXdhcmUgVmVyc2lvbiAxLjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAMgAuQC5AABqGADOAAAAgE8SAJsAAAAEAAEAAgAEAAAAUjk4AAIABwAEAAAAMDEwMAEQAwABAAAAQAYAAAIQAwABAAAAsAQAAAAAAAAGAAMBAwABAAAABgAAABoBBQABAAAAtAUAABsBBQABAAAAvAUAACgBAwABAAAAAgAAAAECBAABAAAA9AUAAAICBAABAAAAuA0AAAAAAAC0AAAAAQAAALQAAAABAAAAaM5qp6ps7vXbS52etpVdo/tuYZ2wtrDFXnrx1HK+braKpineV1+3VFWVteo72Poc/9j/2wCEAAkGBggGBQkIBwgKCQkLDRYPDQwMDRwTFRAWIR0jIiEcIB8kKTQsJCcxJx4fLT0tMTY3Ojo6Iio/RD44QjM3OTYBCQkJDAoMFAwMFA8KCgoPGhoKChoaTxoaGhoaT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT//AABEIAHgAoAMBIQACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/AOdCcU4R11HMSLHTxFTAXy6PLxQIUJTglIDo9KtbWzjScNvnK/gtao1FkycjaO1ebWvOWvyR307RjZfM5zXoraacTW3DtkyD1PrWathui39q66cmoK+60OacU5O2xA8ZQlT2qBkrdfmYsiZMUwpxVCImXNRMntTERlaaRg0CN5Y8iniOszUlWOniOgQhj5o2UwDZS7KBFmAuoCnIAq69wUjIHPHWuaok5HTBtIqrbzXCMyAEDqCarPvGV6Yqlbb+Xch337kBTOd1RNHxgCrc+xKgNWAPxyD2qCWMAY7g81UJ83yJlGxCy4qJlzWqMyMpTClAjoxCUbDCniP2rK5qOVKkEdMA8ummPmgA2Vd0m1S4vMTIXjUEtjtUzdotrdLQcFeSXQfcQqJ2y/GaZL5fkhE5Y9TXPFt2Zu7K6IUinVWVW+XvjvSNCsceScsa0k1067kRT69NisY8mnC2YoWA4qL2KtcglyjcVVdd78daqnK3zImr/IheFgTkdKiZK6ou6MJKxGyUwrTJOxmjaS2WYqwjLHbnp9KBaeeB5MbZxzXLGVlfotzpcdbdXsQiKniOtSBfLppjoTE0NMdPiYxElSRmiSurAnZiSMTzmmKSDmpUdCpS1NvT0TUoHEjpGQcYC8n3qM6MJdxgYuF46VyyfI2ui6nQlzJPq+hDPo0qcKNz/wB0U54Es7co/wAzkcgdAamU01ZbtjUWnrsjDn+dzxiqpjYHK1aZDHJGQmM9ahe2zk+lbU5WZlOOhWZKjKV1nOddYTPLpptjztbcB2NTBXibaSUOOma4IWt+h2y3/Uj8rmlEdbJmLQpTjpTNlNCYnl00x1RI0x00x4oARd6tmPIPtW1o+uf2fGd+GORlcdffNZVaaqRt1NKc+R36HQxWsWoqbmGQ/MMkg4rL1bSdi5UV5fM4ys9LHfZNXXU599Lkd+FNMbSzGPmHNb85lyFaS32HgUx8pGcqK2g72M5aGY8fPSomSvRRwndafZfYtRCzL8rHFaPiPTTHKlxHGEjKhTj1ryKU/wB4uzR6dSPuPujF2YIzTxHxXamtuxyNPfuIY+KYY6okDHg4pHQIMsQKLhYhV0dtq8mr6aQ8loZRy390DNZVKqgr92aQpczKcd8+nXefLHAwVI6028nt7mTzIY/KJ5IB4qI3UuZO6fxIuSTjy21WzLmjXs9rKFidgM/dzxXTJeRECC5ZN5XPWscVTTlePxM0oS0s9kUriaIEiIKAPzrFup/3uBzmopU3fUqc0isTEQWftVWZ0dPlWuqNNr0RhKafqzOlh6mq7x12RZytHqssMcwSfy0wwyDuxRq2oCew8gxjdx1HT3rx6Uby9GenUdkc/wCSpPzdaV4WVeFJru226nLv8iFVc/eXFKYsCqi7omSIjHzS3EKSRZBJbHNOWwRMp4WjO/O0Z4NWUubuGParnafSsXFS0ZonYRo/Pwzcmk8gL0FbQgkjOUncfFK9sSU4JpkkzO+7Jz9atRV7mbk7WHpczAcOT9aUqzgu3Ud6lxSd1oylJvRkMgDZJJzVSTK9KqKJbIGJqJlzWiViG7nfW1/ZK8XJUDqT0q9q08V2sRiL5HAG35SD3Bryaalzps9KduWyKt1pjWoXzG2uRnkcCs+8ee2YKJUbIzx0Iq/bXemiRPs7IY15Ey7m+TA5BrPuNUDIyCMDnhs81rz3SsZ8tmXbFDe2DTKVzHwyk8n6Vl3944Zo04A7jvT9pp5oOTX1Mp5GVsnmtG21aEQKkikFRj604SFKJOmpWrHAYr9RUjMGXKcg9xW0WmYyTREwNN281qZkqphQRwacCMYPHvUPUpCPGhXORmqU0fNEXqEkV2j9qjKVoQa+GAALE47VPDezRYUOdo7V5CkelY0pb+eayOJt4PG1uSKxpEkQkkmp0T9StX8hnm5GCM1GUBzVXsIj+deFYge1NMTueuapyJURr2jMvTmqclq4PK4ohMJRIhGwNadgLolUjDMvcVtz217GfLc2PsuSQQdw7Uw2pU/MCK6FU6eWhg4afmWLeKFkZJcg9mFRzac8MSyMRhumKnns7PZvQOS6utLblaRMLyR9KhkhVVBDZzV21TFeysVXWoiK1MjttV8O/YWyXVgegFZRsTu4FeHdp2e63PWSvqupZtrbadpHFPnst4xgVDlqUkUX03ax7VEbNd3ByapSbFYDYKw4PPpTv7LdT0wRVq703J0XkBtlU7Sy7qje1yMMtJpoaaZWbTCZOB+FdVo+n/ZrRXaEh/pwacptxEo2ZZfRBLmQNskY8g1lXmm3VsS4IZaaxDvZ9NifZK35mUZbp7odD6jGK3jcotogmgUrWsp3tZ2sTGO+nqZr3Flco6JEEdc7eetLDoElxEH81Vz0FbQrOEby9530MZUlJ+7ppqOOgRxDMrqcdumaqz6Xa55YJnphqaxE5PRadgdGKWr17nd+cl4VFzGHAq0NEspRuRNp9K5vYxm3e6b2ZvzuK027CroNsPvLz6iql7oICFkOQO1RPCuMbp3a3Q41ruzWj2MG604xZJrInQoSVHPrXPB3NZEYlm6bM0gup0+SQttPXmt42W25DuRTW7ht6qXX1qxZSSSttZcqPWrjJPfXuiWrbGgFiADHBxW9p1z5dv8AvW3J2B7VbUeXuQnK/kM+0SyTt5GSg/ic8VUv7xpodrDn26Gs5wj0+LqXGT67dDFWLEhfkGo5nklyrE4qlC9vwJcrFRbJVl3GtO1njhTqQR61u4StYyU1civ7sSLtAJ981kSLnPJrelHlRhVlzM7yLTdTtJuu9Qe3NdBbGUorMFJxz2NcFPnUrWO2XK4lsdKCARg13bmBSurCGU4aMtn0qjJ4Xt3YnP0GK4pYbmk+X3bGyq2WvvFKTw5IpIRAR61Fc+Gttvvfn1GOlYeynHVq1uprzxfzKcCW1mdroXU8YIqQR2KA7AxPUgDGKiz3TKutjPnjic74jtB9TzT4p58Bc7yOm6tItrfoQ0mWEubtZf367l7DtUqq1w24gKg6kDpW0FFrm7Gc207dynKqqzAoOehFVmhLdFJ/CumKtuYN9gGnzuPlibmoXs5VJBXkH1qlVjtdEezlvYimtJEXLow/CqErIDWkZp7WZEotbnrsTkjrmphz1rGDutdToloxaK0EMkU9VGSKRDIQd4A9MVm+ZS0+F7selvPoNDuHw3T2oJWUlWH50r3Vn1HtqjG1LSmVS6DdzxxWQ+nTSTcghjXBKPs3Z/I6IvmV/vK7aWYptsp2jua0LG3tllLQZkK8dO9C95227g9FfcmuFnnUrtyF9BUthHhfLkjO0n14zXToo2WhiruV2JqFtFGNyxoSPUVztzrdzBJhdoVewFZJ8zs3dLY0a5dVu9yCTxLKUPyDd2NZE+tXDyF84J74rSMEiJSbKFxqFxMpDyuQe2azpN3dj+dbRlbYzkr7nvCJkYxsP95eDUqxyA584t7EVnTi+j5fLoaSa66+ZOM45orqMgooAYwqNhis5DQ0yMBio2Zm7ZrNu+5VrDNizPsdFI9CKjNrDCuEiCZ6kcVlKEd7fMtSe34DY2jV8YKknvzTLqUQcs+PwqJuyuVHU5TWtVeaX5coq/dGaxpLxpUw4zjvRFKwSepAF85SUGcdRVeaJh/DiqvZ2JsZ86sDz0qBo2xu/hq0yLHvy9KeK2pkvcdRWogpM0AIaYwqJAhNq1FcPKoHlIHHesZNqPu6vsWtXrou5HuK5YLzjjNZ1/c3YiIUZX+8vauec36LqbRivV9DNivriYlWOdo6HmrxleWIBgDx3HSpaugvZmDqFuWYgwKSPQVlsjxIym3BUgjmoXa+xT7lSOzd3PkAq3YZpby8vVASeNendBzWukt+nUz22Jo7S2v4A3lFGxzg1Rm0l4m+UMVPqKlSa03Q2k9T/9n4qqwQ2C6FUcJKhVwpbQ1vCsihOUlK0km1lS0VoSE2qiF4TrpDJE0aZJK5EgBF7pQGeoyWHrHyLxlrwklpeaZbWWmyFkkIa43/2P/bAEMAAgEBAQEBAgEBAQICAgICBAMCAgICBQQEAwQGBQYGBgUGBgYHCQgGBwkHBgYICwgJCgoKCgoGCAsMCwoMCQoKCv/bAEMBAgICAgICBQMDBQoHBgcKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCv/AABEIAIAAgAMBIgACEQEDEQH/xAAeAAACAwEAAwEBAAAAAAAAAAAGBwQFCAMBAgkACv/EADcQAAEDAwMDAgUDAgYCAwAAAAECAwQFBhEAEiEHMUETUQgiMmFxFIGRFaEjQlKxwdEW8ReCov/EABsBAAICAwEAAAAAAAAAAAAAAAUGAwQBAgcA/8QAMREAAgEDAwMCBQMDBQAAAAAAAQIDAAQRBRIhMUFRE3EiYYGRwaHR4QYU8BUjMnKx/9oADAMBAAIRAxEAPwDNEamJCR8v9tT4dJ3Zwn+2rSHStzaVBvOrSDShnBTpvDYpbIBqsi0QKRn0+QO2uwpJQQCjRFEpR8D+2uj1LIXjb/bWwfmtNvFDqaWE/LsHfXZFNB/y6uVU75uUjj7a6NwMfMEfjWd3Fa0f/DB0mtK7KpIum8KgUxqQ+0pmE2EqMlzOQFA/5MgZ/J1q2L1glUxsPtIbbitNpW80EgbwSO+PGsWWjUqhRZy/0Tqkh1OFgH78aaKLzm0i28SnlLddYwk+wGdJH9QafJd3QLtkdh4802aNeRwWxCjBHU+aA/iosex//ktysdPnN8SpAOymM/M1IUo7/wD6k8jS8uTpxPthCJL3yuJSFKGOwPY50wavS7gnU3+vro7i4QXkyA3naoc86FrhnVGqpQl1SvTI5QVZzycHR6zkmiiSMvkLwSevtQe7WJ5HcLyeRS/q0BHqLc9NIKjyB50Pz6cEkkj+2j2qUlDRWfrJSQEgdjqqRbKKkVMJe2uBO5KSngn20SW9t1OC1DjaTsMhaBKhBCWt23A841QVGnBaiQ3n86O67TGWigR1bsg7hjkHPnVFNiJSgpIyc8DRBDxVRhjigmVAAP041CcaW2rcgYI9tE82n5PCedVkqAUkgJ1uQDUXfFaZplIUMsqb2kHke2rGNSylf0g8+2j2rWvRZtbjvxXY7EV14tuymdxzknCiD9hnge+oU+110+WtoLS4hKylDiBwoe/+2gkVysgB80akhZCQao4lMCk528jXRykKJ3bfxq8jUopABT31KXSRn6NS7sVFjihNVM+Y5T24zr1FPIVt26I3aUoEkA9+2uCqaUuDKdShs1oQM0bVvpPAtizaDUKLKVIVUYaZcxTrQSpl4jBQPOE/7k6rK1QUU213PUmJVLeWG4zTSgoff8Ht/Op1239WbjjNqqMgKDLKW0hCQkAJAHYceNC8aprVNbW+nKErG7nxnnGlyG3vJcvIckHP8f4KNyz20QCxjqP4rlFq98KoZs5ptxmKuQQ4kZBK/PPtjx21U3NbopREMhKlgfOQex9taAhdK3uofT7/AMo6eUh2PBElXqOyn0bFKT9XJOQRuHccg6BKn0RvByUUyqI+pxbZWnCchSQcZyOMZxzqs97E5IwFweR3z86nS0dFByWyOD2x8qULduuOOfIwVcZOBquqaEUV9t1EMBQz3HjTz6c9OpUibLl1aKGIsMelIekfKncoHAB8nj9tK/qfDpiqu9Hp3KWyQCR3++q7XStcel4FSiAiLf5pTVmEhcl1aOQok8e+h2bTVBZJGD99HAYnQZKxCYSXHRt3LQFAZ+x17XBbjT0VpLURKNqcFwJ5Ufvpms9VUuEfvQC609gpZaWMqAcnjzxqslQwBx+2jGr0ZyI6WHmsKx/OqaXTu4KfxjxpgBDDNBDuU1t2HUKReHSW0yqB6D9NEhh+Q0jIWvcFBC/bgkhX3I8al1mQ5ULdj0gUeKw2zIW6hbKDuJICeSSf9I0c/Bn0Pi3xcL1o1iSmP6chKz6qcjaPlPB78Ej99D9etp63K1OtySfUMSU4zuAwCUqIz++Nc70q8huB6SHLJz9yaeNQt3hbe3Rhj7AUJMUc8fJru5S0+n9HI99EcOkFxO5ScY9hr2k0hIbPy+PbTCX3UEA2mg1ym7gfl51Hk0rCdwbOilVLUkkFGvC6SVEkI/IOrAkAqBlNBbkJQQQnODxqK7TFIPKNGTtFZS4d+AAMnOvU2dPqEN6bAhuuMxwPWdbbJSjPbJ8aw9xFEMk4FeSOSQ4UZqNY/V26LLpj1qR5CjT5K8uhP1oJKclJJ4+ka2DZLVgdROlbVDtKII9wohsKeDxG8Mn/AD4BI2naPPdWsxdOennSm511K27kulcCqlgKpUpxQ9FSwPpV7A++ovTq+Lw6IdUGJcSWmQuG56DjbUrc082T9IUONvn/AI0rana2msB1tjtlX4vG79x2/wDaYLO4udM2mcZjbjzinj1f6PXNEtfDtIYjts8+nETj1FEY3qz3JwNZJvGw566u4n0FbiTu419Ird6o2r18oaWnIiYr8mKlT0dXdteSCArGCMAY/wCNKq8ehtl2tMcl1LY8+SpSGkjsOcE/9aRrbULm0maKZfiHamiW1huI1dDxWGHOmU9tkPyIpSM5STqGKHBTIEea2VJB5GtFXzCob812AkIbUjgADHGgWo9OY7Sf1jrjYDhJQpRxxpktbidjlxig08MSjC81nbqPSKe3Wj/Twop9IbwrsFew0HzaeE8lPfTav+22WqissELUSd2DxjQRVKQGx8qPyddMsJA1qgz2pDvEK3LH519dunnRiPZfXiDc8OoxUU1x8IdUy6NqwrIBx3wSM6B/jNsG2aZ1fdlW5LbWJ0Rtx5pAyW1425J7HIAOmjYxrN8yqTb9UoEanKXT0h+ey8lTrxGcKScZRn2PnzpWdXKVKYvqo0559+U7EfLSJMiOW3HAnspSTnx57Ec65F/TyYuid3IGDjx710nV2zAo28Z/X2pVU+2JMJrZIVk9xrg6xDkLWww8lS0n5kA8jRo7NtiAwpF0SVNEK+YIQdwGq9u16ImOzWqO8l1qWne24MHI/wCD9jpvhugGEakEDrzS/Lb7gXYYJ+VCS6c5HUHkJ+dJyCR2OudJpEya86zGirce27m/TTnGOSSPbV7dM2FRkw0uOMqEuQWfkeSVIUMd0jkdxqM4HqK8qR6oZ9MEOlRxgeQdXBcJIp2HmqZt3jcFhxShvufX6ZWQuS84SlZJaSOMZ9tMzpz8RVmUmy5do120UuNPJBSyklG5eACSR3yB2++ll1F6rW69WZKItHTIUUFDD7rpGxefqwO478atrNtyFeVoR6o84gPeotC1NEDJB4PbQie3W/X02PGc9aKRTf2R3gVUXJRH59xuVSgRzGZcXuQ2CcIB8DXWHClMOIdlLKlA5yfHPfRk1bbkOElp9e5aBtzjwO2qmpNMxspTjPuPGjVnZpGB5FCLq7eQkY4o+HXyRYtowaBY4ALMlt5ySpeVhSQNwPH0nAI9hka6TPiakXWt2Rcqn23HUkrDaApJXwMjz7/zpRyWSpzcPOplOghLaHZLSi2VYCgNYk0PT2G5kyx79+awurXoOA3HjtVjWqgqq1FdVUVqbWCGyDhQOPOhK6KnV3VoVJdWG0AhAHkaNJUQrpbcVLSAVnd6iOVHuMaFrnp0tpKv1BJUgYIOpLeKFTtA6cVFNNKRknrzQLV5sV1agWjz/mPfQjVYSFLUWxx4zorqsBwun5cA6qJEEkH7edGIY1iHw0NkdpDzWvLB+KW9rXr0OpN1x55tbXpTQtsbkoOAQkqBwQBweccadHTfrT0wrFz1K5ruuWfOcl00x4s2SylTsde0JCl+OEgpBHP2GsvVG0ajCfUw7CIKDjKRqw6eyKjb9cbdMcPNKc2vMujhSc9jri6Tw+myrhdwwSPFdSaNyyk84OaPut/WO1oTkuzG6PFmul8LYrDBO5SMHIVu5UVcfg9u+l1Gvup0+lLRb0v/AA8ENtvEkNk8naNEd4dNl1J1+tNx0oU4srS0Owz4GfGltMo1VgTDGfWpKEqzwO+orW8WIARtgit5oC+d65BoaqIqqpSprkle71crKlHg50fdVevFq31ZdPt+NbyoU+PT249RloUNstaCT6pAAwo55P2Gh1+lSnt7CmS5nJScarUWstThbciFWOT8vYaIJqWcFjyPzVVrME4A4oErdLE1tamV5JOQfY6pqZeN22Sp1mkVd5lLowtKF8HTjh2HBfaSEIBJByPbQ/cnRhLzS5cTJOSSlQ7a2ttYEUmCaxNp5kTIFD1rfEHekScluoTjKaUseo2/yQnzg+NNinTqPdba36FN9cJA9RJGFJJ5wRpNW/02nTa81SGYpLrrwQkbfJONao6f/C3UunPTxd5Sn1LefdQlUb0+R3IP8aY7bW0jnRC3/LigdxpfqRMwHSl2/RH23Ni2SD7EauaRa1RlUaRLjxS4iMAp7YeQCcZx5AP8Z0aVyg0RgNvSZxafWfodSBzjjj+PxrzRK43aFX/Rwq9CccqLKmlNMvhRJIKcKT7j799GG1ZJIvhI3ePahY0x1k+LO3zS+juvtOBpvCcqHJAONV931CVP+R2GhWVY3oRjb/Gn51R6ET0Uin1i0LUHomIgyW2RvWF4PJH1DPck+4xxxpS3ZR61Zlddi16gNtnaU+m4nKT9xrW3vYL0BoSN3jIzxWJbSazOJQdv1xSlrFLbSokg5OqWRBSXDuIH50dVKmVCrOLMOEpz8J7aoa9Z1w0Vaf6tRZLBcA9NLjJG7PI/9aPRyDAVjzQhkJOQOK+lfxU/DzTVXM2enFkf4D6C4+7FbKxu85OcD8AaTUH4erjaeLrNGcSsKwpBbP8AbWtOiV5zKnVG00SptyUrOFpS8FA/YjPGnW3QrdrITOcpLaXQQTubwQR7++uKLok12zehIBz0I4x8iD+mK6h/qKQKokQnjrnmsCu9MJ8ajpZqNLWktpwoKTpe3TZtDZlrUI+1e3JCm+M6+md1dN7VuuCqPPpTW8NkNrQkAg447ayz1t6Ff0FMh5qlrKjnZhPnGhGqaZe6RIDL8St0I/Pir9nfW98pAGCOx/FZFbpkB2oKQ5BbbU2rAUrhK/tqxj2pa8qQp+tPMw1hISyMEpd57HGcHnPtgak3h0/uKbP/AEkeI6CFH6UEYOqef0lvNcb1XZDoWk7kJUrnOtreSHgsRXnVyOBXpd67Jst8xKdHMtfqAKLY+VQ8lKh3/OuUe2oVxRjPpAzv5LDn1t/Y++ulF6e1y9YZtp9paKgw5hlwpJ9XOePznU/p70tvqgXO8K3EfZEMFBTggLXgkDH7dtEi9hM2w4WqoFzGu5cmudk9B4NWvmImcoRGluBTkoJ4SnI5/OtnMdO2rdZgVKt1mNJgtsJERQQPTkYCRtxyO2SSeTu1nqk3TETV4dKVFTGUtwpkGQsJSnHPCjxp41S9alWbWVY1syI7UVhLf6mXJeAbYHOTvP8AqHAAz286llsrV1TEmfwKhW5uFZspj8mqjq58PfTe6KC7Vo8KNGU2hS1ORlggr5OMDkcax3UulMFfUVuO5MUhppe5DxPbHOONa2u2NVKBSlMUCVNkMuR0plPvpAaWvn6M4OPzpL1C3pcOovOymwXSFbVBOdufI/71pY288UpEDllPT81m5nieMGVQDUTqj1OrNm2221bF3PrdRGLLxaePJ5899DvTLqJROq9VpznVGC++mG2WnGwCQ8rOAT5z7/jXpUbcW+46mpI3kqyk9+NelvvtWe4h2nx0ZQ4CpJT3HnTFp2n3CpvHXnnoaDXt/AW2k8ccdRTerNsdGbepiq7SbPZSQz6qmxFUSkHt4IHP99KK7OtdlxnltsUKS4VEpfadOAMdsfcHVldvVKtVOkriQ3VRy4r/ABdijhQHYY8aUldil1TinkBSl87jotpmj78tdkk/9iaGX+rCMhbYAD2FfTe1PgzqHT+7UXJatwF6M1IC22ivDm0HI5Hn99Puh0+RTssKqLzzeMpTJBKk/bJ1CtaWzMbJizUOBBIWE5BB/BAP76vmySnn++hul6faxH14iefnkfT5e+aLXl1O/wDtv2+VedVdx04TlMtoajFS1FCvXZ3ZSe+PY41aaj1GK7LjlEd703ByheOx0VuohNAVxmqcTbJAaD698P3TisQZDDVDbZfeOQ+ngpP/AFoJY+Du3xUkzKrLalsDOWcFOD+f402Y9MqzVLdaqNS9V8kltxJIIGOBqPGl1OBGcDzO9RPClL57HQKXR9JkZXaDZx24+4HFEEvrxAVWTPv+M1k7qf03c6UXG5Kt+2W3S0slmSpsgd+/PfA/31VT+rw5XV7Tgxqi9HLzsh5IWXMA4wk8Jz/61qfqf0ypfUSkqnMtgzWo69iSTySOBrOVT+Fy8H6k2xVqTIbS4fmf2ZShOlG+0xrOUqyZU9CBnj+KN214J1BBwR1FI+5axbN0SRL9L0pTqgXGkNYQhWPA0QWv0pvrqJRAqgz5amow/wAJv1fkGMnsfHJ0Vv8ASGj9La+5Vbzt+XLisglpLUc7XecABXj8nTHoTFTdsaIbcguUlh0BSWW1J3ZcAyFecD/nWbRTI/pxnbjz+1YuJPTTe4z7UtbWoF2XPOYtepy1L/TIUpwOOhKUJQMq559j/Oqu+qXW4tYcRS6bMQzKQENMrQcqTjgcDkeR9tN+2enl4Wncypj8OO+AMu5SpaCnIzyPOrvrrU6bS7f/AFKKm1FfWgpSoqSTvxnA9iNMM+orZlSoDADH17mg8Nm90DklST+nYVmdfQq/6q4hX9CDKXRu3PvISEjPcjOf7Z1X3T0BlW/SHKtU7jhD0nQhxDIUoJ9yTjxnwNBV/dYep9r3K8+xXpYCuEoWtQBTnjH2Ol31P+IPqddDCI8utO7UIx6bR2p/cDv++rKanqbspVlA9v3qBtPsVBDBif8APFMWtWPSqdTnahIuultpwfSbmv8ApKUARhQye2Of20lbs6o2bDkriqrsJWxW0rbVuSr99ANzXLXZ29dSlur+XlS3CdLyvRW1rWsOg55I76MWupyoT6jbvpihtxp8LD4Bj61/RJHoRq8ZmNWFvJWyrcxIjultxP7juNXdEoJouRFqT7rSvqTJXuOffOvaIT6YBJOBxnU9ogpwBjVbTrSDAkxyMc9/5q7NcSOSvbxXtr9r9r920ZqrXhYBSQdQJjQIJx+dTVup7ajSNqknPtqCcAx1lTg5qllPvxcltwj8agSnqpIQSEuqB7nB51dqYjlRLo75BP2xquu+ZckWnoNqw0StqgH2lOYUUeQPzoHM/pRM7E4HYDJ+1EEw7hRxnueB96rabFcqrkmPJa9UNoBLK+x+bng9+NU9woj0+Utb1vtObAMteiR6ae+5I8du+plWqFah0t5VKbEV1xW4uuIO5IA4Bz986z71mvbqpRbmTUaqX429sNhyO4r03BnIWOfIxn8aA3N9CsigDnyen3olFayFDk0665W4Eq1v69HlyC00raWmlBSkKzwSPtwceQdYw+L3rDWLhqggJQ41FiI2RcnBWc/MtQAABJ8eO2tAWXcl2/p3WX3S4pwpVuWySl3I/wD1pQ9erfrM2c+0i3I8sFBcQtMTkI7c7e3PvoZNcPHcCQjj371aiCPGUB5rLNfviqyKYiTU2VrbQdiXHBnIz21CqNq1WpwUzaPDMhtxsLCmkZwD747aOLwgXNHt522avZjQiLWHEEp+dsDcBt9uSM/jVFRLZ6vWBSZF2dNHZSIzzKm5jbRStSRzwUkHgZznHfVxLkyLxgH9DVdo1j6nIpK31QaoylfqMEEDCgBoHl0OU7HVUm2VpS3wpvGc8d9ak6WVGL1IdnW51Ht6NMmuO+ozMGGHMEYKSBhJAPIOO5OfGqC//h1doNVcnUOnThGUopKS0HAoc9iO/wDHjUqak0bGNxz+lQtbK3xrX//Z\";\n\n this.emptyImage = new Image();\n this.emptyImage.onload = () => {\n this.samplers.empty = this.gl.createTexture();\n this.bindTexture(this.samplers.empty, this.emptyImage, 1, 1);\n };\n this.emptyImage.src =\n \"data:image/gif;base64,R0lGODlhAQABAIAAAAUEBAAAACwAAAAAAQABAAACAkQBADs=\";\n /* eslint-enable max-len */\n }\n\n bindTexture(texture, data, width, height) {\n this.gl.bindTexture(this.gl.TEXTURE_2D, texture);\n\n this.gl.pixelStorei(this.gl.UNPACK_ALIGNMENT, 1);\n this.gl.texImage2D(\n this.gl.TEXTURE_2D,\n 0,\n this.gl.RGBA,\n width,\n height,\n 0,\n this.gl.RGBA,\n this.gl.UNSIGNED_BYTE,\n data\n );\n\n this.gl.generateMipmap(this.gl.TEXTURE_2D);\n\n this.gl.texParameteri(\n this.gl.TEXTURE_2D,\n this.gl.TEXTURE_WRAP_S,\n this.gl.REPEAT\n );\n this.gl.texParameteri(\n this.gl.TEXTURE_2D,\n this.gl.TEXTURE_WRAP_T,\n this.gl.REPEAT\n );\n this.gl.texParameteri(\n this.gl.TEXTURE_2D,\n this.gl.TEXTURE_MIN_FILTER,\n this.gl.LINEAR_MIPMAP_LINEAR\n );\n this.gl.texParameteri(\n this.gl.TEXTURE_2D,\n this.gl.TEXTURE_MAG_FILTER,\n this.gl.LINEAR\n );\n if (this.anisoExt) {\n const max = this.gl.getParameter(\n this.anisoExt.MAX_TEXTURE_MAX_ANISOTROPY_EXT\n );\n this.gl.texParameterf(\n this.gl.TEXTURE_2D,\n this.anisoExt.TEXTURE_MAX_ANISOTROPY_EXT,\n max\n );\n }\n }\n\n loadExtraImages(imageData) {\n Object.keys(imageData).forEach((imageName) => {\n const { data, width, height } = imageData[imageName];\n if (!this.samplers[imageName]) {\n const image = new Image();\n image.onload = () => {\n this.samplers[imageName] = this.gl.createTexture();\n this.bindTexture(this.samplers[imageName], image, width, height);\n };\n image.src = data;\n }\n });\n }\n\n getTexture(sampler) {\n const tex = this.samplers[sampler];\n if (tex) {\n return tex;\n }\n\n return this.samplers.clouds2;\n }\n}\n\nclass TitleText {\n constructor(gl, opts = {}) {\n this.gl = gl;\n\n this.texsizeX = opts.texsizeX;\n this.texsizeY = opts.texsizeY;\n this.aspectx = opts.aspectx;\n this.aspecty = opts.aspecty;\n this.invAspectx = 1.0 / this.aspectx;\n this.invAspecty = 1.0 / this.aspecty;\n\n this.buildPositions();\n\n this.textTexture = this.gl.createTexture();\n this.indexBuf = gl.createBuffer();\n this.positionVertexBuf = this.gl.createBuffer();\n this.vertexBuf = this.gl.createBuffer();\n\n this.canvas = document.createElement(\"canvas\");\n this.canvas.width = this.texsizeX;\n this.canvas.height = this.texsizeY;\n this.context2D = this.canvas.getContext(\"2d\", { willReadFrequently: false });\n\n this.floatPrecision = ShaderUtils.getFragmentFloatPrecision(this.gl);\n this.createShader();\n }\n\n generateTitleTexture(text) {\n this.context2D.clearRect(0, 0, this.texsizeX, this.texsizeY);\n\n this.fontSize = Math.floor(16 * (this.texsizeX / 256));\n this.fontSize = Math.max(this.fontSize, 6);\n this.context2D.font = `italic ${this.fontSize}px Times New Roman`;\n\n let titleText = text;\n let textLength = this.context2D.measureText(titleText).width;\n if (textLength > this.texsizeX) {\n const percentToKeep = 0.91 * (this.texsizeX / textLength);\n titleText = `${titleText.substring(\n 0,\n Math.floor(titleText.length * percentToKeep)\n )}...`;\n textLength = this.context2D.measureText(titleText).width;\n }\n\n this.context2D.fillStyle = \"#FFFFFF\";\n this.context2D.fillText(\n titleText,\n (this.texsizeX - textLength) / 2,\n this.texsizeY / 2\n );\n\n const imageData = new Uint8Array(\n this.context2D.getImageData(\n 0,\n 0,\n this.texsizeX,\n this.texsizeY\n ).data.buffer\n );\n\n this.gl.pixelStorei(this.gl.UNPACK_FLIP_Y_WEBGL, true);\n\n this.gl.bindTexture(this.gl.TEXTURE_2D, this.textTexture);\n this.gl.texImage2D(\n this.gl.TEXTURE_2D,\n 0,\n this.gl.RGBA,\n this.texsizeX,\n this.texsizeY,\n 0,\n this.gl.RGBA,\n this.gl.UNSIGNED_BYTE,\n imageData\n );\n this.gl.texParameteri(\n this.gl.TEXTURE_2D,\n this.gl.TEXTURE_MAG_FILTER,\n this.gl.LINEAR\n );\n this.gl.texParameteri(\n this.gl.TEXTURE_2D,\n this.gl.TEXTURE_MIN_FILTER,\n this.gl.LINEAR_MIPMAP_LINEAR\n );\n this.gl.texParameteri(\n this.gl.TEXTURE_2D,\n this.gl.TEXTURE_WRAP_S,\n this.gl.CLAMP_TO_EDGE\n );\n this.gl.texParameteri(\n this.gl.TEXTURE_2D,\n this.gl.TEXTURE_WRAP_T,\n this.gl.CLAMP_TO_EDGE\n );\n this.gl.generateMipmap(this.gl.TEXTURE_2D);\n\n this.gl.bindTexture(this.gl.TEXTURE_2D, null);\n }\n\n updateGlobals(opts) {\n this.texsizeX = opts.texsizeX;\n this.texsizeY = opts.texsizeY;\n this.aspectx = opts.aspectx;\n this.aspecty = opts.aspecty;\n this.invAspectx = 1.0 / this.aspectx;\n this.invAspecty = 1.0 / this.aspecty;\n\n this.canvas.width = this.texsizeX;\n this.canvas.height = this.texsizeY;\n }\n\n // based on https://github.com/mrdoob/three.js/blob/master/src/geometries/PlaneGeometry.js\n buildPositions() {\n const width = 2;\n const height = 2;\n\n const widthHalf = width / 2;\n const heightHalf = height / 2;\n\n const gridX = 15;\n const gridY = 7;\n\n const gridX1 = gridX + 1;\n const gridY1 = gridY + 1;\n\n const segmentWidth = width / gridX;\n const segmentHeight = height / gridY;\n\n const vertices = [];\n for (let iy = 0; iy < gridY1; iy++) {\n const y = iy * segmentHeight - heightHalf;\n for (let ix = 0; ix < gridX1; ix++) {\n const x = ix * segmentWidth - widthHalf;\n vertices.push(x, -y, 0);\n }\n }\n\n const indices = [];\n for (let iy = 0; iy < gridY; iy++) {\n for (let ix = 0; ix < gridX; ix++) {\n const a = ix + gridX1 * iy;\n const b = ix + gridX1 * (iy + 1);\n const c = ix + 1 + gridX1 * (iy + 1);\n const d = ix + 1 + gridX1 * iy;\n\n indices.push(a, b, d);\n indices.push(b, c, d);\n }\n }\n\n this.vertices = new Float32Array(vertices);\n this.indices = new Uint16Array(indices);\n }\n\n createShader() {\n this.shaderProgram = this.gl.createProgram();\n\n const vertShader = this.gl.createShader(this.gl.VERTEX_SHADER);\n this.gl.shaderSource(\n vertShader,\n `#version 300 es\n const vec2 halfmad = vec2(0.5);\n in vec2 aPos;\n in vec2 aUv;\n out vec2 uv_orig;\n out vec2 uv;\n void main(void) {\n gl_Position = vec4(aPos, 0.0, 1.0);\n uv_orig = aPos * halfmad + halfmad;\n uv = aUv;\n }`\n );\n this.gl.compileShader(vertShader);\n\n const fragShader = this.gl.createShader(this.gl.FRAGMENT_SHADER);\n this.gl.shaderSource(\n fragShader,\n `#version 300 es\n precision ${this.floatPrecision} float;\n precision highp int;\n precision mediump sampler2D;\n\n in vec2 uv_orig;\n in vec2 uv;\n out vec4 fragColor;\n uniform sampler2D uTexture;\n uniform float textColor;\n\n void main(void) {\n fragColor = texture(uTexture, uv) * vec4(textColor);\n }`\n );\n this.gl.compileShader(fragShader);\n\n this.gl.attachShader(this.shaderProgram, vertShader);\n this.gl.attachShader(this.shaderProgram, fragShader);\n this.gl.linkProgram(this.shaderProgram);\n\n this.positionLocation = this.gl.getAttribLocation(\n this.shaderProgram,\n \"aPos\"\n );\n this.uvLocation = this.gl.getAttribLocation(this.shaderProgram, \"aUv\");\n this.textureLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"uTexture\"\n );\n this.textColorLoc = this.gl.getUniformLocation(\n this.shaderProgram,\n \"textColor\"\n );\n }\n\n generateUvs(progress, flip, globalVars) {\n const gridX = 15;\n const gridY = 7;\n\n const gridX1 = gridX + 1;\n const gridY1 = gridY + 1;\n\n const uvs = [];\n const vertClip = 0.75;\n for (let j = 0; j < gridY1; j++) {\n for (let i = 0; i < gridX1; i++) {\n const u = i / gridX;\n const v = (j / gridY - 0.5) * vertClip + 0.5;\n const x = u * 2.0 - 1.0;\n let y = v * 2.0 - 1.0;\n if (progress >= 1) {\n y += 1.0 / this.texsizeY;\n }\n\n uvs.push(x, flip ? y : -y);\n }\n }\n\n const rampedProgress = Math.max(0, 1 - progress * 1.5);\n const t2 = rampedProgress ** 1.8 * 1.3;\n for (let j = 0; j < gridY1; j++) {\n for (let i = 0; i < gridX1; i++) {\n const idx = j * gridX1 + i;\n uvs[idx] +=\n t2 *\n 0.07 *\n Math.sin(\n globalVars.time * 0.31 + uvs[idx] * 0.39 - uvs[idx + 1] * 1.94\n );\n uvs[idx] +=\n t2 *\n 0.044 *\n Math.sin(\n globalVars.time * 0.81 - uvs[idx] * 1.91 + uvs[idx + 1] * 0.27\n );\n uvs[idx] +=\n t2 *\n 0.061 *\n Math.sin(\n globalVars.time * 1.31 + uvs[idx] * 0.61 + uvs[idx + 1] * 0.74\n );\n\n uvs[idx + 1] +=\n t2 *\n 0.061 *\n Math.sin(\n globalVars.time * 0.37 + uvs[idx] * 1.83 + uvs[idx + 1] * 0.69\n );\n uvs[idx + 1] +=\n t2 *\n 0.07 *\n Math.sin(\n globalVars.time * 0.67 + uvs[idx] * 0.42 - uvs[idx + 1] * 1.39\n );\n uvs[idx + 1] +=\n t2 *\n 0.087 *\n Math.sin(\n globalVars.time * 1.07 + uvs[idx] * 3.55 + uvs[idx + 1] * 0.89\n );\n }\n }\n\n const scale = 1.01 / (progress ** 0.21 + 0.01);\n for (let i = 0; i < uvs.length / 2; i++) {\n uvs[i * 2] *= scale;\n uvs[i * 2 + 1] *= scale * this.invAspecty;\n\n // get back UVs\n uvs[i * 2] = (uvs[i * 2] + 1) / 2.0;\n uvs[i * 2 + 1] = (uvs[i * 2 + 1] + 1) / 2.0;\n }\n\n return new Float32Array(uvs);\n }\n\n renderTitle(progress, flip, globalVars) {\n this.gl.useProgram(this.shaderProgram);\n\n const progressUvs = this.generateUvs(progress, flip, globalVars);\n\n this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER, this.indexBuf);\n this.gl.bufferData(\n this.gl.ELEMENT_ARRAY_BUFFER,\n this.indices,\n this.gl.STATIC_DRAW\n );\n\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.positionVertexBuf);\n this.gl.bufferData(\n this.gl.ARRAY_BUFFER,\n this.vertices,\n this.gl.STATIC_DRAW\n );\n\n this.gl.vertexAttribPointer(\n this.positionLocation,\n 3,\n this.gl.FLOAT,\n false,\n 0,\n 0\n );\n this.gl.enableVertexAttribArray(this.positionLocation);\n\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.vertexBuf);\n this.gl.bufferData(this.gl.ARRAY_BUFFER, progressUvs, this.gl.STATIC_DRAW);\n\n this.gl.vertexAttribPointer(this.uvLocation, 2, this.gl.FLOAT, false, 0, 0);\n this.gl.enableVertexAttribArray(this.uvLocation);\n\n this.gl.activeTexture(this.gl.TEXTURE0);\n this.gl.bindTexture(this.gl.TEXTURE_2D, this.textTexture);\n\n this.gl.uniform1i(this.textureLoc, 0);\n\n this.gl.uniform1f(this.textColorLoc, progress ** 0.3);\n\n this.gl.blendFunc(this.gl.SRC_ALPHA, this.gl.ONE_MINUS_SRC_ALPHA);\n\n this.gl.drawElements(\n this.gl.TRIANGLES,\n this.indices.length,\n this.gl.UNSIGNED_SHORT,\n 0\n );\n }\n}\n\nclass BlendPattern {\n constructor(opts) {\n this.rng = getRNG();\n this.mesh_width = opts.mesh_width;\n this.mesh_height = opts.mesh_height;\n this.aspectx = opts.aspectx;\n this.aspecty = opts.aspecty;\n\n this.vertInfoA = new Float32Array(\n (this.mesh_width + 1) * (this.mesh_height + 1)\n );\n this.vertInfoC = new Float32Array(\n (this.mesh_width + 1) * (this.mesh_height + 1)\n );\n\n this.createBlendPattern();\n }\n\n static resizeMatrixValues(oldMat, oldWidth, oldHeight, newWidth, newHeight) {\n const newMat = new Float32Array((newWidth + 1) * (newHeight + 1));\n let nVert = 0;\n for (let j = 0; j < newHeight + 1; j++) {\n for (let i = 0; i < newWidth + 1; i++) {\n let x = i / newHeight;\n let y = j / newWidth;\n\n x *= oldWidth + 1;\n y *= oldHeight + 1;\n x = Math.clamp(x, 0, oldWidth - 1);\n y = Math.clamp(y, 0, oldHeight - 1);\n const nx = Math.floor(x);\n const ny = Math.floor(y);\n const dx = x - nx;\n const dy = y - ny;\n const val00 = oldMat[ny * (oldWidth + 1) + nx];\n const val01 = oldMat[ny * (oldWidth + 1) + (nx + 1)];\n const val10 = oldMat[(ny + 1) * (oldWidth + 1) + nx];\n const val11 = oldMat[(ny + 1) * (oldWidth + 1) + (nx + 1)];\n newMat[nVert] =\n val00 * (1 - dx) * (1 - dy) +\n val01 * dx * (1 - dy) +\n val10 * (1 - dx) * dy +\n val11 * dx * dy;\n\n nVert += 1;\n }\n }\n\n return newMat;\n }\n\n updateGlobals(opts) {\n const oldMeshWidth = this.mesh_width;\n const oldMeshHeight = this.mesh_height;\n\n this.mesh_width = opts.mesh_width;\n this.mesh_height = opts.mesh_height;\n this.aspectx = opts.aspectx;\n this.aspecty = opts.aspecty;\n\n if (\n this.mesh_width !== oldMeshWidth ||\n this.mesh_height !== oldMeshHeight\n ) {\n this.vertInfoA = BlendPattern.resizeMatrixValues(\n this.vertInfoA,\n oldMeshWidth,\n oldMeshHeight,\n this.mesh_width,\n this.mesh_height\n );\n this.vertInfoC = BlendPattern.resizeMatrixValues(\n this.vertInfoC,\n oldMeshWidth,\n oldMeshHeight,\n this.mesh_width,\n this.mesh_height\n );\n }\n }\n\n genPlasma(x0, x1, y0, y1, dt) {\n const midx = Math.floor((x0 + x1) / 2);\n const midy = Math.floor((y0 + y1) / 2);\n let t00 = this.vertInfoC[y0 * (this.mesh_width + 1) + x0];\n let t01 = this.vertInfoC[y0 * (this.mesh_width + 1) + x1];\n let t10 = this.vertInfoC[y1 * (this.mesh_width + 1) + x0];\n let t11 = this.vertInfoC[y1 * (this.mesh_width + 1) + x1];\n\n if (y1 - y0 >= 2) {\n if (x0 === 0) {\n this.vertInfoC[midy * (this.mesh_width + 1) + x0] =\n 0.5 * (t00 + t10) + (this.rng.random() * 2 - 1) * dt * this.aspecty;\n }\n this.vertInfoC[midy * (this.mesh_width + 1) + x1] =\n 0.5 * (t01 + t11) + (this.rng.random() * 2 - 1) * dt * this.aspecty;\n }\n if (x1 - x0 >= 2) {\n if (y0 === 0) {\n this.vertInfoC[y0 * (this.mesh_width + 1) + midx] =\n 0.5 * (t00 + t01) + (this.rng.random() * 2 - 1) * dt * this.aspectx;\n }\n this.vertInfoC[y1 * (this.mesh_width + 1) + midx] =\n 0.5 * (t10 + t11) + (this.rng.random() * 2 - 1) * dt * this.aspectx;\n }\n\n if (y1 - y0 >= 2 && x1 - x0 >= 2) {\n t00 = this.vertInfoC[midy * (this.mesh_width + 1) + x0];\n t01 = this.vertInfoC[midy * (this.mesh_width + 1) + x1];\n t10 = this.vertInfoC[y0 * (this.mesh_width + 1) + midx];\n t11 = this.vertInfoC[y1 * (this.mesh_width + 1) + midx];\n this.vertInfoC[midy * (this.mesh_width + 1) + midx] =\n 0.25 * (t10 + t11 + t00 + t01) + (this.rng.random() * 2 - 1) * dt;\n\n this.genPlasma(x0, midx, y0, midy, dt * 0.5);\n this.genPlasma(midx, x1, y0, midy, dt * 0.5);\n this.genPlasma(x0, midx, midy, y1, dt * 0.5);\n this.genPlasma(midx, x1, midy, y1, dt * 0.5);\n }\n }\n\n createBlendPattern() {\n const mixType = 1 + Math.floor(this.rng.random() * 3);\n if (mixType === 0) {\n // not currently used\n let nVert = 0;\n for (let y = 0; y <= this.mesh_height; y++) {\n for (let x = 0; x <= this.mesh_width; x++) {\n this.vertInfoA[nVert] = 1;\n this.vertInfoC[nVert] = 0;\n nVert += 1;\n }\n }\n } else if (mixType === 1) {\n const ang = this.rng.random() * 6.28;\n const vx = Math.cos(ang);\n const vy = Math.sin(ang);\n const band = 0.1 + 0.2 * this.rng.random();\n const invBand = 1.0 / band;\n\n let nVert = 0;\n for (let y = 0; y <= this.mesh_height; y++) {\n const fy = (y / this.mesh_height) * this.aspecty;\n for (let x = 0; x <= this.mesh_width; x++) {\n const fx = (x / this.mesh_width) * this.aspectx;\n\n let t = (fx - 0.5) * vx + (fy - 0.5) * vy + 0.5;\n t = (t - 0.5) / Math.sqrt(2) + 0.5;\n\n this.vertInfoA[nVert] = invBand * (1 + band);\n this.vertInfoC[nVert] = -invBand + invBand * t;\n nVert += 1;\n }\n }\n } else if (mixType === 2) {\n const band = 0.12 + 0.13 * this.rng.random();\n const invBand = 1.0 / band;\n\n this.vertInfoC[0] = this.rng.random();\n this.vertInfoC[this.mesh_width] = this.rng.random();\n this.vertInfoC[this.mesh_height * (this.mesh_width + 1)] = this.rng.random();\n this.vertInfoC[\n this.mesh_height * (this.mesh_width + 1) + this.mesh_width\n ] = this.rng.random();\n this.genPlasma(0, this.mesh_width, 0, this.mesh_height, 0.25);\n\n let minc = this.vertInfoC[0];\n let maxc = this.vertInfoC[0];\n\n let nVert = 0;\n for (let y = 0; y <= this.mesh_height; y++) {\n for (let x = 0; x <= this.mesh_width; x++) {\n if (minc > this.vertInfoC[nVert]) {\n minc = this.vertInfoC[nVert];\n }\n if (maxc < this.vertInfoC[nVert]) {\n maxc = this.vertInfoC[nVert];\n }\n nVert += 1;\n }\n }\n\n const mult = 1.0 / (maxc - minc);\n nVert = 0;\n for (let y = 0; y <= this.mesh_height; y++) {\n for (let x = 0; x <= this.mesh_width; x++) {\n const t = (this.vertInfoC[nVert] - minc) * mult;\n this.vertInfoA[nVert] = invBand * (1 + band);\n this.vertInfoC[nVert] = -invBand + invBand * t;\n nVert += 1;\n }\n }\n } else if (mixType === 3) {\n const band = 0.02 + 0.14 * this.rng.random() + 0.34 * this.rng.random();\n const invBand = 1.0 / band;\n const dir = Math.floor(this.rng.random() * 2) * 2 - 1;\n\n let nVert = 0;\n for (let y = 0; y <= this.mesh_height; y++) {\n const dy = (y / this.mesh_height - 0.5) * this.aspecty;\n for (let x = 0; x <= this.mesh_width; x++) {\n const dx = (x / this.mesh_width - 0.5) * this.aspectx;\n let t = Math.sqrt(dx * dx + dy * dy) * 1.41421;\n if (dir === -1) {\n t = 1 - t;\n }\n\n this.vertInfoA[nVert] = invBand * (1 + band);\n this.vertInfoC[nVert] = -invBand + invBand * t;\n nVert += 1;\n }\n }\n }\n }\n}\n\nclass Renderer {\n constructor(gl, audio, opts) {\n this.gl = gl;\n this.audio = audio;\n\n this.frameNum = 0;\n this.fps = 30;\n this.time = 0;\n this.presetTime = 0;\n this.lastTime = performance.now();\n this.timeHist = [0];\n this.timeHistMax = 120;\n this.blending = false;\n this.blendStartTime = 0;\n this.blendProgress = 0;\n this.blendDuration = 0;\n\n this.width = opts.width || 1200;\n this.height = opts.height || 900;\n this.mesh_width = opts.meshWidth || 48;\n this.mesh_height = opts.meshHeight || 36;\n this.pixelRatio = opts.pixelRatio || window.devicePixelRatio || 1;\n this.textureRatio = opts.textureRatio || 1;\n this.outputFXAA = opts.outputFXAA || false;\n this.texsizeX = this.width * this.pixelRatio * this.textureRatio;\n this.texsizeY = this.height * this.pixelRatio * this.textureRatio;\n this.aspectx =\n this.texsizeY > this.texsizeX ? this.texsizeX / this.texsizeY : 1;\n this.aspecty =\n this.texsizeX > this.texsizeY ? this.texsizeY / this.texsizeX : 1;\n this.invAspectx = 1.0 / this.aspectx;\n this.invAspecty = 1.0 / this.aspecty;\n\n this.qs = Utils.range(1, 33).map((x) => `q${x}`);\n this.ts = Utils.range(1, 9).map((x) => `t${x}`);\n this.regs = Utils.range(0, 100).map((x) => {\n if (x < 10) {\n return `reg0${x}`;\n }\n return `reg${x}`;\n });\n\n this.blurRatios = [\n [0.5, 0.25],\n [0.125, 0.125],\n [0.0625, 0.0625],\n ];\n\n this.audioLevels = new AudioLevels(this.audio);\n\n this.prevFrameBuffer = this.gl.createFramebuffer();\n this.targetFrameBuffer = this.gl.createFramebuffer();\n this.prevTexture = this.gl.createTexture();\n this.targetTexture = this.gl.createTexture();\n\n this.compFrameBuffer = this.gl.createFramebuffer();\n this.compTexture = this.gl.createTexture();\n\n this.anisoExt =\n this.gl.getExtension(\"EXT_texture_filter_anisotropic\") ||\n this.gl.getExtension(\"MOZ_EXT_texture_filter_anisotropic\") ||\n this.gl.getExtension(\"WEBKIT_EXT_texture_filter_anisotropic\");\n\n this.bindFrameBufferTexture(this.prevFrameBuffer, this.prevTexture);\n this.bindFrameBufferTexture(this.targetFrameBuffer, this.targetTexture);\n this.bindFrameBufferTexture(this.compFrameBuffer, this.compTexture);\n\n const params = {\n pixelRatio: this.pixelRatio,\n textureRatio: this.textureRatio,\n texsizeX: this.texsizeX,\n texsizeY: this.texsizeY,\n mesh_width: this.mesh_width,\n mesh_height: this.mesh_height,\n aspectx: this.aspectx,\n aspecty: this.aspecty,\n };\n this.noise = new Noise(gl);\n this.image = new ImageTextures(gl);\n this.warpShader = new WarpShader(gl, this.noise, this.image, params);\n this.compShader = new CompShader(gl, this.noise, this.image, params);\n this.outputShader = new OutputShader(gl, params);\n this.prevWarpShader = new WarpShader(gl, this.noise, this.image, params);\n this.prevCompShader = new CompShader(gl, this.noise, this.image, params);\n this.numBlurPasses = 0;\n this.blurShader1 = new BlurShader(0, this.blurRatios, gl, params);\n this.blurShader2 = new BlurShader(1, this.blurRatios, gl, params);\n this.blurShader3 = new BlurShader(2, this.blurRatios, gl, params);\n this.blurTexture1 = this.blurShader1.blurVerticalTexture;\n this.blurTexture2 = this.blurShader2.blurVerticalTexture;\n this.blurTexture3 = this.blurShader3.blurVerticalTexture;\n this.basicWaveform = new BasicWaveform(gl, params);\n this.customWaveforms = Utils.range(4).map(\n (i) => new CustomWaveform(i, gl, params)\n );\n this.customShapes = Utils.range(4).map(\n (i) => new CustomShape$1(i, gl, params)\n );\n this.prevCustomWaveforms = Utils.range(4).map(\n (i) => new CustomWaveform(i, gl, params)\n );\n this.prevCustomShapes = Utils.range(4).map(\n (i) => new CustomShape$1(i, gl, params)\n );\n this.darkenCenter = new CustomShape(gl, params);\n this.innerBorder = new Border(gl, params);\n this.outerBorder = new Border(gl, params);\n this.motionVectors = new MotionVectors(gl, params);\n this.titleText = new TitleText(gl, params);\n this.blendPattern = new BlendPattern(params);\n this.resampleShader = new ResampleShader(gl);\n\n this.supertext = {\n startTime: -1,\n };\n\n this.warpUVs = new Float32Array(\n (this.mesh_width + 1) * (this.mesh_height + 1) * 2\n );\n this.warpColor = new Float32Array(\n (this.mesh_width + 1) * (this.mesh_height + 1) * 4\n );\n\n this.gl.clearColor(0, 0, 0, 1);\n\n this.blankPreset = pmap;\n\n const globalVars = {\n frame: 0,\n time: 0,\n fps: 45,\n bass: 1,\n bass_att: 1,\n mid: 1,\n mid_att: 1,\n treb: 1,\n treb_att: 1,\n };\n\n this.preset = pmap;\n this.prevPreset = this.preset;\n this.presetEquationRunner = new PresetEquationRunner(\n this.preset,\n globalVars,\n params\n );\n this.prevPresetEquationRunner = new PresetEquationRunner(\n this.prevPreset,\n globalVars,\n params\n );\n\n if (!this.preset.useWASM) {\n this.regVars = this.presetEquationRunner.mdVSRegs;\n }\n }\n\n static getHighestBlur(t) {\n if (/sampler_blur3/.test(t)) {\n return 3;\n } else if (/sampler_blur2/.test(t)) {\n return 2;\n } else if (/sampler_blur1/.test(t)) {\n return 1;\n }\n\n return 0;\n }\n\n loadPreset(preset, blendTime) {\n this.blendPattern.createBlendPattern();\n this.blending = true;\n this.blendStartTime = this.time;\n this.blendDuration = blendTime;\n this.blendProgress = 0;\n\n this.prevPresetEquationRunner = this.presetEquationRunner;\n\n this.prevPreset = this.preset;\n this.preset = preset;\n\n this.presetTime = this.time;\n\n const globalVars = {\n frame: this.frameNum,\n time: this.time,\n fps: this.fps,\n bass: this.audioLevels.bass,\n bass_att: this.audioLevels.bass_att,\n mid: this.audioLevels.mid,\n mid_att: this.audioLevels.mid_att,\n treb: this.audioLevels.treb,\n treb_att: this.audioLevels.treb_att,\n };\n const params = {\n pixelRatio: this.pixelRatio,\n textureRatio: this.textureRatio,\n texsizeX: this.texsizeX,\n texsizeY: this.texsizeY,\n mesh_width: this.mesh_width,\n mesh_height: this.mesh_height,\n aspectx: this.aspectx,\n aspecty: this.aspecty,\n };\n\n if (preset.useWASM) {\n this.preset.globalPools.perFrame.old_wave_mode.value = this.prevPreset.baseVals.wave_mode;\n this.preset.baseVals.old_wave_mode = this.prevPreset.baseVals.wave_mode;\n this.presetEquationRunner = new PresetEquationRunnerWASM(\n this.preset,\n globalVars,\n params\n );\n if (this.preset.pixel_eqs_initialize_array) {\n this.preset.pixel_eqs_initialize_array(\n this.mesh_width,\n this.mesh_height\n );\n }\n } else {\n this.preset.baseVals.old_wave_mode = this.prevPreset.baseVals.wave_mode;\n this.presetEquationRunner = new PresetEquationRunner(\n this.preset,\n globalVars,\n params\n );\n this.regVars = this.presetEquationRunner.mdVSRegs;\n }\n\n const tmpWarpShader = this.prevWarpShader;\n this.prevWarpShader = this.warpShader;\n this.warpShader = tmpWarpShader;\n\n const tmpCompShader = this.prevCompShader;\n this.prevCompShader = this.compShader;\n this.compShader = tmpCompShader;\n\n const warpText = this.preset.warp.trim();\n const compText = this.preset.comp.trim();\n\n this.warpShader.updateShader(warpText);\n this.compShader.updateShader(compText);\n\n if (warpText.length === 0) {\n this.numBlurPasses = 0;\n } else {\n this.numBlurPasses = Renderer.getHighestBlur(warpText);\n }\n\n if (compText.length !== 0) {\n this.numBlurPasses = Math.max(\n this.numBlurPasses,\n Renderer.getHighestBlur(compText)\n );\n }\n }\n\n loadExtraImages(imageData) {\n this.image.loadExtraImages(imageData);\n }\n\n setRendererSize(width, height, opts) {\n const oldTexsizeX = this.texsizeX;\n const oldTexsizeY = this.texsizeY;\n\n this.width = width;\n this.height = height;\n this.mesh_width = opts.meshWidth || this.mesh_width;\n this.mesh_height = opts.meshHeight || this.mesh_height;\n this.pixelRatio = opts.pixelRatio || this.pixelRatio;\n this.textureRatio = opts.textureRatio || this.textureRatio;\n this.texsizeX = width * this.pixelRatio * this.textureRatio;\n this.texsizeY = height * this.pixelRatio * this.textureRatio;\n this.aspectx =\n this.texsizeY > this.texsizeX ? this.texsizeX / this.texsizeY : 1;\n this.aspecty =\n this.texsizeX > this.texsizeY ? this.texsizeY / this.texsizeX : 1;\n\n if (this.texsizeX !== oldTexsizeX || this.texsizeY !== oldTexsizeY) {\n // copy target texture, because we flip prev/target at start of render\n const targetTextureNew = this.gl.createTexture();\n this.bindFrameBufferTexture(this.targetFrameBuffer, targetTextureNew);\n this.bindFrambufferAndSetViewport(\n this.targetFrameBuffer,\n this.texsizeX,\n this.texsizeY\n );\n\n this.resampleShader.renderQuadTexture(this.targetTexture);\n\n this.targetTexture = targetTextureNew;\n\n this.bindFrameBufferTexture(this.prevFrameBuffer, this.prevTexture);\n this.bindFrameBufferTexture(this.compFrameBuffer, this.compTexture);\n }\n\n this.updateGlobals();\n\n // rerender current frame at new size\n if (this.frameNum > 0) {\n this.renderToScreen();\n }\n }\n\n setInternalMeshSize(width, height) {\n this.mesh_width = width;\n this.mesh_height = height;\n\n this.updateGlobals();\n }\n\n setOutputAA(useAA) {\n this.outputFXAA = useAA;\n }\n\n updateGlobals() {\n const params = {\n pixelRatio: this.pixelRatio,\n textureRatio: this.textureRatio,\n texsizeX: this.texsizeX,\n texsizeY: this.texsizeY,\n mesh_width: this.mesh_width,\n mesh_height: this.mesh_height,\n aspectx: this.aspectx,\n aspecty: this.aspecty,\n };\n this.presetEquationRunner.updateGlobals(params);\n this.prevPresetEquationRunner.updateGlobals(params);\n this.warpShader.updateGlobals(params);\n this.prevWarpShader.updateGlobals(params);\n this.compShader.updateGlobals(params);\n this.prevCompShader.updateGlobals(params);\n this.outputShader.updateGlobals(params);\n this.blurShader1.updateGlobals(params);\n this.blurShader2.updateGlobals(params);\n this.blurShader3.updateGlobals(params);\n this.basicWaveform.updateGlobals(params);\n this.customWaveforms.forEach((wave) => wave.updateGlobals(params));\n this.customShapes.forEach((shape) => shape.updateGlobals(params));\n this.prevCustomWaveforms.forEach((wave) => wave.updateGlobals(params));\n this.prevCustomShapes.forEach((shape) => shape.updateGlobals(params));\n this.darkenCenter.updateGlobals(params);\n this.innerBorder.updateGlobals(params);\n this.outerBorder.updateGlobals(params);\n this.motionVectors.updateGlobals(params);\n this.titleText.updateGlobals(params);\n this.blendPattern.updateGlobals(params);\n\n this.warpUVs = new Float32Array(\n (this.mesh_width + 1) * (this.mesh_height + 1) * 2\n );\n this.warpColor = new Float32Array(\n (this.mesh_width + 1) * (this.mesh_height + 1) * 4\n );\n\n if (this.preset.pixel_eqs_initialize_array) {\n this.preset.pixel_eqs_initialize_array(this.mesh_width, this.mesh_height);\n }\n }\n\n calcTimeAndFPS(elapsedTime) {\n let elapsed;\n if (elapsedTime) {\n elapsed = elapsedTime;\n } else {\n const newTime = performance.now();\n elapsed = (newTime - this.lastTime) / 1000.0;\n if (elapsed > 1.0 || elapsed < 0.0 || this.frame < 2) {\n elapsed = 1.0 / 30.0;\n }\n this.lastTime = newTime;\n }\n\n this.time += 1.0 / this.fps;\n\n if (this.blending) {\n this.blendProgress =\n (this.time - this.blendStartTime) / this.blendDuration;\n if (this.blendProgress > 1.0) {\n this.blending = false;\n }\n }\n\n const newHistTime = this.timeHist[this.timeHist.length - 1] + elapsed;\n this.timeHist.push(newHistTime);\n if (this.timeHist.length > this.timeHistMax) {\n this.timeHist.shift();\n }\n\n const newFPS = this.timeHist.length / (newHistTime - this.timeHist[0]);\n if (Math.abs(newFPS - this.fps) > 3.0 && this.frame > this.timeHistMax) {\n this.fps = newFPS;\n } else {\n const damping = 0.93;\n this.fps = damping * this.fps + (1.0 - damping) * newFPS;\n }\n }\n\n runPixelEquations(presetEquationRunner, mdVSFrame, globalVars, blending) {\n const gridX = this.mesh_width;\n const gridZ = this.mesh_height;\n\n const gridX1 = gridX + 1;\n const gridZ1 = gridZ + 1;\n\n const warpTimeV = this.time * mdVSFrame.warpanimspeed;\n const warpScaleInv = 1.0 / mdVSFrame.warpscale;\n\n const warpf0 = 11.68 + 4.0 * Math.cos(warpTimeV * 1.413 + 10);\n const warpf1 = 8.77 + 3.0 * Math.cos(warpTimeV * 1.113 + 7);\n const warpf2 = 10.54 + 3.0 * Math.cos(warpTimeV * 1.233 + 3);\n const warpf3 = 11.49 + 4.0 * Math.cos(warpTimeV * 0.933 + 5);\n\n const texelOffsetX = 0.0 / this.texsizeX;\n const texelOffsetY = 0.0 / this.texsizeY;\n\n const aspectx = this.aspectx;\n const aspecty = this.aspecty;\n\n let offset = 0;\n let offsetColor = 0;\n if (!presetEquationRunner.preset.useWASM) {\n let mdVSVertex = Utils.cloneVars(mdVSFrame);\n\n let warp = mdVSVertex.warp;\n let zoom = mdVSVertex.zoom;\n let zoomExp = mdVSVertex.zoomexp;\n let cx = mdVSVertex.cx;\n let cy = mdVSVertex.cy;\n let sx = mdVSVertex.sx;\n let sy = mdVSVertex.sy;\n let dx = mdVSVertex.dx;\n let dy = mdVSVertex.dy;\n let rot = mdVSVertex.rot;\n\n for (let iz = 0; iz < gridZ1; iz++) {\n for (let ix = 0; ix < gridX1; ix++) {\n const x = (ix / gridX) * 2.0 - 1.0;\n const y = (iz / gridZ) * 2.0 - 1.0;\n const rad = Math.sqrt(\n x * x * aspectx * aspectx + y * y * aspecty * aspecty\n );\n\n if (presetEquationRunner.runVertEQs) {\n let ang;\n if (iz === gridZ / 2 && ix === gridX / 2) {\n ang = 0;\n } else {\n ang = Utils.atan2(y * aspecty, x * aspectx);\n }\n\n mdVSVertex.x = x * 0.5 * aspectx + 0.5;\n mdVSVertex.y = y * -0.5 * aspecty + 0.5;\n mdVSVertex.rad = rad;\n mdVSVertex.ang = ang;\n\n mdVSVertex.zoom = mdVSFrame.zoom;\n mdVSVertex.zoomexp = mdVSFrame.zoomexp;\n mdVSVertex.rot = mdVSFrame.rot;\n mdVSVertex.warp = mdVSFrame.warp;\n mdVSVertex.cx = mdVSFrame.cx;\n mdVSVertex.cy = mdVSFrame.cy;\n mdVSVertex.dx = mdVSFrame.dx;\n mdVSVertex.dy = mdVSFrame.dy;\n mdVSVertex.sx = mdVSFrame.sx;\n mdVSVertex.sy = mdVSFrame.sy;\n\n mdVSVertex = presetEquationRunner.runPixelEquations(mdVSVertex);\n\n warp = mdVSVertex.warp;\n zoom = mdVSVertex.zoom;\n zoomExp = mdVSVertex.zoomexp;\n cx = mdVSVertex.cx;\n cy = mdVSVertex.cy;\n sx = mdVSVertex.sx;\n sy = mdVSVertex.sy;\n dx = mdVSVertex.dx;\n dy = mdVSVertex.dy;\n rot = mdVSVertex.rot;\n }\n\n const zoom2V = zoom ** (zoomExp ** (rad * 2.0 - 1.0));\n const zoom2Inv = 1.0 / zoom2V;\n\n let u = x * 0.5 * aspectx * zoom2Inv + 0.5;\n let v = -y * 0.5 * aspecty * zoom2Inv + 0.5;\n\n u = (u - cx) / sx + cx;\n v = (v - cy) / sy + cy;\n\n if (warp !== 0) {\n u +=\n warp *\n 0.0035 *\n Math.sin(\n warpTimeV * 0.333 + warpScaleInv * (x * warpf0 - y * warpf3)\n );\n v +=\n warp *\n 0.0035 *\n Math.cos(\n warpTimeV * 0.375 - warpScaleInv * (x * warpf2 + y * warpf1)\n );\n u +=\n warp *\n 0.0035 *\n Math.cos(\n warpTimeV * 0.753 - warpScaleInv * (x * warpf1 - y * warpf2)\n );\n v +=\n warp *\n 0.0035 *\n Math.sin(\n warpTimeV * 0.825 + warpScaleInv * (x * warpf0 + y * warpf3)\n );\n }\n\n const u2 = u - cx;\n const v2 = v - cy;\n\n const cosRot = Math.cos(rot);\n const sinRot = Math.sin(rot);\n u = u2 * cosRot - v2 * sinRot + cx;\n v = u2 * sinRot + v2 * cosRot + cy;\n\n u -= dx;\n v -= dy;\n\n u = (u - 0.5) / aspectx + 0.5;\n v = (v - 0.5) / aspecty + 0.5;\n\n u += texelOffsetX;\n v += texelOffsetY;\n\n if (!blending) {\n this.warpUVs[offset] = u;\n this.warpUVs[offset + 1] = v;\n\n this.warpColor[offsetColor + 0] = 1;\n this.warpColor[offsetColor + 1] = 1;\n this.warpColor[offsetColor + 2] = 1;\n this.warpColor[offsetColor + 3] = 1;\n } else {\n let mix2 =\n this.blendPattern.vertInfoA[offset / 2] * this.blendProgress +\n this.blendPattern.vertInfoC[offset / 2];\n mix2 = Math.clamp(mix2, 0, 1);\n\n this.warpUVs[offset] = this.warpUVs[offset] * mix2 + u * (1 - mix2);\n this.warpUVs[offset + 1] =\n this.warpUVs[offset + 1] * mix2 + v * (1 - mix2);\n\n this.warpColor[offsetColor + 0] = 1;\n this.warpColor[offsetColor + 1] = 1;\n this.warpColor[offsetColor + 2] = 1;\n this.warpColor[offsetColor + 3] = mix2;\n }\n\n offset += 2;\n offsetColor += 4;\n }\n }\n\n this.mdVSVertex = mdVSVertex;\n } else {\n const varPool = presetEquationRunner.preset.globalPools.perVertex;\n\n Utils.setWasm(varPool, globalVars, presetEquationRunner.globalKeys);\n Utils.setWasm(\n varPool,\n presetEquationRunner.mdVSQAfterFrame,\n presetEquationRunner.qs\n );\n\n varPool.zoom.value = mdVSFrame.zoom;\n varPool.zoomexp.value = mdVSFrame.zoomexp;\n varPool.rot.value = mdVSFrame.rot;\n varPool.warp.value = mdVSFrame.warp;\n varPool.cx.value = mdVSFrame.cx;\n varPool.cy.value = mdVSFrame.cy;\n varPool.dx.value = mdVSFrame.dx;\n varPool.dy.value = mdVSFrame.dy;\n varPool.sx.value = mdVSFrame.sx;\n varPool.sy.value = mdVSFrame.sy;\n\n presetEquationRunner.preset.pixel_eqs_wasm(\n presetEquationRunner.runVertEQs,\n this.mesh_width,\n this.mesh_height,\n this.time,\n mdVSFrame.warpanimspeed,\n mdVSFrame.warpscale,\n this.aspectx,\n this.aspecty\n );\n\n if (!blending) {\n this.warpUVs = presetEquationRunner.preset.pixel_eqs_get_array();\n this.warpColor.fill(1);\n } else {\n const newWarpUVs = presetEquationRunner.preset.pixel_eqs_get_array();\n\n let offset = 0;\n let offsetColor = 0;\n for (let iz = 0; iz < gridZ1; iz++) {\n for (let ix = 0; ix < gridX1; ix++) {\n const u = newWarpUVs[offset];\n const v = newWarpUVs[offset + 1];\n\n let mix2 =\n this.blendPattern.vertInfoA[offset / 2] * this.blendProgress +\n this.blendPattern.vertInfoC[offset / 2];\n mix2 = Math.clamp(mix2, 0, 1);\n\n this.warpUVs[offset] = this.warpUVs[offset] * mix2 + u * (1 - mix2);\n this.warpUVs[offset + 1] =\n this.warpUVs[offset + 1] * mix2 + v * (1 - mix2);\n\n this.warpColor[offsetColor + 0] = 1;\n this.warpColor[offsetColor + 1] = 1;\n this.warpColor[offsetColor + 2] = 1;\n this.warpColor[offsetColor + 3] = mix2;\n\n offset += 2;\n offsetColor += 4;\n }\n }\n }\n }\n }\n\n static mixFrameEquations(blendProgress, mdVSFrame, mdVSFramePrev) {\n const mix = 0.5 - 0.5 * Math.cos(blendProgress * Math.PI);\n const mix2 = 1 - mix;\n const snapPoint = 0.5;\n\n const mixedFrame = Utils.cloneVars(mdVSFrame);\n\n mixedFrame.decay = mix * mdVSFrame.decay + mix2 * mdVSFramePrev.decay;\n mixedFrame.wave_a = mix * mdVSFrame.wave_a + mix2 * mdVSFramePrev.wave_a;\n mixedFrame.wave_r = mix * mdVSFrame.wave_r + mix2 * mdVSFramePrev.wave_r;\n mixedFrame.wave_g = mix * mdVSFrame.wave_g + mix2 * mdVSFramePrev.wave_g;\n mixedFrame.wave_b = mix * mdVSFrame.wave_b + mix2 * mdVSFramePrev.wave_b;\n mixedFrame.wave_x = mix * mdVSFrame.wave_x + mix2 * mdVSFramePrev.wave_x;\n mixedFrame.wave_y = mix * mdVSFrame.wave_y + mix2 * mdVSFramePrev.wave_y;\n mixedFrame.wave_mystery =\n mix * mdVSFrame.wave_mystery + mix2 * mdVSFramePrev.wave_mystery;\n mixedFrame.ob_size = mix * mdVSFrame.ob_size + mix2 * mdVSFramePrev.ob_size;\n mixedFrame.ob_r = mix * mdVSFrame.ob_r + mix2 * mdVSFramePrev.ob_r;\n mixedFrame.ob_g = mix * mdVSFrame.ob_g + mix2 * mdVSFramePrev.ob_g;\n mixedFrame.ob_b = mix * mdVSFrame.ob_b + mix2 * mdVSFramePrev.ob_b;\n mixedFrame.ob_a = mix * mdVSFrame.ob_a + mix2 * mdVSFramePrev.ob_a;\n mixedFrame.ib_size = mix * mdVSFrame.ib_size + mix2 * mdVSFramePrev.ib_size;\n mixedFrame.ib_r = mix * mdVSFrame.ib_r + mix2 * mdVSFramePrev.ib_r;\n mixedFrame.ib_g = mix * mdVSFrame.ib_g + mix2 * mdVSFramePrev.ib_g;\n mixedFrame.ib_b = mix * mdVSFrame.ib_b + mix2 * mdVSFramePrev.ib_b;\n mixedFrame.ib_a = mix * mdVSFrame.ib_a + mix2 * mdVSFramePrev.ib_a;\n mixedFrame.mv_x = mix * mdVSFrame.mv_x + mix2 * mdVSFramePrev.mv_x;\n mixedFrame.mv_y = mix * mdVSFrame.mv_y + mix2 * mdVSFramePrev.mv_y;\n mixedFrame.mv_dx = mix * mdVSFrame.mv_dx + mix2 * mdVSFramePrev.mv_dx;\n mixedFrame.mv_dy = mix * mdVSFrame.mv_dy + mix2 * mdVSFramePrev.mv_dy;\n mixedFrame.mv_l = mix * mdVSFrame.mv_l + mix2 * mdVSFramePrev.mv_l;\n mixedFrame.mv_r = mix * mdVSFrame.mv_r + mix2 * mdVSFramePrev.mv_r;\n mixedFrame.mv_g = mix * mdVSFrame.mv_g + mix2 * mdVSFramePrev.mv_g;\n mixedFrame.mv_b = mix * mdVSFrame.mv_b + mix2 * mdVSFramePrev.mv_b;\n mixedFrame.mv_a = mix * mdVSFrame.mv_a + mix2 * mdVSFramePrev.mv_a;\n mixedFrame.echo_zoom =\n mix * mdVSFrame.echo_zoom + mix2 * mdVSFramePrev.echo_zoom;\n mixedFrame.echo_alpha =\n mix * mdVSFrame.echo_alpha + mix2 * mdVSFramePrev.echo_alpha;\n mixedFrame.echo_orient =\n mix * mdVSFrame.echo_orient + mix2 * mdVSFramePrev.echo_orient;\n mixedFrame.wave_dots =\n mix < snapPoint ? mdVSFramePrev.wave_dots : mdVSFrame.wave_dots;\n mixedFrame.wave_thick =\n mix < snapPoint ? mdVSFramePrev.wave_thick : mdVSFrame.wave_thick;\n mixedFrame.additivewave =\n mix < snapPoint ? mdVSFramePrev.additivewave : mdVSFrame.additivewave;\n mixedFrame.wave_brighten =\n mix < snapPoint ? mdVSFramePrev.wave_brighten : mdVSFrame.wave_brighten;\n mixedFrame.darken_center =\n mix < snapPoint ? mdVSFramePrev.darken_center : mdVSFrame.darken_center;\n mixedFrame.gammaadj =\n mix < snapPoint ? mdVSFramePrev.gammaadj : mdVSFrame.gammaadj;\n mixedFrame.wrap = mix < snapPoint ? mdVSFramePrev.wrap : mdVSFrame.wrap;\n mixedFrame.invert =\n mix < snapPoint ? mdVSFramePrev.invert : mdVSFrame.invert;\n mixedFrame.brighten =\n mix < snapPoint ? mdVSFramePrev.brighten : mdVSFrame.brighten;\n mixedFrame.darken =\n mix < snapPoint ? mdVSFramePrev.darken : mdVSFrame.darken;\n mixedFrame.solarize =\n mix < snapPoint ? mdVSFramePrev.brighten : mdVSFrame.solarize;\n mixedFrame.b1n = mix * mdVSFrame.b1n + mix2 * mdVSFramePrev.b1n;\n mixedFrame.b2n = mix * mdVSFrame.b2n + mix2 * mdVSFramePrev.b2n;\n mixedFrame.b3n = mix * mdVSFrame.b3n + mix2 * mdVSFramePrev.b3n;\n mixedFrame.b1x = mix * mdVSFrame.b1x + mix2 * mdVSFramePrev.b1x;\n mixedFrame.b2x = mix * mdVSFrame.b2x + mix2 * mdVSFramePrev.b2x;\n mixedFrame.b3x = mix * mdVSFrame.b3x + mix2 * mdVSFramePrev.b3x;\n mixedFrame.b1ed = mix * mdVSFrame.b1ed + mix2 * mdVSFramePrev.b1ed;\n\n return mixedFrame;\n }\n\n static getBlurValues(mdVSFrame) {\n let blurMin1 = mdVSFrame.b1n;\n let blurMin2 = mdVSFrame.b2n;\n let blurMin3 = mdVSFrame.b3n;\n let blurMax1 = mdVSFrame.b1x;\n let blurMax2 = mdVSFrame.b2x;\n let blurMax3 = mdVSFrame.b3x;\n\n const fMinDist = 0.1;\n if (blurMax1 - blurMin1 < fMinDist) {\n const avg = (blurMin1 + blurMax1) * 0.5;\n blurMin1 = avg - fMinDist * 0.5;\n blurMax1 = avg - fMinDist * 0.5;\n }\n blurMax2 = Math.min(blurMax1, blurMax2);\n blurMin2 = Math.max(blurMin1, blurMin2);\n if (blurMax2 - blurMin2 < fMinDist) {\n const avg = (blurMin2 + blurMax2) * 0.5;\n blurMin2 = avg - fMinDist * 0.5;\n blurMax2 = avg - fMinDist * 0.5;\n }\n blurMax3 = Math.min(blurMax2, blurMax3);\n blurMin3 = Math.max(blurMin2, blurMin3);\n if (blurMax3 - blurMin3 < fMinDist) {\n const avg = (blurMin3 + blurMax3) * 0.5;\n blurMin3 = avg - fMinDist * 0.5;\n blurMax3 = avg - fMinDist * 0.5;\n }\n\n return {\n blurMins: [blurMin1, blurMin2, blurMin3],\n blurMaxs: [blurMax1, blurMax2, blurMax3],\n };\n }\n\n bindFrambufferAndSetViewport(fb, width, height) {\n this.gl.bindFramebuffer(this.gl.FRAMEBUFFER, fb);\n this.gl.viewport(0, 0, width, height);\n }\n\n bindFrameBufferTexture(targetFrameBuffer, targetTexture) {\n this.gl.bindTexture(this.gl.TEXTURE_2D, targetTexture);\n\n this.gl.pixelStorei(this.gl.UNPACK_ALIGNMENT, 1);\n this.gl.texImage2D(\n this.gl.TEXTURE_2D,\n 0,\n this.gl.RGBA,\n this.texsizeX,\n this.texsizeY,\n 0,\n this.gl.RGBA,\n this.gl.UNSIGNED_BYTE,\n new Uint8Array(this.texsizeX * this.texsizeY * 4)\n );\n\n this.gl.generateMipmap(this.gl.TEXTURE_2D);\n\n this.gl.texParameteri(\n this.gl.TEXTURE_2D,\n this.gl.TEXTURE_WRAP_S,\n this.gl.CLAMP_TO_EDGE\n );\n this.gl.texParameteri(\n this.gl.TEXTURE_2D,\n this.gl.TEXTURE_WRAP_T,\n this.gl.CLAMP_TO_EDGE\n );\n this.gl.texParameteri(\n this.gl.TEXTURE_2D,\n this.gl.TEXTURE_MIN_FILTER,\n this.gl.LINEAR_MIPMAP_LINEAR\n );\n this.gl.texParameteri(\n this.gl.TEXTURE_2D,\n this.gl.TEXTURE_MAG_FILTER,\n this.gl.LINEAR\n );\n if (this.anisoExt) {\n const max = this.gl.getParameter(\n this.anisoExt.MAX_TEXTURE_MAX_ANISOTROPY_EXT\n );\n this.gl.texParameterf(\n this.gl.TEXTURE_2D,\n this.anisoExt.TEXTURE_MAX_ANISOTROPY_EXT,\n max\n );\n }\n\n this.gl.bindFramebuffer(this.gl.FRAMEBUFFER, targetFrameBuffer);\n this.gl.framebufferTexture2D(\n this.gl.FRAMEBUFFER,\n this.gl.COLOR_ATTACHMENT0,\n this.gl.TEXTURE_2D,\n targetTexture,\n 0\n );\n }\n\n render({ audioLevels, elapsedTime } = {}) {\n this.calcTimeAndFPS(elapsedTime);\n this.frameNum += 1;\n\n if (audioLevels) {\n this.audio.updateAudio(\n audioLevels.timeByteArray,\n audioLevels.timeByteArrayL,\n audioLevels.timeByteArrayR\n );\n } else {\n this.audio.sampleAudio();\n }\n this.audioLevels.updateAudioLevels(this.fps, this.frameNum);\n\n const globalVars = {\n frame: this.frameNum,\n time: this.time,\n fps: this.fps,\n bass: this.audioLevels.bass,\n bass_att: this.audioLevels.bass_att,\n mid: this.audioLevels.mid,\n mid_att: this.audioLevels.mid_att,\n treb: this.audioLevels.treb,\n treb_att: this.audioLevels.treb_att,\n meshx: this.mesh_width,\n meshy: this.mesh_height,\n aspectx: this.invAspectx,\n aspecty: this.invAspecty,\n pixelsx: this.texsizeX,\n pixelsy: this.texsizeY,\n };\n\n const prevGlobalVars = Object.assign({}, globalVars);\n if (!this.prevPreset.useWASM) {\n prevGlobalVars.gmegabuf = this.prevPresetEquationRunner.gmegabuf;\n }\n\n if (!this.preset.useWASM) {\n globalVars.gmegabuf = this.presetEquationRunner.gmegabuf;\n Object.assign(globalVars, this.regVars);\n }\n\n const mdVSFrame = this.presetEquationRunner.runFrameEquations(globalVars);\n\n this.runPixelEquations(\n this.presetEquationRunner,\n mdVSFrame,\n globalVars,\n false\n );\n\n if (!this.preset.useWASM) {\n Object.assign(this.regVars, Utils.pick(this.mdVSVertex, this.regs));\n Object.assign(globalVars, this.regVars);\n }\n\n let mdVSFrameMixed;\n if (this.blending) {\n this.prevMDVSFrame = this.prevPresetEquationRunner.runFrameEquations(\n prevGlobalVars\n );\n this.runPixelEquations(\n this.prevPresetEquationRunner,\n this.prevMDVSFrame,\n prevGlobalVars,\n true\n );\n\n mdVSFrameMixed = Renderer.mixFrameEquations(\n this.blendProgress,\n mdVSFrame,\n this.prevMDVSFrame\n );\n } else {\n mdVSFrameMixed = mdVSFrame;\n }\n\n const swapTexture = this.targetTexture;\n this.targetTexture = this.prevTexture;\n this.prevTexture = swapTexture;\n\n const swapFrameBuffer = this.targetFrameBuffer;\n this.targetFrameBuffer = this.prevFrameBuffer;\n this.prevFrameBuffer = swapFrameBuffer;\n\n this.gl.bindTexture(this.gl.TEXTURE_2D, this.prevTexture);\n this.gl.generateMipmap(this.gl.TEXTURE_2D);\n\n this.bindFrambufferAndSetViewport(\n this.targetFrameBuffer,\n this.texsizeX,\n this.texsizeY\n );\n\n this.gl.clear(this.gl.COLOR_BUFFER_BIT);\n this.gl.enable(this.gl.BLEND);\n this.gl.blendEquation(this.gl.FUNC_ADD);\n this.gl.blendFunc(this.gl.SRC_ALPHA, this.gl.ONE_MINUS_SRC_ALPHA);\n\n const { blurMins, blurMaxs } = Renderer.getBlurValues(mdVSFrameMixed);\n\n if (!this.blending) {\n this.warpShader.renderQuadTexture(\n false,\n this.prevTexture,\n this.blurTexture1,\n this.blurTexture2,\n this.blurTexture3,\n blurMins,\n blurMaxs,\n mdVSFrame,\n this.presetEquationRunner.mdVSQAfterFrame,\n this.warpUVs,\n this.warpColor\n );\n } else {\n this.prevWarpShader.renderQuadTexture(\n false,\n this.prevTexture,\n this.blurTexture1,\n this.blurTexture2,\n this.blurTexture3,\n blurMins,\n blurMaxs,\n this.prevMDVSFrame,\n this.prevPresetEquationRunner.mdVSQAfterFrame,\n this.warpUVs,\n this.warpColor\n );\n\n this.warpShader.renderQuadTexture(\n true,\n this.prevTexture,\n this.blurTexture1,\n this.blurTexture2,\n this.blurTexture3,\n blurMins,\n blurMaxs,\n mdVSFrameMixed,\n this.presetEquationRunner.mdVSQAfterFrame,\n this.warpUVs,\n this.warpColor\n );\n }\n\n if (this.numBlurPasses > 0) {\n this.blurShader1.renderBlurTexture(\n this.targetTexture,\n mdVSFrame,\n blurMins,\n blurMaxs\n );\n\n if (this.numBlurPasses > 1) {\n this.blurShader2.renderBlurTexture(\n this.blurTexture1,\n mdVSFrame,\n blurMins,\n blurMaxs\n );\n\n if (this.numBlurPasses > 2) {\n this.blurShader3.renderBlurTexture(\n this.blurTexture2,\n mdVSFrame,\n blurMins,\n blurMaxs\n );\n }\n }\n\n // rebind target texture framebuffer\n this.bindFrambufferAndSetViewport(\n this.targetFrameBuffer,\n this.texsizeX,\n this.texsizeY\n );\n }\n\n this.motionVectors.drawMotionVectors(mdVSFrameMixed, this.warpUVs);\n\n if (this.preset.shapes && this.preset.shapes.length > 0) {\n this.customShapes.forEach((shape, i) => {\n shape.drawCustomShape(\n this.blending ? this.blendProgress : 1,\n globalVars,\n this.presetEquationRunner,\n this.preset.shapes[i],\n this.prevTexture\n );\n });\n }\n\n if (this.preset.waves && this.preset.waves.length > 0) {\n this.customWaveforms.forEach((waveform, i) => {\n waveform.drawCustomWaveform(\n this.blending ? this.blendProgress : 1,\n this.audio.timeArrayL,\n this.audio.timeArrayR,\n this.audio.freqArrayL,\n this.audio.freqArrayR,\n globalVars,\n this.presetEquationRunner,\n this.preset.waves[i]\n );\n });\n }\n\n if (this.blending) {\n if (this.prevPreset.shapes && this.prevPreset.shapes.length > 0) {\n this.prevCustomShapes.forEach((shape, i) => {\n shape.drawCustomShape(\n 1.0 - this.blendProgress,\n prevGlobalVars,\n this.prevPresetEquationRunner,\n this.prevPreset.shapes[i],\n this.prevTexture\n );\n });\n }\n\n if (this.prevPreset.waves && this.prevPreset.waves.length > 0) {\n this.prevCustomWaveforms.forEach((waveform, i) => {\n waveform.drawCustomWaveform(\n 1.0 - this.blendProgress,\n this.audio.timeArrayL,\n this.audio.timeArrayR,\n this.audio.freqArrayL,\n this.audio.freqArrayR,\n prevGlobalVars,\n this.prevPresetEquationRunner,\n this.prevPreset.waves[i]\n );\n });\n }\n }\n\n this.basicWaveform.drawBasicWaveform(\n this.blending,\n this.blendProgress,\n this.audio.timeArrayL,\n this.audio.timeArrayR,\n mdVSFrameMixed\n );\n\n this.darkenCenter.drawDarkenCenter(mdVSFrameMixed);\n\n const outerColor = [\n mdVSFrameMixed.ob_r,\n mdVSFrameMixed.ob_g,\n mdVSFrameMixed.ob_b,\n mdVSFrameMixed.ob_a,\n ];\n this.outerBorder.drawBorder(outerColor, mdVSFrameMixed.ob_size, 0);\n\n const innerColor = [\n mdVSFrameMixed.ib_r,\n mdVSFrameMixed.ib_g,\n mdVSFrameMixed.ib_b,\n mdVSFrameMixed.ib_a,\n ];\n this.innerBorder.drawBorder(\n innerColor,\n mdVSFrameMixed.ib_size,\n mdVSFrameMixed.ob_size\n );\n\n if (this.supertext.startTime >= 0) {\n const progress =\n (this.time - this.supertext.startTime) / this.supertext.duration;\n if (progress >= 1) {\n this.titleText.renderTitle(progress, true, globalVars);\n }\n }\n\n // Store variables in case we need to rerender\n this.globalVars = globalVars;\n this.mdVSFrame = mdVSFrame;\n this.mdVSFrameMixed = mdVSFrameMixed;\n\n this.renderToScreen();\n }\n\n renderToScreen() {\n if (this.outputFXAA) {\n this.bindFrambufferAndSetViewport(\n this.compFrameBuffer,\n this.texsizeX,\n this.texsizeY\n );\n } else {\n this.bindFrambufferAndSetViewport(null, this.width, this.height);\n }\n\n this.gl.clear(this.gl.COLOR_BUFFER_BIT);\n this.gl.enable(this.gl.BLEND);\n this.gl.blendEquation(this.gl.FUNC_ADD);\n this.gl.blendFunc(this.gl.SRC_ALPHA, this.gl.ONE_MINUS_SRC_ALPHA);\n\n const { blurMins, blurMaxs } = Renderer.getBlurValues(this.mdVSFrameMixed);\n\n if (!this.blending) {\n this.compShader.renderQuadTexture(\n false,\n this.targetTexture,\n this.blurTexture1,\n this.blurTexture2,\n this.blurTexture3,\n blurMins,\n blurMaxs,\n this.mdVSFrame,\n this.presetEquationRunner.mdVSQAfterFrame,\n this.warpColor\n );\n } else {\n this.prevCompShader.renderQuadTexture(\n false,\n this.targetTexture,\n this.blurTexture1,\n this.blurTexture2,\n this.blurTexture3,\n blurMins,\n blurMaxs,\n this.prevMDVSFrame,\n this.prevPresetEquationRunner.mdVSQAfterFrame,\n this.warpColor\n );\n\n this.compShader.renderQuadTexture(\n true,\n this.targetTexture,\n this.blurTexture1,\n this.blurTexture2,\n this.blurTexture3,\n blurMins,\n blurMaxs,\n this.mdVSFrameMixed,\n this.presetEquationRunner.mdVSQAfterFrame,\n this.warpColor\n );\n }\n\n if (this.supertext.startTime >= 0) {\n const progress =\n (this.time - this.supertext.startTime) / this.supertext.duration;\n this.titleText.renderTitle(progress, false, this.globalVars);\n\n if (progress >= 1) {\n this.supertext.startTime = -1;\n }\n }\n\n if (this.outputFXAA) {\n this.gl.bindTexture(this.gl.TEXTURE_2D, this.compTexture);\n this.gl.generateMipmap(this.gl.TEXTURE_2D);\n\n this.bindFrambufferAndSetViewport(null, this.width, this.height);\n this.outputShader.renderQuadTexture(this.compTexture);\n }\n }\n\n launchSongTitleAnim(text) {\n this.supertext = {\n startTime: this.time,\n duration: 1.7,\n };\n this.titleText.generateTitleTexture(text);\n }\n\n toDataURL() {\n const data = new Uint8Array(this.texsizeX * this.texsizeY * 4);\n\n const compFrameBuffer = this.gl.createFramebuffer();\n const compTexture = this.gl.createTexture();\n\n this.bindFrameBufferTexture(compFrameBuffer, compTexture);\n\n const { blurMins, blurMaxs } = Renderer.getBlurValues(this.mdVSFrameMixed);\n this.compShader.renderQuadTexture(\n false,\n this.targetTexture,\n this.blurTexture1,\n this.blurTexture2,\n this.blurTexture3,\n blurMins,\n blurMaxs,\n this.mdVSFrame,\n this.presetEquationRunner.mdVSQAfterFrame,\n this.warpColor\n );\n\n this.gl.readPixels(\n 0,\n 0,\n this.texsizeX,\n this.texsizeY,\n this.gl.RGBA,\n this.gl.UNSIGNED_BYTE,\n data\n );\n\n // flip data\n Array.from({ length: this.texsizeY }, (val, i) =>\n data.slice(i * this.texsizeX * 4, (i + 1) * this.texsizeX * 4)\n ).forEach((val, i) =>\n data.set(val, (this.texsizeY - i - 1) * this.texsizeX * 4)\n );\n\n const canvas = document.createElement(\"canvas\");\n canvas.width = this.texsizeX;\n canvas.height = this.texsizeY;\n\n const context = canvas.getContext(\"2d\", { willReadFrequently: false });\n const imageData = context.createImageData(this.texsizeX, this.texsizeY);\n imageData.data.set(data);\n context.putImageData(imageData, 0, 0);\n\n this.gl.deleteTexture(compTexture);\n this.gl.deleteFramebuffer(compFrameBuffer);\n\n return canvas.toDataURL();\n }\n\n warpBufferToDataURL() {\n const data = new Uint8Array(this.texsizeX * this.texsizeY * 4);\n\n this.gl.bindFramebuffer(this.gl.FRAMEBUFFER, this.targetFrameBuffer);\n this.gl.readPixels(\n 0,\n 0,\n this.texsizeX,\n this.texsizeY,\n this.gl.RGBA,\n this.gl.UNSIGNED_BYTE,\n data\n );\n\n const canvas = document.createElement(\"canvas\");\n canvas.width = this.texsizeX;\n canvas.height = this.texsizeY;\n\n const context = canvas.getContext(\"2d\", { willReadFrequently: false });\n const imageData = context.createImageData(this.texsizeX, this.texsizeY);\n imageData.data.set(data);\n context.putImageData(imageData, 0, 0);\n\n return canvas.toDataURL();\n }\n}\n\nvar data = \"AGFzbQEAAAABPQpgAABgAXwBfGACfHwBfGACf38AYAR/f39/AGAJf39/f3x8fHx8AGADf399AGABfwF/YAJ/fwF/YAF+AX8CuBWMAQNlbnYFYWJvcnQABAhwaXhlbEVxcwtwZXJQaXhlbEVxcwAADHBpeGVsVmFyUG9vbAR3YXJwA3wBDHBpeGVsVmFyUG9vbAR6b29tA3wBDHBpeGVsVmFyUG9vbAd6b29tZXhwA3wBDHBpeGVsVmFyUG9vbAJjeAN8AQxwaXhlbFZhclBvb2wCY3kDfAEMcGl4ZWxWYXJQb29sAnN4A3wBDHBpeGVsVmFyUG9vbAJzeQN8AQxwaXhlbFZhclBvb2wCZHgDfAEMcGl4ZWxWYXJQb29sAmR5A3wBDHBpeGVsVmFyUG9vbANyb3QDfAEMcGl4ZWxWYXJQb29sA3JhZAN8AQxwaXhlbFZhclBvb2wDYW5nA3wBDHBpeGVsVmFyUG9vbAF4A3wBDHBpeGVsVmFyUG9vbAF5A3wBCHFWYXJQb29sAnExA3wBCHFWYXJQb29sAnEyA3wBCHFWYXJQb29sAnEzA3wBCHFWYXJQb29sAnE0A3wBCHFWYXJQb29sAnE1A3wBCHFWYXJQb29sAnE2A3wBCHFWYXJQb29sAnE3A3wBCHFWYXJQb29sAnE4A3wBCHFWYXJQb29sAnE5A3wBCHFWYXJQb29sA3ExMAN8AQhxVmFyUG9vbANxMTEDfAEIcVZhclBvb2wDcTEyA3wBCHFWYXJQb29sA3ExMwN8AQhxVmFyUG9vbANxMTQDfAEIcVZhclBvb2wDcTE1A3wBCHFWYXJQb29sA3ExNgN8AQhxVmFyUG9vbANxMTcDfAEIcVZhclBvb2wDcTE4A3wBCHFWYXJQb29sA3ExOQN8AQhxVmFyUG9vbANxMjADfAEIcVZhclBvb2wDcTIxA3wBCHFWYXJQb29sA3EyMgN8AQhxVmFyUG9vbANxMjMDfAEIcVZhclBvb2wDcTI0A3wBCHFWYXJQb29sA3EyNQN8AQhxVmFyUG9vbANxMjYDfAEIcVZhclBvb2wDcTI3A3wBCHFWYXJQb29sA3EyOAN8AQhxVmFyUG9vbANxMjkDfAEIcVZhclBvb2wDcTMwA3wBCHFWYXJQb29sA3EzMQN8AQhxVmFyUG9vbANxMzIDfAEIdFZhclBvb2wCdDEDfAEIdFZhclBvb2wCdDIDfAEIdFZhclBvb2wCdDMDfAEIdFZhclBvb2wCdDQDfAEIdFZhclBvb2wCdDUDfAEIdFZhclBvb2wCdDYDfAEIdFZhclBvb2wCdDcDfAEIdFZhclBvb2wCdDgDfAEKc2hhcGVQb29sMAN4XzADfAEKc2hhcGVQb29sMAN5XzADfAEKc2hhcGVQb29sMAVyYWRfMAN8AQpzaGFwZVBvb2wwBWFuZ18wA3wBCnNoYXBlUG9vbDADcl8wA3wBCnNoYXBlUG9vbDADZ18wA3wBCnNoYXBlUG9vbDADYl8wA3wBCnNoYXBlUG9vbDADYV8wA3wBCnNoYXBlUG9vbDAEcjJfMAN8AQpzaGFwZVBvb2wwBGcyXzADfAEKc2hhcGVQb29sMARiMl8wA3wBCnNoYXBlUG9vbDAEYTJfMAN8AQpzaGFwZVBvb2wwCmJvcmRlcl9yXzADfAEKc2hhcGVQb29sMApib3JkZXJfZ18wA3wBCnNoYXBlUG9vbDAKYm9yZGVyX2JfMAN8AQpzaGFwZVBvb2wwCmJvcmRlcl9hXzADfAEKc2hhcGVQb29sMA50aGlja291dGxpbmVfMAN8AQpzaGFwZVBvb2wwCnRleHR1cmVkXzADfAEKc2hhcGVQb29sMAp0ZXhfem9vbV8wA3wBCnNoYXBlUG9vbDAJdGV4X2FuZ18wA3wBCnNoYXBlUG9vbDAKYWRkaXRpdmVfMAN8AQpzaGFwZVBvb2wxA3hfMQN8AQpzaGFwZVBvb2wxA3lfMQN8AQpzaGFwZVBvb2wxBXJhZF8xA3wBCnNoYXBlUG9vbDEFYW5nXzEDfAEKc2hhcGVQb29sMQNyXzEDfAEKc2hhcGVQb29sMQNnXzEDfAEKc2hhcGVQb29sMQNiXzEDfAEKc2hhcGVQb29sMQNhXzEDfAEKc2hhcGVQb29sMQRyMl8xA3wBCnNoYXBlUG9vbDEEZzJfMQN8AQpzaGFwZVBvb2wxBGIyXzEDfAEKc2hhcGVQb29sMQRhMl8xA3wBCnNoYXBlUG9vbDEKYm9yZGVyX3JfMQN8AQpzaGFwZVBvb2wxCmJvcmRlcl9nXzEDfAEKc2hhcGVQb29sMQpib3JkZXJfYl8xA3wBCnNoYXBlUG9vbDEKYm9yZGVyX2FfMQN8AQpzaGFwZVBvb2wxDnRoaWNrb3V0bGluZV8xA3wBCnNoYXBlUG9vbDEKdGV4dHVyZWRfMQN8AQpzaGFwZVBvb2wxCnRleF96b29tXzEDfAEKc2hhcGVQb29sMQl0ZXhfYW5nXzEDfAEKc2hhcGVQb29sMQphZGRpdGl2ZV8xA3wBCnNoYXBlUG9vbDIDeF8yA3wBCnNoYXBlUG9vbDIDeV8yA3wBCnNoYXBlUG9vbDIFcmFkXzIDfAEKc2hhcGVQb29sMgVhbmdfMgN8AQpzaGFwZVBvb2wyA3JfMgN8AQpzaGFwZVBvb2wyA2dfMgN8AQpzaGFwZVBvb2wyA2JfMgN8AQpzaGFwZVBvb2wyA2FfMgN8AQpzaGFwZVBvb2wyBHIyXzIDfAEKc2hhcGVQb29sMgRnMl8yA3wBCnNoYXBlUG9vbDIEYjJfMgN8AQpzaGFwZVBvb2wyBGEyXzIDfAEKc2hhcGVQb29sMgpib3JkZXJfcl8yA3wBCnNoYXBlUG9vbDIKYm9yZGVyX2dfMgN8AQpzaGFwZVBvb2wyCmJvcmRlcl9iXzIDfAEKc2hhcGVQb29sMgpib3JkZXJfYV8yA3wBCnNoYXBlUG9vbDIOdGhpY2tvdXRsaW5lXzIDfAEKc2hhcGVQb29sMgp0ZXh0dXJlZF8yA3wBCnNoYXBlUG9vbDIKdGV4X3pvb21fMgN8AQpzaGFwZVBvb2wyCXRleF9hbmdfMgN8AQpzaGFwZVBvb2wyCmFkZGl0aXZlXzIDfAEKc2hhcGVQb29sMwN4XzMDfAEKc2hhcGVQb29sMwN5XzMDfAEKc2hhcGVQb29sMwVyYWRfMwN8AQpzaGFwZVBvb2wzBWFuZ18zA3wBCnNoYXBlUG9vbDMDcl8zA3wBCnNoYXBlUG9vbDMDZ18zA3wBCnNoYXBlUG9vbDMDYl8zA3wBCnNoYXBlUG9vbDMDYV8zA3wBCnNoYXBlUG9vbDMEcjJfMwN8AQpzaGFwZVBvb2wzBGcyXzMDfAEKc2hhcGVQb29sMwRiMl8zA3wBCnNoYXBlUG9vbDMEYTJfMwN8AQpzaGFwZVBvb2wzCmJvcmRlcl9yXzMDfAEKc2hhcGVQb29sMwpib3JkZXJfZ18zA3wBCnNoYXBlUG9vbDMKYm9yZGVyX2JfMwN8AQpzaGFwZVBvb2wzCmJvcmRlcl9hXzMDfAEKc2hhcGVQb29sMw50aGlja291dGxpbmVfMwN8AQpzaGFwZVBvb2wzCnRleHR1cmVkXzMDfAEKc2hhcGVQb29sMwp0ZXhfem9vbV8zA3wBCnNoYXBlUG9vbDMJdGV4X2FuZ18zA3wBCnNoYXBlUG9vbDMKYWRkaXRpdmVfMwN8AQMZGAgDBwkBAQICAQYFAAAAAAAAAAAAAAAAAAUDAQABBuwMigF8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt8AUQAAAAAAAAAAAt/AUEAC3wBRAAAAAAAAAAAC3wBRAAAAAAAAAAAC34BQgALB9kB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\";\nvar loadPresetFunctionsBuffer = () => data;\n\nclass Visualizer {\n constructor(audioContext, canvas, opts) {\n this.opts = opts;\n\n // Initialize RNG context\n this.rng = initializeRNG(opts);\n this.deterministicMode = opts.deterministic || opts.testMode;\n this.audio = new AudioProcessor(audioContext);\n\n const vizWidth = opts.width || 1200;\n const vizHeight = opts.height || 900;\n if (window.OffscreenCanvas) {\n this.internalCanvas = new OffscreenCanvas(vizWidth, vizHeight);\n } else {\n this.internalCanvas = document.createElement(\"canvas\");\n this.internalCanvas.width = vizWidth;\n this.internalCanvas.height = vizHeight;\n }\n\n this.gl = this.internalCanvas.getContext(\"webgl2\", {\n alpha: false,\n antialias: false,\n depth: false,\n stencil: false,\n premultipliedAlpha: false,\n });\n\n this.outputGl = canvas.getContext('2d', { willReadFrequently: false });\n\n this.baseValsDefaults = {\n decay: 0.98,\n gammaadj: 2,\n echo_zoom: 2,\n echo_alpha: 0,\n echo_orient: 0,\n red_blue: 0,\n brighten: 0,\n darken: 0,\n wrap: 1,\n darken_center: 0,\n solarize: 0,\n invert: 0,\n bmotionvectorson: 1,\n fshader: 0,\n b1n: 0,\n b2n: 0,\n b3n: 0,\n b1x: 1,\n b2x: 1,\n b3x: 1,\n b1ed: 0.25,\n wave_mode: 0,\n additivewave: 0,\n wave_dots: 0,\n wave_thick: 0,\n wave_a: 0.8,\n wave_scale: 1,\n wave_smoothing: 0.75,\n wave_mystery: 0,\n modwavealphabyvolume: 0,\n modwavealphastart: 0.75,\n modwavealphaend: 0.95,\n wave_r: 1,\n wave_g: 1,\n wave_b: 1,\n wave_x: 0.5,\n wave_y: 0.5,\n wave_brighten: 1,\n mv_x: 12,\n mv_y: 9,\n mv_dx: 0,\n mv_dy: 0,\n mv_l: 0.9,\n mv_r: 1,\n mv_g: 1,\n mv_b: 1,\n mv_a: 1,\n warpanimspeed: 1,\n warpscale: 1,\n zoomexp: 1,\n zoom: 1,\n rot: 0,\n cx: 0.5,\n cy: 0.5,\n dx: 0,\n dy: 0,\n warp: 1,\n sx: 1,\n sy: 1,\n ob_size: 0.01,\n ob_r: 0,\n ob_g: 0,\n ob_b: 0,\n ob_a: 0,\n ib_size: 0.01,\n ib_r: 0.25,\n ib_g: 0.25,\n ib_b: 0.25,\n ib_a: 0,\n };\n\n this.shapeBaseValsDefaults = {\n enabled: 0,\n sides: 4,\n additive: 0,\n thickoutline: 0,\n textured: 0,\n num_inst: 1,\n tex_zoom: 1,\n tex_ang: 0,\n x: 0.5,\n y: 0.5,\n rad: 0.1,\n ang: 0,\n r: 1,\n g: 0,\n b: 0,\n a: 1,\n r2: 0,\n g2: 1,\n b2: 0,\n a2: 0,\n border_r: 1,\n border_g: 1,\n border_b: 1,\n border_a: 0.1,\n };\n\n this.waveBaseValsDefaults = {\n enabled: 0,\n samples: 512,\n sep: 0,\n scaling: 1,\n smoothing: 0.5,\n r: 1,\n g: 1,\n b: 1,\n a: 1,\n spectrum: 0,\n usedots: 0,\n thick: 0,\n additive: 0,\n };\n\n this.qs = Utils.range(1, 33).map((x) => `q${x}`);\n this.ts = Utils.range(1, 9).map((x) => `t${x}`);\n\n this.globalPerFrameVars = [\n \"old_wave_mode\",\n // globals\n \"frame\",\n \"time\",\n \"fps\",\n \"bass\",\n \"bass_att\",\n \"mid\",\n \"mid_att\",\n \"treb\",\n \"treb_att\",\n \"meshx\",\n \"meshy\",\n \"aspectx\",\n \"aspecty\",\n \"pixelsx\",\n \"pixelsy\",\n \"rand_start\",\n \"rand_preset\",\n ];\n\n this.globalPerPixelVars = [\n // globals\n \"frame\",\n \"time\",\n \"fps\",\n \"bass\",\n \"bass_att\",\n \"mid\",\n \"mid_att\",\n \"treb\",\n \"treb_att\",\n \"meshx\",\n \"meshy\",\n \"aspectx\",\n \"aspecty\",\n \"pixelsx\",\n \"pixelsy\",\n \"rand_start\",\n \"rand_preset\",\n // for pixel eqs\n \"x\",\n \"y\",\n \"rad\",\n \"ang\",\n ];\n\n this.globalShapeVars = [\n // globals\n \"frame\",\n \"time\",\n \"fps\",\n \"bass\",\n \"bass_att\",\n \"mid\",\n \"mid_att\",\n \"treb\",\n \"treb_att\",\n \"meshx\",\n \"meshy\",\n \"aspectx\",\n \"aspecty\",\n \"pixelsx\",\n \"pixelsy\",\n \"rand_start\",\n \"rand_preset\",\n // for shape eqs\n \"instance\",\n ];\n\n this.shapeBaseVars = [\n \"x\",\n \"y\",\n \"rad\",\n \"ang\",\n \"r\",\n \"g\",\n \"b\",\n \"a\",\n \"r2\",\n \"g2\",\n \"b2\",\n \"a2\",\n \"border_r\",\n \"border_g\",\n \"border_b\",\n \"border_a\",\n \"thickoutline\",\n \"textured\",\n \"tex_zoom\",\n \"tex_ang\",\n \"additive\",\n ];\n\n this.globalWaveVars = [\n // globals\n \"frame\",\n \"time\",\n \"fps\",\n \"bass\",\n \"bass_att\",\n \"mid\",\n \"mid_att\",\n \"treb\",\n \"treb_att\",\n \"meshx\",\n \"meshy\",\n \"aspectx\",\n \"aspecty\",\n \"pixelsx\",\n \"pixelsy\",\n \"rand_start\",\n \"rand_preset\",\n // for wave eqs\n \"x\",\n \"y\",\n \"sample\",\n \"value1\",\n \"value2\",\n ];\n\n this.renderer = new Renderer(this.gl, this.audio, opts);\n }\n\n loseGLContext() {\n this.gl.getExtension(\"WEBGL_lose_context\").loseContext();\n this.outputGl = null;\n }\n\n connectAudio(audioNode) {\n this.audioNode = audioNode;\n this.audio.connectAudio(audioNode);\n }\n\n disconnectAudio(audioNode) {\n this.audio.disconnectAudio(audioNode);\n }\n\n // Override defaults, but only include variables in default map\n static overrideDefaultVars(baseValsDefaults, baseVals) {\n const combinedVals = {};\n\n Object.keys(baseValsDefaults).forEach((key) => {\n if (Object.prototype.hasOwnProperty.call(baseVals, key)) {\n combinedVals[key] = baseVals[key];\n } else {\n combinedVals[key] = baseValsDefaults[key];\n }\n });\n\n return combinedVals;\n }\n\n createQVars() {\n const wasmVars = {};\n\n this.qs.forEach((key) => {\n wasmVars[key] = new WebAssembly.Global(\n { value: \"f64\", mutable: true },\n 0\n );\n });\n\n return wasmVars;\n }\n\n createTVars() {\n const wasmVars = {};\n\n this.ts.forEach((key) => {\n wasmVars[key] = new WebAssembly.Global(\n { value: \"f64\", mutable: true },\n 0\n );\n });\n\n return wasmVars;\n }\n\n createPerFramePool(baseVals) {\n const wasmVars = {};\n\n Object.keys(this.baseValsDefaults).forEach((key) => {\n wasmVars[key] = new WebAssembly.Global(\n { value: \"f64\", mutable: true },\n baseVals[key]\n );\n });\n\n this.globalPerFrameVars.forEach((key) => {\n wasmVars[key] = new WebAssembly.Global(\n { value: \"f64\", mutable: true },\n 0\n );\n });\n\n return wasmVars;\n }\n\n createPerPixelPool(baseVals) {\n const wasmVars = {};\n\n Object.keys(this.baseValsDefaults).forEach((key) => {\n wasmVars[key] = new WebAssembly.Global(\n { value: \"f64\", mutable: true },\n baseVals[key]\n );\n });\n\n this.globalPerPixelVars.forEach((key) => {\n wasmVars[key] = new WebAssembly.Global(\n { value: \"f64\", mutable: true },\n 0\n );\n });\n\n return wasmVars;\n }\n\n createCustomShapePerFramePool(baseVals) {\n const wasmVars = {};\n\n Object.keys(this.shapeBaseValsDefaults).forEach((key) => {\n wasmVars[key] = new WebAssembly.Global(\n { value: \"f64\", mutable: true },\n baseVals[key]\n );\n });\n\n this.globalShapeVars.forEach((key) => {\n wasmVars[key] = new WebAssembly.Global(\n { value: \"f64\", mutable: true },\n 0\n );\n });\n\n return wasmVars;\n }\n\n createCustomWavePerFramePool(baseVals) {\n const wasmVars = {};\n\n Object.keys(this.waveBaseValsDefaults).forEach((key) => {\n wasmVars[key] = new WebAssembly.Global(\n { value: \"f64\", mutable: true },\n baseVals[key]\n );\n });\n\n this.globalWaveVars.forEach((key) => {\n wasmVars[key] = new WebAssembly.Global(\n { value: \"f64\", mutable: true },\n 0\n );\n });\n\n return wasmVars;\n }\n\n static makeShapeResetPool(pool, variables, idx) {\n return variables.reduce((acc, variable) => {\n return { ...acc, [`${variable}_${idx}`]: pool[variable] };\n }, {});\n }\n\n static base64ToArrayBuffer(base64) {\n var binaryString = window.atob(base64);\n var len = binaryString.length;\n var bytes = new Uint8Array(len);\n for (var i = 0; i < len; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n return bytes.buffer;\n }\n\n async loadPreset(presetMap, blendTime = 0) {\n const preset = JSON.parse(JSON.stringify(presetMap));\n preset.baseVals = Visualizer.overrideDefaultVars(\n this.baseValsDefaults,\n preset.baseVals\n );\n for (let i = 0; i < preset.shapes.length; i++) {\n preset.shapes[i].baseVals = Visualizer.overrideDefaultVars(\n this.shapeBaseValsDefaults,\n preset.shapes[i].baseVals\n );\n }\n\n for (let i = 0; i < preset.waves.length; i++) {\n preset.waves[i].baseVals = Visualizer.overrideDefaultVars(\n this.waveBaseValsDefaults,\n preset.waves[i].baseVals\n );\n }\n\n const forceJS = preset.useJS && !this.opts.onlyUseWASM;\n\n if (\n Object.prototype.hasOwnProperty.call(preset, \"init_eqs_eel\") &&\n !forceJS\n ) {\n preset.useWASM = true;\n await this.loadWASMPreset(preset, blendTime);\n } else if (!this.opts.onlyUseWASM) {\n if (Object.prototype.hasOwnProperty.call(preset, \"init_eqs_str\")) {\n this.loadJSPreset(preset, blendTime);\n } else {\n console.warn(\n \"Tried to load a JS preset that doesn't have converted strings\"\n );\n }\n } else {\n console.warn(\n \"Tried to load a preset that doesn't support WASM with onlyUseWASM on\"\n );\n }\n }\n\n async loadWASMPreset(preset, blendTime) {\n const qWasmVars = this.createQVars();\n const tWasmVars = this.createTVars();\n\n const wasmVarPools = {\n perFrame: { ...qWasmVars, ...this.createPerFramePool(preset.baseVals) },\n perVertex: {\n ...qWasmVars,\n ...this.createPerPixelPool(preset.baseVals),\n },\n };\n\n const wasmFunctions = {\n presetInit: { pool: \"perFrame\", code: preset.init_eqs_eel },\n perFrame: { pool: \"perFrame\", code: preset.frame_eqs_eel },\n };\n\n if (preset.pixel_eqs_eel !== \"\") {\n wasmFunctions.perPixel = {\n pool: \"perVertex\",\n code: preset.pixel_eqs_eel,\n };\n }\n\n for (let i = 0; i < preset.shapes.length; i++) {\n wasmVarPools[`shapePerFrame${i}`] = {\n ...qWasmVars,\n ...tWasmVars,\n ...this.createCustomShapePerFramePool(preset.shapes[i].baseVals),\n };\n\n if (preset.shapes[i].baseVals.enabled !== 0) {\n wasmFunctions[`shapes_${i}_init_eqs`] = {\n pool: `shapePerFrame${i}`,\n code: preset.shapes[i].init_eqs_eel,\n };\n wasmFunctions[`shapes_${i}_frame_eqs`] = {\n pool: `shapePerFrame${i}`,\n code: preset.shapes[i].frame_eqs_eel,\n };\n }\n }\n\n for (let i = 0; i < preset.waves.length; i++) {\n if (preset.waves[i].baseVals.enabled !== 0) {\n wasmVarPools[`wavePerFrame${i}`] = {\n ...qWasmVars,\n ...tWasmVars,\n ...this.createCustomWavePerFramePool(preset.waves[i].baseVals),\n };\n wasmFunctions[`waves_${i}_init_eqs`] = {\n pool: `wavePerFrame${i}`,\n code: preset.waves[i].init_eqs_eel,\n };\n wasmFunctions[`waves_${i}_frame_eqs`] = {\n pool: `wavePerFrame${i}`,\n code: preset.waves[i].frame_eqs_eel,\n };\n\n if (\n preset.waves[i].point_eqs_eel &&\n preset.waves[i].point_eqs_eel !== \"\"\n ) {\n wasmFunctions[`waves_${i}_point_eqs`] = {\n pool: `wavePerFrame${i}`,\n code: preset.waves[i].point_eqs_eel,\n };\n }\n }\n }\n\n const mod = await srcExports.loadModule({\n pools: wasmVarPools,\n functions: wasmFunctions,\n eelVersion: preset.version || 2,\n });\n\n // eel-wasm returns null if the function was empty\n const handleEmptyFunction = (f) => {\n return f ? f : () => {};\n };\n\n const presetFunctionsMod = await ascLoader.instantiate(\n Visualizer.base64ToArrayBuffer(loadPresetFunctionsBuffer()),\n {\n pixelEqs: {\n perPixelEqs: handleEmptyFunction(mod.exports.perPixel),\n },\n // For resetting pixel eq vars\n pixelVarPool: {\n warp: wasmVarPools.perVertex.warp,\n zoom: wasmVarPools.perVertex.zoom,\n zoomexp: wasmVarPools.perVertex.zoomexp,\n cx: wasmVarPools.perVertex.cx,\n cy: wasmVarPools.perVertex.cy,\n sx: wasmVarPools.perVertex.sx,\n sy: wasmVarPools.perVertex.sy,\n dx: wasmVarPools.perVertex.dx,\n dy: wasmVarPools.perVertex.dy,\n rot: wasmVarPools.perVertex.rot,\n x: wasmVarPools.perVertex.x,\n y: wasmVarPools.perVertex.y,\n ang: wasmVarPools.perVertex.ang,\n rad: wasmVarPools.perVertex.rad,\n },\n // For resetting qs/ts\n qVarPool: qWasmVars,\n tVarPool: tWasmVars,\n // For resetting shape vars\n shapePool0: Visualizer.makeShapeResetPool(\n wasmVarPools[\"shapePerFrame0\"],\n this.shapeBaseVars,\n 0\n ),\n shapePool1: Visualizer.makeShapeResetPool(\n wasmVarPools[\"shapePerFrame1\"],\n this.shapeBaseVars,\n 1\n ),\n shapePool2: Visualizer.makeShapeResetPool(\n wasmVarPools[\"shapePerFrame2\"],\n this.shapeBaseVars,\n 2\n ),\n shapePool3: Visualizer.makeShapeResetPool(\n wasmVarPools[\"shapePerFrame3\"],\n this.shapeBaseVars,\n 3\n ),\n console: {\n logi: (value) => {\n // eslint-disable-next-line no-console\n console.log(\"logi: \" + value);\n },\n logf: (value) => {\n // eslint-disable-next-line no-console\n console.log(\"logf: \" + value);\n },\n },\n env: {\n abort: () => {\n // No idea why we need this.\n },\n },\n }\n );\n\n preset.globalPools = wasmVarPools;\n preset.init_eqs = handleEmptyFunction(mod.exports.presetInit);\n preset.frame_eqs = handleEmptyFunction(mod.exports.perFrame);\n preset.save_qs = presetFunctionsMod.exports.saveQs;\n preset.restore_qs = presetFunctionsMod.exports.restoreQs;\n preset.save_ts = presetFunctionsMod.exports.saveTs;\n preset.restore_ts = presetFunctionsMod.exports.restoreTs;\n if (mod.exports.perPixel) {\n preset.pixel_eqs = mod.exports.perPixel;\n }\n preset.pixel_eqs_initialize_array = (meshWidth, meshHeight) => {\n const arrPtr = presetFunctionsMod.exports.createFloat32Array(\n (meshWidth + 1) * (meshHeight + 1) * 2\n );\n preset.pixel_eqs_array = arrPtr;\n };\n preset.pixel_eqs_get_array = () => {\n return presetFunctionsMod.exports.__getFloat32ArrayView(\n preset.pixel_eqs_array\n );\n };\n preset.pixel_eqs_wasm = (...args) =>\n presetFunctionsMod.exports.runPixelEquations(\n preset.pixel_eqs_array,\n ...args\n );\n\n for (let i = 0; i < preset.shapes.length; i++) {\n if (preset.shapes[i].baseVals.enabled !== 0) {\n preset.shapes[i].init_eqs = handleEmptyFunction(\n mod.exports[`shapes_${i}_init_eqs`]\n );\n // Not wrapped because we check if null in customShapes\n preset.shapes[i].frame_eqs = mod.exports[`shapes_${i}_frame_eqs`];\n\n preset.shapes[i].frame_eqs_save = () =>\n presetFunctionsMod.exports[`shape${i}_save`]();\n preset.shapes[i].frame_eqs_restore = () =>\n presetFunctionsMod.exports[`shape${i}_restore`]();\n }\n }\n\n for (let i = 0; i < preset.waves.length; i++) {\n if (preset.waves[i].baseVals.enabled !== 0) {\n const wave = {\n init_eqs: handleEmptyFunction(mod.exports[`waves_${i}_init_eqs`]),\n frame_eqs: handleEmptyFunction(mod.exports[`waves_${i}_frame_eqs`]),\n };\n\n if (\n preset.waves[i].point_eqs_eel &&\n preset.waves[i].point_eqs_eel !== \"\"\n ) {\n // Not wrapped because we check if null in customWaves\n wave.point_eqs = mod.exports[`waves_${i}_point_eqs`];\n } else {\n wave.point_eqs = \"\";\n }\n\n preset.waves[i] = Object.assign({}, preset.waves[i], wave);\n }\n }\n\n this.renderer.loadPreset(preset, blendTime);\n }\n\n loadJSPreset(preset, blendTime) {\n // If init_eqs is already a function, it means we've already prepared the preset to run\n if (typeof preset.init_eqs !== \"function\") {\n /* eslint-disable no-param-reassign, no-new-func */\n preset.init_eqs = new Function(\"a\", `${preset.init_eqs_str} return a;`);\n preset.frame_eqs = new Function(\"a\", `${preset.frame_eqs_str} return a;`);\n if (preset.pixel_eqs_str && preset.pixel_eqs_str !== \"\") {\n preset.pixel_eqs = new Function(\n \"a\",\n `${preset.pixel_eqs_str} return a;`\n );\n } else {\n preset.pixel_eqs = \"\";\n }\n\n for (let i = 0; i < preset.shapes.length; i++) {\n if (preset.shapes[i].baseVals.enabled !== 0) {\n preset.shapes[i] = Object.assign({}, preset.shapes[i], {\n init_eqs: new Function(\n \"a\",\n `${preset.shapes[i].init_eqs_str} return a;`\n ),\n frame_eqs: new Function(\n \"a\",\n `${preset.shapes[i].frame_eqs_str} return a;`\n ),\n });\n }\n }\n\n for (let i = 0; i < preset.waves.length; i++) {\n if (preset.waves[i].baseVals.enabled !== 0) {\n const wave = {\n init_eqs: new Function(\n \"a\",\n `${preset.waves[i].init_eqs_str} return a;`\n ),\n frame_eqs: new Function(\n \"a\",\n `${preset.waves[i].frame_eqs_str} return a;`\n ),\n };\n\n if (\n preset.waves[i].point_eqs_str &&\n preset.waves[i].point_eqs_str !== \"\"\n ) {\n wave.point_eqs = new Function(\n \"a\",\n `${preset.waves[i].point_eqs_str} return a;`\n );\n } else {\n wave.point_eqs = \"\";\n }\n\n preset.waves[i] = Object.assign({}, preset.waves[i], wave);\n }\n }\n /* eslint-enable no-param-reassign, no-new-func */\n }\n this.renderer.loadPreset(preset, blendTime);\n }\n\n loadExtraImages(imageData) {\n this.renderer.loadExtraImages(imageData);\n }\n\n setRendererSize(width, height, opts = {}) {\n this.internalCanvas.width = width;\n this.internalCanvas.height = height;\n this.renderer.setRendererSize(width, height, opts);\n }\n\n setInternalMeshSize(width, height) {\n this.renderer.setInternalMeshSize(width, height);\n }\n\n setOutputAA(useAA) {\n this.renderer.setOutputAA(useAA);\n }\n\n setCanvas(canvas) {\n this.outputGl = canvas.getContext('2d', { willReadFrequently: false });\n }\n\n render(opts) {\n const renderOutput = this.renderer.render(opts);\n\n if (this.outputGl) {\n this.outputGl.drawImage(this.internalCanvas, 0, 0);\n }\n\n return renderOutput;\n }\n\n launchSongTitleAnim(text) {\n this.renderer.launchSongTitleAnim(text);\n }\n\n toDataURL() {\n return this.renderer.toDataURL();\n }\n\n warpBufferToDataURL() {\n return this.renderer.warpBufferToDataURL();\n }\n}\n\nclass Butterchurn {\n static createVisualizer(context, canvas, opts) {\n return new Visualizer(context, canvas, opts);\n }\n}\n\nexport { Butterchurn as default };\n//# sourceMappingURL=butterchurn.js.map\n"],"mappings":"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","names":["defineMath","__name","name","assignment","configurable","writable","enumerable","f32A","x","inLow","inHigh","outLow","outHigh","lower","upper","degrees","radians","EPSILON","val","xf","isFiniteNumber","num","y","z","t","megabuf","dst","src","len","destOffset","srcOffset","copyLen","parser$1","preProcessor","hasRequiredPreProcessor","requirePreProcessor","getLoc","mapper","destCol","previousAnchor","anchor","remainingColumns","preProcess","srcLine","dest","lineStart","inlineComment","blockComment","emitAnchor","i","char","srcCol","commonjsRequire","path","parser","hasRequiredParser$1","requireParser$1","exports","o","k","v","l","$V0","$V1","$V2","$V3","$V4","$V5","$V6","$V7","$V8","$V9","$Va","$Vb","$Vc","$Vd","$Ve","$Vf","$Vg","$Vh","$Vi","$Vj","$Vk","$Vl","$Vm","$Vn","$Vo","$Vp","$Vq","$Vr","$Vs","$Vt","yytext","yyleng","yylineno","yy","yystate","$$","_$","$0","str","hash","error","input","self","stack","vstack","lstack","table","TERROR","EOF","args","lexer","sharedState","yyloc","ranges","lex","token","symbol","state","action","r","yyval","p","newState","expected","errStr","ch","lines","oldLines","n","past","next","pre","c","match","indexed_rule","backup","tempMatch","index","rules","condition","yy_","$avoiding_name_collisions","YY_START","Parser","envParser","hasRequiredEnvParser","requireEnvParser","astUtils","hasRequiredAstUtils","requireAstUtils","CHILDREN","mapAst","ast","cb","children","newAst","child","orignalChild","newChild","orignalChildren","newChildren","originalChild","errorUtils","utils","hasRequiredUtils","requireUtils","arrayJoin","arr","joiner","newArr","flatten","times","_","repeat","ScopedIdMap","namespace","key","jointKey","formatList","list","quoted","last","hasRequiredErrorUtils","requireErrorUtils","utils_1","printLoc","loc","rawSource","contextLines","firstIndex","lastIndex","annotatedLines","line","lineNumber","padding","underline","insertIndex","CompilerError","message","UserError","createUserError","createCompilerError","hasRequiredParser","requireParser","preProcessor_1","envParser_1","astUtils_1","errorUtils_1","mapLoc","first","parse","code","processedCode","node","e","compiler","emitter","encoding","ieee754","hasRequiredIeee754","requireIeee754","write","buffer","value","mLen","nBytes","m","eLen","eMax","eBias","rt","d","s","hasRequiredEncoding","requireEncoding","__importStar","mod","result","blockType","retType","unsignedLEB128","align","offset","signedLEB128","encodef64","byte","bytes","size","negative","more","data","encodeSection","type","subSections","vec","shims","hasRequiredShims","requireShims","shims$1","a","wasmFunctions","constants","hasRequiredConstants","requireConstants","WASM_PAGE_SIZE","BYTES_PER_F64","BUFFER_COUNT","hasRequiredWasmFunctions","requireWasmFunctions","encoding_1","constants_1","hasRequiredEmitter","requireEmitter","__importDefault","shims_1","wasmFunctions_1","emit","context","_a","_b","_c","body","statement","emitExpressionBlock","left","right","functionName","argList","assertArity","arity","test","consiquent","alternate","emitConditional","emitWhile","emitLoop","emitAddMemoryOffset","variableIdentifier","resolvedName","invocation","rightCode","mutationCode","getAssignmentOperatorMutation","get","set","localIndex","bufferName","addOffset","unnormalizedIndex","rightValue","inBounds","behavior","comparison","shortCircutValue","variableName","statements","expression","iterationCount","count","operatorCode","hasRequiredCompiler","requireCompiler","parser_1","emitter_1","Utils","compileModule","pools","funcs","eelVersion","preParsed","importedVars","poolName","pool","varResolver","functionImports","func","localFuncOrder","moduleFuncs","poolsList","localVariables","shimdex","call","binary","localFuncs","getSignatureKey","types","typeIndexByKey","getTypeIndex","typeIndex","imports","functions","memories","globalCount","globals","xports","funcIndex","codes","localTypes","loader","hasRequiredLoader","requireLoader","compiler_1","loadModule","compilerPools","importObject","hasRequiredSrc","requireSrc","loader_1","srcExports","ID_OFFSET","SIZE_OFFSET","ARRAYBUFFER_ID","STRING_ID","ARRAYBUFFERVIEW","ARRAY","STATICARRAY","VAL_ALIGN_OFFSET","VAL_SIGNED","VAL_FLOAT","VAL_MANAGED","ARRAYBUFFERVIEW_BUFFER_OFFSET","ARRAYBUFFERVIEW_DATASTART_OFFSET","ARRAYBUFFERVIEW_DATALENGTH_OFFSET","ARRAYBUFFERVIEW_SIZE","ARRAY_LENGTH_OFFSET","ARRAY_SIZE","BIGINT","THIS","STRING_DECODE_THRESHOLD","decoder","getStringImpl","ptr","preInstantiate","extendedExports","getString","memory","env","msg","file","colm","postInstantiate","instance","__new","__retain","__rtti_base","getInfo","id","U32","getArrayInfo","info","getBase","getValueAlign","__newString","length","U16","__getString","getView","alignLog2","signed","float","__newArray","values","buf","view","__getArrayView","__getArray","out","__getArrayBuffer","getTypedArray","Type","getTypedArrayView","bufPtr","attachTypedArrayFunctions","ctor","__instanceof","baseId","demangle","isResponse","isModule","instantiate","source","instantiateStreaming","module","extended","instantiateSync","setArgumentsLength","internalName","elem","parts","curr","part","className","classElem","thisValue","getter","setter","ascLoader","FFT","samplesIn","samplesOut","equalize","invHalfNFREQ","j","temp","dftsize","tabsize","theta","waveDataIn","real","imag","idx","wpr","wpi","wr","wi","hdftsize","tempr","tempi","wtemp","spectralDataOut","AudioProcessor","timeByteArray","timeByteArrayL","timeByteArrayR","lastIdx","audionode","AudioLevels","_AudioLevels","audio","sampleRate","bucketHz","bassLow","bassHigh","midHigh","trebHigh","rate","baseFPS","FPS","fps","frame","effectiveFPS","pmap","vars","start","end","obj","keys","newObj","wasmGlobals","SeededRandom","_SeededRandom","seed","max","createRNGContext","rng","newSeed","createDefaultRNGContext","globalRNG","initializeRNG","opts","getRNG","PresetEquationRunner","preset","globalVars","mdVSBase","nonUserKeys","mdVSAfterInit","initUserVars","wave","baseVals","mdVSWave","nonUserWaveKeys","shape","mdVSShape","nonUserShapeKeys","mdVSVertex","shapeIdx","waveIdx","mdVSWaveFrame","PresetEquationRunnerWASM","mdVSFrame","lineMatcher","samplerMatcher","ShaderUtils","sbIndex","beforeShaderBody","afterShaderBody","firstCurly","lastCurly","shaderBody","gl","text","samplers","lineMatches","samplerMatches","sampler","WaveUtils","positions","positionsSmoothed","nVertsIn","zCoord","iBelow","iAbove","iAbove2","colors","colorsSmoothed","BasicWaveform","_BasicWaveform","numAudioSamples","vertShader","fragShader","timeArray","waveform","scale","smooth","smooth2","blending","blendProgress","timeArrayL","timeArrayR","alpha","vol","waveL","waveR","newWaveMode","oldWaveMode","wavePosX","wavePosY","its","it","waveMode","fWaveParam2","numVert","positions2","alphaDiff","numVertInv","sampleOffset","rad","ang","mix","rad2","w1","w2","cosRot","sinRot","ioff","x0","y0","dx","dy","edgex","edgey","bClip","dxi","dyi","ang2","perpDx","perpDy","sample","sep","mix2","g","b","maxc","fIdx","nIdx","halfNumVert","instances","drawMode","CustomWaveform","maxSamples","freqArrayL","freqArrayR","presetEquationRunner","waveEqs","alphaMult","scaling","spectrum","smoothing","usedots","frameR","frameG","frameB","frameA","waveScale","useSpectrum","pointsLeft","pointsRight","j0","j1","mix1","varPool","value1","value2","mdvsUserKeysWave","mdVSNewFrameMapWave","waveUseDots","waveThick","waveAdditive","numVerts","CustomShape$1","maxSides","shapeEqs","prevTexture","numInst","sides","r2","g2","b2","a2","borderR","borderG","borderB","borderA","thickoutline","textured","texZoom","texAng","additive","hasBorder","isTextured","isBorderThick","isAdditive","quarterPi","pTwoPi","angSum","texAngSum","mdVSShapeFrame","mdVSUserKeysShape","mdVSNewFrameMapShape","wrap","wrapping","Border","point1","point2","point3","borderColor","borderSize","prevBorderSize","prevBorderWidth","borderWidth","prevBorderWidthWidth","prevBorderWidthHeight","borderWidthWidth","borderWidthHeight","point4","CustomShape","MotionVectors","warpUVs","fx","fy","x1","y1","gridX1","fx2","fy2","mvA","nX","nY","dx2","dy2","lenMult","minLen","fx2arr","fdist","vx1","vy1","vx2","vy2","WarpShader","noise","image","gridX","gridY","gridY1","segmentWidth","segmentHeight","vertices","iy","ix","indices","shaderText","fragShaderText","fragShaderHeaderText","shaderParts","userTexture","blurMins","blurMaxs","blurMin1","blurMin2","blurMin3","blurMax1","blurMax2","blurMax3","scale1","bias1","scale2","bias2","scale3","bias3","texture","blurTexture1","blurTexture2","blurTexture3","mdVSQs","warpColor","CompShader","_CompShader","hueBase","maxshade","compColor","offsetColor","col","nx","ny","alpha00","alpha01","alpha10","alpha11","compColors","OutputShader","ResampleShader","BlurVertical","blurLevel","w","w1V","w2V","d1V","d2V","srcTexsize","b1ed","BlurHorizontal","w1H","w2H","w3H","w4H","d1H","d2H","d3H","d4H","bias","tempMin","tempMax","BlurShader","blurRatios","sizeRatio","sizeX","sizeY","srcBlurRatios","dstBlurRatios","srcTexsizeHorizontal","dstTexsizeHorizontal","srcTexsizeVertical","dstTexsizeVertical","fb","texsize","targetFrameBuffer","targetTexture","Noise","_Noise","width","height","depth","y2","y3","t2","t3","a0","a1","a3","ret","f","noiseSize","zoom","randomFn","nsize","texArr","texRange","halfTexRange","wordsPerSlice","wordsPerLine","baseX","baseY","baseZ","ImageTextures","imageData","imageName","tex","TitleText","titleText","textLength","percentToKeep","progress","flip","uvs","u","progressUvs","BlendPattern","_BlendPattern","oldMat","oldWidth","oldHeight","newWidth","newHeight","newMat","nVert","val00","val01","val10","val11","oldMeshWidth","oldMeshHeight","dt","midx","midy","t00","t01","t10","t11","mixType","vx","vy","band","invBand","minc","mult","dir","Renderer","_Renderer","params","blendTime","tmpWarpShader","tmpCompShader","warpText","compText","oldTexsizeX","oldTexsizeY","targetTextureNew","useAA","elapsedTime","elapsed","newTime","newHistTime","newFPS","gridZ","gridZ1","warpTimeV","warpScaleInv","warpf0","warpf1","warpf2","warpf3","texelOffsetX","texelOffsetY","aspectx","aspecty","newWarpUVs","iz","warp","zoomExp","cx","cy","sx","sy","rot","zoom2Inv","u2","v2","mdVSFramePrev","snapPoint","mixedFrame","fMinDist","avg","audioLevels","prevGlobalVars","mdVSFrameMixed","swapTexture","swapFrameBuffer","outerColor","innerColor","compFrameBuffer","compTexture","canvas","loadPresetFunctionsBuffer","Visualizer","_Visualizer","audioContext","vizWidth","vizHeight","audioNode","baseValsDefaults","combinedVals","wasmVars","variables","acc","variable","base64","binaryString","presetMap","forceJS","qWasmVars","tWasmVars","wasmVarPools","handleEmptyFunction","presetFunctionsMod","meshWidth","meshHeight","arrPtr","renderOutput","Butterchurn"],"sourceRoot":"","file":"/butterchurn-Q7SUG6GB.js.map"} \ No newline at end of file diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/catalogue/index.html b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/catalogue/index.html similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/catalogue/index.html rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/catalogue/index.html diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/catalogue/index.html.br b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/catalogue/index.html.br similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/catalogue/index.html.br rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/catalogue/index.html.br diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-24PSXPKL.js b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-24PSXPKL.js similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-24PSXPKL.js rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-24PSXPKL.js diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-24PSXPKL.js.br b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-24PSXPKL.js.br similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-24PSXPKL.js.br rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-24PSXPKL.js.br diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-24PSXPKL.js.map b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-24PSXPKL.js.map similarity index 94% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-24PSXPKL.js.map rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-24PSXPKL.js.map index 0b0103c1..3cf0289c 100644 --- a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-24PSXPKL.js.map +++ b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-24PSXPKL.js.map @@ -1 +1 @@ -{"version":3,"sources":["/components/input/https/element.js"],"sourcesContent":["import { defineElement, DiffuseElement } from \"~/common/element.js\";\nimport { SCHEME } from \"./constants.js\";\nimport { hostsFromTracks } from \"./common.js\";\n\n/**\n * @import {InputActions, InputSchemeProvider} from \"@specs/components/input/types.d.ts\"\n * @import {ProxiedActions} from \"~/common/worker.d.ts\"\n * @import {Track} from \"~/definitions/types.d.ts\"\n */\n\n////////////////////////////////////////////\n// ELEMENT\n////////////////////////////////////////////\n\n/**\n * @implements {ProxiedActions}\n * @implements {InputSchemeProvider}\n */\nclass HttpsInput extends DiffuseElement {\n static NAME = \"diffuse/input/https\";\n static WORKER_URL = \"components/input/https/worker.js\";\n\n SCHEME = SCHEME;\n\n constructor() {\n super();\n\n /** @type {ProxiedActions} */\n this.proxy = this.workerProxy();\n\n this.artwork = this.proxy.artwork;\n this.consult = this.proxy.consult;\n this.detach = this.proxy.detach;\n this.groupConsult = this.proxy.groupConsult;\n this.list = this.proxy.list;\n this.resolve = this.proxy.resolve;\n }\n\n // 🛠️\n\n /** @param {Track[]} tracks */\n sources(tracks) {\n const hosts = Object.values(hostsFromTracks(tracks));\n\n return hosts.map((host) => ({\n label: host,\n uri: `https://${host}`,\n }));\n }\n}\n\nexport default HttpsInput;\n\n////////////////////////////////////////////\n// REGISTER\n////////////////////////////////////////////\n\nexport const CLASS = HttpsInput;\nexport const NAME = \"di-https\";\n\ndefineElement(NAME, CLASS);\n"],"mappings":"yKAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,WAAAE,EAAA,SAAAC,EAAA,YAAAC,IAkBA,IAAMC,EAAN,cAAyBC,CAAe,CAlBxC,MAkBwC,CAAAC,EAAA,mBACtC,OAAO,KAAO,sBACd,OAAO,WAAa,mCAEpB,OAASC,EAET,aAAc,CACZ,MAAM,EAGN,KAAK,MAAQ,KAAK,YAAY,EAE9B,KAAK,QAAU,KAAK,MAAM,QAC1B,KAAK,QAAU,KAAK,MAAM,QAC1B,KAAK,OAAS,KAAK,MAAM,OACzB,KAAK,aAAe,KAAK,MAAM,aAC/B,KAAK,KAAO,KAAK,MAAM,KACvB,KAAK,QAAU,KAAK,MAAM,OAC5B,CAKA,QAAQC,EAAQ,CAGd,OAFc,OAAO,OAAOC,EAAgBD,CAAM,CAAC,EAEtC,IAAKE,IAAU,CAC1B,MAAOA,EACP,IAAK,WAAWA,CAAI,EACtB,EAAE,CACJ,CACF,EAEOC,EAAQP,EAMFQ,EAAQR,EACRS,EAAO,WAEpBC,EAAcD,EAAMD,CAAK","names":["element_exports","__export","CLASS","NAME","element_default","HttpsInput","DiffuseElement","__name","SCHEME","tracks","hostsFromTracks","host","element_default","CLASS","NAME","defineElement"],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse","file":"/chunk-24PSXPKL.js.map"} \ No newline at end of file +{"version":3,"sources":["/components/input/https/element.js"],"sourcesContent":["import { defineElement, DiffuseElement } from \"~/common/element.js\";\nimport { SCHEME } from \"./constants.js\";\nimport { hostsFromTracks } from \"./common.js\";\n\n/**\n * @import {InputActions, InputSchemeProvider} from \"@specs/components/input/types.d.ts\"\n * @import {ProxiedActions} from \"~/common/worker.d.ts\"\n * @import {Track} from \"~/definitions/types.d.ts\"\n */\n\n////////////////////////////////////////////\n// ELEMENT\n////////////////////////////////////////////\n\n/**\n * @implements {ProxiedActions}\n * @implements {InputSchemeProvider}\n */\nclass HttpsInput extends DiffuseElement {\n static NAME = \"diffuse/input/https\";\n static WORKER_URL = \"components/input/https/worker.js\";\n\n SCHEME = SCHEME;\n\n constructor() {\n super();\n\n /** @type {ProxiedActions} */\n this.proxy = this.workerProxy();\n\n this.artwork = this.proxy.artwork;\n this.consult = this.proxy.consult;\n this.detach = this.proxy.detach;\n this.groupConsult = this.proxy.groupConsult;\n this.list = this.proxy.list;\n this.resolve = this.proxy.resolve;\n }\n\n // 🛠️\n\n /** @param {Track[]} tracks */\n sources(tracks) {\n const hosts = Object.values(hostsFromTracks(tracks));\n\n return hosts.map((host) => ({\n label: host,\n uri: `https://${host}`,\n }));\n }\n}\n\nexport default HttpsInput;\n\n////////////////////////////////////////////\n// REGISTER\n////////////////////////////////////////////\n\nexport const CLASS = HttpsInput;\nexport const NAME = \"di-https\";\n\ndefineElement(NAME, CLASS);\n"],"mappings":"yKAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,WAAAE,EAAA,SAAAC,EAAA,YAAAC,IAkBA,IAAMC,EAAN,cAAyBC,CAAe,CAlBxC,MAkBwC,CAAAC,EAAA,mBACtC,OAAO,KAAO,sBACd,OAAO,WAAa,mCAEpB,OAASC,EAET,aAAc,CACZ,MAAM,EAGN,KAAK,MAAQ,KAAK,YAAY,EAE9B,KAAK,QAAU,KAAK,MAAM,QAC1B,KAAK,QAAU,KAAK,MAAM,QAC1B,KAAK,OAAS,KAAK,MAAM,OACzB,KAAK,aAAe,KAAK,MAAM,aAC/B,KAAK,KAAO,KAAK,MAAM,KACvB,KAAK,QAAU,KAAK,MAAM,OAC5B,CAKA,QAAQC,EAAQ,CAGd,OAFc,OAAO,OAAOC,EAAgBD,CAAM,CAAC,EAEtC,IAAKE,IAAU,CAC1B,MAAOA,EACP,IAAK,WAAWA,CAAI,EACtB,EAAE,CACJ,CACF,EAEOC,EAAQP,EAMFQ,EAAQR,EACRS,EAAO,WAEpBC,EAAcD,EAAMD,CAAK","names":["element_exports","__export","CLASS","NAME","element_default","HttpsInput","DiffuseElement","__name","SCHEME","tracks","hostsFromTracks","host","element_default","CLASS","NAME","defineElement"],"sourceRoot":"","file":"/chunk-24PSXPKL.js.map"} \ No newline at end of file diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-2QN2TM5L.js b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-2QN2TM5L.js similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-2QN2TM5L.js rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-2QN2TM5L.js diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-2QN2TM5L.js.br b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-2QN2TM5L.js.br similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-2QN2TM5L.js.br rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-2QN2TM5L.js.br diff --git a/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-2QN2TM5L.js.map b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-2QN2TM5L.js.map new file mode 100644 index 00000000..1292a664 --- /dev/null +++ b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-2QN2TM5L.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["/node_modules/.deno/@atcute+oauth-browser-client@4.0.1/node_modules/@atcute/oauth-browser-client/dist/utils/runtime.js","/node_modules/.deno/@atcute+oauth-browser-client@4.0.1/node_modules/@atcute/oauth-browser-client/dist/store/db.js","/node_modules/.deno/@atcute+oauth-browser-client@4.0.1/node_modules/@atcute/oauth-browser-client/dist/environment.js","/node_modules/.deno/@atcute+oauth-browser-client@4.0.1/node_modules/@atcute/oauth-browser-client/dist/errors.js","/node_modules/.deno/@atcute+oauth-browser-client@4.0.1/node_modules/@atcute/oauth-browser-client/dist/utils/dpop-key.js","/node_modules/.deno/nanoid@5.1.16/node_modules/nanoid/url-alphabet/index.js","/node_modules/.deno/nanoid@5.1.16/node_modules/nanoid/index.js","/node_modules/.deno/@atcute+oauth-crypto@1.0.1/node_modules/@atcute/oauth-crypto/dist/internal/crypto.js","/node_modules/.deno/@atcute+oauth-crypto@1.0.1/node_modules/@atcute/oauth-crypto/dist/internal/jwk.js","/node_modules/.deno/@atcute+oauth-crypto@1.0.1/node_modules/@atcute/oauth-crypto/dist/internal/key-cache.js","/node_modules/.deno/@atcute+oauth-crypto@1.0.1/node_modules/@atcute/oauth-crypto/dist/jwt/index.js","/node_modules/.deno/@atcute+oauth-crypto@1.0.1/node_modules/@atcute/oauth-crypto/dist/hash/sha256.js","/node_modules/.deno/@atcute+oauth-crypto@1.0.1/node_modules/@atcute/oauth-crypto/dist/dpop/proof.js","/node_modules/.deno/@atcute+oauth-crypto@1.0.1/node_modules/@atcute/oauth-crypto/dist/dpop/generate-key.js","/node_modules/.deno/@atcute+oauth-crypto@1.0.1/node_modules/@atcute/oauth-crypto/dist/dpop/verify.js","/node_modules/.deno/@atcute+oauth-crypto@1.0.1/node_modules/@atcute/oauth-crypto/dist/hash/pkce.js","/node_modules/.deno/@atcute+oauth-browser-client@4.0.1/node_modules/@atcute/oauth-browser-client/dist/utils/response.js","/node_modules/.deno/@atcute+oauth-browser-client@4.0.1/node_modules/@atcute/oauth-browser-client/dist/dpop.js","/node_modules/.deno/@atcute+oauth-browser-client@4.0.1/node_modules/@atcute/oauth-browser-client/dist/utils/strings.js","/node_modules/.deno/@atcute+oauth-browser-client@4.0.1/node_modules/@atcute/oauth-browser-client/dist/resolvers.js","/node_modules/.deno/@atcute+oauth-browser-client@4.0.1/node_modules/@atcute/oauth-browser-client/dist/utils/misc.js","/node_modules/.deno/@atcute+oauth-browser-client@4.0.1/node_modules/@atcute/oauth-browser-client/dist/agents/server-agent.js","/node_modules/.deno/@atcute+oauth-browser-client@4.0.1/node_modules/@atcute/oauth-browser-client/dist/agents/sessions.js","/node_modules/.deno/@atcute+oauth-browser-client@4.0.1/node_modules/@atcute/oauth-browser-client/dist/agents/exchange.js","/node_modules/.deno/@atcute+oauth-browser-client@4.0.1/node_modules/@atcute/oauth-browser-client/dist/agents/user-agent.js"],"sourcesContent":["export const locks = typeof navigator !== 'undefined' ? navigator.locks : undefined;\n","import { locks } from '../utils/runtime.js';\nconst parse = (raw) => {\n if (raw != null) {\n const parsed = JSON.parse(raw);\n if (parsed != null) {\n return parsed;\n }\n }\n return {};\n};\nexport const createOAuthDatabase = ({ name }) => {\n const controller = new AbortController();\n const signal = controller.signal;\n const createStore = (subname, expiresAt, persistUpdatedAt = false) => {\n // oxlint-disable-next-line typescript/no-explicit-any\n let store;\n const storageKey = `${name}:${subname}`;\n const persist = () => store && localStorage.setItem(storageKey, JSON.stringify(store));\n const read = () => {\n if (signal.aborted) {\n throw new Error(`store closed`);\n }\n return (store ??= parse(localStorage.getItem(storageKey)));\n };\n {\n const listener = (ev) => {\n if (ev.key === storageKey) {\n store = undefined;\n }\n };\n globalThis.addEventListener('storage', listener, { signal });\n }\n {\n const cleanup = async (lock) => {\n if (!lock || signal.aborted) {\n return;\n }\n await new Promise((resolve) => setTimeout(resolve, 10_000));\n if (signal.aborted) {\n return;\n }\n const now = Date.now();\n let changed = false;\n read();\n for (const key in store) {\n const item = store[key];\n const expiresAt = item.expiresAt;\n if (expiresAt !== null && now > expiresAt) {\n changed = true;\n delete store[key];\n }\n }\n if (changed) {\n persist();\n }\n };\n if (locks) {\n locks.request(`${storageKey}:cleanup`, { ifAvailable: true }, cleanup);\n }\n else {\n cleanup(true);\n }\n }\n return {\n get(key) {\n read();\n const item = store[key];\n if (!item) {\n return;\n }\n const expiresAt = item.expiresAt;\n if (expiresAt !== null && Date.now() > expiresAt) {\n delete store[key];\n persist();\n return;\n }\n return item.value;\n },\n getWithLapsed(key) {\n read();\n const item = store[key];\n const now = Date.now();\n if (!item) {\n return [undefined, Infinity];\n }\n const updatedAt = item.updatedAt;\n if (updatedAt === undefined) {\n return [item.value, Infinity];\n }\n return [item.value, now - updatedAt];\n },\n set(key, value) {\n read();\n const item = {\n value: value,\n expiresAt: expiresAt(value),\n updatedAt: persistUpdatedAt ? Date.now() : undefined,\n };\n store[key] = item;\n persist();\n },\n delete(key) {\n read();\n if (store[key] !== undefined) {\n delete store[key];\n persist();\n }\n },\n keys() {\n read();\n return Object.keys(store);\n },\n };\n };\n return {\n dispose: () => {\n controller.abort();\n },\n sessions: createStore('sessions', ({ token }) => {\n if (token.refresh) {\n return null;\n }\n return token.expires_at ?? null;\n }),\n states: createStore('states', (_item) => Date.now() + 10 * 60 * 1_000), // 10 minutes\n // The reference PDS have nonces that expire after 3 minutes, while other\n // implementations can have varying expiration times.\n // Stored for 24 hours.\n dpopNonces: createStore('dpopNonces', (_item) => Date.now() + 24 * 60 * 60 * 1_000, true),\n inflightDpop: new Map(),\n };\n};\n","import { createOAuthDatabase } from './store/db.js';\nexport let CLIENT_ID;\nexport let REDIRECT_URI;\nexport let fetchClientAssertion;\nexport let database;\nexport let identityResolver;\nexport const configureOAuth = (options) => {\n ({ identityResolver, fetchClientAssertion } = options);\n ({ client_id: CLIENT_ID, redirect_uri: REDIRECT_URI } = options.metadata);\n database = createOAuthDatabase({ name: options.storageName ?? 'atcute-oauth' });\n};\n","export class LoginError extends Error {\n name = 'LoginError';\n}\nexport class AuthorizationError extends Error {\n name = 'AuthorizationError';\n}\nexport class ResolverError extends Error {\n name = 'ResolverError';\n}\nexport class TokenRefreshError extends Error {\n name = 'TokenRefreshError';\n sub;\n constructor(sub, message, options) {\n super(message, options);\n this.sub = sub;\n }\n}\nexport class OAuthResponseError extends Error {\n name = 'OAuthResponseError';\n response;\n // oxlint-disable-next-line typescript/no-explicit-any\n data;\n error;\n description;\n // oxlint-disable-next-line typescript/no-explicit-any\n constructor(response, data) {\n const error = ifString(ifObject(data)?.['error']);\n const errorDescription = ifString(ifObject(data)?.['error_description']);\n const messageError = error ? `\"${error}\"` : 'unknown';\n const messageDesc = errorDescription ? `: ${errorDescription}` : '';\n const message = `OAuth ${messageError} error${messageDesc}`;\n super(message);\n this.response = response;\n this.data = data;\n this.error = error;\n this.description = errorDescription;\n }\n get status() {\n return this.response.status;\n }\n get headers() {\n return this.response.headers;\n }\n}\nexport class FetchResponseError extends Error {\n name = 'FetchResponseError';\n response;\n status;\n constructor(response, status, message) {\n super(message);\n this.response = response;\n this.status = status;\n }\n}\nconst ifString = (v) => {\n return typeof v === 'string' ? v : undefined;\n};\nconst ifObject = (v) => {\n // oxlint-disable-next-line typescript/no-explicit-any\n return typeof v === 'object' && v !== null && !Array.isArray(v) ? v : undefined;\n};\n","import { fromBase64Url } from '@atcute/multibase';\nconst ES256_ALG = { name: 'ECDSA', namedCurve: 'P-256' };\nexport const isLegacyDpopKey = (key) => {\n return typeof key.key === 'string' && typeof key.jwt === 'string';\n};\nexport const migrateLegacyDpopKey = async (key) => {\n const pkcs8 = fromBase64Url(key.key);\n const cryptoKey = await crypto.subtle.importKey('pkcs8', pkcs8, ES256_ALG, true, ['sign']);\n const jwk = (await crypto.subtle.exportKey('jwk', cryptoKey));\n jwk.alg = 'ES256';\n return jwk;\n};\n","export let urlAlphabet =\n 'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict'\n","\n\nimport { urlAlphabet as scopedUrlAlphabet } from './url-alphabet/index.js'\n\nexport { urlAlphabet } from './url-alphabet/index.js'\n\nexport let random = bytes => crypto.getRandomValues(new Uint8Array(bytes))\n\nexport let customRandom = (alphabet, defaultSize, getRandom) => {\n let safeByteCutoff = 256 - (256 % alphabet.length)\n\n if (safeByteCutoff === 256) {\n let mask = alphabet.length - 1\n\n return (size = defaultSize) => {\n if (!size) return ''\n let id = ''\n while (true) {\n let bytes = getRandom(size)\n let j = size\n while (j--) {\n id += alphabet[bytes[j] & mask]\n if (id.length >= size) return id\n }\n }\n }\n }\n\n let step = Math.ceil((1.6 * 256 * defaultSize) / safeByteCutoff)\n\n return (size = defaultSize) => {\n if (!size) return ''\n let id = ''\n while (true) {\n let bytes = getRandom(step)\n let j = step\n while (j--) {\n if (bytes[j] < safeByteCutoff) {\n id += alphabet[bytes[j] % alphabet.length]\n if (id.length >= size) return id\n }\n }\n }\n }\n}\n\nexport let customAlphabet = (alphabet, size = 21) =>\n customRandom(alphabet, size | 0, random)\n\nexport let nanoid = (size = 21) => {\n let id = ''\n let bytes = crypto.getRandomValues(new Uint8Array((size |= 0)))\n while (size--) {\n id += scopedUrlAlphabet[bytes[size] & 63]\n }\n return id\n}\n","const HASH_BY_ALG = {\n ES256: 'SHA-256',\n ES384: 'SHA-384',\n ES512: 'SHA-512',\n PS256: 'SHA-256',\n PS384: 'SHA-384',\n PS512: 'SHA-512',\n RS256: 'SHA-256',\n RS384: 'SHA-384',\n RS512: 'SHA-512',\n};\nconst CURVE_BY_ALG = {\n ES256: 'P-256',\n ES384: 'P-384',\n ES512: 'P-521',\n PS256: null,\n PS384: null,\n PS512: null,\n RS256: null,\n RS384: null,\n RS512: null,\n};\nexport const getHashName = (alg) => {\n return HASH_BY_ALG[alg];\n};\nexport const getNamedCurve = (alg) => {\n return CURVE_BY_ALG[alg];\n};\nexport const getSignAlgorithm = (alg) => {\n if (alg.startsWith('ES')) {\n return { name: 'ECDSA', hash: { name: getHashName(alg) } };\n }\n if (alg.startsWith('PS')) {\n return {\n name: 'RSA-PSS',\n hash: { name: getHashName(alg) },\n saltLength: getHashLength(getHashName(alg)),\n };\n }\n return { name: 'RSASSA-PKCS1-v1_5' };\n};\nexport const getImportAlgorithm = (alg, curve) => {\n if (alg.startsWith('ES')) {\n const namedCurve = curve ?? getNamedCurve(alg);\n if (!namedCurve) {\n throw new Error(`unable to determine curve for ${alg}`);\n }\n return { name: 'ECDSA', namedCurve };\n }\n if (alg.startsWith('PS')) {\n return { name: 'RSA-PSS', hash: { name: getHashName(alg) } };\n }\n return { name: 'RSASSA-PKCS1-v1_5', hash: { name: getHashName(alg) } };\n};\nexport const getGenerateAlgorithm = (alg) => {\n const curve = getNamedCurve(alg);\n if (curve) {\n return { name: 'ECDSA', namedCurve: curve };\n }\n const hash = { name: getHashName(alg) };\n return {\n name: alg.startsWith('PS') ? 'RSA-PSS' : 'RSASSA-PKCS1-v1_5',\n hash,\n modulusLength: 2048,\n publicExponent: new Uint8Array([0x01, 0x00, 0x01]),\n };\n};\nconst getHashLength = (hash) => {\n switch (hash) {\n case 'SHA-256': {\n return 32;\n }\n case 'SHA-384': {\n return 48;\n }\n case 'SHA-512': {\n return 64;\n }\n }\n};\n","import { fromBase64Pad, toBase64Pad } from '@atcute/multibase';\nimport { getImportAlgorithm } from './crypto.js';\nconst SIGNING_ALGORITHMS = [\n 'ES256',\n 'ES384',\n 'ES512',\n 'PS256',\n 'PS384',\n 'PS512',\n 'RS256',\n 'RS384',\n 'RS512',\n];\nconst CURVE_TO_ALG = {\n 'P-256': 'ES256',\n 'P-384': 'ES384',\n 'P-521': 'ES512',\n};\nexport const isSigningAlgorithm = (alg) => {\n return SIGNING_ALGORITHMS.includes(alg);\n};\nexport const parsePrivateJwkInput = (input) => {\n if (typeof input === 'string') {\n try {\n const jwk = JSON.parse(input);\n return jwk;\n }\n catch {\n throw new Error(`invalid JSON string`);\n }\n }\n if (typeof input === 'object' && input !== null && 'kty' in input) {\n return input;\n }\n throw new Error(`invalid input: expected JWK object or JSON string`);\n};\nexport const resolveSigningAlgorithm = (jwk, override) => {\n if (override) {\n return override;\n }\n const alg = jwk.alg;\n if (alg && isSigningAlgorithm(alg)) {\n return alg;\n }\n if (jwk.kty === 'EC') {\n const inferred = CURVE_TO_ALG[jwk.crv];\n if (inferred) {\n return inferred;\n }\n }\n return undefined;\n};\nexport const derivePublicJwk = (privateJwk, kid, alg) => {\n if (privateJwk.kty === 'EC') {\n const { crv, x, y } = privateJwk;\n return { kty: 'EC', crv, x, y, kid, alg, use: 'sig' };\n }\n if (privateJwk.kty === 'RSA') {\n const { n, e } = privateJwk;\n return { kty: 'RSA', n, e, kid, alg, use: 'sig' };\n }\n throw new Error(`unsupported key type`);\n};\nexport const importPrivateKeyFromJwk = async (jwk, alg) => {\n if (!('d' in jwk) || !jwk.d) {\n throw new Error(`expected a private key (missing 'd' parameter)`);\n }\n if (jwk.kty === 'EC' && !alg.startsWith('ES')) {\n throw new Error(`algorithm ${alg} does not match ec key`);\n }\n if (jwk.kty === 'RSA' && alg.startsWith('ES')) {\n throw new Error(`algorithm ${alg} does not match rsa key`);\n }\n const algorithm = getImportAlgorithm(alg, jwk.kty === 'EC' ? jwk.crv : undefined);\n const key = await crypto.subtle.importKey('jwk', jwk, algorithm, true, ['sign']);\n if (!(key instanceof CryptoKey)) {\n throw new Error(`expected asymmetric key, got symmetric`);\n }\n return key;\n};\nexport const exportPrivateJwkFromKey = async (key, alg, kid) => {\n const jwk = (await crypto.subtle.exportKey('jwk', key));\n jwk.alg = alg;\n if (kid) {\n jwk.kid = kid;\n }\n return jwk;\n};\nexport const importPkcs8PrivateKey = async (pem, alg) => {\n const bytes = parsePkcs8Pem(pem);\n const algorithm = getImportAlgorithm(alg);\n const key = await crypto.subtle.importKey('pkcs8', bytes, algorithm, true, ['sign']);\n if (!(key instanceof CryptoKey)) {\n throw new Error(`expected asymmetric key, got symmetric`);\n }\n return key;\n};\nexport const exportPkcs8PrivateKey = async (key) => {\n const pkcs8 = await crypto.subtle.exportKey('pkcs8', key);\n const bytes = new Uint8Array(pkcs8);\n const base64 = toBase64Pad(bytes);\n return ['-----BEGIN PRIVATE KEY-----', ...chunk64(base64), '-----END PRIVATE KEY-----', ''].join('\\n');\n};\nconst parsePkcs8Pem = (pem) => {\n const match = pem.match(/-----BEGIN PRIVATE KEY-----([\\s\\S]*?)-----END PRIVATE KEY-----/);\n if (!match) {\n throw new Error(`invalid pkcs8 pem`);\n }\n const base64 = match[1].replace(/\\s+/g, '');\n const bytes = fromBase64Pad(base64);\n const buffer = bytes.buffer.slice(bytes.byteOffset, bytes.byteOffset + bytes.byteLength);\n return buffer;\n};\nconst chunk64 = (input) => {\n const chunks = [];\n for (let i = 0; i < input.length; i += 64) {\n chunks.push(input.slice(i, i + 64));\n }\n return chunks;\n};\n","import { derivePublicJwk, importPrivateKeyFromJwk } from './jwk.js';\n/**\n * cache for imported keys. uses WeakMap so entries are garbage collected when JWK objects are no longer\n * referenced.\n */\nconst keyCache = new WeakMap();\n/**\n * retrieves or creates cached key material for a JWK.\n *\n * @param jwk private JWK to get material for\n * @returns cached key material (CryptoKey and derived public JWK)\n */\nexport const getCachedKeyMaterial = async (jwk) => {\n const cached = keyCache.get(jwk);\n if (cached) {\n return cached;\n }\n const { alg } = jwk;\n const cryptoKey = await importPrivateKeyFromJwk(jwk, alg);\n const publicJwk = derivePublicJwk(jwk, jwk.kid, alg);\n const material = { cryptoKey, publicJwk };\n keyCache.set(jwk, material);\n return material;\n};\n/**\n * pre-populates the cache with already-imported key material. useful for PKCS8 imports where we already have\n * the CryptoKey.\n *\n * @param jwk private JWK to cache for\n * @param cryptoKey already-imported CryptoKey\n */\nexport const setCachedKeyMaterial = (jwk, cryptoKey) => {\n const publicJwk = derivePublicJwk(jwk, jwk.kid, jwk.alg);\n keyCache.set(jwk, { cryptoKey, publicJwk });\n};\n","import { fromBase64Url, toBase64Url } from '@atcute/multibase';\nimport { decodeUtf8From, encodeUtf8 } from '@atcute/uint8array';\nimport { getSignAlgorithm } from '../internal/crypto.js';\n/**\n * signs a jwt using webcrypto.\n *\n * @param params signing parameters\n * @returns signed jwt\n */\nexport const signJwt = async (params) => {\n const { header, payload, key, alg } = params;\n const fullHeader = { ...header, alg };\n const headerSegment = encodeSegment(fullHeader);\n const payloadSegment = encodeSegment(payload);\n const signingInput = `${headerSegment}.${payloadSegment}`;\n const signature = await crypto.subtle.sign(getSignAlgorithm(alg), key, encodeUtf8(signingInput));\n const signatureSegment = toBase64Url(new Uint8Array(signature));\n return `${signingInput}.${signatureSegment}`;\n};\n/**\n * verifies a jwt and returns its payload.\n *\n * @param jwt jwt string\n * @param options verification options\n * @returns decoded payload\n */\nexport const verifyJwt = async (jwt, options) => {\n const { key, alg, typ } = options;\n const parts = jwt.split('.');\n if (parts.length !== 3) {\n throw new Error(`invalid jwt format`);\n }\n const header = decodeSegment(parts[0]);\n if (header.alg !== alg) {\n throw new Error(`invalid jwt alg`);\n }\n if (typ && header.typ !== typ) {\n throw new Error(`invalid jwt typ`);\n }\n const payload = decodeSegment(parts[1]);\n const signature = fromBase64Url(parts[2]);\n const signingInput = `${parts[0]}.${parts[1]}`;\n const ok = await crypto.subtle.verify(getSignAlgorithm(alg), key, signature, encodeUtf8(signingInput));\n if (!ok) {\n throw new Error(`invalid jwt signature`);\n }\n return payload;\n};\nconst encodeSegment = (value) => {\n return toBase64Url(encodeUtf8(JSON.stringify(value)));\n};\nconst decodeSegment = (value) => {\n const bytes = fromBase64Url(value);\n return JSON.parse(decodeUtf8From(bytes));\n};\n","import { toBase64Url } from '@atcute/multibase';\nimport { encodeUtf8, toSha256 } from '@atcute/uint8array';\n/**\n * computes sha-256 hash and returns base64url-encoded result.\n *\n * @param input string to hash\n * @returns base64url-encoded sha-256 hash\n */\nexport const sha256Base64Url = async (input) => {\n const bytes = encodeUtf8(input);\n const digest = await toSha256(bytes);\n return toBase64Url(digest);\n};\n","import { nanoid } from 'nanoid';\nimport { getCachedKeyMaterial } from '../internal/key-cache.js';\nimport { signJwt } from '../jwt/index.js';\n/**\n * creates a DPoP proof signer.\n *\n * @param jwk DPoP private JWK (with `alg` set)\n * @returns signing function for DPoP proofs\n */\nexport const createDpopProofSigner = (jwk) => {\n const alg = jwk.alg;\n // lazily resolve key material on first sign\n let materialPromise;\n return async (htm, htu, nonce, ath) => {\n materialPromise ||= getCachedKeyMaterial(jwk);\n const { cryptoKey, publicJwk } = await materialPromise;\n const now = Math.floor(Date.now() / 1_000);\n return signJwt({\n header: {\n typ: 'dpop+jwt',\n jwk: publicJwk,\n },\n payload: {\n htm,\n htu,\n iat: now,\n jti: nanoid(24),\n nonce,\n ath,\n },\n key: cryptoKey,\n alg,\n });\n };\n};\n","import { getGenerateAlgorithm } from '../internal/crypto.js';\nimport { exportPrivateJwkFromKey, isSigningAlgorithm } from '../internal/jwk.js';\nimport { setCachedKeyMaterial } from '../internal/key-cache.js';\n/** preferred algorithm order for DPoP key generation. */\nconst PREFERRED_ALGORITHMS = [\n 'ES256',\n 'ES384',\n 'ES512',\n 'PS256',\n 'PS384',\n 'PS512',\n 'RS256',\n 'RS384',\n 'RS512',\n];\nconst sortAlgorithms = (algs) => {\n return algs.toSorted((a, b) => {\n const aIdx = PREFERRED_ALGORITHMS.indexOf(a);\n const bIdx = PREFERRED_ALGORITHMS.indexOf(b);\n if (aIdx === -1 && bIdx === -1) {\n return 0;\n }\n if (aIdx === -1) {\n return 1;\n }\n if (bIdx === -1) {\n return -1;\n }\n return aIdx - bIdx;\n });\n};\n/**\n * generates a new DPoP private JWK with `alg` set.\n *\n * @param supportedAlgs server supported algorithms (optional)\n * @returns private JWK (with cache pre-warmed)\n */\nexport const generateDpopKey = async (supportedAlgs) => {\n const normalized = supportedAlgs?.filter(isSigningAlgorithm) ?? [];\n if (supportedAlgs?.length && normalized.length === 0) {\n throw new Error(`no supported algorithms provided`);\n }\n const algs = normalized.length ? sortAlgorithms(normalized) : ['ES256'];\n const errors = [];\n for (const alg of algs) {\n try {\n const pair = await crypto.subtle.generateKey(getGenerateAlgorithm(alg), true, ['sign', 'verify']);\n const jwk = (await exportPrivateJwkFromKey(pair.privateKey, alg));\n // pre-populate cache so we don't re-import\n setCachedKeyMaterial(jwk, pair.privateKey);\n return jwk;\n }\n catch (err) {\n errors.push(err);\n }\n }\n throw new AggregateError(errors, `failed to generate DPoP key for any of: ${algs.join(', ')}`);\n};\n","import { fromBase64Url } from '@atcute/multibase';\nimport { decodeUtf8From } from '@atcute/uint8array';\nimport * as v from 'valibot';\nimport { getImportAlgorithm } from '../internal/crypto.js';\nimport { computeJktFromJwk } from '../jwk/compute-jkt.js';\nimport { verifyJwt } from '../jwt/index.js';\nconst dpopJwkSchema = v.union([\n v.looseObject({\n kty: v.literal('EC'),\n crv: v.picklist(['P-256', 'P-384', 'P-521']),\n x: v.string(),\n y: v.string(),\n }),\n v.looseObject({\n kty: v.literal('RSA'),\n e: v.string(),\n n: v.string(),\n }),\n]);\nconst dpopHeaderSchema = v.looseObject({\n typ: v.literal('dpop+jwt'),\n alg: v.pipe(v.string(), v.check((alg) => alg !== 'none', 'alg must not be \"none\"')),\n jwk: dpopJwkSchema,\n});\nconst dpopPayloadSchema = v.looseObject({\n htm: v.string(),\n htu: v.string(),\n iat: v.number(),\n jti: v.string(),\n nonce: v.optional(v.string()),\n});\n/** error thrown when dpop verification fails. */\nexport class DpopVerifyError extends Error {\n code;\n constructor(message, code) {\n super(message);\n this.name = 'DpopVerifyError';\n this.code = code;\n }\n}\n/**\n * verifies a dpop proof from a request header.\n *\n * @param dpopHeader dpop header value\n * @param options verification options\n * @returns verification result with claims and jwk thumbprint\n * @throws {DpopVerifyError} if verification fails\n */\nexport const verifyDpopProof = async (dpopHeader, options) => {\n if (!dpopHeader) {\n throw new DpopVerifyError(`missing dpop header`, 'missing');\n }\n const { method, url, nonce: dpopNonce, maxClockSkew = 60 } = options;\n const parts = dpopHeader.split('.');\n if (parts.length !== 3) {\n throw new DpopVerifyError(`invalid dpop proof format`, 'invalid');\n }\n let decoded;\n try {\n decoded = decodeSegment(parts[0]);\n }\n catch {\n throw new DpopVerifyError(`invalid dpop header`, 'invalid');\n }\n const headerResult = v.safeParse(dpopHeaderSchema, decoded);\n if (!headerResult.success) {\n throw new DpopVerifyError(`invalid dpop header`, 'invalid');\n }\n const { jwk, alg } = headerResult.output;\n if (!isSigningAlgorithm(alg)) {\n throw new DpopVerifyError(`unsupported dpop alg`, 'invalid');\n }\n let raw;\n try {\n const key = await importPublicKey(jwk, alg);\n raw = await verifyJwt(dpopHeader, { key, alg, typ: 'dpop+jwt' });\n }\n catch {\n throw new DpopVerifyError(`dpop signature verification failed`, 'invalid');\n }\n const payloadResult = v.safeParse(dpopPayloadSchema, raw);\n if (!payloadResult.success) {\n throw new DpopVerifyError(`invalid dpop payload`, 'invalid');\n }\n const payload = payloadResult.output;\n if (payload.htm !== method) {\n throw new DpopVerifyError(`dpop htm mismatch: expected ${method}, got ${payload.htm}`, 'invalid');\n }\n if (payload.htu !== url) {\n throw new DpopVerifyError(`dpop htu mismatch: expected ${url}, got ${payload.htu}`, 'invalid');\n }\n const now = Math.floor(Date.now() / 1000);\n if (payload.iat > now + maxClockSkew) {\n throw new DpopVerifyError(`dpop proof issued in the future`, 'invalid');\n }\n if (payload.iat < now - maxClockSkew) {\n throw new DpopVerifyError(`dpop proof expired`, 'expired');\n }\n if (dpopNonce) {\n if (!payload.nonce || !(await dpopNonce.check(payload.nonce))) {\n throw new DpopVerifyError(`invalid or missing dpop nonce`, 'nonce_required');\n }\n }\n const jkt = await computeJktFromJwk(jwk);\n return { claims: payload, jwk: jwk, jkt };\n};\nconst importPublicKey = async (jwk, alg) => {\n const algorithm = getImportAlgorithm(alg, jwk.kty === 'EC' ? jwk.crv : undefined);\n const key = await crypto.subtle.importKey('jwk', jwk, algorithm, true, ['verify']);\n if (!(key instanceof CryptoKey)) {\n throw new Error(`expected asymmetric key, got symmetric`);\n }\n return key;\n};\nconst isSigningAlgorithm = (alg) => {\n return (alg === 'ES256' ||\n alg === 'ES384' ||\n alg === 'ES512' ||\n alg === 'PS256' ||\n alg === 'PS384' ||\n alg === 'PS512' ||\n alg === 'RS256' ||\n alg === 'RS384' ||\n alg === 'RS512');\n};\nconst decodeSegment = (segment) => {\n const bytes = fromBase64Url(segment);\n return JSON.parse(decodeUtf8From(bytes));\n};\n","import { nanoid } from 'nanoid';\nimport { sha256Base64Url } from './sha256.js';\n/**\n * generates pkce verifier and challenge (s256).\n *\n * @param length verifier length (43-128 per rfc 7636)\n * @returns pkce values\n */\nexport const generatePkce = async (length = 64) => {\n const verifier = nanoid(length);\n const challenge = await sha256Base64Url(verifier);\n return { verifier, challenge, method: 'S256' };\n};\n","export const extractContentType = (headers) => {\n return headers.get('content-type')?.split(';')[0];\n};\n","import { createDpopProofSigner, sha256Base64Url } from '@atcute/oauth-crypto';\nimport { database } from './environment.js';\nimport { extractContentType } from './utils/response.js';\nexport const createDPoPFetch = (dpopKey, isAuthServer) => {\n const nonces = database.dpopNonces;\n const pending = database.inflightDpop;\n const sign = createDpopProofSigner(dpopKey);\n return async (input, init) => {\n const request = new Request(input, init);\n const authorizationHeader = request.headers.get('authorization');\n const ath = authorizationHeader?.startsWith('DPoP ')\n ? await sha256Base64Url(authorizationHeader.slice(5))\n : undefined;\n const { method, url } = request;\n const { origin, pathname } = new URL(url);\n const htu = origin + pathname;\n let deferred = pending.get(origin);\n if (deferred) {\n await deferred.promise;\n deferred = undefined;\n }\n let initNonce;\n let expiredOrMissing = false;\n try {\n const [nonce, lapsed] = nonces.getWithLapsed(origin);\n initNonce = nonce;\n expiredOrMissing = lapsed > 3 * 60 * 1_000;\n }\n catch {\n // ignore read errors\n }\n if (expiredOrMissing) {\n pending.set(origin, (deferred = Promise.withResolvers()));\n }\n let nextNonce;\n try {\n const initProof = await sign(method, htu, initNonce, ath);\n request.headers.set('dpop', initProof);\n const initResponse = await fetch(request);\n nextNonce = initResponse.headers.get('dpop-nonce');\n if (nextNonce === null || nextNonce === initNonce) {\n return initResponse;\n }\n try {\n nonces.set(origin, nextNonce);\n }\n catch {\n // ignore write errors\n }\n const shouldRetry = await isUseDpopNonceError(initResponse, isAuthServer);\n if (!shouldRetry) {\n return initResponse;\n }\n if (input === request || init?.body instanceof ReadableStream) {\n return initResponse;\n }\n }\n finally {\n if (deferred) {\n pending.delete(origin);\n deferred.resolve();\n }\n }\n {\n const nextProof = await sign(method, htu, nextNonce, ath);\n const nextRequest = new Request(input, init);\n nextRequest.headers.set('dpop', nextProof);\n const retryResponse = await fetch(nextRequest);\n const retryNonce = retryResponse.headers.get('dpop-nonce');\n if (retryNonce !== null && retryNonce !== nextNonce) {\n try {\n nonces.set(origin, retryNonce);\n }\n catch {\n // ignore write errors\n }\n }\n return retryResponse;\n }\n };\n};\nconst isUseDpopNonceError = async (response, isAuthServer) => {\n if (isAuthServer === undefined || isAuthServer === false) {\n if (response.status === 401) {\n const wwwAuth = response.headers.get('www-authenticate');\n if (wwwAuth?.startsWith('DPoP')) {\n return wwwAuth.includes('error=\"use_dpop_nonce\"');\n }\n }\n }\n if (isAuthServer === undefined || isAuthServer === true) {\n if (response.status === 400 && extractContentType(response.headers) === 'application/json') {\n try {\n const json = await response.clone().json();\n return typeof json === 'object' && json?.['error'] === 'use_dpop_nonce';\n }\n catch {\n return false;\n }\n }\n }\n return false;\n};\n","const isUrlParseSupported = 'parse' in URL;\nexport const isValidUrl = (urlString) => {\n let url = null;\n if (isUrlParseSupported) {\n url = URL.parse(urlString);\n }\n else {\n try {\n url = new URL(urlString);\n }\n catch {\n /* empty */\n }\n }\n if (url !== null) {\n return url.protocol === 'https:' || url.protocol === 'http:';\n }\n return false;\n};\n","import { identityResolver } from './environment.js';\nimport { ResolverError } from './errors.js';\nimport { extractContentType } from './utils/response.js';\nimport { isValidUrl } from './utils/strings.js';\nexport const resolveFromIdentifier = async (ident) => {\n const identity = await identityResolver.resolve(ident);\n return {\n identity: identity,\n metadata: await getMetadataFromResourceServer(identity.pds),\n };\n};\nexport const resolveFromService = async (host) => {\n try {\n const metadata = await getMetadataFromResourceServer(host);\n return { metadata };\n }\n catch (err) {\n if (err instanceof ResolverError) {\n try {\n const metadata = await getOAuthAuthorizationServerMetadata(host);\n return { metadata };\n }\n catch {\n /* empty */\n }\n }\n throw err;\n }\n};\nconst getOAuthProtectedResourceMetadata = async (host) => {\n const url = new URL(`/.well-known/oauth-protected-resource`, host);\n const response = await fetch(url.href, {\n redirect: 'manual',\n headers: {\n accept: 'application/json',\n },\n });\n if (response.status !== 200 || extractContentType(response.headers) !== 'application/json') {\n throw new ResolverError(`unexpected response`);\n }\n const metadata = (await response.json());\n if (metadata.resource !== url.origin) {\n throw new ResolverError(`unexpected issuer`);\n }\n return metadata;\n};\nconst getOAuthAuthorizationServerMetadata = async (host) => {\n const url = new URL(`/.well-known/oauth-authorization-server`, host);\n const response = await fetch(url.href, {\n redirect: 'manual',\n headers: {\n accept: 'application/json',\n },\n });\n if (response.status !== 200 || extractContentType(response.headers) !== 'application/json') {\n throw new ResolverError(`unexpected response`);\n }\n const metadata = (await response.json());\n if (metadata.issuer !== url.origin) {\n throw new ResolverError(`unexpected issuer`);\n }\n if (!isValidUrl(metadata.authorization_endpoint)) {\n throw new ResolverError(`authorization server provided incorrect authorization endpoint`);\n }\n if (!metadata.client_id_metadata_document_supported) {\n throw new ResolverError(`authorization server does not support 'client_id_metadata_document'`);\n }\n if (!metadata.pushed_authorization_request_endpoint) {\n throw new ResolverError(`authorization server does not support 'pushed_authorization request'`);\n }\n if (metadata.response_types_supported) {\n if (!metadata.response_types_supported.includes('code')) {\n throw new ResolverError(`authorization server does not support 'code' response type`);\n }\n }\n return metadata;\n};\nconst getMetadataFromResourceServer = async (input) => {\n const rs_metadata = await getOAuthProtectedResourceMetadata(input);\n if (rs_metadata.authorization_servers?.length !== 1) {\n throw new ResolverError(`expected exactly one authorization server in the listing`);\n }\n const issuer = rs_metadata.authorization_servers[0];\n const as_metadata = await getOAuthAuthorizationServerMetadata(issuer);\n if (as_metadata.protected_resources) {\n if (!as_metadata.protected_resources.includes(rs_metadata.resource)) {\n throw new ResolverError(`server is not in authorization server's jurisdiction`);\n }\n }\n return as_metadata;\n};\n","export const pick = (obj, keys) => {\n const cloned = {};\n for (let idx = 0, len = keys.length; idx < len; idx++) {\n const key = keys[idx];\n // @ts-expect-error\n cloned[key] = obj[key];\n }\n return cloned;\n};\n","import { createDpopProofSigner } from '@atcute/oauth-crypto';\nimport { createDPoPFetch } from '../dpop.js';\nimport { CLIENT_ID, REDIRECT_URI, fetchClientAssertion } from '../environment.js';\nimport { FetchResponseError, OAuthResponseError, TokenRefreshError } from '../errors.js';\nimport { resolveFromIdentifier } from '../resolvers.js';\nimport { pick } from '../utils/misc.js';\nimport { extractContentType } from '../utils/response.js';\nexport class OAuthServerAgent {\n #fetch;\n #metadata;\n #dpopKey;\n constructor(metadata, dpopKey) {\n this.#metadata = metadata;\n this.#dpopKey = dpopKey;\n this.#fetch = createDPoPFetch(dpopKey, true);\n }\n // oxlint-disable-next-line typescript/no-explicit-any\n async request(endpoint, payload) {\n // oxlint-disable-next-line typescript/no-explicit-any\n const url = this.#metadata[`${endpoint}_endpoint`];\n if (!url) {\n throw new Error(`no endpoint for ${endpoint}`);\n }\n if ((endpoint === 'token' || endpoint === 'pushed_authorization_request') &&\n fetchClientAssertion !== undefined) {\n const sign = createDpopProofSigner(this.#dpopKey);\n const assertion = await fetchClientAssertion({\n aud: this.#metadata.issuer,\n createDpopProof: async (url, nonce) => {\n return await sign('POST', url, nonce, undefined);\n },\n });\n payload = { ...payload, ...assertion };\n }\n const response = await this.#fetch(url, {\n method: 'post',\n headers: { 'content-type': 'application/json' },\n body: JSON.stringify({ ...payload, client_id: CLIENT_ID }),\n });\n if (extractContentType(response.headers) !== 'application/json') {\n throw new FetchResponseError(response, 2, `unexpected content-type`);\n }\n const json = await response.json();\n if (response.ok) {\n return json;\n }\n else {\n throw new OAuthResponseError(response, json);\n }\n }\n async revoke(token) {\n try {\n await this.request('revocation', { token: token });\n }\n catch {\n /* empty */\n }\n }\n async exchangeCode(code, verifier) {\n const response = await this.request('token', {\n grant_type: 'authorization_code',\n redirect_uri: REDIRECT_URI,\n code: code,\n code_verifier: verifier,\n });\n try {\n return await this.#processExchangeResponse(response);\n }\n catch (err) {\n await this.revoke(response.access_token);\n throw err;\n }\n }\n async refresh({ sub, token }) {\n if (!token.refresh) {\n throw new TokenRefreshError(sub, 'no refresh token available');\n }\n const response = await this.request('token', {\n grant_type: 'refresh_token',\n refresh_token: token.refresh,\n });\n try {\n if (sub !== response.sub) {\n throw new TokenRefreshError(sub, `sub mismatch in token response; got ${response.sub}`);\n }\n return this.#processTokenResponse(response);\n }\n catch (err) {\n await this.revoke(response.access_token);\n throw err;\n }\n }\n #processTokenResponse(res) {\n if (!res.sub) {\n throw new TypeError(`missing sub field in token response`);\n }\n if (!res.scope) {\n throw new TypeError(`missing scope field in token response`);\n }\n if (res.token_type !== 'DPoP') {\n throw new TypeError(`token response returned a non-dpop token`);\n }\n return {\n scope: res.scope,\n refresh: res.refresh_token,\n access: res.access_token,\n type: res.token_type,\n expires_at: typeof res.expires_in === 'number' ? Date.now() + res.expires_in * 1_000 : undefined,\n };\n }\n async #processExchangeResponse(res) {\n const sub = res.sub;\n if (!sub) {\n throw new TypeError(`missing sub field in token response`);\n }\n const token = this.#processTokenResponse(res);\n const resolved = await resolveFromIdentifier(sub);\n if (resolved.metadata.issuer !== this.#metadata.issuer) {\n throw new TypeError(`issuer mismatch; got ${resolved.metadata.issuer}`);\n }\n return {\n token: token,\n info: {\n sub: sub,\n aud: resolved.identity.pds,\n server: pick(resolved.metadata, [\n 'issuer',\n 'authorization_endpoint',\n 'introspection_endpoint',\n 'pushed_authorization_request_endpoint',\n 'revocation_endpoint',\n 'token_endpoint',\n ]),\n },\n };\n }\n}\n","import { database } from '../environment.js';\nimport { OAuthResponseError, TokenRefreshError } from '../errors.js';\nimport { isLegacyDpopKey, migrateLegacyDpopKey } from '../utils/dpop-key.js';\nimport { locks } from '../utils/runtime.js';\nimport { OAuthServerAgent } from './server-agent.js';\nconst pending = new Map();\nexport const getSession = async (sub, options) => {\n options?.signal?.throwIfAborted();\n let allowStored = isTokenUsable;\n if (options?.noCache) {\n allowStored = returnFalse;\n }\n else if (options?.allowStale) {\n allowStored = returnTrue;\n }\n // As long as concurrent requests are made for the same key, only one\n // request will be made to the cache & getter function at a time. This works\n // because there is no async operation between the while() loop and the\n // pending.set() call. Because of the \"single threaded\" nature of\n // JavaScript, the pending item will be set before the next iteration of the\n // while loop.\n let previousExecutionFlow;\n while ((previousExecutionFlow = pending.get(sub))) {\n try {\n const { isFresh, value } = await previousExecutionFlow;\n if (isFresh || allowStored(value)) {\n return value;\n }\n }\n catch {\n // Ignore errors from previous execution flows (they will have been\n // propagated by that flow).\n }\n options?.signal?.throwIfAborted();\n }\n const run = async () => {\n const storedSession = await migrateSessionIfNeeded(sub, database.sessions.get(sub));\n if (storedSession && allowStored(storedSession)) {\n // Use the stored value as return value for the current execution\n // flow. Notify other concurrent execution flows (that should be\n // \"stuck\" in the loop before until this promise resolves) that we got\n // a value, but that it came from the store (isFresh = false).\n return { isFresh: false, value: storedSession };\n }\n const newSession = await refreshToken(sub, storedSession);\n await storeSession(sub, newSession);\n return { isFresh: true, value: newSession };\n };\n let promise;\n if (locks) {\n // oxlint-disable-next-line typescript/no-explicit-any\n promise = locks.request(`atcute-oauth:${sub}`, run);\n }\n else {\n promise = run();\n }\n promise = promise.finally(() => pending.delete(sub));\n if (pending.has(sub)) {\n // This should never happen. Indeed, there must not be any 'await'\n // statement between this and the loop iteration check meaning that\n // this.pending.get returned undefined. It is there to catch bugs that\n // would occur in future changes to the code.\n throw new Error('concurrent request for the same key');\n }\n pending.set(sub, promise);\n const { value } = await promise;\n return value;\n};\nexport const storeSession = async (sub, newSession) => {\n try {\n database.sessions.set(sub, newSession);\n }\n catch (err) {\n await onRefreshError(newSession);\n throw err;\n }\n};\nexport const deleteStoredSession = (sub) => {\n database.sessions.delete(sub);\n};\nexport const listStoredSessions = () => {\n return database.sessions.keys();\n};\nconst returnTrue = () => true;\nconst returnFalse = () => false;\nconst refreshToken = async (sub, storedSession) => {\n if (storedSession === undefined) {\n throw new TokenRefreshError(sub, `session deleted by another tab`);\n }\n const { dpopKey, info, token } = storedSession;\n const server = new OAuthServerAgent(info.server, dpopKey);\n try {\n const newToken = await server.refresh({ sub: info.sub, token });\n return { dpopKey, info, token: newToken };\n }\n catch (cause) {\n if (cause instanceof OAuthResponseError && cause.status === 400 && cause.error === 'invalid_grant') {\n throw new TokenRefreshError(sub, `session was revoked`, { cause });\n }\n throw cause;\n }\n};\nconst onRefreshError = async ({ dpopKey, info, token }) => {\n // If the token data cannot be stored, let's revoke it\n const server = new OAuthServerAgent(info.server, dpopKey);\n await server.revoke(token.refresh ?? token.access);\n};\nconst isTokenUsable = ({ token }) => {\n const expires = token.expires_at;\n return expires == null || Date.now() + 60_000 <= expires;\n};\nconst migrateSessionIfNeeded = async (sub, session) => {\n if (!session || !isLegacyDpopKey(session.dpopKey)) {\n return session;\n }\n const dpopKey = await migrateLegacyDpopKey(session.dpopKey);\n const migrated = { ...session, dpopKey };\n try {\n database.sessions.set(sub, migrated);\n }\n catch {\n // ignore persistence errors\n }\n return migrated;\n};\n","import { generateDpopKey, generatePkce } from '@atcute/oauth-crypto';\nimport { nanoid } from 'nanoid';\nimport { CLIENT_ID, REDIRECT_URI, database } from '../environment.js';\nimport { AuthorizationError, LoginError } from '../errors.js';\nimport { resolveFromIdentifier, resolveFromService } from '../resolvers.js';\nimport { OAuthServerAgent } from './server-agent.js';\nimport { storeSession } from './sessions.js';\n/**\n * Create authentication URL for authorization\n *\n * @param options\n * @returns URL to redirect the user for authorization\n */\nexport const createAuthorizationUrl = async (options) => {\n const { target, scope, state = null, ...reqs } = options;\n let resolved;\n switch (target.type) {\n case 'account': {\n resolved = await resolveFromIdentifier(target.identifier);\n break;\n }\n case 'pds': {\n resolved = await resolveFromService(target.serviceUrl);\n }\n }\n const { identity, metadata } = resolved;\n const loginHint = identity\n ? identity.handle !== 'handle.invalid'\n ? identity.handle\n : identity.did\n : undefined;\n const sid = nanoid(24);\n const pkce = await generatePkce();\n const dpopKey = await generateDpopKey(['ES256']);\n const params = {\n display: reqs.display,\n ui_locales: reqs.locale,\n prompt: reqs.prompt,\n redirect_uri: REDIRECT_URI,\n code_challenge: pkce.challenge,\n code_challenge_method: pkce.method,\n state: sid,\n login_hint: loginHint,\n response_mode: 'fragment',\n response_type: 'code',\n scope: scope,\n };\n database.states.set(sid, {\n dpopKey: dpopKey,\n metadata: metadata,\n verifier: pkce.verifier,\n state: state,\n });\n const server = new OAuthServerAgent(metadata, dpopKey);\n const response = await server.request('pushed_authorization_request', params);\n const authUrl = new URL(metadata.authorization_endpoint);\n authUrl.searchParams.set('client_id', CLIENT_ID);\n authUrl.searchParams.set('request_uri', response.request_uri);\n return authUrl;\n};\n/**\n * Finalize authorization\n *\n * @param params Search params\n * @returns Session object, which you can use to instantiate user agents\n */\nexport const finalizeAuthorization = async (params) => {\n const issuer = params.get('iss');\n const sid = params.get('state');\n const code = params.get('code');\n const error = params.get('error');\n if (!sid || !(code || error)) {\n throw new LoginError(`missing parameters`);\n }\n const stored = database.states.get(sid);\n if (stored) {\n // Delete now that we've caught it\n database.states.delete(sid);\n }\n else {\n throw new LoginError(`unknown state provided`);\n }\n if (error) {\n throw new AuthorizationError(params.get('error_description') || error);\n }\n if (!code) {\n throw new LoginError(`missing code parameter`);\n }\n const dpopKey = stored.dpopKey;\n const metadata = stored.metadata;\n const state = stored.state ?? null;\n if (issuer === null) {\n throw new LoginError(`missing issuer parameter`);\n }\n else if (issuer !== metadata.issuer) {\n throw new LoginError(`issuer mismatch`);\n }\n // Retrieve authentication tokens\n const server = new OAuthServerAgent(metadata, dpopKey);\n const { info, token } = await server.exchangeCode(code, stored.verifier);\n // We're finished!\n const sub = info.sub;\n const session = { dpopKey, info, token };\n await storeSession(sub, session);\n return { session, state };\n};\n","import { createDPoPFetch } from '../dpop.js';\nimport { OAuthServerAgent } from './server-agent.js';\nimport { deleteStoredSession, getSession } from './sessions.js';\nexport class OAuthUserAgent {\n #fetch;\n #getSessionPromise;\n session;\n constructor(session) {\n this.session = session;\n this.#fetch = createDPoPFetch(session.dpopKey, false);\n }\n get sub() {\n return this.session.info.sub;\n }\n getSession(options) {\n const promise = getSession(this.session.info.sub, options);\n promise\n .then((session) => {\n this.session = session;\n }, () => { })\n .finally(() => {\n this.#getSessionPromise = undefined;\n });\n return (this.#getSessionPromise = promise);\n }\n async signOut() {\n const sub = this.session.info.sub;\n try {\n const { dpopKey, info, token } = await getSession(sub, { allowStale: true });\n const server = new OAuthServerAgent(info.server, dpopKey);\n await server.revoke(token.refresh ?? token.access);\n }\n finally {\n deleteStoredSession(sub);\n }\n }\n async handle(pathname, init) {\n await this.#getSessionPromise;\n const headers = new Headers(init?.headers);\n let session = this.session;\n let url = new URL(pathname, session.info.aud);\n headers.set('authorization', `${session.token.type} ${session.token.access}`);\n const response = await this.#fetch(url.href, { ...init, headers });\n if (!isInvalidTokenResponse(response)) {\n return response;\n }\n try {\n if (this.#getSessionPromise) {\n session = await this.#getSessionPromise;\n }\n else {\n session = await this.getSession();\n }\n }\n catch {\n return response;\n }\n // Stream already consumed, can't retry.\n if (init?.body instanceof ReadableStream) {\n return response;\n }\n url = new URL(pathname, session.info.aud);\n headers.set('authorization', `${session.token.type} ${session.token.access}`);\n return await this.#fetch(url.href, { ...init, headers });\n }\n}\nconst isInvalidTokenResponse = (response) => {\n if (response.status !== 401) {\n return false;\n }\n const auth = response.headers.get('www-authenticate');\n return (auth != null &&\n (auth.startsWith('Bearer ') || auth.startsWith('DPoP ')) &&\n auth.includes('error=\"invalid_token\"'));\n};\n"],"mappings":"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","names":["locks","parse","__name","raw","parsed","createOAuthDatabase","name","controller","signal","createStore","subname","expiresAt","persistUpdatedAt","store","storageKey","persist","read","listener","ev","cleanup","lock","resolve","now","changed","key","locks","item","updatedAt","value","token","_item","CLIENT_ID","REDIRECT_URI","fetchClientAssertion","database","identityResolver","configureOAuth","__name","options","createOAuthDatabase","LoginError","__name","AuthorizationError","ResolverError","TokenRefreshError","sub","message","options","OAuthResponseError","response","data","error","ifString","ifObject","errorDescription","messageError","messageDesc","FetchResponseError","status","v","ES256_ALG","isLegacyDpopKey","__name","key","migrateLegacyDpopKey","pkcs8","fromBase64Url","cryptoKey","jwk","urlAlphabet","nanoid","__name","size","id","bytes","urlAlphabet","HASH_BY_ALG","CURVE_BY_ALG","getHashName","__name","alg","getNamedCurve","getSignAlgorithm","getHashLength","getImportAlgorithm","curve","namedCurve","getGenerateAlgorithm","hash","SIGNING_ALGORITHMS","isSigningAlgorithm","__name","alg","SIGNING_ALGORITHMS","derivePublicJwk","__name","privateJwk","kid","alg","crv","x","y","n","e","importPrivateKeyFromJwk","jwk","algorithm","getImportAlgorithm","key","exportPrivateJwkFromKey","keyCache","getCachedKeyMaterial","__name","jwk","cached","alg","cryptoKey","importPrivateKeyFromJwk","publicJwk","derivePublicJwk","material","setCachedKeyMaterial","signJwt","__name","params","header","payload","key","alg","fullHeader","headerSegment","encodeSegment","payloadSegment","signingInput","signature","getSignAlgorithm","encodeUtf8","signatureSegment","toBase64Url","encodeSegment","__name","value","toBase64Url","encodeUtf8","sha256Base64Url","__name","input","bytes","encodeUtf8","digest","toSha256","toBase64Url","createDpopProofSigner","__name","jwk","alg","materialPromise","htm","htu","nonce","ath","getCachedKeyMaterial","cryptoKey","publicJwk","now","signJwt","nanoid","PREFERRED_ALGORITHMS","sortAlgorithms","__name","algs","a","b","aIdx","bIdx","generateDpopKey","supportedAlgs","normalized","isSigningAlgorithm","errors","alg","pair","getGenerateAlgorithm","jwk","exportPrivateJwkFromKey","setCachedKeyMaterial","err","dpopJwkSchema","union","looseObject","literal","picklist","string","dpopHeaderSchema","pipe","check","alg","dpopPayloadSchema","number","optional","generatePkce","__name","length","verifier","nanoid","challenge","sha256Base64Url","extractContentType","__name","headers","createDPoPFetch","__name","dpopKey","isAuthServer","nonces","database","pending","sign","createDpopProofSigner","input","init","request","authorizationHeader","ath","sha256Base64Url","method","url","origin","pathname","htu","deferred","initNonce","expiredOrMissing","nonce","lapsed","nextNonce","initProof","initResponse","isUseDpopNonceError","nextProof","nextRequest","retryResponse","retryNonce","response","wwwAuth","extractContentType","json","isUrlParseSupported","isValidUrl","__name","urlString","url","resolveFromIdentifier","__name","ident","identity","identityResolver","getMetadataFromResourceServer","resolveFromService","host","err","ResolverError","getOAuthAuthorizationServerMetadata","getOAuthProtectedResourceMetadata","url","response","extractContentType","metadata","isValidUrl","input","rs_metadata","issuer","as_metadata","pick","__name","obj","keys","cloned","idx","len","key","OAuthServerAgent","__name","#fetch","#metadata","#dpopKey","metadata","dpopKey","createDPoPFetch","endpoint","payload","url","fetchClientAssertion","sign","createDpopProofSigner","assertion","nonce","response","CLIENT_ID","extractContentType","FetchResponseError","json","OAuthResponseError","token","code","verifier","REDIRECT_URI","#processExchangeResponse","err","sub","TokenRefreshError","#processTokenResponse","res","resolved","resolveFromIdentifier","pick","pending","getSession","__name","sub","options","allowStored","isTokenUsable","returnFalse","returnTrue","previousExecutionFlow","isFresh","value","run","storedSession","migrateSessionIfNeeded","database","newSession","refreshToken","storeSession","promise","locks","err","onRefreshError","deleteStoredSession","listStoredSessions","TokenRefreshError","dpopKey","info","token","server","OAuthServerAgent","newToken","cause","OAuthResponseError","expires","session","isLegacyDpopKey","migrateLegacyDpopKey","migrated","createAuthorizationUrl","__name","options","target","scope","state","reqs","resolved","resolveFromIdentifier","resolveFromService","identity","metadata","loginHint","sid","nanoid","pkce","generatePkce","dpopKey","generateDpopKey","params","REDIRECT_URI","database","response","OAuthServerAgent","authUrl","CLIENT_ID","finalizeAuthorization","issuer","code","error","LoginError","stored","AuthorizationError","server","info","token","sub","session","storeSession","OAuthUserAgent","__name","#fetch","#getSessionPromise","session","createDPoPFetch","options","promise","getSession","sub","dpopKey","info","token","OAuthServerAgent","deleteStoredSession","pathname","init","headers","url","response","isInvalidTokenResponse","auth"],"sourceRoot":"","file":"/chunk-2QN2TM5L.js.map"} \ No newline at end of file diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-34YH6DD7.js b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-34YH6DD7.js similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-34YH6DD7.js rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-34YH6DD7.js diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-34YH6DD7.js.br b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-34YH6DD7.js.br similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-34YH6DD7.js.br rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-34YH6DD7.js.br diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-34YH6DD7.js.map b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-34YH6DD7.js.map similarity index 99% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-34YH6DD7.js.map rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-34YH6DD7.js.map index aeaa66f5..3f75de8c 100644 --- a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-34YH6DD7.js.map +++ b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-34YH6DD7.js.map @@ -1 +1 @@ -{"version":3,"sources":["/node_modules/.deno/@atcute+varint@2.0.2/node_modules/@atcute/varint/dist/index.js","/node_modules/.deno/@atcute+car@6.0.2/node_modules/@atcute/car/dist/types.js","/node_modules/.deno/@atcute+car@6.0.2/node_modules/@atcute/car/dist/reader.js","/node_modules/.deno/@noble+hashes@2.4.0/node_modules/@noble/hashes/sha2.js","/common/tiles.js"],"sourcesContent":["const MSB = 0x80;\nconst REST = 0x7f;\nconst MSBALL = ~REST;\nconst INT = 2 ** 31;\nconst N1 = 2 ** 7;\nconst N2 = 2 ** 14;\nconst N3 = 2 ** 21;\nconst N4 = 2 ** 28;\nconst N5 = 2 ** 35;\nconst N6 = 2 ** 42;\nconst N7 = 2 ** 49;\nconst N8 = 2 ** 56;\nconst N9 = 2 ** 63;\nconst MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER;\nconst _min = Math.min;\n/**\n * encodes a varint\n *\n * @param num Number to encode\n * @param buf Buffer to write on\n * @param offset Starting position on the buffer\n * @returns The amount of bytes written\n */\nexport const encode = (num, buf, offset = 0) => {\n if (!Number.isSafeInteger(num) || num < 0) {\n throw new RangeError('could not encode varint');\n }\n const start = offset;\n if (num < N1) {\n buf[offset] = num;\n return 1;\n }\n if (num < N2) {\n buf[offset] = (num & REST) | MSB;\n buf[offset + 1] = num >>> 7;\n return 2;\n }\n if (num < N3) {\n buf[offset] = (num & REST) | MSB;\n buf[offset + 1] = ((num >>> 7) & REST) | MSB;\n buf[offset + 2] = num >>> 14;\n return 3;\n }\n if (num < N4) {\n buf[offset] = (num & REST) | MSB;\n buf[offset + 1] = ((num >>> 7) & REST) | MSB;\n buf[offset + 2] = ((num >>> 14) & REST) | MSB;\n buf[offset + 3] = num >>> 21;\n return 4;\n }\n if (num < INT) {\n buf[offset] = (num & REST) | MSB;\n buf[offset + 1] = ((num >>> 7) & REST) | MSB;\n buf[offset + 2] = ((num >>> 14) & REST) | MSB;\n buf[offset + 3] = ((num >>> 21) & REST) | MSB;\n buf[offset + 4] = num >>> 28;\n return 5;\n }\n while (num >= INT) {\n buf[offset++] = (num & 0xff) | MSB;\n num /= 128;\n }\n while (num & MSBALL) {\n buf[offset++] = (num & 0xff) | MSB;\n num >>>= 7;\n }\n buf[offset] = num | 0;\n return offset - start + 1;\n};\n/**\n * decodes a varint and returns the value with the next byte offset\n *\n * @param buf buffer to read from\n * @param offset starting position on the buffer\n * @param length maximum bytes to consume from offset\n * @returns decoded value and the next offset\n */\nexport const decode = (buf, offset = 0, length = buf.length) => {\n const end = _min(offset + length, buf.length);\n let counter = offset;\n if (counter >= end) {\n throw new RangeError('could not decode varint');\n }\n let b = buf[counter++];\n let res = b & REST;\n if (b < MSB) {\n return { value: res, nextOffset: counter };\n }\n if (counter >= end) {\n throw new RangeError('could not decode varint');\n }\n b = buf[counter++];\n res |= (b & REST) << 7;\n if (b < MSB) {\n return { value: res, nextOffset: counter };\n }\n if (counter >= end) {\n throw new RangeError('could not decode varint');\n }\n b = buf[counter++];\n res |= (b & REST) << 14;\n if (b < MSB) {\n return { value: res, nextOffset: counter };\n }\n if (counter >= end) {\n throw new RangeError('could not decode varint');\n }\n b = buf[counter++];\n res |= (b & REST) << 21;\n if (b < MSB) {\n return { value: res, nextOffset: counter };\n }\n if (counter >= end) {\n throw new RangeError('could not decode varint');\n }\n b = buf[counter++];\n res += (b & REST) * N4;\n if (b < MSB) {\n return { value: res, nextOffset: counter };\n }\n let shift = 35;\n do {\n if (counter >= end) {\n throw new RangeError('could not decode varint');\n }\n b = buf[counter++];\n res += (b & REST) * 2 ** shift;\n if (res > MAX_SAFE_INTEGER) {\n throw new RangeError('could not decode varint');\n }\n shift += 7;\n } while (b >= MSB);\n return { value: res, nextOffset: counter };\n};\n/**\n * Returns encoding length\n *\n * @param num The number to encode\n * @returns Amount of bytes needed for encoding\n */\nexport const encodingLength = (num) => {\n return num < N1\n ? 1\n : num < N2\n ? 2\n : num < N3\n ? 3\n : num < N4\n ? 4\n : num < N5\n ? 5\n : num < N6\n ? 6\n : num < N7\n ? 7\n : num < N8\n ? 8\n : num < N9\n ? 9\n : 10;\n};\n","import { CidLinkWrapper } from '@atcute/cid';\nexport const isCarV1Header = (value) => {\n if (value === null || typeof value !== 'object') {\n return false;\n }\n const { version, roots } = value;\n return version === 1 && Array.isArray(roots) && roots.every((root) => root instanceof CidLinkWrapper);\n};\n","import * as CBOR from '@atcute/cbor';\nimport * as CID from '@atcute/cid';\nimport * as varint from '@atcute/varint';\nimport { isCarV1Header } from './types.js';\nexport const fromUint8Array = (buffer) => {\n const { header, nextOffset: headerOffset } = readHeader(buffer, 0);\n return {\n header,\n roots: header.data.roots,\n [Symbol.iterator]() {\n let pos = headerOffset;\n return {\n next() {\n if (pos >= buffer.length) {\n return {\n done: true,\n value: undefined,\n };\n }\n const entryStart = pos;\n const { value: entryLength, nextOffset: lengthOffset } = varint.decode(buffer, pos, 8);\n pos = lengthOffset;\n if (entryLength < 36) {\n throw new RangeError(`invalid car block; length=${entryLength}`);\n }\n const cidStart = pos;\n const { cid, nextOffset: cidOffset } = readCid(buffer, pos);\n pos = cidOffset;\n const bytesStart = pos;\n const bytesSize = entryLength - 36;\n if (bytesStart + bytesSize > buffer.length) {\n throw new RangeError('unexpected end of data');\n }\n const bytesEnd = bytesStart + bytesSize;\n const bytes = buffer.subarray(bytesStart, bytesEnd);\n pos = bytesEnd;\n const cidEnd = bytesStart;\n const entryEnd = bytesEnd;\n return {\n done: false,\n value: {\n cid,\n bytes,\n entryStart,\n entryEnd,\n cidStart,\n cidEnd,\n bytesStart,\n bytesEnd,\n },\n };\n },\n [Symbol.iterator]() {\n return this;\n },\n };\n },\n };\n};\nconst readHeader = (source, offset) => {\n const headerStart = offset;\n const { value: length, nextOffset: lengthOffset } = varint.decode(source, offset, 8);\n if (length === 0) {\n throw new RangeError(`invalid car header; length=0`);\n }\n const dataStart = lengthOffset;\n const dataEnd = dataStart + length;\n if (dataEnd > source.length) {\n throw new RangeError('unexpected end of data');\n }\n const data = CBOR.decode(source.subarray(dataStart, dataEnd));\n if (!isCarV1Header(data)) {\n throw new TypeError(`expected a car v1 archive`);\n }\n const headerEnd = dataEnd;\n return {\n header: { data, headerStart, headerEnd, dataStart, dataEnd },\n nextOffset: dataEnd,\n };\n};\nconst readCid = (source, offset) => {\n const cidEnd = offset + 36;\n if (cidEnd > source.length) {\n throw new RangeError('unexpected end of data');\n }\n const bytes = source.subarray(offset, cidEnd);\n const version = bytes[0];\n const codec = bytes[1];\n const digestType = bytes[2];\n const digestSize = bytes[3];\n if (version !== CID.CID_VERSION) {\n throw new RangeError(`incorrect cid version (got v${version})`);\n }\n if (codec !== CID.CODEC_DCBOR && codec !== CID.CODEC_RAW) {\n throw new RangeError(`incorrect cid codec (got 0x${codec.toString(16)})`);\n }\n if (digestType !== CID.HASH_SHA256) {\n throw new RangeError(`incorrect cid digest type (got 0x${digestType.toString(16)})`);\n }\n if (digestSize !== 32) {\n throw new RangeError(`incorrect cid digest size (got ${digestSize})`);\n }\n return {\n cid: {\n version: version,\n codec: codec,\n digest: {\n codec: digestType,\n contents: bytes.subarray(4, 36),\n },\n bytes: bytes,\n },\n nextOffset: cidEnd,\n };\n};\n","/**\n * SHA2 hash function. A.k.a. sha256, sha384, sha512, sha512_224, sha512_256.\n * SHA256 is the fastest hash implementable in JS, even faster than Blake3.\n * Check out {@link https://www.rfc-editor.org/rfc/rfc4634 | RFC 4634} and\n * {@link https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf | FIPS 180-4}.\n * @module\n */\nimport { Chi, HashMD, Maj, SHA224_IV, SHA256_IV, SHA384_IV, SHA512_IV } from \"./_md.js\";\nimport * as u64 from \"./_u64.js\";\nimport { clean, createHasher, oidNist, rotr } from \"./utils.js\";\n/**\n * SHA-224 / SHA-256 round constants from RFC 6234 §5.1: the first 32 bits\n * of the cube roots of the first 64 primes (2..311).\n */\n// prettier-ignore\nconst SHA256_K = /* @__PURE__ */ Uint32Array.from([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n]);\n/** Reusable SHA-224 / SHA-256 message schedule buffer `W_t` from RFC 6234 §6.2 step 1. */\nconst SHA256_W = /* @__PURE__ */ new Uint32Array(64);\n/** Internal SHA-224 / SHA-256 compression engine from RFC 6234 §6.2. */\nclass SHA2_32B extends HashMD {\n // We cannot use array here since array allows indexing by variable\n // which means optimizer/compiler cannot use registers.\n // Numeric initializers matter: starting the fields as `undefined` changes\n // V8's field representation and makes sha256 3x slower (measured).\n A = 0;\n B = 0;\n C = 0;\n D = 0;\n E = 0;\n F = 0;\n G = 0;\n H = 0;\n constructor(outputLen, IV) {\n super(64, outputLen, 8, false);\n this.A = IV[0] | 0;\n this.B = IV[1] | 0;\n this.C = IV[2] | 0;\n this.D = IV[3] | 0;\n this.E = IV[4] | 0;\n this.F = IV[5] | 0;\n this.G = IV[6] | 0;\n this.H = IV[7] | 0;\n }\n get() {\n const { A, B, C, D, E, F, G, H } = this;\n return [A, B, C, D, E, F, G, H];\n }\n // prettier-ignore\n set(A, B, C, D, E, F, G, H) {\n this.A = A | 0;\n this.B = B | 0;\n this.C = C | 0;\n this.D = D | 0;\n this.E = E | 0;\n this.F = F | 0;\n this.G = G | 0;\n this.H = H | 0;\n }\n _cloneInto(to) {\n (to ||= new this.constructor()).set(...this.get());\n return this._cloneIntoMeta(to);\n }\n process(view, offset) {\n // Extend the first 16 words into the remaining 48 words w[16..63] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4)\n SHA256_W[i] = view.getUint32(offset, false);\n for (let i = 16; i < 64; i++) {\n const W15 = SHA256_W[i - 15];\n const W2 = SHA256_W[i - 2];\n const s0 = rotr(W15, 7) ^ rotr(W15, 18) ^ (W15 >>> 3);\n const s1 = rotr(W2, 17) ^ rotr(W2, 19) ^ (W2 >>> 10);\n SHA256_W[i] = (s1 + SHA256_W[i - 7] + s0 + SHA256_W[i - 16]) | 0;\n }\n // Compression function main loop, 64 rounds\n let { A, B, C, D, E, F, G, H } = this;\n for (let i = 0; i < 64; i++) {\n const sigma1 = rotr(E, 6) ^ rotr(E, 11) ^ rotr(E, 25);\n const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const sigma0 = rotr(A, 2) ^ rotr(A, 13) ^ rotr(A, 22);\n const T2 = (sigma0 + Maj(A, B, C)) | 0;\n H = G;\n G = F;\n F = E;\n E = (D + T1) | 0;\n D = C;\n C = B;\n B = A;\n A = (T1 + T2) | 0;\n }\n // Add the compressed chunk to the current hash value\n A = (A + this.A) | 0;\n B = (B + this.B) | 0;\n C = (C + this.C) | 0;\n D = (D + this.D) | 0;\n E = (E + this.E) | 0;\n F = (F + this.F) | 0;\n G = (G + this.G) | 0;\n H = (H + this.H) | 0;\n this.set(A, B, C, D, E, F, G, H);\n }\n roundClean() {\n clean(SHA256_W);\n }\n destroy() {\n // HashMD callers route post-destroy usability through `destroyed`; zeroizing alone still leaves\n // update()/digest() callable on reused instances.\n this.destroyed = true;\n this.set(0, 0, 0, 0, 0, 0, 0, 0);\n clean(this.buffer);\n }\n}\n/** Internal SHA-256 hash class grounded in RFC 6234 §6.2. */\nexport class _SHA256 extends SHA2_32B {\n constructor() {\n super(32, SHA256_IV);\n }\n}\n/** Internal SHA-224 hash class grounded in RFC 6234 §6.2 and §8.5. */\nexport class _SHA224 extends SHA2_32B {\n constructor() {\n super(28, SHA224_IV);\n }\n}\n// SHA2-512 is slower than sha256 in js because u64 operations are slow.\n// SHA-384 / SHA-512 round constants from RFC 6234 §5.2:\n// 80 full 64-bit words split into high/low halves.\n// prettier-ignore\nconst K512 = /* @__PURE__ */ (() => u64.split([\n '0x428a2f98d728ae22', '0x7137449123ef65cd', '0xb5c0fbcfec4d3b2f', '0xe9b5dba58189dbbc',\n '0x3956c25bf348b538', '0x59f111f1b605d019', '0x923f82a4af194f9b', '0xab1c5ed5da6d8118',\n '0xd807aa98a3030242', '0x12835b0145706fbe', '0x243185be4ee4b28c', '0x550c7dc3d5ffb4e2',\n '0x72be5d74f27b896f', '0x80deb1fe3b1696b1', '0x9bdc06a725c71235', '0xc19bf174cf692694',\n '0xe49b69c19ef14ad2', '0xefbe4786384f25e3', '0x0fc19dc68b8cd5b5', '0x240ca1cc77ac9c65',\n '0x2de92c6f592b0275', '0x4a7484aa6ea6e483', '0x5cb0a9dcbd41fbd4', '0x76f988da831153b5',\n '0x983e5152ee66dfab', '0xa831c66d2db43210', '0xb00327c898fb213f', '0xbf597fc7beef0ee4',\n '0xc6e00bf33da88fc2', '0xd5a79147930aa725', '0x06ca6351e003826f', '0x142929670a0e6e70',\n '0x27b70a8546d22ffc', '0x2e1b21385c26c926', '0x4d2c6dfc5ac42aed', '0x53380d139d95b3df',\n '0x650a73548baf63de', '0x766a0abb3c77b2a8', '0x81c2c92e47edaee6', '0x92722c851482353b',\n '0xa2bfe8a14cf10364', '0xa81a664bbc423001', '0xc24b8b70d0f89791', '0xc76c51a30654be30',\n '0xd192e819d6ef5218', '0xd69906245565a910', '0xf40e35855771202a', '0x106aa07032bbd1b8',\n '0x19a4c116b8d2d0c8', '0x1e376c085141ab53', '0x2748774cdf8eeb99', '0x34b0bcb5e19b48a8',\n '0x391c0cb3c5c95a63', '0x4ed8aa4ae3418acb', '0x5b9cca4f7763e373', '0x682e6ff3d6b2b8a3',\n '0x748f82ee5defb2fc', '0x78a5636f43172f60', '0x84c87814a1f0ab72', '0x8cc702081a6439ec',\n '0x90befffa23631e28', '0xa4506cebde82bde9', '0xbef9a3f7b2c67915', '0xc67178f2e372532b',\n '0xca273eceea26619c', '0xd186b8c721c0c207', '0xeada7dd6cde0eb1e', '0xf57d4f7fee6ed178',\n '0x06f067aa72176fba', '0x0a637dc5a2c898a6', '0x113f9804bef90dae', '0x1b710b35131c471b',\n '0x28db77f523047d84', '0x32caab7b40c72493', '0x3c9ebe0a15c9bebc', '0x431d67c49c100d4c',\n '0x4cc5d4becb3e42b6', '0x597f299cfc657e2a', '0x5fcb6fab3ad6faec', '0x6c44198c4a475817'\n].map(n => BigInt(n))))();\nconst SHA512_Kh = /* @__PURE__ */ (() => K512[0])();\nconst SHA512_Kl = /* @__PURE__ */ (() => K512[1])();\n// Reusable high-half schedule buffer for the RFC 6234 §6.4 64-bit `W_t` words.\nconst SHA512_W_H = /* @__PURE__ */ new Uint32Array(80);\n// Reusable low-half schedule buffer for the RFC 6234 §6.4 64-bit `W_t` words.\nconst SHA512_W_L = /* @__PURE__ */ new Uint32Array(80);\n/** Internal SHA-384 / SHA-512 compression engine from RFC 6234 §6.4. */\nclass SHA2_64B extends HashMD {\n // We cannot use array here since array allows indexing by variable\n // which means optimizer/compiler cannot use registers.\n // h -- high 32 bits, l -- low 32 bits\n // Numeric initializers matter: starting the fields as `undefined` changes\n // V8's field representation and slows hashing down (measured on sha256).\n Ah = 0;\n Al = 0;\n Bh = 0;\n Bl = 0;\n Ch = 0;\n Cl = 0;\n Dh = 0;\n Dl = 0;\n Eh = 0;\n El = 0;\n Fh = 0;\n Fl = 0;\n Gh = 0;\n Gl = 0;\n Hh = 0;\n Hl = 0;\n constructor(outputLen, IV) {\n super(128, outputLen, 16, false);\n this.Ah = IV[0] | 0;\n this.Al = IV[1] | 0;\n this.Bh = IV[2] | 0;\n this.Bl = IV[3] | 0;\n this.Ch = IV[4] | 0;\n this.Cl = IV[5] | 0;\n this.Dh = IV[6] | 0;\n this.Dl = IV[7] | 0;\n this.Eh = IV[8] | 0;\n this.El = IV[9] | 0;\n this.Fh = IV[10] | 0;\n this.Fl = IV[11] | 0;\n this.Gh = IV[12] | 0;\n this.Gl = IV[13] | 0;\n this.Hh = IV[14] | 0;\n this.Hl = IV[15] | 0;\n }\n // prettier-ignore\n get() {\n const { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n return [Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl];\n }\n // prettier-ignore\n set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl) {\n this.Ah = Ah | 0;\n this.Al = Al | 0;\n this.Bh = Bh | 0;\n this.Bl = Bl | 0;\n this.Ch = Ch | 0;\n this.Cl = Cl | 0;\n this.Dh = Dh | 0;\n this.Dl = Dl | 0;\n this.Eh = Eh | 0;\n this.El = El | 0;\n this.Fh = Fh | 0;\n this.Fl = Fl | 0;\n this.Gh = Gh | 0;\n this.Gl = Gl | 0;\n this.Hh = Hh | 0;\n this.Hl = Hl | 0;\n }\n _cloneInto(to) {\n (to ||= new this.constructor()).set(...this.get());\n return this._cloneIntoMeta(to);\n }\n process(view, offset) {\n // Extend the first 16 words into the remaining 64 words w[16..79] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4) {\n SHA512_W_H[i] = view.getUint32(offset);\n SHA512_W_L[i] = view.getUint32((offset += 4));\n }\n for (let i = 16; i < 80; i++) {\n // s0 := (w[i-15] rightrotate 1) xor (w[i-15] rightrotate 8) xor (w[i-15] rightshift 7)\n const W15h = SHA512_W_H[i - 15] | 0;\n const W15l = SHA512_W_L[i - 15] | 0;\n const s0h = u64.rotrSH(W15h, W15l, 1) ^ u64.rotrSH(W15h, W15l, 8) ^ u64.shrSH(W15h, W15l, 7);\n const s0l = u64.rotrSL(W15h, W15l, 1) ^ u64.rotrSL(W15h, W15l, 8) ^ u64.shrSL(W15h, W15l, 7);\n // s1 := (w[i-2] rightrotate 19) xor (w[i-2] rightrotate 61) xor (w[i-2] rightshift 6)\n const W2h = SHA512_W_H[i - 2] | 0;\n const W2l = SHA512_W_L[i - 2] | 0;\n const s1h = u64.rotrSH(W2h, W2l, 19) ^ u64.rotrBH(W2h, W2l, 61) ^ u64.shrSH(W2h, W2l, 6);\n const s1l = u64.rotrSL(W2h, W2l, 19) ^ u64.rotrBL(W2h, W2l, 61) ^ u64.shrSL(W2h, W2l, 6);\n // SHA512_W[i] = s0 + s1 + SHA512_W[i - 7] + SHA512_W[i - 16];\n const SUMl = u64.add4L(s0l, s1l, SHA512_W_L[i - 7], SHA512_W_L[i - 16]);\n const SUMh = u64.add4H(SUMl, s0h, s1h, SHA512_W_H[i - 7], SHA512_W_H[i - 16]);\n SHA512_W_H[i] = SUMh | 0;\n SHA512_W_L[i] = SUMl | 0;\n }\n let { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n // Compression function main loop, 80 rounds\n for (let i = 0; i < 80; i++) {\n // S1 := (e rightrotate 14) xor (e rightrotate 18) xor (e rightrotate 41)\n const sigma1h = u64.rotrSH(Eh, El, 14) ^ u64.rotrSH(Eh, El, 18) ^ u64.rotrBH(Eh, El, 41);\n const sigma1l = u64.rotrSL(Eh, El, 14) ^ u64.rotrSL(Eh, El, 18) ^ u64.rotrBL(Eh, El, 41);\n //const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const CHIh = (Eh & Fh) ^ (~Eh & Gh);\n const CHIl = (El & Fl) ^ (~El & Gl);\n // T1 = H + sigma1 + Chi(E, F, G) + SHA512_K[i] + SHA512_W[i]\n // prettier-ignore\n const T1ll = u64.add5L(Hl, sigma1l, CHIl, SHA512_Kl[i], SHA512_W_L[i]);\n const T1h = u64.add5H(T1ll, Hh, sigma1h, CHIh, SHA512_Kh[i], SHA512_W_H[i]);\n const T1l = T1ll | 0;\n // S0 := (a rightrotate 28) xor (a rightrotate 34) xor (a rightrotate 39)\n const sigma0h = u64.rotrSH(Ah, Al, 28) ^ u64.rotrBH(Ah, Al, 34) ^ u64.rotrBH(Ah, Al, 39);\n const sigma0l = u64.rotrSL(Ah, Al, 28) ^ u64.rotrBL(Ah, Al, 34) ^ u64.rotrBL(Ah, Al, 39);\n const MAJh = (Ah & Bh) ^ (Ah & Ch) ^ (Bh & Ch);\n const MAJl = (Al & Bl) ^ (Al & Cl) ^ (Bl & Cl);\n Hh = Gh | 0;\n Hl = Gl | 0;\n Gh = Fh | 0;\n Gl = Fl | 0;\n Fh = Eh | 0;\n Fl = El | 0;\n ({ h: Eh, l: El } = u64.add(Dh | 0, Dl | 0, T1h | 0, T1l | 0));\n Dh = Ch | 0;\n Dl = Cl | 0;\n Ch = Bh | 0;\n Cl = Bl | 0;\n Bh = Ah | 0;\n Bl = Al | 0;\n const All = u64.add3L(T1l, sigma0l, MAJl);\n Ah = u64.add3H(All, T1h, sigma0h, MAJh);\n Al = All | 0;\n }\n // Add the compressed chunk to the current hash value\n ({ h: Ah, l: Al } = u64.add(this.Ah | 0, this.Al | 0, Ah | 0, Al | 0));\n ({ h: Bh, l: Bl } = u64.add(this.Bh | 0, this.Bl | 0, Bh | 0, Bl | 0));\n ({ h: Ch, l: Cl } = u64.add(this.Ch | 0, this.Cl | 0, Ch | 0, Cl | 0));\n ({ h: Dh, l: Dl } = u64.add(this.Dh | 0, this.Dl | 0, Dh | 0, Dl | 0));\n ({ h: Eh, l: El } = u64.add(this.Eh | 0, this.El | 0, Eh | 0, El | 0));\n ({ h: Fh, l: Fl } = u64.add(this.Fh | 0, this.Fl | 0, Fh | 0, Fl | 0));\n ({ h: Gh, l: Gl } = u64.add(this.Gh | 0, this.Gl | 0, Gh | 0, Gl | 0));\n ({ h: Hh, l: Hl } = u64.add(this.Hh | 0, this.Hl | 0, Hh | 0, Hl | 0));\n this.set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl);\n }\n roundClean() {\n clean(SHA512_W_H, SHA512_W_L);\n }\n destroy() {\n // HashMD callers route post-destroy usability through `destroyed`; zeroizing alone still leaves\n // update()/digest() callable on reused instances.\n this.destroyed = true;\n clean(this.buffer);\n this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\n }\n}\n/** Internal SHA-512 hash class grounded in RFC 6234 §6.3 and §6.4. */\nexport class _SHA512 extends SHA2_64B {\n constructor() {\n super(64, SHA512_IV);\n }\n}\n/** Internal SHA-384 hash class grounded in RFC 6234 §6.3 and §6.4. */\nexport class _SHA384 extends SHA2_64B {\n constructor() {\n super(48, SHA384_IV);\n }\n}\n/**\n * Truncated SHA512/256 and SHA512/224.\n * SHA512_IV is XORed with 0xa5a5a5a5a5a5a5a5, then used as \"intermediary\" IV of SHA512/t.\n * Then t hashes string to produce result IV.\n * See the repo-side derivation recipe in `test/misc/sha2-gen-iv.js`.\n * These IV literals are checked against that script rather than a dedicated\n * local RFC section.\n */\n/** SHA-512/224 IV derived by the SHA-512/t recipe in `test/misc/sha2-gen-iv.js` and\n * stored as sixteen big-endian 32-bit halves. */\nconst T224_IV = /* @__PURE__ */ Uint32Array.from([\n 0x8c3d37c8, 0x19544da2, 0x73e19966, 0x89dcd4d6, 0x1dfab7ae, 0x32ff9c82, 0x679dd514, 0x582f9fcf,\n 0x0f6d2b69, 0x7bd44da8, 0x77e36f73, 0x04c48942, 0x3f9d85a8, 0x6a1d36c8, 0x1112e6ad, 0x91d692a1,\n]);\n/** SHA-512/256 IV derived by the SHA-512/t recipe in `test/misc/sha2-gen-iv.js` and\n * stored as sixteen big-endian 32-bit halves. */\nconst T256_IV = /* @__PURE__ */ Uint32Array.from([\n 0x22312194, 0xfc2bf72c, 0x9f555fa3, 0xc84c64c2, 0x2393b86b, 0x6f53b151, 0x96387719, 0x5940eabd,\n 0x96283ee2, 0xa88effe3, 0xbe5e1e25, 0x53863992, 0x2b0199fc, 0x2c85b8aa, 0x0eb72ddc, 0x81c52ca2,\n]);\n/** Internal SHA-512/224 hash class using the derived `T224_IV` and the shared\n * RFC 6234 §6.4 compression engine. */\nexport class _SHA512_224 extends SHA2_64B {\n constructor() {\n super(28, T224_IV);\n }\n}\n/** Internal SHA-512/256 hash class using the derived `T256_IV` and the shared\n * RFC 6234 §6.4 compression engine. */\nexport class _SHA512_256 extends SHA2_64B {\n constructor() {\n super(32, T256_IV);\n }\n}\n/**\n * SHA2-256 hash function from RFC 4634. In JS it's the fastest: even faster than Blake3. Some info:\n *\n * - Trying 2^128 hashes would get 50% chance of collision, using birthday attack.\n * - BTC network is doing 2^70 hashes/sec (2^95 hashes/year) as per 2025.\n * - Each sha256 hash is executing 2^18 bit operations.\n * - Good 2024 ASICs can do 200Th/sec with 3500 watts of power, corresponding to 2^36 hashes/joule.\n * @param msg - message bytes to hash\n * @param opts - Reserved hash options.\n * @returns Digest bytes.\n * @example\n * Hash a message with SHA2-256.\n * ```ts\n * sha256(new Uint8Array([97, 98, 99]));\n * ```\n */\nexport const sha256 = /* @__PURE__ */ createHasher(() => new _SHA256(), \n/* @__PURE__ */ oidNist(0x01));\n/**\n * SHA2-224 hash function from RFC 4634.\n * @param msg - message bytes to hash\n * @param opts - Reserved hash options.\n * @returns Digest bytes.\n * @example\n * Hash a message with SHA2-224.\n * ```ts\n * sha224(new Uint8Array([97, 98, 99]));\n * ```\n */\nexport const sha224 = /* @__PURE__ */ createHasher(() => new _SHA224(), \n/* @__PURE__ */ oidNist(0x04));\n/**\n * SHA2-512 hash function from RFC 4634.\n * @param msg - message bytes to hash\n * @param opts - Reserved hash options.\n * @returns Digest bytes.\n * @example\n * Hash a message with SHA2-512.\n * ```ts\n * sha512(new Uint8Array([97, 98, 99]));\n * ```\n */\nexport const sha512 = /* @__PURE__ */ createHasher(() => new _SHA512(), \n/* @__PURE__ */ oidNist(0x03));\n/**\n * SHA2-384 hash function from RFC 4634.\n * @param msg - message bytes to hash\n * @param opts - Reserved hash options.\n * @returns Digest bytes.\n * @example\n * Hash a message with SHA2-384.\n * ```ts\n * sha384(new Uint8Array([97, 98, 99]));\n * ```\n */\nexport const sha384 = /* @__PURE__ */ createHasher(() => new _SHA384(), \n/* @__PURE__ */ oidNist(0x02));\n/**\n * SHA2-512/256 \"truncated\" hash function, with improved resistance to length extension attacks.\n * See the paper on {@link https://eprint.iacr.org/2010/548.pdf | truncated SHA512}.\n * @param msg - message bytes to hash\n * @param opts - Reserved hash options.\n * @returns Digest bytes.\n * @example\n * Hash a message with SHA2-512/256.\n * ```ts\n * sha512_256(new Uint8Array([97, 98, 99]));\n * ```\n */\nexport const sha512_256 = /* @__PURE__ */ createHasher(() => new _SHA512_256(), \n/* @__PURE__ */ oidNist(0x06));\n/**\n * SHA2-512/224 \"truncated\" hash function, with improved resistance to length extension attacks.\n * See the paper on {@link https://eprint.iacr.org/2010/548.pdf | truncated SHA512}.\n * @param msg - message bytes to hash\n * @param opts - Reserved hash options.\n * @returns Digest bytes.\n * @example\n * Hash a message with SHA2-512/224.\n * ```ts\n * sha512_224(new Uint8Array([97, 98, 99]));\n * ```\n */\nexport const sha512_224 = /* @__PURE__ */ createHasher(() => new _SHA512_224(), \n/* @__PURE__ */ oidNist(0x05));\n","import * as CID from \"@atcute/cid\";\nimport { fromUint8Array } from \"@atcute/car\";\nimport { sha256 } from \"@noble/hashes/sha2.js\";\n\nconst textDecoder = new TextDecoder();\n\n/**\n * Computes a CID string synchronously (SHA-256 via noble), matching\n * `@atcute/cid` `create()` which hashes with SHA-256.\n *\n * @param {0x55 | 0x71} code\n * @param {Uint8Array} data\n * @returns {string}\n *\n * @example Produces a stable base32 CID that decodes back to a valid CID string\n * ```js\n * import { createSyncCID } from \"~/common/tiles.js\";\n * import * as CID from \"@atcute/cid\";\n *\n * const cid = createSyncCID(0x55, new TextEncoder().encode(\"hello\"));\n * const parsed = CID.fromString(cid);\n * if (parsed.codec !== 0x55) throw new Error(\"should be raw codec\");\n * ```\n */\nexport function createSyncCID(code, data) {\n const digest = sha256(new Uint8Array(data));\n return CID.toString(CID.fromDigest(code, digest));\n}\n\n/**\n * @typedef {Record} TileResources\n * @typedef {{ html?: string; uri?: string; resources?: TileResources; blocks?: Record }} TileSource\n */\n\n/**\n * @param {string} text\n * @returns {Uint8Array}\n *\n * @example Decodes base64 back to the original bytes\n * ```js\n * import { decodeBase64, encodeBase64 } from \"~/common/tiles.js\";\n *\n * const original = new TextEncoder().encode(\"hello 🙂\");\n * const roundtrip = decodeBase64(encodeBase64(original));\n * if (roundtrip.length !== original.length) throw new Error(\"length should match\");\n * if (roundtrip.some((b, i) => b !== original[i])) throw new Error(\"bytes should match\");\n * ```\n */\nexport function decodeBase64(text) {\n const binary = atob(text);\n const bytes = new Uint8Array(binary.length);\n for (let i = 0; i < binary.length; i++) bytes[i] = binary.charCodeAt(i);\n return bytes;\n}\n\n/**\n * @param {Uint8Array} bytes\n * @returns {string}\n *\n * @example Returns a base64 string that decodes back to the input\n * ```js\n * import { encodeBase64, decodeBase64 } from \"~/common/tiles.js\";\n *\n * const bytes = new TextEncoder().encode(\"data:🌱\");\n * const encoded = encodeBase64(bytes);\n * if (typeof encoded !== \"string\" || encoded.length === 0) throw new Error(\"should be a non-empty string\");\n * const decoded = decodeBase64(encoded);\n * if (decoded.length !== bytes.length) throw new Error(\"roundtrip length should match\");\n * ```\n */\nexport function encodeBase64(bytes) {\n let binary = \"\";\n // Chunk to avoid stack overflow when spreading very large arrays into\n // String.fromCharCode. 0x8000 keeps the loop fast without overflowing.\n const chunkSize = 0x8000;\n for (let i = 0; i < bytes.length; i += chunkSize) {\n binary += String.fromCharCode(...bytes.subarray(i, i + chunkSize));\n }\n return btoa(binary);\n}\n\n// Synchronous raw DEFLATE (RFC 1951). Needed so block encoding/decoding and the\n// legacy-facet migration can run in synchronous (signal-using) paths without the\n// async CompressionStream. Both paths here are raw deflate (no zlib wrapper).\n\nconst LENGTH_EXTRA = [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0];\nconst LENGTH_BASE = [3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258];\nconst DIST_BASE = [1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577];\nconst DIST_EXTRA = [0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13];\n\n/** Fixed literal/length code lengths (RFC 1951 3.2.6). */\nconst FIXED_LIT_LENS = (() => {\n const lens = new Uint8Array(288);\n lens.fill(8, 0, 144);\n lens.fill(9, 144, 256);\n lens.fill(7, 256, 280);\n lens.fill(8, 280, 288);\n return lens;\n})();\n\n/**\n * Canonical Huffman encoder codes from bit lengths, indexed by symbol.\n *\n * @param {Uint8Array} lens\n * @returns {{ code: Int32Array, bits: Uint8Array } | null}\n */\nfunction canonicalCodes(lens) {\n const max = lens.reduce((m, l) => (l > m ? l : m), 0);\n const count = new Uint32Array(max + 1);\n for (const l of lens) if (l) count[l]++;\n let code = 0;\n const next = new Uint32Array(max + 1);\n for (let bits = 1; bits <= max; bits++) {\n code = (code + count[bits - 1]) << 1;\n next[bits] = code;\n }\n const out = new Int32Array(lens.length);\n const bits = new Uint8Array(lens.length);\n for (let n = 0; n < lens.length; n++) {\n const l = lens[n];\n if (l) {\n out[n] = next[l]++;\n bits[n] = l;\n }\n }\n return { code: out, bits };\n}\n\nconst FIXED_LIT_CODES = /** @type {{ code: Int32Array, bits: Uint8Array }} */ (canonicalCodes(FIXED_LIT_LENS));\nconst FIXED_DIST_CODES = /** @type {{ code: Int32Array, bits: Uint8Array }} */ (\n canonicalCodes(new Uint8Array(32).fill(5))\n);\n\n/**\n * Build canonical-decode tables ({@code count}/{@code symbol}) from bit lengths,\n * following zlib puff's construct(). Returns null for an invalid code set.\n *\n * @param {Uint8Array} lens\n * @param {number} max\n * @returns {{ count: Uint16Array, symbol: Uint16Array } | null}\n */\nfunction constructHuffman(lens, max) {\n const count = new Uint16Array(max + 1);\n for (const l of lens) if (l) count[l]++;\n let left = 1;\n for (let len = 1; len <= max; len++) {\n left = (left << 1) - count[len];\n if (left < 0) return null;\n }\n if (left > 1) return null;\n\n const symbol = new Uint16Array(lens.length);\n const offs = new Uint16Array(max + 1);\n let off = 0;\n for (let len = 1; len < max; len++) offs[len + 1] = off += count[len];\n for (let sym = 0; sym < lens.length; sym++) {\n const len = lens[sym];\n if (len) symbol[offs[len]++] = sym;\n }\n return { count, symbol };\n}\n\nconst FIXED_LIT_DECODE = /** @type {{ count: Uint16Array, symbol: Uint16Array }} */ (constructHuffman(FIXED_LIT_LENS, 15));\nconst FIXED_DIST_DECODE = /** @type {{ count: Uint16Array, symbol: Uint16Array }} */ (\n constructHuffman(new Uint8Array(32).fill(5), 15)\n);\n\n/**\n * Synchronously compresses bytes to raw DEFLATE (RFC 1951): LZ77 matching plus\n * the fixed-Huffman code set. Deterministic and dependency-free.\n *\n * @param {Uint8Array} bytes\n * @returns {Uint8Array}\n *\n * @example Round-trips through inflateSync\n * ```js\n * import { deflateSync, inflateSync } from \"~/common/tiles.js\";\n *\n * const data = new TextEncoder().encode(\"hello hello hello hello hello\");\n * const roundtrip = inflateSync(deflateSync(data));\n * if (roundtrip.some((b, i) => b !== data[i])) throw new Error(\"roundtrip should match\");\n * if (roundtrip.length !== data.length) throw new Error(\"length should match\");\n * ```\n */\nexport function deflateSync(bytes) {\n /** @type {number[]} */\n const out = [];\n let buf = 0;\n let nbits = 0;\n /** @type {(v: number, n: number) => void} */\n const put = (v, n) => {\n buf |= v << nbits;\n nbits += n;\n while (nbits >= 8) {\n out.push(buf & 0xff);\n buf >>>= 8;\n nbits -= 8;\n }\n };\n // Write a Huffman code MSB-first (RFC 1951 transmits codes MSB-first,\n // while extra bits and block headers are LSB-first via `put`).\n /** @type {(code: number, len: number) => void} */\n const putCode = (code, len) => {\n for (let k = len - 1; k >= 0; k--) put((code >>> k) & 1, 1);\n };\n\n const n = bytes.length;\n /** @type {number[]} */ const chain = new Array(65536).fill(-1);\n /** @type {number[]} */ const back = new Array(Math.max(0, n)).fill(-1);\n for (let i = 0; i + 2 < n; i++) {\n const h = (bytes[i] * 7 + bytes[i + 1] * 3 + bytes[i + 2]) & 0xffff;\n back[i] = chain[h];\n chain[h] = i;\n }\n\n put(1, 1); // BFINAL = 1\n put(1, 2); // BTYPE = 01 (fixed Huffman)\n\n let i = 0;\n while (i < n) {\n let bestLen = 0;\n let bestDist = 0;\n const maxLen = Math.min(258, n - i);\n if (i >= 3 && maxLen >= 3) {\n const h = (bytes[i] * 7 + bytes[i + 1] * 3 + bytes[i + 2]) & 0xffff;\n let cand = chain[h];\n let steps = 0;\n while (cand >= 0 && cand < i && cand >= i - 32768 && steps < 64) {\n let l = 0;\n while (l < maxLen && bytes[cand + l] === bytes[i + l]) l++;\n if (l > bestLen) {\n bestLen = l;\n bestDist = i - cand;\n if (l === maxLen) break;\n }\n cand = back[cand];\n steps++;\n }\n }\n if (bestLen >= 3) {\n let lc = 0;\n while (LENGTH_BASE[lc + 1] <= bestLen) lc++;\n const symbol = 257 + lc;\n put(FIXED_LIT_CODES.code[symbol], FIXED_LIT_CODES.bits[symbol]);\n putCode(FIXED_LIT_CODES.code[257 + lc], FIXED_LIT_CODES.bits[257 + lc]);\n put(bestLen - LENGTH_BASE[lc], LENGTH_EXTRA[lc]);\n let dc = 0;\n while (DIST_BASE[dc + 1] <= bestDist) dc++;\n putCode(FIXED_DIST_CODES.code[dc], FIXED_DIST_CODES.bits[dc]);\n put(bestDist - DIST_BASE[dc], DIST_EXTRA[dc]);\n i += bestLen;\n } else {\n putCode(FIXED_LIT_CODES.code[bytes[i]], FIXED_LIT_CODES.bits[bytes[i]]);\n i++;\n }\n }\n putCode(FIXED_LIT_CODES.code[256], FIXED_LIT_CODES.bits[256]);\n if (nbits > 0) out.push(buf & 0xff);\n return new Uint8Array(out);\n}\n\n/**\n * Synchronously decompresses a raw DEFLATE (RFC 1951) stream, supporting stored,\n * fixed-Huffman, and dynamic-Huffman blocks.\n *\n * @param {Uint8Array} bytes\n * @returns {Uint8Array}\n */\nexport function inflateSync(bytes) {\n let pos = 0;\n let bitVal = 0;\n let bitLen = 0;\n /** @type {(n: number) => number} */\n const bits = (n) => {\n while (bitLen < n) {\n bitVal |= bytes[pos++] << bitLen;\n bitLen += 8;\n }\n const r = bitVal & ((1 << n) - 1);\n bitVal >>>= n;\n bitLen -= n;\n return r;\n };\n\n /** @type {number[]} */\n const out = [];\n /** @type {(count: Uint16Array, symbolTable: Uint16Array) => number} */\n const decode = (count, symbolTable) => {\n let code = 0;\n let first = 0;\n let index = 0;\n for (let len = 1; len <= 15; len++) {\n code = (code << 1) | bits(1);\n const cnt = count[len];\n if (code - first < cnt) return symbolTable[index + (code - first)];\n index += cnt;\n first += cnt;\n first <<= 1;\n }\n throw new Error(\"invalid compressed bitstream\");\n };\n\n /** @type {(lc: Uint16Array, ls: Uint16Array, dc: Uint16Array, ds: Uint16Array) => void} */\n const decodeBlock = (lc, ls, dc, ds) => {\n for (;;) {\n const sym = decode(lc, ls);\n if (sym < 256) {\n out.push(sym);\n } else if (sym === 256) {\n return;\n } else {\n const li = sym - 257;\n const len = LENGTH_BASE[li] + bits(LENGTH_EXTRA[li]);\n const di = decode(dc, ds);\n const dist = DIST_BASE[di] + bits(DIST_EXTRA[di]);\n for (let k = 0; k < len; k++) out.push(out[out.length - dist]);\n }\n }\n };\n\n let bfinal = 0;\n do {\n bfinal = bits(1);\n const btype = bits(2);\n if (btype === 0) {\n bitVal = 0;\n bitLen = 0;\n const len = bytes[pos] | (bytes[pos + 1] << 8);\n pos += 4;\n for (let k = 0; k < len; k++) out.push(bytes[pos + k]);\n pos += len;\n } else if (btype === 1) {\n decodeBlock(FIXED_LIT_DECODE.count, FIXED_LIT_DECODE.symbol, FIXED_DIST_DECODE.count, FIXED_DIST_DECODE.symbol);\n } else if (btype === 2) {\n const hlit = bits(5) + 257;\n const hdist = bits(5) + 1;\n const hclen = bits(4) + 4;\n const order = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15];\n const clens = new Uint8Array(19);\n for (let i = 0; i < hclen; i++) clens[order[i]] = bits(3);\n const c = constructHuffman(clens, 7);\n if (!c) throw new Error(\"invalid code lengths\");\n const lens = new Uint8Array(hlit + hdist);\n let idx = 0;\n while (idx < hlit + hdist) {\n const s = decode(c.count, c.symbol);\n if (s < 16) lens[idx++] = s;\n else if (s === 16) {\n const rep = 3 + bits(2);\n const v = lens[idx - 1];\n for (let k = 0; k < rep; k++) lens[idx++] = v;\n } else if (s === 17) {\n idx += 3 + bits(3);\n } else {\n idx += 11 + bits(7);\n }\n }\n const lit = constructHuffman(lens.subarray(0, hlit), 15);\n const dst = constructHuffman(lens.subarray(hlit), 15);\n if (!lit || !dst) throw new Error(\"invalid dynamic huffman\");\n decodeBlock(lit.count, lit.symbol, dst.count, dst.symbol);\n } else {\n throw new Error(\"invalid deflate block type\");\n }\n } while (!bfinal);\n return new Uint8Array(out);\n}\n\n/**\n * Serializes a map of CID string to content bytes into the facet's `blocks`\n * object: a plain map of CID string to the most compact representation of that\n * resource's bytes (deflate + base64). Synchronous.\n *\n * @param {Map} blocks\n * @returns {Record}\n *\n * @example Round-trips a cid → bytes map\n * ```js\n * import { encodeBlocks, decodeBlocks } from \"~/common/tiles.js\";\n * import * as CID from \"@atcute/cid\";\n *\n * const bytes = new TextEncoder().encode(\"hola\");\n * const cid = await CID.create(0x55, bytes);\n *\n * const encoded = encodeBlocks(new Map([[cid.toString(), bytes]]));\n * if (typeof encoded !== \"object\" || Object.keys(encoded).length === 0) throw new Error(\"should be a non-empty map\");\n *\n * const decoded = decodeBlocks(encoded);\n * const out = decoded.get(cid.toString());\n * if (!out) throw new Error(\"should recover the block by its cid\");\n * if (new TextDecoder().decode(out) !== \"hola\") throw new Error(\"should recover the content\");\n * ```\n */\nexport function encodeBlocks(blocks) {\n /** @type {Record} */\n const out = {};\n for (const [cid, bytes] of blocks) out[cid] = encodeBase64(deflateSync(bytes));\n return out;\n}\n\n/**\n * Deserializes a facet's `blocks` object (produced by {@link encodeBlocks})\n * back into a map of CID string to content bytes. Synchronous.\n *\n * @param {Record | undefined} blocks\n * @returns {Map}\n *\n * @example Returns an empty map for an undefined / empty object\n * ```js\n * import { decodeBlocks } from \"~/common/tiles.js\";\n *\n * const blocks = decodeBlocks(undefined);\n * if (blocks.size !== 0) throw new Error(\"empty blocks should decode to an empty map\");\n * ```\n */\nexport function decodeBlocks(blocks) {\n const out = new Map();\n if (!blocks) return out;\n\n for (const [cid, value] of Object.entries(blocks)) {\n out.set(cid, inflateSync(decodeBase64(String(value ?? \"\"))));\n }\n\n return out;\n}\n\n/**\n * Converts any of the ways a CID can be represented (a plain base32 string, a\n * decoded CID object, or an atproto `CidLinkWrapper`) into a base32 string.\n *\n * @param {unknown} cid\n * @returns {string | undefined}\n */\nfunction cidToString(cid) {\n if (typeof cid === \"string\") return cid;\n if (cid == null) return undefined;\n if (typeof /** @type {any} */ (cid).$link === \"string\") {\n return /** @type {any} */ (cid).$link;\n }\n if (/** @type {any} */ (cid).bytes) return CID.toString(/** @type {any} */ (cid));\n return undefined;\n}\n\n/**\n * Parses a CARv1 archive (a `.tile` file) into its MASL header and a map of\n * every block's bytes, keyed by CID string. As specified by the DASL \"Tiles in\n * CAR\" convention, the CAR header is the MASL metadata (along with the `roots`\n * and `version` fields CAR requires).\n *\n * @param {Uint8Array} bytes\n * @returns {{ manifest: Record; blocks: Map }}\n */\nexport function parseCar(bytes) {\n const car = fromUint8Array(bytes);\n const blocks = new Map();\n\n for (const block of car) {\n const key = cidToString(block.cid);\n if (key) blocks.set(key, block.bytes);\n }\n\n return { manifest: car.header.data, blocks };\n}\n\n/**\n * Resolves a tile's root (`/`) resource to its decoded HTML, given a MASL\n * `resources` map and a map of blocks. Integrity of the root is content\n * addressed: the resource's `src` CID identifies the exact bytes, so the root\n * HTML can be verified against it later.\n *\n * @param {TileResources | undefined} resources\n * @param {Map} blocks\n * @returns {{ cid: string; html: string; contentType: string | undefined } | undefined}\n *\n * @example Resolves the root resource by its src cid\n * ```js\n * import { resolveRoot } from \"~/common/tiles.js\";\n * import * as CID from \"@atcute/cid\";\n *\n * const data = new TextEncoder().encode(\"

hi

\");\n * const cid = await CID.create(0x55, data);\n *\n * const root = resolveRoot(\n * { \"/\": { src: { $link: cid.toString() }, \"content-type\": \"text/html\" } },\n * new Map([[cid.toString(), data]]),\n * );\n *\n * if (root === undefined) throw new Error(\"should resolve the root\");\n * if (root.html !== \"

hi

\") throw new Error(\"root should be the index html\");\n * if (root.cid !== cid.toString()) throw new Error(\"should expose the root cid\");\n * if (root.contentType !== \"text/html\") throw new Error(\"should expose the content-type\");\n * ```\n */\nexport function resolveRoot(resources, blocks) {\n const resource = resources?.[\"/\"];\n if (!resource) return undefined;\n\n const cid = cidToString(resource.src);\n if (!cid) return undefined;\n\n const bytes = blocks.get(cid);\n if (!bytes) return undefined;\n\n return {\n cid,\n html: textDecoder.decode(bytes),\n contentType: resource[\"content-type\"],\n };\n}\n\n/**\n * Collects a tile's absolute-path resources (paths starting with `/`) from its\n * `resources` map and blocks, returning a map of path to decoded content.\n * Relative paths are intentionally excluded: they keep their built-in meaning\n * against the Diffuse build root (via the page `` element) so facets may\n * still reference shared Diffuse assets.\n *\n * @param {TileResources | undefined} resources\n * @param {Map} blocks\n * @returns {Map}\n *\n * @example Collects absolute resources and skips relative ones\n * ```js\n * import { tileResourceEntries } from \"~/common/tiles.js\";\n * import * as CID from \"@atcute/cid\";\n *\n * const css = new TextEncoder().encode(\"body { color: red }\");\n * const cssCid = await CID.create(0x55, css);\n * const html = new TextEncoder().encode(\"

hi

\");\n * const htmlCid = await CID.create(0x55, html);\n *\n * const entries = tileResourceEntries(\n * {\n * \"/\": { src: { $link: htmlCid.toString() }, \"content-type\": \"text/html\" },\n * \"/style.css\": { src: { $link: cssCid.toString() }, \"content-type\": \"text/css\" },\n * \"./local.css\": { src: { $link: cssCid.toString() } },\n * },\n * new Map([[cssCid.toString(), css], [htmlCid.toString(), html]]),\n * );\n *\n * if (!entries.has(\"/style.css\")) throw new Error(\"absolute resource should be collected\");\n * if (entries.has(\"./local.css\")) throw new Error(\"relative resource should be skipped\");\n * if (entries.get(\"/style.css\")?.contentType !== \"text/css\") throw new Error(\"should carry content-type\");\n * ```\n */\nexport function tileResourceEntries(resources, blocks) {\n /** @type {Map} */\n const out = new Map();\n if (!resources) return out;\n\n for (const [path, resource] of Object.entries(resources)) {\n if (!path.startsWith(\"/\")) continue;\n\n const cid = cidToString(resource.src);\n if (!cid) continue;\n\n const bytes = blocks.get(cid);\n if (!bytes) continue;\n\n out.set(path, {\n cid,\n bytes,\n contentType: resource[\"content-type\"],\n });\n }\n\n return out;\n}\n\n/**\n * Resolves the root HTML of an inline tile facet: the facet's own `resources`\n * map plus a `blocks` map of CID to content bytes (see {@link encodeBlocks}).\n * The facet record itself is the MASL manifest.\n *\n * @param {TileResources | undefined} resources\n * @param {Record | undefined} blocks\n * @returns {Promise<{ cid: string; html: string; contentType: string | undefined } | undefined>}\n *\n * @example Resolves HTML from an inline MASL manifest plus blocks\n * ```js\n * import { resolveInlineTile, encodeBlocks } from \"~/common/tiles.js\";\n * import * as CID from \"@atcute/cid\";\n *\n * const data = new TextEncoder().encode(\"

hello

\");\n * const cid = await CID.create(0x55, data);\n *\n * const blocks = await encodeBlocks(new Map([[cid.toString(), data]]));\n * const root = await resolveInlineTile(\n * { \"/\": { src: { $link: cid.toString() }, \"content-type\": \"text/html\" } },\n * blocks,\n * );\n *\n * if (root === undefined) throw new Error(\"should resolve the root\");\n * if (root.html !== \"

hello

\") throw new Error(\"root should decode to the html\");\n * if (root.cid !== cid.toString()) throw new Error(\"should report the root cid\");\n * if (root.contentType !== \"text/html\") throw new Error(\"should surface the content-type\");\n * ```\n */\nexport async function resolveInlineTile(resources, blocks) {\n const decoded = await decodeBlocks(blocks);\n return resolveRoot(resources, decoded);\n}\n\n/**\n * Rewrites absolute URL specifiers in ES module source (`import \"/x.js\"`,\n * `import … from \"/x.js\"`, `export … from \"/x.js\"`, `import(\"/x.js\")`) using\n * the provided resolver. Relative specifiers are left untouched, so they keep\n * their meaning against the importing module. This lets a tile's modules import\n * each other by path when served as Blob URLs (where import maps do not apply).\n *\n * @param {string} source\n * @param {(specifier: string) => string | undefined} resolve - Maps an absolute specifier to its replacement URL, or `undefined` to leave it alone.\n * @returns {string}\n *\n * @example Rewrites absolute specifiers and leaves relative ones alone\n * ```js\n * import { rewriteModuleImports } from \"~/common/tiles.js\";\n *\n * const source =\n * `import \"/a.js\";\\n` +\n * `import { x } from \"/b.js\";\\n` +\n * `export { y } from \"/c.js\";\\n` +\n * `const m = import(\"/d.js\");\\n` +\n * `import z from \"./local.js\";`;\n *\n * const out = rewriteModuleImports(source, (spec) => {\n * if (spec === \"/b.js\") return \"blob:b\";\n * if (spec === \"/c.js\") return \"blob:c\";\n * if (spec === \"/d.js\") return \"blob:d\";\n * return undefined;\n * });\n *\n * if (!out.includes(\"\\\"/a.js\\\"\" )) throw new Error(\"unknown absolute specifier should be kept\");\n * if (!out.includes(\"from \\\"blob:b\\\"\")) throw new Error(\"/b.js should be rewritten\");\n * if (!out.includes(\"from \\\"blob:c\\\"\")) throw new Error(\"/c.js should be rewritten\");\n * if (!out.includes(\"import(\\\"blob:d\\\")\")) throw new Error(\"/d.js should be rewritten\");\n * if (!out.includes(\"./local.js\")) throw new Error(\"relative specifier should be kept\");\n * ```\n */\nexport function rewriteModuleImports(source, resolve) {\n return source.replace(\n /(import\\s*\\(\\s*|from\\s+|import\\s+)([\"'`])(\\/[^\"'`\\s]+)\\2/g,\n (match, pre, quote, specifier) => {\n const url = resolve(specifier);\n return url ? `${pre}${quote}${url}${quote}` : match;\n },\n );\n}\n\n/**\n * Rewrites absolute URL specifiers in CSS `@import` statements (`@import\n * \"/x.css\";`, `@import url(\"/x.css\");`, or an unquoted `url(...)`) to the\n * resolved URL. Relative/other `url()` references are left untouched. This lets\n * a tile's stylesheets import each other by path when served as Blob URLs.\n *\n * @param {string} source\n * @param {(specifier: string) => string | undefined} resolve - Maps an absolute specifier to its replacement URL, or `undefined` to leave it alone.\n * @returns {string}\n *\n * @example Rewrites absolute CSS imports and leaves relative ones alone\n * ```js\n * import { rewriteCssImports } from \"~/common/tiles.js\";\n *\n * const imp = \"@\" + \"import\";\n * const source =\n * imp + ' \"/base.css\";\\n' +\n * imp + ' url(\"/theme.css\");\\n' +\n * imp + \" url(/vars.css);\\n\" +\n * imp + ' \"./local.css\";\\n' +\n * 'background: url(\"/img.png\");';\n *\n * const out = rewriteCssImports(source, (spec) =>\n * [\"/base.css\", \"/theme.css\", \"/vars.css\"].includes(spec) ? `blob:${spec}` : undefined,\n * );\n *\n * if (!out.includes(\"\\\"blob:/base.css\\\"\")) throw new Error(\"/base.css should be rewritten\");\n * if (!out.includes(\"url(\\\"blob:/theme.css\\\")\")) throw new Error(\"/theme.css in url() should be rewritten\");\n * if (!out.includes(\"url(blob:/vars.css)\")) throw new Error(\"/vars.css unquoted url() should be rewritten\");\n * if (!out.includes(\"./local.css\")) throw new Error(\"relative import should be kept\");\n * if (!out.includes(\"url(\\\"/img.png\\\")\")) throw new Error(\"non-import url() should be kept\");\n * ```\n */\nexport function rewriteCssImports(source, resolve) {\n return source.replace(\n /(@import\\s+(?:url\\(\\s*)?)([\"']?)(\\/[^\"'()\\s]+)\\2/g,\n (match, pre, quote, specifier) => {\n const url = resolve(specifier);\n return url ? `${pre}${quote}${url}${quote}` : match;\n },\n );\n}\n\n/**\n * Builds an inline tile facet's `resources` + `blocks` from a single piece of\n * HTML content, so the facet's index document is content addressed. The root\n * resource's CID is the CID of the raw HTML bytes.\n *\n * @param {string} html\n * @returns {{ resources: TileResources; blocks: Record }}\n *\n * @example Produces a resources/blocks pair that resolve to the input html\n * ```js\n * import { htmlFacetTile, resolveInlineTile } from \"~/common/tiles.js\";\n *\n * const html = \"

tile

\";\n * const tile = await htmlFacetTile(html);\n * const root = await resolveInlineTile(tile.resources, tile.blocks);\n * if (root?.html !== html) throw new Error(\"tile should resolve back to the html\");\n * ```\n */\nexport function htmlFacetTile(html) {\n const bytes = new TextEncoder().encode(html);\n const cid = createSyncCID(0x55, bytes);\n\n return {\n resources: {\n \"/\": {\n src: { $link: cid },\n \"content-type\": \"text/html\",\n },\n },\n blocks: encodeBlocks(new Map([[cid, bytes]])),\n };\n}\n\n/**\n * Maps a file path to a MIME content-type based on its extension.\n *\n * @param {string} path\n * @returns {string}\n *\n * @example Detects content types by extension\n * ```js\n * import { contentTypeForPath } from \"~/common/tiles.js\";\n *\n * if (contentTypeForPath(\"/\") !== \"text/html\") throw new Error(\"index should be html\");\n * if (contentTypeForPath(\"/style.css\") !== \"text/css\") throw new Error(\"css should be detected\");\n * if (contentTypeForPath(\"/app.mjs\") !== \"text/javascript\") throw new Error(\"mjs should be detected\");\n * ```\n */\nexport function contentTypeForPath(path) {\n if (path === \"/\" || /\\.html?$/i.test(path)) return \"text/html\";\n if (/\\.css$/i.test(path)) return \"text/css\";\n if (/\\.m?js$/i.test(path)) return \"text/javascript\";\n if (/\\.json$/i.test(path)) return \"application/json\";\n if (/\\.svg$/i.test(path)) return \"image/svg+xml\";\n return \"text/plain\";\n}\n\n/**\n * Builds a tile facet's `resources` + `blocks` from a map of absolute path to\n * file content (used by the multi-file facet editor). Each file becomes a\n * content-addressed resource. `htmlFacetTile` is the single-file special case.\n *\n * @param {Record} files - A map of absolute path (e.g. `/style.css`) to UTF-8 content.\n * @returns {{ resources: TileResources; blocks: Record }}\n *\n * @example Builds a multi-file tile that resolves each file\n * ```js\n * import { tileFromFiles, tileResourceEntries, decodeBlocks } from \"~/common/tiles.js\";\n *\n * const tile = tileFromFiles({ \"/\": \"\", \"/style.css\": \"body { color: red }\" });\n * if (!tile.resources[\"/style.css\"] || tile.resources[\"/style.css\"][\"content-type\"] !== \"text/css\") throw new Error(\"css resource should be present\");\n * const blocks = await decodeBlocks(tile.blocks);\n * const entries = tileResourceEntries(tile.resources, blocks);\n * if (new TextDecoder().decode(entries.get(\"/\")?.bytes) !== \"\" ) throw new Error(\"index should round-trip\");\n * ```\n */\nexport function tileFromFiles(files) {\n /** @type {TileResources} */\n const resources = {};\n /** @type {Map} */\n const blockMap = new Map();\n\n for (const [path, content] of Object.entries(files)) {\n if (!path.startsWith(\"/\")) continue;\n const bytes = new TextEncoder().encode(content);\n const cid = createSyncCID(0x55, bytes);\n resources[path] = {\n src: { $link: cid },\n \"content-type\": contentTypeForPath(path),\n };\n blockMap.set(cid, bytes);\n }\n\n return { resources, blocks: encodeBlocks(blockMap) };\n}\n\n/**\n * Upgrade a stored facet's `uri` from an old `.html` bundle path to the new\n * `.tile` path. Before the tile schema the bundled facets were pointed at loose\n * `index.html` files (`diffuse://facets/…/index.html`); the build now packages\n * each facet into an `index.tile` CAR at the same directory, so a stale `.html`\n * `uri` no longer resolves. This rewrites the `diffuse://` scheme's trailing\n * `index.html` to `index.tile`. Only the Diffuse bundle's own facets moved to\n * `.tile`, so external (`http(s)://`, `at://`) and other `.html` URIs are left\n * untouched.\n *\n * @param {Record} record\n * @returns {Record}\n *\n * @example Rewrites a stale bundle html path to its tile\n * ```js\n * import { rewriteLegacyURIPath } from \"~/common/tiles.js\";\n *\n * const upgraded = rewriteLegacyURIPath({ id: \"f\", name: \"x\", uri: \"diffuse://facets/data/file-manager/index.html\" });\n * if (upgraded.uri !== \"diffuse://facets/data/file-manager/index.tile\") throw new Error(\"expected the tile uri\");\n * const untouched = rewriteLegacyURIPath({ id: \"g\", name: \"y\", uri: \"https://example.com/facet.html\" });\n * if (untouched.uri !== \"https://example.com/facet.html\") throw new Error(\"external uris should be left alone\");\n * ```\n */\nexport function rewriteLegacyURIPath(record) {\n const uri = record.uri;\n if (typeof uri !== \"string\") return record;\n\n const upgraded = uri.replace(\n /^diffuse:\\/\\/(.+)\\/index\\.html$/i,\n \"diffuse://$1/index.tile\",\n );\n return upgraded === uri ? record : { ...record, uri: upgraded };\n}\n\n/**\n * Lifts a legacy facet record to the current tile shape. In addition to\n * rewriting any stale `.html` bundle `uri` (see {@link rewriteLegacyURIPath}), a\n * record that carries a raw `html` string (and possibly a `cid`) is lifted into\n * a tile facet: the `html` becomes the `/` resource, with its bytes stored in\n * `blocks`, and the old `html`/`cid` fields are dropped. Already-tile records\n * (`resources` present) are left unchanged apart from any uri rewrite. This is\n * the one-shot migration for facets stored before the tile schema. Synchronous\n * because {@link htmlFacetTile} no longer needs async compression.\n *\n * @param {Record} record\n * @returns {Record & { resources?: TileResources; blocks?: Record }}\n *\n * @example Lifts a legacy html facet into a tile\n * ```js\n * import { migrateLegacyFacet, resolveInlineTile } from \"~/common/tiles.js\";\n *\n * const lifted = migrateLegacyFacet({ id: \"f\", name: \"x\", html: \"

hi

\", cid: \"old\" });\n * if (\"html\" in lifted) throw new Error(\"html should be removed\");\n * if (\"cid\" in lifted) throw new Error(\"cid should be removed\");\n * const root = await resolveInlineTile(lifted.resources, lifted.blocks);\n * if (root?.html !== \"

hi

\") throw new Error(\"lifted content should resolve\");\n * ```\n *\n * @example Rewrites a stale uri even for already-tile facets\n * ```js\n * import { migrateLegacyFacet } from \"~/common/tiles.js\";\n *\n * const upgraded = migrateLegacyFacet({ id: \"f\", name: \"x\", uri: \"diffuse://facets/data/sources/index.html\", resources: { \"/\": {} }, blocks: {} });\n * if (upgraded.uri !== \"diffuse://facets/data/sources/index.tile\") throw new Error(\"stale uri should be upgraded\");\n * ```\n */\nexport function migrateLegacyFacet(record) {\n const upgraded = rewriteLegacyURIPath(record);\n const html = upgraded.html;\n if (typeof html !== \"string\" || upgraded.resources) return upgraded;\n\n const { html: _html, cid: _cid, ...rest } = upgraded;\n const tile = htmlFacetTile(html);\n return { ...rest, resources: tile.resources, blocks: tile.blocks };\n}\n"],"mappings":"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","names":["MAX_SAFE_INTEGER","_min","decode","__name","buf","offset","length","end","_min","counter","b","res","shift","MAX_SAFE_INTEGER","isCarV1Header","__name","value","version","roots","root","CidLinkWrapper","fromUint8Array","__name","buffer","header","headerOffset","readHeader","pos","entryStart","entryLength","lengthOffset","decode","cidStart","cid","cidOffset","readCid","bytesStart","bytesSize","bytesEnd","bytes","source","offset","headerStart","length","dataStart","dataEnd","data","isCarV1Header","cidEnd","version","codec","digestType","digestSize","CID_VERSION","CODEC_DCBOR","CODEC_RAW","HASH_SHA256","SHA256_K","SHA256_W","SHA2_32B","HashMD","__name","outputLen","IV","A","B","C","D","E","F","G","H","to","view","offset","i","W15","W2","s0","rotr","s1","sigma1","T1","Chi","T2","Maj","clean","_SHA256","SHA256_IV","sha256","createHasher","_SHA256","oidNist","textDecoder","createSyncCID","code","data","digest","sha256","toString","fromDigest","__name","decodeBase64","text","binary","bytes","i","encodeBase64","LENGTH_EXTRA","LENGTH_BASE","DIST_BASE","DIST_EXTRA","FIXED_LIT_LENS","lens","canonicalCodes","max","m","l","count","next","bits","out","n","FIXED_LIT_CODES","FIXED_DIST_CODES","constructHuffman","left","len","symbol","offs","off","sym","FIXED_LIT_DECODE","FIXED_DIST_DECODE","deflateSync","buf","nbits","put","v","putCode","k","chain","back","h","bestLen","bestDist","maxLen","cand","steps","lc","dc","inflateSync","pos","bitVal","bitLen","r","decode","symbolTable","first","index","cnt","decodeBlock","ls","ds","li","di","dist","bfinal","btype","hlit","hdist","hclen","order","clens","c","idx","s","rep","lit","dst","encodeBlocks","blocks","cid","decodeBlocks","value","cidToString","parseCar","car","fromUint8Array","block","key","resolveRoot","resources","resource","tileResourceEntries","path","resolveInlineTile","decoded","rewriteModuleImports","source","resolve","match","pre","quote","specifier","url","rewriteCssImports","htmlFacetTile","html","contentTypeForPath","tileFromFiles","files","blockMap","content","rewriteLegacyURIPath","record","uri","upgraded","migrateLegacyFacet","_html","_cid","rest","tile"],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse","file":"/chunk-34YH6DD7.js.map"} \ No newline at end of file +{"version":3,"sources":["/node_modules/.deno/@atcute+varint@2.0.2/node_modules/@atcute/varint/dist/index.js","/node_modules/.deno/@atcute+car@6.0.2/node_modules/@atcute/car/dist/types.js","/node_modules/.deno/@atcute+car@6.0.2/node_modules/@atcute/car/dist/reader.js","/node_modules/.deno/@noble+hashes@2.4.0/node_modules/@noble/hashes/sha2.js","/common/tiles.js"],"sourcesContent":["const MSB = 0x80;\nconst REST = 0x7f;\nconst MSBALL = ~REST;\nconst INT = 2 ** 31;\nconst N1 = 2 ** 7;\nconst N2 = 2 ** 14;\nconst N3 = 2 ** 21;\nconst N4 = 2 ** 28;\nconst N5 = 2 ** 35;\nconst N6 = 2 ** 42;\nconst N7 = 2 ** 49;\nconst N8 = 2 ** 56;\nconst N9 = 2 ** 63;\nconst MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER;\nconst _min = Math.min;\n/**\n * encodes a varint\n *\n * @param num Number to encode\n * @param buf Buffer to write on\n * @param offset Starting position on the buffer\n * @returns The amount of bytes written\n */\nexport const encode = (num, buf, offset = 0) => {\n if (!Number.isSafeInteger(num) || num < 0) {\n throw new RangeError('could not encode varint');\n }\n const start = offset;\n if (num < N1) {\n buf[offset] = num;\n return 1;\n }\n if (num < N2) {\n buf[offset] = (num & REST) | MSB;\n buf[offset + 1] = num >>> 7;\n return 2;\n }\n if (num < N3) {\n buf[offset] = (num & REST) | MSB;\n buf[offset + 1] = ((num >>> 7) & REST) | MSB;\n buf[offset + 2] = num >>> 14;\n return 3;\n }\n if (num < N4) {\n buf[offset] = (num & REST) | MSB;\n buf[offset + 1] = ((num >>> 7) & REST) | MSB;\n buf[offset + 2] = ((num >>> 14) & REST) | MSB;\n buf[offset + 3] = num >>> 21;\n return 4;\n }\n if (num < INT) {\n buf[offset] = (num & REST) | MSB;\n buf[offset + 1] = ((num >>> 7) & REST) | MSB;\n buf[offset + 2] = ((num >>> 14) & REST) | MSB;\n buf[offset + 3] = ((num >>> 21) & REST) | MSB;\n buf[offset + 4] = num >>> 28;\n return 5;\n }\n while (num >= INT) {\n buf[offset++] = (num & 0xff) | MSB;\n num /= 128;\n }\n while (num & MSBALL) {\n buf[offset++] = (num & 0xff) | MSB;\n num >>>= 7;\n }\n buf[offset] = num | 0;\n return offset - start + 1;\n};\n/**\n * decodes a varint and returns the value with the next byte offset\n *\n * @param buf buffer to read from\n * @param offset starting position on the buffer\n * @param length maximum bytes to consume from offset\n * @returns decoded value and the next offset\n */\nexport const decode = (buf, offset = 0, length = buf.length) => {\n const end = _min(offset + length, buf.length);\n let counter = offset;\n if (counter >= end) {\n throw new RangeError('could not decode varint');\n }\n let b = buf[counter++];\n let res = b & REST;\n if (b < MSB) {\n return { value: res, nextOffset: counter };\n }\n if (counter >= end) {\n throw new RangeError('could not decode varint');\n }\n b = buf[counter++];\n res |= (b & REST) << 7;\n if (b < MSB) {\n return { value: res, nextOffset: counter };\n }\n if (counter >= end) {\n throw new RangeError('could not decode varint');\n }\n b = buf[counter++];\n res |= (b & REST) << 14;\n if (b < MSB) {\n return { value: res, nextOffset: counter };\n }\n if (counter >= end) {\n throw new RangeError('could not decode varint');\n }\n b = buf[counter++];\n res |= (b & REST) << 21;\n if (b < MSB) {\n return { value: res, nextOffset: counter };\n }\n if (counter >= end) {\n throw new RangeError('could not decode varint');\n }\n b = buf[counter++];\n res += (b & REST) * N4;\n if (b < MSB) {\n return { value: res, nextOffset: counter };\n }\n let shift = 35;\n do {\n if (counter >= end) {\n throw new RangeError('could not decode varint');\n }\n b = buf[counter++];\n res += (b & REST) * 2 ** shift;\n if (res > MAX_SAFE_INTEGER) {\n throw new RangeError('could not decode varint');\n }\n shift += 7;\n } while (b >= MSB);\n return { value: res, nextOffset: counter };\n};\n/**\n * Returns encoding length\n *\n * @param num The number to encode\n * @returns Amount of bytes needed for encoding\n */\nexport const encodingLength = (num) => {\n return num < N1\n ? 1\n : num < N2\n ? 2\n : num < N3\n ? 3\n : num < N4\n ? 4\n : num < N5\n ? 5\n : num < N6\n ? 6\n : num < N7\n ? 7\n : num < N8\n ? 8\n : num < N9\n ? 9\n : 10;\n};\n","import { CidLinkWrapper } from '@atcute/cid';\nexport const isCarV1Header = (value) => {\n if (value === null || typeof value !== 'object') {\n return false;\n }\n const { version, roots } = value;\n return version === 1 && Array.isArray(roots) && roots.every((root) => root instanceof CidLinkWrapper);\n};\n","import * as CBOR from '@atcute/cbor';\nimport * as CID from '@atcute/cid';\nimport * as varint from '@atcute/varint';\nimport { isCarV1Header } from './types.js';\nexport const fromUint8Array = (buffer) => {\n const { header, nextOffset: headerOffset } = readHeader(buffer, 0);\n return {\n header,\n roots: header.data.roots,\n [Symbol.iterator]() {\n let pos = headerOffset;\n return {\n next() {\n if (pos >= buffer.length) {\n return {\n done: true,\n value: undefined,\n };\n }\n const entryStart = pos;\n const { value: entryLength, nextOffset: lengthOffset } = varint.decode(buffer, pos, 8);\n pos = lengthOffset;\n if (entryLength < 36) {\n throw new RangeError(`invalid car block; length=${entryLength}`);\n }\n const cidStart = pos;\n const { cid, nextOffset: cidOffset } = readCid(buffer, pos);\n pos = cidOffset;\n const bytesStart = pos;\n const bytesSize = entryLength - 36;\n if (bytesStart + bytesSize > buffer.length) {\n throw new RangeError('unexpected end of data');\n }\n const bytesEnd = bytesStart + bytesSize;\n const bytes = buffer.subarray(bytesStart, bytesEnd);\n pos = bytesEnd;\n const cidEnd = bytesStart;\n const entryEnd = bytesEnd;\n return {\n done: false,\n value: {\n cid,\n bytes,\n entryStart,\n entryEnd,\n cidStart,\n cidEnd,\n bytesStart,\n bytesEnd,\n },\n };\n },\n [Symbol.iterator]() {\n return this;\n },\n };\n },\n };\n};\nconst readHeader = (source, offset) => {\n const headerStart = offset;\n const { value: length, nextOffset: lengthOffset } = varint.decode(source, offset, 8);\n if (length === 0) {\n throw new RangeError(`invalid car header; length=0`);\n }\n const dataStart = lengthOffset;\n const dataEnd = dataStart + length;\n if (dataEnd > source.length) {\n throw new RangeError('unexpected end of data');\n }\n const data = CBOR.decode(source.subarray(dataStart, dataEnd));\n if (!isCarV1Header(data)) {\n throw new TypeError(`expected a car v1 archive`);\n }\n const headerEnd = dataEnd;\n return {\n header: { data, headerStart, headerEnd, dataStart, dataEnd },\n nextOffset: dataEnd,\n };\n};\nconst readCid = (source, offset) => {\n const cidEnd = offset + 36;\n if (cidEnd > source.length) {\n throw new RangeError('unexpected end of data');\n }\n const bytes = source.subarray(offset, cidEnd);\n const version = bytes[0];\n const codec = bytes[1];\n const digestType = bytes[2];\n const digestSize = bytes[3];\n if (version !== CID.CID_VERSION) {\n throw new RangeError(`incorrect cid version (got v${version})`);\n }\n if (codec !== CID.CODEC_DCBOR && codec !== CID.CODEC_RAW) {\n throw new RangeError(`incorrect cid codec (got 0x${codec.toString(16)})`);\n }\n if (digestType !== CID.HASH_SHA256) {\n throw new RangeError(`incorrect cid digest type (got 0x${digestType.toString(16)})`);\n }\n if (digestSize !== 32) {\n throw new RangeError(`incorrect cid digest size (got ${digestSize})`);\n }\n return {\n cid: {\n version: version,\n codec: codec,\n digest: {\n codec: digestType,\n contents: bytes.subarray(4, 36),\n },\n bytes: bytes,\n },\n nextOffset: cidEnd,\n };\n};\n","/**\n * SHA2 hash function. A.k.a. sha256, sha384, sha512, sha512_224, sha512_256.\n * SHA256 is the fastest hash implementable in JS, even faster than Blake3.\n * Check out {@link https://www.rfc-editor.org/rfc/rfc4634 | RFC 4634} and\n * {@link https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf | FIPS 180-4}.\n * @module\n */\nimport { Chi, HashMD, Maj, SHA224_IV, SHA256_IV, SHA384_IV, SHA512_IV } from \"./_md.js\";\nimport * as u64 from \"./_u64.js\";\nimport { clean, createHasher, oidNist, rotr } from \"./utils.js\";\n/**\n * SHA-224 / SHA-256 round constants from RFC 6234 §5.1: the first 32 bits\n * of the cube roots of the first 64 primes (2..311).\n */\n// prettier-ignore\nconst SHA256_K = /* @__PURE__ */ Uint32Array.from([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n]);\n/** Reusable SHA-224 / SHA-256 message schedule buffer `W_t` from RFC 6234 §6.2 step 1. */\nconst SHA256_W = /* @__PURE__ */ new Uint32Array(64);\n/** Internal SHA-224 / SHA-256 compression engine from RFC 6234 §6.2. */\nclass SHA2_32B extends HashMD {\n // We cannot use array here since array allows indexing by variable\n // which means optimizer/compiler cannot use registers.\n // Numeric initializers matter: starting the fields as `undefined` changes\n // V8's field representation and makes sha256 3x slower (measured).\n A = 0;\n B = 0;\n C = 0;\n D = 0;\n E = 0;\n F = 0;\n G = 0;\n H = 0;\n constructor(outputLen, IV) {\n super(64, outputLen, 8, false);\n this.A = IV[0] | 0;\n this.B = IV[1] | 0;\n this.C = IV[2] | 0;\n this.D = IV[3] | 0;\n this.E = IV[4] | 0;\n this.F = IV[5] | 0;\n this.G = IV[6] | 0;\n this.H = IV[7] | 0;\n }\n get() {\n const { A, B, C, D, E, F, G, H } = this;\n return [A, B, C, D, E, F, G, H];\n }\n // prettier-ignore\n set(A, B, C, D, E, F, G, H) {\n this.A = A | 0;\n this.B = B | 0;\n this.C = C | 0;\n this.D = D | 0;\n this.E = E | 0;\n this.F = F | 0;\n this.G = G | 0;\n this.H = H | 0;\n }\n _cloneInto(to) {\n (to ||= new this.constructor()).set(...this.get());\n return this._cloneIntoMeta(to);\n }\n process(view, offset) {\n // Extend the first 16 words into the remaining 48 words w[16..63] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4)\n SHA256_W[i] = view.getUint32(offset, false);\n for (let i = 16; i < 64; i++) {\n const W15 = SHA256_W[i - 15];\n const W2 = SHA256_W[i - 2];\n const s0 = rotr(W15, 7) ^ rotr(W15, 18) ^ (W15 >>> 3);\n const s1 = rotr(W2, 17) ^ rotr(W2, 19) ^ (W2 >>> 10);\n SHA256_W[i] = (s1 + SHA256_W[i - 7] + s0 + SHA256_W[i - 16]) | 0;\n }\n // Compression function main loop, 64 rounds\n let { A, B, C, D, E, F, G, H } = this;\n for (let i = 0; i < 64; i++) {\n const sigma1 = rotr(E, 6) ^ rotr(E, 11) ^ rotr(E, 25);\n const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const sigma0 = rotr(A, 2) ^ rotr(A, 13) ^ rotr(A, 22);\n const T2 = (sigma0 + Maj(A, B, C)) | 0;\n H = G;\n G = F;\n F = E;\n E = (D + T1) | 0;\n D = C;\n C = B;\n B = A;\n A = (T1 + T2) | 0;\n }\n // Add the compressed chunk to the current hash value\n A = (A + this.A) | 0;\n B = (B + this.B) | 0;\n C = (C + this.C) | 0;\n D = (D + this.D) | 0;\n E = (E + this.E) | 0;\n F = (F + this.F) | 0;\n G = (G + this.G) | 0;\n H = (H + this.H) | 0;\n this.set(A, B, C, D, E, F, G, H);\n }\n roundClean() {\n clean(SHA256_W);\n }\n destroy() {\n // HashMD callers route post-destroy usability through `destroyed`; zeroizing alone still leaves\n // update()/digest() callable on reused instances.\n this.destroyed = true;\n this.set(0, 0, 0, 0, 0, 0, 0, 0);\n clean(this.buffer);\n }\n}\n/** Internal SHA-256 hash class grounded in RFC 6234 §6.2. */\nexport class _SHA256 extends SHA2_32B {\n constructor() {\n super(32, SHA256_IV);\n }\n}\n/** Internal SHA-224 hash class grounded in RFC 6234 §6.2 and §8.5. */\nexport class _SHA224 extends SHA2_32B {\n constructor() {\n super(28, SHA224_IV);\n }\n}\n// SHA2-512 is slower than sha256 in js because u64 operations are slow.\n// SHA-384 / SHA-512 round constants from RFC 6234 §5.2:\n// 80 full 64-bit words split into high/low halves.\n// prettier-ignore\nconst K512 = /* @__PURE__ */ (() => u64.split([\n '0x428a2f98d728ae22', '0x7137449123ef65cd', '0xb5c0fbcfec4d3b2f', '0xe9b5dba58189dbbc',\n '0x3956c25bf348b538', '0x59f111f1b605d019', '0x923f82a4af194f9b', '0xab1c5ed5da6d8118',\n '0xd807aa98a3030242', '0x12835b0145706fbe', '0x243185be4ee4b28c', '0x550c7dc3d5ffb4e2',\n '0x72be5d74f27b896f', '0x80deb1fe3b1696b1', '0x9bdc06a725c71235', '0xc19bf174cf692694',\n '0xe49b69c19ef14ad2', '0xefbe4786384f25e3', '0x0fc19dc68b8cd5b5', '0x240ca1cc77ac9c65',\n '0x2de92c6f592b0275', '0x4a7484aa6ea6e483', '0x5cb0a9dcbd41fbd4', '0x76f988da831153b5',\n '0x983e5152ee66dfab', '0xa831c66d2db43210', '0xb00327c898fb213f', '0xbf597fc7beef0ee4',\n '0xc6e00bf33da88fc2', '0xd5a79147930aa725', '0x06ca6351e003826f', '0x142929670a0e6e70',\n '0x27b70a8546d22ffc', '0x2e1b21385c26c926', '0x4d2c6dfc5ac42aed', '0x53380d139d95b3df',\n '0x650a73548baf63de', '0x766a0abb3c77b2a8', '0x81c2c92e47edaee6', '0x92722c851482353b',\n '0xa2bfe8a14cf10364', '0xa81a664bbc423001', '0xc24b8b70d0f89791', '0xc76c51a30654be30',\n '0xd192e819d6ef5218', '0xd69906245565a910', '0xf40e35855771202a', '0x106aa07032bbd1b8',\n '0x19a4c116b8d2d0c8', '0x1e376c085141ab53', '0x2748774cdf8eeb99', '0x34b0bcb5e19b48a8',\n '0x391c0cb3c5c95a63', '0x4ed8aa4ae3418acb', '0x5b9cca4f7763e373', '0x682e6ff3d6b2b8a3',\n '0x748f82ee5defb2fc', '0x78a5636f43172f60', '0x84c87814a1f0ab72', '0x8cc702081a6439ec',\n '0x90befffa23631e28', '0xa4506cebde82bde9', '0xbef9a3f7b2c67915', '0xc67178f2e372532b',\n '0xca273eceea26619c', '0xd186b8c721c0c207', '0xeada7dd6cde0eb1e', '0xf57d4f7fee6ed178',\n '0x06f067aa72176fba', '0x0a637dc5a2c898a6', '0x113f9804bef90dae', '0x1b710b35131c471b',\n '0x28db77f523047d84', '0x32caab7b40c72493', '0x3c9ebe0a15c9bebc', '0x431d67c49c100d4c',\n '0x4cc5d4becb3e42b6', '0x597f299cfc657e2a', '0x5fcb6fab3ad6faec', '0x6c44198c4a475817'\n].map(n => BigInt(n))))();\nconst SHA512_Kh = /* @__PURE__ */ (() => K512[0])();\nconst SHA512_Kl = /* @__PURE__ */ (() => K512[1])();\n// Reusable high-half schedule buffer for the RFC 6234 §6.4 64-bit `W_t` words.\nconst SHA512_W_H = /* @__PURE__ */ new Uint32Array(80);\n// Reusable low-half schedule buffer for the RFC 6234 §6.4 64-bit `W_t` words.\nconst SHA512_W_L = /* @__PURE__ */ new Uint32Array(80);\n/** Internal SHA-384 / SHA-512 compression engine from RFC 6234 §6.4. */\nclass SHA2_64B extends HashMD {\n // We cannot use array here since array allows indexing by variable\n // which means optimizer/compiler cannot use registers.\n // h -- high 32 bits, l -- low 32 bits\n // Numeric initializers matter: starting the fields as `undefined` changes\n // V8's field representation and slows hashing down (measured on sha256).\n Ah = 0;\n Al = 0;\n Bh = 0;\n Bl = 0;\n Ch = 0;\n Cl = 0;\n Dh = 0;\n Dl = 0;\n Eh = 0;\n El = 0;\n Fh = 0;\n Fl = 0;\n Gh = 0;\n Gl = 0;\n Hh = 0;\n Hl = 0;\n constructor(outputLen, IV) {\n super(128, outputLen, 16, false);\n this.Ah = IV[0] | 0;\n this.Al = IV[1] | 0;\n this.Bh = IV[2] | 0;\n this.Bl = IV[3] | 0;\n this.Ch = IV[4] | 0;\n this.Cl = IV[5] | 0;\n this.Dh = IV[6] | 0;\n this.Dl = IV[7] | 0;\n this.Eh = IV[8] | 0;\n this.El = IV[9] | 0;\n this.Fh = IV[10] | 0;\n this.Fl = IV[11] | 0;\n this.Gh = IV[12] | 0;\n this.Gl = IV[13] | 0;\n this.Hh = IV[14] | 0;\n this.Hl = IV[15] | 0;\n }\n // prettier-ignore\n get() {\n const { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n return [Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl];\n }\n // prettier-ignore\n set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl) {\n this.Ah = Ah | 0;\n this.Al = Al | 0;\n this.Bh = Bh | 0;\n this.Bl = Bl | 0;\n this.Ch = Ch | 0;\n this.Cl = Cl | 0;\n this.Dh = Dh | 0;\n this.Dl = Dl | 0;\n this.Eh = Eh | 0;\n this.El = El | 0;\n this.Fh = Fh | 0;\n this.Fl = Fl | 0;\n this.Gh = Gh | 0;\n this.Gl = Gl | 0;\n this.Hh = Hh | 0;\n this.Hl = Hl | 0;\n }\n _cloneInto(to) {\n (to ||= new this.constructor()).set(...this.get());\n return this._cloneIntoMeta(to);\n }\n process(view, offset) {\n // Extend the first 16 words into the remaining 64 words w[16..79] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4) {\n SHA512_W_H[i] = view.getUint32(offset);\n SHA512_W_L[i] = view.getUint32((offset += 4));\n }\n for (let i = 16; i < 80; i++) {\n // s0 := (w[i-15] rightrotate 1) xor (w[i-15] rightrotate 8) xor (w[i-15] rightshift 7)\n const W15h = SHA512_W_H[i - 15] | 0;\n const W15l = SHA512_W_L[i - 15] | 0;\n const s0h = u64.rotrSH(W15h, W15l, 1) ^ u64.rotrSH(W15h, W15l, 8) ^ u64.shrSH(W15h, W15l, 7);\n const s0l = u64.rotrSL(W15h, W15l, 1) ^ u64.rotrSL(W15h, W15l, 8) ^ u64.shrSL(W15h, W15l, 7);\n // s1 := (w[i-2] rightrotate 19) xor (w[i-2] rightrotate 61) xor (w[i-2] rightshift 6)\n const W2h = SHA512_W_H[i - 2] | 0;\n const W2l = SHA512_W_L[i - 2] | 0;\n const s1h = u64.rotrSH(W2h, W2l, 19) ^ u64.rotrBH(W2h, W2l, 61) ^ u64.shrSH(W2h, W2l, 6);\n const s1l = u64.rotrSL(W2h, W2l, 19) ^ u64.rotrBL(W2h, W2l, 61) ^ u64.shrSL(W2h, W2l, 6);\n // SHA512_W[i] = s0 + s1 + SHA512_W[i - 7] + SHA512_W[i - 16];\n const SUMl = u64.add4L(s0l, s1l, SHA512_W_L[i - 7], SHA512_W_L[i - 16]);\n const SUMh = u64.add4H(SUMl, s0h, s1h, SHA512_W_H[i - 7], SHA512_W_H[i - 16]);\n SHA512_W_H[i] = SUMh | 0;\n SHA512_W_L[i] = SUMl | 0;\n }\n let { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n // Compression function main loop, 80 rounds\n for (let i = 0; i < 80; i++) {\n // S1 := (e rightrotate 14) xor (e rightrotate 18) xor (e rightrotate 41)\n const sigma1h = u64.rotrSH(Eh, El, 14) ^ u64.rotrSH(Eh, El, 18) ^ u64.rotrBH(Eh, El, 41);\n const sigma1l = u64.rotrSL(Eh, El, 14) ^ u64.rotrSL(Eh, El, 18) ^ u64.rotrBL(Eh, El, 41);\n //const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const CHIh = (Eh & Fh) ^ (~Eh & Gh);\n const CHIl = (El & Fl) ^ (~El & Gl);\n // T1 = H + sigma1 + Chi(E, F, G) + SHA512_K[i] + SHA512_W[i]\n // prettier-ignore\n const T1ll = u64.add5L(Hl, sigma1l, CHIl, SHA512_Kl[i], SHA512_W_L[i]);\n const T1h = u64.add5H(T1ll, Hh, sigma1h, CHIh, SHA512_Kh[i], SHA512_W_H[i]);\n const T1l = T1ll | 0;\n // S0 := (a rightrotate 28) xor (a rightrotate 34) xor (a rightrotate 39)\n const sigma0h = u64.rotrSH(Ah, Al, 28) ^ u64.rotrBH(Ah, Al, 34) ^ u64.rotrBH(Ah, Al, 39);\n const sigma0l = u64.rotrSL(Ah, Al, 28) ^ u64.rotrBL(Ah, Al, 34) ^ u64.rotrBL(Ah, Al, 39);\n const MAJh = (Ah & Bh) ^ (Ah & Ch) ^ (Bh & Ch);\n const MAJl = (Al & Bl) ^ (Al & Cl) ^ (Bl & Cl);\n Hh = Gh | 0;\n Hl = Gl | 0;\n Gh = Fh | 0;\n Gl = Fl | 0;\n Fh = Eh | 0;\n Fl = El | 0;\n ({ h: Eh, l: El } = u64.add(Dh | 0, Dl | 0, T1h | 0, T1l | 0));\n Dh = Ch | 0;\n Dl = Cl | 0;\n Ch = Bh | 0;\n Cl = Bl | 0;\n Bh = Ah | 0;\n Bl = Al | 0;\n const All = u64.add3L(T1l, sigma0l, MAJl);\n Ah = u64.add3H(All, T1h, sigma0h, MAJh);\n Al = All | 0;\n }\n // Add the compressed chunk to the current hash value\n ({ h: Ah, l: Al } = u64.add(this.Ah | 0, this.Al | 0, Ah | 0, Al | 0));\n ({ h: Bh, l: Bl } = u64.add(this.Bh | 0, this.Bl | 0, Bh | 0, Bl | 0));\n ({ h: Ch, l: Cl } = u64.add(this.Ch | 0, this.Cl | 0, Ch | 0, Cl | 0));\n ({ h: Dh, l: Dl } = u64.add(this.Dh | 0, this.Dl | 0, Dh | 0, Dl | 0));\n ({ h: Eh, l: El } = u64.add(this.Eh | 0, this.El | 0, Eh | 0, El | 0));\n ({ h: Fh, l: Fl } = u64.add(this.Fh | 0, this.Fl | 0, Fh | 0, Fl | 0));\n ({ h: Gh, l: Gl } = u64.add(this.Gh | 0, this.Gl | 0, Gh | 0, Gl | 0));\n ({ h: Hh, l: Hl } = u64.add(this.Hh | 0, this.Hl | 0, Hh | 0, Hl | 0));\n this.set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl);\n }\n roundClean() {\n clean(SHA512_W_H, SHA512_W_L);\n }\n destroy() {\n // HashMD callers route post-destroy usability through `destroyed`; zeroizing alone still leaves\n // update()/digest() callable on reused instances.\n this.destroyed = true;\n clean(this.buffer);\n this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\n }\n}\n/** Internal SHA-512 hash class grounded in RFC 6234 §6.3 and §6.4. */\nexport class _SHA512 extends SHA2_64B {\n constructor() {\n super(64, SHA512_IV);\n }\n}\n/** Internal SHA-384 hash class grounded in RFC 6234 §6.3 and §6.4. */\nexport class _SHA384 extends SHA2_64B {\n constructor() {\n super(48, SHA384_IV);\n }\n}\n/**\n * Truncated SHA512/256 and SHA512/224.\n * SHA512_IV is XORed with 0xa5a5a5a5a5a5a5a5, then used as \"intermediary\" IV of SHA512/t.\n * Then t hashes string to produce result IV.\n * See the repo-side derivation recipe in `test/misc/sha2-gen-iv.js`.\n * These IV literals are checked against that script rather than a dedicated\n * local RFC section.\n */\n/** SHA-512/224 IV derived by the SHA-512/t recipe in `test/misc/sha2-gen-iv.js` and\n * stored as sixteen big-endian 32-bit halves. */\nconst T224_IV = /* @__PURE__ */ Uint32Array.from([\n 0x8c3d37c8, 0x19544da2, 0x73e19966, 0x89dcd4d6, 0x1dfab7ae, 0x32ff9c82, 0x679dd514, 0x582f9fcf,\n 0x0f6d2b69, 0x7bd44da8, 0x77e36f73, 0x04c48942, 0x3f9d85a8, 0x6a1d36c8, 0x1112e6ad, 0x91d692a1,\n]);\n/** SHA-512/256 IV derived by the SHA-512/t recipe in `test/misc/sha2-gen-iv.js` and\n * stored as sixteen big-endian 32-bit halves. */\nconst T256_IV = /* @__PURE__ */ Uint32Array.from([\n 0x22312194, 0xfc2bf72c, 0x9f555fa3, 0xc84c64c2, 0x2393b86b, 0x6f53b151, 0x96387719, 0x5940eabd,\n 0x96283ee2, 0xa88effe3, 0xbe5e1e25, 0x53863992, 0x2b0199fc, 0x2c85b8aa, 0x0eb72ddc, 0x81c52ca2,\n]);\n/** Internal SHA-512/224 hash class using the derived `T224_IV` and the shared\n * RFC 6234 §6.4 compression engine. */\nexport class _SHA512_224 extends SHA2_64B {\n constructor() {\n super(28, T224_IV);\n }\n}\n/** Internal SHA-512/256 hash class using the derived `T256_IV` and the shared\n * RFC 6234 §6.4 compression engine. */\nexport class _SHA512_256 extends SHA2_64B {\n constructor() {\n super(32, T256_IV);\n }\n}\n/**\n * SHA2-256 hash function from RFC 4634. In JS it's the fastest: even faster than Blake3. Some info:\n *\n * - Trying 2^128 hashes would get 50% chance of collision, using birthday attack.\n * - BTC network is doing 2^70 hashes/sec (2^95 hashes/year) as per 2025.\n * - Each sha256 hash is executing 2^18 bit operations.\n * - Good 2024 ASICs can do 200Th/sec with 3500 watts of power, corresponding to 2^36 hashes/joule.\n * @param msg - message bytes to hash\n * @param opts - Reserved hash options.\n * @returns Digest bytes.\n * @example\n * Hash a message with SHA2-256.\n * ```ts\n * sha256(new Uint8Array([97, 98, 99]));\n * ```\n */\nexport const sha256 = /* @__PURE__ */ createHasher(() => new _SHA256(), \n/* @__PURE__ */ oidNist(0x01));\n/**\n * SHA2-224 hash function from RFC 4634.\n * @param msg - message bytes to hash\n * @param opts - Reserved hash options.\n * @returns Digest bytes.\n * @example\n * Hash a message with SHA2-224.\n * ```ts\n * sha224(new Uint8Array([97, 98, 99]));\n * ```\n */\nexport const sha224 = /* @__PURE__ */ createHasher(() => new _SHA224(), \n/* @__PURE__ */ oidNist(0x04));\n/**\n * SHA2-512 hash function from RFC 4634.\n * @param msg - message bytes to hash\n * @param opts - Reserved hash options.\n * @returns Digest bytes.\n * @example\n * Hash a message with SHA2-512.\n * ```ts\n * sha512(new Uint8Array([97, 98, 99]));\n * ```\n */\nexport const sha512 = /* @__PURE__ */ createHasher(() => new _SHA512(), \n/* @__PURE__ */ oidNist(0x03));\n/**\n * SHA2-384 hash function from RFC 4634.\n * @param msg - message bytes to hash\n * @param opts - Reserved hash options.\n * @returns Digest bytes.\n * @example\n * Hash a message with SHA2-384.\n * ```ts\n * sha384(new Uint8Array([97, 98, 99]));\n * ```\n */\nexport const sha384 = /* @__PURE__ */ createHasher(() => new _SHA384(), \n/* @__PURE__ */ oidNist(0x02));\n/**\n * SHA2-512/256 \"truncated\" hash function, with improved resistance to length extension attacks.\n * See the paper on {@link https://eprint.iacr.org/2010/548.pdf | truncated SHA512}.\n * @param msg - message bytes to hash\n * @param opts - Reserved hash options.\n * @returns Digest bytes.\n * @example\n * Hash a message with SHA2-512/256.\n * ```ts\n * sha512_256(new Uint8Array([97, 98, 99]));\n * ```\n */\nexport const sha512_256 = /* @__PURE__ */ createHasher(() => new _SHA512_256(), \n/* @__PURE__ */ oidNist(0x06));\n/**\n * SHA2-512/224 \"truncated\" hash function, with improved resistance to length extension attacks.\n * See the paper on {@link https://eprint.iacr.org/2010/548.pdf | truncated SHA512}.\n * @param msg - message bytes to hash\n * @param opts - Reserved hash options.\n * @returns Digest bytes.\n * @example\n * Hash a message with SHA2-512/224.\n * ```ts\n * sha512_224(new Uint8Array([97, 98, 99]));\n * ```\n */\nexport const sha512_224 = /* @__PURE__ */ createHasher(() => new _SHA512_224(), \n/* @__PURE__ */ oidNist(0x05));\n","import * as CID from \"@atcute/cid\";\nimport { fromUint8Array } from \"@atcute/car\";\nimport { sha256 } from \"@noble/hashes/sha2.js\";\n\nconst textDecoder = new TextDecoder();\n\n/**\n * Computes a CID string synchronously (SHA-256 via noble), matching\n * `@atcute/cid` `create()` which hashes with SHA-256.\n *\n * @param {0x55 | 0x71} code\n * @param {Uint8Array} data\n * @returns {string}\n *\n * @example Produces a stable base32 CID that decodes back to a valid CID string\n * ```js\n * import { createSyncCID } from \"~/common/tiles.js\";\n * import * as CID from \"@atcute/cid\";\n *\n * const cid = createSyncCID(0x55, new TextEncoder().encode(\"hello\"));\n * const parsed = CID.fromString(cid);\n * if (parsed.codec !== 0x55) throw new Error(\"should be raw codec\");\n * ```\n */\nexport function createSyncCID(code, data) {\n const digest = sha256(new Uint8Array(data));\n return CID.toString(CID.fromDigest(code, digest));\n}\n\n/**\n * @typedef {Record} TileResources\n * @typedef {{ html?: string; uri?: string; resources?: TileResources; blocks?: Record }} TileSource\n */\n\n/**\n * @param {string} text\n * @returns {Uint8Array}\n *\n * @example Decodes base64 back to the original bytes\n * ```js\n * import { decodeBase64, encodeBase64 } from \"~/common/tiles.js\";\n *\n * const original = new TextEncoder().encode(\"hello 🙂\");\n * const roundtrip = decodeBase64(encodeBase64(original));\n * if (roundtrip.length !== original.length) throw new Error(\"length should match\");\n * if (roundtrip.some((b, i) => b !== original[i])) throw new Error(\"bytes should match\");\n * ```\n */\nexport function decodeBase64(text) {\n const binary = atob(text);\n const bytes = new Uint8Array(binary.length);\n for (let i = 0; i < binary.length; i++) bytes[i] = binary.charCodeAt(i);\n return bytes;\n}\n\n/**\n * @param {Uint8Array} bytes\n * @returns {string}\n *\n * @example Returns a base64 string that decodes back to the input\n * ```js\n * import { encodeBase64, decodeBase64 } from \"~/common/tiles.js\";\n *\n * const bytes = new TextEncoder().encode(\"data:🌱\");\n * const encoded = encodeBase64(bytes);\n * if (typeof encoded !== \"string\" || encoded.length === 0) throw new Error(\"should be a non-empty string\");\n * const decoded = decodeBase64(encoded);\n * if (decoded.length !== bytes.length) throw new Error(\"roundtrip length should match\");\n * ```\n */\nexport function encodeBase64(bytes) {\n let binary = \"\";\n // Chunk to avoid stack overflow when spreading very large arrays into\n // String.fromCharCode. 0x8000 keeps the loop fast without overflowing.\n const chunkSize = 0x8000;\n for (let i = 0; i < bytes.length; i += chunkSize) {\n binary += String.fromCharCode(...bytes.subarray(i, i + chunkSize));\n }\n return btoa(binary);\n}\n\n// Synchronous raw DEFLATE (RFC 1951). Needed so block encoding/decoding and the\n// legacy-facet migration can run in synchronous (signal-using) paths without the\n// async CompressionStream. Both paths here are raw deflate (no zlib wrapper).\n\nconst LENGTH_EXTRA = [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0];\nconst LENGTH_BASE = [3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258];\nconst DIST_BASE = [1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577];\nconst DIST_EXTRA = [0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13];\n\n/** Fixed literal/length code lengths (RFC 1951 3.2.6). */\nconst FIXED_LIT_LENS = (() => {\n const lens = new Uint8Array(288);\n lens.fill(8, 0, 144);\n lens.fill(9, 144, 256);\n lens.fill(7, 256, 280);\n lens.fill(8, 280, 288);\n return lens;\n})();\n\n/**\n * Canonical Huffman encoder codes from bit lengths, indexed by symbol.\n *\n * @param {Uint8Array} lens\n * @returns {{ code: Int32Array, bits: Uint8Array } | null}\n */\nfunction canonicalCodes(lens) {\n const max = lens.reduce((m, l) => (l > m ? l : m), 0);\n const count = new Uint32Array(max + 1);\n for (const l of lens) if (l) count[l]++;\n let code = 0;\n const next = new Uint32Array(max + 1);\n for (let bits = 1; bits <= max; bits++) {\n code = (code + count[bits - 1]) << 1;\n next[bits] = code;\n }\n const out = new Int32Array(lens.length);\n const bits = new Uint8Array(lens.length);\n for (let n = 0; n < lens.length; n++) {\n const l = lens[n];\n if (l) {\n out[n] = next[l]++;\n bits[n] = l;\n }\n }\n return { code: out, bits };\n}\n\nconst FIXED_LIT_CODES = /** @type {{ code: Int32Array, bits: Uint8Array }} */ (canonicalCodes(FIXED_LIT_LENS));\nconst FIXED_DIST_CODES = /** @type {{ code: Int32Array, bits: Uint8Array }} */ (\n canonicalCodes(new Uint8Array(32).fill(5))\n);\n\n/**\n * Build canonical-decode tables ({@code count}/{@code symbol}) from bit lengths,\n * following zlib puff's construct(). Returns null for an invalid code set.\n *\n * @param {Uint8Array} lens\n * @param {number} max\n * @returns {{ count: Uint16Array, symbol: Uint16Array } | null}\n */\nfunction constructHuffman(lens, max) {\n const count = new Uint16Array(max + 1);\n for (const l of lens) if (l) count[l]++;\n let left = 1;\n for (let len = 1; len <= max; len++) {\n left = (left << 1) - count[len];\n if (left < 0) return null;\n }\n if (left > 1) return null;\n\n const symbol = new Uint16Array(lens.length);\n const offs = new Uint16Array(max + 1);\n let off = 0;\n for (let len = 1; len < max; len++) offs[len + 1] = off += count[len];\n for (let sym = 0; sym < lens.length; sym++) {\n const len = lens[sym];\n if (len) symbol[offs[len]++] = sym;\n }\n return { count, symbol };\n}\n\nconst FIXED_LIT_DECODE = /** @type {{ count: Uint16Array, symbol: Uint16Array }} */ (constructHuffman(FIXED_LIT_LENS, 15));\nconst FIXED_DIST_DECODE = /** @type {{ count: Uint16Array, symbol: Uint16Array }} */ (\n constructHuffman(new Uint8Array(32).fill(5), 15)\n);\n\n/**\n * Synchronously compresses bytes to raw DEFLATE (RFC 1951): LZ77 matching plus\n * the fixed-Huffman code set. Deterministic and dependency-free.\n *\n * @param {Uint8Array} bytes\n * @returns {Uint8Array}\n *\n * @example Round-trips through inflateSync\n * ```js\n * import { deflateSync, inflateSync } from \"~/common/tiles.js\";\n *\n * const data = new TextEncoder().encode(\"hello hello hello hello hello\");\n * const roundtrip = inflateSync(deflateSync(data));\n * if (roundtrip.some((b, i) => b !== data[i])) throw new Error(\"roundtrip should match\");\n * if (roundtrip.length !== data.length) throw new Error(\"length should match\");\n * ```\n */\nexport function deflateSync(bytes) {\n /** @type {number[]} */\n const out = [];\n let buf = 0;\n let nbits = 0;\n /** @type {(v: number, n: number) => void} */\n const put = (v, n) => {\n buf |= v << nbits;\n nbits += n;\n while (nbits >= 8) {\n out.push(buf & 0xff);\n buf >>>= 8;\n nbits -= 8;\n }\n };\n // Write a Huffman code MSB-first (RFC 1951 transmits codes MSB-first,\n // while extra bits and block headers are LSB-first via `put`).\n /** @type {(code: number, len: number) => void} */\n const putCode = (code, len) => {\n for (let k = len - 1; k >= 0; k--) put((code >>> k) & 1, 1);\n };\n\n const n = bytes.length;\n /** @type {number[]} */ const chain = new Array(65536).fill(-1);\n /** @type {number[]} */ const back = new Array(Math.max(0, n)).fill(-1);\n for (let i = 0; i + 2 < n; i++) {\n const h = (bytes[i] * 7 + bytes[i + 1] * 3 + bytes[i + 2]) & 0xffff;\n back[i] = chain[h];\n chain[h] = i;\n }\n\n put(1, 1); // BFINAL = 1\n put(1, 2); // BTYPE = 01 (fixed Huffman)\n\n let i = 0;\n while (i < n) {\n let bestLen = 0;\n let bestDist = 0;\n const maxLen = Math.min(258, n - i);\n if (i >= 3 && maxLen >= 3) {\n const h = (bytes[i] * 7 + bytes[i + 1] * 3 + bytes[i + 2]) & 0xffff;\n let cand = chain[h];\n let steps = 0;\n while (cand >= 0 && cand < i && cand >= i - 32768 && steps < 64) {\n let l = 0;\n while (l < maxLen && bytes[cand + l] === bytes[i + l]) l++;\n if (l > bestLen) {\n bestLen = l;\n bestDist = i - cand;\n if (l === maxLen) break;\n }\n cand = back[cand];\n steps++;\n }\n }\n if (bestLen >= 3) {\n let lc = 0;\n while (LENGTH_BASE[lc + 1] <= bestLen) lc++;\n const symbol = 257 + lc;\n put(FIXED_LIT_CODES.code[symbol], FIXED_LIT_CODES.bits[symbol]);\n putCode(FIXED_LIT_CODES.code[257 + lc], FIXED_LIT_CODES.bits[257 + lc]);\n put(bestLen - LENGTH_BASE[lc], LENGTH_EXTRA[lc]);\n let dc = 0;\n while (DIST_BASE[dc + 1] <= bestDist) dc++;\n putCode(FIXED_DIST_CODES.code[dc], FIXED_DIST_CODES.bits[dc]);\n put(bestDist - DIST_BASE[dc], DIST_EXTRA[dc]);\n i += bestLen;\n } else {\n putCode(FIXED_LIT_CODES.code[bytes[i]], FIXED_LIT_CODES.bits[bytes[i]]);\n i++;\n }\n }\n putCode(FIXED_LIT_CODES.code[256], FIXED_LIT_CODES.bits[256]);\n if (nbits > 0) out.push(buf & 0xff);\n return new Uint8Array(out);\n}\n\n/**\n * Synchronously decompresses a raw DEFLATE (RFC 1951) stream, supporting stored,\n * fixed-Huffman, and dynamic-Huffman blocks.\n *\n * @param {Uint8Array} bytes\n * @returns {Uint8Array}\n */\nexport function inflateSync(bytes) {\n let pos = 0;\n let bitVal = 0;\n let bitLen = 0;\n /** @type {(n: number) => number} */\n const bits = (n) => {\n while (bitLen < n) {\n bitVal |= bytes[pos++] << bitLen;\n bitLen += 8;\n }\n const r = bitVal & ((1 << n) - 1);\n bitVal >>>= n;\n bitLen -= n;\n return r;\n };\n\n /** @type {number[]} */\n const out = [];\n /** @type {(count: Uint16Array, symbolTable: Uint16Array) => number} */\n const decode = (count, symbolTable) => {\n let code = 0;\n let first = 0;\n let index = 0;\n for (let len = 1; len <= 15; len++) {\n code = (code << 1) | bits(1);\n const cnt = count[len];\n if (code - first < cnt) return symbolTable[index + (code - first)];\n index += cnt;\n first += cnt;\n first <<= 1;\n }\n throw new Error(\"invalid compressed bitstream\");\n };\n\n /** @type {(lc: Uint16Array, ls: Uint16Array, dc: Uint16Array, ds: Uint16Array) => void} */\n const decodeBlock = (lc, ls, dc, ds) => {\n for (;;) {\n const sym = decode(lc, ls);\n if (sym < 256) {\n out.push(sym);\n } else if (sym === 256) {\n return;\n } else {\n const li = sym - 257;\n const len = LENGTH_BASE[li] + bits(LENGTH_EXTRA[li]);\n const di = decode(dc, ds);\n const dist = DIST_BASE[di] + bits(DIST_EXTRA[di]);\n for (let k = 0; k < len; k++) out.push(out[out.length - dist]);\n }\n }\n };\n\n let bfinal = 0;\n do {\n bfinal = bits(1);\n const btype = bits(2);\n if (btype === 0) {\n bitVal = 0;\n bitLen = 0;\n const len = bytes[pos] | (bytes[pos + 1] << 8);\n pos += 4;\n for (let k = 0; k < len; k++) out.push(bytes[pos + k]);\n pos += len;\n } else if (btype === 1) {\n decodeBlock(FIXED_LIT_DECODE.count, FIXED_LIT_DECODE.symbol, FIXED_DIST_DECODE.count, FIXED_DIST_DECODE.symbol);\n } else if (btype === 2) {\n const hlit = bits(5) + 257;\n const hdist = bits(5) + 1;\n const hclen = bits(4) + 4;\n const order = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15];\n const clens = new Uint8Array(19);\n for (let i = 0; i < hclen; i++) clens[order[i]] = bits(3);\n const c = constructHuffman(clens, 7);\n if (!c) throw new Error(\"invalid code lengths\");\n const lens = new Uint8Array(hlit + hdist);\n let idx = 0;\n while (idx < hlit + hdist) {\n const s = decode(c.count, c.symbol);\n if (s < 16) lens[idx++] = s;\n else if (s === 16) {\n const rep = 3 + bits(2);\n const v = lens[idx - 1];\n for (let k = 0; k < rep; k++) lens[idx++] = v;\n } else if (s === 17) {\n idx += 3 + bits(3);\n } else {\n idx += 11 + bits(7);\n }\n }\n const lit = constructHuffman(lens.subarray(0, hlit), 15);\n const dst = constructHuffman(lens.subarray(hlit), 15);\n if (!lit || !dst) throw new Error(\"invalid dynamic huffman\");\n decodeBlock(lit.count, lit.symbol, dst.count, dst.symbol);\n } else {\n throw new Error(\"invalid deflate block type\");\n }\n } while (!bfinal);\n return new Uint8Array(out);\n}\n\n/**\n * Serializes a map of CID string to content bytes into the facet's `blocks`\n * object: a plain map of CID string to the most compact representation of that\n * resource's bytes (deflate + base64). Synchronous.\n *\n * @param {Map} blocks\n * @returns {Record}\n *\n * @example Round-trips a cid → bytes map\n * ```js\n * import { encodeBlocks, decodeBlocks } from \"~/common/tiles.js\";\n * import * as CID from \"@atcute/cid\";\n *\n * const bytes = new TextEncoder().encode(\"hola\");\n * const cid = await CID.create(0x55, bytes);\n *\n * const encoded = encodeBlocks(new Map([[cid.toString(), bytes]]));\n * if (typeof encoded !== \"object\" || Object.keys(encoded).length === 0) throw new Error(\"should be a non-empty map\");\n *\n * const decoded = decodeBlocks(encoded);\n * const out = decoded.get(cid.toString());\n * if (!out) throw new Error(\"should recover the block by its cid\");\n * if (new TextDecoder().decode(out) !== \"hola\") throw new Error(\"should recover the content\");\n * ```\n */\nexport function encodeBlocks(blocks) {\n /** @type {Record} */\n const out = {};\n for (const [cid, bytes] of blocks) out[cid] = encodeBase64(deflateSync(bytes));\n return out;\n}\n\n/**\n * Deserializes a facet's `blocks` object (produced by {@link encodeBlocks})\n * back into a map of CID string to content bytes. Synchronous.\n *\n * @param {Record | undefined} blocks\n * @returns {Map}\n *\n * @example Returns an empty map for an undefined / empty object\n * ```js\n * import { decodeBlocks } from \"~/common/tiles.js\";\n *\n * const blocks = decodeBlocks(undefined);\n * if (blocks.size !== 0) throw new Error(\"empty blocks should decode to an empty map\");\n * ```\n */\nexport function decodeBlocks(blocks) {\n const out = new Map();\n if (!blocks) return out;\n\n for (const [cid, value] of Object.entries(blocks)) {\n out.set(cid, inflateSync(decodeBase64(String(value ?? \"\"))));\n }\n\n return out;\n}\n\n/**\n * Converts any of the ways a CID can be represented (a plain base32 string, a\n * decoded CID object, or an atproto `CidLinkWrapper`) into a base32 string.\n *\n * @param {unknown} cid\n * @returns {string | undefined}\n */\nfunction cidToString(cid) {\n if (typeof cid === \"string\") return cid;\n if (cid == null) return undefined;\n if (typeof /** @type {any} */ (cid).$link === \"string\") {\n return /** @type {any} */ (cid).$link;\n }\n if (/** @type {any} */ (cid).bytes) return CID.toString(/** @type {any} */ (cid));\n return undefined;\n}\n\n/**\n * Parses a CARv1 archive (a `.tile` file) into its MASL header and a map of\n * every block's bytes, keyed by CID string. As specified by the DASL \"Tiles in\n * CAR\" convention, the CAR header is the MASL metadata (along with the `roots`\n * and `version` fields CAR requires).\n *\n * @param {Uint8Array} bytes\n * @returns {{ manifest: Record; blocks: Map }}\n */\nexport function parseCar(bytes) {\n const car = fromUint8Array(bytes);\n const blocks = new Map();\n\n for (const block of car) {\n const key = cidToString(block.cid);\n if (key) blocks.set(key, block.bytes);\n }\n\n return { manifest: car.header.data, blocks };\n}\n\n/**\n * Resolves a tile's root (`/`) resource to its decoded HTML, given a MASL\n * `resources` map and a map of blocks. Integrity of the root is content\n * addressed: the resource's `src` CID identifies the exact bytes, so the root\n * HTML can be verified against it later.\n *\n * @param {TileResources | undefined} resources\n * @param {Map} blocks\n * @returns {{ cid: string; html: string; contentType: string | undefined } | undefined}\n *\n * @example Resolves the root resource by its src cid\n * ```js\n * import { resolveRoot } from \"~/common/tiles.js\";\n * import * as CID from \"@atcute/cid\";\n *\n * const data = new TextEncoder().encode(\"

hi

\");\n * const cid = await CID.create(0x55, data);\n *\n * const root = resolveRoot(\n * { \"/\": { src: { $link: cid.toString() }, \"content-type\": \"text/html\" } },\n * new Map([[cid.toString(), data]]),\n * );\n *\n * if (root === undefined) throw new Error(\"should resolve the root\");\n * if (root.html !== \"

hi

\") throw new Error(\"root should be the index html\");\n * if (root.cid !== cid.toString()) throw new Error(\"should expose the root cid\");\n * if (root.contentType !== \"text/html\") throw new Error(\"should expose the content-type\");\n * ```\n */\nexport function resolveRoot(resources, blocks) {\n const resource = resources?.[\"/\"];\n if (!resource) return undefined;\n\n const cid = cidToString(resource.src);\n if (!cid) return undefined;\n\n const bytes = blocks.get(cid);\n if (!bytes) return undefined;\n\n return {\n cid,\n html: textDecoder.decode(bytes),\n contentType: resource[\"content-type\"],\n };\n}\n\n/**\n * Collects a tile's absolute-path resources (paths starting with `/`) from its\n * `resources` map and blocks, returning a map of path to decoded content.\n * Relative paths are intentionally excluded: they keep their built-in meaning\n * against the Diffuse build root (via the page `` element) so facets may\n * still reference shared Diffuse assets.\n *\n * @param {TileResources | undefined} resources\n * @param {Map} blocks\n * @returns {Map}\n *\n * @example Collects absolute resources and skips relative ones\n * ```js\n * import { tileResourceEntries } from \"~/common/tiles.js\";\n * import * as CID from \"@atcute/cid\";\n *\n * const css = new TextEncoder().encode(\"body { color: red }\");\n * const cssCid = await CID.create(0x55, css);\n * const html = new TextEncoder().encode(\"

hi

\");\n * const htmlCid = await CID.create(0x55, html);\n *\n * const entries = tileResourceEntries(\n * {\n * \"/\": { src: { $link: htmlCid.toString() }, \"content-type\": \"text/html\" },\n * \"/style.css\": { src: { $link: cssCid.toString() }, \"content-type\": \"text/css\" },\n * \"./local.css\": { src: { $link: cssCid.toString() } },\n * },\n * new Map([[cssCid.toString(), css], [htmlCid.toString(), html]]),\n * );\n *\n * if (!entries.has(\"/style.css\")) throw new Error(\"absolute resource should be collected\");\n * if (entries.has(\"./local.css\")) throw new Error(\"relative resource should be skipped\");\n * if (entries.get(\"/style.css\")?.contentType !== \"text/css\") throw new Error(\"should carry content-type\");\n * ```\n */\nexport function tileResourceEntries(resources, blocks) {\n /** @type {Map} */\n const out = new Map();\n if (!resources) return out;\n\n for (const [path, resource] of Object.entries(resources)) {\n if (!path.startsWith(\"/\")) continue;\n\n const cid = cidToString(resource.src);\n if (!cid) continue;\n\n const bytes = blocks.get(cid);\n if (!bytes) continue;\n\n out.set(path, {\n cid,\n bytes,\n contentType: resource[\"content-type\"],\n });\n }\n\n return out;\n}\n\n/**\n * Resolves the root HTML of an inline tile facet: the facet's own `resources`\n * map plus a `blocks` map of CID to content bytes (see {@link encodeBlocks}).\n * The facet record itself is the MASL manifest.\n *\n * @param {TileResources | undefined} resources\n * @param {Record | undefined} blocks\n * @returns {Promise<{ cid: string; html: string; contentType: string | undefined } | undefined>}\n *\n * @example Resolves HTML from an inline MASL manifest plus blocks\n * ```js\n * import { resolveInlineTile, encodeBlocks } from \"~/common/tiles.js\";\n * import * as CID from \"@atcute/cid\";\n *\n * const data = new TextEncoder().encode(\"

hello

\");\n * const cid = await CID.create(0x55, data);\n *\n * const blocks = await encodeBlocks(new Map([[cid.toString(), data]]));\n * const root = await resolveInlineTile(\n * { \"/\": { src: { $link: cid.toString() }, \"content-type\": \"text/html\" } },\n * blocks,\n * );\n *\n * if (root === undefined) throw new Error(\"should resolve the root\");\n * if (root.html !== \"

hello

\") throw new Error(\"root should decode to the html\");\n * if (root.cid !== cid.toString()) throw new Error(\"should report the root cid\");\n * if (root.contentType !== \"text/html\") throw new Error(\"should surface the content-type\");\n * ```\n */\nexport async function resolveInlineTile(resources, blocks) {\n const decoded = await decodeBlocks(blocks);\n return resolveRoot(resources, decoded);\n}\n\n/**\n * Rewrites absolute URL specifiers in ES module source (`import \"/x.js\"`,\n * `import … from \"/x.js\"`, `export … from \"/x.js\"`, `import(\"/x.js\")`) using\n * the provided resolver. Relative specifiers are left untouched, so they keep\n * their meaning against the importing module. This lets a tile's modules import\n * each other by path when served as Blob URLs (where import maps do not apply).\n *\n * @param {string} source\n * @param {(specifier: string) => string | undefined} resolve - Maps an absolute specifier to its replacement URL, or `undefined` to leave it alone.\n * @returns {string}\n *\n * @example Rewrites absolute specifiers and leaves relative ones alone\n * ```js\n * import { rewriteModuleImports } from \"~/common/tiles.js\";\n *\n * const source =\n * `import \"/a.js\";\\n` +\n * `import { x } from \"/b.js\";\\n` +\n * `export { y } from \"/c.js\";\\n` +\n * `const m = import(\"/d.js\");\\n` +\n * `import z from \"./local.js\";`;\n *\n * const out = rewriteModuleImports(source, (spec) => {\n * if (spec === \"/b.js\") return \"blob:b\";\n * if (spec === \"/c.js\") return \"blob:c\";\n * if (spec === \"/d.js\") return \"blob:d\";\n * return undefined;\n * });\n *\n * if (!out.includes(\"\\\"/a.js\\\"\" )) throw new Error(\"unknown absolute specifier should be kept\");\n * if (!out.includes(\"from \\\"blob:b\\\"\")) throw new Error(\"/b.js should be rewritten\");\n * if (!out.includes(\"from \\\"blob:c\\\"\")) throw new Error(\"/c.js should be rewritten\");\n * if (!out.includes(\"import(\\\"blob:d\\\")\")) throw new Error(\"/d.js should be rewritten\");\n * if (!out.includes(\"./local.js\")) throw new Error(\"relative specifier should be kept\");\n * ```\n */\nexport function rewriteModuleImports(source, resolve) {\n return source.replace(\n /(import\\s*\\(\\s*|from\\s+|import\\s+)([\"'`])(\\/[^\"'`\\s]+)\\2/g,\n (match, pre, quote, specifier) => {\n const url = resolve(specifier);\n return url ? `${pre}${quote}${url}${quote}` : match;\n },\n );\n}\n\n/**\n * Rewrites absolute URL specifiers in CSS `@import` statements (`@import\n * \"/x.css\";`, `@import url(\"/x.css\");`, or an unquoted `url(...)`) to the\n * resolved URL. Relative/other `url()` references are left untouched. This lets\n * a tile's stylesheets import each other by path when served as Blob URLs.\n *\n * @param {string} source\n * @param {(specifier: string) => string | undefined} resolve - Maps an absolute specifier to its replacement URL, or `undefined` to leave it alone.\n * @returns {string}\n *\n * @example Rewrites absolute CSS imports and leaves relative ones alone\n * ```js\n * import { rewriteCssImports } from \"~/common/tiles.js\";\n *\n * const imp = \"@\" + \"import\";\n * const source =\n * imp + ' \"/base.css\";\\n' +\n * imp + ' url(\"/theme.css\");\\n' +\n * imp + \" url(/vars.css);\\n\" +\n * imp + ' \"./local.css\";\\n' +\n * 'background: url(\"/img.png\");';\n *\n * const out = rewriteCssImports(source, (spec) =>\n * [\"/base.css\", \"/theme.css\", \"/vars.css\"].includes(spec) ? `blob:${spec}` : undefined,\n * );\n *\n * if (!out.includes(\"\\\"blob:/base.css\\\"\")) throw new Error(\"/base.css should be rewritten\");\n * if (!out.includes(\"url(\\\"blob:/theme.css\\\")\")) throw new Error(\"/theme.css in url() should be rewritten\");\n * if (!out.includes(\"url(blob:/vars.css)\")) throw new Error(\"/vars.css unquoted url() should be rewritten\");\n * if (!out.includes(\"./local.css\")) throw new Error(\"relative import should be kept\");\n * if (!out.includes(\"url(\\\"/img.png\\\")\")) throw new Error(\"non-import url() should be kept\");\n * ```\n */\nexport function rewriteCssImports(source, resolve) {\n return source.replace(\n /(@import\\s+(?:url\\(\\s*)?)([\"']?)(\\/[^\"'()\\s]+)\\2/g,\n (match, pre, quote, specifier) => {\n const url = resolve(specifier);\n return url ? `${pre}${quote}${url}${quote}` : match;\n },\n );\n}\n\n/**\n * Builds an inline tile facet's `resources` + `blocks` from a single piece of\n * HTML content, so the facet's index document is content addressed. The root\n * resource's CID is the CID of the raw HTML bytes.\n *\n * @param {string} html\n * @returns {{ resources: TileResources; blocks: Record }}\n *\n * @example Produces a resources/blocks pair that resolve to the input html\n * ```js\n * import { htmlFacetTile, resolveInlineTile } from \"~/common/tiles.js\";\n *\n * const html = \"

tile

\";\n * const tile = await htmlFacetTile(html);\n * const root = await resolveInlineTile(tile.resources, tile.blocks);\n * if (root?.html !== html) throw new Error(\"tile should resolve back to the html\");\n * ```\n */\nexport function htmlFacetTile(html) {\n const bytes = new TextEncoder().encode(html);\n const cid = createSyncCID(0x55, bytes);\n\n return {\n resources: {\n \"/\": {\n src: { $link: cid },\n \"content-type\": \"text/html\",\n },\n },\n blocks: encodeBlocks(new Map([[cid, bytes]])),\n };\n}\n\n/**\n * Maps a file path to a MIME content-type based on its extension.\n *\n * @param {string} path\n * @returns {string}\n *\n * @example Detects content types by extension\n * ```js\n * import { contentTypeForPath } from \"~/common/tiles.js\";\n *\n * if (contentTypeForPath(\"/\") !== \"text/html\") throw new Error(\"index should be html\");\n * if (contentTypeForPath(\"/style.css\") !== \"text/css\") throw new Error(\"css should be detected\");\n * if (contentTypeForPath(\"/app.mjs\") !== \"text/javascript\") throw new Error(\"mjs should be detected\");\n * ```\n */\nexport function contentTypeForPath(path) {\n if (path === \"/\" || /\\.html?$/i.test(path)) return \"text/html\";\n if (/\\.css$/i.test(path)) return \"text/css\";\n if (/\\.m?js$/i.test(path)) return \"text/javascript\";\n if (/\\.json$/i.test(path)) return \"application/json\";\n if (/\\.svg$/i.test(path)) return \"image/svg+xml\";\n return \"text/plain\";\n}\n\n/**\n * Builds a tile facet's `resources` + `blocks` from a map of absolute path to\n * file content (used by the multi-file facet editor). Each file becomes a\n * content-addressed resource. `htmlFacetTile` is the single-file special case.\n *\n * @param {Record} files - A map of absolute path (e.g. `/style.css`) to UTF-8 content.\n * @returns {{ resources: TileResources; blocks: Record }}\n *\n * @example Builds a multi-file tile that resolves each file\n * ```js\n * import { tileFromFiles, tileResourceEntries, decodeBlocks } from \"~/common/tiles.js\";\n *\n * const tile = tileFromFiles({ \"/\": \"\", \"/style.css\": \"body { color: red }\" });\n * if (!tile.resources[\"/style.css\"] || tile.resources[\"/style.css\"][\"content-type\"] !== \"text/css\") throw new Error(\"css resource should be present\");\n * const blocks = await decodeBlocks(tile.blocks);\n * const entries = tileResourceEntries(tile.resources, blocks);\n * if (new TextDecoder().decode(entries.get(\"/\")?.bytes) !== \"\" ) throw new Error(\"index should round-trip\");\n * ```\n */\nexport function tileFromFiles(files) {\n /** @type {TileResources} */\n const resources = {};\n /** @type {Map} */\n const blockMap = new Map();\n\n for (const [path, content] of Object.entries(files)) {\n if (!path.startsWith(\"/\")) continue;\n const bytes = new TextEncoder().encode(content);\n const cid = createSyncCID(0x55, bytes);\n resources[path] = {\n src: { $link: cid },\n \"content-type\": contentTypeForPath(path),\n };\n blockMap.set(cid, bytes);\n }\n\n return { resources, blocks: encodeBlocks(blockMap) };\n}\n\n/**\n * Upgrade a stored facet's `uri` from an old `.html` bundle path to the new\n * `.tile` path. Before the tile schema the bundled facets were pointed at loose\n * `index.html` files (`diffuse://facets/…/index.html`); the build now packages\n * each facet into an `index.tile` CAR at the same directory, so a stale `.html`\n * `uri` no longer resolves. This rewrites the `diffuse://` scheme's trailing\n * `index.html` to `index.tile`. Only the Diffuse bundle's own facets moved to\n * `.tile`, so external (`http(s)://`, `at://`) and other `.html` URIs are left\n * untouched.\n *\n * @param {Record} record\n * @returns {Record}\n *\n * @example Rewrites a stale bundle html path to its tile\n * ```js\n * import { rewriteLegacyURIPath } from \"~/common/tiles.js\";\n *\n * const upgraded = rewriteLegacyURIPath({ id: \"f\", name: \"x\", uri: \"diffuse://facets/data/file-manager/index.html\" });\n * if (upgraded.uri !== \"diffuse://facets/data/file-manager/index.tile\") throw new Error(\"expected the tile uri\");\n * const untouched = rewriteLegacyURIPath({ id: \"g\", name: \"y\", uri: \"https://example.com/facet.html\" });\n * if (untouched.uri !== \"https://example.com/facet.html\") throw new Error(\"external uris should be left alone\");\n * ```\n */\nexport function rewriteLegacyURIPath(record) {\n const uri = record.uri;\n if (typeof uri !== \"string\") return record;\n\n const upgraded = uri.replace(\n /^diffuse:\\/\\/(.+)\\/index\\.html$/i,\n \"diffuse://$1/index.tile\",\n );\n return upgraded === uri ? record : { ...record, uri: upgraded };\n}\n\n/**\n * Lifts a legacy facet record to the current tile shape. In addition to\n * rewriting any stale `.html` bundle `uri` (see {@link rewriteLegacyURIPath}), a\n * record that carries a raw `html` string (and possibly a `cid`) is lifted into\n * a tile facet: the `html` becomes the `/` resource, with its bytes stored in\n * `blocks`, and the old `html`/`cid` fields are dropped. Already-tile records\n * (`resources` present) are left unchanged apart from any uri rewrite. This is\n * the one-shot migration for facets stored before the tile schema. Synchronous\n * because {@link htmlFacetTile} no longer needs async compression.\n *\n * @param {Record} record\n * @returns {Record & { resources?: TileResources; blocks?: Record }}\n *\n * @example Lifts a legacy html facet into a tile\n * ```js\n * import { migrateLegacyFacet, resolveInlineTile } from \"~/common/tiles.js\";\n *\n * const lifted = migrateLegacyFacet({ id: \"f\", name: \"x\", html: \"

hi

\", cid: \"old\" });\n * if (\"html\" in lifted) throw new Error(\"html should be removed\");\n * if (\"cid\" in lifted) throw new Error(\"cid should be removed\");\n * const root = await resolveInlineTile(lifted.resources, lifted.blocks);\n * if (root?.html !== \"

hi

\") throw new Error(\"lifted content should resolve\");\n * ```\n *\n * @example Rewrites a stale uri even for already-tile facets\n * ```js\n * import { migrateLegacyFacet } from \"~/common/tiles.js\";\n *\n * const upgraded = migrateLegacyFacet({ id: \"f\", name: \"x\", uri: \"diffuse://facets/data/sources/index.html\", resources: { \"/\": {} }, blocks: {} });\n * if (upgraded.uri !== \"diffuse://facets/data/sources/index.tile\") throw new Error(\"stale uri should be upgraded\");\n * ```\n */\nexport function migrateLegacyFacet(record) {\n const upgraded = rewriteLegacyURIPath(record);\n const html = upgraded.html;\n if (typeof html !== \"string\" || upgraded.resources) return upgraded;\n\n const { html: _html, cid: _cid, ...rest } = upgraded;\n const tile = htmlFacetTile(html);\n return { ...rest, resources: tile.resources, blocks: tile.blocks };\n}\n"],"mappings":"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","names":["MAX_SAFE_INTEGER","_min","decode","__name","buf","offset","length","end","_min","counter","b","res","shift","MAX_SAFE_INTEGER","isCarV1Header","__name","value","version","roots","root","CidLinkWrapper","fromUint8Array","__name","buffer","header","headerOffset","readHeader","pos","entryStart","entryLength","lengthOffset","decode","cidStart","cid","cidOffset","readCid","bytesStart","bytesSize","bytesEnd","bytes","source","offset","headerStart","length","dataStart","dataEnd","data","isCarV1Header","cidEnd","version","codec","digestType","digestSize","CID_VERSION","CODEC_DCBOR","CODEC_RAW","HASH_SHA256","SHA256_K","SHA256_W","SHA2_32B","HashMD","__name","outputLen","IV","A","B","C","D","E","F","G","H","to","view","offset","i","W15","W2","s0","rotr","s1","sigma1","T1","Chi","T2","Maj","clean","_SHA256","SHA256_IV","sha256","createHasher","_SHA256","oidNist","textDecoder","createSyncCID","code","data","digest","sha256","toString","fromDigest","__name","decodeBase64","text","binary","bytes","i","encodeBase64","LENGTH_EXTRA","LENGTH_BASE","DIST_BASE","DIST_EXTRA","FIXED_LIT_LENS","lens","canonicalCodes","max","m","l","count","next","bits","out","n","FIXED_LIT_CODES","FIXED_DIST_CODES","constructHuffman","left","len","symbol","offs","off","sym","FIXED_LIT_DECODE","FIXED_DIST_DECODE","deflateSync","buf","nbits","put","v","putCode","k","chain","back","h","bestLen","bestDist","maxLen","cand","steps","lc","dc","inflateSync","pos","bitVal","bitLen","r","decode","symbolTable","first","index","cnt","decodeBlock","ls","ds","li","di","dist","bfinal","btype","hlit","hdist","hclen","order","clens","c","idx","s","rep","lit","dst","encodeBlocks","blocks","cid","decodeBlocks","value","cidToString","parseCar","car","fromUint8Array","block","key","resolveRoot","resources","resource","tileResourceEntries","path","resolveInlineTile","decoded","rewriteModuleImports","source","resolve","match","pre","quote","specifier","url","rewriteCssImports","htmlFacetTile","html","contentTypeForPath","tileFromFiles","files","blockMap","content","rewriteLegacyURIPath","record","uri","upgraded","migrateLegacyFacet","_html","_cid","rest","tile"],"sourceRoot":"","file":"/chunk-34YH6DD7.js.map"} \ No newline at end of file diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-3O4NWCCJ.js b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-3O4NWCCJ.js similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-3O4NWCCJ.js rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-3O4NWCCJ.js diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-3O4NWCCJ.js.br b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-3O4NWCCJ.js.br similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-3O4NWCCJ.js.br rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-3O4NWCCJ.js.br diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-3O4NWCCJ.js.map b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-3O4NWCCJ.js.map similarity index 99% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-3O4NWCCJ.js.map rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-3O4NWCCJ.js.map index 682e0b39..147571a4 100644 --- a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-3O4NWCCJ.js.map +++ b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-3O4NWCCJ.js.map @@ -1 +1 @@ -{"version":3,"sources":["/components/transformer/output/raw/atproto-sync/element.js"],"sourcesContent":["import { ifDefined } from \"lit-html/directives/if-defined.js\";\n\nimport \"~/components/output/polymorphic/indexed-db/element.js\";\n\nimport { computed, signal } from \"~/common/signal.js\";\nimport { OutputTransformer } from \"../../base.js\";\nimport { defineElement } from \"~/common/element.js\";\nimport * as Output from \"~/common/output.js\";\n\n/**\n * @import { RenderArg } from \"~/common/element.d.ts\"\n * @import { OutputElement } from \"@specs/components/output/types.d.ts\"\n * @import { ATProtoPasskeyOutputElement } from \"@specs/components/output/raw/atproto-passkey/types.d.ts\"\n */\n\nconst COLLECTIONS = /** @type {const} */ ([\n \"facets\",\n \"playlistItems\",\n \"settings\",\n \"tracks\",\n]);\n\n/** @type {Record} */\nconst NSID_TO_COLLECTION = {\n \"sh.diffuse.output.facet\": \"facets\",\n \"sh.diffuse.output.playlistItemBundle\": \"playlistItems\",\n \"sh.diffuse.output.setting\": \"settings\",\n \"sh.diffuse.output.trackBundle\": \"tracks\",\n};\n\nconst STORAGE_PREFIX = \"diffuse/transformer/output/atproto-sync\";\n\n/**\n * Wraps an AT Protocol output with a local IndexedDB cache.\n *\n * Uses the repo `rev` (revision) from the AT Protocol to skip\n * unnecessary fetches when nothing changed remotely.\n *\n * When both local and remote have diverged, performs a union merge\n * by record `id`: records from both sides are combined, with\n * `updatedAt` used as a tiebreaker for conflicts on the same id\n * (falling back to local wins).\n *\n * Maintains a per-collection tombstone set of deleted record ids\n * so that records deleted on one side are not re-introduced by\n * the other during merge.\n *\n * @extends {OutputTransformer}\n */\nclass ATProtoOutputSyncTransformer extends OutputTransformer {\n static NAME = \"diffuse/transformer/output/raw/atproto-sync\";\n\n constructor() {\n super();\n\n const remote = this.base();\n const local = this.#localOutput.get;\n\n for (const name of COLLECTIONS) {\n /** @ts-ignore */\n this[name] = {\n collection: computed(() => {\n const l = local();\n if (!l) return { state: \"loading\" };\n const c = l[name].collection();\n if (c.state === \"loading\") return c;\n if (c.state === \"error\") return c;\n return { state: \"loaded\", data: c.data ?? [] };\n }),\n reload: async () => {\n await this.#sync();\n },\n save: async (/** @type {any} */ newData) => {\n const l = local();\n if (!l) return;\n\n const newIds = new Set(newData.map((/** @type {any} */ r) => r.id));\n\n // Update tombstones in one pass: add for records deleted from local,\n // remove for records being (re-)added — so that fixed-ID records can\n // be recreated after deletion without the tombstone blocking them.\n const tombstones = this.#getTombstones(name);\n let tombstonesChanged = false;\n\n const existing = l[name].collection();\n const existingArr =\n existing.state === \"loaded\" && Array.isArray(existing.data)\n ? existing.data\n : [];\n\n for (const record of existingArr) {\n if (!newIds.has(record.id) && !tombstones.has(record.id)) {\n tombstones.add(record.id);\n tombstonesChanged = true;\n }\n }\n\n for (const record of newData) {\n if (tombstones.has(record.id)) {\n tombstones.delete(record.id);\n tombstonesChanged = true;\n }\n }\n\n if (tombstonesChanged) {\n localStorage.setItem(\n `${STORAGE_PREFIX}/tombstones/${name}`,\n JSON.stringify([...tombstones]),\n );\n }\n\n this.#markDirty();\n await l[name].save(newData);\n\n if (remote.ready()) {\n // Merge with any records added remotely since the last sync so we\n // don't accidentally overwrite them with our local-only view.\n const remoteCol = remote[name].collection();\n const dataForRemote =\n remoteCol.state === \"loaded\" && Array.isArray(remoteCol.data)\n ? this.#mergeRecords(name, newData, /** @type {typeof newData} */ (remoteCol.data))\n : newData;\n\n remote[name].save(dataForRemote).then(() => {\n const rev = this.#atproto()?.rev();\n if (rev) this.#storeRev(rev);\n this.#clearDirty();\n }).catch((err) => {\n console.error(err);\n });\n }\n },\n };\n }\n\n this.ready = () => true;\n\n // Sync when remote becomes ready\n this.effect(() => {\n const l = local();\n if (!l) return;\n\n this.effect(async () => {\n if (!remote.ready()) return;\n if (!(await this.isLeader())) return;\n this.#sync();\n });\n\n // Re-sync when firehose detects a remote change\n this.effect(async () => {\n const atproto = this.#atproto();\n if (!atproto) return;\n const firehose = atproto.firehoseRev();\n if (!firehose) return;\n if (!remote.ready()) return;\n if (!(await this.isLeader())) return;\n const touched = /** @type {string[]} */ (\n [...firehose.collections]\n .map((nsid) => NSID_TO_COLLECTION[nsid])\n .filter((name) => name !== undefined)\n );\n if (touched.length > 0) this.#sync(touched, firehose.rev);\n });\n });\n }\n\n // SIGNALS\n\n #localOutput = signal(\n /** @type {OutputElement | undefined} */ (undefined),\n );\n\n #syncing = false;\n\n /**\n * @returns {ATProtoPasskeyOutputElement | undefined}\n */\n #atproto() {\n return /** @type {any} */ (this.output.signal());\n }\n\n // SYNC\n\n /**\n * @param {readonly string[]} collections\n * @param {string | null} [knownRev]\n */\n async #sync(collections = COLLECTIONS, knownRev = null) {\n if (this.#syncing) return;\n this.#syncing = true;\n\n try {\n const l = this.#localOutput.get();\n const remote = this.base();\n const atproto = this.#atproto();\n\n if (!l || !atproto || !remote.ready()) return;\n\n const isFull = collections === COLLECTIONS;\n /** @type {Record} */\n const lAny = l;\n /** @type {Record} */\n const remoteAny = remote;\n\n const remoteRev = knownRev ?? await atproto.getLatestCommit();\n if (!remoteRev) return;\n\n if (isFull) {\n const localRev = this.#getStoredRev();\n const dirty = this.#isDirty();\n if (localRev === remoteRev && !dirty) return;\n }\n\n // Fetch remote data for the affected collections only\n for (const name of collections) {\n await remoteAny[name].reload();\n }\n\n const localCollections = await Promise.all(\n collections.map((name) => Output.data(lAny[name])),\n );\n\n const localHasData = localCollections.some(\n (data) => Array.isArray(data) && data.length > 0,\n );\n\n if (!localHasData && !this.#isDirty()) {\n // Local is empty and clean — just pull remote\n for (const name of collections) {\n const remoteCol = remoteAny[name].collection();\n if (\n remoteCol.state === \"loaded\" && Array.isArray(remoteCol.data) &&\n remoteCol.data.length > 0\n ) {\n this.#trackIds(name, remoteCol.data);\n await lAny[name].save(remoteCol.data);\n }\n }\n } else {\n // Union merge\n for (const name of collections) {\n const localCol = lAny[name].collection();\n const remoteCol = remoteAny[name].collection();\n const localArr =\n localCol.state === \"loaded\" && Array.isArray(localCol.data)\n ? localCol.data\n : [];\n const remoteArr =\n remoteCol.state === \"loaded\" && Array.isArray(remoteCol.data)\n ? remoteCol.data\n : [];\n\n const merged = this.#mergeRecords(name, localArr, remoteArr);\n\n await lAny[name].save(merged);\n\n if (this.#differFromRemote(merged, remoteArr)) {\n await remoteAny[name].save(merged);\n }\n this.#trackIds(name, merged);\n }\n }\n\n this.#storeRev(atproto.rev() ?? remoteRev);\n if (isFull) this.#clearDirty();\n } catch (err) {\n console.warn(\"Sync failed:\", err);\n } finally {\n this.#syncing = false;\n }\n }\n\n /**\n * Union merge two record arrays by `id`.\n *\n * - Records only in local → keep (unless tombstoned)\n * - Records only in remote → keep (unless tombstoned)\n * - Records in both → pick the one with the later `updatedAt`,\n * falling back to local wins\n * - Records whose id is in the tombstone set are excluded\n *\n * @template {Record & { id: string }} T\n * @param {string} collection\n * @param {T[]} localArr\n * @param {T[]} remoteArr\n * @returns {T[]}\n */\n #mergeRecords(collection, localArr, remoteArr) {\n const tombstones = this.#getTombstones(collection);\n const knownIds = this.#getKnownIds(collection);\n const remoteIds = new Set(remoteArr.map((r) => r.id));\n\n /** @type {Map} */\n const merged = new Map();\n\n // Start with local records\n for (const record of localArr) {\n if (tombstones.has(record.id)) continue;\n // If previously synced but now absent from remote, it was deleted remotely.\n if (knownIds.has(record.id) && !remoteIds.has(record.id)) continue;\n merged.set(record.id, record);\n }\n\n // Merge remote records\n for (const record of remoteArr) {\n if (tombstones.has(record.id)) continue;\n\n // If this id was previously known but is absent from local,\n // it was deleted locally — skip it. Only apply this heuristic when\n // localArr is non-empty; an empty localArr could mean the local cache\n // was cleared rather than the user deleting everything.\n if (\n localArr.length > 0 &&\n knownIds.has(record.id) &&\n !merged.has(record.id)\n ) continue;\n\n const existing = merged.get(record.id);\n\n if (!existing) {\n merged.set(record.id, record);\n } else {\n // Both sides have this record — pick by updatedAt\n const lt = existing.updatedAt;\n const rt = record.updatedAt;\n if (lt && rt && rt > lt) {\n merged.set(record.id, record);\n }\n }\n }\n\n return [...merged.values()];\n }\n\n /**\n * @param {Array<{ id: string, updatedAt?: string }>} merged\n * @param {Array<{ id: string, updatedAt?: string }>} remote\n * @returns {boolean}\n */\n #differFromRemote(merged, remote) {\n if (merged.length !== remote.length) return true;\n const remoteMap = new Map(remote.map((r) => [r.id, r.updatedAt]));\n return merged.some((r) => remoteMap.get(r.id) !== r.updatedAt);\n }\n\n // TOMBSTONES & KNOWN IDS\n\n /**\n * @param {string} collection\n * @returns {Set}\n */\n #getTombstones(collection) {\n const raw = localStorage.getItem(\n `${STORAGE_PREFIX}/tombstones/${collection}`,\n );\n return raw ? new Set(JSON.parse(raw)) : new Set();\n }\n\n /**\n * @param {string} collection\n * @returns {Set}\n */\n #getKnownIds(collection) {\n const raw = localStorage.getItem(`${STORAGE_PREFIX}/known/${collection}`);\n return raw ? new Set(JSON.parse(raw)) : new Set();\n }\n\n /**\n * Record all ids from a data array as known.\n *\n * @param {string} collection\n * @param {Array<{ id: string }>} data\n */\n #trackIds(collection, data) {\n const known = this.#getKnownIds(collection);\n for (const record of data) {\n known.add(record.id);\n }\n localStorage.setItem(\n `${STORAGE_PREFIX}/known/${collection}`,\n JSON.stringify([...known]),\n );\n }\n\n // REV & DIRTY FLAG\n\n /** @returns {string | null} */\n #getStoredRev() {\n return localStorage.getItem(`${STORAGE_PREFIX}/rev`);\n }\n\n /** @param {string | null} rev */\n #storeRev(rev) {\n if (rev) {\n localStorage.setItem(`${STORAGE_PREFIX}/rev`, rev);\n }\n }\n\n #markDirty() {\n localStorage.setItem(`${STORAGE_PREFIX}/dirty`, \"1\");\n }\n\n #clearDirty() {\n localStorage.removeItem(`${STORAGE_PREFIX}/dirty`);\n }\n\n /** @returns {boolean} */\n #isDirty() {\n return localStorage.getItem(`${STORAGE_PREFIX}/dirty`) === \"1\";\n }\n\n // LIFECYCLE\n\n /** @override */\n connectedCallback() {\n // Broadcast if needed\n if (this.hasAttribute(\"group\")) {\n this.broadcast(this.identifier, {});\n }\n\n super.connectedCallback();\n\n /** @type {OutputElement | null} */\n const local = this.root().querySelector(\"dop-indexed-db\");\n if (!local) throw new Error(\"Can't find local output\");\n\n customElements.whenDefined(local.localName).then(() => {\n this.#localOutput.value = local;\n });\n }\n\n // RENDER\n\n /**\n * @param {RenderArg} _\n */\n render({ html }) {\n return html`\n \n `;\n }\n}\n\nexport default ATProtoOutputSyncTransformer;\n\n////////////////////////////////////////////\n// REGISTER\n////////////////////////////////////////////\n\nexport const CLASS = ATProtoOutputSyncTransformer;\nexport const NAME = \"dtor-atproto-sync\";\n\ndefineElement(NAME, CLASS);\n"],"mappings":"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","names":["element_exports","__export","CLASS","NAME","element_default","COLLECTIONS","NSID_TO_COLLECTION","STORAGE_PREFIX","ATProtoOutputSyncTransformer","OutputTransformer","__name","remote","local","#localOutput","name","computed","l","c","#sync","newData","newIds","r","tombstones","#getTombstones","tombstonesChanged","existing","existingArr","record","#markDirty","remoteCol","dataForRemote","#mergeRecords","rev","#atproto","#storeRev","#clearDirty","err","atproto","firehose","touched","nsid","signal","#syncing","collections","knownRev","isFull","lAny","remoteAny","remoteRev","localRev","#getStoredRev","dirty","#isDirty","data","#trackIds","localCol","localArr","remoteArr","merged","#differFromRemote","collection","knownIds","#getKnownIds","remoteIds","lt","rt","remoteMap","raw","known","html","o","element_default","CLASS","NAME","defineElement"],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse","file":"/chunk-3O4NWCCJ.js.map"} \ No newline at end of file +{"version":3,"sources":["/components/transformer/output/raw/atproto-sync/element.js"],"sourcesContent":["import { ifDefined } from \"lit-html/directives/if-defined.js\";\n\nimport \"~/components/output/polymorphic/indexed-db/element.js\";\n\nimport { computed, signal } from \"~/common/signal.js\";\nimport { OutputTransformer } from \"../../base.js\";\nimport { defineElement } from \"~/common/element.js\";\nimport * as Output from \"~/common/output.js\";\n\n/**\n * @import { RenderArg } from \"~/common/element.d.ts\"\n * @import { OutputElement } from \"@specs/components/output/types.d.ts\"\n * @import { ATProtoPasskeyOutputElement } from \"@specs/components/output/raw/atproto-passkey/types.d.ts\"\n */\n\nconst COLLECTIONS = /** @type {const} */ ([\n \"facets\",\n \"playlistItems\",\n \"settings\",\n \"tracks\",\n]);\n\n/** @type {Record} */\nconst NSID_TO_COLLECTION = {\n \"sh.diffuse.output.facet\": \"facets\",\n \"sh.diffuse.output.playlistItemBundle\": \"playlistItems\",\n \"sh.diffuse.output.setting\": \"settings\",\n \"sh.diffuse.output.trackBundle\": \"tracks\",\n};\n\nconst STORAGE_PREFIX = \"diffuse/transformer/output/atproto-sync\";\n\n/**\n * Wraps an AT Protocol output with a local IndexedDB cache.\n *\n * Uses the repo `rev` (revision) from the AT Protocol to skip\n * unnecessary fetches when nothing changed remotely.\n *\n * When both local and remote have diverged, performs a union merge\n * by record `id`: records from both sides are combined, with\n * `updatedAt` used as a tiebreaker for conflicts on the same id\n * (falling back to local wins).\n *\n * Maintains a per-collection tombstone set of deleted record ids\n * so that records deleted on one side are not re-introduced by\n * the other during merge.\n *\n * @extends {OutputTransformer}\n */\nclass ATProtoOutputSyncTransformer extends OutputTransformer {\n static NAME = \"diffuse/transformer/output/raw/atproto-sync\";\n\n constructor() {\n super();\n\n const remote = this.base();\n const local = this.#localOutput.get;\n\n for (const name of COLLECTIONS) {\n /** @ts-ignore */\n this[name] = {\n collection: computed(() => {\n const l = local();\n if (!l) return { state: \"loading\" };\n const c = l[name].collection();\n if (c.state === \"loading\") return c;\n if (c.state === \"error\") return c;\n return { state: \"loaded\", data: c.data ?? [] };\n }),\n reload: async () => {\n await this.#sync();\n },\n save: async (/** @type {any} */ newData) => {\n const l = local();\n if (!l) return;\n\n const newIds = new Set(newData.map((/** @type {any} */ r) => r.id));\n\n // Update tombstones in one pass: add for records deleted from local,\n // remove for records being (re-)added — so that fixed-ID records can\n // be recreated after deletion without the tombstone blocking them.\n const tombstones = this.#getTombstones(name);\n let tombstonesChanged = false;\n\n const existing = l[name].collection();\n const existingArr =\n existing.state === \"loaded\" && Array.isArray(existing.data)\n ? existing.data\n : [];\n\n for (const record of existingArr) {\n if (!newIds.has(record.id) && !tombstones.has(record.id)) {\n tombstones.add(record.id);\n tombstonesChanged = true;\n }\n }\n\n for (const record of newData) {\n if (tombstones.has(record.id)) {\n tombstones.delete(record.id);\n tombstonesChanged = true;\n }\n }\n\n if (tombstonesChanged) {\n localStorage.setItem(\n `${STORAGE_PREFIX}/tombstones/${name}`,\n JSON.stringify([...tombstones]),\n );\n }\n\n this.#markDirty();\n await l[name].save(newData);\n\n if (remote.ready()) {\n // Merge with any records added remotely since the last sync so we\n // don't accidentally overwrite them with our local-only view.\n const remoteCol = remote[name].collection();\n const dataForRemote =\n remoteCol.state === \"loaded\" && Array.isArray(remoteCol.data)\n ? this.#mergeRecords(name, newData, /** @type {typeof newData} */ (remoteCol.data))\n : newData;\n\n remote[name].save(dataForRemote).then(() => {\n const rev = this.#atproto()?.rev();\n if (rev) this.#storeRev(rev);\n this.#clearDirty();\n }).catch((err) => {\n console.error(err);\n });\n }\n },\n };\n }\n\n this.ready = () => true;\n\n // Sync when remote becomes ready\n this.effect(() => {\n const l = local();\n if (!l) return;\n\n this.effect(async () => {\n if (!remote.ready()) return;\n if (!(await this.isLeader())) return;\n this.#sync();\n });\n\n // Re-sync when firehose detects a remote change\n this.effect(async () => {\n const atproto = this.#atproto();\n if (!atproto) return;\n const firehose = atproto.firehoseRev();\n if (!firehose) return;\n if (!remote.ready()) return;\n if (!(await this.isLeader())) return;\n const touched = /** @type {string[]} */ (\n [...firehose.collections]\n .map((nsid) => NSID_TO_COLLECTION[nsid])\n .filter((name) => name !== undefined)\n );\n if (touched.length > 0) this.#sync(touched, firehose.rev);\n });\n });\n }\n\n // SIGNALS\n\n #localOutput = signal(\n /** @type {OutputElement | undefined} */ (undefined),\n );\n\n #syncing = false;\n\n /**\n * @returns {ATProtoPasskeyOutputElement | undefined}\n */\n #atproto() {\n return /** @type {any} */ (this.output.signal());\n }\n\n // SYNC\n\n /**\n * @param {readonly string[]} collections\n * @param {string | null} [knownRev]\n */\n async #sync(collections = COLLECTIONS, knownRev = null) {\n if (this.#syncing) return;\n this.#syncing = true;\n\n try {\n const l = this.#localOutput.get();\n const remote = this.base();\n const atproto = this.#atproto();\n\n if (!l || !atproto || !remote.ready()) return;\n\n const isFull = collections === COLLECTIONS;\n /** @type {Record} */\n const lAny = l;\n /** @type {Record} */\n const remoteAny = remote;\n\n const remoteRev = knownRev ?? await atproto.getLatestCommit();\n if (!remoteRev) return;\n\n if (isFull) {\n const localRev = this.#getStoredRev();\n const dirty = this.#isDirty();\n if (localRev === remoteRev && !dirty) return;\n }\n\n // Fetch remote data for the affected collections only\n for (const name of collections) {\n await remoteAny[name].reload();\n }\n\n const localCollections = await Promise.all(\n collections.map((name) => Output.data(lAny[name])),\n );\n\n const localHasData = localCollections.some(\n (data) => Array.isArray(data) && data.length > 0,\n );\n\n if (!localHasData && !this.#isDirty()) {\n // Local is empty and clean — just pull remote\n for (const name of collections) {\n const remoteCol = remoteAny[name].collection();\n if (\n remoteCol.state === \"loaded\" && Array.isArray(remoteCol.data) &&\n remoteCol.data.length > 0\n ) {\n this.#trackIds(name, remoteCol.data);\n await lAny[name].save(remoteCol.data);\n }\n }\n } else {\n // Union merge\n for (const name of collections) {\n const localCol = lAny[name].collection();\n const remoteCol = remoteAny[name].collection();\n const localArr =\n localCol.state === \"loaded\" && Array.isArray(localCol.data)\n ? localCol.data\n : [];\n const remoteArr =\n remoteCol.state === \"loaded\" && Array.isArray(remoteCol.data)\n ? remoteCol.data\n : [];\n\n const merged = this.#mergeRecords(name, localArr, remoteArr);\n\n await lAny[name].save(merged);\n\n if (this.#differFromRemote(merged, remoteArr)) {\n await remoteAny[name].save(merged);\n }\n this.#trackIds(name, merged);\n }\n }\n\n this.#storeRev(atproto.rev() ?? remoteRev);\n if (isFull) this.#clearDirty();\n } catch (err) {\n console.warn(\"Sync failed:\", err);\n } finally {\n this.#syncing = false;\n }\n }\n\n /**\n * Union merge two record arrays by `id`.\n *\n * - Records only in local → keep (unless tombstoned)\n * - Records only in remote → keep (unless tombstoned)\n * - Records in both → pick the one with the later `updatedAt`,\n * falling back to local wins\n * - Records whose id is in the tombstone set are excluded\n *\n * @template {Record & { id: string }} T\n * @param {string} collection\n * @param {T[]} localArr\n * @param {T[]} remoteArr\n * @returns {T[]}\n */\n #mergeRecords(collection, localArr, remoteArr) {\n const tombstones = this.#getTombstones(collection);\n const knownIds = this.#getKnownIds(collection);\n const remoteIds = new Set(remoteArr.map((r) => r.id));\n\n /** @type {Map} */\n const merged = new Map();\n\n // Start with local records\n for (const record of localArr) {\n if (tombstones.has(record.id)) continue;\n // If previously synced but now absent from remote, it was deleted remotely.\n if (knownIds.has(record.id) && !remoteIds.has(record.id)) continue;\n merged.set(record.id, record);\n }\n\n // Merge remote records\n for (const record of remoteArr) {\n if (tombstones.has(record.id)) continue;\n\n // If this id was previously known but is absent from local,\n // it was deleted locally — skip it. Only apply this heuristic when\n // localArr is non-empty; an empty localArr could mean the local cache\n // was cleared rather than the user deleting everything.\n if (\n localArr.length > 0 &&\n knownIds.has(record.id) &&\n !merged.has(record.id)\n ) continue;\n\n const existing = merged.get(record.id);\n\n if (!existing) {\n merged.set(record.id, record);\n } else {\n // Both sides have this record — pick by updatedAt\n const lt = existing.updatedAt;\n const rt = record.updatedAt;\n if (lt && rt && rt > lt) {\n merged.set(record.id, record);\n }\n }\n }\n\n return [...merged.values()];\n }\n\n /**\n * @param {Array<{ id: string, updatedAt?: string }>} merged\n * @param {Array<{ id: string, updatedAt?: string }>} remote\n * @returns {boolean}\n */\n #differFromRemote(merged, remote) {\n if (merged.length !== remote.length) return true;\n const remoteMap = new Map(remote.map((r) => [r.id, r.updatedAt]));\n return merged.some((r) => remoteMap.get(r.id) !== r.updatedAt);\n }\n\n // TOMBSTONES & KNOWN IDS\n\n /**\n * @param {string} collection\n * @returns {Set}\n */\n #getTombstones(collection) {\n const raw = localStorage.getItem(\n `${STORAGE_PREFIX}/tombstones/${collection}`,\n );\n return raw ? new Set(JSON.parse(raw)) : new Set();\n }\n\n /**\n * @param {string} collection\n * @returns {Set}\n */\n #getKnownIds(collection) {\n const raw = localStorage.getItem(`${STORAGE_PREFIX}/known/${collection}`);\n return raw ? new Set(JSON.parse(raw)) : new Set();\n }\n\n /**\n * Record all ids from a data array as known.\n *\n * @param {string} collection\n * @param {Array<{ id: string }>} data\n */\n #trackIds(collection, data) {\n const known = this.#getKnownIds(collection);\n for (const record of data) {\n known.add(record.id);\n }\n localStorage.setItem(\n `${STORAGE_PREFIX}/known/${collection}`,\n JSON.stringify([...known]),\n );\n }\n\n // REV & DIRTY FLAG\n\n /** @returns {string | null} */\n #getStoredRev() {\n return localStorage.getItem(`${STORAGE_PREFIX}/rev`);\n }\n\n /** @param {string | null} rev */\n #storeRev(rev) {\n if (rev) {\n localStorage.setItem(`${STORAGE_PREFIX}/rev`, rev);\n }\n }\n\n #markDirty() {\n localStorage.setItem(`${STORAGE_PREFIX}/dirty`, \"1\");\n }\n\n #clearDirty() {\n localStorage.removeItem(`${STORAGE_PREFIX}/dirty`);\n }\n\n /** @returns {boolean} */\n #isDirty() {\n return localStorage.getItem(`${STORAGE_PREFIX}/dirty`) === \"1\";\n }\n\n // LIFECYCLE\n\n /** @override */\n connectedCallback() {\n // Broadcast if needed\n if (this.hasAttribute(\"group\")) {\n this.broadcast(this.identifier, {});\n }\n\n super.connectedCallback();\n\n /** @type {OutputElement | null} */\n const local = this.root().querySelector(\"dop-indexed-db\");\n if (!local) throw new Error(\"Can't find local output\");\n\n customElements.whenDefined(local.localName).then(() => {\n this.#localOutput.value = local;\n });\n }\n\n // RENDER\n\n /**\n * @param {RenderArg} _\n */\n render({ html }) {\n return html`\n \n `;\n }\n}\n\nexport default ATProtoOutputSyncTransformer;\n\n////////////////////////////////////////////\n// REGISTER\n////////////////////////////////////////////\n\nexport const CLASS = ATProtoOutputSyncTransformer;\nexport const NAME = \"dtor-atproto-sync\";\n\ndefineElement(NAME, CLASS);\n"],"mappings":"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","names":["element_exports","__export","CLASS","NAME","element_default","COLLECTIONS","NSID_TO_COLLECTION","STORAGE_PREFIX","ATProtoOutputSyncTransformer","OutputTransformer","__name","remote","local","#localOutput","name","computed","l","c","#sync","newData","newIds","r","tombstones","#getTombstones","tombstonesChanged","existing","existingArr","record","#markDirty","remoteCol","dataForRemote","#mergeRecords","rev","#atproto","#storeRev","#clearDirty","err","atproto","firehose","touched","nsid","signal","#syncing","collections","knownRev","isFull","lAny","remoteAny","remoteRev","localRev","#getStoredRev","dirty","#isDirty","data","#trackIds","localCol","localArr","remoteArr","merged","#differFromRemote","collection","knownIds","#getKnownIds","remoteIds","lt","rt","remoteMap","raw","known","html","o","element_default","CLASS","NAME","defineElement"],"sourceRoot":"","file":"/chunk-3O4NWCCJ.js.map"} \ No newline at end of file diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-3POXLCM6.js b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-3POXLCM6.js similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-3POXLCM6.js rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-3POXLCM6.js diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-3POXLCM6.js.br b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-3POXLCM6.js.br similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-3POXLCM6.js.br rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-3POXLCM6.js.br diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-3POXLCM6.js.map b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-3POXLCM6.js.map similarity index 99% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-3POXLCM6.js.map rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-3POXLCM6.js.map index 6b595925..db907783 100644 --- a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-3POXLCM6.js.map +++ b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-3POXLCM6.js.map @@ -1 +1 @@ -{"version":3,"sources":["/components/output/raw/atproto-passkey/element.js","/node_modules/.deno/@atcute+atproto@4.0.4/node_modules/@atcute/atproto/dist/lexicons/types/com/atproto/sync/subscribeRepos.js"],"sourcesContent":["import { Client, ClientResponseError, ok } from \"@atcute/client\";\nimport { ComAtprotoSyncSubscribeRepos } from \"@atcute/atproto\";\nimport { decode, encode } from \"@atcute/cbor\";\nimport { xxh32r } from \"xxh32/dist/raw.js\";\n\nimport { computed, signal } from \"~/common/signal.js\";\nimport { BroadcastedOutputElement, outputManager } from \"../../common.js\";\nimport { defineElement } from \"~/common/element.js\";\n\nimport {\n clearStoredSession,\n login,\n logout,\n OAuthUserAgent,\n restoreOrFinalize,\n TokenRefreshError,\n} from \"./oauth.js\";\n\n/**\n * @import {OutputManager} from \"@specs/components/output/types.d.ts\"\n * @import {ATProtoPasskeyOutputElement} from \"@specs/components/output/raw/atproto-passkey/types.d.ts\"\n * @import {MessageOf} from \"@atcute/firehose\"\n * @typedef {import(\"@atcute/atproto\").ComAtprotoRepoApplyWrites.$input['writes'][number]} WriteOp\n */\n\n/** @type {Set} */\nconst WATCHED_COLLECTIONS = new Set([\n \"sh.diffuse.output.facet\",\n \"sh.diffuse.output.playlistItemBundle\",\n \"sh.diffuse.output.setting\",\n \"sh.diffuse.output.trackBundle\",\n]);\n\n////////////////////////////////////////////\n// ELEMENT\n////////////////////////////////////////////\n\n/**\n * @implements {ATProtoPasskeyOutputElement}\n */\nclass ATProtoPasskeyOutput extends BroadcastedOutputElement {\n static NAME = \"diffuse/output/raw/atproto-passkey\";\n\n #manager;\n\n /** @type {PromiseWithResolvers} */\n #authenticated = Promise.withResolvers();\n\n /** @type {PromiseWithResolvers} */\n #restoreSettled = Promise.withResolvers();\n\n /** @type {Client | null} */\n #rpc = null;\n\n /** @type {OAuthUserAgent | null} */\n #agent = null;\n\n /** @type {string | null} */\n #pdsUrl = null;\n\n constructor() {\n super();\n\n /** @type {OutputManager} */\n this.#manager = outputManager({\n init: async () => {\n await this.#restoreSettled.promise;\n return true;\n },\n facets: this.#recordCollection(\"sh.diffuse.output.facet\"),\n playlistItems: this.#blobCollection(\n \"sh.diffuse.output.playlistItemBundle\",\n { groupBy: \"playlist\" },\n ),\n settings: this.#recordCollection(\"sh.diffuse.output.setting\"),\n tracks: this.#blobCollection(\"sh.diffuse.output.trackBundle\", {\n groupBy: \"scheme\",\n keyOf: (item) => {\n const uri = String(\n /** @type {Record} */ (item)[\"uri\"] ?? \"\",\n );\n const colon = uri.indexOf(\":\");\n return colon > 0 ? uri.substring(0, colon) : undefined;\n },\n }),\n });\n\n this.facets = this.#manager.facets;\n this.playlistItems = this.#manager.playlistItems;\n this.settings = this.#manager.settings;\n this.tracks = this.#manager.tracks;\n }\n\n // SIGNALS\n\n #did = signal(/** @type {`did:${string}:${string}` | null} */ (null));\n #handle = signal(/** @type {string | null} */ (null));\n #isOnline = signal(navigator.onLine);\n #rev = signal(/** @type {string | null} */ (null));\n #firehoseRev = signal(/** @type {{ rev: string, collections: ReadonlySet } | null} */ (null));\n\n /** @type {AsyncIterator | null} */\n #firehoseIterator = null;\n #firehoseGen = 0;\n #writing = 0;\n\n /** @type {Array<{ fn: () => Promise, resolve: () => void, reject: (err: unknown) => void }>} */\n #writeQueue = [];\n #writeDraining = false;\n /** @type {Map} */\n #writeCancels = new Map();\n\n did = this.#did.get;\n handle = this.#handle.get;\n rev = this.#rev.get;\n firehoseRev = this.#firehoseRev.get;\n\n ready = computed(() => {\n return this.#did.value !== null && !!this.#rpc && this.#isOnline.value;\n });\n\n // LIFECYCLE\n\n /** @override */\n connectedCallback() {\n this.replicateSavedData(this.#manager);\n\n super.connectedCallback();\n\n this.#tryRestore();\n\n globalThis.addEventListener(\"online\", this.#online);\n globalThis.addEventListener(\"offline\", this.#offline);\n }\n\n /** @override */\n disconnectedCallback() {\n this.#stopFirehose();\n globalThis.removeEventListener(\"online\", this.#online);\n globalThis.removeEventListener(\"offline\", this.#offline);\n }\n\n #offline = () => this.#isOnline.set(false);\n #online = () => this.#isOnline.set(true);\n\n // AUTH\n\n /**\n * Initiate the OAuth flow.\n * Navigates the browser to the authorization server.\n *\n * @param {string} handle\n */\n async login(handle) {\n await login(handle);\n }\n\n /**\n * @returns {Promise}\n */\n whenRestored() {\n return this.#restoreSettled.promise;\n }\n\n /**\n * Sign out and revoke the current session.\n */\n async logout() {\n if (this.#agent) {\n this.#stopFirehose();\n await logout(this.#agent);\n this.#agent = null;\n this.#authenticated = Promise.withResolvers();\n this.#did.value = null;\n this.#handle.value = null;\n this.#pdsUrl = null;\n this.#rpc = null;\n }\n }\n\n /**\n * Clear session state without contacting the server.\n * Used when the session has already been revoked.\n */\n #clearSession() {\n this.#stopFirehose();\n this.#agent = null;\n this.#authenticated = Promise.withResolvers();\n this.#did.value = null;\n this.#handle.value = null;\n this.#pdsUrl = null;\n this.#rpc = null;\n\n clearStoredSession();\n }\n\n /**\n * @param {unknown} err\n * @returns {boolean}\n */\n #isSessionError(err) {\n if (err instanceof TokenRefreshError) return true;\n // OAuthUserAgent.handle() swallows TokenRefreshError and returns the\n // original 401 response, which ok() wraps as a ClientResponseError.\n if (err instanceof ClientResponseError && err.status === 401) return true;\n if (err && typeof err === \"object\" && \"cause\" in err) {\n return this.#isSessionError(\n (/** @type {{ cause: unknown }} */ (err)).cause,\n );\n }\n return false;\n }\n\n async #tryRestore() {\n await this.whenConnected();\n\n try {\n const session = await restoreOrFinalize();\n\n if (session) {\n this.#setSession(session);\n }\n } catch (err) {\n if (this.#isSessionError(err)) {\n this.#clearSession();\n } else {\n throw err;\n }\n } finally {\n this.#restoreSettled.resolve();\n }\n }\n\n /**\n * @param {import(\"@atcute/oauth-browser-client\").Session} session\n */\n #setSession(session) {\n const agent = new OAuthUserAgent(session);\n\n // Intercept token refresh to detect session revocation proactively.\n // OAuthUserAgent.handle() swallows TokenRefreshError silently,\n // so we hook into getSession to clear state as soon as refresh fails.\n const originalGetSession = agent.getSession.bind(agent);\n agent.getSession = /** @type {typeof originalGetSession} */ ((...args) => {\n const promise = originalGetSession(...args);\n\n promise.catch((err) => {\n if (err instanceof TokenRefreshError) {\n this.#clearSession();\n }\n });\n\n return promise;\n });\n\n this.#agent = agent;\n this.#rpc = new Client({ handler: agent });\n this.#did.value = session.info.sub;\n this.#pdsUrl = session.info.aud;\n this.#authenticated.resolve();\n this.#fetchHandle(session.info.sub);\n this.#startFirehose();\n }\n\n // FIREHOSE\n\n #stopFirehose() {\n const iter = this.#firehoseIterator;\n this.#firehoseIterator = null;\n iter?.return?.();\n }\n\n async #startFirehose() {\n this.#stopFirehose();\n\n const gen = ++this.#firehoseGen;\n const pdsUrl = this.#pdsUrl;\n if (!pdsUrl) return;\n\n const wssUrl = pdsUrl.replace(\n /^https?:\\/\\//,\n (m) => m === \"https://\" ? \"wss://\" : \"ws://\",\n );\n\n const { FirehoseSubscription } = await import(\"@atcute/firehose\");\n\n if (this.#firehoseGen !== gen) return;\n\n const subscription = new FirehoseSubscription({\n service: wssUrl,\n nsid: ComAtprotoSyncSubscribeRepos.mainSchema,\n validateEvents: false,\n });\n\n const iter = subscription[Symbol.asyncIterator]();\n this.#firehoseIterator = iter;\n\n try {\n for await (const message of iter) {\n this.#handleFirehoseCommit(message);\n }\n } catch {\n // Non-fatal; partysocket handles reconnection automatically\n }\n }\n\n /**\n * @param {MessageOf} message\n */\n #handleFirehoseCommit(message) {\n if (message.$type !== \"com.atproto.sync.subscribeRepos#commit\") return;\n\n const commit =\n /** @type {{ repo: string, rev: string, ops?: Array<{ path: string }> }} */ (message);\n\n if (commit.repo !== this.#did.value) return;\n if (commit.rev === this.#rev.value) return;\n if (this.#writing > 0) return;\n\n const touched = new Set(\n (commit.ops ?? [])\n .map((op) => op.path?.split(\"/\")[0])\n .filter((c) => WATCHED_COLLECTIONS.has(c)),\n );\n\n if (touched.size === 0) return;\n\n this.#firehoseRev.value = { rev: commit.rev, collections: touched };\n }\n\n /**\n * @param {string} did\n */\n async #fetchHandle(did) {\n const rpc = this.#rpc;\n if (!rpc) return;\n try {\n const result = await ok(rpc.get(\"com.atproto.repo.describeRepo\", {\n params: {\n repo: /** @type {import(\"@atcute/lexicons\").ActorIdentifier} */ (did),\n },\n }));\n if (this.#did.value === did) {\n this.#handle.value = result?.handle ?? null;\n }\n } catch {\n // Non-fatal; handle stays null\n }\n }\n\n // RECORDS\n\n /**\n * Returns `{ empty, get, put }` for a small record collection (facets, settings).\n *\n * Tracks last-known remote state in closure so `put()` skips the `listRecords`\n * round-trip on every write. Uses `putRecord` (upsert) to avoid create/update\n * ambiguity; batches deletes via `applyWrites`.\n *\n * @param {string} nsid\n */\n #recordCollection(nsid) {\n /** @type {Map> | null} */\n let lastKnown = null;\n\n return {\n empty: () => [],\n get: async () => {\n const records = await this.listRecords(nsid);\n lastKnown = new Map(\n /** @type {Array>} */ (records).map((r) => [\n String(r[\"id\"]),\n r,\n ]),\n );\n return records;\n },\n put: async (/** @type {unknown[]} */ data) => {\n const nsidTyped = /** @type {`${string}.${string}.${string}`} */ (nsid);\n\n /** @type {Map>} */\n const desired = new Map(\n /** @type {Array<{ id: string }>} */ (data).map((r) => [\n r.id,\n /** @type {Record} */ ({ $type: nsidTyped, ...r }),\n ]),\n );\n\n const known = lastKnown ?? new Map();\n\n /** @type {Array<[string, Record]>} */\n const upserts = [];\n for (const [id, record] of desired) {\n const existing = known.get(id);\n if (existing && JSON.stringify(existing) === JSON.stringify(record)) {\n continue;\n }\n upserts.push([id, record]);\n }\n\n /** @type {WriteOp[]} */\n const deletes = [];\n for (const id of known.keys()) {\n if (!desired.has(id)) {\n deletes.push({\n $type: \"com.atproto.repo.applyWrites#delete\",\n collection: nsidTyped,\n rkey: id,\n });\n }\n }\n\n if (upserts.length === 0 && deletes.length === 0) return;\n\n const newKnown = new Map(known);\n for (const [id, record] of upserts) newKnown.set(id, record);\n for (const { rkey } of deletes) newKnown.delete(rkey);\n\n const prior = this.#writeCancels.get(nsid);\n if (prior) prior.cancelled = true;\n const token = { cancelled: false };\n this.#writeCancels.set(nsid, token);\n\n await this.#enqueueWrite(async () => {\n if (token.cancelled) return;\n const rpc = this.#rpc;\n const did = this.#did.value;\n if (!rpc || !did) return;\n this.#writing++;\n try {\n for (const [rkey, record] of upserts) {\n const result = await ok(rpc.post(\"com.atproto.repo.putRecord\", {\n input: { repo: did, collection: nsidTyped, rkey, record },\n }));\n if (result?.commit?.rev) this.#rev.value = result.commit.rev;\n }\n for (let i = 0; i < deletes.length; i += 100) {\n const result = await ok(rpc.post(\"com.atproto.repo.applyWrites\", {\n input: { repo: did, writes: deletes.slice(i, i + 100) },\n }));\n if (result?.commit?.rev) this.#rev.value = result.commit.rev;\n }\n lastKnown = newKnown;\n } catch (err) {\n if (this.#isSessionError(err)) { this.#clearSession(); return; }\n throw err;\n } finally {\n this.#writing--;\n if (this.#writeCancels.get(nsid) === token) {\n this.#writeCancels.delete(nsid);\n }\n }\n });\n },\n };\n }\n\n /**\n * Returns `{ empty, get, put }` for a collection stored as CBOR blobs.\n * Each distinct group key gets its own bundle record.\n *\n * `groupBy` is the field name stored on the bundle record (used by `get()`\n * to reconstruct the key). `keyOf` extracts the group key from each item;\n * defaults to `item[groupBy]` when omitted.\n *\n * @param {string} nsid\n * @param {{ groupBy: string, keyOf?: (item: unknown) => string | undefined }} options\n */\n #blobCollection(nsid, { groupBy, keyOf } = /** @type {any} */ ({})) {\n /** @type {Map} groupKey → content hash */\n let lastHashes = new Map();\n /** @type {Map} groupKey → blob ref */\n let lastBlobs = new Map();\n\n return {\n empty: () => /** @type {unknown[]} */ ([]),\n get: async () => {\n const bundles = await this.listRecords(nsid);\n /** @type {unknown[]} */\n const items = [];\n /** @type {Map} */\n const newHashes = new Map();\n /** @type {Map} */\n const newBlobs = new Map();\n\n for (const bundle of bundles) {\n if (!bundle.data?.ref?.$link) continue;\n\n const key =\n /** @type {Record} */ (bundle)[groupBy];\n if (typeof key !== \"string\") continue;\n\n const bytes = await this.#fetchBlob(bundle.data.ref.$link);\n const groupItems = /** @type {unknown[]} */ (decode(bytes));\n if (!Array.isArray(groupItems)) continue;\n\n items.push(...groupItems);\n // Hash the re-encoded form so put() compares apples to apples.\n // Raw PDS bytes may not equal encode(decode(bytes)) if field order\n // or numeric encoding differs, causing spurious re-uploads.\n newHashes.set(key, xxh32r(encode(groupItems)).toString(16));\n newBlobs.set(key, bundle.data);\n }\n\n // Assign atomically after all fetches complete so a concurrent put()\n // never sees a partially-populated lastHashes and generates wrong #create ops.\n lastHashes = newHashes;\n lastBlobs = newBlobs;\n return items;\n },\n put: async (/** @type {unknown[]} */ data) => {\n const nsidTyped =\n /** @type {`${string}.${string}.${string}`} */ (nsid);\n\n const extractKey = keyOf ??\n ((/** @type {unknown} */ item) =>\n /** @type {string | undefined} */ (\n /** @type {Record} */ (item)[groupBy]\n ));\n\n /** @type {Map} */\n const groups = new Map();\n for (const item of data) {\n const key = extractKey(item);\n if (typeof key !== \"string\") continue;\n const group = groups.get(key) ?? [];\n if (!groups.has(key)) groups.set(key, group);\n group.push(item);\n }\n\n // Snapshot state so we only commit on success\n const newHashes = new Map(lastHashes);\n const newBlobs = new Map(lastBlobs);\n\n // Upload blobs for changed groups (outside write queue — not a mutation)\n /** @type {Array<{ rkey: string, value: unknown }>} */\n const upserts = [];\n\n for (const [key, groupItems] of groups) {\n const bytes = encode(groupItems);\n const hash = xxh32r(bytes).toString(16);\n\n if (lastHashes.get(key) === hash && lastBlobs.has(key)) continue;\n\n const blob = await this.#uploadBlob(bytes);\n if (!blob) continue;\n\n const rkey = xxh32r(encode(key)).toString(16);\n const value = {\n $type: nsidTyped,\n id: rkey,\n [groupBy]: key,\n data: blob,\n };\n upserts.push({ rkey, value });\n newHashes.set(key, hash);\n newBlobs.set(key, blob);\n }\n\n /** @type {WriteOp[]} */\n const deletes = [];\n for (const key of lastHashes.keys()) {\n if (!groups.has(key)) {\n const rkey = xxh32r(encode(key)).toString(16);\n deletes.push({\n $type: \"com.atproto.repo.applyWrites#delete\",\n collection: nsidTyped,\n rkey,\n });\n newHashes.delete(key);\n newBlobs.delete(key);\n }\n }\n\n if (upserts.length === 0 && deletes.length === 0) return;\n\n await this.#enqueueWrite(async () => {\n const rpc = this.#rpc;\n const did = this.#did.value;\n if (!rpc || !did) return;\n this.#writing++;\n try {\n // putRecord is a true upsert — no need to track create vs update\n for (const { rkey, value } of upserts) {\n const result = await ok(rpc.post(\"com.atproto.repo.putRecord\", {\n input: {\n repo: did,\n collection: nsidTyped,\n rkey,\n record: /** @type {Record} */ (value),\n },\n }));\n if (result?.commit?.rev) this.#rev.value = result.commit.rev;\n }\n for (let i = 0; i < deletes.length; i += 100) {\n const result = await ok(\n rpc.post(\"com.atproto.repo.applyWrites\", {\n input: { repo: did, writes: deletes.slice(i, i + 100) },\n }),\n );\n if (result?.commit?.rev) this.#rev.value = result.commit.rev;\n }\n } catch (err) {\n if (this.#isSessionError(err)) {\n this.#clearSession();\n return;\n }\n throw err;\n } finally {\n this.#writing--;\n }\n });\n\n lastHashes = newHashes;\n lastBlobs = newBlobs;\n },\n };\n }\n\n /**\n * Fetch the latest commit rev for this repo.\n * Returns `null` if not authenticated or on error.\n *\n * @returns {Promise}\n */\n async getLatestCommit() {\n const did = this.#did.value;\n\n const rpc = this.#rpc;\n if (!rpc || !did) return null;\n\n try {\n const result = await ok(rpc.get(\n \"com.atproto.sync.getLatestCommit\",\n { params: { did } },\n ));\n\n this.#rev.value = result?.rev;\n return result?.rev;\n } catch (err) {\n if (this.#isSessionError(err)) {\n this.#clearSession();\n return null;\n }\n\n throw err;\n }\n }\n\n /** @param {Uint8Array} bytes */\n async #uploadBlob(bytes) {\n const rpc = this.#rpc;\n if (!rpc) return;\n const result = await ok(rpc.post(\"com.atproto.repo.uploadBlob\", {\n input: bytes,\n headers: { \"content-type\": \"application/octet-stream\" },\n }));\n return result?.blob;\n }\n\n /**\n * @param {string} cid\n * @returns {Promise}\n */\n async #fetchBlob(cid) {\n const rpc = this.#rpc;\n const did = this.#did.value;\n if (!rpc || !did) return new Uint8Array();\n return await ok(rpc.get(\"com.atproto.sync.getBlob\", {\n params: { did, cid },\n as: \"bytes\",\n }));\n }\n\n /**\n * @template T\n * @param {string} collection\n * @param {string} [did]\n * @returns {Promise}\n */\n async listRecords(collection, did) {\n did ??= this.#did.value ?? undefined;\n\n if (!this.#rpc || !did) return [];\n\n try {\n const records = [];\n /** @type {string | undefined} */\n let cursor;\n do {\n const page =\n /** @type {{ records: { value: unknown }[], cursor?: string }} */ (\n await ok(this.#rpc.get(\"com.atproto.repo.listRecords\", {\n params: {\n repo:\n /** @type {import(\"@atcute/lexicons\").ActorIdentifier} */ (did),\n collection:\n /** @type {`${string}.${string}.${string}`} */ (collection),\n limit: 100,\n cursor,\n },\n }))\n );\n records.push(...page.records.map((r) => /** @type {T} */ (r.value)));\n cursor = page.cursor;\n } while (cursor);\n return records;\n } catch (err) {\n if (this.#isSessionError(err)) {\n this.#clearSession();\n return [];\n }\n\n throw err;\n }\n }\n\n // WRITE QUEUE\n\n /**\n * @param {() => Promise} fn\n * @returns {Promise}\n */\n #enqueueWrite(fn) {\n return new Promise((resolve, reject) => {\n this.#writeQueue.push({ fn, resolve, reject });\n this.#drainWrites();\n });\n }\n\n async #drainWrites() {\n if (this.#writeDraining) return;\n this.#writeDraining = true;\n\n while (this.#writeQueue.length > 0) {\n const { fn, resolve, reject } =\n /** @type {{ fn: () => Promise, resolve: () => void, reject: (err: unknown) => void }} */ (\n this.#writeQueue.shift()\n );\n try {\n await fn();\n resolve();\n } catch (err) {\n reject(err);\n }\n }\n\n this.#writeDraining = false;\n }\n\n}\n\nexport default ATProtoPasskeyOutput;\n\n////////////////////////////////////////////\n// REGISTER\n////////////////////////////////////////////\n\nexport const CLASS = ATProtoPasskeyOutput;\nexport const NAME = \"dor-atproto-passkey\";\n\ndefineElement(NAME, ATProtoPasskeyOutput);\n","import * as v from '@atcute/lexicons/validations';\nconst _accountSchema = /*#__PURE__*/ v.object({\n $type: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.literal('com.atproto.sync.subscribeRepos#account')),\n /** Indicates that the account has a repository which can be fetched from the host that emitted this event. */\n active: /*#__PURE__*/ v.boolean(),\n did: /*#__PURE__*/ v.didString(),\n seq: /*#__PURE__*/ v.integer(),\n /** If active=false, this optional field indicates a reason for why the account is not active. */\n status: /*#__PURE__*/ v.optional(\n /*#__PURE__*/ v.string()),\n time: /*#__PURE__*/ v.datetimeString(),\n});\nconst _commitSchema = /*#__PURE__*/ v.object({\n $type: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.literal('com.atproto.sync.subscribeRepos#commit')),\n blobs: /*#__PURE__*/ v.array(/*#__PURE__*/ v.cidLink()),\n /**\n * CAR file containing relevant blocks, as a diff since the previous repo state. The commit must be included\n * as a block, and the commit block CID must be the first entry in the CAR header 'roots' list.\n *\n * @maxLength 2000000\n */\n blocks: /*#__PURE__*/ v.constrain(/*#__PURE__*/ v.bytes(), [/*#__PURE__*/ v.bytesSize(0, 2000000)]),\n /** Repo commit object CID. */\n commit: /*#__PURE__*/ v.cidLink(),\n /** @maxLength 200 */\n get ops() {\n return /*#__PURE__*/ v.constrain(/*#__PURE__*/ v.array(repoOpSchema), [\n /*#__PURE__*/ v.arrayLength(0, 200),\n ]);\n },\n /**\n * The root CID of the MST tree for the previous commit from this repo (indicated by the 'since' revision\n * field in this message). Corresponds to the 'data' field in the repo commit object. NOTE: this field is\n * effectively required for the 'inductive' version of firehose.\n */\n prevData: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.cidLink()),\n /** DEPRECATED -- unused */\n rebase: /*#__PURE__*/ v.boolean(),\n /** The repo this event comes from. Note that all other message types name this field 'did'. */\n repo: /*#__PURE__*/ v.didString(),\n /**\n * The rev of the emitted commit. Note that this information is also in the commit object included in\n * blocks, unless this is a tooBig event.\n */\n rev: /*#__PURE__*/ v.tidString(),\n /** The stream sequence number of this message. */\n seq: /*#__PURE__*/ v.integer(),\n /** The rev of the last emitted commit from this repo (if any). */\n since: /*#__PURE__*/ v.nullable(/*#__PURE__*/ v.tidString()),\n /** Timestamp of when this message was originally broadcast. */\n time: /*#__PURE__*/ v.datetimeString(),\n /**\n * DEPRECATED -- replaced by #sync event and data limits. Indicates that this commit contained too many ops,\n * or data size was too large. Consumers will need to make a separate request to get missing data.\n */\n tooBig: /*#__PURE__*/ v.boolean(),\n});\nconst _identitySchema = /*#__PURE__*/ v.object({\n $type: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.literal('com.atproto.sync.subscribeRepos#identity')),\n did: /*#__PURE__*/ v.didString(),\n /**\n * The current handle for the account, or 'handle.invalid' if validation fails. This field is optional,\n * might have been validated or passed-through from an upstream source. Semantics and behaviors for PDS vs\n * Relay may evolve in the future; see atproto specs for more details.\n */\n handle: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.handleString()),\n seq: /*#__PURE__*/ v.integer(),\n time: /*#__PURE__*/ v.datetimeString(),\n});\nconst _infoSchema = /*#__PURE__*/ v.object({\n $type: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.literal('com.atproto.sync.subscribeRepos#info')),\n message: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.string()),\n name: /*#__PURE__*/ v.string(),\n});\nconst _mainSchema = /*#__PURE__*/ v.subscription('com.atproto.sync.subscribeRepos', {\n params: /*#__PURE__*/ v.object({\n /** The last known event seq number to backfill from. */\n cursor: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.integer()),\n }),\n get message() {\n return /*#__PURE__*/ v.variant([accountSchema, commitSchema, identitySchema, infoSchema, syncSchema]);\n },\n});\nconst _repoOpSchema = /*#__PURE__*/ v.object({\n $type: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.literal('com.atproto.sync.subscribeRepos#repoOp')),\n action: /*#__PURE__*/ v.string(),\n /** For creates and updates, the new record CID. For deletions, null. */\n cid: /*#__PURE__*/ v.nullable(/*#__PURE__*/ v.cidLink()),\n path: /*#__PURE__*/ v.string(),\n /**\n * For updates and deletes, the previous record CID (required for inductive firehose). For creations, field\n * should not be defined.\n */\n prev: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.cidLink()),\n});\nconst _syncSchema = /*#__PURE__*/ v.object({\n $type: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.literal('com.atproto.sync.subscribeRepos#sync')),\n /**\n * CAR file containing the commit, as a block. The CAR header must include the commit block CID as the first\n * 'root'.\n *\n * @maxLength 10000\n */\n blocks: /*#__PURE__*/ v.constrain(/*#__PURE__*/ v.bytes(), [/*#__PURE__*/ v.bytesSize(0, 10000)]),\n /** The account this repo event corresponds to. Must match that in the commit object. */\n did: /*#__PURE__*/ v.didString(),\n /** The rev of the commit. This value must match that in the commit object. */\n rev: /*#__PURE__*/ v.string(),\n /** The stream sequence number of this message. */\n seq: /*#__PURE__*/ v.integer(),\n /** Timestamp of when this message was originally broadcast. */\n time: /*#__PURE__*/ v.datetimeString(),\n});\nexport const accountSchema = _accountSchema;\nexport const commitSchema = _commitSchema;\nexport const identitySchema = _identitySchema;\nexport const infoSchema = _infoSchema;\nexport const mainSchema = _mainSchema;\nexport const repoOpSchema = _repoOpSchema;\nexport const syncSchema = _syncSchema;\n"],"mappings":"omBAAA,IAAAA,GAAA,GAAAC,GAAAD,GAAA,WAAAE,GAAA,SAAAC,GAAA,YAAAC,KCAA,IAAAC,GAAA,GAAAC,GAAAD,GAAA,mBAAAE,GAAA,iBAAAC,GAAA,mBAAAC,GAAA,eAAAC,GAAA,eAAAC,GAAA,iBAAAC,GAAA,eAAAC,KACA,IAAMC,GAAiCC,EAAO,CAC1C,MAAuBC,EAAyBC,EAAQ,yCAAyC,CAAC,EAElG,OAAwBC,EAAQ,EAChC,IAAqBC,EAAU,EAC/B,IAAqBC,EAAQ,EAE7B,OAAwBJ,EACRK,EAAO,CAAC,EACxB,KAAsBC,EAAe,CACzC,CAAC,EACKC,GAAgCR,EAAO,CACzC,MAAuBC,EAAyBC,EAAQ,wCAAwC,CAAC,EACjG,MAAuBO,EAAsBC,EAAQ,CAAC,EAOtD,OAAwBC,EAA0BC,EAAM,EAAG,CAAiBC,GAAU,EAAG,GAAO,CAAC,CAAC,EAElG,OAAwBH,EAAQ,EAEhC,IAAI,KAAM,CACN,OAAuBC,EAA0BF,EAAMK,EAAY,EAAG,CAClDC,EAAY,EAAG,GAAG,CACtC,CAAC,CACL,EAMA,SAA0Bd,EAAyBS,EAAQ,CAAC,EAE5D,OAAwBP,EAAQ,EAEhC,KAAsBC,EAAU,EAKhC,IAAqBY,EAAU,EAE/B,IAAqBX,EAAQ,EAE7B,MAAuBY,EAAyBD,EAAU,CAAC,EAE3D,KAAsBT,EAAe,EAKrC,OAAwBJ,EAAQ,CACpC,CAAC,EACKe,GAAkClB,EAAO,CAC3C,MAAuBC,EAAyBC,EAAQ,0CAA0C,CAAC,EACnG,IAAqBE,EAAU,EAM/B,OAAwBH,EAAyBkB,EAAa,CAAC,EAC/D,IAAqBd,EAAQ,EAC7B,KAAsBE,EAAe,CACzC,CAAC,EACKa,GAA8BpB,EAAO,CACvC,MAAuBC,EAAyBC,EAAQ,sCAAsC,CAAC,EAC/F,QAAyBD,EAAyBK,EAAO,CAAC,EAC1D,KAAsBA,EAAO,CACjC,CAAC,EACKe,GAA8BC,GAAa,kCAAmC,CAChF,OAAwBtB,EAAO,CAE3B,OAAwBC,EAAyBI,EAAQ,CAAC,CAC9D,CAAC,EACD,IAAI,SAAU,CACV,OAAuBkB,EAAQ,CAACC,GAAeC,GAAcC,GAAgBC,GAAYC,EAAU,CAAC,CACxG,CACJ,CAAC,EACKC,GAAgC7B,EAAO,CACzC,MAAuBC,EAAyBC,EAAQ,wCAAwC,CAAC,EACjG,OAAwBI,EAAO,EAE/B,IAAqBW,EAAyBP,EAAQ,CAAC,EACvD,KAAsBJ,EAAO,EAK7B,KAAsBL,EAAyBS,EAAQ,CAAC,CAC5D,CAAC,EACKoB,GAA8B9B,EAAO,CACvC,MAAuBC,EAAyBC,EAAQ,sCAAsC,CAAC,EAO/F,OAAwBS,EAA0BC,EAAM,EAAG,CAAiBC,GAAU,EAAG,GAAK,CAAC,CAAC,EAEhG,IAAqBT,EAAU,EAE/B,IAAqBE,EAAO,EAE5B,IAAqBD,EAAQ,EAE7B,KAAsBE,EAAe,CACzC,CAAC,EACYiB,GAAgBzB,GAChB0B,GAAejB,GACfkB,GAAiBR,GACjBS,GAAaP,GACbW,GAAaV,GACbP,GAAee,GACfD,GAAaE,GD7F1B,IAAME,GAAsB,IAAI,IAAI,CAClC,0BACA,uCACA,4BACA,+BACF,CAAC,EASKC,EAAN,cAAmCC,EAAyB,CAxC5D,MAwC4D,CAAAC,EAAA,6BAC1D,OAAO,KAAO,qCAEdC,GAGAC,GAAiB,QAAQ,cAAc,EAGvCC,GAAkB,QAAQ,cAAc,EAGxCC,GAAO,KAGPC,GAAS,KAGTC,GAAU,KAEV,aAAc,CACZ,MAAM,EAGN,KAAKL,GAAWM,GAAc,CAC5B,KAAMP,EAAA,UACJ,MAAM,KAAKG,GAAgB,QACpB,IAFH,QAIN,OAAQ,KAAKK,GAAkB,yBAAyB,EACxD,cAAe,KAAKC,GAClB,uCACA,CAAE,QAAS,UAAW,CACxB,EACA,SAAU,KAAKD,GAAkB,2BAA2B,EAC5D,OAAQ,KAAKC,GAAgB,gCAAiC,CAC5D,QAAS,SACT,MAAOT,EAACU,GAAS,CACf,IAAMC,EAAM,OAC8BD,EAAM,KAAU,EAC1D,EACME,EAAQD,EAAI,QAAQ,GAAG,EAC7B,OAAOC,EAAQ,EAAID,EAAI,UAAU,EAAGC,CAAK,EAAI,MAC/C,EANO,QAOT,CAAC,CACH,CAAC,EAED,KAAK,OAAS,KAAKX,GAAS,OAC5B,KAAK,cAAgB,KAAKA,GAAS,cACnC,KAAK,SAAW,KAAKA,GAAS,SAC9B,KAAK,OAAS,KAAKA,GAAS,MAC9B,CAIAY,GAAOC,EAAwD,IAAK,EACpEC,GAAUD,EAAqC,IAAK,EACpDE,GAAYF,EAAO,UAAU,MAAM,EACnCG,GAAOH,EAAqC,IAAK,EACjDI,GAAeJ,EAAgF,IAAK,EAGpGK,GAAoB,KACpBC,GAAe,EACfC,GAAW,EAGXC,GAAc,CAAC,EACfC,GAAiB,GAEjBC,GAAgB,IAAI,IAEpB,IAAM,KAAKX,GAAK,IAChB,OAAS,KAAKE,GAAQ,IACtB,IAAM,KAAKE,GAAK,IAChB,YAAc,KAAKC,GAAa,IAEhC,MAAQO,GAAS,IACR,KAAKZ,GAAK,QAAU,MAAQ,CAAC,CAAC,KAAKT,IAAQ,KAAKY,GAAU,KAClE,EAKD,mBAAoB,CAClB,KAAK,mBAAmB,KAAKf,EAAQ,EAErC,MAAM,kBAAkB,EAExB,KAAKyB,GAAY,EAEjB,WAAW,iBAAiB,SAAU,KAAKC,EAAO,EAClD,WAAW,iBAAiB,UAAW,KAAKC,EAAQ,CACtD,CAGA,sBAAuB,CACrB,KAAKC,GAAc,EACnB,WAAW,oBAAoB,SAAU,KAAKF,EAAO,EACrD,WAAW,oBAAoB,UAAW,KAAKC,EAAQ,CACzD,CAEAA,GAAW5B,EAAA,IAAM,KAAKgB,GAAU,IAAI,EAAK,EAA9B,YACXW,GAAU3B,EAAA,IAAM,KAAKgB,GAAU,IAAI,EAAI,EAA7B,WAUV,MAAM,MAAMc,EAAQ,CAClB,MAAMC,GAAMD,CAAM,CACpB,CAKA,cAAe,CACb,OAAO,KAAK3B,GAAgB,OAC9B,CAKA,MAAM,QAAS,CACT,KAAKE,KACP,KAAKwB,GAAc,EACnB,MAAMG,GAAO,KAAK3B,EAAM,EACxB,KAAKA,GAAS,KACd,KAAKH,GAAiB,QAAQ,cAAc,EAC5C,KAAKW,GAAK,MAAQ,KAClB,KAAKE,GAAQ,MAAQ,KACrB,KAAKT,GAAU,KACf,KAAKF,GAAO,KAEhB,CAMA6B,IAAgB,CACd,KAAKJ,GAAc,EACnB,KAAKxB,GAAS,KACd,KAAKH,GAAiB,QAAQ,cAAc,EAC5C,KAAKW,GAAK,MAAQ,KAClB,KAAKE,GAAQ,MAAQ,KACrB,KAAKT,GAAU,KACf,KAAKF,GAAO,KAEZ8B,GAAmB,CACrB,CAMAC,GAAgBC,EAAK,CAInB,OAHIA,aAAeC,IAGfD,aAAeE,IAAuBF,EAAI,SAAW,IAAY,GACjEA,GAAO,OAAOA,GAAQ,UAAY,UAAWA,EACxC,KAAKD,GAC0BC,EAAM,KAC5C,EAEK,EACT,CAEA,KAAMV,IAAc,CAClB,MAAM,KAAK,cAAc,EAEzB,GAAI,CACF,IAAMa,EAAU,MAAMC,GAAkB,EAEpCD,GACF,KAAKE,GAAYF,CAAO,CAE5B,OAASH,EAAK,CACZ,GAAI,KAAKD,GAAgBC,CAAG,EAC1B,KAAKH,GAAc,MAEnB,OAAMG,CAEV,QAAE,CACA,KAAKjC,GAAgB,QAAQ,CAC/B,CACF,CAKAsC,GAAYF,EAAS,CACnB,IAAMG,EAAQ,IAAIC,GAAeJ,CAAO,EAKlCK,EAAqBF,EAAM,WAAW,KAAKA,CAAK,EACtDA,EAAM,YAAuD,IAAIG,IAAS,CACxE,IAAMC,EAAUF,EAAmB,GAAGC,CAAI,EAE1C,OAAAC,EAAQ,MAAOV,GAAQ,CACjBA,aAAeC,IACjB,KAAKJ,GAAc,CAEvB,CAAC,EAEMa,CACT,GAEA,KAAKzC,GAASqC,EACd,KAAKtC,GAAO,IAAI2C,GAAO,CAAE,QAASL,CAAM,CAAC,EACzC,KAAK7B,GAAK,MAAQ0B,EAAQ,KAAK,IAC/B,KAAKjC,GAAUiC,EAAQ,KAAK,IAC5B,KAAKrC,GAAe,QAAQ,EAC5B,KAAK8C,GAAaT,EAAQ,KAAK,GAAG,EAClC,KAAKU,GAAe,CACtB,CAIApB,IAAgB,CACd,IAAMqB,EAAO,KAAK/B,GAClB,KAAKA,GAAoB,KACzB+B,GAAM,SAAS,CACjB,CAEA,KAAMD,IAAiB,CACrB,KAAKpB,GAAc,EAEnB,IAAMsB,EAAM,EAAE,KAAK/B,GACbgC,EAAS,KAAK9C,GACpB,GAAI,CAAC8C,EAAQ,OAEb,IAAMC,EAASD,EAAO,QACpB,eACCE,GAAMA,IAAM,WAAa,SAAW,OACvC,EAEM,CAAE,qBAAAC,CAAqB,EAAI,KAAM,QAAO,oBAAkB,EAEhE,GAAI,KAAKnC,KAAiB+B,EAAK,OAQ/B,IAAMD,EANe,IAAIK,EAAqB,CAC5C,QAASF,EACT,KAAMG,GAA6B,WACnC,eAAgB,EAClB,CAAC,EAEyB,OAAO,aAAa,EAAE,EAChD,KAAKrC,GAAoB+B,EAEzB,GAAI,CACF,cAAiBO,KAAWP,EAC1B,KAAKQ,GAAsBD,CAAO,CAEtC,MAAQ,CAER,CACF,CAKAC,GAAsBD,EAAS,CAC7B,GAAIA,EAAQ,QAAU,yCAA0C,OAEhE,IAAME,EACyEF,EAI/E,GAFIE,EAAO,OAAS,KAAK9C,GAAK,OAC1B8C,EAAO,MAAQ,KAAK1C,GAAK,OACzB,KAAKI,GAAW,EAAG,OAEvB,IAAMuC,EAAU,IAAI,KACjBD,EAAO,KAAO,CAAC,GACb,IAAKE,GAAOA,EAAG,MAAM,MAAM,GAAG,EAAE,CAAC,CAAC,EAClC,OAAQC,GAAMjE,GAAoB,IAAIiE,CAAC,CAAC,CAC7C,EAEIF,EAAQ,OAAS,IAErB,KAAK1C,GAAa,MAAQ,CAAE,IAAKyC,EAAO,IAAK,YAAaC,CAAQ,EACpE,CAKA,KAAMZ,GAAae,EAAK,CACtB,IAAMC,EAAM,KAAK5D,GACjB,GAAK4D,EACL,GAAI,CACF,IAAMC,EAAS,MAAMC,EAAGF,EAAI,IAAI,gCAAiC,CAC/D,OAAQ,CACN,KAAiED,CACnE,CACF,CAAC,CAAC,EACE,KAAKlD,GAAK,QAAUkD,IACtB,KAAKhD,GAAQ,MAAQkD,GAAQ,QAAU,KAE3C,MAAQ,CAER,CACF,CAaAzD,GAAkB2D,EAAM,CAEtB,IAAIC,EAAY,KAEhB,MAAO,CACL,MAAOpE,EAAA,IAAM,CAAC,EAAP,SACP,IAAKA,EAAA,SAAY,CACf,IAAMqE,EAAU,MAAM,KAAK,YAAYF,CAAI,EAC3C,OAAAC,EAAY,IAAI,IACiCC,EAAS,IAAKC,GAAM,CACjE,OAAOA,EAAE,EAAK,EACdA,CACF,CAAC,CACH,EACOD,CACT,EATK,OAUL,IAAKrE,EAAA,MAAgCuE,GAAS,CAC5C,IAAMC,EAA4DL,EAG5DM,EAAU,IAAI,IACoBF,EAAM,IAAKD,GAAM,CACrDA,EAAE,GACsC,CAAE,MAAOE,EAAW,GAAGF,CAAE,CACnE,CAAC,CACH,EAEMI,EAAQN,GAAa,IAAI,IAGzBO,EAAU,CAAC,EACjB,OAAW,CAACC,EAAIC,CAAM,IAAKJ,EAAS,CAClC,IAAMK,EAAWJ,EAAM,IAAIE,CAAE,EACzBE,GAAY,KAAK,UAAUA,CAAQ,IAAM,KAAK,UAAUD,CAAM,GAGlEF,EAAQ,KAAK,CAACC,EAAIC,CAAM,CAAC,CAC3B,CAGA,IAAME,EAAU,CAAC,EACjB,QAAWH,KAAMF,EAAM,KAAK,EACrBD,EAAQ,IAAIG,CAAE,GACjBG,EAAQ,KAAK,CACX,MAAO,sCACP,WAAYP,EACZ,KAAMI,CACR,CAAC,EAIL,GAAID,EAAQ,SAAW,GAAKI,EAAQ,SAAW,EAAG,OAElD,IAAMC,EAAW,IAAI,IAAIN,CAAK,EAC9B,OAAW,CAACE,EAAIC,CAAM,IAAKF,EAASK,EAAS,IAAIJ,EAAIC,CAAM,EAC3D,OAAW,CAAE,KAAAI,CAAK,IAAKF,EAASC,EAAS,OAAOC,CAAI,EAEpD,IAAMC,EAAQ,KAAK1D,GAAc,IAAI2C,CAAI,EACrCe,IAAOA,EAAM,UAAY,IAC7B,IAAMC,EAAQ,CAAE,UAAW,EAAM,EACjC,KAAK3D,GAAc,IAAI2C,EAAMgB,CAAK,EAElC,MAAM,KAAKC,GAAc,SAAY,CACnC,GAAID,EAAM,UAAW,OACrB,IAAMnB,EAAM,KAAK5D,GACX2D,EAAM,KAAKlD,GAAK,MACtB,GAAI,GAACmD,GAAO,CAACD,GACb,MAAK1C,KACL,GAAI,CACF,OAAW,CAAC4D,EAAMJ,CAAM,IAAKF,EAAS,CACpC,IAAMV,EAAS,MAAMC,EAAGF,EAAI,KAAK,6BAA8B,CAC7D,MAAO,CAAE,KAAMD,EAAK,WAAYS,EAAW,KAAAS,EAAM,OAAAJ,CAAO,CAC1D,CAAC,CAAC,EACEZ,GAAQ,QAAQ,MAAK,KAAKhD,GAAK,MAAQgD,EAAO,OAAO,IAC3D,CACA,QAASoB,EAAI,EAAGA,EAAIN,EAAQ,OAAQM,GAAK,IAAK,CAC5C,IAAMpB,EAAS,MAAMC,EAAGF,EAAI,KAAK,+BAAgC,CAC/D,MAAO,CAAE,KAAMD,EAAK,OAAQgB,EAAQ,MAAMM,EAAGA,EAAI,GAAG,CAAE,CACxD,CAAC,CAAC,EACEpB,GAAQ,QAAQ,MAAK,KAAKhD,GAAK,MAAQgD,EAAO,OAAO,IAC3D,CACAG,EAAYY,CACd,OAAS5C,EAAK,CACZ,GAAI,KAAKD,GAAgBC,CAAG,EAAG,CAAE,KAAKH,GAAc,EAAG,MAAQ,CAC/D,MAAMG,CACR,QAAE,CACA,KAAKf,KACD,KAAKG,GAAc,IAAI2C,CAAI,IAAMgB,GACnC,KAAK3D,GAAc,OAAO2C,CAAI,CAElC,EACF,CAAC,CACH,EA5EK,MA6EP,CACF,CAaA1D,GAAgB0D,EAAM,CAAE,QAAAmB,EAAS,MAAAC,CAAM,EAAwB,CAAC,EAAI,CAElE,IAAIC,EAAa,IAAI,IAEjBC,EAAY,IAAI,IAEpB,MAAO,CACH,MAAOzF,EAAA,IAAgC,CAAC,EAAjC,SACP,IAAKA,EAAA,SAAY,CACf,IAAM0F,EAAU,MAAM,KAAK,YAAYvB,CAAI,EAErCwB,EAAQ,CAAC,EAETC,EAAY,IAAI,IAEhBC,EAAW,IAAI,IAErB,QAAWC,KAAUJ,EAAS,CAC5B,GAAI,CAACI,EAAO,MAAM,KAAK,MAAO,SAE9B,IAAMC,EACoCD,EAAQR,CAAO,EACzD,GAAI,OAAOS,GAAQ,SAAU,SAE7B,IAAMC,EAAQ,MAAM,KAAKC,GAAWH,EAAO,KAAK,IAAI,KAAK,EACnDI,EAAuCC,GAAOH,CAAK,EACpD,MAAM,QAAQE,CAAU,IAE7BP,EAAM,KAAK,GAAGO,CAAU,EAIxBN,EAAU,IAAIG,EAAKK,EAAOC,EAAOH,CAAU,CAAC,EAAE,SAAS,EAAE,CAAC,EAC1DL,EAAS,IAAIE,EAAKD,EAAO,IAAI,EAC/B,CAIA,OAAAN,EAAaI,EACbH,EAAYI,EACLF,CACT,EAjCK,OAkCL,IAAK3F,EAAA,MAAgCuE,GAAS,CAC5C,IAAMC,EAC4CL,EAE5CmC,EAAaf,IACQ7E,GAEmBA,EAAM4E,CAAO,GAIrDiB,EAAS,IAAI,IACnB,QAAW7F,KAAQ6D,EAAM,CACvB,IAAMwB,EAAMO,EAAW5F,CAAI,EAC3B,GAAI,OAAOqF,GAAQ,SAAU,SAC7B,IAAMS,EAAQD,EAAO,IAAIR,CAAG,GAAK,CAAC,EAC7BQ,EAAO,IAAIR,CAAG,GAAGQ,EAAO,IAAIR,EAAKS,CAAK,EAC3CA,EAAM,KAAK9F,CAAI,CACjB,CAGA,IAAMkF,EAAY,IAAI,IAAIJ,CAAU,EAC9BK,EAAW,IAAI,IAAIJ,CAAS,EAI5Bd,EAAU,CAAC,EAEjB,OAAW,CAACoB,EAAKG,CAAU,IAAKK,EAAQ,CACtC,IAAMP,EAAQK,EAAOH,CAAU,EACzBO,EAAOL,EAAOJ,CAAK,EAAE,SAAS,EAAE,EAEtC,GAAIR,EAAW,IAAIO,CAAG,IAAMU,GAAQhB,EAAU,IAAIM,CAAG,EAAG,SAExD,IAAMW,EAAO,MAAM,KAAKC,GAAYX,CAAK,EACzC,GAAI,CAACU,EAAM,SAEX,IAAMzB,GAAOmB,EAAOC,EAAON,CAAG,CAAC,EAAE,SAAS,EAAE,EACtCa,GAAQ,CACZ,MAAOpC,EACP,GAAIS,GACJ,CAACK,CAAO,EAAGS,EACX,KAAMW,CACR,EACA/B,EAAQ,KAAK,CAAE,KAAAM,GAAM,MAAA2B,EAAM,CAAC,EAC5BhB,EAAU,IAAIG,EAAKU,CAAI,EACvBZ,EAAS,IAAIE,EAAKW,CAAI,CACxB,CAGA,IAAM3B,EAAU,CAAC,EACjB,QAAWgB,KAAOP,EAAW,KAAK,EAChC,GAAI,CAACe,EAAO,IAAIR,CAAG,EAAG,CACpB,IAAMd,EAAOmB,EAAOC,EAAON,CAAG,CAAC,EAAE,SAAS,EAAE,EAC5ChB,EAAQ,KAAK,CACX,MAAO,sCACP,WAAYP,EACZ,KAAAS,CACF,CAAC,EACDW,EAAU,OAAOG,CAAG,EACpBF,EAAS,OAAOE,CAAG,CACrB,CAGEpB,EAAQ,SAAW,GAAKI,EAAQ,SAAW,IAE/C,MAAM,KAAKK,GAAc,SAAY,CACnC,IAAMpB,EAAM,KAAK5D,GACX2D,EAAM,KAAKlD,GAAK,MACtB,GAAI,GAACmD,GAAO,CAACD,GACb,MAAK1C,KACL,GAAI,CAEF,OAAW,CAAE,KAAA4D,EAAM,MAAA2B,CAAM,IAAKjC,EAAS,CACrC,IAAMV,EAAS,MAAMC,EAAGF,EAAI,KAAK,6BAA8B,CAC7D,MAAO,CACL,KAAMD,EACN,WAAYS,EACZ,KAAAS,EACA,OAAgD2B,CAClD,CACF,CAAC,CAAC,EACE3C,GAAQ,QAAQ,MAAK,KAAKhD,GAAK,MAAQgD,EAAO,OAAO,IAC3D,CACA,QAASoB,EAAI,EAAGA,EAAIN,EAAQ,OAAQM,GAAK,IAAK,CAC5C,IAAMpB,EAAS,MAAMC,EACnBF,EAAI,KAAK,+BAAgC,CACvC,MAAO,CAAE,KAAMD,EAAK,OAAQgB,EAAQ,MAAMM,EAAGA,EAAI,GAAG,CAAE,CACxD,CAAC,CACH,EACIpB,GAAQ,QAAQ,MAAK,KAAKhD,GAAK,MAAQgD,EAAO,OAAO,IAC3D,CACF,OAAS7B,EAAK,CACZ,GAAI,KAAKD,GAAgBC,CAAG,EAAG,CAC7B,KAAKH,GAAc,EACnB,MACF,CACA,MAAMG,CACR,QAAE,CACA,KAAKf,IACP,EACF,CAAC,EAEDmE,EAAaI,EACbH,EAAYI,EACd,EAzGK,MA0GT,CACF,CAQA,MAAM,iBAAkB,CACtB,IAAM9B,EAAM,KAAKlD,GAAK,MAEhBmD,EAAM,KAAK5D,GACjB,GAAI,CAAC4D,GAAO,CAACD,EAAK,OAAO,KAEzB,GAAI,CACF,IAAME,EAAS,MAAMC,EAAGF,EAAI,IAC1B,mCACA,CAAE,OAAQ,CAAE,IAAAD,CAAI,CAAE,CACpB,CAAC,EAED,YAAK9C,GAAK,MAAQgD,GAAQ,IACnBA,GAAQ,GACjB,OAAS7B,EAAK,CACZ,GAAI,KAAKD,GAAgBC,CAAG,EAC1B,YAAKH,GAAc,EACZ,KAGT,MAAMG,CACR,CACF,CAGA,KAAMuE,GAAYX,EAAO,CACvB,IAAMhC,EAAM,KAAK5D,GACjB,OAAK4D,GACU,MAAME,EAAGF,EAAI,KAAK,8BAA+B,CAC9D,MAAOgC,EACP,QAAS,CAAE,eAAgB,0BAA2B,CACxD,CAAC,CAAC,IACa,KALL,MAMZ,CAMA,KAAMC,GAAWY,EAAK,CACpB,IAAM7C,EAAM,KAAK5D,GACX2D,EAAM,KAAKlD,GAAK,MACtB,MAAI,CAACmD,GAAO,CAACD,EAAY,IAAI,WACtB,MAAMG,EAAGF,EAAI,IAAI,2BAA4B,CAClD,OAAQ,CAAE,IAAAD,EAAK,IAAA8C,CAAI,EACnB,GAAI,OACN,CAAC,CAAC,CACJ,CAQA,MAAM,YAAYC,EAAY/C,EAAK,CAGjC,GAFAA,IAAQ,KAAKlD,GAAK,OAAS,OAEvB,CAAC,KAAKT,IAAQ,CAAC2D,EAAK,MAAO,CAAC,EAEhC,GAAI,CACF,IAAMM,EAAU,CAAC,EAEb0C,EACJ,EAAG,CACD,IAAMC,EAEF,MAAM9C,EAAG,KAAK9D,GAAK,IAAI,+BAAgC,CACrD,OAAQ,CACN,KAC6D2D,EAC7D,WACkD+C,EAClD,MAAO,IACP,OAAAC,CACF,CACF,CAAC,CAAC,EAEN1C,EAAQ,KAAK,GAAG2C,EAAK,QAAQ,IAAK1C,GAAwBA,EAAE,KAAM,CAAC,EACnEyC,EAASC,EAAK,MAChB,OAASD,GACT,OAAO1C,CACT,OAASjC,EAAK,CACZ,GAAI,KAAKD,GAAgBC,CAAG,EAC1B,YAAKH,GAAc,EACZ,CAAC,EAGV,MAAMG,CACR,CACF,CAQAgD,GAAc6B,EAAI,CAChB,OAAO,IAAI,QAAQ,CAACC,EAASC,IAAW,CACtC,KAAK7F,GAAY,KAAK,CAAE,GAAA2F,EAAI,QAAAC,EAAS,OAAAC,CAAO,CAAC,EAC7C,KAAKC,GAAa,CACpB,CAAC,CACH,CAEA,KAAMA,IAAe,CACnB,GAAI,MAAK7F,GAGT,KAFA,KAAKA,GAAiB,GAEf,KAAKD,GAAY,OAAS,GAAG,CAClC,GAAM,CAAE,GAAA2F,EAAI,QAAAC,EAAS,OAAAC,CAAO,EAExB,KAAK7F,GAAY,MAAM,EAE3B,GAAI,CACF,MAAM2F,EAAG,EACTC,EAAQ,CACV,OAAS9E,EAAK,CACZ+E,EAAO/E,CAAG,CACZ,CACF,CAEA,KAAKb,GAAiB,GACxB,CAEF,EAEO8F,GAAQvH,EAMFwH,GAAQxH,EACRyH,GAAO,sBAEpBC,GAAcD,GAAMzH,CAAoB","names":["element_exports","__export","CLASS","NAME","element_default","subscribeRepos_exports","__export","accountSchema","commitSchema","identitySchema","infoSchema","mainSchema","repoOpSchema","syncSchema","_accountSchema","object","optional","literal","boolean","didString","integer","string","datetimeString","_commitSchema","array","cidLink","constrain","bytes","bytesSize","repoOpSchema","arrayLength","tidString","nullable","_identitySchema","handleString","_infoSchema","_mainSchema","subscription","variant","accountSchema","commitSchema","identitySchema","infoSchema","syncSchema","_repoOpSchema","_syncSchema","mainSchema","WATCHED_COLLECTIONS","ATProtoPasskeyOutput","BroadcastedOutputElement","__name","#manager","#authenticated","#restoreSettled","#rpc","#agent","#pdsUrl","outputManager","#recordCollection","#blobCollection","item","uri","colon","#did","signal","#handle","#isOnline","#rev","#firehoseRev","#firehoseIterator","#firehoseGen","#writing","#writeQueue","#writeDraining","#writeCancels","computed","#tryRestore","#online","#offline","#stopFirehose","handle","login","logout","#clearSession","clearStoredSession","#isSessionError","err","TokenRefreshError","ClientResponseError","session","restoreOrFinalize","#setSession","agent","OAuthUserAgent","originalGetSession","args","promise","Client","#fetchHandle","#startFirehose","iter","gen","pdsUrl","wssUrl","m","FirehoseSubscription","subscribeRepos_exports","message","#handleFirehoseCommit","commit","touched","op","c","did","rpc","result","ok","nsid","lastKnown","records","r","data","nsidTyped","desired","known","upserts","id","record","existing","deletes","newKnown","rkey","prior","token","#enqueueWrite","i","groupBy","keyOf","lastHashes","lastBlobs","bundles","items","newHashes","newBlobs","bundle","key","bytes","#fetchBlob","groupItems","decode","xxh32r","encode","extractKey","groups","group","hash","blob","#uploadBlob","value","cid","collection","cursor","page","fn","resolve","reject","#drainWrites","element_default","CLASS","NAME","defineElement"],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse","file":"/chunk-3POXLCM6.js.map"} \ No newline at end of file +{"version":3,"sources":["/components/output/raw/atproto-passkey/element.js","/node_modules/.deno/@atcute+atproto@4.0.4/node_modules/@atcute/atproto/dist/lexicons/types/com/atproto/sync/subscribeRepos.js"],"sourcesContent":["import { Client, ClientResponseError, ok } from \"@atcute/client\";\nimport { ComAtprotoSyncSubscribeRepos } from \"@atcute/atproto\";\nimport { decode, encode } from \"@atcute/cbor\";\nimport { xxh32r } from \"xxh32/dist/raw.js\";\n\nimport { computed, signal } from \"~/common/signal.js\";\nimport { BroadcastedOutputElement, outputManager } from \"../../common.js\";\nimport { defineElement } from \"~/common/element.js\";\n\nimport {\n clearStoredSession,\n login,\n logout,\n OAuthUserAgent,\n restoreOrFinalize,\n TokenRefreshError,\n} from \"./oauth.js\";\n\n/**\n * @import {OutputManager} from \"@specs/components/output/types.d.ts\"\n * @import {ATProtoPasskeyOutputElement} from \"@specs/components/output/raw/atproto-passkey/types.d.ts\"\n * @import {MessageOf} from \"@atcute/firehose\"\n * @typedef {import(\"@atcute/atproto\").ComAtprotoRepoApplyWrites.$input['writes'][number]} WriteOp\n */\n\n/** @type {Set} */\nconst WATCHED_COLLECTIONS = new Set([\n \"sh.diffuse.output.facet\",\n \"sh.diffuse.output.playlistItemBundle\",\n \"sh.diffuse.output.setting\",\n \"sh.diffuse.output.trackBundle\",\n]);\n\n////////////////////////////////////////////\n// ELEMENT\n////////////////////////////////////////////\n\n/**\n * @implements {ATProtoPasskeyOutputElement}\n */\nclass ATProtoPasskeyOutput extends BroadcastedOutputElement {\n static NAME = \"diffuse/output/raw/atproto-passkey\";\n\n #manager;\n\n /** @type {PromiseWithResolvers} */\n #authenticated = Promise.withResolvers();\n\n /** @type {PromiseWithResolvers} */\n #restoreSettled = Promise.withResolvers();\n\n /** @type {Client | null} */\n #rpc = null;\n\n /** @type {OAuthUserAgent | null} */\n #agent = null;\n\n /** @type {string | null} */\n #pdsUrl = null;\n\n constructor() {\n super();\n\n /** @type {OutputManager} */\n this.#manager = outputManager({\n init: async () => {\n await this.#restoreSettled.promise;\n return true;\n },\n facets: this.#recordCollection(\"sh.diffuse.output.facet\"),\n playlistItems: this.#blobCollection(\n \"sh.diffuse.output.playlistItemBundle\",\n { groupBy: \"playlist\" },\n ),\n settings: this.#recordCollection(\"sh.diffuse.output.setting\"),\n tracks: this.#blobCollection(\"sh.diffuse.output.trackBundle\", {\n groupBy: \"scheme\",\n keyOf: (item) => {\n const uri = String(\n /** @type {Record} */ (item)[\"uri\"] ?? \"\",\n );\n const colon = uri.indexOf(\":\");\n return colon > 0 ? uri.substring(0, colon) : undefined;\n },\n }),\n });\n\n this.facets = this.#manager.facets;\n this.playlistItems = this.#manager.playlistItems;\n this.settings = this.#manager.settings;\n this.tracks = this.#manager.tracks;\n }\n\n // SIGNALS\n\n #did = signal(/** @type {`did:${string}:${string}` | null} */ (null));\n #handle = signal(/** @type {string | null} */ (null));\n #isOnline = signal(navigator.onLine);\n #rev = signal(/** @type {string | null} */ (null));\n #firehoseRev = signal(/** @type {{ rev: string, collections: ReadonlySet } | null} */ (null));\n\n /** @type {AsyncIterator | null} */\n #firehoseIterator = null;\n #firehoseGen = 0;\n #writing = 0;\n\n /** @type {Array<{ fn: () => Promise, resolve: () => void, reject: (err: unknown) => void }>} */\n #writeQueue = [];\n #writeDraining = false;\n /** @type {Map} */\n #writeCancels = new Map();\n\n did = this.#did.get;\n handle = this.#handle.get;\n rev = this.#rev.get;\n firehoseRev = this.#firehoseRev.get;\n\n ready = computed(() => {\n return this.#did.value !== null && !!this.#rpc && this.#isOnline.value;\n });\n\n // LIFECYCLE\n\n /** @override */\n connectedCallback() {\n this.replicateSavedData(this.#manager);\n\n super.connectedCallback();\n\n this.#tryRestore();\n\n globalThis.addEventListener(\"online\", this.#online);\n globalThis.addEventListener(\"offline\", this.#offline);\n }\n\n /** @override */\n disconnectedCallback() {\n this.#stopFirehose();\n globalThis.removeEventListener(\"online\", this.#online);\n globalThis.removeEventListener(\"offline\", this.#offline);\n }\n\n #offline = () => this.#isOnline.set(false);\n #online = () => this.#isOnline.set(true);\n\n // AUTH\n\n /**\n * Initiate the OAuth flow.\n * Navigates the browser to the authorization server.\n *\n * @param {string} handle\n */\n async login(handle) {\n await login(handle);\n }\n\n /**\n * @returns {Promise}\n */\n whenRestored() {\n return this.#restoreSettled.promise;\n }\n\n /**\n * Sign out and revoke the current session.\n */\n async logout() {\n if (this.#agent) {\n this.#stopFirehose();\n await logout(this.#agent);\n this.#agent = null;\n this.#authenticated = Promise.withResolvers();\n this.#did.value = null;\n this.#handle.value = null;\n this.#pdsUrl = null;\n this.#rpc = null;\n }\n }\n\n /**\n * Clear session state without contacting the server.\n * Used when the session has already been revoked.\n */\n #clearSession() {\n this.#stopFirehose();\n this.#agent = null;\n this.#authenticated = Promise.withResolvers();\n this.#did.value = null;\n this.#handle.value = null;\n this.#pdsUrl = null;\n this.#rpc = null;\n\n clearStoredSession();\n }\n\n /**\n * @param {unknown} err\n * @returns {boolean}\n */\n #isSessionError(err) {\n if (err instanceof TokenRefreshError) return true;\n // OAuthUserAgent.handle() swallows TokenRefreshError and returns the\n // original 401 response, which ok() wraps as a ClientResponseError.\n if (err instanceof ClientResponseError && err.status === 401) return true;\n if (err && typeof err === \"object\" && \"cause\" in err) {\n return this.#isSessionError(\n (/** @type {{ cause: unknown }} */ (err)).cause,\n );\n }\n return false;\n }\n\n async #tryRestore() {\n await this.whenConnected();\n\n try {\n const session = await restoreOrFinalize();\n\n if (session) {\n this.#setSession(session);\n }\n } catch (err) {\n if (this.#isSessionError(err)) {\n this.#clearSession();\n } else {\n throw err;\n }\n } finally {\n this.#restoreSettled.resolve();\n }\n }\n\n /**\n * @param {import(\"@atcute/oauth-browser-client\").Session} session\n */\n #setSession(session) {\n const agent = new OAuthUserAgent(session);\n\n // Intercept token refresh to detect session revocation proactively.\n // OAuthUserAgent.handle() swallows TokenRefreshError silently,\n // so we hook into getSession to clear state as soon as refresh fails.\n const originalGetSession = agent.getSession.bind(agent);\n agent.getSession = /** @type {typeof originalGetSession} */ ((...args) => {\n const promise = originalGetSession(...args);\n\n promise.catch((err) => {\n if (err instanceof TokenRefreshError) {\n this.#clearSession();\n }\n });\n\n return promise;\n });\n\n this.#agent = agent;\n this.#rpc = new Client({ handler: agent });\n this.#did.value = session.info.sub;\n this.#pdsUrl = session.info.aud;\n this.#authenticated.resolve();\n this.#fetchHandle(session.info.sub);\n this.#startFirehose();\n }\n\n // FIREHOSE\n\n #stopFirehose() {\n const iter = this.#firehoseIterator;\n this.#firehoseIterator = null;\n iter?.return?.();\n }\n\n async #startFirehose() {\n this.#stopFirehose();\n\n const gen = ++this.#firehoseGen;\n const pdsUrl = this.#pdsUrl;\n if (!pdsUrl) return;\n\n const wssUrl = pdsUrl.replace(\n /^https?:\\/\\//,\n (m) => m === \"https://\" ? \"wss://\" : \"ws://\",\n );\n\n const { FirehoseSubscription } = await import(\"@atcute/firehose\");\n\n if (this.#firehoseGen !== gen) return;\n\n const subscription = new FirehoseSubscription({\n service: wssUrl,\n nsid: ComAtprotoSyncSubscribeRepos.mainSchema,\n validateEvents: false,\n });\n\n const iter = subscription[Symbol.asyncIterator]();\n this.#firehoseIterator = iter;\n\n try {\n for await (const message of iter) {\n this.#handleFirehoseCommit(message);\n }\n } catch {\n // Non-fatal; partysocket handles reconnection automatically\n }\n }\n\n /**\n * @param {MessageOf} message\n */\n #handleFirehoseCommit(message) {\n if (message.$type !== \"com.atproto.sync.subscribeRepos#commit\") return;\n\n const commit =\n /** @type {{ repo: string, rev: string, ops?: Array<{ path: string }> }} */ (message);\n\n if (commit.repo !== this.#did.value) return;\n if (commit.rev === this.#rev.value) return;\n if (this.#writing > 0) return;\n\n const touched = new Set(\n (commit.ops ?? [])\n .map((op) => op.path?.split(\"/\")[0])\n .filter((c) => WATCHED_COLLECTIONS.has(c)),\n );\n\n if (touched.size === 0) return;\n\n this.#firehoseRev.value = { rev: commit.rev, collections: touched };\n }\n\n /**\n * @param {string} did\n */\n async #fetchHandle(did) {\n const rpc = this.#rpc;\n if (!rpc) return;\n try {\n const result = await ok(rpc.get(\"com.atproto.repo.describeRepo\", {\n params: {\n repo: /** @type {import(\"@atcute/lexicons\").ActorIdentifier} */ (did),\n },\n }));\n if (this.#did.value === did) {\n this.#handle.value = result?.handle ?? null;\n }\n } catch {\n // Non-fatal; handle stays null\n }\n }\n\n // RECORDS\n\n /**\n * Returns `{ empty, get, put }` for a small record collection (facets, settings).\n *\n * Tracks last-known remote state in closure so `put()` skips the `listRecords`\n * round-trip on every write. Uses `putRecord` (upsert) to avoid create/update\n * ambiguity; batches deletes via `applyWrites`.\n *\n * @param {string} nsid\n */\n #recordCollection(nsid) {\n /** @type {Map> | null} */\n let lastKnown = null;\n\n return {\n empty: () => [],\n get: async () => {\n const records = await this.listRecords(nsid);\n lastKnown = new Map(\n /** @type {Array>} */ (records).map((r) => [\n String(r[\"id\"]),\n r,\n ]),\n );\n return records;\n },\n put: async (/** @type {unknown[]} */ data) => {\n const nsidTyped = /** @type {`${string}.${string}.${string}`} */ (nsid);\n\n /** @type {Map>} */\n const desired = new Map(\n /** @type {Array<{ id: string }>} */ (data).map((r) => [\n r.id,\n /** @type {Record} */ ({ $type: nsidTyped, ...r }),\n ]),\n );\n\n const known = lastKnown ?? new Map();\n\n /** @type {Array<[string, Record]>} */\n const upserts = [];\n for (const [id, record] of desired) {\n const existing = known.get(id);\n if (existing && JSON.stringify(existing) === JSON.stringify(record)) {\n continue;\n }\n upserts.push([id, record]);\n }\n\n /** @type {WriteOp[]} */\n const deletes = [];\n for (const id of known.keys()) {\n if (!desired.has(id)) {\n deletes.push({\n $type: \"com.atproto.repo.applyWrites#delete\",\n collection: nsidTyped,\n rkey: id,\n });\n }\n }\n\n if (upserts.length === 0 && deletes.length === 0) return;\n\n const newKnown = new Map(known);\n for (const [id, record] of upserts) newKnown.set(id, record);\n for (const { rkey } of deletes) newKnown.delete(rkey);\n\n const prior = this.#writeCancels.get(nsid);\n if (prior) prior.cancelled = true;\n const token = { cancelled: false };\n this.#writeCancels.set(nsid, token);\n\n await this.#enqueueWrite(async () => {\n if (token.cancelled) return;\n const rpc = this.#rpc;\n const did = this.#did.value;\n if (!rpc || !did) return;\n this.#writing++;\n try {\n for (const [rkey, record] of upserts) {\n const result = await ok(rpc.post(\"com.atproto.repo.putRecord\", {\n input: { repo: did, collection: nsidTyped, rkey, record },\n }));\n if (result?.commit?.rev) this.#rev.value = result.commit.rev;\n }\n for (let i = 0; i < deletes.length; i += 100) {\n const result = await ok(rpc.post(\"com.atproto.repo.applyWrites\", {\n input: { repo: did, writes: deletes.slice(i, i + 100) },\n }));\n if (result?.commit?.rev) this.#rev.value = result.commit.rev;\n }\n lastKnown = newKnown;\n } catch (err) {\n if (this.#isSessionError(err)) { this.#clearSession(); return; }\n throw err;\n } finally {\n this.#writing--;\n if (this.#writeCancels.get(nsid) === token) {\n this.#writeCancels.delete(nsid);\n }\n }\n });\n },\n };\n }\n\n /**\n * Returns `{ empty, get, put }` for a collection stored as CBOR blobs.\n * Each distinct group key gets its own bundle record.\n *\n * `groupBy` is the field name stored on the bundle record (used by `get()`\n * to reconstruct the key). `keyOf` extracts the group key from each item;\n * defaults to `item[groupBy]` when omitted.\n *\n * @param {string} nsid\n * @param {{ groupBy: string, keyOf?: (item: unknown) => string | undefined }} options\n */\n #blobCollection(nsid, { groupBy, keyOf } = /** @type {any} */ ({})) {\n /** @type {Map} groupKey → content hash */\n let lastHashes = new Map();\n /** @type {Map} groupKey → blob ref */\n let lastBlobs = new Map();\n\n return {\n empty: () => /** @type {unknown[]} */ ([]),\n get: async () => {\n const bundles = await this.listRecords(nsid);\n /** @type {unknown[]} */\n const items = [];\n /** @type {Map} */\n const newHashes = new Map();\n /** @type {Map} */\n const newBlobs = new Map();\n\n for (const bundle of bundles) {\n if (!bundle.data?.ref?.$link) continue;\n\n const key =\n /** @type {Record} */ (bundle)[groupBy];\n if (typeof key !== \"string\") continue;\n\n const bytes = await this.#fetchBlob(bundle.data.ref.$link);\n const groupItems = /** @type {unknown[]} */ (decode(bytes));\n if (!Array.isArray(groupItems)) continue;\n\n items.push(...groupItems);\n // Hash the re-encoded form so put() compares apples to apples.\n // Raw PDS bytes may not equal encode(decode(bytes)) if field order\n // or numeric encoding differs, causing spurious re-uploads.\n newHashes.set(key, xxh32r(encode(groupItems)).toString(16));\n newBlobs.set(key, bundle.data);\n }\n\n // Assign atomically after all fetches complete so a concurrent put()\n // never sees a partially-populated lastHashes and generates wrong #create ops.\n lastHashes = newHashes;\n lastBlobs = newBlobs;\n return items;\n },\n put: async (/** @type {unknown[]} */ data) => {\n const nsidTyped =\n /** @type {`${string}.${string}.${string}`} */ (nsid);\n\n const extractKey = keyOf ??\n ((/** @type {unknown} */ item) =>\n /** @type {string | undefined} */ (\n /** @type {Record} */ (item)[groupBy]\n ));\n\n /** @type {Map} */\n const groups = new Map();\n for (const item of data) {\n const key = extractKey(item);\n if (typeof key !== \"string\") continue;\n const group = groups.get(key) ?? [];\n if (!groups.has(key)) groups.set(key, group);\n group.push(item);\n }\n\n // Snapshot state so we only commit on success\n const newHashes = new Map(lastHashes);\n const newBlobs = new Map(lastBlobs);\n\n // Upload blobs for changed groups (outside write queue — not a mutation)\n /** @type {Array<{ rkey: string, value: unknown }>} */\n const upserts = [];\n\n for (const [key, groupItems] of groups) {\n const bytes = encode(groupItems);\n const hash = xxh32r(bytes).toString(16);\n\n if (lastHashes.get(key) === hash && lastBlobs.has(key)) continue;\n\n const blob = await this.#uploadBlob(bytes);\n if (!blob) continue;\n\n const rkey = xxh32r(encode(key)).toString(16);\n const value = {\n $type: nsidTyped,\n id: rkey,\n [groupBy]: key,\n data: blob,\n };\n upserts.push({ rkey, value });\n newHashes.set(key, hash);\n newBlobs.set(key, blob);\n }\n\n /** @type {WriteOp[]} */\n const deletes = [];\n for (const key of lastHashes.keys()) {\n if (!groups.has(key)) {\n const rkey = xxh32r(encode(key)).toString(16);\n deletes.push({\n $type: \"com.atproto.repo.applyWrites#delete\",\n collection: nsidTyped,\n rkey,\n });\n newHashes.delete(key);\n newBlobs.delete(key);\n }\n }\n\n if (upserts.length === 0 && deletes.length === 0) return;\n\n await this.#enqueueWrite(async () => {\n const rpc = this.#rpc;\n const did = this.#did.value;\n if (!rpc || !did) return;\n this.#writing++;\n try {\n // putRecord is a true upsert — no need to track create vs update\n for (const { rkey, value } of upserts) {\n const result = await ok(rpc.post(\"com.atproto.repo.putRecord\", {\n input: {\n repo: did,\n collection: nsidTyped,\n rkey,\n record: /** @type {Record} */ (value),\n },\n }));\n if (result?.commit?.rev) this.#rev.value = result.commit.rev;\n }\n for (let i = 0; i < deletes.length; i += 100) {\n const result = await ok(\n rpc.post(\"com.atproto.repo.applyWrites\", {\n input: { repo: did, writes: deletes.slice(i, i + 100) },\n }),\n );\n if (result?.commit?.rev) this.#rev.value = result.commit.rev;\n }\n } catch (err) {\n if (this.#isSessionError(err)) {\n this.#clearSession();\n return;\n }\n throw err;\n } finally {\n this.#writing--;\n }\n });\n\n lastHashes = newHashes;\n lastBlobs = newBlobs;\n },\n };\n }\n\n /**\n * Fetch the latest commit rev for this repo.\n * Returns `null` if not authenticated or on error.\n *\n * @returns {Promise}\n */\n async getLatestCommit() {\n const did = this.#did.value;\n\n const rpc = this.#rpc;\n if (!rpc || !did) return null;\n\n try {\n const result = await ok(rpc.get(\n \"com.atproto.sync.getLatestCommit\",\n { params: { did } },\n ));\n\n this.#rev.value = result?.rev;\n return result?.rev;\n } catch (err) {\n if (this.#isSessionError(err)) {\n this.#clearSession();\n return null;\n }\n\n throw err;\n }\n }\n\n /** @param {Uint8Array} bytes */\n async #uploadBlob(bytes) {\n const rpc = this.#rpc;\n if (!rpc) return;\n const result = await ok(rpc.post(\"com.atproto.repo.uploadBlob\", {\n input: bytes,\n headers: { \"content-type\": \"application/octet-stream\" },\n }));\n return result?.blob;\n }\n\n /**\n * @param {string} cid\n * @returns {Promise}\n */\n async #fetchBlob(cid) {\n const rpc = this.#rpc;\n const did = this.#did.value;\n if (!rpc || !did) return new Uint8Array();\n return await ok(rpc.get(\"com.atproto.sync.getBlob\", {\n params: { did, cid },\n as: \"bytes\",\n }));\n }\n\n /**\n * @template T\n * @param {string} collection\n * @param {string} [did]\n * @returns {Promise}\n */\n async listRecords(collection, did) {\n did ??= this.#did.value ?? undefined;\n\n if (!this.#rpc || !did) return [];\n\n try {\n const records = [];\n /** @type {string | undefined} */\n let cursor;\n do {\n const page =\n /** @type {{ records: { value: unknown }[], cursor?: string }} */ (\n await ok(this.#rpc.get(\"com.atproto.repo.listRecords\", {\n params: {\n repo:\n /** @type {import(\"@atcute/lexicons\").ActorIdentifier} */ (did),\n collection:\n /** @type {`${string}.${string}.${string}`} */ (collection),\n limit: 100,\n cursor,\n },\n }))\n );\n records.push(...page.records.map((r) => /** @type {T} */ (r.value)));\n cursor = page.cursor;\n } while (cursor);\n return records;\n } catch (err) {\n if (this.#isSessionError(err)) {\n this.#clearSession();\n return [];\n }\n\n throw err;\n }\n }\n\n // WRITE QUEUE\n\n /**\n * @param {() => Promise} fn\n * @returns {Promise}\n */\n #enqueueWrite(fn) {\n return new Promise((resolve, reject) => {\n this.#writeQueue.push({ fn, resolve, reject });\n this.#drainWrites();\n });\n }\n\n async #drainWrites() {\n if (this.#writeDraining) return;\n this.#writeDraining = true;\n\n while (this.#writeQueue.length > 0) {\n const { fn, resolve, reject } =\n /** @type {{ fn: () => Promise, resolve: () => void, reject: (err: unknown) => void }} */ (\n this.#writeQueue.shift()\n );\n try {\n await fn();\n resolve();\n } catch (err) {\n reject(err);\n }\n }\n\n this.#writeDraining = false;\n }\n\n}\n\nexport default ATProtoPasskeyOutput;\n\n////////////////////////////////////////////\n// REGISTER\n////////////////////////////////////////////\n\nexport const CLASS = ATProtoPasskeyOutput;\nexport const NAME = \"dor-atproto-passkey\";\n\ndefineElement(NAME, ATProtoPasskeyOutput);\n","import * as v from '@atcute/lexicons/validations';\nconst _accountSchema = /*#__PURE__*/ v.object({\n $type: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.literal('com.atproto.sync.subscribeRepos#account')),\n /** Indicates that the account has a repository which can be fetched from the host that emitted this event. */\n active: /*#__PURE__*/ v.boolean(),\n did: /*#__PURE__*/ v.didString(),\n seq: /*#__PURE__*/ v.integer(),\n /** If active=false, this optional field indicates a reason for why the account is not active. */\n status: /*#__PURE__*/ v.optional(\n /*#__PURE__*/ v.string()),\n time: /*#__PURE__*/ v.datetimeString(),\n});\nconst _commitSchema = /*#__PURE__*/ v.object({\n $type: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.literal('com.atproto.sync.subscribeRepos#commit')),\n blobs: /*#__PURE__*/ v.array(/*#__PURE__*/ v.cidLink()),\n /**\n * CAR file containing relevant blocks, as a diff since the previous repo state. The commit must be included\n * as a block, and the commit block CID must be the first entry in the CAR header 'roots' list.\n *\n * @maxLength 2000000\n */\n blocks: /*#__PURE__*/ v.constrain(/*#__PURE__*/ v.bytes(), [/*#__PURE__*/ v.bytesSize(0, 2000000)]),\n /** Repo commit object CID. */\n commit: /*#__PURE__*/ v.cidLink(),\n /** @maxLength 200 */\n get ops() {\n return /*#__PURE__*/ v.constrain(/*#__PURE__*/ v.array(repoOpSchema), [\n /*#__PURE__*/ v.arrayLength(0, 200),\n ]);\n },\n /**\n * The root CID of the MST tree for the previous commit from this repo (indicated by the 'since' revision\n * field in this message). Corresponds to the 'data' field in the repo commit object. NOTE: this field is\n * effectively required for the 'inductive' version of firehose.\n */\n prevData: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.cidLink()),\n /** DEPRECATED -- unused */\n rebase: /*#__PURE__*/ v.boolean(),\n /** The repo this event comes from. Note that all other message types name this field 'did'. */\n repo: /*#__PURE__*/ v.didString(),\n /**\n * The rev of the emitted commit. Note that this information is also in the commit object included in\n * blocks, unless this is a tooBig event.\n */\n rev: /*#__PURE__*/ v.tidString(),\n /** The stream sequence number of this message. */\n seq: /*#__PURE__*/ v.integer(),\n /** The rev of the last emitted commit from this repo (if any). */\n since: /*#__PURE__*/ v.nullable(/*#__PURE__*/ v.tidString()),\n /** Timestamp of when this message was originally broadcast. */\n time: /*#__PURE__*/ v.datetimeString(),\n /**\n * DEPRECATED -- replaced by #sync event and data limits. Indicates that this commit contained too many ops,\n * or data size was too large. Consumers will need to make a separate request to get missing data.\n */\n tooBig: /*#__PURE__*/ v.boolean(),\n});\nconst _identitySchema = /*#__PURE__*/ v.object({\n $type: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.literal('com.atproto.sync.subscribeRepos#identity')),\n did: /*#__PURE__*/ v.didString(),\n /**\n * The current handle for the account, or 'handle.invalid' if validation fails. This field is optional,\n * might have been validated or passed-through from an upstream source. Semantics and behaviors for PDS vs\n * Relay may evolve in the future; see atproto specs for more details.\n */\n handle: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.handleString()),\n seq: /*#__PURE__*/ v.integer(),\n time: /*#__PURE__*/ v.datetimeString(),\n});\nconst _infoSchema = /*#__PURE__*/ v.object({\n $type: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.literal('com.atproto.sync.subscribeRepos#info')),\n message: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.string()),\n name: /*#__PURE__*/ v.string(),\n});\nconst _mainSchema = /*#__PURE__*/ v.subscription('com.atproto.sync.subscribeRepos', {\n params: /*#__PURE__*/ v.object({\n /** The last known event seq number to backfill from. */\n cursor: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.integer()),\n }),\n get message() {\n return /*#__PURE__*/ v.variant([accountSchema, commitSchema, identitySchema, infoSchema, syncSchema]);\n },\n});\nconst _repoOpSchema = /*#__PURE__*/ v.object({\n $type: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.literal('com.atproto.sync.subscribeRepos#repoOp')),\n action: /*#__PURE__*/ v.string(),\n /** For creates and updates, the new record CID. For deletions, null. */\n cid: /*#__PURE__*/ v.nullable(/*#__PURE__*/ v.cidLink()),\n path: /*#__PURE__*/ v.string(),\n /**\n * For updates and deletes, the previous record CID (required for inductive firehose). For creations, field\n * should not be defined.\n */\n prev: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.cidLink()),\n});\nconst _syncSchema = /*#__PURE__*/ v.object({\n $type: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.literal('com.atproto.sync.subscribeRepos#sync')),\n /**\n * CAR file containing the commit, as a block. The CAR header must include the commit block CID as the first\n * 'root'.\n *\n * @maxLength 10000\n */\n blocks: /*#__PURE__*/ v.constrain(/*#__PURE__*/ v.bytes(), [/*#__PURE__*/ v.bytesSize(0, 10000)]),\n /** The account this repo event corresponds to. Must match that in the commit object. */\n did: /*#__PURE__*/ v.didString(),\n /** The rev of the commit. This value must match that in the commit object. */\n rev: /*#__PURE__*/ v.string(),\n /** The stream sequence number of this message. */\n seq: /*#__PURE__*/ v.integer(),\n /** Timestamp of when this message was originally broadcast. */\n time: /*#__PURE__*/ v.datetimeString(),\n});\nexport const accountSchema = _accountSchema;\nexport const commitSchema = _commitSchema;\nexport const identitySchema = _identitySchema;\nexport const infoSchema = _infoSchema;\nexport const mainSchema = _mainSchema;\nexport const repoOpSchema = _repoOpSchema;\nexport const syncSchema = _syncSchema;\n"],"mappings":"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","names":["element_exports","__export","CLASS","NAME","element_default","subscribeRepos_exports","__export","accountSchema","commitSchema","identitySchema","infoSchema","mainSchema","repoOpSchema","syncSchema","_accountSchema","object","optional","literal","boolean","didString","integer","string","datetimeString","_commitSchema","array","cidLink","constrain","bytes","bytesSize","repoOpSchema","arrayLength","tidString","nullable","_identitySchema","handleString","_infoSchema","_mainSchema","subscription","variant","accountSchema","commitSchema","identitySchema","infoSchema","syncSchema","_repoOpSchema","_syncSchema","mainSchema","WATCHED_COLLECTIONS","ATProtoPasskeyOutput","BroadcastedOutputElement","__name","#manager","#authenticated","#restoreSettled","#rpc","#agent","#pdsUrl","outputManager","#recordCollection","#blobCollection","item","uri","colon","#did","signal","#handle","#isOnline","#rev","#firehoseRev","#firehoseIterator","#firehoseGen","#writing","#writeQueue","#writeDraining","#writeCancels","computed","#tryRestore","#online","#offline","#stopFirehose","handle","login","logout","#clearSession","clearStoredSession","#isSessionError","err","TokenRefreshError","ClientResponseError","session","restoreOrFinalize","#setSession","agent","OAuthUserAgent","originalGetSession","args","promise","Client","#fetchHandle","#startFirehose","iter","gen","pdsUrl","wssUrl","m","FirehoseSubscription","subscribeRepos_exports","message","#handleFirehoseCommit","commit","touched","op","c","did","rpc","result","ok","nsid","lastKnown","records","r","data","nsidTyped","desired","known","upserts","id","record","existing","deletes","newKnown","rkey","prior","token","#enqueueWrite","i","groupBy","keyOf","lastHashes","lastBlobs","bundles","items","newHashes","newBlobs","bundle","key","bytes","#fetchBlob","groupItems","decode","xxh32r","encode","extractKey","groups","group","hash","blob","#uploadBlob","value","cid","collection","cursor","page","fn","resolve","reject","#drainWrites","element_default","CLASS","NAME","defineElement"],"sourceRoot":"","file":"/chunk-3POXLCM6.js.map"} \ No newline at end of file diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-3U47TTXA.js b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-3U47TTXA.js similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-3U47TTXA.js rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-3U47TTXA.js diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-3U47TTXA.js.br b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-3U47TTXA.js.br similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-3U47TTXA.js.br rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-3U47TTXA.js.br diff --git a/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-3U47TTXA.js.map b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-3U47TTXA.js.map new file mode 100644 index 00000000..7898ef20 --- /dev/null +++ b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-3U47TTXA.js.map @@ -0,0 +1 @@ +{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[],"sourceRoot":"","file":"/chunk-3U47TTXA.js.map"} \ No newline at end of file diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-3VHXPJX4.js b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-3VHXPJX4.js similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-3VHXPJX4.js rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-3VHXPJX4.js diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-3VHXPJX4.js.br b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-3VHXPJX4.js.br similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-3VHXPJX4.js.br rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-3VHXPJX4.js.br diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-3VHXPJX4.js.map b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-3VHXPJX4.js.map similarity index 98% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-3VHXPJX4.js.map rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-3VHXPJX4.js.map index d866512d..25c46939 100644 --- a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-3VHXPJX4.js.map +++ b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-3VHXPJX4.js.map @@ -1 +1 @@ -{"version":3,"sources":["/components/transformer/output/refiner/default/element.js"],"sourcesContent":["import * as IDB from \"idb-keyval\";\n\nimport { computed, signal } from \"~/common/signal.js\";\nimport { OutputTransformer } from \"../../base.js\";\nimport { defineElement } from \"~/common/element.js\";\n\nconst IDB_KEY_PLAYLISTS =\n \"diffuse/transformer/output/refiner/default/playlistItems/ephemeral\";\nconst IDB_KEY_TRACKS =\n \"diffuse/transformer/output/refiner/default/tracks/ephemeral\";\n\n/**\n * @import { OutputManagerDeputy } from \"@specs/components/output/types.d.ts\"\n * @import { PlaylistItem, Track } from \"~/definitions/types.d.ts\"\n */\n\n/**\n * @extends {OutputTransformer}\n */\nclass DefaultOutputRefinerTransformer extends OutputTransformer {\n constructor() {\n super();\n\n const base = this.base();\n\n // Restore stored ephemeral items\n IDB.get(IDB_KEY_PLAYLISTS).then((items) => {\n if (items) this.#ephemeralPlaylistItems.set(items);\n });\n\n IDB.get(IDB_KEY_TRACKS).then((items) => {\n if (items) this.#ephemeralTracks.set(items);\n });\n\n /** @type {OutputManagerDeputy} */\n const manager = {\n facets: {\n ...base.facets,\n collection: computed(() => {\n const col = base.facets.collection();\n if (col.state !== \"loaded\") return col;\n return { state: \"loaded\", data: col.data };\n }),\n },\n playlistItems: {\n ...base.playlistItems,\n collection: computed(() => {\n const col = base.playlistItems.collection();\n if (col.state !== \"loaded\") return col;\n return {\n state: \"loaded\",\n data: [...col.data, ...this.#ephemeralPlaylistItems.get()],\n };\n }),\n save: async (newPlaylists) => {\n /** @type {PlaylistItem[]} */\n const ephemeral = [];\n\n const filtered = newPlaylists.filter((p) => {\n if (p.ephemeral) {\n ephemeral.push(p);\n return false;\n } else {\n return true;\n }\n });\n\n await IDB.set(IDB_KEY_PLAYLISTS, ephemeral);\n this.#ephemeralPlaylistItems.set(ephemeral);\n\n await base.playlistItems.save(filtered);\n },\n },\n tracks: {\n ...base.tracks,\n collection: computed(() => {\n const col = base.tracks.collection();\n if (col.state !== \"loaded\") return col;\n return {\n state: \"loaded\",\n data: [...col.data, ...this.#ephemeralTracks.get()],\n };\n }),\n save: async (newTracks) => {\n /** @type {Track[]} */\n const ephemeral = [];\n\n const filtered = newTracks.filter((t) => {\n if (t.ephemeral) {\n ephemeral.push(t);\n return false;\n } else {\n return true;\n }\n });\n\n await IDB.set(IDB_KEY_TRACKS, ephemeral);\n this.#ephemeralTracks.set(ephemeral);\n\n await base.tracks.save(filtered);\n },\n },\n\n settings: base.settings,\n\n // Other\n ready: base.ready,\n };\n\n // Assign manager properties to class\n this.facets = manager.facets;\n this.playlistItems = manager.playlistItems;\n this.settings = manager.settings;\n this.tracks = manager.tracks;\n this.ready = manager.ready;\n }\n\n // SIGNALS\n\n #ephemeralPlaylistItems = signal(/** @type {PlaylistItem[]} */ ([]));\n #ephemeralTracks = signal(/** @type {Track[]} */ ([]));\n\n // LIFECYCLE\n\n /** @override */\n connectedCallback() {\n if (this.hasAttribute(\"group\")) {\n const actions = this.broadcast(IDB_KEY_TRACKS, {\n getEphemeralPlaylistItems: {\n strategy: \"leaderOnly\",\n fn: this.#ephemeralPlaylistItems.get,\n },\n setEphemeralPlaylistItems: {\n strategy: \"replicate\",\n fn: this.#ephemeralPlaylistItems.set,\n },\n getEphemeralTracks: {\n strategy: \"leaderOnly\",\n fn: this.#ephemeralTracks.get,\n },\n setEphemeralTracks: {\n strategy: \"replicate\",\n fn: this.#ephemeralTracks.set,\n },\n });\n\n if (actions) {\n this.#ephemeralPlaylistItems.set = actions.setEphemeralPlaylistItems;\n this.#ephemeralTracks.set = actions.setEphemeralTracks;\n\n actions.getEphemeralPlaylistItems().then((items) => {\n this.#ephemeralPlaylistItems.value = items;\n });\n\n actions.getEphemeralTracks().then((tracks) => {\n this.#ephemeralTracks.value = tracks;\n });\n }\n }\n\n super.connectedCallback();\n }\n}\n\nexport default DefaultOutputRefinerTransformer;\n\n////////////////////////////////////////////\n// REGISTER\n////////////////////////////////////////////\n\nexport const CLASS = DefaultOutputRefinerTransformer;\nexport const NAME = \"dtor-default\";\n\ndefineElement(NAME, CLASS);\n"],"mappings":"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","names":["element_exports","__export","CLASS","NAME","element_default","IDB_KEY_PLAYLISTS","IDB_KEY_TRACKS","DefaultOutputRefinerTransformer","OutputTransformer","__name","base","get","items","#ephemeralPlaylistItems","#ephemeralTracks","manager","computed","col","newPlaylists","ephemeral","filtered","p","set","newTracks","t","signal","actions","tracks","element_default","CLASS","NAME","defineElement"],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse","file":"/chunk-3VHXPJX4.js.map"} \ No newline at end of file +{"version":3,"sources":["/components/transformer/output/refiner/default/element.js"],"sourcesContent":["import * as IDB from \"idb-keyval\";\n\nimport { computed, signal } from \"~/common/signal.js\";\nimport { OutputTransformer } from \"../../base.js\";\nimport { defineElement } from \"~/common/element.js\";\n\nconst IDB_KEY_PLAYLISTS =\n \"diffuse/transformer/output/refiner/default/playlistItems/ephemeral\";\nconst IDB_KEY_TRACKS =\n \"diffuse/transformer/output/refiner/default/tracks/ephemeral\";\n\n/**\n * @import { OutputManagerDeputy } from \"@specs/components/output/types.d.ts\"\n * @import { PlaylistItem, Track } from \"~/definitions/types.d.ts\"\n */\n\n/**\n * @extends {OutputTransformer}\n */\nclass DefaultOutputRefinerTransformer extends OutputTransformer {\n constructor() {\n super();\n\n const base = this.base();\n\n // Restore stored ephemeral items\n IDB.get(IDB_KEY_PLAYLISTS).then((items) => {\n if (items) this.#ephemeralPlaylistItems.set(items);\n });\n\n IDB.get(IDB_KEY_TRACKS).then((items) => {\n if (items) this.#ephemeralTracks.set(items);\n });\n\n /** @type {OutputManagerDeputy} */\n const manager = {\n facets: {\n ...base.facets,\n collection: computed(() => {\n const col = base.facets.collection();\n if (col.state !== \"loaded\") return col;\n return { state: \"loaded\", data: col.data };\n }),\n },\n playlistItems: {\n ...base.playlistItems,\n collection: computed(() => {\n const col = base.playlistItems.collection();\n if (col.state !== \"loaded\") return col;\n return {\n state: \"loaded\",\n data: [...col.data, ...this.#ephemeralPlaylistItems.get()],\n };\n }),\n save: async (newPlaylists) => {\n /** @type {PlaylistItem[]} */\n const ephemeral = [];\n\n const filtered = newPlaylists.filter((p) => {\n if (p.ephemeral) {\n ephemeral.push(p);\n return false;\n } else {\n return true;\n }\n });\n\n await IDB.set(IDB_KEY_PLAYLISTS, ephemeral);\n this.#ephemeralPlaylistItems.set(ephemeral);\n\n await base.playlistItems.save(filtered);\n },\n },\n tracks: {\n ...base.tracks,\n collection: computed(() => {\n const col = base.tracks.collection();\n if (col.state !== \"loaded\") return col;\n return {\n state: \"loaded\",\n data: [...col.data, ...this.#ephemeralTracks.get()],\n };\n }),\n save: async (newTracks) => {\n /** @type {Track[]} */\n const ephemeral = [];\n\n const filtered = newTracks.filter((t) => {\n if (t.ephemeral) {\n ephemeral.push(t);\n return false;\n } else {\n return true;\n }\n });\n\n await IDB.set(IDB_KEY_TRACKS, ephemeral);\n this.#ephemeralTracks.set(ephemeral);\n\n await base.tracks.save(filtered);\n },\n },\n\n settings: base.settings,\n\n // Other\n ready: base.ready,\n };\n\n // Assign manager properties to class\n this.facets = manager.facets;\n this.playlistItems = manager.playlistItems;\n this.settings = manager.settings;\n this.tracks = manager.tracks;\n this.ready = manager.ready;\n }\n\n // SIGNALS\n\n #ephemeralPlaylistItems = signal(/** @type {PlaylistItem[]} */ ([]));\n #ephemeralTracks = signal(/** @type {Track[]} */ ([]));\n\n // LIFECYCLE\n\n /** @override */\n connectedCallback() {\n if (this.hasAttribute(\"group\")) {\n const actions = this.broadcast(IDB_KEY_TRACKS, {\n getEphemeralPlaylistItems: {\n strategy: \"leaderOnly\",\n fn: this.#ephemeralPlaylistItems.get,\n },\n setEphemeralPlaylistItems: {\n strategy: \"replicate\",\n fn: this.#ephemeralPlaylistItems.set,\n },\n getEphemeralTracks: {\n strategy: \"leaderOnly\",\n fn: this.#ephemeralTracks.get,\n },\n setEphemeralTracks: {\n strategy: \"replicate\",\n fn: this.#ephemeralTracks.set,\n },\n });\n\n if (actions) {\n this.#ephemeralPlaylistItems.set = actions.setEphemeralPlaylistItems;\n this.#ephemeralTracks.set = actions.setEphemeralTracks;\n\n actions.getEphemeralPlaylistItems().then((items) => {\n this.#ephemeralPlaylistItems.value = items;\n });\n\n actions.getEphemeralTracks().then((tracks) => {\n this.#ephemeralTracks.value = tracks;\n });\n }\n }\n\n super.connectedCallback();\n }\n}\n\nexport default DefaultOutputRefinerTransformer;\n\n////////////////////////////////////////////\n// REGISTER\n////////////////////////////////////////////\n\nexport const CLASS = DefaultOutputRefinerTransformer;\nexport const NAME = \"dtor-default\";\n\ndefineElement(NAME, CLASS);\n"],"mappings":"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","names":["element_exports","__export","CLASS","NAME","element_default","IDB_KEY_PLAYLISTS","IDB_KEY_TRACKS","DefaultOutputRefinerTransformer","OutputTransformer","__name","base","get","items","#ephemeralPlaylistItems","#ephemeralTracks","manager","computed","col","newPlaylists","ephemeral","filtered","p","set","newTracks","t","signal","actions","tracks","element_default","CLASS","NAME","defineElement"],"sourceRoot":"","file":"/chunk-3VHXPJX4.js.map"} \ No newline at end of file diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-44WXRAOK.js b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-44WXRAOK.js similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-44WXRAOK.js rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-44WXRAOK.js diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-44WXRAOK.js.br b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-44WXRAOK.js.br similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-44WXRAOK.js.br rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-44WXRAOK.js.br diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-44WXRAOK.js.map b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-44WXRAOK.js.map similarity index 98% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-44WXRAOK.js.map rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-44WXRAOK.js.map index aa574ee2..2e69d4ca 100644 --- a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-44WXRAOK.js.map +++ b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-44WXRAOK.js.map @@ -1 +1 @@ -{"version":3,"sources":["/node_modules/.deno/@atcute+cid@2.4.2/node_modules/@atcute/cid/dist/codec.js","/node_modules/.deno/@atcute+cid@2.4.2/node_modules/@atcute/cid/dist/cid-link.js"],"sourcesContent":["import { fromBase32, toBase32 } from '@atcute/multibase';\nimport { allocUnsafe, equals as isBufferEqual, toSha256 } from '@atcute/uint8array';\n/** CID version, always `1` for CIDv1 */\nexport const CID_VERSION = 1;\n/** multicodec for SHA-256 hash */\nexport const HASH_SHA256 = 0x12;\n/** multicodec for raw binary data */\nexport const CODEC_RAW = 0x55;\n/** multicodec for DAG-CBOR encoded data */\nexport const CODEC_DCBOR = 0x71;\n// a SHA-256 CIDv1 is always going to be 36 bytes, that's 4 bytes for the\n// header, and 32 bytes for the digest itself.\n/**\n * creates a CID from a pre-computed SHA-256 digest\n *\n * @param codec multicodec type for the data\n * @param digest raw SHA-256 hash bytes (must be 32 bytes)\n * @returns CID object\n */\nexport const fromDigest = (codec, digest) => {\n if (digest.length !== 32) {\n throw new RangeError(`invalid digest length`);\n }\n const bytes = allocUnsafe(4 + 32);\n bytes[0] = CID_VERSION;\n bytes[1] = codec;\n bytes[2] = HASH_SHA256;\n bytes[3] = 32;\n bytes.set(digest, 4);\n return {\n version: CID_VERSION,\n codec: codec,\n digest: {\n codec: HASH_SHA256,\n contents: bytes.subarray(4, 36),\n },\n bytes: bytes,\n };\n};\n/**\n * creates a CID by hashing the provided data with SHA-256\n *\n * @param codec multicodec type for the data\n * @param data raw data to hash\n * @returns CID object\n */\nexport const create = async (codec, data) => {\n const digest = await toSha256(data);\n return fromDigest(codec, digest);\n};\n/**\n * decodes a CID from bytes, returning the CID and any remaining bytes\n *\n * @param bytes raw CID bytes\n * @returns tuple of decoded CID and remainder bytes\n * @throws {RangeError} if the bytes are too short or contain invalid values\n */\nexport const decodeFirst = (bytes) => {\n if (bytes.length < 36) {\n throw new RangeError(`cid too short`);\n }\n const version = bytes[0];\n const codec = bytes[1];\n const digestType = bytes[2];\n const digestSize = bytes[3];\n if (version !== CID_VERSION) {\n throw new RangeError(`incorrect cid version (got v${version})`);\n }\n if (codec !== CODEC_DCBOR && codec !== CODEC_RAW) {\n throw new RangeError(`incorrect cid codec (got 0x${codec.toString(16)})`);\n }\n if (digestType !== HASH_SHA256) {\n throw new RangeError(`incorrect cid digest codec (got 0x${digestType.toString(16)})`);\n }\n if (digestSize !== 32) {\n throw new RangeError(`incorrect cid digest size (got ${digestSize})`);\n }\n const cid = {\n version: CID_VERSION,\n codec: codec,\n digest: {\n codec: digestType,\n contents: bytes.subarray(4, 36),\n },\n bytes: bytes.subarray(0, 36),\n };\n return [cid, bytes.subarray(36)];\n};\n/**\n * decodes a CID from bytes, expecting no remainder\n *\n * @param bytes raw CID bytes\n * @returns decoded CID\n * @throws {RangeError} if the bytes are invalid or contain extra data\n */\nexport const decode = (bytes) => {\n const [cid, remainder] = decodeFirst(bytes);\n if (remainder.length !== 0) {\n throw new RangeError(`cid bytes includes remainder`);\n }\n return cid;\n};\n/**\n * parses a CID from a multibase base32 string\n *\n * @param input base32-encoded CID string (with 'b' prefix)\n * @returns decoded CID\n * @throws {SyntaxError} if the string is not a valid multibase base32 string\n * @throws {RangeError} if the string length is invalid\n */\nexport const fromString = (input) => {\n // 36 bytes in base32 = 58 characters + 1 character for the prefix\n if (input.length !== 59 || input[0] !== 'b') {\n throw new SyntaxError(`not a valid cid string`);\n }\n const bytes = fromBase32(input.slice(1));\n return decode(bytes);\n};\n/**\n * encodes a CID to a multibase base32 string\n *\n * @param cid CID to encode\n * @returns base32-encoded string with 'b' prefix\n */\nexport const toString = (cid) => {\n return `b${toBase32(cid.bytes)}`;\n};\n/**\n * parses a CID from binary format (with 0x00 prefix)\n *\n * @param input binary CID bytes with 0x00 prefix\n * @returns decoded CID\n * @throws {RangeError} if the byte length is invalid\n * @throws {SyntaxError} if the prefix byte is not 0x00\n */\nexport const fromBinary = (input) => {\n // 36 bytes + 1 byte for the 0x00 prefix\n if (input.length !== 37 || input[0] !== 0) {\n throw new SyntaxError(`invalid binary cid`);\n }\n return decode(input.subarray(1));\n};\n/**\n * encodes a CID to binary format (with 0x00 prefix)\n *\n * @param cid CID to encode\n * @returns binary CID bytes with 0x00 prefix\n */\nexport const toBinary = (cid) => {\n const bytes = allocUnsafe(1 + cid.bytes.length);\n bytes[0] = 0;\n bytes.set(cid.bytes, 1);\n return bytes;\n};\n/**\n * checks if two CIDs are equal\n *\n * @param a first CID\n * @param b second CID\n * @returns true if the CIDs have identical bytes\n */\nexport const equals = (a, b) => {\n return isBufferEqual(a.bytes, b.bytes);\n};\n","import { toBase32 } from '@atcute/multibase';\nimport { decode, fromString } from './codec.js';\nconst CID_LINK_SYMBOL = Symbol.for('@atcute/cid-link-wrapper');\nexport class CidLinkWrapper {\n /** @internal */\n [CID_LINK_SYMBOL] = true;\n bytes;\n constructor(bytes) {\n this.bytes = bytes;\n }\n get $link() {\n const link = `b${toBase32(this.bytes)}`;\n Object.defineProperty(this, '$link', {\n value: link,\n enumerable: true,\n });\n return link;\n }\n toJSON() {\n return { $link: this.$link };\n }\n}\nexport const isCidLink = (value) => {\n // oxlint-disable-next-line typescript/no-explicit-any\n const val = value;\n return (val instanceof CidLinkWrapper ||\n (val !== null && typeof val === 'object' && typeof val.$link === 'string'));\n};\nexport const toCidLink = (cid) => {\n return new CidLinkWrapper(cid.bytes);\n};\nexport const fromCidLink = (link) => {\n if (link instanceof CidLinkWrapper) {\n return decode(link.bytes);\n }\n return fromString(link.$link);\n};\n"],"mappings":"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","names":["CID_VERSION","HASH_SHA256","CODEC_RAW","CODEC_DCBOR","fromDigest","__name","codec","digest","bytes","allocUnsafe","create","data","toSha256","decodeFirst","version","digestType","digestSize","decode","cid","remainder","fromString","input","fromBase32","toString","toBase32","fromBinary","CID_LINK_SYMBOL","CidLinkWrapper","__name","bytes","link","toBase32","isCidLink","value","val","toCidLink","cid","fromCidLink","decode","fromString"],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse","file":"/chunk-44WXRAOK.js.map"} \ No newline at end of file +{"version":3,"sources":["/node_modules/.deno/@atcute+cid@2.4.2/node_modules/@atcute/cid/dist/codec.js","/node_modules/.deno/@atcute+cid@2.4.2/node_modules/@atcute/cid/dist/cid-link.js"],"sourcesContent":["import { fromBase32, toBase32 } from '@atcute/multibase';\nimport { allocUnsafe, equals as isBufferEqual, toSha256 } from '@atcute/uint8array';\n/** CID version, always `1` for CIDv1 */\nexport const CID_VERSION = 1;\n/** multicodec for SHA-256 hash */\nexport const HASH_SHA256 = 0x12;\n/** multicodec for raw binary data */\nexport const CODEC_RAW = 0x55;\n/** multicodec for DAG-CBOR encoded data */\nexport const CODEC_DCBOR = 0x71;\n// a SHA-256 CIDv1 is always going to be 36 bytes, that's 4 bytes for the\n// header, and 32 bytes for the digest itself.\n/**\n * creates a CID from a pre-computed SHA-256 digest\n *\n * @param codec multicodec type for the data\n * @param digest raw SHA-256 hash bytes (must be 32 bytes)\n * @returns CID object\n */\nexport const fromDigest = (codec, digest) => {\n if (digest.length !== 32) {\n throw new RangeError(`invalid digest length`);\n }\n const bytes = allocUnsafe(4 + 32);\n bytes[0] = CID_VERSION;\n bytes[1] = codec;\n bytes[2] = HASH_SHA256;\n bytes[3] = 32;\n bytes.set(digest, 4);\n return {\n version: CID_VERSION,\n codec: codec,\n digest: {\n codec: HASH_SHA256,\n contents: bytes.subarray(4, 36),\n },\n bytes: bytes,\n };\n};\n/**\n * creates a CID by hashing the provided data with SHA-256\n *\n * @param codec multicodec type for the data\n * @param data raw data to hash\n * @returns CID object\n */\nexport const create = async (codec, data) => {\n const digest = await toSha256(data);\n return fromDigest(codec, digest);\n};\n/**\n * decodes a CID from bytes, returning the CID and any remaining bytes\n *\n * @param bytes raw CID bytes\n * @returns tuple of decoded CID and remainder bytes\n * @throws {RangeError} if the bytes are too short or contain invalid values\n */\nexport const decodeFirst = (bytes) => {\n if (bytes.length < 36) {\n throw new RangeError(`cid too short`);\n }\n const version = bytes[0];\n const codec = bytes[1];\n const digestType = bytes[2];\n const digestSize = bytes[3];\n if (version !== CID_VERSION) {\n throw new RangeError(`incorrect cid version (got v${version})`);\n }\n if (codec !== CODEC_DCBOR && codec !== CODEC_RAW) {\n throw new RangeError(`incorrect cid codec (got 0x${codec.toString(16)})`);\n }\n if (digestType !== HASH_SHA256) {\n throw new RangeError(`incorrect cid digest codec (got 0x${digestType.toString(16)})`);\n }\n if (digestSize !== 32) {\n throw new RangeError(`incorrect cid digest size (got ${digestSize})`);\n }\n const cid = {\n version: CID_VERSION,\n codec: codec,\n digest: {\n codec: digestType,\n contents: bytes.subarray(4, 36),\n },\n bytes: bytes.subarray(0, 36),\n };\n return [cid, bytes.subarray(36)];\n};\n/**\n * decodes a CID from bytes, expecting no remainder\n *\n * @param bytes raw CID bytes\n * @returns decoded CID\n * @throws {RangeError} if the bytes are invalid or contain extra data\n */\nexport const decode = (bytes) => {\n const [cid, remainder] = decodeFirst(bytes);\n if (remainder.length !== 0) {\n throw new RangeError(`cid bytes includes remainder`);\n }\n return cid;\n};\n/**\n * parses a CID from a multibase base32 string\n *\n * @param input base32-encoded CID string (with 'b' prefix)\n * @returns decoded CID\n * @throws {SyntaxError} if the string is not a valid multibase base32 string\n * @throws {RangeError} if the string length is invalid\n */\nexport const fromString = (input) => {\n // 36 bytes in base32 = 58 characters + 1 character for the prefix\n if (input.length !== 59 || input[0] !== 'b') {\n throw new SyntaxError(`not a valid cid string`);\n }\n const bytes = fromBase32(input.slice(1));\n return decode(bytes);\n};\n/**\n * encodes a CID to a multibase base32 string\n *\n * @param cid CID to encode\n * @returns base32-encoded string with 'b' prefix\n */\nexport const toString = (cid) => {\n return `b${toBase32(cid.bytes)}`;\n};\n/**\n * parses a CID from binary format (with 0x00 prefix)\n *\n * @param input binary CID bytes with 0x00 prefix\n * @returns decoded CID\n * @throws {RangeError} if the byte length is invalid\n * @throws {SyntaxError} if the prefix byte is not 0x00\n */\nexport const fromBinary = (input) => {\n // 36 bytes + 1 byte for the 0x00 prefix\n if (input.length !== 37 || input[0] !== 0) {\n throw new SyntaxError(`invalid binary cid`);\n }\n return decode(input.subarray(1));\n};\n/**\n * encodes a CID to binary format (with 0x00 prefix)\n *\n * @param cid CID to encode\n * @returns binary CID bytes with 0x00 prefix\n */\nexport const toBinary = (cid) => {\n const bytes = allocUnsafe(1 + cid.bytes.length);\n bytes[0] = 0;\n bytes.set(cid.bytes, 1);\n return bytes;\n};\n/**\n * checks if two CIDs are equal\n *\n * @param a first CID\n * @param b second CID\n * @returns true if the CIDs have identical bytes\n */\nexport const equals = (a, b) => {\n return isBufferEqual(a.bytes, b.bytes);\n};\n","import { toBase32 } from '@atcute/multibase';\nimport { decode, fromString } from './codec.js';\nconst CID_LINK_SYMBOL = Symbol.for('@atcute/cid-link-wrapper');\nexport class CidLinkWrapper {\n /** @internal */\n [CID_LINK_SYMBOL] = true;\n bytes;\n constructor(bytes) {\n this.bytes = bytes;\n }\n get $link() {\n const link = `b${toBase32(this.bytes)}`;\n Object.defineProperty(this, '$link', {\n value: link,\n enumerable: true,\n });\n return link;\n }\n toJSON() {\n return { $link: this.$link };\n }\n}\nexport const isCidLink = (value) => {\n // oxlint-disable-next-line typescript/no-explicit-any\n const val = value;\n return (val instanceof CidLinkWrapper ||\n (val !== null && typeof val === 'object' && typeof val.$link === 'string'));\n};\nexport const toCidLink = (cid) => {\n return new CidLinkWrapper(cid.bytes);\n};\nexport const fromCidLink = (link) => {\n if (link instanceof CidLinkWrapper) {\n return decode(link.bytes);\n }\n return fromString(link.$link);\n};\n"],"mappings":"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","names":["CID_VERSION","HASH_SHA256","CODEC_RAW","CODEC_DCBOR","fromDigest","__name","codec","digest","bytes","allocUnsafe","create","data","toSha256","decodeFirst","version","digestType","digestSize","decode","cid","remainder","fromString","input","fromBase32","toString","toBase32","fromBinary","CID_LINK_SYMBOL","CidLinkWrapper","__name","bytes","link","toBase32","isCidLink","value","val","toCidLink","cid","fromCidLink","decode","fromString"],"sourceRoot":"","file":"/chunk-44WXRAOK.js.map"} \ No newline at end of file diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-47J7TE33.js b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-47J7TE33.js similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-47J7TE33.js rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-47J7TE33.js diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-47J7TE33.js.br b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-47J7TE33.js.br similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-47J7TE33.js.br rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-47J7TE33.js.br diff --git a/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-47J7TE33.js.map b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-47J7TE33.js.map new file mode 100644 index 00000000..68703557 --- /dev/null +++ b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-47J7TE33.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["/components/orchestrator/scoped-tracks/constants.js"],"sourcesContent":["import { xxh32 } from \"xxh32\";\n\nexport const EMPTY_FINGERPRINT = xxh32([].join(\"\")).toString();\n\n/**\n * Maps directly on the `Track` definition\n * (ie. `definitions/output/tracks.json`)\n */\nexport const SCHEMA = {\n id: /** @type {const} */ (\"string\"),\n kind: /** @type {const} */ (\"string\"),\n tags: {\n album: /** @type {const} */ (\"string\"),\n artist: /** @type {const} */ (\"string\"),\n genre: /** @type {const} */ (\"string\"),\n title: /** @type {const} */ (\"string\"),\n year: /** @type {const} */ (\"number\"),\n\n disc: {\n no: /** @type {const} */ (\"number\"),\n },\n track: {\n no: /** @type {const} */ (\"number\"),\n },\n },\n embeddings: /** @type {const} */ (\"vector[512]\"),\n};\n"],"mappings":"wCAEO,IAAMA,EAAoBC,EAAM,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,EAMhDC,EAAS,CACpB,GAA0B,SAC1B,KAA4B,SAC5B,KAAM,CACJ,MAA6B,SAC7B,OAA8B,SAC9B,MAA6B,SAC7B,MAA6B,SAC7B,KAA4B,SAE5B,KAAM,CACJ,GAA0B,QAC5B,EACA,MAAO,CACL,GAA0B,QAC5B,CACF,EACA,WAAkC,aACpC","names":["EMPTY_FINGERPRINT","xxh32","SCHEMA"],"sourceRoot":"","file":"/chunk-47J7TE33.js.map"} \ No newline at end of file diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-4M37HRVT.js b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-4M37HRVT.js similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-4M37HRVT.js rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-4M37HRVT.js diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-4M37HRVT.js.br b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-4M37HRVT.js.br similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-4M37HRVT.js.br rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-4M37HRVT.js.br diff --git a/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-4M37HRVT.js.map b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-4M37HRVT.js.map new file mode 100644 index 00000000..3bbb7769 --- /dev/null +++ b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-4M37HRVT.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["/components/input/https/constants.js"],"sourcesContent":["export const SCHEME = \"https\";\n"],"mappings":"AAAO,IAAMA,EAAS","names":["SCHEME"],"sourceRoot":"","file":"/chunk-4M37HRVT.js.map"} \ No newline at end of file diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-5243W3H7.js b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-5243W3H7.js similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-5243W3H7.js rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-5243W3H7.js diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-5243W3H7.js.br b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-5243W3H7.js.br similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-5243W3H7.js.br rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-5243W3H7.js.br diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-5243W3H7.js.map b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-5243W3H7.js.map similarity index 96% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-5243W3H7.js.map rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-5243W3H7.js.map index 3731c494..57a5da34 100644 --- a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-5243W3H7.js.map +++ b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-5243W3H7.js.map @@ -1 +1 @@ -{"version":3,"sources":["/components/output/bytes/dropbox/common.js"],"sourcesContent":["import { getAccessToken } from \"~/components/input/dropbox/common.js\";\nimport { APP_KEY } from \"./constants.js\";\n\n/**\n * Dropbox API paths must be absolute (start with `/`) or empty for the app\n * folder root. The output element builds keys like `\"facets\"` or\n * `\"namespace/facets\"` (no leading slash, which is fine for S3 keys but\n * rejected by Dropbox), so normalize them here at the API boundary.\n *\n * @param {string} filePath\n */\nfunction normalizePath(filePath) {\n if (!filePath) return \"\";\n return filePath.startsWith(\"/\") ? filePath : \"/\" + filePath;\n}\n\n/**\n * Download a file from the Dropbox app folder as raw bytes.\n *\n * The access token is obtained (and cached/auto-renewed) via the shared\n * `getAccessToken` helper, passing the **output** app key so the correct\n * refresh token is used.\n *\n * @param {string} refreshToken - Long-lived refresh token for the output app.\n * @param {string} filePath - Path relative to the app folder root (e.g. \"/tracks\").\n * @returns {Promise} The file bytes, or undefined if the file doesn't exist.\n */\nexport async function getFile(refreshToken, filePath) {\n const path = normalizePath(filePath);\n const accessToken = await getAccessToken(refreshToken, APP_KEY);\n if (!accessToken) return undefined;\n\n const resp = await fetch(\n \"https://content.dropboxapi.com/2/files/download\",\n {\n method: \"POST\",\n headers: {\n \"Authorization\": `Bearer ${accessToken}`,\n \"Dropbox-API-Arg\": JSON.stringify({ path }),\n },\n },\n );\n\n // 409 from Dropbox means the file doesn't exist yet — not an error for us.\n if (!resp.ok) return undefined;\n\n const buffer = await resp.arrayBuffer();\n return new Uint8Array(buffer);\n}\n\n/**\n * Upload (overwrite) a file in the Dropbox app folder with raw bytes.\n *\n * Uses `mode: \"overwrite\"` because the output component syncs data files\n * (tracks, playlists, settings, facets) that should replace any previous\n * version, not be auto-renamed.\n *\n * @param {string} refreshToken - Long-lived refresh token for the output app.\n * @param {string} filePath - Path relative to the app folder root (e.g. \"/tracks\").\n * @param {Uint8Array} data - The bytes to upload.\n */\nexport async function putFile(refreshToken, filePath, data) {\n const path = normalizePath(filePath);\n const accessToken = await getAccessToken(refreshToken, APP_KEY);\n if (!accessToken) {\n throw new Error(\n \"Dropbox access token could not be refreshed. Please reconnect.\",\n );\n }\n\n const resp = await fetch(\n \"https://content.dropboxapi.com/2/files/upload\",\n {\n method: \"POST\",\n headers: {\n \"Authorization\": `Bearer ${accessToken}`,\n \"Content-Type\": \"application/octet-stream\",\n \"Dropbox-API-Arg\": JSON.stringify({\n path,\n mode: \"overwrite\",\n mute: true,\n }),\n },\n body: new Blob([/** @type {BlobPart} */ (data)]),\n },\n );\n\n if (!resp.ok) {\n const body = await resp.text().catch(() => \"\");\n throw new Error(\n `Failed to upload \"${filePath}\" to Dropbox (${resp.status}): ${body}`,\n );\n }\n}\n"],"mappings":"mHAWA,SAASA,EAAcC,EAAU,CAC/B,OAAKA,EACEA,EAAS,WAAW,GAAG,EAAIA,EAAW,IAAMA,EAD7B,EAExB,CAHSC,EAAAF,EAAA,iBAgBT,eAAsBG,EAAQC,EAAcH,EAAU,CACpD,IAAMI,EAAOL,EAAcC,CAAQ,EAC7BK,EAAc,MAAMC,EAAeH,EAAcI,CAAO,EAC9D,GAAI,CAACF,EAAa,OAElB,IAAMG,EAAO,MAAM,MACjB,kDACA,CACE,OAAQ,OACR,QAAS,CACP,cAAiB,UAAUH,CAAW,GACtC,kBAAmB,KAAK,UAAU,CAAE,KAAAD,CAAK,CAAC,CAC5C,CACF,CACF,EAGA,GAAI,CAACI,EAAK,GAAI,OAEd,IAAMC,EAAS,MAAMD,EAAK,YAAY,EACtC,OAAO,IAAI,WAAWC,CAAM,CAC9B,CArBsBR,EAAAC,EAAA,WAkCtB,eAAsBQ,EAAQP,EAAcH,EAAUW,EAAM,CAC1D,IAAMP,EAAOL,EAAcC,CAAQ,EAC7BK,EAAc,MAAMC,EAAeH,EAAcI,CAAO,EAC9D,GAAI,CAACF,EACH,MAAM,IAAI,MACR,gEACF,EAGF,IAAMG,EAAO,MAAM,MACjB,gDACA,CACE,OAAQ,OACR,QAAS,CACP,cAAiB,UAAUH,CAAW,GACtC,eAAgB,2BAChB,kBAAmB,KAAK,UAAU,CAChC,KAAAD,EACA,KAAM,YACN,KAAM,EACR,CAAC,CACH,EACA,KAAM,IAAI,KAAK,CAA0BO,CAAK,CAAC,CACjD,CACF,EAEA,GAAI,CAACH,EAAK,GAAI,CACZ,IAAMI,EAAO,MAAMJ,EAAK,KAAK,EAAE,MAAM,IAAM,EAAE,EAC7C,MAAM,IAAI,MACR,qBAAqBR,CAAQ,iBAAiBQ,EAAK,MAAM,MAAMI,CAAI,EACrE,CACF,CACF,CAhCsBX,EAAAS,EAAA","names":["normalizePath","filePath","__name","getFile","refreshToken","path","accessToken","getAccessToken","APP_KEY","resp","buffer","putFile","data","body"],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse","file":"/chunk-5243W3H7.js.map"} \ No newline at end of file +{"version":3,"sources":["/components/output/bytes/dropbox/common.js"],"sourcesContent":["import { getAccessToken } from \"~/components/input/dropbox/common.js\";\nimport { APP_KEY } from \"./constants.js\";\n\n/**\n * Dropbox API paths must be absolute (start with `/`) or empty for the app\n * folder root. The output element builds keys like `\"facets\"` or\n * `\"namespace/facets\"` (no leading slash, which is fine for S3 keys but\n * rejected by Dropbox), so normalize them here at the API boundary.\n *\n * @param {string} filePath\n */\nfunction normalizePath(filePath) {\n if (!filePath) return \"\";\n return filePath.startsWith(\"/\") ? filePath : \"/\" + filePath;\n}\n\n/**\n * Download a file from the Dropbox app folder as raw bytes.\n *\n * The access token is obtained (and cached/auto-renewed) via the shared\n * `getAccessToken` helper, passing the **output** app key so the correct\n * refresh token is used.\n *\n * @param {string} refreshToken - Long-lived refresh token for the output app.\n * @param {string} filePath - Path relative to the app folder root (e.g. \"/tracks\").\n * @returns {Promise} The file bytes, or undefined if the file doesn't exist.\n */\nexport async function getFile(refreshToken, filePath) {\n const path = normalizePath(filePath);\n const accessToken = await getAccessToken(refreshToken, APP_KEY);\n if (!accessToken) return undefined;\n\n const resp = await fetch(\n \"https://content.dropboxapi.com/2/files/download\",\n {\n method: \"POST\",\n headers: {\n \"Authorization\": `Bearer ${accessToken}`,\n \"Dropbox-API-Arg\": JSON.stringify({ path }),\n },\n },\n );\n\n // 409 from Dropbox means the file doesn't exist yet — not an error for us.\n if (!resp.ok) return undefined;\n\n const buffer = await resp.arrayBuffer();\n return new Uint8Array(buffer);\n}\n\n/**\n * Upload (overwrite) a file in the Dropbox app folder with raw bytes.\n *\n * Uses `mode: \"overwrite\"` because the output component syncs data files\n * (tracks, playlists, settings, facets) that should replace any previous\n * version, not be auto-renamed.\n *\n * @param {string} refreshToken - Long-lived refresh token for the output app.\n * @param {string} filePath - Path relative to the app folder root (e.g. \"/tracks\").\n * @param {Uint8Array} data - The bytes to upload.\n */\nexport async function putFile(refreshToken, filePath, data) {\n const path = normalizePath(filePath);\n const accessToken = await getAccessToken(refreshToken, APP_KEY);\n if (!accessToken) {\n throw new Error(\n \"Dropbox access token could not be refreshed. Please reconnect.\",\n );\n }\n\n const resp = await fetch(\n \"https://content.dropboxapi.com/2/files/upload\",\n {\n method: \"POST\",\n headers: {\n \"Authorization\": `Bearer ${accessToken}`,\n \"Content-Type\": \"application/octet-stream\",\n \"Dropbox-API-Arg\": JSON.stringify({\n path,\n mode: \"overwrite\",\n mute: true,\n }),\n },\n body: new Blob([/** @type {BlobPart} */ (data)]),\n },\n );\n\n if (!resp.ok) {\n const body = await resp.text().catch(() => \"\");\n throw new Error(\n `Failed to upload \"${filePath}\" to Dropbox (${resp.status}): ${body}`,\n );\n }\n}\n"],"mappings":"mHAWA,SAASA,EAAcC,EAAU,CAC/B,OAAKA,EACEA,EAAS,WAAW,GAAG,EAAIA,EAAW,IAAMA,EAD7B,EAExB,CAHSC,EAAAF,EAAA,iBAgBT,eAAsBG,EAAQC,EAAcH,EAAU,CACpD,IAAMI,EAAOL,EAAcC,CAAQ,EAC7BK,EAAc,MAAMC,EAAeH,EAAcI,CAAO,EAC9D,GAAI,CAACF,EAAa,OAElB,IAAMG,EAAO,MAAM,MACjB,kDACA,CACE,OAAQ,OACR,QAAS,CACP,cAAiB,UAAUH,CAAW,GACtC,kBAAmB,KAAK,UAAU,CAAE,KAAAD,CAAK,CAAC,CAC5C,CACF,CACF,EAGA,GAAI,CAACI,EAAK,GAAI,OAEd,IAAMC,EAAS,MAAMD,EAAK,YAAY,EACtC,OAAO,IAAI,WAAWC,CAAM,CAC9B,CArBsBR,EAAAC,EAAA,WAkCtB,eAAsBQ,EAAQP,EAAcH,EAAUW,EAAM,CAC1D,IAAMP,EAAOL,EAAcC,CAAQ,EAC7BK,EAAc,MAAMC,EAAeH,EAAcI,CAAO,EAC9D,GAAI,CAACF,EACH,MAAM,IAAI,MACR,gEACF,EAGF,IAAMG,EAAO,MAAM,MACjB,gDACA,CACE,OAAQ,OACR,QAAS,CACP,cAAiB,UAAUH,CAAW,GACtC,eAAgB,2BAChB,kBAAmB,KAAK,UAAU,CAChC,KAAAD,EACA,KAAM,YACN,KAAM,EACR,CAAC,CACH,EACA,KAAM,IAAI,KAAK,CAA0BO,CAAK,CAAC,CACjD,CACF,EAEA,GAAI,CAACH,EAAK,GAAI,CACZ,IAAMI,EAAO,MAAMJ,EAAK,KAAK,EAAE,MAAM,IAAM,EAAE,EAC7C,MAAM,IAAI,MACR,qBAAqBR,CAAQ,iBAAiBQ,EAAK,MAAM,MAAMI,CAAI,EACrE,CACF,CACF,CAhCsBX,EAAAS,EAAA","names":["normalizePath","filePath","__name","getFile","refreshToken","path","accessToken","getAccessToken","APP_KEY","resp","buffer","putFile","data","body"],"sourceRoot":"","file":"/chunk-5243W3H7.js.map"} \ No newline at end of file diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-53ATAZ4X.js b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-53ATAZ4X.js similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-53ATAZ4X.js rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-53ATAZ4X.js diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-53ATAZ4X.js.br b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-53ATAZ4X.js.br similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-53ATAZ4X.js.br rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-53ATAZ4X.js.br diff --git a/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-53ATAZ4X.js.map b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-53ATAZ4X.js.map new file mode 100644 index 00000000..00fa315f --- /dev/null +++ b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-53ATAZ4X.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["/components/orchestrator/sources/common.js"],"sourcesContent":["import { DISABLED_KEY } from \"./constants.js\";\n\n/**\n * @import {Setting} from \"~/definitions/types.d.ts\"\n */\n\n/**\n * Strips query params from a URI, returning the key used to store/compare disabled state.\n *\n * @param {string} uri\n * @returns {string}\n */\nexport function uriKey(uri) {\n const q = uri.indexOf(\"?\");\n return q === -1 ? uri : uri.slice(0, q);\n}\n\n/**\n * Parses the disabled source URIs list from a settings array.\n * Returns an empty array if the setting is absent or malformed.\n *\n * @param {Setting[]} settings\n * @returns {string[]}\n */\nexport function parseDisabledUris(settings) {\n const setting = settings.find((s) => s.key === DISABLED_KEY);\n if (!setting) return [];\n try {\n const parsed = JSON.parse(setting.value);\n return Array.isArray(parsed) ? parsed : [];\n } catch {\n return [];\n }\n}\n"],"mappings":"gFAYO,SAASA,EAAOC,EAAK,CAC1B,IAAMC,EAAID,EAAI,QAAQ,GAAG,EACzB,OAAOC,IAAM,GAAKD,EAAMA,EAAI,MAAM,EAAGC,CAAC,CACxC,CAHgBC,EAAAH,EAAA,UAYT,SAASI,EAAkBC,EAAU,CAC1C,IAAMC,EAAUD,EAAS,KAAME,GAAMA,EAAE,MAAQC,CAAY,EAC3D,GAAI,CAACF,EAAS,MAAO,CAAC,EACtB,GAAI,CACF,IAAMG,EAAS,KAAK,MAAMH,EAAQ,KAAK,EACvC,OAAO,MAAM,QAAQG,CAAM,EAAIA,EAAS,CAAC,CAC3C,MAAQ,CACN,MAAO,CAAC,CACV,CACF,CATgBN,EAAAC,EAAA","names":["uriKey","uri","q","__name","parseDisabledUris","settings","setting","s","DISABLED_KEY","parsed"],"sourceRoot":"","file":"/chunk-53ATAZ4X.js.map"} \ No newline at end of file diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-RJOCTTDA.js b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-53ELVNFW.js similarity index 89% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-RJOCTTDA.js rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-53ELVNFW.js index a26e06d3..76b297fb 100644 --- a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-RJOCTTDA.js +++ b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-53ELVNFW.js @@ -1,3 +1,3 @@ -import{b as i}from"./chunk-ZGMMU2IC.js";import{a as u}from"./chunk-4ZM3UVIB.js";import{a as n}from"./chunk-75KFZLU6.js";function f({id:e}){return async()=>{if(!confirm("Are you sure you want to delete this facet?"))return;let c=await u(),t=await i(c.facets);c.facets.save(t.filter(a=>a.id!==e))}}n(f,"deleteFacet");function d({id:e}){return async()=>{let o=await u(),c=await i(o.facets),t=c.find(a=>a.id===e);t&&await o.facets.save([...c.filter(a=>a.id!==e),{...t,enabled:!(t.enabled??!0),updatedAt:new Date().toISOString()}])}}n(d,"toggleFacetEnabled");function l({id:e}){return async()=>{let o=await u(),c=await i(o.facets),t=c.find(a=>a.id===e);t&&await o.facets.save([...c.filter(a=>a.id!==e),{...t,favourite:!(t.favourite??!1),updatedAt:new Date().toISOString()}])}}n(l,"toggleFacetFavourite");async function p(e){let o=await u(),t=(await i(o.facets)).filter(a=>a.id!==e.id);await o.facets.save([...t,{...e,updatedAt:new Date().toISOString()}])}n(p,"saveFacet");export{f as a,d as b,l as c,p as d}; +import{b as i}from"./chunk-ZGMMU2IC.js";import{a as u}from"./chunk-64SCJ6UI.js";import{a as n}from"./chunk-75KFZLU6.js";function f({id:e}){return async()=>{if(!confirm("Are you sure you want to delete this facet?"))return;let c=await u(),t=await i(c.facets);c.facets.save(t.filter(a=>a.id!==e))}}n(f,"deleteFacet");function d({id:e}){return async()=>{let o=await u(),c=await i(o.facets),t=c.find(a=>a.id===e);t&&await o.facets.save([...c.filter(a=>a.id!==e),{...t,enabled:!(t.enabled??!0),updatedAt:new Date().toISOString()}])}}n(d,"toggleFacetEnabled");function l({id:e}){return async()=>{let o=await u(),c=await i(o.facets),t=c.find(a=>a.id===e);t&&await o.facets.save([...c.filter(a=>a.id!==e),{...t,favourite:!(t.favourite??!1),updatedAt:new Date().toISOString()}])}}n(l,"toggleFacetFavourite");async function p(e){let o=await u(),t=(await i(o.facets)).filter(a=>a.id!==e.id);await o.facets.save([...t,{...e,updatedAt:new Date().toISOString()}])}n(p,"saveFacet");export{f as a,d as b,l as c,p as d}; -//# sourceMappingURL=./chunk-RJOCTTDA.js.map \ No newline at end of file +//# sourceMappingURL=./chunk-53ELVNFW.js.map \ No newline at end of file diff --git a/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-53ELVNFW.js.br b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-53ELVNFW.js.br new file mode 100644 index 0000000000000000000000000000000000000000..74895cebc54a2a89ff78c23aacdea2441a91194f GIT binary patch literal 374 zcmb1s&CHMzJpH%+zT-?I26|zSko(J^?_Z> zT>qQWM4{SkfAhABn?yRw{51C2uJdlHbJ3g)f#FLY`~P0PeEa40+cUProD7Ouc-hvz zdT*^sef5ff4zXu_-{<+|Jy-5K%koIS>~!7v_@=_AToJLqy@g+I=ZT*k^Wp5VboN&$Vrxj<^)55<_@9QjOQi)v~5iw=`wgr7GVuz-%CQhgm zt}69SezWIlsQiNW+=3o$zI&W>MSHu-jd3?nlGD^<;%k``2cfKR@?3oI3pa^Y=W?U*T(7Hg6L2dv`0c z>5u-Vw6Mm?SmDY0UFY4&s=Yhg>S<)v`Jm3`Ch?gc)<>$=FjUP7JGzVW&p(c2_AGya k6}3OQqdUBcYSrbr|9!u*xM|U}cVPxb!fV#dS{Kd?0I {\n const c = confirm(\"Are you sure you want to delete this facet?\");\n if (!c) return;\n\n const out = await output();\n const col = await Output.data(out.facets);\n\n out.facets.save(col.filter((c) => !(c.id === id)));\n };\n}\n\n/**\n * @param {{ id: string }} _\n */\nexport function toggleFacetEnabled({ id }) {\n return async () => {\n const out = await output();\n const col = await Output.data(out.facets);\n const facet = col.find((c) => c.id === id);\n if (!facet) return;\n await out.facets.save([\n ...col.filter((c) => c.id !== id),\n { ...facet, enabled: !(facet.enabled ?? true), updatedAt: new Date().toISOString() },\n ]);\n };\n}\n\n/**\n * @param {{ id: string }} _\n */\nexport function toggleFacetFavourite({ id }) {\n return async () => {\n const out = await output();\n const col = await Output.data(out.facets);\n const facet = col.find((c) => c.id === id);\n if (!facet) return;\n await out.facets.save([\n ...col.filter((c) => c.id !== id),\n { ...facet, favourite: !(facet.favourite ?? false), updatedAt: new Date().toISOString() },\n ]);\n };\n}\n\n/**\n * @param {Facet} facet\n */\nexport async function saveFacet(facet) {\n const out = await output();\n const col = await Output.data(out.facets);\n const colWithoutId = col.filter((c) => c.id !== facet.id);\n await out.facets.save([...colWithoutId, {\n ...facet,\n updatedAt: new Date().toISOString(),\n }]);\n}\n"],"mappings":"wHAUO,SAASA,EAAY,CAAE,GAAAC,CAAG,EAAG,CAClC,MAAO,UAAY,CAEjB,GAAI,CADM,QAAQ,6CAA6C,EACvD,OAER,IAAMC,EAAM,MAAMC,EAAO,EACnBC,EAAM,MAAaC,EAAKH,EAAI,MAAM,EAExCA,EAAI,OAAO,KAAKE,EAAI,OAAQE,GAAQA,EAAE,KAAOL,CAAG,CAAC,CACnD,CACF,CAVgBM,EAAAP,EAAA,eAeT,SAASQ,EAAmB,CAAE,GAAAP,CAAG,EAAG,CACzC,MAAO,UAAY,CACjB,IAAMC,EAAM,MAAMC,EAAO,EACnBC,EAAM,MAAaC,EAAKH,EAAI,MAAM,EAClCO,EAAQL,EAAI,KAAME,GAAMA,EAAE,KAAOL,CAAE,EACpCQ,GACL,MAAMP,EAAI,OAAO,KAAK,CACpB,GAAGE,EAAI,OAAQE,GAAMA,EAAE,KAAOL,CAAE,EAChC,CAAE,GAAGQ,EAAO,QAAS,EAAEA,EAAM,SAAW,IAAO,UAAW,IAAI,KAAK,EAAE,YAAY,CAAE,CACrF,CAAC,CACH,CACF,CAXgBF,EAAAC,EAAA,sBAgBT,SAASE,EAAqB,CAAE,GAAAT,CAAG,EAAG,CAC3C,MAAO,UAAY,CACjB,IAAMC,EAAM,MAAMC,EAAO,EACnBC,EAAM,MAAaC,EAAKH,EAAI,MAAM,EAClCO,EAAQL,EAAI,KAAME,GAAMA,EAAE,KAAOL,CAAE,EACpCQ,GACL,MAAMP,EAAI,OAAO,KAAK,CACpB,GAAGE,EAAI,OAAQE,GAAMA,EAAE,KAAOL,CAAE,EAChC,CAAE,GAAGQ,EAAO,UAAW,EAAEA,EAAM,WAAa,IAAQ,UAAW,IAAI,KAAK,EAAE,YAAY,CAAE,CAC1F,CAAC,CACH,CACF,CAXgBF,EAAAG,EAAA,wBAgBhB,eAAsBC,EAAUF,EAAO,CACrC,IAAMP,EAAM,MAAMC,EAAO,EAEnBS,GADM,MAAaP,EAAKH,EAAI,MAAM,GACf,OAAQI,GAAMA,EAAE,KAAOG,EAAM,EAAE,EACxD,MAAMP,EAAI,OAAO,KAAK,CAAC,GAAGU,EAAc,CACtC,GAAGH,EACH,UAAW,IAAI,KAAK,EAAE,YAAY,CACpC,CAAC,CAAC,CACJ,CARsBF,EAAAI,EAAA","names":["deleteFacet","id","out","output","col","data","c","__name","toggleFacetEnabled","facet","toggleFacetFavourite","saveFacet","colWithoutId"],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse","file":"/chunk-RJOCTTDA.js.map"} \ No newline at end of file +{"version":3,"sources":["/common/pages/crud.js"],"sourcesContent":["import * as Output from \"~/common/output.js\";\nimport { output } from \"./output.js\";\n\n/**\n * @import {Facet} from \"~/definitions/types.d.ts\"\n */\n\n/**\n * @param {{ id: string }} _\n */\nexport function deleteFacet({ id }) {\n return async () => {\n const c = confirm(\"Are you sure you want to delete this facet?\");\n if (!c) return;\n\n const out = await output();\n const col = await Output.data(out.facets);\n\n out.facets.save(col.filter((c) => !(c.id === id)));\n };\n}\n\n/**\n * @param {{ id: string }} _\n */\nexport function toggleFacetEnabled({ id }) {\n return async () => {\n const out = await output();\n const col = await Output.data(out.facets);\n const facet = col.find((c) => c.id === id);\n if (!facet) return;\n await out.facets.save([\n ...col.filter((c) => c.id !== id),\n { ...facet, enabled: !(facet.enabled ?? true), updatedAt: new Date().toISOString() },\n ]);\n };\n}\n\n/**\n * @param {{ id: string }} _\n */\nexport function toggleFacetFavourite({ id }) {\n return async () => {\n const out = await output();\n const col = await Output.data(out.facets);\n const facet = col.find((c) => c.id === id);\n if (!facet) return;\n await out.facets.save([\n ...col.filter((c) => c.id !== id),\n { ...facet, favourite: !(facet.favourite ?? false), updatedAt: new Date().toISOString() },\n ]);\n };\n}\n\n/**\n * @param {Facet} facet\n */\nexport async function saveFacet(facet) {\n const out = await output();\n const col = await Output.data(out.facets);\n const colWithoutId = col.filter((c) => c.id !== facet.id);\n await out.facets.save([...colWithoutId, {\n ...facet,\n updatedAt: new Date().toISOString(),\n }]);\n}\n"],"mappings":"wHAUO,SAASA,EAAY,CAAE,GAAAC,CAAG,EAAG,CAClC,MAAO,UAAY,CAEjB,GAAI,CADM,QAAQ,6CAA6C,EACvD,OAER,IAAMC,EAAM,MAAMC,EAAO,EACnBC,EAAM,MAAaC,EAAKH,EAAI,MAAM,EAExCA,EAAI,OAAO,KAAKE,EAAI,OAAQE,GAAQA,EAAE,KAAOL,CAAG,CAAC,CACnD,CACF,CAVgBM,EAAAP,EAAA,eAeT,SAASQ,EAAmB,CAAE,GAAAP,CAAG,EAAG,CACzC,MAAO,UAAY,CACjB,IAAMC,EAAM,MAAMC,EAAO,EACnBC,EAAM,MAAaC,EAAKH,EAAI,MAAM,EAClCO,EAAQL,EAAI,KAAME,GAAMA,EAAE,KAAOL,CAAE,EACpCQ,GACL,MAAMP,EAAI,OAAO,KAAK,CACpB,GAAGE,EAAI,OAAQE,GAAMA,EAAE,KAAOL,CAAE,EAChC,CAAE,GAAGQ,EAAO,QAAS,EAAEA,EAAM,SAAW,IAAO,UAAW,IAAI,KAAK,EAAE,YAAY,CAAE,CACrF,CAAC,CACH,CACF,CAXgBF,EAAAC,EAAA,sBAgBT,SAASE,EAAqB,CAAE,GAAAT,CAAG,EAAG,CAC3C,MAAO,UAAY,CACjB,IAAMC,EAAM,MAAMC,EAAO,EACnBC,EAAM,MAAaC,EAAKH,EAAI,MAAM,EAClCO,EAAQL,EAAI,KAAME,GAAMA,EAAE,KAAOL,CAAE,EACpCQ,GACL,MAAMP,EAAI,OAAO,KAAK,CACpB,GAAGE,EAAI,OAAQE,GAAMA,EAAE,KAAOL,CAAE,EAChC,CAAE,GAAGQ,EAAO,UAAW,EAAEA,EAAM,WAAa,IAAQ,UAAW,IAAI,KAAK,EAAE,YAAY,CAAE,CAC1F,CAAC,CACH,CACF,CAXgBF,EAAAG,EAAA,wBAgBhB,eAAsBC,EAAUF,EAAO,CACrC,IAAMP,EAAM,MAAMC,EAAO,EAEnBS,GADM,MAAaP,EAAKH,EAAI,MAAM,GACf,OAAQI,GAAMA,EAAE,KAAOG,EAAM,EAAE,EACxD,MAAMP,EAAI,OAAO,KAAK,CAAC,GAAGU,EAAc,CACtC,GAAGH,EACH,UAAW,IAAI,KAAK,EAAE,YAAY,CACpC,CAAC,CAAC,CACJ,CARsBF,EAAAI,EAAA","names":["deleteFacet","id","out","output","col","data","c","__name","toggleFacetEnabled","facet","toggleFacetFavourite","saveFacet","colWithoutId"],"sourceRoot":"","file":"/chunk-53ELVNFW.js.map"} \ No newline at end of file diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-5C2GTCDF.js b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-5C2GTCDF.js similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-5C2GTCDF.js rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-5C2GTCDF.js diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-5C2GTCDF.js.br b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-5C2GTCDF.js.br similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-5C2GTCDF.js.br rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-5C2GTCDF.js.br diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-5C2GTCDF.js.map b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-5C2GTCDF.js.map similarity index 99% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-5C2GTCDF.js.map rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-5C2GTCDF.js.map index 192a900d..165f0998 100644 --- a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-5C2GTCDF.js.map +++ b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-5C2GTCDF.js.map @@ -1 +1 @@ -{"version":3,"sources":["/node_modules/.deno/query-string@9.5.1/node_modules/query-string/base.js","/node_modules/.deno/decode-uri-component@0.5.0/node_modules/decode-uri-component/index.js","/node_modules/.deno/filter-obj@5.1.0/node_modules/filter-obj/index.js","/node_modules/.deno/split-on-first@3.0.0/node_modules/split-on-first/index.js","/node_modules/.deno/query-string@9.5.1/node_modules/query-string/index.js"],"sourcesContent":["import decodeComponent from 'decode-uri-component';\nimport {includeKeys} from 'filter-obj';\nimport splitOnFirst from 'split-on-first';\n\nconst isNullOrUndefined = value => value === null || value === undefined;\n\n// eslint-disable-next-line unicorn/prefer-code-point\nconst strictUriEncode = string => encodeURIComponent(string).replaceAll(/[!'()*]/g, x => `%${x.charCodeAt(0).toString(16).toUpperCase()}`);\n\nconst encodeFragmentIdentifier = Symbol('encodeFragmentIdentifier');\n\nfunction encoderForArrayFormat(options) {\n\tswitch (options.arrayFormat) {\n\t\tcase 'index': {\n\t\t\treturn key => (result, value) => {\n\t\t\t\tconst index = result.length;\n\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\tresult.push([encode(key, options), '[', index, ']'].join(''));\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tresult.push([encode(key, options), '[', encode(index, options), ']=', encode(value, options)].join(''));\n\t\t\t\treturn result;\n\t\t\t};\n\t\t}\n\n\t\tcase 'bracket': {\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\tresult.push([encode(key, options), '[]'].join(''));\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tresult.push([encode(key, options), '[]=', encode(value, options)].join(''));\n\t\t\t\treturn result;\n\t\t\t};\n\t\t}\n\n\t\tcase 'colon-list-separator': {\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\tresult.push([encode(key, options), ':list='].join(''));\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tresult.push([encode(key, options), ':list=', encode(value, options)].join(''));\n\t\t\t\treturn result;\n\t\t\t};\n\t\t}\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\tcase 'bracket-separator': {\n\t\t\tconst keyValueSeparator = options.arrayFormat === 'bracket-separator'\n\t\t\t\t? '[]='\n\t\t\t\t: '=';\n\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\t// Translate null to an empty string so that it doesn't serialize as 'null'\n\t\t\t\tvalue = value === null ? '' : value;\n\n\t\t\t\tif (result.length === 0) {\n\t\t\t\t\tresult.push([encode(key, options), keyValueSeparator, encode(value, options)].join(''));\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tresult.push(encode(value, options));\n\t\t\t\treturn result;\n\t\t\t};\n\t\t}\n\n\t\tdefault: {\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\tresult.push(encode(key, options));\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tresult.push([encode(key, options), '=', encode(value, options)].join(''));\n\t\t\t\treturn result;\n\t\t\t};\n\t\t}\n\t}\n}\n\nfunction parserForArrayFormat(options) {\n\tlet result;\n\n\tswitch (options.arrayFormat) {\n\t\tcase 'index': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /\\[(\\d*)]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\t\t}\n\n\t\tcase 'bracket': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(\\[])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (!Array.isArray(accumulator[key])) {\n\t\t\t\t\taccumulator[key] = [accumulator[key], value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key].push(value);\n\t\t\t};\n\t\t}\n\n\t\tcase 'colon-list-separator': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(:list)$/.exec(key);\n\t\t\t\tkey = key.replace(/:list$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (!Array.isArray(accumulator[key])) {\n\t\t\t\t\taccumulator[key] = [accumulator[key], value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key].push(value);\n\t\t\t};\n\t\t}\n\n\t\tcase 'comma':\n\t\tcase 'separator': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = typeof value === 'string' && value.includes(options.arrayFormatSeparator);\n\t\t\t\tconst newValue = isArray ? value.split(options.arrayFormatSeparator).map(item => decode(item, options)) : (value === null ? value : decode(value, options));\n\t\t\t\taccumulator[key] = newValue;\n\t\t\t};\n\t\t}\n\n\t\tcase 'bracket-separator': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = /(\\[])$/.test(key);\n\t\t\t\tkey = key.replace(/\\[]$/, '');\n\n\t\t\t\tif (!isArray) {\n\t\t\t\t\taccumulator[key] = value ? decode(value, options) : value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst arrayValue = value === null\n\t\t\t\t\t? []\n\t\t\t\t\t: decode(value, options).split(options.arrayFormatSeparator);\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = arrayValue;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (!Array.isArray(accumulator[key])) {\n\t\t\t\t\taccumulator[key] = [accumulator[key]];\n\t\t\t\t}\n\n\t\t\t\tfor (const item of arrayValue) {\n\t\t\t\t\taccumulator[key].push(item);\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\tdefault: {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (Array.isArray(accumulator[key])) {\n\t\t\t\t\taccumulator[key].push(value);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [accumulator[key], value];\n\t\t\t};\n\t\t}\n\t}\n}\n\nfunction validateArrayFormatSeparator(value) {\n\tif (typeof value !== 'string' || value.length !== 1) {\n\t\tthrow new TypeError('arrayFormatSeparator must be single character string');\n\t}\n}\n\nfunction encode(value, options) {\n\tif (options.encode) {\n\t\treturn options.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction decode(value, options) {\n\tif (options.decode) {\n\t\treturn decodeComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t}\n\n\tif (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input))\n\t\t\t.sort((a, b) => Number(a) - Number(b))\n\t\t\t.map(key => input[key]);\n\t}\n\n\treturn input;\n}\n\nfunction removeHash(input) {\n\tconst hashStart = input.indexOf('#');\n\tif (hashStart !== -1) {\n\t\tinput = input.slice(0, hashStart);\n\t}\n\n\treturn input;\n}\n\nfunction getHash(url) {\n\tlet hash = '';\n\tconst hashStart = url.indexOf('#');\n\tif (hashStart !== -1) {\n\t\thash = url.slice(hashStart);\n\t}\n\n\treturn hash;\n}\n\nfunction getUrlWithoutQuery(url) {\n\t// Avoid `split('?')` so query-heavy URLs don't allocate large arrays.\n\tconst queryStart = url.indexOf('?');\n\treturn queryStart === -1 ? url : url.slice(0, queryStart);\n}\n\nfunction parseValue(value, options, type) {\n\tif (type === 'string' && typeof value === 'string') {\n\t\treturn value;\n\t}\n\n\tif (typeof type === 'function' && typeof value === 'string') {\n\t\treturn type(value);\n\t}\n\n\tif (type === 'boolean' && value === null) {\n\t\treturn true;\n\t}\n\n\tif (type === 'boolean' && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {\n\t\treturn value.toLowerCase() === 'true';\n\t}\n\n\tif (type === 'boolean' && value !== null && (value.toLowerCase() === '1' || value.toLowerCase() === '0')) {\n\t\treturn value.toLowerCase() === '1';\n\t}\n\n\tif (type === 'string[]' && options.arrayFormat !== 'none' && typeof value === 'string') {\n\t\treturn [value];\n\t}\n\n\tif (type === 'number[]' && options.arrayFormat !== 'none' && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\treturn [Number(value)];\n\t}\n\n\tif (type === 'number' && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\treturn Number(value);\n\t}\n\n\tif (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {\n\t\treturn value.toLowerCase() === 'true';\n\t}\n\n\tif (options.parseNumbers && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\treturn Number(value);\n\t}\n\n\treturn value;\n}\n\nexport function extract(input) {\n\tinput = removeHash(input);\n\tconst queryStart = input.indexOf('?');\n\tif (queryStart === -1) {\n\t\treturn '';\n\t}\n\n\treturn input.slice(queryStart + 1);\n}\n\nexport function parse(query, options) {\n\toptions = {\n\t\tdecode: true,\n\t\tsort: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',',\n\t\tparseNumbers: false,\n\t\tparseBooleans: false,\n\t\ttypes: Object.create(null),\n\t\t...options,\n\t};\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst formatter = parserForArrayFormat(options);\n\n\t// Create an object with no prototype\n\tconst returnValue = Object.create(null);\n\n\tif (typeof query !== 'string') {\n\t\treturn returnValue;\n\t}\n\n\tquery = query.trim().replace(/^[?#&]/, '');\n\n\tif (!query) {\n\t\treturn returnValue;\n\t}\n\n\tif (/^&+$/.test(query)) {\n\t\treturn returnValue;\n\t}\n\n\tlet parameterStart = 0;\n\tlet firstSeparator = query.indexOf('&');\n\tif (firstSeparator === -1) {\n\t\tfirstSeparator = query.length;\n\t}\n\n\tfor (let index = firstSeparator; index <= query.length; index++) {\n\t\tif (index < query.length && query[index] !== '&') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (index === parameterStart) {\n\t\t\tparameterStart = index + 1;\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst parameter = query.slice(parameterStart, index);\n\t\tconst parameter_ = options.decode ? parameter.replaceAll('+', ' ') : parameter;\n\n\t\tlet [key, value] = splitOnFirst(parameter_, '=');\n\n\t\tif (key === undefined) {\n\t\t\tkey = parameter_;\n\t\t}\n\n\t\t// Missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tvalue = value === undefined ? null : (['comma', 'separator', 'bracket-separator'].includes(options.arrayFormat) ? value : decode(value, options));\n\t\tformatter(decode(key, options), value, returnValue);\n\n\t\tparameterStart = index + 1;\n\t}\n\n\tfor (const [key, value] of Object.entries(returnValue)) {\n\t\tif (typeof value === 'object' && value !== null && options.types[key] !== 'string') {\n\t\t\tfor (const [key2, value2] of Object.entries(value)) {\n\t\t\t\tconst typeOption = options.types[key];\n\t\t\t\tconst type = typeof typeOption === 'function' ? typeOption : (typeOption ? typeOption.replace('[]', '') : undefined);\n\t\t\t\tvalue[key2] = parseValue(value2, options, type);\n\t\t\t}\n\t\t} else if (typeof value === 'object' && value !== null && options.types[key] === 'string') {\n\t\t\treturnValue[key] = Object.values(value).join(options.arrayFormatSeparator);\n\t\t} else {\n\t\t\treturnValue[key] = parseValue(value, options, options.types[key]);\n\t\t}\n\t}\n\n\tif (options.sort === false) {\n\t\treturn returnValue;\n\t}\n\n\t// TODO: Remove the use of `reduce`.\n\t// eslint-disable-next-line unicorn/no-array-reduce\n\treturn (options.sort === true ? Object.keys(returnValue).sort() : Object.keys(returnValue).sort(options.sort)).reduce((result, key) => {\n\t\tconst value = returnValue[key];\n\t\tresult[key] = Boolean(value) && typeof value === 'object' && !Array.isArray(value) ? keysSorter(value) : value;\n\t\treturn result;\n\t}, Object.create(null));\n}\n\nexport function stringify(object, options) {\n\tif (!object) {\n\t\treturn '';\n\t}\n\n\toptions = {\n\t\tencode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',',\n\t\t...options,\n\t};\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst shouldFilter = key => (\n\t\t(options.skipNull && isNullOrUndefined(object[key]))\n\t\t|| (options.skipEmptyString && object[key] === '')\n\t);\n\n\tconst formatter = encoderForArrayFormat(options);\n\n\tconst objectCopy = {};\n\n\tfor (const [key, value] of Object.entries(object)) {\n\t\tif (!shouldFilter(key)) {\n\t\t\tobjectCopy[key] = value;\n\t\t}\n\t}\n\n\tconst keys = Object.keys(objectCopy);\n\n\tif (options.sort !== false) {\n\t\tkeys.sort(options.sort);\n\t}\n\n\treturn keys.map(key => {\n\t\tlet value = object[key];\n\n\t\t// Apply replacer function if provided\n\t\tif (options.replacer) {\n\t\t\tvalue = options.replacer(key, value);\n\n\t\t\t// If replacer returns undefined, skip this key\n\t\t\tif (value === undefined) {\n\t\t\t\treturn '';\n\t\t\t}\n\t\t}\n\n\t\tif (value === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (value === null) {\n\t\t\treturn encode(key, options);\n\t\t}\n\n\t\tif (Array.isArray(value)) {\n\t\t\tif (value.length === 0 && options.arrayFormat === 'bracket-separator') {\n\t\t\t\treturn encode(key, options) + '[]';\n\t\t\t}\n\n\t\t\t// Apply replacer to array elements if provided\n\t\t\t// Note: We don't re-apply replacer to the array itself, only to elements\n\t\t\tlet processedArray = value;\n\t\t\tif (options.replacer) {\n\t\t\t\tprocessedArray = value.map((item, index) =>\n\t\t\t\t\toptions.replacer(`${key}[${index}]`, item),\n\t\t\t\t).filter(item => item !== undefined);\n\t\t\t}\n\n\t\t\tconst result = processedArray.reduce(formatter(key), []);\n\t\t\tconst arrayFormatSeparator = ['comma', 'separator', 'bracket-separator'].includes(options.arrayFormat) ? options.arrayFormatSeparator : '&';\n\t\t\treturn result.join(arrayFormatSeparator);\n\t\t}\n\n\t\treturn encode(key, options) + '=' + encode(value, options);\n\t}).filter(x => x.length > 0).join('&');\n}\n\nexport function parseUrl(url, options) {\n\toptions = {\n\t\tdecode: true,\n\t\t...options,\n\t};\n\n\tlet [url_, hash] = splitOnFirst(url, '#');\n\n\tif (url_ === undefined) {\n\t\turl_ = url;\n\t}\n\n\treturn {\n\t\turl: getUrlWithoutQuery(url_ ?? ''),\n\t\tquery: parse(extract(url), options),\n\t\t...(options && options.parseFragmentIdentifier && hash ? {fragmentIdentifier: decode(hash, options)} : {}),\n\t};\n}\n\nexport function stringifyUrl(object, options) {\n\toptions = {\n\t\tencode: true,\n\t\tstrict: true,\n\t\t[encodeFragmentIdentifier]: true,\n\t\t...options,\n\t};\n\n\tconst url = getUrlWithoutQuery(removeHash(object.url)) || '';\n\tconst queryFromUrl = extract(object.url);\n\n\tconst query = {\n\t\t...parse(queryFromUrl, {sort: false, ...options}),\n\t\t...object.query,\n\t};\n\n\tlet queryString = stringify(query, options);\n\tqueryString &&= `?${queryString}`;\n\n\tlet hash = getHash(object.url);\n\tif (typeof object.fragmentIdentifier === 'string') {\n\t\thash = `#${object.fragmentIdentifier}`;\n\n\t\tif (options[encodeFragmentIdentifier]) {\n\t\t\t// Percent-encode the fragment with a throwaway URL. The fragment percent-encode set does not depend on the scheme, so the caller's URL is deliberately not parsed here; it may not even be parseable.\n\t\t\tconst throwawayUrl = new URL('https://query-string.invalid');\n\t\t\tthrowawayUrl.hash = hash;\n\t\t\thash = throwawayUrl.hash;\n\t\t}\n\t}\n\n\treturn `${url}${queryString}${hash}`;\n}\n\nexport function pick(input, filter, options) {\n\toptions = {\n\t\tparseFragmentIdentifier: true,\n\t\t[encodeFragmentIdentifier]: false,\n\t\t...options,\n\t};\n\n\tconst {url, query, fragmentIdentifier} = parseUrl(input, options);\n\n\treturn stringifyUrl({\n\t\turl,\n\t\tquery: includeKeys(query, filter),\n\t\tfragmentIdentifier,\n\t}, options);\n}\n\nexport function exclude(input, filter, options) {\n\tif (Array.isArray(filter)) {\n\t\tconst filterSet = new Set(filter);\n\t\treturn pick(input, key => !filterSet.has(key), options);\n\t}\n\n\treturn pick(input, (key, value) => !filter(key, value), options);\n}\n","// Matches one or more consecutive percent-encoded bytes (e.g. `%C3%A5`).\nconst token = '%[a-f0-9]{2}';\nconst multiMatcher = new RegExp(`(${token})+`, 'gi');\n\nconst hexPair = /^[a-f\\d]{2}$/i;\n\n// Read a `%XX` sequence at `position`, returning the byte value and where to continue scanning.\nfunction parsePercentByte(input, position) {\n\tif (input.codePointAt(position) !== 37 || position + 3 > input.length) {\n\t\treturn;\n\t}\n\n\tconst digits = input.slice(position + 1, position + 3);\n\n\tif (!hexPair.test(digits)) {\n\t\treturn;\n\t}\n\n\treturn {byte: Number.parseInt(digits, 16), next: position + 3};\n}\n\n/**\n * Return how many bytes a UTF-8 code point needs based on its lead byte.\n * Returns 0 for continuation bytes and other invalid lead bytes.\n */\nfunction utf8SequenceLength(byte) {\n\tif (byte <= 0x7F) {\n\t\treturn 1;\n\t}\n\n\t// Start at 0xC2 to exclude overlong 2-byte encodings (0xC0/0xC1).\n\tif (byte >= 0xC2 && byte <= 0xDF) {\n\t\treturn 2;\n\t}\n\n\tif (byte >= 0xE0 && byte <= 0xEF) {\n\t\treturn 3;\n\t}\n\n\tif (byte >= 0xF0 && byte <= 0xF4) {\n\t\treturn 4;\n\t}\n\n\treturn 0;\n}\n\nfunction isContinuationByte(byte) {\n\treturn byte >= 0x80 && byte <= 0xBF;\n}\n\n/**\n * Decode as much of `input` as possible without throwing.\n *Scans left-to-right in O(n), decoding valid UTF-8 runs and leaving the rest literal.\n */\nfunction decode(input) {\n\ttry {\n\t\treturn decodeURIComponent(input);\n\t} catch {\n\t\tlet output = '';\n\t\tlet position = 0;\n\n\t\twhile (position < input.length) {\n\t\t\tif (input.codePointAt(position) !== 37) {\n\t\t\t\toutput += input.charAt(position);\n\t\t\t\tposition++;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst firstByte = parsePercentByte(input, position);\n\n\t\t\t// `%` not followed by two hex digits (e.g. `%` or `%G`).\n\t\t\tif (!firstByte) {\n\t\t\t\toutput += input.charAt(position);\n\t\t\t\tposition++;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst sequenceLength = utf8SequenceLength(firstByte.byte);\n\n\t\t\t// Continuation byte or invalid lead byte — emit one `%XX` literally.\n\t\t\tif (sequenceLength === 0) {\n\t\t\t\toutput += input.slice(position, position + 3);\n\t\t\t\tposition += 3;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tlet end = firstByte.next;\n\t\t\tlet validSequence = true;\n\n\t\t\tfor (let index = 1; index < sequenceLength; index++) {\n\t\t\t\tconst nextByte = parsePercentByte(input, end);\n\n\t\t\t\tif (!nextByte || !isContinuationByte(nextByte.byte)) {\n\t\t\t\t\tvalidSequence = false;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tend = nextByte.next;\n\t\t\t}\n\n\t\t\tif (validSequence) {\n\t\t\t\tconst encodedSequence = input.slice(position, end);\n\n\t\t\t\ttry {\n\t\t\t\t\toutput += decodeURIComponent(encodedSequence);\n\t\t\t\t\tposition = end;\n\t\t\t\t\tcontinue;\n\t\t\t\t} catch {\n\t\t\t\t\t// Invalid UTF-8 despite correct structure — emit the first byte literally.\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Missing continuation bytes or decode failure — emit the first byte literally.\n\t\t\toutput += input.slice(position, position + 3);\n\t\t\tposition += 3;\n\t\t}\n\n\t\treturn output;\n\t}\n}\n\nfunction customDecodeURIComponent(input) {\n\t// Keep track of all the replacements and prefill the map with the `BOM`\n\tconst replaceMap = {\n\t\t'%FE%FF': '\\uFFFD\\uFFFD',\n\t\t'%FF%FE': '\\uFFFD\\uFFFD',\n\t};\n\n\t// Find percent-encoded runs separated by literal text or lone `%` characters.\n\tlet match = multiMatcher.exec(input);\n\n\twhile (match) {\n\t\ttry {\n\t\t\t// Decode as big chunks as possible\n\t\t\treplaceMap[match[0]] = decodeURIComponent(match[0]);\n\t\t} catch {\n\t\t\tconst result = decode(match[0]);\n\n\t\t\tif (result !== match[0]) {\n\t\t\t\treplaceMap[match[0]] = result;\n\t\t\t}\n\t\t}\n\n\t\tmatch = multiMatcher.exec(input);\n\t}\n\n\t// Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n\treplaceMap['%C2'] = '\\uFFFD';\n\n\tconst entries = Object.keys(replaceMap);\n\n\tfor (const key of entries) {\n\t\t// Replace all decoded components\n\t\tinput = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n\t}\n\n\treturn input;\n}\n\nexport default function decodeUriComponent(encodedURI) {\n\tif (typeof encodedURI !== 'string') {\n\t\tthrow new TypeError(`Expected \\`encodedURI\\` to be of type \\`string\\`, got \\`${typeof encodedURI}\\``);\n\t}\n\n\ttry {\n\t\t// Try the built in decoder first\n\t\treturn decodeURIComponent(encodedURI);\n\t} catch {\n\t\t// Fallback to a more advanced decoder\n\t\treturn customDecodeURIComponent(encodedURI);\n\t}\n}\n","export function includeKeys(object, predicate) {\n\tconst result = {};\n\n\tif (Array.isArray(predicate)) {\n\t\tfor (const key of predicate) {\n\t\t\tconst descriptor = Object.getOwnPropertyDescriptor(object, key);\n\t\t\tif (descriptor?.enumerable) {\n\t\t\t\tObject.defineProperty(result, key, descriptor);\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// `Reflect.ownKeys()` is required to retrieve symbol properties\n\t\tfor (const key of Reflect.ownKeys(object)) {\n\t\t\tconst descriptor = Object.getOwnPropertyDescriptor(object, key);\n\t\t\tif (descriptor.enumerable) {\n\t\t\t\tconst value = object[key];\n\t\t\t\tif (predicate(key, value, object)) {\n\t\t\t\t\tObject.defineProperty(result, key, descriptor);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn result;\n}\n\nexport function excludeKeys(object, predicate) {\n\tif (Array.isArray(predicate)) {\n\t\tconst set = new Set(predicate);\n\t\treturn includeKeys(object, key => !set.has(key));\n\t}\n\n\treturn includeKeys(object, (key, value, object) => !predicate(key, value, object));\n}\n","export default function splitOnFirst(string, separator) {\n\tif (!(typeof string === 'string' && typeof separator === 'string')) {\n\t\tthrow new TypeError('Expected the arguments to be of type `string`');\n\t}\n\n\tif (string === '' || separator === '') {\n\t\treturn [];\n\t}\n\n\tconst separatorIndex = string.indexOf(separator);\n\n\tif (separatorIndex === -1) {\n\t\treturn [];\n\t}\n\n\treturn [\n\t\tstring.slice(0, separatorIndex),\n\t\tstring.slice(separatorIndex + separator.length)\n\t];\n}\n","import * as queryString from './base.js';\n\nexport default queryString;\n"],"mappings":"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","names":["base_exports","__export","exclude","extract","parse","parseUrl","pick","stringify","stringifyUrl","token","multiMatcher","hexPair","parsePercentByte","input","position","digits","__name","utf8SequenceLength","byte","isContinuationByte","decode","output","firstByte","sequenceLength","end","validSequence","index","nextByte","encodedSequence","customDecodeURIComponent","replaceMap","match","result","entries","key","decodeUriComponent","encodedURI","includeKeys","object","predicate","result","key","descriptor","value","__name","splitOnFirst","string","separator","separatorIndex","__name","isNullOrUndefined","__name","value","strictUriEncode","string","x","encodeFragmentIdentifier","encoderForArrayFormat","options","key","result","index","encode","keyValueSeparator","parserForArrayFormat","accumulator","newValue","item","decode","isArray","arrayValue","validateArrayFormatSeparator","decodeUriComponent","keysSorter","input","a","b","removeHash","hashStart","getHash","url","hash","getUrlWithoutQuery","queryStart","parseValue","type","extract","parse","query","formatter","returnValue","parameterStart","firstSeparator","parameter","parameter_","splitOnFirst","key2","value2","typeOption","stringify","object","shouldFilter","objectCopy","keys","processedArray","arrayFormatSeparator","parseUrl","url_","stringifyUrl","queryFromUrl","queryString","throwawayUrl","pick","filter","fragmentIdentifier","includeKeys","exclude","filterSet","query_string_default","base_exports"],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse","file":"/chunk-5C2GTCDF.js.map"} \ No newline at end of file +{"version":3,"sources":["/node_modules/.deno/query-string@9.5.1/node_modules/query-string/base.js","/node_modules/.deno/decode-uri-component@0.5.0/node_modules/decode-uri-component/index.js","/node_modules/.deno/filter-obj@5.1.0/node_modules/filter-obj/index.js","/node_modules/.deno/split-on-first@3.0.0/node_modules/split-on-first/index.js","/node_modules/.deno/query-string@9.5.1/node_modules/query-string/index.js"],"sourcesContent":["import decodeComponent from 'decode-uri-component';\nimport {includeKeys} from 'filter-obj';\nimport splitOnFirst from 'split-on-first';\n\nconst isNullOrUndefined = value => value === null || value === undefined;\n\n// eslint-disable-next-line unicorn/prefer-code-point\nconst strictUriEncode = string => encodeURIComponent(string).replaceAll(/[!'()*]/g, x => `%${x.charCodeAt(0).toString(16).toUpperCase()}`);\n\nconst encodeFragmentIdentifier = Symbol('encodeFragmentIdentifier');\n\nfunction encoderForArrayFormat(options) {\n\tswitch (options.arrayFormat) {\n\t\tcase 'index': {\n\t\t\treturn key => (result, value) => {\n\t\t\t\tconst index = result.length;\n\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\tresult.push([encode(key, options), '[', index, ']'].join(''));\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tresult.push([encode(key, options), '[', encode(index, options), ']=', encode(value, options)].join(''));\n\t\t\t\treturn result;\n\t\t\t};\n\t\t}\n\n\t\tcase 'bracket': {\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\tresult.push([encode(key, options), '[]'].join(''));\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tresult.push([encode(key, options), '[]=', encode(value, options)].join(''));\n\t\t\t\treturn result;\n\t\t\t};\n\t\t}\n\n\t\tcase 'colon-list-separator': {\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\tresult.push([encode(key, options), ':list='].join(''));\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tresult.push([encode(key, options), ':list=', encode(value, options)].join(''));\n\t\t\t\treturn result;\n\t\t\t};\n\t\t}\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\tcase 'bracket-separator': {\n\t\t\tconst keyValueSeparator = options.arrayFormat === 'bracket-separator'\n\t\t\t\t? '[]='\n\t\t\t\t: '=';\n\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\t// Translate null to an empty string so that it doesn't serialize as 'null'\n\t\t\t\tvalue = value === null ? '' : value;\n\n\t\t\t\tif (result.length === 0) {\n\t\t\t\t\tresult.push([encode(key, options), keyValueSeparator, encode(value, options)].join(''));\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tresult.push(encode(value, options));\n\t\t\t\treturn result;\n\t\t\t};\n\t\t}\n\n\t\tdefault: {\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\tresult.push(encode(key, options));\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tresult.push([encode(key, options), '=', encode(value, options)].join(''));\n\t\t\t\treturn result;\n\t\t\t};\n\t\t}\n\t}\n}\n\nfunction parserForArrayFormat(options) {\n\tlet result;\n\n\tswitch (options.arrayFormat) {\n\t\tcase 'index': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /\\[(\\d*)]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\t\t}\n\n\t\tcase 'bracket': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(\\[])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (!Array.isArray(accumulator[key])) {\n\t\t\t\t\taccumulator[key] = [accumulator[key], value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key].push(value);\n\t\t\t};\n\t\t}\n\n\t\tcase 'colon-list-separator': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(:list)$/.exec(key);\n\t\t\t\tkey = key.replace(/:list$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (!Array.isArray(accumulator[key])) {\n\t\t\t\t\taccumulator[key] = [accumulator[key], value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key].push(value);\n\t\t\t};\n\t\t}\n\n\t\tcase 'comma':\n\t\tcase 'separator': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = typeof value === 'string' && value.includes(options.arrayFormatSeparator);\n\t\t\t\tconst newValue = isArray ? value.split(options.arrayFormatSeparator).map(item => decode(item, options)) : (value === null ? value : decode(value, options));\n\t\t\t\taccumulator[key] = newValue;\n\t\t\t};\n\t\t}\n\n\t\tcase 'bracket-separator': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = /(\\[])$/.test(key);\n\t\t\t\tkey = key.replace(/\\[]$/, '');\n\n\t\t\t\tif (!isArray) {\n\t\t\t\t\taccumulator[key] = value ? decode(value, options) : value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst arrayValue = value === null\n\t\t\t\t\t? []\n\t\t\t\t\t: decode(value, options).split(options.arrayFormatSeparator);\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = arrayValue;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (!Array.isArray(accumulator[key])) {\n\t\t\t\t\taccumulator[key] = [accumulator[key]];\n\t\t\t\t}\n\n\t\t\t\tfor (const item of arrayValue) {\n\t\t\t\t\taccumulator[key].push(item);\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\tdefault: {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (Array.isArray(accumulator[key])) {\n\t\t\t\t\taccumulator[key].push(value);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [accumulator[key], value];\n\t\t\t};\n\t\t}\n\t}\n}\n\nfunction validateArrayFormatSeparator(value) {\n\tif (typeof value !== 'string' || value.length !== 1) {\n\t\tthrow new TypeError('arrayFormatSeparator must be single character string');\n\t}\n}\n\nfunction encode(value, options) {\n\tif (options.encode) {\n\t\treturn options.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction decode(value, options) {\n\tif (options.decode) {\n\t\treturn decodeComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t}\n\n\tif (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input))\n\t\t\t.sort((a, b) => Number(a) - Number(b))\n\t\t\t.map(key => input[key]);\n\t}\n\n\treturn input;\n}\n\nfunction removeHash(input) {\n\tconst hashStart = input.indexOf('#');\n\tif (hashStart !== -1) {\n\t\tinput = input.slice(0, hashStart);\n\t}\n\n\treturn input;\n}\n\nfunction getHash(url) {\n\tlet hash = '';\n\tconst hashStart = url.indexOf('#');\n\tif (hashStart !== -1) {\n\t\thash = url.slice(hashStart);\n\t}\n\n\treturn hash;\n}\n\nfunction getUrlWithoutQuery(url) {\n\t// Avoid `split('?')` so query-heavy URLs don't allocate large arrays.\n\tconst queryStart = url.indexOf('?');\n\treturn queryStart === -1 ? url : url.slice(0, queryStart);\n}\n\nfunction parseValue(value, options, type) {\n\tif (type === 'string' && typeof value === 'string') {\n\t\treturn value;\n\t}\n\n\tif (typeof type === 'function' && typeof value === 'string') {\n\t\treturn type(value);\n\t}\n\n\tif (type === 'boolean' && value === null) {\n\t\treturn true;\n\t}\n\n\tif (type === 'boolean' && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {\n\t\treturn value.toLowerCase() === 'true';\n\t}\n\n\tif (type === 'boolean' && value !== null && (value.toLowerCase() === '1' || value.toLowerCase() === '0')) {\n\t\treturn value.toLowerCase() === '1';\n\t}\n\n\tif (type === 'string[]' && options.arrayFormat !== 'none' && typeof value === 'string') {\n\t\treturn [value];\n\t}\n\n\tif (type === 'number[]' && options.arrayFormat !== 'none' && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\treturn [Number(value)];\n\t}\n\n\tif (type === 'number' && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\treturn Number(value);\n\t}\n\n\tif (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {\n\t\treturn value.toLowerCase() === 'true';\n\t}\n\n\tif (options.parseNumbers && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\treturn Number(value);\n\t}\n\n\treturn value;\n}\n\nexport function extract(input) {\n\tinput = removeHash(input);\n\tconst queryStart = input.indexOf('?');\n\tif (queryStart === -1) {\n\t\treturn '';\n\t}\n\n\treturn input.slice(queryStart + 1);\n}\n\nexport function parse(query, options) {\n\toptions = {\n\t\tdecode: true,\n\t\tsort: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',',\n\t\tparseNumbers: false,\n\t\tparseBooleans: false,\n\t\ttypes: Object.create(null),\n\t\t...options,\n\t};\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst formatter = parserForArrayFormat(options);\n\n\t// Create an object with no prototype\n\tconst returnValue = Object.create(null);\n\n\tif (typeof query !== 'string') {\n\t\treturn returnValue;\n\t}\n\n\tquery = query.trim().replace(/^[?#&]/, '');\n\n\tif (!query) {\n\t\treturn returnValue;\n\t}\n\n\tif (/^&+$/.test(query)) {\n\t\treturn returnValue;\n\t}\n\n\tlet parameterStart = 0;\n\tlet firstSeparator = query.indexOf('&');\n\tif (firstSeparator === -1) {\n\t\tfirstSeparator = query.length;\n\t}\n\n\tfor (let index = firstSeparator; index <= query.length; index++) {\n\t\tif (index < query.length && query[index] !== '&') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (index === parameterStart) {\n\t\t\tparameterStart = index + 1;\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst parameter = query.slice(parameterStart, index);\n\t\tconst parameter_ = options.decode ? parameter.replaceAll('+', ' ') : parameter;\n\n\t\tlet [key, value] = splitOnFirst(parameter_, '=');\n\n\t\tif (key === undefined) {\n\t\t\tkey = parameter_;\n\t\t}\n\n\t\t// Missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tvalue = value === undefined ? null : (['comma', 'separator', 'bracket-separator'].includes(options.arrayFormat) ? value : decode(value, options));\n\t\tformatter(decode(key, options), value, returnValue);\n\n\t\tparameterStart = index + 1;\n\t}\n\n\tfor (const [key, value] of Object.entries(returnValue)) {\n\t\tif (typeof value === 'object' && value !== null && options.types[key] !== 'string') {\n\t\t\tfor (const [key2, value2] of Object.entries(value)) {\n\t\t\t\tconst typeOption = options.types[key];\n\t\t\t\tconst type = typeof typeOption === 'function' ? typeOption : (typeOption ? typeOption.replace('[]', '') : undefined);\n\t\t\t\tvalue[key2] = parseValue(value2, options, type);\n\t\t\t}\n\t\t} else if (typeof value === 'object' && value !== null && options.types[key] === 'string') {\n\t\t\treturnValue[key] = Object.values(value).join(options.arrayFormatSeparator);\n\t\t} else {\n\t\t\treturnValue[key] = parseValue(value, options, options.types[key]);\n\t\t}\n\t}\n\n\tif (options.sort === false) {\n\t\treturn returnValue;\n\t}\n\n\t// TODO: Remove the use of `reduce`.\n\t// eslint-disable-next-line unicorn/no-array-reduce\n\treturn (options.sort === true ? Object.keys(returnValue).sort() : Object.keys(returnValue).sort(options.sort)).reduce((result, key) => {\n\t\tconst value = returnValue[key];\n\t\tresult[key] = Boolean(value) && typeof value === 'object' && !Array.isArray(value) ? keysSorter(value) : value;\n\t\treturn result;\n\t}, Object.create(null));\n}\n\nexport function stringify(object, options) {\n\tif (!object) {\n\t\treturn '';\n\t}\n\n\toptions = {\n\t\tencode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',',\n\t\t...options,\n\t};\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst shouldFilter = key => (\n\t\t(options.skipNull && isNullOrUndefined(object[key]))\n\t\t|| (options.skipEmptyString && object[key] === '')\n\t);\n\n\tconst formatter = encoderForArrayFormat(options);\n\n\tconst objectCopy = {};\n\n\tfor (const [key, value] of Object.entries(object)) {\n\t\tif (!shouldFilter(key)) {\n\t\t\tobjectCopy[key] = value;\n\t\t}\n\t}\n\n\tconst keys = Object.keys(objectCopy);\n\n\tif (options.sort !== false) {\n\t\tkeys.sort(options.sort);\n\t}\n\n\treturn keys.map(key => {\n\t\tlet value = object[key];\n\n\t\t// Apply replacer function if provided\n\t\tif (options.replacer) {\n\t\t\tvalue = options.replacer(key, value);\n\n\t\t\t// If replacer returns undefined, skip this key\n\t\t\tif (value === undefined) {\n\t\t\t\treturn '';\n\t\t\t}\n\t\t}\n\n\t\tif (value === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (value === null) {\n\t\t\treturn encode(key, options);\n\t\t}\n\n\t\tif (Array.isArray(value)) {\n\t\t\tif (value.length === 0 && options.arrayFormat === 'bracket-separator') {\n\t\t\t\treturn encode(key, options) + '[]';\n\t\t\t}\n\n\t\t\t// Apply replacer to array elements if provided\n\t\t\t// Note: We don't re-apply replacer to the array itself, only to elements\n\t\t\tlet processedArray = value;\n\t\t\tif (options.replacer) {\n\t\t\t\tprocessedArray = value.map((item, index) =>\n\t\t\t\t\toptions.replacer(`${key}[${index}]`, item),\n\t\t\t\t).filter(item => item !== undefined);\n\t\t\t}\n\n\t\t\tconst result = processedArray.reduce(formatter(key), []);\n\t\t\tconst arrayFormatSeparator = ['comma', 'separator', 'bracket-separator'].includes(options.arrayFormat) ? options.arrayFormatSeparator : '&';\n\t\t\treturn result.join(arrayFormatSeparator);\n\t\t}\n\n\t\treturn encode(key, options) + '=' + encode(value, options);\n\t}).filter(x => x.length > 0).join('&');\n}\n\nexport function parseUrl(url, options) {\n\toptions = {\n\t\tdecode: true,\n\t\t...options,\n\t};\n\n\tlet [url_, hash] = splitOnFirst(url, '#');\n\n\tif (url_ === undefined) {\n\t\turl_ = url;\n\t}\n\n\treturn {\n\t\turl: getUrlWithoutQuery(url_ ?? ''),\n\t\tquery: parse(extract(url), options),\n\t\t...(options && options.parseFragmentIdentifier && hash ? {fragmentIdentifier: decode(hash, options)} : {}),\n\t};\n}\n\nexport function stringifyUrl(object, options) {\n\toptions = {\n\t\tencode: true,\n\t\tstrict: true,\n\t\t[encodeFragmentIdentifier]: true,\n\t\t...options,\n\t};\n\n\tconst url = getUrlWithoutQuery(removeHash(object.url)) || '';\n\tconst queryFromUrl = extract(object.url);\n\n\tconst query = {\n\t\t...parse(queryFromUrl, {sort: false, ...options}),\n\t\t...object.query,\n\t};\n\n\tlet queryString = stringify(query, options);\n\tqueryString &&= `?${queryString}`;\n\n\tlet hash = getHash(object.url);\n\tif (typeof object.fragmentIdentifier === 'string') {\n\t\thash = `#${object.fragmentIdentifier}`;\n\n\t\tif (options[encodeFragmentIdentifier]) {\n\t\t\t// Percent-encode the fragment with a throwaway URL. The fragment percent-encode set does not depend on the scheme, so the caller's URL is deliberately not parsed here; it may not even be parseable.\n\t\t\tconst throwawayUrl = new URL('https://query-string.invalid');\n\t\t\tthrowawayUrl.hash = hash;\n\t\t\thash = throwawayUrl.hash;\n\t\t}\n\t}\n\n\treturn `${url}${queryString}${hash}`;\n}\n\nexport function pick(input, filter, options) {\n\toptions = {\n\t\tparseFragmentIdentifier: true,\n\t\t[encodeFragmentIdentifier]: false,\n\t\t...options,\n\t};\n\n\tconst {url, query, fragmentIdentifier} = parseUrl(input, options);\n\n\treturn stringifyUrl({\n\t\turl,\n\t\tquery: includeKeys(query, filter),\n\t\tfragmentIdentifier,\n\t}, options);\n}\n\nexport function exclude(input, filter, options) {\n\tif (Array.isArray(filter)) {\n\t\tconst filterSet = new Set(filter);\n\t\treturn pick(input, key => !filterSet.has(key), options);\n\t}\n\n\treturn pick(input, (key, value) => !filter(key, value), options);\n}\n","// Matches one or more consecutive percent-encoded bytes (e.g. `%C3%A5`).\nconst token = '%[a-f0-9]{2}';\nconst multiMatcher = new RegExp(`(${token})+`, 'gi');\n\nconst hexPair = /^[a-f\\d]{2}$/i;\n\n// Read a `%XX` sequence at `position`, returning the byte value and where to continue scanning.\nfunction parsePercentByte(input, position) {\n\tif (input.codePointAt(position) !== 37 || position + 3 > input.length) {\n\t\treturn;\n\t}\n\n\tconst digits = input.slice(position + 1, position + 3);\n\n\tif (!hexPair.test(digits)) {\n\t\treturn;\n\t}\n\n\treturn {byte: Number.parseInt(digits, 16), next: position + 3};\n}\n\n/**\n * Return how many bytes a UTF-8 code point needs based on its lead byte.\n * Returns 0 for continuation bytes and other invalid lead bytes.\n */\nfunction utf8SequenceLength(byte) {\n\tif (byte <= 0x7F) {\n\t\treturn 1;\n\t}\n\n\t// Start at 0xC2 to exclude overlong 2-byte encodings (0xC0/0xC1).\n\tif (byte >= 0xC2 && byte <= 0xDF) {\n\t\treturn 2;\n\t}\n\n\tif (byte >= 0xE0 && byte <= 0xEF) {\n\t\treturn 3;\n\t}\n\n\tif (byte >= 0xF0 && byte <= 0xF4) {\n\t\treturn 4;\n\t}\n\n\treturn 0;\n}\n\nfunction isContinuationByte(byte) {\n\treturn byte >= 0x80 && byte <= 0xBF;\n}\n\n/**\n * Decode as much of `input` as possible without throwing.\n *Scans left-to-right in O(n), decoding valid UTF-8 runs and leaving the rest literal.\n */\nfunction decode(input) {\n\ttry {\n\t\treturn decodeURIComponent(input);\n\t} catch {\n\t\tlet output = '';\n\t\tlet position = 0;\n\n\t\twhile (position < input.length) {\n\t\t\tif (input.codePointAt(position) !== 37) {\n\t\t\t\toutput += input.charAt(position);\n\t\t\t\tposition++;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst firstByte = parsePercentByte(input, position);\n\n\t\t\t// `%` not followed by two hex digits (e.g. `%` or `%G`).\n\t\t\tif (!firstByte) {\n\t\t\t\toutput += input.charAt(position);\n\t\t\t\tposition++;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst sequenceLength = utf8SequenceLength(firstByte.byte);\n\n\t\t\t// Continuation byte or invalid lead byte — emit one `%XX` literally.\n\t\t\tif (sequenceLength === 0) {\n\t\t\t\toutput += input.slice(position, position + 3);\n\t\t\t\tposition += 3;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tlet end = firstByte.next;\n\t\t\tlet validSequence = true;\n\n\t\t\tfor (let index = 1; index < sequenceLength; index++) {\n\t\t\t\tconst nextByte = parsePercentByte(input, end);\n\n\t\t\t\tif (!nextByte || !isContinuationByte(nextByte.byte)) {\n\t\t\t\t\tvalidSequence = false;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tend = nextByte.next;\n\t\t\t}\n\n\t\t\tif (validSequence) {\n\t\t\t\tconst encodedSequence = input.slice(position, end);\n\n\t\t\t\ttry {\n\t\t\t\t\toutput += decodeURIComponent(encodedSequence);\n\t\t\t\t\tposition = end;\n\t\t\t\t\tcontinue;\n\t\t\t\t} catch {\n\t\t\t\t\t// Invalid UTF-8 despite correct structure — emit the first byte literally.\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Missing continuation bytes or decode failure — emit the first byte literally.\n\t\t\toutput += input.slice(position, position + 3);\n\t\t\tposition += 3;\n\t\t}\n\n\t\treturn output;\n\t}\n}\n\nfunction customDecodeURIComponent(input) {\n\t// Keep track of all the replacements and prefill the map with the `BOM`\n\tconst replaceMap = {\n\t\t'%FE%FF': '\\uFFFD\\uFFFD',\n\t\t'%FF%FE': '\\uFFFD\\uFFFD',\n\t};\n\n\t// Find percent-encoded runs separated by literal text or lone `%` characters.\n\tlet match = multiMatcher.exec(input);\n\n\twhile (match) {\n\t\ttry {\n\t\t\t// Decode as big chunks as possible\n\t\t\treplaceMap[match[0]] = decodeURIComponent(match[0]);\n\t\t} catch {\n\t\t\tconst result = decode(match[0]);\n\n\t\t\tif (result !== match[0]) {\n\t\t\t\treplaceMap[match[0]] = result;\n\t\t\t}\n\t\t}\n\n\t\tmatch = multiMatcher.exec(input);\n\t}\n\n\t// Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n\treplaceMap['%C2'] = '\\uFFFD';\n\n\tconst entries = Object.keys(replaceMap);\n\n\tfor (const key of entries) {\n\t\t// Replace all decoded components\n\t\tinput = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n\t}\n\n\treturn input;\n}\n\nexport default function decodeUriComponent(encodedURI) {\n\tif (typeof encodedURI !== 'string') {\n\t\tthrow new TypeError(`Expected \\`encodedURI\\` to be of type \\`string\\`, got \\`${typeof encodedURI}\\``);\n\t}\n\n\ttry {\n\t\t// Try the built in decoder first\n\t\treturn decodeURIComponent(encodedURI);\n\t} catch {\n\t\t// Fallback to a more advanced decoder\n\t\treturn customDecodeURIComponent(encodedURI);\n\t}\n}\n","export function includeKeys(object, predicate) {\n\tconst result = {};\n\n\tif (Array.isArray(predicate)) {\n\t\tfor (const key of predicate) {\n\t\t\tconst descriptor = Object.getOwnPropertyDescriptor(object, key);\n\t\t\tif (descriptor?.enumerable) {\n\t\t\t\tObject.defineProperty(result, key, descriptor);\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// `Reflect.ownKeys()` is required to retrieve symbol properties\n\t\tfor (const key of Reflect.ownKeys(object)) {\n\t\t\tconst descriptor = Object.getOwnPropertyDescriptor(object, key);\n\t\t\tif (descriptor.enumerable) {\n\t\t\t\tconst value = object[key];\n\t\t\t\tif (predicate(key, value, object)) {\n\t\t\t\t\tObject.defineProperty(result, key, descriptor);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn result;\n}\n\nexport function excludeKeys(object, predicate) {\n\tif (Array.isArray(predicate)) {\n\t\tconst set = new Set(predicate);\n\t\treturn includeKeys(object, key => !set.has(key));\n\t}\n\n\treturn includeKeys(object, (key, value, object) => !predicate(key, value, object));\n}\n","export default function splitOnFirst(string, separator) {\n\tif (!(typeof string === 'string' && typeof separator === 'string')) {\n\t\tthrow new TypeError('Expected the arguments to be of type `string`');\n\t}\n\n\tif (string === '' || separator === '') {\n\t\treturn [];\n\t}\n\n\tconst separatorIndex = string.indexOf(separator);\n\n\tif (separatorIndex === -1) {\n\t\treturn [];\n\t}\n\n\treturn [\n\t\tstring.slice(0, separatorIndex),\n\t\tstring.slice(separatorIndex + separator.length)\n\t];\n}\n","import * as queryString from './base.js';\n\nexport default queryString;\n"],"mappings":"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","names":["base_exports","__export","exclude","extract","parse","parseUrl","pick","stringify","stringifyUrl","token","multiMatcher","hexPair","parsePercentByte","input","position","digits","__name","utf8SequenceLength","byte","isContinuationByte","decode","output","firstByte","sequenceLength","end","validSequence","index","nextByte","encodedSequence","customDecodeURIComponent","replaceMap","match","result","entries","key","decodeUriComponent","encodedURI","includeKeys","object","predicate","result","key","descriptor","value","__name","splitOnFirst","string","separator","separatorIndex","__name","isNullOrUndefined","__name","value","strictUriEncode","string","x","encodeFragmentIdentifier","encoderForArrayFormat","options","key","result","index","encode","keyValueSeparator","parserForArrayFormat","accumulator","newValue","item","decode","isArray","arrayValue","validateArrayFormatSeparator","decodeUriComponent","keysSorter","input","a","b","removeHash","hashStart","getHash","url","hash","getUrlWithoutQuery","queryStart","parseValue","type","extract","parse","query","formatter","returnValue","parameterStart","firstSeparator","parameter","parameter_","splitOnFirst","key2","value2","typeOption","stringify","object","shouldFilter","objectCopy","keys","processedArray","arrayFormatSeparator","parseUrl","url_","stringifyUrl","queryFromUrl","queryString","throwawayUrl","pick","filter","fragmentIdentifier","includeKeys","exclude","filterSet","query_string_default","base_exports"],"sourceRoot":"","file":"/chunk-5C2GTCDF.js.map"} \ No newline at end of file diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-5EUZQD32.js b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-5EUZQD32.js similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-5EUZQD32.js rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-5EUZQD32.js diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-5EUZQD32.js.br b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-5EUZQD32.js.br similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-5EUZQD32.js.br rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-5EUZQD32.js.br diff --git a/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-5EUZQD32.js.map b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-5EUZQD32.js.map new file mode 100644 index 00000000..e1205e5b --- /dev/null +++ b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-5EUZQD32.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["/https:https:/esm.sh/@automerge/automerge@3.2.6/denonext/dist/mjs/constants.mjs","/https:https:/esm.sh/@automerge/automerge@3.2.6/denonext/dist/mjs/counter.mjs","/https:https:/esm.sh/@automerge/automerge@3.2.6/denonext/dist/mjs/immutable_string.mjs","/https:https:/esm.sh/@automerge/automerge@3.2.6/denonext/dist/mjs/wasm_bindgen_output/web/automerge_wasm.mjs","/https:https:/esm.sh/@automerge/automerge@3.2.6/denonext/dist/mjs/low_level.mjs","/https:https:/esm.sh/@automerge/automerge@3.2.6/denonext/dist/mjs/index.mjs","/https:https:/esm.sh/@automerge/automerge@3.2.6/denonext/automerge.wasm.base64.mjs","/https:https:/esm.sh/@automerge/automerge@3.2.6/denonext/automerge.mjs"],"sourcesContent":["/* esm.sh - @automerge/automerge@3.2.6/dist/mjs/constants */\nvar o=Symbol.for(\"_am_meta\"),t=Symbol.for(\"_am_trace\"),r=Symbol.for(\"_am_objectId\"),_=Symbol.for(\"_am_isProxy\"),m=Symbol.for(\"_am_clearCache\"),e=Symbol.for(\"_am_uint\"),a=Symbol.for(\"_am_int\"),c=Symbol.for(\"_am_f64\"),n=Symbol.for(\"_am_counter\"),S=Symbol.for(\"_am_text\"),b=Symbol.for(\"_am_immutableString\");export{m as CLEAR_CACHE,n as COUNTER,c as F64,b as IMMUTABLE_STRING,a as INT,_ as IS_PROXY,r as OBJECT_ID,o as STATE,S as TEXT,t as TRACE,e as UINT};\n//# sourceMappingURL=constants.mjs.map","/* esm.sh - @automerge/automerge@3.2.6/dist/mjs/counter */\nimport{COUNTER as u}from\"./constants.mjs\";var s=class{constructor(e){this.value=e||0,Reflect.defineProperty(this,u,{value:!0})}valueOf(){return this.value}toString(){return this.valueOf().toString()}toJSON(){return this.value}increment(e){throw new Error(\"Counters should not be incremented outside of a change callback\")}decrement(e){throw new Error(\"Counters should not be decremented outside of a change callback\")}},i=class extends s{constructor(e,r,n,o,c){super(e),this.context=r,this.path=n,this.objectId=o,this.key=c}increment(e){return e=typeof e==\"number\"?e:1,this.context.increment(this.objectId,this.key,e),this.value+=e,this.value}decrement(e){return this.increment(typeof e==\"number\"?-e:-1)}};function a(t,e,r,n,o){return new i(t,e,r,n,o)}export{s as Counter,a as getWriteableCounter};\n//# sourceMappingURL=counter.mjs.map","/* esm.sh - @automerge/automerge@3.2.6/dist/mjs/immutable_string */\nimport{IMMUTABLE_STRING as s}from\"./constants.mjs\";var r,t=class{constructor(o){this[r]=!0,this.val=o}toString(){return this.val}toJSON(){return this.val}};r=s;export{t as ImmutableString};\n//# sourceMappingURL=immutable_string.mjs.map","/* esm.sh - @automerge/automerge@3.2.6/dist/mjs/wasm_bindgen_output/web/automerge_wasm */\nvar m=class o{static __wrap(t){t=t>>>0;let e=Object.create(o.prototype);return e.__wbg_ptr=t,R.register(e,e.__wbg_ptr,e),e}__destroy_into_raw(){let t=this.__wbg_ptr;return this.__wbg_ptr=0,R.unregister(this),t}free(){let t=this.__destroy_into_raw();_.__wbg_automerge_free(t,0)}applyAndReturnPatches(t,e){let r=_.automerge_applyAndReturnPatches(this.__wbg_ptr,t,e);if(r[2])throw s(r[1]);return s(r[0])}applyChanges(t){let e=_.automerge_applyChanges(this.__wbg_ptr,t);if(e[1])throw s(e[0])}applyPatches(t,e){let r=_.automerge_applyPatches(this.__wbg_ptr,t,e);if(r[2])throw s(r[1]);return s(r[0])}clone(t){var e=f(t)?0:p(t,_.__wbindgen_malloc,_.__wbindgen_realloc),r=b;let n=_.automerge_clone(this.__wbg_ptr,e,r);if(n[2])throw s(n[1]);return o.__wrap(n[0])}commit(t,e){var r=f(t)?0:p(t,_.__wbindgen_malloc,_.__wbindgen_realloc),n=b;return _.automerge_commit(this.__wbg_ptr,r,n,!f(e),f(e)?0:e)}delete(t,e){let r=_.automerge_delete(this.__wbg_ptr,t,e);if(r[1])throw s(r[0])}diff(t,e){let r=_.automerge_diff(this.__wbg_ptr,t,e);if(r[2])throw s(r[1]);return s(r[0])}diffIncremental(){let t=_.automerge_diffIncremental(this.__wbg_ptr);if(t[2])throw s(t[1]);return s(t[0])}diffPath(t,e,r,n){let c=_.automerge_diffPath(this.__wbg_ptr,t,e,r,n);if(c[2])throw s(c[1]);return s(c[0])}dump(){_.automerge_dump(this.__wbg_ptr)}emptyChange(t,e){var r=f(t)?0:p(t,_.__wbindgen_malloc,_.__wbindgen_realloc),n=b;return _.automerge_emptyChange(this.__wbg_ptr,r,n,!f(e),f(e)?0:e)}enableFreeze(t){let e=_.automerge_enableFreeze(this.__wbg_ptr,t);if(e[2])throw s(e[1]);return e[0]!==0}fork(t,e){var r=f(t)?0:p(t,_.__wbindgen_malloc,_.__wbindgen_realloc),n=b;let c=_.automerge_fork(this.__wbg_ptr,r,n,e);if(c[2])throw s(c[1]);return o.__wrap(c[0])}generateSyncMessage(t){return y(t,d),_.automerge_generateSyncMessage(this.__wbg_ptr,t.__wbg_ptr)}get(t,e,r){let n=_.automerge_get(this.__wbg_ptr,t,e,r);if(n[2])throw s(n[1]);return s(n[0])}getActorId(){let t,e;try{let r=_.automerge_getActorId(this.__wbg_ptr);return t=r[0],e=r[1],w(r[0],r[1])}finally{_.__wbindgen_free(t,e,1)}}getAll(t,e,r){let n=_.automerge_getAll(this.__wbg_ptr,t,e,r);if(n[2])throw s(n[1]);return s(n[0])}getBlock(t,e,r){let n=_.automerge_getBlock(this.__wbg_ptr,t,e,r);if(n[2])throw s(n[1]);return s(n[0])}getChangeByHash(t){let e=_.automerge_getChangeByHash(this.__wbg_ptr,t);if(e[2])throw s(e[1]);return s(e[0])}getChangeMetaByHash(t){let e=_.automerge_getChangeMetaByHash(this.__wbg_ptr,t);if(e[2])throw s(e[1]);return s(e[0])}getChanges(t){let e=_.automerge_getChanges(this.__wbg_ptr,t);if(e[2])throw s(e[1]);return s(e[0])}getChangesAdded(t){return y(t,o),_.automerge_getChangesAdded(this.__wbg_ptr,t.__wbg_ptr)}getChangesMeta(t){let e=_.automerge_getChangesMeta(this.__wbg_ptr,t);if(e[2])throw s(e[1]);return s(e[0])}getCursor(t,e,r,n){let c,i;try{let O=_.automerge_getCursor(this.__wbg_ptr,t,e,r,n);var a=O[0],u=O[1];if(O[3])throw a=0,u=0,s(O[2]);return c=a,i=u,w(a,u)}finally{_.__wbindgen_free(c,i,1)}}getCursorPosition(t,e,r){let n=_.automerge_getCursorPosition(this.__wbg_ptr,t,e,r);if(n[2])throw s(n[1]);return n[0]}getDecodedChangeByHash(t){let e=_.automerge_getDecodedChangeByHash(this.__wbg_ptr,t);if(e[2])throw s(e[1]);return s(e[0])}getHeads(){return _.automerge_getHeads(this.__wbg_ptr)}getLastLocalChange(){return _.automerge_getLastLocalChange(this.__wbg_ptr)}getMissingDeps(t){let e=_.automerge_getMissingDeps(this.__wbg_ptr,t);if(e[2])throw s(e[1]);return s(e[0])}getWithType(t,e,r){let n=_.automerge_getWithType(this.__wbg_ptr,t,e,r);if(n[2])throw s(n[1]);return s(n[0])}hasOurChanges(t){return y(t,d),_.automerge_hasOurChanges(this.__wbg_ptr,t.__wbg_ptr)!==0}increment(t,e,r){let n=_.automerge_increment(this.__wbg_ptr,t,e,r);if(n[1])throw s(n[0])}initRootFromHydrate(t){let e=_.automerge_initRootFromHydrate(this.__wbg_ptr,t);if(e[1])throw s(e[0])}insert(t,e,r,n){let c=_.automerge_insert(this.__wbg_ptr,t,e,r,n);if(c[1])throw s(c[0])}insertObject(t,e,r){let n,c;try{let u=_.automerge_insertObject(this.__wbg_ptr,t,e,r);var i=u[0],a=u[1];if(u[3])throw i=0,a=0,s(u[2]);return n=i,c=a,w(i,a)}finally{_.__wbindgen_free(n,c,1)}}insertObjectFromHydrate(t,e,r){let n=_.automerge_insertObjectFromHydrate(this.__wbg_ptr,t,e,r);if(n[2])throw s(n[1]);return s(n[0])}integrate(){_.automerge_integrate(this.__wbg_ptr)}isolate(t){let e=_.automerge_isolate(this.__wbg_ptr,t);if(e[1])throw s(e[0])}joinBlock(t,e){let r=_.automerge_joinBlock(this.__wbg_ptr,t,e);if(r[1])throw s(r[0])}keys(t,e){let r=_.automerge_keys(this.__wbg_ptr,t,e);if(r[2])throw s(r[1]);return s(r[0])}length(t,e){let r=_.automerge_length(this.__wbg_ptr,t,e);if(r[2])throw s(r[1]);return r[0]}loadIncremental(t){let e=_.automerge_loadIncremental(this.__wbg_ptr,t);if(e[2])throw s(e[1]);return e[0]}mark(t,e,r,n,c){let i=_.automerge_mark(this.__wbg_ptr,t,e,r,n,c);if(i[1])throw s(i[0])}marks(t,e){let r=_.automerge_marks(this.__wbg_ptr,t,e);if(r[2])throw s(r[1]);return s(r[0])}marksAt(t,e,r){let n=_.automerge_marksAt(this.__wbg_ptr,t,e,r);if(n[2])throw s(n[1]);return s(n[0])}materialize(t,e,r){let n=_.automerge_materialize(this.__wbg_ptr,t,e,r);if(n[2])throw s(n[1]);return s(n[0])}merge(t){y(t,o);let e=_.automerge_merge(this.__wbg_ptr,t.__wbg_ptr);if(e[2])throw s(e[1]);return s(e[0])}static new(t){var e=f(t)?0:p(t,_.__wbindgen_malloc,_.__wbindgen_realloc),r=b;let n=_.automerge_new(e,r);if(n[2])throw s(n[1]);return o.__wrap(n[0])}objInfo(t,e){let r=_.automerge_objInfo(this.__wbg_ptr,t,e);if(r[2])throw s(r[1]);return s(r[0])}pendingOps(){return _.automerge_pendingOps(this.__wbg_ptr)}push(t,e,r){let n=_.automerge_push(this.__wbg_ptr,t,e,r);if(n[1])throw s(n[0])}pushObject(t,e){let r,n;try{let a=_.automerge_pushObject(this.__wbg_ptr,t,e);var c=a[0],i=a[1];if(a[3])throw c=0,i=0,s(a[2]);return r=c,n=i,w(c,i)}finally{_.__wbindgen_free(r,n,1)}}put(t,e,r,n){let c=_.automerge_put(this.__wbg_ptr,t,e,r,n);if(c[1])throw s(c[0])}putObject(t,e,r){let n=_.automerge_putObject(this.__wbg_ptr,t,e,r);if(n[2])throw s(n[1]);return s(n[0])}putObjectFromHydrate(t,e,r){let n=_.automerge_putObjectFromHydrate(this.__wbg_ptr,t,e,r);if(n[2])throw s(n[1]);return s(n[0])}receiveSyncMessage(t,e){y(t,d);let r=_.automerge_receiveSyncMessage(this.__wbg_ptr,t.__wbg_ptr,e);if(r[1])throw s(r[0])}registerDatatype(t,e,r){let n=_.automerge_registerDatatype(this.__wbg_ptr,t,e,r);if(n[1])throw s(n[0])}resetDiffCursor(){_.automerge_resetDiffCursor(this.__wbg_ptr)}rollback(){return _.automerge_rollback(this.__wbg_ptr)}save(){return _.automerge_save(this.__wbg_ptr)}saveAndVerify(){let t=_.automerge_saveAndVerify(this.__wbg_ptr);if(t[2])throw s(t[1]);return s(t[0])}saveBundle(t){let e=_.automerge_saveBundle(this.__wbg_ptr,t);if(e[2])throw s(e[1]);return s(e[0])}saveIncremental(){return _.automerge_saveIncremental(this.__wbg_ptr)}saveNoCompress(){return _.automerge_saveNoCompress(this.__wbg_ptr)}saveSince(t){let e=_.automerge_saveSince(this.__wbg_ptr,t);if(e[2])throw s(e[1]);return s(e[0])}spans(t,e){let r=_.automerge_spans(this.__wbg_ptr,t,e);if(r[2])throw s(r[1]);return s(r[0])}splice(t,e,r,n){let c=_.automerge_splice(this.__wbg_ptr,t,e,r,n);if(c[1])throw s(c[0])}spliceFromHydrate(t,e,r,n){let c=_.automerge_spliceFromHydrate(this.__wbg_ptr,t,e,r,n);if(c[1])throw s(c[0])}splitBlock(t,e,r){let n=_.automerge_splitBlock(this.__wbg_ptr,t,e,r);if(n[1])throw s(n[0])}stats(){return _.automerge_stats(this.__wbg_ptr)}text(t,e){let r,n;try{let a=_.automerge_text(this.__wbg_ptr,t,e);var c=a[0],i=a[1];if(a[3])throw c=0,i=0,s(a[2]);return r=c,n=i,w(c,i)}finally{_.__wbindgen_free(r,n,1)}}toJS(t){let e=_.automerge_toJS(this.__wbg_ptr,t);if(e[2])throw s(e[1]);return s(e[0])}topoHistoryTraversal(){return _.automerge_topoHistoryTraversal(this.__wbg_ptr)}unmark(t,e,r){let n=_.automerge_unmark(this.__wbg_ptr,t,e,r);if(n[1])throw s(n[0])}updateBlock(t,e,r){let n=_.automerge_updateBlock(this.__wbg_ptr,t,e,r);if(n[1])throw s(n[0])}updateDiffCursor(){_.automerge_updateDiffCursor(this.__wbg_ptr)}updateSpans(t,e,r){let n=_.automerge_updateSpans(this.__wbg_ptr,t,e,r);if(n[1])throw s(n[0])}updateText(t,e){let r=_.automerge_updateText(this.__wbg_ptr,t,e);if(r[1])throw s(r[0])}};Symbol.dispose&&(m.prototype[Symbol.dispose]=m.prototype.free);var d=class o{static __wrap(t){t=t>>>0;let e=Object.create(o.prototype);return e.__wbg_ptr=t,k.register(e,e.__wbg_ptr,e),e}__destroy_into_raw(){let t=this.__wbg_ptr;return this.__wbg_ptr=0,k.unregister(this),t}free(){let t=this.__destroy_into_raw();_.__wbg_syncstate_free(t,0)}clone(){let t=_.syncstate_clone(this.__wbg_ptr);return o.__wrap(t)}get lastSentHeads(){return _.syncstate_lastSentHeads(this.__wbg_ptr)}get peerReadOnly(){return _.syncstate_peerReadOnly(this.__wbg_ptr)!==0}get readOnly(){return _.syncstate_readOnly(this.__wbg_ptr)!==0}set lastSentHeads(t){let e=_.syncstate_set_lastSentHeads(this.__wbg_ptr,t);if(e[1])throw s(e[0])}set readOnly(t){_.syncstate_set_readOnly(this.__wbg_ptr,t)}set sentHashes(t){let e=_.syncstate_set_sentHashes(this.__wbg_ptr,t);if(e[1])throw s(e[0])}get sharedHeads(){return _.syncstate_sharedHeads(this.__wbg_ptr)}};Symbol.dispose&&(d.prototype[Symbol.dispose]=d.prototype.free);function W(o){let t=_.create(o);if(t[2])throw s(t[1]);return m.__wrap(t[0])}function z(o){let t=_.decodeChange(o);if(t[2])throw s(t[1]);return s(t[0])}function P(o){let t=_.decodeSyncMessage(o);if(t[2])throw s(t[1]);return s(t[0])}function U(o){let t=_.decodeSyncState(o);if(t[2])throw s(t[1]);return d.__wrap(t[0])}function L(o){let t=_.encodeChange(o);if(t[2])throw s(t[1]);return s(t[0])}function N(o){let t=_.encodeSyncMessage(o);if(t[2])throw s(t[1]);return s(t[0])}function V(o){return y(o,d),_.encodeSyncState(o.__wbg_ptr)}function $(o){return y(o,d),_.exportSyncState(o.__wbg_ptr)}function J(o){let t=_.importSyncState(o);if(t[2])throw s(t[1]);return d.__wrap(t[0])}function q(){let o=_.initSyncState();return d.__wrap(o)}function K(o,t){let e=_.load(o,t);if(e[2])throw s(e[1]);return m.__wrap(e[0])}function X(o){let t=_.readBundle(o);if(t[2])throw s(t[1]);return s(t[0])}function Y(){return _.wasmReleaseInfo()}function F(){return{__proto__:null,\"./automerge_wasm_bg.js\":{__proto__:null,__wbg_BigInt_65bcea251e788083:function(t){return BigInt(t)},__wbg_Error_960c155d3d49e4c2:function(t,e){return Error(w(t,e))},__wbg_String_8564e559799eccda:function(t,e){let r=String(e),n=p(r,_.__wbindgen_malloc,_.__wbindgen_realloc),c=b;g().setInt32(t+4,c,!0),g().setInt32(t+0,n,!0)},__wbg___wbindgen_boolean_get_6ea149f0a8dcc5ff:function(t){let e=t,r=typeof e==\"boolean\"?e:void 0;return f(r)?16777215:r?1:0},__wbg___wbindgen_debug_string_ab4b34d23d6778bd:function(t,e){let r=v(e),n=p(r,_.__wbindgen_malloc,_.__wbindgen_realloc),c=b;g().setInt32(t+4,c,!0),g().setInt32(t+0,n,!0)},__wbg___wbindgen_gt_fd08d8cbe0a8551c:function(t,e){return t>e},__wbg___wbindgen_is_bigint_ec25c7f91b4d9e93:function(t){return typeof t==\"bigint\"},__wbg___wbindgen_is_function_3baa9db1a987f47d:function(t){return typeof t==\"function\"},__wbg___wbindgen_is_null_52ff4ec04186736f:function(t){return t===null},__wbg___wbindgen_is_object_63322ec0cd6ea4ef:function(t){let e=t;return typeof e==\"object\"&&e!==null},__wbg___wbindgen_is_string_6df3bf7ef1164ed3:function(t){return typeof t==\"string\"},__wbg___wbindgen_is_undefined_29a43b4d42920abd:function(t){return t===void 0},__wbg___wbindgen_jsval_loose_eq_cac3565e89b4134c:function(t,e){return t==e},__wbg___wbindgen_lt_78bab382628fb48f:function(t,e){return t>>0]},__wbg_get_unchecked_17f53dad852b9588:function(t,e){return t[e>>>0]},__wbg_instanceof_ArrayBuffer_7c8433c6ed14ffe3:function(t){let e;try{e=t instanceof ArrayBuffer}catch{e=!1}return e},__wbg_instanceof_Date_81b75f5ed36b30ea:function(t){let e;try{e=t instanceof Date}catch{e=!1}return e},__wbg_instanceof_Object_7c99480a1cdfb911:function(t){let e;try{e=t instanceof Object}catch{e=!1}return e},__wbg_instanceof_Uint8Array_152ba1f289edcf3f:function(t){let e;try{e=t instanceof Uint8Array}catch{e=!1}return e},__wbg_isArray_2790516aa848bf18:function(t){return Array.isArray(t)},__wbg_isArray_c3109d14ffc06469:function(t){return Array.isArray(t)},__wbg_iterator_013bc09ec998c2a7:function(){return Symbol.iterator},__wbg_keys_2fd1bfdda7e278ca:function(t){return Object.keys(t)},__wbg_length_3d4ecd04bd8d22f1:function(t){return t.length},__wbg_length_6a846b3b23b74aca:function(t){return t.length},__wbg_length_9f1775224cf1d815:function(t){return t.length},__wbg_log_7e1aa9064a1dbdbd:function(t){console.log(t)},__wbg_log_dfa1efedf266562e:function(t,e){console.log(t,e)},__wbg_new_0c7403db6e782f19:function(t){return new Uint8Array(t)},__wbg_new_191521fecb171639:function(t,e){return new RangeError(w(t,e))},__wbg_new_227d7c05414eb861:function(){return new Error},__wbg_new_5e360d2ff7b9e1c3:function(t,e){return new Error(w(t,e))},__wbg_new_682678e2f47e32bc:function(){return new Array},__wbg_new_7913666fe5070684:function(t){return new Date(t)},__wbg_new_aa8d0fa9762c29bd:function(){return new Object},__wbg_new_from_slice_b5ea43e23f6008c0:function(t,e){return new Uint8Array(C(t,e))},__wbg_next_0340c4ae324393c3:function(){return l(function(t){return t.next()},arguments)},__wbg_next_7646edaa39458ef7:function(t){return t.next},__wbg_ownKeys_0231887680f0f945:function(){return l(function(t){return Reflect.ownKeys(t)},arguments)},__wbg_prototypesetcall_a6b02eb00b0f4ce2:function(t,e,r){Uint8Array.prototype.set.call(C(t,e),r)},__wbg_push_471a5b068a5295f6:function(t,e){return t.push(e)},__wbg_set_022bee52d0b05b19:function(){return l(function(t,e,r){return Reflect.set(t,e,r)},arguments)},__wbg_set_3bf1de9fab0cd644:function(t,e,r){t[e>>>0]=r},__wbg_set_6be42768c690e380:function(t,e,r){t[e]=r},__wbg_slice_45916ed2fae7e0ea:function(t,e,r){return t.slice(e>>>0,r>>>0)},__wbg_stack_3b0d974bbf31e44f:function(t,e){let r=e.stack,n=p(r,_.__wbindgen_malloc,_.__wbindgen_realloc),c=b;g().setInt32(t+4,c,!0),g().setInt32(t+0,n,!0)},__wbg_stringify_057c4027271f8007:function(t,e){let r=JSON.stringify(e);var n=f(r)?0:p(r,_.__wbindgen_malloc,_.__wbindgen_realloc),c=b;g().setInt32(t+4,c,!0),g().setInt32(t+0,n,!0)},__wbg_toString_5a84b8552b34a19d:function(t){return t.toString()},__wbg_toString_c3061af2bf859d19:function(){return l(function(t,e){return t.toString(e)},arguments)},__wbg_toString_c96dc76d5547a715:function(t,e,r){let n=e.toString(r),c=p(n,_.__wbindgen_malloc,_.__wbindgen_realloc),i=b;g().setInt32(t+4,i,!0),g().setInt32(t+0,c,!0)},__wbg_unshift_951ea71d9d2dc660:function(t,e){return t.unshift(e)},__wbg_value_ee3a06f4579184fa:function(t){return t.value},__wbg_values_301a77363cf6c773:function(t){return Object.values(t)},__wbindgen_cast_0000000000000001:function(t){return t},__wbindgen_cast_0000000000000002:function(t){return t},__wbindgen_cast_0000000000000003:function(t,e){return w(t,e)},__wbindgen_cast_0000000000000004:function(t){return BigInt.asUintN(64,t)},__wbindgen_init_externref_table:function(){let t=_.__wbindgen_externrefs,e=t.grow(4);t.set(0,void 0),t.set(e+0,void 0),t.set(e+1,null),t.set(e+2,!0),t.set(e+3,!1)}}}}var R=typeof FinalizationRegistry>\"u\"?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(o=>_.__wbg_automerge_free(o>>>0,1)),k=typeof FinalizationRegistry>\"u\"?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(o=>_.__wbg_syncstate_free(o>>>0,1));function M(o){let t=_.__externref_table_alloc();return _.__wbindgen_externrefs.set(t,o),t}function y(o,t){if(!(o instanceof t))throw new Error(`expected instance of ${t.name}`)}function v(o){let t=typeof o;if(t==\"number\"||t==\"boolean\"||o==null)return`${o}`;if(t==\"string\")return`\"${o}\"`;if(t==\"symbol\"){let n=o.description;return n==null?\"Symbol\":`Symbol(${n})`}if(t==\"function\"){let n=o.name;return typeof n==\"string\"&&n.length>0?`Function(${n})`:\"Function\"}if(Array.isArray(o)){let n=o.length,c=\"[\";n>0&&(c+=v(o[0]));for(let i=1;i1)r=e[1];else return toString.call(o);if(r==\"Object\")try{return\"Object(\"+JSON.stringify(o)+\")\"}catch{return\"Object\"}return o instanceof Error?`${o.name}: ${o.message}\n${o.stack}`:r}function C(o,t){return o=o>>>0,A().subarray(o/1,o/1+t)}var h=null;function g(){return(h===null||h.buffer.detached===!0||h.buffer.detached===void 0&&h.buffer!==_.memory.buffer)&&(h=new DataView(_.memory.buffer)),h}function w(o,t){return o=o>>>0,T(o,t)}var S=null;function A(){return(S===null||S.byteLength===0)&&(S=new Uint8Array(_.memory.buffer)),S}function l(o,t){try{return o.apply(this,t)}catch(e){let r=M(e);_.__wbindgen_exn_store(r)}}function f(o){return o==null}function p(o,t,e){if(e===void 0){let a=x.encode(o),u=t(a.length,1)>>>0;return A().subarray(u,u+a.length).set(a),b=a.length,u}let r=o.length,n=t(r,1)>>>0,c=A(),i=0;for(;i127)break;c[n+i]=a}if(i!==r){i!==0&&(o=o.slice(i)),n=e(n,r,r=i+o.length*3,1)>>>0;let a=A().subarray(n+i,n+r),u=x.encodeInto(o,a);i+=u.written,n=e(n,r,i,1)>>>0}return b=i,n}function s(o){let t=_.__wbindgen_externrefs.get(o);return _.__externref_table_dealloc(o),t}var j=new TextDecoder(\"utf-8\",{ignoreBOM:!0,fatal:!0});j.decode();var H=2146435072,I=0;function T(o,t){return I+=t,I>=H&&(j=new TextDecoder(\"utf-8\",{ignoreBOM:!0,fatal:!0}),j.decode(),I=t),j.decode(A().subarray(o,o+t))}var x=new TextEncoder;\"encodeInto\"in x||(x.encodeInto=function(o,t){let e=x.encode(o);return t.set(e),{read:o.length,written:e.length}});var b=0,D,_;function B(o,t){return _=o.exports,D=t,h=null,S=null,_.__wbindgen_start(),_}async function E(o,t){if(typeof Response==\"function\"&&o instanceof Response){if(typeof WebAssembly.instantiateStreaming==\"function\")try{return await WebAssembly.instantiateStreaming(o,t)}catch(n){if(o.ok&&e(o.type)&&o.headers.get(\"Content-Type\")!==\"application/wasm\")console.warn(\"`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n\",n);else throw n}let r=await o.arrayBuffer();return await WebAssembly.instantiate(r,t)}else{let r=await WebAssembly.instantiate(o,t);return r instanceof WebAssembly.Instance?{instance:r,module:o}:r}function e(r){switch(r){case\"basic\":case\"cors\":case\"default\":return!0}return!1}}function G(o){if(_!==void 0)return _;o!==void 0&&(Object.getPrototypeOf(o)===Object.prototype?{module:o}=o:console.warn(\"using deprecated parameters for `initSync()`; pass a single object instead\"));let t=F();o instanceof WebAssembly.Module||(o=new WebAssembly.Module(o));let e=new WebAssembly.Instance(o,t);return B(e,o)}async function Q(o){if(_!==void 0)return _;o!==void 0&&(Object.getPrototypeOf(o)===Object.prototype?{module_or_path:o}=o:console.warn(\"using deprecated parameters for the initialization function; pass a single object instead\")),o===void 0&&(o=new URL(\"automerge_wasm_bg.wasm\",import.meta.url));let t=F();(typeof o==\"string\"||typeof Request==\"function\"&&o instanceof Request||typeof URL==\"function\"&&o instanceof URL)&&(o=fetch(o));let{instance:e,module:r}=await E(await o,t);return B(e,r)}export{m as Automerge,d as SyncState,W as create,z as decodeChange,P as decodeSyncMessage,U as decodeSyncState,Q as default,L as encodeChange,N as encodeSyncMessage,V as encodeSyncState,$ as exportSyncState,J as importSyncState,G as initSync,q as initSyncState,K as load,X as readBundle,Y as wasmReleaseInfo};\n//# sourceMappingURL=automerge_wasm.mjs.map","/* esm.sh - @automerge/automerge@3.2.6/dist/mjs/low_level */\nimport{default as o}from\"./wasm_bindgen_output/web/automerge_wasm.mjs\";import*as a from\"./wasm_bindgen_output/web/automerge_wasm.mjs\";var r=!1,n=[];function s(e){for(let t in e)c[t]=e[t];r=!0;for(let t of n)t()}var c={create(e){throw new RangeError(\"Automerge.use() not called\")},load(e,t){throw new RangeError(\"Automerge.use() not called (load)\")},encodeChange(e){throw new RangeError(\"Automerge.use() not called (encodeChange)\")},decodeChange(e){throw new RangeError(\"Automerge.use() not called (decodeChange)\")},initSyncState(){throw new RangeError(\"Automerge.use() not called (initSyncState)\")},encodeSyncMessage(e){throw new RangeError(\"Automerge.use() not called (encodeSyncMessage)\")},decodeSyncMessage(e){throw new RangeError(\"Automerge.use() not called (decodeSyncMessage)\")},encodeSyncState(e){throw new RangeError(\"Automerge.use() not called (encodeSyncState)\")},decodeSyncState(e){throw new RangeError(\"Automerge.use() not called (decodeSyncState)\")},exportSyncState(e){throw new RangeError(\"Automerge.use() not called (exportSyncState)\")},importSyncState(e){throw new RangeError(\"Automerge.use() not called (importSyncState)\")},readBundle(e){throw new RangeError(\"Automerge.use() not called (readBundle)\")},wasmReleaseInfo(){throw new RangeError(\"Automerge.use() not called (wasmReleaseInfo)\")}};function i(e){return o({module_or_path:e}).then(t=>{s(a)})}function l(e){return i(Uint8Array.from(atob(e),t=>t.charCodeAt(0)))}function u(){return r?Promise.resolve():new Promise(e=>{n.push(e)})}function g(){return r}export{c as ApiHandler,s as UseApi,l as initializeBase64Wasm,i as initializeWasm,g as isWasmInitialized,u as wasmInitialized};\n//# sourceMappingURL=low_level.mjs.map","/* esm.sh - @automerge/automerge@3.2.6/dist/mjs/index */\nvar pe=Object.defineProperty;var de=(e,t)=>{for(var n in t)pe(e,n,{get:t[n],enumerable:!0})};var ge={};de(ge,{Counter:()=>w,Float64:()=>I,ImmutableString:()=>Zt,Int:()=>P,RawString:()=>Jt,Uint:()=>k,applyChanges:()=>ce,applyPatch:()=>X,applyPatches:()=>te,block:()=>Ht,change:()=>tt,changeAt:()=>nt,clone:()=>Ze,decodeChange:()=>ue,decodeSyncMessage:()=>Et,decodeSyncState:()=>bt,deleteAt:()=>Ge,diff:()=>gt,diffPath:()=>pt,dump:()=>At,emptyChange:()=>rt,encodeChange:()=>xt,encodeSyncMessage:()=>Rt,encodeSyncState:()=>mt,equals:()=>z,free:()=>Qe,from:()=>et,generateSyncMessage:()=>yt,getActorId:()=>ct,getAllChanges:()=>ie,getBackend:()=>Ye,getChanges:()=>ft,getChangesMetaSince:()=>Ke,getChangesSince:()=>qe,getConflicts:()=>ut,getCursor:()=>zt,getCursorPosition:()=>Ft,getHeads:()=>le,getHistory:()=>ht,getLastLocalChange:()=>lt,getMissingDeps:()=>Ct,getObjectId:()=>se,hasHeads:()=>It,hasOurChanges:()=>jt,init:()=>U,initSyncState:()=>St,initializeBase64Wasm:()=>qt,initializeWasm:()=>Yt,insertAt:()=>Je,inspectChange:()=>_t,isAutomerge:()=>x,isCounter:()=>H,isImmutableString:()=>R,isRawString:()=>Wt,isWasmInitialized:()=>Vt,joinBlock:()=>Mt,load:()=>ot,loadIncremental:()=>ae,mark:()=>Y,marks:()=>Ut,marksAt:()=>Lt,merge:()=>it,readBundle:()=>Xt,receiveSyncMessage:()=>wt,releaseInfo:()=>he,save:()=>st,saveBundle:()=>Gt,saveIncremental:()=>at,saveSince:()=>kt,spans:()=>$t,splice:()=>M,splitBlock:()=>Dt,stats:()=>vt,toJS:()=>Pt,topoHistoryTraversal:()=>Ot,unmark:()=>q,updateBlock:()=>Bt,updateSpans:()=>Nt,updateText:()=>Tt,use:()=>Xe,view:()=>Ve,wasmInitialized:()=>Kt});import{getWriteableCounter as be}from\"./counter.mjs\";import{STATE as W,TRACE as v,IS_PROXY as K,OBJECT_ID as T,CLEAR_CACHE as V,COUNTER as Z,INT as ye,UINT as we,F64 as je,IMMUTABLE_STRING as Se}from\"./constants.mjs\";import{ImmutableString as xe}from\"./immutable_string.mjs\";var me=BigInt(\"9223372036854775807\");function j(e,t,n){if(e===void 0)throw new RangeError([`Cannot assign undefined value at ${L(n)}, `,\"You might consider setting the property's value to `null`, \",\"or using `delete` to remove it altogether.\"].join(\"\"));if(!(e===null||typeof e!==\"object\")){if(t&&A(e,t))throw new RangeError(\"Cannot create a reference to an existing document object\");if(e instanceof Array)for(let a=0;ame?[e,\"uint\"]:[e,\"int\"];case\"number\":return Number.isInteger(e)?[e,\"int\"]:[e,\"f64\"];case\"string\":return[e,\"text\"];case\"undefined\":throw new RangeError([`Cannot assign undefined value at ${L(t)}, `,\"because `undefined` is not a valid JSON data type. \",\"You might consider setting the property's value to `null`, \",\"or using `delete` to remove it altogether.\"].join(\"\"));default:throw new RangeError([`Cannot assign ${r} value at ${L(t)}. `,\"All JSON primitive datatypes (object, array, string, number, boolean, null) \",`are supported in an Automerge document; ${r} values are not. `].join(\"\"))}}function A(e,t){var n,r;return e instanceof Date?!1:!!(e&&((r=(n=e[W])===null||n===void 0?void 0:n.handle)===null||r===void 0?void 0:r.__wbg_ptr)===t.__wbg_ptr)}var Re={get(e,t){let{context:n,objectId:r,cache:a}=e;return t===Symbol.toStringTag?e[Symbol.toStringTag]:t===T?r:t===K?!0:t===v?e.trace:t===W?{handle:n}:(a[t]||(a[t]=p(e,t)),a[t])},set(e,t,n){let{context:r,objectId:a,path:o}=e;if(e.cache={},A(n,r))throw new RangeError(\"Cannot create a reference to an existing document object\");if(t===v)return e.trace=n,!0;if(t===V)return!0;let[s,i]=J(n,[...o,t],r);switch(i){case\"list\":case\"map\":{j(s,r,[...o,t]),r.putObjectFromHydrate(a,t,s);break}case\"text\":{r.putObject(a,t,s);break}default:r.put(a,t,s,i)}return!0},deleteProperty(e,t){let{context:n,objectId:r}=e;return e.cache={},n.delete(r,t),!0},has(e,t){return this.get(e,t)!==void 0},getOwnPropertyDescriptor(e,t){let n=this.get(e,t);if(typeof n<\"u\")return{configurable:!0,enumerable:!0,value:n}},ownKeys(e){let{context:t,objectId:n}=e,r=t.keys(n);return[...new Set(r)]}},Ee={get(e,t){let{context:n,objectId:r}=e;return t=m(t),t===Symbol.hasInstance?a=>Array.isArray(a):t===Symbol.toStringTag?e[Symbol.toStringTag]:t===T?r:t===K?!0:t===v?e.trace:t===W?{handle:n}:t===\"length\"?n.length(r):typeof t==\"number\"?p(e,t):Ce(e)[t]},set(e,t,n){let{context:r,objectId:a,path:o}=e;if(t=m(t),A(n,r))throw new RangeError(\"Cannot create a reference to an existing document object\");if(t===V)return!0;if(t===v)return e.trace=n,!0;if(typeof t==\"string\")throw new RangeError(\"list index must be a number\");let[s,i]=J(n,[...o,t],r);switch(i){case\"list\":case\"map\":{j(s,r,[...o,t]),t>=r.length(a)?r.insertObjectFromHydrate(a,t,s):r.putObjectFromHydrate(a,t,s);break}case\"text\":{t>=r.length(a)?r.insertObject(a,t,s):r.putObject(a,t,s);break}default:t>=r.length(a)?r.insert(a,t,s,i):r.put(a,t,s,i)}return!0},deleteProperty(e,t){let{context:n,objectId:r}=e;t=m(t);let a=n.get(r,t);if(a!=null&&a[0]==\"counter\")throw new TypeError(\"Unsupported operation: deleting a counter from a list\");return n.delete(r,t),!0},has(e,t){let{context:n,objectId:r}=e;return t=m(t),typeof t==\"number\"?t{let i=p(e,o);return i===void 0?{value:void 0,done:!0}:{value:[o++,i],done:!1}},[Symbol.iterator](){return this}}},keys(){let o=0,s=t.length(n);return{next:()=>o{let i=p(e,o++);return i===void 0?{value:void 0,done:!0}:{value:i,done:!1}},[Symbol.iterator](){return this}}},toArray(){let o=[],s;do s=p(e,o.length),s!==void 0&&o.push(s);while(s!==void 0);return o},map(o){return this.toArray().map(o)},toString(){return this.toArray().toString()},toLocaleString(){return this.toArray().toLocaleString()},forEach(o){return this.toArray().forEach(o)},concat(o){return this.toArray().concat(o)},every(o){return this.toArray().every(o)},filter(o){return this.toArray().filter(o)},find(o){let s=0;for(let i of this){if(o(i,s))return i;s+=1}},findIndex(o){let s=0;for(let i of this){if(o(i,s))return s;s+=1}return-1},includes(o){return this.find(s=>s===o)!==void 0},join(o){return this.toArray().join(o)},reduce(o,s){return this.toArray().reduce(o,s)},reduceRight(o,s){return this.toArray().reduceRight(o,s)},lastIndexOf(o,s=1/0){return this.toArray().lastIndexOf(o,s)},slice(o,s){return this.toArray().slice(o,s)},some(o){let s=0;for(let i of this){if(o(i,s))return!0;s+=1}return!1},[Symbol.iterator]:function*(){let o=0,s=p(e,o);for(;s!==void 0;)yield s,o+=1,s=p(e,o)}}}function L(e){let t=e.map(n=>{if(typeof n==\"number\")return n.toString();if(typeof n==\"string\")return n.replace(/~/g,\"~0\").replace(/\\//g,\"~1\")});return e.length===0?\"\":\"/\"+t.join(\"/\")}function R(e){return typeof e==\"object\"&&e!==null&&Object.prototype.hasOwnProperty.call(e,Se)}function H(e){return typeof e==\"object\"&&e!==null&&Object.prototype.hasOwnProperty.call(e,Z)}import{STATE as Le}from\"./constants.mjs\";import{Counter as w}from\"./counter.mjs\";import{INT as Ae,UINT as Pe,F64 as ke}from\"./constants.mjs\";var P=class{constructor(t){if(!(Number.isInteger(t)&&t<=Number.MAX_SAFE_INTEGER&&t>=Number.MIN_SAFE_INTEGER))throw new RangeError(`Value ${t} cannot be a uint`);this.value=t,Reflect.defineProperty(this,Ae,{value:!0}),Object.freeze(this)}},k=class{constructor(t){if(!(Number.isInteger(t)&&t<=Number.MAX_SAFE_INTEGER&&t>=0))throw new RangeError(`Value ${t} cannot be a uint`);this.value=t,Reflect.defineProperty(this,Pe,{value:!0}),Object.freeze(this)}},I=class{constructor(t){if(typeof t!=\"number\")throw new RangeError(`Value ${t} cannot be a float64`);this.value=t||0,Reflect.defineProperty(this,ke,{value:!0}),Object.freeze(this)}};import{ImmutableString as hn}from\"./immutable_string.mjs\";import{ApiHandler as f,UseApi as We}from\"./low_level.mjs\";var ee=\"a11222254d2f86ec9df0738e7002f15a930fe9b4\";import{initializeWasm as Yt,initializeBase64Wasm as qt,wasmInitialized as Kt,isWasmInitialized as Vt}from\"./low_level.mjs\";import{ImmutableString as oe}from\"./immutable_string.mjs\";import{ImmutableString as Zt}from\"./immutable_string.mjs\";import{CLEAR_CACHE as Ie,IS_PROXY as Oe,OBJECT_ID as _e,STATE as ve,TRACE as Te}from\"./constants.mjs\";function c(e,t=!0){if(typeof e!=\"object\")throw new RangeError(\"must be the document root\");let n=Reflect.get(e,ve);if(n===void 0||n==null||t&&E(e)!==\"_root\")throw new RangeError(\"must be the document root\");return n}function S(e){Reflect.set(e,Ie,!0)}function D(e){return Reflect.get(e,Te)}function E(e){return typeof e!=\"object\"||e===null?null:Reflect.get(e,_e)}function h(e){return!!Reflect.get(e,Oe)}function X(e,t){let n=Fe(e,t.path);if(t.action===\"put\")$e(e,n,t);else if(t.action===\"insert\")He(e,n,t);else if(t.action===\"del\")De(e,n,t);else if(t.action===\"splice\")Me(e,n,t);else if(t.action===\"inc\")Be(e,n,t);else if(t.action===\"mark\")Ne(e,n,t);else if(t.action===\"unmark\")ze(e,n,t);else if(t.action!==\"conflict\")throw new RangeError(`unsupported patch: ${t}`)}function $e(e,t,n){let{obj:r,prop:a}=b(t,-1);r[a]=n.value}function He(e,t,n){let{obj:r,prop:a}=b(t,-1);if(!Array.isArray(r))throw new RangeError(\"target is not an array for patch\");if(typeof a!=\"number\")throw new RangeError(\"index is not a number for patch\");r.splice(a,0,...n.values)}function De(e,t,n){let{obj:r,prop:a,parentPath:o}=b(t,-1);if(typeof a!=\"number\")throw new RangeError(\"index is not a number for patch\");if(Array.isArray(r))r.splice(a,n.length||1);else if(typeof r==\"string\")if(x(e))M(e,o,a,n.length||1);else{let{obj:s,prop:i}=b(t,-2);if(typeof a!=\"number\")throw new RangeError(\"index is not a number for patch\");let u=s[i];if(u==null||typeof u!=\"string\")throw new RangeError(\"target is not a string for patch\");let l=u.slice(0,a)+u.slice(a+(n.length||1));s[i]=l}else throw new RangeError(\"target is not an array or string for patch\")}function Me(e,t,n){if(x(e)){let{obj:r,prop:a,parentPath:o}=b(t,-1);if(typeof a!=\"number\")throw new RangeError(\"index is not a number for patch\");M(e,o,a,0,n.value)}else{let{obj:r,prop:a}=b(t,-1),{obj:o,prop:s}=b(t,-2);if(typeof a!=\"number\")throw new RangeError(\"index is not a number for patch\");let i=o[s];if(i==null||typeof i!=\"string\")throw new RangeError(\"target is not a string for patch\");let u=i.slice(0,a)+n.value+i.slice(a);o[s]=u}}function Be(e,t,n){let{obj:r,prop:a}=b(t,-1),o=r[a];if(x(e)){if(!H(o))throw new RangeError(\"target is not a counter for patch\");o.increment(n.value)}else{if(typeof o!=\"number\")throw new RangeError(\"target is not a number for patch\");r[a]=o+n.value}}function Ne(e,t,n){let{obj:r,prop:a}=b(t,-1);if(x(e))for(let o of n.marks)Y(e,n.path,{start:o.start,end:o.end,expand:\"none\"},o.name,o.value)}function ze(e,t,n){x(e)&&q(e,n.path,{start:n.start,end:n.end,expand:\"none\"},n.name)}function te(e,t){for(let n of t)X(e,n)}function Fe(e,t){let n=[],r=e,a=[];for(let[o,s]of t.entries())if(n.push({obj:r,prop:s,parentPath:a.slice()}),a.push(s),o!==t.length-1){if(r==null||typeof r!=\"object\")throw new Error(`Invalid path: ${t}`);r=r[s]}else break;return n}function b(e,t){let n=e.at(t);if(n==null)throw new Error(\"invalid path\");return n}function ne(e,t,n,r){let a=e.getAll(t,n);if(a.length<=1)return;let o={};for(let s of a)switch(s[0]){case\"map\":r?o[s[1]]=$(e,s[1],[n]):o[s[1]]=B(e,[s[0],s[1]]);break;case\"list\":r?o[s[1]]=G(e,s[1],[n]):o[s[1]]=B(e,[s[0],s[1]]);break;case\"text\":o[s[1]]=e.text(s[1]);break;case\"str\":case\"uint\":case\"int\":case\"f64\":case\"boolean\":case\"bytes\":case\"null\":o[s[2]]=s[1];break;case\"counter\":o[s[2]]=new w(s[1]);break;case\"timestamp\":o[s[2]]=new Date(s[1]);break;default:throw RangeError(`datatype ${s[0]} unimplemented`)}return o}function B(e,t){switch(t[0]){case\"map\":let n={};for(let o of e.keys(t[1])){let s=e.getWithType(t[1],o);if(!s)throw new Error(\"unexpected null map value\");n[o]=B(e,s)}return Object.freeze(n);case\"list\":let r=[],a=e.length(t[1]);for(let o=0;o(c(r).handle.initRootFromHydrate(e),a)).newDoc}function tt(e,t,n){if(typeof t==\"function\")return O(e,\"change\",{},t).newDoc;if(typeof n==\"function\")return typeof t==\"string\"&&(t={message:t}),O(e,\"change\",t,n).newDoc;throw RangeError(\"Invalid args for change\")}function nt(e,t,n,r){if(typeof n==\"function\")return O(e,\"changeAt\",{},n,t);if(typeof r==\"function\")return typeof n==\"string\"&&(n={message:n}),O(e,\"changeAt\",n,r,t);throw RangeError(\"Invalid args for changeAt\")}function C(e,t,n,r){if(n==null)return e;let a=c(e),o=Object.assign(Object.assign({},a),{heads:void 0}),{value:s,patches:i}=a.handle.applyAndReturnPatches(e,o);if(i.length>0){r?.(i,{before:e,after:s,source:t});let u=c(s);u.mostRecentPatch={before:c(e).heads,after:u.handle.getHeads(),patches:i}}return a.heads=n,s}function O(e,t,n,r,a){if(typeof r!=\"function\")throw new RangeError(\"invalid change function\");let o=c(e);if(e===void 0||o===void 0)throw new RangeError(\"must be the document root\");if(o.heads)throw new RangeError(\"Attempting to change an outdated document. Use Automerge.clone() if you wish to make a writable copy.\");if(h(e))throw new RangeError(\"Calls to Automerge.change cannot be nested\");let s=o.handle.getHeads();a&&dt(a,s)&&(a=void 0),a&&(o.handle.isolate(a),s=a),\"time\"in n||(n.time=Math.floor(Date.now()/1e3));try{o.heads=s;let i=Q(o.handle);if(r(i),o.handle.pendingOps()===0)return o.heads=void 0,a&&o.handle.integrate(),{newDoc:e,newHeads:null};{let u=o.handle.commit(n.message,n.time);return o.handle.integrate(),{newDoc:C(e,t,s,n.patchCallback||o.patchCallback),newHeads:u!=null?[u]:null}}}catch(i){throw o.heads=void 0,o.handle.rollback(),i}}function rt(e,t){t===void 0&&(t={}),typeof t==\"string\"&&(t={message:t}),\"time\"in t||(t.time=Math.floor(Date.now()/1e3));let n=c(e);if(n.heads)throw new RangeError(\"Attempting to change an outdated document. Use Automerge.clone() if you wish to make a writable copy.\");if(h(e))throw new RangeError(\"Calls to Automerge.change cannot be nested\");let r=n.handle.getHeads();return n.handle.emptyChange(t.message,t.time),C(e,\"emptyChange\",r)}function ot(e,t){let n=F(t);if(n.patchCallback)return ae(U(n),e);let r=n.actor,a=n.patchCallback,o=n.unchecked||!1,s=n.allowMissingChanges||!1,i=n.convertImmutableStringsToText||!1,u=f.load(e,{actor:r,unchecked:o,allowMissingDeps:s,convertImmutableStringsToText:i});return u.enableFreeze(!!n.freeze),fe(u),u.materialize(\"/\",void 0,{handle:u,heads:void 0,patchCallback:a})}function ae(e,t,n){n||(n={});let r=c(e);if(r.heads)throw new RangeError(\"Attempting to change an out of date document - set at: \"+D(e));if(h(e))throw new RangeError(\"Calls to Automerge.change cannot be nested\");let a=r.handle.getHeads();return r.handle.loadIncremental(t),C(e,\"loadIncremental\",a,n.patchCallback||r.patchCallback)}function at(e){let t=c(e);if(t.heads)throw new RangeError(\"Attempting to change an out of date document - set at: \"+D(e));if(h(e))throw new RangeError(\"Calls to Automerge.change cannot be nested\");return t.handle.saveIncremental()}function st(e){return c(e).handle.save()}function it(e,t){let n=c(e);if(n.heads)throw new RangeError(\"Attempting to change an out of date document - set at: \"+D(e));let r=n.handle.getHeads(),a=c(t),o=n.handle.getChangesAdded(a.handle);return n.handle.applyChanges(o),C(e,\"merge\",r,n.patchCallback)}function ct(e){return c(e).handle.getActorId()}function ut(e,t){let n=c(e,!1),r=E(e);if(r!=null){let a=h(e);return ne(n.handle,r,t,a)}else return}function lt(e){return c(e).handle.getLastLocalChange()||void 0}function se(e,t){if(t){let n=c(e,!1),r=E(e);return!n||!r?null:n.handle.get(r,t)}else return E(e)}function ft(e,t){return c(t).handle.getChanges(le(e))}function ie(e){return c(e).handle.getChanges([])}function ce(e,t,n){let r=c(e);if(n||(n={}),r.heads)throw new RangeError(\"Attempting to change an outdated document. Use Automerge.clone() if you wish to make a writable copy.\");if(h(e))throw new RangeError(\"Calls to Automerge.change cannot be nested\");let a=r.handle.getHeads();return r.handle.applyChanges(t),r.heads=a,[C(e,\"applyChanges\",a,n.patchCallback||r.patchCallback)]}function ht(e){let t=ie(e);return t.map((n,r)=>({get change(){return ue(n)},get snapshot(){let[a]=ce(U(),t.slice(0,r+1));return a}}))}function gt(e,t,n){N(t,\"before heads\"),N(n,\"after heads\");let r=c(e);return r.mostRecentPatch&&z(r.mostRecentPatch.before,t)&&z(r.mostRecentPatch.after,n)?r.mostRecentPatch.patches:r.handle.diff(t,n)}function pt(e,t,n,r,a){N(n,\"before\"),N(r,\"after\");let o=c(e),s=g(e,t,\"diff\");return o.handle.diffPath(s,n,r,a)}function dt(e,t){if(e.length!==t.length)return!1;for(let n=0;nnew w(t),t=>{if(t instanceof w)return t.value}),e.registerDatatype(\"str\",t=>new oe(t),t=>{if(R(t))return t.val})}function Ot(e){return c(e).handle.topoHistoryTraversal()}function _t(e,t){return c(e).handle.getDecodedChangeByHash(t)}function vt(e){var t,n,r,a,o,s;let u=c(e).handle.stats(),l=he();return Object.assign(Object.assign({},u),{cargoPackageName:(n=(t=l.wasm)===null||t===void 0?void 0:t.cargoPackageName)!==null&&n!==void 0?n:\"unknown\",cargoPackageVersion:(a=(r=l.wasm)===null||r===void 0?void 0:r.cargoPackageVersion)!==null&&a!==void 0?a:\"unknown\",rustcVersion:(s=(o=l.wasm)===null||o===void 0?void 0:o.rustcVersion)!==null&&s!==void 0?s:\"unknown\"})}function he(){let e=null;try{e=f.wasmReleaseInfo()}catch{}return{js:{gitHead:ee},wasm:e}}function M(e,t,n,r,a){let o=g(e,t,\"splice\");if(!h(e))throw new RangeError(\"object cannot be modified outside of a change block\");let s=c(e,!1);S(e),n=_(s,o,n);try{return s.handle.splice(o,n,r,a)}catch(i){throw new RangeError(`Cannot splice: ${i}`)}}function Tt(e,t,n){let r=g(e,t,\"updateText\");if(!h(e))throw new RangeError(\"object cannot be modified outside of a change block\");let a=c(e,!1);S(e);try{return a.handle.updateText(r,n)}catch(o){throw new RangeError(`Cannot updateText: ${o}`)}}function $t(e,t){let n=c(e,!1),r=g(e,t,\"spans\");try{return n.handle.spans(r,n.heads)}catch(a){throw new RangeError(`Cannot splice: ${a}`)}}function Ht(e,t,n){let r=g(e,t,\"splitBlock\"),a=c(e,!1);n=_(a,r,n);try{return a.handle.getBlock(r,n)}catch(o){throw new RangeError(`Cannot get block: ${o}`)}}function Dt(e,t,n,r){if(!h(e))throw new RangeError(\"object cannot be modified outside of a change block\");let a=g(e,t,\"splitBlock\"),o=c(e,!1);S(e),n=_(o,a,n);try{o.handle.splitBlock(a,n,r)}catch(s){throw new RangeError(`Cannot splice: ${s}`)}}function Mt(e,t,n){if(!h(e))throw new RangeError(\"object cannot be modified outside of a change block\");let r=g(e,t,\"joinBlock\"),a=c(e,!1);S(e),n=_(a,r,n);try{a.handle.joinBlock(r,n)}catch(o){throw new RangeError(`Cannot joinBlock: ${o}`)}}function Bt(e,t,n,r){if(!h(e))throw new RangeError(\"object cannot be modified outside of a change block\");let a=g(e,t,\"updateBlock\"),o=c(e,!1);S(e),n=_(o,a,n);try{o.handle.updateBlock(a,n,r)}catch(s){throw new RangeError(`Cannot updateBlock: ${s}`)}}function Nt(e,t,n,r){if(!h(e))throw new RangeError(\"object cannot be modified outside of a change block\");let a=g(e,t,\"updateSpans\"),o=c(e,!1);S(e);try{o.handle.updateSpans(a,n,r)}catch(s){throw new RangeError(`Cannot updateSpans: ${s}`)}}function zt(e,t,n,r){let a=g(e,t,\"getCursor\"),o=c(e,!1);try{return o.handle.getCursor(a,n,o.heads,r)}catch(s){throw new RangeError(`Cannot getCursor: ${s}`)}}function Ft(e,t,n){let r=g(e,t,\"getCursorPosition\"),a=c(e,!1);try{return a.handle.getCursorPosition(r,n,a.heads)}catch(o){throw new RangeError(`Cannot getCursorPosition: ${o}`)}}function Y(e,t,n,r,a){let o=g(e,t,\"mark\");if(!h(e))throw new RangeError(\"object cannot be modified outside of a change block\");let s=c(e,!1);try{return s.handle.mark(o,n,r,a)}catch(i){throw new RangeError(`Cannot mark: ${i}`)}}function q(e,t,n,r){let a=g(e,t,\"unmark\");if(!h(e))throw new RangeError(\"object cannot be modified outside of a change block\");let o=c(e,!1);try{return o.handle.unmark(a,n,r)}catch(s){throw new RangeError(`Cannot unmark: ${s}`)}}function Ut(e,t){let n=g(e,t,\"marks\"),r=c(e,!1);try{return r.handle.marks(n)}catch(a){throw new RangeError(`Cannot call marks(): ${a}`)}}function Lt(e,t,n){let r=g(e,t,\"marksAt\"),a=c(e,!1);try{return a.handle.marksAt(r,n)}catch(o){throw new RangeError(`Cannot call marksAt(): ${o}`)}}function g(e,t,n){t=t.slice();let r=E(e);if(!r)throw new RangeError(`invalid object for ${n}`);return t.unshift(r),t.join(\"/\")}var Wt=R,Jt=oe;function Gt(e,t){return c(e,!1).handle.saveBundle(t)}function Xt(e){return f.readBundle(e)}export{w as Counter,I as Float64,Zt as ImmutableString,P as Int,Jt as RawString,k as Uint,ce as applyChanges,X as applyPatch,te as applyPatches,Ht as block,tt as change,nt as changeAt,Ze as clone,ue as decodeChange,Et as decodeSyncMessage,bt as decodeSyncState,Ge as deleteAt,gt as diff,pt as diffPath,At as dump,rt as emptyChange,xt as encodeChange,Rt as encodeSyncMessage,mt as encodeSyncState,z as equals,Qe as free,et as from,yt as generateSyncMessage,ct as getActorId,ie as getAllChanges,Ye as getBackend,ft as getChanges,Ke as getChangesMetaSince,qe as getChangesSince,ut as getConflicts,zt as getCursor,Ft as getCursorPosition,le as getHeads,ht as getHistory,lt as getLastLocalChange,Ct as getMissingDeps,se as getObjectId,It as hasHeads,jt as hasOurChanges,U as init,St as initSyncState,qt as initializeBase64Wasm,Yt as initializeWasm,Je as insertAt,_t as inspectChange,x as isAutomerge,H as isCounter,R as isImmutableString,Wt as isRawString,Vt as isWasmInitialized,Mt as joinBlock,ot as load,ae as loadIncremental,Y as mark,Ut as marks,Lt as marksAt,it as merge,ge as next,Xt as readBundle,wt as receiveSyncMessage,he as releaseInfo,st as save,Gt as saveBundle,at as saveIncremental,kt as saveSince,$t as spans,M as splice,Dt as splitBlock,vt as stats,Pt as toJS,Ot as topoHistoryTraversal,q as unmark,Bt as updateBlock,Nt as updateSpans,Tt as updateText,Xe as use,Ve as view,Kt as wasmInitialized};\n//# sourceMappingURL=index.mjs.map","/* esm.sh - @automerge/automerge@3.2.6/automerge.wasm.base64 */\nvar A=\"AGFzbQEAAAABwAiHAWAAAGAAAX9gAAFvYAF/AGABfwF/YAF/An9/YAF/A39/f2ABfwF+YAF/AXxgAX8Bb2ACf38AYAJ/fwF/YAJ/fwN/f39gAn9/AX5gAn9/AW9gA39/fwBgA39/fwF/YAN/f38Df39/YAN/f38BfmAEf39/fwBgBH9/f38Bf2AFf39/f38AYAV/f39/fwF/YAZ/f39/f38AYAZ/f39/f38Bf2AHf39/f39/fwBgB39/f39/f38Bf2AIf39/f39/f38AYAh/f39/f39/fwF/YAl/f39/f39/f38AYAl/f39/f39/f38Bf2AKf39/f39/f39/fwBgC39/f39/f39/f39/AX9gD39/f39/f39/f39/f39/fwF/YBN/f39/f39/f39/f39/f39/f39/AX9gF39/f39/f39/f39/f39/f39/f39/f39/AX9gCX9/f39/f35+fgBgCH9/f39/fn9/AGAHf39/f35/fwBgBn9/f39+fgBgBX9/f398AX9gBX9/f398AW9gBX9/f39vAGAEf39/fgBgBX9/f35/AGAGf39/fn9/AGAFf39/fn4AYAZ/f399f38AYAV/f398fwBgBn9/f3x/fwBgBn9/f3x8fwBgBH9/f28AYAR/f39vA39/f2ADf39+AGAEf39+fwBgBX9/fn9/AGAEf39+fgBgBH9/fnwBf2AFf399f38AYAN/f3wAYAR/f3x/AGAFf398f38AYAN/f28AYAN/f28Cf39gBH9/b38AYAV/f29/bwBgBn9/b3x8bwBgBX9/b3xvAGAGf39vfG9vAGAEf39vbwBgBX9/b29vAGAGf39vb29vAGAHf39vb29vbwBgAn9+AGACf34Bf2ACf34BfmADf35/AGADf35/AX9gBH9+f38AYAN/fn4AYAV/fn5+fgBgBn9+fn5+fgBgBH99f38AYAR/fH9/AGAEf3x/fwF/YAJ/bwBgAn9vAn9/YAJ/bwN/f39gAn9vA3x/f2ADf29/AGADf29/An9/YAR/b39vAn9/YAR/b39vA39/f2AFf298fG8Cf39gBH9vfG8Cf39gBH9vfG8Df39/YAR/b3xvBH9/f39gBX9vfG9vAn9/YAN/b28AYAN/b28Cf39gA39vbwN/f39gA39vbwR/f39/YAN/b28DfH9/YAR/b29vAn9/YAR/b29vA39/f2AEf29vbwN8f39gBX9vb29vAn9/YAV/b29vbwN/f39gBX9vb29vBH9/f39gBn9vb29vbwJ/f2ABfgF/YAF+AX5gAX4Bb2ACfn8Bf2ADfn5/AX5gBH5+f38BfmABfAF/YAF8AXxgAXwBb2ACfH8Bf2ABbwBgAW8Bf2ABbwN/f39gAW8BfGABbwFvYAJvfwFvYANvf38Bb2ADb39vAGACb28AYAJvbwF/YAJvbwN/f39gAm9vAW9gA29vbwBgA29vbwF/YANvb28BbwLJJFAWLi9hdXRvbWVyZ2Vfd2FzbV9iZy5qcyRfX3diZ19nZXRfdW5jaGVja2VkXzE3ZjUzZGFkODUyYjk1ODgAfRYuL2F1dG9tZXJnZV93YXNtX2JnLmpzGl9fd2JnX2dldF84MzYwMjkxNzIxZTIzMzlmAH0WLi9hdXRvbWVyZ2Vfd2FzbV9iZy5qcxtfX3diZ19wdXNoXzQ3MWE1YjA2OGE1Mjk1ZjYAgQEWLi9hdXRvbWVyZ2Vfd2FzbV9iZy5qcxpfX3diZ19zZXRfM2JmMWRlOWZhYjBjZDY0NAB/Fi4vYXV0b21lcmdlX3dhc21fYmcuanMdX193YmdfZnJlZXplX2M3OWY0NTcyMTk5OGJiYmMAfBYuL2F1dG9tZXJnZV93YXNtX2JnLmpzKF9fd2JnX2luc3RhbmNlb2ZfT2JqZWN0XzdjOTk0ODBhMWNkZmI5MTEAeRYuL2F1dG9tZXJnZV93YXNtX2JnLmpzJV9fd2JnX2RlZmluZVByb3BlcnR5X2FlYjk1ZDA0MzRjZTAzZDAAhgEWLi9hdXRvbWVyZ2Vfd2FzbV9iZy5qcx1fX3diZ19sZW5ndGhfM2Q0ZWNkMDRiZDhkMjJmMQB5Fi4vYXV0b21lcmdlX3dhc21fYmcuanMbX193Ymdfa2V5c18yZmQxYmZkZGE3ZTI3OGNhAHwWLi9hdXRvbWVyZ2Vfd2FzbV9iZy5qcx1fX3diZ192YWx1ZXNfMzAxYTc3MzYzY2Y2Yzc3MwB8Fi4vYXV0b21lcmdlX3dhc21fYmcuanMbX193YmdfY2FsbF9hMjQ1OTJhNmYzNDlhOTdlAIYBFi4vYXV0b21lcmdlX3dhc21fYmcuanMdX193YmdfYXNzaWduXzc1MmMyYWYxNTEyY2M3ZmQAgwEWLi9hdXRvbWVyZ2Vfd2FzbV9iZy5qcxtfX3diZ19uZXh0XzAzNDBjNGFlMzI0MzkzYzMAfBYuL2F1dG9tZXJnZV93YXNtX2JnLmpzG19fd2JnX2RvbmVfOTE1OGY3Y2M4NzUxYmEzMgB5Fi4vYXV0b21lcmdlX3dhc21fYmcuanMcX193YmdfdmFsdWVfZWUzYTA2ZjQ1NzkxODRmYQB8Fi4vYXV0b21lcmdlX3dhc21fYmcuanMlX193YmdfZGVsZXRlUHJvcGVydHlfZDVmN2JkNzYzYWNiZGI0NACBARYuL2F1dG9tZXJnZV93YXNtX2JnLmpzHl9fd2JnX3Vuc2hpZnRfOTUxZWE3MWQ5ZDJkYzY2MACBARYuL2F1dG9tZXJnZV93YXNtX2JnLmpzHF9fd2JnX2FwcGx5XzMyOWIyYTQ0MDQxNWMyZTYAhgEWLi9hdXRvbWVyZ2Vfd2FzbV9iZy5qcxpfX3diZ19uZXdfMjI3ZDdjMDU0MTRlYjg2MQACFi4vYXV0b21lcmdlX3dhc21fYmcuanMcX193Ymdfc3RhY2tfM2IwZDk3NGJiZjMxZTQ0ZgBVFi4vYXV0b21lcmdlX3dhc21fYmcuanMcX193YmdfZXJyb3JfYTZmYTIwMmI1OGFhMWNkMwAKFi4vYXV0b21lcmdlX3dhc21fYmcuanMdX193YmdfU3RyaW5nXzg1NjRlNTU5Nzk5ZWNjZGEAVRYuL2F1dG9tZXJnZV93YXNtX2JnLmpzGl9fd2JnX3NldF82YmU0Mjc2OGM2OTBlMzgwAIQBFi4vYXV0b21lcmdlX3dhc21fYmcuanMmX193YmdfZ2V0UmFuZG9tVmFsdWVzXzc2ZGZjNjk4MjVjOWM1NTIAChYuL2F1dG9tZXJnZV93YXNtX2JnLmpzGl9fd2JnX2xvZ183ZTFhYTkwNjRhMWRiZGJkAHgWLi9hdXRvbWVyZ2Vfd2FzbV9iZy5qcxpfX3diZ19sb2dfZGZhMWVmZWRmMjY2NTYyZQCAARYuL2F1dG9tZXJnZV93YXNtX2JnLmpzGl9fd2JnX25ld182ODI2NzhlMmY0N2UzMmJjAAIWLi9hdXRvbWVyZ2Vfd2FzbV9iZy5qcxpfX3diZ19uZXdfYWE4ZDBmYTk3NjJjMjliZAACFi4vYXV0b21lcmdlX3dhc21fYmcuanMdX193YmdfQmlnSW50XzY1YmNlYTI1MWU3ODgwODMAfBYuL2F1dG9tZXJnZV93YXNtX2JnLmpzG19fd2JnX25leHRfNzY0NmVkYWEzOTQ1OGVmNwB8Fi4vYXV0b21lcmdlX3dhc21fYmcuanMfX193YmdfaXRlcmF0b3JfMDEzYmMwOWVjOTk4YzJhNwACFi4vYXV0b21lcmdlX3dhc21fYmcuanMaX193YmdfZ2V0XzFhZmZkYmRkNTU3M2IxNmEAgwEWLi9hdXRvbWVyZ2Vfd2FzbV9iZy5qcxtfX3diZ19jYWxsXzE0YjE2OWY3NTliMjY3NDcAgwEWLi9hdXRvbWVyZ2Vfd2FzbV9iZy5qcx1fX3diZ19sZW5ndGhfNmE4NDZiM2IyM2I3NGFjYQB5Fi4vYXV0b21lcmdlX3dhc21fYmcuanMbX193YmdfZnJvbV8wZGJmMjlmMDllN2ZiMjAwAHwWLi9hdXRvbWVyZ2Vfd2FzbV9iZy5qcx5fX3diZ19pc0FycmF5X2MzMTA5ZDE0ZmZjMDY0NjkAeRYuL2F1dG9tZXJnZV93YXNtX2JnLmpzLV9fd2JnX2luc3RhbmNlb2ZfQXJyYXlCdWZmZXJfN2M4NDMzYzZlZDE0ZmZlMwB5Fi4vYXV0b21lcmdlX3dhc21fYmcuanMfX193YmdfdG9TdHJpbmdfYzMwNjFhZjJiZjg1OWQxOQB9Fi4vYXV0b21lcmdlX3dhc21fYmcuanMfX193YmdfdG9TdHJpbmdfYzk2ZGM3NmQ1NTQ3YTcxNQBZFi4vYXV0b21lcmdlX3dhc21fYmcuanMaX193YmdfbmV3XzVlMzYwZDJmZjdiOWUxYzMADhYuL2F1dG9tZXJnZV93YXNtX2JnLmpzJl9fd2JnX2luc3RhbmNlb2ZfRGF0ZV84MWI3NWY1ZWQzNmIzMGVhAHkWLi9hdXRvbWVyZ2Vfd2FzbV9iZy5qcx5fX3diZ19nZXRUaW1lX2RhN2M1NWY1MmI3MWU4YzYAexYuL2F1dG9tZXJnZV93YXNtX2JnLmpzGl9fd2JnX25ld183OTEzNjY2ZmU1MDcwNjg0AHwWLi9hdXRvbWVyZ2Vfd2FzbV9iZy5qcx5fX3diZ19lbnRyaWVzX2UwYjczYWE4NTcxZGRiNTYAfBYuL2F1dG9tZXJnZV93YXNtX2JnLmpzGl9fd2JnX25ld18xOTE1MjFmZWNiMTcxNjM5AA4WLi9hdXRvbWVyZ2Vfd2FzbV9iZy5qcxpfX3diZ19nZXRfNjAxMWZhM2E1OGY2MTA3NACDARYuL2F1dG9tZXJnZV93YXNtX2JnLmpzHl9fd2JnX293bktleXNfMDIzMTg4NzY4MGYwZjk0NQB8Fi4vYXV0b21lcmdlX3dhc21fYmcuanMaX193Ymdfc2V0XzAyMmJlZTUyZDBiMDViMTkAhQEWLi9hdXRvbWVyZ2Vfd2FzbV9iZy5qcx1fX3diZ19jb25jYXRfMWNlZjUzODAzNzJlOTY5ZACDARYuL2F1dG9tZXJnZV93YXNtX2JnLmpzHF9fd2JnX3NsaWNlXzQ1OTE2ZWQyZmFlN2UwZWEAfhYuL2F1dG9tZXJnZV93YXNtX2JnLmpzGl9fd2JnX2Zvcl9iMDYxNmQxZGU3Nzc0YmU5AA4WLi9hdXRvbWVyZ2Vfd2FzbV9iZy5qcx9fX3diZ190b1N0cmluZ181YTg0Yjg1NTJiMzRhMTlkAHwWLi9hdXRvbWVyZ2Vfd2FzbV9iZy5qcx1fX3diZ19sZW5ndGhfOWYxNzc1MjI0Y2YxZDgxNQB5Fi4vYXV0b21lcmdlX3dhc21fYmcuanMnX193YmdfcHJvdG90eXBlc2V0Y2FsbF9hNmIwMmViMDBiMGY0Y2UyAD4WLi9hdXRvbWVyZ2Vfd2FzbV9iZy5qcxpfX3diZ19uZXdfMGM3NDAzZGI2ZTc4MmYxOQB8Fi4vYXV0b21lcmdlX3dhc21fYmcuanMsX193YmdfaW5zdGFuY2VvZl9VaW50OEFycmF5XzE1MmJhMWYyODllZGNmM2YAeRYuL2F1dG9tZXJnZV93YXNtX2JnLmpzJV9fd2JnX25ld19mcm9tX3NsaWNlX2I1ZWE0M2UyM2Y2MDA4YzAADhYuL2F1dG9tZXJnZV93YXNtX2JnLmpzLF9fd2JnX19fd2JpbmRnZW5fc3RyaW5nX2dldF83ZWQ1MzIyOTkxY2FhZWM1AFUWLi9hdXRvbWVyZ2Vfd2FzbV9iZy5qcy1fX3diZ19fX3diaW5kZ2VuX2Jvb2xlYW5fZ2V0XzZlYTE0OWYwYThkY2M1ZmYAeRYuL2F1dG9tZXJnZV93YXNtX2JnLmpzLF9fd2JnX19fd2JpbmRnZW5fbnVtYmVyX2dldF9jN2Y0MmFlZDA1MjVjNDUxAFUWLi9hdXRvbWVyZ2Vfd2FzbV9iZy5qcy5fX3diZ19fX3diaW5kZ2VuX2lzX3VuZGVmaW5lZF8yOWE0M2I0ZDQyOTIwYWJkAHkWLi9hdXRvbWVyZ2Vfd2FzbV9iZy5qcy5fX3diZ19fX3diaW5kZ2VuX2RlYnVnX3N0cmluZ19hYjRiMzRkMjNkNjc3OGJkAFUWLi9hdXRvbWVyZ2Vfd2FzbV9iZy5qcx5fX3diZ19pc0FycmF5XzI3OTA1MTZhYTg0OGJmMTgAeRYuL2F1dG9tZXJnZV93YXNtX2JnLmpzHF9fd2JnX0Vycm9yXzk2MGMxNTVkM2Q0OWU0YzIADhYuL2F1dG9tZXJnZV93YXNtX2JnLmpzIF9fd2JnX3N0cmluZ2lmeV8wNTdjNDAyNzI3MWY4MDA3AFUWLi9hdXRvbWVyZ2Vfd2FzbV9iZy5qcylfX3diZ19fX3diaW5kZ2VuX2lzX251bGxfNTJmZjRlYzA0MTg2NzM2ZgB5Fi4vYXV0b21lcmdlX3dhc21fYmcuanMrX193YmdfX193YmluZGdlbl9pc19vYmplY3RfNjMzMjJlYzBjZDZlYTRlZgB5Fi4vYXV0b21lcmdlX3dhc21fYmcuanMtX193YmdfX193YmluZGdlbl9pc19mdW5jdGlvbl8zYmFhOWRiMWE5ODdmNDdkAHkWLi9hdXRvbWVyZ2Vfd2FzbV9iZy5qcytfX3diZ19fX3diaW5kZ2VuX2lzX3N0cmluZ182ZGYzYmY3ZWYxMTY0ZWQzAHkWLi9hdXRvbWVyZ2Vfd2FzbV9iZy5qcytfX3diZ19fX3diaW5kZ2VuX2lzX2JpZ2ludF9lYzI1YzdmOTFiNGQ5ZTkzAHkWLi9hdXRvbWVyZ2Vfd2FzbV9iZy5qcyVfX3diZ19fX3diaW5kZ2VuX25lZ184ZDM5ZDIzZWY2NWM5ZmRiAHwWLi9hdXRvbWVyZ2Vfd2FzbV9iZy5qcyRfX3diZ19fX3diaW5kZ2VuX2x0Xzc4YmFiMzgyNjI4ZmI0OGYAgQEWLi9hdXRvbWVyZ2Vfd2FzbV9iZy5qcyRfX3diZ19fX3diaW5kZ2VuX2d0X2ZkMDhkOGNiZTBhODU1MWMAgQEWLi9hdXRvbWVyZ2Vfd2FzbV9iZy5qcydfX3diZ19fX3diaW5kZ2VuX3Rocm93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CywDAwsDCwsPDwoDFAoDAwMDAwMDEwoLAxALDwsLCwsKCgQLCxcPCwoKDwsQDxoVAwsDFQMKCgsTGBsVFQsVFRULAwoDGBMTExNMBAoLBAoKD0wPDw8LExMKChcLDxYPFRgKDxUVFTAVFQ8PGBMUFRULCwsEDw8PDw8PDwMLAw8ECwsDAwoDAwoKCgoKChMPAwoKFgQLDxUKEwoEBEwTFRAEBAQZCwMDAwMDAwMLCwQ5MjEXMg8LCwMKEAMKFRUwFRULAxMTEwsVEAQLDw8DAwoTGQ8LAwMKCwsPCgsPBA9JCwMDCwsECwMPAwMLBAQKFRUDCigPAwMDAwsDFTALCw8PDxMEBBMKBAQEBAQTEwMPBA8DFBQUFAoDCyMDCwMLChMTEw8DAwMKChcVCgoEBAoLAwMKCgoKCgoKCgoKCgoKCgoKDw8LCwoLCgQEDwMDTA8PBA8EAwQPBAsLIhcEBAQEBAsLCwMECwoPCwsKAwoPAwoKCgoKCgoKCwoKCgMDBAoLCg8EBAQKEwoKIQsLAwsDAwMLDxALBA8LAw8PDw8PCgsECwoDCgoTCgMDAwQKAxMECwsDCgslCg8gCgQEDwMHDwoLAxULBA8ZAwsLCgsLCwMKCgsaBAQEBAsDAwMVChUPDwQEChMPAxcDAwMVAwgDAw8PDwofCgMEAwsKCwsEBAsLCgoKCgsLFAsLCgMDAwMDBAQEBDUDCxUVCwMDFAQLCgoDCws1CgMLFwsDAwsKCgoKCgsDAxQDDxUEBBMVCwoDEzwTExMTExMTEBATEwsKBAsDAxQLAwMDAwoEDwoLCwoLCwsDCgsLCwMVCwsLAwsLCwsLCwsUCwMDChMLCwsLCwMEBAQECgsLCwsLCwsDCgoLCgsLBAoLCwMTGAsKUAMKCxULCwsLCwoLDwoAAwMLCwsLCwsLCwsLCwsLCwsLCwsLCwsLDwoKFRUDAwMDAxMDCwsLCwsLCwoDCw8LCgoDEAsLCwsLCwsLCwsDCwQLAQsDAw8LCwsKCwsLAxAPCwsLCwsBCw8LAxcKDw8PDwQPDw8PAwsKCwsLAw8LFQoKAwsLCwsLCwsLCwsPDwsLAwMDAw8PDwsLCwsLCwsLJgQDCwsLCwsLDwsLCw8VCxMKdQMLAwsLCwstLxcXMRcKCg8LLhUTCwsLCwsLCwMDAxUDAwMLCwsLCwsLCwsLCwsLCxcLCxUKCwsLAwQECwsLCwsDAwsDEAsLCwsLCwsLCwsLCwMDDxALCg8ACwsQAwMQAwMDAwMDAwsLCwsTCgoQCwoECw8KEAMLCwMKAwsDCwsLCwsLCwsLCwMKBA8PDw8DAwQPDw8PDwsEAwsDCwpvBAoQCwsLEgoKCg8LCwsDCgpKDwETC0gLDxdvBA8LCwsLCwsLCwsLCwsLCwsDCgsLCwsLCwsLCwoLCwMLCw8POAoWFQMVAwMKCxUVFRUVFRUVFRUVFRUVFRUVFQsSEhISCxUVFRVsCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLDxALCwsLCgsLAAMDCwADA0dHR2ALCwsLCwsLCwsLCwtlZWsKCwoLBAQKNFxoaF9oaGhoaW1fEhISEgMSEhISEhISEhIPChMRZGRdYWpdZGRkZGZkCgMDCkQMDGdnXltnV2dXWFdXV1dXV1dnV4IBAxISEhISEhISBAsTCgpGRkZGRkZGRkZGRkZjWgZjBj96enp6enp6egMKCgoUBFZWVlZWCwoKAwMFCwMDCwsLCwsDAwMDAwMDAwMLGEJCCgoSCwsLCwsKCjo3PRUVFhUWAwsTQ0FBQ0NDCwsLAwMDAwMLCwsLCwsLSRMUCxAQEEVFRUVFRUVFRUVFRQsLCwoLDwsLCzgLcQQQC2ILAxIDEwsLCwMDBAMLAwMKCwMPCw8LCwsLEAsPAwsKCwsLCyopKQMDCxMTBAQEBAQEBAQLBAQLBAsEBAsLBAtAMwsLFBkTCwsLAwMPExkPCwoQD3Rubj4+Pj4+Pj4+Pj4+Pj4+Pj4TEzsECwsLCwsTExMTExMTExMTExMTExMTExMTExMTExMKEwsTDxMTCwsLCwsVAQEBARAODlVVVVVVVVVVCwsLCwsLCxUKCwsLCgoKCgoKCgoKCgoKCgoKCgsLAw8LCwMKCwMLCwoLCwsKCgsLCwsKCwsLCwsLBAkJCQkJCQkJCQkJCQsPDwQLCwoKCgoLCgQEBAsQBAQEBAQEBAQQDw8PAw8LCwsLCg8PCwsLAgsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsKCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsPCgsLCwsECwsLCwsKAAALCwsLCwsLCwsKCwsLCgoLCwsQCwoKCgoKCgsLCwsLCwsLCwsLCwsLCgQKAAoKCgADAwsECwgEBAsECwQECwoLBAoACgsDAQQEBAMEBAQECAQEBAQEBAQEBAQKCgoDBAQNCgAECwEABAtKCw0LAQEADw8PCkkPDwoPDwQLAnABpAakBm8AgAgFAwEAEgYJAX8BQYCAwAALB4wUbgZtZW1vcnkCABRfX3diZ19zeW5jc3RhdGVfZnJlZQDVDhVzeW5jc3RhdGVfc2hhcmVkSGVhZHMAsRgXc3luY3N0YXRlX2xhc3RTZW50SGVhZHMAshgbc3luY3N0YXRlX3NldF9sYXN0U2VudEhlYWRzAOcVGHN5bmNzdGF0ZV9zZXRfc2VudEhhc2hlcwDoFRJzeW5jc3RhdGVfcmVhZE9ubHkA3xIWc3luY3N0YXRlX3NldF9yZWFkT25seQDhDxZzeW5jc3RhdGVfcGVlclJlYWRPbmx5AOASD3N5bmNzdGF0ZV9jbG9uZQCDDRRfX3diZ19hdXRvbWVyZ2VfZnJlZQDHDQ1hdXRvbWVyZ2VfbmV3AKQVHWF1dG9tZXJnZV9pbml0Um9vdEZyb21IeWRyYXRlAOkVD2F1dG9tZXJnZV9jbG9uZQCSFQ5hdXRvbWVyZ2VfZm9yawD1FBRhdXRvbWVyZ2VfcGVuZGluZ09wcwCzGBBhdXRvbWVyZ2VfY29tbWl0APgWD2F1dG9tZXJnZV9tZXJnZQClFRJhdXRvbWVyZ2Vfcm9sbGJhY2sAxA8OYXV0b21lcmdlX2tleXMAkxUOYXV0b21lcmdlX3RleHQA6xQPYXV0b21lcmdlX3NwYW5zAJQVEGF1dG9tZXJnZV9zcGxpY2UAlRUUYXV0b21lcmdlX3VwZGF0ZVRleHQA0xUVYXV0b21lcmdlX3VwZGF0ZVNwYW5zAKYVDmF1dG9tZXJnZV9wdXNoAKcVFGF1dG9tZXJnZV9wdXNoT2JqZWN0AOwUEGF1dG9tZXJnZV9pbnNlcnQAlhUUYXV0b21lcmdlX3NwbGl0QmxvY2sAqBUTYXV0b21lcmdlX2pvaW5CbG9jawDUFRVhdXRvbWVyZ2VfdXBkYXRlQmxvY2sAqRUSYXV0b21lcmdlX2dldEJsb2NrAPYUFmF1dG9tZXJnZV9pbnNlcnRPYmplY3QA3hQNYXV0b21lcmdlX3B1dACXFRNhdXRvbWVyZ2VfcHV0T2JqZWN0APcUHmF1dG9tZXJnZV9wdXRPYmplY3RGcm9tSHlkcmF0ZQD4FCFhdXRvbWVyZ2VfaW5zZXJ0T2JqZWN0RnJvbUh5ZHJhdGUA+RQbYXV0b21lcmdlX3NwbGljZUZyb21IeWRyYXRlAJgVE2F1dG9tZXJnZV9pbmNyZW1lbnQAqhUNYXV0b21lcmdlX2dldAD6FBVhdXRvbWVyZ2VfZ2V0V2l0aFR5cGUA+xQRYXV0b21lcmdlX29iakluZm8AmRUQYXV0b21lcmdlX2dldEFsbAD8FBZhdXRvbWVyZ2VfZW5hYmxlRnJlZXplAKsVGmF1dG9tZXJnZV9yZWdpc3RlckRhdGF0eXBlAKwVFmF1dG9tZXJnZV9hcHBseVBhdGNoZXMAmhUfYXV0b21lcmdlX2FwcGx5QW5kUmV0dXJuUGF0Y2hlcwCbFRlhdXRvbWVyZ2VfZGlmZkluY3JlbWVudGFsANUVGmF1dG9tZXJnZV91cGRhdGVEaWZmQ3Vyc29yAOIPGWF1dG9tZXJnZV9yZXNldERpZmZDdXJzb3IA4w8OYXV0b21lcmdlX2RpZmYAnBUSYXV0b21lcmdlX2RpZmZQYXRoAO0UEWF1dG9tZXJnZV9pc29sYXRlAOoVE2F1dG9tZXJnZV9pbnRlZ3JhdGUA5A8QYXV0b21lcmdlX2xlbmd0aACdFRBhdXRvbWVyZ2VfZGVsZXRlANYVDmF1dG9tZXJnZV9zYXZlALQYGWF1dG9tZXJnZV9zYXZlSW5jcmVtZW50YWwAtRgTYXV0b21lcmdlX3NhdmVTaW5jZQCtFRhhdXRvbWVyZ2Vfc2F2ZU5vQ29tcHJlc3MAthgXYXV0b21lcmdlX3NhdmVBbmRWZXJpZnkA1xUZYXV0b21lcmdlX2xvYWRJbmNyZW1lbnRhbACuFRZhdXRvbWVyZ2VfYXBwbHlDaGFuZ2VzAOsVFGF1dG9tZXJnZV9nZXRDaGFuZ2VzAK8VGGF1dG9tZXJnZV9nZXRDaGFuZ2VzTWV0YQCwFRlhdXRvbWVyZ2VfZ2V0Q2hhbmdlQnlIYXNoALEVHWF1dG9tZXJnZV9nZXRDaGFuZ2VNZXRhQnlIYXNoALIVIGF1dG9tZXJnZV9nZXREZWNvZGVkQ2hhbmdlQnlIYXNoALMVGWF1dG9tZXJnZV9nZXRDaGFuZ2VzQWRkZWQA7RcSYXV0b21lcmdlX2dldEhlYWRzALcYFGF1dG9tZXJnZV9nZXRBY3RvcklkAPEVHGF1dG9tZXJnZV9nZXRMYXN0TG9jYWxDaGFuZ2UAuBgOYXV0b21lcmdlX2R1bXAA5Q8YYXV0b21lcmdlX2dldE1pc3NpbmdEZXBzALQVHGF1dG9tZXJnZV9yZWNlaXZlU3luY01lc3NhZ2UA2BUdYXV0b21lcmdlX2dlbmVyYXRlU3luY01lc3NhZ2UA7hcOYXV0b21lcmdlX3RvSlMAtRUVYXV0b21lcmdlX21hdGVyaWFsaXplAP0UE2F1dG9tZXJnZV9nZXRDdXJzb3IAqRQbYXV0b21lcmdlX2dldEN1cnNvclBvc2l0aW9uAP4UFWF1dG9tZXJnZV9lbXB0eUNoYW5nZQD5Fg5hdXRvbWVyZ2VfbWFyawD/FBBhdXRvbWVyZ2VfdW5tYXJrALYVD2F1dG9tZXJnZV9tYXJrcwCeFRFhdXRvbWVyZ2VfbWFya3NBdACAFRdhdXRvbWVyZ2VfaGFzT3VyQ2hhbmdlcwDyCx5hdXRvbWVyZ2VfdG9wb0hpc3RvcnlUcmF2ZXJzYWwAuRgPYXV0b21lcmdlX3N0YXRzALoYFGF1dG9tZXJnZV9zYXZlQnVuZGxlALcVBmNyZWF0ZQDZFQRsb2FkALgVD3dhc21SZWxlYXNlSW5mbwDmGAxlbmNvZGVDaGFuZ2UA2hUMZGVjb2RlQ2hhbmdlANsVDWluaXRTeW5jU3RhdGUA2REPaW1wb3J0U3luY1N0YXRlANwVD2V4cG9ydFN5bmNTdGF0ZQC7GBFlbmNvZGVTeW5jTWVzc2FnZQDdFRFkZWNvZGVTeW5jTWVzc2FnZQDeFQ9lbmNvZGVTeW5jU3RhdGUAvBgPZGVjb2RlU3luY1N0YXRlAN8VCnJlYWRCdW5kbGUA4BURX193YmluZGdlbl9tYWxsb2MA8RQSX193YmluZGdlbl9yZWFsbG9jAOUVFF9fd2JpbmRnZW5fZXhuX3N0b3JlAJwYF19fZXh0ZXJucmVmX3RhYmxlX2FsbG9jAIYKFV9fd2JpbmRnZW5fZXh0ZXJucmVmcwEBD19fd2JpbmRnZW5fZnJlZQCiFxlfX2V4dGVybnJlZl90YWJsZV9kZWFsbG9jAK8REF9fd2JpbmRn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AkkNACADRQ0CQei1xwAQrgtB/wFxIgNFDQILQQAoAui1RyADEM8JRQ0BQQAoAui1RyEDIAJBvKLCADYC7AIgAkEANgLYTCACQQE2AsxMIAJBuInDADYCyEwgAkIENwLQTCACIAJByMwAajYC6AIgAiADQRxqNgLUEyACQQE2AtATIAJBATYCyBMgAiACQegCajYCzBMgAyACQcgTahDiCgwBCyABKAIAIQUCQCADQQVGDQAgAw0AAkBBAC0A/LVHIgNBf2pBAkkNACADRQ0BQfS1xwAQrgtB/wFxIgNFDQELQQAoAvS1RyADEM8JRQ0AQQAoAvS1RyEDIAJBvKLCADYC7AIgAkEANgLYTCACQQE2AsxMIAJB1InDADYCyEwgAkIENwLQTCACIAJByMwAajYC6AIgAiADQRxqNgLUEyACQQE2AtATIAJBATYCyBMgAiACQegCajYCzBMgAyACQcgTahDiCgsgAkEANgLYEyACIAQ2AswTIAIgBTYCyBMgAiAENgLUEyACIAU2AtATIAJByMwAaiACQcgTahBdAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAIoAuBMIgNBBEYNACACKALMTCEGIAIoAshMIQcgAkEoakEEciEIAkBBrAJFDQAgCCACQeTMAGpBrAL8CgAACyACIAM2AiggAw4EAgMEAQILELEaQRRBBBD7FyIDRQ0FIAMgAikDyEw3AgAgA0EQaiACQcjMAGpBEGooAgA2AgAgA0EIaiACQcjMAGpBCGopAwA3AgAgAEGYp8IANgI0IAAgAzYCMCAAQhw3AyggAEGAgICAeDYCIAwkCyACKAI4IgUgAigCQEcNFiACKAJMIAVHDRYgAkKAgICAgAE3AtwCIAJBADYC5AIgAkGgKmpBCGogAkHAAGoiA0EIaikDADcDACACQaAqakEQaiADQRBqKQMANwMAIAJBoCpqQRhqIANBGGopAwA3AwAgAkGgKmpBIGogA0EgaikDADcDACACQaAqakEoaiADQShqKQMANwMAIAIgAykDADcDoCogAikDcCFlIAIpA3ghZiACKQOAASFnIAIoAogBIQkgAigCjAEhCiACKAKQASELIAIoApQBIQwCQEH0AEUNACAC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IANBcGoQqBALIANBKGohAyAEQX9qIgQNAAsLAkAgAigChEgiA0UNACAFIANBKGxBCBC+GAsCQCACKAK0RyIDRQ0AIAMgA0EUbEEbakF4cSIEakEJaiIDRQ0AIAIoArBHIARrIANBCBC+GAsgAkHgwwBqEIwJCyACQfAsahCxDwwCCwJAAkACQAJAAkACQCAFQYCAgIB4Rg0AIAohAwwBC0EAIQUgBEEASA0BAkACQCAEDQBBASEDDAELELEaQQEhBSAEQQEQ+xciA0UNAgsCQCAERQ0AIAMgCiAE/AoAAAsgBCEFCyACQawUaiACQdgnaikDADcCACACQaQUaiACQbAnakEgaikDADcCACACQZwUaiACQcgnaikDADcCACACQZQUaiACQbAnakEQaikDADcCACACQYwUaiACQbAnakEIaikDADcCACACQcgTakEUaiACQeAnakEUaigCADYCACACQcgTakEgaiACQeAnakEgaigCADYCACACIAIpA7AnNwKEFCACIAIpAuwnNwLUEyACIAIpA/gnNwPgEyACQcgTakEsaiACQeAnakEsaigCADYCACACQcgTakEIaiACQeAnakEIaigCADYCACACIAU2AvgTIAIgAzYC/BMgAiAENgKAFCACIAk2ArQUIAIgEjYCuBQgAiAQNgK8FCACIA02AsAUIAIgAikChCg3AuwTIAIgAikD4Cc3A8gTIAJByMwAaiACQcgTahChAyACKALYTCEEIAIoAtRMIQUgAigC0EwhDSACKALMTCEQAkACQCACKALITCIDQYCAgIB4Rg0AAkBB6ABFDQAgAkHwLGpBFGogAkHIzABqQRRqQegA/AoAAAsgAiAENgKALSACIAU2AvwsIAIgDTYC+CwgAiAQNgL0LCACIAM2AvAsIAJBkChqIAJB8CxqEHQgAigCkChBJ0YNBRCxGkHQAEEIEPsXIgNFDQQCQEHQAEUNACADIAJBkChqQdAA/AoAAAsgAEGM98IANgI0IAAgAzYCMCAAQpyAgIDQADcDKCAAQYCAgIB4NgIgIAJB8CxqEM0NDAELELEaQRBBBBD7FyIDRQ0CIAMgBDYCDCADIAU2AgggAyANNgIEIAMgEDYCACAAQaTowgA2AjQgACADNgIwIABCnICAgMAANwMoIABBgICAgHg2AiALQQAhFUEBIStBASEqQQEhKQwRCyAFIARBgJnCABDmFgALQQRBEBDYGQALQQhB0AAQ2BkACyACKAKcKCEEIAIoApgoIQMgAiACKAKUKDYC0EwgAiADNgLITCACIAM2AsxMIAIgAyAEQbACbGo2AtRMIAJB3AJqIAJByMwAahDcECACQegCahDqBiACQfAsahDNDUEAIRVBASEpDAYLAkACQAJAAkAgBEGAgICAeEYNACALIQUMAQtBACEEIANBAEgNAQJAAkAgAw0AQQEhBQwBCxCxGkEBIQQgA0EBEPsXIgVFDQILAkAgA0UNACAFIAsgA/wKAAALIAMhBAsgAkHUFWogAkGgI2pBEGooAgA2AgAgAkHMFWogAkGgI2pBCGopAwA3AgAgAkGoFWogAkHII2pBCGooAgA2AgAgAkHAFWogAkG4I2pBCGooAgA2AgAgAiACKQOgIzcCxBUgAiACKQPIIzcDoBUgAiACKQO4IzcDuBUCQEH0AEUNACACQaAUaiACQegjakH0APwKAAALIAJByBNqQQhqIAJB4CRqQQhqKQMANwMAIAJByBNqQRBqIAJB4CRqQRBqKQMANwMAIAJByBNqQRhqIAJB4CRqQRhqKQMANwMAIAJByBNqQSBqIAJB4CRqQSBqKQMANwMAIAJByBNqQShqIAJB4CRqQShqKQMANwMAIAJBnBVqIAJB2CNqQQhqKAIANgIAIAIgAzYCtBUgAiAFNgKwFSACIAQ2AqwVIAIgAikD4CQ3A8gTIAIgAikD2CM3ApQVIAIgZTcD+BMgAiBmNwOAFCACIGc3A4gUIAIgDTYCkBQgAiAQNgKUFCACIBI2ApgUIAIgCTYCnBQgAiAKNgLYFSACQYGAgIB4NgLwLCACQcjMAGogAkHIE2ogAkHwLGoQ0AMCQCACKAKgTSIEQQJGDQAgAikDyEwhZSACKALQTCEFAkBBzABFIg0NACACQeQmaiACQcjMAGpBDGpBzAD8CgAACwJAQdQBRSIQDQAgAkGQJWogAkHIzABqQdwAakHUAfwKAAALIAJB3AJqQbCKwwAQiw4gAigC4AIiAyAFNgIIIAMgZTcDAAJAIA0NACADQQxqIAJB5CZqQcwA/AoAAAsgAyAENgJYAkAgEA0AIANB3ABqIAJBkCVqQdQB/AoAAAtBASEpIAJBATYC5AIgAkHoAmoQ6gZBACEqQQEhFQwJCxCxGkEYQQgQ+xciA0UNASADIAIpA8hMNwMAIANBEGogAkHIzABqQRBqKQMANwMAIANBCGogAkHIzABqQQhqKQMANwMAIABB3KbCADYCNCAAIAM2AjAgAEKcgICAEDcDKCAAQYCAgIB4NgIgQQAhKkEBISsMAwsgBCADQYCZwgAQ5hYAC0EIQRgQ2BkACxCxGkEoQQgQ+xciA0UNASADIAIpA/ATNwMAIANBIGogAkGQFGopAwA3AwAgA0EYaiACQYgUaikDADcDACADQRBqIAJBgBRqKQMANwMAIANBCGogAkH4E2opAwA3AwAgAEHg9cIANgI0IAAgAzYCMCAAQpyAgIDgADcDKCAAQYCAgIB4NgIgIAJBwBJqENIMQQAhK0EBISoLQQEhFUEBISkMCgtBCEEoENgZAAsgAEGAgICAeDYCICAAQpyAgIDwADcDKEEBISlBASEVQQEhKkEBISsMCgsCQAJAIA1BgICAgHhGDQAgDiESDAELQQAhDSADQQBIDQQCQAJAIAMNAEEBIRIMAQsQsRpBASENIANBARD7FyISRQ0FCwJAIANFDQAgEiAOIAP8CgAACyADIQ0LIAJB1BVqIAJB4ChqQRBqKAIANgIAIAJBzBVqIAJB4ChqQQhqKQMANwIAIAJBqBVqIAJBiClqQQhqKAIANgIAIAJBwBVqIAJB+ChqQQhqKAIANgIAIAIgAikD4Cg3AsQVIAIgAikDiCk3A6AVIAIgAikD+Cg3A7gVAkBB9ABFDQAgAkGgFGogAkGoKWpB9AD8CgAACyACQcgTakEIaiACQaAqakEIaikDADcDACACQcgTakEQaiACQaAqakEQaikDADcDACACQcgTakEYaiACQaAqakEYaikDADcDACACQcgTakEgaiACQaAqakEgaikDADcDACACQcgTakEoaiACQaAqakEoaikDADcDACACQZwVaiACQZgpakEIaigCADYCACACIAM2ArQVIAIgEjYCsBUgAiANNgKsFSACIAIpA6AqNwPIEyACIAIpA5gpNwKUFSACIGU3A/gTIAIgZjcDgBQgAiBnNwOIFCACIAk2ApAUIAIgCjYClBQgAiALNgKYFCACIAw2ApwUIAIgETYC2BUCQAJAIBBBgICAgHhGDQAgDyEDDAELQQAhDSAEQQBIDQUCQAJAIAQNAEEBIQMMAQsQsRpBASENIARB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AhCxGgJAQSBBCBD7FyISRQ0AIBJBCDoAACADQfTTAGpCADcCACADQdjTAGpBJGpCADcCACADQdjTAGpBLGpCADcCACADQdjTAGpBNGpCADcCACADQdjTAGpBPGpCADcCACADQdjTAGpBxABqQgA3AgAgA0IANwLsUxCxGgJAQSBBCBD7FyIORQ0AIA5BCDoAACADQdzVAGpBJGpCADcCACADQdzVAGpBLGpCADcCACADQdzVAGpBNGpCADcCACADQdzVAGpBPGpCADcCACADQdzVAGpBxABqQgA3AgAgA0Hc1QBqQcwAakIANwIAIANCADcC+FUQsRoCQEEgQQgQ+xciCkUNACAKQQg6AAAgA0G4N2pBJGpCADcCACADQbg3akEsakIANwIAIANBuDdqQTRqQgA3AgAgA0G4N2pBPGpCADcCACADQbg3akHEAGpCADcCACADQbg3akHMAGpCADcCACADQYw4akIANwIAIANCADcC1DcQsRoCQEEgQQgQ+xciDEUNACAMQQg6AAAgA0G41gBqQSRqQgA3AgAgA0G41gBqQSxqQgA3AgAgA0G41gBqQTRqQgA3AgAgA0G41gBqQTxqQgA3AgAgA0G41gBqQcQAakIANwIAIANBuNYAakHMAGpCADcCACADQajhAGpCADcDACADQbDhAGpCADcDACADQbjhAGpCADcDACADQcDhAGpCADcDACADQcjhAGpCADcDACADQdDhAGpCADcDACADQgA3AtRWIANCADcDoGECQEHcAEUiCQ0AIANBsNoAakEEciADQZTXAGpB3AD8CgAACwJAIAkNACADQbTbAGogA0Gg6ABqQdwA/AoAAAsCQCAJDQAgA0G03ABqIANBiDBqQdwA/AoAAAsCQCAJDQAgA0G03QBqIANBiAJqQdwA/AoAAAsCQEHMAEUNACADQYziAGogA0HY0wBqQcwA/AoAAAsCQEHUAEUiEw0AIANBtN4AaiADQdzVAGpB1AD8CgAACwJAIAkNACADQazfAGogA0G4N2pB3AD8CgAACyADQYDjAGpBACkD6MhBNwMAIAMgBDYCtGMgA0EANgKwYyADQQA2AqBjIANCgICAgBA3A5hjIAMgSDcDkGMgAyBHNwOIYyADQoCAgIAgNwPwYSADQQE6AOhhIANBATYC5GEgAyANNgLgYSADQsCAgIAQNwPYYSADQQApA+DIQTcD+GIgA0EBOgCgXCADQQE2ApxcIAMgDzYCmFwgA0LAgICAEDcDkFwgA0EANgKwWyADQQA2AqhbIANBAToAoFsgA0EBNgKcWyADIAs2AphbIANCwICAgBA3A5BbIANBADYCsFogA0Gk3ABqIANBuDdqQQNqKAAANgAAIAMgAygAuDc2AKFcIANBAToAoF0gA0EBNgKcXSADIBA2AphdIANCwICAgBA3A5BdIANBADYCsFwgA0EANgKoXCADQaTdAGogA0GIAmpBA2ooAAA2AAAgAyADKACIAjYAoV0gA0EBOgCgXiADQQE2ApxeIAMgETYCmF4gA0LAgICAEDcDkF4gA0EANgKwXSADQQA2AqhdIANBpN4AaiADQYgwakEDaigAADYAACADIAMoAIgwNgChXiADQQE6AOhiIANBATYC5GIgAyASNgLgYiADQoCBgIAQNwPYYiADQYCAgIB4NgKIYiADQQA2AqheIANB7OIAaiADQdjTAGpBA2ooAAA2AAAgAyADKADYUzYA6WIgA0EANgLwYiADQQE6AJhfIANBATYClF8gAyAONgKQXyADQsCAgIAQNwOIXyADQQA2ArBeIANBnN8AaiADQaDoAGpBA2ooAAA2AAAgAyADKACgaDYAmV8gA0EBOgCYYCADQQE2ApRgIAMgCjYCkGAgA0LAgICAEDcDiGAgA0EANgKoXyADQQA2AqBfIANBnOAAaiADQZTXAGpBA2ooAAA2AAAgAyADKACUVzYAmWAgA0EANgKoYCADQQA2AqBgAkAgEw0AIANBrOAAaiADQbjWAGpB1AD8CgAACyADQZThAGogA0Hc1QBqQQNqKAAANgAAIANBAToAkGEgA0EBNgKMYSADIAw2AohhIANCwICAgBA3A4BhIANBADYCrGMgA0KAgICAEDcCpGMgA0EANgKYYSADIAMoANxVNgCRYSAERQ0LIAYgBWohFSADQajgAGohFiADQajfAGohFyADQbDeAGohGCADQYjiAGohGSADQbDdAGohGiADQbDcAGohGyADQbDbAGohHCADQfThAGohHSADQZjjAGohHiADQaDhAGohHyADQdDfAGohICADQdDeAGohISADQcjgAGohIiADQdjdAGohIyADQaDiAGohJCADQdjcAGohJSADQdjbAGohJiADQdjaAGohJyAD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IANB3NUAaiADQYgCakHcAPwKAAALIANBvNAAakE8akIANwIAIANBvNAAakE0akIANwIAIANBvNAAakEsakIANwIAIANBvNAAakEkakIANwIAIANBvNAAakEcakIANwIAIANBvNAAakEUakIANwIAIANBvNAAakEMakIANwIAIANBuNEAakEIakIANwMAIANBuNEAakEQakIANwMAIANBuNEAakEYakIANwMAIANBuNEAakEgakIANwMAIANBuNEAakEoakIANwMAIANBuNEAakEwakIANwMAIANCADcCwFAgA0IANwO4UQJAQdQARSIgDQAgA0GI1QBqIANBvNgAakHUAPwKAAALIANBgNEAakEwakIANwMAIANBgNEAakEoakIANwMAIANBgNEAakEgakIANwMAIANBgNEAakEYakIANwMAIANBgNEAakEQakIANwMAIANBgNEAakEIakIANwMAIANCADcDgFECQCAgDQAgA0G01ABqIANBkNkAakHUAPwKAAALIANB8NEAakEwakIANwMAIANB8NEAakEoakIANwMAIANB8NEAakEgakIANwMAIANB8NEAakEYakIANwMAIANB8NEAakEQakIANwMAIANB8NEAakEIakIANwMAIANCADcD8FECQCAJDQAgA0HY0wBqIANBuDdqQdwA/AoAAAsgA0H4zwBqQTxqQgA3AgAgA0H4zwBqQTRqQgA3AgAgA0H4zwBqQSxqQgA3AgAgA0H4zwBqQSRqQgA3AgAgA0H4zwBqQRxqQgA3AgAgA0H4zwBqQRRqQgA3AgAgA0H4zwBqQQxqQgA3AgAgA0IANwL8TwJAQYgJRQ0AIANBuDdqIANBsNoAakGICfwKAAALAkACQEEAKALwvUdBAUcNAEEAKQOAvkchSEEAKQP4vUchRwwBCyADQYgCahDpEkEAQgE3A/C9R0EAIAMpA5ACIkg3A4C+RyADKQOIAiFHC0EAIEdCAXw3A/i9RyADQbAZaiADQdwBakEIaikCADcDACADQbgZaiADQdwBakEQaikCADcDACADQcAZaiADQdwBakEYaikCADcDACADQcgZaiADQdwBakEgaikCADcDACADQdAZaiADQdwBakEoaigCADYCACADIAMpAtwBNwOoGQJAQYgJRQ0AIANBiAJqIANBuDdqQYgJ/AoAAAsgA0EANgKQCwJAQdwARSIJDQAgA0GUC2ogA0GU1wBqQdwA/AoAAAsgA0EANgKQDCADQQA2AogMIANBAToAgAwgA0EBNgL8CyADIAs2AvgLIANCwICAgBA3A/ALAkAgCQ0AIANBlAxqIANBuNYAakHcAPwKAAALIANBADYCkA0gA0EANgKIDSADQQE6AIANIANBATYC/AwgAyAQNgL4DCADQsCAgIAQNwPwDAJAIAkNACADQZQNaiADQdzVAGpB3AD8CgAACyADQQA2ApAOIANBADYCiA4gA0EBOgCADiADQQE2AvwNIAMgDjYC+A0gA0LAgICAEDcD8A0CQEHUAEUiCw0AIANBlA5qIANBiNUAakHUAPwKAAALIANBADYCiA8gA0EANgKADyADQQE6APgOIANBATYC9A4gAyATNgLwDiADQsCAgIAQNwPoDgJAIAsNACADQYwPaiADQbTUAGpB1AD8CgAACyADQQA2AoAQIANBADYC+A8gA0EBOgDwDyADQQE2AuwPIAMgLjYC6A8gA0LAgICAEDcD4A8CQCAJDQAgA0GEEGogA0HY0wBqQdwA/AoAAAsgA0GEEWogA0Gc0wBqQQhqKQIANwIAIANBjBFqIANBnNMAakEQaikCADcCACADQZQRaiADQZzTAGpBGGopAgA3AgAgA0GcEWogA0Gc0wBqQSBqKQIANwIAIANBpBFqIANBnNMAakEoaikCADcCACADQawRaiADQZzTAGpBMGopAgA3AgAgA0G0EWogA0HU0wBqKAIANgIAIANBADYC+BAgA0EBOgDwECADQQE2AuwQIAMgMDYC6BAgA0LAgICAEDcD4BAgAyADKQKcUzcC/BAgA0HwEWogA0Hg0gBqQQhqKQMANwMAIANB+BFqIANB4NIAakEQaikDADcDACADQYASaiADQeDSAGpBGGopAwA3AwAgA0GIEmogA0Hg0gBqQSBqKQMANwMAIANBkBJqIANB4NIAakEoaikDADcDACADQZgSaiADQeDSAGpBMGopAwA3AwAgA0KAgICAIDcD0BEgA0EBOgDIESADQQE2AsQRIAMgDTYCwBEgA0LAgICAEDcDuBEgAyADKQPgUjcD6BEgA0GAE2ogA0Go0gBqQTBqKQMANwMAIANB+BJqIANBqNIAakEoaikDADcDACADQfASaiADQajSAGpBIGopAwA3AwAgA0HoEmogA0Go0gBqQRhqKQMANwMAIANB4BJqIANBqNIAakEQaikDADcDACADQdgSaiADQajSAGpBCGopAwA3AwAgA0KAgICAIDcDuBIgA0EBOgCwEiADQQE2AqwSIAMgDzYCqBIgA0LAgICAEDcDoBIgAyADKQOoUjcD0BIgA0KAgICAIDcDoBMgA0EBOgCYEyADQQE2ApQTIAMgEjYCkBMgA0LAgICAEDcDiBMgA0HoE2ogA0Hw0QBqQTBqKQMANwMAIANB4BNqIANB8NEAakEoaikDADcDACADQdgTaiADQfDRAGpBIGopAwA3AwAgA0HQE2ogA0Hw0QBqQRhqKQMANwMAIANByBNqIANB8NEAakEQaikDADcDACADQcATaiADQfDRAGpBCGopAwA3AwAgAyADKQPwUTcDuBMgA0KAgICAIDcDiBQgA0EBOgCAFCADQQE2AvwTIAMgLzYC+BMgA0LAgICAEDcD8BMgA0HQFGogA0G40QBqQTBqKQMANwMAIANByBRqIANBuNEAakEoaikDADcDACADQcAUaiADQbjRAGpBIGopAwA3AwAgA0G4FGogA0G40QBqQRhqKQMANwMAIANBsBRqIANBuNEAakEQaikDADcDACADQagUaiADQbjRAGpBCGopAwA3AwAgAyADKQO4UTcDoBQgA0EANgKEFSADQYCAgIB4NgLwFCADQQE6AOgUIANBATYC5BQgAyAMNgLgFCADQsCAgIAQNwPYFCADQbgVaiADQYDRAGpBMGopAwA3AwAgA0GwFWogA0GA0QBqQShqKQMANwMAIANBqBVqIANBgNEAakEgaikDADcDACADQaAVaiADQYDRAGpBGGopAwA3AwAgA0GYFWogA0GA0QBqQRBqKQMANwMAIANBkBVqIANBgNEAakEIaikDADcDACADIAMpA4BRNwOIFSADQQA2AtgVIANBAToA0BUgA0EBNgLMFSADIAU2AsgVIANCgKCAgBA3A8AVAkBBxABFIgkNACADQdwVaiADQbzQAGpBxAD8CgAACyADQQA2ArgWIANBAToAsBYgA0EBNgKsFiADIAo2AqgWIANCwICAgBA3A6AWAkAgCQ0AIANBvBZqIANB+M8AakHEAPwKAAALIANBgICAgHg2AqAXIANBADYCmBcgA0EBOgCQFyADQQE2AowXIAMgMTYCiBcgA0LAgICAEDcDgBcCQEHMAEUiCQ0AIANBpBdqIANBrM8AakHMAPwKAAALIANBgICAgHg2ApAYIANBADYCiBggA0EBOgCAGCADQQE2AvwXIAMgETYC+BcgA0KAgYCAEDcD8BcCQCAJDQAgA0GUGGogA0Hk2QBqQcwA/AoAAAsgA0GIGWpBACkD6MhBNwMAIANBgoCAgHg2AugZIAMgBDYC3BkgAyAUNgLYGSADIAQ2AtQZIANBADYC+BggA0EBOgDwGCADQQE2AuwYIAMgFzYC6BggA0KAgYCAEDcD4BggA0IANwOgGSADIEg3A5gZIAMgRzcDkBkgA0EAKQPgyEE3A4AZAkAgBEUNACAGQcgAaiEJA0ACQCAJKAIAIg1BgYCAgHhGDQAgDUGAgICAeEYNACANRQ0AIAlBBGooAgAgDUEBEL4YCwJAIAlBGGooAgAiDUUNACAJQRxqKAIAIA1BBXRBARC+GAsCQCAJQQxqKAIAIg1BgICAgHhGDQAgDUUNACAJQRBqKAIAIA1BARC+GAsgCUHwAGohCSAEQX9qIgQNAAsLAkAgAigCACIJRQ0AIAYgCUHwAGxBCBC+GAsgA0H4GWogARDlBiABQcAAaiAHIAgQgAwhCSABQcAEaiAHIAgQgAwhDSADQbg3aiABQcADakEAIAEoAvgDIAEoAvwDEO8CIANBjNXCADYC7DggAyANNgLoOCADQQI2AuA4IANBADYC8DgCQEHAAUUNACADQaAuaiADQbg3akHAAfwKAAALIANBADYCgDAgA0GM1cIANgL8LyADIAk2AvgvIANBAjYC8C8gA0EANgLoLyADQQI2AuAvAkBBkBZFDQAgA0G4N2ogA0H4GWpBkBb8CgAACyADQYgwaiADQbg3ahCJBCADKQOIMEICUQ0QIANB2DJqITQgA0GIMGpBwANqISAgA0GgMmohMyADQYgwakHYAGohMiADQbDaAGpBvANqIS8gA0Gw2gBqQcwCaiE1IANBsNoAakGUAmohMCADQbDaAGpBmAFqITYgA0Gw2gBqQZgEaiEFIANBsNoAakH8A2ohHiADQeQ0akEEaiE3IANBoOgAakEEaiEEIANBlNcAakEEaiEtIANBsNoAakHYAGohByADQYgwakGYBGohLiADQYgwakH8A2ohBiADQYgwakG8A2ohMSADQYgwakHMAmohOCADQYgwakGUAmohFyADQYgwakGYAWohOSADQZAZaiE6IANBgBlqITsDQCADKAKQMSEkIAMoAowxIQFCACFKAkAgAygCiDEiC0EDRg0AICStQiCGQQAgASALQQJGG62EIUoLIAMoApw0IQ4gAygCmDQhCiADKAKANCERIAMoAvwzIQIgAygC+DMhEiADKAL0MyEMIAMoAvAzIRMgAygC7DMhCCADKALoMyEUIAMoAuQzISogAygC4DMhKCADKALAMyEbIAMpA7gzIUcgAygCtDMhDyADKAKwMyEJIAMoAtAyIRwgAygCzDIhHSADKALIMiEfIAMoAsQyISsgAygCwDIhJSADKAK8MiEsIAMoArgyISYgAygCmDIhJyADKQOQMiFIIAMoAowyIRAgAygCiDIhDSADKAKcMSEpIAMoApgxIRUgAygClDEhFiADKAKEMSE8IAMoAoAxIRggAygC/DAhPSADKAL4MCEZIAcgMikDADcDACAHQRBqIDJBEGopAwA3AwAgB0EIaiAyQQhqKQMANwMAAkBB2ABFIhoNACADQbDaAGogA0GIMGpB2AD8CgAACyANISICQCANQX5xQQJGDQBBASEiIA1BAXENAEEAISILIC0gMykCADcCACAtQRBqIDNBEGopAgA3AgAgLUEIaiAzQQhqKQIANwIAIAkhIwJAIAlBfnFBAkYNAEEBISMgCUEBcQ0AQQAhIwsgBCAgKQIANwIAIARBEGogIEEQaikCADcCACAEQQhqICBBCGopAgA3AgACQCAaDQAgNyA0QdgA/AoAAAsCQEHwAEUiGg0AIANByDZqIANBsNoAakHwAPwKAAALAkBB6ABFIiENACADQeA1aiA5QegA/AoAAAsgA0HANWpBGGoiPiADQZTXAGpBGGooAgA2AgAgA0HANWpBEGoiPyADQZTXAGpBEGopAgA3AwAgA0HANWpBCGoiQCADQZTXAGpBCGopAgA3AwAgA0HINGpBCGoiQSADQaDoAGpBCGopAgA3AwAgA0HINGpBEGoiQiADQaDoAGpBEGopAgA3AwAgA0HINGpBGGoiQyADQaDoAGpBGGooAgA2AgAgAyADKQKUVzcDwDUgAyADKQKgaDcDyDQCQCAaDQAgA0Gw2gBqIANBiDBqQfAA/AoAAAsgAyApNgLEWyADIBU2AsBbIAMgFjYCvFsgAyAkNgK4WyADIAE2ArRbIAMgCzYCsFsgAyA8NgKsWyADIBg2AqhbIAMgPTYCpFsgAyAZNgKgWwJAICENACA2IDlB6AD8CgAACyAwIBcpAgA3AgAgMEEIaiI8IBdBCGopAgA3AgAgMEEQaiI9IBdBEGopAgA3AgAgMEEYaiJEIBdBGGooAgA2AgAgAyAnNgLAXCADIEg3A7hcIAMgEDYCtFwgAyANNgKwXCADIBw2AvhcIAMgHTYC9FwgAyAfNgLwXCADICs2AuxcIAMgJTYC6FwgAyAsNgLkXCADICY2AuBcAkBB3ABFIisNACA1IDhB3AD8CgAACyAvIDEpAgA3AgAgL0EIaiIsIDFBCGopAgA3AgAgL0EQaiJFIDFBEGopAgA3AgAgL0EYaiJGIDFBGGooAgA2AgAgAyAbNgLoXSADIEc3A+BdIAMgDzYC3F0gAyAJNgLYXSADIBE2AqheIAMgAjYCpF4gAyASNgKgXiADIAw2ApxeIAMgEzYCmF4gAyAINgKUXiADIBQ2ApBeIAMgKjYCjF4gAyAoNgKIXiAFQSBqIC5BIGopAwA3AwAgBUEYaiAuQRhqKQMANwMAIAVBEGogLkEQaikDADcDACAFQQhqIC5BCGopAwA3AwAgBSAuKQMANwMAIB5BEGogBkEQaigCADYCACAeQQhqIAZBCGopAgA3AgAgHiAGKQIANwIAIAMgCjYCwF4gAyAONgLEXkGBgICAeCENIAMoAsxeIQEgAygCyF4hJAJAAkACQAJAAkACQCADLQDtXkUNACAKIQIgDiEJDAELAkAgAygC0F4iAkGBgICAeEcNACADKALYXiEJIAMoAtReIQIMAQtBgICAgHghDSADKALYXiEJIAMoAtReIQgCQCACQYCAgIB4Rw0AIAghAgwBC0EAIQ0gCUEASA0BAkACQCAJDQBBASECDAELELEaQQEhDSAJQQEQ+xciAkUNAgsCQCAJRQ0AIAIgCCAJ/AoAAAsgCSENCyADKALoGSIIQYKAgIB4Rg0BIAMoAuAZICRHDQEgAygC5BkgAUcNASANQYGAgIB4RiAIQYGAgIB4RnMNAQJAIAhBgYCAgHhHDQAgAygC7BkgAkcNAiADQYgCaiADQbDaAGogAygC8BkgCUciCBCHCCAIDQMMBAsgAygC8BkgCUcNASADQYgCaiADQbDaAGogAygC7BkgAiAJEIQTIghBAEcQhwggCA0CIA1BgoCAgHhIDQMgDUUNAyACIA1BARC+GAwDCyANIAlBgJnCABDmFgALIANBiAJqIANBsNoAakEBEIcICwJAIAMoAugZIghBg4CAgHhIDQAgCEUNACADKALsGSAIQQEQvhgLIAMgCTYC8BkgAyACNgLsGSADIA02AugZIAMgATYC5BkgAyAkNgLgGQsCQCAaDQAgA0Gw2gBqIANByDZqQfAA/AoAAAsgAyApNgLEWyADIBU2AsBbIAMgFjYCvFsgAyBKNwK0WyADIAs2ArBbIAMgGDYCqFsgAyAZNgKgWwJAICENACA2IANB4DVqQegA/AoAAAsgMCADKQPANTcCACA8IEApAwA3AgAgPSA/KQMANwIAIEQgPigCADYCACADICc2AsBcIAMgSDcDuFwgAyAQNgK0XCADICI2ArBcIAMgHDYC+FwgAyAdNgL0XCADIB82AvBcIAMgJTYC6FwgAyAmNgLgXAJAICsNACA1IANB5DRqQdwA/AoAAAsgLyADKQPINDcCACAsIEEpAwA3AgAgRSBCKQMANwIAIEYgQygCADYCACADIBs2AuhdIAMgRzcD4F0gAyAPNgLcXSADICM2AthdIAMgETYCqF4gAyASNgKgXiADIAw2ApxeIAMgEzYCmF4gAyAUNgKQXiADICg2AoheIANBoOgAaiADQbDaAGoQvAcCQCADKAKgaEEBRw0AA0AgAyADKQOgGSJIIAMoAqRoIhCtIkcgSCBHVhs3A6AZIAMoAqhoIhGtQiCGIEeEIkcgAykDmBkiSIVC88rRy6eM2bL0AIUiSiADKQOQGSJJQuHklfPW7Nm87ACFfCJLIEpCEImFIkogSELt3pHzlszct+QAhSJIIElC9crNg9es27fzAIV8IklCIIl8IkwgSkIViYVCgICAgICAgIAIhSJKQhCJIEogSEINiSBJhSJIIEt8IklCIIl8IkqFIktCFYkgSyBJIEhCEYmFIkggTCBHhXwiR0IgiXwiSYUiS0IQiSBLIEogSEINiSBHhSJHfCJIQiCJQv8BhXwiSoUiS0IViSBLIElCgICAgICAgIAIhSBIIEdCEYmFIkd8IkhCIIl8IkmFIktCEIkgSyBIIEdCDYmFIkcgSnwiSEIgiXwiSoUiS0IViSBLIEggR0IRiYUiRyBJfCJIQiCJfCJJhSJLQhCJIEsgR0INiSBIhSJHIEp8IkhCIIl8IkqFQhWJIEdCEYkgSIUiR0INiSBHIEl8hSJHQhGJhSBHIEp8IkdCIIiFIEeFIkdCGYgiSUL/AINCgYKEiJCgwIABfiFIQQAhDCADKAKAGSENIAMoAoQZIg8gR6ciE3EiEiELAkADQAJAIA0gC2opAAAiSiBIhSJHQn+FIEdC//379+/fv/9+fINCgIGChIiQoMCAf4MiR1ANAANAAkAgDUEAIEd6p0EDdiALaiAPcWtBFGxqIglBbGooAgAgEEcNACAJQXBqKAIAIBFGDQQLIEdCf3wgR4MiR1BFDQALCwJAIEogSkIBhoNCgIGChIiQoMCAf4NQRQ0AIAsgDEEIaiIMaiAPcSELDAELCwJAIAMoAogZDQAgA0HAAWogO0EBIDpBARDmBSADKAKEGSIPIBNxIRIgAygCgBkhDQsCQCANIBJqKQAAQoCBgoSIkKDAgH+DIkdCAFINAEEIIQkDQCASIAlqIQsgCUEIaiEJIA0gCyAPcSISaikAAEKAgYKEiJCgwIB/gyJHUA0ACwsCQCANIEd6p0EDdiASaiAPcSIJaiwAACILQQBIDQAgDSANKQMAQoCBgoSIkKDAgH+DeqdBA3YiCWotAAAhCwsgDSAJaiBJp0H/AHEiEjoAACANIAlBeGogD3FqQQhqIBI6AAAgDUEAIAlrQRRsaiIJQXxqQQA2AgAgCUF0akKAgICAwAA3AgAgCUFwaiARNgIAIAlBbGogEDYCACADIAMoAowZQQFqNgKMGSADIAMoAogZIAtBAXFrNgKIGQsCQCAJQXxqIgsoAgAiDSAJQXRqIg8oAgBHDQAgD0HE5cIAEMgOCyAJQXhqKAIAIA1BA3RqIgkgDjYCBCAJIAo2AgAgCyANQQFqNgIAIANBoOgAaiADQbDaAGoQvAcgAygCoGgNAAsLIANBiDBqIANBuDdqEIkEIAMpA4gwQgJSDQAMEQsLQQhBIBDYGQALQQhBIBDYGQALQQhBIBDYGQALQQhBIBDYGQALQQhBIBDYGQALQQhBIBDYGQALQQhBIBDYGQALQQhBIBDYGQALQQhBIBDYGQALQQhBIBDYGQALQQhBIBDYGQALQQhBIBDYGQALQQhBIBDYGQALQQhBIBDYGQALQQhBIBDYGQALQQhBIBDYGQALIANBuDdqEMAPAkBB8BdFDQAgA0G4N2ogA0GIAmpB8Bf8CgAACyADQbg3ahCGBCADQeDWAGogA0GAzwBqKAIANgIAIANB2NYAaiADQfjOAGopAwA3AwAgA0HQ1gBqIhIgA0HwzgBqKQMANwMAIANByNYAaiADQejOAGopAwA3AwAgA0G41gBqQQhqIANB4M4AaikDACJHNwMAIAMgAykD2E43A7hWAkAgR6ciEEUNACADKAK8ViERQQAhCUEEIQ1BACELA0ACQCARIAlqLQAARQ0AAkAgAygC2FYiDyADKALQVkcNACASQbjJwgAQ0Q4LIAMoAtRWIA9BAnRqIAk2AgAgAyAPQQFqNgLYVgJAIAkgAygCzFYiD08NACADKALIViANaiIPIAs2AgAgD0F8akEBNgIAIAtBAWohCwwBCyAJIA9ByMnCABDjEQALIA1BCGohDSAQIAlBAWoiCUcNAAsLQQAhDSADQQA2ArxUIANCgICAgBA3ArRUIAMoAqhAIjFBBXQhCQJAAkACQAJAAkACQAJAAkACQCAxQf///z9LDQBBACEyIAlBAEgNACADKAKkQCELAkACQCAJDQBBASEgDAELELEaQQEhDSAxITIgCUEBEPsXIiBFDQELAkAgCUUNACAgIAsgCfwKAAALIAMgAykC3FY3AuBTIAMgAygC1FYiCTYC2FMgAyAJIAMoAthWQQJ0ajYC3FMgA0GI1QBqIANB2NMAahCCCSAxrSFHQQAhCUEBIQ8DQCBHp0H/AHEgR0L/AFYiDUEHdHIhCwJAIAMoArRUIAlHDQAgA0G01ABqIAlBAUEBQQEQhwwgAygCuFQhDyADKAK8VCEJCyBHQgeIIUcgDyAJaiALOgAAIAMgCUEBaiIJNgK8VCANDQALAkAgMUUNACAgIDFBBXRqIRAgIEEgaiEPICAhCwNAIA8hDQJAIAMoArRUIAlrQR9LDQAgA0G01ABqIAlBIEEBQQEQhwwgAygCvFQhCQsgAygCuFQgCWoiDyALKQAANwAAIA9BCGogC0EIaikAADcAACAPQRBqIAtBEGopAAA3AAAgD0EYaiALQRhqKQAANwAAIAMgCUEgaiIJNgK8VCANIBBGDQEgDSANIBBHQQV0aiEPIA0hCyANDQALCyADKAKQVSIPrSFHA0AgR6dB/wBxIEdC/wBWIg1BB3RyIQsCQCADKAK0VCAJRw0AIANBtNQAaiAJQQFBAUEBEIcMIAMoArxUIQkLIEdCB4ghRyADKAK4VCAJaiALOgAAIAMgCUEBaiIJNgK8VCANDQALAkAgD0UNACADKAKMVSEJIA9BFGwhDQNAIAkgA0G01ABqEO0KIAlBFGohCSANQWxqIg0NAAsLIANBADYCxFggA0KAgICAEDcCvFgCQEGICUUNACADQbDaAGogA0G4N2pBiAn8CgAACyADKALMViEvIAMoAshWITACQEHoAEUNACADQYgwaiADQag+akHoAPwKAAALIANB3DBqIANBiDBqELkIIAMoAswwIQkgAygCyDAhFyADKALEMCEzAkACQAJAAkAgAygCsDAiD0UNACADIBcgAygCtDAiC0EFdGoiDUEAIAsgCUkbNgKUVyALIAlPDQUgDUHgjsIAEI0IRQ0FIA+tIUcCQCANLQAAQQZHDQAgDSgCBCILQYCAgIB4Rg0AIAtFDQAgDSgCCCALQQEQvhgLIA0gRzcDCCANQQI6AAAgFyAJQQV0aiEMDAELIBcgCUEFdGohDCAXIRAgCUUNAQsgA0Gg6ABqQQFyIgpBCGohEyAKQRBqIQUgCkEXaiEuIBchEANAIBAiCUEgaiEQIAktAAAiEUEJRg0BIAogCSkAATcAACATIAlBCWopAAA3AAAgBSAJQRFqKQAANwAAIC4gCUEYaikAADcAACADIBE6AKBoAkACQAJAAkACQCARQX9qQQAgEUF+akH/AXFBB0kbIg4OBAEAAAIACyADQaDoAGogA0G82ABqEO8DDAMLIAMoAqhoIRIgAygCpGghCQJAIBFBAXFFDQAgEiAJSQ0JIBIgAygCvGgiDUsNCiADKAK4aCEPAkAgEiAJayINIAMoArxYIAMoAsRYIgtrTQ0AIANBvNgAaiALIA1BAUEBEIcMIAMoAsRYIQsLAkAgDUUNACADKALAWCALaiAPIAlqIA38CgAACyADIAsgDWo2AsRYDAMLIAMgEjYClFcgA0GU1wBqIBIgCUEBcRsiDSgCACIJIC9PDQogMCAJQQN0aiIJQQRqIA0gCSgCABs1AgAhRyADKALEWCEJA0AgR6dB/wBxIEdC/wBWIg1BB3RyIQsCQCADKAK8WCAJRw0AIANBvNgAaiAJQQFBAUEBEIcMIAMoAsRYIQkLIEdCB4ghRyADKALAWCAJaiALOgAAIAMgCUEBaiIJNgLEWCANDQAMAgsLIAMpA7BoIUcgAyADKAKsaCIPNgKUVyADKALEWCEJIAMoAqhoIRIDQCBHQsAAfCJIQv8AVkEHdCBHp0H/AHFyIQsCQCADKAK8WCAJRw0AIANBvNgAaiAJQQFBAUEBEIcMIAMoAsRYIQkLIEdCB4chRyADKALAWCINIAlqIAs6AAAgAyAJQQFqIgk2AsRYIEhCgAFaDQALIANBlNcAaiAPIBIbIg8oAgAiCyAvTw0KIDAgC0EDdGoiC0EEaiAPIAsoAgAbNQIAIUcDQCBHp0H/AHEgR0L/AFYiC0EHdHIhDwJAIAMoArxYIAlHDQAgA0G82ABqIAlBAUEBQQEQhwwgAygCwFghDSADKALEWCEJCyBHQgeIIUcgDSAJaiAPOgAAIAMgCUEBaiIJNgLEWCALDQALCwJAIA4OBAEAAAEACyARQQZHDQAgAygCpGgiCUGAgICAeHJBgICAgHhGDQAgEiAJQQEQvhgLIBAgDEcNAAwCCwsgDCAQRg0AIAwgEGtBBXYhCQNAAkAgEC0AAEEGRw0AIBBBBGooAgAiDUGAgICAeEYNACANRQ0AIBBBCGooAgAgDUEBEL4YCyAQQSBqIRAgCUF/aiIJDQALCwJAIDNFDQAgFyAzQQV0QQgQvhgLIAMoAsRYIRACQCADKALcMEEBSw0AIAMoAuQwIglFDQAgAygC6DAgCUEDdEEEEL4YCwJAQYABRSIJDQAgA0GIMGogA0Gw2gBqQYAB/AoAAAsgA0G4AWogA0GIMGogA0G82ABqEKALIAMoArwBIREgAygCuAEhEgJAIAkNACADQYgwaiADQbDaAGpBgAFqQYAB/AoAAAsgA0GwAWogA0GIMGogA0G82ABqEKALIAMoArQBIQ4gAygCsAEhCgJAIAkNACADQYgwaiADQbDcAGpBgAH8CgAACyADQagBaiADQYgwaiADQbzYAGoQoAsgAygCrAEhDCADKAKoASETAkAgCQ0AIANBiDBqIANBsN0AakGAAfwKAAALIANBoAFqIANBiDBqIANBvNgAahCgCyADKAKkASEFIAMoAqABIS4CQEHwAEUNACADQYgwaiADQYjiAGpB8AD8CgAACyADQZgBaiADQYgwaiADQbzYAGoQ0AogAygCnAEhLyADKAKYASEwAkBB+ABFIgkNACADQYgwaiADQbDeAGpB+AD8CgAACyADQZABaiADQYgwaiADQbzYAGoQnwsgAygClAEhFyADKAKQASEzIANBiAFqIANBqN8AaiADQbzYAGoQpQwgAygCjAEhHiADKAKIASEEAkAgCQ0AIANBiDBqIANBqOAAakH4APwKAAALIANBgAFqIANBiDBqIANBvNgAahCfCyADKAKEASEtIAMoAoABIQcgAygCqGMhDyADKALEWCINIQsCQCADKAKsYyIJIAMoArxYIA1rTQ0AIANBvNgAaiANIAlBAUEBEIcMIAMoAsRYIQsLAkAgCUUNACADKALAWCALaiAPIAn8CgAACyADIAsgCWoiCTYC4FcgAyANNgLcVyADIC02AthXIAMgBzYC1FcgAyAeNgLQVyADIAQ2AsxXIAMgFzYCyFcgAyAzNgLEVyADIC82AsBXIAMgMDYCvFcgAyAFNgK4VyADIC42ArRXIAMgDjYCsFcgAyAKNgKsVyADIAw2AqhXIAMgEzYCpFcgAyARNgKgVyADIBI2ApxXIAMgEDYCmFcgA0EANgKUVyADIAk2AsRYAkAgAygC/GIiCUUNACAJIAlBJGxBK2pBeHEiDWpBCWoiCUUNACADKAL4YiANayAJQQgQvhgLAkAgAygCmGMiCUUNACADKAKcYyAJQQV0QQEQvhgLAkAgAygCpGMiCUUNACAPIAlBARC+GAsgAygCvFghCiADKALAWCEMIAMoAsRYIRFBACELAkACQAJAIAMoApRXIgkgAygCmFciDU8NAEEBIQ5BASEPDAELAkAgAygCnFciCSADKAKgVyINTw0AQQMhD0ECIQ4MAQsCQCADKAKsVyIJIAMoArBXIg1PDQBBEyEPQQMhDgwBCwJAIAMoAqRXIgkgAygCqFciDU8NAEEjIQ9BBCEODAELAkAgAygCtFciCSADKAK4VyINTw0AQTMhD0EFIQ4MAQsCQCADKAK8VyIJIAMoAsBXIg1PDQBBxQAhD0EGIQ4MAQsCQCADKALEVyIJIAMoAshXIg1PDQBB0AAhD0EHIQ4MAQsCQCADKALMVyIJIAMoAtBXIg1PDQBB0wAhD0EIIQ4MAQsCQCADKALUVyIJIAMoAthXIg1PDQBB4AAhD0EJIQ4MAQsCQCADKALcVyIJIAMoAuBXIg1JDQBBBCEvQQAhEkEAISEMAgtB5wAhD0EKIQ5BASELCxCxGkEwQQQQ+xciEEUNByAQIA82AgggECANNgIEIBAgCTYCAEEBIRIgA0EBNgKQMCADIBA2AowwIANBBDYCiDAgAyADQdzXAGo2AoRbIANB5wA2AoBbIAMgA0HU1wBqNgL8WiADQeAANgL4WiADIANBzNcAajYC9FogA0HTADYC8FogAyADQcTXAGo2AuxaIANB0AA2AuhaIAMgA0G81wBqNgLkWiADQcUANgLgWiADIANBtNcAajYC3FogA0EzNgLYWiADIANBpNcAajYC1FogA0EjNgLQWiADIANBrNcAajYCzFogA0ETNgLIWiADIANBnNcAajYCxFogA0EDNgLAWiADQQE2ArhaIAMgA0GU1wBqNgK8WgJAIAsNACADQbDaAGpBCGohE0EBIRIDQCATIA5BA3RqIQkgDiENAkADQCAJQQRqKAIAIgsoAgAiDyALKAIEIgtJDQEgCUEIaiEJIA1BAWoiDUEKRg0DDAALCyAJKAIAQfcBcSEFAkAgEiADKAKIMEcNACADQYgwaiASQQFBBEEMEIcMIAMoAowwIRALIA1BAWohDiAQIBJBDGxqIgkgBTYCCCAJIAs2AgQgCSAPNgIAIAMgEkEBaiISNgKQMCANQQlHDQALCyADKAKMMCEvIAMoAogwISELIC8gEiADQbTUAGoQ7QggAygCvFQiLiEJAkAgESADKAK0VCAua00NACADQbTUAGogLiARQQFBARCHDCADKAK8VCEJCwJAIBFFDQAgAygCuFQgCWogDCAR/AoAAAsgAyAJIBFqIiI2ArxUAkAgCkUNACAMIApBARC+GAsgA0EANgKYWSADQoCAgIAQNwKQWQJAQfANRQ0AIANBsNoAaiADQcDAAGpB8A38CgAACyADQfgAaiADQaDgAGogA0GQ2QBqIAMoAshWIhAgAygCzFYiERCMCyADKAJ8IQsgAygCeCEPIANB8ABqIANBsNoAaiADQZDZAGoQpQwgAygCdCEwIAMoAnAhFyADQegAaiADQYjhAGogA0GQ2QBqIBAgERCMCyADKAJsIR4gAygCaCEEIANB4ABqIANBsNsAaiADQZDZAGoQpQwgAygCZCEHIAMoAmAhBiADQcDmAGohCQJAQfAARQ0AIANBoOgAaiAJQfAA/AoAAAsgAygC/GhBAUsNByADKAKkaCEOAkACQAJAIAMoAqBoQYCAgIB4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ADYCwAIgA0KAgICAEDcD4AMgA0EANgLIAyADQgA3A8ADIANCgICAgBA3A7gDIANBADYCoAMgA0IANwOYAyADQoCAgIAQNwOQAyADQQA2AvgCIANB8ANqQgA3AwAgA0IANwPoAyADQYkEakIANwAAIANCADcChAQgA0KAgICAEDcC/AMgA0EBOgCUBCADQQA2AsgEIANCgICAgBA3ApgEIANCgICAgICAgICAfzcCoAQgA0H4AmpB0ABqIQsgA0H4AmpBKGohCSADQSBqQShqIQ8gByAGRg0BIANB8ABqQShqIRAgCEEsaiEMIAhBKGohDQNAAkBBACgClLlHDQACQEEALQCkt0ciAUF/akECSQ0AIAFFDQFBnLfHABCuC0H/AXEiAUUNAQtBACgCnLdHIAEQzwlFDQBBACEFQQAoApy3RyEBIANBADYC4AQgA0HM6sIANgLQBCADQgQ3AtgEIANBATYC1AQgAUEcaiEKAkACQAJAIActAHgiEUF+aiIIQQQgCEH/AXFBBkkbQf8BcUF8ag4CAAECCyARIQUMAQsgBy0ASCEFCyADQdTqwgA2ArQGIANBvKLCADYCrAYgAyAFQQFxOgDPBCADIANBzwRqNgLgBSADIANB4AVqNgKwBiADIANB0ARqNgKoBiADIAo2AvwFIANBAjYC+AUgA0EBNgLwBSADIANBqAZqNgL0BSABIANB8AVqEOIKCwJAAkAgBy8BMEECRg0AIANB0ARqIA0oAgAgDCgCACAHQShqEOMGIAMpA9AEISogA0EgaiADNQLYBBDZBiAPICoQ2QYMAQsgA0EgahC+CiAPEL4KCwJAAkACQAJAAkACQCAHKAIAQQFHDQAgBy8BEEECRg0BIANB0ARqIA0oAgAgDCgCACAHQQhqEOMGIAMpA9AEISogAzUC2AQhKyAOEMwFIANB8ABqICsQ2QYgECAqIAMpA8ABIix9IitCP4dCgICAgICAgICAf4UgKyAsQgBVICsgKlNzGxDYBiADICo3A8ABDAULIANBGjoA0AQgAyAHQQRqNgLUBCAOIANB0ARqEIQCIANB8ABqEL4KIAMoApgBIQggA0EANgKYASADKAKkASEKIANBADYCpAEgAykDqAEhKyADQQA2AqwBIAqtQiCGIAMoAqABIhKthCEqQQEhBSADKAKcASERQQEhAQJAAkACQAJA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ADcDACADQdAEakEQaiAPQRBqKQMANwMAIANB0ARqQQhqIA9BCGopAwA3AwAgAyAPKQMANwPQBCADQfAFaiADQdAEahDhByADKALwBSEKIAMoAvQFIQYgByEIAkAgAygC+AUiBSACKAIAIAdrTQ0AIAIgByAFQQFBARCHDCACKAIEIQEgAigCCCEICwJAIAVFDQAgASAIaiAGIAX8CgAACyACIAggBWoiDDYCCAJAIApFDQAgBiAKQQEQvhgLAkBBkAFFDQAgA0HQBGogA0HwAGpBkAH8CgAACyADQfAFakEgaiADQfAAakEgaikDADcDACADQfAFakEYaiADQfAAakEYaikDADcDACADQfAFakEQaiADQfAAakEQaikDADcDACADQfAFakEIaiADQfAAakEIaikDADcDACADIAMpA3A3A/AFIANBqAZqIANB8AVqEOEHIAMoAqgGIQogAygCrAYhESAMIQgCQCADKAKwBiIFIAIoAgAgDGtNDQAgAiAMIAVBAUEBEIcMIAIoAgQhASACKAIIIQgLAkAgBUUNACABIAhqIBEgBfwKAAALIAIgCCAFaiIGNgIIAkAgCkUNACARIApBARC+GAsgA0GwBmogA0GABWopAwA3AwAgA0G4BmogA0GIBWopAwA3AwAgA0HABmogA0GQBWopAwA3AwAgA0HIBmogA0GYBWopAwA3AwAgAyADKQP4BDcDqAYgA0HwBWogA0GoBmoQ4AcgAygC9AUhEiADKALwBSEKIAYhCAJAIAMoAvgFIgUgAigCACAGa00NACACIAYgBUEBQQEQhwwgAigCBCEBIAIoAgghCAsCQCAFRQ0AIAEgCGogEiAF/AoAAAsgAiAIIAVqIhE2AggCQCAKRQ0AIBIgCkEBEL4YCyADQaAGaiADQdgFaigCADYCACADQZgGaiADQdAFaikDADcDACADQZAGaiADQcgFaikDADcDACADQYgGaiADQcAFaikDADcDACADQYAGaiADQbgFaikDADcDACADQfgFaiADQbAFaikDADcDACADIAMpA6gFNwPwBSADQeAFaiADQfAFahCHBSADKALgBSEKIAMoAuQFIRYgESEIAkAgAygC6AUiBSACKAIAIBFrTQ0AIAIgESAFQQFBARCHDCACKAIEIQEgAigCCCEICwJAIAVFDQAgASAIaiAWIAX8CgAACyACIAggBWoiEjYCCAJAIApFDQAgFiAKQQEQvhgLIANB0ARqQRBqIANBgAJqQRBqKQIAIio3AwAgA0HQBGpBCGogA0GAAmpBCGopAgA3AwAgAyADKQKAAjcD0AQCQAJAICqnIgENACADKALYBCEBIAMoAtQEIQgMAQsgAa0hKiADKALYBCEBA0AgKqdB/wBxICpC/wBWIgVBB3RyIQoCQCADKALQBCABRw0AIANB0ARqIAFBAUEBQQEQhwwgAygC2AQhAQsgKkIHiCEqIAMoAtQEIgggAWogCjoAACADIAFBAWoiATYC2AQgBQ0ACwsgAygC0AQhBSASIRYCQCABIAIoAgAgEmtNDQAgAiASIAFBAUEBEIcMIAIoAgghFgsgAigCBCEKAkAgAUUNACAKIBZqIAggAfwKAAALIAIgFiABaiIWNgIIAkAgBUUNACAIIAVBARC+GAsgA0HQBGpBIGogA0GYAmpBIGopAwA3AwAgA0HQBGpBGGogA0GYAmpBGGopAwA3AwAgA0HQBGpBEGogA0GYAmpBEGopAwA3AwAgA0HQBGpBCGogA0GYAmpBCGopAwA3AwAgAyADKQOYAjcD0AQgA0HwBWogA0HQBGoQ4QcgAygC8AUhBSADKAL0BSETIBYhCAJAIAMoAvgFIgEgAigCACAWa00NACACIBYgAUEBQQEQhwwgAigCBCEKIAIoAgghCAsCQCABRQ0AIAogCGogEyAB/AoAAAsgAiAIIAFqIgg2AggCQCAFRQ0AIBMgBUEBEL4YCyADQdAEakEgaiADQcACakEgaikDADcDACADQdAEakEYaiADQcACakEYaikDADcDACADQdAEakEQaiADQcACakEQaikDADcDACADQdAEakEIaiADQcACakEIaikDADcDACADIAMpA8ACNwPQBCADKALoAiEVIAMoAuwCIQ8gAygC8AIhASADQfAFaiADQdAEahDhByADKALwBSEUIAMoAvQFIQ4gCCETAkAgAygC+AUiBSACKAIAIAhrTQ0AIAIgCCAFQQFBARCHDCACKAIEIQogAigCCCETCwJAIAVFDQAgCiATaiAOIAX8CgAACyACIBMgBWoiEzYCCAJAIBRFDQAgDiAUQQEQvhgLIBMhBQJAIAEgAigCACATa00NACACIBMgAUEBQQEQhwwgAigCBCEKIAIoAgghBQsCQCABRQ0AIAogBWogDyAB/AoAAAsgAiAFIAFqIhQ2AggCQCAVRQ0AIA8gFUEBEL4YCyADQdAEakEgaiADQfgCakEgaikDADcDACADQdAEakEYaiADQfgCakEYaikDADcDACADQdAEakEQaiADQfgCakEQaikDADcDACADQdAEakEIaiADQfgCakEIaikDADcDACADIAMpA/gCNwPQBCADQfAFaiADQdAEahDhByADKALwBSEFIAMoAvQFIQ8gFCEVAkAgAygC+AUiASACKAIAIBRrTQ0AIAIgFCABQQFBARCHDCACKAIIIRULIAIoAgQhCgJAIAFFDQAgCiAVaiAPIAH8CgAACyACIBUgAWoiFTYCCAJAIAVFDQAgDyAFQQEQvhgLIANB0ARqQSBqIAlBIGopAwA3AwAgA0HQBGpBGGogCUEYaikDADcDACADQdAEakEQaiAJQRBqKQMANwMAIANB0ARqQQhqIAlBCGopAwA3AwAgAyAJKQMANwPQBCADQfAFaiADQdAEahDhByADKALwBSEFIAMoAvQFIQ8gFSEJAkAgAygC+AUiASACKAIAIBVrTQ0AIAIgFSABQQFBARCHDCACKAIEIQogAigCCCEJCwJAIAFFDQAgCiAJaiAPIAH8CgAACyACIAkgAWoiCTYCCAJAIAVFDQAgDyAFQQEQvhgLIANB0ARqQQhqIAtBCGopAwA3AwAgA0HQBGpBEGogC0EQaikDADcDACADQdAEakEYaiALQRhqKQMANwMAIANB0ARqQSBqIAtBIGopAwA3AwAgAyALKQMANwPQBCADQfAFaiADQdAEahDgByADKAL0BSEPIAMoAvAFIQUgCSELAkAgAygC+AUiASACKAIAIAlrTQ0AIAIgCSABQQFBARCHDCACKAIEIQogAigCCCELCwJAIAFFDQAgCiALaiAPIAH8CgAACyACIAsgAWoiCzYCCAJAIAVFDQAgDyAFQQEQvhgLIANB8AVqQQhqIANB/ANqQQhqKQIANwMAIANB8AVqQRBqIANB/ANqQRBqKQIANwMAIAMgAykC/AM3A/AFAkACQCADLQCUBA0AIAMoAoAGIgFFDQAgAa0hKiADKAL4BSEBA0AgKqdB/wBxICpC/wBWQQd0ciEFAkAgAygC8AUgAUcNACADQfAFaiABQQFBAUEBEIcMIAMoAvgFIQELIAMoAvQFIgogAWogBToAACADIAFBAWoiATYC+AUgKkKAAVQhBSAqQgeIISogBUUNAAwCCwsgAygC+AUhASADKAL0BSEKCyADKALwBSEFIAshDwJAIAEgAigCACALa00NACACIAsgAUEBQQEQhwwgAigCCCEPCwJAIAFFDQAgAigCBCAPaiAKIAH8CgAACyACIA8gAWoiATYCCAJAIAVFDQAgCiAFQQEQvhgLIANB0ARqQTBqIANBmARqQTBqKAIANgIAIANB0ARqQShqIANBmARqQShqKQIANwMAIANB0ARqQSBqIANBmARqQSBqKQIANwMAIANB0ARqQRhqIANBmARqQRhqKQIANwMAIANB0ARqQRBqIANBmARqQRBqKQIANwMAIANB0ARqQQhqIANBmARqQQhqKQIANwMAIAMgAykCmAQ3A9AEIANBqAZqIANB0ARqEIcFIAMoAqgGIQogAygCrAYhDiABIQ8CQCADKAKwBiIFIAIoAgAgAWtNDQAgAiABIAVBAUEBEIcMIAIoAgghDwsCQCAFRQ0AIAIoAgQgD2ogDiAF/AoAAAsgAiAPIAVqIgU2AggCQCAKRQ0AIA4gCkEBEL4YCyAAIAU2AnAgACABNgJsIAAgATYCaCAAIAs2AmQgACALNgJgIAAgCTYCXCAAIAk2AlggACAVNgJUIAAgFTYCUCAAIBQ2AkwgACAUNgJIIAAgEzYCRCAAIBM2AkAgACAINgI8IAAgCDYCOCAAIBY2AjQgACAWNgIwIAAgEjYCLCAAIBI2AiggACARNgIkIAAgETYCICAAIAY2AhwgACAGNgIYIAAgDDYCFCAAIAw2AhAgACAHNgIMIAAgBzYCCCAAIA02AgQgACANIAxHNgIADAELIAIoAgghCiADQQA2AowBIAMgAjYCiAEgA0EANgJwAkAgByAGRiIPDQAgA0HYBGohBSAHIQEDQEIAISpCACErAkAgAUEwai8BAEECRg0AIANB0ARqIAgoAiggCCgCLCABQShqEOMGIAM1AtgEIStCASEqCyADICs3A9gEIAMgKjcD0AQgA0HwAGogBUEAICqnGxDNBiABQZABaiIBIAZHDQALCyADQfAEakIANwMAIANB+ARqQQA6AAAgA0IANwPoBCADQoCAgIAYNwPgBCADQgA3A9AEIANB+AJqIANB0ARqENAFAkACQAJAAkAg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AWoiATYCCCACKAIEIAVqIAg6AAAgCkEBaiEKICpCgAFUIQUgKkIHiCEqIAVFDQALCyADQQA2ApgBIAMgAjYClAEgA0GAgICAeDYCcCADQdAEakEIaiEWIANB+AJqQQRqISYgA0H4AmpBCGohJyADQfgCakEEciEoIANB/ABqIRQgA0EgakEEaiEpA0ACQAJAAkACQAJAIActAHhBfmpB/wFxQQZJDQAgAyAHQcgAaiISNgIkIANBGjoAICADKAJwIQIgA0GAgICAeDYCcCADKAKMASEOIAMoAogBIQ0gAygChAEhCyADKAKAASEVIAMoAnwhDyADKAJ4IQwgAygCdCEIAkACQAJAAkACQAJAIAJBgICAgHhzIgVBAyAFQQZJGw4GAAEBAgMFAAsCQAJAIBItAABBGUcNACADQdAEaiASEPwLDAELIANB0ARqQRBqIBJBEGopAgA3AwAgFiASQQhqKQIANwMAIAMgEikCADcD0AQLIANBwAJqQQhqIBZBCGopAgA3AwAgAyAWKQIANwPAAgwHCwJAIAMoApQBIgIoAgAgAigCCCIMRw0AIAIgDEEBQQFBARCHDCACKAIIIQwLIAIgDEEBaiIFNgIIIAIoAgQgDGpBADoAACADKAKYAUEBaiEMIAitISoDQCAqp0H/AHEgKkL/AFYiDUEHdHIhCwJAAkAgAigCACAFRg0AIAUhCAwBCyACIAVBAUEBQQEQhwwgAigCCCEICyAqQgeIISogAiAIQQFqIgU2AgggAigCBCAIaiALOgAAIAxBAWohDCANDQALIAMgDDYCmAECQAJAIBItAABBGUcNACADQdAEaiASEPwLDAELIANB0ARqQRBqIBJBEGopAgA3AwAgFiASQQhqKQIANwMAIAMgEikCADcD0AQLIANBwAJqQQhqIBZBCGopAgA3AwAgAyAWKQIANwPAAgwGCyADIAMoApABNgKMAyADIA42AogDIAMgDTYChAMgAyALNgKAAyADIBU2AvwCIAMgDzYC+AIgAyAMNgL4BSADIAg2AvQFIAMgAjYC8AUCQAJAAkACQAJAIANB+AJqIBIQ1AsNACADQdAEakEQaiIFIANB+AJqQRBqKQIANwMAIBYgJykCADcDACADIAMpAvgCNwPQBAJAIAwgAkcNACADQfAFakGQtMIAEIoOIAMoAvQFIQgLIAggDEEY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KGopAwA3AwAgGiABKQOIEzcDACABIAA2AtgFIAEgTzcD0AUgASAjNgLMBSABICQ2AsgFIAFB6BNqIAFBiAVqICQgIxD2DSABKALoEyIAQQNGDQEgASABKALYBSABKAL4EyIuazYC2AUgASkD8BMhaSABKALsEyEvQgAhTwJAIABBAkYNACBpIU8CQCAAQQFxDQAgLykDACFPCyBPQoCAgIAQIE9CgICAgBBUG0L/////D4MhTwsgASgC/BMhMCAbIE8gLq1+ELEWCyABIDA2AvQFIAEgLjYC8AUgASBpNwPoBSABIC82AuQFIAEgADYC4AUCQCAuDQBBACEuIAFBAzYCiBMMBQsgASAuQX9qNgLwBUECISQgAEECRg0CQQEhJAJAIABBAXFFDQAgaSFPDAQLQQAhJCAvIQAMAwsgASAwNgL0BSABIC42AvAFIAEgaTcD6AUgASAvNgLkBSABQQM2AuAFCyABQQM2AogTDAILCyABIE83A5ATIAEgADYCjBMgASAkNgKIEyABIAEoAqQGQQFqNgKkBgsgAUHMEWogAUGIE2oQtgsCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAEoAugDIiQgASgC7ANPDQACQAJAIAEtANgDIgBBA0YNACABKALgAyIjRQ0AIAEgI0F/ajYC4AMMAQsgAUGIE2ogAUHYAmogASgCmAMgASgCnAMQ/Q4CQAJAIAEtAIgTIgBBA0YNACABIBkoAAA2ArgSIAEgGUEDaigAADYAuxIgASABKAKoAyABKAKQEyIxazYCqAMMAQsCQAJAIAEoAtADIilFDQAgKSgCKEGAgICAeEYNACABKALIAyIqISMCQAJAICkoAjAiAEUNAANAIABBOGwhJyApKAIsIQBBACElQQAhJgJAA0ACQCAAQRhqKAIAICVqIiQgI0sgJCAjSWtB/wFxIitB/wFGDQACQCArDgIDAAMLICMgJWshIyAAISkgAEEwaigCACIARQ0EDAMLICRBAWohJSAAQThqIQAgJkEBaiEmICdBSGoiJw0ADAULCwsgJiEjICYgKSgCJE8NAgwBCyAjICkoAiRPDQELIAEgKkEBajYCyAMgASABKAK4AyApKAIgICNBBXRqIgAoAhBqNgK4AyABIAEpA7ADIAApAwB8NwOwAyABIAAoAhgiJCABKALAAyIjICQg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DQAMBgsLCyAmISMgJiApKAIkTw0DDAELICMgKSgCJE8NAgsgASAqQQFqNgKgDyABIAEoApAPICkoAiAgI0EFdGoiACgCEGo2ApAPIAEgASkDiA8gACkDAHw3A4gPIAEgACgCGCIkIAEoApgPIiMgJCAjSxsgJCAjGzYCmA8gASAAKAIUIiQgASgClA8iIyAkICNJGyAjICQbICQgIxs2ApQPIAAoAhwiIygCDCEkICMoAhAhIyAAKQMAIU8gACgCECEAIARBGGpBADYCACAEQRBqQgA3AwAgBEEIakIANwMAIARCADcDACARQTBqIAFBiBNqQTBqKAIANgIAIAFCADcDmA4gEUEIaiABQYgTakEIaikDADcDACARQRBqIAFBiBNqQRBqKQMANwMAIBFBGGogBCkDADcDACARQSBqIAFBiBNqQSBqKQMANwMAIBFBKGogAUGIE2pBKGopAwA3AwAgESABKQOIEzcDACABIAA2AugOIAEgTzcD4A4gASAjNgLcDiABICQ2AtgOIAFB6BNqIAFBmA5qICQgIxD2DSABKALoEyIAQQNGDQEgASABKALoDiABKAL4EyI2azYC6A4gASkD8BMhaiABKALsEyE3QgAhTwJAIABBAkYNACBqIU8CQCAAQQFxDQAgNykDACFPCyBPQoCAgIAQIE9CgICAgBBUG0L/////D4MhTwsgASgC/BMhOCASIE8gNq1+ELEWCyABIDg2AoQPIAEgNjYCgA8gASBqNwP4DiABIDc2AvQOIAEgADYC8A4CQCA2DQBBACE2IAFBAzYCiBMMBQsgASA2QX9qNgKAD0ECISQgAEECRg0CQQEhJAJAIABBAXFFDQAgaiFPDAQLQQAhJCA3IQAMAwsgASA4NgKEDyABIDY2AoAPIAEgajcD+A4gASA3NgL0DiABQQM2AvAOCyABQQM2AogTDAILCyABIE83A5ATIAEgADYCjBMgASAkNgKIEyABIAEoArQPQQFqNgK0DwsgAUHsEWogAUGIE2oQtgsCQAJAAkACQAJAAkACQAJAAkACQCABKAKcECIAIAEoAqAQTw0AAkAgAS0ApBAiI0EDRg0AIAEoAqwQIiRFDQAgASAkQX9qNgKsECABKAKoECE5IAEtAKUQISQMCQsgASgCiBAhKSABKAKAECEjIAEtAIwQISUgASkD+A8hUyABKAKEECEmIAEoAvQPIScgASgC8A8hKgJAA0AgJSEkICcgJiIATQ0BIAFBiBNqICogAGogJyAAaxDyCAJAAkACQCABKAKQEyIlQQJGDQAgJUEBcUUNASABNQKYEyFPDAILIAEgKTYCiBAgASAjNgKAECABICQ6AIwQIAEgADYChBAgASBTNwP4DyABKAKUEyEAIAEgASkDmBM3AowTIAEgADYCiBNB1MfBAEErIAFBiBNqQdSQwgBB5JDCABD4EAALIAEoApQTNQIAIU8LIAEoAogTIABqISYgIyBPpyIraiEjICRBf3NBAXEhJSBPICStQv8Bg34iVyBTfCFTIAAhKSBPUA0ADAULCyABICk2AogQIAEgIzYCgBAgASAkOgCMECABIAA2AoQQIAEgUzcD+A8gASgC4A8iKUUNBSApKAIoQYCAgIB4Rg0FIAEoAtgPIiohIyApKAIwIgBFDQEDQCAAQThsIScgKSgCLCEAQQAhJUEAISYCQANAAkAgAEEYaigCACAlaiIkICNLICQgI0lrQf8BcSIrQf8BRg0AAkAgKw4CAwADCyAjICVrISMgACEpIABBMGooAgAiAEUNBQwDCyAkQQFqISUgAEE4aiEAICZBAWohJiAnQUhqIicNAAwICwsLICYhIyAmICkoAiRPDQUMAgsgOkGAfnFBA3IhOgwICyAjICkoAiRPDQMLIAEgKkEBajYC2A8gASABKALIDyApKAIgICNBBXRqIgAoAhBqNgLIDyABIAEpA8APIAApAwB8NwPADyABIAAoAhgiJCABKALQDyIjICQgI0sbICQgIxs2AtAPIAEgACgCFCIkIAEoAswPIiMgJCAjSRsgIyAkGyAkICMbNgLMDyAAKAIQISQgACkDACFPIAAoAhwiACgCDCEpIAEgACgCECInNgL0DyABICk2AvAPIAEgTzcD6A9CACFTIA9BDWpCADcAACAPQQhqQgA3AwAgD0IANwMAIAEgJDYCkBBBACEqQQAhI0EAISVBACEmA0AgJSEkICcgJiIATQ0CIAFBiBNqICkgAGogJyAAaxDyCAJAAkACQCABKAKQEyIlQQJGDQAgJUEBcUUNASABNQKYEyFPDAILIAEgKjYCiBAgASAjNgKAECABICQ6AIwQIAEgADYChBAgASBTNwP4DyABKAKUEyEAIAEgASkDmBM3AowTIAEgADYCiBNB1MfBAEErIAFBiBNqQdSQwgBB5JDCABD4EAALIAEoApQTNQIAIU8LIAEoAogTIABqISYgIyBPpyIraiEjICRBf3NBAXEhJSBPICStQv8Bg34iVyBTfCFTIAAhKiBPUA0ACwsgASAANgKIECABICM2AoAQIAEgJToAjBAgASAmNgKEECABIFM3A/gPIAEgASgCkBAgK2s2ApAQIBAgVxCxFiABICs2AqwQQQAhOyABQQA2AqgQIAFBADsBphAgASAkOgClECABQQE6AKQQICsNAyAkITwMAgsgASAqNgKIECABICM2AoAQIAEgJDoAjBAgASAANgKEECABIFM3A/gPCyABIDs2AqwQIAFBADYCqBAgAUEAOwGmECABIDw6AKUQIAFBAzoApBALIDpBgH5xQQNyIToMAgsgASArQX9qNgKsEEEBISNBACE5IAEoApwQIQAgKyE7ICQhPAsgASAAQQFqNgKcECAkQf8BcUEIdCAjciE6C0HItcIAIQACQCA6Qf4BcQ0AAkACQCA6QQFxRQ0AIDpBgAJxQQh2IQAMAQsgOS0AACEAC0H0zsIAQci1wgAgAEEBcRshAAsgAUEBNgL8ESABIAA2AvgRAkACQAJAAkACQAJAAkACQAJAAkAgASgCjBEiACABKAKQEU8NAAJAIAEtAJQRIiNBA0YNACABKAKcESIkRQ0AIAEgJEF/ajYCnBEgASgCmBEhPSABLQCVESEkDAkLIAEoAvgQISkgASgC8BAhJiABLQD8ECEjIAEpA+gQIVMgASgC9BAhJSABKALkECEnIAEoAuAQISoCQANAICMhJCAnICUiAE0NASABQYgTaiAqIABqICcgAGsQ8ggCQAJAAkAgASgCkBMiI0ECRg0AICNBAXFFDQEgATUCmBMhTwwCCyABICk2AvgQIAEgJjYC8BAgASAkOgD8ECABIAA2AvQQIAEgUzcD6BAgASgClBMhACABIAEpA5gTNwKMEyABIAA2AogTQdTHwQBBKyABQYgTakHUkMIAQeSQwgAQ+BAACyABKAKUEzUCACFPCyABKAKIEyAAaiElICYgT6ciK2ohJiAkQX9zQQFxISMgTyAkrUL/AYN+IlcgU3whUyAAISkgT1ANAAwFCwsgASApNgL4ECABICY2AvAQIAEgJDoA/BAgASAANgL0ECABIFM3A+gQIAEoAtAQIilFDQUgKSgCKEGAgICAeEYNBSABKALIECIqISMgKSgCMCIARQ0BA0AgAEE4bCEnICkoAiwhAEEAISVBACEmAkADQAJAIABBGGooAgAgJWoiJCAjSyAkICNJa0H/AXEiK0H/AUYNAAJAICsOAgMAAwsgIyAlayEjIAAhKSAAQTBqKAIAIgBFDQUMAwsgJEEBaiElIABBOGohACAmQQFqISYgJ0FIaiInDQAMCAsLCyAmISMgJiApKAIkTw0FDAILID5BgH5xQQNyIT4MCAsgIyApKAIkTw0DCyABICpBAWo2AsgQIAEgASgCuBAgKSgCICAjQQV0aiIAKAIQajYCuBAgASABKQOwECAAKQMAfDcDsBAgASAAKAIYIiQgASgCwBAiIyAkICNLGyAkICMbNgLAECABIAAoAhQiJCABKAK8ECIjICQgI0kbICMgJBsgJCAjGzYCvBAgACgCECEkIAApAwAhTyAAKAIcIgAoAgwhKSABIAAoAhAiJzYC5BAgASApNgLgECABIE83A9gQQgAhUyANQQ1qQgA3AAAgDUEIakIANwMAIA1CADcDACABICQ2AoARQQAhKkEAISZBACEjQQAhJQNAICMhJCAnICUiAE0NAiABQYgTaiApIABqICcgAGsQ8ggCQAJAAkAgASgCkBMiI0ECRg0AICNBAXFFDQEgATUCmBMhTwwCCyABICo2AvgQIAEgJjYC8BAgASAkOgD8ECABIAA2AvQQIAEgUzcD6BAgASgClBMhACABIAEpA5gTNwKMEyABIAA2AogTQdTHwQBBKyABQYgTakHUkMIAQeSQwgAQ+BAACyABKAKUEzUCACFPCyABKAKIEyAAaiElICYgT6ciK2ohJiAkQX9zQQFxISMgTyAkrUL/AYN+IlcgU3whUyAAISogT1ANAAsLIAEgADYC+BAgASAmNgLwECABICM6APwQIAEgJTYC9BAgASBTNwPoECABIAEoAoARICtrNgKAESAOIFcQsRYgASArNgKcEUEAIT8gAUEANgKYESABQQA7AZYRIAEgJDoAlREgAUEBOgCUESArDQMgJCFADAILIAEgKjYC+BAgASAmNgLwECABICQ6APwQIAEgADYC9BAgASBTNwPoEAsgASA/NgKcESABQQA2ApgRIAFBADsBlhEgASBAOgCVESABQQM6AJQRCyA+QYB+cUED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ASkDgAshTwwICyABQYgTaiABQaAKaiABKALgCiABKALkChD1DQJAIAEoAogTIiRBA0YNACABIAEoAvAKIAEoApgTIkdrNgLwCiABKQOQEyFtIAEoAowTIUhCACFPAkAgJEECRg0AIG0hTwJAICRBAXENACBIKQMAIU8LIE9CBIhC/////w+DIU8LIAEoApwTIUkgBiBPIEetfhCxFgwECyABKAKwCyIpRQ0KICkoAihBgICAgHhGDQogASgCqAsiKiEjICkoAjAiAEUNAQNAIABBOGwhJyApKAIsIQBBACElQQAhJgJAA0ACQCAAQRhqKAIAICVqIiQgI0sgJCAjSWtB/wFxIitB/wFGDQACQCArDgIDAAMLICMgJWshIyAAISkgAEEwaigCACIARQ0FDAMLICRBAWohJSAAQThqIQAgJkEBaiEmICdBSGoiJw0ADA0LCwsgJiEjICYgKSgCJE8NCgwCCyABKAL8CiEjDAcLICMgKSgCJE8NCAsgASAqQQFqNgKoCyABIAEoApgLICkoAiAgI0EFdGoiACgCEGo2ApgLIAEgASkDkAsgACkDAHw3A5ALIAEgACgCGCIkIAEoAqALIiMgJCAjSxsgJCAjGzYCoAsgASAAKAIUIiQgASgCnAsiIyAkICNJGyAjICQbICQgIxs2ApwLIAAoAhwiIygCDCEkICMoAhAhIyAAKQMAIU8gACgCECEAIARBGGpBADYCACAEQRBqQgA3AwAgBEEIakIANwMAIARCADcDACAFQTBqIAFBiBNqQTBqKAIANgIAIAFCADcDoAogBUEIaiABQYgTakEIaikDADcDACAFQRBqIAFBiBNqQRBqKQMANwMAIAVBGGogBCkDADcDACAFQSBqIAFBiBNqQSBqKQMANwMAIAVBKGogAUGIE2pBKGopAwA3AwAgBSABKQOIEzcDACABIAA2AvAKIAEgTzcD6AogASAjNgLkCiABICQ2AuAKIAFB6BNqIAFBoApqICQgIxD1DSABKALoEyIkQQNGDQcgASABKALwCiABKAL4EyJHazYC8AogASkD8BMhbSABKALsEyFIQgAhTwJAICRBAkYNACBtIU8CQCAkQQFxDQAgSCkDACFPCyBPQgSIQv////8PgyFPCyABKAL8EyFJIAYgTyBHrX4QsRYLIAEgSTYCjAsgASBHNgKICyABIG03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wBMgASBVNwO4EyABIFY3A7ATIAEgWDcDqBMgASBZNwOgEyABIFo3A5gTIAEgWzcDkBMgASBcNwOIEyABQQw2AvwTIAFBxMzCADYC+BMgAUEMNgLsEyABQeTLwgA2AugTIAFBDDYC9BMgASABQYgTajYC8BMgAUH4EmogAUHoE2oQuAkCQCABKALoEiIARQ0AIAEoAuwSIABBARC+GAsCQCABKALYEiIARQ0AIAEoAtwSIABBARC+GAsCQCABKALIEiIARQ0AIAEoAswSIABBARC+GAsgASgC+BIhACABIAEoAvwSIiQgASgCgBMQkhc2AogTAkAgAEUNACAkIABBARC+GAsgAUGIE2oQ/BkCQCABKAKIEyIAQYQISQ0AIAAQrxELIAEgASgCpBFBAWo2AqQRAkACQAJAAkACQCABKAK4EiIAQf////8HaiIkQQggJEEKSRsOCQABBAQEBAQEAgQLIAMhJCABKAK8EiIAQYCAgIB4ckGAgICAeEcNAgwDCyADISQgASgCvBIiAEGAgICAeHJBgICAgHhGDQIMAQsgAiEkIABBgICAgHhyQYCAgIB4Rg0BCyAkKAIAIABBARC+GAsCQCABKAKsEiIARQ0AIAEoArASIABBARC+GAsCQCABKAKgEiIARQ0AIAEoAqQSIABBARC+GAsCQCABKAKUEiIARQ0AIAEoApgSIABBARC+GAsCQCABKAKIEiIARQ0AIAEoAowSIABBARC+GAsCQCABKALsESIARQ0AIAEoAvARIABBARC+GAsCQCABKALYESIARQ0AIAEoAtwRIABBARC+GAsCQCABKALMESIARQ0AIAEoAtARIABBARC+GAsCQCABKALAESIARQ0AIAEoAsQRIABBARC+GAsCQCABKAK0ESIARQ0AIAEoArgRIABBARC+GAsgASgCqBEiAEUNACABKAKsESAAQQEQvhgMAAsLQQFBwgBBgJnCABDmFgAL33cC0gF/AX4jAEHA0QBrIgQkACAEQYgjaiABIAIQ7AcgBCgCkCMhBSAEKAKMIyECAkACQAJAAkACQAJAAkACQAJAAkACQCAEKAKIIyIGQSdGDQACQEHEAEUNACAEQcAsakEMaiAEQYgjakEMakHEAPwKAAALIAQgBTYCyCwgBCACNgLELCAEIAY2AsAsDAELIAQgBTYCjCMgBCACNgKIIwJAAkACQCACDQBCACHWAUEAIQcMAQsgAUHgA2ogBEGII2oQ+AtB/wFxIgdBBEYNASAEIAU2AsgsIAQgAjYCxCwgBCkCxCwh1gELIAQgAygCCCIGNgIUIAQgAygCBCIINgIQIAQgAygCACIJNgIMAkACQCDWAUIgiKciAiDWAaciCnINAEECIQsMAQsgASgCmA8iAyACTQ0EINYBQv////8PgyHWAQJAIAEoApQPIAJBFGxqIgMvAQAiC0UNAEEAIQUgA0EMaigCACIMQQBIDQYgA0EIaigCACEDAkACQCAMDQBBASENDAELELEaQQEhBSAMQQEQ+xciDUUNBwsCQCAMRQ0AIA0gAyAM/AoAAAtBASELIAwhDgwBCyADKAIQIQ8gAygBDCEMIAMoAQghDSADKAEEIQ4gAy8BAiEQCxCxGkEoQQgQ+xciA0UNBSABQeADaiEFIAMgAjYCJCADIA82AiAgAyAMNgIcIAMgDTYCGCADIA42AhQgAyAQOwESIAMgCzsBECADINYBNwMIIANCgYCAgBA3AwBBACEPIARByCBqIAFB4ARqQQAgASgCmAUgASgCnAUQ9wIgBEHgIWogAUGgBWpBACABKALYBSABKALcBRDvAiAEIARByCBqIAogAhDaDSAEKAIEIQwgBCgCACELAkACQCAJQYCAgIB4Rg0AIAZBAnQhDSAGQf////8DSw0IIA1B/P///wdLDQgCQAJAIA0NAEEEIQlBACEODAELELEaQQQhDyAGIQ4gDUEEEPsXIglFDQkLAkAgDUUiDw0AIAkgCCAN/AoAAAsgBCAONgLELCAEQYCAgIB4NgLALCAEIAatQiCGItYBIAmthDcCyCwgBEGII2ogBSALIAwgBEHALGoQjQYCQAJAIA0NAEEEIQlBACEGDAELELEaIA1BBBD7FyIJRQ0KCwJAIA8NACAJIAggDfwKAAALINYBIAmthCHWAQwBCyAEQoCAgICIgICAgH83AsAsIARBiCNqIAUgCyAMIARBwCxqEI0GQYCAgIB4IQYLIAQg1gE3ApBRIAQgBjYCjFEgBEGAgICAeDYCiFEgBEHALGogBSALIAwgBEGI0QBqEJIGIARCgICAgHA3A8A1IARBmBVqIAUgCyAMIARBDGogAS0AnA8Q+QsCQEHAAkUNACAEQRhqIARByCBqQcAC/AoAAAsgBEEANgK8ICAEQgA3A7AgIARBADYCqCACQEG4CUUNACAEQRhqQcACaiAEQYgjakG4CfwKAAALAkBBiAlFDQAgBEGQDGogBEHALGpBiAn8CgAACyAEIAI2AqQgIAQgCjYCoCAgBEECQQEgB0EDRhtBACAHGzoAwCACQEGwIEUNACAAIARBGGpBsCD8CgAACyAAIAU2ArQgIAAgAzYCsCAMAgsgBEEiNgLALAsgBEHALGoQrQcCQCADKAIAIgJBgICAgHhyQYCAgIB4Rg0AIAMoAgQgAkECdEEEEL4YCyABLQCcDyERELEaQShBCBD7FyICRQ0GIAJBAjsBECACQoGAgIAQNwMAIARB4MgAakEgakIANwMAIARB4MgAakEoakIANwMAIARB4MgAakEwakEANgIAIARBwMYAakEcakIANwIAIARBwMYAakEkakEANgIAIARBqMYAakEMakIANwIAIARBqMYAakEUakEANgIAIARBwMQAakEIakIANwMAIARCADcD+EggBEIANwLURiAEQgA3AqxGIARCADcDwEQgBEGYyQBqQTBqQQA2AgAgBEGYyQBqQShqQgA3AwAgBEGYyQBqQSBqQgA3AwAgBEIANwOwSSAEQbDEAGpBCGpCADcDACAEQgA3A7BEIARB8MkAakEUakEANgIAIARB8MkAakEMakIANwIAIARBqMUAakEIakIANwMAIARCADcC9EkgBEHwygBqQTBqQQA2AgAgBEHwygBqQShqQgA3AwAgBEHwygBqQSBqQgA3AwAgBEIANwOoRSAEQgA3A4hLIARBiMoAakEkakEANgIAIARBiMoAakEcakIANwIAIARCADcCnEogBEGkywBqQQxqQgA3AgAgBEIANwKoSyAEQbjLAGpBMGpBADYCACAEQbjLAGpBKGpCADcDACAEQbjLAGpBIGpCADcDACAEQgA3A9BLIARBmMUAakEIakIANwMAIARCADcDmEUgBEHQyQBqQRxqQQA2AgAgBEHQyQBqQRRqQgA3AgAgBEIANwLcSSAEQfDLAGpBMGpBADYCACAEQfDLAGpBKGpCADcDACAEQfDLAGpBIGpCADcDACAEQgA3A4hMIARBiMUAakEIakIANwMAIARCADcDiEUgBEGwygBqQRRqQQA2AgAgBEGwygBqQQxqQgA3AgAgBEIANwK0SiAEQajMAGpBMGpBADYCACAEQajMAGpBKGpCADcDACAEQajMAGpBIGpCADcDACAEQgA3A8BMIARB+MQAakEIakIANwMAIARCADcD+EQgBEHIygBqQSRqQQA2AgAgBEHIygBqQRxqQgA3AgAgBEIANwLcSiAEQeDMAGpBMGpBADYCACAEQeDMAGpBKGpCADcDACAEQeDMAGpBIGpCADcDACAEQgA3A/hMIARB6MQAakEIakIANwMAIARCADcD6EQgBEGgxwBqQRhqQQA2AgAgBEGgxwBqQRBqQgA3AgAgBEIANwKoRyAEQYHHAGpBG2pBADYAACAEQYHHAGpBE2pCADcAACAEQgA3AIxHIARB6MYAakEUakEANgIAIARB6MYAakEMakIANwIAIARCADcC7EYgBEG9xwBqQRdqQQA2AAAgBEG9xwBqQQ9qQgA3AAAgBEIANwDERyAEQdDEAGpBDWpCADcAACAEQdDEAGpBCGpCADcDACAEQgA3A9BEIARBmM0AakEUakEANgIAIARBmM0AakEMakIANwIAIARBmMYAakEIakIANwMAIARCADcCnE0gBEGYzgBqQTBqQQA2AgAgBEGYzgBqQShqQgA3AwAgBEGYzgBqQSBqQgA3AwAgBEIANwOYRiAEQgA3A7BOIARBsM0AakEkakEANgIAIARBsM0AakEcakIANwIAIARCADcCxE0gBEHMzgBqQQxqQgA3AgAgBEIANwLQTiAEQeDOAGpBMGpBADYCACAEQeDOAGpBKGpCADcDACAEQeDOAGpBIGpCADcDACAEQgA3A/hOIARBiMYAakEIakIANwMAIARCADcDiEYgBEHYxwBqQRRqQQA2AgAgBEHYxwBqQQxqQgA3AgAgBEIANwLcRyAEQdDFAGpBDWpCADcAACAEQdDFAGpBCGpCADcDACAEQgA3A9BFIARB2M0AakEUakEANgIAIARB2M0AakEMakIANwIAIARCADcC3E0gBEGYzwBqQTBqQQA2AgAgBEGYzwBqQShqQgA3AwAgBEGYzwBqQSBqQgA3AwAgBEIANwOwTyAEQfjFAGpBCGpCADcDACAEQgA3A/hFIARB8M0AakEkakEANgIAIARB8M0AakEcakIANwIAIARCADcChE4gBEHQzwBqQTBqQQA2AgAgBEHQzwBqQShqQgA3AwAgBEHQzwBqQSBqQgA3AwAgBEIANwPoTyAEQejFAGpBCGpCADcDACAEQgA3A+hFIARBqMgAakEYakEANgIAIARBqMgAakEQakIANwIAIARCADcCsEggBEGJyABqQRtqQQA2AAAgBEGJyABqQRNqQgA3AAAgBEIANwCUSCAEQfDHAGpBFGpBADYCACAEQfDHAGpBDGpCADcCACAEQgA3AvRHIARBxcgAakEXakEANgAAIARBxcgAakEPakIANwAAIARCADcAzEggBEG4xQBqQQ1qQgA3AAAgBEG4xQBqQQhqQgA3AwAgBEIANwO4RSAEQYjRAGpBIGpCADcDACAEQYjRAGpBKGpCADcDACAEQYjRAGpBMGpBADYCACAEQdDQAGpBIGpCADcDACAEQdDQAGpBKGpCADcDACAEQdDQAGpBMGpBADYCACAEQdA/akEcakIANwIAIARB0D9qQSRqQQA2AgAgBEHYwwBqQQxqQgA3AgAgBEHYwwBqQRRqQQA2AgAgBEHIPWpBD2pCADcAACAEQcg9akEXakEANgAAIARCADcDoFEgBEIANwPoUCAEQgA3AuQ/IARCADcC3EMgBEIANwDPPSAEQdA+akEcakEANgIAIARB0D5qQRRqQgA3AgAgBEHIIGpBIGpCADcDACAEQcggakEoakIANwMAIARByCBqQTBqQQA2AgAgBEHIPGpBDGpCADcCACAEQcg8akEUakEANgIAIARBwCxqQSBqQgA3AwAgBEHALGpBKGpCADcDACAEQcAsakEwakEANgIAIARBkMEAakEcakIANwIAIARBkMEAakEkakEANgIAIARBwMIAakEMakIANwIAIARCADcC3D4gBEIANwPgICAEQgA3Asw8IARCADcD2CwgBEIANwKkQSAEQgA3AsRCIARBiCNqQTBqQQA2AgAgBEGII2pBKGpCADcDACAEQYgjakEgakIANwMAIARCADcDoCMQsRpBFEEEEPsXIgFFDQcgAUEANgIQIAFBADYCCCABQoGAgIAQNwIAELEaQRRBBBD7FyIDRQ0IIANBADYCECADQQA2AgggA0KBgICAEDcCACAEQbA6akEIaiISIARB0NAAakEIaiIFKQMANwMAIARBsDpqQRBqIhMgBEHQ0ABqQRBqIgYpAwA3AwAgBEGwOmpBGGoiFCAEQdDQAGpBGGoiDCkDADcDACAEQbA6akEgaiIVIARB0NAAakEgaiIL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A5BDIDYgBEG4ywBqQTBqKAIANgIAIDggBEG4ywBqQShqKQMANwMAIDogBEG4ywBqQSBqKQMANwMAIDwgBEG4ywBqQRhqKQMANwMAID4gBEG4ywBqQRBqKQMANwMAIEAgBEG4ywBqQQhqKQMANwMAIAQgBCkDuEs3A8ggIARB+MIAakEQaiKEASAEQaTLAGpBEGooAgA2AgAgBEH4wgBqQQhqIoUBIARBpMsAakEIaikCADcDACAEIAQpAqRLNwP4QiAEQejCAGpBCGoihgEgBEGYxQBqQQhqKQMANwMAIAQgBCkDmEU3A+hCIARBwMIAakEgaiKHASAEQYjKAGpBIGopAgA3AwAgBEHAwgBqQRhqIogBIARBiMoAakEYaikCADcDACBsIARBiMoAakEQaikCADcDACBuIARBiMoAakEIaikCADcDACAEIAQpAohKNwPAQiAkIARB8MsAakEwaigCADYCACAiIARB8MsAakEoaikDADcDACAIIARB8MsAakEgaikDADcDACAQIARB8MsAakEYaikDADcDACAOIARB8MsAakEQaikDADcDACAPIARB8MsAakEIaikDADcDACAEIAQpA/BLNwOIUSAEQbDCAGpBCGoiiQEgBEGIxQBqQQhqKQMANwMAIAQgBCkDiEU3A7BCIARBkMIAakEYaiKKASAEQdDJAGpBGGopAgA3AwAgBEGQwgBqQRBqIosBIARB0MkAakEQaikCADcDACAEQZDCAGpBCGoijAEgBEHQyQBqQQhqKQIANwMAIAQgBCkC0Ek3A5BCIAcgBEGozABqQTBqKAIANgIAIA0gBEGozABqQShqKQMANwMAIAsgBEGozABqQSBqKQMANwMAIAwgBEGozABqQRhqKQMANwMAIAYgBEGozABqQRBqKQMANwMAIAUgBEGozABqQQhqKQMANwMAIAQgBCkDqEw3A9BQIARBgMIAakEIaiKNASAEQfjEAGpBCGopAwA3AwAgBCAEKQP4RDcDgEIgBEHowQBqQRBqIo4BIARBsMoAakEQaikCADcDACAEQejBAGpBCGoijwEgBEGwygBqQQhqKQIANwMAIAQgBCkCsEo3A+hBIARByMEAakEXaiKQASAEQYHHAGpBF2opAAA3AAAgBEHIwQBqQRBqIpEBIARBgccAakEQaikAADcDACAEQcjBAGpBCGoikgEgBEGBxwBqQQhqKQAANwMAIAQgBCkAgUc3A8hBIARBkMEAakEwaiKTASAEQeDMAGpBMGooAgA2AgAgBEGQwQBqQShqIpQBIARB4MwAakEoaikDADcDACBxIARB4MwAakEgaikDADcDACBzIARB4MwAakEYaikDADcDACB1IARB4MwAakEQaikDADcDACB3IARB4MwAakEIaikDADcDACAEIAQpA+BMNwOQQSAEQYDBAGpBCGoilQEgBEHoxABqQQhqKQMANwMAIAQgBCkD6EQ3A4BBIARB2MAAakEgaiKWASAEQcjKAGpBIGopAgA3AwAgBEHYwABqQRhqIpcBIARByMoAakEYaikCADcDACAEQdjAAGpBEGoimAEgBEHIygBqQRBqKQIANwMAIARB2MAAakEIaiKZASAEQcjKAGpBCGopAgA3AwAgBCAEKQLISjcD2EAgBEHAwABqQRBqIpoBIARB6MYAakEQaikCADcDACAEQcDAAGpBCGoimwEgBEHoxgBqQQhqKQIANwMAIAQgBCkC6EY3A8BAIARBoMAAakEXaiKcASAEQb3HAGpBF2ooAAA2AAAgBEGgwABqQRBqIp0BIARBvccAakEQaikAADcDACAEQaDAAGpBCGoingEgBEG9xwBqQQhqKQAANwMAIAQgBCkAvUc3A6BAIARBiMAAakENaiKfASAEQdDEAGpBDWopAAA3AAAgBEGIwABqQQhqIqABIARB0MQAakEIaikDADcDACAEIAQpA9BENwOIQCAEQdA/akEwaiKhASAEQZjOAGpBMGooAgA2AgAgBEHQP2pBKGoiogEgBEGYzgBqQShqKQMANwMAICcgBEGYzgBqQSBqKQMANwMAICkgBEGYzgBqQRhqKQMANwMAICsgBEGYzgBqQRBqKQMANwMAIC0gBEGYzgBqQQhqKQMANwMAIAQgBCkDmE43A9A/IARBwD9qQQhqIqMBIARBmMYAakEIaikDADcDACAEIAQpA5hGNwPAPyAEQag/akEQaiKkASAEQZjNAGpBEGopAgA3AwAgBEGoP2pBCGoipQEgBEGYzQBqQQhqKQIANwMAIAQgBCkCmE03A6g/IARBiD9qQRhqIqYBIARBqMgAakEYaigCADYCACAEQYg/akEQaiKnASAEQajIAGpBEGopAgA3AwAgBEGIP2pBCGoiqAEgBEGoyABqQQhqKQIANwMAIAQgBCkCqEg3A4g/IARB0D5qQTBqIqkBIARB4M4AakEwaigCADYCACAEQdA+akEoaiKqASAEQeDOAGpBKGopAwA3AwAgBEHQPmpBIGoiqwEgBEHgzgBqQSBqKQMANwMAIEMgBEHgzgBqQRhqKQMANwMAIEUgBEHgzgBqQRBqKQMANwMAIEcgBEHgzgBqQQhqKQMANwMAIAQgBCkD4E43A9A+IARBuD5qQRBqIqwBIARBzM4AakEQaigCADYCACAEQbg+akEIaiKtASAEQczOAGpBCGopAgA3AwAgBCAEKQLMTjcDuD4gBEGoPmpBCGoirgEgBEGIxgBqQQhqKQMANwMAIAQgBCkDiEY3A6g+IARBgD5qQSBqIq8BIARBsM0AakEgaikCADcDACAEQYA+akEYaiKwASAEQbDNAGpBGGopAgA3AwAgBEGAPmpBEGoisQEgBEGwzQBqQRBqKQIANwMAIARBgD5qQQhqIrIBIARBsM0AakEIaikCADcDACAEIAQpArBNNwOAPiAEQcg9akEwaiKzASAEQZjPAGpBMGooAgA2AgAgBEHIPWpBKGoitAEgBEGYzwBqQShqKQMANwMAIARByD1qQSBqIrUBIARBmM8AakEgaikDADcDACAEQcg9akEYaiK2ASAEQZjPAGpBGGopAwA3AwAgMCAEQZjPAGpBEGopAwA3AwAgMiAEQZjPAGpBCGopAwA3AwAgBCAEKQOYTzcDyD0gBEG4PWpBCGoitwEgBEH4xQBqQQhqKQMANwMAIAQgBCkD+EU3A7g9IARBoD1qQRBqIrgBIARB2M0AakEQaikCADcDACAEQaA9akEIaiK5ASAEQdjNAGpBCGopAgA3AwAgBCAEKQLYTTcDoD0gBEGAPWpBF2oiugEgBEGJyABqQRdqKQAANwAAIARBgD1qQRBqIrsBIARBicgAakEQaikAADcDACAEQYA9akEIaiK8ASAEQYnIAGpBCGopAAA3AwAgBCAEKQCJSDcDgD0gBEHIPGpBMGoivQEgBEHQzwBqQTBqKAIANgIAIARByDxqQShqIr4BIARB0M8AakEoaikDADcDACAEQcg8akEgaiK/ASAEQdDPAGpBIGopAwA3AwAgBEHIPGpBGGoiwAEgBEHQzwBqQRhqKQMANwMAIFkgBEHQzwBqQRBqKQMANwMAIFsgBEHQzwBqQQhqIsEBKQMANwMAIAQgBCkD0E83A8g8IARBuDxqQQhqIsIBIARB6MUAakEIaikDADcDACAEIAQpA+hFNwO4PCAEQZA8akEgaiLDASAEQfDNAGpBIGopAgA3AwAgBEGQPGpBGGoixAEgBEHwzQBqQRhqKQIANwMAIARBkDxqQRBqIsUBIARB8M0AakEQaikCADcDACAEQZA8akEIaiLGASAEQfDNAGpBCGopAgA3AwAgBCAEKQLwTTcDkDwgBEH4O2pBEGoixwEgBEHwxwBqQRBqKQIANwMAIARB+DtqQQhqIsgBIARB8McAakEIaikCADcDACAEIAQpAvBHNwP4OyAEQeA7akEQaiLJASAEQdjHAGpBEGopAgA3AwAgBEHgO2pBCGoiygEgBEHYxwBqQQhqKQIANwMAIAQgBCkC2Ec3A+A7IARByDtqQQ1qIssBIARB0MUAakENaikAADcAACAEQcg7akEIaiLMASAEQdDFAGpBCGopAwA3AwAgBCAEKQPQRTcDyDsgBEGoO2pBF2oizQEgBEHFyABqQRdqKAAANgAAIARBqDtqQRBqIs4BIARBxcgAakEQaikAADcDACAEQag7akEIaiLPASAEQcXIAGpBCGopAAA3AwAgBCAEKQDFSDcDqDsgBEGQO2pBDWoi0AEgBEG4xQBqQQ1qKQAANwAAIARBkDtqQQhqItEBIARBuMUAakEIaikDADcDACAEIAQpA7hFNwOQOyAEQeg6akEgaiLSAUIANwMAIARB6DpqQRhqItMBQgA3AwAgBEHoOmpBEGoi1AFCADcDACAEQcg1akEIaiLVAUIANwMAIARCADcDyDUgACACNgKwICAAQQA2ArQgIABBAzYCgAEgAEEANgJ4IABBADYCcCAAQQE2AkAgAEIANwMAIAAgBCkClEQ3AoQBIABBjAFqIHopAgA3AgAgAEGUAWogeSkCADcCACAAQZwBaiB4KAIANgIAIAAgBCkDiCM3A6ABIABBqAFqIGopAwA3AwAgAEGwAWogaCkDADcDACAAQbgBaiBmKQMANwMAIABBwAFqIGQpAwA3AwAgAEHIAWogYikDADcDACAAQdABaiBgKAIANgIAIABBATYC2AEgAEHkAWogeykDADcCACAAIAQpA4BENwLcASAAQQM2AvABIABBlAJqIHwpAwA3AgAgAEGMAmogfSkDADcCACAAQYQCaiAJKQMANwIAIABB/AFqIAopAwA3AgAgACAEKQPYQzcC9AEgAEIANwPAAiAAQQA2ArgCIABCADcDsAIgAEEANgKoAiAAQQA2AqACIABB+AJqIEwoAgA2AgAgAEHwAmogTikDADcDACAAQegCaiBQKQMANwMAIABB4AJqIFIpAwA3AwAgAEHYAmogVCkDADcDACAAQdACaiBWKQMANwMAIAAgBCkDwCw3A8gCIABBATYCgAMgAEGMA2ogfikDADcCACAAIAQpA8hDNwKEAyAAQaQDaiB/KQMANwIAIABBnANqIIABKQMANwIAIAAgBCkDsEM3ApQDIABBAzYCwAMgAEEANgK4AyAAQQA2ArADIABB3ANqIIEBKAIANgIAIABB1ANqIIIBKQMANwIAIABBzANqIIMBKQMANwIAIAAgBCkDkEM3AsQDIABBkARqIDYoAgA2AgAgAEGIBGogOCkDADcDACAAQYAEaiA6KQMANwMAIABB+ANqIDwpAwA3AwAgAEHwA2ogPikDADcDACAAQegDaiBAKQMANwMAIAAgBCkDyCA3A+ADIABBpARqIIQBKAIANgIAIABBnARqIIUBKQMANwIAIAAgBCkD+EI3ApQEIABBATYCqAQgAEG0BGoghgEpAwA3AgAgACAEKQPoQjcCrAQgAEEDNgLABCAAQeQEaiCHASkDADcCACAAQdwEaiCIASkDADcCACAAQdQEaiBsKQMANwIAIABBzARqIG4pAwA3AgAgACAEKQPAQjcCxAQgAEIANwOQBSAAQQA2AogFIABCADcDgAUgAEEANgL4BCAAQQA2AvAEIABByAVqICQoAgA2AgAgAEHABWogIikDADcDACAAQbgFaiAIKQMANwMAIABBsAVqIBApAwA3AwAgAEGoBWogDikDADcDACAAQaAFaiAPKQMANwMAIAAgBCkDiFE3A5gFIABBATYC0AUgAEHcBWogiQEpAwA3AgAgACAEKQOwQjcC1AUgAEGCgICAeDYC6AUgAEGEBmogigEpAwA3AgAgAEH8BWogiwEpAwA3AgAgAEH0BWogjAEpAwA3AgAgACAEKQOQQjcC7AUgAEIANwOwBiAAQQA2AqgGIABCADcDoAYgAEEANgKYBiAAQQA2ApAGIABB6AZqIAcoAgA2AgAgAEHgBmogDSkDADcDACAAQdgGaiALKQMANwMAIABB0AZqIAwpAwA3AwAgAEHIBmogBikDADcDACAAQcAGaiAFKQMANwMAIAAgBCkD0FA3A7gGIABBATYC8AYgAEH8BmogjQEpAwA3AgAgACAEKQOAQjcC9AYgAEGUB2ogjgEpAwA3AgAgAEGMB2ogjwEpAwA3AgAgACAEKQPoQTcChAcgAEEDOgCwByAAQQA2AqgHIABBADYCoAcgAEHIB2ogkAEpAAA3AAAgAEHBB2ogkQEpAwA3AAAgAEG5B2ogkgEpAwA3AAAgACAEKQPIQTcAsQcgAEGACGogkwEoAgA2AgAgAEH4B2oglAEpAwA3AwAgAEHwB2ogcSkDADcDACAAQegHaiBzKQMANwMAIABB4AdqIHUpAwA3AwAgAEHYB2ogdykDADcDACAAIAQpA5BBNwPQByAAQQE2AogIIABBlAhqIJUBKQMANwIAIAAgBCkDgEE3AowIIABBAzYCoAggAEHECGoglgEpAwA3AgAgAEG8CGoglwEpAwA3AgAgAEG0CGogmAEpAwA3AgAgAEGsCGogmQEpAwA3AgAgACAEKQPYQDcCpAggAEEANgLoCCAAQgA3A+AIIABBADYC2AggAEEANgLQCCAAQfwIaiCaASkDADcCACAAQfQIaiCbASkDADcCACAAIAQpA8BANwLsCCAAQQM6AKgJIABBADYCoAkgAEEANgKYCSAAQQA2ApAJIABBADYCiAkgAEHACWognAEoAAA2AAAgAEG5CWognQEpAwA3AAAgAEGxCWogngEpAwA3AAAgACAEKQOgQDcAqQkgAEIBNwPgCSAAQgA3A9gJIABBADYC0AkgAEEANgLICSAAQfUJaiCfASkAADcAACAAQfAJaiCgASkDADcDACAAIAQpA4hANwPoCSAAQoCAgICIgICAgH83A9gLIABBgYCAgHg2AsQLIABBADYCoAogAEEDOgCUCiAAQQA2ApAKIABCADcDiAogAEEANgKACiAAQegLaiDBASkDADcDACAAIAQpA9BPNwPgCyAAQgA3A/gLIABBADYC8AsgAEGwDGogoQEoAgA2AgAgAEGoDGogogEpAwA3AwAgAEGgDGogJykDADcDACAAQZgMaiApKQMANwMAIABBkAxqICspAwA3AwAgAEGIDGogLSkDADcDACAAIAQpA9A/NwOADCAAQQE2ArgMIABBxAxqIKMBKQMANwIAIAAgBCkDwD83ArwMIABB3AxqIKQBKQMANwIAIABB1AxqIKUBKQMANwIAIAAgBCkDqD83AswMIABBAzYC+AwgAEEANgLwDCAAQQA2AugMIABBlA1qIKYBKAIANgIAIABBjA1qIKcBKQMANwIAIABBhA1qIKgBKQMANwIAIAAgBCkDiD83AvwMIABByA1qIKkBKAIANgIAIABBwA1qIKoBKQMANwMAIABBuA1qIKsBKQMANwMAIABBsA1qIEMpAwA3AwAgAEGoDWogRSkDADcDACAAQaANaiBHKQMANwMAIAAgBCkD0D43A5gNIABB3A1qIKwBKAIANgIAIABB1A1qIK0BKQMANwIAIAAgBCkDuD43AswNIABBATYC4A0gAEHsDWogrgEpAwA3AgAgACAEKQOoPjcC5A0gAEEDNgL4DSAAQZwOaiCvASkDADcCACAAQZQOaiCwASkDADcCACAAQYwOaiCxASkDADcCACAAQYQOaiCyASkDADcCACAAIAQpA4A+NwL8DSAAQgA3A8gOIABBADYCwA4gAEIANwO4DiAAQQA2ArAOIABBADYCqA4gAEGAD2ogswEoAgA2AgAgAEH4DmogtAEpAwA3AwAgAEHwDmogtQEpAwA3AwAgAEHoDmogtgEpAwA3AwAgAEHgDmogMCkDADcDACAAQdgOaiAyKQMANwMAIAAgBCkDyD03A9AOIABBATYCiA8gAEGUD2ogtwEpAwA3AgAgACAEKQO4PTcCjA8gAEGsD2oguAEpAwA3AgAgAEGkD2oguQEpAwA3AgAgACAEKQOgPTcCnA8gAEEDOgDIDyAAQQA2AsAPIABBADYCuA8gAEHgD2ogugEpAAA3AAAgAEHZD2oguwEpAwA3AAAgAEHRD2ogvAEpAwA3AAAgACAEKQOAPTcAyQ8gAEGYEGogvQEoAgA2AgAgAEGQEGogvgEpAwA3AwAgAEGIEGogvwEpAwA3AwAgAEGAEGogwAEpAwA3AwAgAEH4D2ogWSkDADcDACAAQfAPaiBbKQMANwMAIAAgBCkDyDw3A+gPIABBATYCoBAgAEGsEGogwgEpAwA3AgAgACAEKQO4PDcCpBAgAEEDNgK4ECAAQdwQaiDDASkDADcCACAAQdQQaiDEASkDADcCACAAQcwQaiDFASkDADcCACAAQcQQaiDGASkDADcCACAAIAQpA5A8NwK8ECAAQQA2AoARIABCADcD+BAgAEEANgLwECAAQQA2AugQIABBlBFqIMcBKQMANwIAIABBjBFqIMgBKQMANwIAIAAgBCkD+Ds3AoQRIABBADYCuBEgAEEANgKwESAAQQA2AqgRIABBADYCoBEgAEHMEWogyQEpAwA3AgAgAEHEEWogygEpAwA3AgAgACAEKQPgOzcCvBEgAEIBNwPwESAAQgA3A+gRIABBADYC4BEgAEEANgLYESAAQYUSaiDLASkAADcAACAAQYASaiDMASkDADcDACAAIAQpA8g7NwP4ESAAQQM6ALASIABBAzoApBIgAEEANgKgEiAAQgA3A5gSIABBADYCkBIgAEHIEmogzQEoAAA2AAAgAEHBEmogzgEpAwA3AAAgAEG5EmogzwEpAwA3AAAgACAEKQOoOzcAsRIgAEIBNwPoEiAAQgA3A+ASIABBADYC2BIgAEEANgLQEiAAQf0SaiDQASkAADcAACAAQfgSaiDRASkDADcDACAAIAQpA5A7NwPwEiAAQoCAgICIgICAgH83A9gUIABBi4CAgHg2ArAUIABBADYCqBMgAEEDOgCcEyAAQQA2ApgTIABCADcDkBMgAEEANgKIEyAAQYAVaiDSASkDADcDACAAQfgUaiDTASkDADcDACAAQfAUaiDUASkDADcDACAAQegUaiAEQeg6akEIaikDADcDACAAIAQpA+g6NwPgFCAAQbgVaiAXKAIANgIAIABBsBVqIBYpAwA3AwAgAEGoFWogFSkDADcDACAAQaAVaiAUKQMANwMAIABBmBVqIBMpAwA3AwAgAEGQFWogEikDADcDACAAIAQpA7A6NwOIFSAAQQE2AsAVIABBzBVqIBgpAwA3AgAgACAEKQOgOjcCxBUgAEHkFWogHCkDADcCACAAQdwVaiAbKQMANwIAIAAgBCkDiDo3AtQVIABBAzoAgBYgAEEANgL4FSAAQQA2AvAVIABBnBZqIBooAgA2AgAgAEGUFmogGSkDADcCACAAIAQpA/A5NwKMFiAAQdAWaiAjKAIANgIAIABByBZqICEpAwA3AwAgAEHAFmogICkDADcDACAAQbgWaiAfKQMANwMAIABBsBZqIB4pAwA3AwAgAEGoFmogHSkDADcDACAAIAQpA7g5NwOgFiAAQQE2AtgWIABB5BZqICUpAwA3AgAgACAEKQOoOTcC3BYgAEEDNgLwFiAAQZQXaiAmKQMANwIAIABBjBdqICgpAwA3AgAgAEGEF2ogKikDADcCACAAQfwWaiAsKQMANwIAIAAgBCkDgDk3AvQWIABBADYCuBcgAEIANwOwFyAAQQA2AqgXIABBADYCoBcgAEHMF2ogBEG40ABqQRBqKQIANwIAIABBxBdqIARBuNAAakEIaikCADcCACAAIAQpArhQNwK8FyAAQQM6APgXIABBADYC8BcgAEEANgLoFyAAQQA2AuAXIABBADYC2BcgAEGQGGogLigAADYAACAAQYkYaiAvKQMANwAAIABBgRhqIDEpAwA3AAAgACAEKQPgODcA+RcgAEIBNwOwGCAAQgA3A6gYIABBADYCoBggAEEANgKYGCAAQcUYaiAzKQAANwAAIABBwBhqIDQpAwA3AwAgACAEKQPIODcDuBggAEIANwOQGiAAQYuAgIB4NgL4GSAAQQA2AvAYIABBAzoA5BggAEEANgLgGCAAQgA3A9gYIABBADYC0BggAEHIGmogNSgCADYCACAAQcAaaiA3KQMANwMAIABBuBpqIDkpAwA3AwAgAEGwGmogOykDADcDACAAQagaaiA9KQMANwMAIABBoBpqID8pAwA3AwAgACAEKQOQODcDmBogAEEBNgLQGiAAQdwaaiBBKQMANwIAIAAgBCkDgDg3AtQaIABBgoCAgHg2AugaIABBhBtqIEIpAwA3AgAgAEH8GmogRCkDADcCACAAQfQaaiBGKQMANwIAIAAgBCkD4Dc3AuwaIABBADYCqBsgAEIANwOgGyAAQQA2ApgbIABBADYCkBsgAEG8G2ogBEGg0ABqQRBqKQIANwIAIABBtBtqIARBoNAAakEIaikCADcCACAAIAQpAqBQNwKsGyAAQQE2AuAbIABCADcD2BsgAEEANgLQGyAAQQA2AsgbIABB/BtqIEgtAAA6AAAgAEH0G2ogSSkDADcCACAAQewbaiBKKQMANwIAIAAgBCkDwDc3AuQbIABCADcDoBwgAEEDOgCUHCAAQQA2ApAcIABCADcDiBwgAEEANgKAHCAAQdgcaiBLKAIANgIAIABB0BxqIE0pAwA3AwAgAEHIHGogTykDADcDACAAQcAcaiBRKQMANwMAIABBuBxqIFMpAwA3AwAgAEGwHGogVSkDADcDACAAIAQpA4g3NwOoHCAAQQE2AuAcIABB7BxqIFcpAwA3AgAgACAEKQP4NjcC5BwgAEGEHWogWCkDADcCACAAQfwcaiBaKQMANwIAIAAgBCkD4DY3AvQcIABBAzYCoB0gAEEANgKYHSAAQQA2ApAdIABBvB1qIFwoAgA2AgAgAEG0HWogXSkCADcCACAAQawdaiBeKQIANwIAIAAgBCkChFA3AqQdIABB8B1qIF8oAgA2AgAgAEHoHWogYSkDADcDACAAQeAdaiBjKQMANwMAIABB2B1qIGUpAwA3AwAgAEHQHWogZykDADcDACAAQcgdaiBpKQMANwMAIAAgBCkDqDY3A8AdIABBhB5qIGsoAgA2AgAgAEH8HWogbSkDADcCACAAIAQpA5A2NwL0HSAAQQE2AogeIABBlB5qIG8pAwA3AgAgACAEKQOANjcCjB4gAEEDNgKgHiAAQcQeaiBwKQMANwIAIABBvB5qIHIpAwA3AgAgAEG0HmogdCkDADcCACAAQaweaiB2KQMANwIAIAAgBCkD2DU3AqQeIABCgICAgIiAgICAfzcD6B8gACADNgLkHyAAQQA2AuAfIABCgICAgIABNwPYHyAAIAE2AtQfIABBADYC0B8gAEKAgICAgAE3A8gfIAAgEToAxB8gAEEANgLAHyAAQQU2ApwfIABBBDYC/B4gAEEANgLwHiAAQQA2AugeIABCADcD4B4gAEEANgLYHiAAQQA2AtAeIABBiCBqINUBKQMANwMAIAAgBCkDyDU3A4AgIABBADoAqCAgAEEANgKkICAAQgA3A5ggIABBADYCkCAgAEGsIGogBEGYzwBqQQNqKAAANgAAIAAgBCgAmE82AKkgCyAEQcDRAGokAA8LIAIgA0G02cIAEOMRAAsgBSAMQYCZwgAQ5hYAC0EIQSgQ2BkACyAPIA1BgJnCABDmFgALQQQgDUGAmcIAEOYWAAtBCEEoENgZAAtBBEEUENgZAAtBBEEUENgZAAuTawIdfwh+IwBBkAVrIgIkACABKALQASIDIAEoAtQBIgRBBXRqIQUCQCAERQ0AIAAoAqAPIgZBYGohByAAKAKsDyEIIAAoAqgPIQkgACgCpA8hCiAAKQO4DyEfIAApA7APISAgAyELA0AgCiAgIB8gCyIMEMwIIiGncSENICFCGYhC/wCDQoGChIiQoMCAAX4hIiAMQSBqIQtBACEOAkACQANAAkAgBiANaikAACIjICKFIiFCf4UgIUL//fv379+//358g0KAgYKEiJCgwIB/gyIhUA0AA0AgDCAHICF6p0EDdiANaiAKcUEFdCIPa0EgEIQTRQ0DICFCf3wgIYMiIVBFDQALCyAjICNCAYaDQoCBgoSIkKDAgH+DUEUNAiANIA5BCGoiDmogCnEhDQwACwtBgAEhDQJAIAYgD0EFdSIMaiIPKQAAIiEgIUIBhoNCgIGChIiQoMCAf4N6p0EDdiAGIAxBeGogCnFqIgwpAAAiISAhQgGGg0KAgYKEiJCgwIB/g3mnQQN2akEHSw0AIAAgCUEBaiIJNgKoD0H/ASENCyAPIA06AAAgACAIQX9qIgg2AqwPIAxBCGogDToAAAsgCyAFRw0ACwsgAEGgD2ogAUEMaiIQEIYIIAIgACgClA8gACgCmA8gAUH8AWoQ5AYgAigCBCERAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAigCAEEBcQ0AIAJBCGpBGGogEEEYaikAADcDACACQQhqQRBqIBBBEGopAAA3AwAgAkEIakEIaiAQQQhqKQAANwMAIAIgECkAADcDCCAAKAK8AkUNASAAKQPAAiIfIAApA8gCIiAgEBDMCCEhIAAoArQCIgwgIadxIQsgIUIZiEL/AINCgYKEiJCgwIABfiEiIAAoArACIg1BXGohCkEAIQYDQAJAIA0gC2opAAAiIyAihSIhQn+FICFC//379+/fv/9+fINCgIGChIiQoMCAf4MiIVANAANAIAJBCGogCkEAICF6p0EDdiALaiAMcWtBJGxqQSAQhBNFDQcgIUJ/fCAhgyIhUEUNAAsLAkAgIyAjQgGGg0KAgYKEiJCgwIB/g1BFDQAgCyAGQQhqIgZqIAxxIQsMAQsLIARFDQMgAyELA0AgDCAfICAgCxDMCCIhp3EhBiAhQhmIQv8Ag0KBgoSIkKDAgAF+ISJBACEIA0ACQCANIAZqKQAAIiMgIoUiIUJ/hSAhQv/9+/fv37//fnyDQoCBgoSIkKDAgH+DIiFQDQACQANAIAsgCkEAICF6p0EDdiAGaiAMcWtBJGxqQSAQhBNFDQEgIUJ/fCAhgyIhUA0CDAALCyALQSBqIgsgBUcNAgwGCyAjICNCAYaDQoCBgoSIkKDAgH+DUEUNBCAGIAhBCGoiCGogDHEhBgwACwsLIAIgETYCyAJB6KPCAEEqIAJByAJqQfzswQBBlKTCABD4EAALIARFDQEgAyELCyALQQhqKQAAISEgC0EQaikAACEiIAspAAAhIyACQShqQRhqIAtBGGopAAAiHzcDACACQShqQRBqICI3AwAgAkEoakEIaiAhNwMAIAIgIzcDKCACQcgCakEYaiAfNwMAIAJByAJqQRBqICI3AwAgAkHIAmpBCGogITcDACACICM3A8gCQaijwgBBLyACQcgCakGYo8IAQdijwgAQ+BAACyAAKAKUAyESAkAgACgCmAMgACgCoAMiC0cNACAAQZgDaiALQQFBBEEEEIcMIAAoAqADIQsLIAAoApwDIAtBAnRqIBE2AgAgACALQQFqNgKgAwJAIAAoArADIAAoArgDIgtHDQAgAEGwA2ogC0EBQQRBBBCHDCAAKAK4AyELCyAAKAK0AyALQQJ0aiABKAI4IhM2AgAgACALQQFqNgK4AwJAIAAoArwDIAAoAsQDIgtHDQAgAEG8A2ogC0EBQQRBBBCHDCAAKALEAyELCyAAKALAAyALQQJ0aiABKAIwIAEoAqgCIgpqQX9qIhQ2AgAgACALQQFqNgLEAyACIAAoAmg2AswEAkACQCAAKAJYQYCAgIB4Rg0AIAAoAkgiFUUNACAAQbACaiEWIABBMGohFyAAQYwDaiEYIAJBADYC2AQgAkKAgICAgAE3AtAEIAIgAkHMBGo2AtwEIAAoAlwhDSAAKAJgIQ4gACgCUCEMIAAoAlQhBiACQdAEakHsgcIAEIQOIAIoAtQEIgtCADcDECALIAwgBkEFdGo2AgwgCyAMNgIIIAsgDSAOQThsajYCBCALIA02AgAgC0EANgIoIAtBGGpCADcDACALQSBqQQA2AgAgAkEBNgLYBCAKrSEjQQEhDAJAAkACQANAAkAgAigC1AQiDyAMQTBsIgdqIg1BUGoiCigCACILIA1BVGooAgBGDQAgAigC3AQhCSAKIAtBOGo2AgAgDUF4aiIGKAIAIQggAkHIAmpBCGoiGSANQWxqIgpBCGooAgA2AgAgBiAIIAsoAhhqNgIAIA1BaGoiBiALKAIIIAYoAgAiGmoiGzYCACANQWBqIgYgCykDACAGKQMAIiJ8NwMAIAopAgAhISANQXBqIgYgCygCECINIAYoAgAiBiANIAZLGyANIAYbNgIAIAogCygCDCINIAooAgAiBiANIAZJGyAGIA0bIA0gBhs2AgAgAiAhNwPIAiAJKAIAIBtPDQAgAkHwBGpBCGoiDSAZKAIANgIAIAIgAikDyAI3A/AEIAsoAiAiCiALKAIkQQV0aiEGIAsoAiwiCSALKAIwQThsaiEbAkAgDCACKALQBEcNACACQdAEakGoyMEAEIQOIAIoAtQEIQ8LIA8gB2oiCyAaNgIYIAsgIjcDECALIAY2AgwgCyAKNgIIIAsgGzYCBCALIAk2AgAgCyACKQPwBDcCHCALIAg2AiggC0EkaiANKAIANgIAIAIgDEEBaiIMNgLYBCAMDQEMAgsgAkHIAmogAkHQBGoQ5wkCQCACKALkAiIMRQ0AIAJByABqQRhqIAJByAJqQRhqKAIANgIAIAJByABqQRBqIAJByAJqQRBqKQMANwMAIAJByABqQQhqIAJByAJqQQhqKQMANwMAIAIgAikDyAI3A0gMAwsgAigC2AQiDA0ACwsgFyELAkAgDkUNACAXIQsDQCALKAIsIA5BOGxqIg1BSGohCyANQXhqKAIAIg4NAAsLIAsoAiQiDUUNASALKAIgIA1BBXRqQWBqIgxFDQEgAkHIAGogFxCGBiACIBVBf2o2AmALIAIgDDYCZAJAIAIoAtAEIgtFDQAgAigC1AQgC0EwbEEIEL4YCyACQcgCaiACKALMBCACKAJQa0EAIAwQ5QIgAiAjNwPYBCACQQE2AtAEIAJBATYC4AQgAiACQYgDaiACQagDaiACQdAEahDYAiIbIAIoAvgDajYC+AMgAigCqAQhByACKAKkBCEJIAJB8ARqIAJByAJqENQEAkACQAJAIAlFDQAgAigC+AQhCCACKAL0BCEODAELIAIoAvQEIQ4CQAJAAkAgAigC+AQiCEUNACAIQQNxIQoCQAJAIAhBBE8NAEEAIQ1CACEhDAELIAhBfHEhBkEAIQ1CACEhIA4hCwNAIAtB4ABqKQMAIAtBwABqKQMAIAtBIGopAwAgCykDACAhfHx8fCEhIAtBgAFqIQsgBiANQQRqIg1HDQALCwJAIApFDQAgDiANQQV0aiELIAohDQNAIAspAwAgIXwhISALQSBqIQsgDUF/aiINDQALCyACICE3A4AFIAIgDCkDACAjfCIiNwOIBSAhICJRDQEMEAsgAkIANwOABSACIAwpAwAgI3wiITcDiAUgIUIAUg0PQQAhDQwBCyAIQQNxIRkCQAJAIAhBBE8NAEEAIQ1BACEGDAELIA5B8ABqIQsgCEF8cSEPQQAhDUEAIQYDQCALKAIAIAtBYGooAgAgC0FAaigCACALQaB/aigCACANampqaiENIAtBgAFqIQsgDyAGQQRqIgZHDQALCyAZRQ0AIAZBBXQgDmpBEGohCwNAIAsoAgAgDWohDSALQSBqIQsgCkF/aiIKDQALCyACIAwoAhAgG2oiCzYCiAUgAiANNgKABSANIAtHDQELIAIoAvAEIQsgDiAIENEHIAAgGyAJayAAKAJoajYCaCACKAJgIQ0gAiAINgLQAiACIA42AswCIAIgCzYCyAIgFyANIA1BAWogAkHIAmoQlAUgACAAKAJsQQFqNgJsIAdFDQMCQAJAIAAoAlgiC0GAgICAeEYNACANIAhqIQkgAkHkAmohGwwBCwNADAALCwNAAkACQAJAAkACQCALQYCAgIB4Rg0AIBchDiAJIQwgACgCYCILDQEMAgsDQAwACwsDQCALQThsIQggDigCLCELQQAhCkEAIQYCQANAAkAgC0EYaigCACAKaiINIAxLIA0gDElrQf8BcSIPQf8BRg0AAkAgDw4CAwADCyAMIAprIQwgCyEOIAtBMGooAgAiC0UNBAwDCyANQQFqIQogC0E4aiELIAZBAWohBiAIQUhqIghFDQUMAAsLCyAGIQwgBiAOKAIkTw0CDAELIAwgDigCJE8NAQsCQCAHIA4oAiAgDEEFdGoiDSgCECILTw0AIAJByAJqIA0gB0IAEL8GIAAgACgCaCACKALgAms2AmggAigC1AIgAigC2AIQ0QcgFyAJIAlBAWogAkHQAmoQlAUMBgsgACAAKAJoIAtrNgJoIAJByAJqIBcgCRD7CCACKALkAiINIA0oAgAiDUF/ajYCAAJAIA1BAUcNACAbEKATCyAHIAtrIQcLIAdFDQQgACgCWCELDAALCyACQQA2AtAEQQAgAkGABWogAkGIBWogAkHQBGpBlJHCABCoFAALQbCCwgAQ2hgAC0GE/8EAQShBrP/BABDOEwALAkACQAJAAkACQCAAKAJYQYCAgIB4Rg0AIAAoAkgNAQsgACgCaA0BELEaQRRBBBD7FyILRQ0CIAtBADYCECALQoCAgIAQNwIIIAtCgYCAgBA3AgAgAkHQAmpCADcDACACQdgCakIANwMAIAJB4AJqQQA2AgAgAiALNgLkAiACQgA3A8gCIBdBACAAKAJIIAAoAlhBgICAgHhGGyACQcgCahCfBAsgAiAAKAKoATYCzAQCQCAAKAKYAUGAgICAeEYNACAAKAKIASIcRQ0AIABB8ABqIRUgASkDQCEjIAJBADYCUCACQoCAgICAATcCSCACIAJBzARqNgJUIAAoApwBIQ0gACgCoAEhDiAAKAKQASEMIAAoApQBIQogAkHIAGpB7IHCABCEDiACKAJMIgtCADcDECALIAwgCkEFdGo2AgwgCyAMNgIIIAsgDSAOQThsajYCBCALIA02AgAgC0EANgIoIAtBGGpCADcDACALQSBqQQA2AgAgAkEBNgJQQQEhDAJAAkACQANAAkAgAigCTCIPIAxBMGwiB2oiDUFQaiIKKAIAIgsgDUFUaigCAEYNACACKAJUIQkgCiALQThqNgIAIA1BeGoiBigCACEIIAJByAJqQQhqIhkgDUFsaiIKQQhqKAIANgIAIAYgCCALKAIYajYCACANQWhqIgYgCygCCCAGKAIAIhpqIhs2AgAgDUFgaiIGIAspAwAgBikDACIifDcDACAKKQIAISEgDUFwaiIGIAsoAhAiDSAGKAIAIgYgDSAGSxsgDSAGGzYCACAKIAsoAgwiDSAKKAIAIgYgDSAGSRsgBiANGyANIAYbNgIAIAIgITcDyAIgCSgCACAbTw0AIAJB8ARqQQhqIg0gGSgCADYCACACIAIpA8gCNwPwBCALKAIgIgogCygCJEEFdGohBiALKAIsIgkgCygCMEE4bGohGwJAIAwgAigCSEcNACACQcgAakGoyMEAEIQOIAIoAkwhDwsgDyAHaiILIBo2AhggCyAiNwMQIAsgBjYCDCALIAo2AgggCyAbNgIEIAsgCTYCACALIAIpA/AENwIcIAsgCDYCKCALQSRqIA0oAgA2AgAgAiAMQQFqIgw2AlAgDA0BDAILIAJByAJqIAJByABqEOcJAkAgAigC5AIiDEUNACACQdAEakEYaiACQcgCakEYaigCADYCACACQdAEakEQaiACQcgCakEQaikDADcDACACQdAEakEIaiACQcgCakEIaikDADcDACACIAIpA8gCNwPQBAwD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IGoiAiAlNgIYIAIgLTcDECACICM2AgwgAiAhNgIIIAIgJjYCBCACICI2AgAgAiADKQOwBDcCHCACICQ2AiggAkEkaiAaKAIANgIAIAMgHUEBaiIdNgIQIB0NAQwCCyADQYgCaiADQQhqEOcJAkAgAygCpAIiHUUNACADQYgEakEYaiADQYgCakEYaigCADYCACADQYgEakEQaiADQYgCakEQaikDADcDACADQYgEakEIaiAMKQMANwMAIAMgAykDiAI3A4gEDAkLIAMoAhAiHQ0ACwsgByECIBwNBAwFC0EEQRQQ2BkAC0G8/8EAQR9B3P/BABDOEwALQdD+wQBBI0H0/sEAEM4TAAtBhP/BAEEoQaz/wQAQzhMACwNAIAIoAiwgHEE4bGoiGkFIaiECIBpBeGooAgAiHA0ACwsgAigCJCIaRQ0BIAIoAiAgGkEFdGpBYGoiHUUNASADQYgEaiAHEIYGIAMgC0F/ajYCoAQLIAMgHTYCpAQCQCADKAIIIgJFDQAgAygCDCACQTBsQQgQvhgLIANBCGogAygCrAQgAygCkARrQQAgHRCBAyADICw3A5ACIANBATYCmAIgA0EBQQIgLqcbNgKIAiADIBAgESADQYgCahDmAiImIAMoArgBajYCuAEgAygC6AEhICADKALkASEiAkBB6AFFDQAgA0GIAmogA0EIakHoAfwKAAALIANBsARqIANBiAJqENsFAkACQAJAICJFDQAgAygCuAQhJCADKAK0BCEcDAELIAMoArQEIRwCQAJAAkAgAygCuAQiJEUNACAkQQNxISECQAJAICRBBEkiH0UNAEEAIRpCACErDAELICRBfHEhI0EAIRpCACErIBwhAgNAIAJB4ABqKQMAIAJBwABqKQMAIAJBIGopAwAgAikDACArfHx8fCErIAJBgAFqIQIgIyAaQQRqIhpHDQALCwJAICFFDQAgHCAaQQV0aiECICEhGgNAIAIpAwAgK3whKyACQSBqIQIgGkF/aiIaDQALCyADICs3A8AEIAMgHSkDACItNwPIBCArIC1RDQEMCQsgA0IANwPABCADIB0pAwAiKzcDyAQgK0IAUg0IQQAhGgwBCyAkQQNxISVBACEaQQAhIwJAIB8NACAcQfAAaiECICRBfHEhH0EAIRpBACEjA0AgAigCACACQWBqKAIAIAJBQGooAgAg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ICNBAWohIyAkQUhqIiRFDQUMAAsLCyAjIR0gIyAcKAIkTw0CDAELIB0gHCgCJE8NAQsCQCAgIBwoAiAgHUEFdGoiGigCECICTw0AIANBiAJqIBogIEIAEL8GIAAgACgCuAggAygCoAJrNgK4CCADKAKUAiADKAKYAhDRByAGICIgIkEBaiAMEJQFDAkLIAAgACgCuAggAms2ArgIIANBiAJqIAYgIhD7CCADKAKkAiIaIBooAgAiGkF/ajYCAAJAIBpBAUcNACANEKATCyAgIAJrISALICBFDQcgACgCqAghAgwACwsgA0EANgKIBEEAIANBwARqIANByARqIANBiARqQZSRwgAQqBQAC0GwgsIAENoYAAtBhP/BAEEoQaz/wQAQzhMAC0HQ/sEAQSNB9P7BABDOEwALQbz/wQBBH0Hc/8EAEM4TAAtBBEEUENgZAAsCQAJAAkACQCAAKAKoCEGAgICAeEYNACAAKAKYCA0BCyAAKAK4CA0CELEaQRRBBBD7FyICRQ0BIAJBADYCECACQoCAgIAQNwIIIAJCgYCAgBA3AgAgDEIANwMAIANBiAJqQRBqQgA3AwAgA0GIAmpBGGpBADYCACADIAI2AqQCIANCADcDiAIgBkEAIAAoApgIIAAoAqgIQYCAgIB4RhsgA0GIAmoQnwQLIAQgFigCAEEAEP4BDAMLQQRBFBDYGQALQbz/wQBBH0Hc/8EAEM4TAAsgA0EANgKIBEEAIANBwARqIANByARqIANBiARqQYSRwgAQkxQAC0EBIQIgFyEaIBshCyABIBtHDQALCyADQdAEaiQADwsgA0EANgKIAkEAIANBwARqIANByARqIANBiAJqQYSRwgAQkxQACyADQQA2AogCQQAgA0HABGogA0HIBGogA0GIAmpBhJHCABCTFAALIANBADYCCEEAIANBwARqIANByARqIANBCGpBhJHCABCTFAALIANBADYCCEEAIANBwARqIANByARqIANBCGpBhJHCABCTFAAL1WUCIX8EfiMAQZAwayIDJAACQAJAAkACQCABKAJ8IgQgASgCeCIFSQ0AAkAgBCABKAI4IgZLDQAgASgCNCEHIANBDGogASgCBCABKAIIEMoJIAEoAiAiCK1CDH4iJKchCUEAIQYCQCAkQiCIpw0AIAlB/P///wdLDQACQCAJDQBBBCEKDAULIAEoAhwhARCxGkEEIQYgCUEEEPsXIgpFDQAgCEUNBEEAIQYgCCELAkADQCAJIAZGDQEgASgCCCEMIAogBmoiDSABKQIANwIAIA1BCGogDDYCACAGQQxqIQYgAUEMaiEBIAtBf2oiCw0ACwsQsRoCQCAJQQQQ+xciDkUNACAIQQFxIQ9BACEMAkAgCEEBRg0AIAhBfnEhDUEAIQtBACEMA0AgDiALaiIBQQRqIAogC2oiBigCADYCACABQQhqIAZBBGooAgA2AgAgASAGQQhqKAIANgIAIAFBFGogBkEQaigCADYCACABQRBqIAZBDGooAgA2AgAgAUEMaiAGQRRqKAIANgIAIAtBGGohCyANIAxBAmoiDEcNAAsLAkAgD0UNACAOIAxBDGwiBmoiASAKIAZqIgYoAgQ2AgggASAGKAIANgIEIAEgBigCCDYCAAsCQCAIQQFGDQACQCAIQRVJDQAgDiAIIANBmCdqENQNDAELIA4gCBC9DgsQsRoCQEGMAUEEEPsXIgFFDQAgAUEAOwGKASABQQA2AlggDiAJaiEQQQAhEUEAIQ0gDiESQQIhEyABIQYDQAJAAkAgE0ECRg0AICUhJCAVIRQgE0EBcQ0BDAgLIBIgEEYNByASKQIEISQgEigCACEUIBJBDGohEgsCQAJAIBIgEEcNACAQIRJBACETDAELIBJBDGohCyASKQIEISVBASETAkAgFCASKAIAIhVGDQAgCyESDAELAkACQCALIBBGDQAgEkEYaiELIBIpAhAhJgJAIBQgEigCDCIVRg0AICUhJCAmISUgCyESDAMLAkAgCyAQRw0AICYhJCAmISUMAgsgEkEkaiELIBIpAhwhJwJAIBQgEigCGCIVRg0AICYhJCAnISUgCyESDAMLAkAgCyAQRw0AICchJCAnISUMAgsCQANAIAtBBGopAgAhJSAUIAsoAgAiFUcNASAlIScgC0EMaiILIBBGDQIMAAsLIAtBDGohEiAnISQMAgsgJSEkCyAQIRIgFCEVQQAhEwsgJEIgiKchFiAkpyEXAkACQAJAAkACQCAGLwGKASILQQtJDQBBACEPAkADQAJAIAYoAlgiBg0AELEaQbwBQQQQ+xciGEUNBCAYIAE2AowBIBhBADsBigEgGEEANgJYIAFBADsBiAEgASAYNgJYIBghBiANQQFqIg0hDwwCCyAPQQFqIQ8gBi8BigFBCksNAAsgASEYCxCxGkGMAUEEEPsXIgtFDQIgC0EAOwGKASALQQA2AlggD0F/aiIMRQ0EA0AQsRpBvAFBBBD7FyIBRQ0EIAEgCzYCjAEgAUEAOwGKASABQQA2AlggC0EAOwGIASALIAE2AlggASELIAxBf2oiDEUNBQwACwsgBiALQQFqOwGKASAGIAtBAnRqIBQ2AlwgBiALQQN0aiILIBY2AgQgCyAXNgIAIBFBAWohEQwEC0EEQbwBENgZAAtBBEGMARDYGQALQQRBvAEQ2BkACwJAIAYvAYoBIgFBC08NACAGIAFBAWoiDDsBigEgBiABQQJ0aiAUNgJcIAYgAUEDdGoiASAWNgIEIAEgFzYCACAGIAxBAnRqIAs2AowBIAsgDDsBiAEgCyAGNgJYAkAgDw0AIBghASARQQFqIREMAgsCQAJAIA9BA3EiCw0AIA8hAQwBCyAPIQEDQCABQX9qIQEgBiAGLwGKAUECdGooAowBIQYgC0F/aiILDQALCwJAIA9BBE8NACAYIQEgEUEBaiERDAILA0AgBiAGLwGKAUECdGooAowBIgYgBi8BigFBAnRqKAKMASIGIAYvAYoBQQJ0aigCjAEiBiAGLwGKAUECdGooAowBIQYgAUF8aiIBDQALIBghASARQQFqIREMAQsLQdDvwQBBIEHA8MEAEM4TAAtBBEGMARDYGQALQQQgCUGEycEAEOYWAAsgBiAJQZCZwgAQ5hYACyAEIAZBuPTCABDYGAALIAUgBEG49MIAENkYAAsgDiAJQQQQvhgCQCANDQBBACENDAILIAEhCyANIQwDQAJAAkACQAJAIAsvAYoBIgZFDQAgCyAGQX9qIhdBAnRqIhIoApABIgYvAYoBIg9BBU8NA0EFIA9rQf//A3EiECASKAKMASIULwGKASIVSw0BIBQgFSAQayITOwGKASAGQQU7AYoBIBBBAnQhFiAGQdwAaiEYAkAgD0ECdCIORQ0AIBggFmogGCAO/AoAAAsCQCAPQQN0Ig9FDQAgBiAQQQN0aiAGIA/8CgAACyAVIBNBAWoiCWsiDyAQQX9qRw0CIAlBAnQhGSAUQdwAaiEQAkAgD0ECdCIVRQ0AIBggECAZaiAV/AoAAAsCQCAPQQN0Ig9FDQAgBiAUIAlBA3RqIA/8CgAACyASKAJcIQkgFCATQQN0aikCACEkIBIgECATQQJ0aigCADYCXCALIBdBA3RqIgspAgAhJSALICQ3AgAgGCAVaiAJNgIAIAYgD2ogJTcCACAMQQFGDQYgBkGMAWohCwJAIA5BBGoiD0UNACALIBZqIAsgD/wKAAALAkAgFkUNACALIBQgGWpBjAFqIBb8CgAACyAGKAKMASILQQA7AYgBIAsgBjYCWCAGKAKQASILQQE7AYgBIAsgBjYCWCAGKAKUASILQQI7AYgBIAsgBjYCWCAGKAKYASILQQM7AYgBIAsgBjYCWCAGKAKcASILQQQ7AYgBIAsgBjYCWCAGKAKgASILQQU7AYgBIAsgBjYCWAwDC0GG78EAQRlBoO/BABDOEwALQcDzwQBBJ0Ho88EAEM4TAAtB3PHBAEEoQYTywQAQzhMACyAGIQsgDEF/aiIMRQ0CDAALC0EAIQFBACERCyADQZgnakEhIAEgDSAHIAVqIhggBCAFayITIAMoAhQiD0EAEPABAkACQAJAAkACQAJAAkACQCADKALAJyIQQYGAgIB4Rw0AIANBkAtqQQhqIANBmCdqQQhqKAIANgIAIAMgAykDmCc3A5ALIANBgYCAgHg2AogWDAELIANBwC5qQSBqIgsgA0GYJ2pBIGoiDCkDACIkNwMAIANBwC5qQRhqIhIgA0GYJ2pBGGoiFCkDACIlNwMAIANBwC5qQRBqIhYgA0GYJ2pBEGoiCSkDACInNwMAIANBwC5qQQhqIg4gA0GYJ2pBCGoiBikDACImNwMAIANBsCFqQTRqIANBmCdqQTRqIhkpAgA3AgAgA0GwIWpBPGogA0GYJ2pBPGoiBCgCADYCACADQbAhakEIaiAmNwMAIANBsCFqQRBqICc3AwAgA0GwIWpBGGogJTcDACADQbAhakEgaiAkNwMAIAMgAykDmCciJDcDwC4gAyADKQLEJzcC3CEgAyAkNwOwISADIBA2AtghIANBmCdqQSMgASANIBggEyADKALoISIVEM4CAkACQAJAIAMoAsAnIhdBgYCAgHhHDQAgA0GQC2pBCGogBigCADYCACADIAMpA5gnNwOQCyADQYGAgIB4NgKIFgwBCyALIAwpAwAiJDcDACASIBQpAwAiJTcDACAWIAkpAwAiJzcDACAOIAYpAwAiJjcDACADQfAhakE0aiAZKQIANwIAIANB8CFqQTxqIAQoAgA2AgAgA0HwIWpBCGogJjcDACADQfAhakEQaiAnNwMAIANB8CFqQRhqICU3AwAgA0HwIWpBIGogJDcDACADIAMpA5gnIiQ3A8AuIAMgAykCxCc3ApwiIAMgJDcD8CEgAyAXNgKYIiADQZgnakEBIAEgDSAYIBMgDyAVEPABAkACQCADKALAJyIOQYGAgIB4Rw0AIANBkAtqQQhqIANBmCdqQQhqKAIANgIAIAMgAykDmCc3A5ALIANBgYCAgHg2AogWDAELIANBwC5qQSBqIANBmCdqQSBqKQMAIiQ3AwAgA0HALmpBGGogA0GYJ2pBGGopAwAiJTcDACADQcAuakEQaiADQZgnakEQaikDACInNwMAIANBwC5qQQhqIANBmCdqQQhqKQMAIiY3AwAgA0GwImpBNGogA0GYJ2pBNGopAgA3AgAgA0GwImpBPGogA0GYJ2pBPGooAgA2AgAgA0GwImpBCGogJjcDACADQbAiakEQaiAnNwMAIANBsCJqQRhqICU3AwAgA0GwImpBIGogJDcDACADIAMpA5gnIiQ3A8AuIAMgAykCxCc3AtwiIAMgJDcDsCIgAyAONgLYIgJAAkACQAJAAkAgAUUNACANIQkgASEWA0AgFkF4aiESIBZB3ABqIQsgFi8BigEiGUECdCEGQX8hDAJAAkADQAJAIAYNACAZIQwMAgsgCygCACEUIAxBAWohDCASQQhqIRIgBkF8aiEGIAtBBGohCyAUQfcBcSIUQQJJIBRBAktrQf8BcSIUQQFGDQALIBRFDQELIAlFDQIgCUF/aiEJIBYgDEECdGooAowBIRYMAQsLIBJBBGooAgAiBiASKAIAIgxJDQsgBiATSw0KIANBgC5qQShqQgA3AwAgA0GALmpBMGpCADcDACADQYAuakE4akEANgIAIANCADcDoC4gA0IANwOALhCxGkEgQQgQ+xciC0UNCSALQQg6AAAgA0HALmpBCGpCADcDACADQcAuakEQakIANwMAIANBwC5qQRhqQgA3AwAgA0HALmpBIGpCADcDACADQcAuakEoakIANwMAIANBwC5qQTBqQgA3AwAgA0EBNgKELyADIAs2AoAvIANCADcDwC4gA0EBOgCILyADQsCAgIAQNwP4LiADQZAvakEoakIANwMAIANBkC9qQTBqQgA3AwAgA0GQL2pBOGpBADYCACADQgA3A7AvIANCADcDkC8gA0GYJ2ogA0GALmogGCAMaiILIAYgDGsiEhCiAyADKQOgJyEkIAMoApwnIQwCQAJAAkAgAygCmCciBkEERg0AQb0BrUIghiADQbAjaq2EISUgA0HQL2pBCGohFANAIAZBA0YNAiADIAMpA6gnNwPgLyADICQ3A9gvIAMgDDYC1C8gAyAGNgLQLwJAIAZBAkYNACAUIAwgBkEBcRsiBikDAEL/////D1gNACADIAY2ArAjIANBATYCnCcgA0HghcMANgKYJyADQgE3AqQnIAMgJTcD8CMgAyADQfAjajYCoCcgA0GwJGogA0GYJ2oQuAkgAygCsCQiDEGAgICAeEYNACAMQYaAgIB4Rg0AIAMpArQkISQMAgsCQCADKAKsLiADKAK8L2tBwABJDQAgCyASIANBwC5qIANBkC9qIANBgC5qENsEIANBwC5qEL4NIANBkC9qQThqIANBgC5qQThqKQMANwMAIANBkC9qQTBqIANBgC5qQTBqKQMANwMAIANBkC9qQShqIANBgC5qQShqKQMANwMAIANBkC9qQSBqIANBgC5qQSBqKQMANwMAIANBkC9qQRhqIANBgC5qQRhqKQMANwMAIANBkC9qQRBqIANBgC5qQRBqKQMANwMAIANBkC9qQQhqIANBgC5qQQhqKQMANwMAIAMgAykDgC43A5AvCyADQZgnaiADQYAuaiALIBIQogMgAykDoCchJCADKAKcJyEMIAMoApgnIgZBBEcNAAsLIAMoAoAvIRQCQCADKAKELyILRQ0AIBQhBgNAAkAgBi0AAEEGRw0AIAZBBGooAgAiEkGAgICAeEYNACASRQ0AIAZBCGooAgAgEkEBEL4YCyAGQSBqIQYgC0F/aiILDQALCyADKAL8LiIGRQ0BIBQgBkEFdEEIEL4YDAELIAsgEiADQcAuaiADQZAvaiADQYAuahDbBAJAQdAARQ0AIANBmCdqIANBwC5qQdAA/AoAAAsgAygCqC4hBiADQbAkaiADQZgnahCEAyADKAK0JCADKAK4JBDRByADQdAvaiADQbAkahD1BiADQfAkakEQaiILQQA2AgAgA0GwJWpBCGoiEiADQdAvakEUaikCADcDACADQbAlakEQaiIUIANB0C9qQRxqKQIANwMAIANByCVqIhYgA0HQL2pBJGooAgA2AgAgAyAGNgKIMCADQfAkakEIaiIJIANB0C9qQTRqKQIANwMAIANBADYCjDAgAyADKQLcLzcDsCUgAyADKQL8LzcD8CQgAygC0C8hDCADKQLULyEkIAMoAvgvIgZBgYCAgHhHDQMLIAMgJDcCtCYgAyAMNgKwJgwBCyADQbAmaiAVEKYFIAMoAtgmIgZBgYCAgHhHDQILIANBkAtqQQhqIANBsCZqQQhqKAIANgIAIAMgAykDsCY3A5ALIANBgYCAgHg2AogWDAILIANBsCZqQSRqIBYoAgA2AgAgA0GwJmpBHGogFCkDADcCACADQbAmakEUaiASKQMANwIAIANBsCZqQTRqIAkpAwA3AgAgA0HsJmogCygCADYCACADIAMpA7AlNwK8JiADIAMpA/AkNwLcJiADICQ3ArQmIAMgDDYCsCYLIANB8CVqQSBqIANBsCZqQSBqKQMAIiQ3AwAgA0HwJWpBGGogA0GwJmpBGGopAwAiJTcDACADQfAlakEQaiADQbAmakEQaikDACInNwMAIANB8CVqQQhqIANBsCZqQQhqKQMAIiY3AwAgA0HwImpBNGogA0GwJmpBNGopAgA3AgAgA0HwImpBPGogA0GwJmpBPGooAgA2AgAgA0HwImpBCGogJjcDACADQfAiakEQaiAnNwMAIANB8CJqQRhqICU3AwAgA0HwImpBIGogJDcDACADIAMpA7AmIiQ3A/AlIAMgAykC3CY3ApwjIAMgJDcD8CIgAyAGNgKYIyADQZgnakERIAEgDSAYIBMgDyAVEPABAkACQCADKALAJyILQYGAgIB4Rw0AIANBkAtqQQhqIANBmCdqQQhqKAIANgIAIAMgAykDmCc3A5ALIANBgYCAgHg2AogWDAELIANBwC5qQSBqIANBmCdqQSBqKQMAIiQ3AwAgA0HALmpBGGogA0GYJ2pBGGopAwAiJTcDACADQcAuakEQaiADQZgnakEQaikDACInNwMAIANBwC5qQQhqIANBmCdqQQhqKQMAIiY3AwAgA0GwI2pBNGogA0GYJ2pBNGopAgA3AgAgA0GwI2pBPGogA0GYJ2pBPGooAgA2AgAgA0GwI2pBCGogJjcDACADQbAjakEQaiAnNwMAIANBsCNqQRhqICU3AwAgA0GwI2pBIGogJDcDACADIAMpA5gnIiQ3A8AuIAMgAykCxCc3AtwjIAMgJDcDsCMgAyALNgLYIyADQZgnakETIAEgDSAYIBMgFRDOAgJAAkAgAygCwCciDEGBgICAeEcNACADQZALakEIaiADQZgnakEIaigCADYCACADIAMpA5gnNwOQCyADQYGAgIB4NgKIFgwBCyADQcAuakEgaiIWIANBmCdqQSBqIgkpAwAiJDcDACADQcAuakEYaiIZIANBmCdqQRhqIgQpAwAiJTcDACADQcAuakEQaiIFIANBmCdqQRBqIgcpAwAiJzcDACADQcAuakEIaiIaIANBmCdqQQhqIhIpAwAiJjcDACADQfAjakE0aiADQZgnakE0aiIbKQIANwIAIANB8CNqQTxqIANBmCdqQTxqIhwoAgA2AgAgA0HwI2pBCGogJjcDACADQfAjakEQaiAnNwMAIANB8CNqQRhqICU3AwAgA0HwI2pBIGogJDcDACADIAMpA5gnIiQ3A8AuIAMgAykCxCc3ApwkIAMgJDcD8CMgAyAMNgKYJCADQZgnakEVIAEgDSAYIBMgFRCuAwJAAkAgAygCwCciFEGBgICAeEcNACADQZALakEIaiASKAIANgIAIAMgAykDmCc3A5ALIANBgYCAgHg2AogWDAELIBYgCSkDACIkNwMAIBkgBCkDACIlNwMAIAUgBykDACInNwMAIBogEikDACImNwMAIANBsCRqQTRqIBspAgA3AgAgA0GwJGpBPGogHCgCADYCACADQbAkakEIaiAmNwMAIANBsCRqQRBqICc3AwAgA0GwJGpBGGogJTcDACADQbAkakEgaiAkNwMAIAMgAykDmCciJDcDwC4gAyADKQLEJzcC3CQgAyAkNwOwJCADIBQ2AtgkIANBmCdqQTQgASANIBggEyAVEPkBAkACQCADKALAJyISQYGAgIB4Rw0AIANBkAtqQQhqIANBmCdqQQhqKAIANgIAIAMgAykDmCc3A5ALIANBgYCAgHg2AogWDAELIANBwC5qQSBqIhkgA0GYJ2pBIGoiBCkDACIkNwMAIANBwC5qQRhqIgUgA0GYJ2pBGGoiBykDACIlNwMAIANBwC5qQRBqIhogA0GYJ2pBEGoiGykDACInNwMAIANBwC5qQQhqIhwgA0GYJ2pBCGoiFikDACImNwMAIANB8CRqQTRqIANBmCdqQTRqIh0pAgA3AgAgA0HwJGpBPGogA0GYJ2pBPGoiHigCADYCACADQfAkakEIaiAmNwMAIANB8CRqQRBqICc3AwAgA0HwJGpBGGogJTcDACADQfAkakEgaiAkNwMAIAMgAykDmCciJDcDwC4gAyADKQLEJzcCnCUgAyAkNwPwJCADIBI2ApglIANBmCdqIAEgDSAYIBMgFRDzAQJAAkAgAygCwCciCUGBgICAeEcNACADQZALakEIaiAWKAIANgIAIAMgAykDmCc3A5ALIANBgYCAgHg2AogWDAELIBkgBCkDACIkNwMAIAUgBykDACIlNwMAIBogGykDACInNwMAIBwgFikDACImNwMAIANBsCVqQTRqIB0pAgA3AgAgA0GwJWpBPGogHigCADYCACADQbAlakEIaiAmNwMAIANBsCVqQRBqICc3AwAgA0GwJWpBGGogJTcDACADQbAlakEgaiAkNwMAIAMgAykDmCciJDcDwC4gAyADKQLEJzcC3CUgAyAkNwOwJSADIAk2AtglIANBmCdqQaUBIAEgDSAYIBMgFRCuAwJAAkAgAygCwCciFkGBgICAeEcNACADQZALakEIaiADQZgnakEIaigCADYCACADIAMpA5gnNwOQCyADQYGAgIB4NgKIFgwBCyADQcAuakEgaiIFIANBmCdqQSBqIgcpAwAiJDcDACADQcAuakEYaiIaIANBmCdqQRhqIhspAwAiJTcDACADQcAuakEQaiIcIANBmCdqQRBqIh0pAwAiJzcDACADQcAuakEIaiIeIANBmCdqQQhqIhkpAwAiJjcDACADQfAlakE0aiADQZgnakE0aiIfKQIANwIAIANB8CVqQTxqIANBmCdqQTxqIiAoAgA2AgAgA0HwJWpBCGogJjcDACADQfAlakEQaiAnNwMAIANB8CVqQRhqICU3AwAgA0HwJWpBIGogJDcDACADIAMpA5gnIiQ3A8AuIAMgAykCxCc3ApwmIAMgJDcD8CUgAyAWNgKYJiADQZgnakGUASABIA0gGCATIBUQ+QECQAJAIAMoAsAnIgRBgYCAgHhHDQAgA0GQC2pBCGogGSgCADYCACADIAMpA5gnNwOQCyADQYGAgIB4NgKIFgwBCyAFIAcpAwAiJDcDACAaIBspAwAiJTcDACAcIB0pAwAiJzcDACAeIBkpAwAiJjcDACADQbAmakE0aiAfKQIANwIAIANBsCZq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8CZqQSBqIgYgA0GYJ2pBIGoiCykDADcDACADQfAmakEYaiADQZgnakEYaiIMKQMAIiQ3AwAgA0HwJmpBEGogA0GYJ2pBEGoiEikDACIlNwMAIANB8CZqQQhqIANBmCdqQQhqIhQpAwAiJzcDACADQYQSaiADQcwnaikCADcCACADQYwSaiADQdQnaigCADYCACADIAMpA5gnIiY3A/AmIAMgAykCxCc3AvwRIANB8C1qICQ3AwAgA0HoLWogJTcDACADQeAtaiAnNwMAIANB+C1qIAYpAwA3AwAgAyAmNwPYLSADQZATahCrAyADQZgnakE4aiADQbAhakE4aikDADcDACADQZgnakEwaiADQbAhakEwaikDADcDACADQZgnakEoaiADQbAhakEoaikDADcDACALIANBsCFqQSBqKQMANwMAIAwgA0GwIWpBGGopAwA3AwAgEiADQbAhakEQaikDADcDACAUIANBsCFqQQhqKQMANwMAIANB4CdqIANB8CFqQQhqKQMANwMAIANB6CdqIANB8CFqQRBqKQMANwMAIANB8CdqIANB8CFqQRhqKQMANwMAIANB+CdqIANB8CFqQSBqKQMANwMAIANBgChqIANB8CFqQShqKQMANwMAIANBiChqIANB8CFqQTBqKQMANwMAIANBkChqIANB8CFqQThqKQMANwMAIAMgAykDsCE3A5gnIAMgAykD8CE3A9gnIANB0ChqIANBsCJqQThqKQMANwMAIANByChqIANBsCJqQTBqKQMANwMAIANBwChqIANBsCJqQShqKQMANwMAIANBuChqIANBsCJqQSBqKQMANwMAIANBsChqIANBsCJqQRhqKQMANwMAIANBqChqIANBsCJqQRBqKQMANwMAIANBoChqIANBsCJqQQhqKQMANwMAIANBkClqIANB8CJqQThqKQMANwMAIANBiClqIANB8CJqQTBqKQMANwMAIANBgClqIANB8CJqQShqKQMANwMAIANB+ChqIANB8CJqQSBqKQMANwMAIANB8ChqIANB8CJqQRhqKQMANwMAIANB6ChqIANB8CJqQRBqKQMANwMAIANB4ChqIANB8CJqQQhqKQMANwMAIAMgAykDsCI3A5goIAMgAykD8CI3A9goIANB0ClqIANBsCNqQThqKQMANwMAIANByClqIANBsCNqQTBqKQMANwMAIANBwClqIANBsCNqQShqKQMANwMAIANBuClqIANBsCNqQSBqKQMANwMAIANBsClqIANBsCNqQRhqKQMANwMAIANBqClqIANBsCNqQRBqKQMANwMAIANBoClqIANBsCNqQQhqKQMANwMAIAMgAykDsCM3A5gpIANBkCpqIANB8CNqQThqKQMANwMAIANBiCpqIANB8CNqQTBqKQMANwMAIANBgCpqIANB8CNqQShqKQMANwMAIANB+ClqIANB8CNqQSBqKQMANwMAIANB8ClqIANB8CNqQRhqKQMANwMAIANB6ClqIANB8CNqQRBqKQMANwMAIANB4ClqIANB8CNqQQhqKQMANwMAIAMgAykD8CM3A9gpIANB0CpqIANBsCRqQThqKQMANwMAIANByCpqIANBsCRqQTBqKQMANwMAIANBwCpqIANBsCRqQShqKQMANwMAIANBuCpqIANBsCRqQSBqKQMANwMAIANBsCpqIANBsCRqQRhqKQMANwMAIANBqCpqIANBsCRqQRBqKQMANwMAIANBoCpqIANBsCRqQQhqKQMANwMAIAMgAykDsCQ3A5gqIANBkCtqIANBgC5qQThqKQMANwMAIANBiCtqIANBgC5qQTBqKQMANwMAIANBgCtqIANBgC5qQShqKQMANwMAIANB+CpqIANBgC5qQSBqKQMANwMAIANB8CpqIANBgC5qQRhqKQMANwMAIANB6CpqIANBgC5qQRBqKQMANwMAIANB4CpqIANBgC5qQQhqKQMANwMAIAMgAykDgC43A9gqIANB0CtqIANBkC9qQThqKQMANwMAIANByCtqIANBkC9qQTBqKQMANwMAIANBwCtqIANBkC9qQShqKQMANwMAIANBuCtqIANBkC9qQSBqKQMANwMAIANBsCtqIANBkC9qQRhqKQMANwMAIANBqCtqIANBkC9qQRBqKQMANwMAIANBoCtqIANBkC9qQQhqKQMANwMAIAMgAykDkC83A5grIANBkCxqIANB0C9qQThqKQMANwMAIANBiCxqIANB0C9qQTBqKQMANwMAIANBgCxqIANB0C9qQShqKQMANwMAIANB+CtqIANB0C9qQSBqKQMANwMAIANB8CtqIANB0C9qQRhqKQMANwMAIANB6CtqIANB0C9qQRBqKQMANwMAIANB4CtqIANB0C9qQQhqKQMANwMAIAMgAykD0C83A9grIANB0CxqIANB8CRqQThqKQMANwMAIANByCxqIANB8CRqQTBqKQMANwMAIANBwCxqIANB8CRqQShqKQMANwMAIANBuCxqIANB8CRqQSBqKQMANwMAIANBsCxqIANB8CRqQRhqKQMANwMAIANBqCxqIANB8CRqQRBqKQMANwMAIANBoCxqIANB8CRqQQhqKQMANwMAIAMgAykD8CQ3A5gsIANBkC1qIANBsCVqQThqKQMANwMAIANBiC1qIANBsCVqQTBqKQMANwMAIANBgC1qIANBsCVqQShqKQMANwMAIANB+CxqIANBsCVqQSBqKQMANwMAIANB8CxqIANBsCVqQRhqKQMANwMAIANB6CxqIANBsCVqQRBqKQMANwMAIANB4CxqIANBsCVqQQhqKQMANwMAIAMgAykDsCU3A9gsIANB0C1qIANBwC5qQThqKQMANwMAIANByC1qIANBwC5qQTBqKQMANwMAIANBwC1qIANBwC5qQShqKQMANwMAIANBuC1qIANBwC5qQSBqKQMANwMAIANBsC1qIANBwC5qQRhqKQMANwMAIANBqC1qIANBwC5qQRBqKQMANwMAIANBoC1qIANBwC5qQQhqKQMANwMAIAMgAykDwC43A5gtIANByBJqIANB8CVqQThqKQMANwMAIANBwBJqIANB8CVqQTBqKQMANwMAIANBuBJqIANB8CVqQShqKQMANwMAIANBsBJqIANB8CVqQSBqKQMANwMAIANBqBJqIANB8CVqQRhqKQMANwMAIANBoBJqIANB8CVqQRBqKQMANwMAIANBmBJqIANB8CVqQQhqKQMANwMAIAMgAykD8CU3A5ASIANBiBNqIANBsCZqQThqKQMANwMAIANBgBNqIANBsCZqQTBqKQMANwMAIANB+BJqIANBsCZqQShqKQMANwMAIANB8BJqIANBsCZqQSBqKQMANwMAIANB6BJqIANBsCZqQRhqKQMANwMAIANB4BJqIANBsCZqQRBqKQMANwMAIANB2BJqIANBsCZqQQhqKQMANwMAIAMgAykDsCY3A9ASAkBB6AZFDQAgA0GQC2ogA0GYJ2pB6Ab8CgAACyADIBM2AvgRCyABRQ0FIBFFDQNBACEGA0ACQAJAIAZFDQAgASELIAYhAQwBC0EAIQsCQCANRQ0AIA0h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A2ogA0EwaiADQYABahCUASADKAK0AyIOQYCAgIB4Rg0EIAMoArwDIRQgAygCuAMhDwJAQfQARSINDQAgA0HAA2ogA0HAAWpB9AD8CgAACyADQcAEaiADQcADahCrBSADLQDABEEaRg0DQQAhFUEAIAMoArAEIAMoAqgEa0EFdiADLQCMBEEaRhtBACADKAKIBCADKAKABGtBBXYgAy0A5ANBGkYbaiIEQQMgBEEDSxtBAWoiEa1COH4iIqchBCAiQiCIpw0YIARB+P///wdLDRggBA0BQQghFkEAIREMAgsCQEH0AEUNACADQbgCaiADQcABakH0APwKAAALIANBwANqIANBuAJqEKsFAkAgAy0AwANBGkYNACAEQbB/aiEVIARBtH9qIQYgBEGsf2ohCQNAAkAgBigCACIFIAkoAgBHDQAgCUGk3cIAEIgOCyAVKAIAIAVBOGxqIgQgAykDwAM3AwAgBEEwaiADQcADakEwaikDADcDACAEQShqIANBwANqQShqKQMANwMAIARBIGogA0HAA2pBIGopAwA3AwAgBEEYaiADQcADakEYaikDADcDACAEQRBqIANBwANqQRBqKQMANwMAIARBCGogA0HAA2pBCGopAwA3AwAgBiAFQQFqNgIAIANBwANqIANBuAJqEKsFIAMtAMADQRpHDQALCyADQbgCahDoCiAUDRwgDUUNHCADKAKsASIERQ0cIAMoArABIARBARC+GAwcCxCxGkEIIRUgBEEIEPsXIhZFDRYLIBYgAykDwAQ3AwAgFkEwaiADQcAEakEwaikDADcDACAWQShqIANBwARqQShqKQMANwMAIBZBIGogA0HABGpBIGopAwA3AwAgFkEYaiADQcAEakEYaikDADcDACAWQRBqIANBwARqQRBqKQMANwMAIBZBCGogA0HABGpBCGopAwA3AwBBASEVIANBATYCvAQgAyAWNgK4BCADIBE2ArQEAkAgDQ0AIANBuAJqIANBwANqQfQA/AoAAAsgA0H4BGogA0G4AmoQqwUCQCADLQD4BEEaRg0AQQEhFUE4IQ0DQAJAIBUgAygCtARHDQAgA0G0BGogFUEAIAMoAoADIAMoAvgCa0EFdiADLQDcAkEaRhtBASADKAKoAyADKAKgA2tBBXZBAWogAy0AhANBGkYbakEIQTgQhwwgAygCuAQhFgsg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AgECAQICAgICAgICAgICAQIBAgICAgICAgICAgICAgICAgECAgICAgICAgICAgICAQICAgICAgICAgICAgICAgICAgIBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIBAQIBAgICAgICAgICAgICAgICAgEACyAEQaUBRw0BCyABKAIAIgUgAUEEaigCACINSQ0BCyABQQxqIgEgDkcNAQwCCwJAIAYgAigCsAlHDQAgAkGwCWogBkEBQQRBDBCHDCACKAK0CSEWCyAWIAZBDGxqIgkgBDYCCCAJIA02AgQgCSAFNgIAIAIgBkEBaiIGNgK4CSABQQxqIgEgDkcNAAsLIAIoArQJIRYgAigCsAkiDkGAgICAeEcNAQsgBiEOIBYhBEH888IAIRZBAyEGIARBCkcNBgsgAkGwCWpBACAdIBhrIgEgASAdSxsgGSAZICVBDGxqIhwQmwQgAigCuAkhASACKAK0CSEEAkACQAJAIAIoArAJIglBgICAgHhGDQACQCABRQ0AIAQhBQNAAkAgBSgCACINQYKAgIB4SA0AIA1FDQAgBUEEaigCACANQRRsQQQQvhgLIAVBGGohBSABQX9qIgENAAsLAkAgCUUNACAEIAlBGGxBBBC+GAsgAiAcNgK8DCACIBk2ArgMIAJBsAlqIAJBuAxqELMQIAIoArAJQQFHDQEgAigCvAwhBCACKAK4DCEFELEaQTBBBBD7FyIJRQ0GIAkgAikCtAk3AgAgCUEIaiACQbAJakEMaigCADYCAEEBIQEgAkEBNgLwAiACIAk2AuwCIAJBBDYC6AIgAiAENgKEBSACIAU2AoAFIAJBsAlqIAJBgAVqELMQAkAgAigCsAlBAUcNACACQbAJakEEaiEFQQwhBEEBIQEDQAJAIAEgAigC6AJHDQAgAkHoAmogAUEBQQRBDBCHDCACKALsAiEJCyAJIARqIg0gBSkCADcCACANQQhqIAVBCGooAgA2AgAgAiABQQFqIgE2AvACIARBDGohBCACQbAJaiACQYAFahCzECACKAKwCQ0ACwsgAigC7AIhBCACKALoAiIFQYCAgIB4Rw0CCyABIQUCQCAEQQpHDQBB//PCACEEQQchAQwCC0EHIQYgDkUNBiAWIA5BDGxBBBC+GAwGC0EEIQRBACEBQQAhBQsCQCAM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ACADQZDJAGogA0HIOmpBGGopAwA3AwAgA0GYyQBqIANByDpqQSBqKQMANwMAIANBoMkAaiADQcg6akEoaikDADcDACADQajJAGogA0HIOmpBMGopAwA3AwAgA0GwyQBqIANByDpqQThqKQMANwMAIAMgAykDsB83A7hIIAMgAykDyDo3A/hIIANB8MkAaiADQagtakE4aikDADcDACADQejJAGogA0GoLWpBMGopAwA3AwAgA0HgyQBqIANBqC1qQShqKQMANwMAIANB2MkAaiADQagtakEgaikDADcDACADQdDJAGogA0GoLWpBGGopAwA3AwAgA0HIyQBqIANBqC1qQRBqKQMANwMAIANBwMkAaiADQagtakEIaikDADcDACADQYDKAGogA0EgakEIaikDADcDACADQYjKAGogA0EgakEQaikDADcDACADQZDKAGogA0EgakEYaikDADcDACADQZjKAGogA0EgakEgaikDADcDACADQaDKAGogA0EgakEoaikDADcDACADQajKAGogA0EgakEwaikDADcDACADQbDKAGogA0EgakE4aikDADcDACADIAMpA6gtNwO4SSADIAMpAyA3A/hJIANBsB5qQQhqIANBlMYAakEIaigCADYCACADIAMpApRGNwOwHiADQagtaiABQdAcahCHCyADQSBqIAFBkBFqEHhBAiFHAkACQAJAIAEvAfAcIgZBAkcNACABKAKAHSFIIAEoAvwcIUkgASgC+BwhSiABKAL0HCEzIAEvAfIcIUsMAQsCQCAGQQFxRQ0AQQAhBiABKAL8HCIzQQBIDQIgASgC+BwhDAJAAkAgMw0AQQEhSgwBCxCxGkEBIQYgM0EBEPsXIkpFDQMLAkAgM0UNACBKIAwgM/wKAAALQQEhRyAzIUkMAQsgASgCgB0hSCABKAL8HCFJIAEoAvgcIUogASgC9BwhMyABLwHyHCFLIAYhRwsgA0GYyABqQRhqIANBgCtqQRhqKQMANwMAIANBmMgAakEQaiADQYArakEQaikDADcDACADQZjIAGpBCGogA0GAK2pBCGopAwA3AwAgAyADKQOAKzcDmEgCQEGAAkUNACADQZjGAGogA0G4yABqQYAC/AoAAAsgA0GIxgBqQQhqIANBsB5qQQhqKAIANgIAIANBqDpqQQhqIANBqC1qQQhqKQMANwMA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NwPQDSADIAQ2AvgNIAMgBzYC9A0gAyAENgLwDQJAIAsNACADQfwNaiADQYArakGEAvwKAAALIANBzBBqIBIoAgA2AgAgAyBFNgLAECADIFs3A7gQIAMgXDcDsBAgAyA0NgKsECADIDo2AqgQIAMgMjYCpBAgAyAbNgKgECADIFg3A5gQIAMgWjcDkBAgAyA4NgKMECADIDk2AogQIAMgKTYChBAgAyAxNgKAECADICg2AqwRIAMgGDYCqBEgAyAoNgKkESADICQ2AqARIAMgRjYCnBEgAyAkNgKYESADIC42ApQRIAMgQzYCkBEgAyBENgKMESADIC02AogRIAMgQTYChBEgAyBCNgKAESADICw2AvwQIAMgCDYC+BAgAyBANgL0ECADICs2AvAQIAMgBTYC7BAgAyA/NgLoECADICo2AuQQIAMgPTYC4BAgAyA3NgLcECADICc2AtgQIAMgEzYC1BAgAyAnNgLQECADIAMpA/AqNwLEEAJAIBQNACADQbARaiADQbAfakHAC/wKAAALIANBiB1qIBkpAwA3AwAgA0GAHWogGikDADcDACADQfgcaiAeKQMANwMAIAMgSDYCoB0gAyBJNgKcHSADIEo2ApgdIAMgMzYClB0gAyBLOwGSHSADIEc7AZAdIAMgAykDkB83A/AcAkBB3ABFDQAgA0GkHWogA0GwHmpB3AD8CgAACyADQSBqQQhqIANBuMgAakEIaikDADcDACADQSBqQRBqIANBuMgAakEQaikDADcDACADQSBqQRhqIANBuMgAakEYaikDADcDACADIA46AKgeIAMgDDYCoB4gAyAQNgKcHiADIA02ApgeIAMgLzYClB4gAyBNNgKQHiADIDs2AoweIAMgVTcChB4gAyAGNgKAHiADIAMpA7hINwMgIAIoAgBBgICAgHhGDRAgA0G4yABqIAIQqQcgAygCwEghBiADKAK8SCEMAkAgAygCuEgiCUGAgICAeEcNACAAQYCAgIB4NgL4HSAAIAY2AgQgACAMNgIAIANBIGoQhAwMEgtBACEPIAZBAEgNAgJAAkAgBg0AQQEhDQwBCxCxGkEBIQ8gBkEBEPsXIg1FDQMLAkAgBkUNACANIAwgBvwKAAALIAMgBjYCsC0gAyANNgKsLSADIAY2AqgtIANBlDpqIANBqC1qEIMPAkAgCUUNACAMIAlB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ARC+GAsgAkGgBWokAAufQwFffwJAIAJFDQAgASACQQZ0aiEDIAAoAhwhBCAAKAIYIQUgACgCFCEGIAAoAhAhByAAKAIMIQggACgCCCEJIAAoAgQhCiAAKAIAIQIDQCABKAAAIQtBACgC9MlFIQwgAUEEaigAACENIAFBPGooAAAhDiABQThqKAAAIQ8gAUE0aigAACEQIAFBMGooAAAhESABQSxqKAAAIRIgAUEoaigAACETIAFBJGooAAAhFCABQSBqKAAAIRUgAUEcaigAACEWIAFBGGooAAAhFyABQRRqKAAAIRggAUEQaigAACEZIAFBDGooAAAhGiABQQhqKAAAIRtBACgC+MlFIRxBACgC/MlFIR1BACgCgMpFIR5BACgChMpFIR9BACgCiMpFISBBACgCjMpFISFBACgCkMpFISJBACgClMpFISNBACgCmMpFISRBACgCnMpFISVBACgCoMpFISZBACgCpMpFISdBACgCqMpFIShBACgCrMpFISlBACgCsMpFISpBACgCtMpFIStBACgCuMpFISxBACgCvMpFIS1BACgCwMpFIS5BACgCxMpFIS9BACgCyMpFITBBACgCzMpFITFBACgC0MpFITJBACgC1MpFITNBACgC2MpFITRBACgC3MpFITVBACgC4MpFITZBACgC5MpFITdBACgC6MpFIThBACgC7MpFITlBACgC8MpFITpBACgC9MpFITtBACgC+MpFITxBACgC/MpFIT1BACgCgMtFIT5BACgChMtFIT9BACgCiMtFIUBBACgCjMtFIUFBACgCkMtFIUJBACgClMtFIUNBACgCmMtFIURBACgCnMtFIUVBACgCoMtFIUZBACgCpMtFIUdBACgCqMtFIUhBACgCrMtFIUlBACgCsMtFIUpBACgCtMtFIUtBACgCuMtFIUxBACgCvMtFIU1BACgCwMtFIU5BACgCxMtFIU9BACgCyMtFIVBBACgCzMtFIVFBACgC0MtFIVJBACgC1MtFIVNBACgC2MtFIVRBACgC3MtFIVVBACgC4MtFIVZBACgC5MtFIVdBACgC6MtFIVhBACgC7MtFIVkgAkEedyACQRN3cyACQQp3cyACIAogCXNxIAogCXFzaiAMIAcgBnEgBGogBSAHQX9zcWogB0EadyAHQRV3cyAHQQd3c2ogC0EYdCALQYD+A3FB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FA0ADAILCwJAICENACADISAMAQsCQAJAICFBB3EiEA0AIAMhICAhIQMMAQsgAyEgICEhAwNAIANBf2ohAyAgKAKQAiEgIBBBf2oiEA0ACwsgIUEISQ0AA0AgICgCkAIoApACKAKQAigCkAIoApACKAKQAigCkAIoApACISAgA0F4aiIDDQALC0EAIQMDQCAgKAIAIRAgIEHAAkGQAiADG0EEEL4YIANBf2ohAyAQISAgEA0ACwsgAkGIA2pBEGogAkEQaigCADYCACACQYgDakEIaiACQQhqKQMANwMAIAIgAikDADcDiANBASEcAkACQAJAIAIoAqwBIhBFDQAQsRogEEEBEPsXIhxFDQELQQAhAyACQQA2AvABIAIgHDYC7AEgAiAQNgLoASAJrSEtA0AgLadB/wBxIC1C/wBWIhBBB3RyIR4CQCACKALoASADRw0AIAJB6AFqIANBAUEBQQEQhwwgAigC7AEhHCACKALwASEDCyAtQgeIIS0gHCADaiAeOgAAIAIgA0EBaiIDNgLwASAQDQALAkAgCUUNACAJQQV0IRwgBCEQA0ACQCACKALoASADa0EfSw0AIAJB6AFqIANBIEEBQQEQhwwgAigC8AEhAwsgAigC7AEgA2oiHiAQKQAANwAAIB5BCGogEEEIaikAADcAACAeQRBqIBBBEGopAAA3AAAgHkEYaiAQQRhqKQAANwAAIAIgA0EgaiIDNgLwASAQQSBqIRAgHEFgaiIcDQALCyACQYgDaiACQegBahDtCiACKALwASEDICohLQNAIC2nQf8AcSAtQv8AViIeQQd0ciEcAkAgAigC6AEgA0cNACACQegBaiADQQFBAUEBEIcMIAIoAvABIQMLIC1CB4ghLSACKALsASIQIANqIBw6AAAgAiADQQFqIgM2AvABIB4NAAsgKyEtA0AgLadB/wBxIC1C/wBWIh5BB3RyIRwCQCACKALoASADRw0AIAJB6AFqIANBAUEBQQEQhwwgAigC7AEhECACKALwASEDCyAtQgeIIS0gECADaiAcOgAAIAIgA0EBaiIDNgLwASAeDQALICwhLQNAIC1CwAB8Qv8AViIeQQd0IC2nQf8AcXIhHAJAIAIoAugBIANHDQAgAkHoAWogA0EBQQFBARCHDCACKALwASEDCyAtQgeHIS0gAigC7AEiECADaiAcOgAAIAIgA0EBaiIDNgLwASAeDQALQQAgCiAMQYCAgIB4RhsiI60hLQNAIC2nQf8AcSAtQv8AViIeQQd0ciEcAkAgAigC6AEgA0cNACACQegBaiADQQFBAUEBEIcMIAIoAuwBIRAgAigC8AEhAwsgLUIHiCEtIBAgA2ogHDoAACACIANBAWoiAzYC8AEgHg0ACwJAICMgAigC6AEgA2tNDQAgAkHoAWogAyAjQQFBARCHDCACKALsASEQIAIoAvABIQMLAkAgI0UNACAQIANqQQEgCyAMQYCAgIB4RhsgI/wKAAALIAIgAyAjaiIDNgLwASAirSEtA0AgLadB/wBxIC1C/wBWIhBBB3RyIR4CQCACKALoASADRw0AIAJB6AFqIANBAUEBQQEQhwwgAigC8AEhAwsgLUIHiCEtIAIoAuwBIANqIB46AAAgAiADQQFqIgM2AvABIBANAAsCQCAiRQ0AICJBFGwhECASIQMDQCADIAJB6AFqEO0KIANBFGohAyAQQWxqIhANAAsLIAIgAkGUAmoQpgQgAigCBCIDIAIoAgggAkHoAWoQ7QgCQCACKAIAIhBFDQAgAyAQQQxsQQQQvhgLIAIoAqgBISAgAigCpAEhECACKAKsASIDIAIoAvABIhxqIhQhHiAcISECQCADIAIoAugBIBxrTQ0AIAJB6AFqIBwgA0EBQQEQhwwgAigC8AEiISADaiEeCyACKALsASEjAkAgA0UNACAjICFqICAgA/wKAAALIAIgHjYC8AECQCAQRQ0AICAgEEEBEL4YCwJAAkAgCEGAgICAeEcNACAeIQMgHiEYDAELIB4gBmoiGCEDIB4hEAJAIAYgAigC6AEgHmtNDQAgAkHoAWogHiAGQQFBARCHDCACKALwASIQIAZqIQMgAigC7AEhIwsCQCAGRQ0AICMgEGogByAG/AoAAAsgAiADNgLwASAIRQ0AIAcgCEEBEL4YCyACQQEgIyADELMCIAIoAgAhIAJAAkAgAw0AQQohEAwBC0HAACADrXmnayIQQf8BcUEHbiIhIBAgIUEHbGtB/wFxQQBHakEJaiEQCyACQbQDaiACQQhqKQIANwIAIAJBvANqIAJBEGopAgA3AgAgAkHEA2ogAkEYaikCADcCACACQQE6AMwDIAIgIDYCoAMgAiACKQIANwKsAyACIAM2AqQDIAIgEDYCqANBACEhIBAgA2oiIEEASA0BELEaQQEhISAgQQEQ+xciGUUNASACQQA2AogCIAIgGTYChAIgAiAgNgKAAiACQaADaiACQYACahChCyACKALoASEgAkAgAyACKAKAAiACKAKIAiIha00NACACQYACaiAhIANBAUEBEIcMIAIoAogCISELAkAgA0UNACACKAKEAiAhaiAjIAP8CgAACyACICEgA2o2AogCAkAgIEUNACAjICBBARC+GAsgAkHoA2pBCGogAkGAAmpBCGooAgA2AgAgAkHwAGpBCGogAkGgA2pBCGopAgA3AwAgAkHwAGpBEGogAkGgA2pBEGopAgA3AwAgAkHwAGpBGGogAkGgA2pBGGopAgA3AwAgAkHwAGpBIGogAkGgA2pBIGopAgA3AwAgAkHwAGpBKGogAkGgA2pBKGopAgA3AwAgAkGABGpBCGogAkGIA2pBCGopAwA3AwAgAkGABGpBEGogAkGIA2pBEGooAgA2AgAgAiACKQKAAjcD6AMgAiACKQKgAzcDcCACIAIpA4gDNwOABCACKAKUAiEDAkBB8ABFDQAgAiACQZgCakHwAPwKAAALIANBAkYNDCAAIAIpA3A3AwAgAEEoaiACQfAAakEoaikDADcDACAAQSBqIAJB8ABqQSBqKQMANwMAIABBGGogAkHwAGpBGGopAwA3AwAgAEEQaiACQfAAakEQaikDADcDACAAQQhqIAJB8ABqQQhqKQMANwMAAkBB8ABFDQAgAEHcAGogAkHwAPwKAAALIAAgDjYCqAIgAEGBgICAeDYCmAIgACAONgKQAiAAIAo2AvgBIAAgCzYC9AEgACAMNgLwASAAICI2AuABIAAgEjYC3AEgACAdNgLYASAAIAk2AtQBIAAgBDYC0AEgACAFNgLMASAAIAM2AlggACAQIBhqNgJUIAAgECAeajYCUCAAIBAgFGo2AkwgACAQIBxqNgJIIAAgLDcDQCAAICo3AzggACArNwMwIABB7AFqIAJB6ANqQQhqKAIANgIAIAAgAikD6AM3AuQBIAAgAikDgAQ3AvwBIABBhAJqIAJBgARqQQhqKQMANwIAIABBjAJqIAJBgARqQRBqKAIANgIAIAEoAhwhIQJAIAEoAiAiFEUNAEEAISMDQCAhICNBkAFsaiIcQcgAaiEDAkACQAJAIBwtAHhBfmoiEEEEIBBB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HAJAAkAgA0H/////A3FBf2pBA08NAEEAIQMMAQsgHyAhaiETIANB/P///wNxISJBACEDA0AgE0EMaigCACIUIBNBCGooAgAiFSATQQRqKAIAIhYgEygCACIEIAogBCAKSxsiCiAWIApLGyIKIBUgCksbIgogFCAKSxshCiATQRBqIRMgIiADQQRqIgNHDQALCyAcRQ0AIB8gISADQQJ0amohEwNAIBMoAgAiAyAKIAMgCksbIQogE0EEaiETIBxBf2oiHA0ACwsgAkGABmpCADcDACACQYgGakIANwMAIAJBkAZqQQA2AgAgAkGgBmpCADcDACACQfAFaiACQZAFakEQaikDADcDACACQdgFakEQaiACQZAFakEIaikDADcDACACQbQGaiACQcQFakEIaikCADcCACACQbwGaiACQcQFakEQaigCADYCACACIAIpA5AFNwPgBSACIAIpAsQFNwKsBiACQgA3A/gFIAJCADcD2AUgAkIANwOYBiACIBI2AsQGIAIgETYCwAYgAkEDNgKoBiACQZgCaiACQdgFahCmBiACKAKcAiEiIAIoAqACISEgAigCpAIhIwJAIAIoApgCQQFHDQAgAEGAgICAeDYCpAMgACAjNgIMIAAgITYCCCAAICI2AgQgAEGDgICAeDYCAAweCyAFQQJ0ISQCQAJAAkACQCAFRQ0AIAkoAgAhEwJAIAVBAUYNACAFQQBHQQJ0ISUgJEF8akECdiIUQQNxIQMCQAJAIBRBf2pBA08NAEEAIRQMAQsgCSAlaiEcIBRB/P///wNxIRJBACEUA0AgHEEMaigCACIVIBxBCGooAgAiFiAcQQRqKAIAIgQgHCgCACIRIBMgESATSxsiEyAEIBNLGyITIBYgE0sbIhMgFSATSxshEyAcQRBqIRwgEiAUQQRqIhRHDQALCyADRQ0AIAkgJSAUQQJ0amohHANAIBwoAgAiFCATIBQgE0sbIRMgHEEEaiEcIANBf2oiAw0ACwsgEyAHTw0BCwJAAkAgEA0AIAJB2AFqIAUQnQUMAQsgAkHIBmpByABqQgA3AwAgAkHIBmpBKGpCADcDACACQcgGakEwakIANwMAIAJByAZqQThqQQA2AgAgAkIANwOIByACQgA3A8gGIAJCADcD6AYQsRpBIEEIEPsXIhNFDQMgE0EIOgAAIAJBmAdqQQhqQgA3AwAgAkGoB2pCADcDACACQbAHakIANwMAIAJBmAdqQSBqQgA3AwAgAkGYB2pBKGpCADcDACACQZgHakEwakIANwMAIAJBATYC3AcgAiATNgLYByACQgA3A5gHIAJBAToA4AcgAkLAgICAEDcD0AcgAkGYAmpByABqQgA3AwAgAkGYAmpBKGpCADcDACACQZgCakEwakIANwMAIAJBmAJqQThqQQA2AgAgAkIANwPYAiACQgA3A5gCIAJCADcDuAIgAkHYBWogAkHIBmogDyAQENMDIAIpA+AFIScgAigC3AUhFAJAAkACQAJAIAIoAtgFIhNBBEYNAANAIBNBA0YNAgJAAkAgE0ECRg0AIAI1AugFISYCQCATQQFxRQ0AIAIpA4gHIiggJiAnfiIpfCImQj+HQoCAgICAgICAgH+FICYgKUIAUyAmIChTcxshJgwCCyACKQOIByIoIBQpAwAiJyAmfiIpfCImQj+HQoCAgICAgICAgH+FICYgKUIAUyAmIChTcxshJgwBC0IAIScgAikDiAciKCEmCyACICY3A4gHIAIgAigClAciEyAoICd8IilCP4dCgICAgICAgICAf4UgKSAnQgBTICkgKFNzGyInICYgJyAmVRsiKEKAgICAECAoQoCAgIAQVBunIhwgEyAcSxsgHCATGzYClAcgAiACKAKQByITICcgJiAnICZTGyImQoCAgIAQICZCgICAgBBUG6ciHCATIBxJGyATIBwbIBwgExs2ApAHAkAgAigC9AYgAigCxAJrQcAASQ0AIA8gECACQZgHaiACQZgCaiACQcgGahDeBCACIAIpA4gHNwOoByACQZgHahC/DUHQAEUNACACQZgCaiACQcgGakHQAPwKAAALIAJB2AVqIAJByAZqIA8gEBDTAyACKQPgBSEnIAIoAtwFIRQgAigC2AUiE0EERw0ACwsgAigC2AchEAJAIAIoAtwHIhxFDQAgECETA0ACQCATLQAAQQZHDQAgE0EEaigCACIDQYCAgIB4Rg0AIANFDQAgE0EIaigCACADQQEQvhgLIBNBIGohEyAcQX9qIhwNAAsLIAIoAtQHIhNFDQEgECATQQV0QQgQvhgMAQsgDyAQIAJBmAdqIAJBmAJqIAJByAZqEN4EAkBB0ABFDQAgAkHYBWogAkGYB2pB0AD8CgAACyACKALwBiETIAJBqAhqIAJB2AVqEPwCIAIoAqwIIAIoArAIEOEDIAJB4AhqIAJBqAhqEPUGIAJBwAhqQRBqIhxBADYCACACQbABakEIaiIDIAJB4AhqQRRqKQIANwMAIAJBsAFqQRBqIhAgAkHgCGpBHGopAgA3AwAgAkHIAWoiDyACQeAIakEkaigCADYCACACIBM2ApgJIAJBwAhqQQhqIhUgAkHgCGpBNGopAgA3AwAgAkEANgKcCSACIAIpAuwINwOwASACIAIpAowJNwPACCACKALgCCEUIAIpAuQIIScgAigCiAkiE0GBgICAeEcNAQsgAkGBgICAeDYCgAIgAiAnNwLcASACIBQ2AtgBDAELIAJB6AdqQSRqIA8oAgA2AgAgAkHoB2pBHGogECkDADcCACACQegHakEUaiADKQMANwIAIAJB6AdqQTRqIBUpAwA3AgAgAkGkCGogHCgCADYCACACIAIpA7ABNwL0ByACIAIpA8AINwKUCCACIBM2ApAIIAIgJzcC7AcgAiAUNgLoBwJAIAIoAqAIIhwgBUYNACACQYGAgIB4NgKAAiACIAU2AuABIAIgHDYC3AEgAkGDgICAeDYC2AEgE0GAgICAeEYNASACQegHahCUDwwBCyACQdgBakE4aiACQegHakE4aikDADcDACACQdgBakEwaiACQegHakEwaikDADcDACACQdgBakEoaiACQegHakEoaikDADcDACACQdgBakEgaiACQegHakEgaikDADcDACACQdgBakEYaiACQegHakEYaikDADcDACACQdgBakEQaiACQegHakEQaikDADcDACACQdgBakEIaiACQegHakEIaikDADcDACACIAIpA+gHNwPYAQsgAigCgAIiE0GBgICAeEcNASACQfAAakEIaiACQdgBakEIaigCACIFNgIAIAIgAikD2AEiJjcDcCAAQQxqIAU2AgAgACAmNwIEIABBgICAgHg2AqQDIABBg4CAgHg2AgAMHwsgAEGAgICAeDYCpAMgACATNgIEIABBhYCAgHg2AgAMHgsgAkHwAGpBIGogAkHYAWpBIGopAwAiJjcDACACQfAAakEYaiACQdgBakEYaikDACInNwMAIAJB8ABqQRBqIAJB2AFqQRBqKQMAIig3AwAgAkHwAGpBCGogAkHYAWpBCGopAwAiKTcDACACQTBqQTRqIAJB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AkHYBWpBKGpCADcDACACQdgFakEwakIANwMAIAJB2AVqQThqQQA2AgAgAkGgBmpCADcDACACIAIpA6gFNwPgBSACIAIpAsQFNwKsBiACQgA3A/gFIAJCADcD2AUgAkIANwOYBiACIBk2AsQGIAIgGjYCwAYgAkEDNgKoBiACQQhqIAVBCEEIQZiuwgAQwBAgAkEANgLwByACIAIoAgwiFDYC7AcgAiACKAIINgLoByACQZgCakEQaiACQZAFakEIaikDADcDACACQZgCakEYaiACQZAFakEQaikDADcDACACQZgCakEoakIANwMAIAJBmAJqQTBqQgA3AwAgAkGYAmpBOGpBADYCACACQgA3A5gCIAIgAikDkAU3A6ACIAJCADcDuAIgAkEANgL4AiACIA42AvQCIAIgDDYC8AIgAkEDNgLYAiACQcgGaiACQZgCahD3CkEAIRAgAigCyAYiHEEERg0dQQAhD0EAIRBBBCEYQQAhDQJAA0AgDUEDdCETAkACQAJAAkADQEIAISYgAikD0AYhJyACKALMBiEDAkACQAJAAkAgHEF+ag4CAQIACwJAIBxBAXENACADKQMAIScLICdCgICAgBAgJ0KAgICAEFQbISYLIAIgAigC+AIiHEEBajYC+AIMAQsgA0GHgICAeEYNJSACIAIoAvgCIhxBAWo2AvgCAkAgA0GGgICAeEcNACAnISYMAQsgACAnPgIIIAAgAzYCBCAAQYOAgIB4NgIAIAAgJ0IgiD4CDAwFCwJAICanIgMNACAcIAVPDQIgHyAcQQJ0ajUCACEmAkAgDSACKALoB0cNACACQegHakG4rsIAEM0OIAIoAuwHIRQLIBQgE2ogJjcDACACIA1BAWoiDTYC8AcCQCACKAK4ASIcIAIoArABRw0AIAJBsAFqQciuwgAQyQ4LIAIoArQBIBxBAnRqQQA2AgAgAiAcQQFqIhA2ArgBIBNBCGohEyACQcgGaiACQZgCahD3CiACKALIBiIcQQRHDQEMJQsLAkAgECACKAKwAUcNACACQbABakHYrsIAEMkOCyACKAK0ASAQQQJ0aiAPQQFqNgIAIAIgEEEBaiIQNgK4ASAPQQN0IRRBACETAkACQANAIA8hFSACQcgGaiACQdgFahDFBgJAAkACQCACKALIBiINQQRGDQAgAikD0AYhJiACKALMBiEPAkACQAJAAkAgDUF+ag4CAQMACwJAIA1BAXENACAPKQMAISYLICZCgICAgBAgJkKAgICAEFQbQv////8PgyAoQoCAgIBwg4QhKAwBCyAoQoCAgIBwgyEoCyACQoaAgIC4CDcDyAYgAkHIBmoQxg8gKKchDQwDCyACQoaAgIC4CDcDyAYgD0GHgICAeEcNAQsgACACKQPYBjcDECAAQRhqIAJByAZqQRhqKQMANwMAIABBIGogAkHIBmpBIGopAwA3AwAgAikD0AYiJqchDUHDACEPQYaAgIB4IQUMBAsgAkHIBmoQxg8gJqchDSAPQYaAgIB4Rw0CICYhKAsgBSANTQ0EQQAgFUECaiIPIANBAUYbIRYgHyANQQJ0aigCACIEIBNLIRcCQCAPQX5qIg8gAigC2AFHDQAgAkHYAWpBmK/CABDIDiACKALcASEYCyAEIBMgFxshEyAYIBRqIgQgDTYCACAEQQRqIBY2AgAgAiAPQQFqIg82AuABIBRBCGohFCADQX9qIgNFDQUMAAsLQYOAgIB4IQULIAAgDTYCCCAAIA82AgQgACAFNgIAIAAgJkIgiD4CDAwDCyAcIAVBqK7CABDjEQALIA0gBUGIr8IAEOMRAAsgHCAFTw0CAkAgHyAcQQJ0aigCACINIBNPDQAgAEGHgICAeDYCAAwBCyANIBNrrSEmAkAgAigC8AciDSACKALoB0cNACACQegHakH4rsIAEM0OCyAVQQFqIQ8gAigC7AciFCANQQN0aiAmNwMAIAIgDUEBaiINNgLwByACQcgGaiACQZgCahD3CiACKALIBiIcQQRHDQEMIAsLIABBgICAgHg2AqQDIAIoAugHIgVFDR8gAigC7AcgBUEDdEEIEL4YDB8LIBwgBUHorsIAEOMRAAsgAEGAgICAeDYCpAMgAEKGgICA2AY3AwAMHgsgAEGAgICAeDYCpAMgAEKGgICAuAQ3AwAMHQsgAEGAgICAeDYCpAMgAEKGgICAODcDAAwcCyAAQYCAgIB4NgKkAyAAQoaAgIC4AjcDAAwbC0EIQSAQ2BkAC0EIQSAQ2BkAC0EEQRBBhMnBABDmFgALIAogG0GAmcIAEOYWAAsgDSADQfjxwgAQ2BgACyAFIA1B+PHCABDZGAALIBMgA0H48cIAENgYAAsgCiATQfjxwgAQ2RgACyATIANB+PHCABDYGAALIAogE0H48cIAENkYAAsgEyADQfjxwgAQ2BgACyAKIBNB+PHCABDZGAALIBMgA0H48cIAENgYAAsgCiATQfjxwgAQ2RgACyATIANB+PHCABDYGAALIAogE0H48cIAENkYAAsgEyADQfjxwgAQ2BgACyAKIBNB+PHCABDZGAALIBMgA0H48cIAENgYAAsgCiATQfjxwgAQ2RgACyATIANB+PHCABDYGAALIAogE0H48cIAENkYAAsgAyAFQYj0wgAQ2BgACyAEIANBiPTCABDZGAALIA0gFEGor8IAEOMRAAsgAiACKALoBzYC0AYgAiACKALsByITNgLIBiACIBMgDUEDdGo2AtQGIAIgEzYCzAYgAkGYAmogAkHIBmoQsQkgAkHgCGogASgCECINIA0gASgCFEEFdGoQ+A0CQCAQIAVHDQAgAkHIBmoQ9REgAikDyAYhJiACKQPQBiEnIAJByAZqEPURIAJBgANqQQhqIAJBmAJqQQhqKQMANwMAIAJBgANqQRBqIAJBmAJqQRBqKQMANwMAIAJBgANqQRhqIAJBmAJqQRhqKQMANwMAIAJBgANqQSBqIAJBmAJqQSBqKQMANwMAIAJBgANqQShqIAJBmAJqQShqKQMANwMAIAJBgANqQTBqIAJBmAJqQTBqKQMANwMAIAJBgANqQThqIAJBmAJqQThqKQMANwMAIAIpA8gGISggAikD0AYhKSAAQdgCaiACQdgBakEIaigCADYCACAAIAIpAtgBNwLQAiAAIAIpArABNwL0AiAAQfwCaiACQbABakEIaigCADYCACACIAIpA5gCNwOAAyACQfgDaiACQTBqQThqKQMANwMAIAJB8ANqIAJBMGpBMGopAwA3AwAgAkHoA2ogAkEwakEoaikDADcDACACQeADaiACQTBqQSBqKQMANwMAIAJB2ANqIAJBMGpBGGopAwA3AwAgAkHQA2ogAkEwakEQaikDADcDACACQcgDaiACQTBqQQhqKQMANwMAIAJBuARqIAJB8ABqQThqKQMANwMAIAJBsARqIAJB8ABqQTBqKQMANwMAIAJBqARqIAJB8ABqQShqKQMANwMAIAJBoARqIAJB8ABqQSBqKQMANwMAIAJBmARqIAJB8ABqQRhqKQMANwMAIAJBkARqIAJB8ABqQRBqKQMANwMAIAJBiARqIAJB8ABq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N2ohFSAEQbA1akEEaiEWIARB9DpqQQRqIRcgBEGgGWpBEGohGCAEQaAZakEoaiEZIARByB1qQShqIRogBEHIHWpBEGohGyAEQeANakG0C2ohHCAEQcgdakG0C2ohHSAEQeANakEMaiEeIARByB1qQQxqIR8gBEHgDWpB/AFqISAgBEHgDWpB3ABqISEgBEHIHWpB3ABqISIgBEGwNmpBzAFqISMgBEGwNmpB8AFqISQgBEGwNmpB2AFqISUgBEGwNmpB/AFqISYgBEHAAmohJyAEQagCaiEoIARByABqQdQBaiEpIARByB1qQRRqISogBEHQCGpBJGohKyAEQeANakEkaiEsIARB0AhqQRhqIS0gBEHgDWpBGGohLiAEQdAIakEMaiEvIARBnA5qITAgBEGIAWohMSAEQeANakHMAWohMiAEQeANakHYAGohMyAEQeANakHwAWohNCAEQeANakHYAWohNSAEQcgAakEIaiE2IARByABqQZQCaiE3IARB0AJqITggBEHMAmohOSAEQcgAakHwAWohOiAEQawCaiE7IARBuAFqITwgBEGoAWohPSAEQcgAakEYaiE+IARByABqQQRyIT8gBEHIHWpBHGohQANAIAQoAhQhQSAELQATIUIgBEHIHWogARBdAkACQAJAAkACQAJAAkAgBCgC4B0iA0EERw0AELEaQRRBBBD7FyJDRQ0BIEMgBCkDyB03AgAgQ0EQaiAEQcgdakEQaigCADYCACBDQQhqIARByB1qQQhqKQMANwIAQQAhA0GYp8IAIQIMDgsgBCgC1B0hRCAEKALQHSFFIAQoAswdIUYgBCgCyB0hRwJAQawCRQ0AID8gQEGsAvwKAAALIAQgAzYCSAJAAkACQAJAAkACQAJAAkACQAJAAkACQCADDgQDAAECAwsgBCgCXCAEKAJQRg0DQQchAwwXCyAEKAKUASAEKAKIAUYNB0EHIQMgPxDKDQwXC0EHIQMgBCgCWCJCIAQoAmBHDRMgBCgCbCBCRw0TIARBkAtqQShqIkggPkEoaikDADcDACAEQZALakEgaiJJID5BIGopAwA3AwAgBEGQC2pBGGoiSiA+QRhqKQMANwMAIARBkAtqQRBqIksgPkEQaikDADcDACAEQZALakEIaiJMID5BCGopAwA3AwAgBCA+KQMANwOQCyAEKQOQASGKASAE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IAwgBEHAAGooAgBqSQ0BAkAgAygCpAMiBEUNACAEQQlsQRFqIglFDQAgAygCoAMgBEEDdGtBeGogCUEIEL4YCyADKALEAyIERQ0AIARBCWxBEWoiCUUNACADKALAAyAEQQN0a0F4aiAJQQgQvhgLIANBoANqIANB2AFqEO0EIAMoAqADIgQNBCADKALgASILDQEMAgsgA0EwakEIaiIJIA5BCGopAwA3AwAgA0EwakEQaiIMIA5BEGopAwA3AwAgA0HYBWpBCGoiEiANQQhqKQMANwMAIANB2AVqQRBqIhMgDUEQaikDADcDACADQdgFakEYaiIVIA1BGGopAwA3AwAgAyAOKQMANwMwIAMgDSkDADcD2AUgAygCpAMhFiADKAKgAyEXIAMoAsADIRggAygCxAMhGSAEKAJQIhogBCgCVEEFdGohGyAEKAJcIhwgBCgCYEHoAGxqIR0CQCALIAMoAtgBRw0AIANB2AFqQajIwQAQjw4gAygC3AEhEAsgECARaiIEIBY2AhQgBCAXNgIQIAQgGzYCDCAEIBo2AgggBCAdNgIEIAQgHDYCACAEIAMpAzA3AxggBCAZNgI0IAQgGDYCMCAEIAMpA9gFNwM4IARBIGogCSkDADcDACAEQShqIAwpAwA3AwAgBEHAAGogEikDADcDACAEQcgAaiATKQMANwMAIARB0ABqIBUpAwA3AwAgBCAUNgJYIAMgC0EBaiILNgLgASALDQALCyAAKALIDiILDQILQfyBwgBBIkGggsIAEM4TAAsCQEHMAEUNACADQbACakEEciADQaADakEEckHMAPwKAAALIAMgBDYCsAIgAygC+AIhBAwBCyAHIQQCQCAKRQ0AIAchBANAIAQoAlwgCkHoAGxqIglBmH9qIQQgCUF4aigCACIKDQALCyAEKAJUIglFDQEgBCgCUCAJQQV0akFgaiIERQ0BIANBsAJqIAcQvQQgAyALQX9qNgL8AgsgA0HYAWoQ7w4gA0HYBWogBBDVBiAEKAIcIgsoAgwhCSALKAIQIQsgA0GgA2pBIGpCADcDACADQaADakEoakIANwMAIANBoANqQTBqQgA3AwAgA0HYA2pBADYCACADQTBqQTBqQQA2AgAgA0EwakEoakIANwMAIANBMGpBIGpCADcDACADQTBqQRhqQgA3AwAgA0GgA2pBEGogA0E4aikDADcDACADQaADakEYaiADQTBqQRBqKQMANwMAIANCADcDoAMgAyALNgLkAyADIAk2AuADIAMgAykDMDcDqAMgAygCmAYhFCADQgA3A+gDIAMgFDYC8AMCQCADKALcBSIMRQ0AIAxBCWxBEWoiEEUNACADKALYBSAMQQN0a0F4aiAQQQgQvhgLAkAgAygC/AUiDEUNACAMQQlsQRFqIhBFDQAgAygC+AUgDEEDdGtBeGogEEEIEL4YCyADKAL8AiEKAkBByABFDQAgA0EwaiADQbACakHIAPwKAAALIANB2AVqIAQQ1QYgA0EwaiADQdgFahDeCSADQfgEakE4aiADQTBqQThqKQMANwMAIANB+ARqQTBqIANBMGpBMGopAwA3AwAgA0H4BGpBKGogA0EwakEoaikDADcDACADQfgEakEgaiADQTBqQSBqKQMANwMAIANB+ARqQRhqIANBMGpBGGopAwA3AwAgA0H4BGpBEGogA0EwakEQaikDADcDACADQfgEakEIaiADQTBqQQhqKQMANwMAIAMgAykDMDcD+AQgAygCcCEQIAMoAnQhEQJAIAMoAtwFIgRFDQAgBEEJbEERaiIMRQ0AIAMoAtgFIARBA3RrQXhqIAxBCBC+GAsCQCADKAL8BSIERQ0AIARBCWxBEWoiDEUNACADKAL4BSAEQQN0a0F4aiAMQQgQvhgLIAMoAsAGIQQgA0HYBWogA0GgA2ogCSALELcDAkACQAJAIAMoAtgFIgtBBEYNACADQegDaiEMIBQgEGsgBGohBANAIAMgAygC8AMgAygC5AUiCWs2AvADIAMpAtwFIR8gDEIAELEWIAkgBEsNAiADQdgFaiADQaADaiADKALgAyADKALkAxC3AyAEIAlrIQQgAygC2AUiC0EERw0ACwsMAQsgCSAEayEMCwJAQdgARQ0AIANB2AFqIANBoANqQdgA/AoAAAsgA0GYAWpBCGoiFCADQfgEakEIaikDADcDACADQZgBakEQaiADQfgEakEQaikDADcDACADQZgBakEYaiADQfgEakEYaikDADcDACADQZgBakEgaiINIANB+ARqQSBqKQMANwMAIANBmAFqQShqIhIgA0H4BGpBKGopAwA3AwAgA0GYAWpBMGoiEyADQfgEakEwaikDADcDACADQZgBakE4aiIVIANB+ARqQThq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2BNqQRxqKQIANwMAIAJBsCJqIgYgAkHYE2pBJGopAgA3AwAgAkG4ImoiByACQdgTakEsaikCADcDACACQcAiaiIIIAJB2BNqQTRqKQIANwMAIAJByCJqIgkgAkHYE2pBPGopAgA3AwAgAkHQImoiCiACQdgTakHEAGopAgA3AwAgAkHYImoiCyACQdgTakHMAGooAgA2AgAgAiACKQLcEzcDkAkgAiACKQLsEzcDoCIgAkHYHmpBCGoiDCAEKQMANwMAIAIgAikDkAk3A9geELEaQcACQQgQ+xciBEUNAiAEIAM2AgAgBCACKQPYHjcCBCAEIAIpA6AiNwIUIARBDGogDCkDADcCACAEQRxqIAUpAwA3AgAgBEEkaiAGKQMANwIAIARBLGogBykDADcCACAEQTRqIAgpAwA3AgAgBEE8aiAJKQMANwIAIARBxABqIAopAwA3AgAgBEHMAGogCygCADYCAEEBIQMgAkEBNgLoISACIAQ2AuQhIAJBBDYC4CECQEGoB0UNACACQdgTaiACQQhqQagH/AoAAAsgAkGkCWohBiACQZAJakEEciEIQQAhBwNAIAJBkAlqIAJB2BNqEM8CAkACQAJAIAIoApAJIglBfmoOAgABAgsgAkGwB2pBCGogCEEIaikCACInNwMAIAIgCCkCACIoNwOwByACQZAJakEIaiAnNwMAIAIgKDcDkAlB1MfBAEErIAJBkAlqQczmwgBB7ObCABD4EAALAkAgAikD2BNCAlENACACKAKwGCIEQYOAgIB4SA0AIARFDQAgAigCtBggBEEBEL4YCyACKALgISEMIAIoAuQhIQkMAwsgAkGwB2pBCGoiBSAIQQhqKQIANwMAIAJByCBqQQhqIgogBkEIaikCADcDACACQcggakEQaiILIAZBEGooAgA2AgAgAiAIKQIANwOwByACIAYpAgA3A8ggIAIoArgJIQwgAigCvAkhDSACKALACSEOIAIoAsQJIQ8gAigCyAkhECACKALMCSERIAIoAtAJIRIgAigC1AkhEyACKQPYCSEnIAJBmB9qQQhqIhQgBSkDADcDACACIAIpA7AHNwOYHwJAIAMgAigC4CFHDQAgAkHgIWogA0EBQQhB0AAQhwwgAigC5CEhBAsgBCAHaiIFQdAAaiAJNgIAIAVB1ABqIAIpA5gfNwIAIAVB3ABqIBQpAwA3AgAgBUHkAGogAikDyCA3AgAgBUHsAGogCikDADcCACAFQfQAaiALKAIANgIAIAVBmAFqICc3AwAgBUGUAWogEzYCACAFQZABaiASNgIAIAVBjAFqIBE2AgAgBUGIAWogEDYCACAFQYQBaiAPNgIAIAVBgAFqIA42AgAgBUH8AGogDTYCACAFQfgAaiAMNgIAIAIgA0EBaiIDNgLoISAHQdAAaiEHDAALC0EIIQlBACEDAkAgAikDCEICUQ0AIAIoAuAEIgRBg4CAgHhIDQAgBEUNACACKALkBCAEQQEQvhgLQQAhDAsgASgCFCEVIAEoAhAhDSAJIQsCQCADRQ0AIAkgA0HQAGwiCmohC0EAIQMDQCAJIANqIgRBCGoiBSkDACEnIARBGGoiBikDACEoIARBIGoiBykDACEpIARBEGoiCCkDACEqIARBJGpBADYCACAGICo3AwAgCCApNwMAIAUgKDcDACAEICc3AwAgByAEQcwAaigCADYCACAEQcAAaiIFKQMAIScgBSAEQShqIgYpAwA3AwAgBiAnNwMAIARByABqIgUoAgAhBiAFIARBMGoiBCgCADYCACAEIAY2AgAgCiADQdAAaiIDRw0ACwsgAiAMNgKQCSACIAk2ApQJIAIgCyAJa0HQAG42ApgJIAJB2BNqIAJBkAlqIA0gFRCYAwJAIAIoAsQUQYCAgIB4Rg0AAkBB8ABFDQAgAkGwB2ogAkHYE2pB8AD8CgAACwJAIAEoAnAiBCABKAJsIgNJDQACQCAEIAEoAjgiBUsNACACKALMFCEFIAIoAsgUIQYgAkHYE2ogASgCHCABKAIgIAEoAjQgA2ogBCADaxCFAiACQeATaiEEAkACQCACKQPYEyInQgJRDQBByApFDQEgAkGQCWogBEHICvwKAAAMAQsgBBDOCgsCQEHICkUNACACQdgTakEIaiACQZAJakHICvwKAAALIAIgJzcD2BMgAkGgCGpBPGohBCACQZAJakE8aiEDAkADQCACQZAJaiACQdgTahDDAQJAAkAgAigCyAkiB0GAgICAeGoOAgADAQsgAkGgImpBCGogAkGQCWpBCGopAwA3AwAgAiACKQOQCTcDoCJB1MfBAEErIAJBoCJqQczmwgBBxOfCABD4EAALIAQgAykCADcCACACQaAIakEwaiACQZAJakEwaikDADcDACACQaAIakEoaiACQZAJakEoaikDADcDACACQaAIakEgaiACQZAJakEgaikDADcDACACQaAIakEYaiACQZAJakEYaikDADcDACACQaAIakEQaiACQZAJakEQaikDADcDACACQaAIakEIaiACQZAJakEIaikDADcDACAEQQhqIANBCGooAgA2AgAgAiACKQOQCTcDoAggAiAHNgLYCCAGIAUgAkGgCGoQgQwMAAsLAkAgAikD2BNCAlENAAJAIAIoAqgXIgRBg4CAgHhIDQAgBEUNACACKAKsFyAEQQEQvhgLIAIoAqgdIgRBg4CAgHhIDQAgBEUNACACKAKsHSAEQQEQvhgLAkBB8ABFDQAgAkGQCWogAkGwB2pB8AD8CgAACyACIAU2AoQKIAIgBjYCgAogAigC+AkiCq1CsAJ+IienIQRBACEDAkAgJ0IgiKcNACAEQfj///8HSw0AIAEoAgQhDCABKAIIIQtBACEIAkACQCAEDQBBCCEWIAohA0EAIQkMAQsQsRpBCCEDIARBCBD7FyIWRQ0BIAIoAvgJIQMgCiEJCyACQQA2ArQeIAIgFjYCsB4gAiAJNgKsHiACKALwCSEFIAIgAigC9AkiBCADQdAAbGo2AsQeIAIgBTYCwB4gAiAENgK8HiACIAQ2ArgeIANFDQcgAkGgImpBBGohFyACQYEiaiEYIAJB4CFqQRBqIQ8gAkHgIWpBDGohEiACQfwUaiEZIAJB2BNqQRhqIRogAkHECWohGyACQdwfaiEcQQAhCAJAA0AgAkHYHmpBCGoiBSAEQQhqKQMANwMAIAJB2B5qQRBqIgYgBEEQaikDADcDACACQdgeakEYaiIHIARBGGopAwA3AwAgAkHYHmpBIGoiCSAEQSBqKQMANwMAIAJB2B5qQShqIgEgBEEoaikDADcDACACQdgeakEwaiINIARBMGopAwA3AwAgAkHYHmpBOGoiDiAEQThqKQMANwMAIAIgBEHQAGo2ArweIAIgBCkDADcD2B4gBCgCQCEDIAJByB5qQQhqIhAgBEHMAGooAgA2AgAgAiAEKQJENwPIHiADQYCAgIB4Rg0IIAJBmB9qQThqIA4pAwA3AwAgAkGYH2pBMGogDSkDADcDACACQZgfakEoaiABKQMANwMAIAJBmB9qQSBqIgQgCSkDADcDACACQZgfakEYaiAHKQMA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AwA3AwAgB0EYaiALKQMANwMAIAdBEGogCCkDADcDACAHQQhqIAQpAwA3AwAgDyAGQQFqNgIADAMLQbCHwgBBxQBB+IfCABDOEwALIA0gB0GIiMIAEOMRAAsCQAJAAkACQAJAAkAgB0FIRw0AIAEoAiQiDUUNAyADQcgAakEIaiABKAIgIgZBCGopAwA3AwAgA0HIAGpBEGogBkEQaikDADcDACADQcgAakEYaiAGQRhqKQMANwMAIAMgBikDADcDSAJAIA1Bf2oiDUEFdCIMRQ0AIAYgBkEgaiAM/AoAAAsgASANNgIkIA4gASgCMCIGSQ0BIA4gBkGYicIAEOERAAsgDUF/aiIJIAEoAiQiDk8NAyADQcgAakEIaiABKAIgIAxqIgZBCGopAwA3AwAgA0HIAGpBEGogBkEQaikDADcDACADQcgAakEYaiAGQRhqKQMANwMAIAMgBikDADcDSAJAIA4gDWtBBXQiDEUNACAGIAZBIGogDPwKAAALIAEgDkF/ajYCJCABKAIwIg4gDU0NBCADQYgBaiABKAIsIAdqIgZBwABqKQMANwMAIANBkAFqIAZByABqKQMANwMAIANBmAFqIAZB0ABqKQMANwMAIANBoAFqIAZB2ABqKQMANwMAIANBqAFqIAZB4ABqKQMANwMAIANBsAFqIAZB6ABqKQMANwMAIAMgBkE4aiIMKQMANwOAAQJAIA4gDWtBOGxBSGoiDUUNACAMIAZB8ABqIA38CgAACyABIA5Bf2oiBTYCMCAJIAVPDQEgASgCLCAHaiADQcgAaiADQYABahChByAJIQ0MBQsgA0GIAWogASgCLCAHaiIHQfgAaikDADcDACADQZABaiAHQYABaikDADcDACADQZgBaiAHQYgBaikDADcDACADQaABaiAHQZABaikDADcDACADQagBaiAHQZgBaikDADcDACADQbABaiAHQaABaikDADcDACADIAdB8ABqIg0pAwA3A4ABAkAgBkE4bEGQf2oiDkUNACANIAdBqAFqIA78CgAACyABIAZBf2oiBTYCMCABKAIsIgogA0HIAGogA0GAAWoQoQcMBQsgCSAFQciJwgAQ4xEAC0EAQQBBiInCABDhEQALIAkgDkGoicIAEOERAAsgDSAOQbiJwgAQ4REACyANIAVLDQUgASgCLCEKIA0NAQtBACENQQAh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AwsgAigCWCIDQQFqIhkgAigCTE0NAAsLCyASIAIpA0g3AwAgEkEQaiACQcgAakEQaikDADcDACASQQhqIA4pAwA3AwAgAiAbNgKIAyACICY2ApADIAIgAigCKDYCjAMgAiAoNgKAAyACQoGAgIAQNwPAAiACIAM2ArwCIAIgKTYCuAIgAiAdQQFqNgL4AiACIB4gJGo2AugCIAIgLCAqfDcD4AIgAiAiIBogIiAaSxsgIiAaGzYC8AIgAiAhICAgISAgSRsgICAhGyAhICAbNgLsAiACQeADaiACQbgCahDnBgJAIAIoArgCIgNBg4CAgHhIDQAgA0UNACACKAK8AiADQQEQvhgLAkAgAigC4AMiA0GCgICAeEcNAEEAISIMBgsCQAJAAkAgAigC7AMgJkcNAAJAIANBgoCAgHhIDQAgAw0CC0EAISIgA0GBgICAeEcNAgwICyADQYKAgIB4SA0BIANFDQELIAIoAuQDIANBARC+GAtBACEiICZFDQUgFigCCCEpIBcoAtgGQQFGDQMQsRoCQEEgQQgQ+xciA0UNACADQQg6AAAgAkG4AmpBCGpCADcDACASQgA3AwAgAkG4AmpBGGpCADcDACACQbgCakEgakIANwMAIBNCADcDACACQbgCakEwakIANwMAIAJCADcDuAJBACEeIAJBADYCiAMgAkEBOgCAAyACQQE2AvwCIAIgAzYC+AIgAkKAoICAEDcD8AICQANAICghGiAeIRkgJSEDAkACQCAlRQ0AA0AgA0E4bCEXIBooAiwhA0EAIR9BACEhA0ACQCADQRhqKAIAIB9qIhggGUsgGCAZSWtB/wFxIiBB/wFGDQACQAJAICAOAgEAAQsgGSAfayEZIAMhGiADQTBqKAIAIgNFDQQMAwsgISEZICEgGigCJE8NBgwECyAYQQFqIR8gA0E4aiEDICFBAWohISAXQUhqIhcNAAwFCwsLIBkgGigCJE8NAgsgHkEBaiEeIBooAiAgGUEFdGoiGEEQaigCACIDRQ0AIAIgGEEcaigCACkCDDcDYCACQgA3A1ggAiADNgJQIAJBADYCTCACQYEEOwFIIAJBuAJqIAJByABqIAMgAxDoBgwACwsCQEHQAEUNACACQcgAaiACQbgCakHQAPwKAAALIAJByABqEIYMIAIoAowBIRggAigCiAEhAyACIAIoAoQB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ASgC2AUhEwsgAkHQC2pBCGogAUHABWoiA0EIaikDADcDACACQdALakEQaiADQRBqKQMANwMAIAIgAykDADcD0AsgASgC/AUhFCACQegLaiABQYAGahD5BSABKAL4BiEVAkACQCABKALoBkGAgICAeEcNAAwBCyABKALkBiIWQQV0IRBBACEIIBZB////P0sNBCAQQfj///8HSw0EAkACQCAQDQBBCCEXDAELIAEoAuAGIQMQsRpBCCEIIBBBCBD7FyIXRQ0FIBZFDQBBACEKIBYhCwNAIBAgCkYNASADKAIcIgkgCSgCACIIQQFqNgIAIAhBf0wNBCADKQMQITAgAygCGCESIAMpAwghMSAXIApqIgggAykDADcDACAIQQhqIDE3AwAgCEEcaiAJNgIAIAhBGGogEjYCACAIQRBqIDA3AwAgCkEgaiEKIANBIGohAyALQX9qIgsNAAsLIAEoAvAGIgytIjFCOH4iMKchCUEAIQMgMEIgiKcNBSAJQfj///8HSw0FAkACQCAJDQBBCCELDAELIAEoAuwGIRIQsRpBCCEDIAlBCBD7FyILRQ0GIAxFDQBBACEIIAwhCgNAIAkgCEYNASACQThqIBIgCGoQtgYgCyAIaiIDQTBqIAJBOGpBMGopAwA3AwAgA0EoaiACQThqQShqKQMANwMAIANBIGogAkE4akEgaikDADcDACADQRhqIAJBOGpBGGopAwA3AwAgA0EQaiACQThqQRBqKQMANwMAIANBCGogAkE4akEIaikDADcDACADIAIpAzg3AwAgCEE4aiEIIApBf2oiCg0ACwsgMUIghiALrYQhMyABKALYBiEYCyACQagMakEIaiABQcAGaiIDQQhqKQMANwMAIAJBqAxqQRBqIANBEGopAwA3AwAgAiADKQMANwOoDCABKAL8BiEZIAJBwAxqIAFBgAdqEPkFIAJBgA1qIAFBwAdqEPkFIAJBmA9qIAFBgAhqEPkFIAJB2A9qIAFBwAhqEPkFIAJBmBBqIAFBgAlqEPkFQYCAgIB4IRogASgC+AkhGwJAAkAgASgC6AlBgICAgHhHDQBBgICAgHghHAwBCyABKALkCSIdQQV0IRBBACEIIB1B////P0sNBiAQQfj///8HSw0GAkACQCAQDQBBCCEeDAELIAEoAuAJIQMQsRpBCCEIIBBBCBD7FyIeRQ0HIB1FDQBBACEKIB0hCwNAIBAgCkYNASADKAIcIgkgCSgCACIIQQFqNgIAIAhBf0wNBCADKQMQITAgAygCGCESIAMpAwghMSAeIApqIgggAykDADcDACAIQQhqIDE3AwAgCEEcaiAJNgIAIAhBGGogEjYCACAIQRBqIDA3AwAgCkEgaiEKIANBIGohAyALQX9qIgsNAAsLIAEoAvAJIhytIjFCOH4iMKchCUEAIQMgMEIgiKcNByAJQfj///8HSw0HAkACQCAJDQBBCCELDAELIAEoAuwJIRIQsRpBCCEDIAlBCBD7FyILRQ0IIBxFDQBBACEIIBwhCgNAIAkgCEYNASACQThqIBIgCGoQtgYgCyAIaiIDQTBqIAJBOGpBMGopAwA3AwAgA0EoaiACQThqQShqKQMANwMAIANBIGogAkE4akEgaikDADcDACADQRhqIAJBOGpBGGopAwA3AwAgA0EQaiACQThqQRBqKQMANwMAIANBCGogAkE4akEIaikDADcDACADIAIpAzg3AwAgCEE4aiEIIApBf2oiCg0ACwsgMUIghiALrYQhNCABKALYCSEfCyABKAKICyEgIAEoAvwJISECQAJAIAEoAvgKQYCAgIB4Rw0ADAELIAEoAvQKIiJBBXQhEEEAIQggIkH///8/Sw0IIBBB+P///wdLDQgCQAJAIBANAEEIISMMAQsgASgC8AohAxCxGkEIIQggEEEIEPsXIiNFDQkgIkUNAEEAIQogIiELA0AgECAKRg0BIAMoAhwiCSAJKAIAIghBAWo2AgAgCEF/TA0EIAMpAxAhMCADKAIYIRIgAykDCCExICMgCmoiCCADKQMANwMAIAhBCGogMTcDACAIQRxqIAk2AgAgCEEYaiASNgIAIAhBEGogMDcDACAKQSBqIQogA0EgaiEDIAtBf2oiCw0ACwsgASgCgAsiGq0iMULoAH4iMKchCkEAIQMgMEIgiKcNCSAKQfj///8HSw0JAkACQCAKDQBBCCELDAELIAEoAvwKIQkQsRpBCCEDIApBCBD7FyILRQ0KIBpFDQBBACEDIBohCANAIAogA0YNASACQThqIAkgA2oQtQcCQEHoAEUNACALIANqIAJBOGpB6AD8CgAACyADQegAaiEDIAhBf2oiCA0ACwsgASgC6AohJCABKALgCiEDIAJB2BBqIAFBoApqEIYLIAJB+BBqIAFBwApqEIYLIAIgAzYCmBEgMUIghiALrYQhMQsgASkDmAohNSABKQOQCiE2IAEoAowLISUCQCABKAKECiImDQBBmMrAACEnQQAhKEEAIQhBACEmDA0LICZBAWqtQih+IjBCIIinDQkgMKciCiAmQQlqIgNqIgggCkkNCSAIQfj///8HSw0JELEaAkAgCEEIEPsXIgkNACACQRBqQQFBCCAIEJsWIAIoAhAhJgwLCyAJIApqIScMCwsgCCAQQbCBwQAQ5hYLAAsgAyAJQbCBwQAQ5hYACyAIIBBBsIHBABDmFgALIAMgCUGwgcEAEOYWAAsgCCAQQbCBwQAQ5hYACyADIAlBsIHBABDmFgALIAggEEGwgcEAEOYWAAsgAyAKQbCBwQAQ5hYACyACQQhqQQEQmRMgAigCCCEmCyAmQQlqIQNBACEnCyABKAKACiEpAkAgA0UNACAnICkgA/wKAAALAkAgASgCjAoiKEUNACAnQVhqISogKUEIaiEDICkpAwBCf4VCgIGChIiQoMCAf4MhMCACQThqQQhqIRAgKCErICkhCANAAkAgMEIAUg0AA0AgCEHAfWohCCADKQMAITAgA0EIaiIKIQMgMEKAgYKEiJCgwIB/gyIwQoCBgoSIkKDAgH9RDQALIDBCgIGChIiQoMCAf4UhMCAKIQMLIAIgCEEAIDB6p0EDdmtBKGxqIgpBWGopAgA3AzggKSAKa0FYbSEsQYCAgIB4IQsgCkF4aigCACEJIApBdGooAgAhLQJAAkAgCkFwaigCAEGAgICAeEcNACAtIRIMAQtBACELIAlBAEgNBAJAAkAgCQ0AQQEhEgwBCxCxGkEBIQsgCUEBEPsXIhJFDQULAkAgCUUNACASIC0gCfwKAAALIAkhCwsgMEJ/fCAwgyEwIBAgCkFgahC3BiACQThqQRhqIi0gCzYCACACQThqQSBqIgsgCTYCACAqICxBKGxqIgogAikDODcDACAKQQhqIBApAwA3AwAgCkEQaiACQThqQRBqKQMANwMAIAIgEjYCVCAKQRhqIC0pAwA3AwAgCkEgaiALKQMANwMAICtBf2oiKw0ACwsgASgCiAohCAsCQEHIAEUNACAAQaAKaiACQdgQakHIAPwKAAALIAJBwA1qQThqIAJBmA9qQThqKQMANwMAIAJBwA1qQTBqIAJBmA9qQTBqKQMANwMAIAJBwA1qQShqIAJBmA9qQShqKQMANwMAIAJBwA1qQSBqIAJBmA9qQSBqKQMANwMAIAJBwA1qQRhqIAJBmA9qQRhqKQMANwMAIAJBwA1qQRBqIAJBmA9qQRBqKQMANwMAIAJBwA1qQQhqIAJBmA9qQQhqKQMANwMAIAJBwA1qQcgAaiACQdgPakEIaikDADcDACACQcANakHQAGogAkHYD2pBEGopAwA3AwAgAkHADWpB2ABqIAJB2A9qQRhqKQMANwMAIAJBwA1qQeAAaiACQdgPakEgaikDADcDACACQcANakHoAGogAkHYD2pBKGopAwA3AwAgAkHADWpB8ABqIAJB2A9qQTBqKQMANwMAIAJBwA1qQfgAaiACQdgPakE4aikDADcDACACIAIpA5gPNwPADSACIAIpA9gPNwOADiACQcANakG4AWogAkGYEGpBOGopAwA3AwAgAkHADWpBsAFqIAJBmBBqQTBqKQMANwMAIAJBwA1qQagBaiACQZgQakEoaikDADcDACACQcANakGgAWogAkGYEGpBIGopAwA3AwAgAkHADWpBmAFqIAJBmBBqQRhqKQMANwMAIAJBwA1qQZABaiACQZgQakEQaikDADcDACACQcANakGIAWogAkGYEGpBCGopAwA3AwAgAkHADWpByAFqIAFByAlqKQMANwMAIAJBwA1qQdABaiABQdAJaikDADcDACACIAIpA5gQNwPADiACIAEpA8AJNwOADyACQThqQThqIAJBkAZqQThqKQMANwMAIAJBOGpBMGogAkGQBmpBMGopAwA3AwAgAkE4akEoaiACQZAGakEoaikDADcDACACQThqQSBqIAJBkAZqQSBqKQMANwMAIAJBOGpBGGogAkGQBmpBGGopAwA3AwAgAkE4akEQaiACQZAGakEQaikDADcDACACQThqQQhqIAJBkAZqQQhqKQMANwMAIAIgAikDkAY3AzggAkE4akH4AGogAkHQBmpBOGopAwA3AwAgAkE4akHwAGogAkHQBmpBMGopAwA3AwAgAkE4akHoAGogAkHQBmpBKGopAwA3AwAgAkE4akHgAGogAkHQBmpBIGopAwA3AwAgAkE4akHYAGogAkHQBmpBGGopAwA3AwAgAkE4akHQAGogAkHQBmpBEGopAwA3AwAgAkE4akHIAGogAkHQBmpBCGopAwA3AwAgAiACKQPQBjcDeCACQThqQbgBaiACQZAHakE4aikDADcDACACQThqQbABaiACQZAHakEwaikDADcDACACQThqQagBaiACQZAHakEoaikDADcDACACQThqQaABaiACQZAHakEgaikDADcDACACQThqQZgBaiACQZAHakEYaikDADcDACACQThqQZABaiACQZAHakEQaikDADcDACACQThqQYgBaiACQZAHakEIaikDADcDACACIAIpA5AHNwO4ASACQbACaiACQdAHakE4aikDADcDACACQagCaiACQdAHakEwaikDADcDACACQaACaiACQdAHakEoaikDADcDACACQZgCaiACQdAHakEgaikDADcDACACQThqQdgBaiACQdAHakEYaikDADcDACACQThqQdABaiACQdAHakEQaikDADcDACACQThqQcgBaiACQdAHakEIaikDADcDACACIAIpA9AHNwP4ASACQfACaiACQZAIakE4aikDADcDACACQegCaiACQZAIakEwaikDADcDACACQeACaiACQZAIakEoaikDADcDACACQdgCaiACQZAIakEgaikDADcDACACQdACaiACQZAIakEYaikDADcDACACQcgCaiACQZAIakEQaikDADcDACACQcACaiACQZAIakEIaikDADcDACACIAIpA5AINwO4AiACQbADaiACQdAIakE4aikDADcDACACQagDaiACQdAIakEwaikDADcDACACQaADaiACQdAIakEoaikDADcDACACQZgDaiACQdAIakEgaikDADcDACACQZADaiACQdAIakEYaikDADcDACACQYgDaiACQdAIakEQaikDADcDACACQYADaiACQdAIakEIaikDADcDACACIAIpA9AINwP4AiACQfADaiACQZAJakE4aikDADcDACACQegDaiACQZAJakEwaikDADcDACACQeADaiACQZAJakEoaikDADcDACACQdgDaiACQZAJakEgaikDADcDACACQdADaiACQZAJakEYaikDADcDACACQcgDaiACQZAJakEQaikDADcDACACQcADaiACQZAJakEIaikDADcDACACIAIpA5AJNwO4AyACQbAEaiACQdAJakE4aikDADcDACACQagEaiACQdAJakEwaikDADcDACACQaAEaiACQdAJakEoaikDADcDACACQZgEaiACQdAJakEgaikDADcDACACQZAEaiACQdAJakEYaikDADcDACACQYgEaiACQdAJakEQaikDADcDACACQYAEaiACQdAJakEIaikDADcDACACIAIpA9AJNwP4AyACQfAEaiACQZAKakE4aikDADcDACACQegEaiACQZAKakEwaikDADcDACACQeAEaiACQZAKakEoaikDADcDACACQdgEaiACQZAKakEgaikDADcDACACQdAEaiACQZAKakEYaikDADcDACACQcgEaiACQZAKakEQaikDADcDACACQcAEaiACQZAKakEIaikDADcDACACIAIpA5AKNwO4BCACQbAFaiACQdAKakE4aikDADcDACACQagFaiACQdAKakEwaikDADcDACACQaAFaiACQdAKakEoaikDADcDACACQZgFaiACQdAKakEgaikDADcDACACQZAFaiACQdAKakEYaikDADcDACACQYgFaiACQdAKakEQaikDADcDACACQYAFaiACQdAKakEIaikDADcDACACIAIpA9AKNwP4BCACQfAFaiACQZALakE4aikDADcDACACQegFaiACQZALakEwaikDADcDACACQeAFaiACQZALakEoaikDADcDACACQdgFaiACQZALakEgaikDADcDACACQdAFaiACQZALakEYaikDADcDACACQcgFaiACQZALakEQaikDADcDACACQcAFaiACQZALakEIaikDADcDACACIAIpA5ALNwO4BSACQYgGaiACQdALakEQaikDADcDACACQYAGaiACQdALakEIaikDADcDACACIAIpA9ALNwP4BSAAQbgGaiACQegLakE4aikDADcDACAAQbAGaiACQegLakEwaikDADcDACAAQagGaiACQegLakEoaikDADcDACAAQaAGaiACQegLakEgaikDADcDACAAQZgGaiACQegLakEYaikDADcDACAAQZAGaiACQegLakEQaikDADcDACAAQYgGaiACQegLakEIaikDADcDACAAIAIpA+gLNwOABiAAQdAGaiACQagMakEQaikDADcDACAAQcgGaiACQagMakEIaikDADcDACAAIAIpA6gMNwPABiAAQbgHaiACQcAMakE4aikDADcDACAAQbAHaiACQcAMakEwaikDADcDACAAQagHaiACQcAMakEoaikDADcDACAAQaAHaiACQcAMakEgaikDADcDACAAQZgHaiACQcAMakEYaikDADcDACAAQZAHaiACQcAMakEQaikDADcDACAAQYgHaiACQcAMakEIaikDADcDACAAIAIpA8AMNwOAByAAQfgHaiACQYANakE4aikDADcDACAAQfAHaiACQYANakEwaikDADcDACAAQegHaiACQYANakEoaikDADcDACAAQeAHaiACQYANakEgaikDADcDACAAQdgHaiACQYANakEYaikDADcDACAAQdAHaiACQYANakEQaikDADcDACAAQcgHaiACQYANakEIaikDADcDACAAIAIpA4ANNwPAByAAIC43A6gLIAAgLzcDoAsgACAFNgKcCyAAIAY2ApgLIAAgBzYClAsgACAENgKQCyABLQC8CyEDIAAgAikCLDcCsAsgAEG4C2ogAkEsakEIaigCADYCAAJAQdgFRQ0AIAAgAkE4akHYBfwKAAALIAAgGTYC/AYgACAVNgL4BiAAIDM3AuwGIAAgDDYC6AYgACAWNgLkBiAAIBc2AuAGIAAgFjYC3AYgACAYNgLYBiAAIBQ2AvwFIAAgDTYC+AUgACAyNwLsBSAAIA42AugFIAAgDzYC5AUgACARNgLgBSAAIA82AtwFIAAgEzYC2AUCQEHYAUUNACAAQYAIaiACQcANakHYAfwKAAALIAAgAzoAvAsgACAlNgKMCyAAICA2AogLIAAgMTcC/AogACAaNgL4CiAAICI2AvQKIAAgIzYC8AogACAiNgLsCiAAICQ2AugKIAAgNTcDmAogACA2NwOQCiAAICg2AowKIAAgCDYCiAogACAmNgKECiAAICc2AoAKIAAgITYC/AkgACAbNgL4CSAAIDQ3AuwJIAAgHDYC6AkgACAdNgLkCSAAIB42AuAJIAAgHTYC3AkgACAfNgLYCSACQaARaiQADwsgCyAJQaCBwQAQ5hYAC+I2Aih/B34jAEGwEWsiAiQAIAJBHGogASgCtAsgASgCuAsQygkgAkEoaiABQZALahDDCiACQaAGaiABEP0FIAJB4AZqIAFBwABqEP0FIAJBoAdqIAFBgAFqEP0FIAJB4AdqIAFBwAFqEP0FIAJBoAhqIAFBgAJqEP0FIAJB4AhqIAFBwAJqEP0FIAJBoAlqIAFBgANqEP0FIAJB4AlqIAFBwANqEP0FIAJBoApqIAFBgARqEP0FIAJB4ApqIAFBwARqEP0FIAJBoAtqIAFBgAVqEP0FQYCAgIB4IQMgASgC+AUhBAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAEoAugFQYCAgIB4Rw0AQYCAgIB4IQUMAQsgASgC5AUiBkEFdCEHQQAhCCAGQf///z9LDQEgB0H4////B0sNAQJAAkAgBw0AQQghCQwBCyABKALgBSEKELEaQQghCCAHQQgQ+xciCUUNAiAGRQ0AQQAhCyAGIQwDQCAHIAtGDQEgCigCHCINIA0oAgAiCEEBajYCACAIQX9MDQQgCikDECEqIAooAhghDiAKKQMIISsgCSALaiIIIAopAwA3AwAgCEEIaiArNwMAIAhBHGogDTYCACAIQRhqIA42AgAgCEEQaiAqNwMAIAtBIGohCyAKQSBqIQogDEF/aiIMDQALCyABKALwBSIFrSIrQjh+IiqnIQ1BACEKICpCIIinDQMgDUH4////B0sNAwJAAkAgDQ0AQQghDAwBCyABKALsBSEOELEaQQghCiANQQgQ+xciDEUNBCAFRQ0AQQAhCCAFIQsDQCANIAhGDQEgAkHIAGogDiAIahDABiAMIAhqIgpBMGogAkHIAGpBMGopAwA3AwAgCkEoaiACQcgAakEoaikDADcDACAKQSBqIAJByABqQSBqKQMANwMAIApBGGogAkHIAGpBGGopAwA3AwAgCkEQaiACQcgAakEQaikDADcDACAKQQhqIAJByABqQQhqKQMANwMAIAogAikDSDcDACAIQThqIQggC0F/aiILDQALCyArQiCGIAythCEsIAEoAtgFIQ8LIAJB4AtqQQhqIAFBwAVqIgpBCGopAwA3AwAgAkHgC2pBEGogCkEQaikDADcDACACIAopAwA3A+ALIAEoAvwFIRAgAkH4C2ogAUGABmoQ/QUgASgC+AYhEQJAAkAgASgC6AZBgICAgHhHDQAMAQsgASgC5AYiEkEFdCEHQQAhCCASQf///z9LDQQgB0H4////B0sNBAJAAkAgBw0AQQghEwwBCyABKALgBiEKELEaQQghCCAHQQgQ+xciE0UNBSASRQ0AQQAhCyASIQwDQCAHIAtGDQEgCigCHCINIA0oAgAiCEEBajYCACAIQX9MDQQgCikDECEqIAoo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AGogAkHoD2pBKGopAwA3AwAgAkHQDWpB8ABqIAJB6A9qQTBqKQMANwMAIAJB0A1qQfgAaiACQegPakE4aikDADcDACACIAIpA6gPNwPQDSACIAIpA+gPNwOQDiACQdANakG4AWogAkGoEGpBOGopAwA3AwAgAkHQDWpBsAFqIAJBqBBqQTBqKQMANwMAIAJB0A1qQagBaiACQagQakEoaikDADcDACACQdANakGgAWogAkGoEGpBIGopAwA3AwAgAkHQDWpBmAFqIAJBqBBqQRhqKQMANwMAIAJB0A1qQZABaiACQagQakEQaikDADcDACACQdANakGIAWogAkGoEGpBCGopAwA3AwAgAkHQDWpByAFqIAFByAlqKQMANwMAIAJB0A1qQdABaiABQdAJaikDADcDACACIAIpA6gQNwPQDiACIAEpA8AJNwOQDyACQcgAakE4aiACQaAGakE4aikDADcDACACQcgAakEwaiACQaAGakEwaikDADcDACACQcgAakEoaiACQaAGakEoaikDADcDACACQcgAakEgaiACQaAGakEgaikDADcDACACQcgAakEYaiACQaAGakEYaikDADcDACACQcgAakEQaiACQaAGakEQaikDADcDACACQcgAakEIaiACQaAGakEIaikDADcDACACIAIpA6AGNwNIIAJByABqQfgAaiACQeAGakE4aikDADcDACACQcgAakHwAGogAkHgBmpBMGopAwA3AwAgAkHIAGpB6ABqIAJB4AZqQShqKQMANwMAIAJByABqQeAAaiACQeAGakEgaikDADcDACACQcgAakHYAGogAkHgBmpBGGopAwA3AwAgAkHIAGpB0ABqIAJB4AZqQRBqKQMANwMAIAJByABqQcgAaiACQeAGakEIaikDADcDACACIAIpA+AGNwOIASACQcgAakG4AWogAkGgB2pBOGopAwA3AwAgAkHIAGpBsAFqIAJBoAdqQTBqKQMANwMAIAJByABqQagBaiACQaAHakEoaikDADcDACACQcgAakGgAWogAkGgB2pBIGopAwA3AwAgAkHIAGpBmAFqIAJBoAdqQRhqKQMANwMAIAJByABqQZABaiACQaAHakEQaikDADcDACACQcgAakGIAWogAkGgB2pBCGopAwA3AwAgAiACKQOgBzcDyAEgAkHAAmogAkHgB2pBOGopAwA3AwAgAkG4AmogAkHgB2pBMGopAwA3AwAgAkGwAmogAkHgB2pBKGopAwA3AwAgAkGoAmogAkHgB2pBIGopAwA3AwAgAkHIAGpB2AFqIAJB4AdqQRhqKQMANwMAIAJByABqQdABaiACQeAHakEQaikDADcDACACQcgAakHIAWogAkHgB2pBCGopAwA3AwAgAiACKQPgBzcDiAIgAkGAA2ogAkGgCGpBOGopAwA3AwAgAkH4AmogAkGgCGpBMGopAwA3AwAgAkHwAmogAkGgCGpBKGopAwA3AwAgAkHoAmogAkGgCGpBIGopAwA3AwAgAkHgAmogAkGgCGpBGGopAwA3AwAgAkHYAmogAkGgCGpBEGopAwA3AwAgAkHQAmogAkGgCGpBCGopAwA3AwAgAiACKQOgCDcDyAIgAkHAA2ogAkHgCGpBOGopAwA3AwAgAkG4A2ogAkHgCGpBMGopAwA3AwAgAkGwA2ogAkHgCGpBKGopAwA3AwAgAkGoA2ogAkHgCGpBIGopAwA3AwAgAkGgA2ogAkHgCGpBGGopAwA3AwAgAkGYA2ogAkHgCGpBEGopAwA3AwAgAkGQA2ogAkHgCGpBCGopAwA3AwAgAiACKQPgCDcDiAMgAkGABGogAkGgCWpBOGopAwA3AwAgAkH4A2ogAkGgCWpBMGopAwA3AwAgAkHwA2ogAkGgCWpBKGopAwA3AwAgAkHoA2ogAkGgCWpBIGopAwA3AwAgAkHgA2ogAkGgCWpBGGopAwA3AwAgAkHYA2ogAkGgCWpBEGopAwA3AwAgAkHQA2ogAkGgCWpBCGopAwA3AwAgAiACKQOgCTcDyAMgAkHABGogAkHgCWpBOGopAwA3AwAgAkG4BGogAkHgCWpBMGopAwA3AwAgAkGwBGogAkHgCWpBKGopAwA3AwAgAkGoBGogAkHgCWpBIGopAwA3AwAgAkGgBGogAkHgCWpBGGopAwA3AwAgAkGYBGogAkHgCWpBEGopAwA3AwAgAkGQBGogAkHgCWpBCGopAwA3AwAgAiACKQPgCTcDiAQgAkGABWogAkGgCmpBOGopAwA3AwAgAkH4BGogAkGgCmpBMGopAwA3AwAgAkHwBGogAkGgCmpBKGopAwA3AwAgAkHoBGogAkGgCmpBIGopAwA3AwAgAkHgBGogAkGgCmpBGGopAwA3AwAgAkHYBGogAkGgCmpBEGopAwA3AwAgAkHQBGogAkGgCmpBCGopAwA3AwAgAiACKQOgCjcDyAQgAkHABWogAkHgCmpBOGopAwA3AwAgAkG4BWogAkHgCmpBMGopAwA3AwAgAkGwBWogAkHgCmpBKGopAwA3AwAgAkGoBWogAkHgCmpBIGopAwA3AwAgAkGgBWogAkHgCmpBGGopAwA3AwAgAkGYBWogAkHgCmpBEGopAwA3AwAgAkGQBWogAkHgCmpBCGopAwA3AwAgAiACKQPgCjcDiAUgAkGABmogAkGgC2pBOGopAwA3AwAgAkH4BWogAkGgC2pBMGopAwA3AwAgAkHwBWogAkGgC2pBKGopAwA3AwAgAkHoBWogAkGgC2pBIGopAwA3AwAgAkHgBWogAkGgC2pBGGopAwA3AwAgAkHYBWogAkGgC2pBEGopAwA3AwAgAkHQBWogAkGgC2pBCGopAwA3AwAgAiACKQOgCzcDyAUgAkGYBmogAkHgC2pBEGopAwA3AwAgAkGQBmogAkHgC2pBCGopAwA3AwAgAiACKQPgCzcDiAYgAEG4BmogAkH4C2pBOGopAwA3AwAgAEGwBmogAkH4C2pBMGopAwA3AwAgAEGoBmogAkH4C2pBKGopAwA3AwAgAEGgBmogAkH4C2pBIGopAwA3AwAgAEGYBmogAkH4C2pBGGopAwA3AwAgAEGQBmogAkH4C2pBEGopAwA3AwAgAEGIBmogAkH4C2pBCGopAwA3AwAgACACKQP4CzcDgAYgAEHQBmogAkG4DGpBEGopAwA3AwAgAEHIBmogAkG4DGpBCGopAwA3AwAgACACKQO4DDcDwAYgAEG4B2ogAkHQDGpBOGopAwA3AwAgAEGwB2ogAkHQDGpBMGopAwA3AwAgAEGoB2ogAkHQDGpBKGopAwA3AwAgAEGgB2ogAkHQDGpBIGopAwA3AwAgAEGYB2ogAkHQDGpBGGopAwA3AwAgAEGQB2ogAkHQDGpBEGopAwA3AwAgAEGIB2ogAkHQDGpBCGopAwA3AwAgACACKQPQDDcDgAcgAEH4B2ogAkGQDWpBOGopAwA3AwAgAEHwB2ogAkGQDWpBMGopAwA3AwAgAEHoB2ogAkGQDWpBKGopAwA3AwAgAEHgB2ogAkGQDWpBIGopAwA3AwAgAEHYB2ogAkGQDWpBGGopAwA3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IAogB0HIAGxqIAFByAD8CgAACyAKIAlBAWo7AcoGDAwLIAIgADYC0AMgAkEANgLMAyACIAo2AsgDIAJBmAJqIAJByANqEN8KIAIoApgCIgRBnAZqIAdBAnRqIQAgAigCnAIhCgJAAkAgBC8BygYiBiAHSw0AIAAgAzYCAAwBCwJAIAYgB2siCEECdCILRQ0AIABBBGogACAL/AoAAAsgACADNgIAIAhByABsIgBFDQAgBCAHQcgAbGoiA0HIAGogAyAA/AoAAAsCQEHIAEUNACAEIAdByABsaiABQcgA/AoAAAsgBCAGQQFqOwHKBiACKAKkAiEHIAIoAqACIQkMAgsgB0F5aiEEQQYhBgsgAiAGNgLQAyACQQA2AswDIAIgCjYCyAMgAkGYAmogAkHIA2oQ3wogAigCoAIiCUGcBmogBEECdGohACACKAKkAiEHAkACQCAJLwHKBiIGIARLDQAgACADNgIADAELAkAgBiAEayIIQQJ0IgpFDQAgAEEEaiAAIAr8CgAACyAAIAM2AgAgCEHIAGwiAEUNACAJIARByABsaiIDQcgAaiADIAD8CgAACwJAQcgARQ0AIAkgBEHIAGxqIAFByAD8CgAACyAJIAZBAWo7AcoGIAIoApwCIQogAigCmAIhBAsgAkH4AmpBCGoiACACQbQCaikCADcDACACQfgCakEQaiIGIAJBvAJqKQIANwMAIAJB+AJqQRhqIgMgAkHEAmopAgA3AwAgAkH4AmpBIGoiCCACQcwCaikCADcDACACQfgCakEoaiIBIAJB1AJqKQIANwMAIAJB+AJqQTBqIg8gAkHcAmopAgA3AwAgAkH4AmpBOGoiECACQeQCaigCADYCACACIAIpAqwCNwP4AiACKAKoAiEOIAIoAugCIQsgAkGIAmpBCGoiESACQfQCaigCADYCACACIAIpAuwCNwOIAiALQYCAgIB4Rg0IIAJBqAFqQThqIBAoAgA2AgAgAkGoAWpBMGogDykDADcDACACQagBakEoaiABKQMANwMAIAJBqAFqQSBqIAgpAwA3AwAgAkGoAWpBGGogAykDADcDACACQagBakEQaiAGKQMANwMAIAJBqAFqQQhqIAApAwA3AwAgAkHgAGpBCGogESgCADYCACACIAIpA/gCNwOoASACIAIpA4gCNwNgAkAgBCgCmAYiAA0AIAkhBgwICyACQewCaiEPIAJBrAJqIQggAkGoAWpBBHIhAQNAIAcgCkcNBSAELwHIBiEGAkACQAJAAkACQCAALwHKBiIHQQtJDQAgCkEBaiEDQQQhBCAGQQVJDQFBACEHQQUhCiAGIQQgBkF7ag4CAQMCCyAAQZwGaiIIIAZBAnRqIQMgBkEBaiEEAkACQCAGIAdJDQAgAyAONgIADAELAkAgByAGayIKQQJ0IgxFDQAgCCAEQQJ0aiADIAz8CgAACyADIA42AgAgCkHIAGwiA0UNACAAIARByABsaiAAIAZByABsaiAD/AoAAAsgB0EBaiEKIAAgBkHIAGxqIgMgASkCADcCACADIAs2AjggAyACKQNgNwI8IANBMGogAUEwaikCADcCACADQShqIAFBKGopAgA3AgAgA0EgaiABQSBqKQIANwIAIANBGGogAUEYaikCADcCACADQRBqIAFBEGopAgA3AgAgA0EIaiABQQhqKQIANwIAIANBxABqIAJB4ABqQQhqKAIANgIAIABB0AZqIQMgB0ECaiEIAkAgBiAHTw0AIAcgBmtBAnQiAUUNACADIAZBAnRqQQhqIAMgBEECdGogAfwKAAALIAAgCjsBygYgAyAEQQJ0aiAJNgIAIAQgCE8NDQJAIAcgBmsiAUEBakEDcSIHRQ0AIAAgBkECdGpB1AZqIQYDQCAGKAIAIgMgBDsByAYgAyAANgKYBiAGQQRqIQYgBEEBaiEEIAdBf2oiBw0ACwsgAUEDSQ0NIARBAnQgAGpB3AZqIQYDQCAGQXRqKAIAIgcgBDsByAYgByAANgKYBiAGQXhqKAIAIgcgBEEBajsByAYgByAANgKYBiAGQXxqKAIAIgcgBEECajsByAYgByAANgKYBiAGKAIAIgcgBEEDajsByAYgByAANgKYBiAGQRBqIQYgCCAEQQRqIgRHDQAMDgsLIAIgBDYC0AMgAiADNgLMAyACIAA2AsgDIAJBmAJqIAJByANqEIEIIAIoApgCIgRBnAZqIhEgBkECdCIQaiEHIAZBAWohACAELwHKBiIDQQFqIQoCQAJAIAYgA0kNACAHIA42AgAgBCAGQcgAbGoiByABKQIANwIAIAcgCzYCOCAHIAIpA2A3AjwgB0EwaiABQTBqKQIANwIAIAdBKGogAUEoaikCADcCACAHQSBqIAFBIGopAgA3AgAgB0EYaiABQRhqKQIANwIAIAdBEGogAUEQaikCADcCACAHQQhqIAFBCGopAgA3AgAgB0HEAGogAkHgAGpBCGooAgA2AgAMAQsgAEECdCESAkAgAyAGayITQQJ0IhRFIhUNACARIBJqIAcgFPwKAAALIAcgDjYCACAEIAZByABsaiEHAkAgE0HIAGwiDkUNACAEIABByABsaiAHIA78CgAACyAHIAs2AjggB0EwaiABQTBqKQIANwIAIAdBKGogAUEoaikCADcCACAHQSBqIAFBIGopAgA3AgAgB0EYaiABQRhqKQIANwIAIAdBEGogAUEQaikCADcCACAHQQhqIAFBCGopAgA3AgAgByABKQIANwIAIAcgAikDYDcCPCAHQcQAaiACQeAAakEIaigCADYCACAVDQAgBEHQBmoiByAQakEIaiAHIBJqIBT8CgAACyAEIAo7AcoGIAQgAEECdGogCTYC0AYCQCAAIANBAmoiCk8NAAJAIAMgBmsiC0EBakEDcSIHRQ0AIAQgEGpB1AZqIQYDQCAGKAIAIgMgADsByAYgAyAENgKYBiAGQQRqIQYgAEEBaiEAIAdBf2oiBw0ACwsgC0EDSQ0AIAQgAEECdGpB3AZqIQYDQCAGQXRqKAIAIgcgADsByAYgByAENgKYBiAGQXhqKAIAIgcgAEEBajsByAYgByAENgKYBiAGQXxqKAIAIgcgAEECajsByAYgByAENgKYBiAGKAIAIgcgAEEDajsByAYgByAENgKYBiAGQRBqIQYgCiAAQQRqIgBHDQALCyACKAKgAiEGIAIoApwCIQoMAgsgBkF5aiEHQQYhCgsgAiAKNgLQAyACIAM2AswDIAIgADYCyAMgAkGYAmogAkHIA2oQgQggAigCoAIiBkGcBmoiESAHQQJ0IhBqIQQgB0EBaiEAIAYvAcoGIgNBAWohCgJAAkAgAyAHSw0AIAQgDjYCACAGIAdByABsaiIEIAEpAgA3AgAgBCALNgI4IAQgAikDYDcCPCAEQTBqIAFBMGopAgA3AgAgBEEoaiABQShqKQIANwIAIARBIGogAUEgaikCADcCACAEQRhqIAFBGGopAgA3AgAgBEEQaiABQRBqKQIANwIAIARBCGogAUEIaikCADcCACAEQcQAaiACQeAAakEIaigCADYCAAwBCyAAQQJ0IRICQCADIAdrIhNBAnQiFEUiFQ0AIBEgEmogBCAU/AoAAAsgBCAONgIAIAYgB0HIAGxqIQQCQCATQcgAbCIORQ0AIAYgAEHIAGxqIAQgDvwKAAALIAQgCzYCOCAEQTBqIAFBMGopAgA3AgAgBEEoaiABQShqKQIANwIAIARBIGogAUEgaikCADcCACAEQRhqIAFBGGopAgA3AgAgBEEQaiABQRBqKQIANwIAIARBCGogAUEIaikCADcCACAEIAEpAgA3AgAgBCACKQNgNwI8IARBxABqIAJB4ABqQQhqKAIANgIAIBUNACAGQdAGaiIEIBBqQQhqIAQgEmogFPwKAAALIAYgCjsBygYgBiAAQQJ0aiAJNgLQBgJAIAAgA0ECaiIKTw0AAkAgAyAHayILQQFqQQNxIgdFDQAgBiAQakHUBmohBANAIAQoAgAiAyAAOwHIBiADIAY2ApgGIARBBGohBCAAQQFqIQAgB0F/aiIHDQALCyALQQNJDQAgBiAAQQJ0akHcBmohBANAIARBdGooAgAiByAAOwHIBiAHIAY2ApgGIARBeGooAgAiByAAQQFqOwHIBiAHIAY2ApgGIARBfGooAgAiByAAQQJqOwHIBiAHIAY2ApgGIAQoAgAiByAAQQNqOwHIBiAHIAY2ApgGIARBEGohBCAKIABBBGoiAEcNAAsLIAIoApwCIQogAigCmAIhBAsgAkH4AmpBCGoiACAIQQhqKQIANwMAIAJB+AJqQRBqIgMgCEEQaikCADcDACACQfgCakEYaiIJIAhBGGopAgA3AwAgAkH4AmpBIGoiECAIQSBqKQIANwMAIAJB+AJqQShqIhEgCEEoaikCADcDACACQfgCakEwaiISIAhBMGopAgA3AwAgAkH4AmpBOGoiEyAIQThqKAIANgIAIAIgCCkCADcD+AIgAigCqAIhDiACKAKkAiEHIAJBiAJqQQhqIhQgD0EIaigCADYCACACIA8pAgA3A4gCIAIoAugCIgtBgICAgHhGDQkgAkGoAWpBOGogEygCADYCACACQagBakEwaiASKQMANwMAIAJBqAFqQShqIBEpAwA3AwAgAkGoAWpBIGogECkDADcDACACQagBakEYaiAJKQMANwMAIAJBqAFqQRBqIAMpAwA3AwAgAkGoAWpBCGogACkDADcDACACQeAAakEIaiAUKAIANgIAIAIgAikD+AI3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IQMMAAsLIAJBADYC+AZBACACQeAIaiACQegIaiACQfgGakGUkcIAEKgUAAsCQAJAIAIoAsAEQYCAgIB4Rg0AIAIoArAEDQELIAIoAtAEDQMQsRpBFEEEEPsXIgNFDQIgA0EANgIQIANCgICAgBA3AgggA0KBgICAEDcCACACQYAHakIANwMAIAJBiAdqQgA3AwAgAkGQB2pBADYCACACIAM2ApQHIAJCADcD+AYgAkGYBGpBACACKAKwBCACKALABEGAgICAeEYbIAJB+AZqEJ8ECyACKALUAyEHIAIoAtADIQwgAigClAMhCCACKAKQAyEKCyACQfgGahDZCyACQfgGakEAIAFB9ABqEKQBIAJBiAFqQTBqIAJBmARqQTBqKQMANwMAIAJBiAFqQShqIAJBmARqQShqKQMANwMAIAJBiAFqQSBqIAJBmARqQSBqKQMANwMAIAJBiAFqQRhqIAJBmARqQRhqKQMANwMAIAJBiAFqQRBqIAJBmARqQRBqKQMANwMAIAJBiAFqQQhqIAJBmARqQQhqKQMANwMAIAIgAikDmAQ3A4gBIAIoAtAEIQUgAigC1AQhCQJAQYgBRQ0AIAIgAkH4BmpBiAH8CgAACyACQYAFakEoaiACQdgCakEIaikDADcDACACQYAFakEwaiACQdgCakEQaikDADcDACACQYAFakE4aiACQdgCakEYaikDADcDACACQcAFaiACQdgCakEgaikDADcDACACQcgFaiACQdgCakEoaikDADcDACACQdAFaiACQdgCakEwaikDADcDACACQfgBakEIaiACQdgDakEIaikDADcDACACQfgBakEQaiACQdgDakEQaikDADcDACACQfgBakEYaiACQdgDakEYaikDADcDACACQfgBakEgaiACQdgDakEgaikDADcDACACQfgBakEoaiACQdgDakEoaikDADcDACACQfgBakEwaiACQdgDakEwaikDADcDACACQfgBakE4aiACQdgDakE4aikDADcDACACIAIpA9gCNwOgBSACIAIpA9gDNwP4ASACKAKECCEEIAIoAoAIIQMgAkHAAWpBMGogAkGYA2pBMGopAwA3AwAgAkHAAWpBKGogAkGYA2pBKGopAwA3AwAgAkHAAWpBIGogAkGYA2pBIGopAwA3AwAgAkHAAWpBGGogAkGYA2pBGGopAwA3AwAgAkHAAWpBEGogAkGYA2pBEGopAwA3AwAgAkHAAWpBCGogAkGYA2pBCGopAwA3AwAgAiACKQOYAzcDwAEgARDXDAJAIAEoAkQiBkUNACABKAJIIAZBAnRBBBC+GAsCQCABKAJQIgZFDQAgASgCVCAGQQEQvhgLAkAgASgCXCIGRQ0AIAEoAmAgBkEDdEEIEL4YCyACIAAoAjgiBjYCvAIgAiAKNgK4AiAKIAZHDQIgAiADNgLAAiACIAo2AsQCIAMgCkcNAyACIAw2AsgCIAIgCjYCzAIgDCAKRw0EIAIgACgCuAQiAzYC1AIgAiAFNgLQAiAFIANHDQUgAkGABWpBIGohBiAAQYAIaiEDAkAgACgCqAhBgICAgHhGDQAgAxCUDwsgACAINgK8CCAAIAw2ArgIIAMgBikDADcDACADQTBqIAZBMGopAwA3AwAgA0EoaiAGQShqKQMANwMAIANBIGogBkEgaikDADcDACADQRhqIAZBGGopAwA3AwAgA0EQaiAGQRBqKQMANwMAIANBCGogBkEIaikDADcDACAAQcAIaiEDAkAgACgC6AhBgICAgHhGDQAgAxCUDwsgAyACKQP4ATcDACADQThqIAJB+AFqQThqKQMANwMAIANBMGogAkH4AWpBMGopAwA3AwAgA0EoaiACQfgBakEoaikDADcDACADQSBqIAJB+AFqQSBqKQMANwMAIANBGGogAkH4AWpBGGopAwA3AwAgA0EQaiACQfgBakEQaikDADcDACADQQhqIAJB+AFqQQhqKQMANwMAIABBgAlqIQMCQCAAKAKoCUGAgICAeEYNACADEJQPCyADIAIpA8ABNwMAIAAgBzYCvAkgACAMNgK4CSADQTBqIAJBwAFqQTBqKQMANwMAIANBKGogAkHAAWpBKGopAwA3AwAgA0EgaiACQcABakEgaikDADcDACADQRhqIAJBwAFqQRhqKQMANwMAIANBEGogAkHAAWpBEGopAwA3AwAgA0EIaiACQcABakEIaikDADcDACAAQcAJaiEDAkAgACgC6AlBgICAgHhGDQAgAxCUDwsgAyACKQOIATcDACAAIAk2AvwJIAAgBTYC+AkgA0EwaiACQYgBakEwaikDADcDACADQShqIAJBiAFqQShqKQMANwMAIANBIGogAkGIAWpBIGopAwA3AwAgA0EY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DCgCCCIHQQ9NDQogDCAHQX9qIgc2AgggDCgCBCAHQQZ0aiIHLwEIIgpBA0YNByAHKQMAIRQgA0GOAWoiDiAHQThqKQEANwEAIANB4ABqQShqIgggB0EyaikBADcDACADQeAAakEgaiIPIAdBKmopAQA3AwAgA0HgAGpBGGoiECAHQSJqKQEANwMAIANB4ABqQRBqIhEgB0EaaikBADcDACADQeAAakEIaiISIAdBEmopAQA3AwAgBykBCiETIAwgDCgCGEF/ajYCGCADIBM3A2AgBiABKAIIIgdPDQggASgCBCAGQQZ0aiIHKQMAIRMgByAUNwMAIAdBCGoiDCkDACEUIAwgCjsBACADQaABakEIaiAUNwMAIANBoAFqQRBqIAdBEGopAwA3AwAgA0GgAWpBGGogB0EYaikDADcDACADQaABakEgaiAHQSBqKQMANwMAIANBoAFqQShqIAdBKGopAwA3AwAgA0GgAWpBMGogB0EwaikDADcDACADQaABakE4aiAHQThqIgwpAwA3AwAgAyATNwOgASAMIA4pAQA3AQAgB0EyaiAIKQMANwEAIAdBKmogDykDADcBACAHQSJqIBApAwA3AQAgB0EaaiARKQMANwEAIAdBEmogEikDADcBACAHIAMpA2A3AQoCQCANQQhqKAIAIgwgDSgCAEcNACANQbTjwgAQzA4LIA1BBGooAgAhBwJAIAxFDQAgDEEGdCIKRQ0AIAdBwABqIAcgCvwKAAALIAcgAykDoAE3AwAgB0E4aiADQaABakE4aikDADcDACAHQTBqIANBoAFqQTBqKQMANwMAIAdBKGogA0GgAWpBKGopAwA3AwAgB0EgaiADQaABakEgaikDADcDACAHQRhqIANBoAFqQRhqKQMANwMAIAdBEGogA0GgAWpBEGopAwA3AwAgB0EIaiADQaABakEIaikDADcDACANQQhqIAxBAWo2AgAgDUEYaiIHIAcoAgBBAWoiCjYCACAJIAZBHGxqIgcoAhQiDEUNDCAHQQxqIgcgDEF/aiIMNgIIIAcoAgQgDEEcbGoiBygCACIMQYCAgIB4Rg0MIANB5AFqQRRqIAdBFGopAgA3AgAgB0EMaikCACETIAcpAgQhFCAJIAZBHGxqIgcgBygCGCADKAL8ASIHazYCGCADQeQBakEMaiATNwIAIA1BGGogCiAHajYCACADIAw2AuQBIAMgFDcC6AEgDUEMakEAIANB5AFqQcTjwgAQuw8MDAsgACADKQNgNwMAIABBOGogA0HgAGpBOGopAwA3AwAgAEEwaiADQeAAakEwaikDADcDACAAQShqIANB4ABqQShqKQMANwMAIABBIGogA0HgAGpBIGopAwA3AwAgAEEYaiADQeAAakEYaikDADcDACAAQRBqIANB4ABqQRBqKQMANwMAIABBCGogA0HgAGpBCGopAwA3AwAMEQsgCiAFQcThwgAQ4xEACyAKIAhB5OHCABDhEQALIAogB0H04cIAEOMRAAsgCiAIQZTiwgAQ4xEACyALIAVBtOLCABDjEQALIAYgBUHE4sIAEOMRAAtBlOPCABDaGAALIAYgB0Gk48IAEOMRAAsgAiAGQbTkwgAQ4REACyALQQFqIAVPDQEgDUEkaigCACIGQRBJDQEgA0HgAGpBCGogDUEgaigCACIHQQhqKQMANwMAIANB4ABqQRBqIAdBEGopAwA3AwAgA0HgAGpBGGogB0EYaikDADcDACADQeAAakEgaiAHQSBqKQMANwMAIANB4ABqQShqIAdBKGopAwA3AwAgA0HgAGpBMGogB0EwaikDADcDACADQeAAakE4aiAHQThqKQMANwMAIAMgBykDADcDYAJAIAZBf2oiBkEGdCIMRQ0AIAcgB0HAAGogDPwKAAALIA1BJGogBjYCACANQTRqIgcgBygCAEF/ajYCAAJAIAsgASgCCCIHTw0AIAEoAgQgCmoiBykDACETIAcgAykDYDcDACAHQQhqIgYpAwAhFCAGIANB4ABqQQhqKQMANwMAIANBoAFqQQhqIgwgFDcDACAHQRBqIgYpAwAhFCAGIANB4ABqQRBqKQMANwMAIANBoAFqQRBqIgogFDcDACAHQRhqIgYpAwAhFCAGIANB4ABqQRhqKQMANwMAIANBoAFqQRhqIg4gFDcDACAHQSBqIgYpAwAhFCAGIANB4ABqQSBqKQMANwMAIANBoAFqQSBqIgggFDcDACAHQShqIgYpAwAhFCAGIANB4ABqQShqKQMANwMAIANBoAFqQShqIg8gFDcDACAHQTBqIgYpAwAhFCAGIANB4ABqQTBqKQMANwMAIANBoAFqQTBqIhAgFDcDACAHQThqIgcpAwAhFCAHIANB4ABqQThqKQMANwMAIANBoAFqQThqIhEgFDcDACADIBM3A6ABIA1BGGoiByAHKAIAQQFqNgIAAkAgDUEIaiISKAIAIgYgDSgCAEcNACANQeTiwgAQzA4LIA1BBGooAgAgBkEGdGoiByADKQOgATcDACAHQThqIBEpAwA3AwAgB0EwaiAQKQMANwMAIAdBKGogDykDADcDACAHQSBqIAgpAwA3AwAgB0EYaiAOKQMANwMAIAdBEGogCikDADcDACAHQQhqIAwpAwA3AwAgEiAGQQFqNgIAIA1BMGooAgBFDQIgA0HkAWogDUEoakEAQfTiwgAQmxAgDUE0aiIHIAcoAgAgAygC/AEiB2s2AgAgDUEYaiIGIAcgBigCAGo2AgACQCANQRRqIgwoAgAiBiANQQxqIgcoAgBHDQAgB0GE48IAEIkOCyANQRBqKAIAIAZBHGxqIgcgAykC5AE3AgAgB0EYaiADQeQBakEYaigCADYCACAHQRBqIANB5AFqQRBqKQIANwIAIAdBCGogA0HkAWpBCGopAgA3AgAgDCAGQQFqNgIADAILIAsgB0HU4sIAEOMRAAsCQAJAAkACQAJAIAcNACABKAIIIgtFDQMgA0GgAWpBCGogASgCBCIHQQhqKQMANwMAIANBoAFqQRBqIAdBEGopAwA3AwAgA0GgAWpBGGogB0EYaikDADcDACADQaABakEgaiAHQSBqKQMANwMAIANBoAFqQShqIAdBKGopAwA3AwAgA0GgAWpBMGogB0EwaikDADcDACADQaABakE4aiAHQThqKQMANwMAIAMgBykDADcDoAECQCALQX9qIgtBBnQiCkUNACAHIAdBwABqIAr8CgAACyABIAs2AgggBg0BIAwgBUHk48IAEOERAAsgC0F/aiIMIAEoAggiDk8NAyADQaABakEIaiABKAIEIApqIgpBQGoiBkEIaikDADcDACADQaABakEQaiAGQRBqKQMANwMAIANBoAFqQRhqIAZBGGopAwA3AwAgA0GgAWpBIGogBkEgaikDADcDACADQaABakEoaiAGQShqKQMANwMAIANBoAFqQTBqIAZBMGopAwA3AwAgA0GgAWpBOGogBkE4aikDADcDACADIAYpAwA3A6ABAkAgDiALa0EGdCILRQ0AIAYgCiAL/AoAAAsgASAOQX9qNgIIIANB4ABqQQhqIA1BCGopAgA3AwAg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FyICRQ0BIAJBADYCECACQoCAgIAQNwIIIAJCgYCAgBA3AgAgA0IANwMAIARCADcDACAFQQA2AgAgASACNgKsBiABQgA3A5AGIAZBgICAgHg2AgAgAUHoBmpBACABQZAGahCfBCABQThqQTBqIAcpAwA3AwAgAUE4akEoaiAGKQMANwMAIAFBOGpBIGogCCkDADcDACABQThqQRhqIAkpAwA3AwAgAUE4akEQaiAKKQMANwMAIAFBOGpBCGogCykDADcDACABIAEpA+gGNwM4ELEaQRRBBBD7FyICRQ0CIAJBADYCECACQoCAgIAQNwIIIAJCgYCAgBA3AgAgAUGQBmpBCGoiA0IANwMAIAFBkAZqQRBqIgRCADcDACABQZAGakEYaiIFQQA2AgAgASACNgKsBiABQgA3A5AGIAFB6AZqQShqIgZBgICAgHg2AgAgAUHoBmpBACABQZAGahCfBCABQfAAakEwaiABQegGakEwaiIHKQMANwMAIAFB8ABqQShqIAYpAwA3AwAgAUHwAGpBIGogAUHoBmpBIGoiCCkDADcDACABQfAAakEYaiABQegGakEYaiIJKQMANwMAIAFB8ABqQRBqIAFB6AZqQRBqIgopAwA3AwAgAUHwAGpBCGogAUHoBmpBCGoiCykDADcDACABIAEpA+gGNwNwELEaQRRBBBD7FyICRQ0DIAJBADYCECACQoCAgIAQNwIIIAJCgYCAgBA3AgAgA0IANwMAIARCADcDACAFQQA2AgAgASACNgKsBiABQgA3A5AGIAZBgICAgHg2AgAgAUHoBmpBACABQZAGahCfBCABQagBakEwaiAHKQMANwMAIAFBqAFqQShqIAYpAwA3AwAgAUGoAWpBIGogCCkDADcDACABQagBakEYaiAJKQMANwMAIAFBqAFqQRBqIAopAwA3AwAgAUGoAWpBCGogCykDADcDACABIAEpA+gGNwOoARCxGkEUQQQQ+xciAkUNBCACQQA2AhAgAkKAgICAEDcCCCACQoGAgIAQNwIAIAFBkAZqQQhqIgNCADcDACABQZAGakEQaiIEQgA3AwAgAUGQBmpBGGoiBUEANgIAIAEgAjYCrAYgAUIANwOQBiABQegGakEoaiIGQYCAgIB4NgIAIAFB6AZqQQAgAUGQBmoQnwQgAUHgAWpBMGogAUHoBmpBMGoiBykDADcDACABQeABakEoaiAGKQMANwMAIAFB4AFqQSBqIAFB6AZqQSBqIggpAwA3AwAgAUHgAWpBGGogAUHoBmpBGGoiCSkDADcDACABQeABakEQaiABQegGakEQaiIKKQMANwMAIAFB4AFqQQhqIAFB6AZqQQhqIgspAwA3AwAgASABKQPoBjcD4AEQsRpBFEEEEPsXIgJFDQUgAkEANgIQIAJCgICAgBA3AgggAkKBgICAEDcCACADQgA3AwAgBEIANwMAIAVBADYCACABIAI2AqwGIAFCADcDkAYgBkGAgICAeDYCACABQegGakEAIAFBkAZqEJ8EIAFBmAJqQTBqIAcpAwA3AwAgAUGYAmpBKGogBikDADcDACABQZgCakEgaiAIKQMANwMAIAFBmAJqQRhqIAkpAwA3AwAgAUGYAmpBEGogCikDADcDACABQZgCakEIaiALKQMANwMAIAEgASkD6AY3A5gCELEaQRRBBBD7FyICRQ0GIAJBADYCECACQoCAgIAQNwIIIAJCgYCAgBA3AgAgAUGQBmpBCGoiA0IANwMAIAFBkAZqQRBqIgRCADcDACABQZAGakEYaiIFQQA2AgAgASACNgKsBiABQgA3A5AGIAFB6AZqQShqIgZBgICAgHg2AgAgAUHoBmpBACABQZAGahCfBCABQdACakEwaiABQegGakEwaiIHKQMANwMAIAFB0AJqQShqIAYpAwA3AwAgAUHQAmpBIGogAUHoBmpBIGoiCCkDADcDACABQdACakEYaiABQegGakEYaiIJKQMANwMAIAFB0AJqQRBqIAFB6AZqQRBqIgopAwA3AwAgAUHQAmpBCGogAUHoBmpBCGoiCykDADcDACABIAEpA+gGNwPQAhCxGkEUQQQQ+xciAkUNByACQQA2AhAgAkKAgICAEDcCCCACQoGAgIAQNwIAIANCADcDACAEQgA3AwAgBUEANgIAIAEgAjYCrAYgAUIANwOQBiAGQYCAgIB4NgIAIAFB6AZqQQAgAUGQBmoQnwQgAUGIA2pBMGogBykDADcDACABQYgDakEoaiAGKQMANwMAIAFBiANqQSBqIAgpAwA3AwAgAUGIA2pBGGogCSkDADcDACABQYgDakEQaiAKKQMANwMAIAFBiANqQQhqIAspAwA3AwAgASABKQPoBjcDiAMQsRpBFEEEEPsXIgJFDQggAkEANgIQIAJCgICAgBA3AgggAkKBgICAEDcCACABQZAGakEIaiIDQgA3AwAgAUGQBmpBEGoiBEIANwMAIAFBkAZqQRhqIgVBADYCACABIAI2AqwGIAFCADcDkAYgAUHoBmpBKGoiBkGAgICAeDYCACABQegGakEAIAFBkAZqEJ8EIAFBwANqQTBqIAFB6AZqQTBqIgcpAwA3AwAgAUHAA2pBKGogBikDADcDACABQcADakEgaiABQegGakEgaiIIKQMANwMAIAFBwANqQRhqIAFB6AZqQRhqIgkpAwA3AwAgAUHAA2pBEGogAUHoBmpBEGoiCikDADcDACABQcADakEIaiABQegGakEIaiILKQMANwMAIAEgASkD6AY3A8ADELEaQRRBBBD7FyICRQ0JIAJBADYCECACQoCAgIAQNwIIIAJCgYCAgBA3AgAgA0IANwMAIARCADcDACAFQQA2AgAgASACNgKsBiABQgA3A5AGIAZBgICAgHg2AgAgAUHoBmpBACABQZAGahCfBCABQfgDakEwaiAHKQMANwMAIAFB+ANqQShqIAYpAwA3AwAgAUH4A2pBIGogCCkDADcDACABQfgDakEYaiAJKQMANwMAIAFB+ANqQRBqIAopAwA3AwAgAUH4A2pBCGogCykDADcDACABIAEpA+gGNwP4AxCxGkEUQQQQ+xciAkUNCiACQQA2AhAgAkKAgICAEDcCCCACQoGAgIAQNwIAIAFBkAZqQQhqIgNCADcDACABQZAGakEQaiIEQgA3AwAgAUGQBmpBGGoiBUEANgIAIAEgAjYCrAYgAUIANwOQBiABQegGakEoaiIGQYCAgIB4NgIAIAFB6AZqQQAgAUGQBmoQnwQgAUGwBGpBMGogAUHoBmpBMGoiBykDADcDACABQbAEakEoaiAGKQMANwMAIAFBsARqQSBqIAFB6AZqQSBqIggpAwA3AwAgAUGwBGpBGGogAUHoBmpBGGoiCSkDADcDACABQbAEakEQaiABQegGakEQaiIKKQMANwMAIAFBsARqQQhqIAFB6AZqQQhqIgspAwA3AwAgASABKQPoBjcDsAQQsRpBFEEEEPsXIgJFDQsgAkEANgIQIAJCgICAgBA3AgggAkKBgICAEDcCACADQgA3AwAgBEIANwMAIAVBADYCACABIAI2AqwGIAFCADcDkAYgBkGAgICAeDYCACABQegGakEAIAFBkAZqEJ8EIAFB6ARqQTBqIAcpAwA3AwAgAUHoBGpBKGogBikDADcDACABQegEakEgaiAIKQMANwMAIAFB6ARqQRhqIAkpAwA3AwAgAUHoBGpBEGogCikDADcDACABQegEakEIaiALKQMANwMAIAEgASkD6AY3A+gEELEaQRRBBBD7FyICRQ0MIAJBADYCECACQoCAgIAQNwIIIAJCgYCAgBA3AgAgAUGQBmpBCGoiA0IANwMAIAFBkAZqQRBqIgRCADcDACABQZAGakEYaiIFQQA2AgAgASACNgKsBiABQgA3A5AGIAFB6AZqQShqIgZBgICAgHg2AgAgAUHoBmpBACABQZAGahCfBCABQaAFakEwaiABQegGakEwaiIHKQMANwMAIAFBoAVqQShqIAYpAwA3AwAgAUGgBWpBIGogAUHoBmpBIGoiCCkDADcDACABQaAFakEYaiABQegGakEYaiIJKQMANwMAIAFBoAVqQRBqIAFB6AZqQRBqIgopAwA3AwAgAUGgBWpBCGogAUHoBmpBCGoiCykDADcDACABIAEpA+gGNwOgBRCxGkEUQQQQ+xciAkUNDSACQQA2AhAgAkKAgICAEDcCCCACQoGAgIAQNwIAIANCADcDACAEQgA3AwAgBUEANgIAIAEgAjYCrAYgAUIANwOQBiAGQYCAgIB4NgIAIAFB6AZqQQAgAUGQBmoQnwQgAUHYBWpBMGogBykDADcDACABQdgFakEoaiAGKQMANwMAIAFB2AVqQSBqIAgpAwA3AwAgAUHYBWpBGGogCSkDADcDACABQdgFakEQaiAKKQMANwMAIAFB2AVqQQhqIAspAwA3AwAgASABKQPoBjcD2AUQsRpBFEEEEPsXIgJFDQ4gAkEANgIQIAJCgICAgBA3AgggAkKBgICAEDcCACABQcgGakEIaiIDQgA3AwAgAUHIBmpBEGoiBEIANwMAIAFByAZqQRhqIgVBADYCACABIAI2AuQGIAFCADcDyAYgAUHoBmpBKGoiBkGAgICAeDYCACABQegGakEAIAFByAZqEJ8EIAFBkAZqQTBqIgcgAUHoBmpBMGoiCCkDADcDACABQZAGakEoaiIJIAYpAwA3AwAgAUGQBmpBIGoiCiABQegGakEgaiILKQMANwMAIAFBkAZqQRhqIgwgAUHoBmpBGGoiDSkDADcDACABQZAGakEQaiIOIAFB6AZqQRBqIg8pAwA3AwAgAUGQBmpBCGoiECABQegGakEIaiIRKQMANwMAIAEgASkD6AY3A5AGELEaQRRBBBD7FyICRQ0PIAJBADYCECACQoCAgIAQNwIIIAJCgYCAgBA3AgAgA0IANwMAIARCADcDACAFQQA2AgAgASACNgLkBiABQgA3A8gGIAZBgICAgHg2AgAgAUHoBmpBACABQcgGahCfBCAAQfAHaiAIKQMANwMAIABB6AdqIAYpAwA3AwAgAEHgB2ogCykDADcDACAAQdgHaiANKQMANwMAIABB0AdqIA8pAwA3AwAgAEHIB2ogESkDADcDACAAIAEpA+gGNwPAByAAQYAIahCrAyAAQgA3AzggAEEwaiABQTBqKQMANwMAIABBKGogAUEoaikDADcDACAAQSBqIAFBIGopAwA3AwAgAEEYaiABQRhqKQMANwMAIABBEGogAUEQaikDADcDACAAQQhqIAFBCGopAwA3AwAgACABKQMANwMAIAAgASkDODcDQCAAQcgAaiABQThqQQhqKQMANwMAIABB0ABqIAFBOGpBEGopAwA3AwAgAEHYAGogAUE4akEYaikDADcDACAAQeAAaiABQThqQSBqKQMANwMAIABB6ABqIAFBOGpBKGopAwA3AwAgAEHwAGogAUE4akEwaikDADcDACAAQgA3A3ggAEIANwO4ASAAQbABaiABQfAAakEwaikDADcDACAAQagBaiABQfAAakEoaikDADcDACAAQaABaiABQfAAakEgaikDADcDACAAQZgBaiABQfAAakEYaikDADcDACAAQZABaiABQfAAakEQaikDADcDACAAQYgBaiABQfAAakEIaikDADcDACAAIAEpA3A3A4ABIABB8AFqIAFBqAFqQTBqKQMANwMAIABB6AFqIAFBqAFqQShqKQMANwMAIABB4AFqIAFBqAFqQSBqKQMANwMAIABB2AFqIAFBqAFqQRhqKQMANwMAIABB0AFqIAFBqAFqQRBqKQMANwMAIABByAFqIAFBqAFqQQhqKQMANwMAIAAgASkDqAE3A8ABIABCADcD+AEgAEGwAmogAUHgAWpBMGopAwA3AwAgAEGoAmogAUHgAWpBKGopAwA3AwAgAEGgAmogAUHgAWpBIGopAwA3AwAgAEGYAmogAUHgAWpBGGopAwA3AwAgAEGQAmogAUHgAWpBEGopAwA3AwAgAEGIAmogAUHgAWpBCGopAwA3AwAgACABKQPgATcDgAIgAEIANwO4AiAAQfACaiABQZgCakEwaikDADcDACAAQegCaiABQZgCakEoaikDADcDACAAQeACaiABQZgCakEgaikDADcDACAAQdgCaiABQZgCakEYaikDADcDACAAQdACaiABQZgCakEQaikDADcDACAAQcgCaiABQZgCakEIaikDADcDACAAIAEpA5gCNwPAAiAAQgA3A/gCIABBsANqIAFB0AJqQTBqKQMANwMAIABBqANqIAFB0AJqQShqKQMANwMAIABBoANqIAFB0AJqQSBqKQMANwMAIABBmANqIAFB0AJqQRhqKQMANwMAIABBkANqIAFB0AJqQRBqKQMANwMAIABBiANqIAFB0AJqQQhqKQMANwMAIAAgASkD0AI3A4ADIABCADcDuAMgAEHwA2ogAUGIA2pBMGopAwA3AwAgAEHoA2ogAUGIA2pBKGopAwA3AwAgAEHgA2ogAUGIA2pBIGopAwA3AwAgAEHYA2ogAUGIA2pBGGopAwA3AwAgAEHQA2ogAUGIA2pBEGopAwA3AwAgAEHIA2ogAUGIA2pBCGopAwA3AwAgACABKQOIAzcDwAMgAEIANwP4AyAAQbAEaiABQcADakEwaikDADcDACAAQagEaiABQcADakEoaikDADcDACAAQaAEaiABQcADakEgaikDADcDACAAQZgEaiABQcADakEYaikDADcDACAAQZAEaiABQcADakEQaikDADcDACAAQYgEaiABQcADakEIaikDADcDACAAIAEpA8ADNwOABCAAQgA3A7gEIABB8ARqIAFB+ANqQTBqKQMANwMAIABB6ARqIAFB+ANqQShqKQMANwMAIABB4ARqIAFB+ANqQSBqKQMANwMAIABB2ARqIAFB+ANqQRhqKQMANwMAIABB0ARqIAFB+ANqQRBqKQMANwMAIABByARqIAFB+ANqQQhqKQMANwMAIAAgASkD+AM3A8AEIABCADcD+AQgAEGwBWogAUGwBGpBMGopAwA3AwAgAEGoBWogAUGwBGpBKGopAwA3AwAgAEGgBWogAUGwBGpBIGopAwA3AwAgAEGYBWogAUGwBGpBGGopAwA3AwAgAEGQBWogAUGwBGpBEGopAwA3AwAgAEGIBWogAUGwBGpBCGopAwA3AwAgACABKQOwBDcDgAUgAEIANwO4BSAAQfAFaiABQegEakEwaikDADcDACAAQegFaiABQegEakEoaikDADcDACAAQeAFaiABQegEakEgaikDADcDACAAQdgFaiABQegEakEYaikDADcDACAAQdAFaiABQegEakEQaikDADcDACAAQcgFaiABQegEakEIaikDADcDACAAIAEpA+gENwPABSAAQgA3A/gFIABBsAZqIAFBoAVqQTBqKQMANwMAIABBqAZqIAFBoAVqQShqKQMANwMAIABBoAZqIAFBoAVqQSBqKQMANwMAIABBmAZqIAFBoAVqQRhqKQMANwMAIABBkAZqIAFBoAVqQRBqKQMANwMAIABBiAZqIAFBoAVqQQhqKQMANwMAIAAgASkDoAU3A4AGIABCADcDuAYgAEHwBmogAUHYBWpBMGopAwA3AwAgAEHoBmogAUHYBWpBKGopAwA3AwAgAEHgBmogAUHYBWpBIGopAwA3AwAgAEHYBmogAUHYBWpBGGopAwA3AwAgAEHQBmogAUHYBWpBEGopAwA3AwAgAEHIBmogAUHYBWpBCGopAwA3AwAgACABKQPYBTcDwAYgAEIANwP4BiAAQbAHaiAHKQMANwMAIABBqAdqIAkpAwA3AwAgAEGgB2ogCikDADcDACAAQZgHaiAMKQMANwMAIABBkAdqIA4pAwA3AwAgAEGIB2ogECkDADcDACAAIAEpA5AGNwOAByAAQgA3A/gHIABCADcDuAcgAUGgB2okAA8LQQRBFBDYGQALQQRBFBDYGQALQQRBFBDYGQALQQRBFBDYGQALQQRBFBDYGQALQQRBFBDYGQALQQRBFBDYGQALQQRBFBDYGQALQQRBFBDYGQALQQRBFBDYGQALQQRBFBDYGQALQQRBFBDYGQALQQRBFBDYGQALQQRBFBDYGQALQQRBFBDYGQALQQRBFBDYGQALoTQCUX8HfiMAQYAQayIDJAAgA0GgBGogACABEOwHIAMoAqgEIQQgAygCpAQhAQJAAkACQAJAIAMoAqAEIgVBJ0YNACADLQCsBCEAQcMARQ0BIANBLWogA0GtBGpBwwD8CgAADAELIAMgBDYCpAQgAyABNgKgBAJAIAENAEEAIQRBACEFDAILIABB4ANqIANBoARqEPgLQf8BcSIFQQRHDQFBIiEFCyADIAA6AKwEIAMgBDYCqAQgAyABNgKkBCADIAU2AqAEIAIoAgQhASACKAIAIQACQEHDAEUNACADQa0EaiADQS1qQcMA/AoAAAsCQCAAQYCAgIB4ckGAgICAeEYNACABIABBAnRBBBC+GAsgA0GgBGoQrQdBACECDAELIAMgAikCBDcCgAEgAyACKAIAIgY2AnwgAyAFOgB4IAMgBDYCdCADIAE2AnAgAC0AnA8hByADQSBqIABB4ANqIgEgA0HwAGoQzwsgA0GIAWogAUEAIANB/ABqIAZBgICAgHhGGyADKAIgIgIgAygCJCIEENwIAkACQAJAAkACQAJAAkACQAJAAkACQCABIANB8ABqEPgLQf8BcUF+ag4CAgABCwJAIAZBgICAgHhHDQAgA0GAAmogAEHgC2ogAiAAKAKYDCIBIAIgAUkbIAQgASAEIAFJGyAAKAKcDBDvAkEDIQQCQAJAIAMoAtgCIgBBA0cNAAwBC0ECIQQgAygC6AIhCAJAAkAgAEECRw0ADAELQQEhBAJAIABBAXFFDQAgAykD4AIhVAwCC0EAIQQgAygC3AIhCQsLIAMoAogDIQcgAygCkAMhCiADKAKgAyELIAMoApwDIQwgAygCmAMhDSADQcADaiADQYADaikDADcCACADQbgDaiADQfgCaikDADcCACADIAMpA/ACNwKwAwJAQdgARQ0AIANByANqIANBgAJqQdgA/AoAAAsgAy0A1AEiAEECRg0FIAMtAOwBIgJBA0cNAwwECyADQaAEaiABIAIgBCADQfwAahDBCyADQZgHaiEFQQAhAgNAAkACQCADLQDkB0ECRw0AIANBGGogAygCmAcQqAYgAygCHCEADAELAkAgAygCiAgiAA0AIANBgAJqIAUQlgpBACEAIAMtAIACIgFBA0YNAUEAIQACQANAIAMoAogCIQQCQCABQf8BcUECRg0AAkACQCABQQFxRQ0AIAMtAIECIQEMAQsgAygChAItAAAhAQsgAUEBcUUNACAEDQILIANBgAJqIAUQlgogBCAAaiEAIAMtAIACIgFBA0cNAAwDCwsgAyAEQX9qNgKICAwBCyADIABBf2o2AogIQQAhAAsgA0GAAmogA0GgBGogABCnCgJAAkACQCADKAKAAiIAQYuAgIB4Rg0AIAMoAogCIQggAygChAIhBEEAIQECQCADLQCQAkF9ag4FAAICAgMCCyAAQYKAgIB4Rw0BIAcgCCADKAKMAhCJCCEBDAILIAMtAOQHQQJHDQsCQCADKAKYByIAQYgJaigCACIBRQ0AIABBjAlqKAIAIAFBAnRBBBC+GAsgAEGYCUEIEL4YDAsLIAdBwbbCAEEDEIkIIQELAkACQAJAAkACQCAAQf////8HaiIJQQggCUEKSRsOCQABAwMDAwMDAgMLIARBgICAgHhyQYCAgIB4Rw0DDAILIARBgICAgHhyQYCAgIB4Rg0BDAILIAQhCCAAIQQgAEGAgICAeHJBgICAgHhHDQELIAEgAmohAgwBCyAIIARBARC+GCABIAJqIQIMAAsLIANBgAJqIABB4AZqIAIgACgCmAciASACIAFJGyAEIAEgBCABSRsgACgCnAcQ/QIgA0GgBGpBoAFqIQkCQEH4AEUNACAJIANBiAFqQfgA/AoAAAsCQEGgAUUNACADQaAEaiADQYACakGgAfwKAAALQQAhAkGCgICAeCEAA0AgBCEHIAAhBQJAAkAgAy0AjAZBAkcNACADIAMoAsAFEKgGIAMoAgQhAAwBCwJAIAMoArAGIgANACADQcAKaiAJEJYKQQAhACADLQDACiIBQQNGDQFBACEAAkADQCADKALICiEEAkAgAUH/AXFBAkYNAAJAAkAgAUEBcUUNACADLQDBCiEBDAELIAMoAsQKLQAAIQELIAFBAXFFDQAgBA0CCyADQcAKaiAJEJYKIAQgAGohACADLQDACiIBQQNHDQAMAwsLIAMgBEF/ajYCsAYMAQsgAyAAQX9qNgKwBkEAIQALIANBwApqIANBoARqIAAQ9gQCQCADKALACiIAQYKAgIB4Rg0AIAMoAsgKIQEgAygCxAohBAJAIAVBgoCAgHhHDQAgAkEBaiECIAEhCAwCCwJAAkACQCAFQYGAgIB4Rg0AIABBgYCAgHhGDQBBASEKIAggAUcNAiAHIAQgCBCEE0UNAQwCC0EBIQogBUGBgICAeEcNASAAQYGAgIB4Rw0BC0EAIQoLIAogAmohAiABIQggBUGCgICAeEgNASABIQggBUUNASAHIAVBARC+GCABIQgMAQsLAkAgAygC+AQiAEGDgICAeEgNACAARQ0AIAMoAvwEIABBARC+GAsCQCADLQCMBkECRw0AAkAgAygCwAUiAEGICWooAgAiAUUNACAAQYwJaigCACABQQJ0QQQQvhgLIABBmAlBCBC+GAsgBUGDgICAeEgNCCAFRQ0IIAcgBUEBEL4YDAgLIANBoARqQfgAaiIFIABB4AhqIAIgACgCmAkiASACIAFJGyAEIAEgBCABSRsgACgCnAkQzQICQEH4AEUNACADQaAEaiADQYgBakH4APwKAAALIANB/QVqIQlCACFVQQAhAgNAAkACQCADLQDsBEECRw0AIANBCGogAygCoAQQqAYgAygCDCEADAELAkAgAygCkAUiAA0AIANBgAJqIANBoARqEJYKQQAhACADLQCAAiIBQQNGDQFBACEAAkADQCADKAKIAiEEAkAgAUH/AXFBAkYNAAJAAkAgAUEBcUUNACADLQCBAiEBDAELIAMoAoQCLQAAIQELIAFBAXFFDQAgBA0CCyAEIABqIQAgA0GAAmogA0GgBGoQlgogAy0AgAIiAUEDRw0ADAMLCyADIARBf2o2ApAFDAELIAMgAEF/ajYCkAVBACEACyADQYACaiAFIAAQ5gMCQCADLQCAAkEDRg0AQgAhVAJAAkACQCADLQD8BSIAQX5qDgIBAgALIAkgAygCgAYgAEEBcRsxAAAhVAsgVCADNQKEBn4hVAsgAiBVIAMpA5gFIAMpA8AFIFR8fSJUUmohAiBUIVUMAQsLIAMtAOwEQQJHDQcCQCADKAKgBCIAQYgJaigCACIBRQ0AIABBjAlqKAIAIAFBAnRBBBC+GAsgAEGYCUEIEL4YDAcLIAMoAvQBIQ4CQCACQQJHDQAMAQsgAy0A7QEhBSADKALwASEPCyADKAKgASEQIAMoAqgBIREgAygC6AEhEiADKALkASETIAMoAuABIRQgA0GoCWpBCGogA0GIAWpBDGopAgA3AwAgA0GoCWpBEGogA0GIAWpBFGooAgA2AgAgA0GgBGpBDGogA0G4AWopAwA3AgAgA0GgBGpBFGogA0HAAWopAwA3AgAgA0G8BGogA0HIAWopAwA3AgAgA0HEBGogA0HQAWooAgA2AgAgAyADKQKMATcDqAkgAyADKQOwATcCpAQgAyADKQDVATcDuA4gAyADQdwBaigAADYAvw4gAygCiAEhASADQcAKakEgaiADQaAEakEgaikCADcDACADQcAKakEYaiADQaAEakEYaikCADcDACADQcAKakEQaiADQaAEakEQaikCADcDACADQcAKakEIaiADQaAEakEIaikCADcDACADIAMpAqAENwPACiADKAL4ASEVDAELIAMoAogBIQIQsRpBmAlBCBD7FyIBRQ0BQgAhVQJAIAIoAoABIhNBA0YNACACNQKIAUIghkEAIAIoAoQBIBNBAkYbrYQhVQsgAigCcCEWIAIoAnghFyACKAKUASEYIAIoApABIRkgAigCjAEhGiADQagNakHoAGogAkHoAGopAwA3AwAgA0GoDWpB4ABqIAJB4ABqKQMANwMAIAMgAikDWDcDgA4CQEHYAEUNACADQagNaiACQdgA/AoAAAsCQAJAIAIoAoACIgVBA0cNAEEDIRUMAQtBAiEVIAIoApACIRsCQAJAIAVBAkcNAAwBC0EBIRUCQCAFQQFxRQ0AIAIpA4gCIVYMAgsgAigChAIhHEEAIRULCyACKAKwAiEdIAIoArgCIR4gAigCyAIhHyACKALEAiEgIAIoAsACISEgA0GwDmogAkGoAmopAgA3AgAgA0GoDmogAkGgAmopAgA3AgAgAyACKQKYAjcCoA4CQAJAIAItANADIhJBA0cNAAwBCyACKALYAyEiAkAgEkECRw0ADAELIAItANEDISMgAigC1AMhJAsgAigCwAMhJSACKALIAyEmIAIoAuQDIScgAigC4AMhKCACKALcAyEpIANBoA9qIAJBuANqKQMANwMAIANBmA9qIAJBsANqKQMANwMAIAMgAikDqAM3A5APAkBB2ABFDQAgA0G4DmogAkHQAmpB2AD8CgAACwJAAkAgAigCwAQiBUEDRw0AQQMhKgwBC0ECISogAigC0AQhKwJAAkAgBUECRw0ADAELQQEhKgJAIAVBAXFFDQAgAikDyAQhVwwCCyACKALEBCEsQQAhKgsLIAIoAvAEIS0gAigC+AQhLiACKAKIBSEvIAIoAoQFITAgAigCgAUhMSADQcAPaiACQegEaikCADcCACADQbgPaiACQeAEaikCADcCACADIAIpAtgENwKwD0IAIVgCQCACKAKQBiIQQQNGDQAgAjUCmAZCIIZBACACKAKUBiAQQQJGG62EIVgLIAIoAoAGITIgAigCiAYhMyACKAKkBiE0IAIoAqAGITUgAigCnAYhNiADQagLaiACQfgFaikDADcDACADQaALaiACQfAFaikDADcDACADIAIpA+gFNwOYCwJAQdgARQ0AIANBwApqIAJBkAVqQdgA/AoAAAtBAyEUAkACQCACKAKQByIFQQNHDQBBAyE3DAELQQIhNyACKAKgByE4AkACQCAFQQJHDQAMAQtBASE3AkAgBUEBcUUNACACKQOYByFZDAILIAIoApQHITlBACE3CwsgAigCwAchOiACKALIByE7IAIoAtgHITwgAigC1AchPSACKALQByE+IANByA9qQRRqIAJBuAdqKQIANwIAIANByA9qQQxqIAJBsAdqKQIANwIAIAMgAikCqAc3AswPAkACQCACKAK4CCIFQQNHDQAMAQtBAiEUIAIoAsgIIT8CQAJAIAVBAkcNAAwBC0EBIRQCQCAFQQFxRQ0AIAIpA8AIIVoMAgsgAigCvAghQEEAIRQLCyACKALoCCFBIAIoAvAIIUIgAigCgAkhQyACKAL8CCFEIAIoAvgIIUUgA0HkD2pBFGogAkHgCGopAgA3AgAgA0HkD2pBDGogAkHYCGopAgA3AgAgAyACKQLQCDcC6A8CQEHYAEUNACADQcwMakEEaiACQeAHakHYAPwKAAALAkBB8ABFDQAgA0GgBGpBBGogA0HACmpB8AD8CgAACyACKAKQCSIPQQJ0IQVBACEOIA9B/////wNLDQIgBUH8////B0sNAiACKAKMCSFGAkACQCAFDQBBBCERQQAhRwwBCxCxGkEEIQ4gDyFHIAVBBBD7FyIRRQ0DCwJAIAVFDQAgESBGIAX8CgAACwJAQfAARSIFDQAgA0HYC2ogA0GoDWpB8AD8CgAACyADQbgLakEYaiJGIANBnA5qQRhqKAIANgIAIANBuAtqQRBqIkggA0GcDmpBEGopAgA3AwAgA0G4C2pBCGoiSSADQZwOakEIaikCADcDACADIAMpApwONwO4CwJAIAUNACADQcQKaiADQbgOakHwAPwKAAALIANBoApqQRhqIkogA0GsD2pBGGooAgA2AgAgA0GgCmpBEGoiSyADQawPakEQaikCADcDACADQaAKakEIaiJMIANBrA9qQQhqKQIANwMAIAMgAykCrA83A6AKAkBB9ABFIg4NACADQagJaiADQaAEakH0APwKAAALIANBiAlqQRhqIk0gA0HID2pBGGooAgA2AgAgA0GICWpBEGoiTiADQcgPakEQaikCADcDACADQYgJakEIaiJPIANByA9qQQhqKQIANwMAIAMgAykCyA83A4gJAkBB3ABFIlANACADQawIaiADQcwMakHcAPwKAAALIANBkAhqQRhqIlEgA0HkD2pBGGooAgA2AgAgA0GQCGpBEGoiUiADQeQPakEQaikCADcDACADQZAIakEIaiJTIANB5A9qQQhqKQIANwMAIAMgAykC5A83A5AIAkAgBQ0AIAEgA0HYC2pB8AD8CgAACyABIBg2ApQBIAEgGTYCkAEgASAaNgKMASABIFU3AoQBIAEgEzYCgAEgASAXNgJ4IAEgFjYCcAJAQegARSIFDQAgAUGYAWogAkGYAWpB6AD8CgAACyABIBs2ApACIAEgVjcDiAIgASAcNgKEAiABIBU2AoACIAEgHzYCyAIgASAgNgLEAiABICE2AsACIAEgHjYCuAIgASAdNgKwAiABIAMpA7gLNwKUAiABQZwCaiBJKQMANwIAIAFBpAJqIEgpAwA3AgAgAUGsAmogRigCADYCAAJAIA4NACABQcwCaiADQcAKakH0APwKAAALIAEgJzYC5AMgASAoNgLgAyABICk2AtwDIAEgIjYC2AMgASAkNgLUAyABICM6ANEDIAEgEjoA0AMgASAmNgLIAyABICU2AsADAkBB2ABFDQAgAUHoA2ogAkHoA2pB2AD8CgAACyABICs2AtAEIAEgVzcDyAQgASAsNgLEBCABICo2AsAEIAEgLzYCiAUgASAwNgKEBSABIDE2AoAFIAEgLjYC+AQgASAtNgLwBCABIAMpA6AKNwLUBCABQdwEaiBMKQMANwIAIAFB5ARqIEspAwA3AgAgAUHsBGogSigCADYCAAJAIA4NACABQYwFaiADQagJakH0APwKAAALIAEgNDYCpAYgASA1NgKgBiABIDY2ApwGIAEgWDcClAYgASAQNgKQBiABIDM2AogGIAEgMjYCgAYCQCAFDQAgAUGoBmogAkGoBmpB6AD8CgAACyABIDg2AqAHIAEgWTcDmAcgASA5NgKUByABIDc2ApAHIAEgPDYC2AcgASA9NgLUByABID42AtAHIAEgOzYCyAcgASA6NgLAByABIAMpA4gJNwKkByABQawHaiBPKQMANwIAIAFBtAdqIE4pAwA3AgAgAUG8B2ogTSgCADYCAAJAIFANACABQdwHaiADQawIakHcAPwKAAALIAEgPzYCyAggASBaNwPACCABIEA2ArwIIAEgFDYCuAggASAPNgKQCSABIBE2AowJIAEgRzYCiAkgASBDNgKACSABIEQ2AvwIIAEgRTYC+AggASBCNgLwCCABIEE2AugIIAEgAykDkAg3AswIIAFB1AhqIFMpAwA3AgAgAUHcCGogUikDADcCACABQeQIaiBRKAIANgIACwJAQdgARQ0AIANBoARqIANByANqQdgA/AoAAAsgA0GUBWogA0GsA2pBCGopAgA3AgAgA0GcBWogA0GsA2pBEGopAgA3AgAgA0GkBWogA0GsA2pBGGooAgA2AgAgA0HUBWogA0GoCWpBCGopAwA3AgAgA0HcBWogA0GoCWpBEGooAgA2AgAgAyAINgKIBSADIFQ3A4AFIAMgCTYC/AQgAyAENgL4BCADIAE2AsgFIAMgCzYCwAUgAyAMNgK8BSADIA02ArgFIAMgCjYCsAUgAyAHNgKoBSADIAMpAqwDNwKMBSADIAMpA6gJNwLMBSADQfQFaiADQcAKakEIaikDADcCACADQfwFaiADQcAKakEQaikDADcCACADQYQGaiADQcAKakEYaikDADcCACADQYwGaiADQeAKaikDADcCACADQZwGaiADKAC/DjYAACADIBE2AugFIAMgEDYC4AUgAyAAOgCUBiADIBQ2AqAGIAMgEzYCpAYgAyASNgKoBiADIA82ArAGIAMgDjYCtAYgAyAVNgK4BiADIAU6AK0GIAMgAjoArAYgAyADKQPACjcC7AUgAyADKQO4DjcAlQYgA0HIBWohBEIAIVQDQAJAAkAgAEH/AXFBAkcNACADQRBqIAMoAsgFEKgGIAMoAhQhAAwBCwJAIAMoArgGIgANACADQcAKaiAEEJYKQQAhACADLQDACiIBQQNGDQFBACEAAkADQCADKALICiECAkAgAUH/AXFBAkYNAAJAAkAgAUEBcUUNACADLQDBCiEBDAELIAMoAsQKLQAAIQELIAFBAXFFDQAgAg0CCyADQcAKaiAEEJYKIAIgAGohACADLQDACiIBQQNHDQAMAwsLIAMgAkF/ajYCuAYMAQsgAyAAQX9qNgK4BkEAIQALIANBwApqIANBoARqIAAQlgMCQCADKALACiIAQQNGDQACQCAAQQJGDQACQAJAIABB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lAQLIAgoAtACIglBJ0YNCyAAIAgpA/gCNwMoIAhBsAJqIgYgCEHQAmpBJGooAgA2AgAgCEGoAmoiAiAIQdACakEcaikCADcDACAIQaACaiIDIAhB0AJqQRRqKQIANwMAIAhBmAJqIgEgCEHQAmpBDGopAgA3AwAgAEEwaiAIQdACakEwaikDADcDACAAQThqIAhB0AJqQThqKQMANwMAIABBwABqIAhB0AJqQcAAaikDADcDACAAQcgAaiAIQdACakHIAGopAwA3AwAgCCAIKQLUAjcDkAIgAEEkaiAGKAIANgIAIABBHGogAikDADcCACAAQRRqIAMpAwA3AgAgAEEMaiABKQMANwIAIAAgCCkDkAI3AgQgACAJNgIADBcLIAlBgICAgHhHDQAgCEHQAmogASACIAMgBCAFKAIEQQIQtQQMAgsgCEHIAWogBUH03MIAENMRCyAIQdACaiABIAIgAyAEIAhByAFqQQIQlAQLIAgoAtACIglBJ0YNCCAAIAgpA/gCNwMoIAhBsAJqIgYgCEHQAmpBJGooAgA2AgAgCEGoAmoiAiAIQdACakEcaikCADcDACAIQaACaiIDIAhB0AJqQRRqKQIANwMAIAhBmAJqIgEgCEHQAmpBDGopAgA3AwAgAEEwaiAIQdACakEwaikDADcDACAAQThqIAhB0AJqQThqKQMANwMAIABBwABqIAhB0AJqQcAAaikDADcDACAAQcgAaiAIQdACakHIAGopAwA3AwAgCCAIKQLUAjcDkAIgAEEkaiAGKAIANgIAIABBHGogAikDADcCACAAQRRqIAMpAwA3AgAgAEEMaiABKQMANwIAIAAgCCkDkAI3AgQgACAJNgIADBMLIAlBgICAgHhHDQAgCEHQAmogASACIAMgBCAFKAIEQQMQtQQMAgsgCEHIAWogBUH03MIAENMRCyAIQdACaiABIAIgAyAEIAhByAFqQQMQlAQLIAgoAtACIglBJ0YNBSAAIAgpA/gCNwMoIAhBsAJqIgYgCEHQAmpBJGooAgA2AgAgCEGoAmoiAiAIQdACakEcaikCADcDACAIQaACaiIDIAhB0AJqQRRqKQIANwMAIAhBmAJqIgEgCEHQAmpBDGopAgA3AwAgAEEwaiAIQdACakEwaikDADcDACAAQThqIAhB0AJqQThqKQMANwMAIABBwABqIAhB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AJEdRQ0AQQwhBgwBCwJAIAAtAJAdRQ0AQQ0hBgwBCwJAIAAtAI8dRQ0AQQ4hBgwBCwJAIAAtAI4dRQ0AQQ8hBgwBCwJAIAAtAI0dRQ0AQRAhBgwBCwJAIAAtAIwdRQ0AQREhBgwBCwJAIAAtAIsdRQ0AQRIhBgwBCwJAIAAtAIodRQ0AQRMhBgwBCwJAIAAtAIkdRQ0AQRQhBgwBCwJAIAAtAIgdRQ0AQRUhBgwBCwJAIAAtAIcdRQ0AQRYhBgwBCwJAIAAtAIYdRQ0AQRchBgwBCwJAIAAtAIUdRQ0AQRghBgwBCwJAIAAtAIQdRQ0AQRkhBgwBCwJAIAAtAIMdRQ0AQRohBgwBCwJAIAAtAIIdRQ0AQRshBgwBC0EcQR0gAC0AgR0bIQYLAkAgAC0AvR0NAAJAIAAtALwdRQ0AQQEhBQwBCwJAIAAtALsdRQ0AQQIhBQwBCwJAIAAtALodRQ0AQQMhBQwBCwJAIAAtALkdRQ0AQQQhBQwBCwJAIAAtALgdRQ0AQQUhBQwBCwJAIAAtALcdRQ0AQQYhBQwBCwJAIAAtALYdRQ0AQQchBQwBCwJAIAAtALUdRQ0AQQghBQwBCwJAIAAtALQdRQ0AQQkhBQwBCwJAIAAtALMdRQ0AQQohBQwBCwJAIAAtALIdRQ0AQQshBQwBCwJAIAAtALEdRQ0AQQwhBQwBCwJAIAAtALAdRQ0AQQ0hBQwBCwJAIAAtAK8dRQ0AQQ4hBQwBCwJAIAAtAK4dRQ0AQQ8hBQwBCwJAIAAtAK0dRQ0AQRAhBQwBCwJAIAAtAKwdRQ0AQREhBQwBCwJAIAAtAKsdRQ0AQRIhBQwBCwJAIAAtAKodRQ0AQRMhBQwBCwJAIAAtAKkdRQ0AQRQhBQwBCwJAIAAtAKgdRQ0AQRUhBQwBCwJAIAAtAKcdRQ0AQRYhBQwBCwJAIAAtAKYdRQ0AQRchBQwBCwJAIAAtAKUdRQ0AQRghBQwBCwJAIAAtAKQdRQ0AQRkhBQwBCwJAIAAtAKMdRQ0AQRohBQwBCwJAIAAtAKIdRQ0AQRshBQwBC0EcQR0gAC0AoR0bIQULQZ4CIAZrIQNBACEHAkBBwAJFDQAgBEHEAmpBAEHAAvwLAAsgBEEEaiADaiEIAkAgBkEiaiIJRQ0AIAhBACAJ/AsACwJAIANFDQAgBEEEaiAAQYAbaiAD/AoAAAsC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AkADQCAIIARqIgJBIGogAikAADcAACACQThqIAJBGGopAAA3AAAgAkEwaiACQRBqKQAANwAAIAJBKGogAkEIaikAADcAAAJAIAQNACAIIQIMAgsgA0HwAGogBEFgaiIEIAhqIgJBIBCEE0EASA0ACyACQSBqIQILIAIgAykDcDcAACACQRhqIBEpAwA3AAAgAkEQaiAKKQMANwAAIAJBCGogCykDADcAAAsgCUEgaiEJIAchBCAHQSBqIgIgDUcNAAsLELEaAkBB6AJBBBD7FyITRQ0AIBNBADsB5gIgE0EANgLgAiADIAggDEEFdGoiCzYCfCADIA42AnggAyAINgJ0IAMgCDYCcCADQYEBaiERQQIhCkEAIRBBACEUIBMhAgNAAkACQCAKQf8BcUECRg0AIANB6AFqQRhqIBFBGGopAAA3AwAgA0HoAWpBEGogEUEQaikAADcDACADQegBakEIaiARQQhqKQAANwMAIAMgESkAADcD6AEgCkEBcQ0BDAYLIAggC0YNBSADQegBakEIaiAIQQhqKQAANwMAIANB6AFqQRBqIAhBEGopAAA3AwAgA0HoAWpBGGogCEEYaikAADcDACADIAhBIGoiBDYCdCADIAgpAAA3A+gBIAQhCAsgA0HIAWpBGGoiDCADQegBakEYaikDADcDACADQcgBakEQaiIOIANB6AFqQRBqKQMANwMAIANByAFqQQhqIg8gA0HoAWpBCGopAwA3AwAgAyADKQPoATcDyAECQAJAIAggC0cNAEEAIQoMAQsgAyAIQSBqIgc2AnQgESAIKQAANwAAIBFBCGoiCSAIQQhqIgQpAAA3AAAgEUEQaiINIAhBEGoiEikAADcAACARQRhqIgogCEEYaiIVKQAANwAAAkAgA0HIAWogEUEgEIQTRQ0AQQEhCiAHIQgMAQsgDyAEKQAANwMAIA4gEikAADcDACAMIBUpAAA3AwAgAyAIKQAANwPIAQJAAkAgByALRw0AQQAhCiAHIQgMAQsCQANAIBEgByIEKQAANwAAIAogBEEYaikAADcAACANIARBEGopAAA3AAAgCSAEQQhqKQAANwAAAkAgA0HIAWogEUEgEIQTRQ0AQQEhCgwCCyAPIAkpAAA3AwAgDiANKQAANwMAIAwgCikAADcDACADIBEpAAA3A8gBIARBIGoiByALRw0AC0EA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RyEUQQApA/i9RyETDAELIANBuARqEOkSQQBCATcD8L1HQQAgAykDwAQiFDcDgL5HIAMpA7gEIRMLQQAgE0IBfDcD+L1HIANB0AFqQSBqQQApA6DKQCIXNwMAIANB0AFqQShqQQApA6jKQCIWNwMAIANB0AFqQQhqIANB6ANqQQhqKQIAIhg3AwAgA0HQAWpBEGogA0HoA2pBEGopAgAiGTcDACADQdABakEYaiADQegDakEYaikCACIaNwMAIAMgAykC6AMiGzcD0AEgAEEoaiAWNwMAIABBIGogFzcDACAAQRhqIBo3AwAgAEEQaiAZNwMAIABBCGogGDcDACAAIBs3AwAgACAUNwM4IAAgEzcDMAwBCyADKAKIASEGIAMoAowBIQUgA0GOgICAeDYCkAEgAyAGIAVBBHRqNgLIAiADIAY2AsQCIANBADYCwAIgAyABNgK8AiADIANBkAFqNgLMAiADQegDaiADQbwCaiADQZABahDLBwJAAkAgAygC6AMiBkEIRg0AIANBuARqQThqIgUgA0GkBGooAgA2AgAgA0G4BGpBMGoiByADQZwEaikCADcDACADQbgEakEoaiIEIANBlARqKQIANwMAIANBuARqQSBqIgogA0GMBGopAgA3AwAgA0G4BGpBGGoiCCADQYQEaikCADcDACADQbgEakEQaiIJIANB/ANqKQIANwMAIANBuARqQQhqIgEgA0H0A2opAgA3AwAgAyADKQLsAzcDuAQgBkEHRg0AIANB0AJqQThqIAUoAgA2AgAgA0HQAmpBMGogBykDADcDACADQdACakEoaiAEKQMANwMAIANB0AJqQSBqIAopAwA3AwAgA0HQAmpBGGogCCkDADcDACADQdACakEQaiAJKQMANwMAIANB0AJqQQhqIAEpAwA3AwAgAyADKQO4BDcD0AIQsRpBgAJBCBD7FyIIRQ0JIAggBjYCACAIIAMpA9ACNwIEIAhBDGogA0HQAmpBCGopAwA3AgAgCEEUaiADQdACakEQaikDADcCACAIQRxqIANB0AJqQRhqKQMANwIAIAhBJGogA0HQAmpBIGopAwA3AgAgCEEsaiADQdACakEoaikDADcCACAIQTRqIANB0AJqQTBqKQMANwIAIAhBPGogA0HQAmpBOGooAgA2AgBBASEHIANBATYCsAIgAyAINgKsAiADQQQ2AqgCIANBkANqQRBqIANBvAJqQRBqKAIAIgY2AgAgA0GQA2pBCGogA0G8AmpBCGopAgA3AwAgAyADKQK8AjcDkAMgA0HoA2ogA0GQA2ogBhDLBwJAIAMoAugDIgRBCEYNACADQegDakEEciEFQcQAIQpBASEHA0AgA0G4BGpBOGoiBiAFQThqKAIANgIAIANBuARqQTBqIgkgBUEwaikCADcDACADQbgEakEoaiIBIAVBKGopAgA3AwAgA0G4BGpBIGoiEiAFQSBqKQIANwMAIANBuARqQRhqIg4gBUEYaikCADcDACADQbgEakEQaiINIAVBEGopAgA3AwAgA0G4BGpBCGoiCyAFQQhqKQIANwMAIAMgBSkCADcDuAQgBEEHRg0BIANBqANqQThqIhEgBigCADYCACADQagDakEwaiIQIAkpAwA3AwAgA0GoA2pBKGoiCSABKQMANwMAIANBqANqQSBqIgEgEikDADcDACADQagDakEYaiISIA4pAwA3AwAgA0GoA2pBEGoiDiANKQMANwMAIANBqANqQQhqIg0gCykDADcDACADIAMpA7gENwOoAwJAIAcgAygCqAJHDQAgA0GoAmogB0EBQQhBwAAQgwwgAygCrAIhCAsgCCAKaiIGQXxqIAQ2AgAgBkEIaiANKQMANwIAIAYgAykDqAM3AgAgBkEQaiAOKQMANwIAIAZBGGogEikDADcCACAGQSBqIAEpAwA3AgAgBkEoaiAJKQMANwIAIAZBMGogECkDADcCACAGQThqIBEoAgA2AgAgAyAHQQFqIgc2ArACIANB6ANqIANBkANqIAMoAqADEMsHIApBwABqIQogAygC6AMiBEEIRw0ACwsgAygCqAIhBCADKAKsAiEKIAMoApABIgVBjoCAgHhGDQEgAygCmAEhEiADKAKUASEIIAohBgNAIAYQ4w4gBkHAAGohBiAHQX9qIgcNAAsgBEUNBSAKIARBBnRBCBC+GAwFCyADKAKQASIFQY6AgIB4Rw0DQQghCkEAIQdBACEECyADIAc2AswBIAMgCjYCyAEgAyAENgLEASAAQQRqIANBxAFqEPUFIABBBjYCAAsgA0GAAWoQygsLAkAgAygCFCIGQYQISQ0AIAYQrxELIAMpAygiE0IFUQ0EIBOnDgMCBwMHCyADKAKYASESIAMoApQBIQgLIAAgCDYCCCAAIAU2AgQMBgsgA0EwahC6DgwECyADQTBqEOwEDAMLIBVCBVINAQwCC0EIQYACQYjKwAAQ5hYACyADQTBqEMoLCyACQYMITQ0EDAMLIABBBzYCACAAIBI2AgwgA0GAAWoQygsCQCADKAIUIgZBhAhJDQAgBhCvEQsgAykDKCITQgVRDQEgA0EoakEIaiEGAkACQCATpw4DAAMBAwsgBhC6DgwCCyAGEOwEDAELIAMoAhQiBkGECEkNACAGEK8RCyACQYMITQ0BCyACEK8RCyADQYAFaiQAC6wqAid/Bn4jAEGgCWsiAyQAIAEQ9wMgAkEDdCEEAkACQAJAAkACQAJAAkACQAJAIAINAEEIIQVBCCEGDAELELEaIARBCBD8FyIFRQ0CELEaIARBCBD8FyIGRQ0BCyABKAJoIgetQrACfiIqpyEIQQAhCQJAICpCIIinDQAgCEH4////B0sNAAJAAkAgCA0AQQghCiAHIQlBACEHDAELELEaQQghCSAIQQgQ+xciCkUNASABKAJoIQkLIANBADYCECADIAo2AgwgAyAHNgIIIANBADYCHCADQQA2AhQgASgCYCEHIAMgASgCZCIIIAlB0ABsajYCLCADIAc2AiggAyAINgIkIAMgCDYCICAJRQ0EIAFBNGohCyADQf0EaiEMIANB6ARqQQRqIQ0gA0GUCGpBBGohDiADQfkHaiEPIANB2AdqQRBqIRAgA0HYB2pBDGohESADQbQHaiESIANBkAZqQRhqIRMgA0HEAWohFEEAIRUCQANAIANBwABqQQhqIgcgCEEIaikDADcDACADQcAAakEQaiIWIAhBEGopAwA3AwAgA0HAAGpBGGoiFyAIQRhqKQMANwMAIANBwABqQSBqIhggCEEgaikDADcDACADQcAAakEoaiIZIAhBKGopAwA3AwAgA0HAAGpBMGoiGiAIQTBqKQMANwMAIANBwABqQThqIhsgCEE4aikDADcDACADIAhB0ABqNgIkIAMgCCkDADcDQCAIKAJAIQkgA0EwakEIaiIcIAhBzABqKAIANgIAIAMgCCkCRDcDMCAJQYCAgIB4Rg0GIANBgAFqQThqIBspAwA3AwAgA0GAAWpBMGogGikDADcDACADQYABakEoaiAZKQMANwMAIANBgAFqQSBqIgggGCkDADcDACADQYABakEYaiAXKQMANwMAIANBgAFqQRBqIBYpAwA3AwAgA0GAAWpBCGogBykDADcDACADIAMpA0A3A4ABIAMgCTYCwAEgFCADKQMwNwIAIBRBCGogHCgCADYCAAJAIAgoAgAiCCACSQ0AIABBATsBAAwICwJAIAYgCEEDdCIJaiIIKQMAQgF8IiogAykDgAFRDQAgAEGBAjsBAAwICyAIICo3AwAgAykDmAFCAFENBSADKQOIASIqIAUgCWoiCSkDAFQNBSADKAKkASEIIAkgKjcDAAJAAkACQAJAAkAgCCABKAJ0IglPDQAgASgCcCAIQShsaiIIKQIYISogCEGBgICAeDYCGCADQYgFakEIaiAIQSBqKAIANgIAIAMgKjcDiAUgA0GQBmogA0GIBWogA0GAAWogCxBtIAMpA6AGISogAykDmAYhKwJAIAMpA5AGIixCAlINACADQZADakEIaiATQQhqKQMANwMAIANBkANqQRBqIBNBEGotAAA6AAAgAyATKQMANwOQAwwDCwJAQfQARSIIDQAgA0GYBWogE0H0APwKAAALIANBiAlqQQhqIh0gEkEIaikCADcDACADQYgJakEQaiIeIBJBEGooAgA2AgAgAyASKQIANwOICSADKAKwByEaIAMoAqwHIR8gAygCqAchICADKAKkByEcIAMoAqAHISEgAygCnAchIgJAIAgNACADQZQIaiADQZgFakH0APwKAAALIAMpA4gBIS0gA0GYBWpBEGogHigCADYCACADQZgFakEIaiAdKQMANwMAIAMgAykDiAk3A5gFQQEhFgJAAkACQAJAIBpFDQAQsRogGkEBEPsXIhZFDQELICsgLUIBfCAsp0EBcRshLSAqpyEjQQAhCCADQQA2AtQHIAMgFjYC0AcgAyAaNgLMByADKALIASIZrSEqA0AgKqdB/wBxICpC/wBWIglBB3RyIQcCQCADKALMByAIRw0AIANBzAdqIAhBAUEBQQEQhwwgAygC0AchFiADKALUByEICyAqQgeIISogFiAIaiAHOgAAIAMgCEEBaiIINgLUByAJDQALIBlBBXQhF0EAIQkgGUH///8/Sw0BIBdBAEgNASADKALEASEWAkACQCAXDQBBASEbQQAhJAwBCxCxGkEBIQkgGSEkIBdBARD7FyIbRQ0CCwJAIBlFDQAgGyEJIBkhGANAIBUgFigCACIH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AAALIAMgETYCWCADIAQ2AlQgAyANNgJQDAELIANBgICAgHg2AlALIANBGGogAiADQcgAahDPCyADQbAKaiACIAMoAhggAygCHCADQdAAaiASLQCcDxD5CyADQdAAaiADQbAKahDhAQJAIAMoAlAiAkEFRg0AA0AgCCAJKQIANwIAIAhBEGogCUEQaikCADcCACAIQQhqIAlBCGopAgA3AgAgAyACNgLYCQJAAkAgAkEERw0AIAMoAuAJIQIgAygC3AkhBSADKALkCSESIAMgFDYCYCADIBM2AlwgAyASNgJUIANBgICAgHg2AlAgA0G8FWogBiAFIAIgA0HQAGoQvQEgAygCvBUiAkGCgICAeEgNASACRQ0BIAMoAsAVIAJBARC+GAwBCwJAIAMoAuQJIgVFDQAgAygC6AkgBUEBEL4YCwJAAkACQAJAIAIOBAQBAgAECyADKALcCSICIAIoAgAiAkF/ajYCAAJAIAJBAUcNACAIEPATCyADKALgCSICIAIoAgAiBUF/ajYCACAHIQIgBUEBRw0DDAILIAMoAtwJIgIgAigCACIFQX9qNgIAIAghAiAFQQFGDQEMAgsgAygC3AkiAiACKAIAIgVBf2o2AgAgCCECIAVBAUcNAQsgAhDwEwsgA0HQAGogA0GwCmoQ4QEgAygCUCICQQVHDQALCyADQbAKahDsCyADKAI8IQQgAygCOCEFDAULIBAgBUGAmcIAEOYWAAsgCyASQYCZwgAQ5hYAC0EAIQsMAwsgA0GwCmoQow0MAQtBgICAgHghEQJAAkACQAJAIAEoAjRBgICAgHhGDQAgASgCPCINQQJ0IRJBACELIA1B/////wNLDQEgEkH8////B0sNASABKAI4IQ4CQAJAIBINAEEEIRBBACERDAELELEaQQQhCyANIREgEkEEEPsXIhBFDQILAkAgEkUNACAQIA4gEvwKAAALIA2tQiCGIBCthCEbCyADQQhqIAIgA0HIAGoQzwsgAygCDCESIAMoAgghDSADIBs3AlggAyARNgJUIANBgICAgHg2AlAgA0GwCmogAiANIBIgA0HQAGoQjQYgA0HQAGogA0GwCmoQoQIgAygCdEGBgICAeEYNAgNAIANB2AlqQTBqIANB0ABqQTBqKQMANwMAIANB2AlqQShqIANB0ABqQShqKQMANwMAIANB2AlqQSBq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IBgQqwsgA0EEOgBgAkAgAygCKEGAgICAeEcNACADQcAAakEIaiADQeAAakEIaigCACIHNgIAIAMgAykCYCIdNwNAIABBCGogBzYCACAAIB03AgAgAEECNgJwDAILIANBEGpBCGoiESADQShqQQhqIgcoAgA2AgAgAyADKQIoNwMQIANB4ABqELAPIANBwABqQQhqIBEoAgAiETYCACADQdAAakEIaiARNgIAIAMgAykDEDcDUCADQeAAaiADQdAAahD3ByAHIANB7ABqKAIANgIAIAMgAykCZDcDKAJAIAMoAmAiEUECRw0AIAAgAykDKDcCACAAQQI2AnAgAEEIaiAHKAIANgIADAILQn8gIYZCACAQG0IAIBNBP0sbICCEIR0gGSAVaiEQIA8gGWohByADQeAAakEQaiEPAkBB5ABFIhINACADQdQBaiAPQeQA/AoAAAsgA0G4AmpBCGoiEyADQShqQQhqKAIANgIAIAMgAykDKDcDuAIgA0HsAGogAkEIaikCADcCACADQfQAaiACQRBqKQIANwIAIANB4ABqQRxqIAJBGGopAgA3AgAgA0HgAGpBJGogAkEgaikCADcCACADQeAAakEsaiACQShqKQIANwIAIABBADYCECAAQgE3AwggAEIBNwMAIAMgAikCADcCZCAAIAMpAmA3AhQgAEEcaiADQeAAakEIaikCADcCACAAQSRqIA8pAgA3AgAgAEEsaiADQeAAakEYaikCADcCACAAQTRqIANB4ABqQSBqKQIANwIAIABBPGogA0HgAGpBKGopAgA3AgAgAEHEAGogA0GQAWooAgA2AgAgASkCCCEgIAAgETYCcCAAIBA2AmwgACAHNgJoIAAgBzYCZCAAIBk2AmAgACAdNwNYIAAgHjcDUCAAIB83A0ggACADKQO4AjcCdCAAQfwAaiATKAIANgIAAkAgEg0AIABBgAFqIANB1AFqQeQA/AoAAAsgACANNgLsASAAIAw2AugBIAAgBjYC5AEgACAgNwOAAiAAQYCAgIB4NgL8ASAAIAMpAgQ3AvABIABB+AFqIANBBGpBCGooAgA2AgACQCAWDQAgAEEANgKoAiAAIBw3A6ACIAAgDjYCnAIgACAFNgKYAiAAIAQ7AZYCIAAgCDsBlAIgAEGAgICAeDYCiAICQCAXRQ0AIBogF0EMbEEEEL4YCyAJ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xcAAENoYAAsgCiAEKQPIATcDACAKQRBqIBspAwA3AwAgCkEIaiASKQMANwMAIARBAzoAMCAEQfABaiAGIAUgByAEQaADaiAEQbADaiAEQTBqELMBIAQoAvABIhtBJ0YNBSAEQcYBaiAEQf8Bai0AADoAACAEQYgBaiAEQfABakEYaikDADcDACAEQZABaiAEQfABakEgaikDADcDACAEQYABakEYaiAEQfABakEoaikDADcDACAEQYABakEgaiAEQfABakEwaikDADcDACAEQYABakEoaiAEQfABakE4aikDADcDACAEQYABakEwaiAEQbACaikDADcDACAEQYABakE4aiAEQbgCaikDADcDACAEIAQvAP0BOwHEASAEIAQpA4ACNwOAASAEKQL0ASIfQoB+gyEgIAQtAPwBIQMgH6chGgsgACADOgAUIAAgGzYCCCAAQgI3AwAgACAELwHEATsAFSAAIAQpA4ABNwMYIABBF2ogBEHGAWotAAA6AAAgAEEgaiAEQYgBaikDADcDACAAQShqIARBkAFqKQMANwMAIABBMGogBEGYAWopAwA3AwAgAEE4aiAEQYABakEgaikDADcDACAAQcAAaiAEQYABakEoaikDADcDACAAQcgAaiAEQYABakEwaikDADcDACAAQdAAaiAEQYABakE4aikDADcDACAAICAgGq1C/wGDhDcCDAwCCyAEQdgCakEIaiALQQhqKAIANgIAIAQgCykCADcD2AIgBCgCSCEaIAQoAkQhGyAELwFCIR0gBC8BQCEDIAQpAzghHwsgA0H//wNxQQNGDQIgCCAEKQPYAjcCACAIQQhqIARB2AJqQQhqKAIANgIAIAQgGjYCQCAEIBs2AjwgBCAdOwE6IAQgAzsBOCAEIB83AzAgBEEANgLoAiAEIB42AuwCIAQgHiAcQQR0ajYC8AIgBEHwAWogASAEQTBqIARB6AJqEJoBIAQpA/ABIh9CBVENAQJAQdAARQ0AIABBCGogBEHwAWpBCGpB0AD8CgAACyAAIB83AwAgBC8BOCIDQQJGDQAgA0UNACAEKAI8IgNFDQAgBCgCQCADQQEQvhgLAkAgHEUNACAeIQMDQAJAIAMoAgAiGkGAgICAeEYNACAaRQ0AIANBBGooAgAgGkEBEL4YCwJAIANBDGooAgAiGkGECEkNACAaEK8RCyAD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hIiQoMCAf4M3AxggA0EMaiADQRhqEIkHIAMoAhAhHQJAAkACQCADKAIUIgRBAkkNAAJAIARBFUkNACAdIAQgA0GoAWoQ8Q4gAygCDCEeDAILIB0gBBDTCyADKAIMIR4MAQsgAygCDCEeIARFDQELIB0gBEEDdGohHyAdIQQDQCAEKAIAISBBACEhQQAhGkEAIRhBACEiAkACQAJAAkAgBEEEaigCACIjKAIAQXxqIhlBAyAZQQNJGw4EAAMBAgALIANBgAJqICNBCGoQ7AUgE0EQaiADQYACakEQaikDADcAACATQQhqIANBgAJqQQhqKQMANwAAIBMgAykDgAI3AAAgA0GoAWpBCGogDykAADcDACADQagBakEQaiADQdgCakEQaikAADcDACADQagBakEWaiADQdgCakEWaikAADcBACADIAMpANgCNwOoAUEDIRhBBCEaQQEhIQwCC0EAISFBAiEaQQAhGEECISIMAQtBACEhQQMhGkEAIRhBAyEiCyADQThqQS5qIiQgA0GoAWpBLmopAQA3AQAgA0E4akEoaiIlIANBqAFqQShqKQMANwMAIANBOGpBIGoiJiAMKQMANwMAIANBOGpBGGoiJyADQagBakEYaikDADcDACADQThqQRBqIiggA0GoAWpBEGopAwA3AwAgA0E4akEIaiIpIANBqAFqQQhqIiopAwA3AwAgAyADKQOoATcDOAJAAkACQAJAAkACQCAHKQMQIAcoAogMIhmtfCItQoCAgIAQWg0AIAkgGUsNASAHKALYCyErIC2nISwgA0G4AmogIEHkzsIAENMRIBAgAykDODcBACAQQQhqICkpAwA3AQAgEEEQaiAoKQMANwEAIBBBGGogJykDADcBACAQQSBqICYpAwA3AQAgEEEoaiAlKQMANwEAIBBBLmogJCkBADcBACADICI6AIECIAMgGDoAgAIgGSAKaiEZAkACQAJAAkACQCAYDgQAAQIDAAsgA0HYAmpBMGogA0GAAmpBMGopAwA3AwAgA0HYAmpBKGogA0GAAmpBKGopAwA3AwAgA0HYAmpBIGogA0GAAmpBIGopAwA3AwAgA0HYAmpBGGogA0GAAmpBGGopAwA3AwAgA0HYAmpBEGogA0GAAmpBEGopAwA3AwAgDyADQYACakEIaikDADcDACADIAMpA4ACNwPYAgwDCyADQQE6ANgCDAILIANB2AJqQTBqIANBgAJqQTBqKQMANwMAIANB2AJqQShqIANBgAJqQShqKQMANwMAIANB2AJqQSBqIANBgAJqQSBqKQMANwMAIANB2AJqQRhqIANBgAJqQRhqKQMANwMAIANB2AJqQRBqIANBgAJqQRBqKQMANwMAIA8gA0GAAmpBCGopAwA3AwAgAyADKQOAAjcD2AIMAQsgDyASEOwFIANBAzoA2AILIANB8ABqIANB2AJqEIEHICogA0HwAGpBCGopAwA3AwAgDSAOKQIANwIAIA1BCGogDkEIaigCADYCACADIAMpA3A3A6gBIAMtAIEBIRggAy0AgAEhIiAMQQhqIANBuAJqQQhqKAIANgIAIAwgAykCuAI3AgAgA0EAOgD5ASADQQA2AugBIANCgICAgMAANwPgASADQQA6APgBIAMgGTYC9AEgA0EANgLwASADICI6AO4BIANBADoA7QEgAyAYOgDsASADIBs2AsQBIAMgHDYCwAEgAyArNgK8ASADICw2ArgBIBIhGAJAAkAgAy0AgAJBfWoOAgEABwsgESEYIAMtAIgCIhlBHnFBGEcNACARIRggGUFpakECSQ0AIAMoAowCIhggGCgCACIZQX9qNgIAIBEhGCAZQQFHDQAgCxCeEyARIRgLIBgtAAAiIkFmaiIZQQEgGUH/AXFBCkkbQf8BcQ4JBAMFBQUFBQUCBQtB1MfBAEErIANBgAJqQdTswQBBoIXDABD4EAALIAkgGUGYg8MAENcYAAsgGCgCBCIZRQ0CIBgoAgggGUEBEL4YDAILICJBHnFBGEcNASAiQWlqQf8BcUECSQ0BIBgoAgQiGSAZKAIAIhlBf2o2AgAgGUEBRw0BIBhBBGoQnhMMAQsgGCgCBCIZRQ0AIBgoAgggGUEBEL4YCyAVLQCcDyAUIANBqAFqQQAQmQICQCAHKAKIDCIYIAcoAoAMRw0AIAhBqIPDABCRDgsCQEHYAEUNACAHKAKEDCAYQdgAbGogA0GoAWpB2AD8CgAACyAHIBhBAWo2AogMAkAgIQ0AAkAgAigCDCIYIAIoAgAiGUcNACACQdiDwwAQpw8gAigCACEZIAIoAgwhGAsgAiAYQQFqNgIMIAIoAgQgAigCCCAYaiIYQQAgGSAYIBlJG2tBBHRqIhggIzYCDCAYIBo6AAggGCArNgIEIBggLDYCAAsgBEEIaiIEIB9HDQALCyAeRQ0CIB0gHkEDdEEEEL4YDAILIANBADYC4AIgA0KAgICAEDcC2AIgA0Hc48EANgKsASADQqCAgIAONwKwASADIANB2AJqNgKoAQJAIBogA0GoAWoQiw8NACADKALYAiEEIAMoAuACISEgAygC3AIhGCAXIAMvAQg7AAAgF0ECaiAZLQAAOgAAIANBAzoAsAEgAyAtNwOoASABIANBqAFqQQBBAEEAIBggIUEAEOgBGiAERQ0CIBggBEEBEL4YDAILQYTkwQBBNyADQYACakH048EAQbzkwQAQ+BAACyAaKAIAQQZHDQMgGigCBEGAgICAeEYNACAaQQRqISVBACEkQQAhJkEAIScDQCAlISAgJCEZAkACQCAaKAIYIgRFDQADQCAEQRxsISsgICgCECEEQQAhIUEAISICQANAAkAgBEEYaigCACAhaiIYIBlLIBggGUlrQf8BcSIsQf8BRg0AAkAgLA4CAwADCyAZICFrIRkgBCEgIARBFGooAgAiBEUNBAwDCyAYQQFqISEgBEEcaiEEICJBAWohIiArQWRqIitFDQYMAAsLCyAiIRkgIiAgKAIITw0DDAELIBkgICgCCE8NAgtBACEiQQAhLEEAIQRBACErAkACQAJAAkAgICgCBCAZQegAbGoiHigCAEF8aiIYQQMgGEEDSRsOBAADAQIACyADQYACaiAeQQhqEOwFIBNBEGogA0GAAmpBEGopAwA3AAAgE0EIaiADQYACakEIaikDADcAACATIAMpA4ACNwAAIANBqAFqQQhqIA8pAAA3AwAgA0GoAWpBEGogA0HYAmpBEGopAAA3AwAgA0GoAWpBFmogA0HYAmpBFmopAAA3AQAgAyADKQDYAjcDqAFBAyEEQQQhLEEBISIMAgtBACEiQQIhLEEAIQRBAiErDAELQQAhIkEDISxBACEEQQMhKwsgA0HwAGpBLmoiICADQagBakEuaikBADcBACADQfAAakEoaiIoIANBqAFqQShqKQMANwMAIANB8ABqQSBqIikgDCkDADcDACADQfAAakEYaiIqIANBqAFqQRhqKQMANwMAIANB8ABqQRBqIiMgA0GoAWpBEGopAwA3AwAgA0HwAGpBCGoiHyADQagBakEIaiIdKQMANwMAIAMgAykDqAE3A3ACQAJAAkAC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KAKgASACQQN0a0F4aiALQQgQvhgLIAMoAsQBIgJFDQAgAkEJbEERaiILRQ0AIAMoAsABIAJBA3RrQXhqIAtBCBC+GAsgA0GgAWogA0HYAGoQ7QQgAygCoAEiAg0DIAMoAmAiDg0BDAILIANBiAFqQQhqIgsgFEEIaikDADcDACADQYgBakEQaiIMIBRBEGopAwA3AwAgA0HoAGpBCGoiBSAEQQhqKQMANwMAIANB6ABqQRBqIhYgBEEQaikDADcDACADQegAakEYaiIXIARBGGopAwA3AwAgAyAUKQMANwOIASADIAQpAwA3A2ggAygCpAEhGCADKAKgASEZIAMoAsABIRogAygCxAEhGyACKAJQIhwgAigCVEEFdGohHSACKAJcIh4gAigCYEHoAGxqIR8CQCAOIAMoAlhHDQAgA0HYAGpBqMjBABCPDiADKAJcIQkLIAkgAWoiAiAYNgIUIAIgGTYCECACIB02AgwgAiAcNgIIIAIgHzYCBCACIB42AgAgAiADKQOIATcDGCACIBs2AjQgAiAaNgIwIAIgAykDaDcDOCACQSBqIAspAwA3AwAgAkEoaiAMKQMANwMAIAJBwABqIAUpAwA3AwAgAkHIAGogFikDADcDACACQdAAaiAXKQMANwMAIAIgDzYCWCADIA5BAWoiDjYCYCAODQALCyASIQICQCAKRQ0AIBIhAgNAIAIoAlwgCkHoAGxqIgtBmH9qIQIgC0F4aigCACIKDQALCyACKAJUIgtFDQUgAigCUCALQQV0akFgaiIERQ0FIANBCGogEhC9BCADIAQ2AlAgAyAQQX9qNgJUDAELAkBBzABFDQAgA0EIakEEciADQaABakEEckHMAPwKAAALIAMgAjYCCCADKAJQIQQLIANB2ABqEO8OIANBoAFqIAMoAgQgAygCSGtBACAEEI8DIAMgIDcCbCADQQMgESARQQJGGzYCaCADQQE2AnQgAyADQfABaiIMIANBiAJqIg8gA0HoAGoQoAIiCyADKALYAmo2AtgCAkAgB0EBRg0AA0AgDSgCACICQQNGDQEgAyAgIA1BBGopAgAgAkECRiIOGyIgNwJsIANBAyACIA4bNgJoIANBATYCdCADIAwgDyADQegAahCgAiICIAMoAtgCajYC2AIgAiALaiELIA1BDGoiDSATRw0ACwsCQCAGRQ0AIAgg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DAELIBEgEksgESASSWshEgsCQCASDQACQAJAIA4tALUBDQAgDkGYAWohEgJAIA4oApABIhBBgoCAgHhODQAgEEGBgICAeEcNACAOKAKUASETQQEhEAwCCyAOKAKUASETQQAhEAwBCyAOQYQBaiESIA4oAoABIRNBASEQCwJAAkAgDi0ATQ0AIA5BMGohFAJAIA4oAigiFUGCgICAeE4NACAVQYGAgIB4Rw0AIA4oAiwhDUEBIRUMAgsgDigCLCENQQAhFQwBCyAOQRxqIRQgDigCGCENQQEhFQsgEigCACESIBQoAgAhFAJAAkACQAJAIBBFDQAgFUUNAyATIA1HDQEgEiAUSyASIBRJayESDAILIBUNAiATIA0gEiAUIBIgFEkbEIQTIhAgEiAUayAQGyISQQBKIBJBAEhrIRIMAQsgEyANSyATIA1JayESCyASQX1xDQELAkAgDigCgAEiEiAOKAIYIhBHDQAgDigChAEiEiAOKAIcIhBLIBIgEElrIRIMAQsgEiAQSyASIBBJayESCwJAAkACQAJAAkAgEkF/RiIMDQACQCAPQQJGDQBBAiEQIA4hEgNAAkACQCASQfABaigCACIUIBFHDQAgEkH0AWooAgAiESASQYwBaigCACIVSyARIBVJayERDAELIBQgEUsgFCARSWshEQsCQCARDQAgDiAQQegAbGohEQJAAkACQAJAIBJBnQJqLQAADQAgEUEwaiEVIBJB+AFqKAIAIhNBgoCAgHhODQECQCATQYGAgIB4Rw0AIBJB/AFqKAIAIRZBASETDAQLIBJB/AFqKAIAIRYMAgsgEkHsAWohFSASQegBaigCACEWQQEhEwwCCyASQfwBaigCACEWC0EAIRMLAkACQAJAAkAgEkG1AWotAAANACARQZh/akEwaiENIBJBkAFqKAIAIhFBgoCAgHhODQECQCARQYGAgIB4Rw0AIBJBlAFqKAIAIRdBASEYDAQLIBJBlAFqKAIAIRcMAgsgEkGEAWohDSASQYABaigCACEXQQEhGAwCCyASQZQBaigCACEXC0EAIRgLIBUoAgAhESANKAIAIRUCQAJAAkACQCATRQ0AIBhFDQMgFiAXRw0BIBEgFUsgESAVSWshEQwCCyAYDQIgFiAXIBEgFSARIBVJGxCEEyITIBEgFWsgExsiEUEASiARQQBIayERDAELIBYgF0sgFiAXSWshEQsgEUF9cQ0BCwJAIBJB6AFqKAIAIhEgEkGAAWooAgAiFUcNACASQewBaigCACIRIBJBhAFqKAIAIhVLIBEgFUlrIREMAQsgESAVSyARIBVJayERCyARQX9GDQQgEkHoAGohEiAUIREgDyAQQQFqIhBHDQAMAwsLQQIhECAHQQJLDQYMBQsgD0ECRg0CQQIhECAOIRIDQAJAAkAgEkHwAWooAgAiFCARRw0AIBJB9AFqKAIAIhEgEkGMAWooAgAiFUsgESAVSWshEQwBCyAUIBFLIBQgEUlrIRELAkAgEQ0AIA4gEEHoAGxqIRECQAJAAkACQCASQZ0Cai0AAA0AIBFBMGohFSASQfgBaigCACITQYKAgIB4Tg0BAkAgE0GBgICAeEcNACASQfwBaigCACEYQQEhEwwECyASQfwBaigCACEYDAILIBJB7AFqIRUgEkHoAWooAgAhGEEBIRMMAgsgEkH8AWooAgAhGAtBACETCwJAAkACQAJAIBJBtQFqLQAADQAgEUGYf2pBMGohESASQZABaigCACINQYKAgIB4Tg0BAkAgDUGBgICAeEcNACASQZQBaigCACEWQQEhDQwECyASQZQBaigCACEWDAILIBJBhAFqIREgEkGAAWooAgAhFkEBIQ0MAgsgEkGUAWooAgAhFgtBACENCyAVKAIAIRUgESgCACERAkACQAJAAkAgE0UNACANRQ0DIBggFkcNASAVIBFLIBUgEUlrIREMAgsgDQ0CIBggFiAVIBEgFSARSRsQhBMiEyAVIBFrIBMbIhFBAEogEUEASGshEQwBCyAYIBZLIBggFklrIRELIBFBfXENAQsCQCASQegBaigCACIRIBJBgAFqKAIAIhVHDQAgEkHsAWooAgAiESASQYQBaigCACIVSyARIBVJayERDAELIBEgFUsgESAVSWshEQsgEUF/Rw0CIBJB6ABqIRIgFCERIA8gEEEBaiIQRw0ACwsgDyEQCyAQIAdJDQMgDEUNAgwBC0ECIRAgB0ECSw0CCyAOIBAQhQULIBBBAXRBAXIhDAwBCwJAIAQNACAPIAcgDyAHSRtBAXQhDAwBCyAOIA9BICAPQSBJGyISIAIgA0EAQQAgBRCGASASQQF0QQFyIQwLIAxBAXYgCmqtIAqtIht8IBp+IAogCEEBdmutIBt8IBp+hXmnIQ0LAkACQCALQQJJDQAgCSAKQegAbCISaiEZIAAgEmohFwNAIAZBjgJqIAtBf2oiDmotAAAgDUkNAQJAAkACQAJAAkACQAJAIAZBBGogDkECdGooAgAiC0EBdiISIAhBAXYiEGoiFCADSw0AIAsgCHJBAXFFDQELIAAgCiAUa0HoAGxqIRECQCALQQFxDQAgESASIAIgAyASQQFyZ0EBdEE+c0EAIAUQhgELAkAgCEEBcQ0AIBEgEkHoAGxqIBAgAiADIBBBAXJnQQF0QT5zQQAgBRCGAQsgCEECSQ0EIAtBAkkNBCADIBAgEiAQIBJJIgsbIg9JDQQgESASQegAbGohCAJAIA9B6ABsIhVFDQAgAiAIIBEgCxsgFfwKAAALIAIgFWohCyAQIBJPDQEgGSEQA0ACQAJAIAtBuH9qKAIAIhIgCEG4f2ooAgAiD0cNACALQbx/aigCACISIAhBvH9qKAIAIg9LIBIgD0lrIRIMAQsgEiAPSyASIA9JayESCwJAIBINAAJAAkACQAJAIAtBZWotAAANACALQUhqIRIgC0FAaigCACIPQYKAgIB4Tg0BIAtBRGohFQJAIA9BgYCAgHhHDQAgFSgCACEYQQEhDwwECyAVKAIAIRgMAgsgC0G0f2ohEiALQbB/aigCACEYQQEhDwwCCyALQURqKAIAIRgLQQAhDwsCQAJAAkACQCAIQWVqLQAADQAgCEFIaiEVIAhBQGooAgAiE0GCgICAeE4NASAIQURqIRYCQCATQYGAgIB4Rw0AIBYoAgAhFkEBIRMMBAsgFigCACEWDAILIAhBtH9qIRUgCEGwf2ooAgAhFkEBIRMMAgsgCEFEaigCACEWC0EAIRMLIBIoAgAhEiAVKAIAIRUCQAJAAkACQCAPRQ0AIBNFDQMgGCAWRw0BIBIgFUsgEiAVSWshEgwCCyATDQIgGCAWIBIgFSASIBVJGxCEEyIPIBIgFWsgDxsiEkEASiASQQBIayESDAELIBggFksgGCAWSWshEgsgEkF9cQ0BCwJAIAtBsH9qKAIAIhIgCEGwf2ooAgAiD0cNACALQbR/aigCACISIAhBtH9qKAIAIg9LIBIgD0lrIRIMAQsgEiAPSyASIA9JayESCyALQZh/aiELIAhBmH9qIQggEkF/RiEPAkBB6ABFDQAgECAIIAsgDxtB6AD8CgAACyALIA9B6ABsaiELIAggEkF/R0HoAGxqIgggEUYNAyAQQZh/aiEQIAsgAkcNAAwDCwsgFEEBdCEIDAQLAkAgDw0AIAIhEgwCCyACIRIDQAJAAkAgCCgCICIQIBIoAiAiD0cNACAIKAIkIhAgEigCJCIPSyAQIA9JayEQDAELIBAgD0sgECAPSWshEAsCQCAQDQACQAJAIAgtAE0NACAIQTBqIRACQCAIKAIoIg9BgoCAgHhODQAgD0GBgICAeEcNACAIKAIsIRhBASEPDAILIAgoAiwhGEEAIQ8MAQsgCEEcaiEQIAgoAhghGEEBIQ8LAkACQCASLQBNDQAgEkEwaiEVAkAgEigCKCITQYKAgIB4Tg0AIBNBgYCAgHhHDQAgEigCLCEWQQEhEwwCCyASKAIsIRZBACETDAELIBJBHGohFSASKAIYIRZBASETCyAQKAIAIRAgFSgCACEVAkACQAJAAkAgD0UNACATRQ0DIBggFkcNASAQIBVLIBAgFUlrIRAMAgsgEw0CIBggFiAQIBUgECAVSRsQhBMiDyAQIBVrIA8bIhBBAEogEEEASGshEAwBCyAYIBZLIBggFklrIRALIBBBfXENAQsCQCAIKAIYIhAgEigCGCIPRw0AIAgoAhwiECASKAIcIg9LIBAgD0lrIRAMAQsgECAPSyAQIA9JayEQCyAQQX9GIQ8CQEHoAEUNACARIAggEiAPG0HoAPwKAAALIBFB6ABqIREgEiAQQX9HQegAbGoiEiALRg0CIAggD0HoAGxqIgggF0cNAAwCCwsgCCERIAIhEgsgCyASayIIRQ0AIBEgEiAI/AoAAAsgFEEBdEEBciEIC0EBIRIgDiELIA5BAUsNAAwCCwsgCyESCyAGQY4CaiASaiANOgAAIAZBBGogEkECdGogCDYCAAJAIAEgCk0NACASQQFqIQsgDEEBdiAKaiEKIAwhCAwBCwsgCEEBcQ0AIAAgASACIAMgAUEBcmdBAXRBPnNBACAFEIYBCyAGQdACaiQAC9ccAQt/IwBB0CtrIgUkAAJAQYQBRQ0AIAVBDGpBAEGEAfwLAAsgBUHIAWpCADcDACAFQcABakIANwMAIAVBuAFqQgA3AwAgBUGwAWpCADcDACAFQagBakIANwMAIAVBoAFqQgA3AwAgBUGYAWpCADcDACAFQgA3A5ABAkACQAJAAkACQAJAAkACQCAEDQBBACEGAkBBgAlFIgQNACAFQdABakEAQYAJ/AsACwJAIAQNACAFQdAKakEAQYAJ/AsACyAFQdABakEEaiEHIAVB0ApqQQRqIQggACABQcAEbGohBEEAIQkDQAJAIAQvAQAiCkUNACAJQZ8CSw0DIAVB0AFqIAlBAnRqIgsgBjsBAiALIAo7AQAgCUEBaiEJCyAEQQJqIQQgAiAGQQFqIgZHDQALAkAgCUGhAk8NAEEAIQwCQEGAEEUNACAFQdATakEAQYAQ/AsACwJAIAlFDQAgBUHQE2pBgAhqIQYgBUHQAWohBAJAIAlBAXFFDQAgBUHQE2ogBS8B0AEiBEH/AXFBAnRqIgogCigCAEEBajYCACAGIARBBnZB/AdxaiIEIAQoAgBBAWo2AgAgBUHUAWohBAsCQCAJQQFGDQAgBUHQAWogCUECdGohDQNAIAVB0BNqIAQvAQAiCkH/AXFBAnRqIgsgCygCAEEBajYCACAGIApBBnZB/AdxaiIKIAooAgBBAWo2AgAgBUHQE2ogBEEEai8BACIKQf8BcUECdGoiCyALKAIAQQFqNgIAIAYgCkEGdkH8B3FqIgogCigCAEEBajYCACAEQQhqIgQgDUcNAAsLIAUoAtAbIQwLQQAhCwJAQYAIRQ0AIAVB0CNqQQBBgAj8CwALQYB4IQQDQCAFQdAjaiAEaiIGQYAIaiALNgIAIAZBhAhqIAVB0BNqIARqIgpBgAhqKAIAIAtqIgs2AgAgBkGICGogCkGECGooAgAgC2oiCzYCACAGQYwIaiAKQYgIaigCACALaiIGNgIAIApBjAhqKAIAIAZqIQsgBEEQaiIEDQALAkACQAJAAkAgCUUNACAJQQJ0IQogBUHQAWohBgNAIAVB0CNqIAYvAQAiC0H/AXFBAnRqIg0oAgAiBCAJTw0CIA0gBEEBajYCACAFQdAKaiAEQQJ0aiIEIAZBAmovAQA7AQIgBCALOwEAIAZBBGohBiAKQXxqIgoNAAsLIAVB0ApqIQ4CQCAJIAxGDQBBACELAkBBgAhFDQAgBUHQI2pBAEGACPwLAAtBgHghBANAIAVB0CNqIARqIgZBgAhqIAs2AgAgBkGECGogBUHQE2ogBGoiCkGAEGooAgAgC2oiCzYCACAGQYgIaiAKQYQQaigCACALaiILNgIAIAZBjAhqIApBiBBqKAIAIAtqIgY2AgAgCkGMEGooAgAgBmohCyAEQRBqIgQNAAsCQCAJRQ0AIAlBAnQhCiAFQdAKaiEGA0AgBUHQI2ogBi8BACILQQZ2QfwHcWoiDSgCACIEIAlPDQMgDSAEQQFqNgIAIAVB0AFqIARBAnRqIgQgBkECai8BADsBAiAEIAs7AQAgBkEEaiEGIApBfGoiCg0ACwsgBUHQAWohDiAHIQgLIAkOAgoBAgsgBCAJQcD1wwAQ4xEACyAOQQE7AQAMBwsgDiAOLwEAIA4vAQRqOwEAIAlBf2oiBEECSQ0EIA5BBGohCkEAIQZBAiEMQQIhDQNAIAxBf2ohCwJAAkACQAJAAkAgDSAJTw0AIAYgCU8NASAOIAZBAnRqLwEAIA4gDUECdGovAQAiB0kNACALIAlPDQIgCiAHOwEAIA1BAWohDQwECyAGIAlPDQICQCALIAlPDQAgCiAOIAZBAnRqIgcvAQA7AQAgByALOwEAIAZBAWohBgwECyAMQX9qIAlBwPbDABDjEQALIAYgCUGQ9sMAEOMRAAsgDEF/aiAJQaD2wwAQ4xEACyAGIAlBsPbDABDjEQALAkACQAJAAkAgDSAJTw0AAkAgBiALTw0AAkAgBiAJSQ0AIAYgCUHQ9sMAEOMRAAsgDiAGQQJ0ai8BACAOIA1BAnRqLwEASQ0BCyALIAlPDQEgCiAOIA1BAnRqLwEAIAovAQBqOwEAIA1BAWohDQwDCyALIAlPDQECQCAGIAlPDQAgCiAOIAZBAnRqIgcvAQAgCi8BAGo7AQAgByALOwEAIAZBAWohBgwDCyAGIAlBgPfDABDjEQALIAxBf2ogCUHg9sMAEOMRAAsgDEF/aiAJQfD2wwAQ4xEACyAKQQRqIQogCSAMQQFqIgxGDQQMAAsLIAlBoAJBoPfDABDYGAALIAAgAUGgAmxqQYAbaiEEIAIhBgJAA0AgBC0AACIKQSFPDQEgBUEMaiAKQQJ0aiIKIAooAgBBAWo2AgAgBEEBaiEEIAZBf2oiBg0ADAgLCyAKQSFBgPjDABDjEQALIAlBoAJB4PfDABDjEQALQQAhDSAOIAlBfmoiDEECdGpBADsBACAMRQ0BAkAgCUEDSQ0AIA4gCUECdGpBdGohBkECIQoDQAJAIAkgBi8BACILSw0AIAsgCUGA9sMAEOMRAAsgBiAOIAtBAnRqLwEAQQFqOwEAIAZBfGohBiAJIApBAWoiCkcNAAsgDCENDAILIAlBfWogCUHw9cMAEOMRAAtBACENIA4gCUECdGpBeGpBADsBAAtBASELQQAhDAJAA0ACQAJAIA1BAE4NAEEAIQoMAQsCQCANIAlPDQAgDUEBaiEPIA4gDUECdGohBkEAIQogDEH//wNxIQcDQCAGLwEAIAdHDQIgBkF8aiEGIA1Bf2ohDSAPIApBAWoiCkcNAAtBfyENIA8hCgwBCyANIAlB0PXDABDjEQALAkAgCyAKTA0AIA4gBEECdGohBgNAIAQgCU8NAyAGIAw7AQAgBkF8aiEGIARBf2ohBCALQX9qIgsgCkoNAAsLIAxBAWohDCAKQQF0IgtBAEoNAAsgCQ0BDAILIAQgCUHg9cMAEOMRAAsgDiAJQQJ0aiEKIA4hBgJAA0AgCCEEIAYvAQAiBkEhTw0BIAVBDGogBkECdGoiBiAGKAIAQQFqNgIAIARBBGohCCAEIQYgBCAKRw0ACyAJQQJJDQFBgAEgA0ECdCIMa0ECdiIEQQNxIQoCQAJAIARBf2pBA08NAEEAIQZBACELDAELIARB/P///wNxIQ0gDCAFQQxqakEQaiEEQQAhBkEAIQsDQCAEKAIAIARBfGooAgAgBEF4aigCACAEQXRqKAIAIAZqampqIQYgBEEQaiEEIA0gC0EEaiILRw0ACwsgBUEMaiAMaiEHAkAgCkUNACALQQJ0IAxqIAVBDGpqQQRqIQQDQCAEKAIAIAZqIQYgBEEEaiEEIApBf2oiCg0ACwsgByAHKAIAIAZqNgIAIAxBfGoiBEECdkEBaiIGQQNxIQ8CQAJAIARBDE8NACAMQQRqIQZBACEEQQAhDQwBCyAMQXRqIQogBkH8////B3EhC0EAIQRBACENA0AgBUEMaiAKaiIGKAIAIARBA2p0IAZBBGooAgAgBEECanQgBkEIaigCACAEQQFqdCAGQQxqKAIAIAR0IA1qampqIQ0gCkFwaiEKIARBBGoiBCALRw0ACyAKQRBqIQYLAkAgD0UNACAPQQJ0IQogBiAFQQxqakF8aiEGA0AgBigCACAEdCANaiENIAZBfGohBiAEQQFqIQQgCkF8aiIKDQALC0EBIAN0IgwgDU8NASADQQJ0IAVBDGpqQQRqIQ8DQCAHIAcoAgBBf2o2AgAgDEEBaiEMIA8hBiADIQQCQANAIARBAU0NASAEQX9qIQQgBkF4aiEKIAZBfGoiCyEGIAooAgAiCkUNAAsgC0F8aiAKQX9qNgIAAkAgBEEgRg0AIAsgCygCAEECajYCAAwBC0EhQSFBkPfDABDjEQALIAwgDUYNAgwACwsgBkEhQdD3wwAQ4xEACyAAIAFBoAJsakGAG2ohDQJAQaACRQ0AIA1BAEGgAvwLAAsCQEHABEUNACAAIAFBwARsakHADWpBAEHABPwLAAsgBUEBNgLgEyAFIANBAWo2AtwTIAVBADYC2BMgBSAFQZABajYC1BMgDkECaiEHIAUgBUEMajYC0BNBASEGIAkhBANAAkACQCAGDQAgBSgC3BMiBkUNAyAFIAZBf2o2AtwTIAUoAtATIgYgBSgC1BNGDQMgBSAGQQRqNgLQEyAFIAUoAtgTIgpBAWo2AtgTDAELIAVBADYC4BMgBSAFQdATaiAGELENIAUoAgQiBkUNAiAFKAIAIQoLIAQgBigCACIGayEMAkACQAJAIAQgBkkNACAEIAlLDQEgBkUNAiAHIARBAnRqIQtBACAGQQJ0ayEEAkADQCALIARqLwEAIgZBnwJLDQEgDSAGaiAKOgAAIARBBGoiBEUNBAwACwsgBkGgAkHA98MAEOMRAAsgDCAEQbD3wwAQ2RgACyAEIAlBsPfDABDYGAALIAUoAuATIQYgDCEEDAALC0EAIQYgBUEANgKUASAFQQhqIQtBAiEEAkADQCAFQZABaiAEQQJ0IgpqIAsgCmooAgAgBmpBAXQiBjYCACAEIANPDQEgBCAEIANJaiIEIANNDQALCyAAIAFBwARsakHADWohCiAAIAFBoAJsakGAG2ohBAJAA0ACQCAELQAAIgZFDQAgBkEPSw0CIAVBkAFqIAZBAnRqIgsgCygCACILQQFqNgIAIAogC0EIdCALQYD+A3FBCHZyIgtBBHZBjx5xIAtBjx5xQQR0ciILQQJ2QbPmAHEgC0Gz5gBxQQJ0ciILQQF2QdWqAXEgC0HVqgFxQQF0ckEAIAZrQQ9xdjsBAAsgBEEBaiEEIApBAmohCiACQX9qIgINAAsgBUHQK2okAA8LIAZBEEHw98MAEOMRAAveHAIhfwx+IwBB4ABrIgIkAEEAIQMgAkEANgIMIAJCgICAgMAANwIEIAEoAggiBEEYbCEFIAEoAgQhBiABKAIAIQcCQAJAAkACQCAEDQBBACEIQQAhCUEAIQpBACELQQAhDEEAIQ1BACEOQQAhD0EAIRBBACERQQAhEkEAIRNBACEUIAYhAQwBC0EAIQRBBCEVQQAhA0EAIRRBACETQQAhEkEAIRFBACEQQQAhD0EAIQ5BACENQQAhDEEAIQtBACEKQQAhCUEAIQhBACEWA0ACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAGIARqIgEoAgAiF0GCgICAeEYNACABQRBqKAIAIRggAUEMaigCACEZIAFBCGooAgAhGiABQQRqKAIAIRsgAUEUaigCACIcQQdxIR0gHEEEdiIeDgsBAhQJCgsUDBQNAxQLIAFBGGohAQwWCyAdQX9qDgICAxILIB1Bf2oOBQMRBBEFEQsgHUEFRg0KDBALAkACQAJAIBdBgICAgHhzIgFBAiABQQJJGw4DAgABAgsgGCAaIBkgGEkbIRkgGyEaDAELAkAgGg0AIBkhGiAYIRkMAQsgGyAaQRRsaiIBQXhqKAIAIRwCQCABQWxqKAIARQ0AIBkhGiAcIRkMAQsCQCAcIAFBfGooAgAiHU8NACAZIRogHSEZDAELIBkhGiABQXRqKAIAIRkLIBmtQiCGIBqthCEjQQEhFAwOCwJAAkACQCAXQYCAgIB4cyIBQQIgAUECSRsOAwIAAQILIBggGiAZIBhJGyEZIBshGgwBCwJAIBoNACAZIRogGCEZDAELIBsgGkEUbGoiAUF4aigCACEcAkAgAUFsaigCAEUNACAZIRogHCEZDAELAkAgHCABQXxqKAIAIh1PDQAgGSEaIB0hGQwBCyAZIRogAUF0aigCACEZCyAZrUIghiAarYQhJEEBIRMMDQsCQAJAAkAgF0GAgICAeHMiAUECIAFBAkkbDgMCAAECCyAYIBogGSAYSRshGSAbIRoMAQsCQCAaDQAgGSEaIBghGQwBCyAbIBpBFGxqIgFBeGooAgAhHAJAIAFBbGooAgBFDQAgGSEaIBwhGQwBCwJAIBwgAUF8aigCACIdTw0AIBkhGiAdIRkMAQsgGSEaIAFBdGooAgAhGQsgGa1CIIYgGq2EISVBASESDAwLAkACQAJAIBdBgICAgHhzIgFBAiABQQJJGw4DAgABAgsgGCAaIBkgGEkbIRkgGyEaDAELAkAgGg0AIBkhGiAYIRkMAQsgGyAaQRRsaiIBQXhqKAIAIRwCQCABQWxqKAIARQ0AIBkhGiAcIRkMAQsCQCAcIAFBfGooAgAiHU8NACAZIRogHSEZDAELIBkhGiABQXRqKAIAIRkLIBmtQiCGIBqthCEmQQEhEQwLCwJAAkACQCAXQYCAgIB4cyIBQQIgAUECSRsOAwIAAQILIBggGiAZIBhJGyEZIBshGgwBCwJAIBoNACAZIRogGCEZDAELIBsgGkEUbGoiAUF4aigCACEcAkAgAUFsaigCAEUNACAZIRogHCEZDAELAkAgHCABQXxqKAIAIh1PDQAgGSEaIB0hGQwBCyAZIRogAUF0aigCACEZCyAZrUIghiAarYQhJ0EBIRAMCgsgHUEERw0KAkACQAJAIBdBgICAgHhzIgFBAiABQQJJGw4DAgABAgsgGCAaIBkgGEkbIRkgGyEaDAELAkAgGg0AIBkhGiAYIRkMAQsgGyAaQRRsaiIBQXhqKAIAIRwCQCABQWxqKAIARQ0AIBkhGiAcIRkMAQsCQCAcIAFBfGooAgAiHU8NACAZIRogHSEZDAELIBkhGiABQXRqKAIAIRkLIBmtQiCGIBqthCEoQQEhDwwJCyAdQQJHDQkCQAJAAkAgF0GAgICAeHMiAUECIAFBAkkbDgMCAAECCyAYIBogGSAYSRshGSAbIRoMAQsCQCAaDQAgGSEaIBghGQwBCyAbIBpBFGxqIgFBeGooAgAhHAJAIAFBbGooAgBFDQAgGSEaIBwhGQwBCwJAIBwgAUF8aigCACIdTw0AIBkhGiAdIRkMAQsgGSEaIAFBdGooAgAhGQsgGa1CIIYgGq2EISlBASEODAgLIB1BBkcNCEEBIQ0CQCAXQYGAgIB4Rw0AIBshHyAaISAgGSEhIBghIgwKCyAAQQI2AgAgACAWNgIEIBdBgICAgHhyQYCAgIB4Rg0GIBsgF0EUbEEEEL4YDAYLIB0NBwJAAkAgF0GCgICAeEgNACAaQRRsIhwNAUIAISogGyEaQgAhKwwECyAAQQI2AgAgACAWNgIEDAYLIBpFDQMgGkEBRg0DIBsoAgAiGkECRg0DIBsoAhQiHUECRg0DIBpBAXFFDQMgHUEBcUUNAyAbKAIEDQMgGygCGEECRw0DIBspAgghKyAbQShqIRogGykCHCEqDAILIB1BBEcNBgJAAkACQCAXQYCAgIB4cyIBQQIgAUECSRsOAwIAAQILIBggGiAZIBhJGyEZIBshGgwBCwJAIBoNACAZIRogGCEZDAELIBsgGkEUbGoiAUF4aigCACEcAkAgAUFsaigCAEUNACAZIRogHCEZDAELAkAgHCABQXxqKAIAIh1PDQAgGSEaIB0hGQwBCyAZIRogAUF0aigCACEZCyAZrUIghiAarYQhLEEBIQkMBQsCQAJAAkAgF0GAgICAeHMiAUECIAFBAkkbDgMCAAECCyAYIBogGSAYSRshGSAbIRoMAQsCQCAaDQAgGSEaIBghGQwBCyAbIBpBFGxqIgFBeGooAgAhHAJAIAFBbGooAgBFDQAgGSEaIBwhGQwBCwJAIBwgAUF8aigCACIdTw0AIBkhGiAdIRkMAQsgGSEaIAFBdGooAgAhGQsgGa1CIIYgGq2EIS1BASEIDAQLAkAgGiAbIBxqRg0AIBooAgBBAkcNAQsgGK1CIIYgGa2EIS5BASEKIBdFDQEgGyAXQRRsQQQQvhgMAQsgAEECNgIAIAAgFjYCBCAXRQ0BIBsgF0EUbEEEEL4YDAELQQEhC0EBIQwMAwsCQCAFQWhqIARGDQAgAUEcaiEBIAUgBGtBaGpBGG4hAANAAkAgAUF8aigCACIEQYKAgIB4SA0AIARFDQAgASgCACAEQRRsQQQQvhgLIAFBGGohASAAQX9qIgANAAsLAkAgB0UNACAGIAdBGGxBBBC+GAsgA0UNBiAVIQEDQAJAIAEoAgAiAEGCgICAeEgNACAARQ0AIAFBBGooAgAgAEEUbEEEEL4YCyABQRhqIQEgA0F/aiIDRQ0HDAALCyAXQYKAgIB4SA0BIBdFDQEgGyAXQRRsQQQQvhgMAQsgAiAeNgIQIAIgHToAFwJAQQAoApS5RyIBQQVGDQAgAUEDSw0AAkBBAC0AsLdHIgFBf2pBAkkNACABRQ0BQai3xwAQrgtB/wFxIgFFDQELQQAoAqi3RyABEM8JRQ0AQQAoAqi3RyEBIAJBADYCQCACQQE2AjQgAkGw7MIANgIwIAJCBDcCOCACQcjswgA2AiwgAkG47MIANgIkIAJBvKLCADYCHCACIAJBEGo2AkggAiACQcwAajYCKCACIAJByABqNgIgIAIgAkEwajYCGCACIAJBF2o2AkwgAiABQRxqNgJcIAJBAzYCWCACQQE2AlAgAiACQRhqNgJUIAEgAkHQAGoQ4goLAkAgAyACKAIERw0AIAJBBGpBmPLCABCKDiACKAIIIRULIBUgA0EYbGoiASAcNgIUIAEgGDYCECABIBk2AgwgASAaNgIIIAEgGzYCBCABIBc2AgAgAiADQQFqIgM2AgwLIBZBAWohFiAFIARBGGoiBEcNAAwCCwsgBiAFaiIXIAFrQRhuIQQgFyABRg0AA0ACQCABKAIAIhdBgoCAgHhIDQAgF0UNACABQQRqKAIAIBdBFGxBBBC+GAsgAUEYaiEBIARBf2oiBA0ACwsCQCAHRQ0AIAYgB0EYbEEEEL4YCyAjp0EAIBRBAXEiARsiBCAjQiCIp0EAIAEbIgFJICSnQQAgE0EBcSIXGyIaICRCIIinQQAgFxsiF0lxIRkgKUIgiKdBACAOQQFxIhwbIR0gKEIgiKdBACAPQQFxIhsbIRYgJ0IgiKdBACAQQQFxIhgbIR4gJkIgiKdBACARQQFxIgYbIQUgJUIgiKdBACASQQFxIhUbIQcgKkIgiKdBACAKQQFxIg4bIQ8gK0IgiKdBACALQQFxIhMbIRQgLkIgiKdBACAMQQFxIgobIQsgKadBACAcGyEcICinQQAgGxshGyAnp0EAIBgbIRggJqdBACAGGyEGICWnQQAgFRshFSAqp0EAIA4bIQ4gK6dBACATGyETIC6nQQAgChshCgJAIA1BAXENAEEAIR9BACEgQQAhIUEAISILIAAgDzYCYCAAIA42AlwgACAUNgJYIAAgEzYCVCAAIAs2AlAgACAKNgJMIAAgIjYCSCAAICE2AkQgACAgNgJAIAAgHzYCPCAAIB02AjggACAcNgI0IAAgFjYCMCAAIBs2AiwgACAeNgIoIAAgGDYCJCAAIAU2AiAgACAGNgIcIAAgBzYCGCAAIBU2AhQgACAXNgIQIAAgGjYCDCAAIAE2AgggACAENgIEIAAgGTYCACAAIC2nQQAgCEEBcSIBGzYCbCAAICynQQAgCUEBcSIEGzYCZCAAIC1CIIinQQAgARs2AnAgACAsQiCIp0EAIAQbNgJoIAIoAgghFSADRQ0AIBUhAQNAAkAgASgCACIAQYKAgIB4SA0AIABFDQAgAUEEaigCACAAQRRsQQQQvhgLIAFBGGohASADQX9qIgMNAAsLAkAgAigCBCIBRQ0AIBUgAUEYbEEEEL4YCyACQeAAaiQAC8odARt/IwBB4ABrIgMkAAJAAkAgAg0AELEaAkACQEGUA0EEEPsXIgRFDQAgBEEAOwGSAyAEQQA2AogCQQAhBQJAAkAgAS8BkgNFDQAgBEGMAmohBiABQYwCaiEHIANByABqQRFqIQggA0HIAGpBAXIhCUEAIQUgA0HEAGpBAmohCgNAIAcgBUEMbGohCwJAAkAgASAFQRhsaiICLQAAQRlHDQAgAyACEPwLDAELIANBEGogAkEQaikCADcDACADQQhqIAJBCGopAgA3AwAgAyACKQIANwMACyALQQhqKAIAIgxBBXQhDUEAIQIgDEH///8/Sw0EIA1B+P///wdLDQQCQAJAIA0NAEEIIQ4MAQsgC0EEaigCACEPELEaQQghAiANQQgQ+xciDkUNBSAMRQ0AQQAhCyAMIRADQCANIAtGDQEgDyALaiICQRxqKAIAIREgAkEYaigCACESQSMhEwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAi0AACIUQWZqIhVBASAVQf8BcUEKSRtB/wFxDgoACAECAwQFBgcNAAtBACETIAJBDGooAgAiFkEASA0IIAJBCGooAgAhAgJAAkAgFg0AQQEhFwwBCxCxGkEBIRMgFkEBEPsXIhdFDQkLAkAgFkUNACAXIAIgFvwKAAALQRohEyAWIRgMDAsgCiACQQNqLQAAOgAAIAMgAkEBai8AADsBRCADIAJBEWooAAA2AjwgAyACQRRqKAAANgA/IAJBEGotAAAhGSACQQxqKAIAIRggAkEIaigCACEXIAJBBGooAgAhFiAUIRMMCwsgCiACQQNqLQAAOgAAIAMgAkEBai8AADsBRCADIAJBEWooAAA2AjwgAyACQRRqKAAANgA/IAJBEGotAAAhGSACQQxqKAIAIRggAkEIaigCACEXIAJBBGooAgAhFiAUIRMMCgsgCiACQQNqLQAAOgAAIAMgAkEBai8AADsBRCADIAJBEWooAAA2AjwgAyACQRRqKAAANgA/IAJBEGotAAAhGSACQQxqKAIAIRggAkEIaigCACEXIAJBBGooAgAhFiAUIRMMCQsgCiACQQNqLQAAOgAAIAMgAkEBai8AADsBRCADIAJBEWooAAA2AjwgAyACQRRqKAAANgA/IAJBEGotAAAhGSACQQxqKAIAIRggAkEIaigCACEXIAJBBGooAgAhFiAUIRMMCAsgCiACQQNqLQAAOgAAIAMgAkEBai8AADsBRCADIAJBEWooAAA2AjwgAyACQRRqKAAANgA/IAJBEGotAAAhGSACQQxqKAIAIRggAkEIaigCACEXIAJBBGooAgAhFiAUIRMMBwsgCiACQQNqLQAAOgAAIAMgAkEBai8AADsBRCADIAJBEWooAAA2AjwgAyACQRRqKAAANgA/IAJBEGotAAAhGSACQQxqKAIAIRggAkEIaigCACEXIAJBBGooAgAhFiAUIRMMBgtBACETIAJBDGooAgAiFkEASA0CIAJBCGooAgAhFSACQRBqLQAAIRkCQAJAIBYNAEEBIRcMAQsQsRpBASETIBZBARD7FyIXRQ0DCwJAIBZFDQAgFyAVIBb8CgAAC0EiIRMgFiEYDAULIBRB/wFxQRlGDQIgA0HIAGpBEGogAkEQaikCADcDACADQcgAakEIaiACQQhqKQIANwMAIAMgAikCADcDSAwDCyATIBZBoIHBABDmFgALIBMgFkGggcEAEOYWAAsgA0HIAGogAhD8CwsgCiAJQQJqLQAAOgAAIAMgCS8AADsBRCADIAgoAAA2AjwgAyAIQQNqKAAANgA/IAMtAEghEyADKAJMIRYgAygCUCEXIAMoAlQhGCADLQBYIRkLIA4gC2oiAiATOgAAIAJBAWogAy8BRDsAACACQQNqIAotAAA6AAAgAkEQaiAZOgAAIAJBDGogGDYCACACQQhqIBc2AgAgAkEEaiAWNgIAIAJBEWogAygCPDYAACACQRRqIAMoAD82AAAgAkEcaiARNgIAIAJBGGogEjYCACALQSBqIQsgEEF/aiIQDQALCyAELwGSAyICQQtPDQIgBCACQQFqOwGSAyAEIAJBGGxqIgsgAykDADcCACALQQhqIANBCGopAwA3AgAgC0EQaiADQRBqKQMANwIAIAYgAkEMbGoiAiAMNgIIIAIgDjYCBCACIAw2AgAgBUEBaiIFIAEvAZIDSQ0ACwsgACAFNgIIIABBADYCBCAAIAQ2AgAMBAtB7OzAAEEgQYztwAAQzhMAC0EEQZQDENgZAAsgAiANQbCBwQAQ5hYACyADIAEoApQDIAJBf2oiBhCpAQJAIAMoAgAiAkUNACADKAIEIQcQsRoCQAJAAkBBxANBBBD7FyIFRQ0AIAUgAjYClANBACEPIAVBADsBkgMgBUEANgKIAiACQQA7AZADIAIgBTYCiAIgAyAFNgIAIAMgB0EBajYCBCABLwGSA0UNAiABQZQDaiEaIAVBlANqIRsgBUGMAmohHCABQYwCaiEdIANByABqQRFqIQggA0HIAGpBAXIhCSADKAIIIQQCQAJAAkADQCAdIA9BDGxqIQsCQAJAIAEgD0EYbGoiAi0AAEEZRw0AIANBGGogAhD8CwwBCyADQRhqQRBqIAJBEGopAgA3AwAgA0EYakEIaiACQQhqKQIANwMAIAMgAikCADcDGAsgC0EIaigCACIMQQV0IRRBACECIAxB////P0sNAyAUQfj///8HSw0DAkACQCAUDQBBCCENDAELIAtBBGooAgAhDhCxGkEIIQIgFEEIEPsXIg1FDQQgDEUNAEEAIQsgDCEQA0AgFCALRg0BIA4gC2oiAkEcaigCACERIAJBGGooAgAhEkEjIRMCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAItAAAiCkFmaiIVQQEgFUH/AXFBCkkbQf8BcQ4KAAgBAgMEBQYHDQALQQAhEyACQQxqKAIAIhZBAEgNCCACQQhqKAIAIQICQAJAIBYNAEEBIRcMAQsQsRpBASETIBZBARD7FyIXRQ0JCwJAIBZFDQAgFyACIBb8CgAAC0EaIRMgFiEYDAwLIANBxABqQQJqIAJBA2otAAA6AAAgAyACQQFqLwAAOwFEIAMgAkERaigAADYCPCADIAJBFGooAAA2AD8gAkEQai0AACEZIAJBDGooAgAhGCACQQhqKAIAIRcgAkEEaigCACEWIAohEwwLCyADQcQAakECaiACQQNqLQAAOgAAIAMgAkEBai8AADsBRCADIAJBEWooAAA2AjwgAyACQRRqKAAANgA/IAJBEGotAAAhGSACQQxqKAIAIRggAkEIaigCACEXIAJBBGooAgAhFiAKIRMMCgsgA0HEAGpBAmogAkEDai0AADoAACADIAJBAWovAAA7AUQgAyACQRFqKAAANgI8IAMgAkEUaigAADYAPyACQRBqLQAAIRkgAkEMaigCACEYIAJBCGooAgAhFyACQQRqKAIAIRYgCiETDAkLIANBxABqQQJqIAJBA2otAAA6AAAgAyACQQFqLwAAOwFEIAMgAkERaigAADYCPCADIAJBFGooAAA2AD8gAkEQai0AACEZIAJBDGooAgAhGCACQQhqKAIAIRcgAkEEaigCACEWIAohEwwICyADQcQAakECaiACQQNqLQAAOgAAIAMgAkEBai8AADsBRCADIAJBEWooAAA2AjwgAyACQRRqKAAANgA/IAJBEGotAAAhGSACQQxqKAIAIRggAkEIaigCACEXIAJBBGooAgAhFiAKIRMMBwsgA0HEAGpBAmogAkEDai0AADoAACADIAJBAWovAAA7AUQgAyACQRFqKAAANgI8IAMgAkEUaigAADYAPyACQRBqLQAAIRkgAkEMaigCACEYIAJBCGooAgAhFyACQQRqKAIAIRYgCiETDAYLQQAhEyACQQxqKAIAIhZBAEgNAiACQQhqKAIAIRUgAkEQai0AACEZAkACQCAWDQBBASEXDAELELEaQQEhEyAWQQEQ+xciF0UNAwsCQCAWRQ0AIBcgFSAW/AoAAAtBIiETIBYhGAwFCyAKQf8BcUEZRg0CIANByABqQRBqIAJBEGopAgA3AwAgA0HIAGpBCGogAkEIaikCADcDACADIAIpAgA3A0gMAwsgEyAWQaCBwQAQ5hYACyATIBZBoIHBABDmFgALIANByABqIAIQ/AsLIANBxABqQQJqIAlBAmotAAA6AAAgAyAJLwAAOwFEIAMgCCgAADYCPCADIAhBA2ooAAA2AD8gAy0ASCETIAMoAkwhFiADKAJQIRcgAygCVCEYIAMtAFghGQsgDSALaiICIBM6AAAgAkEBaiADLwFEOwAAIAJBA2ogA0HEAGpBAmotAAA6AAAgAkEQaiAZOgAAIAJBDGogGDYCACACQQhqIBc2AgAgAkEEaiAWNgIAIAJBEWogAygCPDYAACACQRRqIAMoAD82AAAgAkEcaiARNgIAIAJBGGogEjYCACALQSBqIQsgEEF/aiIQDQALCyADQTBqIBogD0EBaiIPQQJ0aigCACAGEKkBIAMoAjghFQJAAkACQCADKAIwIgJFDQAgAygCNCELDAELELEaQZQDQQQQ+xciAkUNAUEAIQsgAkEAOwGSAyACQQA2AogCCyALIAdHDQIgBS8BkgMiC0ELTw0DIAUgC0EBaiITOwGSAyAFIAtBGGxqIhAgAykDGDcCACAQQQhqIANBGGpBCGopAwA3AgAgEEEQaiADQRhqQRBqKQMANwIAIBwgC0EMbGoiCyANNgIEIAsgDDYCACALIAw2AgggGyATQQJ0aiACNgIAIAIgBTYCiAIgAiATOwGQAyAVIARqQQFqIQQgDyABLwGSA08NBgwBCwtBBEGUAxDYGQALQZztwABBMEHM7cAAEM4TAAtB7OzAAEEgQdztwAAQzhMACyACIBRBsIHBABDmFgALQQRBxAMQ2BkACyADIAQ2AggLIAAgAykCADcCACAAQQhqIANBCGooAgA2AgAMAQtBnITBABDaGAALIANB4ABqJAALyh0BG38jAEHgAGsiAyQAAkACQCACDQAQsRoCQAJAQZQDQQQQ+xciBEUNACAEQQA7AZIDIARBADYCiAJBACEFAkACQCABLwGSA0UNACAEQYwCaiEGIAFBjAJqIQcgA0HIAGpBEWohCCADQcgAakEBciEJQQAhBSADQcQAakECaiEKA0AgByAFQQxsaiELAkACQCABIAVBGGxqIgItAABBGUcNACADIAIQ/AsMAQsgA0EQaiACQRBqKQIANwMAIANBCGogAkEIaikCADcDACADIAIpAgA3AwALIAtBCGooAgAiDEEFdCENQQAhAiAMQf///z9LDQQgDUH4////B0sNBAJAAkAgDQ0AQQghDgwBCyALQQRqKAIAIQ8QsRpBCCECIA1BCBD7FyIORQ0FIAxFDQBBACELIAwhEANAIA0gC0YNASAPIAtqIgJBHGooAgAhESACQRhqKAIAIRJBIyETAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCACLQAAIhRBZmoiFUEBIBVB/wFxQQpJG0H/AXEOCgAIAQIDBAUGBw0AC0EAIRMgAkEMaigCACIWQQBIDQggAkEIaigCACECAkACQCAWDQBBASEXDAELELEaQQEhEyAWQQEQ+xciF0UNCQsCQCAWRQ0AIBcgAiAW/AoAAAtBGiETIBYhGAwMCyAKIAJBA2otAAA6AAAgAyACQQFqLwAAOwFEIAMgAkERaigAADYCPCADIAJBFGooAAA2AD8gAkEQai0AACEZIAJBDGooAgAhGCACQQhqKAIAIRcgAkEEaigCACEWIBQhEwwLCyAKIAJBA2otAAA6AAAgAyACQQFqLwAAOwFEIAMgAkERaigAADYCPCADIAJBFGooAAA2AD8gAkEQai0AACEZIAJBDGooAgAhGCACQQhq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IAJBDGooAgAhGCACQQhqKAIAIRcgAkEEaigCACEWIAohEwwKCyADQcQAakECaiACQQNqLQAAOgAAIAMgAkEBai8AADsBRCADIAJBEWooAAA2AjwgAyACQRRqKAAANgA/IAJBEGotAAAhGSACQQxqKAIAIRggAkEIaigCACEXIAJBBGooAgAhFiAKIRMMCQsgA0HEAGpBAmogAkEDai0AADoAACADIAJBAWovAAA7AUQgAyACQRFqKAAANgI8IAMgAkEUaigAADYAPyACQRBqLQAAIRkgAkEMaigCACEYIAJBCGooAgAhFyACQQRqKAIAIRYgCiETDAgLIANBxABqQQJqIAJBA2otAAA6AAAgAyACQQFqLwAAOwFEIAMgAkERaigAADYCPCADIAJBFGooAAA2AD8gAkEQai0AACEZIAJBDGooAgAhGCACQQhqKAIAIRcgAkEEaigCACEWIAohEwwHCyADQcQAakECaiACQQNqLQAAOgAAIAMgAkEBai8AADsBRCADIAJBEWooAAA2AjwgAyACQRRqKAAANgA/IAJBEGotAAAhGSACQQxqKAIAIRggAkEIaigCACEXIAJBBGooAgAhFiAKIRMMBgtBACETIAJBDGooAgAiFkEASA0CIAJBCGooAgAhFSACQRBqLQAAIRkCQAJAIBYNAEEBIRcMAQsQsRpBASETIBZBARD7FyIXRQ0DCwJAIBZFDQAgFyAVIBb8CgAAC0EiIRMgFiEYDAULIApB/wFxQRlGDQIgA0HIAGpBEGogAkEQaikCADcDACADQcgAakEIaiACQQhqKQIANwMAIAMgAikCADcDSAwDCyATIBZBgJnCABDmFgALIBMgFkGAmcIAEOYWAAsgA0HIAGogAhD8CwsgA0HEAGpBAmogCUECai0AADoAACADIAkvAAA7AUQgAyAIKAAANgI8IAMgCEEDaigAADYAPyADLQBIIRMgAygCTCEWIAMoAlAhFyADKAJUIRggAy0AWCEZCyANIAtqIgIgEzoAACACQQFqIAMvAUQ7AAAgAkEDaiADQcQAakECai0AADoAACACQRBqIBk6AAAgAkEMaiAYNgIAIAJBCGogFzYCACACQQRqIBY2AgAgAkERaiADKAI8NgAAIAJBFGogAygAPzYAACACQRxqIBE2AgAgAkEYaiASNgIAIAtBIGohCyAQQX9q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EyIGICFNDQAgAyAVNgKsASADIBY2AqgBIANCADcDoAEgA0GBBDsBkAEgAyAhNgKUASADIAY2ApgBIAcgA0GQAWogFCAFayAGICFrEOkGCyADKALAAiIGIAMoApwCIhNNDQUCQCAFDQAgAyAVNgKsASADIBY2AqgBIANCADcDoAEgA0GBBDsBkAEgAyATNgKUASADIAY2ApgBIAcgA0GQAWpBACAGIBNrEOkGDAYLIAMgFTYCrAEgAyAWNgKoASADQgA3A6ABIAMgBjYCmAEgAyATNgKUASADQYEEOwGQASAHIANBkAFqIAUgBRD5BwwFCyADKALAAiIFICFNDQQgAyAVNgKsASADIBY2AqgBIANCADcDoAEgA0GBBDsBkAEgAyAhNgKUASADIAU2ApgBIAcgA0GQAWogFCAFICFrEOkGDAQLIAMoAsACIgUgIU0NAwJAICBBf2oiBg0AIAMgFTYCrAEgAyAWNgKoASADQgA3A6ABIANBgQQ7AZABIAMgITYClAEgAyAFNgKYASAHIANBkAFqIBQgBSAhaxDpBgwECyADIBU2AqwBIAMgFjYCqAEgA0IANwOgASADIAU2ApgBIAMgITYClAEgA0GBBDsBkAEgByADQZABaiAGIBQQ+QcMAwsgAyAVNgKsASADIBY2AqgBIANCADcDoAEgAyAGNgKYASADICE2ApQBIANBgQQ7AZABIAcgA0GQAWogFCATEPkHCyADKALAAiIGIAMoApwCIhNNDQECQCAFDQAgAyAVNgKsASADIBY2AqgBIANCADcDoAEgA0GBBDsBkAEgAyATNgKUASADIAY2ApgBIAcgA0GQAWpBACAGIBNrEOkGDAILIAMgFTYCrAEgAyAWNgKoASADQgA3A6ABIAMgBjYCmAEgAyATNgKUASADQYEEOwGQASAHIANBkAFqIAUgBRD5BwwBCyADKALAAiIFICFNDQACQCAgQX5qIgYNACADIBU2AqwBIAMgFjYCqAEgA0IANwOgASADQYEEOwGQASADICE2ApQBIAMgBTYCmAEgByADQZABaiAUIAUgIWsQ6QYMAQsgAyAVNgKsASADIBY2AqgBIANCADcDoAEgAyAFNgKYASADICE2ApQBIANBgQQ7AZABIAcgA0GQAWogBiAUEPkHCyADQYCAgIB4NgKQASADQZABaiAHIANBgANqEPoC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aiADQRhqEJITAkACQAJAAkACQAJAAkAgAygCHCIEQYCAgIB4Rg0AIAMoAiAhBSADKAIkIQZBASEHIANBATsBTCADIAY2AkhBACECIANBADYCRCADQQE6AEAgA0EvNgI8IAMgBjYCOCADQQA2AjQgAyAGNgIwIAMgBTYCLCADQS82AiggA0EQaiADQShqEI4HAkAgAygCECIIRQ0AIAMoAhQiAkUNAiAIIQcLIANBwAJqIAFBIGogByACENwXAkAgAygCwAIiAkEnRg0AIANB4ABqQQhqIgEgA0HAAmpBJGooAgA2AgAgAyADKQLcAjcDYCADIAMoAOkCNgLQAyADIANB7AJqKAAANgDTAyADKALEAiEHIAMpA8gCIRsgAygC0AIhCCADKQLUAiEcIAMtAOgCIQYgA0HgAWpBGGogA0HAAmpByABqKQMAIh03AwAgA0HgAWpBEGogA0GAA2opAwAiHjcDACADQeABakEIaiADQfgCaikDACIfNwMAIAMgAykD8AIiIDcD4AEgA0HwA2pBCGoiCSABKAIANgIAIAMgAykDYDcD8AMgAyADKADTAzYAiwEgAyADKALQAzYCiAEgA0GnAWoiASAdNwAAIANBnwFqIB43AAAgA0GXAWogHzcAACADICA3AI8BIABBJGogCSgCADYCACAAIAMpA/ADNwIcIAAgBjoAKCAAIBw3AhQgACAINgIQIAAgGzcDCCAAIAc2AgQgACACNgIAIAAgAykCiAE3ACkgAEExaiADQYgBakEIaikCADcAACAAQTlqIANBiAFqQRBqKQIANwAAIABBwQBqIANBiAFqQRhqKQIANwAAIABByABqIAEpAAA3AAAMBAsgA0HwA2pBCGogA0HkAmooAgAiAjYCACADIAMpAtwCIhw3A2AgAyAcNwPwAyADKALYAiEKIAMoAtQCIQsgAy8B0gIhDCADLwHQAiENIAMpA8gCIRsgAy0A6AIhByADQbABakEIaiACNgIAIAMgHDcDsAEMAgsgAEEnNgIADAMLQQAhCyADQbgBakEANgIAIANCADcDsAFBAiENQQAhCkEAIQcLIANB0ABqQQhqIg4gA0GwAWpBCGoiAigCADYCACADIAMpA7ABNwNQIANBsAFqQSBqIANBKGpBIGopAgA3AwAgA0GwAWpBGGogA0EoakEYaikCADcDACADQbABakEQaiADQShqQRBqKQIANwMAIAIgA0EoakEIaikCADcDACADIAMpAig3A7ABIANBADYC2AEgA0EIaiADQbABahCOBwJAAkACQAJAIAMoAggiD0UNACABQbANaiEQIAFBIGohESADQeABakEsaiESIANB6QJqIRMgA0HcAmohFCADQeAAakEUaiEVIANBgQJqIRYgA0HgAWpBFGohFyADQeABakEYaiEYIAMoAgwhCQNAIAMgAygC2AEiGUEBajYC2AEgCUUNAQJAAkACQAJAAkACQAJAAkACQCAHQf8BcUECSQ0AIA8tAAAhBwJAAkAgCUEBRw0AQQEhASAPIQIgB0FVag4DBQEFAQsCQCAHQStHDQAgCUF/aiEBIA9BAWohAiAJQQpJDQEMAwsgDyECIAkhASAJQQlPDQILQQAhBwNAIAItAABBUGoiCEEJSw0DIAJBAWohAiAIIAdBCmxqIQcgAUF/aiIBDQAMBgsLIBUgAykDUDcCACAVQQhqIA4oAgA2AgAgAyAKNgJwIAMgCzYCbCADIAw7AWogAyANOwFoIAMgGzcDYCADQZQEaiAPIAkQihIgA0GgBGogEUEAIAMQpQ0gA0HAAmogECADQeAAaiADQZQEaiADQaAEahDXAgJAIAMvAWgiAkECRg0AIAJFDQAgAygCbCICRQ0AIAMoAnAgAkEBEL4YCwJAIAMoAsACIgFBJ0YNACADQbACakEIaiICIBRBCGooAgA2AgAgA0GYAmpBCGoiByATQQhqKQAANwMAIANBmAJqQQ9qIg0gE0EPaikAADcAACADIBQpAgA3A7ACIAMgEykAADcDmAIgAygC2AIhGCADKALUAiEPIAMoAswCIQkgAygCyAIhCCADKALEAiETIAMtAOgCIRYgAygC0AIhGSADQf8AaiADQYgDaikDADcAACADQaAEakEIaiACKAIANgIAIANB4ABqQQ9qIA0pAAA3AAAgA0HgAGpBCGogBykDADcDACADIAMpA4ADNwB3IAMgAykDsAI3A6AEIAMgAykDmAI3A2AgGUEQdiEMDA0LIANBsAJqQQhqIgIgFEEIaigCADYCACADQZgCakEIaiIHIBNBCGopAAA3AwAgA0GYAmpBD2oiCCATQQ9qKQAANwAAIAMgFCkCADcDsAIgAyATKQAANwOYAiADIAMoAsgCIgE2AuABIAMg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aiELIANB0ABqQQRyIQwgA0EIakEYaiENIANB0ABqQSBqIQUgAiEOQQAhDwJAA0AgASAIRg0BQQIhEAJAIAEvAQgiBEECRg0AIAEpAwAhIwJAAkACQAJAIARBAXFFDQBBACEEIAEoAhQiEUEASA0DIAEoAhAhBiARDQFBASESDAILIAEoARghEyABKAEUIRQgASgBECESIAEoAQwhESABLwEKIRUgASgCHCEWIAQhEAwDCxCxGkEBIQQgEUEBEPsXIhJFDQELAkAgEUUNACASIAYgEfwKAAALQQEhECABKAIcIRYgESEUDAELIAQgEUGAmcIAEOYWAAsgASgCcCIXrUIwfiIipyEYQQAhBAJAAkACQAJAAkACQAJAAkACQAJAICJCIIinDQAgGEH4////B0sNAAJAAkAgGA0AQQghGQwBCyABKAJsIRoQsRpBCCEEIBhBCBD7FyIZRQ0BIBdFDQBBACEGIBchGwNAIBggBkYNAQJAAkACQCAaIAZqIgRBCGovAQAiHEECRg0AIAQpAwAhIgJAAkAgHEEBcUUNAEEAIRwgBEEUaigCACIdQQBIDQMgBEEQaigCACEeAkACQCAdDQBBASEfDAELELEaQQEhHCAdQQEQ+xciH0UNBAsCQCAdRQ0AIB8gHiAd/AoAAAtBASEcIB0hIAwBCyAEQRhqKAIAISEgBEEUaigBACEgIARBEGooAQAhHyAEQQxqKAEAIR0gBEEKai8BACEeCyADICE2AmggAyAgNgJkIAMgHzYCYCADIB02AlwgAyAeOwFaIAMgHDsBWCADICI3A1AgAyAEQRxqKAIANgJsDAILIANBAjsBWAwBCyAcIB1BgJnCABDmFgALAkACQCAEQSBqIgQoAgBBgICAgHhHDQAgBSAEKQMANwMAIAVBCGogBEEIaigCADYCAAwBCyAFIARB9NzCABDTEQsgGSAGaiIEIAMpA1A3AwAgBEEoaiADQdAAakEoaikDADcDACAEQSBqIAUpAwA3AwAgBEEYaiADQdAAakEYaikDADcDACAEQRBqIAopAwA3AwAgBEEIaiALKQMANwMAIAZBMGohBiAbQX9qIhsNAAsLAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAEtACAOCQABDA0ODxACAwALIANBmAFqIAFBJGpBiL3D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wgAQ2hgACyALIAMpAgg3AgAgCSADKQKYATcCACALQQhqIANBCGpBCGopAgA3AgAgC0EQaiADQQhqQRBqKQIANwIAIAtBGGogDSkCADcCACAJQQhqIANBmAFqQQhqKAIANgIAIAMgBjYCVCADIAQ2AnggA0EDOgBQDAILIAsgAykDCDcDACALQQhqIANBCGpBCGopAwA3AwAgC0EQaiADQQhqQRBqKQMANwMAIAMgGjYCVCADIB82AowBIAMgGDYCiAEgAyAdNgKEASADIAY2AoABIAMgBDYCfCADIBs7AXogAyAcOwF4IAMgIjcDcCADQQE6AFAgAyABLQAhOgBRDAELIAwgAykCmAE3AgAgCiADKQMINwMAIAxBCGogA0GYAWpBCGooAgA2AgAgCkEIaiADQQhqQQhqKQMANwMAIApBEGogA0EIakEQaikDADcDACADIB82ApQBIAMgHTYCkAEgAyAENgKMASADIAY2AogBIAMgGDYChAEgAyAbOwGCASADIBw7AYABIAMgIjcDeCABLQAhIQQgA0EAOgBQIAMgBDoAUQsgByAPQfgAbGohBAJAQcgARSIGDQAgA0EIaiADQdAAakHIAPwKAAALIAQgFjYCHCAEIBM2AhggBCAUNgIUIAQgEjYCECAEIBE2AgwgBCAVOwEKIAQgEDsBCCAEICM3AwACQCAGDQAgBEEgaiADQQhqQcgA/AoAAAsgD0EBaiEPIAFB+ABqIQEgBCAXNgJwIAQgGTYCbCAEIBc2AmggDkF/aiIODQALCyACIQYLIAAgAjYCCCAAIAc2AgQgACAGNgIAIANBsAFqJAAPCyAFIARBkJnCABDmFgALrRsCDH8CfiMAQcACayICJAAgACgC0AEhAyAAQYKAgIB4NgLQASAAKAK8AiEEAkACQAJAIANBgICAgHhqDgMBAQIACyADRQ0AIAAoAtQBIANBARC+GAsgAEEIaiEDIABB2ABqIQUgACgCzAEhBiAAKALIASEHAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAALQDcAQ0AAkBB0ABFIggNACACQQhqIANB0AD8CgAACyADQQc2AgAgAkEIakHQAGohAwJAIAgNACADIAVB0AD8CgAACyAFQQc2AgAgAigCWCEFIAIoAggiCEEHRg0BIAIoAkghCSAFQQdGDQIgCSACKAKYASIKRiILDQMgAigCTCEMIAIoApwBIQ0MBAsCQEHQAEUiCA0AIAJBCGogA0HQAPwKAAALIANBBzYCACACQQhqQdAAaiEDAkAgCA0AIAMgBUHQAPwKAAALIAVBBzYCACACKAJYIQUgAigCCEEHRg0GIAVBB0YNByACQQhqEOYODA8LIAVBB0YNEiACLQChASEIIAIoApwBIQkgAigCmAEhCiACQagBakE8aiADQThqKQIANwIAIAJB3AFqIANBMGopAgA3AgAgAkHUAWogA0EoaikCADcCACACQcwBaiADQSBqKQIANwIAIAJBxAFqIANBGGopAgA3AgAgAkG8AWogA0EQaikCADcCACACQagBakEMaiADQQhqKQIANwIAIAIgAykCADcCrAECQCABKAJEIgUgASgCPEcNACABQTxqQdTewgAQjw4LIAEoAkAgBUHgAGxqIgNBCzYCCCADIAY2AgQgAyAHNgIAAkBBxABFDQAgA0EMaiACQagBakHEAPwKAAALIAMgCDoAXCADIAQ2AlggAyAJNgJUIAMgCjYCUCABIAVBAWo2AkQMEgsCQCACLQBSQQFxDQACQCACLQBQQQFxRQ0AIAEgByAGIARBARDEEgsgAkEIahDmDgwSCyACLQBRIQwgAigCTCENIAhBBEcNCAwQCyACKAJMIgwgAigCnAEiDUYNAQsgDSAMSSAKIAlJIAsbDQEgAi0AoQEhCCACLQBQIQUgAkGoAWpBPGogA0E4aikCADcCACACQdwBaiADQTBqKQIANwIAIAJB1AFqIANBKGopAgA3AgAgAkHMAWogA0EgaikCADcCACACQcQBaiADQRhqKQIANwIAIAJBvAFqIANBEGopAgA3AgAgAkGoAWpBDGogA0EIaikCADcCACACIAMpAgA3AqwBIAVBAXMhAwJAIAEoAkQiBSABKAI8Rw0AIAFBPGpBpN7CABCPDgsgAyAIciEIIAEoAkAgBUHgAGxqIgNBBzYCCCADIAY2AgQgAyAHNgIAAkBBxABFDQAgA0EMaiACQagBakHEAPwKAAALIAMgCEEBcToAXCADIAQ2AlggAyANNgJUIAMgCjYCUCABIAVBAWo2AkQgAkEIahDmDgwPC0IAIQ5CACEPAkAgBUEERw0AQgAhDwJAAkAgAi0AYEFkag4FAQECAAECCyAC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ADcDKCAFQTBqIAhBCGopAwA3AwAgBUE4aiAIQRBqKQMANwMAIAVBwABqIAhBGGopAwA3AwAgBUHIAGogCEEgaikDADcDACAFQfAAaiALIAogCRsiCEEgaikDADcDACAFQegAaiAIQRhqKQMANwMAIAVB4ABqIAhBEGopAwA3AwAgBUHYAGogCEEIaikDADcDACAFIAgpAwA3A1AgBSAGIAcgDRsiBikDADcDeCAFQYABaiAGQQhqKQMANwMAIAVBiAFqIAZBEGopAwA3AwAgBUGQAWogBkEYaikDADcDACAFQZgBaiAGQSBqKQMANwMAQQQhAwwBCyACQQhqQSBqIABBIGopAwA3AwAgAkEIakEYaiAAQRhqKQMANwMAIAJBCGpBEGogAEEQaikDADcDACACQQhqQQhqIABBCGopAwA3AwAgAiAAKQMANwMIIAJBCGogBEEobCIGaiIFIAAgBmoiBikDADcDACAFQQhqIAZBCGopAwA3AwAgBUEQaiAGQRBqKQMANwMAIAVBGGogBkEYaikDADcDACAFQSBqIAZBIGopAwA3AwALIANBAWohDyABIARrIRACQCADIARPDQAgA0EobCEKIA8hBSADIQYDQCAFIQkgAkEIaiAGQShsIgZqIgUgACAGaiIGKQMAIhI3AwAgBUEgaiAGQSBqKQMANwMAIAVBGGogBkEYaikDADcDACAFQRBqIAZBEGopAwAiEzcDACAFQQhqIAZBCGopAwA3AwACQCASIAVBWGopAwBUIBOnIgcgBUFoaigCACIISSAHIAhGG0EBRw0AIAJBiA9qQQhqIgsgBkEcaikCADcDACACQYgPakEQaiIMIAZBJGooAgA2AgAgAiAGKQIUNwOIDyAFKQMIIRMgCiEIAkADQCACQQhqIAhqIgUgBUFYaiIGKQMANwMAIAVBIGogBkEgaikDADcDACAFQRhqIAZBGGopAwA3AwAgBUEQaiAGQRBqKQMANwMAIAVBCGogBkEIaikDADcDAAJAIAhBKEcNACACQQhqIQUMAgsgCEFYaiEIIBIgBUGwf2opAwBUIAcgBUFAaigCACIFSSAHIAVGGw0ACyACQQhqIAhqIQULIAUgBzYCECAFIBM3AwggBSASNwMAIAUgAikDiA83AhQgBUEcaiALKQMANwIAIAVBJGogDCgCADYCAAsgCkEoaiEK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IRNCACEiAkAgBUECRg0AIB8hIgJAIAVBAXENACATKQMAISILICJCBIhC/////w+DISILIAMoAqwDIRUgDiAiIAatfhCxFiADIBU2ApwCIAMgBjYCmAIgAyAfNwOQAiADIBM2AowCIAMgBTYCiAIgAygC3AEhBSADKALIASETIAMoAsQBIRUgAygCwAEhFiADKQOwASEfAkACQCAhQgJRDQAgAykDuAEhIyADQZgBakEQaiADQYgCakEQaikDADcDACADQZgBakEIaiADQYgCakEIaikDADcDACADQYgBakEIaiANQQhqKQIANwMAIANB+ABqQQhqIAxBCGopAwA3AwAgAyADKQOIAjcDmAEgAyANKQIANwOIASADIAwpAwA3A3ggFiEXIBUhEiATIRkgBSEaIB8hIAwBCyADIAcgA0GIAmoQ2gIaIBQgBmshFCAWIRsgFSEcIBMhHSAFIR4gHyEhCyADQZgDaiADQbABaiADKALwASADKAL0ARD1DSADKAKYAyIFQQNHDQALCwJAAkAgIUICUQ0AICBCAlINAQsgEUEBaiERDAELIAsgAykDiAE3AgAgCiADKQN4NwMAIANBmANqQRBqIgUgA0GYAWpBEGopAwA3AwAgA0GYA2pBCGogA0GYAWpBCGopAwA3AwAgC0EIaiADQYgBakEIaikDADcCACAKQQhqIANB+ABqQQhqKQMANwMAIAMgAykDmAE3A5gDIAMgGjYCzAIgAyAZNgK4AiADIBI2ArQCIAMgFzYCsAIgAyAjNwOoAiADICA3A6ACAkAgFCAFKAIAIgVHDQAgAyAHIANBmAFqENoCGiARQQFqIREMAQsgAyAHENQHIBQgBWshFSADKAKgAiADKAKwAiADKAK4AiIWTXEhBSAYKAIQIQYgGCgCDCETAkACQAJAAkACQAJAICGnQQFxRQ0AIBsgHUsNACAFRQ0BIBwgAygCtAJGDQQgFkF/aiEFIAkQrxMiFiAeTQ0DIBUgBWshFSAdQX9qIhQNAiADIAY2AswBIAMgEzYCyAEgA0IANwPAASADQYEEOwGwASADIB42ArQBIAMgFjYCuAEgByADQbABaiAVIBYgHmsQswYMAwsCQCAFRQ0AIBZBf2ohBQJAIAkQrxMiFiAeTQ0AIAMgBjYCzAEgAyATNgLIASADQgA3A8ABIANBgQQ7AbABIAMg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ACADQQhqQTBqQgA3AwAgA0IANwMIIANCgICAgCA3A1ggA0EBOgBQIANBATYCTCADIAY2AkggA0LAgICAEDcDQCADQdwAaiEHAkACQCAFQYCAgIB4Rg0AIANByAJqQRhqIQggA0GIAmpBCGohCSADQYgCakEwaiEKIANBiAJqQRxqIQsgA0GgAWpBMGohDCADQaABakEcaiENIANBgANqQQRqIQ4gA0HoAWohDyADQaABakEIaiEQIAEoAjAhEUEAIRIDQCABIRMgEiEUIBEhBQJAAkAgEUUNAANAIAVBOGwhFSATKAIsIQVBACEWQQAhFwNAAkAgBUEYaigCACAWaiIGIBRLIAYgFElrQf8BcSIYQf8BRg0AAkACQCAYDgIBAAELIBQgFmshFCAFIRMgBUEwaigCACIFRQ0EDAMLIBchFCAXIBMoAiRPDQYMBAsgBkEBaiEWIAVBOGohBSAXQQFqIRcgFUFIaiIVDQAMBQsLCyAUIBMoAiRPDQILIBMoAiAgFEEFdGoiBSgCECEYIAhCADcDACAIQRBqQgA3AwAgCEEIakIANwMAIAhBGGpBADYCACAFKAIcIhkoAgwhBiAZKAIQIRQgBSkDACEhIBAgAykDyAI3AwAgEEEIaiADQcgCakEIaikDADcDACAQQRBqIANByAJqQRBqKQMANwMAIBBBGGogCCkDADcDACAQQSBqIANByAJqQSBqKQMANwMAIBBBKGogA0HIAmpBKGopAwA3AwAgEEEwaiADQcgCakEwaigCADYCACADQgA3A6ABIAMgGDYC8AEgAyAhNwPoASADIBQ2AuQBIAMgBjYC4AEgEkEBaiESQgIhIkICISMDQCADQYADaiADQaABaiAGIBQQ+AMgAygCgANBAUYNAyADKAKMAyEFIAMoAogDIRcCQCADKAKEAyIVQQNGIhYNACAFRQ0BCwJAAkACQCAWDQAgAyADKALwASAFazYC8AEgD0IAELEWIAMgBTYChAIgAyAXNgKAAiADIBU2AvwBIAMoAswBIQYgAygCuAEhFCADKAK0ASEWIAMoArABIRcgAykDoAEhISAjQgJRDQEgAykDqAEhJCADQZABakEIaiADQfwBakEIaigCADYCACADQYABakEIaiANQQhqKQIANwMAIANB8ABqQQhqIAxBCGopAwA3AwAgAyADKQL8ATcDkAEg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AUEBEL4YCyACQQZBARC+GCAAQYCAgIB4NgIkIAAgBjcDCCAAQRw6AAAMGQtBACEEAkACQAJAAkACQAJAAkAgAS0AAEFkag4FAAECAwQGCyABKQMIuSEKDAQLIAEpAwi6IQoMAwsgASsDCCEKDAILIAEpAxC5IQoMAQsgASkDCLkhCgtBASEECyADQThqIAEQ7AUQsRpBBkEBEPsXIgJFDQ8gAkEEakEALwDQhkM7AAAgAkEAKADMhkM2AAAgA0EANgJYIANCgICAgBA3AlAgA0Hc48EANgJgIANCoICAgA43AmQgAyADQdAAajYCXCABIANB3ABqEIQFDRAgA0EgaiIBIANB0ABqQQhqKAIANgIAIANBCGogA0E4akEIaikDADcDACADQRBqIgUgA0E4akEQaikDADcDACADIAMpAlA3AxggAyADKQM4NwMAIANBBToAMCADQQY2AiwgAyACNgIoIANBBjYCJCAERQ0KIAMQ/Q8CQCADKAIYIgFFDQAgAygCHCABQQEQvhgLIAJBBkEBEL4YIABBgICAgHg2AiQgACAKOQMIIABBHjoAAAwYCyADQThqIAEQ7AUQsRpBCkEBEPsXIgJFDRAgAkEIakEALwCIhkM7AAAgAkEAKQCAhkM3AAAgA0EANgJYIANCgICAgBA3AlAgA0Hc48EANgJgIANCoICAgA43AmQgAyADQdAAajYCXCABIANB3ABqEIQFDREgA0EYaiADKQJQIgY3AwAgA0EgaiADQdAAakEIaigCACIBNgIAIANBCGogA0E4akEIaikDACIHNwMAIANBEGogA0E4akEQaikDACIINwMAIAMgAykDOCIJNwMAIABBIGogATYCACAAQRhqIAY3AwAgAEEQaiAINwMAIABBCGogBzcDACAAIAk3AwAgAEEAOgAwIABBCjYCLCAAIAI2AiggAEEKNgIkDBcLIABBgICAgHg2AiQgAEEfOgAAIAAgASkDCCIGNwMQIAAgBjcDCAwWCyADIAEQ7AUgAEGAgICAeDYCJCAAQRBqIANBEGopAwA3AwAgAEEIaiADQQhqKQMANwMAIAAgAykDADcDAAwVCwJAIAEpAwgiBkIAUw0AIABBgICAgHg2AiQgACAGNwMQIAAgBjcDCCAAQR86AAAMFQsgAyABEOwFIANBOGpBgIbDAEEKEIkSIANBGGoiAUGKhsMAQSUQiRIgA0EsaiADQThqQQhqKAIANgIAIAMgAykCODcCJCAAQShqIANBKGopAwA3AwAgAEEgaiADQSBqKQMANwMAIABBGGogASkDADcDACAAQRBqIANBEGopAwA3AwAgAEEIaiADQQhqKQMANwMAIAAgAykDADcDACAAQQA6ADAMFAsgA0E4aiABEOwFELEaQQpBARD7FyICRQ0OIAJBCGpBAC8AiIZDOwAAIAJBACkAgIZDNwAAIANBADYCWCADQoCAgIAQNwJQIANB3OPBADYCYCADQqCAgIAONwJkIAMgA0HQAGo2AlwgASADQdwAahCEBQ0PIANBGGogAykCUCIGNwMAIANBIGogA0HQAGpBCGooAgAiATYCACADQQhqIANBOGpBCGopAwAiBzcDACADQRBqIANBOGpBEGopAwAiCDcDACADIAMpAzgiCTcDACAAQSBqIAE2AgAgAEEYaiAGNwMAIABBEGogCDcDACAAQQhqIAc3AwAgACAJNwMAIABBAToAMCAAQQo2AiwgACACNgIoIABBCjYCJAwTCyAAQYCAgIB4NgIkIABBIDoAACAAIAEpAwg3AwgMEgsCQCABKQMIIgZCAFMNACAAQYCAgIB4NgIkIAAgBjcDCCAAQSA6AAAMEgsgAyABEOwFIANBOGpBgIbDAEEKEIkSIANBGGoiAUGKhsMAQSUQiRIgA0EsaiADQThqQQhqKAIANgIAIAMgAykCODcCJCAAQShqIANBKGopAwA3AwAgAEEgaiADQSBqKQMANwMAIABBGGogASkDADcDACAAQRBqIANBEGopAwA3AwAgAEEIaiADQQhqKQMANwMAIAAgAykDADcDACAAQQE6ADAMEQsgAS0AAEEaRg0PIANBOGogARDsBRCxGkERQQEQ+xciAkUNDSACQRBqQQAtAL+GQzoAACACQQhqQQApALeGQzcAACACQQApAK+GQzcAACADQQA2AlggA0KAgICAEDcCUCADQdzjwQA2AmAgA0KggICADjcCZCADIANB0ABqNgJcIAEgA0HcAGoQhAUNDiADQRhqIAMpAlAiBjcDACADQSBqIANB0ABqQQhqKAIAIgE2AgAgA0EIaiADQThqQQhqKQMAIgc3AwAgA0EQaiADQThqQRBqKQMAIgg3AwAgAyADKQM4Igk3AwAgAEEgaiABNgIAIABB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IAFBkAJqIgopAwA3AwAgA0HgAWpBKGoiDyABQZgCaiIRKQMANwMAIAMgEjcD4AEgESAAKQMANwMAIAogCykDADcDACABIAMpA6gCNwOIAiAHIA8pAwA3AwAgAiAIKQMANwMAIANBoAFqQRhqIAYpAwA3AwAgCSAOKQMANwMAIAQgECkDADcDACADIAMpA+ABNwOgAQsgA0HgAWpBCGoiBiADQakBaikAADcDACADQeABakEQaiIIIANBsQFqKQAANwMAIANB4AFqQRhqIgkgA0G5AWopAAA3AwAgA0HgAWpBIGoiCiADQcEBaikAADcDACADQeABakEnaiIEIANByAFqKQAANwAAIAMgAykAoQE3A+ABIAMtAKABIQEgBSAFKAIIQX9qNgIIAkAgAy0AkwFBAUcNACANRQ0HIAUgDUF/ajYCBCAFIAwoApgEIgs2AgAgC0EANgKQBCAMQcgEQQgQvhgLIANB4ABqQSdqIAQpAAA3AAAgA0HgAGpBIGogCikDADcDACADQeAAakEYaiAJKQMANwMAIANB4ABqQRBqIAgpAwA3AwAgA0HgAGpBCGogBikDADcDACADIAMpA+ABNwNgIAFB/wFxQRpGDQAgA0HIAWogA0GHAWopAAAiEjcAACADQcEBaiADQYABaikDADcAACADQbkBaiADQeAAakEYaikDADcAACADQbEBaiADQeAAakEQaikDADcAACADQakBaiADQeAAakEIaikDADcAACADQeABakEIaiADQf8AaikAADcDACADQeABakEQaiASNwMAIAMgAykDYDcAoQEgAyADKQB3NwPgASADIAE6AKABAkAgAUEecUEYRw0AIAFBaWpB/wFxQQJJDQAgAygCpAEiASABKAIAIgFBf2o2AgAgAUEBRw0AIANBoAFqQQRyEJ4TCyADLQDgAUEkRg0AIANB4AFqEP0PCwJAIAMtAEgiAUEecUEYRw0AIAFBaWpBAkkNACADKAJMIgEgASgCACIBQX9qNgIAIAFBAUcNACADQcgAakEEchCeEwtBASEGDAgLIAMpAzAgAykDEFENAQwFCyADKQMwIAMpAxBSDQQLIANBKGoQqBAMBAsgCiAGQYCZwgAQ5hYACyAKIAZBgJnCABDmFgALQajxwQBBIUHM8cEAEM4TAAsgAygCQCEIIAMoAjwhBiAAQQxqEJQJ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AlQhDAJAIAMoAhAiCCADKAIIRw0AIANBCGpBqNTDABCKDgsgAygCDCAIQRhsaiIGIAIpAzA3AgAgBiAMNgIUIAYgBzYCECAGIAs2AgwgBkEIaiAFKAIANgIAIAMgCEEBajYCEAwCCwJAAkAgBUGAgICAeEYNAEEHIQYgAUEHcUEHRw0BIAJByABqIAogBCgCACAJEJwQIAoQtRMgA0GAgICAeDYCFCADIAIpAkg3AhggA0EgaiACQdAAaikCADcCACADQShqIAJB2ABqKQIANwIADAYLIANBGGohBUECIQYCQAJAAkACQAJAAkACQCABQQdxDggMAAECAwQFBgwLIAUgBCgCACAJELcTQQchBgwLCyAFIAQoAgAgCRC5E0EHIQYMCgsgBSAEKAIAIAkQuhNBByEGDAkLIAUgBCgCACAJELsTQQchBgwICyAFIAQoAgAgCRC4E0EHIQYMBwsgBUEIaigCACEBIAQoAgAhBiAFKQIAIQ0gA0KAgICAwAA3AhggA0EANgIgIAJByABqQQhqIgggATYCACACIA03A0ggAykCJCENIAMoAiwhASAKELUTIAMgCTYCMCADIAY2AiwgAyABNgIoIAMgDTcCICAKQQhqIAgoAgA2AgAgCiACKQNINwIAQQchBgwGC0EDIQYMBQsgAkHIAGogChC2ECAKELUTIANBgICAgHg2AhQgAyACKQJINwIYIANBIGogAkHQAGopAgA3AgAgA0EoaiACQdgAaikCADcCACACQRBqIAMgASAEKAIAIAkQtAUgAigCFCEIIAIoAhAhBgwECyADKQIYIQ0gA0KAgICAwAA3AhggA0EgaiIGKAIAIQggBkEANgIAIAJByABqQQhqIgUgCDYCACACIA03A0ggAygCLCEHIAMoAighCyADKAIkIQwCQCADKAIQIgggAygCCEcNACADQQhqQZjUwwAQig4LIAMoAgwgCEEYbGoiBiACKQNINwIAIAYgDDYCFCAGIAc2AhAgBiALNgIMIAZBCGogBSgCADYCACADIAhBAWo2AhALAkAgCigCACIGQf////8HakECSQ0AIAZFDQACQAJAIAZBgICAgHhGDQBBBCEIDAELIAMoAhgiBkUNAUEIIQgLIAogCGooAgAgBkEUbEEEEL4YCyADQYGAgIB4NgIUIAJBGGogAyABIAQoAgAgCRC0BSAC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gICAEFQbQv////8PgyERCyACKAIcIQ0gDiARIAetfhCxFiAHDQIgAkEIaiACQYgBaiACKALIASACKALMARD2DSACKAIIIgFBA0cNAAsLCwJAQdgARSIODQAgAkEIaiACQYgBakHYAPwKAAALAkAgDg0AIAAgAkEIakHYAPwKAAALIAAgBDYCoAEgACAFNgKcASAAIAY2ApgBIAAgAzYCkAEgACAQQQFqNgKIASAAIAsgDCALIAxLGyALIAwbNgKAASAAIAogCCAKIAhJGyAIIAobIAogCBs2AnwgACAFIA9qNgJ4IAAgFCASfCISNwNwIAAgDTYCbCAAIAc2AmggACAVNwNgIAAgCTYCXCAAIAE2AlggACkDSCEVQgAhEQJAAkACQCABQX5qDgIBAgALIABB4ABqIAkgAUEBcRspAwAiEUKAgICAECARQoCAgIAQVBtC/////w+DIRELIBEgB61+IRELIBMgEn0gFXwgEXwhEQsgAiARNwMACwJAAkACQAJAIAFBfmoOAgAHAQsgACAFIAAoAmgiB2o2ApwBIABB6ABqIQEgB60hFUIAIREMAQsgAEHgAGogACgCXCABQQFxGyIHKQMAIhVCgICAgBAgFUKAgICAEFQbIhJC/////w+DIAAoAmgiCa0iFX4gEVYNASAAQegAaiEBIAAgBSAJajYCnAEgBykDACIRQoCAgIAQIBFCgICAgBBUG0L/////D4MhEQsgAiARIBV+ELEWIAFBADYCACACKQMAIREMBAsgACARIBKnEM8WIgEgACgCnAFqNgKcASAAIAAoAmggAWs2AmgMBAsgAkGIAWogACAEIAVrEJYDDAMLQfyBwgBBIkGggsIAEM4TAAtBsILCABDaGAALIAIgETcDCCACQYgBaiAAIAAoAkAgACgCRBD2DUEDIQhBACEFAkACQAJAIAIoAogBIgdBA0YNACAAQcgAaiEOQQAhBQNAIAIoApwBIQ0gAikDkAEhFSACKAKMASEJIAAgACgCUCACKAKYASIBazYCUAJAAkAgB0ECRw0AQgAhEiAOQgAQsRYgAa0hEQwBCyAVIRECQCAHQQFxIgoNACAJKQMAIRELIA4gEUKAgICAECARQoCAgIAQVBtC/////w+DIAGtIhF+ELEWIBUhEgJAIAoNACAJKQMAIRILAkAgEkKAgICAECASQoCAgIAQ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CyAEQYAMakEMakIANwIAIARBgAxqQRRqQQA2AgAgBEGADWpBGGoiAUIANwMAIARBgA1qQSBqIgJCADcDACAEQYANakEoaiIDQgA3AwAgBEGADWpBMGoiBUEANgIAIARBmAxqQRxqQgA3AgAgBEGYDGpBJGpBADYCACAAQgA3AkQgAEHMAGpCADcCACAEQgA3AoQMIARCADcCrAwgBEG0DWpBDGpCADcCACAEQgA3ArgNIARByA1qQTBqIgZBADYCACAEQcgNakEoaiIHQgA3AwAgBEHIDWpBIGoiCEIANwMAIARByA1qQRhqIglCADcDACAAQfQBakIANwIAIABCADcC7AEgBEH4CmpBFGpBADYCACAEQfgKakEMakIANwIAIARCADcC/AogAEGNBmpCADcAACAAQYgGakIANwMAIABCADcDgAYgBEHADGpBFGpBADYCACAEQcAMakEMakIANwIAIARCADcCxAwgBEGADmpBMGoiCkEANgIAIARBgA5qQShqIgtCADcDACAEQYAOakEgaiIMQgA3AwAgBEGADmpBGGoiDUIANwMAIABBnANqQgA3AgAgAEIANwKUAyAEQdgMakEkakEANgIAIARB2AxqQRxqQgA3AgAgBEIANwLsDCAEQbgOakEwaiIOQQA2AgAgBEG4DmpBKGoiD0IANwMAIARBuA5qQSBqIhBCADcDACAEQbgOakEYaiIRQgA3AwAgAEG0BGpCADcCACAAQgA3AqwEIARByAtqQRhqIhJBADYCACAEQcgLakEQaiITQgA3AgAgBEHIC2pBCGoiFEIANwIAIARBxAtqQQA2AAAgBEG8C2pCADcAACAEQgA3ALQLIARBkAtqQRRqQQA2AgAgBEGQC2pBDGpCADcCACAEQgA3ApQLIARB5QtqQRdqIhVBADYAACAEQfQLakIANwAAIARCADcA7AsgAEGFB2pCADcAACAAQYAHakIANwMAIABCADcD+AYgAEIANwMAIABBOGogBSgCADYCACAAQTBqIAMpAwA3AwAgAEEoaiACKQMANwMAIABBIGogASkDADcDACAAQRhqIARBgA1qQRBqKQMANwMAIABBEGogBEGADWpBCGopAwA3AwAgACAEKQOADTcDCCAAQQE2AkAgAEHkAGogBEGADGpBEGopAgA3AgAgAEHcAGogBEGADGpBCGopAgA3AgAgACAEKQKADDcCVCAAQQM2AoABIABBADYCeCAAQQA2AnAgAEGcAWogEigCADYCACAAQZQBaiATKQIANwIAIABBjAFqIBQpAgA3AgAgACAEKQLICzcChAEgAEHQAWogBigCADYCACAAQcgBaiAHKQMANwMAIABBwAFqIAgpAwA3AwAgAEG4AWogCSkDADcDACAAQbABaiAEQcgNakEQaikDADcDACAAQagBaiAEQcgNakEIaikDADcDACAAIAQpA8gNNwOgASAAQeQBaiAEQbQNakEQaigCADYCACAAQdwBaiAEQbQNakEIaikCADcCACAAIAQpArQNNwLUASAAQQM2AoACIABBATYC6AEgAEGkAmogBEGYDGpBIGopAgA3AgAgAEGcAmogBEGYDGpBGGopAgA3AgAgAEGUAmogBEGYDGpBEGopAgA3AgAgAEGMAmogBEGYDGpBCGopAgA3AgAgACAEKQKYDDcChAIgAEIANwPQAiAAQQA2AsgCIABCADcDwAIgAEEANgK4AiAAQQA2ArACIABBiANqIAooAgA2AgAgAEGAA2ogCykDADcDACAAQfgCaiAMKQMANwMAIABB8AJqIA0pAwA3AwAgAEHoAmogBEGADmpBEGopAwA3AwAgAEHgAmogBEGADmpBCGopAwA3AwAgACAEKQOADjcD2AIgAEEBNgKQAyAAQbQDaiAEQcAMakEQaikCADcCACAAQawDaiAEQcAMakEIaikCADcCACAAIAQpAsAMNwKkAyAAQQM6ANADIABBADYCyAMgAEEANgLAAyAAQegDaiAEQakLakEXaikAADcAACAAQeEDaiAEQakLakEQaikAADcAACAAQdkDaiAEQakLakEIaikAADcAACAAIAQpAKkLNwDRAyAAQaAEaiAOKAIANgIAIABBmARqIA8pAwA3AwAgAEGQBGogECkDADcDACAAQYgEaiARKQMANwMAIABBgARqIARBuA5qQRBqKQMANwMAIABB+ANqIARBuA5qQQhqKQMANwMAIAAgBCkDuA43A/ADIABBAzYCwAQgAEEBNgKoBCAAQeQEaiAEQdgMakEgaikCADcCACAAQdwEaiAEQdgMakEYaikCADcCACAAQdQEaiAEQdgMakEQaikCADcCACAAQcwEaiAEQdgMakEIaikCADcCACAAIAQpAtgMNwLEBCAA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Rg0AAkBBxABFIgENACAFQbgBaiAFQcACakEEckHEAPwKAAALIAUpA4gDIQ0CQCABDQAgAEEMaiAFQbgBakHEAPwKAAALIAAgDTcDUCAAIAM2AgggAEEBNgIAIARFDQMgAiAEQQV0QQEQvhgMAwsgBUH0AWogBUGAA2opAwAiDTcCACAFQewBaiAFQcACakE4aikDACIONwIAIAVB5AFqIAVBwAJqQTBqKQMAIg83AgAgBUHcAWogBUHAAmpBKGopAwAiEDcCACAFQYABaiAFQcACakEQaikDADcDACAFQfgAakEQaiAFQcACakEYaikDADcDACAFQfgAakEYaiAFQcACakEgaikDADcDACAFQfgAakEgaiAQNwMAIAVB+ABqQShqIA83AwAgBUH4AGpBMGogDjcDACAFQfgAakE4aiANNwMAIAUgBSkDyAI3A3ggBEUNASACIARBBXRBARC+GAwBCyAFQcACaiAIIAVBIGpBACAFENcEAkAgBSgCwAIiBEEnRg0AAkBBxABFIgENACAFQbgBaiAFQcACakEEckHEAPwKAAALIAUpA4gDIQ0CQCABDQAgAEEMaiAFQbgBakHEAPwKAAALIAAgDTcDUCAAIAQ2AgggAEEBNgIADAILIAVB9AFqIAVBgANqKQMAIg03AgAgBUHsAWogBUHAAmpBOGopAwAiDjcCACAFQeQBaiAFQcACakEwaikDACIPNwIAIAVB3AFqIAVBwAJqQShqKQMAIhA3AgAgBUHUAWogBUHAAmpBIGopAwAiETcCACAFQYABaiAFQcACakEQaikDADcDACAFQfgAakEQaiAFQcACakEYaikDADcDACAFQfgAakEYaiARNwMAIAVB+ABqQSBqIBA3AwAgBUH4AGpBKGogDzcDACAFQfgAakEwaiAONwMAIAVB+ABqQThqIA03AwAgBSAFKQPIAjcDeAsgBUHAAmogARDoBAJAIAUoArwDQYCAgIB4Rw0AAkBB0ABFDQAgBUG4AWogBUHAAmpB0AD8CgAAC0H8w8AAQSsgBUG4AWpB5JfBAEHwtcEAEPgQAAsCQEGIAUUNACAFQbgBaiAFQcACakGIAfwKAAALIAEgBUG4AWogBUH4AGoQjgMhASAAQQU2AgAgACABNgIEAkAgBS8BKCIAQQJGDQAgAEUNACAFKAIsIgBFDQAgBSgCMCAAQQEQvhgLAkAgBS8BCCIAQQJGDQAgAEUNACAFKAIMIgBFDQAgBSgCECAAQQEQvhgLIAVBuAFqEKgDDAILAkAgBS8BKCIAQQJGDQAgAEUNACAFKAIsIgBFDQAgBSgCMCAAQQEQvhgLIAUvAQgiAEECRg0BIABFDQEgBSgCDCIARQ0BIAUoAhAgAEEBEL4YDAELIARBhAhJDQAgBBCvEQsgBUHgA2okAAu1EwEsfyMAQdAAayIKJAACQAJAIAIgAyAEIAUgBiAHELUMIgtFDQAgCiABIAMgBiALEO4PIAooAgBBJ0YNAEHQAEUNASAAIApB0AD8CgAADAELIAsgBmohDEEAIQ0CQAJAAkACQAJAAkAgBCALIANqIg5NDQAgByAMTQ0AIAQgDmshDSAHIAxrIQ8gDCAHayEQIAdBA3QgBSgCBGpBeGohESAEQQN0IAIoAgRqQXhqIRIgAigCCCETIAUoAgghFEEAIQNBACEVA0AgDSADakUNASAHIANqIhZBf2ogFE8NAyAEIANqIhZBf2ogE08NAgJAIBFBBGooAgAiFiASQQRqKAIARg0AIBUhDQwCCwJAIBEoAgAgEigCACAWEIQTRQ0AIBUhDQwCCyARQXhqIREgEkF4aiESIBVBAWohFSAQIANBf2oiA0cNAAsgDyENCyAHIA1rIRcCQCAEIA1rIhggDksiAw0AIBcgDE0NBQsgFyAMTQ0CAkAgAw0AIAogASAOIAxBACAXIAxrIgMgAyAXSxsQxA0gCigCACIDQSdGDQUCQEHMAEUNACAAQQRqIApBBHJBzAD8CgAACyAAIAM2AgAMBgsgCEEBQdyKwQAQzBRBADYCACAJQQFB7IrBABDMFEEANgIAAkAgCCgCCEEAIBcgDGsiGSAZIBdLGyIaIBggDmsiG2oiAyADQQF2ayIDTQ0AAkAgCSgCCCADTQ0AIANBAWohHCAbIBprIh1BAXEhHiAMIBcgDCAXSRsiA0F/cyALIAdqIAZqIh9qISBBACANayEVIARBf2ohISAaIAxqISIgDiAEayEjIAIoAgQgBEEDdGohJCANIANqISVBACADayEmIAUoAgQhJyACKAIIISggBSgCCCEpQQEhA0EAISoDQCADISsgKiESQQEhAwJAAkACQCAqQQAgKmsiFEogKiAUSGtB/wFxDgMBAAICCyAqQX9qIRJBACEDCwJAAkAgKkUNACAIICpBf2pB9IzBABDMFCgCAEEBaiERDAELIAhBAUGEjcEAEMwUKAIAIRELIBEgKmshFiARIQQCQCARIBtPDQAgESEEIBYgGk8NACACIBEgDmogGCAFIBYgDGogFxC1DCARaiEECyAIICpBlI3BABDMFCAENgIAAkACQCAeRQ0AICogHWsiBCAEQR91IgZzIAZrICpODQAgCCAqQaSNwQAQzBQoAgAgCUEAIARrQbSNwQAQzBQoAgBqIBtPDQELIAMgEiAUSHINAQNAIBIiEUGAgICAeEYNAkEBIQYgEUF/aiIDIRICQAJAIAMgFEogAyAUSGtB/wFxDgMBAAQECyARQX5qIRJBACEGCwJAAkACQCADIBRGDQAgEUF+aiEEIAMgKkYNASAIIARB1IzBABDMFCgCACAIIBFB5IzBABDMFCgCAE8NAQsgCCARQYSNwQAQzBQoAgAhEQwBCyAIIARB9IzBABDMFCgCAEEBaiERCyARIANrIRYgESEEAkAgESAbTw0AIBEhBCAWIBpPDQAgAiARIA5qIBggBSAWIAxqIBcQtQwgEWohBAsgCCADQZSNwQAQzBQgBDYCAAJAIB5FDQAgAyAdayIEIARBH3UiE3MgE2sgKk4NACAIIANBpI3BABDMFCgCACAJQQAgBGtBtI3BABDMFCgCAGogG08NAgsgBiASIBRIckUNAAwCCwsgFiAMaiEDIBEgDmohEQwHC0EBICprISxBACETICohLQJAA0AgLSIWIBNrIgMgFkoNAUEBIS4gAyEtAkACQCADIBRKIAMgFEhrQf8BcQ4DAQADAwsgA0F/aiEtQQAhLgsgLCERAkACQAJAIAMgFEYNACADQX9qIRIgAyAqRg0BIAkgEkHki8EAEMwUKAIAIAkgA0EBaiIRQfSLwQAQzBQoAgBPDQELIAkgEUGUjMEAEMwUKAIAIRIMAQsgCSASQYSMwQAQzBQoAgBBAWohEgsgEiADayEvAkAgEiAbTw0AIC8gGk8NAEEAITACQAJAAkAgGCASayIRIA5NDQAgIiAvayILIAxNDQAgJyAfIBZqQQN0ICUgEmogE2pBA3RraiExICMgEmohBCAhIBJrIQYgCyAMayEyIBEgDmshMEEAIRFBACAHIBZqayELICAgFmogEmsgE2shFiAVICYgEmsgE2tqITMgJCANIBJqQQN0ayE0QQAhEwNAIBUgBEYNASAVIBZqIClPDQIgFSAGaiAoTw0DAkAgMSARaiIQQXxqKAIAIg8gNCARaiI1QXxqKAIARg0AIBMhMAwCCwJAIBBBeGooAgAgNUF4aigCACAPEIQTRQ0AIBMhMAwCCyAWQX9qIRYgBEEBaiEEIBFBeGohESAGQX9qIQYgE0EBaiETIDMgC0EBaiILRw0ACyAyITALIDAgL2ohLyAwIBJqIRIMAgsgFiANayApQeSNwQAQ4xEACyAGIA1rIChB9I3BABDjEQALIAkgA0GkjMEAEMwUIBI2AgACQCAeDQAgAyAdayIRIBFBH3UiBHMgBGsgKkoNACAJIANBtIzBABDMFCgCACAIQQAgEWtBxIzBABDMFCgCAGogG0kNACAiIC9rIQMgGCASayERDAkLQQEhEyAuIC0gFEhyRQ0ACwsgKyArIBxIIhFqIQMgKyEqIBENAAsgCiABIA4gGyAMEMUNAkAgCigCACIDQSdGDQACQEHMAEUNACAAQQRqIApBBHJBzAD8CgAACyAAIAM2AgAMCAsgCiABIA4gDCAZEMQNIAooAgAiA0EnRg0GAkBBzABFDQAgAEEEaiAKQQRyQcwA/AoAAAsgACADNgIADAcLQbCLwQBBI0HUi8EAEM4TAAtB/IrBAEEjQaCLwQAQzhMACyAWQX9qIBNB9I3BABDjEQALIBZBf2ogFEHkjcEAEOMRAAsgCiABIA5BACAYIA5rIgMgAyAYSxsgDBDFDSAKKAIAIgNBJ0YNAQJAQcwARQ0AIABBBGogCkEEckHMAPwKAAALIAAgAzYCAAwCCyAKIAEgAiAOIBEgBSAMIAMgCCAJEOsBAkAgCigCACISQSdGDQACQEHMAEUNACAAQQRqIApBBHJBzAD8CgAACyAAIBI2AgAMAgsgCiABIAIgESAYIAUgAyAXIAggCRDrASAKKAIAIgNBJ0YNAAJAQcwARQ0AIABBBGogCkEEckHMAPwKAAALIAAgAzYCAAwBCwJAIA1FDQAgCiABIBggFyANEO4PIAooAgAiA0EnRg0AAkBBzABFDQAgAEEEaiAKQQRyQcwA/AoAAAsgACADNgIADAELIABBJzYCAAsgCkHQAGokAAvNFQIPfwF+IwBBsMcAayIEJAAgBEEgaiABIAIQ7AcgBCgCKCEFIAQoAiQhAgJAAkACQAJAIAQoAiAiBkEnRg0AIARBqhlqIARBL2otAAA6AAAgBEHoLWogBEEgakEYaikDADcDACAEQfAtaiAEQSBqQSBqKQMANwMAIARB4C1qQRhqIARBIGpBKGopAwA3AwAgBEHgLWpBIGogBEEgakEwaikDADcDACAEQeAtakEoaiAEQSBqQThqKQMANwMAIARB4C1qQTBqIARB4ABqKQMANwMAIARB4C1qQThqIARB6ABqKQMANwMAIAQgBC8ALTsBqBkgBCAEKQMwNwPgLSAFrUIghiACrYQhEyAELQAsIQEMAQsgBCAFNgIkIAQgAjYCIAJAIAINAEEAIQVBACEGDAILIAFB4ANqIARBIGoQ+AtB/wFxIgZBBEcNAUIAIRNBIiEGCyAAIAE6AAwgACATNwIEIAAgBjYCACAAIAQvAagZOwANIAAgBCkD4C03AxAgAEEPaiAEQagZakECai0AADoAACAAQRhqIARB6C1qKQMANwMAIABBIGogBEHwLWopAwA3AwAgAEEoaiAEQeAtakEYaikDADcDACAAQTBqIARB4C1qQSBqKQMANwMAIABBOGogBEHgLWpBKGopAwA3AwAgAEHAAGogBEHgLWpBMGopAwA3AwAgAEHIAGogBEHgLWpBOGopAwA3AwAgAygCACIBQYCAgIB4ckGAgICAeEYNASADKAIEIAFBAnRBBBC+GAwBCyAEIAY6ABggBCAFrUIghiACrYQ3AxAgBEEIaiABQeADaiICIARBEGoQzwsgBCAEKQMINwKoGSAEQeAtaiACIARBqBlqEOoEIARBkMIAaiADQQhqKAIANgIAIAQgAykCADcDiEICQEG4FEUNACAEQagZaiAEQeAtakG4FPwKAAALELEaAkACQEEUQQQQ+xciAkUNAEEAIQcgAkEANgIQIAJBADYCCCACQoGAgIAQNwIAAkBBuBRFDQAgBEEgaiAEQagZakG4FPwKAAALIAQgAjYCpBkgBEEANgKgGSAEQoCAgICAATcDmBkgBEICNwPYFAJAAkAgBkF+ag4CAQADC0EBIQcLQQAhCCAEQQA2AqBCIARBADYCmEIgBEEANgKkQiABLQCcDyEJIARBqBlqIARBIGoQ0AJBACEKQQAhCwJAIAQpA6gZIhNCAlENACAEQaQZaiEMIARBmBlqIQIgBEGowgBqQQhqIQ0gBEGo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AwAgCEHIAWpBKGogCEE4akEoaikDADcDACAIQcgBakEgaiAIQThqQSBqKQMANwMAIAhByAFqQRhqIAhBOGpBGGopAwA3AwAgCEHIAWpBEGogCEE4akEQaikDADcDACAIQcgBakEIaiAIQThqQQhqKQMANwMAIAggCCkDODcDyAELIAhB4AJqIAhBOGogASANEPgDIAgpAugCIQ8gCCgC5AIhCyAIKALgAkEBRw0ACwsgCCgCuAEhCQJAIAgoArwBIg1FDQAgCSEBA0ACQCABLQAAQQZHDQAgAUEEaigCACIKQYCAgIB4Rg0AIApFDQAgAUEIaigCACAKQQEQvhgLIAFBIGohASANQX9qIg0NAAsLIAgoArQBIgFFDQEgCSABQQV0QQgQvhgMAQsgASANIAhB+ABqIAhByAFqIAhBOGoQ3AQCQEHQAEUNACAIQeACaiAIQfgAakHQAPwKAAALIAgoAmAhASAIQcgCaiAIQeACahCGAyAIKALMAiAIKALQAhDLBSAIQYgCaiAIQcgCahD1BiAIQRBqIg1BADYCACAIQRhqQQhqIgogCEGIAmpBFGopAgA3AwAgCEEYakEQaiIJIAhBiAJqQRxqKQIANwMAIAhBMGoiDiAIQYgCakEkaigCADYCACAIIAE2AsACIAhBCGoiASAIQYgCakE0aikCADcDACAIQQA2AsQCIAggCCkClAI3AxggCCAIKQK0AjcDACAIKAKIAiELIAgpAowCIQ8gCCgCsAIiAkGBgICAeEcNAQsgAEGBgICAeDYCKAwKCyAAIAgpAxg3AgwgACAIKQMANwIsIABBJGogDigCADYCACAAQRxqIAkpAwA3AgAgAEEUaiAKKQMANwIAIABBNGogASkDADcCACAAQTxqIA0oAgA2AgAgACACNgIoDAkLELEaAkACQCAHDQBBFEEEEPsXIgFFDQYgAUEANgIQIAFCgICAgBA3AgggAUKBgICAEDcCACAIQYABakIANwMAIAhBiAFqQgA3AwAgCEGQAWpBADYCACAIIAE2ApQBIAhCADcDeAwBC0EgQQgQ+xciAUUNBiABQQg6AAAgCEHgAmpBCGpCADcDACAIQeACakEQakIANwMAIAhB4AJqQRhqQgA3AwAgCEHgAmpBIGpCADcDACAIQYgDakIANwMAIAhBkANqQgA3AwAgCCABNgKgAyAI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CyABQYCAgIB4ckGAgICAeEYNAkEEIQ0MAQsgACgChAQiAUGAgICAeHJBgICAgHhGDQELIAYgDWooAgAgAUEBEL4YCyADIARxIQEgACAbNwOIBCAAQYaAgIB4NgKABAsgAkGwBmokACABC8sUAgd/An4jAEHQA2siBiQAAkACQAJAAkACQAJAAkACQAJAAkAgAUUNAANAIAFBeGohByABQdwAaiEIIAEvAYoBIglBAnQhCkF/IQsCQAJAA0ACQCAKDQAgCSELDAILIAgoAgAhDCALQQFqIQsgB0EIaiEHIApBfGohCiAIQQRqIQggDEH3AXEiDEHCAEkgDEHCAEtrQf8BcSIMQQFGDQALIAxFDQELIAJFDQIgAkF/aiECIAEgC0ECdGooAowBIQEMAQsLIAdBBGooAgAiCCAHKAIAIgtJDQIgCCAESw0DIAZB4ABqQShqQgA3AwAgBkHgAGpBMGpCADcDACAGQeAAakE4akEANgIAIAZCADcDgAEgBkIANwNgELEaQSBBCBD7FyIKRQ0EIApBCDoAACAGQaABakEIakIANwMAIAZBoAFqQRBqQgA3AwAgBkGgAWpBGGpCADcDACAGQaABakEgakIANwMAIAZBoAFqQShqQgA3AwAgBkGgAWpBMGpCADcDACAGQQE2AuQBIAYgCjYC4AEgBkIANwOgASAGQQE6AOgBIAZCwICAgBA3A9gBIAZB8AFqQShqQgA3AwAgBkHwAWpBMGpCADcDACAGQfABakE4akEANgIAIAZCADcDkAIgBkIANwPwASAGQYADaiAGQeAAaiADIAtqIgogCCALayIIELMEIAYtAIQDIQsCQAJAAkACQCAGKAKAAw0AA0AgC0H/AXFBA0YNAgJAIAYoAowBIAYoApwCa0HAAEkNACAKIAggBkGgAWogBkHwAWogBkHgAGoQ9AMCQCAGKALAAUUNAAJAIAYoAsgBIgxFDQAgBiAGKALgASAGKALMASIHQQV0aiILQQAgByAGKALkASIBSRs2ArACIAcgAU8NDSALQeCOwgAQjAhFDQ0gDK0hDQJAIAstAABBBkcNACALKAIEIgdBgICAgHhGDQAgB0UNACALKAIIIAdBARC+GAsgCyANNwMIIAtBAjoAACAGQQA2AsgBCyAGQaABahDjCyAGQaABakEIakIANwMAIAZCADcDoAEgBkIA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QQJ0IhNByMTBAGooAgAhESATQbjEwQBqKAIAIRMLIANByAFqIA4gESATEJkXIAMoAswBIREgAygCyAFBAXENBiAMQZjMwABBBhCTByAREL8YIAMoAtwBIQ4CQAJAAkACQAJAIAgvATBBAkcNACADQbgBaiAOQcSIwQBBBRCZFyADKAK8ASERIAMoArgBIQ4MAQsgA0EANgKUAiADQoCAgIAQNwKMAiADQZjowAA2AuwBIANCoICAgA43AvABIAMgA0GMAmo2AugBIAhBKGogA0HoAWoQ6RANASADKAKMAiETIANBwAFqIA4gAygCkAIiFCADKAKUAhCZFyADKALEASERIAMoAsABIQ4gE0UNACAUIBNBARC+GAsgDkEBcQ0JIAxBnszAAEEDEJMHIBEQvxgCQAJAIAgoAgANACADQagBaiADQdwBakGhzMAAQQMgCBCbCiADKAKsASERIAMoAqgBIQ4MAQsgA0GwAWogA0HcAWpBpMzAAEEGIAgQmwogAygCtAEhESADKAKwASEOCyAOQQFxDQkgDQ0BDAILQcDowABBNyADQZ8CakGw6MAAQfjowAAQ+BAACyAMQa7MwABBBhCTB0GCCBC/GAsCQCAPQf8BcSIOQQdGDQAgAygC3AEhEQJAAkACQAJAAkACQAJAAkAgDg4HAAECAwQFBgALIANB8ABqIBFBoIfBAEEIQQBBmMvAAEEHEJgXIAMoAnQhESADKAJwIQ4MBgsgA0H4AGogEUGgh8EAQQhBAUGfy8AAQQkQmBcgAygCfCERIAMoAnghDgwFCyADQYABaiARQaCHwQBBCEECQajLwABBBRCYFyADKAKEASERIAMoAoABIQ4MBAsgA0GIAWogEUGgh8EAQQhBA0Gty8AAQQQQmBcgAygCjAEhESADKAKIASEODAMLIANBkAFqIBFBoIfBAEEIQQRBscvAAEEDEJgXIAMoApQBIREgAygCkAEhDgwCCyADQZgBaiARQaCHwQBBCEEFQbTLwABBBxCYFyADKAKcASERIAMoApgBIQ4MAQsgA0GgAWogEUGgh8EAQQhBBkG7y8AAQQkQmBcgAygCpAEhESADKAKgASEOCyAOQQFxDQcgDEG0zMAAQQgQkwcgERC/GAsCQAJAAkACQAJAIBBBfmoOBAACAQMECyADQcgAaiADKALcASACKQMAEOsPIAMoAkwhESADKAJIQQFxDQogDEG8zMAAQQUQkwcgERC/GAwDCwJAAkACQAJAIAItAAAiAkFpakEAIAJBHnFBGEYbDgMAAQIACyAIQckAaiEODAILIAgoAlAhAiAIKAJMIQ4MAQsgCCgCTEEIaiEOIAgoAlAhAgsgA0HoAGogAygC3AEgDiACEJkXIAMoAmwhESADKAJoQQFxDQkgDEHBzMAAQQQQkwcgERC/GCADQeAAaiADQdwBaiAIQeAAahDABSADKAJgQQFxDQggCEH4AGohAgwBCwJAIBJBH0YNACADQdgAaiADQdwBaiACEMAFIAMoAlhBAXFFDQIgAygCXCERDAkLIANB0ABqIAMoAtwBIAgpA1AQ6w8gAygCVCERIAMoAlBBAXENCCAMQbzMwABBBRCTByAREL8YDAELIAItAAAhAiAMQcXMwABBBhCTB0GCCEGDCCACGxC/GAsgCCgChAEhAiADQegBaiADKALcAUEBIAgoAogBIhAQ2BYgAygC7AEhESADKALoASIURQ0GAkAgEEUNACADKALwASEOIBBBBXQhDQNAIANBADYClAIgA0KAgICAEDcCjAIgA0GY6MAANgLsASADQqCAgIAONwLwASADIANBjAJqNgLoASACIANB6AFqEOkQDQYgAygCjAIhECADQcAAaiAUIAMoApACIhIgAygClAIQmRcgAygCRCEPIAMoAkAhEwJAIBBFDQAgEiAQQQEQvhgLIBNBAXENBCACQSBqIQIgESAOIA8QphcgDkEBaiEOIA1BYGoiDQ0ACwsgDEGqzMAAQQQQkwcgERC/GCAGIAsgAygC4AEQphcgC0EBaiELIAhBkAFqIgggCkcNAAsLIANB2AFqIg5BsMrAAEEDEJMHIAYQvxggA0HoAWogAUHIAGoQgREgA0E4aiAHIAMoAuwBIhAgAygC8AEQmRcgAygCPCEGIAMoAjghAgJAIAMoAugBIhFFDQAgECARQQEQvhgLIAJBAXENBiAOQbPKwABBBRCTByAGEL8YAkAgBEUNACADKALUASECIANBgAJqIAFB9QBqKQAANwMAIANB+AFqIAFB7QBqKQAANwMAIANB8AFqIAFB5QBqKQAANwMAIAMgASkAXTcD6AEgA0GE58AANgKYAiADIANBiAJqNgKUAiADQYCAxAA2AowCIAMgA0HoAWo2ApACIANB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IQEgBy0AkAEhCSAHKQKUASEQIAcoArgBIgNBgYCAgHhGDQAgACAHKQMgNwIMIAAgBykDCDcCLCAAQSRqIAIoAgA2AgAgAEEcaiANKQMANwIAIABBFGogDCkDADcCACAAQTRqIAgpAwA3AgAgAEE8aiAKKAIANgIAIABBA2ogAUEQdjoAACAAIAE7AAEgACADNgIoDAELIABBA2ogAUEQdjoAACAAIAE7AAEgAEGBgICAeDYCKAsgACAQNwIEIAAgCToAAAsgB0GwAmokAAvbFAIJfwR+IwBBkAJrIgUkACAFQagBaiABIAIQugECQAJAIAUoAqgBIgJBK0YNACAFQfAAaiIBIAVBqAFqQSRqKAIANgIAIAVB0ABqQRhqIgYgBUGoAWpBHGopAgA3AwAgBUHQAGpBEGoiByAFQagBakEUaikCADcDACAFQdAAakEIaiIIIAVBtAFqKQIANwMAIAVBKGpBCGoiCSAFQdkBaikAADcDACAFQShqQRBqIgogBUGoAWpBOWopAAA3AwAgBUEoakEYaiILIAVBqAFqQcEAaikAADcDACAFQccAaiIMIAVB8AFqKQAANwAAIAUgBSkCrAE3A1AgBSAFKQDRATcDKCAFLQDQASENIABBLGogASgCADYCACAAQSRqIAYpAwA3AgAgAEEcaiAHKQMANwIAIABBFGogCCkDADcCACAAIAUpA1A3AgwgACAFKQMoNwAxIABBOWogCSkDADcAACAAQcEAaiAKKQMANwAAIABByQBqIAspAwA3AAAgAEHQAGogDCkAADcAACAAIA06ADAgACACNgIIIABBADYCAAJAIARBhAhJDQAgBBCvEQsgA0GECEkNASADEK8RDAELIAVB7ABqIAVByAFqKQMAIg43AgAgBUHkAGogBUGoAWpBGGopAwAiDzcCACAFQdwAaiAFQagBakEQaikDACIQNwIAIAUgBSkDsAEiETcCVCAFQQhqQRhqIA43AwAgBUEIakEQaiAPNwMAIAVBEGogEDcDACAFIBE3AwggBSADNgJQIAVBKGogBUHQAGoQkhMCQAJAIAUoAigiAkGAgICAeEYNACAFKAIwIQggBSgCLCEHDAELIAVBqAFqIAVB0ABqEMUTQYCAgIB4QYGAgIB4IAUoAqgBGyECIAUrA7AB/AMhByAFKAJQIQMLAkAgA0GECEkNACAD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ADcDACACQegAakEgaiIPIAJByABqQQhqKQMANwMAIAJB6ABqQShqIg0gAkHIAGpBEGopAwA3AwAgAkHoAGpBMGoiDiACQcgAakEYaikDADcDACAAIAAoAgggA0EBcWs2AgggBCAJQXhqIApxakEIaiAGOgAAIAIgAikCNDcDaCAAIAAoAgxBAWo2AgwgBEEAIAlrQThsakFIaiIDIAIpA2g3AwAgA0EIaiAIKQMANwMAIANBEGogBykDADcDACADQRhqIAUpAwA3AwAgA0EgaiAPKQMANwMAIANBKGogDSkDADcDACADQTBqIA4pAwA3AwALIAJBKGogAUEkaikAADcDACACQSBqIAFBHGopAAA3AwAgAkEQakEIaiABQRRqKQAANwMAIAIgASkADDcDECABQQxqIQMCQCAAKAIsRQ0AIAApAzAgACkDOCADEMwIIRIgACgCJCIFIBKncSEEIBJCGYhC/wCDQoGChIiQoMCAAX4hESAAKAIgIgZBYGohB0EAIQgCQANAAkAgBiAEaikAACITIBGFIhJCf4UgEkL//fv379+//358g0KAgYKEiJCgwIB/gyISUA0AA0AgAkEQaiAHIBJ6p0EDdiAEaiAFcUEFdGtBIBCEE0UNAyASQn98IBKDIhJQRQ0ACwsgEyATQgGGg0KAgYKEiJCgwIB/g1BFDQIgBCAIQQhqIghqIAVxIQQMAAsLQcS+wgBBMkH4vsIAEM4TAAsgAEEgaiADEIYIAkAgACgCZCIDIAAoAlxHDQAgAEHcAGpBiL/CABCLDgsCQEGwAkUNACAAKAJgIANBsAJsaiABQbAC/AoAAAsgACADQQFqNgJkIAJBoAFqJAALvBMCEH8CfiMAQYACayIDJAAgAyABNgIEAkACQCABIAAoAjgiBEsNAAJAIAAoAihBgICAgHhGDQAgACgCGCIFRQ0AIANBADYC6AEgA0KAgICAgAE3AuABIAMgA0EEajYC7AEgACgCLCEGIAAoAjAhByAAKAIgIQggACgCJCEJIANB4AFqQeyBwgAQhA4gAygC5AEiAUIANwMQIAEgCCAJQQV0ajYCDCABIAg2AgggASAGIAdBOGxqNgIEIAEgBjYCACABQQA2AiggAUEYakIANwMAIAFBIGpBADYCACADQQE2AugBQQEhCAJAAkACQANAAkAgAygC5AEiCiAIQTBs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AygCQGs2AjggAygCNCADKAI4EMwLIAAgDSANQQFqIANBMGoQlAUMBAsgACAAKAI4IAFrNgI4IANBKGogACANEPsIIAMoAkQiBiAGKAIAIgZBf2o2AgACQCAGQQFHDQAgEhCgEwsgCyABayELCyALRQ0CCyAAKAIoIQEMAAsLAkACQAJAAkAgACgCKEGAgICAeEYNACAAKAIYDQELIAAoAjgNAhCxGkEUQQQQ+xciAUUNASABQQA2AhAgAUKAgICAEDcCCCABQoGAgIAQNwIAIANBMGpCADcDACADQThqQgA3AwAgA0HAAGpBADYCACADIAE2AkQgA0IANwMoIABBACAAKAIYIAAoAihBgICAgHhGGyADQShqEJ8ECyADQYACaiQADwtBBEEUENgZAAtBvP/BAEEfQdz/wQAQzhMACyADQQA2AuABQQAgA0HQAWogA0HYAWogA0HgAWpBlJHCABCoFAALQbCCwgAQ2hgAC0GE/8EAQShBrP/BABDOEwALQdD+wQBBI0H0/sEAEM4TAAsgA0EANgLgAUEAIANB0AFqIANB2AFqIANB4AFqQYSRwgAQkxQAC+wRARF/IwBBIGsiBCQAAkACQCABQQJJDQACQAJAIAMgAUEQakkNAEEBIQUgAUEBdiEGAkACQCABQQdNDQAgAEEgaiAAQSAQhBMhByAAQeAAQcAAIABB4ABqIABBwABqQSAQhBNBAEgiCBtqIQMgAEHAAEHgACAIG2ohCCAIIAAgB0F/c0EadkEgcWoiCSADIAMgACAHQRp2QSBxaiIHQSAQhBNBAEgiChsgCCAJQSAQhBNBAEgiCxsiDCAHIAMgCSALGyAKGyINQSAQhBMhBSACQRhqIAMgByAKGyIDQRhqKQAANwAAIAJBEGogA0EQaikAADcAACACQQhqIANBCGopAAA3AAAgAiADKQAANwAAIAIgDCANIAVBAEgiBxsiAykAADcAICACIA0gDCAHGyIHKQAANwBAIAJBKGogA0EIaikAADcAACACQTBqIANBEGopAAA3AAAgAkE4aiADQRhqKQAANwAAIAJByABqIAdBCGopAAA3AAAgAkHQAGogB0EQaikAADcAACACQdgAaiAHQRhqKQAANwAAIAJB+ABqIAkgCCALGyIDQRhqKQAANwAAIAJB8ABqIANBEGopAAA3AAAgAkHoAGogA0EIaikAADcAACACIAMpAAA3AGAgACAGQQV0Ig5qIgNBIGogA0EgEIQTIQogA0HgAEHAACADQeAAaiADQcAAakEgEIQTQQBIIgkbaiEIIANBwABB4AAgCRtqIQkgCSADIApBf3NBGnZBIHFqIgcgCCAIIAMgCkEadkEgcWoiCkEgEIQTQQBIIgsbIAkgB0EgEIQTQQBIIgwbIg0gCiAIIAcgDBsgCxsiBUEgEIQTIQ8gAiAOaiIDQRhqIAggCiALGyIIQRhqKQAANwAAIANBEGogCEEQaikAADcAACADQQhqIAhBCGopAAA3AAAgAyAIKQAANwAAIAMgDSAFIA9BAEgiChsiCCkAADcAICADIAUgDSAKGyIKKQAANwBAIANBKGogCEEIaikAADcAACADQTBqIAhBEGopAAA3AAAgA0E4aiAIQRhqKQAANwAAIANByABqIApBCGopAAA3AAAgA0HQAGogCkEQaikAADcAACADQdgAaiAKQRhqKQAANwAAIANB+ABqIAcgCSAMGyIIQRhqKQAANwAAIANB8ABqIAhBEGopAAA3AAAgA0HoAGogCEEIaikAADcAACADIAgpAAA3AGBBBCEFDAELIAIgACkAADcAACACQRhqIABBGGopAAA3AAAgAkEQaiAAQRBqKQAANwAAIAJBCGogAEEIaikAADcAACACIAZBBXQiCGoiAyAAIAhqIggpAAA3AAAgA0EIaiAIQQhqKQAANwAAIANBEGogCEEQaikAADcAACADQRhqIAhBGGopAAA3AAALIAVBAWohDiABIAZrIRAgBSAGTw0BIAVBBXQhCiAOIQMgBSEIA0AgAyEHIAIgCEEFdCIIaiIDIAAgCGoiCCkAADcAACADQRhqIAhBGGoiCSkAADcAACADQRBqIAhBEGoiCykAADcAACADQQhqIAhBCGoiDCkAADcAAAJAIAMgA0FgakEgEIQTQX9KDQAgBEEYaiINIAkpAAA3AwAgBEEQaiIPIAspAAA3AwAgBEEIaiILIAwpAAA3AwAgBCAIKQAANwMAIAohCAJAA0AgAiAIaiIDIANBYGoiCSkAADcAACADQRhqIAlBGGopAAA3AAAgA0EQaiAJQRBqKQAANwAAIANBCGogCUEIaikAADcAAAJAIAhBIEcNACACIQMMAgsgCEFgaiEIIAQgA0FAakEgEIQTQQBIDQALIAIgCGohAwsgAyAEKQMANwAAIANBGGogDSkDADcAACADQRBqIA8pAwA3AAAgA0EIaiALKQMANwAACyAKQSBqIQogByAHIAZJIglqIQMgByEIIAkNAAwCCwsACyAGQQV0IRECQCAFIBBPDQAgACARaiESIAVBBXQhCkEgIQwgAiARaiIPIQ0DQCAOIQsgDyAFQQV0IghqIgMgEiAIaiIIKQAANwAAIANBGGogCEEYaiIJKQAANwAAIANBEGogCEEQaiIHKQAANwAAIANBCGogCEEIaiIFKQAANwAAAkAgAyADQWBqQSAQhBNBf0oNACAEQRhqIg4gCSkAADcDACAEQRBqIhMgBykAADcDACAEQQhqIhQgBSkAADcDACAEIAgpAAA3AwAgDCEHIA0hCQJAA0AgCSAKaiIDIANBYGoiCCkAADcAACADQRhqIAhBGGopAAA3AAAgA0EQaiAIQRBqKQAANwAAIANBCGogCEEIaikAADcAAAJAIAogB0cNACAPIQMMAgsgB0EgaiEHIAlBYGohCSAEIANBQGpBIBCEE0EASA0ACyAJIApqIQMLIAMgBCkDADcAACADQRhqIA4pAwA3AAAgA0EQaiATKQMANwAAIANBCGogFCkDADcAAAsgDEFgaiEMIA1BIGohDSALIAsgEEkiA2ohDiALIQUgAw0ACwsgAiARaiIIQWBqIQkgAiABQQV0QWBqIgNqIQcgACADaiEDA0AgACACIAggCCACQSAQhBMiC0F/SiIMGyIKKQAANwAAIABBGGogCkEYaikAADcAACAAQRBqIApBEGopAAA3AAAgAEEIaiAKQQhqKQAANwAAIAMgByAJIAcgCUEgEIQTIg1Bf0obIgopAAA3AAAgA0EYaiAKQRhqKQAANwAAIANBEGogCkEQaikAADcAACADQQhqIApBCGopAAA3AAAgAiAMQQV0aiECIAggC0EadkEgcWohCCAJIA1BH3UiCkEFdGohCSAHIApBf3NBBXRqIQcgA0FgaiEDIABBIGohACAGQX9qIgYNAAsgCUEgaiEDAkAgAUEBcUUNACAAIAIgCCACIANJIgobIgkpAAA3AAAgAEEYaiAJQRhqKQAANwAAIABBEGogCUEQaikAADcAACAAQQhqIAlBCGopAAA3AAAgCCACIANPQQV0aiEIIAIgCkEFdGohAgsgAiADRw0B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GkYbIgMtAABBGUcNAiACQThqIAMQ/AsMAwsgAkE4akEQaiADQRBqKQIANwMAIAJBOGpBCGogA0EIaikCADcDACACIAMpAgA3AzgLIAJBCGogAkE4akEIaikDADcDACACIAIpAzg3AwAgAikCMCEMIAIoAiwhCyACKAJIIQMgAigCTCEKDAcLIAJBOGpBEGogA0EQaikCADcDACACQThqQQhqIANBCGopAgA3AwAgAiADKQIANwM4CyACQQhqIAJByABqKQMANwMAIAIgAikDQDcDACACKQM4IQxBhYCAgHghCyACLQAQIgpBHnFBGEcNA0ECIQMgCkFpakECSQ0DIAIoAhQiCiAKKAIAIgpBf2o2AgACQCAKQQFGDQAMBgsgAkEUahCeEwwFCyACIAU2AiQgAiAGNgIgIAIgBzYCHCACIAg2AhggAiAJNgIUIAIgCjYCEAJAAkACQAJAAkAgAkEQaiABKAIEIAEgAS0AAEEaRhsQ1AsNABCxGkEwQQQQ+xciA0UNBiADIAIpAhA3AgAgA0EQaiACQRBqQRBqKQIANwIAIANBCGogAkEQakEIaikCADcCACABKAIEIAEgAS0AAEEaRhsiCi0AAEEZRw0BIAJBOGogChD8CwwCCyABKAIEIAEgAS0AAEEaRhsiAy0AAEEZRw0CIAJBOGogAxD8CyACLQAQIQoMAwsgAkE4akEQaiAKQRBqKQIANwMAIAJBOGpBCGogCkEIaikCADcDACACIAopAgA3AzgLIAJBCGogAkE4akEIaikDADcDACACIAIpAzg3AwAgA61CgICAgBCEIQwgAigCSCEDIAIoAkwhCkECIQsMBgsgAkE4akEQaiADQRBqKQIANwMAIAJBOGpBCGogA0EIaikCADcDACACIAMpAgA3AzgLIAJBCGogAkHIAGopAwA3AwAgAiACKQNANwMAIAIpAzghDEGFgICAeCELIApBHnFBGEcNAkECIQMgCkFpakH/AXFBAkkNAiACKAIUIgogCigCACIKQX9qNgIAAkAgCkEBRg0ADAULIAJBEGpBBGoQnhMMBAsgAiAFNgIkIAIgBjYCICACIAc2AhwgAiAINgIYIAIgCTYCFCACIAo2AhACQCACQRBqIAEoAgQgASABLQAAQRpGGxDUCw0AIAJBEGpBBHIhBiAAKAIIIQMgBK0hDEEAIQsDQCAMp0H/AHEgDEI/ViIJQQd0ciEFAkACQCAAKAIAIANGDQAgAyEKDAELIAAgA0EBQQFBARCHDCAAKAIIIQoLIAxCB4ghDCAAIApBAWoiAzYCCCAAKAIEIApqIAU6AAAgC0EBaiELIAkNAAsgACAAKAIwIAtqNgIwIAAgAkEQaiAAENgLIAAoAjBqNgIwAkACQCABKAIEIAEgAS0AAEEaRhsiAy0AAEEZRw0AIAJBOGogAxD8CwwBCyACQThqQRBqIANBEGopAgA3AwAgAkE4akEIaiADQQhqKQIANwMAIAIgAykCADcDOAsgAkEIaiACQcgAaikDADcDACACIAIpA0A3AwAgAikDOCEMQYSAgIB4IQsCQCACLQAQIgNBHnFBGEYNAAwFCwJAIANBaWpBAk8NAAwFCyACKAIUIgMgAygCACIDQX9qNgIAAkAgA0EBRg0ADAULIAYQnhMMBAsgAkEIaiACQRBqQQhqIgNBCGopAgA3AwAgAiADKQIANwMAIARBAWohA0GFgICAeCELIAIpAxAhDAwDC0EEQTBBoLTCABDmFgALQQIhAwwBCyACKQM4IQxBhICAgHghCwsgAEEMahCSCiAAIAw3AhAgACALNgIMIAAgCjYCLCAAIAM2AiggAEEYaiIAIAIpAwA3AgAgAEEIaiACQQhqKQMANwIAAkAgAS0AACIAQRpGDQAgAEEecUEYRw0AIABBaWpBAkkNACABKAIEIgAgACgCACIAQX9qNgIAIABBAUcNACABQQRqEJ4TCyACQdAAaiQAC8UTAS9/IwBBIGsiBSQAAkACQAJAIAINAEEBIQZBACEHQQAhCEEBIQlBACEKQQEhC0EAIQxBASENQQAhDkEBIQ9BACECQQEhEEEAIRFBASESQQAhE0EBIRRBACEVQQEhFkEAIRdBASEYQQAhGUEBIRpBACEbQQEhHEEAIR1BASEeQQAhH0EBISBBACEhQQEhIkEAISNBASEkDAELIAEgAkEMbGohJUEAISNBASEkQQEhIkEAISFBASEgQQAhH0EBIR5BACEdQQEhHEEAIRtBASEaQQAhGUEBIRhBACEXQQEhFkEAIRVBASEUQQAhE0EBIRJBACERQQEhEEEAIQJBASEPQQAhDkEBIQ1BACEMQQEhC0EAIQpBASEJQQAhCEEBIQZBACEHA0AgAiEmIBAhJyARISggEiEpIBshKiAcISsgHyEsICAhLSAjIS4gJCEvAkACQAJAAkACQAJAAkAgAUEEaigCACICIAEoAgAiEEkNACACIARLDQEgAyAQaiEwIAIgEGshMSABQQhqKAIAIjJBB3EhMwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgMkEEdg4LAAECAwQFCQYJBwgJCyAmIQIgJyEQICghESApIRIgKiEbICshHCAsIR8gLSEgIDEhIyAwISQgM0F/ag4DFggJCAsgJiECICchECAoIREgKSESICohGyArIRwgMSEfIDAhICAuISMgLyEkIDNBf2oOBRUHCQcKBwsgJiECICchECAoIREgKSESIDEhGyAwIRwgLCEfIC0hICAuISMgLyEkIDNBf2oOAxQGCgYLICYhAiAnIRAgKCERICkhEiAxIRcgMCEYICohGyArIRwgLCEfIC0hICAuISMgLyEkIDNBBEcNBQwTCyAmIQIgJyEQICghESApIRIgMSEVIDAhFiAqIRsgKyEcICwhHyAtISAgLiEjIC8hJCAzQQJHDQQMEgsgJiECICchECAxIREgMCESICohGyArIRwgLCEfIC0hICAuISMgLyEkIDNBemoOAggRAwsgMSECIDAhECAoIREgKSESICohGyArIRwgLCEfIC0hICAuISMgLyEkIDMOBBAIAgkCCyAxIQogMCELICYhAiAnIRAgKCERICkhEiAqIRsgKyEcICwhHyAtISAgLiEjIC8hJCAzQQRHDQEMDwsgMSEHIDAhBiAmIQIgJyEQICghESApIRIgKiEbICshHCAsIR8gLSEgIC4hIyAvISQgM0EFRg0OCyAAIDI2AgwgAEEGOgAIIABCAjcDAAwQCyAmIQIgJyEQICghESApIRIgKiEbICshHCAsIR8gLSEgIDEhISAwISIMCwsgJiECICchECAoIREgKSESICohGyArIRwgMSEdIDAhHgwJCyAxIQggMCEJDAYLICYhAiAnIRAgKCERICkhEiAxIRkgMCEaDAYLICYhAiAnIRAgKCERICkhEiAxIRMgMCEUDAULIDEhDiAwIQ8MAwsgMSEMIDAhDQwCCyAQIAJBhOjCABDZGAALIAIgBEGE6MIAENgYAAsgJiECICchECAoIREgKSESCyAqIRsgKyEcCyAsIR8gLSEgCyAuISMgLyEkCyABQQxqIgEgJUcNAAsLIABCADcDICAAQgA3AwAgAEEoakIANwMAIABBMGpCADcDACAAQThqQQA2AgAgAEIANwN4IABCADcDWCAAQQM2AkggACAjNgJEIAAgJDYCQCAAQYABakIANwMAIABBiAFqQgA3AwAgAEGQAWpBADYCACAAQgA3A5gBIABBoAFqQgA3AwAgAEIANwPIASAAICE2AsQBIAAgIjYCwAEgAEEDNgKoASAAQYACakEANgIAIABB+AFqQgA3AwAgAEHwAWpCADcDACAAQgA3A+gBIAAgIDYCiAIgACAfNgKMAiAAQQM2ApACIABCADcDoAIgAEIANwPAAiAAQcgCakIANwMAIABB0AJqQgA3AwAgAEHYAmpBADYCACAAQgA3A+ACIABB6AJqQgA3AwAgAEEDNgLwAiAAIB42AogDIAAgHTYCjAMgAEIANwOQAyAAQcgDakEANgIAIABBwANqQgA3AwAgAEG4A2pCADcDACAAQgA3A7ADIABCADcD6AMgACAINgLkAyAAIAk2AuADIABBgoCAgHg2AtADIABCADcDiAQgAEGQBGpCADcDACAAQZgEakIANwMAIABBoARqQQA2AgAgAEIANwPABCAAQQM2ArAEIAAgGzYCrAQgACAcNgKoBCAAQgA3A+AEIABB6ARqQgA3AwAgAEHwBGpCADcDACAAQfgEakEANgIAIABBiAVqQgA3AwAgAEIANwOABSAAQgA3A7AFIAAgGTYCrAUgACAaNgKoBSAAQQM2ApAFIABB6AVqQQA2AgAgAEHgBWpCADcDACAAQdgFakIANwMAIABCADcD0AUgAEIANwOIBiAAQQM6APgFIAAgFTYC9AUgACAWNgLwBSAAQcAGakEANgIAIABBuAZqQgA3AwAgAEGwBmpCADcDACAAQgA3A6gGIABCADcD6AYgACATNgLkBiAAIBQ2AuAGIABBAzYCyAYgAEGgB2pBADYCACAAQZgHakIANwMAIABBkAdqQgA3AwAgAEIANwOIByAAQgA3A8gHIAAgAjYCxAcgACAQNgLAByAAQQM2AqgHIABBgAhqQQA2AgAgAEH4B2pCADcDACAAQfAHakIANwMAIABCADcD6AcgAEIANwOgCCAAQQM2ApAIIAAgDjYCjAggACAPNgKICCAAQdgIakEANgIAIABB0AhqQgA3AwAgAEHI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ACACNgIIIABCADcDAAwBCyAEQcwDaiAEQYgCakEQaikDACINNwIAIARB1ANqIARBiAJqQRhqKQMAIg43AgAgBEHcA2ogBEGoAmopAwAiDzcCACAEIAQpA5ACIhA3AsQDIAQtALACIQIgBEEIakEYaiAPNwMAIARBCGpBEGogDjcDACAEQRBqIA03AwAgBCAQNwMIAkACQAJAAkACQAJAIAJBA0cNACAEQSxqIARBBGoQkhMgBCgCLCICQYCAgIB4Rw0BIABCBDcDACAELwEQDgMDAgMCCyAAQgI3AwAgBC8BECIAQQJGDQUgAEUNBSAEKAIUIgBFDQUgBCgCGCAAQQEQvhgMBQsgBCgCNCEFIAQoAjAhCSABQSBqIgoQiAgCQCABKAJoQYCAgIB4Rg0AAkACQCABKALgDEGAgICAeEYNACABKALoDCIGQQJ0IQNBACELIAZB/////wNLDQUgA0H8////B0sNBSABKALkDCEMAkACQCADDQBBBCEHQQAhCAwBCxCxGkEEIQsgBiEIIANBBBD7FyIHRQ0GCwJAIANFDQAgByAMIAP8CgAACyAEIAY2AoADIAQgBzYC/AIgBCAINgL4AgwBCyAEQYCAgIB4NgL4AgsgBEHAA2ogAUGwDWoiCyAEQQhqIARB+AJqELoJIAQoAswDIQMgBCgCyAMhCCAEKALEAyEHAkAgBCgCwAMiBkEnRg0AIARBOGpBOGogBEGIBGopAwA3AwAgBEE4akEwaiAEQYAEaikDADcDACAEQThqQShqIARBwANqQThqKQMANwMAIARBOGpBIGogBEHAA2pBMGopAwA3AwAgBEE4akEYaiAEQcADakEoaikDADcDACAEQcgAaiAEQcADakEgaikDADcDACAEQcAAaiAEQcADakEYaikDADcDACAEIAQpA9ADNwM4AkAgAkUNACAJIAJBARC+GAsgCCEBIAchBQwFCyAEIAM2AvQBIAQgCDYC8AEgBEEQOgDsASAEQYGAiIABNgLoASAEIAM2AuQBIAQgAzYC4AEgBEECOgDcASAEQgA3AtQBIARBADYCzAEgBEEANgLEASAEQQA2ArwBIARBEDoAuAEgBEGBgIiAATYCtAEgBCADNgKwASAEQQA2AqwBIARBAjoAqAEgBEIANwKgASAEQQA2ApgBIARBADYCkAEgBEEANgKIASAEQfwA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ACACNgIIIABBADYCAAwBCyAEQeQAaiAEQcgBakEgaiIHKQMAIg03AgAgBEHcAGogBEHIAWpBGGoiCCkDACIONwIAIARB1ABqIARByAFqQRBqKQMAIg83AgAgBCAEKQPQASIQNwJMIARBGGogDTcDACAEQRBqIA43AwAgBEEIaiAPNwMAIAQgEDcDACAEQcgBaiABQbANaiIJIAQQ7AcgBCgC0AEhBSAEKALMASECAkACQAJAAkACQAJAAkACQCAEKALIASIGQSdGDQAgBEHwAGpBCGogCCkDADcDACAEQfAAakEQaiAHKQMANwMAIARB8ABqQRhqIARByAFqQShqKQMANwMAIARB8ABqQSBqIARByAFqQTBqKQMANwMAIARB8ABqQShqIARByAFqQThqKQMANwMAIARB8ABqQTBqIARBiAJqKQMANwMAIARB8ABqQThqIARBkAJqKQMANwMAIAQgBCkD2AE3A3AgBCgC1AEhAQwBCyAEIAU2AswBIAQgAjYCyAEgAUGQEWogBEHIAWoQ+AtB/wFxIgJBBEcNASAEQQA2AiggBEKAgICAEDcCICAEQZjowAA2AswBIARCoICAgA43AtABIAQgBEEgajYCyAEgBCAEQcgBahDQDw0CIAQoAighASAEKAIkIQUgBCgCICECQRQhBgsgACABNgIUIAAgBTYCECAAIAI6AAwgACAGNgIIIABBAjYCACAAIAQpA3A3AhggAEEPaiACQRh2OgAAIAAgAkEIdjsADSAAQSBqIARB8ABqQQhqKQMANwIAIABBKGogBEGAAWopAwA3AgAgAEEwaiAEQfAAakEYaikDADcCACAAQThqIARB8ABqQSBqKQMANwIAIABBwABqIARB8ABqQShqKQMANwIAIABByABqIARB8ABqQTBqKQMANwIAIABB0ABqIARB8ABqQThqKQMANwIAIAQvAQgiAEECRg0GIABFDQYgBCgCDCIARQ0GIAQoAhAgAEEBEL4YDAYLIAQgAjoAbyAEELkaNgK0ASAEQSBqIAMQ/QQgBCgCLCEFIAQoAighAiAEKAIkIQMCQCAEKAIgQQFHDQAgACAFNgIMIAAgAjYCCCAAIAM2AgQgAEEDNgIADAULIAFBIGohAQJAAkAgA0GAgICAeEYNACAEQSBqIAEgAiAFEKUNIARByAFqIAkgBCAEQSBqEM4L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BxsgByAIGzYCDCABKAIkIgdBf2oiCCANIAggDUkbIgggB0kNAyAIIAdBxIzCABDjEQALIAEgASgCCCADKAIQajYCCCABIAEpAwAgAykDAHw3AwAgASADKAIYIgggASgCECILIAggC0sbIAggCxs2AhAgASADKAIUIgggASgCDCILIAggC0kbIAsgCBsgCCALGzYCDCANIAZJDQEgDSAGQdSMwgAQ4xEACyACIAdBpIzCABDjEQALIARBMGogByACIAxrIAMQkQIgBCAEKAJANgIYIAQgBCkCRDcCHCAEIAQpAzA3AxACQCABIARBEGoQ6A4NAAJAAkAgASgCJCILDQBCACEQQQAhCEEAIQdBACEMDAELIAEoAiAhAkEAIQxCACEQQQAhB0EAIQgDQCACQRhqKAIAIg0gCCANIAhLGyANIAgbIQggAkEUaigCACINIAcgDSAHSRsgByANGyANIAcbIQcgAikDACAQfCEQIAJBEGooAgAgDGohDCACQSBqIQIgC0F/aiILDQALCwJAIAEoAjAiC0UNACABKAIsIQIDQCACQRBqKAIAIg0gCCANIAhLGyANIAgbIQggAkEMaigCACINIAcgDSAHSRsgByANGyANIAcbIQcgAikDACAQfCEQIAJBCGooAgAgDGohDCACQThqIQIgC0F/aiILDQALCyABIAg2AhAgASAHNgIMIAEgDDYCCCABIBA3AwALIAQgASgCGCIHNgIMAkAgBSAHRg0AIARBADYCEEEAIARBBGogBEEMaiAEQRBqQeSMwgAQqBQACyAAIAQpAzA3AwAgAEEYaiAEQTBqQRhqKQMANwMAIABBEGogBEEwakEQaikDADcDACAAQQhqIARBMGpBCGopAwA3AwAMAQsgASgCICAIQQV0aiIHKQMAIQ4gByADKQMANwMAIAdBCGoiCCkDACEPIAggA0EIaikDADcDACAHQRBqIggoAgAhCSAHKAIUIQYgCCADQRBqKQMANwMAIAcoAhwhCiAHQRhqIgcoAgAhBSAHIANBGGopAwA3AwAgBCAFNgJAIAQgBjYCPCAEIA43AzAgBCAJNgI4AkAgASAEQTBqEOgODQACQAJAIAEoAiQiCw0AQgAhEEEAIQhBACEHQQAhDAwBCyABKAIgIQJBACEMQgAhEEEAIQdBACEIA0AgAkEYaigCACINIAggDSAI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AyAKIAlBARC+GAwDC0EEQRQQ2BkAC0GshMEAENoYAAsgBkGAgICAeHJBgICAgHhGDQAgByAGQQV0QQEQvhhBASEBDAELQQEhAQsgACACNgIEIAAgATYCACAFQcA4aiQAC9QSAht/AX4jAEGQBGsiAiQAAkACQAJAAkACQAJAIAEtAKggDgMAAQIACyACQaACaiABQcACahChAiACKALEAkGBgICAeEYNAyACQeACakEwaiACQaACakEwaikDADcDACACQeACakEoaiACQaACakEoaikDADcDACACQeACakEgaiACQaACakEgaikDADcDACACQeACakEYaiACQaACakEYaikDADcDACACQeACakEQaiACQaACakEQaikDADcDACACQeACakEIaiIDIAJBoAJqQQhqKQMANwMAIAIgAikDoAI3A+ACAkAgASgC8AsiBA0AIAJB4AJqEIIQDAQLIAJBgARqQQhqIAMpAwA3AwAgAiACKQPgAjcDgAQgAigChAMiA0GBgICAeEYNAyACKQOIAyEdIAIoAvwCIQUgAigC+AIhBiACLQCRAyEHIAIoAoADIQggAkHYAWogAkGIBGopAwA3AwAgAiACKQOABDcD0AEgAiAHOgCYAiACIB03A5ACIAIgAzYCjAIgAiAINgKIAiACIAU2AoQCIAIgBjYCgAIgAkEDOwHoASACIAQ2AuABIAJBADYCyAEgAkHIAWohAwwCCyACQaACaiABQfgLahCpCSACKAKgAkGMgICAeEYNAiACQegDaiACQaACakE4aikDADcDACACQagDakE4aiACQaACakEwaikDADcDACACQagDakEwaiACQaACakEoaikDADcDACACQagDakEoaiACQaACakEgaikDADcDACACQagDakEgaiACQaACakEYaikDADcDACACQagDakEYaiACQaACakEQaikDADcDACACQagDakEQaiACQagCaikDADcDACACIAIpA6ACNwOwAyACQQE2AqgDIAJBqANqIQMMAQsgAkGgAmogAUGAFWoQ4QEgAigCoAIiA0EFRg0BIAJBIGogAkG0AmopAgA3AwAgAkEYaiACQawCaikCADcDACACIAIpAqQCNwMQIAIgAzYCDCACQQI2AgggAkEIaiEDCyACQegAaiABIAMQywkgAigCaEEDRg0AQeAARQ0BIAAgAkHoAGpB4AD8CgAADAELIAJByAFqIAFBkCBqIgkQwgoCQCACLQDQASIDQQNGDQAgAUGoC2ohCiABQaALaiEGIAFBwAJqIQsgAUGoFGohDCABQbAUaiENIAFB+AtqIQ4gAUGAFWohDyACQegAakEEciEQIAJBygNqIREgAkGoA2pBCGohEiACQeIBaiETIAJByAFqQQRqIRQDQCACIAEgAigCyAEiByACKALMASIIENoNAkACQAJAAkAgAigCACIEIAIoAgQiBU8NAAJAAkACQAJAIANB/wFxDgMAAQMACyACQcgBaiALIAQgBRDjBwJAIAEoAsQLQYGAgIB4Rg0AIAoQqRALIAYgAikDyAE3AwAgBkEwaiACQcgBakEwaiIEKQMANwMAIAZBKGogAkHIAWpBKGoiBSkDADcDACAGQSBqIAJByAFqQSBqIhUpAwA3AwAgBkEYaiACQcgBakEYaiIWKQMANwMAIAZBEGogAkHIAWpBEGoiFykDADcDACAGQQhqIAJByAFqQQhqIhgpAwA3AwAgAkHIAWogCxChAiACKALsAUGBgICAeEYNAyACQaACakEwaiAEKQMANwMAIAJBoAJqQShqIAUpAwA3AwAgAkGgAmpBIGogFSkDADcDACACQaACakEYaiAWKQMANwMAIAJBoAJqQRBqIBcpAwA3AwAgAkGgAmpBCGoiBCAYKQMANwMAIAIgAikDyAE3A6ACIAEoAvALIgUNASACQaACahCCEAwDCyACQaACaiAOIAQgBRC7CAJAIA0oAgAiBEGLgICAeEYNAAJAAkACQAJAAkAgBEH/////B2oiBUEIIAVBCkkbDgkAAQUFBQUFBQMFCyABKAK0FCIEQYCAgIB4ckGAgICAeEYNBAwBCyABKAK0FCIEQYCAgIB4ckGAgICAeEYNAwtBCCEFDAELIARBgICAgHhyQYCAgIB4Rg0BQQQhBQsgDSAFaigCACAEQQEQvhgLIAwgAikDoAI3AwAgDEEoaiACQaACakEoaikDADcDACAMQSBqIAJBoAJqQSBqKQMANwMAIAxBGGogAkGgAmpBGGopAwA3AwAgDEEQaiACQaACakEQaikDADcDACAMQQhqIAJBoAJqQQhqKQMANwMAIAFBADYC9BQgAkHIAWogDhCpCSACKALIAUGMgICAeEYNAiACQZgDakEIaiACQcgBakEIaikDADcDACACQeACakEIaiATQQhqKQEANwMAIAJB4AJqQQ5qIBNBDmopAQA3AQAgAiACKQPIATcDmAMgAiATKQEANwPgAiACKALYASEFIAIoAtwBIRYgAi8B4AEhFyACKAL4ASEYIAIoAvwBIRkgAigCgAIhGiACKAKEAiEVQQEhGwwECyACQYAEakEIaiIWIAQpAwA3AwAgAiACKQOgAjcDgAQgAigCxAIiFUGBgICAeEYNASACKQPIAiEdIAIoArwCIRkgAigCuAIhGCACLQDRAiEcIAIoAsACIRogAkGYA2pBCGogFikDADcDACACIAIpA4AENwOYA0EAIRtBAyEXDAMLIAJByAFqIA8gBCAFEK4GIAIoAsgBIgRBBUcNAQtBAyEDDAILIAJBmANqQQhqIBRBCGopAgA3AwAgAiAUKQIANwOYAyACKALcASEFIAIoAuABIRZBAiEbCyASIAIpA5gDNwMAIBEgAikD4AI3AQAgEkEIaiACQZgDakEIaikDADcDACARQQhqIAJB4AJqQQhqKQMANwEAIBFBDmogAkHgAmpBDmopAQA3AQAgAiAENgKsAyACIBs2AqgDIAIgFzsByAMgAiAWNgLEAyACIAU2AsADIAIgHDoA+AMgAiAdNwPwAyACIBU2AuwDIAIgGjYC6AMgAiAZNgLkAyACIBg2AuADIAEgAzoAqCAgASAINgKMICABIAc2AoggIAJB6ABqIAEgAkGoA2oQywkgAigCaCIDQQRGDQILAkBB3ABFDQAgAkEIaiAQQdwA/AoAAAsCQCADQQNGDQACQEHcAEUNACAAQQRqIAJBCGpB3AD8CgAACyAAIAM2AgAMAwsgAkHIAWogCRDCCiACLQDQASIDQQNHDQALCyAAQQM2AgALIAJBkARqJAAL5RACB38JfiMAQfABayICJAAgAUEtOgAAIAC9IglC/////////weDIQogASAJQj+Ip2ohAwJAAkACQAJAAkAgCUI0iEL/D4MiC0IAUg0AIApQRQ0BIANBMDoAAiADQbDcADsAACADQQNqIQEMBAsgCkKAgICAgICACIQhDCALpyIEQc13aiIBQYWiE2whBQJAIApCAFINAEGAgHghBkJ/IQsMAgsgAkHgAWogDCABQfPSxgBqLQAAIgdBP3GthiIKQgBByAQgBUEUdSIBQQF0IgZrQQN0QYD9xQBqKQMAIg1CABD0ECACQdABaiAKQgBByQQgBmtBA3RBgP3FAGopAwBCABD0EEEAIQZCfiELIAIpA9gBIg4gAikD4AF8IgpCgICAgICAgICAf1ENASACQcABaiAKIA5UrSACKQPoAXwiDkIAQpqz5syZs+bMGUIAEPQQIAIpA8gBQnZ+Ig8gDnxCPIYgCkIEiIQiECANQQUgB2tBP3GtiCINUQ0BIBAgDXwiEUKBgICAgICAgOAAfEICVA0BQgogD31CACAPfSAOIApCP4h8IBAgDVQbIBFCgICAgICAgICgf1YbIQkMAgsgAkHQAGogCkIFhiIKQnB8IgtCAEKpt4ynq/L2jJ5/QgAQ9BAgAkHAAGogC0IAQtKNjdSm2OiD7ABCABD0ECACQTBqIApCEIQiC0IAQqm3jKer8vaMnn9CABD0ECACQSBqIAtCAELSjY3Uptjog+wAQgAQ9BACQAJAAkACQCACKQMoIgsgAikDMHwiDCALVK0gAikDOHwgDEIBVq2EIAlCAYMiCX1CKIAiDUIofiACKQNIIgsgAikDUHwiDCALVK0gAikDWHwgDEIBVq2EIAl8IgtaDQAgAkEQaiAKQgBCqbeMp6vy9oyef0IAEPQQIAIgCkIAQtKNjdSm2OiD7ABCABD0ECACKQMIIgkgAikDEHwiDSAJVK0gAikDGHwiCSAJQgKIIgpCAXwiDCAKfEIBhiIOWg0BQQEhAQwCCyANQgp+IQkMAgsCQCAJIA1CAVathCAOUQ0AQQAhAQwBCyAJQgSDUCEBCyAKIAwgARsgDCAJQvz//////////wCDIAtaGyEJC0G8fSEBIAlC//+D/qbe4RFWDQFBvH0hAQNAIAFBf2ohASAJQgp+IglCgICE/qbe4RFTDQAMAgsLQQEhByACQbABaiALIAxCAoYiCnwgBCAGIAVqQRR1IgFBldvyAWxBEHZqQQ5qQT9xrSILhiIOQgBByAQgAUEBdCIFa0EDdEGA/cUAaikDACIMQgAQ9BAgAkGgAWogDkIAQckEIAVrQQN0QYD9xQBqKQMAQgF8Ig1CABD0ECACQZABaiAKQgKEIAuGIg5CACAMQgAQ9BAgAkGAAWogDkIAIA1CABD0EAJAIAIpA4gBIg4gAikDkAF8IhAgDlStIAIpA5gBfCAQQgFWrYQgCUIBgyIJfUIogCIPQih+IAIpA6gBIg4gAikDsAF8IhAgDlStIAIpA7gBfCAQQgFWrYQgCXwiDloNACACQfAAaiAKIAuGIglCACAMQgAQ9BAgAkHgAGogCUIAIA1CABD0EAJAIAIpA2giCSACKQNwfCIMIAlUrSACKQN4fCIJIAlCAogiCkIBfCILIAp8QgGGIg19QgBTDQBBACEHIAkgDEIBVq2EIA1SDQAgCUIEg1AhBwsgCiALIAcbIAsgCUJ8gyAOWhshCQwBCyAPQgp+IQkLIAMgCUKAwtcvgCILpyIGQYDC1y9uIgdBMGo6AAEgA0EBaiIEIAlC//+D/qbe4RFVIghqIgUgBiAHQYDC1y9sa60iCkK78bY0fkIoiELwsf//D34gCnwiCkL7KH5CE4hC/4CAgPAPg0Kc/wN+IAp8IgpC5wB+QgqIQo+AvIDwgcAHg0L2AX4gCnwiCkI4hiAKQoD+A4NCKIaEIApCgID8B4NCGIYgCkKAgID4D4NCCIaEhCAKQgiIQoCAgPgPgyAKQhiIQoCA/AeDhCAKQiiIQoD+A4MgCkI4iISEhCIKQrDgwIGDhoyYMHw3AABBEEEPIAgbIAFqIQECQCAJIAtCgMLXL359IglQDQAgBSAJQrvxtjR+QiiIQvCx//8PfiAJfCIJQvsofkITiEL/gICA8A+DQpz/A34gCXwiCULnAH5CCohCj4C8gPCBwAeDQvYBfiAJfCIJQjiGIAlCgP4Dg0IohoQgCUKAgPwHg0IYhiAJQoCAgPgPg0IIhoSEIAlCCIhCgICA+A+DIAlCGIhCgID8B4OEIAlCKIhCgP4DgyAJQjiIhISEIgpCsODAgYOGjJgwfDcACCAFQQhqIQULIAVBxgAgCkIBhkIBhHmna0EDdmogBGshBQJAIAFBBWpBFEsNAAJAAkAgBUF/aiABTA0AIAFBf0oNAUEBIAFrIQYCQCAFRQ0AIAMgBmogBCAF/AoAAAsCQCAGRQ0AIANBMCAG/AsACyADQQFqIgNBLjoAACADIAUgAWtqIQEMAwsCQCAFRQ0AIAMgBCAF/AoAAAsCQCABIAVrQQNqIgRFDQAgAyAFakEwIAT8CwALIAMgAWoiAUEBakEuOgAAIAFBA2ohAQwCCwJAIAFBAWoiBkUNACADIAQgBvwKAAALIAMgAWpBAWpBLjoAACADIAVqQQFqIQEMAQsgAy0AASEEIANBLjoAASADIAQ6AAAgAyAFaiAFQQFLaiIFIAEgAUEfdSIDcyADayIDQQlKaiIEIANB+yhsQRN2IgZBMGo6AAEgBEEBaiADQeMASmoiBCAGQbh+bCADQQF0akHA2sYAai8BADsAACAFQeXWAEHl2gAgAUF/Shs7AAAgBEECaiEBCyACQfABaiQAIAELyBECEn8HfiMAQZAEayICJAACQAJAAkACQAJAAkAgAS0AoSAOAwABAgALIAJB2ANqIAFBwAJqEKECIAIoAvwDQYGAgIB4Rg0DIAJB0AFqIAJB2ANqQTBqKQMANwMAIAJBmAFqQTBqIAJB2ANqQShqKQMANwMAIAJBmAFqQShqIAJB2ANqQSBqKQMANwMAIAJBmAFqQSBqIAJB2ANqQRhqKQMANwMAIAJBmAFqQRhqIAJB2ANqQRBqKQMANwMAIAJBmAFqQRBqIAJB4ANqKQMANwMAIAIgAikD2AM3A6ABIAJBADYCmAEgAkGYAWohAwwCCyACQdgDaiABQfgLahCfAiACKALYA0GMgICAeEYNAiACQYACaiACQdgDakEgaikDADcDACACQdgBakEgaiACQdgDakEYaikDADcDACACQdgBakEYaiACQdgDakEQaikDADcDACACQdgBakEQaiACQeADaikDADcDACACIAIpA9gDNwPgASACQQE2AtgBIAJB2AFqIQMMAQsgAkHYA2ogAUH4FGoQ4QEgAigC2ANBBUYNASACQSRqIAJB8ANqKQIANwIAIAJBHGogAkHoA2opAgA3AgAgAkEUaiACQeADaikCADcCACACIAIpAtgDNwIMIAJBAjYCCCACQQhqIQMLIAJB0ABqIAEgAxC7ByACKAJQQQNGDQBByABFDQEgACACQdAAakHIAPwKAAAMAQsgAkHYA2ogAUGIIGoiBBDCCgJAIAItAOADIgVBA0YNACABQaALaiEGIAFBqAtqIQcgAUHAAmohCCABQagUaiEJIAFBsBRqIQogAUH4C2ohCyABQfgUaiEMIAJB0ABqQQRyIQ0gAkHYAWpBBHIhAyACQZgBakEEaiEOIAJBmAJqQQRqIQ8DQCACIAEgAigC2AMiECACKALcAyIRENoNAkACQCACKAIAIhIgAigCBCITTw0AAkACQAJAAkACQAJAAkAgBUH/AXEOAwABAgALIAJB2ANqIAggEiATEOMH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QdgAaiACQYQFaikAADcAACAEQdAAaiACQfwEaikAADcAACAEQcgAaiACQfQEaikAADcAACAEQcAAaiACQewEaikAADcAACAEQeAAaiACQZwHaikAADcAACAEQegAaiACQaQHaikAADcAACAEQfAAaiACQawHaikAADcAACAEQfgAaiACQbQHaikAADcAACAEQYABaiEEIAJBwAlqIQIgCiAJQQRqIglHDQALCwJAIAVFDQAgCCAJQQV0aiEEIAlBsAJsIAZqQQxqIQIDQCAEIAIpAAA3AAAgBEEYaiACQRhqKQAANwAAIARBEGogAkEQaikAADcAACAEQQhqIAJBCGopAAA3AAAgAkGwAmohAiAEQSBqIQQgBUF/aiIFDQALCyADIAc2AhAgAyAINgIMIAMgBzYCCCAHQQNxIQUgB0EETw0BQQAhAkEAIQkMAgsgASgCBCEGAkACQCABKAIIIgsNACABKAIAIQxBACEKQQQhDUEBIQ4MAQsQsRogC0EFdCIEQQEQ+xciDkUNCCALQQNxIQVBACEJAkAgC0EESQ0AIAtBfHEhCkEAIQkgDiEEIAYhAgNAIARBGGogAkEkaikAADcAACAEQRBqIAJBHGopAAA3AAAgBEEIaiACQRRqKQAANwAAIAQgAkEMaikAADcAACAEQThqIAJB1AJqKQAANwAAIARBMGogAkHMAmopAAA3AAAgBEEoaiACQcQCaikAADcAACAEQSBqIAJBvAJqKQAANwAAIARB2ABqIAJBhAVqKQAANwAAIARB0ABqIAJB/ARqKQAANwAAIARByABqIAJB9ARqKQAANwAAIARBwABqIAJB7ARqKQAANwAAIARB4ABqIAJBnAdqKQAANwAAIARB6ABqIAJBpAdqKQAANwAAIARB8ABqIAJBrAdqKQAANwAAIARB+ABqIAJBtAdqKQAANwAAIARBgAFqIQQgAkHACWohAiAKIAlBBGoiCUcNAAsLAkAgBUUNACAOIAlBBXRqIQQgCUGwAmwgBmpBDGohAgNAIAQgAikAADcAACAEQRhqIAJBGGopAAA3AAAgBEEQaiACQRBqKQAANwAAIARBCGogAkEIaikAADcAACACQbACaiECIARBIGohBCAFQX9qIgUNAAsLIAEoAgAhDBCxGiALQQxsIgRBBBD7FyINRQ0JIAtBsAJsIQFBACEKIA0h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AihBAWohCSAKrSEMA0AgDKdB/wBxIAxC/wBWIgVBB3RyIQYCQAJAIAMoAgAgC0YNACALIQoMAQsgAyALQQFBAUEBEIcMIAMoAgghCgsgDEIHiCEMIAMgCkEBaiILNgIIIAMoAgQgCmogBjoAACAJQQFqIQkgBQ0ACyAAIAk2AigCQAJAIAEtAABBGUcNACACQThqIAEQ/AsMAQsgAkE4akEQaiABQRBqKQIANwMAIAJBOGpBCGogAUEIaikCADcDACACIAEpAgA3AzgLIAJBCGogAkHIAGopAwA3AwAgAiACKQNANwMADAcLIAIgACgCIDYCJCACIAQ2AiAgAiAFNgIcIAIgBjYCGCACIAc2AhQgAiAINgIQIAIgCTYCNCACIAo2AjAgAiADNgIsAkACQAJAAkACQCACQRBqIAEQ1AsNACACQThqQRBqIgsgAkEQakEQaikCADcDACACQThqQQhqIgUgAkEQakEIaikCADcDACACIAIpAhA3AzgCQCAJIANHDQAgAkEsakGQtMIAEIoOIAIoAjAhCgsgCiAJQRhsaiIDIAIpAzg3AgAgA0EQaiALKQMANwIAIANBCGogBSkDADcCACACIAlBAWo2AjQgAS0AAEEZRw0BIAJBOGogARD8CwwCCyAAIAJBLGoQugcgAS0AAEEZRw0CIAJBOGogARD8CwwDCyACQThqQRBqIAFBEGopAgA3AwAgAkE4akEIaiABQQhqKQIANwMAIAIgASkCADcDOAsgAkEIaiACQThqQQhqKQMANwMAIAIgAikDODcDACACKQIwIQwgAigCLCELIAIoAkghAyACKAJMIQoMCQsgAkE4akEQaiABQRBqKQIANwMAIAJBOGpBCGogAUEIaikCADcDACACIAEpAgA3AzgLIAJBCGogAkHIAGopAwA3AwAgAiACKQNANwMAIAIpAzghDEGFgICAeCELIAItABAiCkEecUEYRw0EQQIhAyAKQWlqQQJJDQQgAigCFCIKIAooAgAiCkF/ajYCACAKQQFHDQUgAkEUahCeEwwFCyACIAU2AiQgAiAGNgIgIAIgBzYCHCACIAg2AhggAiAJNgIUIAIgCjYCEAJAAkACQAJAAkAgAkEQaiABENQLDQAQsRpBMEEEEPsXIgNFDQcgAyACKQIQNwIAIANBEGogAkEQakEQaikCADcCACADQQhqIAJBEGpBCGopAgA3AgAgAS0AAEEZRw0BIAJBOGogARD8CwwCCyABLQAAQRlHDQIgAkE4aiABEPwLIAItABAhCgwDCyACQThqQRBqIAFBEGopAgA3AwAgAkE4akEIaiABQQhqKQIANwMAIAIgASkCADcDOAsgAkEIaiACQThqQQhqKQMANwMAIAIgAikDODcDACADrUKAgICAEIQhDCACKAJIIQMgAigCTCEKQQIhCwwICyACQThqQRBqIAFBEGopAgA3AwAgAkE4akEIaiABQQhqKQIANwMAIAIgASkCADcDOAsgAkEIaiACQcgAaikDADcDACACIAIpA0A3AwAgAikDOCEMQYWAgIB4IQsgCkEecUEYRw0DQQIhAyAKQWlqQf8BcUECSQ0DIAIoAhQiCiAKKAIAIgpBf2o2AgAgCkEBRw0EIAJBEGpBBGoQnhMMBAsgAiAFNgIkIAIgBjYCICACIAc2AhwgAiAINgIYIAIgCTYCFCACIAo2AhACQCACQRBqIAEQ1AsNACACQRBqQQRyIQcgBK0hDCAAKAIkIgMoAgghC0EAIQkDQCAMp0H/AHEgDEI/ViIFQQd0ciEGAkACQCADKAIAIAtGDQAgCyEKDAELIAMgC0EBQQFBARCHDCADKAIIIQoLIAxCB4ghDCADIApBAWoiCzYCCCADKAIEIApqIAY6AAAgCUEBaiEJIAUNAAsgACAAKAIoIAJBEGogAxDzC2ogCWo2AigCQAJAIAEtAABBGUcNACACQThqIAEQ/AsMAQsgAkE4akEQaiABQRBqKQIANwMAIAJBOGpBCGogAUEIaikCADcDACACIAEpAgA3AzgLIAJBCGogAkHIAGopAwA3AwAgAiACKQNANwMAIAIpAzghDEGEgICAeCELAkAgAi0AECIDQR5xQRhGDQAMBQsCQCADQWlqQQJPDQAMBQsgAigCFCIDIAMoAgAiA0F/ajYCAAJAIANBAUYNAAwFCyAHEJ4TDAQLIAJBCGogAkEQakEIaiIDQQhqKQIANwMAIAIgAykCADcDACAEQQFqIQNBhYCAgHghCyACKQMQIQwMAwsgABDRBQwFC0EEQTBBoLTCABDmFgALQQIhAwsMAQsgAikDOCEMQYSAgIB4IQsLIAAQkgogACAMNwIEIAAgCzYCACAAIAo2AiAgACADNgIcIABBDGoiAyACKQMANwIAIANBCGogAkEIaikDADcCAAsgAkHQAGokAAuQEQIJfwR+IwBBsAJrIgQkACAEQagBaiABIAIQugECQAJAAkAgBCgCqAEiAkErRg0AIARByABqIgEgBEGoAWpBJGooAgA2AgAgBEEoakEYaiIFIARBqAFqQRxqKQIANwMAIARBKGpBEGoiBiAEQagBakEUaikCADcDACAEQShqQQhqIgcgBEG0AWopAgA3AwAgBEH4AWpBCGoiCCAEQdkBaikAADcDACAEQfgBakEQaiIJIARBqAFqQTlqKQAANwMAIARB+AFqQRhqIgogBEGoAWpBwQBqKQAANwMAIARBlwJqIgsgBEHwAWopAAA3AAAgBCAEKQKsATcDKCAEIAQpANEBNwP4ASAELQDQASEMIABBLGogASgCADYCACAAQSRqIAUpAwA3AgAgAEEcaiAGKQMANwIAIABBFGogBykDADcCACAAIAQpAyg3AgwgACAEKQP4ATcAMSAAQTlqIAgpAwA3AAAgAEHBAGogCSkDADcAACAAQckAaiAKKQMANwAAIABB0ABqIAspAAA3AAAgACAMOgAwIAAgAjYCCCAAQQA2AgAgA0GECEkNASADEK8RDAELIARBxABqIARByAFqKQMAIg03AgAgBEE8aiAEQagBakEYaikDACIONwIAIARBNGogBEGoAWpBEGopAwAiDzcCACAEIAQpA7ABIhA3AiwgBEEIakEYaiANNwMAIARBCGpBEGogDjcDACAEQRBqIA83AwAgBCAQNwMIIAQgAzYCKCAEQfgBaiAEQShqEJITAkACQCAEKAL4ASICQYCAgIB4Rg0AIAQoAoACIQcgBCgC/AEhBQwBCyAEQagBaiAEQShqEMUTQYCAgIB4QYGAgIB4IAQoAqgBGyECIAQrA7AB/AMhBSAEKAIoIQMLAkAgA0GECEkNACADEK8RCwJAAkACQCACQYGAgIB4Rw0AIABBBDYCAAwBCyABQSBqIgkQiAggASgCaEGAgICAeEYNAyAEQagBaiABQbANaiIKIARBCGoQvg4gBEH4AWpBAmoiCCAEQbcBai0AADoAACAEIAQvALUBOwH4ASAELQC0ASEDIAQpAqwBIQ0CQAJAIAQoAqgBIgZBJ0YNACAEQdAAakE4aiAEQfABaikDADcDACAEQdAAakEwaiAEQegBaikDADcDACAE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EIMBIQsMAQsgBkGAAWogC0EAIAYQpQ0gAUGwDWogBkEYaiAGQYABahCDASELCyACIAJBASAKIAtJGyACQQJHGyELAkACQAJAAkAgBkEUahDRGCICDQAgBigCFBDsDkH/AXEiDEECRw0BIABBKTYCAAwECyAGQdABakEYaiAGQRhqQRhqKQMANwMAIAZB0AFqQRBqIAZBGGpBEGopAwA3AwAgBkHQAWpBCGoiDCAGQRhqQQhqKQMANwMAIAYgBikDGDcD0AEgBkH0AWogAUEgakEAIAggB0GAgICAeEYbIAkQpQ0gBkGAAWogAUGwDWogBkHQAWogCyAKIAZB9AFqQQEQhQQCQCAMLwEAIgFBAkYNACABRQ0AIAYoAtwBIgFFDQAgBigC4AEgAUEBEL4YCyAGKAKAASIBQSdGDQEgACAGKQOoATcDKCAGQfgAaiIJIAZBgAFqQSRqKAIANgIAIAZB8ABqIgogBkGAAWpBHGopAgA3AwAgBkHoAGoiCyAGQYABakEUaikCADcDACAGQeAAaiIMIAZBgAFqQQxqKQIANwMAIABBMGogBkGAAWpBMGopAwA3AwAgAEE4aiAGQYABakE4aikDADcDACAAQcAAaiAGQYABakHAAGopAwA3AwAgAEHIAGogBkGAAWpByABqKQMANwMAIAYgBikChAE3A1ggAEEkaiAJKAIANgIAIABBHGogCikDADcCACAAQRRqIAspAwA3AgAgAEEMaiAMKQMANwIAIAAgBikDWDcCBCAAIAE2AgBBACEADAQLIAZB0AFqQRhqIAZBGGpBGGopAwA3AwAgBkHQAWpBEGogBkEYakEQaikDADcDACAGQdABakEIaiINIAZBGGpBCGopAwA3AwAgBiAGKQMYNwPQASAGQfQBaiABQSBqQQAgCCAHQYCAgIB4RhsgCRClDSAGQYABaiABQbANaiAGQdABaiALIAogBkH0AWogDEEBcRCFBAJAIA0vAQAiAUECRg0AIAFFDQAgBigC3AEiAUUNACAGKALgASABQQEQvhgLAkAgBigCgAEiAUEnRg0AIAAgBikDqAE3AyggBkH4AGoiCSAGQYABakEkaigCADYCACAGQfAAaiIKIAZBgAFqQRxqKQIANwMAIAZB6ABqIgsgBkGAAWpBFGopAgA3AwAgBkHgAGoiDCAGQYABakEMaikCADcD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AK0DIANBCGpBOGogDCkDADcDACADQQhqQTBqIAspAwA3AwAgA0EIakEoaiAGKQMANwMAIANBCGpBIGogBSkDADcDACADQQhqQRhqIAgpAwA3AwAgA0EIakEQaiIFIAQpAwA3AwAgA0EIakEIaiIBIA0pAwA3AwAgAyADKQNINwMIIANB6AJqQRBqIAUoAgA2AgAgA0HoAmpBCGogASkDADcDACADIAMpAwg3A+gCIANBgANqQShqIANBxABqKAIANgIAIANBgANqQSBqIANBPGopAgA3AwAgA0GAA2pBGGogA0E0aikCADcDACADQYADakEQaiADQSxqKQIANwMAIANBgANqQQhqIANBJGopAgA3AwAgAyADKQIcNwOAAyADIAI6AKwDIANBiAFqIANB6AJqIANBgANqEKIBAkAgAygCnAEiAkGAgICAeEcNACABIAcpAgA3AwAgAyADKQKIATcDCCADQQE2AkwgA0GA6sIANgJIIANCATcCVCADQYECrUIghiADQQhqrYQ3A+gEIAMgA0HoBGo2AlAgA0HIBGogA0HIAGoQuAkgAygC0AQhAiADKALMBCEBIAMoAsgEIQQCQCADLQAIQQ1GDQAgA0EIahDOCgsgACACNgIMIAAgATYCCCAAIAQ2AgQgAEGAgICAeDYCAAwFCwJAQfgARQ0AIANBtANqQQRqIApB+AD8CgAACyADIAI2ArQDIANBiAFqIANBtANqEKEDAkAgAygCiAEiAUGAgICAeEcNACADQQhqQQhqIANBiAFqQQRqIgJBCGopAgA3AwAgAyACKQIANwMIIANBATYCTCADQeTpwgA2AkggA0IBNwJUIANBggKtQiCGIANBCGqthDcD6AQgAyADQegEajYCUCADQcgEaiADQcgAahC4CSADKQPIBCETIAMoAtAEIQIgA0EIahDOCiAAIAI2AgwgACATNwIEIABBgICAgHg2AgAMBQsgA0HYAmpBCGoiByADQYgBakEgaigCADYCACADQcgCakEIaiIKIANBiAFqQSxqKAIANgIAIANBmAJqQQhqIgYgA0GIAWpBxABqKQIANwMAIANBqAJqIgggA0GIAWpBzABqKQIANwMAIANBsAJqIgkgA0GIAWpB1ABqKQIANwMAIANBmAJqQSBqIgsgA0GIAWpB3ABqKQIANwMAIANBwAJqIgwgA0GI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QSBqQQRyIQQCQEGsAkUNACAEIANB7AJqQawC/AoAAAsgAyACNgIgAkACQAJAAkACQAJAAkAgAQ0AIAJBf2oOAwEGAgYLIABBAjYCWCAAQQE2AgACQAJAAkACQCACDgQBAgMAAQsgA0E4ahC2DSADKAIkIgBBgICAgHhyQYCAgIB4Rg0UIAMoAiggAEEBEL4YDBQLIAQQ0gwMEwsgA0EoahC2DQwSCyAEEMoNDBELIAMoArgCIQUgAygClAIhASADKAKQAiECIAMoAnwhBiADKAJ4IQcgAygCdCEIIAMoAnAhCSADKQNoIRQgAykDYCEVIAMpA1ghFgJAAkAgAygCjAIiCkGAgICAeEYNACACIQsMAQtBACEMIAFBAEgNBwJAAkAgAQ0AQQEhCwwBCxCxGkEBIQwgAUEBEPsXIgtFDQgLAkAgAUUNACALIAIgAfwKAAALIAEhCgsgA0H0AWohDCADQSBqQQhqIQIgA0GkB2ogA0EgakGEAmoiDUEQaigCADYCACADQZgFakGEAmogDUEIaikCADcCACADQZgFakHgAWogA0EgakHgAWoiDkEIaigCADYCACADQZgFakH4AWogA0EgakH4AWoiD0EIaigCADYCACADIA0pAgA3ApQHIAMgDikDADcD8AYgAyAPKQMANwOIBwJAQfQARQ0AIANB8AVqIANBgAFqQfQA/AoAAAsgA0GYBWpBCGogAkEIaikDADcDACADQZgFakEQaiACQRBqKQMANwMAIANBmAVqQRhqIAJBGGopAwA3AwAgA0GYBWpBIGogAkEgaikDADcDACADQZgFakEoaiACQShqKQMANwMAIANB7AZqIAxBCGooAgA2AgAgAyABNgKEByADIAs2AoAHIAMgCjYC/AYgAyACKQMANwOYBSADIAwpAgA3AuQGIAMgFjcDyAUgAyAVNwPQBSADIBQ3A9gFIAMgCTYC4AUgAyAINgLkBSADIAc2AugFIAMgBjYC7AUgAyAFNgKoByADQYGAgIB4NgKwByADQdACaiADQZgFaiADQbAHahDQAyADKAKoA0ECRw0BELEaQRhBCBD7FyICDQlBCEEYENgZAAsgAygCMCEQIAMoAiwhDCADKAIoIREgAygCJCENIAMoAsgCIQcgAygCpAIhASADKAKgAiECIAMoAowBIQggAygCiAEhCSADKAKEASEOIAMoAoABIQ8gAykDeCEUIAMpA3AhFSADKQNoIRYCQAJAIAMoApwCIgVBgICAgHhGDQAgAiEGDAELQQAhCiABQQBIDQcCQAJAIAENAEEBIQYMAQsQsRpBASEKIAFBARD7FyIGRQ0ICwJAIAFFDQAgBiACIAH8CgAACyABIQULIANBhAJqIQogA0E4aiECIANBpAdqIANBtAJqIgtBEGooAgA2AgAgA0GcB2ogC0EIaikCADcCACADQfgGaiADQZACaiISQQhqKAIANgIAIANBkAdqIANBqAJqIhNBCGooAgA2AgAgAyALKQIANwKUByADIBIpAwA3A/AGIAMgEykDADcDiAcCQEH0AEUNACADQfAFaiADQZABakH0APwKAAALIANBmAVqQQhqIAJBCGopAwA3AwAgA0GYBWpBEGogAkEQaikDADcDACADQZgFakEYaiACQRhqKQMANwMAIANBmAVqQSBqIAJBIGopAwA3AwAgA0GYBWpBKGogAkEoaikDADcDACADQewGaiAKQQhqKAIANgIAIAMgATYChAcgAyAGNgKAByADIAU2AvwGIAMgAikDADcDmAUgAyAKKQIANwLkBiADIBY3A8gFIAMgFTcD0AUgAyAUNwPYBSADIA82AuAFIAMgDjYC5AUgAyAJNgLoBSADIAg2AuwFIAMgBzYCqAcCQAJAIA1BgICAgHhGDQAgESECDAELQQAhASAMQQBIDQgCQAJAIAwNAEEBIQIMAQsQsRpBASEBIAxBARD7FyICRQ0JCwJAIAxFDQAgAiARIAz8CgAACyAMIQ0LIAMgEDYCvAcgAyAMNgK4ByADIAI2ArQHIAMgDTYCsAcgA0HQAmogA0GYBWogA0GwB2oQ0AMgAygCqANBAkcNARCxGkEYQQgQ+xciAg0CQQhBGBDYGQALQbACRQ0JIAAgA0HQAmpBsAL8CgAADAkLQbACRQ0HIAAgA0HQAmpBsAL8CgAADAcLIAIgAykD0AI3AwAgAEECNgJYIABB3KbCADYCCCAAIAI2AgQgAEEANgIAIAJBEGogA0HQAmpBEGopAwA3AwAgAkEIaiADQdACakEIaikDADcDAAwGCyAAQQI2AlggAEECNgIADAgLIAIgAykD0AI3AgAgAkEQaiADQdACakEQaigCADYCACACQQhqIANB0AJqQQhqKQMANwIAIABBAjYC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IAFBsAFqQRBqIgRCADcDACABQbABakEYaiIFQQA2AgAgASACNgLMASABQgA3A7ABIAFBiAJqQShqIgZBgICAgHg2AgAgAUGIAmpBACABQbABahCfBCABQQhqQTBqIAFBiAJqQTBqIgcpAwA3AwAgAUEIakEoaiAGKQMANwMAIAFBCGpBIGogAUGIAmpBIGoiCCkDADcDACABQQhqQRhqIAFBiAJqQRhqIgkpAwA3AwAgAUEIakEQaiABQYgCakEQaiIKKQMANwMAIAFBCGpBCGogAUGIAmpBCGoiCykDADcDACABIAEpA4gCNwMIELEaQRRBBBD7FyICRQ0BIAJBADYCECACQoCAgIAQNwIIIAJCgYCAgBA3AgAgA0IANwMAIARCADcDACAFQQA2AgAgASACNgLMASABQgA3A7ABIAZBgICAgHg2AgAgAUGIAmpBACABQbABahCfBCABQcAAakEwaiAHKQMANwMAIAFBwABqQShqIAYpAwA3AwAgAUHAAGpBIGogCCkDADcDACABQcAAakEYaiAJKQMANwMAIAFBwABqQRBqIAopAwA3AwAgAUHAAGpBCGogCykDADcDACABIAEpA4gCNwNAELEaQRRBBBD7FyICRQ0CIAJBADYCECACQoCAgIAQNwIIIAJCgYCAgBA3AgAgAUGwAWpBCGoiA0IANwMAIAFBsAFqQRBqIgRCADcDACABQbABakEYaiIFQQA2AgAgASACNgLMASABQgA3A7ABIAFBiAJqQShqIgZBgICAgHg2AgAgAUGIAmpBACABQbABahCfBCABQfgAakEwaiABQYgCakEwaiIHKQMANwMAIAFB+ABqQShqIAYpAwA3AwAgAUH4AGpBIGogAUGIAmpBIGoiCCkDADcDACABQfgAakEYaiABQYgCakEYaiIJKQMANwMAIAFB+ABqQRBqIAFBiAJqQRBqIgopAwA3AwAgAUH4AGpBCGogAUGIAmpBCGoiCykDADcDACABIAEpA4gCNwN4ELEaQRRBBBD7FyICRQ0DIAJBADYCECACQoCAgIAQNwIIIAJCgYCAgBA3AgAgAUHoAWpBCGpCADcDACABQegBakEQakIANwMAIAFB6AFqQRhqQQA2AgAgASACNgKEAiABQgA3A+gBIAZBgICAgHg2AgAgAUGIAmpBACABQegBahCfBCABQbABakEwaiAHKQMANwMAIAFBsAFqQShqIAYpAwA3AwAgAUGwAWpBIGogCCkDADcDACAFIAkpAwA3AwAgBCAKKQMANwMAIAMgCykDADcDACABIAEpA4gCNwOwAQJAAkBBACgC8L1HQQFHDQBBACkDgL5HIQ5BACkD+L1HIQ8MAQsgAUGIAmoQ6RJBAEIBNwPwvUdBACABKQOQAiIONwOAvkcgASkDiAIhDwsgAEIENwOQAyAAQgA3A4gDIABCgICAgMAANwOAAyAAQgQ3A/gCIABCADcD8AIgAEKAgICAwAA3A+gCIABCATcD4AIgAEIANwPYAiAAQoCAgIDAADcD0AIgAEEANgLAAiAAIAEpAwg3AwBBACAPQgF8NwP4vUcgAEEwaiABQQhqQTBqKQMANwMAIABBKGogAUEIakEoaikDADcDACAAQSBqIAFBCGpBIGopAwA3AwAgAEEYaiABQQhqQRhqKQMANwMAIABBEGogAUEIakEQaikDADcDACAAQQhqIAFBCGpBCGopAwA3AwAgAEIANwM4IABCADcDeCAAQfAAaiABQfgAakEwaikDADcDACAAQegAaiABQfgAakEoaikDADcDACAAQeAAaiABQfgAakEgaikDADcDACAAQdgAaiABQfgAakEYaikDADcDACAAQdAAaiABQfgAakEQaikDADcDACAAQcgAaiABQfgAakEIaikDADcDACAAIAEpA3g3A0AgAEGwAWogAUHAAGpBMGopAwA3AwAgAEGoAWogAUHAAGpBKGopAwA3AwAgAEGgAWogAUHAAGpBIGopAwA3AwAgAEGYAWogAUHAAGpBGGopAwA3AwAgAEGQAWogAUHAAGpBEGopAwA3AwAgAEGIAWogAUHAAGpBCGopAwA3AwAgACABKQNANwOAASAAQgA3A7gBIABB8AFqIAFBsAFqQTBqKQMANwMAIABB6AFqIAFBsAFqQShqKQMANwMAIABB4AFqIAFBsAFqQSBqKQMANwMAIABB2AFqIAFBsAFqQRhqKQMANwMAIABB0AFqIAFBsAFqQRBqKQMANwMAIABByAFqIAFBsAFqQQhqKQMANwMAIAAgASkDsAE3A8ABIABBADYCoAMgAEKAgICAEDcDmAMgAEIANwP4ASAAQQA2AswCIABBADYCxAIgAEGIAmpBACkD6MhBIhA3AwAgAEEAKQPgyEEiETcDgAIgACAMNwOYAiAAIA03A5ACIABBqAJqIBA3AwAgACARNwOgAiAAQQA2AqwDIABCgICAgMAANwKkAyAAIA43A7gCIAAgDzcDsAIgAUHAAmokAA8LQQRBFBDYGQALQQRBFBDYGQALQQRBFBDYGQALQQRBFBDYGQALjxACEX8EfiMAQcACayICJAAgASgCkAUhAyACIAEQ0wECQAJAIAIoAlgiBEGBgICAeEYNAAJAAkACQAJAAkACQCAEQYCAgIB4Rg0AIAJB6ABqQeQAaiACQeQAaigCADYCACACIAIpAlw3AsQBAkBB2ABFDQAgAkHoAGogAkHYAPwKAAALIAIgBDYCwAEgASgCiAUpAzAgATUCgAV8IhNCgICAgBBaDQECQAJAAkACQCABKAKMBSIFKAIIRQ0AIAUoAgQoAgAhBiACQg83A+ABIAJB4AFqEK0HAkACQCACLQBoIgRBGkcNAEGBgICAeCEHAkAgAigCcCIIIAIoAmwiCXINAEEAIQpBACEJDAILIAggBSgCCE8NAyAFKAIEIAhBAnRqKAIAIQogAkEPNgLgASACIAg2AuQBIAJB4AFqEK0HDAELAkACQAJAAkACQCAEQWlqQQAgBEEecSIIQRhGGw4DAAECAAsgAkHoAGpBAXIhCyAEIQoMAwsgAigCbCELDAELIAIoAmxBCGohCwtBACEMIAIoAnAiCkEASA0ICwJAAkAgCg0AQQEhCQwBCxCxGkEBIQwgCkEBEPsXIglFDQgLAkAgCkUNACAJIAsgCvwKAAALAkAgCEEYRw0AIARBaWpBAkkNACACKAJsIgQgBCgCACIEQX9qNgIAIARBAUcNACACQegAakEEchCeEwsgCiEHCyACKAK8ASEIAkACQAJAAkACQAJAIAIoArgBIg0NACAIIQ4MAQsCQCAIIAUoAghJDQBBASEEDAILIAUoAgQgCEECdGooAgAhDiACQQ82AuABIAIgCDYC5AEgAkHgAWoQrQcLIAIoAsABIQ8gAigCxAEiECERAkACQCACKALIASIERQ0AIBAgBEEDdGohESAQIQQDQCAEQQRqIgsoAgAiCCAFKAIITw0CIAQoAgAhDCAFKAIEIAhBAnRqKAIAIRIgAkEPNgLgASACIAg2AuQBIAJB4AFqEK0HIAsgEjYCACAEIAw2AgAgBEEIaiIEIBFHDQALCyACKQOwASIUQghUDQIgAiAUNwOwAiACQQE2AuQBIAJBiNvCADYC4AEgAkIBNwLsASACQacBrUIghiACQbACaq2ENwO4AiACIAJBuAJqNgLoASACQdABaiACQeABahC4CSACLQDUASEFIAIoAtABIghBhoCAgHhGDQMgAkHXAWotAABBGHQgAi8A1QFBCHRyIQsgAigC2AEhBAJAIAdBgYCAgHhGDQAgB0UNACAJIAdBARC+GAsgCyAFciEFAkAgD0UNACAQIA9BA3RBBBC+GAsgAkGYAWoQ/Q9BJSELDA4LQQAhBCAPRQ0AIBAgD0EDdEEEEL4YCyAHQYGAgIB4Rg0CIAdFDQIgCSAHQQEQvhggAkGYAWoQ/Q8gBEUNBiAQIQUMBQtCgIaEoKCggYMHIBRCA4aIpyEFCyACQdABaiACQZgBahDmCAJAAkAgAi0AgAEiCEEaRw0AQYGAgIB4IQQMAQsgAkHwAWogAkGQAWopAAA3AAAgAkHpAWogAkGJAWopAAA3AAAgAiACKQCBATcA4QEgAiAIOgDgAUEBIQMgAkHgAWpBAXIhCyAIIQQCQAJAAkACQCAIQWlqQQAgCEEecSIMQRhGGw4DAwABAwsgAigC6AEhBCACKALkASELDAELIAIoAuQBQQhqIQsgAigC6AEhBAtBACESIARBAEgNCgsCQCAERQ0AELEaQQEhEiAEQQEQ+xciA0UNCgsCQCAERQ0AIAMgCyAE/AoAAAsgBK1CIIYhFCADrSEVAkAgDEEYRw0AIAhBaWpB/wFxQQJJDQAgAigC5AEiCCAIKAIAIghBf2o2AgAgCEEBRw0AIAJB5AFqEJ4TCyAUIBWEIRQLIAIpA9ABIRUgAikD2AEhFiACLwHMASEIIAEgASgCgAVBAWo2AoAFIABB4ABqQQA6AAAgAEIANwNYIABCgICAgIABNwNQIAAgCDsATSAAIAU6AEwgACARIBBrQQN2NgJIIAAgEDYCRCAAIA82AkAgACAUNwM4IAAgBDYCNCAAIAo2AjAgACAJNgIsIAAgBzYCKCAAIA42AiQgACANNgIgIAAgBjYCHCAAIBOnNgIYIAAgFjcDECAAIBU3AwggAEEANgIADAwLIAJBmAFqEP0PIARFDQMgECEFDAILQQAhCCACLQBoIgRBGkYNACAEQR5xQRhHDQAgBEFpakECSQ0AIAIoAmwiBCAEKAIAIgRBf2o2AgAgBEEBRw0AIAJB6ABqQQRyEJ4TCyACQZgBahD9DwtBDyELIAIoAsABIgQNBQwGC0EPIQsgECEFDAULIAJB4AFqQRBqIAJBEGopAwA3AwAgAkHgAWpBCGogAkEIaikDADcDACACIAIpAwA3A+ABQdTHwQBBKyACQeABakHo7MIAQfjswgAQ+BAAC0HUx8EAQSsgAkHgAWpB1OzBAEGghcMAEPgQAAsgDCAKQYCZwgAQ5hYACyASIARBgJnCABDmFgALIAIoAsQBIARBA3RBBBC+GAsCQCACLQCAASIMQRpGDQAgDEEecUEYRw0AIAxBaWpBAkkNACACKAKEASIMIAwoAgAiDEF/ajYCACAMQQFHDQAgAkGEAWoQnhMLAkAgAygCAEEnRg0AIAMQrQcLIANCgICAgIABNwNIIAMgBDYCDCADIAU2AgggAyAINgIEIAMgCzYCACABIAEoAoAFQQFqNgKABQsgAEECNgIACyACQcACaiQAC5cQAht/BH4jAEGgB2siBCQAIARBGGogASACIAMQ0AsCQAJAIAIgASgC4AMiBUkNACABIAM2AuQDIARBiANqIAFB0AJqIAIgBWsQ4wNBCCEFAkAgBC0AiAMiBkEBSw0AAkAgBkEBcUUNACAELQCJAyEFDAELIAQoAowDLQAAIQULAkAgAiABKAKEBSIGSQ0AIAEgAzYCiAUgBEGIA2ogAUHoA2ogAiAGaxCWAwJAAkACQAJAAkACQCAEKAKIAyICQQNGDQAgAkECRw0BC0ICIR8MAQsCQAJAIAJBAXFFDQAgBCkDkAMhHwwBCyAEKAKMAykDACEfCyABKQOwBCEgIAEpA9gEISEgH6chBkIAIR8CQAJAAkAgASgCwAQiAkF+ag4CAQIACyABQcgEaiABKALEBCACQQFxGykDACIfQoCAgIAQIB9CgICAgBBUGyEfCyAfIAE1AtAEfiEfCyAhICAgH3x9pyAGayICIAEoAqQGIgMgASgCoAYiByADIAdJGyIDSQ0DIAFBkAVqIQgCQCACIANNDQAgBEEQaiAIIAIgA0F/c2oQ/QMLIAIgASgC2AciAyABKALUByIHIAMgB0kbIgdJDQIgAUGoBmohAwJAIAIgB00NACAEQYgDaiADIAIgB0F/c2oQmQMLIAIgASgCgAkiByABKAL8CCIJIAcgCUkbIgdJDQEgAUHgB2ohCgJAIAIgB00NACAEQYgDaiAKIAIgB0F/c2oQ3QULQgAhIAJAIAEoApAGIglBA0YNACABNQKYBkIghkEAIAEoApQGIAlBAkYbrYQhIAsgASgCgAYhCyABKAKIBiEMIAEoAqQGIQ0gASgCoAYhDiABKAKcBiEPIARByAJqIAFB+AVqKQMANwMAIARBwAJqIAFB8AVqKQMANwMAIAQgASkD6AU3A7gCIAEpA5AFIR8CQEHQAEUNACAEQegBaiABQZgFakHQAPwKAAALQQMhBwJAAkAgASgCkAciAkEDRw0AQQMhEAwBC0ECIRAgASgCoAchEQJAAkAgAkECRw0ADAELQQEhEAJAIAJBAXFFDQAgASkDmAchIgwCCyABKAKUByESQQAhEAsLIAEoAsAHIRMgASgCyAchFCABKALYByEVIAEoAtQHIRYgASgC0AchFyAEQdACakEUaiABQbgHaikCADcCACAEQdACakEMaiABQbAHaikCADcCACAEIAEpAqgHNwLUAgJAAkAgASgCuAgiAkEDRw0ADAELQQIhByABKALICCEYAkACQCACQQJHDQAMAQtBASEHAkAgAkEBcUUNACABKQPACCEhDAILIAEoArwIIRlBACEHCwsgASgC6AghGiABKALwCCEbIAEoAoAJIRwgASgC/AghHSABKAL4CCEeIARB7AJqQRRqIAFB4AhqKQIANwIAIARB7AJqQQxqIAFB2AhqKQIANwIAIAQgASkC0Ag3AvACAkBB2ABFDQAgBEGIA2ogCkHYAPwKAAALAkBB6ABFDQAgBEGAAWogA0HoAPwKAAALAkAgBkUNACAEQQhqIAggBkF/aiICEP0DIARBiAdqIAMgAhCZAyAEQYgHaiAKIAIQ3QULQdgARQ0AIARBKGogBEGIA2pB2AD8CgAAC0EAIQICQCAEKAIYQQFGDQAMBgsCQCAFQf8BcUEIRw0ADAYLIB9CAlENBSAEKAIgIQogBCgCHCEIAkBB6ABFIgINACAEQYgDakEIaiAEQegBakHoAPwKAAALAkAgAg0AIARBoARqIARBgAFqQegA/AoAAAsgBEG0BWogBEHQAmpBGGooAgA2AgAgBEGsBWogBEHQAmpBEGopAgA3AgAgBEGkBWogBEHQAmpBCGopAgA3AgAgBCAEKQLQAjcCnAUCQEHcAEUNACAEQdQFaiAEQSRqQdwA/AoAAAsgBEHcBmogBEHsAmpBGGooAgA2AgAgBEHUBmogBEHsAmpBEGopAgA3AgAgBEHMBmogBEHsAmpBCGopAgA3AgAgBCAGNgKAByAEIBw2AvgGIAQgHTYC9AYgBCAeNgLwBiAEIBs2AugGIAQgGjYC4AYgBCAYNgLABiAEICE3A7gGIAQgGTYCtAYgBCAHNgKwBiAEIBU2AtAFIAQgFjYCzAUgBCAXNgLIBSAEIBQ2AsAFIAQgEzYCuAUgBCARNgKYBSAEICI3A5AFIAQgEjYCjAUgBCAQNgKIBSAEIA02ApwEIAQgDjYCmAQgBCAPNgKUBCAEICA3AowEIAQgCTYCiAQgBCAMNgKABCAEIAs2AvgDIAQgHzcDiAMgBCAEKQLsAjcCxAYgASgCjAkhByABKAKQCSEGIARBiAdqIARBiANqEIIGAkACQCAEKQOQByIfQgJRDQBBACECA0ACQCAfUEUNAAJAIAQoAowHIgMgBk8NACAHIANBAnRqKAIAIAQoAogHTyACciECDAELIAMgBkHIsMIAEOMRAAsgBEGIB2ogBEGIA2oQggYgBCkDkAciH0ICUg0ACyACQQFxDQELAkAgCiAGSQ0AIAogBkHIsMIAEOMRAAsgBUH/AXFBBUYNACAHIApBAnRqKAIAIAhJDQBBASECQQAhAwwGCyAEIAEQqAZBASECIAQoAgRBAWohAwwFC0H8/8EAQSZBpIDCABDOEwALQfz/wQBBJkGkgMIAEM4TAAtB/P/BAEEmQaSAwgAQzhMAC0G0gMIAQSlB4IDCABDOEwALQbSAwgBBKUHggMIAEM4TAAsgACADNgIEIAAgAjYCACAEQaAHaiQAC4IQAgN/BX4jAEHAAWsiAiQAIAJBMGogARDQBQJAAkACQAJAAkACQCACKAIwDQAgAikDQCEFIAIpAzghBgwBCyACIAIpAzg3AowBIAIgAigCNDYCiAEgAkEwakHcscIAQQUgAkGIAWoQowsgAikCQCEFIAIpAjghBiACKAIwIgNBgICAgHhGDQAgAigCNCEBIAIgBTcCGCACIAY3AhAgAiABNgIMIAIgAzYCCAwBCyACQTBqIAFBMGoQ1gQCQAJAIAIoAjAiA0ECRw0AQgIhBwwBCwJAIANBAXENACACKQNAIQggAikDOCEHDAELIAIgAikDODcCmAEgAiACKAI0NgKUASACQTBqQY6VwgBBByACQZQBahCjCyACKQJAIQggAikCOCEHIAIoAjAiA0GAgICAeEYNACACKAI0IQEgAiAINwIYIAIgBzcCECACIAE2AgwgAiADNgIIDAELIAJBMGogAUHoAGoQyQMCQAJAAkACQCACLQAwIgFBZWoOAgABAgsMAgsgAkEEakELaiACQTBqQQxqKAIANgAAIAIgAikCNDcAByACIAJBC2opAAA3ALcBIAJB+ABqQQtqIgEgAkGwAWpBC2ooAAA2AAAgAiACKQAENwOwASACIAIpALMBIgY3AHsgAkGgAWpBCGogASgAADYCACACIAY3A6ABIAJBMGpB+LLCAEEGIAJBoAFqEKMLIAIgAkEwakEIaikAADcAbyACIAIpADE3A2ggAiACKQBvNwAnIAIgAikDaDcDICACQQRqQQxqIAIpACc3AAAgAiACKQMgNwAJIAItADAhASACIAIpAkA3AhggAiABOgAIDAILIAIgAikAMTcDsAEgAiACQThqKQAANwC3ASACIAIpA7ABNwN4IAIgAikAtwE3AH8gAikCQCEJCyACIAIpAH83AG8gAiACKQN4NwNoIAIgAikDaDcDICACIAIpAG83ACcgAkHYAGogAikAJzcAACACIAIpAyA3AFEgAiAJNwNgIAIgAToAUCACIAg3A0ggAiAHNwNAIAIgBTcDOCACIAY3AzACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgBkICUQ0AIAdCAlINAQwCCyABQR5xQRpHDQQMAgsCQCABQRtHDQBBASEDDAULIAanQQFxRQ0AIAFBGkYNACAHp0EBcUUNACACQQhqQf6ywgBBA0GBs8IAQQ8Qsw8gAkEBNgIEDBQLIAFBHnFBGkYNACAGp0EBcUUNAkEAIQMMAQtBASEDCyAHQgJSDQFBASEEDAILIAdCAlENBiAHp0EBcUUNBkEAIQMLIAenQQFxDQFBACEECwJAIAZCAlENACAGp0EBcQ0KCyAEDQEgB6dBAXENByADQQFzRQ0CDAcLAkAgCEIAUg0AAkAgBkICUQ0AIAanQQFxDQQLIANFDQAgAkIANwIMIAJBGjoACCACQQA2AgQMDgsgBkICUQ0HAkAgAyAGpyIEcQ0AIARB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wwA2AiggAkIBNwI0IAJBugGtQiCGIAJBJGqthDcDECACIAJBEGo2AjAgASgCACABKAIEIAJBKGoQowchAAwWCyACIABBBGo2AiQgAkEBNgIsIAJB8KPDADYCKCACQgE3AjQgAkHCAa1CIIYgAkEkaq2ENwMQIAIgAkEQajYCMCABKAIAIAEoAgQgAkEoahCjByEADBULIAIgAEEEajYCJCACQQE2AiwgAkGIpMMANgIoIAJCATcCNCACQdABrUIghiACQSRqrYQ3AxAgAiACQRBqNgIwIAEoAgAgASgCBCACQShqEKMHIQAMFAsgAiAAQQRqNgIkIAJBAjYCLCACQaikwwA2AiggAkIBNwI0IAJBwgGtQiCGIAJBJGqthDcDECACIAJBEGo2AjAgASgCACABKAIEIAJBKGoQowchAAwTCyACIABBBGo2AiQgAkECNgIsIAJByKTDADYCKCACQgE3AjQgAkHPAa1CIIYgAkEkaq2ENwMQIAIgAkEQajYCMCABKAIAIAEoAgQgAkEoahCjByEADBILIAIgAEEEajYCJCACQQI2AiwgAkHwpMMANgIoIAJCATcCNCACQc8BrUIghiACQSRqrYQ3AxAgAiACQRBqNgIwIAEoAgAgASgCBCACQShqEKMHIQAMEQsgAiAAQQRqNgIkIAJBAjYCLCACQaClwwA2AiggAkIBNwI0IAJB0QGtQiCGIAJBJGqthDcDECACIAJBEGo2AjAgASgCACABKAIEIAJBKGoQowchAAwQCyACIABBCGo2AiQgAkECNgIsIAJBtKXDADYCKCACQgE3AjQgAkG9Aa1CIIYgAkEkaq2ENwMQIAIgAkEQajYCMCABKAIAIAEoAgQgAkEoahCjByEADA8LIAIgAEEIajYCJCACQQI2AiwgAkHYpcMANgIoIAJCATcCNCACQdIBrUIghiACQSRqrYQ3AxAgAiACQRBqNgIwIAEoAgAgASgCBCACQShqEKMHIQAMDgsgAUHopcMAQRYQpRchAAwNCyABQf6lwwBBGBClFyEADAwLIAIgAEEEajYCDCACIABBEGo2AiQgAkEDNgIsIAJByKbDADYCKCACQgI3AjQgAkHPAa1CIIYiBCACQSRqrYQ3AxggAiAEIAJBDGqthDcDECACIAJBEGo2AjAgASgCACABKAIEIAJBKGoQowchAAwLCyAA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LQBPIQELAkACQCADQcAAIAFB/wFxIgdrIghJDQACQCAHRQ0AAkAgCEUNACAEQRBqIAdqIAIgCPwKAAALIAQgBCkDcEIBfDcDcCAGIARBEGpBARBiIAMgCGshAyACIAhqIQILIANBP3EhAQJAIANBwABJDQAgBCAEKQNwIANBBnYiCK18NwNwIAYgAiAIEGILIAQgAToATyABRQ0BIARBEGogAiADQUBxaiAB/AoAAAwBCwJAIANFDQAgBEEQaiAHaiACIAP8CgAACyAEIAEgA2o6AE8LAkBB6ABFDQAgBEH4AGogBEEQakHoAPwKAAALIARB6AFqQgA3AwAgBEHwAWpCADcDACAEQfgBakIANwMAIARBgAJqQgA3AwAgBEGIAmpCADcDACAEQZACakIANwMAIARB4AFqQThqQgA3AwAgBEIANwPgASAEKQPYASESAkAgBC0AtwEiAUUNACAEQeABaiAEQfgAaiAB/AoAAAsgBEHgAWogAWpBgAE6AAAgAa0iE0I7hiASQgmGIhQgE0IDhoQiE0KA/gODQiiGhCATQoCA/AeDQhiGIBNCgICA+A+DQgiGhIQgEkIBhkKAgID4D4MgEkIPiEKAgPwHg4QgEkIfiEKA/gODIBRCOIiEhIQhEiAEQbgBaiEIAkACQCABQThzQQdLDQAgBEGgAmpBOGoiASAEQeABakE4aiIGKQMANwMAIARBoAJqQTBqIgcgBEHgAWpBMGoiBSkDADcDACAEQaACakEoaiIDIARB4AFqQShqIgIpAwA3AwAgBEGgAmpBIGoiCiAEQeABakEgaiILKQMANwMAIARBoAJqQRhqIgwgBEHgAWpBGGoiDSkDADcDACAEQaACakEQaiIOIARB4AFqQRBqIg8pAwA3AwAgBEGgAmpBCGoiECAEQeABakEIaiIRKQMANwMAIAQgBCkD4AE3A6ACIAggBEGgAmpBARBiIAVCADcDACACQgA3AwAgC0IANwMAIA1CADcDACAPQgA3AwAgEUIANwMAIAYgEjcDACAEQgA3A+ABIAEgEjcDACAHQgA3AwAgA0IANwMAIApCADcDACAMQgA3AwAgDkIANwMAIBBCADcDACAEQgA3A6ACIAggBEGgAmpBARBiDAELIARB4AFqQThqIBI3AwAgBEGgAmpBOGogEjcDACAEQaACakEwaiAEQeABakEw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aiICDQALCyAAKAKEDSIDRQ0AIAEgA0H4AGxBCBC+GAsCQCAAKALYHSIDRQ0AIAAoAtwdIANBBXRBARC+GAsCQCAAKALAHSIDQYCAgIB4ckGAgICAeEYNACAAKALEHSADQQV0QQEQvhgLC4MQAgx/AX4jAEHgA2siAiQAIAIgATYCJCACQShqIAJBJGoQlw8gAkHQAWogAigCLCACKAIwEJ4CIAJB1AFqIQECQAJAAkACQAJAAkACQAJAAkACQAJAIAIoAtABIgNBgICAgHhHDQAgAkHQA2pBCGogAUEIaigCADYCACACIAEpAgA3A9ADIAJBADYCyAMgAkKAgICAEDcCwAMgAkGY6MAANgLUAiACQqCAgIAONwLYAiACIAJBwANqNgLQAiACQdADaiACQdACahD4EQ0BIAJBsANqQQhqIAJBwANqQQhqKAIANgIAIAIgAikCwAM3A7ADAkAgAigC0AMiAUUNACACKALUAyABQQEQvhgLIAJBsAFqQQhqIAJBsANqQQhqKAIAIgE2AgAgAiACKQOwAyIONwOwASAAQQhqIAE2AgAgACAONwIADAgLIAJBwAFqQQhqIgQgAUEIaigCADYCACACIAEpAgA3A8ABAkBB7ABFDQAgAkE0akEQaiACQdABakEQakHsAPwKAAALIAJBsAFqQQhqIAQoAgAiATYCACACQcAAaiABNgIAIAIgAzYCNCACIAIpA8ABNwI4IAJB0AJqIAJBNGoQdAJAIAIoAtACQSdGDQACQEHQAEUNACACQdABaiACQdACakHQAPwKAAALIAJBADYC2AMgAkKAgICAEDcC0AMgAkGY6MAANgLEAyACQqCAgIAONwLIAyACIAJB0ANqNgLAAyACQdABaiACQcADahCxAg0CIAIpAtADIQ4gAigC2AMhASACQdABahDsBCAAIAE2AgggACAONwIADAcLIAIoAtQCIQUgAigC2AIhBiACKALcAiEDIAJBgICAgHg2AtADIAIgBiADQbACbGo2AsQDIAIgBjYCwAMgAiACQdADajYCyAMgAkEYaiACQcADahD7CgJAAkACQAJAAkACQCACKAIYQQFxRQ0AIAIoAhwhARCxGkEQQQQQ+xciB0UNCCAHIAE2AgBBASEBIAJBATYC2AIgAiAHNgLUAiACQQQ2AtACIAJB0AFqQQhqIAJBwANqQQhq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akEYaiAEQYADakEQaikDADcDACAEQRhqQSBqIARBgANqQRhqKQMANwMAIARBGGpBKGogBEGAA2pBIGopAwA3AwAgBEEYakEwaiAEQYADakEoaikDADcDACAEQdAAaiAEQYADakEwaigCADYCACAEIAc2AgAgBCAEKQO4AzcCBCAEIA03AxggBCAEKQOAAzcDICAEIAY2AmQgBCAINgJgIAQgDjcDWCAEIAk2AlQgBEHIAWogBSgCDCAFKAIQIARBGGogBCABQQEQoAUgBEHoAGpBGGoiASAEQcgBakEYaikDADcDACAEQegAakEQaiIIIARByAFqQRBqKQMANwMAIARB6ABqQQhqIgogBEHIAWpBCGopAwA3AwAgBCAEKQPIATcDaCAEKALsASELIAQpA/ABIQ0gBCgC+AEhByAEKAL8ASEJIAQpA4ACIQ8gBCgC6AEhBiAEQbgBakEIaiAEQZACaikDADcDACAEIAQpA4gCNwO4ASAEQZABakEIaiAEQbACaikDADcDACAEQZABakEQaiAEQbgCaikDADcDACAEQZABakEYaiAEQcACaikDADcDACAEQZABakEgaiAEQcgCaikDADcDACAEIAQpA6gCNwOQASAEIAQoANECNgKIASAEIARB1AJqKAAANgCLAUIAIRAgBkEDRg0CIAetIRFCACEQIAZBAkYNASANIRAgBkEBcQ0BIAspAwAhEAwBC0H0kMIAEPsZAAsgECARfiEQCyAEQdgCakEIaiAKKQMANwMAIARB2AJqQRBqIAgpAwA3AwAgBEHYAmpBGGogASkDADcDACAEIAQpA2g3A9gCIAQgDiAQfSIONwP4AiAEQdgCahC9CSEQAkBB0ABFDQAgBEHIAWogBEEYakHQAPwKAAALAkACQCACDQBBACEIQQAhCgwBC0EAIQogAiEBQQAhCAJAA0ACQCAGQQNGDQAgASAHSQ0CIAggB2ohCCABIAdrIQFBAyEGIAENAQwDCyAEQbgDaiAEQcgBaiAFKAIMIAUoAhAQwwgCQCAEKAK4AyIGQQNHDQAgASEKQQAhAUEARQ0DDAELIAQoAswDIQkgBCgCyAMhByAEKQPAAyENIAQoArwDIQsgAUUNAgwACwsgByABayEHIAggAWohCAsCQCACIAogCGpGDQBBtI/CAEEsQeCPwgAQzhMACwJAQdAARQ0AIAAgBEHIAWpB0AD8CgAACyAEQfgBaiIFIARBuAFqQQhqKQMANwMAIARB8AFqIgEgBCkDuAE3AwAgACAEKQOQATcDmAEgAEGgAWogBEGQAWpBCGopAwA3AwAgAEGoAWogBEGQAWpBEGopAwA3AwAgAEGwAWogBEGQAWpBGGopAwA3AwAgAEG4AWogBEGQAWpBIGopAwA3AwAgACAEKAKIATYAwQEgAEHEAWogBCgAiwE2AAAgBEHIAWpBIGogBEHYAmpBIGopAwAiETcDACAEQcgBakEYaiAEQdgCakEYaikDACISNwMAIARByAFqQRBqIARB2AJqQRBqKQMAIhM3AwAgBEHIAWpBCGogBEHYAmpBCGopAwAiFDcDACAAQYABaiAFKQMANwMAIABB+ABqIAEpAwA3AwAgAEHwAGogETcDACAAQegAaiASNwMAIABB4ABqIBM3AwAgAEHYAGogFDcDACAAIAQpA9gCIhE3A1AgBCARNwPIASAAIAM2AvABIABBADYCyAEgAEEAOgDAASAAIAw3A5ABIAAgDiAQfTcDiAEgACAPNwPoASAAIAY2AtABIAAgCzYC1AEgACANNwPYASAAIAc2AuABIAAgCTYC5AEgACAINgL0ASAAIAo2AvgBIARB0ANqJAAL/Q4CB38FfiMAQZACayIGJAACQAJAAkACQAJAAkACQAJAAkACQCABRQ0AA0AgAUF4aiEHIAFB3ABqIQggAS8BigEiCUECdCEKQX8hCwJAAkADQAJAIAoNACAJIQsMAgsgCCgCACEMIAtBAWohCyAHQQhqIQcgCkF8aiEKIAhBBGohCCAMQfcBcSIMQdcASSAMQdcAS2tB/wFxIgxBAUYNAAsgDEUNAQsgAkUNAiACQX9qIQIgASALQQJ0aigCjAEhAQwBCwsgB0EEaigCACIIIAcoAgAiC0kNAiAIIARLDQNBACEMIAggC2siCkEASA0EQQEhBwJAIAggC0YNABCxGkEBIQwgCkEBEPsXIgdFDQULAkAgCkUNACAHIAMgC2ogCvwKAAALIAYgCjYCyAEgBiAHNgLEASAGIAo2AsABIAZB4ABqIAZBwAFqIApCAEIAELcSIAYoAnwhCCAGQYCAgIB4NgLoAQJAAkAgCEUNACAGQYABakEYaiAGQeAAakEYaigCADYCACAGQYABakEQaiAGQeAAakEQaikDADcDACAGQYABakEIaiAGQeAAakEIaikDADcDACAGIAYpA2A3A4ABIAYgCDYCnAEgBkHAAWpBACAGQYABahCfBCAGKALoASIIQYCAgIB4Rg0AIAYoAtgBDQELELEaQRRBBBD7FyIIRQ0GIAhBADYCECAIQoCAgIAQNwIIIAhCgYCAgBA3AgAgBkGoAWpCADcDACAGQbABakIANwMAIAZBuAFqQQA2AgAgBiAINgK8ASAGQgA3A6ABIAZBwAFqQQAgBigC2AEgBigC6AFBgICAgHhGGyAGQaABahCfBCAGKALoASEICyAGQThqQSBqIgcgBkHAAWpBIGopAwA3AwAgBkE4akEYaiIMIAZBwAFqQRhqKQMANwMAIAZBOGpBEGoiASAGQcABakEQaikDADcDACAGQThqQQhqIgsgBkHAAWpBCGopAwA3AwAgBkEoakEIaiICIAZBwAFqQTRqKAIANgIAIAYgBikDwAE3AzggBiAGKQLsATcDKAJAIAhBgYCAgHhHDQAgBkEIaiALKAIAIgo2AgAgBiAGKQM4Ig03AwAgAEEIaiAKNgIAIAAgDTcDACAAIAg2AigMAgsgACAGKQMoNwIsIAZBIGogBykDACINNwMAIAZBGGogDCkDACIONwMAIAZBEGogASkDACIPNwMAIAZBCGogCykDACIQNwMAIABBNGogAigCADYCACAGIAYpAzgiETcDACAAQSBqIA03AwAgAEEYaiAONwMAIABBEGogDzcDACAAQQhqIBA3AwAgACARNwMAIABBADYCPCAAIAo2AjggACAINgIoDAELELEaAkACQCAFDQBBFEEEEPsXIgpFDQcgCkEANgIQIApCgICAgBA3AgggCkKBgICAEDcCACAGQcAAakIANwMAIAZByABqQgA3AwAgBkHQAGpBADYCACAGIAo2AlQgBkIANwM4DAELQSBBCBD7FyIKRQ0HIApBCDoAACAGQcABakEIakIANwMAIAZBwAFqQRBqQgA3AwAgBkHAAWpBGGpCADcDACAGQcABakEgakIANwMAIAZB6AFqQgA3AwAgBkHwAWpCADcDACAGIAo2AoACIAZCADcDwAEgBkEAOgCIAiAGQv////8fNwP4ASAGQQE2AoQCIAWtIg0QwxMhDiAGQQU6ADggBiANNwNAIAZBwAFqIAZBOGogBSAOp0EBahDoBiAGIAZBwAFqEM4DAkACQCAGKAIIIgoNABCxGkEUQQQQ+xciCkUNCiAKQQA2AhAgCkKAgICAEDcCCCAKQoGAgIAQNwIAIAZBwABqQgA3AwAgBkHIAGpCADcDACAGQdAAakEANgIAIAYgCjYCVCAGQgA3AzggBigCBCEHDAELIAZBOGpBCGogBigCBCIHIApBf2oiCEEFdGoiCkEIaikDADcDACAGQThqQRBqIApBEGopAwA3AwAgBkE4akEYaiAKQRhqKQMANwMAIAYgCDYCCCAGIAopAwA3AzggCEUNACAHQRxqIQoDQCAKKAIAIgsgCygCACILQX9qNgIAAkAgC0EBRw0AIAoQoBMLIApBIGohCiAIQX9qIggNAAsLIAYoAgAiCkUNACAHIApBBXRBCBC+GAsgBkGAgICAeDYC6AEgBkHAAWpBACAGQThqEJ8EIAYoAugBQYCAgIB4Rg0IIAYoAtgBRQ0IIAAgBikDwAE3AwAgAEEwaiAGQcABakEwaikDADcDACAAQShqIAZBwAFqQShqKQMANwMAIABBIGogBkHAAWpBIGopAwA3AwAgAEEYaiAGQcABakEYaikDADcDACAAQRBqIAZBwAFqQRBqKQMANwMAIABBCGogBkHAAWpBCGopAwA3AwAgAEEANgI8IAAgBTYCOAsgBkGQAmokAA8LIAsgCEGYysIAENkYAAsgCCAEQZjKwgAQ2BgACyAMIApBgJnCABDmFgALQQRBFBDYGQALQQRBFBDYGQALQQhBIBDYGQALQQRBFBDYGQALQef9wQBBI0GM/sEAEM4TAAuEDwIJfwR+IwBB8AFrIgQkACAEIAM2AgwgBEGQAWogASACELoBAkACQAJAAkAgBCgCkAEiAkErRg0AIARB+ABqIgEgBEGQAWpBJGooAgA2AgAgBEHYAGpBGGoiBSAEQZABakEcaikCADcDACAEQdgAakEQaiIGIARBkAFqQRRqKQIANwMAIARB2ABqQQhqIgcgBEGcAWopAgA3AwAgBEEwakEIaiIIIARBwQFqKQAANwMAIARBMGpBEGoiCSAEQZABakE5aikAADcDACAEQTBqQRhqIgogBEGQAWpBwQBqKQAANwMAIARBzwBqIgsgBEHYAWopAAA3AAAgBCAEKQKUATcDWCAEIAQpALkBNwMwIAQtALgBIQwgAEEsaiABKAIANgIAIABBJGogBSkDADcCACAAQRxqIAYpAwA3AgAgAEEUaiAHKQMANwIAIAAgBCkDWDcCDCAAIAQpAzA3ADEgAEE5aiAIKQMANwAAIABBwQBqIAkpAwA3AAAgAEHJAGogCikDADcAACAAQdAAaiALKQAANwAAIAAgDDoAMCAAIAI2AgggAEIANwMADAELIARB9ABqIARBkAFqQSBqIgUpAwAiDTcCACAEQewAaiAEQZABakEYaikDACIONwIAIARB5ABqIARBkAFqQRBqIgMpAwAiDzcCACAEIAQpA5gBIhA3AlwgBEEQakEYaiANNwMAIARBEGpBEGogDjcDACAEQRBqQQhqIA83AwAgBCAQNwMQIARBkAFqIARBDGpBDhD8ASAEQTBqQQhqIgIgAykDADcDACAEIAQpA5gBNwMwAkACQCAEKQOQASINQgVRDQAgACAEKQOoATcDGCAAQdAAaiAEQZABakHQAGopAwA3AwAgAEHIAGogBEGQAWpByABqKQMANwMAIABBwABqIARBkAFqQcAAaikDADcDACAAQThqIARBkAFqQThqKQMANwMAIABBMGogBEGQAWpBMGopAwA3AwAgAEEoaiAEQZABakEoaikDADcDACAAQSBqIAUpAwA3AwAgAEEQaiACKQMANwMAIAAgBCkDMDcDCCAAIA03AwAMAQsgBEGAAWpBCGogAikDADcDACAEIAQpAzA3A4ABIARBkAFqIAFBIGoiA0EAIAQQpQ0gAUGwDWoiBSAEQRBqIARBkAFqEIMBIQYgBCgCgAEhAiADEIgIAkACQAJAAkACQCABKAJoQYCAgIB4Rg0AIARBkAFqIAFB+ABqIgcgBSADIARBEGogBkGDgAggAkEDdHYQtQQCQCAEKAKQASIGQSdGDQAgACAEKQO4ATcDMCAEQdAAaiIDIARBkAFqQSRqKAIANgIAIARByABqIgEgBEGQAWpBHGopAgA3AwAgBEHAAGoiAiAEQZABakEUaikCADcDACAEQThqIgUgBEGcAWopAgA3AwAgAEE4aiAEQcABaikDADcDACAAQcAAaiAEQZABakE4aikDADcDACAAQcgAaiAEQZABakHAAGopAwA3AwAgAEHQAGogBEGQAWpByABqKQMANwMAIAQgBCkClAE3AzAgAEEsaiADKAIANgIAIABBJGogASkDADcCACAA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A0AgByADRg0BIAJBKGogCSADahDBAgJAQegARQ0AIAUgA2ogAkEoakHoAPwKAAALIANB6ABqIQMgCEF/aiIIDQALCyABKAIYIgutIhVCHH4iFqchA0EAIQcgFkIgiKcNAyADQfz///8HSw0DAkACQCADDQBBBCEMDAELIAEoAhQhCBCxGkEEIQcgA0EEEPsXIgxFDQQgC0UNACAIIAtBHGxqIQ0gAkEoakHAAGohByACQRxqIQ5BACEJA0AgCSEPIAgiECANRg0BIBAoAggiEa1C6AB+IhanIQRBACEIIBZCIIinDQYgBEH4////B0sNBgJAAkAgBA0AQQghEgwBCyAQKAIEIQMQsRpBCCEIIARBCBD7FyISRQ0HIBFFDQBBACEIIBEhEwNAIAQgCEYNASACQZABaiADEMcCIAJB0AFqIANBwABqEKgHIAdBGGogAkHQAWpBGGopAwA3AwAgB0EQaiACQdABakEQaikDADcDACAHQQhqIAJB0AFqQQhqKQMANwMAIAcgAikD0AE3AwAgAkEoakEIaiACQZABakEIaikDADcDACACQShqQRBqIAJBkAFqQRBqKQMANwMAIAJBKGpBGGogAkGQAWpBGGopAwA3AwAgAkEoakEgaiACQZABakEgaikDADcDACACQShqQShqIAJBkAFqQShqKQMANwMAIAJBKGpBMGogAkGQAWpBMGopAwA3AwAgAkEoakE4aiACQZABakE4aikDADcDACACIAIpA5ABNwMoIBIgCGohCSADLQBgIRQCQEHgAEUNACAJIAJBKGpB4AD8CgAACyAJQeAAaiAUOgAAIAhB6ABqIQggA0HoAGohAyATQX9qIhMNAAsLIBBBHGohCCAPQQFqIQkgAkEQakEIaiITIBE2AgAgAiASNgIUIAIgETYCECAOIBAoAhAgECgCFBCuBSAQKAIYIRQgDCAPQRxsaiIDQRBqIAJBEGpBEGopAgA3AgAgA0EIaiATKQIANwIAIAMgAikCEDcCACADIBQ2AhggC0F/aiILDQALCyAMrUIghiAVhCEWIAE1AhxCIIYgFYQhFSAKIQQMBwsgAkGQAWogARDiAiACQShqIAFBIGoQqAcgAkHYAWogAkEoakEQaikDADcDACACQdABakEQaiACQcAAaikDADcDACACIAIpAzA3A9ABIAIpAyghFyACKAKQ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IQkQsRpBCCEDIAdBCBD7FyILRQ0EIApFDQBBACEDIAohCANAIAcgA0YNASACQShqIAkgA2oQwAICQEHoAEUNACALIANqIAJBKGpB6AD8CgAACyADQegAaiEDIAhBf2oiCA0ACwsgASgCGCIMrUIcfiIXpyEDQQAhByAXQiCIpw0EIANB/P///wdLDQQCQAJAIAMNAEEEIQ0MAQsgASgCFCEIELEaQQQhByADQQQQ+xciDUUNBSAMRQ0AIAggDEEcbGohDiACQShqQcAAaiEHIAJBHGohD0EAIQkgDCEQA0AgCSERIAgiBSAORg0BIAUoAggiBq1C6AB+IhenIRJBACEIIBdCIIinDQcgEkH4////B0sNBwJAAkAgEg0AQQghBAwBCyAFKAIEIQMQsRpBCCEIIBJBCBD7FyIERQ0IIAZFDQBBACEIIAYhEwNAIBIgCEYNASACQZABaiADEMQCIAJB0AFqIANBwABqEKYHIAdBGGogAkHQAWpBGGopAwA3AwAgB0EQaiACQdABakEQaikDADcDACAHQQhqIAJB0AFqQQhqKQMANwMAIAcgAikD0AE3AwAgAkEoakEIaiACQZABakEIaikDADcDACACQShqQRBqIAJBkAFqQRBqKQMANwMAIAJBKGpBGGogAkGQAWpBGGopAwA3AwAgAkEoakEgaiACQZABakEgaikDADcDACACQShqQShqIAJBkAFqQShqKQMANwMAIAJBKGpBMGogAkGQAWpBMGopAwA3AwAgAkEoakE4aiACQZABakE4aikDADcDACACIAIpA5ABNwMoIAQgCGohCSADLQBgIRQCQEHgAEUNACAJIAJBKGpB4AD8CgAACyAJQeAAaiAUOgAAIAhB6ABqIQggA0HoAGohAyATQX9qIhMNAAsLIAVBHGohCCARQQFqIQkgAkEQakEIaiITIAY2AgAgAiAENgIUIAIgBjYCECAPIAUoAhAgBSgCFBCqBSAFKAIYIRQgDSARQRxsaiIDQRBqIAJBEGpBEGopAgA3AgAgA0EIaiATKQIANwIAIAMgAikCEDcCACADIBQ2AhggEEF/aiIQDQALCyABKAIcIQMLIAAgAzYCHCAAIAw2AhggACANNgIUIAAgDDYCECAAIAo2AgwgACALNgIIIAAgCjYCBCAAQQY2AgAMCAsgAkEoaiABEOECIAJBKGpB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IAxBGGopAAA3AwAgB0EIakEQaiAMQRBqKQAANwMAIAdBCGpBCGogDEEIaikAADcDACAHIAwpAAA3AwggDCAAa0EFdiENAkACQAJAAkACQCAFRQ0AIAUgDEEgEIQTQX9KDQELIAMgAUkNAUEAIQkgACEKIAIgAUEFdCIOaiIPIRAgDSERA0ACQCAKIAAgEUEFdGoiEk8NAANAIAIgEEFgaiIQIAogDEEgEIQTIhNBAEgbIAlBBXRqIgsgCikAADcAACALQRhqIApBGGopAAA3AAAgC0EQaiAKQRBqKQAANwAAIAtBCGogCkEIaikAADcAACATQR92IAlqIQkgCkEgaiIKIBJJDQALCwJAIBEgAUYNACAQQWBqIhAgCUEFdGoiCyAKKQAANwAAIAtBGGogCkEYaikAADcAACALQRBqIApBEGopAAA3AAAgC0EIaiAKQQhqKQAANwAAIApBIGohCiABIREMAQsLAkAgCUEFdCIRRQ0AIAAgAiAR/AoAAAsgASAJayEUAkAgASAJRg0AIBRBAXEhFSAAIBFqIRZBACETAkAgASAJQQFqRg0AIBRBfnEhEiAIIA5qIQtBACETIBYhCgNAIAogCykAADcAACAKQRhqIAtBGGopAAA3AAAgCkEQaiALQRBqKQAANwAAIApBCGogC0EIaikAADcAACAKQSBqIA8gE0H+//8/c0EFdGoiECkAADcAACAKQShqIBBBCGopAAA3AAAgCkEwaiAQQRBqKQAANwAAIApBOGogEEEYaikAADcAACALQUBqIQsgCkHAAGohCiASIBNBAmoiE0cNAAsLIBVFDQAgFiATQQV0aiIKIA8gE0F/c0EFdGoiCykAADcAACAKQRhqIAtBGGopAAA3AAAgCkEQaiALQRBqKQAANwAAIApBCGogC0EIaikAADcAAAsgCUUNACABIAlPDQIgB0EANgI4IAdBATYCLCAHQfzIwQA2AiggB0IENwIwIAdBKGpB1OnBABCiFQALIAMgAUkNAEEAIRAgACEKIAIgAUEFdCIFaiIRIQkDQAJAIAogACANQQV0aiISTw0AA0AgAiAJQWBqIgkgDCAKQSAQhBNBf0oiExsgEEEFdGoiCyAKKQAANwAAIAtBGGogCkEYaikAADcAACALQRBqIApBEGopAAA3AAAgC0EIaiAKQQhqKQAANwAAIBAgE2oh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IAsgCGogETcDACACIARBAWoiBDYCRCAIQQhqIQggCSAERw0ADAMLCyACIAIoAlQ2AjAgAiACKQJMNwMoQQohBAwECyACQQA2AkQgAkKAgICAgAE3AjwLIAJByABqIAFBwAZqEPcKAkACQAJAAkAgAigCSCIEQX1qDgIDAQALIARBAkcNAQsgASgCpAchCEEAIQQMBgsCQAJAIARBAXFFDQAgAikDUCERDAELIAIoAkwpAwAhEQsgASgCpAciCCARpyIETw0FIAJBADYCWCACQQE2AkwgAkH8yMEANgJIIAJCBDcCUCACQcgAakGg58IAEKIVAAsgAiACKAJUNgIwIAIgAikCTDcDKAtBCiEECyACKAI8IgVFDQAgAigCQCAFQQN0QQgQvhgLIANBgoCAgHhIDQAgA0UNACAHIANBARC+GAsCQCABKQMAQgJRDQAgASgC2AQiA0GDgICAeEgNACADRQ0AIAEoAtwEIANBARC+GAsgAUICNwMAIAJByABqQQhqIAJBKGpBCGooAgAiATYCACACIAIpAygiDTcDSCAAQRBqIAE2AgAgACANNwIIIAAgBDoABCAAQQI2AgAMAQsgASAIIARrNgKkByABIAEoAqAHIgggBGo2AqAHIAJByABqQQhqIgEgDj4CACACQQhqQQhqIgwgAkE8akEIaigCADYCACACIAIpAjwiETcDGCACIA03A0ggAiARNwMIIABBEGogASgCADYCACAAIA03AgggACAFNgJMIAAgBjYCSCAAIAc2AkQgACADNgJAIAAgBDYCPCAAIAg2AjggAEGAgICAeDYCNCAAIBA3AyAgACAPNwMYIAAgDkIgiD4CFCAAQQA2AgAgACACKQMINwIoIABBMGogDCgCADYCAAsgAkHgAGokAAuiDwIlfwJ+IwBBsBFrIgIkACABKAKoFCEDIAJBsAhqIAEQ3gUgAUG4FGohBAJAAkAgAikDsAhCAlENACABQcAUaiEFIAFB5BhqIQYgAkHwDGpBCGohByACQbAIakGEBGohCCACQfAMakGEBGohCSACQbAIakGwBGohCiACQfAMakGwBGohCyACQbAIakGsBGohDCACQfAMakGsBGohDSACQbAIakGABGohDiACQfAMakGABGohDyACQbAIakGkBGohECACQfAMakGkBGohESACQbAIakGgBGohEiAC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QdAAakEgaiAFQagBakEwaikDADcDACAFQdAAakEoaiAFQagBakE4aikDADcDACAFQdAAakEwaiAFQegBaikDADcDACAFQdAAakE4aiAFQfABaikDADcDACAFIAUpA7gBNwNQIAUgAykCADcD+AEgBUGQAWpBCGogASgCADYCACAFIAUpA/gBNwOQASAEQYCAgIB4ckGAgICAeEYNBCACIARBARC+GAwECyAFQShqQQhqIANBCGooAgA2AgAgBSADKQIANwMoIAVBAjoA+AEgBSAS/AY3A4ACIAVBqAFqIAFB+ABqIAggByAFQShqIAVBnAFqIAVB+AFqELMBIAUoAqgBIgZBJ0YNAiAFQZABakEIaiAFQbQBaigCADYCACAFQdAAakEIaiAFQagBakEYaikDADcDACAFQeAAaiAFQagBakEgaikDADcDACAFQdAAakEYaiAFQagBakEoaikDADcDACAFQdAAakEgaiAFQagBakEwaikDADcDACAFQdAAakEoaiAFQagBakE4aikDADcDACAFQdAAakEwaiAFQegBaikDADcDACAFQdAAakE4aiAFQfABaikDADcDACAFIAUpAqwBNwOQASAFIAUpA7gBNwNQDAMLQajGwAAQ2hgACyAAQgI3AwAgBEGAgICAeHJBgICAgHhGDQIgAiAEQQEQvhgMAgsgAEIENwMAAkAgBS8BECIAQQJGDQAgAEUNACAFKAIUIgBFDQAgBSgCGCAAQQEQvhgLIAUoAgQiAEGECEkNAiAAEK8RDAILIAAgBjYCCCAAQgM3AwAgACAFKQOQATcCDCAAIAUpA1A3AxggAEEUaiAFQZABakEIaigCADYCACAAQSBqIAVB0ABqQQhqKQMANwMAIABBKGogBUHgAGopAwA3AwAgAEEwaiAFQegAaikDADcDACAAQThqIAVB0ABqQSBqKQMANwMAIABBwABqIAVB0ABqQShqKQMANwMAIABByABqIAVB0ABqQTBqKQMANwMAIABB0ABqIAVB0ABqQThqKQMANwMACwJAIAUvARAiAEECRg0AIABFDQAgBSgCFCIARQ0AIAUoAhggAEEBEL4YCyAFKAIEIgBBhAhJDQAgABCvEQsgBUGwAmokAAuwDgIJfwR+IwBBkAJrIgUkACAFQbABaiABIAIQugECQAJAAkACQCAFKAKwASICQStG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IwBB8ARrIgQkAAJAAkACQCACDQAgACADEKcFDAELIARBgAJqQShqQgA3AwAgBEGAAmpBMGpCADcDACAEQYACakE4akEANgIAIARCADcDoAIgBEIANwOAAhCxGkEgQQgQ+xciBUUNASAFQQg6AAAgBEHAAmpBCGpCADcDACAEQcACakEQakIANwMAIARBwAJqQRhqQgA3AwAgBEHAAmpBIGpCADcDACAEQcACakEoakIANwMAIARBwAJqQTBqQgA3AwAgBEEBNgKEAyAEIAU2AoADIARCADcDwAIgBEEBOgCIAyAEQsCAgIAQNwP4AiAEQZADakEoakIANwMAIARBkANqQTBqQgA3AwAgBEGQA2pBOGpBADYCACAEQgA3A7ADIARCADcDkAMgBEGQBGogBEGAAmogASACEIACAkACQAJAAkAgBCgCkAQiBUEERg0AA0AgBUEDRg0CAkAgBCgCrAIgBCgCvANrQcAASQ0AIAEgAiAEQcACaiAEQZADaiAEQYACahDaBCAEQcACahC8DSAEQZADakE4aiAEQYACakE4aikDADcDACAEQZADakEwaiAEQYACakEwaikDADcDACAEQZADakEoaiAEQYACakEoaikDADcDACAEQZADakEgaiAEQYACakEgaikDADcDACAEQZADakEYaiAEQYACakEYaikDADcDACAEQZADakEQaiAEQYACakEQaikDADcDACAEQZADakEIaiAEQYACakEIaikDADcDACAEIAQpA4ACNwOQAwsgBEGQBGogBEGAAmogASACEIACIAQoApAEIgVBBEcNAAsLIARB2AFqQQhqIARBkARqQQRyIgVBCGooAgA2AgAgBCAFKQIANwPYASAEKAKAAyEDAkAgBCgChAMiAkUNACADIQUDQAJAIAUtAABBBkcNACAFQQRqKAIAIgFBgICAgHhGDQAgAUUNACAFQQhqKAIAIAFBARC+GAsgBUEgaiEFIAJBf2oiAg0ACwsgBCgC/AIiBUUNASADIAVBBXRBCBC+GAwBCyABIAIgBEHAAmogBEGQA2ogBEGAAmoQ2gQCQEHQAEUNACAEQZAEaiAEQcACakHQAPwKAAALIAQoAqgCIQUgBEHkBGogBEGQBGoQhQMgBCgC6AQgBCgC7AQQ0gcgBEHQA2ogBEHkBGoQ9QYgBEHAAWpBEGoiAkEANgIAIARB2AFqQQhqIgEgBEHQA2pBCGopAwA3AwAgBEHYAWpBEGoiBiAEQdADakEQaikDADcDACAEQdgBakEYaiIHIARB0ANqQRhqKQMANwMAIARB2AFqQSBqIgggBEHQA2pBIGopAwA3AwAgBCAFNgKIBCAEQcABakEIaiIJIARB0ANqQTRqKQIANwMAIARBADYCjAQgBCAEKQPQAzcD2AEgBCAEKQL8AzcDwAEgBCgC+AMiBUGBgICAeEcNAQsgBEHIAGpBCGogBEHYAWpBCGooAgAiBTYCACAEIAQpA9gBIgs3A0ggAEEIaiAFNgIAIAAgCzcDACAAQYGAgIB4NgIoDAELIARBmAFqQSBqIgogCCkDADcDACAEQZgBakEYaiAHKQMAIgs3AwAgBEGYAWpBEGogBikDACIMNwMAIARBmAFqQQhqIAEpAwAiDTcDACAEQQhqQTRqIAkpAwA3AgAgBEHEAGogAigCADYCACAEIAQpA9gBIg43A5gBIAQgBCkDwAE3AjQgBEHwAGpBGGoiAiALNwMAIARB8ABqQRBqIgEgDDcDACAEQfAAakEIaiIGIA03AwAgBEHwAGpBIGoiByAKKQMANwMAIAQgDjcDcCAEQcgAakEgaiIIIAcpAwA3AwAgBEHIAGpBGGoiByACKQMANwMAIARByABqQRBqIgIgASkDADcDACAEQcgAakEIaiIBIAYpAwA3AwAgBCAEKQNwNwNIIARBCGpBIGogCCkDADcDACAEQQhqQRhqIAcpAwA3AwAgBEEIakEQaiACKQMANwMAIARBCGpBCGogASkDADcDACAEIAQpA0g3AwggBCAFNgIwAkAgBCgCQCICIANGDQAgAEGBgICAeDYCKCAAIAM2AgggACACNgIEIABBg4CAgHg2AgAgBUGAgICAeEYNASAEQQhqEJQPDAELIAAgBCkDCDcDACAAQThqIARBCGpBOGopAwA3AwAgAEEwaiAEQQhqQTBqKQMANwMAIABBKGogBEEIakEoaikDADcDACAAQSBqIARBCGpBIGopAwA3AwAgAEEYaiAEQQhqQRhqKQMANwMAIABBEGogBEEIakEQaikDADcDACAAQQhqIARBCGpBCGopAwA3AwALIARB8ARqJAAPC0EIQSAQ2BkAC7oOAhR/AX4jAEGQEmsiAyQAIAEoAqQUIQQgASgC6BQhBUEAIQYgA0EANgIMIANCgICAgIABNwIEIANBEGogARDeBSABQagUaiEHIAIgBU8hCAJAAkAgAykDEEICUg0AQQghCUEAIQoMAQsgAUHQFGohCyABQdwUaiEMQQAhCkEAIQZBCCEJA0AgBCENAkACQAJAA0ACQEHABEUiBQ0AIANB0ARqIANBEGpBwAT8CgAACwJAIAMtAI8JQQVHDQAgA0EQahDnDiADQRBqIAEQ3gUgAykDEEICUg0BDAILCyADKAKICSEEIANB0ARqQQAgDCAMKAIAQYCAgIB4RhsQ8gEhDgJAAkACQAJAAkACQAJAAkAgAy0AjQkNAAJAIAMoAvAIQYGAgIB4Rw0AIAMoAvgIIQ8gAygC9AghECAIQQFxRQ0CIAEoAtgUIhENBAwICyADQRk2ApAJQdTHwQBBKyADQZAJakGwn8IAQazTwgAQ+BAACyACIBJqIhMgAiAKQQFxIhQbIQJBACEKIAMoAuQIIQ8gAygC4AghECATIAEoAugUTyAIIBQbQQFxDQELQQAhCCAORQ0HIAMtAI8JQQdGDQMgASAPNgLMFCABIBA2AsgUQQEhCiABQQE2AsQUIAEtAOwUQQFGDQJBASESDAMLQQAhCgJAIAEoAtgUIhENAEEAIQoCQCABKALEFEEBRg0ADAYLIAEoAswUIRMgASgCyBQhFCADKAKICSEKAkAgASgC0BQNACALQfzSwgAQig4LQQEhESABQQE2AtgUIAEoAtQUIgggCjYCFCAIIBM2AhAgCCAUNgIMQQAhCiAIQQA2AgALCyADQZAJaiADQdAEahDgCQJAAkACQAJAAkAgAygCoAlBhoCAgHhHDQAgEUEYbCEUIAMoAuAIQX9qIRUgASgC1BQhCEEAIRMgAygC5AghFgNAAkAgCCgCAEEBRw0AIAhBBGooAgAgFUcNACAIQQhqKAIAIBZGDQMLIAhBGGohCCATQQFqIRMgFEFoaiIUDQALCyADQZAJahCLECADQZAJaiADQdAEahDgCSADKAKgCUH/////B2oiCEEEIAhBBkkbQXxqDgIBAgYLIAEgEzYC2BQgA0GQCWoQixAMBgsgAy0AsAkNAQwECyADLQCQCQ0DCyADQZAJahCLECADKAKICUEBaiETIAMoAuQIIRQgAygC4AghFQJAIBEgCygCAEcNACALQYzTwgAQig4LIAEgEUEBajYC2BQgASgC1BQgEUEYbGoiCCATNgIUIAggDzYCECAIIBA2AgwgCCAUNgIIIAggFTYCBCAIQQE2AgAMAwsgAS0A7RQgAygC2AhBwbbCACADKALQCEGCgICAeEYiCBsgAygC3AhBAyAIGxCJCCESCwJAIAUNACADQZAJaiADQdAEakHABPwKAAALIAcgA0GQCWoQiQZBACEIDAQLIANBkAlqEIsQC0EBIQggDkUNAQJAIAMtAI8JQQdHDQACQCAFDQAgA0GQCWogA0HQBGpBwAT8CgAACwJAIAYgAygCBEcNACADQQRqQZzTwgAQjg4gAygCCCEJCwJAIAUNACAJIAZBwARsaiADQZAJakHABPwKAAALQQEhCCADIAZBAWoiBjYCDAwDCyABKALYFEUNASADQdAEahDnDkEBIQgLIA0hBAwDCyADQdAEahDnDgsgA0EQaiABEN4FIAMpAxBCAlINAAsLAkACQAJAAkACQCACIBJqIhMgASgC6BQiBU8gCCAKQQFxIhQbQQFxDQAgACAFNgIEIABBEzYCAAwBCyATIAIgFBshFAJAIAEoAtgUIghFDQAgASAIQX9qIgg2AtgUIAEoAtQUIAhBGGxqIhMoAgBBAkYNACATKAIUIQggEygCECEEIBMoAgwhCiAJIAZBwARsaiEFIAMoAgQhAiAJIQEgBkUNAyADQdANakEIaiETIAkhBgNAIAYiASkDACIXQgJRDQMgAyAXNwPQDQJAQbgERQ0AIBMgAUEIakG4BPwKAAALAkACQCADKAKIEiAISQ0AIANB0A1qEOcODAELIAcgA0HQDWoQiQYLIAFBwARqIgYgBUcNAAwDCwsCQCABKALEFA0AIAAgBTYCBCAAQRM2AgAMAQsgASkDyBQhFyAHENcGIQEgACAUNgIUIAAgBEEBajYCECAAIAE2AgwgACAXNwIEIABBJzYCAAsCQCAGRQ0AIAkhAQNAIAEQ5w4gAUHABGohASAGQX9qIgYNAAsLIAMoAgQiAUUNAiAJIAFBwARsQQgQvhgMAgsgAUHABGohAQsgBSABa0HABG4hBgJAIAUgAUYNAANAIAEQ5w4gAUHABGohASAGQX9qIgYNAAsLAkAgAkUNACAJIAJBwARsQQgQvhgLIAcQ1wYhASAAIBQ2AhQgACAINgIQIAAgATYCDCAAIAQ2AgggACAKNgIEIABBJzYCAAsgA0GQEmokAAvyDgEIfyMAQcAAayIBJAAgASAAEJ4NNgIMIAEgAEEMahCeDTYCECABIABBGGoQ6Aw2AhQgASAAQSRqEOgMNgIYIAEgAEHIAGoQnwY2AhxBgQghAgJAIAAoAjAiA0GAgICAeEYNACAAKAI0IAAoAjgQnAQhAgsgASACNgIgIAFBgghBgwggAC0AVRs2AiQgARC5GjYCKCABQZyQwQBBCxCSFzYCOCABQSxqIAFBKGogAUE4aiABQQxqEJATAkACQAJAAkACQAJAAkACQAJAAkACQCABLQAsQQFGDQACQCABKAI4IgJBhAhJDQAgAhCvEQsgAUGnkMEAQQ0Qkhc2AjggAUEsaiABQShqIAFBOGogAUEQahCQEyABLQAsQQFGDQECQCABKAI4IgJBhAhJDQAgAhCvEQsgAUG0kMEAQQoQkhc2AjggAUEsaiABQShqIAFBOGogAUEUahCQEyABLQAsQQFGDQICQCABKAI4IgJBhAhJDQAgAhCvEQsgAUG+kMEAQQkQkhc2AjggAUEsaiABQShqIAFBOGogAUEYahCQEyABLQAsQQFGDQMCQCABKAI4IgJBhAhJDQAgAhCvEQsgAUHHkMEAQQkQkhc2AjggAUEsaiABQShqIAFBOGogAUEgahCQEyABLQAsQQFGDQQCQCABKAI4IgJBhAhJDQAgAhCvEQsgAUHQkMEAQQoQkhc2AjggAUEsaiABQShqIAFBOGogAUEcahCQEyABLQAsQQFGDQUCQCABKAI4IgJBhAhJDQAgAhCvEQsgAUHakMEAQQgQkhc2AjQgAUGCCEGDCCAALQBUGzYCOCABQSxqIAFBKGogAUE0aiABQThqEJATIAEtACxBAUYNBgJAIAEoAjgiAkGECEkNACACEK8RCwJAIAEoAjQiAkGECEkNACACEK8RCyABQeKQwQBBDRCSFzYCOCABQSxqIAFBKGogAUE4aiABQSRqEJATIAEtACxBAUYNBwJAIAEoAjgiAkGECEkNACACEK8RCwJAIAAoAjwiBEGAgICAeEYNACAAKAJEIQUgACgCQCEGIAFB75DBAEEREJIXNgI0ELgaIQcCQCAFRQ0AIAYhAgNAQfOSwQAhCAJAAkACQCACLQAADgMCAAECC0H9ksEAIQgMAQtBrJTBACEICyAHIAhBChCSFyIIEN0YGgJAIAhBhAhJDQAgCBCvEQsgAkEBaiECIAVBf2oiBQ0ACwsgASAHNgI4IAFBLGogAUEoaiABQTRqIAFBOGoQkBMgAS0ALA0JAkAgASgCOCICQYQISQ0AIAIQrxELAkAgASgCNCICQYQISQ0AIAIQrxELIARFDQAgBiAEQQEQvhgLIAFBoJHBAEEIEJIXNgI0IAFBgghBgwggAC0AVhs2AjggAUEsaiABQShqIAFBNGogAUE4ahCQEyABLQAsDQkCQCABKAI4IgJBhAhJDQAgAhCvEQsCQCABKAI0IgJBhAhJDQAgAhCvEQsgAUGokcEAQQwQkhciAjYCNCABQYIIQYMIIAAtAFcbNgI4IAFBLGogAUEoaiABQTRqIAFBOGoQkBMgAS0ALEEBRg0KAkAgAkGECEkNACACEK8RCyABKAIoIQcCQCABKAIkIgJBhAhJDQAgAhCvEQsCQCABKAIgIgJBhAhJDQAgAhCvEQsCQCABKAIcIgJBhAhJDQAgAhCvEQsCQCABKAIYIgJBhAhJDQAgAhCvEQsCQCABKAIUIgJBhAhJDQAgAhCvEQsCQCABKAIQIgJBhAhJDQAgAhCvEQsCQCABKAIMIgJBhAhJDQAgAhCvEQsCQCADQYCAgIB4Rg0AIAAoAjQhBAJAIAAoAjgiCEUNACAEIQIDQAJAIAIoAgAiBUUNACACQQRqKAIAIAVBBXRBARC+GAsCQCACQQxqKAIAIgVFDQAgAkEQaigCACAFQQEQvhgLIAJBJGohAiAIQX9qIggNAAsLIANFDQAgBCADQSRsQQQQvhgLIAFBwABqJAAgBw8LIAEgASgCMDYCPEH8w8AAQSsgAUE8akGAkcEAQcSSwQAQ+BAACyABIAEoAjA2AjxB/MPAAEErIAFBPGpBgJHBAEG0ksEAEPgQAAsgASABKAIwNgI8QfzDwABBKyABQTxqQYCRwQBBpJLBABD4EAALIAEgASgCMDYCPEH8w8AAQSsgAUE8akGAkcEAQZSSwQAQ+BAACyABIAEoAjA2AjxB/MPAAEErIAFBPGpBgJHBAEGEksEAEPgQAAsgASABKAIwNgI8QfzDwABBKyABQTxqQYCRwQBB9JHBABD4EAALIAEgASgCMDYCPEH8w8AAQSsgAUE8akGAkcEAQeSRwQAQ+BAACyABIAEoAjA2AjxB/MPAAEErIAFBPGpBgJHBAEHUkcEAEPgQAAsgASABKAIwNgI8QfzDwABBKyABQTxqQYCRwQBBkJHBABD4EAALIAEgASgCMDYCPEH8w8AAQSsgAUE8akGAkcEAQcSRwQAQ+BAACyABIAEoAjA2AjxB/MPAAEErIAFBPGpBgJHBAEG0kcEAEPgQAAvXDQIrfwV+IwBB4AFrIgMkACACKAIIIgStQtAAfiIupyEFQQAhBgJAIC5CIIinDQAgBUH4////B0sNACACKAIEIQcgAigCACEIQQAhCQJAAkAgBQ0AQQghCkEAIQsMAQsQsRpBCCEGIAQhCyAFQQgQ+xciCkUNAQsCQAJAAkACQAJAAkACQAJAAkAgBEUNACAHIARBAnRqIQwgAUHAAWohDSABQYABaiEOIAFBwABqIQ8gASgChAMhECABKAKIAyERIAEoAtgCIRIgASgC1AIhEyABKAL4AiEUIAEoAvwCIRUgASgCoAMhFiABKAKcAyEXIAEoAvwBIRggASgC+AEhGSABKAK8ASEaIAEoArgBIRsgASgCPCEcIAEoAjghHSABKAKQAyEeIAEoApQDIR8gASgCfCEgIAEoAnghISABKALsAiEiIAEoAvACISMgA0GAAWohJCADQZgBaiElIANBkAFqISZBACEJIAchJwNAAkACQAJAICcoAgAiKCAjTw0AICIgKEECdCIpaigCACEqIANBKGogDyAoICEgKCAhSRsgKEEBaiICICEgAiAhSRsgIBDnAkIAIS8CQCADKALUASADKALYAU8NAAJAAkAgAygCkAEiBUEDRg0AIAMoAqABIgRFDQAgAyAEQX9qIgQ2AqABIAVBAkcNAQwCCyADQQhqIANBKGoQ2gggJkEQaiADQQhqQRBqKQMANwMAICZBCGogA0EIakEIaikDADcDACAmIAMpAwg3AwAgAygCkAEiBUEDRg0BIAMoAqABIgRFDQEgAyAEQX9qIgQ2AqABIAVBAkYNAQsgAykDaCAlIAMoApQBIAVBAXEbKQMAIAStfn0hLwsCQAJAICggH08NACAeIClqNQIAITAgA0EoaiABICggHSAoIB1JGyACIB0gAiAdSRsgHBDvAiADKALEASADKALIAU8NAQJAAkAgAygCgAEiBUEDRg0AIAMoApABRQ0AIAVBAkYNAyAFQQFxRQ0BDAULIANBCGogA0EoahCaByAkQRBqIANBCGpBEGopAwA3AwAgJEEIaiADQQhqQQhqKQMANwMAICQgAykDCDcDACADKAKAASIFQQNGDQIgAygCkAFFDQIgBUECRg0CIAVBAXENBAsgAygChAEpAwAhMQwECyAoIB9B0KnCABDjEQALQgAhMQwCCyAoICNBwKnCABDjEQALIAMpA4gBITELIANBKGogDiAoIBsgKCAbSRsgAiAbIAIgG0kbIBoQ/QIgA0EIaiADQShqEIUIAkAgAygCgAEiBUGDgICAeEgNACAFRQ0AIAMoAoQBIAVBARC+GAsgAygCCCErIAMpAgwhMiADQShqIA0gKCAZICggGUkbIAIgGSACIBlJGyAYEPICIANBCGogA0EoahClCSADKAIIIgJBA0YNAgJAAkACQCACQQJGDQAgAkEBcUUNASADKQMQIS4MAgtB8KnCABDaGAALIAMoAgwpAwAhLgsgLkIEiKciLCADKAIYIi1qIgIgLEkNAyACIBZLDQQgKCAVTw0FAkACQCAUIClqKAIAIgINAEEAIQRBCCEGQQAhAgwBCyACQX9qIgIgEk8NByATIAJBA3RqIgI1AgAhLiACKAIEIQUQsRpBIEEIEPsXIgZFDQggBiAuNwMAQQEhAiADQQE2AjAgAyAGNgIsQQQhBCADQQQ2AiggBUUNAEEBIQJBCCEEA0AgBUF/aiIFIBJPDQogEyAFQQN0aiIFNQIAIS4gBSgCBCEFAkAgAiADKAIoRw0AIANBKGogAkEBQQhBCBCHDCADKAIsIQYLIAYgBGogLjcDACADIAJBAWoiAjYCMCAEQQhqIQQgBQ0ACyADKAIsIQYgAygCKCEECyAoIBFPDQkgECApajUCACEuIAogCUHQAGxqIgUgAjYCSCAFIAY2AkQgBSAENgJAIAUgLDYCPCAFIBcgLWo2AjggBUGAgICAeDYCNCAFIDI3AiwgBUGBgICAeCArICtBgoCAgHhGGzYCKCAFICg2AiQgBSAqNgIgIAUgMCAxfUIBfDcDGCAFIC83AxAgBSAwNwMIIAUgLjcDACAJQQFqIQkgJ0EEaiInIAxHDQALCwJAIAhFDQAgByAIQQJ0QQQQvhgLIAAgCTYCCCAAIAo2AgQgACALNgIAIANB4AFqJAAPC0HgqcIAENoYAAsgLSACQYCqwgAQ2RgACyACIBZBgKrCABDYGAALICggFUHwq8IAEOMRAAsgAiASQYCswgAQ4xEAC0EIQSBBhMnBABDmFgALIAUgEkGArMIAEOMRAAsgKCARQZCqwgAQ4xEACyAGIAVByMjBABDmFgAL2A0CB38BfiMAQbAGayIFJAAgBUHwAWogASACEOwHIAUoAvgBIQYgBSgC9AEhAgJAAkACQAJAIAUoAvABIgdBJ0YNACAFQd4AaiAFQf8Bai0AADoAACAFQSBqIAVB8AFqQRhqKQMANwMAIAVBKGogBUHwAWpBIGopAwA3AwAgBUEYakEYaiAFQfABakEoaikDADcDACAFQRhqQSBqIAVB8AFqQTBqKQMANwMAIAVBGGpBKGogBUHwAWpBOGopAwA3AwAgBUEYakEwaiAFQbACaikDADcDACAFQRhqQThqIAVBuAJqKQMANwMAIAUgBS8A/QE7AVwgBSAFKQOAAjcDGCAGrUIghiACrYQhDCAFLQD8ASECDAELIAUgBjYC9AEgBSACNgLwAQJAIAINAEEAIQZBACEHDAILIAFB4ANqIAVB8AFqEPgLQf8BcSIHQQRHDQFCACEMQSIhBwsgACACOgAMIAAgDDcCBCAAIAc2AgAgACAFLwFcOwANIAAgBSkDGDcDECAAQQ9qIAVB3ABqQQJqLQAAOgAAIABBGGogBUEgaikDADcDACAAQSBqIAVBKGopAwA3AwAgAEEoaiAFQRhqQRhqKQMANwMAIABBMGogBUEYakEgaikDADcDACAAQThqIAVBGGpBKGopAwA3AwAgAEHAAGogBUEYakEwaikDADcDACAAQcgAaiAFQRhqQThqKQMANwMAAkAgBCgCACIAQYCAgIB4ckGAgICAeEYNACAEKAIEIABBAnRBBBC+GAsgAygCACIAQYCAgIB4Rg0BIABFDQEgAygCBCAAQQEQvhgMAQsgBSAHOgAQIAUgBq1CIIYgAq2ENwMIIAMoAgQhBgJAAkACQAJAAkAgAygCACIIQYCAgIB4Rw0AIAdBBnFBAkYNASAAIAc6AAQgAEEWNgIADAQLIAdBAUsNASAFQZwBaiABQeADaiIJIAVBCGogBiADKAIIQQAgBCAEKAIAIgFBgICAgHhGGxCVASAFKAKgASIKIAUoAqQBIgJBwARsaiEDQQMhByAFKAKcASELAkACQCACDQAgAyECDAELIANBwHtqIgIpAwAiDEICUQ0AAkBBuARFDQAgBUHwAWpBCGogA0HIe2pBuAT8CgAACyAFIAw3A/ABIAVBuAFqIAVB8AFqIAkQ1wkgBUHwAWoQ5w4gBUH4AGpBCGogBUG4AWpBCGopAwA3AwAgBUH4AGpBEGogBUG4AWpBEGopAwA3AwAgBUH4AGpBGGogBUG4AWpBGGopAwA3AwAgBUHgAGpBCGogBUHiAWopAQA3AwAgBUHuAGogBUHoAWopAQA3AQAgBSAFKQO4ATcDeCAFIAUpAdoBNwNgIAUvAdgBIQcLIAIgCmtBwARuIQMCQCACIApGDQAgCiECA0AgAhDnDiACQcAEaiECIANBf2oiAw0ACwsCQCALRQ0AIAogC0HABGxBCBC+GAsgCEUNAiAGIAhBARC+GAwCCyAFQZwBaiABQeADaiIKIAVBCGogBiAHQQJHQQAgBCAEKAIAIgFBgICAgHhGGxDdASAFKAKgASIGIAUoAqQBIgJBwARsaiEDQQMhByAFKAKcASEIAkACQCACDQAgAyECDAELIANBwHtqIgIpAwAiDEICUQ0AAkBBuARFDQAgBUHwAWpBCGogA0HIe2pBuAT8CgAACyAFIAw3A/ABIAVBuAFqIAVB8AFqIAoQ1wkgBUHwAWoQ5w4gBUH4AGpBCGogBUG4AWpBCGopAwA3AwAgBUH4AGpBEGogBUG4AWpBEGopAwA3AwAgBUH4AGpBGGogBUG4AWpBGGopAwA3AwAgBUHgAGpBCGogBUHiAWopAQA3AwAgBUHuAGogBUHoAWopAQA3AQAgBSAFKQO4ATcDeCAFIAUpAdoBNwNgIAUvAdgBIQcLIAIgBmtBwARuIQMCQCACIAZGDQAgBiECA0AgAhDnDiACQcAEaiECIANBf2oiAw0ACwsgCEUNASAGIAhBwARsQQgQvhgMAQsgACAHOgAEIABBFjYCACAIRQ0BIAYgCEEBEL4YDAELIAAgBSkDeDcDCCAAIAc7ASggACAFKQNgNwEqIABBJzYCACAAQSBqIAVB+ABqQRhqKQMANwMAIABBGGogBUH4AGpBEGopAwA3AwAgAEEQaiAFQfgAakEIaikDADcDACAAQTJqIAVB4ABqQQhqKQMANwEAIABBOGogBUHuAGopAQA3AQAgAUGAgICAeHJBgICAgHhGDQEgBCgCBCABQQJ0QQQQvhgMAQsgBCgCACIAQYCAgIB4ckGAgICAeEYNACAEKAIEIABBAnRBBBC+GAsgBUGwBmokAAuHDQIKfwR+IwBBMGsiAyQAIAAoAgAhBCAAQQA2AgAgACkDECENIAAoAgwhBSAAKAIIIQYgACgCBCEHIAIoAhAhCAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAQOBAABAgMAC0EBQQIgCEEBRhshASACKQMIIg1CIIinIQkgAigCBCEKIAIoAgAhBCANpyELIAghBwwOCyACKQMIIQ4gAigCBCEKIAIoAgAhBAJAAkAgBkECRg0AAkACQCAEQQJHDQBBASECIAZBAXFFDQEMDgsgDSEPAkAgBkEBcQ0AIAUpAwAhDwsgDiEQAkAgBEEBcQ0AIAopAwAhEAsgDyAQUQ0MQQEhAiAIQQFGDQIgBkEBcQ0NC0EAIQIMDAsgBEECRg0KQgEQwxMhDSADQQU6ABAgA0IBNwMYIAEgA0EQakEBIA2nQQFqEJQGDAwLELEaQRBBCBD7FyICRQ0CIAIgDTcDCCACIAU2AgQgAiAGNgIAQQMhAUEBIQcgCiEJIAQhC0EBIQogAiEEDA0LAkACQAJAIAIoAgAiBEECRg0AIAZBAkYNAiACQQhqIAIoAgQiCiAEQQFxGykDACEPIA0hDgJAIAZBAXENACAFKQMAIQ4LIA8gDlENAQwJCyAGQQJHDQggAigCBCEKC0EBQQIgByAIaiIHQQFGGyEBIAIpAwgiDUIgiKchCSANpyELDA0LIAetIg0QwxMhDiADQQU6ABAgAyANNwMYIAEgA0EQaiAHIA6nQQFqEJQGDAcLIAApAxghDyADIAU2AgggAyAGNgIEIAMgBzYCACANQiCIpyEKIAIpAwghDiACKAIEIQkgDachBCACKAIAIgtBAkcNAQwCC0EIQRAQ2BkACyAPIQ0CQCAEQQFxDQAgCikDACENCyAOIRACQCALQQFxDQAgCSkDACEQCyANIBBRDQEgCEEBRw0AAkAgByAFRw0AIANBrJ3CABDLDiADKAIAIQcgAygCBCEGCyAGIAVBBHRqIgIgDzcDCCACIAo2AgQgAiAENgIAIAVBAWohCkEDIQEgBiEEDAkLAkAgByAFRw0AIANBvJ3CABDLDiADKAIEIQYLIAYgBUEEdCIHaiICIA83AwggAiAKNgIEIAIgBDYCAAJAIAVBf0YNACAHQRBqIQcgBiECA0ACQAJAIAIoAgBBAUcNACACQQhqKQMAIQ1BASEEDAELIAJBBGooAgAhBUEAIQQLIAJBEGohAiADIA03AyAgAyAFNgIcIAMgBDYCGCADQQA6ABAgASADQRBqQQFBARCIBiAHQXBqIgcNAAsLQQFBAiAIQQFGGyEBIAMoAgAhByAIIQIMAQsCQCAFRQ0AIAVBBHQhBCAGIQIDQAJAAkAgAigCAEEBRw0AIAJBCGopAwAhDUEBIQUMAQsgAkEEaigCACEKQQAhBQsgAkEQaiECIAMgDTcDICADIAo2AhwgAyAFNgIYIANBADoAECABIANBEGpBAUEBEIgGIARBcGoiBA0ACwtBAkEBIAgbIQEgCEEBaiECCyAOQiCIpyEFIA6nIQwgBw0FIAIhByALIQQgCSEKIAwhCyAFIQkMBgsgAyANNwMIIAMgBTYCBCADIAY2AgBBASELAkAgB0EBRw0AAkAgBkEBcQ0AQQAhCwsgAyANNwMgIAMgBTYCHCADIAs2AhggA0EAOgAQIAEgA0EQakEBQQEQiAYMAQsgA0EIaiILIAUgBkEBcRsQxBMhBSAHrSINEN4TIQ4gA0EgaiALKQMANwMAIAMgAykDADcDGCADIA03AyggA0EEOgAQIAEgA0EQaiAHIAUgDqdqEJQGC0EBQQIgCEEBRhshASACKQMIIg1CIIinIQkgAigCBCEKIA2nIQsgCCEHDAQLAkAgCA0AIA5CIIinIQkgDqchC0EBIQEMBAsgCEEBaiEHIA5CIIinIQkgDqchC0ECIQEMAwsgAyANNwMgIAMgBTYCHCADIAI2AhggA0EAOgAQIAEgA0EQakEBQQEQiAYLQQFBAiAIQQFGGyEBIA5CIIinIQkgDqchCyAIIQcMAQsgBiAHQQR0QQgQvhgCQCAAKAIAQQNHDQAgACgCBCIHRQ0AIAAoAgggB0EEdEEIEL4YCyAJIQogCyEEIAUhCSAMIQsgAiEHCyAAIA43AxggACAKNgIMIAAgBDYCCCAAIAc2AgQgACABNgIAIAAgCa1CIIYgC62ENwMQIANBMGokACAIC7YOAhV/An4jAEHgAGsiAiQAIAIgATYCCCACQQxqIAJBCGoQlw8gAkEYaiACKAIQIgMgAigCFBDPAQJAAkACQAJAAkACQAJAAkACQCACKAIYQQFHDQAgAikDICEXIAIpAyghGCAAIAIpAzA3AxAgACAYNwMIIAAgFzcDAAJAIAIoAgwiAUUNACADIAFBARC+GAsgAigCCCIBQYMISw0BDAILIAItAE4hBCACLQBNIQUgAi0ATCEGIAIoAkghByACKAJEIQggAigCQCEJIAIoAjwhCiACKAI4IQsgAigCNCEMIAIoAighDSACKAIcIQ4gAigCMCEBIAIoAiwhDyACKAIgIhAgAigCJBDrDiERIA8gARDrDiESELgaIRMCQCAHRQ0AIAdBDGwhFCAIQQhqIQEDQCATIAFBfGooAgAgASgCABCIGiIVEN0YGgJAIBVBhAhJDQAgFRCvEQsgAUEMaiEBIBRBdGoiFA0ACwsgCyAKEJwEIQEgAhC5GjYCVCACQdmTwQBBBRCSFyIUNgJYIAIgETYCXCACQRhqIAJB1ABqIAJB2ABqIAJB3ABqEJATAkACQCACLQAYIhVBAUcNACACKAIcIRYMAQsgFEGECEkNACAUEK8RIAIoAlwhEQsCQCARQYQISQ0AIBEQrxELIBUNAiACQd6TwQBBBBCSFyIUNgJYIAIgEjYCXCACQRhqIAJB1ABqIAJB2ABqIAJB3ABqEJATAkACQCACLQAYIhVBAUcNACACKAIcIREMAQsgFEGECEkNACAUEK8RIAIoAlwhEgsCQCASQYQISQ0AIBIQrxELIBUNAyACQeKTwQBBBBCSFyIUNgJYIAIgATYCXCACQRhqIAJB1ABqIAJB2ABqIAJB3ABqEJATAkACQCACLQAYIhVBAUcNACACKAIcIREMAQsgFEGECEkNACAUEK8RIAIoAlwhAQsCQCABQYQISQ0AIAEQrxELIBUNBCACQYOUwQBBBxCSFyIVNgJYIAIgEzYCXCACQRhqIAJB1ABqIAJB2ABqIAJB3ABqEJATAkACQCACLQAYIgFBAUcNACACKAIcIRQMAQsgFUGECEkNACAVEK8RIAIoAlwhEwsCQCATQYQISQ0AIBMQrxELIAENBQJAAkAgBEEBcUUNAEGBlMEAQQIQkhchASACQfuTwQBBBBCSFyIUNgJYIAIgATYCXCACQRhqIAJB1ABqIAJB2ABqIAJB3ABqEJATAkACQCACLQAYIhVBAUcNACACKAIcIRMMAQsgFEGECEkNACAUEK8RIAIoAlwhAQsCQCABQYQISQ0AIAEQrxELIBVFDQEgAiATNgIcIAIgFDYCGEH8w8AAQSsgAkEYakGMj8EAQZy5wQAQ+BAAC0H/k8EAQQIQkhchASACQfuTwQBBBBCSFyIUNgJYIAIgATYCXCACQRhqIAJB1ABqIAJB2ABqIAJB3ABqEJATAkACQCACLQAYIhVBAUcNACACKAIcIRMMAQsgFEGECEkNACAUEK8RIAIoAlwhAQsCQCABQYQISQ0AIAEQrxELIBUNBwsCQCAGQQFxRQ0AIAUQuQohASACQeaTwQBBFRCSFyIUNgJYIAIgATYCXCACQRhqIAJB1ABqIAJB2ABqIAJB3ABqEJATAkACQCACLQAYIhVBAUcNACACKAIcIRMMAQsgFEGECEkNACAUEK8RIAIoAlwhAQsCQCABQYQISQ0AIAEQrxELIBUNCAsgACACKAJUNgIEIABBhoCAgHg2AgACQCAORQ0AIBAgDkEFdEEBEL4YCwJAIA1FDQAgDyANQQV0QQEQvhgLAkAgCkUNACALIQEDQAJAIAEoAgAiFUUNACABQQRqKAIAIBVBBXRBARC+GAsCQCABQQxqKAIAIhVFDQAgAUEQaigCACAVQQEQvhgLIAFBJGohASAKQX9qIgoNAAsLAkAgDEUNACALIAxBJGxBBBC+GAsCQCAHRQ0AIAghAQNAAkAgASgCACIVRQ0AIAFBBGooAgAgFUEBEL4YCyABQQxqIQEgB0F/aiIHDQALCwJAIAlFDQAgCCAJQQxsQQQQvhgLAkAgAigCDCIBRQ0AIAMgAUEBEL4YCyACKAIIIgFBgwhNDQELIAEQrxELIAJB4ABqJAAPCyACIBY2AhwgAiAUNgIYQfzDwABBKyACQRhqQYyPwQBB3LnBABD4EAALIAIgETYCHCACIBQ2AhhB/MPAAEErIAJBGGpBjI/BAEHMucEAEPgQAAsgAiARNgIcIAIgFDYCGEH8w8AAQSsgAkEYakGMj8EAQby5wQAQ+BAACyACIBQ2AhwgAiAVNgIYQfzDwABBKyACQRhqQYyPwQBBrLnBABD4EAALIAIgEzYCHCACIBQ2AhhB/MPAAEErIAJBGGpBjI/BAEH8uMEAEPgQAAsgAiATNgIcIAIgFDYCGEH8w8AAQSsgAkEYakGMj8EAQYy5wQAQ+BAAC4ENAgp/BH4jAEEwayIDJAAgACgCACEEIABBADYCACAAKQMQIQ0gACgCDCEFIAAoAgghBiAAKAIEIQcgAigCECEIAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgBA4EAAECAwALQQFBAiAIQQFGGyEBIAIpAwgiDUIgiKchCSACKAIEIQogAigCACEEIA2nIQsgCCEHDA4LIAIpAwghDiACKAIEIQogAigCACEEAkACQCAGQQJGDQACQAJAIARBAkcNAEEBIQIgBkEBcUUNAQwOCyANIQ8CQCAGQQFxDQAgBSkDACEPCyAOIRACQCAEQQFxDQAgCikDACEQCyAPIBBRDQxBASECIAhBAUYNAiAGQQFxDQ0LQQAhAgwMCyAEQQJGDQpCARDDEyENIANBBToAECADQgE3AxggASADQRBqQQEgDadBAWoQswYMDAsQsRpBEEEIEPsXIgJFDQIgAiANNwMIIAIgBTYCBCACIAY2AgBBAyEBQQEhByAKIQkgBCELQQEhCiACIQQMDQsCQAJAAkAgAigCACIEQQJGDQAgBkECRg0CIAJBCGogAigCBCIKIARBAXEbKQMAIQ8gDSEOAkAgBkEBcQ0AIAUpAwAhDgsgDyAOUQ0BDAkLIAZBAkcNCCACKAIEIQoLQQFBAiAHIAhqIgdBAUYbIQEgAikDCCINQiCIpyEJIA2nIQsMDQsgB60iDRDDEyEOIANBBToAECADIA03AxggASADQRBqIAcgDqdBAWoQswYMBwsgACkDGCEPIAMgBTYCDCADIAY2AgggAyAHNgIEIA1CIIinIQogAikDCCEOIAIoAgQhCSANpyEEIAIoAgAiC0ECRw0BDAILQQhBEBDYGQALIA8hDQJAIARBAXENACAKKQMAIQ0LIA4hEAJAIAtBAXENACAJKQMAIRALIA0gEFENASAIQQFHDQACQCAHIAVHDQAgA0EEakGsncIAEMsOIAMoAgQhByADKAIIIQYLIAYgBUEEdGoiAiAPNwMIIAIgCjYCBCACIAQ2AgAgBUEBaiEKQQMhASAGIQQMCQsCQCAHIAVHDQAgA0EEakG8ncIAEMsOIAMoAgghBgsgBiAFQQR0IgdqIgIgDzcDCCACIAo2AgQgAiAENgIAAkAgBUF/Rg0AIAdBEGohByAGIQIDQAJAAkAgAigCAEEBRw0AIAJBCGopAwAhDUEBIQQMAQsgAkEEaigCACEFQQAhBAsgAkEQaiECIAMgDTcDICADIAU2AhwgAyAENgIYIANBADoAECABIANBEGpBAUEBEOEGIAdBcGoiBw0ACwtBAUECIAhBAUYbIQEgAygCBCEHIAghAgwBCwJAIAVFDQAgBUEEdCEEIAYhAgNAAkACQCACKAIAQQFHDQAgAkEIaikDACENQQEhBQwBCyACQQRqKAIAIQpBACEFCyACQRBqIQIgAyANNwMgIAMgCjYCHCADIAU2AhggA0EAOgAQIAEgA0EQakEBQQEQ4QYgBEFwaiIEDQALC0ECQQEgCBshASAIQQFqIQILIA5CIIinIQUgDqchDCAHDQUgAiEHIAshBCAJIQogDCELIAUhCQwGC0EBIQsCQCAHQQFHDQACQCAGQQFxDQBBACELCyADIA03AyAgAyAFNgIcIAMgCzYCGCADQQA6ABAgASADQRBqQQFBARDhBgwBCyAHrSEOIA0hDwJAIAZBAXENACAFKQMAIQ8LIA8QwxMhDyAOEN4TIRAgAyANNwMgIAMgBTYCHCADIAY2AhggAyAONwMoIANBBDoAECABIANBEGogByAQpyAPp2oQswYLQQFBAiAIQQFGGyEBIAIpAwgiDUIgiKchCSACKAIEIQogDachCyAIIQcMBAsCQCAIDQAgDkIgiKchCSAOpyELQQEhAQwECyAIQQFqIQcgDkIgiKchCSAOpyELQQIhAQwDCyADIA03AyAgAyAFNgIcIAMgAjYCGCADQQA6ABAgASADQRBqQQFBARDhBgtBAUECIAhBAUYbIQEgDkIgiKchCSAOpyELIAghBwwBCyAGIAdBBHRBCBC+GAJAIAAoAgBBA0cNACAAKAIEIgdFDQAgACgCCCAHQQR0QQgQvhgLIAkhCiALIQQgBSEJIAwhCyACIQcLIAAgDjcDGCAAIAo2AgwgACAENgIIIAAgBzYCBCAAIAE2AgAgACAJrUIghiALrYQ3AxAgA0EwaiQAIAgL/g0CEX8CfiMAQSBrIgIkAAJAAkACQAJAAkACQCABKALAAiIDQQNGDQBBAiEEIANBAkcNAQwCCyABKALYAkEDRw0EQQAhAQwCC0EBIQQCQCADQQFxRQ0AIAEpA8gCIRMMAQsgASgCxAIhBUEAIQQLIAEoAtgCIgZBA0YNAiABKALkAiEHIAE1AuACQiCGIhQgFCABNQLcAoQgBkECRhsiFKchCAJAAkACQAJAIAEoAtACIgkgFEIgiKciCksgCSAKSWtB/wFxDgICAQALIAEgCDYC3AIgASAGNgLYAiABIAkgB2o2AuQCIAEgCiAJazYC4AICQAJAAkACQCABKAKcASIJIAEoAqABIgtPDQAgAUHcAGohDCACQQhqQQRyIQ0CQANAIAEoAlghCiABQQM2AlgCQAJAIApBA0YNACANIAwpAgA3AgAgDUEQaiAMQRBqKAIANgIAIA1BCGogDEEIaikCADcCACAJIQ4MAQsgAkEIaiABEJoHIAIoAggiCkEDRg0DIAEoAqABIQsgASgCnAEhDgsgAigCHCEPIAIpAxAhFCACKAIMIRAgAigCGCIRIA5qIgkgC0sNASABIAk2ApwBIBENBSAJIAtJDQALQQMhCkEAIREMAgsgESALIA5rIg5rIRFBAiEJAkAgCkECRg0AQQEhCSAKQQFxDQBBACEJCyABIAs2ApwBIAEgETYCaCABIBQ3A2AgASAQNgJcIAEgCTYCWCAODQILQQMhCgsMAQsgDiERCyABIA82AtQCIAEgETYC0AIgASAUNwPIAiABIBA2AsQCIAEgCjYCwAIMAgsgASATNwPIAiABIAU2AsQCIAEgBDYCwAIgASAHIApqNgLkAiABIAkgCms2AtACAkACQCABKAK4AiIJIAEoArwCIhFPDQAgAUGoAWohDQJAA0AgASgCqAIhCyABQQM2AqgCAkACQCALQQNGDQAgASkCrAIiFEIgiKchCiAUpyEMIAkhDgwBCyACQQhqIA0Q7gYgAigCCCILQQNGDQMgASgCvAIhESABKAK4AiEOIAIoAhAhCiACKAIMIQwLIAogDmoiCSARSw0BIAEgCTYCuAIgCg0DIAkgEUkNAAtBAyELQQAhCgwCCyABIBE2ArgCIAEgDDYCrAIgASALNgKoAiABIAogESAOayIJazYCsAIgCUUNACAJIQoMAQtBAyELCyABIAo2AuACIAEgDDYC3AIgASALNgLYAgwBCyABIAkgB2o2AuQCQQMhCwJAAkAgASgCnAEiCSABKAKgASIRSQ0AQQMhCgwBCyABQdwAaiENIAJBCGpBBHIhEAJAAkACQAJAA0AgASgCWCEKIAFBAzYCWAJAAkAgCkEDRg0AIBAgDSkCADcCACAQQRBqIA1BEGooAgA2AgAgEEEIaiANQQhqKQIANwIAIAkhDAwBCyACQQhqIAEQmgcgAigCCCIKQQNGDQMgASgCoAEhESABKAKcASEMCyACKAIcIRIgAikDECEUIAIoAgwhDyACKAIYIg4gDGoiCSARSw0BIAEgCTYCnAEgDg0FIAkgEUkNAAtBAyEKQQAhDgwCCyAOIBEgDGsiDGshDkECIQkCQCAKQQJGDQBBASEJIApBAXENAEEAIQkLIAEgETYCnAEgASAONgJoIAEgFDcDYCABIA82AlwgASAJNgJYIAwNAgtBAyEKCwwBCyAMIQ4LIAEgEjYC1AIgASAONgLQAiABIBQ3A8gCIAEgDzYCxAIgASAKNgLAAgJAIAEoArgCIgkgASgCvAIiEU8NACABQagBaiENAkACQAJAA0AgASgCqAIhCyABQQM2AqgCAkACQCALQQNGDQAgASkCrAIiFEIgiKchCiAUpyEMIAkhDgwBCyACQQhqIA0Q7gYgAigCCCILQQNGDQMgASgCvAIhESABKAK4AiEOIAIoAhAhCiACKAIMIQwLIAogDmoiCSARSw0BIAEgCTYCuAIgCg0EIAkgEUkNAAtBAyELQQAhCgwDCyABIBE2ArgCIAEgDDYCrAIgASALNgKoAiABIAogESAOayIJazYCsAIgCQ0BC0EDIQsMAQsgCSEKCyABIAo2AuACIAEgDDYC3AIgASALNgLYAgsgASgC5AIhAQJAAkACQCADQQJGDQACQCAEQQFxDQAgBSkDACETCyAGQQJHDQFBACEBDAMLQQAhCUEAIQogBkECRg0BCwJAAkAgBkEBcUUNACAIIQkMAQsgCCgCACEJCwJAIANBAkcNAEEAIQEMAgsgE0KAgICAEFoNAiATpyEKCyAAIAE2AhAgACAHNgIMIAAgCTYCCCAAIAo2AgRBASEBCyAAIAE2AgAgAkEgaiQADwtB1MfBAEErIAJBCGpB1OzBAEGghcMAEPgQAAsQ9hkAC+ENAhF/A34jAEGgAWsiAiQAELEaAkACQEHoAkEEEPsXIgNFDQAgA0EAOwHmAiADQQA2AuACIAJBCGpBCGogAUEIaikCADcDACACIAEpAgA3AwggAkEZaiEEQQIhBUEAIQZBACEHIAMhAQNAIAIoAgwhCCACKAIUIQkCQAJAIAVB/wFxQQJGDQAgAkGAAWpBGGogBEEYaikAADcDACACQYABakEQaiAEQRBqKQAANwMAIAJBgAFqQQhqIARBCGopAAA3AwAgAiAEKQAANwOAASAFQQFxDQEMBAsgCCAJRg0DIAJBgAFqQQhqIAhBCGopAAA3AwAgAkGAAWpBEGogCEEQaikAADcDACACQYABakEYaiAIQRhqKQAANwMAIAIgCEEgaiIKNgIMIAIgCCkAADcDgAEgCiEICyACQeAAakEYaiILIAJBgAFqQRhqKQMANwMAIAJB4ABqQRBqIgwgAkGAAWpBEGopAwA3AwAgAkHgAGpBCGoiDSACQYABakEIaikDADcDACACIAIpA4ABNwNgAkACQCAIIAlHDQBBACEFDAELIAQgCCkAADcAACAEQQhqIg4gCEEIaiIPKQAANwAAIARBEGoiECAIQRBqIhEpAAA3AAAgBEEYaiIFIAhBGGoiEikAADcAACACIAhBIGoiCjYCDAJAIAJB4ABqIARBIBCEE0UNAEEBIQUMAQsgDSAPKQAANwMAIAwgESkAADcDACALIBIpAAA3AwAgAiAIKQAANwNgAkACQCAKIAlHDQBBACEFDAELAkADQCAEIAoiCCkAADcAACAFIAhBGGopAAA3AAAgECAIQRBqKQAANwAAIA4gCEEIaikAADcAAAJAIAJB4ABqIARBIBCEE0UNAEEBIQUMAgsgDSAOKQAANwMAIAwgECkAADcDACALIAUpAAA3AwAgAiAEKQAANwNgIAhBIGoiCiAJRw0AC0EAIQULIAhBIGohCgsgAiAKNgIMCyACQcAAakEIaiIPIA0pAwA3AwAgAkHAAGpBEGoiDSAMKQMANwMAIAJBwABqQRhqIgwgCykDADcDACACIAU6ABggAiACKQNgNwNAAkACQAJAAkACQCABLwHmAiIIQQtJDQBBACEQAkADQAJAIAEoAuACIgENABCxGkGYA0EEEPsXIglFDQQgCSADNgLoAiAJQQA7AeYCIAlBADYC4AIgA0EAOwHkAiADIAk2AuACIAkhASAHQQFqIgchEAwCCyAQQQFqIRAgAS8B5gJBCksNAAsgAyEJCxCxGkHoAkEEEPsXIgpFDQIgCkEAOwHmAiAKQQA2AuACIBBBf2oiDkUNBANAELEaQZgDQQQQ+xciCEUNBCAIIAo2AugCIAhBADsB5gIgCEEANgLgAiAKQQA7AeQCIAogCDYC4AIgCCEKIA5Bf2oiDkUNBQwACwsgASAIQQFqOwHmAiAPKQMAIRMgDSkDACEUIAwpAwAhFSABIAhBBXRqIgggAikDQDcAACAIQRhqIBU3AAAgCEEQaiAUNwAAIAhBCGogEzcAACACLQAYIQUgBkEBaiEGDAQLQQRBmAMQ2BkAC0EEQegCENgZAAtBBEGYAxDYGQALAkAgAS8B5gIiCEELTw0AIAEgCEEBaiIOOwHmAiABIAhBBXRqIgggAikDQDcAACAIQRhqIAwpAwA3AAAgCEEQaiANKQMANwAAIAhBCGogDykDADcAACABIA5BAnRqIAo2AugCIAogDjsB5AIgCiABNgLgAgJAIBANACAJIQMgBkEBaiEGDAILAkACQCAQQQNxIgoNACAQIQgMAQsgECEIA0AgCEF/aiEIIAEgAS8B5gJBAnRqKALoAiEBIApBf2oiCg0ACwsCQCAQQQRPDQAgCSEDIAZBAWohBgwCCwNAIAEgAS8B5gJBAnRqKALoAiIBIAEvAeYCQQJ0aigC6AIiASABLwHmAkECdGooAugCIgEgAS8B5gJBAnRqKALoAiEBIAhBfGoiCA0ACyAJIQMgBkEBaiEGDAELC0HQ78EAQSBBwPDBABDOEwALQQRB6AIQ2BkACwJAIAIoAhAiAUUNACACKAIIIAFBBXRBARC+GAsCQCAHRQ0AIAMhASAHIQgDQAJAAkACQCABLwHmAiIKRQ0AIAIgCDYCDCACIAhBf2oiCDYCICACIAg2AhggAiAKQX9qIgo2AhAgAiABNgIIIAIgASAKQQJ0aiIKKALsAiIBNgIcIAIgCigC6AI2AhQgAS8B5gIiCkEFSQ0BDAILQYbvwQBBGUGg78EAEM4TAAsgAkEIakEFIAprQf//A3EQ1wULIAgNAAsLIAAgBjYCCCAAIAc2AgQgACADNgIAIAJBoAFqJAAL5A0CBn8BfiMAQZACayIIJAAgCEHAAWogAiAEEOwHIAgoAsgBIQkgCCgCxAEhBAJAAkACQAJAAkACQAJAAkAgCCgCwAEiCkEnRg0AIAhB1gBqIAhBzwFqLQAAOgAAIAhBGGogCEHAAWpBGGopAwA3AwAgCEEgaiAIQcABakEgaikDADcDACAIQRBqQRhqIAhBwAFqQShqKQMANwMAIAhBEGpBIGogCEHAAWpBMGopAwA3AwAgCEEQakEoaiAIQcABakE4aikDADcDACAIQRBqQTBqIAhBgAJqKQMANwMAIAhBEGpBOGogCEGIAmopAwA3AwAgCCAILwDNATsBVCAIIAgpA9ABNwMQIAmtQiCGIASthCEOIAgtAMwBIQQMAQsgCCAJNgLEASAIIAQ2AsABQQAhCwJAIAQNAEEAIQlBACEKDAILIAJB4ANqIAhBwAFqEPgLQf8BcSIKQQRHDQFCACEOQSIhCgsgACAEOgAMIAAgDjcCBCAAIAo2AgAgACAILwFUOwANIAAgCCkDEDcDECAAQQ9qIAhB1gBqLQAAOgAAIABBGGogCEEYaikDADcDACAAQSBqIAhBIGopAwA3AwAgAEEoaiAIQRBqQRhqKQMANwMAIABBMGogCEEQakEgaikDADcDACAAQThqIAhBEGpBKGopAwA3AwAgAEHAAGogCEEQakEwaikDADcDACAAQcgAaiAIQRBqQThqKQMANwMADAELIAggCjoACCAIIAmtQiCGIASthDcDAAJAAkACQAJAIAYoAgBBfGoiBEEDIARBA0kbDgQDAgABAwtBAiELDAELQQMhCwsCQAJAAkAgByAFKAIAQYCAgIB4RnEiBw0AIAhBADoAWCAIIAs6AFkgCEHAAWogASACIAMgCCAFIAhB2ABqELMBIAgoAsgBIQkgCCgCzAEhBCAIKALEASEKIAgoAsABIgxBJ0YNASAAIAgpA9ABNwMQIABByABqIAhBwAFqQcgAaikDADcDACAAQcAAaiAIQcABakHAAGopAwA3AwAgAEE4aiAIQcABakE4aikDADcDACAAQTBqIAhBwAFqQTBqKQMANwMAIABBKGogCEHAAWpBKGopAwA3AwAgAEEgaiAIQcABakEgaikDADcDACAAQRhqIAhBwAFqQRhqKQMANwMAIAAgBDYCDCAAIAk2AgggACAKNgIEIAAgDDYCAAwIC0EAIQQCQAJAAkAgCkF+ag4CAgEACyAAIAo6AAQgAEEWNgIADAULQQEhBAsgCEEWNgLAASAIIAo6AMQBIAhBwAFqEK0HIAUoAgQhCSAIQQA6AMABIAggCzoAwQEgCEHYAGogASACIAMgCCAEIAkgCEHAAWoQyAQgCCgCYCEEIAgoAlwhCSAIKAJYIgpBJ0YNAQJAQcQARQ0AIABBDGogCEHYAGpBDGpBxAD8CgAACyAAIAQ2AgggACAJNgIEIAAgCjYCAAwDCyAKQQFxRQ0DCyAIQoCAgIDAADcCWCAIQgA3AmAgCEHYAGpB+ILDABCnDyAIKAJcIAgoAmAgCCgCZCIMaiIKQQAgCCgCWCINIAogDUkba0EEdGoiCiAGNgIMIAogCzoACCAKIAQ2AgQgCiAJNgIAIAggAzYCtAEgCCAMQQFqNgJkIAggAjYCsAEgCCACKAKYBDYCvAEgCCABNgKsASAIIAEoAogMNgK4ASAIQcABaiAIQawBaiAIQdgAahCcAQJAIAgoAsABIgpBJ0YNAAJAQcwARQ0AIABBBGogCEHAAWpBBHJBzAD8CgAACyAAIAo2AgACQCAIKAJYIgBFDQAgCCgCXCAAQQR0QQQQvhgLIAdFDQYMAgsgCEGsAWoQ0AwCQAJAIAkgBHINAEECIQkMAQsgBCACKAKYDyIFTw0EIAmtIQ4CQCACKAKUDyAEQRRsaiIFLwEAIglFDQBBACEJIAVBDGooAgAiAkEASA0GIAVBCGooAgAhBQJAAkAgAg0AQQEhCgwBCxCxGkEBIQkgAkEBEPsXIgpFDQcLAkAgAkUNACAKIAUgAvwKAAALQQEhCSACIQYMAQsgBSgCECEBIAUoAQwhBiAFKAEIIQogBSgBBCECIAUvAQIhBQsgACAENgIkIAAgATYCICAAIAY2AhwgACAKNgIYIAAgAjYCFCAAIAU7ARIgACAJOwEQIAAgDjcDCCAAQSc2AgAgCCgCWCIARQ0FIAgoAlwgAEEEdEEEEL4YDAULIABBIjYCAAsgBSgCACIAQYCAgIB4Rg0DIABFDQMgBSgCBCAAQQEQvhgMAwtB0ILDAEEVQeiCwwAQtRIACyAEIAVBtNnCABDjEQALIAkgAkGAmcIAEOYWAAsgCEGQAmokAAucDQEHfyMAQSBrIgMkAAJAAkACQAJAIAAoAgQiBCAAKAIIIgVJDQACQAJAIAQgBWtBA0sNACAAIAQ2AgggA0EENgIUIANBDGogACADQRRqELMTIAQhBgwBCyAAIAVBBGoiBjYCCAJAIAAoAgAgBWoiBS0AAUEBdEHc9MUAai8BACAFLQAAQQF0Qdz4xQBqLwEAcsFBCHQgBS0AAkEBdEHc+MUAai4BAHIgBS0AA0EBdEHc9MUAai4BAHIiBUEASA0AIANBADsBDCADIAU7AQ4MAQsgA0EMNgIUIANBDGogACADQRRqELMTCwJAIAMvAQxBAUcNACADKAIQIQAMBAsgAy8BDiEFAkACQAJAAkACQAJAAkACQAJAAkACQCABRQ0AIAVBgHhxQf//A3FBgLgDRg0BCyAFQYDIAGpB//8DcUGA+ANPDQEgBSEHDAILIANBFDYCFCAAIANBFGoQ4hMhAAwMCyAAKAIAIQgDQAJAAkAgBiAETw0AIAggBmotAAAhBwwBCyADQQQ2AhQgA0EMaiAAIANBFGoQshMCQCADLQAMQQFxRQ0AIAMoAhAhAAwOCyADLQANIQcLIAdB/wFxQdwARw0FIAAgBkEBaiIHNgIIAkACQCAHIARPDQAgCCAHai0AACEHDAELIANBBDYCFCADQQxqIAAgA0EUahCyEyADLQAMQQFxDQwgAy0ADSEHCyAHQf8BcUH1AEcNBCAAIAZBAmoiBzYCCCAEIAdJDQoCQAJAIAQgB2tBA0sNACAAIAQ2AgggA0EENgIUIANBDGogACADQRRqELMTIAQhBgwBCyAAIAZBBmoiBjYCCAJAIAggB2oiBy0AAUEBdEHc9MUAai8BACAHLQAAQQF0Qdz4xQBqLwEAcsFBCHQgBy0AAkEBdEHc+MUAai4BAHIgBy0AA0EBdEHc9MUAai4BAHIiB0EASA0AIANBADsBDCADIAc7AQ4MAQsgA0EMNgIUIANBDGogACADQRRqELMTCwJAIAMvAQxFDQAgAygCECEADA0LIAMvAQ4iB0GAwABqQf//A3FB//cDSw0CIAENAwJAIAIoAgAgAigCCCIJa0EDSw0AIAIgCUEEQQFBARCPDCACKAIIIQkLIAIgCUEDajYCCCACKAIEIAlqIglB7QE6AAAgCUECaiAFQT9xQYABcjoAACAJIAVBBnZBL3FBgAFyOgABIAchBSAHQYDIAGpB//8DcUGA+ANPDQALCyAHQf//A3FBgAFJDQYCQCACKAIAIAIoAggiBmtBA0sNACACIAZBBEEBQQEQjwwgAigCCCEGCyACKAIEIAZqIQAgB0H//wNxQYAQTw0EIAdBBnZBQHIhBUECIQQMBQsgBUGA0ABqQf//A3FBCnQgB0GAyABqQf//A3FyIgRBgIAEaiEGAkAgAigCACACKAIIIgBrQQNLDQAgAiAAQQRBAUEBEI8MIAIoAgghAAsgAiAAQQRqNgIIIAIoAgQgAGoiACAGQRJ2QfABcjoAACAAQQNqIAdBP3FBgAFyOgAAIAAgBEEGdkE/cUGAAXI6AAIgACAGQQx2QT9xQYABcjoAAUEAIQAMCQsgA0EUNgIUIAAgA0EUahDiEyEADAgLAkAgAQ0AAkAgAigCACACKAIIIgZrQQNLDQAgAiAGQQRBAUEBEI8MIAIoAgghBgsgAiAGQQNqNgIIIAIoAgQgBmoiBkHtAToAACAGQQJqIAVBP3FBgAFyOgAAIAYgBUEGdkEvcUGAAXI6AAEgAEEAIAIQtAchAAwICyAAIAZBAmo2AgggA0EXNgIUIAAgA0EUahDiEyEADAcLAkAgAQ0AAkAgAigCACACKAIIIgBrQQNLDQAgAiAAQQRBAUEBEI8MIAIoAgghAAsgAiAAQQNqNgIIIAIoAgQgAGoiAEHtAToAACAAQQJqIAVBP3FBgAFyOgAAIAAgBUEGdkEvcUGAAXI6AAFBACEADAcLIAAgBkEBajYCCCADQRc2AhQgACADQRRqEOITIQAMBgsgACAHQQZ2QT9xQYABcjoAASAHQYDgA3FBDHZBYHIhBUEDIQQLIAAgBToAACACIAQgBmo2AgggACAEakF/aiAHQT9xQYABcjoAAEEAIQAMBAsCQCACKAIIIgAgAigCAEcNACACQcz0xQAQzA8LIAIoAgQgAGogBzoAACACIABBAWo2AghBACEADAMLIAUgBEG888UAENcYAAsgByAEQbzzxQAQ1xgACyADKAIQIQALIANBIGokACAAC+sLAhJ/An4jAEHQAmsiBiQAAkAgAUECSQ0AIAGtIhhC//////////8/fCAYgCEYAkACQCABQYEgSQ0AIAEQ5hUhBwwBCyABIAFBAXZrIghBwAAgCEHAAEkbIQcLIABBeGohCSAAQRRqIQpBASEIQQAhC0EAIQwDQEEBIQ1BACEOAkAgASALTQ0AIAAgC0EDdCIOaiEPAkACQCABIAtrIhAgB0kNAAJAAkAgEEECTw0AIBAhEQwBCwJAAkACQAJAAkACQAJAIA9BDGooAgAiEiAPQQRqKAIASSAPKAIIIhMgDygCACIRSSATIBFGGyIUDQAgEEECRg0EIAogDmohFUECIREDQCAVKAIAIg0gEkkgFUF8aigCACIWIBNJIBYgE0YbDQMgFUEIaiEVIA0hEiAWIRMgECARQQFqIhFHDQAMAgsLIBBBAkYNAiAKIA5qIRVBAiERA0AgFSgCACINIBJJIBVBfGooAgAiFiATSSAWIBNGG0EBRw0CIBVBCGohFSANIRIgFiETIBAgEUEBaiIRRw0ACwsgECERCyARIAdJDQUgFEUNBCARQQJPDQJBASERDAQLQQIhEUEBIRIgB0ECSw0EDAILQQIhESAHQQJLDQMMAgsgEUEBdiESCyASQQFxIRcgDyARQQN0IhBqIQ1BACETAkAgEkEBRg0AIBJB/v///wdxIRQgACAQaiEQQQAhEyAAIRIDQCAQIA5qQXhqIhYpAgAhGSAWIBIgDmoiFSkCADcCACAVIBk3AgAgFUEIaiIVKQIAIRkgFSANIBNB/v///wFzQQN0aiIWKQIANwIAIBYgGTcCACAQQXBqIRAgEkEQaiESIBQgE0ECaiITRw0ACwsgF0UNACAPIBNBA3RqIhApAgAhGSAQIA0gE0F/c0EDdGoiEykCADcCACATIBk3AgALIBFBAXRBAXIhDQwBCwJAIAQNACAQIAcgECAHSRtBAXQhDQwBCyAPIBBBICAQQSBJGyITIAIgA0EAQQAgBRChASATQQF0QQFyIQ0LIA1BAXYgC2qtIAutIhl8IBh+IAsgCEEBdmutIBl8IBh+hXmnIQ4LAkACQCAMQQJJDQAgCSALQQN0IhNqIRcgACATaiEPA0AgBkGOAmogDEF/aiIVai0AACAOSQ0BAkACQAJAAkACQAJAIAZBBGogFUECdGooAgAiDEEBdiIQIAhBAXYiEWoiFiADSw0AIAwgCHJBAXFFDQELIAAgCyAWa0EDdGohEwJAIAxBAXENACATIBAgAiADIBBBAXJnQQF0QT5zQQAgBRChAQsCQCAIQQFxDQAgEyAQQQN0aiARIAIgAyARQQFyZ0EBdEE+c0EAIAUQoQELIAhBAkkNAyAMQQJJDQMgAyARIBAgESAQSSIMGyISSQ0DIBMgEEEDdGohCAJAIBJBA3QiFEUNACACIAggEyAMGyAU/AoAAAsgAiAUaiEMAkAgESAQTw0AIBchEANAIBAgCEF4aiIRIAxBeGoiEiAMQXxqKAIAIAhBfGooAgBJIBIoAgAiCCARKAIAIgxJIAggDEYbIggbKQIANwIAIBIgCEEDdGohDCARIAhBAXNBA3RqIgggE0YNAyAQQXhqIRAgDCACRw0ADAMLCwJAIBINACACIRAMAwsgAiEQA0AgEyAIIBAgCEEEaigCACAQQQRqKAIASSAIKAIAIhEgECgCACISSSARIBJGGyIRGykCADcCACATQQhqIRMgECARQQFzQQN0aiIQIAxGDQMgCCARQQN0aiIIIA9HDQAMAwsLIBZBAXQhCAwDCyAIIRMgAiEQCyAMIBBrIghFDQAgEyAQIAj8CgAACyAWQQF0QQFyIQgLQQEhEyAVIQwgFUEBSw0ADAILCyAMIRMLIAZBjgJqIBNqIA46AAAgBkEEaiATQQJ0aiAINgIAAkAgASALTQ0AIBNBAWohDCANQQF2IAtqIQsgDSEIDAELCyAIQQFxDQAgACABIAIgAyABQQFyZ0EBdEE+c0EAIAUQoQELIAZB0AJqJAAL9w0CFH8GfiMAQdACayICJAAgACgCxAEhAyAAKALAASEEAkBB0ABFIgUNACACIABB0ABqQdAA/AoAAAsgAEEHNgJQAkAgBQ0AIAJB0ABqIABB0AD8CgAACyAAQQc2AgAgACgCyAEhBSAAQYKAgIB4NgLIAQJAAkACQAJAAkACQAJAAkACQAJAIAVB/////wdqQQJJDQAgACgC0AEhBiAAKALMASEHIAIoAkQhCCACKAJAIQkgAikDGCEWIAIpAxAhFyACLQAIIQogAigCACELIAItAJoBIQwgAi0AmQEhDSACLQCYASEOIAIoApQBIQ8gAigCkAEhECACKQNoIRggAikDYCEZIAItAFghESACKAJQIRICQEHQAEUiAA0AIAJBoAFqIAJB0ABqQdAA/AoAAAsgAkGgAWpB0ABqIRMCQCAADQAgEyACQdAA/AoAAAsgAigC8AEhFAJAAkACQAJAAkACQAJAAkAgAigCoAFBB0YNACAUQQdGDQEgAigCtAIiDyACKALkASIQSyACKAKwAiIMIAIoAuABIgBLIAwgAEYiFRsNBiAPIBBJIAwgAEkgFRsNBSAMIABHDQcgECAPRw0HQgAhGkIAIRsgC0EERw0EQgAhGyAKQWRqDgUDAwQCAwQLIBRBB0YND0EAIQAgBkEASA0IIAItALkCIQ0gAigCtAIhDiACKAKwAiEPAkACQCAGDQBBASEMDAELELEaQQEhACAGQQEQ+xciDEUNCQsCQCAGRQ0AIAwgByAG/AoAAAsCQCABKAJEIhMgASgCPEcNACABQTxqQZTewgAQjw4LIAEoAkAgE0HgAGxqIgAgFDYCCCAAIAM2AgQgACAENgIAIAAgAikCBDcCDCAAQRRqIAJBDGopAgA3AgAgAEEcaiACQRRqKQIANwIAIABBJGogAkEcaikCADcCACAAQSxqIAJBJGopAgA3AgAgAEE0aiACQSxqKQIANwIAIABBPGogAkE0aikCADcCACAAQcQAaiACQTxqKAIANgIAIAAgDToAXCAAIAY2AlggACAMNgJUIAAgBjYCUCAAIA42AkwgACAPNgJIIAEgE0EBajYCRAwPCyAMQQFxDQgCQCAOQQFxRQ0AQQAhACAGQQBIDQoCQAJAIAYNAEEBIRQMAQsQsRpBASEAIAZBARD7FyIURQ0LCwJAIAZFDQAgFCAHIAb8CgAACwJAIAEoAkQiACABKAI8Rw0AIAFBPGpBxN3CABCPDgsgASAAQQFqNgJEIAEoAkAgAEHgAGxqIgAgBjYCFCAAIBQ2AhAgACAGNgIMIABBCTYCCCAAIAM2AgQgACAENgIACyACQdAAahDmDgwOCyAWIRsMAQsgFyEbCwJAIBJBBEcNAAJAAkAgEUFkag4FAQECAAECCyAYIRoMAQsgGSEaCyAbIBpRDQogASAEIAMgByAGIBsgGn0gCSAIEIwPDAoLAkAgDUEBcQ0AQQAhFCAGQQBIDQcCQAJAIAYNAEEBIQAMAQsQsRpBASEUIAZBARD7FyIARQ0ICwJAIAZFDQAgACAHIAb8CgAACyACIAY2AswCIAIgADYCyAIgAiAGNgLEAiABIAQgAyACQcQCahCMDCAGRQ0AIAAgBkEBEL4YCyACEOYOIAJB0ABqEOYODAoLIAItALkCRQ0GQQEhECANQQFxDQYMBwsgAkGgAWoQ5g4gExDmDgwICwJAIAIoAlBBB0YNACACQdAAahDmDgsgAigCAEEHRg0IIAIQ5g4MCAsgACAGQYCZwgAQ5hYACyABIAQgAyAHIAYgAkHQAGogECAPIA1BAXFBARD4CgwFCyAAIAZBgJnCABDmFgALIBQgBkGAmcIAEOYWAAsgDkEBcyEQC0EAIQACQCAGQQBIDQACQAJAIAYNAEEBIQ0MAQsQsRpBASEAIAZBARD7FyINRQ0BCwJAIAZFDQAgDSAHIAb8CgAACwJAIAEoAkQiEyABKAI8Rw0AIAFBPGpBlN7CABCPDgsgASgCQCATQeAAbGoiACAUNgIIIAAgAzYCBCAAIAQ2AgAgACACKQIENwIMIABBFGogAkEMaikCADcCACAAQRxqIAJBFGopAgA3AgAgAEEkaiACQRxqKQIANwIAIABBLGogAkEkaikCADcCACAAQTRqIAJBLGopAgA3AgAgAEE8aiACQTRqKQIANwIAIABBxABqIAJBPGooAgA2AgAgACAQQQFxOgBcIAAgBjYCWCAAIA02AlQgACAGNgJQIAAgDzYCTCAAIAw2AkggASATQQFqNgJEIAJB0ABqEOYODAILIAAgBkGAmcIAEOYWAAsgAhDmDiACQdAAahDmDgsgBUGAgICAeHJBgICAgHhGDQAgByAFQQEQvhgLIAJB0AJqJAALgA0CDH8CfiMAQSBrIgIkACABKAIEIQMCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABKAIAIgQOBAABAgMAC0GAgICAeCEFIANBgICAgHhHDQMMEwtBgICAgHghBSADQYCAgIB4Rg0SIAEoAgwiBkEBdCEDQQAhByAGQQBIDQsgA0H+////B0sNCyABKAIIIQggAw0DQQIhCUEAIQUMBAtBgICAgHghBSADQYCAgIB4Rg0RIAEoAgwiBkECdCEDQQAhByAGQf////8DSw0MIANB/P///wdLDQwgASgCCCEIIAMNBEEEIQlBACEFDAULQYCAgIB4IQUgA0GAgICAeEYNECABKAIMIgWtIg5CDH4iD6chCkEAIQMgD0IgiKcNDSAKQfz///8HSw0NIAoNBUEEIQsMBgtBACEDIAEoAgwiBUEASA0GIAEoAgghBwJAAkAgBQ0AQQEhBgwBCxCxGkEBIQMgBUEBEPsXIgZFDQcLAkAgBUUNACAGIAcgBfwKAAALIAEoAhgiCK1CHH4iD6chDEEAIQcgD0IgiKcNByAMQfz///8HSw0HAkACQCAMDQBBBCEDDAELIAEoAhQhCxCxGkEEIQcgDEEEEPsXIgNFDQggCEUNAEEAIQcgCCENA0AgDCAHRg0BIAJBBGogCyAHahDhCSADIAdqIgpBGGogAkEEakEYaigCADYCACAKQRBqIAJBBGpBEGopAgA3AgAgCkEIaiACQQRqQQhqKQIANwIAIAogAikCBDcCACAHQRxqIQcgDUF/aiINDQALCyAFrUIghiAGrYQhDwwOCxCxGkECIQcgBiEFIANBAhD7FyIJRQ0HCwJAIANFDQAgCSAIIAP8CgAACyABKAIYIgitQhx+Ig+nIQxBACEHIA9CIIinDQcgDEH8////B0sNBwJAAkAgDA0AQQQhAwwBCyABKAIUIQsQsRpBBCEHIAxBBBD7FyIDRQ0IIAhFDQBBACEHIAghDQNAIAwgB0YNASACQQRqIAsgB2oQrwkgAyAHaiIKQRhqIAJBBGpBGGooAgA2AgAgCkEQaiACQQRqQRBqKQIANwIAIApBCGogAkEEakEIaikCADcCACAKIAIpAgQ3AgAgB0EcaiEHIA1Bf2oiDQ0ACwsgBq1CIIYgCa2EIQ8MDAsQsRpBBCEHIAYhBSADQQQQ+xciCUUNBwsCQCADRQ0AIAkgCCAD/AoAAAsgASgCGCIIrUIcfiIPpyEMQQAhByAPQiCIpw0HIAxB/P///wdLDQcCQAJAIAwNAEEEIQMMAQsgASgCFCELELEaQQQhByAMQQQQ+xciA0UNCCAIRQ0AQQAhByAIIQ0DQCAMIAdGDQEgAkEEaiALIAdqELAJIAMgB2oiCkEYaiACQQRqQRhqKAIANgIAIApBEGogAkEEakEQaikCADcCACAKQQhqIAJBBGpBCGopAgA3AgAgCiACKQIENwIAIAdBHGohByANQX9qIg0NAAsLIAatQiCGIAmthCEPDAoLIAEoAgghDRCxGkEEIQMgCkEEEPsXIgtFDQcgBUUNAEEAIQMgBSEHA0AgCiADRg0BIAJBBGogDSADakHAgcEAENMRIAsgA2oiCEEIaiACQQRqQQhqKAIANgIAIAggAikCBDcCACADQQxqIQMgB0F/aiIHDQALCyABKAIYIgitQhx+Ig+nIQxBACEHIA9CIIinDQcgDEH8////B0sNBwJAAkAgDA0AQQQhAwwBCyABKAIUIQYQsRpBBCEHIAxBBBD7FyIDRQ0IIAhFDQBBACEHIAghDQNAIAwgB0YNASACQQRqIAYgB2oQowggAyAHaiIKQRhqIAJBBGpBGGooAgA2AgAgCkEQaiACQQRqQRBqKQIANwIAIApBCGogAkEEakEIaikCADcCACAKIAIpAgQ3AgAgB0EcaiEHIA1Bf2oiDQ0ACwsgDkIghiALrYQhDwwICyADIAVBoIHBABDmFgALIAcgDEGwgcEAEOYWAAsgByADQaCBwQAQ5hYACyAHIAxBsIHBABDmFgALIAcgA0GggcEAEOYWAAsgByAMQbCBwQAQ5hYACyADIApBsIHBABDmFgALIAcgDEGwgcEAEOYWAAsgASgCHCEBDAELCyAAIAE2AhwgACAINgIYIAAgAzYCFCAAIAg2AhAgACAPNwIIIAAgBTYCBCAAIAQ2AgAgAkEgaiQAC4ANAgx/An4jAEEgayICJAAgASgCBCEDAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgASgCACIEDgQAAQIDAAtBgICAgHghBSADQYCAgIB4Rw0DDBMLQYCAgIB4IQUgA0GAgICAeEYNEiABKAIMIgZBAXQhA0EAIQcgBkEASA0LIANB/v///wdLDQsgASgCCCEIIAMNA0ECIQlBACEFDAQLQYCAgIB4IQUgA0GAgICAeEYNESABKAIMIgZBAnQhA0EAIQcgBkH/////A0sNDCADQfz///8HSw0MIAEoAgghCCADDQRBBCEJQQAhBQwFC0GAgICAeCEFIANBgICAgHhGDRAgASgCDCIFrSIOQgx+Ig+nIQpBACEDIA9CIIinDQ0gCkH8////B0sNDSAKDQVBBCELDAYLQQAhAyABKAIMIgVBAEgNBiABKAIIIQcCQAJAIAUNAEEBIQYMAQsQsRpBASEDIAVBARD7FyIGRQ0HCwJAIAVFDQAgBiAHIAX8CgAACyABKAIYIgitQhx+Ig+nIQxBACEHIA9CIIinDQcgDEH8////B0sNBwJAAkAgDA0AQQQhAwwBCyABKAIUIQsQsRpBBCEHIAxBBBD7FyIDRQ0IIAhFDQBBACEHIAghDQNAIAwgB0YNASACQQRqIAsgB2oQ5AkgAyAHaiIKQRhqIAJBBGpBGGooAgA2AgAgCkEQaiACQQRqQRBqKQIANwIAIApBCGogAkEEakEIaikCADcCACAKIAIpAgQ3AgAgB0EcaiEHIA1Bf2oiDQ0ACwsgBa1CIIYgBq2EIQ8MDgsQsRpBAiEHIAYhBSADQQIQ+xciCUUNBwsCQCADRQ0AIAkgCCAD/AoAAAsgASgCGCIIrUIcfiIPpyEMQQAhByAPQiCIpw0HIAxB/P///wdLDQcCQAJAIAwNAEEEIQMMAQsgASgCFCELELEaQQQhByAMQQQQ+xciA0UNCCAIRQ0AQQAhByAIIQ0DQCAMIAdGDQEgAkEEaiALIAdqELQJIAMgB2oiCkEYaiACQQRqQRhqKAIANgIAIApBEGogAkEEakEQaikCADcCACAKQQhqIAJBBGpBCGopAgA3AgAgCiACKQIENwIAIAdBHGohByANQX9qIg0NAAsLIAatQiCGIAmthCEPDAwLELEaQQQhByAGIQUgA0EEEPsXIglFDQcLAkAgA0UNACAJIAggA/wKAAALIAEoAhgiCK1CHH4iD6chDEEAIQcgD0IgiKcNByAMQfz///8HSw0HAkACQCAMDQBBBCEDDAELIAEoAhQhCxCxGkEEIQcgDEEEEPsXIgNFDQggCEUNAEEAIQcgCCENA0AgDCAHRg0BIAJBBGogCyAHahCzCSADIAdqIgpBGGogAkEEakEYaigCADYCACAKQRBqIAJBBGpBEGopAgA3AgAgCkEIaiACQQRqQQhqKQIANwIAIAogAikCBDcCACAHQRxqIQcgDUF/aiINDQALCyAGrUIghiAJrYQhDwwKCyABKAIIIQ0QsRpBBCEDIApBBBD7FyILRQ0HIAVFDQBBACEDIAUhBwNAIAogA0YNASACQQRqIA0gA2pBoJnCABDTESALIANqIghBCGogAkEEakEIaigCADYCACAIIAIpAgQ3AgAgA0EMaiEDIAdBf2oiBw0ACwsgASgCGCIIrUIcfiIPpyEMQQAhByAPQiCIpw0HIAxB/P///wdLDQcCQAJAIAwNAEEEIQMMAQsgASgCFCEGELEaQQQhByAMQQQQ+xciA0UNCCAIRQ0AQQAhByAIIQ0DQCAMIAdGDQEgAkEEaiAGIAdqEKsIIAMgB2oiCkEYaiACQQRqQRhqKAIANgIAIApBEGogAkEEakEQaikCADcCACAKQQhqIAJBBGpBCGopAgA3AgAgCiACKQIENwIAIAdBHGohByANQX9qIg0NAAsLIA5CIIYgC62EIQ8MCAsgAyAFQYCZwgAQ5hYACyAHIAxBkJnCABDmFgALIAcgA0GAmcIAEOYWAAsgByAMQZCZwgAQ5hYACyAHIANBgJnCABDmFgALIAcgDEGQmcIAEOYWAAsgAyAKQZCZwgAQ5hYACyAHIAxBkJnCABDmFgALIAEoAhwhAQwBCwsgACABNgIcIAAgCDYCGCAAIAM2AhQgACAINgIQIAAgDzcCCCAAIAU2AgQgACAENgIAIAJBIGokAAu/DQIWfwd+IwBBwAFrIgQkACADKAIcIQUCQAJAAkACQAJAAkACQCABDQBBACEGIARBCGpBADYCAEIAIRogBEIANwMAQQMhB0IAIRtBACEIDAELIARBiAFqQgA3AwAgBEGQAWpCADcDACAEQZgBakEANgIAIARCADcDgAEgBEIANwNgIARBpAFqIQkDQCAFKAIQIQYgBSgCDCEKA0AgBEGgAWogBEHgAGogCiAGEPgDIAQoAqABQQFGDQMgBCgCrAEhCyAEKAKoASEMAkAgBCgCpAEiB0EDRiINDQAgC0UNAQsLIA0NAyAEKAKIASIGIAFJDQALIARBCGogBEGUAWooAgA2AgAgBCAEKQKMATcDACAEKQOAASEbIAQpA3ghHCAEKAJ0IQ4gBCgCcCEJIAQpA2ghHSAEKQNgIRogBCgCmAEhCCAEKAKcASEPCyAFKAIQIRAgBSgCDCERIAQgGzcDoAFBAyEKQgAhHiAIIQ1BACESQQAhE0EAIRRBACALIAdBA0YiFRsiFiEXIBshHwJAIBqnIhhBAXFFDQAgBCAcNwNwIAQgDjYCbCAEIAk2AmggBCAdNwNgIBsgHX0hHiAEQeAAahCvEyENIAkhEiAIIRMgDiEUIAkhFyAdIR8LAkAgFUUNAEECIRgMBAsgC0EBRg0CQQQhGAJAIAYgAUsNACAMIRkgByEVDAQLIARBoAFqQgAQsRYgBiABayIKrUIghkEAIAwgB0ECRhuthCEgIAsgCmshCyAMIRkgByEVIAchCgwECyAEQbABakEIaiAJQQhqKAIANgIAIAQgCSkCADcDsAFB1MfBAEErIARBsAFqQdSQwgBB5JDCABD4EAALQfSQwgAQ+xkAC0ECIRVBAyEKAkAgB0ECRw0AIAwhGUEDIRgMAQsCQCAYIAlBAUtxQQFGDQAgDCEZIAchFUEDIRgMAQtBACEZQQQhCyAMIRUgByEYCwsQsRoCQEEgQQgQ+xciB0UNACAHQQg6AAAgBEEQakEIakIANwMAIARBIGpCADcDACAEQShqQgA3AwAgBEEQakEgakIANwMAIARBOGpCADcDACAEQcAAakIANwMAIARBATYCVCAEIAc2AlAgBEIANwMQIARBADoAWCAEQsCAgIAQNwNIAkAgDUUNACAEIBA2AnwgBCARNgJ4IAQgHzcDcCAEIA02AmggBEEANgJkIARBgQQ7AWAgBEEQaiAEQeAAaiAGIBdrIA0QmAcLAkAgEiAWTQ0AIBQgE08NACAEIBA2AnwgBCARNgJ4IAQgHjcDcCAEIBM2AmggBCAUNgJkIARBgQQ7AWAgBEEQaiAEQeAAakEAIBIgFmsiDSANIBJLGyINIA0QrwcLIAQpA6ABIR8gBEGUAWogBEEIaigCADYCACAEIAQpAwA3AowBIAQgDzYCnAEgBCAINgKYASAEIAY2AogBIAQgGzcDgAEgBCAcNwN4IAQgDjYCdCAEIAk2AnAgBCAdNwNoIAQgGjcDYCAgQiCIpyEGICCnIQ0CQAJAAkAgAg0AQQAhCQwBCyAEQaQBaiEIQQAhCSACIQEDQAJAAkACQAJAIApBA0YNACABIAZJDQEgCSAGaiEJIAEgBmshAUEDIQoMAwsgBSgCECEHIAUoAgwhDANAIARBoAFqIARB4ABqIAwgBxD4AyAEKAKgAUEBRg0CIAQoAqwBIQYgBCgCqAEhDQJAIAQoAqQBIgpBA0YNACAGRQ0BCwsgCkEDRw0CQQMhCgwFCyAGIAFrIQYgCSABaiEJDAMLIARBsAFqQQhqIAhBCGooAgA2AgAgBCAIKQIANwOwAUHUx8EAQSsgBEGwAWpB1JDCAEHkkMIAEPgQAAsgAQ0ACwtBACEBCwJAIAIgASAJakcNACAAIAQpA2A3AwAgAEE4aiAEQeAAakE4aikDADcDACAAQTBqIARB4ABqQTBqKQMANwMAIABBKGogBEHgAGpBKGopAwA3AwAgAEEgaiAEQeAAakEgaikDADcDACAAQRhqIARB4ABqQRhqKQMANwMAIABBEGogBEHgAGpBEGopAwA3AwAgAEEIaiAEQeAAakEIaikDADcDAAJAQdAARQ0AIABBwABqIARBEGpB0AD8CgAACyAAIAM2ArwBIABBADYCpAEgACALNgKgASAAIBk2ApwBIAAgFTYCmAEgACAYNgKUASAAQQA2ApABIAAgATYCxAEgACAJNgLAASAAIAY2ArgBIAAgDTYCtAEgACAKNgKwASAAIB83A6gBIARBwAFqJAAPC0G0j8IAQSxB4I/CABDOEwALQQhBIBDYGQAL5gsCEn8CfiMAQdACayIGJAACQCABQQJJDQAgAa0iGEL//////////z98IBiAIRkCQAJAIAFBgSBJDQAgARDmFSEHDAELIAEgAUEBdmsiCEHAACAIQcAASRshBwsgAEFgaiEJIABBIGohCkEBIQhBACELQQAhDANAQQEhDUEAIQ4CQCABIAtNDQAgACALQQV0Ig9qIRACQAJAIAEgC2siESAHSQ0AAkACQCARQQJPDQAgESESDAELAkACQAJAAkACQAJAAkAgEEEgaiAQQSAQhBNBAEgiEw0AIBFBAkYNBCAKIA9qIRRBAiESA0AgFEEgaiIVIBRBIBCEE0EASA0DIBUhFCARIBJBAWoiEkcNAAwCCwsgEUECRg0CIAogD2ohFEECIRIDQCAUQSBqIhUgFEEgEIQTQX9KDQIgFSEUIBEgEkEBaiISRw0ACwsgESESCyASIAdJDQUgE0UNBCASQQJPDQJBASESDAQLQQIhEkEBIRMgB0ECSw0EDAILQQIhEiAHQQJLDQMMAgsgEkEBdiETCyAJIBJBBXRqIRUgACEQA0AgECAPaiIRQQhqIg4pAAAhGCAOIBUgD2oiFEEIaiIWKQAANwAAIBYgGDcAACAUQRRqKAAAIQ4gFEEQaiIWKAAAIQ0gFiARQRBqIhcpAAA3AAAgESkAACEYIBEgFCkAADcAACAUIBg3AAAgFyANNgAAIBFBFGogDjYAACAUQRhqIg4oAAAhFiAOIBFBGGoiDSgAADYAACANIBY2AAAgFEEcaiIUKAAAIQ4gFCARQRxqIhEoAAA2AAAgESAONgAAIBVBYGohFSAQQSBqIRAgE0F/aiITDQALCyASQQF0QQFyIQ0MAQsCQCAEDQAgESAHIBEgB0kbQQF0IQ0MAQsgECARQSAgEUEgSRsiESACIANBAEEAIAUQyQIgEUEBdEEBciENCyANQQF2IAtqrSALrSIYfCAZfiALIAhBAXZrrSAYfCAZfoV5pyEOCwJAAkAgDEECSQ0AIAkgC0EFdCIRaiEXIAAgEWohFgNAIAZBjgJqIAxBf2oiFWotAAAgDkkNAQJAAkACQAJAAkACQCAGQQRqIBVBAnRqKAIAIhFBAXYiEiAIQQF2IhBqIhMgA0sNACARIAhyQQFxRQ0BCyAAIAsgE2tBBXRqIQwCQCARQQFxDQAgDCASIAIgAyASQQFyZ0EBdEE+c0EAIAUQyQILAkAgCEEBcQ0AIAwgEkEFdGogECACIAMgEEEBcmdBAXRBPnNBACAFEMkCCyAIQQJJDQMgEUECSQ0DIAMgECASIBAgEkkiFBsiCEkNAyAMIBJBBXRqIRECQCAIQQV0Ig9FDQAgAiARIAwgFBsgD/wKAAALIAIgD2ohFAJAIBAgEk8NACAXIQgDQCARQWBqIREgFEFgaiEUIAggFCARIBQgEUEgEIQTIhBBf0oiDxsiEikAADcAACAIQRhqIBJBGGopAAA3AAAgCEEQaiASQRBqKQAANwAAIAhBCGogEkEIaikAADcAACAUIBBBGnZBIHFqIRQgESAPQQV0aiIRIAxGDQMgCEFgaiEIIBQgAkcNAAwDCwsCQCAIDQAgAiEIDAMLIAIhCANAIAwgCCARIBEgCEEgEIQTIg9Bf0oiEBsiEikAADcAACAMQRhqIBJBGGopAAA3AAAgDEEQaiASQRBqKQAANwAAIAxBCGogEkEIaikAADcAACAMQSBqIQwgCCAQQQV0aiIIIBRGDQMgESAPQRp2QSBxaiIRIBZHDQAMAwsLIBNBAXQhCAwDCyARIQwgAiEICyAUIAhrIhFFDQAgDCAIIBH8CgAACyATQQF0QQFyIQgLQQEhESAVIQwgFUEBSw0ADAILCyAMIRELIAZBjgJqIBFqIA46AAAgBkEEaiARQQJ0aiAINgIAAkAgASALTQ0AIBFBAWohDCANQQF2IAtqIQsgDSEIDAELCyAIQQFxDQAgACABIAIgAyABQQFyZ0EBdEE+c0EAIAUQyQILIAZB0AJqJAALwA0CFX8IfiMAQcABayIEJAAgAygCHCEFAkACQAJAAkACQCABDQBBACEGIARBEGpBADYCAEIAIRkgBEIANwMIQQMhB0IAIRpBACEIDAELIARBkAFqQgA3AwAgBEGYAWpCADcDACAEQaABakEANgIAIARCADcDiAEgBEIANwNoA0AgBEGoAWogBEHoAGogBSgCDCAFKAIQEPYNIAQoAqgBIgdBA0YNAiAEKAKQASIGIAFJDQALIARBEGogBEGcAWooAgA2AgAgBCAEKQKUATcDCCAEKQOIASEaIAQpA4ABIRsgBCgCfCEJIAQoAnghCiAEKQNwIRwgBCkDaCEZIAQoArgBIQsgBCkDsAEhHSAEKAKsASEMIAQoAqABIQggBCgCpAEhDQsgBSgCECEOIAUoAgwhDyAEIBo3A6gBQgAhHgJAIAdBA0YiEA0AQgAhHgJAIAdBAkYNACAdIR4CQCAHQQFxDQAgDCkDACEeCyAeQoCAgIAQIB5CgICAgBBUG0L/////D4MhHgsgHiALrX4hHgtBACALIBAbIRECQAJAIBmnIhBBAXFFDQAgBCAbNwN4IAQgCTYCdCAEIAo2AnAgBCAcNwNoIBogHCAefH0hHyAEQegAahCvEyESIAohEyAIIRQgCSEVIAohFiAcISAMAQsgGiAefSEgQgAhH0EAIRMgCCESQQAhFEEAIRUgESEWC0EDIRcCQCAHQQNHDQBBACEYDAMLQQEhGCALQQFGDQECQCAGIAFLDQBBAiEYIB0hHgwDCyAGIAFrIRBBAiEYAkACQCAHQQJHDQBCACEeQQIhFwwBC0EBIRcgHSEeAkAgB0EBcQ0AIAwpAwAhHkEAIRcLIB5CgICAgBAgHkKAgICAEFQbQv////8PgyEeCyAEQagBaiAeIBCtfhCxFiALIBBrIQsgHSEeDAILQfSQwgAQ+xkACwJAIAdBAkYgEEF/c3JBAXENACAKQQFNDQAgDK1CIIYgB62EIR5BAyEYQQAhDEEIIQdBACELQQMhFwwBCyAdIR4LELEaAkACQEEgQQgQ+xciAUUNACABQQg6AAAgBEEYakEIakIANwMAIARBKGpCADcDACAEQTBqQgA3AwAgBEEYakEgakIANwMAIARBwABqQgA3AwAgBEHIAGpCADcDACAEQQE2AlwgBCABNgJYIARCADcDGCAEQQA6AGAgBELAgICAEDcDUAJAIBJFDQAgBCAONgKEASAEIA82AoABIAQgIDcDeCAEIBI2AnAgBEEANgJsIARBgQQ7AWggBEEYaiAEQegAaiAGIBZrIBIQlAYLAkAgEyARTQ0AIBUgFE8NACAEIA42AoQBIAQgDzYCgAEgBCAfNwN4IAQgFDYCcCAEIBU2AmwgBEGBBDsBaCAEQRhqIARB6ABqQQAgEyARayIBIAEgE0sbIgEgARCIBgsgBCkDqAEhICAEQZwBaiAEQRBqKAIANgIAIAQgBCkDCDcClAEgBCANNgKkASAEIAg2AqABIAQgBjYCkAEgBCAaNwOIASAEIBs3A4ABIAQgCTYCfCAEIAo2AnggBCAcNwNwIAQgGTcDaAJAAkACQCACDQBBACEGIAwhCSAdIRpBACESDAELQQAhEiAMIQkgHSEaIAIhAUEAIQYCQANAAkAgF0EDRg0AIAEgEEkNAiAGIBBqIQYgASAQayEBQQMhFyABDQEMBAsgBEGoAWogBEHoAGogBSgCDCAFKAIQEPYNAkAgBCgCqAEiF0EDRw0AIAEhEkEAIQFBAA0BDAQLIAQoArwBIQogBCgCuAEhECAEKQOwASEaIAQoAqwBIQkgAQ0ADAMLCyAQIAFrIRAgBiABaiEGCwsgAiASIAZqRw0BIAAgBCkDaDcDACAAQThqIARB6ABqQThqKQMANwMAIABBMGogBEHoAGpBMGopAwA3AwAgAEEoaiAEQegAakEoaikDADcDACAAQSBqIARB6ABqQSBqKQMANwMAIABBGGogBEHoAGpBGGopAwA3AwAgAEEQaiAEQegAakEQaikDADcDACAAQQhqIARB6ABqQQhqKQMANwMAAkBB0ABFDQAgAEHgAGogBEEYakHQAPwKAAALIAAgAzYC2AEgAEEANgKwASAAIB03A1ggACAeNwNQIAAgDDYCTCAAIAc2AkggACALNgJEIAAgGDYCQCAAICA3A9ABIAAgEjYC4AEgACAGNgLcASAAIAo2AswBIAAgEDYCyAEgACAaNwPAASAAIAk2ArwBIAAgFzYCuAEgBEHAAWokAA8LQQhBIBDYGQALQbSPwgBBLEHgj8IAEM4TAAvODAIJfwR+IwBBMGsiAyQAIAApAxAhDCAAKAIMIQQgACgCCCEFIAAoAgQhBiACKAIQIQcCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIADgQAAQIDAAtBAUECIAdBAUYbIQUgAikDCCIMQiCIpyEIIAIoAgQhCSACKAIAIQogDKchCyAHIQEMDQsgAikDCCENIAIoAgQhCSACKAIAIQICQAJAIAVBAkYNAAJAAkAgAkECRw0AQQEhCiAFQQFxRQ0BDA4LIAwhDgJAIAVBAXENACAEKQMAIQ4LIA0hDwJAIAJBAXENACAJKQMAIQ8LIA4gD1ENDEEBIQogB0EBRg0CIAVBAXENDQtBACEKDAwLIAJBAkYNCkIBEMMTIQwgA0EFOgAQIANCATcDGCABIANBEGpBASAMp0EBahDGBgwMCxCxGkEQQQgQ+xciCkUNAiAKIAw3AwggCiAENgIEIAogBTYCAEEBIQFBAyEFIAkhCEEBIQkgAiELDA0LAkACQAJAIAIoAgAiCkECRg0AIAVBAkYNAiACQQhqIAIoAgQiCSAKQQFxGykDACEOIAwhDQJAIAVBAXENACAEKQMAIQ0LIA4gDVENAQwJCyAFQQJHDQggAigCBCEJC0EBQQIgBiAHaiIBQQFGGyEFIAIpAwgiDEIgiKchCCAMpyELDAwLIAatIgwQwxMhDSADQQU6ABAgAyAMNwMYIAEgA0EQaiAGIA2nQQFqEMYGDAcLIAApAxghDiADIAQ2AgggAyAFNgIEIAMgBjYCACAMQiCIpyEJIAIpAwghDSACKAIEIQggDKchCiACKAIAIgtBAkcNAQwCC0EIQRAQ2BkACyAOIQwCQCAKQQFxDQAgCSkDACEMCyANIQ8CQCALQQFxDQAgCCkDACEPCyAMIA9RDQEgB0EBRw0AAkAgBiAERw0AIANBrJ3CABDPDiADKAIEIQULIAUgBEEEdGoiBSAONwMIIAUgCTYCBCAFIAo2AgAgBEEBaiEJQQMhBSADKAIEIQogAygCACEBDAkLAkAgBiAERw0AIANBvJ3CABDPDiADKAIEIQULIAUgBEEEdCIGaiICIA43AwggAiAJNgIEIAIgCjYCACADIARBAWoiAjYCCAJAIAJFDQAgBkEQaiECA0ACQAJAIAUoAgBBAUcNACAFQQhqKQMAIQxBASEEDAELIAVBBGooAgAhCkEAIQQLIAVBEGohBSADIAw3AyAgAyAKNgIcIAMgBDYCGCADQQA6ABAgASADQRBqQQFBARCYBiACQXBqIgINAAsLIAdBAUYhBSAHIQEMAQsCQCAERQ0AIARBBHQhAgNAAkACQCAFKAIAQQFHDQAgBUEIaikDACEMQQEhBAwBCyAFQQRqKAIAIQpBACEECyAFQRBqIQUgAyAMNwMgIAMgCjYCHCADIAQ2AhggA0EAOgAQIAEgA0EQakEBQQEQmAYgAkFwaiICDQALCyAHQQFqIQEgB0UhBQtBAUECIAUbIQUgDUIgiKchAiANpyEEAkAgAygCACIKRQ0AIAMoAgQgCkEEdEEIEL4YCyALIQogCCEJIAQhCyACIQgMBgsgAyAMNwMIIAMgBDYCBCADIAU2AgBBASELAkAgBkEBRw0AAkAgBUEBcQ0AQQAhCwsgAyAMNwMgIAMgBDYCHCADIAs2AhggA0EAOgAQIAEgA0EQakEBQQEQmAYMAQsgA0EIaiILIAQgBUEBcRsQ3xMhBSAGrSIMEN4TIQ0gA0EgaiALKQMANwMAIAMgAykDADcDGCADIAw3AyggA0EEOgAQIAEgA0EQaiAGIAUgDadqEMYGC0EBQQIgB0EBRhshBSACKQMIIgxCIIinIQggAigCBCEJIAynIQsgByEBDAMLAkAgBw0AIA1CIIinIQggDachC0EBIQUgAiEKDAMLIAdBAWohASANQiCIpyEIIA2nIQtBAiEFIAIhCgwCCyADIAw3AyAgAyAENgIcIAMgCjYCGCADQQA6ABAgASADQRBqQQFBARCYBgtBAUECIAdBAUYbIQUgDUIgiKchCCANpyELIAchASACIQoLCyAAIA03AxggACAJNgIMIAAgCjYCCCAAIAE2AgQgACAFNgIAIAAgCK1CIIYgC62ENwMQIANBMGokACAHC6QNAg1/An4jAEHwAWsiBSQAIAUgAjYCDCAFQQA2ArABIAVCgICAgIABNwKoASABKAIoIQIgBSAFQQxqNgK0AQJAAkAgAkGAgICAeEYNACABKAIsIQYgASgCMCEHIAEoAiAhCCABKAIkIQkgBUGoAWpB7IHCABCEDiAFKAKsASICQgA3AxAgAiAIIAlBBXRqNgIMIAIgCDYCCCACIAYgB0E4bGo2AgQgAiAGNgIAIAJBADYCKCACQRhqQgA3AwAgAkEgakEANgIAIAVBATYCsAFBASEIAkACQANAAkAgBSgCrAEiCiAIQTBsIgtqIgZBUGoiBygCACICIAZBVGooAgBGDQAgBSgCtAEhDCAHIAJBOGo2AgAgBkF4aiIJKAIAIQ0gBUEwakEIaiIOIAZBbGoiB0EIaigCADYCACAJIA0gAigCGGo2AgAgBkFoaiIJIAIoAgggCSgCACIPaiIQNgIAIAZBYGoiCSACKQMAIAkpAwAiEnw3AwAgBykCACETIAZBcGoiCSACKAIQIgYgCSgCACIJIAYgCUsbIAYgCRs2AgAgByACKAIMIgYgBygCACIJIAYgCUkbIAkgBhsgBiAJGzYCACAFIBM3AzAgDCgCACAQTw0AIAVB4AFqQQhqIgYgDigCADYCACAFIAUpAzA3A+ABIAIoAiAiByACKAIkQQV0aiEJIAIoAiwiDCACKAIwQThsaiEQAkAgCCAFKAKoAUcNACAFQagBakGoyMEAEIQOIAUoAqwBIQoLIAogC2oiAiAPNgIYIAIgEjcDECACIAk2AgwgAiAHNgIIIAIgEDYCBCACIAw2AgAgAiAFKQPgATcCHCACIA02AiggAkEkaiAGKAIANgIAIAUgCEEBaiIINgKwASAIDQEMAgsgBUEwaiAFQagBahDnCQJAIAUoAkwiAkUNACAFQRBqQRhqIAVBMGpBGGooAgA2AgAgBUEQakEQaiAFQTBqQRBqKQMANwMAIAVBEGpBCGogBUEwakEIaikDADcDACAFIAUpAzA3AxAMAwsgBSgCsAEiCA0ACwsgASgCGCIIRQ0BIAEhAgJAIAEoAjAiBkUNACABIQIDQCACKAIsIAZBOGxqIgZBSGohAiAGQXhqKAIAIgYNAAsLIAIoAiQiBkUNAiACKAIgIAZBBXRqQWBqIgJFDQIgBUEQaiABEIYGIAUgCEF/ajYCKAsCQCAFKAKoASIGRQ0AIAUoAqwBIAZBMGxBCBC+GAsgAigCHCIIKAIMIQYgCCgCECEIIAVBMGpBIGpCADcDACAFQTBqQShqQgA3AwAgBUEwakEwakIANwMAIAVB6ABqQQA2AgAgAikDACETIAIoAhAhDiAFQagBakEYakIANwMAIAVBqAFqQSBqQgA3AwAgBUGoAWpBKGpCADcDACAFQagBakEwakEANgIAIAVBMGpBEGogBUGoAWpBCGopAwA3AwAgBUEwakEYaiAFQagBakEQaikDADcDACAFQgA3AzAgBSAINgKEASAFIAY2AoABIAUgBSkDqAE3AzggAikDCCESIAUgDjYCkAEgBUIANwN4IAUgEjcDcCAFIBM3A4gBIAIoAhghDCACKAIUIQogBSgCKCERIAUpAxAhEiAFKAIYIQ8gBSgCHCELIAUoAiAhECAFKAIMIQIgBUGoAWogBUEwaiAGIAgQwwgCQAJAAkAgBSgCqAEiCUEDRg0AIAVBqAFqQQRyIQggBUGIAWohDSACIA9rIQIDQCAFQeABakEIaiAIQQhqKAIANgIAIAUgCCkCADcD4AEgBSAFKAKQASAFKAK4ASIGazYCkAEgBSgCvAEhByANQgAQsRYgBiACSw0CIAVBqAFqIAVBMGogBSgCgAEgBSgChAEQwwggAiAGayECIAUoAqgBIglBA0cNAAsLDAELIAVBmAFqQQhqIAVB4AFqQQhqKAIANgIAIAUgBSkD4AE3A5gBIAYgAmshAgsCQEHoAEUNACAAIAVBMGpB6AD8CgAACyAAIAQ2AqgBIAAgAzYCsAEgACABNgKgASAAIBFBAWo2ApgBIAAgDiAPajYCiAEgACATIBJ8NwOAASAAIAk2AmggACAHNgJ8IAAgAjYCeCAAIAUoAgw2AqwBIAAgBSkDmAE3AmwgAEH0AGogBUGgAWooAgA2AgAgACAMIBAgDCAQSxsgDCAQGzYCkAEgACAKIAsgCiALSRsgCyAKGyAKIAsbNgKMASAFQfABaiQADwtB/IHCAEEiQaCCwgAQzhMAC0GwgsIAENoYAAumDQIVfwh+IwBBwAFrIgQkACADKAIcIQUCQAJAAkACQAJAIAENAEEAIQYgBEEQakEANgIAQgAhGSAEQgA3AwhBAyEHQgAhGkEAIQgMAQsgBEGQAWpCADcDACAEQZgBakIANwMAIARBoAFqQQA2AgAgBEIANwOIASAEQgA3A2gDQCAEQagBaiAEQegAaiAFKAIMIAUoAhAQ9Q0gBCgCqAEiB0EDRg0CIAQoApABIgYgAUkNAAsgBEEQaiAEQZwBaigCADYCACAEIAQpApQBNwMIIAQpA4gBIRogBCkDgAEhGyAEKAJ8IQkgBCgCeCEKIAQpA3AhHCAEKQNoIRkgBCgCuAEhCyAEKQOwASEdIAQoAqwBIQwgBCgCoAEhCCAEKAKkASENCyAFKAIQIQ4gBSgCDCEPIAQgGjcDqAFCACEeAkAgB0EDRiIQDQBCACEeAkAgB0ECRg0AIB0hHgJAIAdBAXENACAMKQMAIR4LIB5CBIhC/////w+DIR4LIB4gC61+IR4LQQAgCyAQGyERAkACQCAZpyIQQQFxRQ0AIAQgGzcDeCAEIAk2AnQgBCAKNgJwIAQgHDcDaCAaIBwgHnx9IR8gBEHoAGoQrxMhEiAKIRMgCCEUIAkhFSAKIRYgHCEgDAELIBogHn0hIEIAIR9BACETIAghEkEAIRRBACEVIBEhFgtBAyEXAkAgB0EDRw0AQQAhGAwDC0EBIRggC0EBRg0BAkAgBiABSw0AQQIhGCAdIR4MAwsgBiABayEQQQIhGAJAAkAgB0ECRw0AQgAhHkECIRcMAQtBASEXIB0hHgJAIAdBAXENACAMKQMAIR5BACEXCyAeQgSIQv////8PgyEeCyAEQagBaiAeIBCtfhCxFiALIBBrIQsgHSEeDAILQfSQwgAQ+xkACwJAIAdBAkYgEEF/c3JBAXENACAKQQFNDQAgDK1CIIYgB62EIR5BAyEYQQAhDEEIIQdBACELQQMhFwwBCyAdIR4LELEaAkACQEEgQQgQ+xciAUUNACABQQg6AAAgBEEYakEIakIANwMAIARBKGpCADcDACAEQTBqQgA3AwAgBEEYakEgakIANwMAIARBwABqQgA3AwAgBEHIAGpCADcDACAEQQE2AlwgBCABNgJYIARCADcDGCAEQQA6AGAgBELAgICAEDcDUAJAIBJFDQAgBCAONgKEASAEIA82AoABIAQgIDcDeCAEIBI2AnAgBEEANgJsIARBgQQ7AWggBEEYaiAEQegAaiAGIBZrIBIQswYLAkAgEyARTQ0AIBUgFE8NACAEIA42AoQBIAQgDzYCgAEgBCAfNwN4IAQgFDYCcCAEIBU2AmwgBEGBBDsBaCAEQRhqIARB6ABqQQAgEyARayIBIAEgE0sbIgEgARDhBgsgBCkDqAEhICAEQZwBaiAEQRBqKAIANgIAIAQgBCkDCDcClAEgBCANNgKkASAEIAg2AqABIAQgBjYCkAEgBCAaNwOIASAEIBs3A4ABIAQgCTYCfCAEIAo2AnggBCAcNwNwIAQgGTcDaAJAAkACQCACDQBBACEGIAwhCSAdIRpBACESDAELQQAhEiAMIQkgHSEaIAIhAUEAIQYCQANAAkAgF0EDRg0AIAEgEEkNAiAGIBBqIQYgASAQayEBQQMhFyABDQEMBAsgBEGoAWogBEHoAGogBSgCDCAFKAIQEPUNAkAgBCgCqAEiF0EDRw0AIAEhEkEAIQFBAA0BDAQLIAQoArwBIQogBCgCuAEhECAEKQOwASEaIAQoAqwBIQkgAQ0ADAMLCyAQIAFrIRAgBiABaiEGCwsgAiASIAZqRw0BIAAgBCkDaDcDACAAQThqIARB6ABqQThqKQMANwMAIABBMGogBEHoAGpBMGopAwA3AwAgAEEoaiAEQegAakEoaikDADcDACAAQSBqIARB6ABqQSBqKQMANwMAIABBGGogBEHoAGpBGGopAwA3AwAgAEEQaiAEQegAakEQaikDADcDACAAQQhqIARB6ABqQQhqKQMANwMAAkBB0ABFDQAgAEHgAGogBEEYakHQAPwKAAALIAAgAzYC2AEgAEEANgKwASAAIB03A1ggACAeNwNQIAAgDDYCTCAAIAc2AkggACALNgJEIAAgGDYCQCAAICA3A9ABIAAgEjYC4AEgACAGNgLcASAAIAo2AswBIAAgEDYCyAEgACAaNwPAASAAIAk2ArwBIAAgFzYCuAEgBEHAAWokAA8LQQhBIBDYGQALQbSPwgBBLEHgj8IAEM4TAAvyCwIKfwF+AkAgBA0AIABBADYCPCAAIAM2AjggACACNgI0IAAgATYCMCAAQQA6AA4gAEGBAjsBDCAAIAI2AgggAEIANwMADwtBASEFQQAhBkEBIQdBACEIAkACQAJAAkACQAJAAkACQAJAAkAgBEEBRg0AQQEhCUEAIQZBASEKQQAhC0EBIQUDQCAKIQwgCyAGaiIKIARPDQICQAJAIAMgCWotAABB/wFxIgkgAyAKai0AACIKTw0AIAwgC2pBAWoiCiAGayEFQQAhCwwBCwJAIAkgCkYNAEEBIQUgDEEBaiEKQQAhCyAMIQYMAQtBACALQQFqIgogCiAFRiIJGyELIApBACAJGyAMaiEKCyAKIAtqIgkgBEkNAAtBASEJQQAhCEEBIQpBACELQQEhBwNAIAohDCALIAhqIgogBE8NAwJAAkAgAyAJai0AAEH/AXEiCSADIApqLQAAIgpNDQAgDCALakEBaiIKIAhrIQdBACELDAELAkAgCSAKRg0AQQEhByAMQQFqIQpBACELIAwhCAwBC0EAIAtBAWoiCiAKIAdGIgkbIQsgCkEAIAkbIAxqIQoLIAogC2oiCSAESQ0ACwsgBCAGIAggBiAISyILGyINSQ0CIAUgByALGyIKIA1qIgsgCkkNAyALIARLDQQCQAJAIAMgAyAKaiANEIQTRQ0AIARBA3EhDAJAAkAgBEF/akEDTw0AQQAhCkIAIQ8MAQsgBEF8cSEJQQAhCkIAIQ8DQEIBIAMgCmoiC0EDajEAAIZCASALQQJqMQAAhkIBIAtBAWoxAACGQgEgCzEAAIYgD4SEhIQhDyAJIApBBGoiCkcNAAsLIAQgDWshCQJAIAxFDQAgAyAKaiELA0BCASALMQAAhiAPhCEPIAtBAWohCyAMQX9qIgwNAAsLIAkgDSAJIA1LG0EBaiEKQX8hCCANIQVBfyELDAELQQEhBkEAIQtBASEJQQAhBQJAA0AgCSIMIAtqIgcgBE8NASAEIAtrIAxBf3NqIgkgBE8NCCAEIAtBf3NqIAVrIgggBE8NCQJAAkAgAyAJai0AAEH/AXEiCSADIAhqLQAAIghPDQAgB0EBaiIJIAVrIQZBACELDAELAkAgCSAIRg0AIAxBAWohCUEAIQtBASEGIAwhBQwBC0EAIAtBAWoiCSAJIAZGIggbIQsgCUEAIAgbIAxqIQkLIAYgCkcNAAsLQQEhBkEAIQtBASEJQQAhBwJAA0AgCSIMIAtqIg4gBE8NASAEIAtrIAxBf3NqIgkgBE8NCiAEIAtBf3NqIAdrIgggBE8NCwJAAkAgAyAJai0AAEH/AXEiCSADIAhqLQAAIghNDQAgDkEBaiIJIAdrIQZBACELDAELAkAgCSAIRg0AIAxBAWohCUEAIQtBASEGIAwhBwwBC0EAIAtBAWoiCSAJIAZGIggbIQsgCUEAIAgbIAxqIQkLIAYgCkcNAAsLIAQgByAFIAcgBUsbayEFAkACQCAKDQBCACEPQQAhCkEAIQgMAQsgCkEDcSEJQQAhCAJAAkAgCkEETw0AQgAhD0EAIQwMAQsgCkF8cSEGQQAhDEIAIQ8DQEIBIAMgDGoiC0EDajEAAIZCASALQQJqMQAAhkIBIAtBAWoxAACGQgEgCzEAAIYgD4SEhIQhDyAGIAxBBGoiDEcNAAsLIAlFDQAgAyAMaiELA0BCASALMQAAhiAPhCEPIAtBAWohCyAJQX9qIgkNAAsLIAQhCwsgACAENgI8IAAgAzYCOCAAIAI2AjQgACABNgIwIAAgCzYCKCAAIAg2AiQgACACNgIgIABBADYCHCAAIAo2AhggACAFNgIUIAAgDTYCECAAIA83AwggAEEBNgIADwsgCiAEQYSjxwAQ4xEACyAKIARBhKPHABDjEQALIA0gBEHkoscAENgYAAsgCiALQfSixwAQ2RgACyALIARB9KLHABDYGAALIAkgBEGUo8cAEOMRAAsgCCAEQaSjxwAQ4xEACyAJIARBlKPHABDjEQALIAggBEGko8cAEOMRAAuJDAIRfwJ+IwBB0AJrIgYkAAJAIAFBAkkNACABrSIXQv//////////P3wgF4AhFwJAAkAgAUGBIEkNACABEOYVIQcMAQsgASABQQF2ayIIQcAAIAhBwABJGyEHCyAAQZh/aiEJQQEhCEEAIQpBACELA0BBASEMQQAhDQJAIAEgCk0NACAAIApB6ABsaiEOAkACQCABIAprIg8gB0kNAAJAAkAgD0ECTw0AIA8hEAwBCwJAAkACQAJAAkACQCAOKAJoQQFHDQAgDigCAEUNAQJAAkACQAJAAkACQCAOKALEASAOKAJcSSAOKAJsIhEgDigCBCIQSSARIBBGGyINDQAgD0ECRg0DQQIhECAOIREDQCARQdABaigCAEEBRw0JIBFB6ABqIhIoAgBFDQogEUGsAmooAgAgEUHEAWooAgBJIBFB1AFqKAIAIhMgEUHsAGooAgAiEUkgEyARRhsNAyASIREgDyAQQQFqIhBHDQAMAgsLIA9BAkYNA0ECIRAgDiERA0AgEUHQAWooAgBBAUcNCiARQegAaiISKAIARQ0LIBFBrAJqKAIAIBFBxAFqKAIASSARQdQBaigCACITIBFB7ABqKAIAIhFJIBMgEUYbQQFHDQIgEiERIA8gEEEBaiIQRw0ACwsgDyEQCyAQIAdJDQogDUUNCQwCC0ECIRAgB0ECSw0JDAgLQQIhECAHQQJLDQgLIA4gEBCFBQwGC0Hwu8IAENoYAAtBgLzCABDaGAALQfC7wgAQ2hgAC0GAvMIAENoYAAtB8LvCABDaGAALQYC8wgAQ2hgACyAQQQF0QQFyIQwMAQsCQCAEDQAgDyAHIA8gB0kbQQF0IQwMAQsgDiAPQSAgD0EgSRsiESACIANBAEEAIAUQ1gEgEUEBdEEBciEMCyAMQQF2IApqrSAKrSIYfCAXfiAKIAhBAXZrrSAYfCAXfoV5pyENCwJAAkAgC0ECSQ0AIAkgCkHoAGwiEWohFCAAIBFqIRUDQCAGQY4CaiALQX9qIhNqLQAAIA1JDQECQAJAAkACQAJAAkACQAJAAkACQCAGQQRqIBNBAnRqKAIAIgtBAXYiESAIQQF2IhBqIhIgA0sNACALIAhyQQFxRQ0BCyAAIAogEmtB6ABsaiEPAkAgC0EBcQ0AIA8gESACIAMgEUEBcmdBAXRBPnNBACAFENYBCwJAIAhBAXENACAPIBFB6ABsaiAQIAIgAyAQQQFyZ0EBdEE+c0EAIAUQ1gELIAhBAkkNByALQQJJDQcgAyAQIBEgECARSSILGyIOSQ0HIA8gEUHoAGxqIQgCQCAOQegAbCIWRQ0AIAIgCCAPIAsbIBb8CgAACyACIBZqIQsCQCAQIBFPDQAgFCERA0AgC0GYf2oiECgCAEEBRw0DIAhBmH9qIg4oAgBFDQQgC0F0aigCACAIQXRqKAIASSALQZx/aigCACILIAhBnH9qKAIAIghJIAsgCEYbIQgCQEHoAEUNACARIA4gECAIG0HoAPwKAAALIBAgCEHoAGxqIQsgDiAIQQFzQegAbGoiCCAPRg0HIBFBmH9qIREgCyACRw0ADAcLCwJAIA4NACACIREMBwsgAiERA0AgCCgCAEEBRw0EIBEoAgBFDQUgCCgCXCARKAJcSSAIKAIEIhAgESgCBCIOSSAQIA5GGyEQAkBB6ABFDQAgDyAIIBEgEBtB6AD8CgAACyAPQegAaiEPIBEgEEEBc0HoAGxqIhEgC0YNByAIIBBB6ABsaiIIIBVHDQAMBwsLIBJBAXQhCAwHC0Hwu8IAENoYAAtBgLzCABDaGAALQfC7wgAQ2hgAC0GAvMIAENoYAAsgCCEPIAIhEQsgCyARayIIRQ0AIA8gESAI/AoAAAsgEkEBdEEBciEIC0EBIREgEyELIBNBAUsNAAwCCwsgCyERCyAGQY4CaiARaiANOgAAIAZBBGogEUECdGogCDYCAAJAIAEgCk0NACARQQFqIQsgDEEBdiAKaiEKIAwhCAwBCwsgCEEBcQ0AIAAgASACIAMgAUEBcmdBAXRBPnNBACAFENYBCyAGQdACaiQAC4cNAg1/An4jAEHgAWsiBSQAIAUgAjYCDCAFQQA2AqABIAVCgICAgIABNwKYASABKAIoIQIgBSAFQQxqNgKkAQJAAkAgAkGAgICAeEYNACABKAIsIQYgASgCMCEHIAEoAiAhCCABKAIkIQkgBUGYAWpB7IHCABCEDiAFKAKcASICQgA3AxAgAiAIIAlBBXRqNgIMIAIgCDYCCCACIAYgB0E4bGo2AgQgAiAGNgIAIAJBADYCKCACQRhqQgA3AwAgAkEgakEANgIAIAVBATYCoAFBASEIAkACQANAAkAgBSgCnAEiCiAIQTBsIgtqIgZBUGoiBygCACICIAZBVGooAgBGDQAgBSgCpAEhDCAHIAJBOGo2AgAgBkF4aiIJKAIAIQ0gBUEwakEIaiIOIAZBbGoiB0EIaigCADYCACAJIA0gAigCGGo2AgAgBkFoaiIJIAIoAgggCSgCACIPaiIQNgIAIAZBYGoiCSACKQMAIAkpAwAiEnw3AwAgBykCACETIAZBcGoiCSACKAIQIgYgCSgCACIJIAYgCUsbIAYgCRs2AgAgByACKAIMIgYgBygCACIJIAYgCUkbIAkgBhsgBiAJGzYCACAFIBM3AzAgDCgCACAQTw0AIAVB0AFqQQhqIgYgDigCADYCACAFIAUpAzA3A9ABIAIoAiAiByACKAIkQQV0aiEJIAIoAiwiDCACKAIwQThsaiEQAkAgCCAFKAKYAUcNACAFQZgBakGoyMEAEIQOIAUoApwBIQoLIAogC2oiAiAPNgIYIAIgEjcDECACIAk2AgwgAiAHNgIIIAIgEDYCBCACIAw2AgAgAiAFKQPQATcCHCACIA02AiggAkEkaiAGKAIANgIAIAUgCEEBaiIINgKgASAIDQEMAgsgBUEwaiAFQZgBahDnCQJAIAUoAkwiAkUNACAFQRBqQRhqIAVBMGpBGGooAgA2AgAgBUEQakEQaiAFQTBqQRBqKQMANwMAIAVBEGpBCGogBUEwakEIaikDADcDACAFIAUpAzA3AxAMAwsgBSgCoAEiCA0ACwsgASgCGCIIRQ0BIAEhAgJAIAEoAjAiBkUNACABIQIDQCACKAIsIAZBOGxqIgZBSGohAiAGQXhqKAIAIgYNAAsLIAIoAiQiBkUNAiACKAIgIAZBBXRqQWBqIgJFDQIgBUEQaiABEIYGIAUgCEF/ajYCKAsCQCAFKAKYASIGRQ0AIAUoApwBIAZBMGxBCBC+GAsgAigCHCIIKAIMIQYgCCgCECEIIAVBMGpBIGpCADcDACAFQTBqQShqQgA3AwAgBUEwakEwakIANwMAIAVB6ABqQQA2AgAgAigCECEOIAIpAwAhEyAFQZgBakEwakEANgIAIAVBmAFqQShqQgA3AwAgBUGYAWpBIGpCADcDACAFQZgBakEYakIANwMAIAVBMGpBEGogBUGYAWpBCGopAwA3AwAgBUEwakEYaiAFQZgBakEQaikDADcDACAFQgA3AzAgBSAINgJ0IAUgBjYCcCAFIAUpA5gBNwM4IAUgEzcDeCAFIA42AoABIAIoAhghDCACKAIUIQogBSgCKCERIAUpAxAhEiAFKAIYIQ8gBSgCHCELIAUoAiAhECAFKAIMIQIgBUGYAWogBUEwaiAGIAgQ9w0CQAJAAkAgBSgCmAEiCUEDRg0AIAVBmAFqQQRyIQggBUH4AGohDSACIA9rIQIDQCAFQdABakEIaiAIQQhqKAIANgIAIAUgCCkCADcD0AEgBSAFKAKAASAFKAKoASIGazYCgAEgBSgCrAEhByANQgAQsRYgBiACSw0CIAVBmAFqIAVBMGogBSgCcCAFKAJ0EPcNIAIgBmshAiAFKAKYASIJQQNHDQALCwwBCyAFQYgBakEIaiAFQdABakEIaigCADYCACAFIAUpA9ABNwOIASAGIAJrIQILAkBB2ABFDQAgACAFQTBqQdgA/AoAAAsgACAENgKYASAAIAM2AqABIAAgATYCkAEgACARQQFqNgKIASAAIA4gD2o2AnggACATIBJ8NwNwIAAgCTYCWCAAIAc2AmwgACACNgJoIAAgBSgCDDYCnAEgACAFKQOIATcCXCAAQeQAaiAFQZABaigCADYCACAAIAwgECAMIBBLGyAMIBAbNgKAASAAIAogCyAKIAtJGyALIAobIAogCxs2AnwgBUHgAWokAA8LQfyBwgBBIkGggsIAEM4TAAtBsILCABDaGAALpA4CH38BfiMAQcAWayICJAAgAUH4GGohAyABQcAUaiEEIAFBuBRqIQUgAUGoFGohBiACQfgDaiEHIAJBpARqIQggAkHQDWohCSACQYASakGABGohCiACQYASakEIaiELIAJBwA1qQQhqIQwgAkHwCGpBCGohDSACQcANakGkBGohDiACQYASakGkBGohDyACQcANakGEBGohECACQYASakGEBGohESACQcANakGwBGohEiACQYASakGwBGohEyACQcANakGsBGohFCACQYASakGsBGohFSACQcANakGABGohFiACQcANakGgBGohFyACQYASakGgBGohGANAIAEoAqgUIRkgAkHADWogARDeBQJAAkAgAikDwA1CAlENAEEAIAYgGUGAgICAeEYbIRoDQAJAQcAERSIbDQAgAkGAEmogAkHADWpBwAT8CgAACyAXIRwgFiEZIBQhHSASIR4gECEfIA4hIAJAIAItAL8WQQVGDQAgGCEcIAohGSAVIR0gEyEeIBEhHyAPISAgAkGAEmogGhDyAUUNACACKQOAEiEhAkBBuARFIhkNACACQbgEaiALQbgE/AoAAAsgIUICUQ0CIAIgITcD8AgCQCAZDQAgDSACQbgEakG4BPwKAAALIAUpAwAhISAFQgI3AwACQAJAAkACQAJAICFCAlINACAbDQEgAkGAEmogAkHwCGpBwAT8CgAADAELIAIgITcDwA0CQCAZDQAgDCAEQbgE/AoAAAsCQAJAIAIoAogNIAIoAtgRRw0AIAIoAowNIAIoAtwRRg0BCyAbDQQgAkGAEmogAkHwCGpBwAT8CgAADAQLIAJBtA1qIAJB8AhqEJwOIAJBgBJqIAJBwA1qEJwOIAIoArQNIhxBgYCAgHhGIAIoAoASIh1BgYCAgHhGcw0BAkACQCAcQYGAgIB4Rw0AIAIoArgNIAIoAoQSRw0EIAIoArwNIAIoAogSRw0EDAELIAIoArwNIh8gAigCiBJHDQIgAigCuA0iICACKAKEEiIeIB8QhBMNAgJAIB1BgoCAgHhIDQAgHUUNACAeIB1BARC+GAsgHEGAgICAeHJBgICAgHhGDQAgICAcQQEQvhgLIAJBAToArA0gAkHADWoQnw8gBSkDACEhAkAgGw0AIAJBgBJqIAJB8AhqQcAE/AoAAAsgIUICUQ0AIAUQnw8LAkAgGw0AIAUgAkGAEmpBwAT8CgAACyABKAKoFCEZIAJBwA1qIAEQ3gVBACAGIBlBgICAgHhGGyEaIAIpA8ANQgJSDQQMBQsCQCAdQYKAgIB4SA0AIB1FDQAgAigChBIgHUEBEL4YCyAcQYKAgIB4SA0AIBxFDQAgAigCuA0gHEEBEL4YCyAFKQMAISECQCAbDQAgAkGAEmogAkHwCGpBwAT8CgAACyAhQgJRDQAgBRCfDwsCQCAbDQAgBSACQYASakHABPwKAAALIAIpA8ANISEgGQ0DIAIgDEG4BPwKAAAMAwsCQCAcKAIAIhxBgoCAgHhIDQAgHEUNACAgKAIAIBxBARC+GAsCQAJAAkACQAJAAkAgGSgCACIcQf////8HaiIgQQggIEEKSRsOCQABBQUFBQUFAgULIB8oAgAiHEGAgICAeHJBgICAgHhGDQQMAgsgHygCACIcQYCAgIB4ckGAgICAeEcNAQwDCyAcQYCAgIB4ckGAgICAeEYNAkEEIR8MAQtBCCEfCyAZIB9qKAIAIBxBARC+GAsCQCAdKAIAIhlBgoCAgHhIDQAgGUUNACAeKAIAIBlBARC+GAsgAkHADWogARDeBSACKQPADUICUg0ACwsgBSkDACEhAkBBuARFDQAgAiAEQbgE/AoAAAsgBUICNwMACwJAAkACQAJAICFCAlENACACICE3A4ASAkBBuARFDQAgCyACQbgE/AoAAAsgAi0AvxZBB0cNASACKAKsFkGBgICAeEYNAiAJIAgpAgA3AgAgCUEIaiAIQQhqKAIANgIAIAwgB0EIaikDADcDACACIAcpAwA3A8ANIAMgAigCkBYgAigClBYgAkHADWoQtAQaIAIoAqAWIhlBgoCAgHhIDQQgGUUNBCACKAKkFiAZQQEQvhgMBAsgAEICNwMADAILQcAERQ0BIAAgAkGAEmpBwAT8CgAADAELIAMgAigCkBYgAigClBYQ1wEaAkAgAigCoBYiGUGCgICAeEgNACAZRQ0AIAIoAqQWIBlBARC+GAsCQAJAAkACQAJAIAIoAoAWIhlB/////wdqIhxBCCAcQQpJGw4JAAEGBgYGBgYCBgsgAigChBYiGUGAgICAeHJBgICAgHhGDQUMAgsgAigChBYiGUGAgICAeHJBgICAgHhGDQQMAQsgGUGAgICAeHJBgICAgHhGDQNBBCEcDAELQQghHAsgCiAcaigCACAZQQEQvhgMAQsLIAJBwBZqJAALlA0CCH8EfiMAQbACayIFJAAgBUHYAWogASACELoBAkACQAJAIAUoAtgBIgJBK0YNACAFQegAaiIBIAVB2AFqQSRqKAIANgIAIAVByABqQRhqIgMgBUHYAWpBHGopAgA3AwAgBUHIAGpBEGoiBiAFQdgBakEUaikCADcDACAFQcgAakEIaiIHIAVB5AFqKQIANwMAIAVBiAFqQQhqIgggBUGJAmopAAA3AwAgBUGIAWpBEGoiCSAFQdgBakE5aikAADcDACAFQYgBakEYaiIKIAVB2AFqQcEAaikAADcDACAFQacBaiILIAVBoAJqKQAANwAAIAUgBSkC3AE3A0ggBSAFKQCBAjcDiAEgBS0AgAIhDCAAQSxqIAEoAgA2AgAgAEEkaiADKQMANwIAIABBHGogBikDADcCACAAQRRqIAcpAwA3AgAgACAFKQNINwIMIAAgBSkDiAE3ADEgAEE5aiAIKQMANwAAIABBwQBqIAkpAwA3AAAgAEHJAGogCikDADcAACAAQdAAaiALKQAANwAAIAAgDDoAMCAAIAI2AgggAEEANgIADAELIAVB5ABqIAVB2AFqQSBqKQMAIg03AgAgBUHcAGogBUHYAWpBGGopAwAiDjcCACAFQdQAaiAFQdgBakEQaikDACIPNwIAIAUgBSkD4AEiEDcCTCAFQQhqQRhqIA03AwAgBUEIakEQaiAONwMAIAVBEGogDzcDACAFIBA3AwggAUEgaiICEIgIAkACQCABKAJoQYCAgIB4Rg0AIAVB2AFqIAFB+ABqIgYgAUGwDWoiByACIAVBCGogAxDWEgJAIAUoAtgBIgNBJ0YNACAAIAUpA4ACNwMwIAVBqAFqIgEgBUHYAWpBJGooAgA2AgAgBUGgAWoiAiAFQdgBakEcaikCADcDACAFQZgBaiIGIAVB2AFqQRRqKQIANwMAIAVBkAFqIgcgBUHkAWopAgA3AwAgAEE4aiAFQYgCaikDADcDACAAQcAAaiAFQdgBakE4aikDADcDACAAQcgAaiAFQdgBakHAAGopAwA3AwAgAEHQAGogBUHYAWpByABqKQMANwMAIAUgBSkC3AE3A4gBIABBLGogASgCADYCACAAQSRqIAIpAwA3AgAgAEEcaiAGKQMANwIAIABBFGogBykDADcCACAAIAUpA4gBNwIMIAAgAzYCCCAAQQI2AgAgBS8BECIAQQJGDQMgAEUNAyAFKAIUIgBFDQMgBSgCGCAAQQEQvhgMAwsgBUEoakEIaiAFQdgBakEQaikDADcDACAFQShqQRBqIAVB2AFqQRhqIggpAwA3AwAgBUEoakEYaiAFQdgBakEgaiIJKQMANwMAIAUgBSkD4AE3AyggBUHYAWogASAEEI0BIAVBiAFqQQhqIgQgBUHYAWpBDGooAgA2AgAgBSAFKQLcATcDiAECQAJAIAUoAtgBIgNBB0cNACAAIAUpA4gBNwIEIABBBDYCACAAQQxqIAQoAgA2AgAMAQsgBUHIAGpBOGogBUHYAWpBOGopAwA3AwAgBUHIAGpBMGogBUHYAWpBMGopAwA3AwAgBUHIAGpBKGogBUHYAWpBKGopAwA3AwAgBUHIAGpBIGogCSkDADcDACAFQcgAakEYaiAIKQMANwMAIAVByABqQQxqIAQoAgA2AgAgBSAFKQPoATcDWCAFIAUpA4gBNwJMIAUgAzYCSAJAAkAgA0EFRw0AIAIQiAggASgCaEGAgICAeEYNBCAFQdgBaiAGIAcgAiAFQShqIAVByABqENkHAkAgBSgC2AFBKEYNAAJAQdAARSIBDQAgBUGIAWogBUHYAWpB0AD8CgAACwJAIAENACAFQdgBakEEaiAFQYgBakHQAPwKAAALIABBAzYCAEHUAEUNAiAAQQRqIAVB2AFqQdQA/AoAAAwCCyAAQQU2AgAgBUHIAGoQ4w4CQCAFLwEwIgBBAkYNACAARQ0AIAUoAjQiAEUNACAFKAI4IABBARC+GAsgBS8BECIAQQJGDQYgAEUNBiAFKAIUIgBFDQYgBSgCGCAAQQEQvhgMBgsgAEEBNgIACyAFQcgAahDjDgsCQCAFLwEwIgBBAkYNACAARQ0AIAUoAjQiAEUNACAFKAI4IABBARC+GAsgBS8BECIAQQJGDQMgAEUNAyAFKAIUIgBFDQMgBSgCGCAAQQEQvhgMAwtBqMXAABDaGAALQbjFwAAQ2hgACyAEQYQISQ0AIAQQrxELIAVBsAJqJAALgw0CCX8EfiMAQeABayIFJAAgBUGQAWogASACELoBAkACQAJAIAUoApABIgJBK0YNACAFQcgAaiIBIAVBkAFqQSRqKAIANgIAIAVBKGpBGGoiBiAFQZABakEcaikCADcDACAFQShqQRBqIgcgBUGQAWpBFGopAgA3AwAgBUEoakEIaiIIIAVBnAFqKQIANwMAIAVB0ABqQQhqIgkgBUHBAWopAAA3AwAgBUHQAGpBEGoiCiAFQZABakE5aikAADcDACAFQdAAakEYaiILIAVBkAFqQcEAaikAADcDACAFQe8AaiIMIAVB2AFqKQAANwAAIAUgBSkClAE3AyggBSAFKQC5ATcDUCAFLQC4ASENIABBLGogASgCADYCACAAQSRqIAYpAwA3AgAgAEEcaiAHKQMANwIAIABBFGogCCkDADcCACAAIAUpAyg3AgwgACAFKQNQNwAxIABBOWogCSkDADcAACAAQcEAaiAKKQMANwAAIABByQBqIAspAwA3AAAgAEHQAGogDCkAADcAACAAIA06ADAgACACNgIIIABCADcDAAwBCyAFQcQAaiAFQZABakEgaikDACIONwIAIAVBPGogBUGQAWpBGGopAwAiDzcCACAFQTRqIAVBkAFqQRBqKQMAIhA3AgAgBSAFKQOYASIRNwIsIAVBCGpBGGogDjcDACAFQQhqQRBqIA83AwAgBUEQaiAQNwMAIAUgETcDCCABQSBqIgIQiAgCQAJAIAEoAmhBgICAgHhGDQAgBUGQAWogAUH4AGoiByABQbANaiIIIAIgBUEIaiAD/AMQqAICQCAFKAKQASIGQSdGDQAgACAFKQO4ATcDMCAFQfAAaiIBIAVBkAFqQSRqKAIANgIAIAVB6ABqIgIgBUGQAWpBHGopAgA3AwAgBUHgAGoiByAFQZABakEUaikCADcDACAFQdgAaiIIIAVBnAFqKQIANwMAIABBOGogBUHAAWopAwA3AwAgAEHAAGogBUGQAWpBOGopAwA3AwAgAEHIAGogBUGQAWpBwABqKQMANwMAIABB0ABqIAVBkAFqQcgAaikDADcDACAFIAUpApQBNwNQIABBLGogASgCADYCACAAQSRqIAIpAwA3AgAgAEEcaiAHKQMANwIAIABBFGogCCkDADcCACAAIAUpA1A3AgwgACAGNgIIIABCAjcDACAFLwEQIgBBAkYNAyAARQ0DIAUoAhQiAEUNAyAFKAIYIABBARC+GAwDCyAFQShqQQhqIAVBkAFqQRBqIgYpAwA3AwAgBUEoakEQaiAFQZABakEYaiIJKQMANwMAIAVBKGpBGGogBUGQAWpBIGoiCikDADcDACAFIAUpA5gBNwMoIAVBkAFqIAEgBBCNAQJAAkACQCAFKAKQASIEQQVGDQAgAEIBNwMAAkAgBEEHRg0AIAVBkAFqEOMODAILAkACQAJAIAUoApQBIgBB+P///wdqQQAgAEH3////B2pBBUkbDgUABAQBAgQLIAVBkAFqQQRyEJkPDAMLIAUoApgBIgBBhAhJDQIgABCvEQwCCyAFKAKYASIAQYQISQ0BIAAQrxEMAQsgBUHQAGpBOGogBUGQAWpBOGopAwA3AwAgBUHQAGpBMGogBUGQAWpBMGopAwA3AwAgBUHQAGpBKGogBUGQAWpBKGopAwA3AwAgBUHQAGpBIGogCikDADcDACAFQdAAakEYaiAJKQMANwMAIAVB0ABqQRBqIAYpAwA3AwAgBUHQAGpBCGogBUGQAWpBCGopAwA3AwAgBSAFKQOQATcDUCACEIgIIAEoAmhBgICAgHhGDQMgBUGQAWogByAIIAIgBUEoaiAFQdAAahDZByAFKAKQAUEoRg0BAkBB0ABFDQAgAEEIaiAFQZABakHQAPwKAAALIABCAzcDACAFQdAAahDjDgsCQCAFLwEwIgBBAkYNACAARQ0AIAUoAjQiAEUNACAFKAI4IABBARC+GAsgBS8BECIAQQJGDQQgAEUNBCAFKAIUIgBFDQQgBSgCGCAAQQEQvhgMBAsgAEIENwMAIAVB0ABqEOMOAkAgBS8BMCIAQQJGDQAgAEUNACAFKAI0IgBFDQAgBSgCOCAAQQEQvhgLIAUvARAiAEECRg0DIABFDQMgBSgCFCIARQ0DIAUoAhggAEEBEL4YDAMLQejEwAAQ2hgAC0G4xcAAENoYAAsgBEGECEkNACAEEK8RCyAFQeABaiQAC/kMAg1/BH4jAEHQAWsiBSQAIAUgAjYCDCAFQQA2AqABIAVCgICAgIABNwKYASABKAIoIQIgBSAFQQxqNgKkAQJAAkAgAkGAgICAeEYNACABKAIsIQYgASgCMCEHIAEoAiAhCCABKAIkIQkgBUGYAWpB7IHCABCEDiAFKAKcASICQgA3AxAgAiAIIAlBBXRqNgIMIAIgCDYCCCACIAYgB0E4bGo2AgQgAiAGNgIAIAJBADYCKCACQRhqQgA3AwAgAkEgakEANgIAIAVBATYCoAFBASEIAkACQANAAkAgBSgCnAEiCiAIQTBsIgtqIgZBUGoiBygCACICIAZBVGooAgBGDQAgBSgCpAEhDCAHIAJBOGo2AgAgBkF4aiIJKAIAIQ0gBUEwakEIaiIOIAZBbGoiB0EIaigCADYCACAJIA0gAigCGGo2AgAgBkFoaiIJIAIoAgggCSgCACIPaiIQNgIAIAZBYGoiCSACKQMAIAkpAwAiEnw3AwAgBykCACETIAZBcGoiCSACKAIQIgYgCSgCACIJIAYgCUsbIAYgCRs2AgAgByACKAIMIgYgBygCACIJIAYgCUkbIAkgBhsgBiAJGzYCACAFIBM3AzAgDCgCACAQTw0AIAVBiAFqQQhqIgYgDigCADYCACAFIAUpAzA3A4gBIAIoAiAiByACKAIkQQV0aiEJIAIoAiwiDCACKAIwQThsaiEQAkAgCCAFKAKYAUcNACAFQZgBakGoyMEAEIQOIAUoApwBIQoLIAogC2oiAiAPNgIYIAIgEjcDECACIAk2AgwgAiAHNgIIIAIgEDYCBCACIAw2AgAgAiAFKQOIATcCHCACIA02AiggAkEkaiAGKAIANgIAIAUgCEEBaiIINgKgASAIDQEMAgsgBUEwaiAFQZgBahDnCQJAIAUoAkwiAkUNACAFQRBqQRhqIAVBMGpBGGooAgA2AgAgBUEQakEQaiAFQTBqQRBqKQMANwMAIAVBEGpBCGogBUEwakEIaikDADcDACAFIAUpAzA3AxAMAwsgBSgCoAEiCA0ACwsgASgCGCIIRQ0BIAEhAgJAIAEoAjAiBkUNACABIQIDQCACKAIsIAZBOGxqIgZBSGohAiAGQXhqKAIAIgYNAAsLIAIoAiQiBkUNAiACKAIgIAZBBXRqQWBqIgJFDQIgBUEQaiABEIYGIAUgCEF/ajYCKAsCQCAFKAKYASIGRQ0AIAUoApwBIAZBMGxBCBC+GAsgAigCHCIIKAIMIQYgCCgCECEIIAVBMGpBIGpCADcDACAFQTBqQShqQgA3AwAgBUEwakEwakIANwMAIAVB6ABqQQA2AgAgAigCECEOIAIpAwAhFCAFQZgBakEwakEANgIAIAVBmAFqQShqQgA3AwAgBUGYAWpBIGpCADcDACAFQZgBakEYakIANwMAIAVBMGpBEGogBUGgAWopAwA3AwAgBUEwakEYaiAFQZgBakEQaikDADcDACAFQgA3AzAgBSAINgJ0IAUgBjYCcCAFIAUpA5gBNwM4IAUgFDcDeCAFIA42AoABIAIoAhghDCACKAIUIQogBSgCKCERIAUpAxAhFSAFKAIYIQ8gBSgCHCELIAUoAiAhECAFKAIMIQIgBUGYAWogBUEwaiAGIAgQ9g0CQAJAAkAgBSgCmAEiCEEDRg0AIAVB+ABqIQ0gAiAPayEGA0AgBSAFKAKAASAFKAKoASICazYCgAEgBSkDoAEhEiAFKAKcASEHQgAhEwJAIAhBAkYNACASIRMCQCAIQQFxDQAgBykDACETCyATQoCAgIAQIBNCgICAgBBUG0L/////D4MhEwsgBSgCrAEhCSANIBMgAq1+ELEWIAIgBksNAiAFQZgBaiAFQTBqIAUoAnAgBSgCdBD2DSAGIAJrIQYgBSgCmAEiCEEDRw0ACwsMAQsgAiAGayECCwJAQdgARQ0AIAAgBUEwakHYAPwKAAALIAAgBDYCmAEgACADNgKgASAAIAE2ApABIAAgEUEBajYCiAEgACAOIA9qNgJ4IAAgFCAVfDcDcCAAIAk2AmwgACACNgJoIAAgEjcDYCAAIAc2AlwgACAINgJYIAAgBSgCDDYCnAEgACAMIBAgDCAQSxsgDCAQGzYCgAEgACAKIAsgCiALSRsgCyAKGyAKIAsbNgJ8IAVB0AFqJAAPC0H8gcIAQSJBoILCABDOEwALQbCCwgAQ2hgAC70MAhR/A34jAEHgAGsiAiQAIAIgADYCCCACIAAoAhgiAzYCDCACQRBqQRBqIABBEGopAwA3AwAgAkEQakEIaiAAQQhqKQMANwMAIAIgACkDADcDEAJAAkACQAJAAkAgASAAKAIwIgRPDQAgAiAAKAIsIAFBOGxqIgUoAhgiBjYCKCAFKAIkIgdBHk0NARCxGiAHQXBqIghBBXQiBEEIEPsXIglFDQIgBUEQNgIkAkAgBEUNACAJIAUoAiBBgARqIAT8CgAACwJAIAUoAjAiBA0AQQghCkEAIQsMBQsCQCAEQRBJDQAgBEFwaiILQThsIQQCQCALDQBBCCEKDAULELEaIARBCBD7FyIKDQRBCCAEQeyEwgAQ5hYAC0EQIARB7ITCABDiEQALIAEgBEGUhMIAEOMRAAtBpITCAEEmQcyEwgAQzhMAC0EIIARB3ITCABDmFgALIAVBEDYCMCAERQ0AIAogBSgCLEGAB2ogBPwKAAALAkACQAJAAkAgBSgCJCIERQ0AIAUgBEF/aiIENgIkIAUoAiAgBEEFdGoiBCgCHCIMRQ0AIAQoAhghDSAEKAIUIQ4gBCgCECEPIAQpAwghFiAEKQMAIRcgBRD1B0EAIRBBACERAkAgC0UNACALQQNxIRICQAJAIAtBBE8NAEEAIRFBACETDAELIApBwAFqIQQgC0F8cSEUQQAhEUEAIRMDQCAEKAIAIARBSGooAgAgBEGQf2ooAgAgBEHYfmooAgAgEWpqamohESAEQeABaiEEIBQgE0EEaiITRw0ACwsgEkUNACATQThsIApqQRhqIQQDQCAEKAIAIBFqIREgBEE4aiEEIBJBf2oiEg0ACwsgESAIaiEVIAdBBXRBgHxqIQdCACEYQQAhFEEAIQRBACERA0AgCSAQaiISQRhqKAIAIhMgESATIBFLGyATIBEbIREgEkEUaigCACITIAQgEyAESRsgBCATGyATIAQbIQQgEikDACAYfCEYIBJBEGooAgAgFGohFCAHIBBBIGoiEEcNAAsCQCALRQ0AIAohEiALIRADQCASQRBqKAIAIhMgESATIBFLGyATIBEbIREgEkEMaigCACITIAQgEyAESRsgBCATGyATIAQbIQQgEikDACAYfCEYIBJBCGooAgAgFGohFCASQThqIRIgEEF/aiIQDQALCwJAAkAgACgCMCITIAFBAWoiEEkNACAFKAIYIQcCQCATIABBKGoiEigCAEcNACASQYyFwgAQiA4LIAAoAiwgEEE4bGohEgJAIBMgEE0NACATIBBrQThsIhBFDQAgEkE4aiASIBD8CgAACyASIAs2AjAgEiAKNgIsIBIgCzYCKCASIAg2AiQgEiAJNgIgIBIgCDYCHCASIBU2AhggEiARNgIQIBIgBDYCDCASIBQ2AgggEiAYNwMAIAAgE0EBajYCMCAAKAIkIhEgAUkNAQJAIBEgAEEcaiIEKAIARw0AIARBnIXCABDHDgsgACgCICABQQV0aiEEAkAgESABTQ0AIBEgAWtBBXQiEkUNACAEQSBqIAQgEvwKAAALIAQgDDYCHCAEIA02AhggBCAONgIUIAQgDzYCECAEIBY3AwggBCAXNwMAIAAgEUEBajYCJCACIBUgB2pBAWoiBDYCLCAEIAZHDQMgAiAAKAIYIgQ2AjwgAyAERw0EIAIgADYCRCAAKAIIIQQgAigCGCERIAIgAkEQajYCQCARIARHDQUgAikDECAAKQMAUg0FIAAoAgwhBAJAAkAgAigCHCIRRQ0AIBEgBEYNAQwHCyAEDQYLIAAoAhAhBAJAAkAgAigCICIRDQAgBA0HDAELIBEgBEcNBgsgAkHgAGokAA8LIBAgE0GMhcIAEOARAAsgASARQZyFwgAQ4BEAC0H8hMIAENoYAAsgAkEBNgJcIAJBnIPCADYCWCACQQE2AlQgAkEBNgJMIAJBlIPCADYCSCACQcoBrUIghiACQQhqrYQ3AzAgAiACQTBqNgJQQQAgAkEsaiACQShqIAJByABqQayFwgAQqBQACyACQQA2AkhBACACQQxqIAJBPGogAkHIAGpBvIXCABCoFAALIAJBADYCSEEAIAJBwABqIAJBxABqIAJByABqQcyFwgAQjxQAC48OAg5/An4jAEHwF2siBCQAIARBEGogAUHgA2oiBSACEM8LIAQoAhQhBiAEKAIQIQcCQAJAAkACQCADKAIAIghBgICAgHhGDQAgAygCCCIJQQJ0IQJBACEKIAlB/////wNLDQIgAkH8////B0sNAiADKAIEIQsCQAJAIAINAEEEIQxBACENDAELELEaQQQhCiAJIQ0gAkEEEPsXIgxFDQMLAkAgAkUNACAMIAsgAvwKAAALIAQgCTYCuAsgBCAMNgK0CyAEIA02ArALIAMhDgwBCyAEQYCAgIB4NgKwC0EAIQ4LIARBGGogBSAHIAYgBEGwC2ogAS0AnA8iDxD5CyAEQQA2AqwLIARCgICAgIABNwKkCwJAQYgLRQ0AIARBsAtqIARBGGpBiAv8CgAACyAEQYAXaiAEQbALahDhASAEKAKAFyIJQQVGDQEgBEGAF2pBCGohECAEQbwWakEIaiERIARBvBZqQQRqIQwgBEGAF2pBBGohDQNAIAwgDSkCADcCACAMQRBqIA1BEGopAgA3AgAgDEEIaiANQQhqKQIANwIAIAQgCTYCvBYCQAJAAkACQAJAAkACQAJAAkACQCAJQQRHDQAgBCAEKQLAFjcC2BYgBEGAF2ogBSAEQdgWaiAOIA8QygMgBCgCgBdBBUYNASAEQYAXahDmDgJAQQAoApS5RyIBQQVGDQAgAUEDSw0AAkBBAC0AwLhHIgFBf2pBAkkNACABRQ0BQbi4xwAQrgtB/wFxIgFFDQELQQAoAri4RyABEM8JRQ0AQQAoAri4RyEBIARBvKLCADYC3BYgBEEANgKQFyAEQQE2AoQXIARBoLjCADYCgBcgBEIENwKIFyAEIARBgBdqNgLYFiAEIAFBHGo2AuwWIARBATYC6BYgBEEBNgLgFiAEIARB2BZqNgLkFiABIARB4BZqEOIKC0EAKALwvUdBAUcNBUEAKQOAvkchEkEAKQP4vUchEwwGCyAEKALIFiELIAQoAswWIQogBCAEKALQFiIBNgLsFyAEIAo2AugXIARBEDoA5BcgBEGBgIiAATYC4BcgBCABNgLcFyAEIAE2AtgXIARBAjoA1BcgBEIANwLMFyAEQQA2AsQXIARBADYCvBcgBEEANgK0FyAEQRA6ALAXIARBgYCIgAE2AqwXIAQgATYCqBcgBEEANgKkFyAEQQI6AKAXIARCADcCmBcgBEEANgKQFyAEQQA2AogXIARBADYCgBcgBEEIaiAEQYAXahDcAQJAIAQoAggiBkUNACAEKAIMIQEDQEEAIQIgAUEASA0IAkACQCABDQBBASEHDAELELEaQQEhAiABQQEQ+xciB0UNCQsCQCABRQ0AIAcgBiAB/AoAAAsCQCAEKAKsCyIGIAQoAqQLRw0AIARBpAtqQcD/wgAQxw4LIAQoAqgLIAZBBXRqIgIgATYCDCACIAc2AgggAiABNgIEIAJBADYCACAEIAZBAWo2AqwLIAQgBEGAF2oQ3AEgBCgCBCEBIAQoAgAiBg0ACwsCQCALRQ0AIAogC0EBEL4YCyAJDgQIAgMBCAsgBEHgFmpBGGoiBiAQQRhqKQMANwMAIARB4BZqQRBqIgcgEEEQaikDADcDACAEQeAWakEIaiIJIBBBCGopAwA3AwAgBCAQKQMANwPgFgJAIAQoAqwLIgIgBCgCpAtHDQAgBEGkC2pB0P/CABDHDgsgBCgCqAsgAkEFdGoiASAEKQPgFjcDACABQQhqIAkpAwA3AwAgAUEQaiAHKQMANwMAIAFBGGogBikDADcDACAEIAJBAWo2AqwLDAcLIAQoAsAWIgEgASgCACIBQX9qNgIAAkAgAUEBRw0AIAwQ8BMLIAQoAsQWIgEgASgCACICQX9qNgIAIBEhASACQQFHDQYMBQsgBCgCwBYiASABKAIAIgJBf2o2AgAgDCEBIAJBAUcNBQwECyAEKALAFiIBIAEoAgAiAkF/ajYCACAMIQEgAkEBRw0EDAMLIARBgBdqEOkSQQBCATcD8L1HQQAgBCkDiBciEjcDgL5HIAQpA4AXIRMLQQAgE0IBfDcD+L1HAkAgBCgCrAsiAiAEKAKkC0cNACAEQaQLakHg/8IAEMcOCyAEKAKoCyACQQV0aiIBQQApA+DIQTcDACABIBI3AxggASATNwMQIAFBCGpBACkD6MhBNwMAIAQgAkEBajYCrAsMAgsgAiABQYCZwgAQ5hYACyABEPATCyAEQYAXaiAEQbALahDhASAEKAKAFyIJQQVHDQAMAgsLIAogAkGAmcIAEOYWAAsgBEGwC2oQ7AsgAEEMaiAEQaQLakEIaigCADYCACAAIAQpAqQLNwIEIABBJzYCAAJAIAhBgICAgHhyQYCAgIB4Rg0AIAMoAgQgCEECdEEEEL4YCyAEQfAXaiQAC+wMAg1/BH4jAEHQAWsiBSQAIAUgAjYCDCAFQQA2AqABIAVCgICAgIABNwKYASABKAIoIQIgBSAFQQxqNgKkAQJAAkAgAkGAgICAeEYNACABKAIsIQYgASgCMCEHIAEoAiAhCCABKAIkIQkgBUGYAWpB7IHCABCEDiAFKAKcASICQgA3AxAgAiAIIAlBBXRqNgIMIAIgCDYCCCACIAYgB0E4bGo2AgQgAiAGNgIAIAJBADYCKCACQRhqQgA3AwAgAkEgakEANgIAIAVBATYCoAFBASEIAkACQANAAkAgBSgCnAEiCiAIQTBsIgtqIgZBUGoiBygCACICIAZBVGooAgBGDQAgBSgCpAEhDCAHIAJBOGo2AgAgBkF4aiIJKAIAIQ0gBUEwakEIaiIOIAZBbGoiB0EIaigCADYCACAJIA0gAigCGGo2AgAgBkFoaiIJIAIoAgggCSgCACIPaiIQNgIAIAZBYGoiCSACKQMAIAkpAwAiEnw3AwAgBykCACETIAZBcGoiCSACKAIQIgYgCSgCACIJIAYgCUsbIAYgCRs2AgAgByACKAIMIgYgBygCACIJIAYgCUkbIAkgBhsgBiAJGzYCACAFIBM3AzAgDCgCACAQTw0AIAVBiAFqQQhqIgYgDigCADYCACAFIAUpAzA3A4gBIAIoAiAiByACKAIkQQV0aiEJIAIoAiwiDCACKAIwQThsaiEQAkAgCCAFKAKYAUcNACAFQZgBakGoyMEAEIQOIAUoApwBIQoLIAogC2oiAiAPNgIYIAIgEjcDECACIAk2AgwgAiAHNgIIIAIgEDYCBCACIAw2AgAgAiAFKQOIATcCHCACIA02AiggAkEkaiAGKAIANgIAIAUgCEEBaiIINgKgASAIDQEMAgsgBUEwaiAFQZgBahDnCQJAIAUoAkwiAkUNACAFQRBqQRhqIAVBMGpBGGooAgA2AgAgBUEQakEQaiAFQTBqQRBqKQMANwMAIAVBEGpBCGogBUEwakEIaikDADcDACAFIAUpAzA3AxAMAwsgBSgCoAEiCA0ACwsgASgCGCIIRQ0BIAEhAgJAIAEoAjAiBkUNACABIQIDQCACKAIsIAZBOGxqIgZBSGohAiAGQXhqKAIAIgYNAAsLIAIoAiQiBkUNAiACKAIgIAZBBXRqQWBqIgJFDQIgBUEQaiABEIYGIAUgCEF/ajYCKAsCQCAFKAKYASIGRQ0AIAUoApwBIAZBMGxBCBC+GAsgAigCHCIIKAIMIQYgCCgCECEIIAVBMGpBIGpCADcDACAFQTBqQShqQgA3AwAgBUEwakEwakIANwMAIAVB6ABqQQA2AgAgAigCECEOIAIpAwAhFCAFQZgBakEwakEANgIAIAVBmAFqQShqQgA3AwAgBUGYAWpBIGpCADcDACAFQZgBakEYakIANwMAIAVBMGpBEGogBUGgAWopAwA3AwAgBUEwakEYaiAFQZgBakEQaikDADcDACAFQgA3AzAgBSAINgJ0IAUgBjYCcCAFIAUpA5gBNwM4IAUgFDcDeCAFIA42AoABIAIoAhghDCACKAIUIQogBSgCKCERIAUpAxAhFSAFKAIYIQ8gBSgCHCELIAUoAiAhECAFKAIMIQIgBUGYAWogBUEwaiAGIAgQ9Q0CQAJAAkAgBSgCmAEiCEEDRg0AIAVB+ABqIQ0gAiAPayEGA0AgBSAFKAKAASAFKAKoASICazYCgAEgBSkDoAEhEiAFKAKcASEHQgAhEwJAIAhBAkYNACASIRMCQCAIQQFxDQAgBykDACETCyATQgSIQv////8PgyETCyAFKAKsASEJIA0gEyACrX4QsRYgAiAGSw0CIAVBmAFqIAVBMGogBSgCcCAFKAJ0EPUNIAYgAmshBiAFKAKYASIIQQNHDQALCwwBCyACIAZrIQILAkBB2ABFDQAgACAFQTBqQdgA/AoAAAsgACAENgKYASAAIAM2AqABIAAgATYCkAEgACARQQFqNgKIASAAIA4gD2o2AnggACAUIBV8NwNwIAAgCTYCbCAAIAI2AmggACASNwNgIAAgBzYCXCAAIAg2AlggACAFKAIMNgKcASAAIAwgECAMIBBLGyAMIBAbNgKAASAAIAogCyAKIAtJGyALIAobIAogCxs2AnwgBUHQAWokAA8LQfyBwgBBIkGggsIAEM4TAAtBsILCABDaGAAL0wwCEX8CfiMAQZABayIEJAACQAJAAkACQAJAAkACQCABKAJEIgVBAUsNACABKAJYIQYCQAJAAkAgASgCVCIHQX5qIghBAyAIQQNJGw4EAgABAwILIAZBAkYNAQwCCyAGQQJHDQELIAIoAgghCQJAIAdBAUsNACABKAJcIgJFDQAgASgCYCACQQN0QQQQvhgLIAEoAkAhBgJAIAVFDQAgBiECA0ACQCACLQAAQQZHDQAgAkEEaigCACIIQYCAgIB4Rg0AIAhFDQAgAkEIaigCACAIQQEQvhgLIAJBIGohAiAFQX9qIgUNAAsLAkAgASgCPCICDQAgCSECDAILIAYgAkEFdEEIEL4YIAkhAgwBCwJAQegARQ0AIAQgAUHoAPwKAAALIARB1ABqIAQQuQggAigCCCEJIAQoAkQhBSAEKAJAIQogBCgCPCELAkACQAJAAkAgBCgCKCIGRQ0AIAQgCiAEKAIsIgFBBXRqIghBACABIAVJGzYCjAEgASAFTw0FIAhB4I7CABCNCEUNBSAGrSEVAkAgCC0AAEEGRw0AIAgoAgQiAUGAgICAeEYNACABRQ0AIAgoAgggAUEBEL4YCyAIIBU3AwggCEECOgAAIAogBUEFdGohDAwBCyAKIAVBBXRqIQwgCiENIAVFDQELIARB6ABqQQFyIg5BCGohDyAOQRBqIRAgDkEXaiERIAohDQNAIA0iBUEgaiENIAUtAAAiEkEJRg0BIA4gBSkAATcAACAPIAVBCWopAAA3AAAgECAFQRFqKQAANwAAIBEgBUEYaikAADcAACAEIBI6AGgCQAJAAkACQAJAIBJBf2pBACASQX5qQf8BcUEHSRsiEw4EAQAAAgALIARB6ABqIAIQ7wMMAwsgBCgCcCEUIAQoAmwhBQJAIBJBAXFFDQAgFCAFSQ0JIBQgBCgChAEiCEsNCiAEKAKAASEGAkAgFCAFayIIIAIoAgAgAigCCCIBa00NACACIAEgCEEBQQEQhwwgAigCCCEBCwJAIAhFDQAgAigCBCABaiAGIAVqIAj8CgAACyACIAEgCGo2AggMAwsgBCAUNgKMASAEQYwBaiAUIAVBAXEbIggoAgAiBSADKAIIIgFPDQogAygCBCAFQQN0aiIFQQRqIAggBSgCABs1AgAhFSACKAIIIQUDQCAVp0H/AHEgFUL/AFYiAUEHdHIhBgJAAkAgAigCACAFRg0AIAUhCAwBCyACIAVBAUEBQQEQhwwgAigCCCEICyAVQgeIIRUgAiAIQQFqIgU2AgggAigCBCAIaiAGOgAAIAENAAwCCwsgBCkDeCEVIAQgBCgCdCIHNgKMASACKAIIIQUgBCgCcCEUA0AgFULAAHwiFkL/AFZBB3QgFadB/wBxciEGAkACQCACKAIAIAVGDQAgBSEIDAELIAIgBUEBQQFBARCHDCACKAIIIQgLIBVCB4chFSACIAhBAWoiBTYCCCACKAIEIgEgCGogBjoAACAWQoABWg0ACyAEQYwBaiAHIBQbIgYoAgAiCCADKAIIIgdPDQogAygCBCAIQQN0aiIIQQRqIAYgCCgCABs1AgAhFQNAIBWnQf8AcSAVQv8AViIGQQd0ciEHAkACQCACKAIAIAVGDQAgBSEIDAELIAIgBUEBQQFBARCHDCACKAIEIQEgAigCCCEICyAVQgeIIRUgAiAIQQFqIgU2AgggASAIaiAHOgAAIAYNAAsLAkAgEw4EAQAAAQALIBJBBkcNACAEKAJsIgVBgICAgHhyQYCAgIB4Rg0AIBQgBUEBEL4YCyANIAxHDQAMAgsLIAwgDUYNACAMIA1rQQV2IQUDQAJAIA0tAABBBkcNACANQQRqKAIAIghBgICAgHhGDQAgCEUNACANQQhqKAIAIAhBARC+GAsgDUEgaiENIAVBf2oiBQ0ACwsCQCALRQ0AIAogC0EFdEEIEL4YCyACKAIIIQIgBCgCVEEBSw0AIAQoAlwiBUUNACAEKAJgIAVBA3RBBBC+GAsgACACNgIEIAAgCTYCACAEQZABaiQADwsgBEEANgJoQQAgBEGMAWpBgI/CACAEQegAakGEj8IAEJsUAAsgBSAUQfSMwgAQ2RgACyAUIAhB9IzCABDYGAALIAUgAUHIxMIAEOMRAAsgCCAHQcjEwgAQ4xEAC84MAg1/BX4jAEHQAWsiBSQAIAUgAjYCDCAFQQA2AqABIAVCgICAgIABNwKYASABKAIoIQIgBSAFQQxqNgKkAQJAAkAgAkGAgICAeEYNACABKAIsIQYgASgCMCEHIAEoAiAhCCABKAIkIQkgBUGYAWpB7IHCABCEDiAFKAKcASICQgA3AxAgAiAIIAlBBXRqNgIMIAIgCDYCCCACIAYgB0E4bGo2AgQgAiAGNgIAIAJBADYCKCACQRhqQgA3AwAgAkEgakEANgIAIAVBATYCoAFBASEIAkACQANAAkAgBSgCnAEiCiAIQTBsIgtqIgZBUGoiBygCACICIAZBVGooAgBGDQAgBSgCpAEhDCAHIAJBOGo2AgAgBkF4aiIJKAIAIQ0gBUEwakEIaiIOIAZBbGoiB0EIaigCADYCACAJIA0gAigCGGo2AgAgBkFoaiIJIAIoAgggCSgCACIPaiIQNgIAIAZBYGoiCSACKQMAIAkpAwAiEnw3AwAgBykCACETIAZBcGoiCSACKAIQIgYgCSgCACIJIAYgCUsbIAYgCRs2AgAgByACKAIMIgYgBygCACIJIAYgCUkbIAkgBhsgBiAJGzYCACAFIBM3AzAgDCgCACAQTw0AIAVBiAFqQQhqIgYgDigCADYCACAFIAUpAzA3A4gBIAIoAiAiByACKAIkQQV0aiEJIAIoAiwiDCACKAIwQThsaiEQAkAgCCAFKAKYAUcNACAFQZgBakGoyMEAEIQOIAUoApwBIQoLIAogC2oiAiAPNgIYIAIgEjcDECACIAk2AgwgAiAHNgIIIAIgEDYCBCACIAw2AgAgAiAFKQOIATcCHCACIA02AiggAkEkaiAGKAIANgIAIAUgCEEBaiIINgKgASAIDQEMAgsgBUEwaiAFQZgBahDnCQJAIAUoAkwiAkUNACAFQRBqQRhqIAVBMGpBGGooAgA2AgAgBUEQakEQaiAFQTBqQRBqKQMANwMAIAVBEGpBCGogBUEwakEIaikDADcDACAFIAUpAzA3AxAMAwsgBSgCoAEiCA0ACwsgASgCGCIIRQ0BIAEhAgJAIAEoAjAiBkUNACABIQIDQCACKAIsIAZBOGxqIgZBSGohAiAGQXhqKAIAIgYNAAsLIAIoAiQiBkUNAiACKAIgIAZBBXRqQWBqIgJFDQIgBUEQaiABEIYGIAUgCEF/ajYCKAsCQCAFKAKYASIGRQ0AIAUoApwBIAZBMGxBCBC+GAsgAigCHCIIKAIMIQYgCCgCECEIIAVBMGpBIGpCADcDACAFQTBqQShqQgA3AwAgBUEwakEwakIANwMAIAVB6ABqQQA2AgAgAigCECEOIAIpAwAhFCAFQZgBakEwakEANgIAIAVBmAFqQShqQgA3AwAgBUGYAWpBIGpCADcDACAFQZgBakEYakIANwMAIAVBMGpBEGogBUGgAWopAwA3AwAgBUEwakEYaiAFQZgBakEQaikDADcDACAFQgA3AzAgBSAINgJ0IAUgBjYCcCAFIAUpA5gBNwM4IAUgFDcDeCAFIA42AoABIAIoAhghDCACKAIUIQogBSgCKCERIAUpAxAhFSAFKAIYIQ8gBSgCHCELIAUoAiAhECAFKAIMIQIgBUGYAWogBUEwaiAGIAgQ/Q4CQAJAAkAgBS0AmAEiCEEDRg0AIAVB+ABqIQcgAiAPayECIAVBnwFqIQkgBUGdAWohDQNAIAUgBSgCgAEgBSgCoAEiBms2AoABIAkxAAAhEyANMwAAIRIgBTUAmQEhFiAHQgAQsRYgBiACSw0CIAVBmAFqIAVBMGogBSgCcCAFKAJ0EP0OIAIgBmshAiAFLQCYASIIQQNHDQALC0IDIRMMAQsgFiATQjCGIBJCIIaEhEIIhiAIrUL/AYOEIRMgBiACayECCwJAQdgARQ0AIAAgBUEwakHYAPwKAAALIAAgBDYCjAEgACADNgKUASAAIAI2AogBIAAgEzcDgAEgACABNgJ4IAAgEUEBajYCcCAAIA4gD2o2AmAgACAUIBV8NwNYIAAgBSgCDDYCkAEgACAMIBAgDCAQSxsgDCAQGzYCaCAAIAogCyAKIAtJGyALIAobIAogCxs2AmQgBUHQAWokAA8LQfyBwgBBIkGggsIAEM4TAAtBsILCABDaGAAL0Q0CC38CfiMAQSBrIgIkAAJAIAApAwBQRQ0AIABCATcDACAAIAE1AhA3AwgLIABB+ARqIQMCQAJAIAEoAhgiBA0AIAJBAjYCACACQQE2AgggACAAQcwFaiADIAIQtgMgACgCyAVqNgLIBSACQQI2AgAgAkEBNgIQIABBEGogAEEwaiACENgCIQMMAQsgAiABKAIcNgIEIAJBATYCACACQQE2AgggACAAQcwFaiADIAIQtgMgACgCyAVqNgLIBSACIAStNwMIIAJBATYCACACQQE2AhAgAEEQaiAAQTBqIAIQ2AIhAwsgACAAKAKAASADajYCgAEgAEHgBWohAwJAAkAgASgCICIFQYGAgIB4RyIERQ0AQQIhBgwBC0EBQQIgASgCJCABKAIoIgdyGyEGCyACIAc2AgQgAiAGNgIAIAJBATYCCCAAIABBtAZqIAMgAhC2AyAAKAKwBmo2ArAGIABBiAFqIQMCQAJAAkACQAJAIAQNACAAKQOoASENIAAgASgCJCIIrSIONwOoASACQQE2AhAgAkEBNgIAIAIgDiANfTcDCCAAIAMgAEGwAWogAhDmAiAAKAKAAmo2AoACQYGAgIB4IQQMAQsgAkECNgIAIAJBATYCECAAIAMgAEGwAWogAhDmAiAAKAKAAmo2AoACQYCAgIB4IQQgASgCKCEDIAEoAiQhCAJAIAVBgICAgHhHDQAgCCEGDAELQQAhBCADQQBIDQECQAJAIAMNAEEBIQYMAQsQsRpBASEEIANBARD7FyIGRQ0CCwJAIANFDQAgBiAIIAP8CgAACyADIQQLIAIgAzYCCCACIAY2AgQgAiAENgIAIAJBATYCDCAAIABB2AlqIABB8AlqIAIQ+gIgACgCwApqNgLACiAAKAKYCCEDIAEtAEUiBCAALQCcCCIGRg0BAkACQCADDQAgAC0AnQgNAQsgAiAGOgAQIAJBAzoAACACIAOtIg03AwggAEGgCGogAiADIA0QwxOnEIsEIABBAToAnQgLIAAgBDoAnAhBASEDDAILIAQgA0GAmcIAEOYWAAsgA0EBaiEDCyAAIAM2ApgIIAAgACgC8AhBAWo2AvAIIAIgATEAREIIhkIBhDcDACACQQE2AgggACAAQYAIaiAAQbAHaiACEKICIAAoApQIajYClAggAiABEJUPNwMIIAJBATYCACACQQE2AhAgACAAQYgCaiAAQagCaiACENoCIAAoAvgCajYC+AIgAiABENoFAkAgAigCACIEQYGAgIB4Rg0AIAIoAgQhBwJAIAIoAggiAyAAKALMCyAAKALUCyIGa00NACAAQcwLaiAGIANBAUEBEIcMIAAoAtQLIQYLAkAgA0UNACAAKALQCyAGaiAHIAP8CgAACyAAIAYgA2o2AtQLIARBgICAgHhyQYCAgIB4Rg0AIAcgBEEBEL4YCyACIAEoAkAiA603AwggAkEBNgIAIAJBATYCECAAIABBgANqIABBoANqIAIQ2AIgACgC8ANqNgLwAyABKAI8IQkgASgCOCEKAkAgA0UNACAJIANBA3RqIQQgAEGgBGohBiAAQfgDaiEHIABBnAdqIQsgAEHIBmohDCAJIQMDQCADNQIAIQ0gAiADQQRqKAIANgIEIAJBATYCACACQQE2AgggACALIAwgAhC2AyAAKAKYB2o2ApgHIAApA5gEIQ4gACANNwOYBCACQQE2AhAgAiANIA59NwMIIAJBATYCACAAIAcgBiACEOYCIAAoAvAEajYC8AQgA0EIaiIDIARHDQALCwJAIApFDQAgCSAKQQN0QQQQvhgLIAAoAvgIIQMCQAJAIAEtAEYiBCAALQD8CCIGRg0AAkACQCADDQAgAC0A/QgNAQsgAiAGOgAQIAJBAzoAACACIAOtIg03AwggAEGACWogAiADIA0QwxOnEIsEIABBAToA/QgLIAAgBDoA/AhBASEDDAELIANBAWohAwsgACADNgL4CCAAIAAoAtAJQQFqNgLQCSACQQhqIAFBNGooAgA2AgAgAkEBNgIMIAIgASkCLDcDACAAIABByApqIABB4ApqIAIQ+gIgACgCsAtqNgKwCwJAIAVBgoCAgHhIDQAgBUUNACAIIAVBARC+GAsCQAJAAkACQAJAAkAgASgCACIAQf////8HaiIDQQggA0EKSRsOCQABBQUFBQUFAgULIAEoAgQiAEGAgICAeHJBgICA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akE4aiAGQfAAakE4aikDADcDACAGQYACakEwaiAGQfAAakEwaikDADcDACAGQYACakEoaiAGQfAAakEoaikDADcDACAGQYACakEgaiAGQfAAakEgaikDADcDACAGQYACakEYaiAGQfAAakEYaikDADcDACAGQYACakEQaiAGQfAAakEQaikDADcDACAGQYACakEIaiAGQfAAakEIaikDADcDACAGIAYpA3A3A4ACCyAGQYADaiAGQfAAaiAIIAsQgAIgBigCgAMiCkEERw0ACwsgBkHIAGpBCGogBkGAA2pBBHIiCkEIaigCADYCACAGIAopAgA3A0ggBigC8AEhBwJAIAYoAvQBIghFDQAgByEKA0ACQCAKLQAAQQZHDQAgCkEEaigCACILQYCAgIB4Rg0AIAtFDQAgCkEIaigCACALQQEQvhgLIApBIGohCiAIQX9qIggNAAsLIAYoAuwBIgpFDQEgByAKQQV0QQgQvhgMAQsgCCALIAZBsAFqIAZBgAJqIAZB8ABqENoEAkBB0ABFDQAgBkGAA2ogBkGwAWpB0AD8CgAACyAGKAKYASEKIAZB1ANqIAZBgANqEIUDIAYoAtgDIAYoAtwDENIHIAZBwAJqIAZB1ANqEPUGIAZBMGpBEGoiCEEANgIAIAZByABqQQhqIgsgBkHAAmpBCGopAwA3AwAgBkHIAGpBEGoiByAGQcACakEQaikDADcDACAGQcgAakEYaiIMIAZBwAJqQRhqKQMANwMAIAZByABqQSBqIgEgBkHAAmpBIGopAwA3AwAgBiAKNgL4AiAGQTBqQQhqIgogBkHAAmpBNGopAgA3AwAgBkEANgL8AiAGIAYpA8ACNwNIIAYgBikC7AI3AzAgBigC6AIiAkGBgICAeEcNAQsgBkEIakEIaiAGQcgAakEIaigCACIKNgIAIAYgBikDSCINNwMIIABBCGogCjYCACAAIA03AwAgAEGBgICAeDYCKAwCCyAAIAYpAzA3AiwgBkEIakEgaiIJIAEpAwA3AwAgBkEIakEYaiAMKQMAIg03AwAgBkEIakEQaiAHKQMAIg43AwAgBkEIakEIaiALKQMAIg83AwAgAEE0aiAKKQMANwIAIABBPGogCCgCADYCACAGIAYpA0giEDcDCCAAQRhqIA03AwAgAEEQaiAONwMAIABBCGogDzcDACAAIBA3AwAgAEEgaiAJKQMANwMAIAAgAjYCKAwBCyAAIAUQpwULIAZB4ANqJAAPCyALIApBmMrCABDZGAALIAogBEGYysIAENgYAAtBCEEgENgZAAuoDAIHfwR+IwBB4ANrIgYkAAJAAkACQAJAAkAgAUUNAANAIAFBeGohByABQdwAaiEIIAEvAYoBIglBAnQhCkF/IQsCQAJAA0ACQCAKDQAgCSELDAILIAgoAgAhDCALQQFqIQsgB0EIaiEHIApBfGohCiAIQQRqIQggDEH3AXEiDEGAAUkgDEGAAUtrQf8BcSIMQQFGDQALIAxFDQELIAJFDQIgAkF/aiECIAEgC0ECdGooAowBIQEMAQsLIAdBBGooAgAiCiAHKAIAIgtJDQIgCiAESw0DIAZB8ABqQShqQgA3AwAgBkHwAGpBMGpCADcDACAGQfAAakE4akEANgIAIAZCADcDkAEgBkIANwNwELEaQSBBCBD7FyIIRQ0EIAhBCDoAACAGQbABakEIakIANwMAIAZBsAFqQRBqQgA3AwAgBkGwAWpBGGpCADcDACAGQbABakEgakIANwMAIAZBsAFqQShqQgA3AwAgBkGwAWpBMGpCADcDACAGQQE2AvQBIAYgCDYC8AEgBkIANwOwASAGQQE6APgBIAZCwICAgBA3A+gBIAZBgAJqQShqQgA3AwAgBkGAAmpBMGpCADcDACAGQYACakE4akEANgIAIAZCADcDoAIgBkIANwOAAiAGQYADaiAGQfAAaiADIAtqIgggCiALayILEKIDAkACQAJAAkAgBigCgAMiCkEERg0AA0AgCkEDRg0CAkAgBigCnAEgBigCrAJrQcAASQ0AIAggCyAGQbABaiAGQYACaiAGQfAAahDbBCAGQbABahC+DSAGQYACakE4aiAGQfAAakE4aikDADcDACAGQYACakEwaiAGQfAAakEwaikDADcDACAGQYACakEoaiAGQfAAakEoaikDADcDACAGQYACakEgaiAGQfAAakEgaikDADcDACAGQYACakEYaiAGQfAAakEYaikDADcDACAGQYACakEQaiAGQfAAakEQaikDADcDACAGQYACakEIaiAGQfAAakEIaikDADcDACAGIAYpA3A3A4ACCyAGQYADaiAGQfAAaiAIIAsQogMgBigCgAMiCkEERw0ACwsgBkHIAGpBCGogBkGA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IwBB0AFrIgYkACAGQYABaiABIAIQugECQAJAAkACQAJAAkACQCAGKAKAASICQStGDQAgBkHoAGoiByAGQYABakEkaigCADYCACAGQcgAakEYaiIBIAZBgAFqQRxqKQIANwMAIAZByABqQRBqIgggBkGAAWpBFGopAgA3AwAgBkHIAGpBCGoiCSAGQYwBaikCADcDACAGQSBqQQhqIgogBkGxAWopAAA3AwAgBkEgakEQaiILIAZBgAFqQTlqKQAANwMAIAZBIGpBGGoiDCAGQYABakHBAGopAAA3AwAgBkE/aiINIAZByAFqKQAANwAAIAYgBikChAE3A0ggBiAGKQCpATcDICAGLQCoASEOIABBLGogBygCADYCACAAQSRqIAEpAwA3AgAgAEEcaiAIKQMANwIAIABBFGogCSkDADcCACAAIAYpA0g3AgwgACAGKQMgNwAxIABBOWogCikDADcAACAAQcEAaiALKQMANwAAIABByQBqIAwpAwA3AAAgAEHQAGogDSkAADcAACAAIA46ADAgACACNgIIIABBADYCAEEBIQcMAQsgBkEIaiAGQYABakEQaikDADcDACAGQRBqIAZBgAFqQRhqKQMANwMAIAZBGGogBkGgAWopAwA3AwAgBiAGKQOIATcDACAGQYABaiAFQae2wQBBCRCrDAJAAkAgBigCgAEiB0GAgICAeEYNAAJAIAdFDQAgBigChAEgB0EBEL4YCwJAIAYoAowBIgdBhAhJDQAgBxCvEQtBAiEJDAELIAYgBigChAE2AoABIAZBgAFqEN4WIQcCQCAGKAKAASIIQYQISQ0AIAgQrxELIAdB/wFxIQkLIAZBgAFqIAMQ/QRBASEHIAYpAogBIQ8gBigChAEhCAJAAkACQCAGKAKAAUEBRw0AIAAgDzcDCCAAIAg2AgQgAEEDNgIADAELAkAgCEGAgICAeEcNACAAQoSAgICAgICAgH83AwBBASEHDAELIAZBgAFqIAQQ/QQgBikCiAEhECAGKAKEASEHIA+nIQoCQAJAIAYoAoABQQFHDQAgACAQNwMIIAAgBzYCBCAAQQM2AgAMAQsCQCAHQYCAgIB4Rw0AIABChICAgICAgICAfzcDAAwBCyAGQYABaiABQSBqIAYgCiAPQiCIpyAQpyILIBBCIIinIAlBAkYgCXJBAXEQ4gkgBkEgakEI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2AIgAEIANwPIAiAAQekCakIANwAAIABCADcC5AIgACAbIBxrNgKQAyAAIAIgHGo2AowDIABBgICAgHg2AogDIABCADcD+AIgAEGZA2pCADcAACAAQgA3ApQDIABBADoA+AQgAEEANgL0BCAAQRo6ANwEIABCADcC1AQgACAfIAFrNgLQBCAAIAIgAWo2AswEIABBgICAgHg2AsgEIABBAToAxAQgAEEANgLABCAAQgA3A7gEIAAgHSAeazYCtAQgACACIB5qNgKwBCAAQYCAgIB4NgKsBCAAQgA3A6gDIARBIGokAA8LIAYgBUHYsMIAENkYAAsgBSADQdiwwgAQ2BgACyAIIAdB2LDCABDZGAALIAcgA0HYsMIAENgYAAsgDSAFQdiwwgAQ2RgACyAFIANB2LDCABDYGAALIA4gBkHosMIAENkYAAsgBiADQeiwwgAQ2BgACyAPIAdB2LDCABDZGAALIAcgA0HYsMIAENgYAAsgECAIQZixwgAQ2RgACyAIIANBmLHCABDYGAALIBIgEUHYsMIAENkYAAsgESADQdiwwgAQ2BgACyAUIBNB2LDCABDZGAALIBMgA0HYsMIAENgYAAsgFiAVQbixwgAQ2RgACyAVIANBuLHCABDYGAALIBggF0HYsMIAENkYAAsgFyADQdiwwgAQ2BgACyAaIBlB2LDCABDZGAALIBkgA0HYsMIAENgYAAsgHCAbQeiwwgAQ2RgACyAbIANB6LDCABDYGAALIB4gHUGoscIAENkYAAsgHSADQaixwgAQ2BgACyABIB9B2LDCABDZGAALIB8gA0HYsMIAENgYAAu1DAIJfwR+IwBBkAJrIgUkACAFQbABaiABIAIQugECQAJAAkACQCAFKAKwASICQStGDQAgBUGoAWoiASAFQbABakEkaigCADYCACAFQYgBakEYaiIGIAVBsAFqQRxqKQIANwMAIAVBiAFqQRBqIgcgBUGwAWpBFGopAgA3AwAgBUGIAWpBCGoiCCAFQbwBaikCADcDACAFQShqQQhqIgkgBUHhAWopAAA3AwAgBUEoakEQaiIKIAVBsAFqQTlqKQAANwMAIAVBKGpBGGoiCyAFQbABakHBAGopAAA3AwAgBUHHAGoiDCAFQfgBaikAADcAACAFIAUpArQBNwOIASAFIAUpANkBNwMoIAUtANgBIQ0gAEEsaiABKAIANgIAIABBJGogBikDADcCACAAQRxqIAcpAwA3AgAgAEEUaiAIKQMANwIAIAAgBSkDiAE3AgwgACAFKQMoNwAxIABBOWogCSkDADcAACAAQcEAaiAKKQMANwAAIABByQBqIAspAwA3AAAgAEHQAGogDCkAADcAACAAIA06ADAgACACNgIIIABBADYCACAEQYQISQ0BIAQQrxEMAQsgBUGkAWogBUGwAWpBIGoiAikDACIONwIAIAVBnAFqIAVBsAFqQRhqIgYpAwAiDzcCACAFQYgBakEMaiAFQbABakEQaikDACIQNwIAIAUgBSkDuAEiETcCjAEgBUEIakEYaiAONwMAIAVBCGpBEGogDzcDACAFQQhqQQhqIBA3AwAgBSARNwMIIAVBsAFqIAEgBBCNASAFQYgBakEIaiIEIAVBsAFqQQxqKAIANgIAIAUgBSkCtAE3A4gBAkACQAJAIAUoArABIgdBB0cNACAAIAUpA4gBNwIEIABBAzYCACAAQQxqIAQoAgA2AgAMAQsgBUEoakE4aiAFQbABakE4aikDADcDACAFQShqQTBqIAVBsAFqQTBqKQMANwMAIAVBKGpBKGogBUGwAWpBKGopAwA3AwAgBUEoakEgaiACKQMANwMAIAVBKGpBGGogBikDADcDACAFQShqQQxqIAQoAgA2AgAgBSAFKQPAATcDOCAFIAUpA4gBNwIsIAUgBzYCKCABQSBqIgQQiAggASgCaEGAgICAeEYNAyAFQYCAgIB4NgKEAiAFIAP8AzYCiAIgBUGwAWogAUH4AGogAUGwDWogBCAFQQhqIAVBhAJqIAVBKGpBARDdAiAFKAKwASIBQSdGDQEgACAFKQPYATcDMCAFQagBaiIEIAVBsAFqQSRqKAIANgIAIAVBoAFqIgIgBUGwAWpBHGopAgA3AwAgBUGYAWoiBiAFQbABakEUaikCADcDACAFQZABaiIHIAVBvAFqKQIANwMAIABBOGogBUHgAWopAwA3AwAgAEHAAGogBUGwAWpBOGopAwA3AwAgAEHIAGogBUGwAWpBwABqKQMANwMAIABB0ABqIAVBsAFqQcgAaikDADcDACAFIAUpArQBNwOIASAAQSxqIAQoAgA2AgAgAEEkaiACKQMANwIAIABBHGogBikDADcCACAAQRRqIAcpAwA3AgAgACAFKQOIATcCDCAAIAE2AgggAEEBNgIAIAVBKGoQ4w4LIAUvARAiAEECRg0BIABFDQEgBSgCFCIARQ0BIAUoAhggAEEBEL4YDAELIAVB8ABqIAVBsAFqQRBqKQMANwMAIAVB6ABqQRBqIAVBsAFqQRhqKQMANwMAIAVB6ABqQRhqIAVB0AFqKQMANwMAIAUgBSkDuAE3A2ggBUEANgKQASAFQoCAgIAQNwKIASAFQZjowAA2ArQBIAVCoICAgA43ArgBIAUgBUGIAWo2ArABIAVB6ABqIAVBsAFqENAPDQIgBSgCiAEhASAFKAKMASICIAUoApABEJIXIQQCQCABRQ0AIAIgAUEBEL4YCyAAQQQ2AgAgACAENgIEAkAgBS8BcCIAQQJGDQAgAEUNACAFKAJ0IgBFDQAgBSgCeCAAQQEQvhgLIAVBKGoQ4w4gBS8BECIAQQJGDQAgAEUNACAFKAIUIgBFDQAgBSgCGCAAQQEQvhgLIAVBkAJqJAAPC0HIxcAAENoYAAtBwOjAAEE3IAVBhAJqQbDowABB+OjAABD4EAALrQwCDX8CfiMAQfABayIDJAACQAJAAkACQAJAIAIoAgBBfGoiBEEDIARBA0kbDgQBAAMCAQsgA0EgakEYaiACQSBqKQMANwMAIANBIGpBEGogAkEYaikDADcDACADQSBqQQhqIAJBEGopAwA3AwAgAyACKQMINwMgIAMQuRoiBTYCdCADQfgAaiADQSBqEMITAkAgAygCkAEiBkUNACADKQN4IRAgAygCgAEhAiADKAKIASEEA0ACQCAQQgBSDQADQCAEQcB6aiEEIAIpAwAhECACQQhqIgchAiAQQoCBgoSIkKDAgH+DIhBCgIGChIiQoMCAf1ENAAsgEEKAgYKEiJCgwIB/hSEQIAchAgsgA0GgAWogBEEAIBB6p0EDdmtB2ABsaiIHQbh/ahDEAiADIAAgASADQaABahCOAzYCmAEgAyAHQax/aigCACAHQbB/aigCABCSFzYCnAEgA0GgAWogA0H0AGogA0GcAWogA0GYAWoQkBMCQCADLQCgAUUNACADIAMoAqQBNgIIQfzDwABBKyADQQhqQYCRwQBBhJjBABD4EAALAkAgAygCnAEiB0GECEkNACAHEK8RCyAQQn98IRECQCADKAKYASIHQYQISQ0AIAcQrxELIBEgEIMhECAGQX9qIgYNAAsgAygCdCEFCyADQSBqEPMIDAMLIANBCGpBEGogAkEYaikDADcDACADQRBqIAJBEGopAwA3AwAgAyACKQMINwMIIANBoAFqIANBCGoQyAggAy8BoAEhAiADIAMoAqQBNgKkASADIAI7AaABIANBIGogACADQaABaiABEJYFAkAgAygCIEE0Rg0AAkBB0ABFDQAgA0GgAWogA0EgakHQAPwKAAALQfzDwABBKyADQaABakHkl8EAQfSXwQAQ+BAACyADKAIkIQUgA0EIahD4DwwCCyADQaABakE4aiACQThqKQMANwMAIANBoAFqQTBqIAJBMGopAwA3AwAgA0GgAWpBKGogAkEoaikDADcDACADQaABakEgaiACQSBqKQMANwMAIANBoAFqQRhqIAJBGGopAwA3AwAgA0GgAWpBEGogAkEQaikDADcDACADQaABakEIaiACQQhqKQMANwMAIAMgAikDADcDoAEgA0EANgIQIANCgICAgBA3AgggA0GY6MAANgIkIANCoICAgA43AiggAyADQQhqNgIgAkAgA0GgAWogA0EgahCLDw0AIAMoAgghAiADKAIMIgQgAygCEBCSFyEFAkAgAkUNACAEIAJBARC+GAsgA0GgAWoQyQsgA0HAAWoQ2gwMAgtBwOjAAEE3IANBnAFqQbDowABB+OjAABD4EAALIANBOGogAkEcaigCADYCACADQTBqIAJBFGopAgA3AwAgA0EoaiACQQxqKQIANwMAIAMgAikCBDcDIBC4GiEFIAMoAiAiCEGAgICAeEYNAAJAAkACQCADKAI0IglFDQBBACEHIANBIGohCkEBIQsMAQsgAygCKCIHRQ0BIAMoAiQhAgNAIANBoAFqIAIQxAIgBSAAIAEgA0GgAWoQjgMiBBDdGBoCQCAEQYQISQ0AIAQQrxELIAJB6ABqIQIgB0F/aiIHDQAMAgsLA0AgCSEEIAohDAJAAkADQCAEQRxsIQ0gDCgCECECQQAhDkEAIQYCQANAAkAgAkEYaigCACAOaiIEIAdLIAQgB0lrQf8BcSIPQf8BRg0AIA8OAgQCBAsgBEEBaiEOIAJBHGohAiAGQQFqIQYgDUFkaiINDQAMBgsLIAcgDmsiBiEHIAIhDCACQRRqKAIAIgQNAAsgBiACQQhqKAIASQ0BDAMLIAwhAiAGIAwoAghPDQIL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QXxqDgIAAQILIAAgBSAEIAMQtAQaIAFBBUsNBAwBCyAAIAUgBBDXARogAUEFSw0BCyADEIsQDAILIAMQqBAMAQsgAC0A1QEhBSADQcAAaiABEOAJAkACQAJAAkACQAJAAkAgAygCUEH/////B2oiBEEEIARBBkkbDgYBAAACAwQACyADQQA2ApABIANBATYChAEgA0GUz8IANgKAASADQgQ3AogBIANBgAFqQdzQwgAQohUACyADIAMtAEAgBRDyBwwECyADQQhqIANBwABqEJQHDAILIANB6ABqIANBwABqEJQHAkACQAJAIAMtAGgiBEElRg0AIAMoAmwhBSAEQSRGDQEgA0GAAWpBEGogA0HoAGpBEGopAwA3AwAgAyADKQNwNwOIASADIAU2AoQBIAMgBDoAgAEgAyADQegAakEBciIELwAAOwCBASADIARBAmotAAA6AIMBDAILAkACQAJAAkAgAy0AaQ4EAAECAwALAkACQEEAKALwvUdBAUcNAEEAKQOAvkchB0EAKQP4vUchCAwBCyADQYABahDpEkEAQgE3A/C9R0EAIAMpA4gBIgc3A4C+RyADKQOAASEICyADQRBqQQApA+jIQTcDACADIAg3AxhBACAIQgF8NwP4vUcgAyAHNwMgIANBBTYCACADQQApA+DIQTcDCAwHCwJAAkBBACgC8L1HQQFHDQBBACkDgL5HIQdBACkD+L1HIQgMAQsgA0GAAWoQ6RJBAEIBNwPwvUdBACADKQOIASIHNwOAvkcgAykDgAEhCAsgA0EQakEAKQPoyEE3AwAgAyAINwMYQQAgCEIBfDcD+L1HIAMgBzcDICADQQU2AgAgA0EAKQPgyEE3AwgMBgsgA0KGgICAgICAgIB/NwMADAULIANBsAFqQQFBACAFEPUEAkACQEEAKALwvUdBAUcNAEEAKQOAvkchB0EAKQP4vUchCAwBCyADQYABahDpEkEAQgE3A/C9R0EAIAMpA4gBIgc3A4C+RyADKQOAASEIC0EAIAhCAXw3A/i9RyADQYABakEgakEAKQPgyEEiCTcDACADQYABakEoakEAKQPoyEEiCjcDACADQYABakEIaiADQbABakEIaikCACILNwMAIANBgAFqQRBqIANBsAFqQRBqKQIAIgw3AwAgA0GAAWpBGGogA0GwAWpBGGopAgAiDTcDACADQSBqIAk3AwAgA0EoaiAKNwMAIANBCGogCzcDACADQRBqIAw3AwAgA0EYaiANNwMAIAMgAykCsAEiCTcDgAEgAyAJNwMAIAMgBzcDOCADIAg3AzAMBAsgA0GAAWogBRDsBQsgA0EYaiADQYABakEQaikDADcDACADQRBqIANBiAFqKQMANwMAIAMgAykDgAE3AwggA0EENgIADAILIANBCGpBnNDCAEEHENoGCyADQQQ2AgALIANBwABqEIsQIAAoAgAhBCABKAKUBCEFIAEoApAEIQYCQAJAIAINACAALQBIIQEMAQsgAC0ASCEBIARBB0YNACABQQFxDQAgAEEBOgBKIAMQ5g4MAQsgBEEHRyABQQFzcSEBAkAgBEEHRg0AIAAQ5g4LIAAgAykDADcDACAAQQA6AEogACABOgBJIAAgAjoASCAAIAU2AkQgACAGNgJAIABBOGogA0E4aikDADcDACAAQTBqIANBMGopAwA3AwAgAEEoaiADQShqKQMANwMAIABBIGogA0EgaikDADcDACAAQRhqIANBGGopAwA3AwAgAEEQaiADQRBqKQMANwMAIABBCGogA0EIaikDADcDAAsgA0HQAWokAAuaCwIFfwF+IwBBoAJrIgckACAHQdABaiACIAQQ7AcgBygC2AEhCCAHKALUASEEAkACQAJAAkACQCAHKALQASIJQSdGDQAgB0HeAGogB0HfAWotAAA6AAAgB0EgaiAHQdABakEYaikDADcDACAHQShqIAdB0AFqQSBqKQMANwMAIAdBGGpBGGogB0HQAWpBKGopAwA3AwAgB0EYakEgaiAHQdABakEwaikDADcDACAHQRhqQShqIAdB0AFqQThqKQMANwMAIAdBGGpBMGogB0GQAmopAwA3AwAgB0EYakE4aiAHQZgCaikDADcDACAHIAcvAN0BOwFcIAcgBykD4AE3AxggBy0A3AEhAgwBCyAHIAg2AtQBIAcgBDYC0AECQCAEDQBBACEIQQAhCQwCCyACQeADaiAHQdABahD4C0H/AXEiCUEERw0BQSIhCQsgACACOgAMIAAgCDYCCCAAIAQ2AgQgACAJNgIAIAAgBy8BXDsADSAAIAcpAxg3AxAgAEEPaiAHQd4Aai0AADoAACAAQRhqIAdBIGopAwA3AwAgAEEgaiAHQShqKQMANwMAIABBKGogB0EY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NwMAIABBwABqIARB8ABqQThqKQMANwMAIABBOGogBEHwAGpBMGopAwA3AwAgAEEwaiAEQfAAakEoaikDADcDACAAQShqIARB8ABqQSBqKQMANwMAIABBIGogBEGIAWopAwA3AwAgAEEUaiABKAIANgIAIAAgBCkDSDcCDCAAIAU2AgggAEECNgIAIANFDQMgAiADQQV0QQEQvhgMAwsgACAEKQNINwIEIABBBjYCACAAQQxqIAEoAgA2AgAgA0UNASACIANBBXRBARC+GAwBCyAEQSBqIAZBACAEEKUNIARB8ABqIAFBsA1qIAQgBEEgahC6CSAEQdAAaiIBIARB8ABqQQxqKAIANgIAIAQgBCkCdDcDSAJAIAQoAnAiA0EnRg0AIAAgBCkDgAE3AxggAEHQAGogBEHwAGpByABqKQMANwMAIABByABqIARB8ABqQcAAaikDADcDACAAQcAAaiAEQfAAakE4aikDADcDACAAQThqIARB8ABqQTBqKQMANwMAIABBMGogBEHwAGpBKGopAwA3AwAgAEEoaiAEQfAAakEgaikDADcDACAAQSBqIARBiAFqKQMANwMAIABBFGogASgCADYCACAAIAQpA0g3AgwgACADNgIIIABBAjYCAAwCCyAAIAQpA0g3AgQgAEEGNgIAIABBDGogASgCADYCAAsgBC8BCCIAQQJGDQEgAEUNASAEKAIMIgBFDQEgBCgCECAAQQEQvhgMAQsgBC8BCCIAQQJGDQAgAEUNACAEKAIMIgBFDQAgBCgCECAAQQEQvhgLIARBwAFqJAAL0woCD38FfiMAQSBrIgMkACACKAIAIgQhBSACKAIIIgYhBwJAAkAgBCAGa0EgTw0AIANBEGogASACEP0JAkACQCADLQAQQQRHDQAgAygCFCEIDAELIAMpAxAiEkIgiKchCCASpyIJQf8BcUEERg0AIAAgCDYCBCAAIAk6AAAgAEEDaiAJQRh2OgAAIAAgCUEIdjsAAQwCCwJAIAhFDQAgAigCACEFIAIoAgghBwwBCyAAQQQ6AAAgAEEANgIEDAELIAFBCGohCkGAwAAhC0EAIQgDQAJAIAcgBUcNACAFIARHDQAgA0EQaiABIAIQ/QkCQAJAIAMtABBBBEcNACADKAIUIQkMAQsgAykDECISQiCIpyEJIBKnIgxB/wFxQQRGDQAgACAJ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BCABQThqQTBqIAcpAwA3AwAgAUE4akEoaiAGKQMANwMAIAFBOGpBIGogCCkDADcDACABQThqQRhqIAkpAwA3AwAgAUE4akEQaiAKKQMANwMAIAFBOGpBCGogCykDADcDACABIAEpA8gBNwM4ELEaQRRBBBD7FyICRQ0CIAJBADYCECACQoCAgIAQNwIIIAJCgYCAgBA3AgAgAUGoAWpBCGoiA0IANwMAIAFBqAFqQRBqIgRCADcDACABQagBakEYaiIFQQA2AgAgASACNgLEASABQgA3A6gBIAFByAFqQShqIgZBgICAgHg2AgAgAUHIAWpBACABQagBahCfBCABQfAAakEwaiIHIAFByAFqQTBqIggpAwA3AwAgAUHwAGpBKGoiCSAGKQMANwMAIAFB8ABqQSBqIgogAUHIAWpBIGoiCykDADcDACABQfAAakEYaiIMIAFByAFqQRhqIg0pAwA3AwAgAUHwAGpBEGoiDiABQcgBakEQaiIPKQMANwMAIAFB8ABqQQhqIhAgAUHIAWpBCGoiESkDADcDACABIAEpA8gBNwNwELEaQRRBBBD7FyICRQ0DIAJBADYCECACQoCAgIAQNwIIIAJCgYCAgBA3AgAgA0IANwMAIARCADcDACAFQQA2AgAgASACNgLEASABQgA3A6gBIAZBgICAgHg2AgAgAUHIAWpBACABQagBahCfBCAAQfABaiAIKQMANwMAIABB6AFqIAYpAwA3AwAgAEHgAWogCykDADcDACAAQdgBaiANKQMANwMAIABB0AFqIA8pAwA3AwAgAEHIAWogESkDADcDACAAIAEpA8gBNwPAASAAQYACahDZCyAAQgA3AzggAEEwaiABQTBqKQMANwMAIABBKGogAUEoaikDADcDACAAQSBqIAFBIGopAwA3AwAgAEEYaiABQRhqKQMANwMAIABBEGogAUEQaikDADcDACAAQQhqIAFBCGopAwA3AwAgACABKQMANwMAIAAgASkDODcDQCAAQcgAaiABQThqQQhqKQMANwMAIABB0ABqIAFBOGpBEGopAwA3AwAgAEHYAGogAUE4akEYaikDADcDACAAQeAAaiABQThqQSBqKQMANwMAIABB6ABqIAFBOGpBKGopAwA3AwAgAEHwAGogAUE4akEwaikDADcDACAAQgA3A3ggAEIANwP4ASAAQgA3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DQIgBSADQQEQvhgMAgtBASEKCyABIAEoAuQDQQFqNgLkAyACIAw3AyAgAkGCgICAeDYCHCACIAk2AhggAyEGAkACQAJAAkACQAJAIANBgICAgHhqDgIBAgALQQAhBiAEQQBIDQMCQAJAIAQNAEEBIQsMAQsQsRpBASEGIARBARD7FyILRQ0ECwJAIARFDQAgCyAFIAT8CgAACyAEIQYgCyEFCyACIAQ2AkwgAiAFNgJIIAIgBjYCRAwBCyACQYGAgIB4NgJEC0ECIQYCQCAKDQAgAiAMNwNwIAJBgoCAgHg2AmwgCSEGCyACIAY2AmggAkEoaiACQcQAaiAHIAggAkHoAGoQogogAigCKEUNASACQQM2AkggAkHs1cIANgJEIAJCAzcCUCACQfEBrUIghiACQRhqrYQ3A3ggAkHyAa1CIIYgAkEQaq2ENwNwIAJB8wGtQiCGIAJBBGqthDcDaCACIAJB6ABqNgJMIAJBOGogAkHEAGoQuAkgAigCOCEDIAIgAigCPCIGIAIoAkAQkhciBzYCaAJAIANFDQAgBiADQQEQvhgLIAJB6ABqEPwZAkAgB0GECEkNACAHEK8RCyACIAEoApgBIgMgASgClAEiByADIAdJGzYCXCACIAEoArQCIgMgASgCsAIiByADIAdJGzYCYCACIAEoAugDIgMgASgC5AMiASADIAFJGzYCZCACQQA2AlQgAkEDNgJIIAJBiNbCADYCRCACQQWtQiCGIgwgAkHkAGqthDcDeCACIAwgAkHgAGqthDcDcCACIAwgAkHcAGqthDcDaCACQQM2AlAgAiACQegAajYCTCACQThqIAJBxABqELgJIAIoAjghASACIAIoAjwiByACKAJAEJIXIgM2AmgCQCABRQ0AIAcgAUEBEL4YCyACQegAahD8GQJAIANBhAhJDQAgAxCvEQsgAigCBCEDDAELIAYgBEGAmcIAEOYWAAsgACACKQIoNwIAIABBCGogAkEoakEIaikCADcCACADQYGAgIB4Rg0AIANBgICAgHhGDQAgA0UNACACKAIIIANBARC+GAsgAkGAAWokAAu0CgILfwJ+AkACQAJAAkACQAJAAkACQAJAAkACQAJAIAApAyAiDSAAKQMAIg5SDQACQAJAIAAvAShBAUcNACAAKAI0IQIgACgCMCEDDAELIAAvASoiAkERTw0D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CgAACyACQfwCaiACQegFakEIaikCADcCACACQYQDaiACQegFakEQaikCADcCACACQYwDaiACQegFakEYaigCADYCACACIA42AvACIAIgHTcD6AIgAiAMNgLkAiACIA02AuACIAIgBzYC9AEgAiAINgLwASACIAk2AuwBIAIgGzcC5AEgAiAENgLgASACIAY2AtgBIAIgBTYC0AEgAiACKQLoBTcC9AIgAiARNgKoAyACIBI2AqQDIAIgEzYCoAMgAiAQNgKYAyACIA82ApADAkBB3ABFDQAgAkGsA2ogAkEEakHcAPwKAAALIAJBpARqIAJBhAZqQQhqKQIANwIAIAJBrARqIAJBhAZqQRBqKQIANwIAIAJBtARqIAJBhAZqQRhqKAIANgIAIAIgFTYCmAQgAiAeNwOQBCACIBQ2AowEIAIgCzYCiAQgAiAKNgLYBCACIBg2AtAEIAIgGTYCzAQgAiAaNgLIBCACIBc2AsAEIAIgFjYCuAQgAiACKQKEBjcCnAQCQAJAIAENACACQeAEaiACQeAAahCCBgJAIAIpA+gEIh1CAlINAEIAIRsMAgtCACEbA0AgGyACKQPwBEIAIB2nQQFxG3whGyACQeAEaiACQeAAahCCBiACKQPoBCIdQgJSDQAMAgsLIAEoAgQhBCABKAIIIQsgAkHgBGogAkHgAGoQggYCQCACKQPoBCIdQgJSDQBCACEbDAELQgAhGwNAAkAgHadBAXFFDQACQCACKALkBCIBIAtJDQAgASALQciwwgAQ4xEAC0IAIAIpA/AEIAQgAUECdGooAgAgAigC4ARJGyAbfCEbCyACQeAEaiACQeAAahCCBiACKQPoBCIdQgJSDQALCyAbIBx8IRtBBCEBAkACQAJAAkACQCADQf////8Hag4JAQAEBAQEBAQDBAsgACgChAQiA0GAgICAeHJBgICAgHhHDQEMAwsgACgChAQiA0GAgICAeHJBgICAgHhGDQILQQghAQsgAEGABGogAWooAgAgA0EBEL4YCyAAIBs3A4gEIABBhoCAgHg2AoAECyACQaAGaiQAC5sKARF/IwBB4ABrIgIkACACIAA2AgwgAkIANwIoIAJCgICAgMAANwIgIAIgACgCGCIDNgIQAkACQAJAAkACQCABIAAoAhQiBE8NACACIAAoAhAgAUEcbGoiBSgCGCIGNgIw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QQhqKQAANwAAIARBD2ogAkHIAGpBD2opAAA3AAAMBAsgASANPgIsIAJByABqIAEQyQUgAi0ASCIDQRpGDQIgAiAGKQAANwMgIAIgBykAADcAJyACIAIpAyA3AwggAiACKQAnNwAPIAIpAlghDgJAIAEtABQiCUEaRg0AIAlBHnFBGEcNACAJQWlqQQJJDQAgBSgCACIJIAkoAgAiCUF/ajYCACAJQQFHDQAgBRCeEwsgASADOgAUIAQgAikDCDcAACABIA43AiQgBEEHaiACKQAPNwAADAMLIABBGzoAAAwHCyADIAhB0LPCABDXGAALIAJBK2ogAkHIAGpBDGooAgAiATYAACACIAIpAkwiDTcAIyAAQQxqIAE2AAAgACANNwAEIABBHDoAAAwFC0EAIQkgAUEAOgAwIAEoAiwiA0UNAAsLIAEgA0F/ajYCLCAJRQ0BCyACQcgAaiABEMkFAkAgAi0ASCIBQRpHDQAgAkEraiACQcgAakEMaigCACIBNgAAIAIgAikCTCINNwAjIABBDGogATYAACAAIA03AAQgAEEcOgAADAILIAIgAikASTcDICACIAJByABqQQhqKQAANwAnIAIpAlghDSAAQQhqIAIpACc3AAAgACACKQMgNwABIAAgDTcCECAAIAE6AAAMAQtBGiEDAkAgAS0AFCIJQRpGDQAgAUEUaiEBAkACQCAJQRlHDQAgAkHIAGogARD8CwwBCyACQcgAakEQaiABQRBqKQIANwMAIAJByABqQQhqIAFBCGopAgA3AwAgAiABKQIANwNICyACQThqIAJB0QBqKQAANwMAIAJBP2ogAkHYAGopAAA3AAAgAiACKQBJNwMwIAItAEghAwsgACADOgAAIAAgAikDMDcAASAAQQlqIAJBOGopAwA3AAAgAEEQaiACQT9qKQAANwAACyACQeAAaiQAC6MLAhB/An4jAEHwMmsiBSQAAkACQEEAKALwvUdBAUcNAEEAKQOAvkchFUEAKQP4vUchFgwBCyAFQShqEOkSQQBCATcD8L1HQQAgBSkDMCIVNwOAvkcgBSkDKCEWC0EAIQYgBUEIakEIakEAKQPoyEE3AwAgBSAWNwMYQQAgFkIBfDcD+L1HIAUgFTcDICAFQQApA+DIQTcDCAJAAkACQCADDQBBgICAgHghBwwBCyADQQhqKAIAIghBAnQh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/I3CABDHDiACKAIEIQoLIAogBEEFdGoiBiACKQNYNwMAIAZBGGogAkHYAGpBGGopAwA3AwAgBkEQaiACQdgAakEQaikDADcDACAGQQhqIAJB2ABqQQhqKQMANwMAIAIgBEEBaiIGNgIIIAIgBjYCfAJAIAEoAjQgBkcNACAAIAIpAgA3AgAgAEEIaiACQQhqKAIANgIADAELIAJBADYCWEEAIAFBNGogAkH8AGogAkHYAGpBjI7CABCoFAALIAJBgAFqJAALwgoBBX8jAEHwAWsiBCQAIARBiAFqIAEgAiADEJsDAkACQCAEKAKIASIFQSdGDQAgACAEKQOwATcDKCAEQcAAaiIDIARBiAFqQSRqKAIANgIAIARBOGoiASAEQYgBakEcaikCADcDACAEQTBqIgIgBEGIAWpBFGopAgA3AwAgBEEoaiIGIARBiAFqQQxqKQIANwMAIABBMGogBEGIAWpBMGopAwA3AwAgAEE4aiAEQYgBakE4aikDADcDACAAQcAAaiAEQYgBakHAAGopAwA3AwAgAEHIAGogBEGIAWpByABqKQMANwMAIAQgBCkCjAE3AyAgAEEkaiADKAIANgIAIABBHGogASkDADcCACAAQRRqIAIpAwA3AgAgAEEMaiAGKQMANwIAIAAgBCkDIDcCBCAAIAU2AgAMAQsgBEEIaiIFIARBiAFqQRBqKQMANwMAIARBEGogBEGIAWpBGGopAwA3AwAgBEEYaiAEQagBaikDADcDACAEIAQpA5ABNwMAAkACQCAFLwEAQQJGDQAgBEGIAWogASAEEOwHIAQoApABIQYgBCgCjAEhBwJAAkACQAJAIAQoAogBIghBJ0YNACAEQdAAaiAEQYgBakEYaikDADcDACAEQdgAaiAEQYgBakEgaikDADcDACAEQcgAakEYaiAEQYgBakEoaikDADcDACAEQcgAakEgaiAEQYgBakEwaikDADcDACAEQcgAakEoaiAEQYgBakE4aikDADcDACAEQcgAakEwaiAEQcgBaikDADcDACAEQcgAakE4aiAEQdABaikDADcDACAEIAQpA5gBNwNIIAQoApQBIQEMAQsgBCAGNgKMASAEIAc2AogBIAFB4ANqIARBiAFqEPgLQf8BcSIBQQRHDQEgBEEANgLkASAEQoCAgIAQNwLcASAEIAQ2AugBIAQgBTYC7AEgBEECNgKMASAEQYi2wgA2AogBIARCAjcClAEgBEHOAa1CIIYgBEHsAWqthDcDKCAEQb0BrUIghiAEQegBaq2ENwMgIAQgBEEgajYCkAEgBEHcAWpB3OPBACAEQYgBahCjBw0CIAQoAtwBIQcgBCgC4AEhBiAEKALkASEBQRQhCAsgBEGIAWpBGGogBEHQAGopAwA3AwAgBEGIAWpBIGogBEHYAGopAwA3AwAgBEGIAWpBKGogBEHIAGpBGGopAwA3AwAgBEGIAWpBMGogBEHIAGpBIGopAwA3AwAgBEGIAWpBOGogBEHIAGpBKGopAwA3AwAgBEHIAWogBEHIAGpBMGopAwA3AwAgBEHQAWogBEHIAGpBOGopAwA3AwAgBCABNgKUASAEIAY2ApABIAQgBzYCjAEgBCAINgKIASAEIAQpA0g3A5gBQQAhBSADQQBIDQMCQAJAIAMNAEEBIQEMAQsQsRpBASEFIANBARD7FyIBRQ0ECwJAIANFDQAgASACIAP8CgAACyAEQYgBahCtByAAQQdqIANBGHY6AAAgACADQQh2OwAFIAAgAzYCDCAAIAE2AgggACADOgAEIABBFDYCACAELwEIIgBBAkYNBCAARQ0EIAQoAgwiAEUNBCAEKAIQIABBARC+GAwECyAAIAQpAwA3AwggACABOgAoIABBJzYCACAAQSBqIARBGGopAwA3AwAgAEEYaiAEQRBqKQMANwMAIABBEGogBEEIaikDADcDAAwDC0GE5MEAQTcgBEGIAWpB9OPBAEG85MEAEPgQAAsgAEEAOgAoIABBAjsBECAAQSc2AgAMAQsgBSADQYCZwgAQ5hYACyAEQfABaiQAC/0KAgl/A34jAEGQCmsiAyQAAkACQAJAAkACQAJAIAEoAkwiBCABKAJIIgVJDQAgBCABKALsASIGSw0BIANBwANqIAFB2ABqIAEoAugBIAVqIAQgBWsQjAMgA0HACGogA0HAA2oQ0wFBgYCAgHghB0EAIQggAygCmAkiBkGBgICAeEYNAiADQagJakHcAGohCSADQcAIakHcAGohCkEAIQgDQAJAIAZBgICAgHhHDQAgA0HoAWogA0HMCGopAgA3AwAgA0HwAWogA0HUCGooAgA2AgAgAyADKQLECDcD4AEgAygCwAghByADQcADahCuByABELYNDAULIAkgCikCADcCACAJQQhqIApBCGooAgA2AgACQEHYAEUNACADQagJaiADQcAIakHYAPwKAAALIAMgBjYCgAogCEEBaiEIIANBqAlqEIEPIANBwAhqIANBwANqENMBIAMoApgJIgZBgYCAgHhHDQAMAwsLIAUgBEGY7cIAENkYAAsgBCAGQZjtwgAQ2BgACyADQcADahCuBwJAIAEpAzAiDEKAgICAEFQNACABELYNDAELIANBvAFqIAFB7AFqKAIANgIAIANBpAFqIAFB1AFqKAIANgIAIANB1AFqIAFBhAJqKQIANwIAIANB3AFqIAFBjAJqKAIANgIAIANBsAFqIAFB4AFqKAIANgIAIAMgASkC5AE3ArQBIAMgASkCzAE3ApwBIAMgASkC/AE3AswBIAMgASkC2AE3AqgBIANByAFqIAFB+AFqKAIANgIAIAMgASkC8AE3AsABIAEpA0AhDSABKQM4IQ4gASgCWCEJAkBB8ABFDQAgA0EsaiABQdwAakHwAPwKAAALIANB6AFqIAFBDGopAgA3AwAgA0HwAWogAUEUaikCADcDACADQfgBaiABQRxqKQIANwMAIANBgAJqIAFBJGopAgA3AwAgA0GIAmogAUEsaigCADYCACADIAEpAgQ3A+ABIAEoAgAhByAJQQJHDQELIANBEGogA0HgAWpBEGooAgAiBjYCACADQQhqIANB4AFqQQhqKQMAIgw3AwAgAyADKQPgASINNwMAIABBFGogBjYCACAAQQxqIAw3AgAgACANNwIEIABBAjYCWCAAIAc2AgAgAigCACIGQYKAgIB4SA0BIAZFDQEgAigCBCAGQQEQvhgMAQsgASgCVCEKIAEoAlAhCwJAQbQBRQ0AIANBjAJqIANBLGpBtAH8CgAACyABQQRqIQYCQCACKAIAIgFBgYCAgHhGDQAgACAHNgIAIAAgCTYCWCAAIAo2AlQgACALNgJQIAAgBDYCTCAAIAU2AkggACANNwNAIAAgDjcDOCAAIAw3AzAgACAGKQIANwIEIABBDGogBkEIaikCADcCACAAQRRqIAZBEGopAgA3AgAgAEEcaiAGQRhqKQIANwIAIABBJGogBkEgaikCADcCACAAQSxqIAZBKGooAgA2AgACQEG0AUUNACAAQdwAaiADQYwCakG0AfwKAAALIAAgATYCmAIgACAINgKQAiAAIAg2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rVMNAQwHC0IAIAgpAwAiCn0gA61ZDQYLIARByABqIAEoAiwgB2ogCiABKQMgEIMUIAFCATcDACABIAQpA0g3AwggAUEQaiAEQcgAakEIaikDADcDACABQRhqIARByABqQRBqKQMANwMAIAAgBCkDKDcCBCAAQQxqIARBKGpBCGooAgA2AgAgAEEBNgIQIAAgBTYCACABIAEoAiwiAzYCOCABIAMgCSAHamo2AiwgASABKAIoQQFqNgIoDAgLIARByABqIAIgBRCiCCAEKAJQIgNBAkYNAyAEQRBqIgUgBEHcAGooAgA2AgAgBCAEKQJUNwMIIAQoAkghAiABKAIAQQFHDQICQCABKAIQIgcgASgCGEsNACABIAdBAWo2AhAMAwsgAUIANwMADAILIAUgA0GcncIAENcYAAsgByAFQYydwgAQ1xgACyAAIAM2AgAgACAEKQMINwIEIABBATYCECABIAEoAiwiAzYCOCABIAMgAmo2AiwgASABKAIoQQFqNgIoIABBDGogBSgCADYCAAwECyAEQcAAaiAEQdwAaigCACIBNgIAIAQgBCkCVCIKNwM4IABBDGogATYCACAAIAo3AgQgAEEENgIADAMLQcycwgBBLUH8nMIAEM4TAAsgBEHAAGogBEHcAGooAgAiATYCACAEIAQpAlQiCjcDOCAAQQxqIAE2AgAgACAKNwIEIABBBDYCAAwBCyAEQcgAaiACIAUQoggCQCAEKAJQIgVBAkcNACAEQcAAaiAEQdwAaigCACIBNgIAIAQgBCkCVCIKNwM4IABBDGogATYCACAAIAo3AgQgAEEENgIADAELIAunIQMgBEEgaiICIARB3ABqKAIANgIAIAQgBCkCVDcDGCAEKAJIIQYCQCABKAIAQQFHDQACQCABKAIQIgggASgCGEsNACABIAggA2o2AhAMAQsgAUIANwMACyAAIAU2AgAgACAEKQMYNwIEIAAgAzYCECABIAEoAiwiBTYCOCABIAUgBiAHamo2AiwgASABKAIoIANqNgIoIABBDGogAigCADYCAAsgBEHgAGokAAvSCgEKfyMAQfAEayIIJAAgAygCTCEJIAggAzYCCCABQeADaiIKIAkgCEEIaiABLQCcDxBSIQsCQAJAIAgoAggiCS0ARCIMQQNJDQAgCEENNgLoAiAIQegCahCtBwwBCyAIIAkp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ACADEKMHDQMLIANBMGpBCGogA0E8akEIaigCADYCACADIAMpAjw3AzAgA0EEciADQTBqEI0NIANBATYCACADLQAkQQZGDQAgA0EkahCmDwsgACADKQMANwMAIABBGGogA0EYaikDADcDACAAQRBqIANBEGopAwA3AwAgAEEIaiADQQhqKQMANwMACyADQdAAaiQADwtBhOTBAEE3IANBzwBqQfTjwQBBvOTBABD4EAALqwsBDX8jAEHAAGsiAiQAIAJBHGogAUHZk8EAQQUQqwwgAigCICEDAkACQAJAAkAgAigCHCIEQYCAgIB4Rg0AIAAgAikCJDcCECAAIAM2AgwgACAENgIIIABCgICAgLiAgICAfzcCAAwBCyACQTBqIAMQnwUgAigCPCEFIAIoAjghBCACKAI0IQMCQCACKAIwQQFHDQAgACAFNgIQIAAgBDYCDCAAIAM2AgggAEKAgICA+ICAgIB/NwIADAELIAJBHGogAUHek8EAQQQQqwwgAigCICEGAkACQCACKAIcIgdBgICAgHhGDQAgACACKQIkNwIQIAAgBjYCDCAAIAc2AgggAEKAgICAuICAgIB/NwIADAELIAJBMGogBhCfBSACKAI8IQggAigCOCEHIAIoAjQhBgJAIAIoAjBBAUcNACAAIAg2AhAgACAHNgIMIAAgBjYCCCAAQoCAgICIgYCAgH83AgAMAQsgAkEwaiABQeKTwQBBBBCrDCACKAI0IQkCQAJAIAIoAjAiCkGAgICAeEYNACAAIAIpAjg3AhAgACAJNgIMIAAgCjYCCCAAQoCAgIC4gICAgH83AgAMAQsgAkEcaiAJEJIFIAJBEGpBCGoiCSACQShqKAIANgIAIAIgAikCIDcDEAJAIAIoAhwiCkGDgICAeEYNACACKAIsIQUgACACKQMQNwIIIAAgBTYCFCAAIAo2AgQgAEGAgICAeDYCACAAQRBqIAkoAgA2AgAMAQsgAkEIaiAJKAIANgIAIAIgAikDEDcDACACQRxqIAFB5pPBAEEVEKsMIAIoAiAhCQJAAkACQCACKAIcIgpBgICAgHhGDQAgACACKQIkNwIQIAAgCTYCDCAAIAo2AgggAEGDgICAeDYCBAwBCyACIAk2AjACQAJAAkAgAkEwahDRGA0AIAJBHGogAigCMBClECACKAIcIglBgoCAgHhGDQEg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ACAEQRBqQgA3AwBBACEBIARBGGpBADYCACACQQhqQQhqIAUpAwA3AwAgAkEIakEQaiACQcAAakEQaikDADcDACACQQhqQRhqIAQpAwA3AwAgAkEIakEgaiAGKQMANwMAIAJBCGpBKGogAkHAAGpBKGopAwA3AwAgAkEIakEwaiACQcAAakEwaigCADYCACACIAIpA0A3AwhBACEIDAELIABBHGooAgAhCSAGQgA3AwAgBkEIakIANwMAIAZBEGpCADcDACAGQRhqQQA2AgAgAkIANwOIASACIA03A4ABIAJCADcDQANAIAkoAhAhCiAJKAIMIQsDQCACQQhqIAJBwABqIAsgChDTAyACKQMQIQ4gAigCDCEMAkACQAJAIAIoAggiAUEERg0AIAFBA0YNCCACNQIYIQ8CQCABQQJGDQAgAUEBcUUNAiACKQOAASIQIA8gDn4iEXwiDUI/h0KAgICAgICAgIB/hSANIBFCAFMgDSAQU3MbIQ0MAwtCACEOIAIpA4ABIhAhDQwCCyACIA43AgwgAiAMNgIIQdTHwQBBKyACQQhqQdSQwgBB5JDCABD4EAALIAIpA4ABIhAgDCkDACIOIA9+IhF8Ig1CP4dCgICAgICAgICAf4UgDSARQgBTIA0gEFNzGyENCyACIA03A4ABIAIgAigCjAEiASAQIA58IhFCP4dCgICAgICAgICAf4UgESAOQgBTIBEgEFNzGyIOIA0gDiANVRsiEEKAgICAECAQQoCAgIAQVBunIgwgASAMSxsgDCABGyIINgKMASACIAIoAogBIgEgDiANIA4gDVMbIg5CgICAgBAgDkKAgICAEFQbpyIMIAEgDEkbIAEgDBsgDCABGyIBNgKIASAPUA0ACyACKAJoIAdJDQALIAJBCGpBCGogBUEIaikDADcDACACQQhqQRBqIAVBEGopAwA3AwAgAkEIakEYaiAFQRhqKQMANwMAIAJBCGpBIGogBUEgaikDADcDACACQQhqQShqIAVBKGopAwA3AwAgAkEIakEwaiAFQTBqKAIANgIAIAIgBSkDADcDCCACKQNAIQ4gAigCfCEKCyAFIAIpAwg3AwAgBUEwaiACQQhqQTBqKAIANgIAIAVBKGogAkEIakEoaikDADcDACAFQSBqIAJBCGpBIGopAwA3AwAgBUEYaiACQQhqQRhqKQMANwMA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AAJAIAJBACABKAKIASIIIAEtAIABIglBA0YiChsiC0kNACABQYABaiEIIAEgCyAEaiIKNgKQAQJAAkAgAiALRw0AQQMhByAIQQM6AAAMAQsgASAHNgKQASADQQhqIAEgASgCQCABKAJEEP0OAkACQAJAIAMtAAgiBUEDRg0AIAFByABqIQcgAiALayEEIANBD2ohCyADQQ1qIQoDQCALMQAAIQwgCjMAACENIAM1AAkhDiABIAEoAlAgAygCECICazYCUCAHQgAQsRYgAiAESw0CIANBCGogASABKAJAIAEoAkQQ/Q4gBCACayEEIAMtAAgiBUEDRw0ACwtCAyEMDAELIA4gDEIwhiANQiCGhIRCCIYgBa1C/wGDhCEMIAIgBGshBAsgASAENgKIASABIAw3A4ABIAynIQcgASgClAEhBSABKAKQASEKC0EAIQIgCiAFTw0DQQMhBAJAAkAgB0H/AXFBA0YNACABKAKIASILDQELIANBCGogARCdCSAIQQhqIANBCGpBCGooAgA2AgAgCCADKQIINwIAAkAgAS0AgAEiB0EDRw0ADAYLIAEoAogBIgtFDQUgASgCkAEhCgsgASALQX9qNgKIASABIApBAWo2ApABIAEtAIEBIQIgASgChAEhBSAHIQQMBAsgASACQQFqIgUgBGo2ApABIAoNAQJAAkAgCCACSw0AQgMhDEEAIQQMAQtCAEIAIAE1AoQBQiCGIAlBAXEbIAlB/wFxQQJGGyABMQCBAUIIhoQgCa2EIQwgCCAFayEECyABIAQ2AogBIAynIgRBCHYhAiAMQiCIpyEFDAMLAkAgASgCeCIERQ0AIANBCGogBCAFIAcgBSAHSRsgBSABKAKMARD0AgJAQZgBRQ0AIAEgA0EIakGYAfwKAAALQQAhAiABKAKQASIFIAEoApQBTw0CAkACQCABLQCAASIEQQNGDQAgASgCiAEiB0UNACABIAdBf2o2AogBDAELIANBCGogARCdCSABQYABaiIEQQhqIANBCGpBCGooAgA2AgAgBCADKQIINwIAIAEtAIABIgRBA0YNAyABKAKIASIFRQ0DIAEgBUF/ajYCiAEgASgCkAEhBQsgASAFQQFqNgKQASABLQCBASECIAEoAoQBIQUMAwsgAEEDOgAADAMLIABBAzoAAAwCC0EDIQQLAkAgBg0AIAAgBa1C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QQEhBUEAIQZBACECQQEhB0EAIQhBASEJQQAhCkEBIQtBACEMQQEhDUEAIQ5BASEPQQAhEEEBIRFBACESQQEhE0EAIRRBASEVQQAhFkEBIRcMAQsgASACQQxsaiEYQQAhFkEBIRdBASEVQQAhFEEBIRNBACESQQEhEUEAIRBBASEPQQAhDkEBIQ1BACEMQQEhC0EAIQpBASEJQQAhCEEBIQdBACECQQEhBUEAIQYDQCACIRkgByEaIAFBBGooAgAiAiABKAIAIgdJDQIgAiAESw0DIAIgB2siGyECIAMgB2oiHCEHAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAFBCGooAgAiHUFNag41BgEBAQEBAQEBAQEBAQEBAQEBBwEBAQEBAQEBAQEIAQEJAQEBAQEBAQEBAQEBCgEBAQEBAQsACyAdQX9qDiMBAAIAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAABAALIAAgHTYCDCAAQQU6AAggAEICNwMADwsgGSECIBohByAbIRYgHCEXDAgLIBkhAiAaIQcgGyEUIBwhFQwHCyAZIQIgGiEHIBshECAcIREMBgsgGSECIBohByAbIRIgHCETDAULIBkhAiAaIQcgGyEOIBwhDwwECyAbIQYgHCEFIBkhAiAaIQcMAwsgGSECIBohByAbIQwgHCENDAILIBkhAiAaIQcgGyEKIBwhCwwBCyAZIQIgGiEHIBshCCAcIQkLIAFBDGoiASAYRw0ACwsgAEIANwMgIABCADcDACAAQgA3A3ggAEIANwNYIABBAzYCSCAAIBY2AkQgACAXNgJAIABCADcDmAEgAEIANwPIASAAIBQ2AsQBIAAgFTYCwAEgAEEDNgKoASAAQShqQgA3AwAgAEEwakIANwMAIABBOGpBADYCACAAQYABakIANwMAIABBiAFqQgA3AwAgAEGQAWpBADYCACAAQaABakIANwMAIABBgAJqQQA2AgAgAEH4AWpCADcDACAAQfABakIANwMAIABCADcD6AEgAEGQAmpCADcDACAAQgA3A4gCIABCADcDuAIgACASNgK0AiAAIBM2ArACIABBAzYCmAIgAEIANwPYAiAAQeACakIANwMAIABB6AJqQgA3AwAgAEHwAmpBADYCACAAQYADakIANwMAIABCADcD+AIgAEIANwOoAyAAIBA2AqQDIAAgETYCoAMgAEEDNgKIAyAAQeADakEANgIAIABB2ANqQgA3AwAgAEHQA2pCADcDACAAQgA3A8gDIABB8ANqQgA3AwAgAEIANwPoAyAAQgA3A5gEIAAgDjYClAQgACAPNgKQBCAAQQM2AvgDIABB0ARqQQA2AgAgAEHIBGpCADcDACAAQcAEakIANwMAIABCADcDuAQgAEIANwPwBCAAIAY2AuwEIAAgBTYC6AQgAEGCgICAeDYC2AQgAEGoBWpBADYCACAAQaAFakIANwMAIABBmAVqQgA3AwAgAEIANwOQBSAAQgA3A9AFIAAgDDYCzAUgACANNgLIBSAAQQM2ArAFIABBiAZqQQA2AgAgAEGABmpCADcDACAAQfgFakIANwMAIABCADcD8AUgAEGYBmpCADcDACAAQgA3A5AGIABCADcDwAYgACAKNgK8BiAAIAs2ArgGIABBAzYCoAYgAEH4BmpBADYCACAAQfAGakIANwMAIABB6AZqQgA3AwAgAEIANwPgBiAAIAI2AqQHIAAgBzYCoAcgACAINgKcByAAIAk2ApgHIABBAzYCgAcPCyAHIAJB/ObCABDZGAALIAIgBEH85sIAENgYAAurCQENfyMAQYANayIGJAAgBiAFNwMQIAYgBDcDCAJAAkACQEEAKAKUuUciB0EDSQ0AIAEoAogMRQ0BAkBBkAxFDQAgBkHwAGogAUGQDPwKAAALIAZB0ABqIAZB8ABqIAIgAyAEIAUQbCAAQRlqIAZB6ABqKQAANwAAIABBEWogBkHgAGopAAA3AAAgAEEJaiAGQdgAaikAADcAACAAIAYpAFA3AAEgAEEBOgAADAILAkACQEEAKAKUuUdBA08NAAJAQQAtAMy4RyIIQX9qQQJJDQAgCEUNAUHEuMcAEK4LQf8BcSIIRQ0BC0EAKALEuEcgCBDPCUUNAEEAKALEuEchCCAGIAM2AkggBiAIQRxqNgJEIAZBAjYCQCAGQQE2AjggBkGo68MANgJcIAZBmOvDADYCVCAGIAZB0ABqNgI8IAYgBkHMAGo2AlggBiAGQcgAajYCUCAGIAZBCGo2AkwgBkHwAGogCCAGQThqEL8FDAELIAZBADYCiAEgBkECNgJ4CyAGQRhqQRhqIAZB8ABqQRhqKQMANwMAIAZBGGpBEGogBkHwAGpBEGopAwA3AwAgBkEYakEIaiIIIAZB8ABqQQhqKQMAIgU3AwAgBiAGKQNwNwMYAkAgBadBAkYNACAIIAZBGGoQ0xMLIAEoAogMRQ0AAkBBkAxFDQAgBkHwAGogAUGQDPwKAAALIAZBOGpBCGogA0EIaigCADYCACAGIAMpAgA3AzggBkHQAGogBkHwAGogAiAGQThqIAYpAwggBikDEBBsIABBGWogBkHoAGopAAA3AAAgAEERaiAGQeAAaikAADcAACAAQQlqIAZB0ABqQQhqKQAANwAAIAAgBikAUDcAASAAQQE6AAAgBigCIEECRg0BIAggBkEYahDUEyAGKAIgIglBAkYNASAIIAYpAxgQ1RMaIAlFDQEgBigCJCIIIAgoAgAiCEF/ajYCACAIQQFHDQEgBkEkahDEEAwBCwJAIAEpAwBCAVINACACIAEoAtgLEMwCCyACQQAQyAMCQCACKALcAyIKRQ0AA0AgAigC2AMhC0EAIQhBACEMAkAgCkEESQ0AIAtBLGohCSAKQXxxIQ1BACEIQQAhDANAIA8gCCAJQVxqKAIAIg4bIAhBAWogCUFoaigCACIQGyAIQQJqIAlBdGooAgAiERsgCEEDaiAJKAIAIhIbIQ8gEkUgEUUgEEUgDkVycnIgDHIhDCAJQTBqIQkgCEEEaiIIIA1HDQALCwJAIApBA3EiDkUNACALIAhBDGxqQQhqIQkDQCAPIAggCSgCACIQGyEPIAlBDGohCSAIQQFqIQggEEUgDHIhDCAOQX9qIg4NAAsLIAxBAXFFDQEgAiAPEMwCIAIoAtwDIgoNAAsLIABBADoAAAJAIAdBAksNACAGKAIgQQJGDQAgBkEgaiIIIAZBGGoQ1BMgBigCICIJQQJGDQAgCCAGKQMYENUTGiAJRQ0AIAYoAiQiCCAIKAIAIghBf2o2AgAgCEEBRw0AIAZBJGoQxBALAkAgAygCACIIQYCAgIB4ckGAgICAeEYNACADKAIEIAhBARC+GAsgARCyDwsgBkGADWokAAvfCQIHfwJ+IwBB0AFrIgUkACAFIAM2AgQgBUHwAGogASACELoBAkACQAJAAkACQAJAAkAgBSgCcEErRg0AIAVB8ABqELoOQQAhBiAFQRBqQQA2AgAgBUIANwMIQQIhAkEAIQdBACEDDAELIAVByABqQQhqIAVBlAFqKAIAIgg2AgAgBSAFKQKMASIMNwNIIAUoAogBIQcgBSgChAEhBiAFLwGCASEJIAUvAYABIQIgBSkDeCENIAUtAJgBIQMgBUEIakEIaiAINgIAIAUgDDcDCCADQQNHDQAgBUHwAGogBUEEahCSEwJAIAUoAnBBgICAgHhGDQAgBUEYakEIaiAFQfAAakEIaigCADYCACAFIAUpAnA3AxggBUHwAGogBUEYahDjFQJAIAUoAnAiA0EnRg0AIAAgBSkDmAE3AyggBUHoAGoiASAFQfAAakEkaigCADYCACAFQeAAaiIIIAVB8ABqQRxqKQIANwMAIAVB2ABqIgkgBUHwAGpBFGopAgA3AwAgBUHIAGpBCGoiCiAFQfAAakEMaikCADcDACAAQTBqIAVB8ABqQTBqKQMANwMAIABBOGogBUHwAGpBOGopAwA3AwAgAEHAAGogBUHwAGpBwABqKQMANwMAIABByABqIAVB8ABqQcgAaikDADcDACAFIAUpAnQ3A0ggAEEkaiABKAIANgIAIABBHGogCCkDADcCACAAQRRqIAkpAwA3AgAgAEEMaiAKKQMANwIAIAAgBSkDSDcCBCAAIAM2AgAMAwsgBUEoakEIaiAFQfAAakEQaikDADcDACAFQShqQRBqIAVB8ABqQRhqKQMANwMAIAVBKGpBGGogBUHwAGpBIGopAwA3AwAgBSAFKQN4NwMoIAVB8ABqIAQQ/QQgBSgCfCEKIAUoAnghCCAFKAJ0IQMCQAJAAkAgBSgCcCILQQFHDQAgACAKNgIMIAAgCDYCCCAAIAM2AgQgAEErNgIADAELIAVB5ABqIAVBCGpBCGooAgA2AgAgBSAHNgJYIAUgBjYCVCAFIAk7AVIgBSACOwFQIAUgDTcDSCAFIAUpAwg3AlwgBUHEAWogAUEgakEAIAggA0GAgICAeEYbIAoQpQ0gBUHwAGogAUGwDWogBUHIAGogBUEoaiAFQcQBahCQAgJAAkAgAg4DAQABAAsgBkUNACAHIAZBARC+GAsgBSgCdCEBIAUoAnAiCUEnRg0BAkBByABFDQAgAEEIaiAFQfgAakHIAPwKAAALIAAgATYCBCAAIAk2AgAgA0GAgICAeHJBgICAgHhGDQAgCCADQQV0QQEQvhgLAkAgBS8BMCIAQQFLDQAgAEUNACAFKAI0IgBFDQAgBSgCOCAAQQEQvhgLQQAhACALDQQMBQsgAEEsNgIAIAAgAbg5AwgCQCADQYCAgIB4ckGAgICAeEYNACAIIANBBXRBARC+GAsCQCAFLwEwIgBBAUsNACAARQ0AIAUoAjQiAEUNACAFKAI4IABBARC+GAsgBSgCBCIAQYQISQ0GDAULIABBJzYCAAwBCyAAIAM6AAQgAEEqNgIAC0EBIQALAkACQCACDgMBAAEACyAGRQ0AIAcgBkEBEL4YCyAEQYMISyAAcUUNACAEEK8RCyAFKAIEIgBBgwhNDQELIAAQrxELIAVB0AFqJAALswkCBX8DfgJAAkACQAJAAkACQAJAAkACQCAALQAAIgJBf2pBACACQX5qQf8BcUEHSRsOCAABAgMEBwgIAAsgACgCCCEDAkAgAkEBcUUNACADIAAoAgQiBEkNBSADIAAoAhwiAksNBiAAKAIYIQUCQCADIARrIgIgASgCACABKAIIIgBrTQ0AIAEgACACQQFBARCHDCABKAIIIQALAkAgAkUNACABKAIEIABqIAUgBGogAvwKAAALIAEgACACajYCCA8LAkACQCADQQFxRQ0AIAApAxAhBwwBCyAAKAIMKQMAIQcLIAEoAgghAgNAIAenQf8AcSAHQv8AVkEHdHIhAwJAAkAgASgCACACRg0AIAIhAAwBCyABIAJBAUEBQQEQhwwgASgCCCEACyABIABBAWoiAjYCCCABKAIEIABqIAM6AAAgB0KAAVQhACAHQgeIIQcgAEUNAAwICwtCACAAKQMIfSEHIAEoAgghAgNAIAdCwAB8IghC/wBWQQd0IAenQf8AcXIhAwJAAkAgASgCACACRg0AIAIhAAwBCyABIAJBAUEBQQEQhwwgASgCCCEACyAHQgeHIQcgASAAQQFqIgI2AgggASgCBCAAaiADOgAAIAhCgAFaDQAMBwsLIAEoAgghAiAAKQMIIQcDQCAHp0H/AHEgB0L/AFZBB3RyIQMCQAJAIAEoAgAgAkYNACACIQAMAQsgASACQQFBAUEBEIcMIAEoAgghAAsgASAAQQFqIgI2AgggASgCBCAAaiADOgAAIAdCgAFUIQAgB0IHiCEHIABFDQAMBgsLIAEoAgghAiAAKQMQIQcgACgCDCEGIAAoAgghBSAAKQMYIQgDQCAIQsAAfCIJQv8AVkEHdCAIp0H/AHFyIQQCQAJAIAEoAgAgAkYNACACIQAMAQsgASACQQFBAUEBEIcMIAEoAgghAAsgCEIHhyEIIAEgAEEBaiICNgIIIAEoAgQiAyAAaiAEOgAAIAlCgAFaDQALAkAgBUEBcQ0AIAYpAwAhBwsDQCAHp0H/AHEgB0L/AFZBB3RyIQQCQAJAIAEoAgAgAkYNACACIQAMAQsgASACQQFBAUEBEIcMIAEoAgQhAyABKAIIIQALIAEgAEEBaiICNgIIIAMgAGogBDoAACAHQoABVCEAIAdCB4ghByAARQ0ADAULCyAAKQMIIQcCQCABKAIIIgIgASgCAEcNACABQaSPwgAQzA8LIAEoAgQgAmpBADoAACABIAJBAWoiAjYCCANAIAenQf8AcSAHQv8AVkEHdHIhAwJAAkAgASgCACACRg0AIAIhAAwBCyABIAJBAUEBQQEQhwwgASgCCCEACyABIABBAWoiAjYCCCABKAIEIABqIAM6AAAgB0KAAVQhACAHQgeIIQcgAA0EDAALCyAEIANBhI3CABDZGAALIAMgAkGEjcIAENgYAAsgACgCCCEEIAAoAgQhAwJAIAAoAgwiAiABKAIAIAEoAggiAGtNDQAgASAAIAJBAUEBEIcMIAEoAgghAAsCQCACRQ0AIAEoAgQgAGogBCAC/AoAAAsgASAAIAJqNgIIIANBgICAgHhyQYCAgIB4Rg0AIAQgA0EBEL4YCwunCgEGfyAAKAKwICIBIAEoAgAiAUF/ajYCAAJAIAFBAUcNACAAQbAgahCoEgsCQCAAKAKQICIBRQ0AIAAoApQgIQICQAJAIAAoApggIgNFDQBBACEEA0ACQAJAIARFDQAgASEFIAQhAQwBC0EAIQUCQCACRQ0AIAIhBAJAIAJBB3EiBkUNAANAIARBf2ohBCABKAJsIQEgBkF/aiIGDQALCyACQQhJDQADQCABKAJsKAJsKAJsKAJsKAJsKAJsKAJsKAJsIQEgBEF4aiIEDQALC0EAIQILAkACQCACIAEvAV5PDQAgASEEDAELAkADQCABKAJYIgRFDQEgAS8BXCECIAFBnAFB7AAgBRtBBBC+GCAFQQFqIQUgBCEBIAIgBC8BXkkNAgwACwsgAUGcAUHsACAFG0EEEL4YQcTvwAAQ2hgACyACQQFqIQICQCAFRQ0AIAQgAkECdGpB7ABqIQECQAJAIAVBB3EiAg0AIAUhBgwBCyAFIQYDQCAGQX9qIQYgASgCACIEQewAaiEBIAJBf2oiAg0ACwtBACECIAVBCEkNAANAIAEoAgAoAmwoAmwoAmwoAmwoAmwoAmwoAmwiBEHsAGohASAGQXhqIgYNAAsLQQAhASADQX9qIgMNAAwCCwsCQCACDQAgASEEDAELAkACQCACQQdxIgUNACABIQQgAiEBDAELIAEhBCACIQEDQCABQX9qIQEgBCgCbCEEIAVBf2oiBQ0ACwsgAkEISQ0AA0AgBCgCbCgCbCgCbCgCbCgCbCgCbCgCbCgCbCEEIAFBeGoiAQ0ACwtBACEBA0AgBCgCWCEFIARBnAFB7AAgARtBBBC+GCABQX9qIQEgBSEEIAUNAAsLIABBnCBqEMcGAkAgACgC6AUiAUGDgICAeEgNACABRQ0AIAAoAuwFIAFBARC+GAsgAEGoCWoQww8CQCAAKALECyIBQYGAgIB4Rg0AIABBqAtqIQQCQCABQYCAgIB4ckGAgICAeEYNACAAKALICyABQQEQvhgLQQghBgJAAkACQAJAIAQoAgAiAUH/////B2oiBUEIIAVBCkkbDgkCAAQEBAQEBAEECyAAKAKsCyIBQYCAgIB4ckGAgICAeEYNAwwCCyABQYCAgIB4ckGAgICAeEYNAkEEIQYMAQsgACgCrAsiAUGAgICAeHJBgICAgHhGDQELIAQgBmooAgAgAUEBEL4YCwJAAkACQCAAKALYCyIBRQ0AAkAgAUGAgICAeEcNACAAKALcCyIBQYCAgIB4ckGAgICAeEYNA0EIIQQMAgsgACgC3AsgAUECdEEEEL4YCyAAKALkCyIBRQ0BQRAhBAsgAEHYC2ogBGooAgAgAUECdEEEEL4YCyAAQbASahDDDwJAIAAoArAUIgFBi4CAgHhGDQBBCCEFAkACQAJAAkAgAUH/////B2oiBEEIIARBCkkbDgkCAAQEBAQEBAEECyAAKAK0FCIBQYCAgIB4ckGAgICAeEYNAwwCCyABQYCAgIB4ckGAgICAeEYNAkEEIQUMAQsgACgCtBQiAUGAgICAeHJBgICAgHhGDQELIABBsBRqIAVqKAIAIAFBARC+GAsCQAJAAkAgACgC2BQiAUUNAAJAIAFBgICAgHhHDQAgACgC3BQiAUGAgICAeHJBgICAgHhGDQNBCCEEDAILIAAoAtwUIAFBAnRBBBC+GAsgACgC5BQiAUUNAUEQIQQLIABB2BRqIARqKAIAIAFBAnRBBBC+GAsgAEGAFWoQlgQL0wkBCH8jAEGAAWsiAyQAAkACQAJAAkACQAJAAkAgACgCFCIEIAAoAhAiBU8NACAAQQxqIQYCQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCDCIHIARqLQAAIghBpX9qDiEECwsLCwsLCwsLCwMLCwsLCwsLAQsLCwsLAgsLCwsLCwUACyAIQV5qDgwJCgoKCgoKCgoKCggKCyAAIARBAWoiCDYCFCAIIAVPDQwgACAEQQJqIgk2AhQCQCAHIAhqLQAAQfUARw0AIAUgCUYNDSAAIARBA2oiCjYCFCAHIAlqLQAAQewARw0AIAogCCAFIAggBUsbRg0NIAAgBEEEajYCFCAHIApqLQAAQewARg0FCyADQQk2AnAgA0EYaiAGEMwTIANB8ABqIAMoAhggAygCHBDGEyEEDBALIAAgBEEBaiIINgIUIAggBU8NDCAAIARBAmoiCTYCFAJAIAcgCGotAABB8gBHDQAgBSAJRg0NIAAgBEEDaiIKNgIUIAcgCWotAABB9QBHDQAgCiAIIAUgCCAFSxtGDQ0gACAEQQRqNgIUIAcgCmotAABB5QBGDQULIANBCTYCcCADQShqIAYQzBMgA0HwAGogAygCKCADKAIsEMYTIQQMDwsgACAEQQFqIgg2AhQgCCAFTw0MIAAgBEECaiIJNgIUAkAgByAIai0AAEHhAEcNACAFIAlGDQ0gACAEQQNqIgo2AhQgByAJai0AAEHsAEcNACAKIAggBSAIIAVLGyIFRg0NIAAgBEEEaiIINgIUIAcgCmotAABB8wBHDQAgCCAFRg0NIAAgBEEFajYCFCAHIAhqLQAAQeUARg0FCyADQQk2AnAgA0E4aiAGEMwTIANB8ABqIAMoAjggAygCPBDGEyEEDA4LIANBCjoAcCADQfAAaiABIAIQoBAgABDcEiEEDA0LIANBCzoAcCADQfAAaiABIAIQoBAgABDcEiEEDAwLIANBBzoAcCADQfAAaiABIAIQoBAgABDcEiEEDAsLIANBgAI7AXAgA0HwAGogASACEKAQIAAQ3BIhBAwKCyADQQA7AXAgA0HwAGogASACEKAQIAAQ3BIhBAwJCyAAIARBAWo2AhQgA0HAAGogAEEAEKwIIAMpA0BCA1ENByADQcAAaiABIAIQ0hEgABDcEiEEDAgLIABBADYCCCAAIARBAWo2AhQgA0HkAGogBiAAEIoIIAMoAmghBCADKAJkQQJGDQcgAyADKAJsNgJ4IAMgBDYCdCADQQU6AHAgA0HwAGogASACEKAQIAAQ3BIhBAwHCyAIQVBqQf8BcUEKSQ0BCyADQQo2AnAgA0EIaiAAQQxqENoSIANB8ABqIAMoAgggAygCDBDGEyAAENwSIQQMBQsgA0HQAGogAEEBEKwIAkAgAykDUEIDUg0AIAMoAlghBAwFCyADQdAAaiABIAIQ0hEgABDcEiEEDAQLIANBBTYCcCADQRBqIAYQzBMgA0HwAGogAygCECADKAIUEMYTIQQMAwsgA0EFNgJwIANBIGogBhDMEyADQfAAaiADKAIgIAMoAiQQxhMhBAwCCyADQQU2AnAgA0EwaiAGEMwTIANB8ABqIAMoAjAgAygCNBDGEyEEDAELIAMoAkghBAsgA0GAAWokACAEC6UJAgV/An4CQAJAAkACQAJAAkACQAJAAkAgAC0AACICQX9qQQAgAkF+akH/AXFBB0kbDggAAQIDBAcICAALIAAoAgghAyAAKAIEIQQCQCACQQFxRQ0AIAMgBEkNBSADIAAoAhwiAksNBiAAKAIYIQUCQCADIARrIgIgASgCACABKAIIIgBrTQ0AIAEgACACQQFBARCHDCABKAIIIQALAkAgAkUNACABKAIEIABqIAUgBGogAvwKAAALIAEgACACajYCCA8LAkAgBEEBcQ0AIAMoAgAhAwsgASgCCCECIAOtIQcDQCAHp0H/AHEgB0L/AFZBB3RyIQMCQAJAIAEoAgAgAkYNACACIQAMAQsgASACQQFBAUEBEIcMIAEoAgghAAsgASAAQQFqIgI2AgggASgCBCAAaiADOgAAIAdCgAFUIQAgB0IHiCEHIABFDQAMCAsLQgAgACkDCH0hByABKAIIIQIDQCAHQsAAfCIIQv8AVkEHdCAHp0H/AHFyIQMCQAJAIAEoAgAgAkYNACACIQAMAQsgASACQQFBAUEBEIcMIAEoAgghAAsgB0IHhyEHIAEgAEEBaiICNgIIIAEoAgQgAGogAzoAACAIQoABWg0ADAcLCyABKAIIIQIgACkDCCEHA0AgB6dB/wBxIAdC/wBWQQd0ciEDAkACQCABKAIAIAJGDQAgAiEADAELIAEgAkEBQQFBARCHDCABKAIIIQALIAEgAEEBaiICNgIIIAEoAgQgAGogAzoAACAHQoABVCEAIAdCB4ghByAARQ0ADAYLCyABKAIIIQIgACgCDCEFIAAoAgghBiAAKQMQIQcDQCAHQsAAfCIIQv8AVkEHdCAHp0H/AHFyIQQCQAJAIAEoAgAgAkYNACACIQAMAQsgASACQQFBAUEBEIcMIAEoAgghAAsgB0IHhyEHIAEgAEEBaiICNgIIIAEoAgQiAyAAaiAEOgAAIAhCgAFaDQALAkAgBg0AIAUoAgAhBQsgBa0hBwNAIAenQf8AcSAHQv8AVkEHdHIhBAJAAkAgASgCACACRg0AIAIhAAwBCyABIAJBAUEBQQEQhwwgASgCBCEDIAEoAgghAAsgASAAQQFqIgI2AgggAyAAaiAEOgAAIAdCgAFUIQAgB0IHiCEHIABFDQAMBQsLIAApAwghBwJAIAEoAggiAiABKAIARw0AIAFBpI/CABDMDwsgASgCBCACakEAOgAAIAEgAkEBaiICNgIIA0AgB6dB/wBxIAdC/wBWQQd0ciEDAkACQCABKAIAIAJGDQAgAiEADAELIAEgAkEBQQFBARCHDCABKAIIIQALIAEgAEEBaiICNgIIIAEoAgQgAGogAzoAACAHQoABVCEAIAdCB4ghByAADQQMAAsLIAQgA0GEjcIAENkYAAsgAyACQYSNwgAQ2BgACyAAKAIIIQQgACgCBCEDAkAgACgCDCICIAEoAgAgASgCCCIAa00NACABIAAgAkEBQQEQhwwgASgCCCEACwJAIAJFDQAgASgCBCAAaiAEIAL8CgAACyABIAAgAmo2AgggA0GAgICAeHJBgICAgHhGDQAgBCADQQEQvhgLC9sIAQl/AkACQCABQYAKTw0AIAFBBXYhAgJAAkACQCAAKAKgASIDRQ0AIANBf2ohBCADQQJ0IABqQXxqIQUgAyACakECdCAAakF8aiEGIANBKUkhAwNAIANFDQIgAiAEaiIHQShPDQMgBiAFKAIANgIAIAZBfGohBiAFQXxqIQUgBEF/aiIEQX9HDQALCyABQSBJDQMgAEEANgIAIAJBAWoiBEECRg0DIABBADYCBCAEQQNGDQMgAEEANgIIIARBBEYNAyAAQQA2AgwgBEEFRg0DIABBADYCECAEQQZGDQMgAEEANgIUIARBB0YNAyAAQQA2AhggBEEIRg0DIABBADYCHCAEQQlGDQMgAEEANgIgIARBCkYNAyAAQQA2AiQgBEELRg0DIABBADYCKCAEQQxGDQMgAEEANgIsIARBDUYNAyAAQQA2AjAgBEEORg0DIABBADYCNCAEQQ9GDQMgAEEANgI4IARBEEYNAyAAQQA2AjwgBEERRg0DIABBADYCQCAEQRJGDQMgAEEANgJEIARBE0YNAyAAQQA2AkggBEEURg0DIABBADYCTCAEQRVGDQMgAEEANgJQIARBFkYNAyAAQQA2AlQgBEEXRg0DIABBADYCWCAEQRhGDQMgAEEANgJcIARBGUYNAyAAQQA2AmAgBEEaRg0DIABBADYCZCAEQRtGDQMgAEEANgJoIARBHEYNAyAAQQA2AmwgBEEdRg0DIABBADYCcCAEQR5GDQMgAEEANgJ0IARBH0YNAyAAQQA2AnggBEEgRg0DIABBADYCfCAEQSFGDQMgAEEANgKAASAEQSJGDQMgAEEANgKEASAEQSNGDQMgAEEANgKIASAEQSRGDQMgAEEANgKMASAEQSVGDQMgAEEANgKQASAEQSZGDQMgAEEANgKUASAEQSdGDQMgAEEANgKYASAEQShGDQMgAEEANgKcASAEQSlGDQNBKEEoQfCwxwAQ4xEACyAEQShB8LDHABDjEQALIAdBKEHwsMcAEOMRAAtBmrHHAEEdQfCwxwAQzhMACyAAKAKgASIEIAJqIQUCQCABQR9xIgYNACAAIAU2AqABIAAPCwJAAkAgBUF/aiIDQSdLDQAgBSEIIAAgA0ECdGooAgBBACABayIHdiIDRQ0BAkAgBUEnSw0AIAAgBUECdGogAzYCACAFQQFqIQgMAgsgBUEoQfCwxwAQ4xEACyADQShB8LDHABDjEQALAkAgAkEBaiIJIAVPDQAgB0EfcSEDAkAgBEEBcQ0AIAAgBUF/aiIFQQJ0aiIHIAdBfGooAgAgA3YgBygCACAGdHI2AgALIARBAkYNACAFQQJ0IABqQXRqIQQDQCAEQQhqIgcgBEEEaiIBKAIAIgogA3YgBygCACAGdHI2AgAgASAEKAIAIAN2IAogBnRyNgIAIARBeGohBCAJIAVBfmoiBUkNAAsLIAAgAkECdGoiBCAEKAIAIAZ0NgIAIAAgCDYCoAEgAAvdCAIEfwF+IwBB8ABrIgUkACAFIAM2AgwgBSACNgIIAkACQCABQYECSQ0AAkACQCAALACAAkG/f0wNAEGAAiEGDAELAkAgACwA/wFBv39MDQBB/wEhBgwBC0H+AUH9ASAALAD+AUG/f0obIQYLAkAgACAGaiwAAEG/f0wNAEEFIQdBtKPHACEIDAILIAAgAUEAIAYgBBDnFwALQQAhB0EBIQggASEGCyAFIAY2AhQgBSAANgIQIAUgBzYCHCAFIAg2AhgCQAJAIAIgAUsNACADIAFNDQEgAyECCyAFIAI2AiggBUEDNgI0IAVB/KTHADYCMCAFQgM3AjwgBUGcBq1CIIYiCSAFQRhqrYQ3A1ggBSAJIAVBEGqthDcDUCAFQQWtQiCGIAVBKGqthDcDSCAFIAVByABqNgI4IAVBMGogBBCiFQALAkACQAJAIAIgA0sNAAJAIAJFDQAgAiABTw0AIAVBDGogBUEIaiAAIAJqLAAAQb9/ShsoAgAhAwsgBSADNgIgIAEhAgJAIAMgAU8NACADQQFqIgZBACADQX1qIgIgAiADSxsiAkkNAiAGIAJrIQcCQAJAIAAgA2osAABBv39MDQAgB0F/aiEDDAELAkAgACAGaiIDQX5qLAAAQb9/TA0AIAdBfmohAwwBCwJAIANBfWosAABBv39MDQAgB0F9aiEDDAELIAdBfEF7IANBfGosAABBv39KG2ohAwsgAyACaiECCwJAIAJFDQACQCACIAFJDQAgAiABRg0BDAQLIAAgAmosAABBv39MDQMLAkACQAJAIAIgAUYNAAJAAkACQCAAIAJqIgAsAAAiAUF/Sg0AIAAtAAFBP3EhAyABQR9xIQYgAUFfSw0BIAZBBnQgA3IhAQwCCyAFIAFB/wFxNgIkQQEhAQwECyADQQZ0IAAtAAJBP3FyIQMCQCABQXBPDQAgAyAGQQx0ciEBDAELIANBBnQgAC0AA0E/cXIgBkESdEGAgPAAcXIiAUGAgMQARg0BCyAFIAE2AiQgAUGAAU8NAUEBIQEMAgsgBBDaGAALAkAgAUGAEE8NAEECIQEMAQtBA0EEIAFBgIAESRshAQsgBSACNgIoIAUgASACajYCLCAFQQU2AjQgBUG8pMcANgIwIAVCBTcCPCAFQZwGrUIghiIJIAVBGGqthDcDaCAFIAkgBUEQaq2ENwNgIAVBngatQiCGIAVBKGqthDcDWCAFQc4CrUIghiAFQSRqrYQ3A1AgBUEFrUIghiAFQSBqrYQ3A0ggBSAFQcgAajYCOCAFQTBqIAQQohUACyAFQQQ2AjQgBUHco8cANgIwIAVCBDcCPCAFQZwGrUIghiIJIAVBGGqthDcDYCAFIAkgBUEQaq2ENwNYIAVBBa1CIIYiCSAFQQxqrYQ3A1AgBSAJIAVBCGqthDcDSCAFIAVByABqNgI4IAVBMGogBBCiFQALIAIgBkGUpccAENkYAAsgACABIAIgASAEEOcXAAunCgEHfyMAQZADayIHJAACQAJAAkACQAJAIAIoAugLQYCAgIB4Rg0AIAIoAvALIghBAnQhCUEAIQogCEH/////A0sNAiAJQfz///8HSw0CIAIoAuwLIQsCQAJAIAkNAEEEIQxBACENDAELELEaQQQhCiAIIQ0gCUEEEPsXIgxFDQMLAkAgCUUNACAMIAsgCfwKAAALIAcgCDYCgAIgByAMNgL8ASAHIA02AvgBDAELIAdBgICAgHg2AvgBCyAHQcACaiABIAQgB0H4AWoQugkgBygCzAIhCSAHKALIAiEIIAcoAsQCIQwCQAJAIAcoAsACIg1BJ0YNACAAIAcpA9ACNwMQIABByABqIAdBwAJqQcgAaikDADcDACAAQcAAaiAHQcACakHAAGopAwA3AwAgAEE4aiAHQcACakE4aikDADcDACAAQTBqIAdBwAJqQTBqKQMANwMAIABBKGogB0HAAmpBKGopAwA3AwAgAEEgaiAHQcACakEgaikDADcDACAAQRhqIAdBwAJqQRhqKQMANwMAIAAgCTYCDCAAIAg2AgggACAMNgIEIAAgDTYCAAwBCyAHIAk2AnggByAINgJ0IAdBEDoAcCAHQYGAiIABNgJsIAcgCTYCaCAHIAk2AmQgB0ECOgBgIAdCADcCWEEAIQ0gB0EANgJQIAdBADYCSCAHQQA2AkAgB0EQOgA8IAdBgYCIgAE2AjggByAJNgI0IAdBADYCMCAHQQI6ACwgB0IANwIkIAdBADYCHCAHQQA2AhQgB0EANgIMIAcgB0EMahDXCiAHIAY2AvQBIAcgBTYC8AEgB0EQOgDsASAHQYGAiIABNgLoASAHIAY2AuQBIAcgBjYC4AEgB0ECOgDcASAHQgA3AtQBIAdBADYCzAEgB0EANgLEASAHQQA2ArwBIAdBEDoAuAEgB0GBgIiAATYCtAEgByAGNgKwASAHQQA2AqwBIAdBAjoAqAEgB0IANwKgASAHQQA2ApgBIAdBADYCkAEgB0EANgKIASAHQfwAaiAHQYgBahDXCiAHIAEtAJwPOgCcAiAHQQA2ApgCIAcgBDYClAIgByAHKAKEASIGNgKQAiAHIAcoAoABNgKMAiAHIAcoAggiBDYCiAIgByAHKAIENgKEAiAHIAM2AoACIAcgAjYC/AEgByABNgL4ASAGIARqIgIgAkEBdmsiCUEBaiICQQN0IQEgCUH+////AEsNAhCxGkEEIQ0gAUEEEPwXIgVFDQIgByACQQF0Igk2AqgCIAcgBTYCpAIgByAJNgKgAiAHIAI2AqwCELEaIAFBBBD8FyIFRQ0DIAcgCTYCuAIgByAFNgK0AiAHIAk2ArACIAcgAjYCvAIgB0HAAmogB0H4AWogB0EAIAQgB0H8AGpBACAGIAdBsAJqIAdBoAJqEMkBAkACQCAHKALAAkEnRg0AAkBB0ABFDQAgACAHQcACakHQAPwKAAALIAcoArACIgBFDQEgBygCtAIgAEECdEEEEL4YDAELIABBJzYCACAHKAKwAiIARQ0AIAcoArQCIABBAnRBBBC+GAsCQCAHKAKgAiIARQ0AIAcoAqQCIABBAnRBBBC+GAsCQCAHKAJ8IgBFDQAgBygCgAEgAEEDdEEEEL4YCwJAIAcoAgAiAEUNACAHKAIEIABBA3RBBBC+GAsgDEUNACAIIAxBARC+GAsgB0GQA2okAA8LIAogCUGAmcIAEOYWAAsgDSABQaj7wgAQ5hYAC0EEIAFBqPvCABDmFgALvgkCDX8BfiMAQYABayICJAACQAJAAkACQAJAAkAgAS0ATCIDQXxqDgQFAQACAAsgA0EGcUEERg0EIAEoAlgiBEUNAiABKAJUQQhqIQMgBEEYbCEEA0AgAygCAEUNBSADQRhqIQMgBEFoaiIERQ0DDAALCwJAIAAoAlAiBUEHRw0AIAAoAgBBB0YNACABKAJIQQN0IQQgASgCRCEGIAAoAkQhByAAKAJAIQgDQCAGIQMgBEUNBSAEQXhqIQQgA0EIaiEGIAMoAgAgCEcNACADQQRqKAIAIAdHDQALIAAtAEgiAw0EIAJBwABqIAAQxwIgAkEIaiIEIAJBzABqKQIANwMAIAJBEGoiBiACQdQAaikCADcDACACQRhqIgkgAkHcAGopAgA3AwAgAkEgaiIKIAJB5ABqKQIANwMAIAJBKGoiCyACQewAaikCADcDACACQTBqIgwgAkH0AGopAgA3AwAgAkE4aiINIAJB/ABqKAIANgIAIAIgAikCRDcDACAALwBJIQ4gACACKAJAIgU2AlAgACACKQMANwJUIABB3ABqIAQpAwA3AgAgAEHkAGogBikDADcCACAAQewAaiAJKQMANwIAIABB9ABqIAopAwA3AgAgAEH8AGogCykDADcCACAAQYQBaiAMKQMANwIAIABBjAFqIA0oAgA2AgAgACAOOwCZASAAIAM6AJgBIAAgBzYClAEgACAINgKQAQsgBUEHRg0DIAEoAkhBA3QhBCABKAJEIQYgACgClAEhByAAKAKQASEIA0AgBiEDIARFDQQgBEF4aiEEIANBCGohBiADKAIAIAhHDQAgA0EEaigCACAHRw0AC0IAIQ8CQAJAIAEoAghB/f///wdqDgUAAAEAAAELIAEpAxAhDwsgBUEERw0DIAAtAFhBH0cNAyAAIAApA2ggD3w3A2gMAwsgASgCHCEEIAEoAhghBgJAIAEoAjQiCEGBgICAeEYNAEGAgICAeCEHIAEoAjwhAyABKAI4IQUCQAJAIAhBgICAgHhHDQAgBSEIDAELQQAhByADQQBIDQMCQAJAIAMNAEEBIQgMAQsQsRpBASEHIANBARD7FyIIRQ0ECwJAIANFDQAgCCAFIAP8CgAACyADIQcLIAJBwABqIAFBCGoQwQYgAiADNgJYIAIgCDYCVCACIAc2AlAgAEGwAWogBiAEIAJBwABqELQEGgwDCyAAQbABaiAGIAQQ1wEaDAILIAJBwABqIAFBCGogAC0A1QEQpQcgACgCUCIEQQdHIAAtAJgBQQFzcSEGIABB0ABqIQMgASgCHCEIIAEoAhghAQJAIARBB0YNACADEOYOCyADIAIpA0A3AwAgAEEAOgCaASAAIAY6AJkBIABBADoAmAEgACAINgKUASAAIAE2ApABIANBOGogAkHAAGpBOGopAwA3AwAgA0EwaiACQcAAakEwaikDADcDACADQShqIAJBwABqQShqKQMANwMAIANBIGogAkHAAGpBIGopAwA3AwAgA0EYaiACQcAAakEYaikDADcDACADQRBqIAJBwABqQRBqKQMANwMAIANBCGogAkHA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JABBAyEEAkACQCABKAKQASIFIAEoApQBIgZJDQAMAQsCQCACDQACQAJAAkAgASgCgAEiBEEDRg0AIAEoAogBIgJFDQAgASACQX9qNgKIASAEQQJHDQFBAiEEDAILIANBCGogARDuBiABQYABaiIEQQhqIANBCGpBCGooAgA2AgAgBCADKQIINwIAAkACQCABKAKAASIEQQNGDQAgASgCiAEiBQ0BC0EDIQQMBAsgASAFQX9qNgKIASABKAKQASEFCyABKAKEASECCyABIAVBAWo2ApABDAELAkACQAJAIAEoAmAgBiAFQX9zaiACIAIgBWpBAWogBksiBxsiCCAFaiICQQFqSQ0AQQMhBAJAAkAgCEEAIAEoAogBIgkgASgCgAEiCkEDRiILGyIMSQ0AIAFBgAFqIQkgASAMIAVqIgU2ApABAkACQAJAIAggDEYNACABIAI2ApABIAFByABqIQsgCCAMayEIIANBDGohDAJAA0AgASgCRCEFIAEoAkAhAgNAIANBCGogASACIAUQ+AMgAygCCEEBRg0HIAMoAhQhBAJAIAMpAgwiDadBA0YiBg0AIARFDQELCwJAIAZFDQBCAyENDAILIAEgASgCUCAEazYCUCALQgAQsRYCQCAEIAhLDQAgCCAEayEIDAELCyAEIAhrIQULIAEgBTYCiAEgASANNwOAASABKAKQASIGIAEoApQBTw0GIA2nIgRBA0YNASAFRQ0BIAEgBUF/ajYCiAECQCAEQQJHDQBBAiEEDAMLIAEoAoQBIQIMAgtBAyEEIAlBAzYCACAFIAZPDQYLIANBCGogARDuBiAJQQhqIANBCGpBCGooAgA2AgAgCSADKQIINwIAQQMhBAJAIAEoAoABIgVBA0cNAAwGCwJAIAEoAogBIgINAAwGCyABIAJBf2o2AogBIAEoApABIQYgASgChAEhAiAFIQQLIAEgBkEBajYCkAEMBAsgASAIQQFqIgYgBWo2ApABIAsNBAJAIAkgCEsNACABQQA2AogBQQMhBAwECyABIAkgBms2AogBQQIhBCAKQQJGDQMgASgChAEhAiAKIQQMAwsgA0GgAWpBCGogDEEIaigCADYCACADIAwpAgA3A6ABQdTHwQBBKyADQaABakHUkMIAQeSQwgAQ+BAACwJAIAEoAngiBQ0ADAMLIANBCGogBSAGIAIgBiACSRsgBiABKAKMARD3AgJAQZgBRQ0AIAEgA0EIakGYAfwKAAALIAEoApABIgUgASgClAFPDQACQAJAAkAgASgCgAEiBEEDRg0AIAEoAogBIgJFDQAgASACQX9qNgKIASAEQQJHDQFBAiEEDAILIANBCGogARDuBiABQYABaiIEQQhqIANBCGpBCGooAgA2AgAgBCADKQIINwIAIAEoAoABIgRBA0YNAiABKAKIASIFRQ0CIAEgBUF/ajYCiAEgASgCkAEhBQsgASgChAEhAgsgASAFQQFqNgKQAQwBC0EDIQQLQQMgBCAHGyEECyAAIAI2AgQgACAENgIAIANBsAFqJAAL4gkBB38jAEHgBmsiAyQAIANB+AJqIAIQnwUgAygChAMhBCADKAKAAyECIAMoAvwCIQUCQAJAAkAgAygC+AJBAUcNACAAIAQ2AgwgACACNgIIIAAgBTYCBCAAQSc2AgAMAQtBACEGIANBADoAowQgAyABQeANajYC1AQgAyACIARBBXRqNgLQBCADIAU2AswEIAMgAjYCyAQgAyACNgLEBCADIANBowRqNgLYBCADQegEaiADQcQEahBfAkACQCADKALIBUGAgICAeEYNABCxGkHAA0EIEPsXIgVFDQMCQEHwAEUNACAFIANB6ARqQfAA/AoAAAtBASEGIANBATYC5AQgAyAFNgLgBCADQQQ2AtwEIANB2AVqQRBqIANBxARqQRBqKQIANwMAIANB2AVqQQhqIANBxARqQQhqKQIANwMAIAMgAykCxAQ3A9gFIANB8AVqIANB2AVqEF8CQCADKALQBkGAgICAeEYNAEHwACECQQEhBgNAAkAgBiADKALcBEcNACADQdwEaiAGQQFBCEHwABCDDCADKALgBCEFCwJAQfAARQ0AIAUgAmogA0HwBWpB8AD8CgAACyADIAZBAWoiBjYC5AQgAkHwAGohAiADQfAFaiADQdgFahBfIAMoAtAGQYCAgIB4Rw0ACwsCQCADKALgBSICRQ0AIAMoAtgFIAJBBXRBARC+GAsgAygC3AQhBwwBC0EIIQUCQCADKALMBCICRQ0AIAMoAsQEIAJBBXRBARC+GAtBACEHCwJAIAMtAKMEQQFHDQAgA0GABGogA0GjBGpBGGopAAA3AwAgA0H4A2pBEGogA0HDBGotAAA6AAAgAyADLwCkBDsBkAQg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KQMAIRAgAigCECEHAkACQAJAAkACQAJAAkAgACgCKEGAgICAeEYNACAAKAIYIghBAWohCQJAIAAoAiRBHksNACAAIAEgAhCjBQwGCyAAKQMAIREgAEIANwMAIAApAhwhEiAAQgA3AxggAEEIaiIKKAIAIQsgACgCDCEMIApCADcDACAAQRBqIg0oAgAhDiANQQA2AgAgA0EQakEIaiAAQSRqKQIANwMAIANBEGpBEGogAEEsaikCADcDACADQShqIABBNGooAgA2AgAgAEEANgIwIABCgICAgIABNwMoIABCCDcDICADIAg2AgwgAyASNwMQIAAoAhQhDyADQTBqQRBqQQA2AgAgA0EwakEIakIANwMAIANCADcDMCAKKAIADQEgACkDAEIAUg0BIAAoAgwNASANKAIADQEgACALNgIIIAAgCDYCGCAAIA42AhAgACARNwMAIAAgDDYCDCAEQdSCwgAQiA4gACgCLCIEIAg2AhggBCAPNgIUIAQgDjYCECAEIAw2AgwgBCALNgIIIAQgETcDACAEIAMpAxA3AhwgBEEkaiADQRhqKQMANwIAIARBLGogA0EgaikDADcCACAEQTRqIANBKGooAgA2AgAgAEEBNgIwIABBABDwAiADIAAoAhgiBDYCTCAIIARHDQIgACgCMCIIRQ0DAkACQCAAKAIsIgQoAhgiCiABTw0AIAhBAUYNASAEQThqIQQgASAKQX9zaiEBCyAAIAk2AhggACAAKAIIIAdqNgIIIAAgACkDACAQfDcDACAAIAUgACgCECIHIAUgB0sbIAUgBxs2AhAgACAGIAAoAgwiBSAGIAVJGyAFIAYbIAYgBRs2AgwgBCABIAIQowUMBgtBAUEBQYSDwgAQ4xEACxCxGkEgQQgQ+xciAUUNAyABIAIpAwA3AwAgAUEYaiACQRhqKQMANwMAIAFBEGogAkEQaikDADcDACABQQhqIAJBCGopAwA3AwACQCAEKAIAQYCAgIB4Rg0AIAAQlA8LIABCCDcCLCAAQgE3AiQgACABNgIgIABCgYCAgBA3AxggACAFNgIQIAAgBjYCDCAAIAc2AgggACAQNwMADAULIANBADYCWEEAIAAgA0EwaiADQdgAakHEgsIAEJEUAAsgA0EANgJYQQAgA0EMaiADQcwAaiADQdgAakHkgsIAEKgUAAtBAEEAQfSC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wgAQzA8LIAEoAgQgAGpBADoAACABIABBAWoiADYCCCAErSEJA0AgCadB/wBxIAlC/wBWQQd0ciEIAkACQCABKAIAIABGDQAgACEDDAELIAEgAEEBQQFBARCHDCABKAIIIQMLIAEgA0EBaiIANgIIIAEoAgQgA2ogCDoAACAJQoABVCEDIAlCB4ghCSADRQ0ADAILCyAAKAIUIQggACkCCCEJIAIgBzYCCCACIAmnIgU2AgwgAiADNgIEIAlCIIinIQYCQCADIAVHDQAgAkEEakHMncIAEI0OIAIoAgghBwsgByAFQQxsaiIAIAg2AgggACAENgIEIAAgBjYCAEIAIAVBAWoiBq19IQkgASgCCCEAA0AgCULAAHxC/wBWIghBB3QgCadB/wBxciEEAkACQCABKAIAIABGDQAgACEDDAELIAEgAEEBQQFBARCHDCABKAIIIQMLIAlCB4chCSABIANBAWoiADYCCCABKAIEIANqIAQ6AAAgCA0ACwJAIAZFDQAgB0EEaiEAIAVBDGxBDGohAwNAIAAoAgAgAEEEaigCACABEI4PIABBDGohACADQXRqIgMNAAsgByEBA0ACQCABKAIAIgBBgICAgHhGDQAgAEUNACABQQRqKAIAIABBARC+GAsgAUEMaiEBIAZBf2oiBg0ACwsgAigCBCIBRQ0AIAcgAUEMbEEEEL4YCyACQRBqJAAL/QcCBX8CfiMAQRBrIgIkAAJAAkACQAJAAkACQAJAAkACQCAALQAAIgNBf2pBACADQX5qQf8BcUEHSRsOCAABAgMFBAgIAAsgACgCCCEEAkAgA0EBcUUNACAEIAAoAgQiBUkNBiAEIAAoAhwiA0sNByAAKAIYIQYCQCAEIAVrIgMgASgCACABKAIIIgBrTQ0AIAEgACADQQFBARCHDCABKAIIIQALAkAgA0UNACABKAIEIABqIAYgBWogA/wKAAALIAEgACADajYCCAwICyACQQxqIABBFGooAgA2AgAgAiAAKQIMIgc3AgQgAiAENgIAIAJBCGogB6cgBEEBcRsgARCdEQwHC0IAIAApAwh9IQcgASgCCCEDA0AgB0LAAHwiCEL/AFZBB3QgB6dB/wBxciEEAkACQCABKAIAIANGDQAgAyEADAELIAEgA0EBQQFBARCHDCABKAIIIQALIAdCB4chByABIABBAWoiAzYC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AGpBCGogBEEIaikDADcDACACIAQpAwAiCTcDQCAJpyIHQf8BcUEjRw0BIAJBwABqEP0PIAYhBCAGIAVHDQAMAgsLIAJB+ABqQRhqIARBGGopAAA3AAAgAkH4AGpBEWogBEERaikAADcAACACQfgAakEJaiAEQQlqKQAANwAAIAIgBEEBaikAADcAeSACIAc6AHggAkEANgIQIAJCgICAgBA3AgggAkHc48EANgJEIAJCoICAgA43AkggAiACQQhqNgJAIAEgAkHAAGoQ2BINBiACKAIIIQYgAigCECEHIAIoAgwhBSACQQhqIAJB+ABqEOwFIAIoApQBIQMgAigCkAEhBCACQcAAaiAFIAcQ2gYgAkHAAGpBIGogAkEQaiIHKQMANwMAIAJBwABqQShqIAJBGGoiCCkDADcDACACIAMgBGo2AnQgAiAENgJwIAIgAikDCDcDWAJAIAZFDQAgBSAGQQEQvhgLIAJB+ABqEP0PIAcgAkHJAGopAAA3AwAgCCACQdEAaikAADcDACACQSBqIAJB2QBqKQAANwMAIAJBCGpBIGogAkHhAGopAAA3AwAgAkEIakEoaiACQekAaikAADcDACACQTdqIAJB8ABqKQAANwAAIAIgAikAQTcDCCACLQBAIgRBGkcNAyABLQAAIQMLIANB/wFxQRpGDQELAkAgASgCJCIGIAEoAhwiBEYNACAGIARrQQV2IQYDQCAEEP0PIARBIGohBCAGQX9qIgYNAAsLAkAgASgCICIERQ0AIAEoAhggBEEFdEEIEL4YCyADQR5xQRhHDQAgA0FpakH/AXFBAkkNACABKAIEIgQgBCgCACIEQX9qNgIAIARBAUcNACABQQRqEJ4TC0EaIQQgAUEaOgAAIAEgAikAQDcAASABQQlqIAJByABqKQAANwAAIAFBEWogAkHQAGopAAA3AAAgAUEZaiACQdgAaikAADcAACABQSBqIAJB3wBqKQAANwAACyAAIAQ6AAAgACACKQMINwABIABBCWogAkEQaikDADcAACAAQRFqIAJBGGopAwA3AAAgAEEZaiACQSBqKQMANwAAIABBIWogAkEoaikDADcAACAAQSlqIAJBMGopAwA3AAAgAEEwaiACQTdqKQAANwAADAELIABBGjoAAAsgAkGgAWokAA8LQYTkwQBBNyACQZ8BakH048EAQbzk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QQFBARCHDCABKAIIIQALIAdCB4chByABIABBAWoiAzYCCCABKAIEIABqIAQ6AAAgCEKAAVoNAAsgAkEIakEBciAFIAmnQQFxGyABEKwaDAQLIAAoAgghBSAAKAIEIQQCQCAAKAIMIgMgASgCACABKAIIIgBrTQ0AIAEgACADQQFBARCHDCABKAIIIQALAkAgA0UNACABKAIEIABqIAUgA/wKAAALIAEgACADajYCCCAEQYCAgIB4ckGAgICAeEYNAyAFIARBARC+GAwDCyAAKQMIIQcCQCABKAIIIgMgASgCAEcNACABQaSPwgAQzA8LIAEoAgQgA2pBADoAACABIANBAWoiAzYCCANAIAenQf8AcSAHQv8AVkEHdHIhBAJAAkAgASgCACADRg0AIAMhAAwBCyABIANBAUEBQQEQhwwgASgCCCEACyABIABBAWoiAzYCCCABKAIEIABqIAQ6AAAgB0KAAVQhACAHQgeIIQcgAA0DDAALCyAFIARBhI3CABDZGAALIAQgA0GEjcIAENgYAAsgAkEQaiQAC4YIAgJ/AX4jAEHAAGsiAiQAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIAQVlqIgNBCSADQQ1JGw4NAAECAwQFBgcICQoLDAALIAIgAEEEajYCFCACIABBCGo2AgwgAkECNgIcIAJB5J3BADYCGCACQgI3AiQgAkEOrUIghiIEIAJBDGqthDcDOCACIAQgAkEUaq2ENwMwIAIgAkEwajYCICABKAIAIAEoAgQgAkEYahCjByEADAwLIAIgAEEEajYCFCACIABBEGo2AgwgAkECNgIcIAJB8KDBADYCGCACQgI3AiQgAkEOrUIghiACQQxqrYQ3AzggAkELrUIghiACQRRqrYQ3AzAgAiACQTBqNgIgIAEoAgAgASgCBCACQRhqEKMHIQAMCwsgAiAAKQIENwIMIAJBATYCHCACQaChwQA2AhggAkIBNwIkIAJBAa1CIIYgAkEMaq2ENwMwIAIgAkEwajYCICABKAIAIAEoAgQgAkEYahCjByEADAoLIAIgAEEEajYCDCACQQI2AhwgAkHcocEANgIYIAJCATcCJCACQQutQiCGIAJBDGqthDcDMCACIAJBMGo2AiAgASgCACABKAIEIAJBGGoQowchAAwJCyACIABBBGo2AhQgAiAA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LQC8ASEEDAELIAYgBzYCtAEgBiAENgKwAQJAIAQNAEEAIQdBACEIDAILIAJB4ANqIAZBsAFqEPgLQf8BcSIIQQRHDQFCACEJQSIhCAsgACAEOgAMIAAgCTcCBCAAIAg2AgAgACAGLwFcOwANIAAgBikDGDcDECAAQQ9qIAZB3gBqLQAAOgAAIABBGGogBkEgaikDADcDACAAQSBqIAZBKGopAwA3AwAgAEEoaiAGQRhqQRhqKQMANwMAIABBMGogBkEYakEgaikDADcDACAAQThqIAZBGGpBKGopAwA3AwAgAEHAAGogBkEYakEwaikDADcDACAAQcgAaiAGQRhqQThqKQMANwMADAELIAYgB61CIIYgBK2EIgk3AwggBiAIOgAQAkACQAJAIAhBA0YNACAGIAU2AnAgBkGAgICAeDYCbCAGQQE6AHggBkGwAWogASACIAMgBkEIaiAGQewAaiAGQfgAahCzASAGKAKwASIEQSdGDQEgACAGKQPAATcDECAGQegAaiICIAZBsAFqQQxqKAIANgIAIABBGGogBkGwAWpBGGopAwA3AwAgAEEgaiAGQbABakEgaikDADcDACAAQShqIAZBsAFqQShqKQMANwMAIABBMGogBkGwAWpBMGopAwA3AwAgAEE4aiAGQbABakE4aikDADcDACAAQcAAaiAGQbABakHAAGopAwA3AwAgAEHIAGogBkGwAWpByABqKQMANwMAIAYgBikCtAE3A2AgAEEMaiACKAIANgIAIAAgBikDYDcCBCAAIAQ2AgAMAwsgBkEWNgKwASAGQQM6ALQBIAZBsAFqEK0HIAZBATYClAEgBiAFNgKQASAGQQM6AIwBIAYgCTcChAEgBkEANgKAASAGQoCAgIAYNwJ4IAZBsAFqIAEgAiADIAZB+ABqEIgBIAYoArABQSdHDQELIABBJzYCAAwBC0HQAEUNACAAIAZBsAFqQdAA/AoAAAsgBkGAAmokAAvyBgEIfwJAAkAgASAAQQNqQXxxIgIgAGsiA0kNACABIANrIgRBBEkNACAEQQNxIQVBACEGQQAhAQJAIAIgAEYiBw0AQQAhAQJAAkAgACACayIIQXxNDQBBACEJDAELQQAhCQNAIAEgACAJaiICLAAAQb9/SmogAkEBaiwAAEG/f0pqIAJBAmosAABBv39KaiACQQNqLAAAQb9/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DQIgBigCACICRQ0CIAcgAkEBEL4YDAILAkAgCCAFaikAACISIBGFIBIgEIVC//379+/fv/9+fINCgIGChIiQoMCAf4MiE0IAUg0AQQghBgNAIBIgEkIBhoNCgIGChIiQoMCAf4NCAFINAiAFIAZqIQUgBkEIaiEGIAggBSAEcSIFaikAACISIBGFIBIgEIVC//379+/fv/9+fINCgIGChIiQoMCAf4MiE1ANAAsLAkAgCEEAIBN6p0EDdiAFaiAEcWtBOGxqIgJBSGovAQANACACQUpqLwEAIg5BEEsNAwsgCkEQQayAwQAQ2BgACwJAIAEoAggNACADQQhqIAFBASABQRBqQQEQsgULIAAgATYCHCAAIA83AwAgACACKQIANwIIIABBGGogAkEQaigCADYCACAAQRBqIAJBCGopAgA3AgALIANBEGokAA8LIA5BEEGsgMEAENgYAAvnBwIFfwJ+AkACQAJAAkACQAJAAkACQAJAIAAtAAAiAkF/akEAIAJBfmpB/wFxQQdJGw4IAAECAwUECAgACyAAKAIIIQMgACgCBCEEAkAgAkEBcUUNACADIARJDQYgAyAAKAIcIgJLDQcgACgCGCEFAkAgAyAEayICIAEoAgAgASgCCCIAa00NACABIAAgAkEBQQEQhwwgASgCCCEACwJAIAJFDQAgASgCBCAAaiAFIARqIAL8CgAACyABIAAgAmo2AggPCyADIAAoAgwgARCODyAEQYCAgIB4ckGAgICAeEYNByADIARBARC+GA8LQgAgACkDCH0hByABKAIIIQIDQCAHQsAAfCIIQv8AVkEHdCAHp0H/AHFyIQMCQAJAIAEoAgAgAkYNACACIQAMAQsgASACQQFBAUEBEIcMIAEoAgghAAsgB0IHhyEHIAEgAEEBaiICNgIIIAEoAgQgAGogAzoAACAIQoABWg0ADAcLCyABKAIIIQIgACkDCCEHA0AgB6dB/wBxIAdC/wBWQQd0ciEDAkACQCABKAIAIAJGDQAgAiEADAELIAEgAkEBQQFBARCHDCABKAIIIQALIAEgAEEBaiICNgIIIAEoAgQgAGogAzoAACAHQoABVCEAIAdCB4ghByAARQ0ADAYLCyABKAIIIQIgACgCGCEGIAAoAhQhBSAAKAIQIQQgACkDCCEHA0AgB0LAAHwiCEL/AFZBB3QgB6dB/wBx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AkACQCACKALoAUEDRw0AIAQgAUHgAGoQ1AcMAQsgBCACQegBahCqFhogBCABQeAAaiIFENQHIAJBCGpBCGoiBCACQZgBakEQaikDADcDACACQQhqQRBqIgMgAkGYAWpBGGopAwA3AwAgAkEIakEYaiIGIAJBmAFqQSBqKQMANwMAIAJBCGpBIGoiByACQZgBakEoaikDADcDACACQQhqQShqIgggAkGYAWpBMGopAwA3AwAgAkEIakEwaiIJIAJBmAFqQThqKQMANwMAIAIgAikDoAE3AwggAikDmAEiCkICUQ0AIAJB2ABqQRBqIAQpAwA3AwAgAkHYAGpBGGogAykDADcDACACQdgAakEgaiAGKQMANwMAIAJB2ABqQShqIAcpAwA3AwAgAkHYAGpBMGogCCkDADcDACACQdgAakE4aiAJKQMANwMAIAIgAikDCDcDYCACIAo3A1ggASgC2AEhBEEAIQMCQCAKp0EBcUUNACACQdgAakEIahDQFiEDCyAEKAIcIggoAhAiBiACKAKEASIHTQ0AIAQpAwAgAikDeH0hCiAEKAIQIAIoAoABayEEIAgoAgwhCAJAIAMNACACIAY2ArQBIAIgCDYCsAEgAiAKNwOoASACIAY2AqABIAJBgQQ7AZgBIAIgBzYCnAEgBSACQZgBaiAEIAYgB2sQswYMAQsgAiAGNgK0ASACIAg2ArABIAIgCjcDqAEgAiAGNgKgASACIAc2ApwBIAJBgQQ7AZgBIAUgAkGYAWogAyAEEOEGCwJAQdAARQ0AIAJBmAFqIAFB4ABqQdAA/AoAAAsgACACQZgBahCFAwJAIAEoAkBBA0cNACABKAJEIgRFDQAgASgCSCAEQQR0QQgQvhgLIAJBgAJqJAALxAcCCH8BfiMAQYACayICJAAgASgC2AEhAyACQcAAakEQaiABQcgBaikDADcDACACQcAAakEIaiABQcABaikDADcDACACIAEpA7gBNwNAIAJBmAFqQThqIAFBOGopAwA3AwAgAkGYAWpBMGogAUEwaikDADcDACACQZgBakEoaiABQShqKQMANwMAIAJBmAFqQSBqIAFBIGopAwA3AwAgAkGYAWpBGGogAUEYaikDADcDACACQZgBakEQaiABQRBqKQMANwMAIAJBmAFqQQhqIAFBCGopAwA3AwAgAiABKQMANwOYASABQcAAaiEEIANBHGooAgAhAwJAIAIoAkBBA0YNACAEIAJBwABqEKwWGgsgAkHoAWogAkGYAWogAygCDCADKAIQEPYNAkACQCACKALoAUEDRw0AIAQgAUHgAGoQvQcMAQsgBCACQegBahCsFhogBCABQeAAaiIFEL0HIAJBCGpBCGoiBCACQZgBakEQaikDADcDACACQQhqQRBqIgMgAkGYAWpBGGopAwA3AwAgAkEIakEYaiIGIAJBmAFqQSBqKQMANwMAIAJBCGpBIGoiByACQZgBakEoaikDADcDACACQQhqQShqIgggAkGYAWpBMGopAwA3AwAgAkEIakEwaiIJIAJBmAFqQThqKQMANwMAIAIgAikDoAE3AwggAikDmAEiCkICUQ0AIAJB2ABqQRBqIAQpAwA3AwAgAkHYAGpBGGogAykDADcDACACQdgAakEgaiAGKQMANwMAIAJB2ABqQShqIAcpAwA3AwAgAkHYAGpBMGogCCkDADcDACACQdgAakE4aiAJKQMANwMAIAIgAikDCDcDYCACIAo3A1ggASgC2AEhBEEAIQMCQCAKp0EBcUUNACACQdgAakEIahDQFiEDCyAEKAIcIggoAhAiBiACKAKEASIHTQ0AIAQpAwAgAikDeH0hCiAEKAIQIAIoAoABayEEIAgoAgwhCAJAIAMNACACIAY2ArQBIAIgCDYCsAEgAiAKNwOoASACIAY2AqABIAJBgQQ7AZgBIAIgBzYCnAEgBSACQZgBaiAEIAYgB2sQlAYMAQsgAiAGNgK0ASACIAg2ArABIAIgCjcDqAEgAiAGNgKgASACIAc2ApwBIAJBgQQ7AZgBIAUgAkGYAWogAyAEEIgGCwJAQdAARQ0AIAJBmAFqIAFB4ABqQdAA/AoAAAsgACACQZgBahCEAwJAIAEoAkBBA0cNACABKAJEIgRFDQAgASgCSCAEQQR0QQgQvhgLIAJBgAJqJAAL+wgBCH8jAEEwayIEJAAgBEEIaiABIAIgAxDQCwJAAkACQAJAAkAgAiABKALkAyIFSQ0AIAEgAzYC6AMgBEEUaiABQdACaiACIAVrEPYEIAIgASgCgAUiBUkNASABIAM2AoQFIARBIGogAUHwA2ogAiAFaxDjA0EIIQUCQCAELQAgIgZBAUsNAAJAIAZBAXFFDQAgBC0AISEFDAELIAQoAiQtAAAhBQsgBEEgakEEciEHIARBKGohBiAEQSBqIAFBiAVqIAIgAxDKCAJAAkACQCAEKAIUIgJB/////wdqDgIBAAILIABBgYCAgHg2AhwgBCgCICIBQYuAgIB4Rg0GAkACQAJAAkAgAUH/////B2oiAkEIIAJBCkkbDgkAAQoKCgoKCgIKCyAEKAIkIgFBgICAgHhyQYCAgIB4Rw0CDAkLIAQoAiQiAUGAgICAeHJBgICAgHhHDQEMCAsgByEGIAFBgICAgHhyQYCAgIB4Rg0HCyAGKAIAIAFBARC+GAwGCyAAQYGAgIB4NgIcIAQoAiAiAUGLgICAeEYNBQJAAkACQAJAIAFB/////wdqIgJBCCACQQpJGw4JAAEJCQkJCQkCCQsgBCgCJCIBQYCAgIB4ckGAgICAeEcNAgwICyAEKAIkIgFBgICAgHhyQYCAgIB4Rw0BDAcLIAchBiABQYCAgIB4ckGAgICAeEYNBgsgBigCACABQQEQvhgMBQsgBCgCGCEDAkACQAJAIAVB/wFxQQhGDQAgBCgCICIGQYuAgIB4Rg0BIAQoAighCCAEKAIkIQcgBCgCCEUNAiABKAKQASEJIAEoApQBIQEgBCgCHCEKIAQoAiwhCyAAIAU6ACggACAKNgIkIAAgAzYCICAAIAI2AhwgACABIAkgASAJSRtBf2o2AhggACAEKQIMNwMQIAAgCzYCDCAAIAg2AgggACAHNgIEIAAgBjYCAAwHCyAAQYGAgIB4NgIcAkAgAkGAgICAeHJBgICAgHhGDQAgAyACQQEQvhgLIAQoAiAiAUGLgICAeEYNBgJAAkACQAJAIAFB/////wdqIgJBCCACQQpJGw4JAAEKCgoKCgoCCgsgBCgCJCIBQYCAgIB4ckGAgICAeEcNAgwJCyAEKAIkIgFBgICAgHhyQYCAgIB4Rw0BDAgLIAchBiABQYCAgIB4ckGAgICAeEYNBwsgBigCACABQQEQvhgMBgsgAEGBgICAeDYCHCACQYCAgIB4ckGAgICAeEYNBSADIAJBARC+GAwFCyAAQYGAgIB4NgIcAkACQAJAIAZB/////wdqIgFBCCABQQpJGw4JAAEGBgYGBgYCBgsgB0GAgICAeHJBgICAgHhHDQQMBQsgB0GAgICAeHJBgICAgHhGDQQMAwsgByEIIAYhByAGQYCAgIB4ckGAgICAeEcNAgwDC0G0gMIAQSlB4IDCABDOEwALQbSAwgBBKUHggMIAEM4TAAsgCCAHQQEQvhgLIAJBgICAgHhyQYCAgIB4Rg0AIAMgAkEBEL4YCyAEQTBqJAALqQcCCH8DfiMAQSBrIgIkAAJAAkACQAJAAkACQAJAAkACQCABKAIkIgNFDQAgASADQX9qNgIkIAEtAChBAXENASABKQMAIQoMBQsgASgCHCEDIAEoAhQhBCABKAIYIQUDQAJAAkACQAJAIAUgA00NACACIAUgA2siBjYCDCACIAQgA2o2AgggAkEQaiACQQhqEPYGIAIoAhBBAUYNBwJAIAYgAigCDCIHRw0AQQYhAQwJCyACKQMYIQsgASAGIAdrIgY2AiAgASAGIANqIgM2AhwCQAJAAkAgC0IAVQ0AIAtCAFkNASABQQE6ACggAUEAIAunIgZrNgIkIAZFDQcgASAGQX9zNgIkDAkLIAEgC6ciBjYCJCAFIANJDQMgAiAFIANrIgc2AgwgAiAEIANqNgIIIAJBEGogAkEIahD2BiACKAIQDQkgByACKAIMIghHDQFBBiEBIAwhCwwKCyAFIANJDQMgAiAFIANrIgc2AgwgAiAEIANqNgIIIAJBEGogAkEIahCeBwJAAkACQCACLQAQIgZBBkYNACACLQATQRh0IAIvABFBCHRyIAZyIQEgAjUCGEIghiELIAIoAhQhCQwBCyAHIAIoAgwiCEcNAUEGIQFCACELCyALIAmthCELDAoLIAIoAhQhBiABIAcgCGsiBzYCICABIAcgA2oiAzYCHEIAIQogAUIANwMAIAEgBjYCJCAGIQkMBAsgAikDGCEMIAEgByAIayIHNgIgIAEgByADaiIDNgIcIAEgDDcDCEIBIQogAUIBNwMADAMLIABBAjYCAAwLCyADIAVB0LPCABDXGAALIAMgBUHQs8IAENcYAAsgAUEAOgAoIAZFDQALIAEgBkF/ajYCJAwECyABKAIcIQMgASgCGCEFCwJAIAUgA0kNACACIAUgA2siBjYCDCACIAEoAhQgA2o2AgggAkEQaiACQQhqEPYGIAIoAhANAQJAIAYgAigCDCIFRw0AQQYhAQwDCyACKQMYIQsgASAGIAVrIgY2AiAgASAGIANqNgIcDAQLIAMgBUHQs8IAENcYAAsgAikCFCELQQIhAQsgACALNwMIIAAgATYCBCAAQQE2AgAMAwsgCqdBAXFFDQEgASkDCCELCyAAQgE3AwggAEEANgIAIAAgASkDMCIMIAt8IgpCP4dCgICAgICAgICAf4UgCiALQgBTIAogDFNzGyILNwMQIAEgCzcDMAwBCyAAQgA3AwggAEEANgIACyACQSBqJAALtQcCA38BfiMAQbABayIFJAAgBUHgAGogASACEOwHIAUoAmghBiAFKAJkIQICQAJAAkACQCAFKAJgIgdBJ0YNACAFQdIAaiAFQe8Aai0AADoAACAFQRhqIAVB4ABqQRhqKQMANwMAIAVBIGogBUHgAGpBIGopAwA3AwAgBUEQakEYaiAFQeAAakEoaikDADcDACAFQRBqQSBqIAVB4ABqQTBqKQMANwMAIAVBEGpBKGogBUHgAGpBOGopAwA3AwAgBUEQakEwaiAFQaABaikDADcDACAFQRBqQThqIAVBqAFqKQMANwMAIAUgBS8AbTsBUCAFIAUpA3A3AxAgBq1CIIYgAq2EIQggBS0AbCEBDAELIAUgBjYCZCAFIAI2AmACQCACDQBBACEGQQAhBwwCCyABQeADaiAFQeAAahD4C0H/AXEiB0EERw0BQgAhCEEiIQcLIAAgAToADCAAIAg3AgQgACAHNgIAIAAgBS8BUDsADSAAIAUpAxA3AxAgAEEPaiAFQdIAai0AADoAACAAQRhqIAVBGGopAwA3AwAgAEEgaiAFQSBqKQMANwMAIABBKGogBUEQakEYaikDADcDACAAQTBqIAVBEGpBIGopAwA3AwAgAEE4aiAFQRBqQShqKQMANwMAIABBwABqIAVBEGpBMGopAwA3AwAgAEHIAGogBUEQakE4aikDADcDAAwBCyAFIAc6AAggBSAGrUIghiACrYQ3AwACQAJAIANFDQAgBUHUAGogASADIAQQ2AoMAQsgBUGAgICAeDYCVAsCQAJAAkACQCAHDgQAAAECAAsgBUHgAGogAUHgA2ogBUEAIAVB1ABqIAUoAlQiAkGAgICAeEYbIAEtAJwPEMoDDAILIAVB4ABqIAFB4ANqIAVBACAFQdQAaiAFKAJUIgJBgICAgHhGGyABLQCcDxCTBAwBCyAFQeAAaiABQeADaiAFQQAgBUHUAGogBSgCVCICQYCAgIB4RhsgAS0AnA8Q/QcLIAAgBSkDYDcDCCAAQSc2AgAgAEHAAGogBUHgAGpBOGopAwA3AwAgAEE4aiAFQeAAakEwaikDADcDACAAQTBqIAVB4ABqQShqKQMANwMAIABBKGogBUHgAGpBIGopAwA3AwAgAEEgaiAFQeAAakEYaikDADcDACAAQRhqIAVB4ABqQRBqKQMANwMAIABBEGogBUHoAGopAwA3AwAgAkGAgICAeHJBgICAgHhGDQAgBSgCWCACQQJ0QQQQvhgLIAVBsAFqJAALsAcCDn8CfiMAQcAAayICJAAgAkEIaiABEPwEIAIoAhAhAQJAAkACQAJAAkACQAJAAkAgAigCCCIDDQAgAjEADCIQQgZSDQFBCSEDDAILIAIoAiAhBCACKAIMIQUgAiACKQIUNwI0IAIgATYCMCACIAU2AiwgAiADNgIoIAJBCGogBCACQShqEOwJIAIoAgwhBgJAAkACQCACKAIcIgdBgICAgHhHDQAgAjEACCIQQgZSDQFBCSEBDAILQQQhCCACKAIgIQkgAigCGCEKIAIpAhAhECACKAIIIQsgAigCJCIDRQ0GIAkpAwghESAJKAIAIQEQsRpBMEEEEPsXIgxFDQQgDCABNgIIIAxBADYCACAMIBGnIgE2AgRBASEEIAJBATYCECACIAw2AgwgAkEENgIIAkAgA0EBRg0AIAkgA0EEdGohDSAJQRBqIQNBFCEFQQEhBANAQX8gASADQQhqKAIAaiIIIAggAUkbIQggAygCACEOAkAgBCACKAIIRw0AIAJBCGogBEEBQQRBDBCHDCACKAIMIQwLIAwgBWoiDyAONgIAIA9BfGogCDYCACAPQXhqIAE2AgAgAiAEQQFqIgQ2AhAgBUEMaiEFIAghASADQRBqIgMgDUcNAAsLAkAgB0UNACAJIAdBBHRBCBC+GAsgAigCDCEIIAIoAgghDkEBIQEgBEECSQ0HIARBDGwhD0F/IQVBDCEBA0ACQCAPIAFHDQAgBCEBDAkLIAQgBUEBaiIFRg0GIAggAWohAyABQQxqIQEgA0EIaigCAEH3AXEgA0F8aigCAEH3AXFPDQALIABBgICAgHg2AhQgAEIENwIEIABBCDYCACAORQ0IIAggDkEMbEEEEL4YDAgLIAIgBq1CIIYgEIQgAjEAC0IYhiACMwAJQgiGhIQiEDcDKCAQpyEGIAIpAiwhEEEIIQELIABBgICAgHg2AhQgACAQNwIIIAAgBjYCBCAAIAE2AgAMBgsgAiABrUIghiAQhCACMQAPQhiGIAIzAA1CCIaEhCIQNwMoIBCnIQEgAikCLCEQQQghAwsgAEGAgICAeDYCFCAAIBA3AgggACABNgIEIAAgAzYCAAwEC0EEQTBBuMjBABDmFgALIAQgBEGI8sIAEOMRAAtBACEOAkAgB0UNAEEEIQggCSAHQQR0QQgQvhgLQQAhAQsgACABNgIcIAAgCDYCGCAAIA42AhQgACAKNgIQIAAgEDcCCCAAIAY2AgQgACALNgIACyACQcAAaiQAC4IHAQZ/AkACQAJAAkACQCAAQXxqIgQoAgAiBUF4cSIGQQRBCCAFQQNxIgcbIAFqSQ0AIAFBJ2ohCAJAIAdFDQAgBiAISw0CCwJAAkACQCACQQlJDQAgAiADEMUJIgINAUEADwtBACECIANBzP97Sw0BQRAgA0ELakF4cSADQQtJGyEBAkACQCAHDQAgAUGAAkkNASAGIAFBBHJJDQEgBiABa0GBgAhPDQEgAA8LIABBeGoiCCAGaiEHAkACQAJAAkACQCAGIAFPDQAgB0EAKALMvUdGDQQgB0EAKALIvUdGDQIgBygCBCIFQQJxDQUgBUF4cSIJIAZqIgUgAUkNBSAHIAkQgAogBSABayIDQRBJDQEgBCABIAQoAgBBAXFyQQJyNgIAIAggAWoiASADQQNyNgIEIAggBWoiAiACKAIEQQFyNgIEIAEgAxDoCCAADwsgBiABayIDQQ9LDQIgAA8LIAQgBSAEKAIAQQFxckECcjYCACAIIAVqIgEgASgCBEEBcjYCBCAADwtBACgCwL1HIAZqIgcgAUkNAgJAAkAgByABayIDQQ9LDQAgBCAFQQFxIAdyQQJyNgIAIAggB2oiASABKAIEQQFyNgIEQQAhA0EAIQEMAQsgBCABIAVBAXFyQQJyNgIAIAggAWoiASADQQFyNgIEIAggB2oiAiADNgIAIAIgAigCBEF+cTYCBAtBACABNgLIvUdBACADNgLAvUcgAA8LIAQgASAFQQFxckECcjYCACAIIAFqIgEgA0EDcjYCBCAHIAcoAgRBAXI2AgQgASADEOgIIAAPC0EAKALEvUcgBmoiByABSw0HCyADEJ0BIgFFDQECQCADQXxBeCAEKAIAIgJBA3EbIAJBeHFqIgIgAyACSRsiA0UNACABIAAgA/wKAAALIAAQ9AUgAQ8LAkAgAyABIAMgAUkbIgNFDQAgAiAAIAP8CgAACyAEKAIAIgNBeHEiB0EEQQggA0EDcSIDGyABakkNAwJAIANFDQAgByAISw0FCyAAEPQFCyACDwtBhOHGAEEuQbThxgAQzhMAC0HE4cYAQS5B9OHGABDOEwALQYThxgBBLkG04cYAEM4TAAtBxOHGAEEuQfThxgAQzhMACyAEIAEgBUEBcXJBAnI2AgAgCCABaiIDIAcgAWsiAUEBcjYCBEEAIAE2AsS9R0EAIAM2Asy9RyAAC9sHAgZ/AX4jAEEgayIFJAACQCAEKAIoIgYgAygCKCIHRg0AIAYgB2shByAEKQMgIAMpAyB9IQsgBEEIaiEIIAQoAgAgBCgCECAEKAIYTXEhBgJAAkACQAJAAkAgAygCAEEBRw0AIAMoAhAgAygCGEsNACAGRQ0BIAMoAhQgBCgCFEYNBCAEKAIQIQYgAygCECEJIAMoAhghCiAIEK8TIgggAygCLCIDTQ0DIAcgBmshByAKIAlHDQIgBSABNgIcIAUgADYCGCAFIAs3AxAgBUGBBDsBACAFIAM2AgQgBSAINgIIIAIgBSAHIAggA2sQswYMAwsCQCAGRQ0AIAQoAhAhBgJAIAgQrxMiCCADKAIsIgNNDQAgBSABNgIcIAUgADYCGCAFQgA3AxAgBUGBBDsBACAFIAM2AgQgBSAINgIIIAIgBSAHIAZrIAggA2sQswYLIAQoAiwiAyAEKAIUIgRNDQUCQCAGDQAgBSABNgIcIAUgADYCGCAFIAs3AxAgBUGBBDsBACAFIAQ2AgQgBSADNgIIIAIgBUEAIAMgBGsQswYMBgsgBSABNgIcIAUgADYCGCAFIAs3AxAgBSADNgIIIAUgBDYCBCAFQYEEOwEAIAIgBSAGIAYQ4QYMBQsgBCgCLCIEIAMoAiwiA00NBCAFIAE2AhwgBSAANgIYIAUgCzcDECAFQYEEOwEAIAUgAzYCBCAFIAQ2AgggAiAFIAcgBCADaxCzBgwECyAEKAIsIgQgAygCLCIGTQ0DAkAgAygCGCIIIAMoAhAiA0cNACAFIAE2AhwgBSAANgIYIAUgCzcDECAFQYEEOwEAIAUgBjYCBCAFIAQ2AgggAiAFIAcgBCAGaxCzBgwECyAFIAE2AhwgBSAANgIYIAUgCzcDECAFIAQ2AgggBSAGNgIEIAVBgQQ7AQAgAiAFIAggA2sgBxDhBgwDCyAFIAE2AhwgBSAANgIYIAUgCzcDECAFIAg2AgggBSADNgIEIAVBgQQ7AQAgAiAFIAogCWsgBxDhBgsgBCgCLCIDIAQoAhQiBE0NAQJAIAYNACAFIAE2AhwgBSAANgIYIAVCADcDECAFQYEEOwEAIAUgBDYCBCAFIAM2AgggAiAFQQAgAyAEaxCzBgwCCyAFIAE2AhwgBSAANgIYIAVCADcDECAFIAM2AgggBSAENgIEIAVBgQQ7AQAgAiAFIAYgBhDhBgwBCyADKAIsIgMgBCgCLCIETw0AIAUgATYCHCAFIAA2AhggBSALNwMQIAUgBDYCCCAFIAM2AgQgBUGBBDsBACACIAUgByAHEOEGCyAFQSBqJAAL2wcCBn8BfiMAQSBrIgUkAAJAIAQoAigiBiADKAIoIgdGDQAgBiAHayEHIAQpAyAgAykDIH0hCyAEQQhqIQggBCgCACAEKAIQIAQoAhhNcSEGAkACQAJAAkACQCADKAIAQQFHDQAgAygCECADKAIYSw0AIAZFDQEgAygCFCAEKAIURg0EIAQoAhAhBiADKAIQIQkgAygCGCEKIAgQrxMiCCADKAIsIgNNDQMgByAGayEHIAogCUcNAiAFIAE2AhwgBSAANgIYIAUgCzcDECAFQYEEOwEAIAUgAzYCBCAFIAg2AgggAiAFIAcgCCADaxCUBgwDCwJAIAZFDQAgBCgCECEGAkAgCBCvEyIIIAMoAiwiA00NACAFIAE2AhwgBSAANgIYIAVCADcDECAFQYEEOwEAIAUgAzYCBCAFIAg2AgggAiAFIAcgBmsgCCADaxCUBgsgBCgCLCIDIAQoAhQiBE0NBQJAIAYNACAFIAE2AhwgBSAANgIYIAUgCzcDECAFQYEEOwEAIAUgBDYCBCAFIAM2AgggAiAFQQAgAyAEaxCUBgwGCyAFIAE2AhwgBSAANgIYIAUgCzcDECAFIAM2AgggBSAENgIEIAVBgQQ7AQAgAiAFIAYgBhCIBgwFCyAEKAIsIgQgAygCLCIDTQ0EIAUgATYCHCAFIAA2AhggBSALNwMQIAVBgQQ7AQAgBSADNgIEIAUgBDYCCCACIAUgByAEIANrEJQGDAQLIAQoAiwiBCADKAIsIgZNDQMCQCADKAIYIgggAygCECIDRw0AIAUgATYCHCAFIAA2AhggBSALNwMQIAVBgQQ7AQAgBSAGNgIEIAUgBDYCCCACIAUgByAEIAZrEJQGDAQLIAUgATYCHCAFIAA2AhggBSALNwMQIAUgBDYCCCAFIAY2AgQgBUGBBDsBACACIAUgCCADayAHEIgGDAMLIAUgATYCHCAFIAA2AhggBSALNwMQIAUgCDYCCCAFIAM2AgQgBUGBBDsBACACIAUgCiAJayAHEIgGCyAEKAIsIgMgBCgCFCIETQ0BAkAgBg0AIAUgATYCHCAFIAA2AhggBUIANwMQIAVBgQQ7AQAgBSAENgIEIAUgAzYCCCACIAVBACADIARrEJQGDAILIAUgATYCHCAFIAA2AhggBUIANwMQIAUgAzYCCCAFIAQ2AgQgBUGBBDsBACACIAUgBiAGEIgGDAELIAMoAiwiAyAEKAIsIgRPDQAgBSABNgIcIAUgADYCGCAFIAs3AxAgBSAENgIIIAUgAzYCBCAFQYEEOwEAIAIgBSAHIAcQiAYLIAVBIGokAAvbBwIGfwF+IwBBIGsiBSQAAkAgBCgCKCIGIAMoAigiB0YNACAGIAdrIQcgBCkDICADKQMgfSELIARBCGohCCAEKAIAIAQoAhAgBCgCGE1xIQYCQAJAAkACQAJAIAMoAgBBAUcNACADKAIQIAMoAhhLDQAgBkUNASADKAIUIAQoAhRGDQQgBCgCECEGIAMoAhAhCSADKAIYIQogCBCvEyIIIAMoAiwiA00NAyAHIAZrIQcgCiAJRw0CIAUgATYCHCAFIAA2AhggBSALNwMQIAVBgQQ7AQAgBSADNgIEIAUgCDYCCCACIAUgByAIIANrEJgHDAMLAkAgBkUNACAEKAIQIQYCQCAIEK8TIgggAygCLCIDTQ0AIAUgATYCHCAFIAA2AhggBUIANwMQIAVBgQQ7AQAgBSADNgIEIAUgCDYCCCACIAUgByAGayAIIANrEJgHCyAEKAIsIgMgBCgCFCIETQ0FAkAgBg0AIAUgATYCHCAFIAA2AhggBSALNwMQIAVBgQQ7AQAgBSAENgIEIAUgAzYCCCACIAVBACADIARrEJgHDAYLIAUgATYCHCAFIAA2AhggBSALNwMQIAUgAzYCCCAFIAQ2AgQgBUGBBDsBACACIAUgBiAGEK8HDAULIAQoAiwiBCADKAIsIgNNDQQgBSABNgIcIAUgADYCGCAFIAs3AxAgBUGBBDsBACAFIAM2AgQgBSAENgIIIAIgBSAHIAQgA2sQmAcMBAsgBCgCLCIEIAMoAiwiBk0NAwJAIAMoAhgiCCADKAIQIgNHDQAgBSABNgIcIAUgADYCGCAFIAs3AxAgBUGBBDsBACAFIAY2AgQgBSAENgIIIAIgBSAHIAQgBmsQmAcMBAsgBSABNgIcIAUgADYCGCAFIAs3AxAgBSAENgIIIAUgBjYCBCAFQYEEOwEAIAIgBSAIIANrIAcQrwcMAwsgBSABNgIcIAUgADYCGCAFIAs3AxAgBSAINgIIIAUgAzYCBCAFQYEEOwEAIAIgBSAKIAlrIAcQrwcLIAQoAiwiAyAEKAIUIgRNDQECQCAGDQAgBSABNgIcIAUgADYCGCAFQgA3AxAgBUGBBDsBACAFIAQ2AgQgBSADNgIIIAIgBUEAIAMgBGsQmAcMAgsgBSABNgIcIAUgADYCGCAFQgA3AxAgBSADNgIIIAUgBDYCBCAFQYEEOwEAIAIgBSAGIAYQrwcMAQsgAygCLCIDIAQoAiwiBE8NACAFIAE2AhwgBSAANgIYIAUgCzcDECAFIAQ2AgggBSADNgIEIAVBgQQ7AQAgAiAFIAcgBxCvBwsgBUEgaiQAC9sHAgZ/AX4jAEEgayIFJAACQCAEKAIoIgYgAygCKCIHRg0AIAYgB2shByAEKQMgIAMpAyB9IQsgBEEIaiEIIAQoAgAgBCgCECAEKAIYTXEhBgJAAkACQAJAAkAgAygCAEEBRw0AIAMoAhAgAygCGEsNACAGRQ0BIAMoAhQgBCgCFEYNBCAEKAIQIQYgAygCECEJIAMoAhghCiAIEK8TIgggAygCLCIDTQ0DIAcgBmshByAKIAlHDQIgBSABNgIcIAUgADYCGCAFIAs3AxAgBUGBBDsBACAFIAM2AgQgBSAINgIIIAIgBSAHIAggA2sQ6QYMAwsCQCAGRQ0AIAQoAhAhBgJAIAgQrxMiCCADKAIsIgNNDQAgBSABNgIcIAUgADYCGCAFQgA3AxAgBUGBBDsBACAFIAM2AgQgBSAINgIIIAIgBSAHIAZrIAggA2sQ6QYLIAQoAiwiAyAEKAIUIgRNDQUCQCAGDQAgBSABNgIcIAUgADYCGCAFIAs3AxAgBUGBBDsBACAFIAQ2AgQgBSADNgIIIAIgBUEAIAMgBGsQ6QYMBgsgBSABNgIcIAUgADYCGCAFIAs3AxAgBSADNgIIIAUgBDYCBCAFQYEEOwEAIAIgBSAGIAYQ+QcMBQsgBCgCLCIEIAMoAiwiA00NBCAFIAE2AhwgBSAANgIYIAUgCzcDECAFQYEEOwEAIAUgAzYCBCAFIAQ2AgggAiAFIAcgBCADaxDpBgwECyAEKAIsIgQgAygCLCIGTQ0DAkAgAygCGCIIIAMoAhAiA0cNACAFIAE2AhwgBSAANgIYIAUgCzcDECAFQYEEOwEAIAUgBjYCBCAFIAQ2AgggAiAFIAcgBCAGaxDpBgwECyAFIAE2AhwgBSAANgIYIAUgCzcDECAFIAQ2AgggBSAGNgIEIAVBgQQ7AQAgAiAFIAggA2sgBxD5BwwDCyAFIAE2AhwgBSAANgIYIAUgCzcDECAFIAg2AgggBSADNgIEIAVBgQQ7AQAgAiAFIAogCWsgBxD5BwsgBCgCLCIDIAQoAhQiBE0NAQJAIAYNACAFIAE2AhwgBSAANgIYIAVCADcDECAFQYEEOwEAIAUgBDYCBCAFIAM2AgggAiAFQQAgAyAEaxDpBgwCCyAFIAE2AhwgBSAANgIYIAVCADcDECAFIAM2AgggBSAENgIEIAVBgQQ7AQAgAiAFIAYgBhD5BwwBCyADKAIsIgMgBCgCLCIETw0AIAUgATYCHCAFIAA2AhggBSALNwMQIAUgBDYCCCAFIAM2AgQgBUGBBDsBACACIAUgByAHEPkHCyAFQSBqJAAL2wcCBn8BfiMAQSBrIgUkAAJAIAQoAigiBiADKAIoIgdGDQAgBiAHayEHIAQpAyAgAykDIH0hCyAEQQhqIQggBCgCACAEKAIQIAQoAhhNcSEGAkACQAJAAkACQCADKAIAQQFHDQAgAygCECADKAIYSw0AIAZFDQEgAygCFCAEKAIURg0EIAQoAhAhBiADKAIQIQkgAygCGCEKIAgQrxMiCCADKAIsIgNNDQMgByAGayEHIAogCUcNAiAFIAE2AhwgBSAANgIYIAUgCzcDECAFQYEEOwEAIAUgAzYCBCAFIAg2AgggAiAFIAcgCCADaxDGBgwDCwJAIAZFDQAgBCgCECEGAkAgCBCvEyIIIAMoAiwiA00NACAFIAE2AhwgBSAANgIYIAVCADcDECAFQYEEOwEAIAUgAzYCBCAFIAg2AgggAiAFIAcgBmsgCCADaxDGBgsgBCgCLCIDIAQoAhQiBE0NBQJAIAYNACAFIAE2AhwgBSAANgIYIAUgCzcDECAFQYEEOwEAIAUgBDYCBCAFIAM2AgggAiAFQQAgAyAEaxDGBgwGCyAFIAE2AhwgBSAANgIYIAUgCzcDECAFIAM2AgggBSAENgIEIAVBgQQ7AQAgAiAFIAYgBhCYBgwFCyAEKAIsIgQgAygCLCIDTQ0EIAUgATYCHCAFIAA2AhggBSALNwMQIAVBgQQ7AQAgBSADNgIEIAUgBDYCCCACIAUgByAEIANrEMYGDAQLIAQoAiwiBCADKAIsIgZNDQMCQCADKAIYIgggAygCECIDRw0AIAUgATYCHCAFIAA2AhggBSALNwMQIAVBgQQ7AQAgBSAGNgIEIAUgBDYCCCACIAUgByAEIAZrEMYGDAQLIAUgATYCHCAFIAA2AhggBSALNwMQIAUgBDYCCCAFIAY2AgQgBUGBBDsBACACIAUgCCADayAHEJgGDAMLIAUgATYCHCAFIAA2AhggBSALNwMQIAUgCDYCCCAFIAM2AgQgBUGBBDsBACACIAUgCiAJayAHEJgGCyAEKAIsIgMgBCgCFCIETQ0BAkAgBg0AIAUgATYCHCAFIAA2AhggBUIANwMQIAVBgQQ7AQAgBSAENgIEIAUgAzYCCCACIAVBACADIARrEMYGDAILIAUgATYCHCAFIAA2AhggBUIANwMQIAUgAzYCCCAFIAQ2AgQgBUGBBDsBACACIAUgBiAGEJgGDAELIAMoAiwiAyAEKAIsIgRPDQAgBSABNgIcIAUgADYCGCAFIAs3AxAgBSAENgIIIAUgAzYCBCAFQYEEOwEAIAIgBSAHIAcQmAYLIAVBIGokAAvbCAECfyMAQRBrIgIkAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAoAgBBd2oiA0EaIANBHkkbDh4AAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0ACyACIABBBGo2AgwgAUHI98AAQQsgAkEMakG498AAELIMIQAMHQsgAiAAQQRqNgIMIAFB0/fAAEEHIAJBDGpB9OrAABCyDCEADBwLIAIgAEEQajYCDCABQez3wABBEiAAQQhqQbjrwAAgAkEMakHc98AAEPoJIQAMGwsgAiAAQQRqNgIMIAFB/vfAAEEQIAJBDGpB3PfAABCyDCEADBoLIAFBnPXAAEEEEKUXIQAMGQsgAiAAQQRqNgIMIAFBjvjAAEEOIAJBDGpBqOnAABCyDCEADBgLIAIgAEEEajYCDCABQZz4wABBESACQQxqQdjrwAAQsgwhAAwXCyACIABBBGo2AgwgAUHA+MAAQRYgAkEMakGw+MAAELIMIQAMFgsgAiAAQQRqNgIMIAFB1vjAAEEQIAJBDGpB2OvAABCyDCEADBULIAIgAEEEajYCDCABQfj4wABBCyACQQxqQej4wAAQsgwhAAwUCyACIABBBGo2AgwgAUGg9cAAQQwgAkEMakHY68AAELIMIQAMEwsgAiAAQQRqNgIMIAFBg/nAAEEMIAJBDGpBqOnAABCyDCEADBILIAIgAEEEajYCDCABQY/5wABBEiACQQxqQajpwAAQsgwhAAwRCyACIABBBGo2AgwgAUGh+cAAQQkgAkEMakG88MAAELIMIQAMEAsgAiAAQQhqNgIMIAFBqvnAAEEKIAJBDGpBmPTAABCyDCEADA8LIAIgAEEIajYCDCABQcT5wABBDSACQQxqQbT5wAAQsgwhAAwOCyABQdH5wABBDxClFyEADA0LIAFB4PnAAEETEKUXIQAMDAsgAiAAQRBqNgIMIAFBhPrAAEEQQZT6wABBCCAAQQRqQfT5wABBnPrAAEEKIAJBDGpBqOnAABCPDyEADAsLIAIgAEEEajYCDCABQbj6wABBBCACQQxqQaj6wAAQsgwhAAwKCyACIABBBGo2AgwgAUHM+sAAQQ8gAkEMakG8+sAAELIMIQAMCQsgAUHb+sAAQQ4QpRchAAwICyACIABBBGo2AgwgAUHp+sAAQQsgAkEMakHo+MAAELIMIQAMBwsgAUH0+sAAQQsQpRchAAwGCyABQf/6wABBExClFyEADAULIAFBkvvAAEELEKUXIQAMBAsgAiAANgIMIAFBsPvAAEEMIAJBDGpBoPvAABCyDCEADAMLIAFBvPvAAEEQEKUXIQAMAgsgAiAAQQRqNgIMIAFB3PvAAEENIAJBDGpBzPvAABCyDCEADAELIAIgAEEEajYCDCABQen7wABBCCACQQxqQazzwAAQsgwhAAsgAkEQaiQAIAAL+gcCDn8CfiMAQfAAayIDJAACQAJAAkACQCACRQ0AAkACQAJAAkAgATEAACIRQsMAUg0AIAMgAjYCMCADIAJBf2o2AiggAyABNgIsIANBATYCNCADIAFBAWo2AiQgA0E4aiADQSRqEPoEAkACQCADKAI4IgQNACADLQA8QQFxRQ0BQYOAgIB4IQIgAygCQCEBDAULIAMpAkQhESADKAJAIQUgAygCPCEGIAMpA1AhEkEAIQEgA0EANgJAIANCgICAgBA3AjggEkIAUQ0HAkACQAJAIAZBH0sNAEEgIAZrIQEMAQsgEkJ/fCESIAZBYGoiB0EFdiEIQQAhCSADQeAAaiEKIANB6ABqIQtBACEMQQEhDQNAIAogBCAJaiICQRdqKQAANwMAIAsgAkEfai0AADoAACADIAIvAAA7AWwgAyACQQJqLQAAOgBuIAMgAkEPaikAADcDWCACQQtqKAAAIQ4gAkEHaigAACEPIAJBA2ooAAAhEAJAIAwgAygCOEcNACADQThqQaD4wgAQyg4gAygCPCENCyARQoCAgICABHwhESANIAlqIgEgAy8BbDsAACABQQJqIAMtAG46AAAgAUELaiAONgAAIAFBB2ogDzYAACABQQNqIBA2AAAgAUEPaiADKQNYNwAAIAFBF2ogCikDADcAACABQR9qIAstAAA6AAAgAyAMQQFqIgw2AkAgElANAiAJQSBqIQkgEkJ/fCESIAxBf2ogCEcNAAsgCSAGa0EgaiEBIAMoAjgiAkUNACADKAI8IAJBBXRBARC+GAtBg4CAgHghAgwFCyADIBE3AhwgAyAFNgIYIAMoAjgiAUGAgICAeEcNByAHIAlrIQEgAkEgaiECIAMpAxghEQwECxCxGkETIQFBE0EBEPsXIgJFDQEgAkEPakEAKACv+UI2AAAgAkEIakEAKQCo+UI3AAAgAkEAKQCg+UI3AAAgAq1CgICAgLAChCERQYCAgIB4IQIMAwsQsRpBASECQQFBARD7FyIBRQ0BIAFBwwA6AAAgEUIghkIBhCERDAQLQQFBE0GAmcIAEOYWAAtBAUEBENgZAAsgAkGDgICAeEcNAQsgAEKAgICAqICAgIB/NwIADAILIAAgETcCDCAAIAE2AgggACACNgIEIABBgICAgHg2AgAMAQsgAykCPCERIANBFGpBADoAACAAQQA2AkggAEKAgICAgICAgIB/NwI4IABCgICAgMAANwIwIABBgICAgHg2AiQgAEKAgICAgICAgIB/NwIUIABCgICAgBA3AgwgACARNwIEIAAgATYCACADQgA3AgwgACADKQIINwJMIABB0QBqIANBDWopAAA3AAALIANB8ABqJAAL2wgBAn8jAEEQayICJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIAQXdqIgNBGiADQR5JGw4eAAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdAAsgAiAAQQRqNgIMIAFB+JnDAEELIAJBDGpBjKnDABCyDCEADB0LIAIgAEEEajYCDCABQZypwwBBByACQQxqQfTtwQAQsgwhAAwcCyACIABBEGo2AgwgAUGjqcMAQRIgAEEIakGUl8IAIAJBDGpB3ObBABD6CSEADBsLIAIgAEEEajYCDCABQbWpwwBBECACQQxqQdzmwQAQsgwhAAwaCyABQcWpwwBBBBClFyEADBkLIAIgAEEEajYCDCABQcmpwwBBDiACQQxqQZzlwQAQsgwhAAwYCyACIABBBGo2AgwgAUHXqcMAQREgAkEMakG85sEAELIMIQAMFwsgAiAAQQRqNgIMIAFB+KnDAEEWIAJBDGpB6KnDABCyDCEADBYLIAIgAEEEajYCDCABQY6qwwBBECACQQxqQbzmwQAQsgwhAAwVCyACIABBBGo2AgwgAUGeqsMAQQsgAkEMakHc5cEAELIMIQAMFAsgAiAAQQRqNgIMIAFBqarDAEEMIAJBDGpBvObBABCyDCEADBMLIAIgAEEEajYCDCABQbWqwwBBDCACQQxqQZzlwQAQsgwhAAwSCyACIABBBGo2AgwgAUHBqsMAQRIgAkEMakGc5cEAELIMIQAMEQsgAiAAQQRqNgIMIAFB5KrDAEEJIAJBDGpB1KrDABCyDCEADBALIAIgAEEIajYCDCABQe2qwwBBCiACQQxqQfDuwQAQsgwhAAwPCyACIABBCGo2AgwgAUGIq8MAQQ0gAkEMakH4qsMAELIMIQAMDgsgAUGVq8MAQQ8QpRchAAwNCyABQaSrwwBBExClFyEADAwLIAIgAEEQajYCDCABQberwwBBEEHHq8MAQQggAEEEakGctsIAQc+rwwBBCiACQQxqQZzlwQAQjw8hAAwLCyACIABBBGo2AgwgAUHZq8MAQQQgAkEMakHgmsIAELIMIQAMCgsgAiAAQQRqNgIMIAFB8KvDAEEPIAJBDGpB4KvDABCyDCEADAkLIAFB/6vDAEEOEKUXIQAMCAsgAiAAQQRqNgIMIAFBjazDAEELIAJBDGpB3OXBABCyDCEADAcLIAFBmKzDAEELEKUXIQAMBgsgAUGjrMMAQRMQpRchAAwFCyABQbaswwBBCxClFyEADAQLIAIgADYCDCABQdSswwBBDCACQQxqQcSswwAQsgwhAAwDCyABQeCswwBBEBClFyEADAILIAIgAEEEajYCDCABQYCtwwBBDSACQQxqQfCswwAQsgwhAAwBCyACIABBBGo2AgwgAUGNrcMAQQggAkEMakH4lcMAELIMIQALIAJBEGokACAAC4EHAg5/AX4CQAJAIAEoAgwiAi8BXiIDQQFqIgQgASgCFCIFLwFeIgZqIgdBDE8NACABKAIQIQggASgCBCEJIAEoAgAiCi8BXiELIAIgBzsBXiAKIAEoAggiDEEDdGoiASkCACEQAkAgCyAMQX9zaiINQQN0Ig5FDQAgASABQQhqIA78CgAACyACIANBA3RqIBA3AgACQCAGQQN0IgFFDQAgAiAEQQN0aiAFIAH8CgAACyAKIAxqIgEtAGAhDgJAIA1FDQAgAUHgAGogAUHhAGogDfwKAAALIAJB4ABqIgEgA2ogDjoAAAJAIAZFDQAgASAEaiAFQeAAaiAG/AoAAAsgDEEBaiEBAkAgDUECdCINRQ0AIAogAUECdGoiDkHsAGogDkHwAGogDfwKAAALAkAgASALTw0AIAsgDGtBfmohDwJAIAxBf3MgC2pBA3EiDUUNACAMQQJ0IApqQfAAaiEMA0AgDCgCACIOIAE7AVwgDiAKNgJYIAxBBGohDCABQQFqIQEgDUF/aiINDQALCyAPQQNJDQAgAUECdCAKakH4AGohDANAIAxBdGooAgAiDSABOwFcIA0gCjYCWCAMQXhqKAIAIg0gAUEBajsBXCANIAo2AlggDEF8aigCACINIAFBAmo7AVwgDSAKNgJYIAwoAgAiDSABQQNqOwFcIA0gCjYCWCAMQRBqIQwgCyABQQRqIgFHDQALCyAKIAovAV5Bf2o7AV5B7AAhDQJAIAlBAkkNACAGQQFqIgEgByADa0cNAgJAIAFBAnQiDEUNACACQewAaiAEQQJ0aiAFQewAaiAM/AoAAAsCQCABQQNxIgxFDQAgA0ECdCACakHwAGohAQNAIAEoAgAiCiAEOwFcIAogAjYCWCABQQRqIQEgBEEBaiEEIAxBf2oiDA0ACwtBnAEhDSAGQQNJDQAgBEECdCEMA0AgAiAMaiIBQewAaigCACIKIAQ7AVwgCiACNgJYIAFB8ABqKAIAIgogBEEBajsBXCAKIAI2AlggAUH0AGooAgAiCiAEQQJqOwFcIAogAjYCWCABQfgAaigCACIBIARBA2oiCjsBXCABIAI2AlggBEEEaiEEIAxBEGohDCAKIAdHDQALCyAFIA1BBBC+GCAAIAg2AgQgACACNgIADwtB3PbBAEEqQYj3wQAQzhMAC0Hc8cEAQShBhPLBABDOEwALrgcCCH8BfiMAQfABayICJAAgASgCyAEhAyACQcAAakEIaiABQcgAaikCADcDACACIAEpAkA3A0AgAkGQAWpBOGogAUE4aikDADcDACACQZABakEwaiABQTBqKQMANwMAIAJBkAFqQShqIAFBKGopAwA3AwAgAkGQAWpBIGogAUEgaikDADcDACACQZABakEYaiABQRhqKQMANwMAIAJBkAFqQRBqIAFBEGopAwA3AwAgAkGQAWpBCGogAUEIaikDADcDACACIAEpAwA3A5ABIAFB0ABqIQQgA0EcaigCACEDAkAgAigCQEEERg0AIAQgAkHAAGoQqxYaCyACQeABaiACQZABaiADKAIMIAMoAhAQtwMCQAJAIAIoAuABQQRHDQAgBCABQegAahCsBgwBCyAEIAJB4AFqEKsWGiAEIAFB6ABqIgUQrAYgAkEIakEIaiIEIAJBkAFqQRBqKQMANwMAIAJBCGpBEGoiAyACQZABakEYaikDADcDACACQQhqQRhqIgYgAkGQAWpBIGopAwA3AwAgAkEIakEgaiIHIAJBkAFqQShqKQMANwMAIAJBCGpBKGoiCCACQZABakEwaikDADcDACACQQhqQTBqIgkgAkGQAWpBOGopAwA3AwAgAiACKQOYATcDCCACKQOQASIKQgJRDQAgAkHQAGpBEGogBCkDADcDACACQdAAakEYaiADKQMANwMAIAJB0ABqQSBqIAYpAwA3AwAgAkHQAGpBKGogBykDADcDACACQdAAakEwaiAI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IAIgAzYCQCACQsCAgIAQNwM4IAJB6ABqIABBACAAKAI4IAAoAjwQ9wICQCACKAL4ASIEIAIoAvwBTw0AIAJB1ABqIQUgASgCACEGIAJB6AFqIQcDQAJAAkACQCACKALoASIDQQNGDQAgAigC8AEiAUUNACACIAFBf2o2AvABAkAgA0ECRw0AIAIgBEEBajYC+AFBAiEDDAMLIAIgBEEBajYC+AEgAigC7AEhBAwBCyACQcACaiACQegAahDuBiAHQQhqIAJBwAJqQQhqKAIANgIAIAcgAikCwAI3AgAgAigC6AEiAUEDRg0DIAIoAvABIgNFDQMgAiADQX9qNgLwASACIAIoAvgBQQFqNgL4AUECIQMgAUECRg0BIAIoAuwBIQQgASEDCyAEIQECQCADQQFxDQAgBCgCACEBCwJAIAEgBksNACABIAZHDQEgAkEANgLQAiACQQE2AsQCIAJByMrCADYCwAIgAkIENwLIAiACQcACakHQysIAEKIVAAsgAUF/aiEEQQEhAwsgAiAENgLEAiACIAM2AsACIAJBATYCyAIgAiAFIAIgAkHAAmoQtgMgAigCUGo2AlAgAigC+AEiBCACKAL8AUkNAAsLAkBB6ABFDQAgAkHoAGogAkHoAPwKAAALIAJBvAFqIAJB6ABqELkIAkBB0ABFDQAgAkHAAmogAkHoAGpB0AD8CgAACyACKAK4ASEDIAJBlANqIAJBwAJqEIYDIAIoApgDIAIoApwDEMsFIAJBgAJqIAJBlANqEPUGIAJBADYCvAIgAiADNgK4AgJAIAIoArwBQQFLDQAgAigCxAEiA0UNACACKALIASADQQN0QQQQvhgLAkAgACgCKEGAgICAeEYNACAAEJQPCyAAIAIpA4ACNwMAIABBOGogAkGAAmpBOGopAwA3AwAgAEEwaiACQYACakEwaikDADcDACAAQShqIAJBgAJqQShqKQMANwMAIABBIGogAkGAAmpBIGopAwA3AwAgAEEYaiACQYACakEYaikDADcDACAAQRBqIAJBgAJqQRBqKQMANwMAIABBCGogAkGAAmpBCGopAwA3AwAgAkGgA2okAA8LQQhBIBDYGQAL4QYCBX8FfgJAAkACQAJAAkAgASkCBCIHpyICRQ0AIAJBf2ohAyABKQIMIghCgICAgHCDIQkgASgCACIELQAAIgFB/wBx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QbgBaikCADcDACACIAEpArABNwNAIAJBkAFqQThqIAFBOGopAwA3AwAgAkGQAWpBMGogAUEwaikDADcDACACQZABakEoaiABQShqKQMANwMAIAJBkAFqQSBqIAFBIGopAwA3AwAgAkGQAWpBGGogAUEYaikDADcDACACQZABakEQaiABQRBqKQMANwMAIAJBkAFqQQhqIAFBCGopAwA3AwAgAiABKQMANwOQASABQcAAaiEEIANBHGooAgAhAwJAIAIoAkBBgoCAgHhGDQAgBCACQcAAahCwFhoLIAJB4AFqIAJBkAFqIAMoAgwgAygCEBCFDwJAAkAgAigC4AFBgoCAgHhHDQAgBCABQdgAahCLBQwBCyAEIAJB4AFqELAWGiAEIAFB2ABqIgUQiwUgAkEIakEIaiIDIAJBkAFqQRBqKQMANwMAIAJBCGpBEGoiBiACQZABakEYaikDADcDACACQQhqQRhqIgcgAkGQAWpBIGopAwA3AwAgAkEIakEgaiIIIAJBkAFqQShqKQMANwMAIAJBCGpBKGoiCSACQZABakEwaikDADcDACACQQhqQTBqIgogAkGQAWpBOGopAwA3AwAgAiACKQOYATcDCCACKQOQASILQgJRDQAgAkHQAGpBEGogAykDADcDACACQdAAakEYaiAGKQMANwMAIAJB0ABqQSBqIAcpAwA3AwAgAkHQAGpBKGogCCkDADcDACACQdAAakEwaiAJKQMANwMAIAJB0ABqQThqIAopAwA3AwAgAiACKQMINwNYIAIgCzcDUCABKALIASEDQQAhBgJAIAunQQFxRQ0AIAJB0ABqQQhqENAWIQYLIAMoAhwiCSgCECIHIAIoAnwiCE0NACADKQMAIAIpA3B9IQsgAygCECACKAJ4ayEDIAkoAgwhCQJAIAYNACACIAc2AqwBIAIgCTYCqAEgAiALNwOgASACIAc2ApgBIAJBgQQ7AZABIAIgCDYClAEgBSACQZABaiADIAcgCGsQ6QYMAQsgAiAHNgKsASACIAk2AqgBIAIgCzcDoAEgAiAHNgKYASACIAg2ApQBIAJBgQQ7AZABIAUgAkGQAWogBiADEPkHCwJAQdAARQ0AIAJBkAFqIAFB2ABqQdAA/AoAAAsgACACQZABahDNAyAEEMwNIAJB8AFqJAALiQcBB38jAEGgAWsiAiQAAkACQAJAIAEtAAAiA0EaRg0AAkACQAJAIAEoAhwiBCABKAIkRg0AIAEgBEEgajYCHCAELQAAIgVBJEYNACACQfgAakEYaiAEQRhqKQAANwAAIAJB+ABqQRFqIARBEWopAAA3AAAgAkH4AGpBCWogBEEJaikAADcAACACIAQpAAE3AHkgAiAFOgB4IAJBADYCECACQoCAgIAQNwIIIAJB3OPBADYCRCACQqCAgIAONwJIIAIgAkEIajYCQCABIAJBwABqENgSDQUgAigCCCEFIAIoAhAhBiACKAIMIQMgAkEIaiACQfgAahDsBSACKAKUASEHIAIoApABIQQgAkHAAGogAyAGENoGIAJBwABqQSBqIAJBEGoiBikDADcDACACQcAAakEoaiACQRhqIggpAwA3AwAgAiAHIARqNgJ0IAIgBDYCcCACIAIpAwg3A1gCQCAFRQ0AIAMgBUEBEL4YCyACQfgAahD9DyAGIAJByQBqKQAANwMAIAggAkHRAGopAAA3AwAgAkEgaiACQdkAaikAADcDACACQQhqQSBqIAJB4QBqKQAANwMAIAJBCGpBKGogAkHpAGopAAA3AwAgAkE3aiACQfAAaikAADcAACACIAIpAEE3AwggAi0AQCIEQRpHDQIgAS0AACIDQRpGDQELAkAgASgCJCIFIAEoAhwiBEYNACAFIARrQQV2IQUDQCAEEP0PIARBIGohBCAFQX9qIgUNAAsLAkAgASgCICIERQ0AIAEoAhggBEEFdEEIEL4YCyADQR5xQRhHDQAgA0FpakH/AXFBAkkNACABKAIEIgQgBCgCACIEQX9qNgIAIARBAUcNACABQQRqEJ4TC0EaIQQgAUEaOgAAIAEgAikAQDcAASABQQlqIAJByABqKQAANwAAIAFBEWogAkHQAGopAAA3AAAgAUEZaiACQdgAaikAADcAACABQSBqIAJB3wBqKQAANwAACyAAIAQ6AAAgACACKQMINwABIABBCWogAkEQaikDADcAACAAQRFqIAJBGGopAwA3AAAgAEEZaiACQSBqKQMANwAAIABBIWogAkEoaikDADcAACAAQSlqIAJBMGopAwA3AAAgAEEwaiACQTdqKQAANwAADAELIABBGjoAAAsgAkGgAWokAA8LQYTkwQBBNyACQZ8BakH048EAQbzkwQAQ+BAAC98GAgZ/An4CQCAD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IgYoAgA2AgAgBiAFNgIAIANBmH9qIQMgBEHoAGohBCACQX9qIgINAAsLC5wHAQR/IwBBkAFrIgMkAAJAAkACQAJAAkAgASgCPCIEIAJCBIinIgVqIgYgASgCOEsNACAGIARPDQEgBCAGQeCzwgAQ2RgACyADQQA2AnAgA0KAgICAEDcCaCADQdzjwQA2AgQgA0KggICADjcCCCADIANB6ABqNgIAIANBjp3DAEEXEKUXDQIgA0EwakEIaiADQegAakEIaigCADYCACADIAMpAmg3AzAgAEEEaiADQTBqEI0NIABBATYCAAwBCyABIAU2AkAgASAGNgI8IAEoAjQhASADQQA2AkAgAyAFNgI8IAMgASAEaiIBNgI4IAMgBTYCNCADIAE2AjAgA0HoAGogA0EwahCdBAJAAkAgAygCaA0AIANBCGogA0H0AGooAgAiATYCACADIAMpAmwiAjcDACADQcgAakEIaiABNgIAIAMgAjcDSCADQQA2AjggA0KAgICAEDcCMAJAAkAgAqdB/wFxQQZHDQAgA0EwakEAQQ9BAUEBEIcMIAMoAjQgAygCOCIBaiIFQQApAJD4QjcAACAFQQdqQQApAJf4QjcAACADIAFBD2o2AjgMAQsgAyADQcgAajYCiAEgA0EBNgJsIANBlIPCADYCaCADQgE3AnQgA0HrAa1CIIYgA0GIAWqthDcDWCADIANB2ABqNgJwIANBMGpB3OPBACADQegAahCjBw0FCyADQdgAakEIaiADQTBqQQhqKAIANgIAIAMgAykCMDcDWCADQegAakEEciADQdgAahCNDSADQQE2AmggAy0ASEEGRg0BIANByABqEKYPDAELIANBEGogA0HoAGpBEGoiBSgCADYCACADQQhqIANB6ABqQQhqKQMANwMAIAMgAykDaDcDACADIAMpA4ABIgI3AyggAyACNwMgIANBHzoAGCADQRhqIQECQCADKAIEDQAgA0HoAGpBGGogAUEQaikDADcDACAFIAFBCGopAwA3AwAgA0EANgJoIAMgASkDADcDcAwBCyADQegAakEEckGm+sEAQQVB3LLCAEELELMPIANBATYCaCABEP0PCyAAIAMpA2g3AwAgAEEYaiADQegAakEYaikDADcDACAAQRBqIANB6ABqQRBqKQMANwMAIABBCGogA0HoAGpBCGopAwA3AwALIANBkAFqJAAPC0GE5MEAQTcgA0GPAWpB9OPBAEG85MEAEPgQAAtBhOTBAEE3IANBjwFqQfTjwQBBvOTBABD4EAAL8gYCCn8BfiMAQTBrIgIkACABKAIMIQMgAUGAgICAeDYCDCABKAIoIQQgASgCJCEFIAEoAiAhBiABKAIcIQcgASgCGCEIIAEoAhQhCSABKAIQIQoCQAJAAkACQAJAIANBgICAgHhzIgtBAyALQQZJGw4GBAQAAgMBBAsCQCABKAIAIAEoAggiC0cNACABIAtBAUEBQQEQhwwgASgCCCELCyABIAtBAWoiAzYCCEEAIQUgASgCBCIJIAtqQQA6AAAgASABKAIwQQFqNgIwIAqtIQwDQCAMp0H/AHEgDEL/AFYiBkEHdHIhBwJAAkAgASgCACADRg0AIAMhCwwBCyABIANBAUEBQQEQhwwgASgCBCEJIAEoAgghCwsgDEIHiCEMIAEgC0EBaiIDNgIIIAkgC2ogBzoAACAFQQFqIQUgBg0ACyABIAEoAjAgBWo2AjAMAwsgAiAFNgIgIAIgBjYCHCACIAc2AhggAiAINgIUIAIgCTYCECACIAo2AgwgASgCCCEDIAStIQwgAkEQaiEIQQAhBQNAIAynQf8AcSAMQj9WIgZBB3RyIQcCQAJAIAEoAgAgA0YNACADIQsMAQsgASADQQFBAUEBEIcMIAEoAgghCwsgDEIHiCEMIAEgC0EBaiIDNgIIIAEoAgQgC2ogBzoAACAFQQFqIQUgBg0ACyABIAEoAjAgBWo2AjAgASACQQxqIAEQ2AsgASgCMGo2AjAgCkEecUEYRw0CIApBaWpB/wFxQQJJDQIgCSAJKAIAIgNBf2o2AgAgA0EBRw0CIAgQnhMMAgsgASgCLCELIAIgCjYCKCACIAM2AiQgAiAJNgIsAkAgCSADRw0AIAJBJGpB8LPCABCKDiACKAIoIQoLIAogCUEYbGoiAyALNgIUIAMgBDYCECADIAU2AgwgAyAGNgIIIAMgBzYCBCADIAg2AgAgAiAJQQFqNgIsIAEgAkEkahDDBwwBCxCxGgJAQRhBBBD7FyIDRQ0AIAMgBTYCFCADIAY2AhAgAyAHNgIMIAMgCDYCCCADIAk2AgQgAyAKNgIAIAJBATYCFCACIAM2AhAgAkEBNgIMIAEgAkEMahDDBwwBC0EEQRgQ2BkACyAAIAEpAgA3AgAgACABKAIwNgIMIABBCGogAUEIaigCADYCACABQQxqEJIKIAJBMGokAAuBBwECfyMAQTBrIgIkAAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCAEH/////B2oiA0EIIANBCkkbDgoAAQIDBAUGBwgJAAsgAiAAQQRqNgIMIAJBAjYCFCACQYjcwgA2AhAgAkIBNwIcIAJB7gGtQiCGIAJBDGqthDcDKCACIAJBKGo2AhggASgCACABKAIEIAJBEGoQowchAQwJCyACIABBBGo2AgwgAkECNgIUIAJBiNzCADYCECACQgE3AhwgAkHPAa1CIIYgAkEMaq2ENwMoIAIgAkEoajYCGCABKAIAIAEoAgQgAkEQahCjByEBDAgLIAIgAEEIajYCDCACQQE2AhQgAkGUg8IANgIQIAJCATcCHCACQbwBrUIghiACQQxqrYQ3AyggAiACQShqNgIYIAEoAgAgASgCBCACQRBqEKMHIQEMBwsgAiAAQQhqNgIMIAJBATYCFCACQZSDwgA2AhAgAkIBNwIcIAJBvQGtQiCGIAJBDGqthDcDKCACIAJBKGo2AhggASgCACABKAIEIAJBEGoQowchAQwGCyACIABBCGo2AgwgAkEBNgIkIAJBmNzCADYCICACQQE2AhQgAkGUg8IANgIQIAJBATYCHCACQb4BrUIghiACQQxqrYQ3AyggAiACQShqNgIYIAEoAgAgASgCBCACQRBqEKMHIQEMBQsgAiAAQQhqNgIMIAJBATYCFCACQbzcwgA2AhAgAkIBNwIcIAJBvAGtQiCGIAJBDGqthDcDKCACIAJBKGo2AhggASgCACABKAIEIAJBEGoQowchAQwECyACIABBCGo2AgwgAkEBNgIUIAJB0NzCADYCECACQgE3AhwgAkG8Aa1CIIYgAkEMaq2ENwMoIAIgAkEoajYCGCABKAIAIAEoAgQgAkEQahCjByEBDAMLIAIgAEEEajYCDCACQQE2AhQgAkGUg8IANgIQIAJCATcCHCACQcABrUIghiACQQxqrYQ3AyggAiACQShqNgIYIAEoAgAgASgCBCACQRBqEKMHIQEMAgsgAiAAQQxqNgIMIAJBATYCFCACQejcwgA2AhAgAkIBNwIcIAJBwQGtQiCGIAJBDGqthDcDKCACIAJBKGo2AhggASgCACAB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QCAJQQRPDQBBACEEQgAhDAwBCyAJQXxxIQZBACEEQgAhDCAKIQIDQCACQeAAaikDACACQcAAaikDACACQSBqKQMAIAIpAwAgDHx8fHwhDCACQYABaiECIAYgBEEEaiIERw0ACwsCQCAFRQ0AIAogBEEFdGohAiAFIQQDQCACKQMAIAx8IQwgAkEgaiECIARBf2oiBA0ACwsgAyAMNwOIASADIAEpAwAiDTcDkAEgDCANUQ0BDAULIANCADcDiAEgAyABKQMAIgw3A5ABIAxCAFINBEEAIQQMAQsgCUEDcSELAkACQCAJQQRPDQBBACEEQQAhBgwBCyAKQfAAaiECIAlBfHEhCUEAIQRBACEGA0AgAigCACACQWBqKAIAIAJBQGooAgAgAkGgf2ooAgAgBGpqamohBCACQYABaiECIAkgBkEEaiIGRw0ACwsgC0UNACAGQQV0IApqQRBqIQIDQCACKAIAIARqIQQgAkEgaiECIAVBf2oiBQ0ACwsgAyABKAIQIgI2ApwBIAMgBDYCmAEgBCACRg0BIANBADYCEEEAIANBmAFqIANBnAFqIANBEGpBlJHCABCoFAALQQhBIBDYGQALIAAgCDYCHCAAIAc2AhggAEEANgIUIABCADcDACAAIAMpAgQ3AgggAEEQaiADQQxqKAIANgIAIANBoAFqJAAPCyADQQA2AhBBACADQYgBaiADQZABaiADQRBqQYSRwgAQkxQAC5MHAQR/IwBBkAFrIgMkAAJAAkACQAJAAkAgASgCPCIEIAJCBIinIgVqIgYgASgCOEsNACAGIARPDQEgBCAGQeCzwgAQ2RgACyADQQA2AnAgA0KAgICAEDcCaCADQdzjwQA2AgQgA0KggICADjcCCCADIANB6ABqNgIAIANBjp3DAEEXEKUXDQIgA0EwakEIaiADQegAakEIaigCADYCACADIAMpAmg3AzAgAEEEaiADQTBqEI0NIABBATYCAAwBCyABIAU2AkAgASAGNgI8IAEoAjQhASADQQA2AkAgAyAFNgI8IAMgASAEaiIBNgI4IAMgBTYCNCADIAE2AjAgA0HoAGogA0EwahCdBAJAAkAgAygCaA0AIANBCGogA0H0AGooAgAiATYCACADIAMpAmwiAjcDACADQcgAakEIaiABNgIAIAMgAjcDSCADQQA2AjggA0KAgICAEDcC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IAlBAkkNACAGQQFqIgEgByADa0cNAgJAIAFBAnQiDEUNACACQeAAaiAEQQJ0aiAFQeAAaiAM/AoAAAsCQCABQQNxIgxFDQAgA0ECdCACakHkAGohAQNAIAEoAgAiCiAEOwFcIAogAjYCWCABQQRqIQEgBEEBaiEEIAxBf2oiDA0ACwtBkAEhDSAGQQNJDQAgBEECdCEMA0AgAiAMaiIBQeAAaigCACIKIAQ7AVwgCiACNgJYIAFB5ABqKAIAIgogBEEBajsBXCAKIAI2AlggAUHoAGooAgAiCiAEQQJqOwFcIAogAjYCWCABQewAaigCACIBIARBA2oiCjsBXCABIAI2AlggBEEEaiEEIAxBEGohDCAKIAdHDQALCyAFIA1BBBC+GCAAIAg2AgQgACACNgIADwtB3PbBAEEqQYj3wQAQzhMAC0Hc8cEAQShBhPLBABDOEwALwgYCC38DfiMAQaABayIEJAAgAygCBCIFIAMoAggiBkEFdGohByADKAIAIQgCQAJAQQAgACgCGCIDIAIgAyACSRsgACgCKEGAgICAeEYbIgMgAWsNACAFIQMMAQsgASADayECIARByABqQRxqIQkgBEEIakEcaiEKIAUhAwNAAkACQAJAIAMgB0cNACAEQQA2AiQgByEDDAELIARBCGpBGGogA0EYaiILKQMANwMAIARBCGpBEGogA0EQaiIMKQMANwMAIARBCGpBCGogA0EIaiINKQMANwMAIAQgAykDADcDCCADQSBqIQ4CQCAEKAIkDQAgDiEDDAELIA0pAwAhDyAMKQMAIRAgAykDACERIARBKGpBGGogCykDADcDACAEQShqQRBqIBA3AwAgBEEoakEIaiAPNwMAIAQgETcDKAJAIAAoAihBgICAgHhGDQAgBEHIAGogACABIARBKGoQkQIgBCgCZCIDIAMoAgAiA0F/ajYCAAJAIANBAUcNACAJEKATCyABQQFqIQEgDiEDDAILIARBADYCmAEgBEEBNgKMASAEQdyDwgA2AogBIARCBDcCkAEgBEGIAWpB9IPCABCiFQALIARByABqIAAgARD7CCAEKAJkIg4gDigCACIOQX9qNgIAAkAgDkEBRw0AIAkQoBMLIAQoAiQiDkUNACAOIA4oAgAiC0F/ajYCACALQQFHDQAgChCgEwsgAkEBaiICDQALCwJAIAMgB0YN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BkEYaiADKQMANwAAIAZBEGogCCkDADcAACAGQQhqIAopAwA3AAAgAiABQQFqIgE2AgwgBw0ACwsgACACKQIENwIAIABBCGogAkEEakEIaigCADYCAAwBCyAAQQA2AgggAEKAgICAEDcCAAsgAkHQAGokAA8LIAMgBUGEycEAEOYWAAudBgIGfwJ+IwBBIGsiAiQAAkACQAJAAkACQAJAAkACQCABLwEAQQFHDQAgASgCDCEDIAEoAgghBAwBCyABLwECIgNBEU8NASABQQRqIQQLAkACQCABQWxqIgUvAQBBAUcNACABQXhqKAIAIQYgAUF0aigCACEHDAELIAFBbmovAQAiBkERTw0CIAFBcGohBwsgBCAHIAMgBiADIAZJGxCEEyIEIAMgBmsgBBtBf0oNBSACQQhqQQhqIAFBCGopAgAiCDcDACACQQhqQRBqIAFBEGooAgA2AgAgAiABKQIAIgk3AwgCQCAJp0EBcUUNACAIpyEHIAIoAhQhBiABQVhqIQUCQANAIAUiAUE4aiABQSRqKAIANgIAIAFBMGogAUEcaikCADcCACABQShqIAFBFGoiAykCADcCACADIABGDQECQAJAIAEvAQANACABQQJqLwEAIgNBEEsNByABQQRqIQQMAQsgAUEMaigCACEDIAFBCGooAgAhBAsgAUFsaiEFIAcgBCAGIAMgBiADSRsQhBMiBCAGIANrIAQbQQBIDQALCyABQRRqIQUMBQsgAi8BCkH//wNxIgZBEEsNAyACQQhqQQRyIQcgAUFYaiEFAkADQCAFIgFBOGogAUEkaigCADYCACABQTBqIAFBHGopAgA3AgAgAUEoaiABQRRqIgMpAgA3AgAgAyAARg0BAkACQCABLwEAQQFHDQAgAUEMaigCACEDIAFBCGooAgAhBAwBCyABQQJqLwEAIgNBEU8NBSABQQRqIQQLIAFBbGohBSAHIAQgBiADIAYgA0kbEIQTIgQgBiADayAEG0EASA0ACwsgAUEUaiEFDAQLIANBEEHolsIAENgYAAsgBkEQQeiWwgAQ2BgACyADQRBB6JbCABDYGAALIAEgBSkCADcCACABQRBqIAVBEGooAgA2AgAgAUEIaiAFQQhqKQIANwIAIAUgAEYNACAGQRBB6JbCABDYGAALIAUgAikDCDcCACAFQRBqIAJBCGpBEGooAgA2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aiADQYABakEgaikDADcDACADQSBqQShqIANBgAFqQShqKQMANwMAIANBIGpBMGogA0GAAWpBMGopAwA3AwAgA0EgakE4aiADQYABakE4aikDADcDACADIAMpA4ABNwMgIA8gAWohCSAELQBgIRECQEHgAEUNACAJIANBIGpB4AD8CgAACyAJQeAAaiAROgAAIAFB6ABqIQEgBEHoAGohBCAQQX9qIhANAAsLIAxBHGohASALQQFqIQkgA0EIakEIaiIQIA02AgAgAyAPNgIMIAMgDTYCCCAIIAwoAhAgDCgCFBCuBSAGIAtBHGxqIgQgAykCCDcCACAEQQhqIBApAgA3AgAgBEEQaiADQQhqQRBqKQIANwIAIAQgDCgCGDYCGCAKQX9qIgoNAAsLIAAgAjYCCCAAIAY2AgQgACACNgIAIANB4AFqJAAPCyABIA5BkJnCABDmFgALIAUgBEGQmcIAEOYWAAvFBgEPfyMAQcAAayIDJAACQAJAAkACQAJAAkACQAJAAkACQAJAIAINABCxGkHoAkEEEPsXIgRFDQZBACEFIARBADsB5gIgBEEANgLgAgJAIAEvAeYCIgZFDQADQCAELwHmAiICQQtPDQMgBCACQQFqOwHmAiAEIAJBBXRqIgIgASkAADcAACACQRhqIAFBGGopAAA3AAAgAkEQaiABQRBqKQAANwAAIAJBCGogAUEIaikAADcAACABQSBqIQEgBiAFQQFqIgVHDQALCyAAIAY2AgggAEEANgIEIAAgBDYCAAwKCyADQQRqIAEoAugCIAJBf2oiBxCvBSADKAIEIgJFDQggAygCCCEIELEaQZgDQQQQ+xciBUUNASAFIAI2AugCQQAhCSAFQQA7AeYCIAVBADYC4AIgAkEAOwHkAiACIAU2AuACIAMgBTYCBCADIAhBAWo2AgggAS8B5gJFDQcgBUHoAmohCiABQewCaiELIAMoAgwhDCABIQIDQCADQRBqQRhqIg0gAkEYaikAADcDACADQRBqQRBqIg4gAkEQaikAADcDACADQRBqQQhqIg8gAkEIaikAADcDACADIAIpAAA3AxAgA0E0aiALKAIAIAcQrwUgAygCPCEQAkACQCADKAI0IgRFDQAgAygCOCEGDAELELEaQegCQQQQ+xciBEUNBEEAIQYgBEEAOwHmAiAEQQA2AuACCyAGIAhH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cSIDakEJaiICRQ0BIAsgA2sgAkEIEL4YDAELIAEgBUEMakHfAUEsELYFQYGAgIB4IQkLDAELIAUgBBCZEyAFKAIEIQggBSgCACEJCyAAIAg2AgQgACAJNgIAIAVBIGokAAuaBgECfyMAQTBrIgIkAAJAAkACQAJAAkACQAJAAkACQAJAIAAoAgBB/f///wdqIgNBBSADQQlJGw4JAAECAwQFBgcIAAsgAiAAQQRqNgIAIAIgAEEQajYCBCACQQI2AgwgAkGoncEANgIIIAJCAjcCFCACQQ6tQiCGIAJBBGqthDcDKCACQQutQiCGIAKthDcDICACIAJBIGo2AhAgASgCACABKAIEIAJBCGoQowchAAwICyACIABBBGo2AgQgAkEBNgIMIAJBxJvBADYCCCACQgE3AhQgAkETrUIghiACQQRqrYQ3AyAgAiACQSBqNgIQIAEoAgAgASgCBCACQQhqEKMHIQAMBwsgAiAAQQRqNgIEIAJBATYCDCACQeCbwQA2AgggAkIBNwIUIAJBE61CIIYgAkEEaq2ENwMgIAIgAkEgajYCECABKAIAIAEoAgQgAkEIahCjByEADAYLIAIgAEEEajYCBCACQQE2AgwgAkH4m8EANgIIIAJCATcCFCACQROtQiCGIAJBBGqthDcDICACIAJBIGo2AhAgASgCACABKAIEIAJBCGoQowchAAwFCyACIABBBGo2AgQgAkEBNgIMIAJBkJzBADYCCCACQgE3AhQgAkETrUIghiACQQRqrYQ3AyAgAiACQSBqNgIQIAEoAgAgASgCBCACQQhqEKMHIQAMBAsgAiAANgIEIAJBATYCDCACQaicwQA2AgggAkIBNwIUIAJBJa1CIIYgAkEEaq2ENwMgIAIgAkEgajYCECABKAIAIAEoAgQgAkEIahCjByEADAMLIAIgAEEEajYCBCACQQE2AgwgAkHAnMEANgIIIAJCATcCFCACQSatQiCGIAJBBGqthDcDICACIAJBIGo2AhAgASgCACABKAIEIAJBCGoQowchAAwCCyABQcicwQBBFhClFyEADAELIAIgAEEEajYCBCACQQE2AgwgAkH4nMEANgIIIAJCATcCFCACQSetQiCGIAJBBGqthDcDICACIAJBIGo2AhAgASgCACABKAIEIAJBCGoQowchAAsgAkEwaiQAIAALowYBB38jAEHQAWsiAyQAIANBiAFqIAJBGGopAAA3AgAgA0GAAWogAkEQaikAADcCACADQfgAaiACQQhqKQAANwIAIAMgAikAADcCcCADQoCAgIAQNwJoIAMgATYCZEEAIQIgA0EAOgBDIAMgA0HDAGo2ApABIANBEGogA0HkAGoQtQhBBCEEQQAhBQJAAkAgAygCEEEBcUUNACADKAIUIQIQsRpBEEEEEPsXIgZFDQEgBiACNgIAQQEhAiADQQE2ApwBIAMgBjYCmAEgA0EENgKUASADQaABakEoaiADQeQAakEoaikCADcDACADQaABakEgaiADQeQAakEgaikCADcDACADQaABakEYaiADQeQAakEYaikCADcDACADQaABakEQaiADQeQAakEQaikCADcDACADQaABakEIaiADQeQAakEIaikCADcDACADIAMpAmQ3A6ABIANBCGogA0GgAWoQtQgCQCADKAIIQQFxRQ0AIAMoAgwhBEEEIQVBASECA0ACQCACIAMoApQBRw0AIANBlAFqIAJBAUEEQQQQhwwgAygCmAEhBgsgBiAFaiAENgIAIAMgAkEBaiICNgKcASAFQQRqIQUgAyADQaABahC1CCADKAIEIQQgAygCAEEBcQ0ACwsgAygCmAEhBCADKAKUASEFCwJAAkAgAy0AQ0EBRw0AIANBMGpBAmoiAiADQcMAakEDai0AADoAACADQSBqIgYgA0HDAGpBGGopAAA3AwAgA0EoaiIBIANBwwBqQSBqLQAAOgAAIAMgAy8ARDsBMCADIAMpAFM3AxggAygATyEHIAMoAEshCCADKABHIQkCQCAFRQ0AIAQgBUECdEEEEL4YCyAAIAMpAxg3AhAgAEEgaiABLQAAOgAAIABBGGogBikDADcCACAAQQNqIAItAAA6AAAgACADLwEwOwABIAAgBzYCDCAAIAg2AgggACAJNgIEQQEhAgwBCyADIAI2AjwgAyAENgI4IAMgBTYCNCAAQQRqIAEgA0E0ahDWAkEAIQILIAAgAjoAACADQdABaiQADwtBBEEQQYTJwQAQ5hYAC8kGAgR/AX4jAEEgayIDJAACQAJAAkACQAJAAkACQAJAQQAoAti5Rw0AQQAoAtS5R0ECRw0DIAMgAjYCHCADIAE2AhggA0IBNwMIQQAoApC5RyEEQQAoAoy5RyECQQAoAoi5RyIF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ADwgAkEaOgA4DAELIAJBOGogAigCFCACKAIYENoGCwJAIANFDQAgBiADQQEQvhgLIAItADgiA0EaRw0BCyACQTNqIAJBOGpBDGooAgAiATYAACACIAIpAjwiCjcAKyAAQQxqIAE2AAAgACAKNwAEIABBGjoAAAwBCyACIAIpADk3AyggAiACQThqQQhqKQAANwAvIAJBEGpBCGoiBiACKQAvNwAAIAIgAikCSDcCICACIAM6ABAgAiACKQMoNwARAkAgBSACKAIMIghHDQAgAEEaOgAAIABBBjoABCADQR5xQRhHDQEgA0FpakH/AXFBAkkNASACKAIUIgEgASgCACIBQX9qNgIAIAFBAUcNASACQRRqEJ4TDAELIAAgAikCEDcCACABIAUgCGsiAzYCECABIAMgBGo2AgwgAEEIaiAGKQIANwIAIABBEGogAkEQakEQaikCADcCAAsgAkHQAGokAAuGBgELfyMAQTBrIgIkACABQThqIQMgAUHEAGohBCABQQRqIQUgAUEQaiEGAkADQAJAIAEoAgBBAUYNACACQRhqIAYQmwcgAUEBNgIAIAUgAikCGDcCACAFQQhqIAJBGGpBCGooAgA2AgALIAEoAgQhBwJAIAEoAjQNACACQRhqIAQQmwcgAUEBNgI0IAMgAikCGDcCACADQQhqIAJBGGpBCGooAgA2AgALIAMoAgAhCAJAAkACQAJAAkACQAJAAkACQAJAIAdFDQACQCAIRQ0AIAEoAgQgCCABKAIIIgkgASgCPCIHIAkgB0kbEIQTIgogCSAHayAKGyIJQX9KDQILIAEoAgAhCCABQQA2AgAgCEEBcUUNAyACQRhqQQhqIAVBCGooAgA2AgAgAiAFKQIANwMYDAQLIAhFDQEgASgCPCEHDAgLIAkNBwsgASgCACEIIAFBADYCAAJAAkAgCEEBcUUNACACQRhqQQhqIAVBCGooAgA2AgAgAiAFKQIANwMYDAELIAJBGGogBhCbBwsgAigCGCIIRQ0CIAIoAiAhCiACIAIoAhwiBzYCDCACIAg2AgggASgCNCEJIAFBADYCNAJAAkAgCUEBcUUNACACQRhqQQhqIANBCGooAgA2AgAgAiADKQIANwMYDAELIAJBGGogBBCbBwsgAigCGCIJRQ0DIAIoAiAhCyACIAIoAhwiDDYCFCACIAk2AhAgByAM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BCkCADcCACAAQQhqIARBCGooAgA2AgAMAgtBACEEIAJBADYCICACQoCAgIAQNwIYIAEpAwghB0EBIQMDQCAHQsAAfCIIQv8AVkEHdCAHp0H/AHFyIQECQCACKAIYIARHDQAgAkEYaiAEQQFBAUEBEIcMIAIoAhwhAyACKAIgIQQLIAdCB4chByADIARqIAE6AAAgAiAEQQFqIgQ2AiAgCEKAAVoNAAsgACACKQIYNwIAIABBCGogAkEYakEIaigCADYCAAwBCyADIARBgJnCABDmFgALIAJBMGokAAvnBQIIfwF+IwBBgAJrIgIkACABKALYASEDIAJBwABqQRBqIAFByAFqKQMANwMAIAJBwABqQQhqIAFBwAFqKQMANwMAIAIgASkDuAE3A0AgAkGYAWpBOGogAUE4aikDADcDACACQZgBakEwaiABQTBqKQMANwMAIAJBmAFqQShqIAFBKGopAwA3AwAgAkGYAWpBIGogAUEgaikDADcDACACQZgBakEYaiABQRhqKQMANwMAIAJBmAFqQRBqIAFBEGopAwA3AwAgAkGYAWpBCGogAUEIaikDADcDACACIAEpAwA3A5gBIAFBwABqIQQgA0EcaigCACEDAkAgAigCQEEDRg0AIAQgAkHAAGoQrhYaCyACQegBaiACQZgBaiADKAIMIAMoAhAQ9w0CQAJAIAIoAugBQQNHDQAgBCABQeAAahCwBwwBCyAEIAJB6AFqEK4WGiAEIAFB4ABqIgMQsAcgAkEQaiIEIAJBmAFqQRBqKQMANwMAIAJBCGpBEGoiBSACQZgBakEYaikDADcDACACQQhqQRhqIgYgAkGYAWpBIGopAwA3AwAgAkEIakEgaiIHIAJBmAFqQShqKQMANwMAIAJBCGpBKGoiCCACQZgBakEwaikDADcDACACQQhqQTBqIgkgAkGYAWpBOGopAwA3AwAgAiACKQOgATcDCCACKQOYASIKQgJRDQAgAkHYAGpBEGogBCkDADcDACACQdgAakEYaiAFKQMANwMAIAJB2ABqQSBqIAYpAwA3AwAgAkHYAGpBKGogBykDADcDACACQdgAakEwaiAIKQMANwMAIAJB2ABqQThqIAkpAwA3AwAgAiAKNwNYIAIgAikDCDcDYCABKALYASADIAJB2ABqEJgOCwJAQdAARQ0AIAJBmAFqIAFB4ABqQdAA/AoAAAsgACACQZgBahD8AgJAIAEoAkBBA0cNACABKAJEIgRFDQAgASgCSCAEQQR0QQgQvhgLIAJBgAJqJAALigYCB38CfiMAQdAAayIDJAAgAyAANgIAIAAoAhgiBEEBaiEFAkACQAJAAkACQAJAIAAoAgBBgICAgHhGIgYNACAAKAIIQR5LDQEgACABIAIQsgYMBQsQsRpBwABBCBD7FyIBRQ0BIAEgAikDADcDACABQThqIAJBOGopAwA3AwAgAUEwaiACQTBqKQMANwMAIAFBKGogAkEoaikDADcDACABQSBqIAJBIGopAwA3AwAgAUEYaiACQRhqKQMANwMAIAFBEGogAkEQaikDADcDACABQQhqIAJBCGopAwA3AwACQCAAKAIAQYCAgIB4Rg0AIAAQyw0LIABBATYCGCAAQgQ3AhAgAEIBNwIIIAAgATYCBCAAQQE2AgAMBAsgACkCACEKIABCgICAgIABNwIAIABBCGoiBykCACELIAdCADcCACADQQhqQQhqIgggCzcDACAAQRBqIgcpAgAhCyAHQgQ3AgAgA0EIakEQaiIJIAs3AwAgAyAENgIEIAMgCjcDCCAAQQxqQYTfwgAQiQ4gBygCACIHIAMpAwg3AgAgByAENgIYIAdBEGogCSkDADcCACAHQQhqIAgpAwA3AgAgAEEBNgIUIABBABCKAyADIAAoAhgiBzYCJCAEIAdHDQEgACgCFCIHRQ0CAkACQCAAKAIQIgQoAhgiCCABTw0AIAdBAUYNASAEQRxqIQQgASAIQX9zaiEBCyAAIAU2AhggBCABIAIQsgYMBAtBAUEBQbTfwgAQ4xEAC0EIQcAAENgZAAsgA0EANgIwQQAgA0EEaiADQSRqIANBMGpBlN/CABCoFAALQQBBAEGk38IAEOMRAAsgA0EAIAAoAhggACgCAEGAgICAeEYbIgA2AiggA0EBIAUgBhsiAjYCLAJAIAAgAkYNACADQQE2AkQgA0Gcg8IANgJAIANBATYCPCADQQE2AjQgA0GUg8IANgIwIANB9gGtQiCGIAOthDcDSCADIANByABqNgI4QQAgA0EoaiADQSxqIANBMGpBxN/CABCoFAALIANB0ABqJAAL5QUCCH8BfiMAQdABayIDJAACQAJAAkAgASgCnAEiBCABKAKgASIFTw0AIAINASAAIAEQhQYMAgsgAEEDNgIADAELAkACQAJAAkAgASgCeCAFIARBf3NqIAIgAiAEakEBaiAFSyIGGyICIARqIgdBAWpJDQACQCACQQAgASgCaCIIIAEoAlgiCUEDRiIFGyIKSQ0AIAEgCiAEajYCnAECQAJAIAIgCkcNACABQQM2AlgMAQsgASAHNgKcASADQRhqIAEgASgCQCABKAJEEPcNAkACQAJAIAMoAhgiCEEDRg0AIAFByABqIQkgA0EYakEEciEFIAIgCmshAgNAIANBwAFqQQhqIAVBCGooAgA2AgAgAyAFKQIANwPAASADKAIsIQcgASABKAJQIAMoAigiBGs2AlAgCUIAELEWIAQgAksNAiADQRhqIAEgASgCQCABKAJEEPcNIAIgBGshAiADKAIYIghBA0cNAAsLDAELIANBGGpBCGogA0HAAWpBCGooAgA2AgAgAyADKQPAATcDGCAEIAJrIQILIAEgCDYCWCABIAMpAxg3AlwgASAHNgJsIAEgAjYCaCABQeQAaiADQSBqKAIANgIACyADQQhqIAEQhQYMBAsgASACQQFqIgcgBGo2ApwBIAVFDQIMAQsgASgCkAEiAkUNACADQRhqIAIgBSAHIAUgB0kbIAUgASgCmAEQ6wICQEGoAUUNACABIANBGGpBqAH8CgAACyADQQhqIAEQhQYMAgsgAEEDNgIADAILAkACQCAIIAJLDQAgAUEANgJoQQMhAgwBCyABIAggB2s2AmhBAiECAkAgCUECRw0ADAELQQEhAgJAIAlBAXFFDQAgASkDYCELDAELIAEoAlwhAUEAIQILIAMgCzcDECADIAE2AgwgAyACNgIICwJAIAYNACAAIAMpAwg3AwAgAEEIaiADQQhqQQhqKQMANwMADAELIABBAzYCAAsgA0HQAWokAAvhBgICfwF+IwBBwAVrIgIkACACQSBqIAEQpgMCQCACKQMgQgNRDQACQEHABEUNACAAIAJBIGpBwAT8CgAACyACQcAFaiQADwsgAkEANgKoBSACQQE2ApwFIAJB5NPCADYCmAUgAkIENwKgBSACQYwFaiACQZgFahC6DyACIAIoApAFIAIoApQFEPEZNgKYBSACQYwFahDcFiACQZgFahD8GSACQZgFahD7FiABKAKgFCEDIAJBmAVqQQhqIgBBADYCACACQoCAgIAQNwKYBSACQRhq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gCAhCQwCC0IAIQogA0ECaiIGIAJPDQIgASAGaiwAAEG/f0wNAwtCgICAgIDAACEJC0KAgICAECEKCyAAIAkgA62EIAqENwIEIABBATYCAA8LIAZBAWohAwwCCyADQQFqIQMMAQsgAyACTw0AA0AgASADaiwAAEEASA0BIAIgA0EBaiIDRw0ADAMLCyADIAJJDQALCyAAIAI2AgggACABNgIEIABBADYCAAvvBQEDfyMAQaABayIDJAACQAJAIAJB/wFxQQdGDQACQAJAAkAgAS0AACIEQSVGDQAgASgCBCEFIANBIzoAUCAEQSRGDQEgA0EQaiABQRBqKQMANwMAIAMgBTYCBCADIAQ6AAAgAyABLwABOwABIAMgASkDCDcDCCADIAFBA2otAAA6AAMgA0HQAGoQ+A8MAgtBvMzAAEEFEPsRIQEgAEEkOgAAIAAgATYCBAwDCyADQRBqIANB0ABqQRBqKQMANwMAIANBCGogA0HQAGpBCGopAwA3AwAgAyADKQNQNwMACyADQRhqIAMgAhDQAQJAIAMoAjxBgICAgHhGDQAgA0HQAGpBMGogA0EYakEwaikDADcDACADQdAAakEoaiIBIANBGGpBKGopAwA3AwAgA0HQAGpBIGogA0EYakEgaikDADcDACADQdAAakEYaiADQRhqQRhqKQMANwMAIANB0ABqQRBqIANBGGpBEGopAwA3AwAgA0HQAGpBCGogA0EYakEIaikDADcDACADIAMpAxg3A1AgAyADKQJsNwKMASADQRE6AIgBIAMgASkDADcCmAEgA0GIAWogA0GYAWpBiMvAABChECEBIANB0ABqEIcUIABBJDoAACAAIAE2AgQgAxD4DwwCCyAAIAMpAxg3AwAgAEEQaiADQRhqQRBqKQMANwMAIABBCGogA0EYakEIaikDADcDACADEPgPDAELAkAgAS0AACICQSVGDQAgASgCBCEFQSMhBCADQSM6AFACQCACQSRGDQAgA0ECaiABQQNqLQAAOgAAIANBIGogAUEQaikDADcDACADIAEvAAE7AQAgAyABKQMINwMYIANB0ABqEPgPIAIhBAsgACAEOgAAIAAgAy8BADsAASAAIAU2AgQgACADKQMYNwMIIABBA2ogA0ECai0AADoAACAAQRBqIANBIGopAwA3AwAMAQtBvMzAAEEFEPsRIQEgAEEkOgAAIAAgATYCBAsgA0GgAWokAAuOBgEEfyMAQYABayIDJAACQAJAAkACQAJAIAEoAjwiBCACQgSIpyIFaiIGIAEoAjhLDQAgBiAETw0BIAQgBkHgs8IAENkYAAsgA0EANgIQIANCgICAgBA3AgggA0Hc48EANgIsIANCoICAgA43AjAgAyADQQhqNgIoIANBKGpBjp3DAEEXEKUXDQIgA0HoAGpBCGogA0EIakEIaigCADYCACADIAMpAgg3A2ggAEEEaiADQegAahCNDSAAQQE2AgAMAQsgASAFNgJAIAEgBjYCPCABKAI0IQEgA0EANgIYIAMgBTYCFCADIAEgBGoiATYCECADIAU2AgwgAyABNgIIIANBKGogA0EIahCdBAJAAkAgAygCKA0AIANB0ABqIANBNGooAgA2AgAgAyADKQIsIgI3A0ggA0EANgJwIANCgICAgBA3AmgCQAJAIAKnQf8BcUEGRw0AIANB6ABqQQBBD0EBQQEQhwwgAygCbCADKAJwIgFqIgVBACkAkPhCNwAAIAVBB2pBACkAl/hCNwAAIAMgAUEPajYCcAwBCyADIANByABqNgJ4IANBATYCDCADQZSDwgA2AgggA0IBNwIUIANB6wGtQiCGIANB+ABqrYQ3A1ggAyADQdgAajYCECADQegAakHc48EAIANBCGoQowcNBQsgA0HYAGpBCGogA0HoAGpBCGooAgA2AgAgAyADKQJoNwNYIANBCGpBBHIgA0HYAGoQjQ0gA0EBNgIIIAMtAEhBBkYNASADQcgAahCmDwwBCwJAIAMoAiwNACADIAMpA0A3AxggA0EcOgAQIANBADYCCAwBCyADQQhqQQRyQab6wQBBBUHcssIAQQsQsw8gA0EBNgIICyAAIAMpAwg3AwAgAEEYaiADQQhqQRhqKQMANwMAIABBEGogA0EIakEQaikDADcDACAAQQhqIANBCGpBCGopAwA3AwALIANBgAFqJAAPC0GE5MEAQTcgA0H/AGpB9OPBAEG85MEAEPgQAAtBhOTBAEE3IANB/wBqQfTjwQBBvOTBABD4EAAL7gUBBX8jAEEgayICJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAS0AACIDQWZqIgRBASAEQf8BcUEKSRtB/wFxDgoACQECAwQFBgcIAAtBACEDIAEo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B0sbIAQgBxs2AhAgACACKAIUIgcgAyAHIANJGyADIAcbIAcgAxs2AgwLIAJBIGokAA8LQfT8wAAQ+xkAC9MFAQJ/IwBBMGsiAiQAAkACQAJAAkACQAJAAkACQAJAAkAgACgCAEH9////B2oiA0EBIANBCUkbDgkAAQIDBAUGBwgACyACIABBBGo2AgAgAiAAQRBqNgIEIAJBAjYCDCACQaidwQA2AgggAkICNwIUIAJBDq1CIIYgAkEEaq2ENwMoIAJBC61CIIYgAq2ENwMgIAIgAkEgajYCECABKAIAIAEoAgQgAkEIahCjByEADAgLIAIgADYCBCACQQE2AgwgAkGwpsEANgIIIAJCATcCFCACQSWtQiCGIAJBBGqthDcDICACIAJBIGo2AhAgASgCACABKAIEIAJBCGoQowchAAwHCyACIABBBGo2AgQgAkEBNgIMIAJB0KbBADYCCCACQgE3AhQgAkEorUIghiACQQRqrYQ3AyAgAiACQSBqNgIQIAEoAgAgASgCBCACQQhqEKMHIQAMBgsgAiAANgIEIAJBATYCDCACQYCnwQA2AgggAkIBNwIUIAJBKa1CIIYgAkEEaq2ENwMgIAIgAkEgajYCECABKAIAIAEoAgQgAkEIahCjByEADAULIAIgAEEEajYCBCACQQE2AgwgAkGgp8EANgIIIAJCATcCFCACQROtQiCGIAJBBGqthDcDICACIAJBIGo2AhAgASgCACABKAIEIAJBCGoQowchAAwECyACIABBBGo2AgQgAkEBNgIMIAJBwKfBADYCCCACQgE3AhQgAkETrUIghiACQQRqrYQ3AyAgAiACQSBqNgIQIAEoAgAgASgCBCACQQhqEKMHIQAMAwsgAUHIp8EAQRUQpRchAAwCCyACIABBBGo2AgQgAkEBNgIMIAJB/KfBADYCCCACQgE3AhQgAkEnrUIghiACQQRqrYQ3AyAgAiACQSBqNgIQIAEoAgAgASgCBCACQQhqEKMHIQAMAQsgAUGEqMEAQS0QpRchAAsgAkEwaiQAIAALzwUCBH8BfiMAQeAAayICJAACQAJAAkACQAJAAkAgASgCnAEgASgCoAFPDQACQCABKAJYIgNBA0YNACABKAJoIgRFDQAgASAEQX9qNgJoQQIhBCADQQJGDQNBASEEIANBAXENAiABKAJcIQNBACEEDAUL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ACABKQMQIQkMAwsgAUEQaiABKAIMIAEoAggbKQMAIglCgICAgBAgCUKAgICAEFQbQv////8PgyEJDAILIAEpAwhCACABLQAQGyEJDAELIAFBEGogASgCDCABKAIIGykDACIJQoCAgIAQIAlCgICAgBBUG0L/////D4MgATUCGH4hCQsgACAAKQMAIAl8NwMAIAAgACgCICADajYCICAAIAAoAiQgAmo2AiQCQAJAAkAgACgCKCICDQAgACgCRCEDDAELIAQgACgCQCAAKAIsIghBBXRqIgZBACAIIAAoAkQiA0kbNgIsIAggA08NASAGQeCOwgAQiwhFDQEgAq0hCQJAIAYtAABBBkcNACAGKAIEIghBgICAgHhGDQAgCEUNACAGKAIIIAhBARC+GAsgBiAJNwMIIAZBAjoAACAAQQA2AigLAkAgAyAAKAI8Rw0AIABBPGpB3I3CABDHDgsgACADQQFqNgJEIAAoAkAgA0EFdGoiAyABKQMANwMAIANBCGogAUEIaikDADcDACADQRBqIAFBEGopAwA3AwAgA0EYaiABQRhqKQMANwMAIAAQ/AwMAQsgBEEANgIIQQAgBEEsakGAj8IAIARBCGpBhI/CABCWFAALIARBMGokAAvuBQIEfwV+IwBBgAFrIgQkACABvSEIAkACQCABmUQAAAAAAADwf2INAEEDIQUMAQsCQCAIQoCAgICAgID4/wCDIglCgICAgICAgPj/AFINAEECIQUMAQsgCEL/////////B4MiCkKAgICAgICACIQgCEIBhkL+////////D4MgCEI0iKdB/w9xIgYbIgtCAYMhDAJAIAlCAFINAAJAIApQRQ0AQQQhBQwCCyAGQc13aiEGIAynQQFzIQVCASEJDAELQoCAgICAgIAgIAtCAYYgC0KAgICAgICACFEiBxshC0ICQgEgBxshCSAMp0EBcyEFQct3Qcx3IAcbIAZqIQYLIAQgBjsBeCAEIAk3A3AgBEIBNwNoIAQgCzcDYCAEIAU6AHoCQAJAAkACQAJAIAVBfmoiBkUNAEEBIQVB/pXHAEH/lccAIAhCAFMiBxtB/pXHAEEBIAcbIAIbIQdBASAIQj+IpyACGyECIAZBAyAGQQNJG0F/ag4DAQMCAQsgBEEDNgIoIARBgJbHADYCJCAEQQI7ASBBASEHIARBIGohBkEAIQJB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IQEMAQsgASEEIAIhAQNAIAFBf2ohASAEKAKYBCEEIABBf2oiAA0ACwsgAkEISQ0AA0AgBCgCmAQoApgEKAKYBCgCmAQoApgEKAKYBCgCmAQoApgEIQQgAUF4aiIBDQALC0EAIQEDQCAEKAKQBCEAIARByARBmAQgARtBCBC+GCABQX9qIQEgACEEIAANAAsLC5EGAQN/IwBBIGsiCyQAAkACQCAAKAIAIgwgASACIAAoAgQoAgwiDREQAEUNAEEBIQIMAQsCQAJAIAAtAApBgAFxDQBBASECIAxBjZrHAEEBIA0REAANAiADIAAgBCgCDBELAEUNAQwCCwJAIAxBjprHAEECIA0REABFDQBBASECDAILQQEhAiALQQE6AA8gC0HkmccANgIUIAsgACkCADcCACALIAApAgg3AhggCyALQQ9qNgIIIAsgCzYCECADIAtBEGogBCgCDBELAA0BIAsoAhBBiJrHAEECIAsoAhQoAgwREAANAQsCQAJAIAAtAApBgAFxDQACQCAAKAIAQYOaxwBBAiAAKAIEKAIMERAARQ0AQQEhAgwDCyAFIAAgBigCDBELAEUNAUEBIQIMAgtBASECIAtBAToADyALQeSZxwA2AhQgCyAAKQIANwIAIAsgACkCCDcCGCALIAtBD2o2AgggCyALNgIQIAUgC0EQaiAGKAIMEQsADQEgCygCEEGImscAQQIgCygCFCgCDBEQAA0BCwJAAkAgAC0ACkGAAXENAAJAIAAoAgBBg5rHAEECIAAoAgQoAgwREABFDQBBASECDAMLIAcgACAIKAIMEQsARQ0BQQEhAgwCC0EBIQIgC0EBOgAPIAtB5JnHADYCFCALIAApAgA3AgAgCyAAKQIINwIYIAsgC0EPajYCCCALIAs2AhAgByALQRBqIAgoAgwRCwANASALKAIQQYiaxwBBAiALKAIUKAIMERAADQELAkACQCAALQAKQYABcQ0AAkAgACgCAEGDmscAQQIgACgCBCgCDBEQAEUNAEEBIQIMAwtBASECIAkgACAKKAIMEQsARQ0BDAILQQEhAiALQQE6AA8gC0HkmccANgIUIAsgACkCADcCACALIAApAgg3AhggCyALQQ9qNgIIIAsgCzYCECAJIAtBEGogCigCDBELAA0BIAsoAhBBiJrHAEECIAsoAhQoAgwREAANAQsgACgC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AAsgAiAPNwOABCABKAKQCSELIAEoAowJIQ0gAiACQYAEahCCBgJAAkAgAikDCCIPQgJRDQBBACEEA0ACQCAPUEUNAAJAIAIoAgQiCiALTw0AIA0gCkECdGooAgAgAigCAE8gBHIhBAwBCyAKIAtByLDCABDjEQALIAIgAkGABGoQggYgAikDCCIPQgJSDQALIARBAXENAQsCQCALIA5CIIinIgRLDQAgBCALQciwwgAQ4xEACyAMQQVGDQAgDSAEQQJ0aigCACAOp08NAwsgAkGABGogARDOBiADQQFqIQMgAigCgAQiBEUNAAsLIARFDQAgAigChAQiBEGFgICAeEgNACAERQ0AIAIoAogEIARBARC+GAsgACADNgIEIABBATYCACACQYAIaiQAC5kFAgh/BX4jAEEwayIFJAAgASkDECABKQMYIAIQ+gYhDQJAIAEoAggNACAFQQhqIAFBASABQRBqQQEQxAULIAEoAgQiBiANp3EhByANQhmIIg5C/wCDQoGChIiQoMCAAX4hDyABKAIAIQhBACEJQQAhCgNAAkACQAJAAkACQCAIIAdqKQAAIhAgD4UiDUJ/hSANQv/9+/fv37//fnyDQoCBgoSIkKDAgH+DIg1QDQADQCACIAEoAgBBACANeqdBA3YgB2ogBnFrIgtBKGxqQVhqEJoODQIgDUJ/fCANgyINUEUNAAsLIBBCgIGChIiQoMCAf4MhDQJAIApBAUYNACANUA0DIA16p0EDdiAHaiAGcSEMCwJAIA0gEEIBhoNCAFINAEEBIQoMBAsCQCAIIAxqLAAAQQBIDQAgCCkDAEKAgYKEiJCgwIB/g3qnQQN2IQwLIAEoAgAiByAMaiIILQAAIQYgAkEYaikDACENIAJBEGopAwAhDyACQQhqKQMAIRAgAikDACERIAggDqdB/wBxIgI6AAAgByABKAIEIAxBeGpxakEIaiACOgAAIAEgASgCDEEBajYCDCAHQQAgDGtBKGxqIgdBWGoiAiARNwMAIAJBCGogEDcDACACQRBqIA83AwAgAkEYaiANNwMAIAdBfGogBDYCACAHQXhqIAM2AgAgASABKAIIIAZBAXFrNgIIIABBADYCAAwBCyABKAIAIAtBKGxqIgFBeGoiBykDACENIAFBfGogBDYCACAHIAM2AgAgAEEBNgIAIAAgDTcCBCACLwEI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gIABcUUNACAALwEOIgQNAUEAIQIMAgsCQCACQRBJDQAgASACEL8EIQUMBAsCQCACDQBBACECQQAhBQwECyACQQNxIQYCQAJAIAJBBE8NAEEAIQVBACEHDAELIAJBDHEhBEEAIQVBACEHA0AgBSABIAdqIggsAABBv39KaiAIQQFqLAAAQb9/SmogCEECaiwAAEG/f0pqIAhBA2osAABBv39KaiEFIAQgB0EEaiIHRw0ACwsgBkUNAyABIAdqIQgDQCAFIAgsAABBv39KaiEFIAhBAWohCCAGQX9qIgYNAAwECwsgASACaiEGQQAhAiABIQggBCEHA0AgCCIFIAZGDQICQAJAIAUsAAAiCEF/TA0AIAVBAWohCAwBCwJAIAhBYE8NACAFQQJqIQgMAQsCQCAIQXBPDQAgBUEDaiEIDAELIAVBBGohCAsgCCAFayACaiECIAdBf2oiBw0ACwtBACEHCyAEIAdrIQULIAUgAC8BDCIITw0AIAggBWshCUEAIQVBACEEAkACQAJAIANBHXZBA3EOBAIAAQICCyAJIQQMAQsgCUH+/wNxQQF2IQQLIANB////AHEhBiAAKAIEIQcgACgCACEAAkADQCAFQf//A3EgBEH//wNxTw0BQQEhCCAFQQFqIQUgACAGIAcoAhARCwANAwwACwtBASEIIAAgASACIAcoAgwREAANAUEAIQUgCSAEa0H//wNxIQIDQCAFQf//A3EiBCACSSEIIAQgAk8NAiAFQQFqIQUgACAGIAcoAhARCwANAgwACwsgACgCACABIAIgACgCBCgCDBEQACEICyAIC48FAgp/An4jAEHAAGsiAiQAIAEoAiQiA0EFdCEEQQAhBQJAAkACQCADQf///z9LDQAgBEH4////B0sNAAJAAkAgBA0AQQghBgwBCyABKAIgIQcQsRpBCCEFIARBCBD7FyIGRQ0BIANFDQBBACEIIAMhCQNAIAQgCEYNASAHKAIcIgogCigCACIFQQFqNgIAIAVBf0wNAyAHKQMQIQwgBygCGCELIAcpAwghDSAGIAhqIgUgBykDADcDACAFQQhqIA03AwAgBUEcaiAKNgIAIAVBGGogCzYCACAFQRBqIAw3AwAgCEEgaiEIIAdBIGohByAJQX9qIgkNAAsLIAEoAjAiBK1COH4iDKchCkEAIQUgDEIgiKcNAiAKQfj///8HSw0CQQAhBwJAAkAgCg0AQQghCQwBCyABKAIsIQsQsRpBCCEFIApBCBD7FyIJRQ0DIARFDQBBACEFIAQhCAJAA0AgCiAFRg0BIAJBCGogCyAFahC2BiAJIAVqIgdBMGogAkEIakEwaikDADcDACAHQShqIAJBCGpBKGopAwA3AwAgB0EgaiACQQhqQSBqKQMANwMAIAdBGGogAkEIakEYaikDADcDACAHQRBqIAJBCGpBEGopAwA3AwAgB0EIaiACQQhqQQhqKQMANwMAIAcgAikDCDcDACAFQThqIQUgCEF/aiIIDQALCyAEIQcLIAAgBDYCMCAAIAk2AiwgACAHNgIoIAAgAzYCJCAAIAY2AiAgACADNgIcIAAgASgCGDYCGCAAIAEpAwA3AwAgAEEIaiABQQhqKQMANwMAIABBEGogAUEQaikDADcDACACQcAAaiQADwsgBSAEQbCBwQAQ5hYLAAsgBSAKQbCBwQAQ5hYAC+QFAQV/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgASgCACICQf////8HaiIDQQggA0EKSRsOCgABAgMEBQYHCAkAC0GAgICAeCECIAEoAgwhAyABKAIIIQQCQAJAIAEoAgRBgICAgHhHDQAgBCEBDAELQQAhAiADQQBIDQoCQAJAIAMNAEEBIQEMAQsQsRpBASECIANBARD7FyIBRQ0LCwJAIANFDQAgASAEIAP8CgAACyADIQILIAAgAzYCDCAAIAE2AgggACACNgIEIABBgYCAgHg2AgAPC0GAgICAeCECIAEoAgwhAyABKAIIIQQCQAJAIAEoAgRBgICAgHhHDQAgBCEBDAELQQAhAiADQQBIDQoCQAJAIAMNAEEBIQEMAQsQsRpBASECIANBARD7FyIBRQ0LCwJAIANFDQAgASAEIAP8CgAACyADIQILIAAgAzYCDCAAIAE2AgggACACNgIEIABBgoCAgHg2AgAPCyAAIAEpAwA3AwAgAEEIaiABQQhqKQMANwMADwsgACABKQMANwMAIABBCGogAUEIaikDADcDAA8LIAAgASkDADcDACAAQQhqIAFBCGopAwA3AwAPCyAAIAEpAwA3AwAgAEEIaiABQQhqKQMANwMADwsgACABKQMANwMAIABBCGogAUEIaikDADcDAA8LIAAgASkDADcDACAAQQhqIAFB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KAIANgIAIAdBCGogCEEIaikCADcCACAHQRBqIAhBEGopAgA3AgAgB0EYaiAIQRhqKQIANwIAIAdBIGogCEEgaikCADcCACAHQShqIAhBKGopAgA3AgAgAiAJKQIANwNAIANBCEcNBCALIQMgBCALRw0ACwtBByEDDAMLIAUQmQ8LIAUgCSkCADcCACAFQQhqIAlBCGooAgA2AgBBByEDDAELIAJBOGogAkHAAGpBOGooAgAiBzYCACACQTBqIAJBwABqQTBqKQMAIgw3AwAgAkEoaiACQcAAakEoaikDACINNwMAIAJBIGogAkHAAGpBIGopAwAiDjcDACACQRhqIAJBwABqQRhqKQMAIg83AwAgAkEQaiACQcAAakEQaikDACIQNwMAIAJBCGogAkHAAGpBCGopAwAiETcDACACIAIpA0AiEjcDACAAQTxqIAc2AgAgAEE0aiAMNwIAIABBLGogDTcCACAAQSRqIA43AgAgAEEcaiAPNwIAIABBFGogEDcCACAAQQxqIBE3AgAgACASNwIECyAAIAM2AgAgAkGAAWokAAujBQEFfyMAQTBrIgUkAAJAAkACQCABKAIMIgZBBEYNACACQf8BcSABLQAoRw0BIAEgAUEMahDHBEUNAQsgBUEFNgIIDAELIAVBCGogARDOCSABKAIMIQYLAkACQCAGQQRGDQAgASgCGCEHIAEoAiAhBgwBC0EAIQdBACEIAkACQAJAAkACQCACQf8BcQ4DAAEEAAsCQAJAAkAgASgCACIIDgQGAAECBgtBASEIIAEoAgQiBiAGKAIAIglBAWo2AgAgCUEASA0DIAVBLGohCQwECyABKAIEIgYgBigCACIJQQFqNgIAIAlBAEgNAkECIQggBUEsaiEJDAMLIAEoAgQiCSAJKAIAIgZBAWo2AgAgBkEASA0BIAEoAggiBiAGKAIAIghBAWo2AgAgCEEASA0BIAUgCTYCLEEDIQggBUEoaiEJDAILQQAhCAJAAkAgASgCAEF/ag4DAQQABAtBASEIIAEoAggiBiAGKAIAIglBAWo2AgAgCUF/TA0BIAVBLGohCQwCC0EBIQggASgCBCIGIAYoAgAiCUEBajYCACAJQX9MDQAgBUEsaiEJDAELAAsgCSAGNgIAIAUoAighBiAFKAIsIQkLIAFCADcCICABQoCAgIAQNwIYIAEgBjYC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A0EiRg0EIANB3ABGDQQgAkEBaiECIAFBf2oiAQ0ADAULCyAFQSBJDQQgBEEBaiEFQQAgAyACQQFqIgRrQXhxIgZrIQMDQAJAIAMNACAAIAYgBGo2AgggABDHEg8LIAUgAmohASADQQhqIQMgAkEIaiECIAEpAAAiCUJ/hSAJQqLEiJGixIiRIoVC//379+/fv/9+fCAJQuC///79+/fvX3yEIAlC3Ljx4sWLl67cAIVC//379+/fv/9+fISDQoCBgoSIkKDAgH+DIglQDQALIAAgCXqnQQN2IAJqQXlqNgIIDwsgAiADQdzyxQAQ4xEACyACIAFPDQEDQCACLQAAIgNBIkYNASADQdwARg0BIAJBAWoiAiABRw0ADAILCyACIAdrIQYLIAAgBiAFajYCCAsLrAUCBn8BfiMAQcABayICJAAgAkHYAGogARChAgJAAkAgAigCfEGBgICAeEYNACACQRBqQTBqIAJB2ABqQTBqKQMANwMAIAJBEGpBKGogAkHYAGpBKGopAwA3AwAgAkEQakEgaiACQdgAakEgaikDADcDACACQRBqQRhqIAJB2ABqQRhqKQMANwMAIAJBEGpBEGogAkHYAGpBEGopAwA3AwAgAkEQakEIaiIDIAJB2ABqQQhqKQMANwMAIAIgAikDWDcDEAJAIAEoArAJIgENACACQRBqEIIQDAELIAJBCGogAykDADcDACACIAIpAxA3AwAgAigCNCIDQYGAgIB4Rg0AIAIpAzghCCACKAIsIQQgAigCKCEFIAItAEEhBiACKAIwIQcgAkHYAGpBCGogAkEIaikDADcDACACIAIpAwA3A1ggAiAGOgCgASACIAM2ApQBIAIgBzYCkAEgAiAENgKMASACIAU2AogBIAJBAzsBcCACIAE2AmggAiAINwOYASAIQiCIpyEBAkACQCAIQgBZDQBBACEEDAELQQEhAwJAIAhCgICAgBBUDQAQsRpBASEEIAFBARD7FyIDRQ0BCwJAIAFFDQAgAyAIpyAB/AoAAAsgAkHoAGohBAJAAkAgAigCWEGLgICAeEYNACACQagBaiACQdgAahCUBwwBCyACIAItAFw6AKkBIAJBJToAqAELIAJBOGogBBCjDCACQRBqQQhqIAJBqAFqQQhqKQMANwMAIAJBEGpBEGogAkGoAWpBEGopAwA3AwAgAiABNgIwIAIgAzYCLCACIAE2AiggAiACKQOoATcDECACQdgAahDFDkHIAEUNAiAAIAJBEGpByAD8CgAADAILIAQgAUGAmcIAEOYWAAsgAEGAgICAeDYCGAsgAkHAAWokAAuJBQINfwF+IwBBwAtrIgIkACAAKAKIDCEDAkBBwAtFDQAgAiAAQRhqQcAL/AoAAAtBwHQhBANAIAIgBGoiBUHAC2oiBikDACEPIAYgASAEaiIHQaAPaiIIKQMANwMAIAggDzcDACAFQcgLaiIFKQMAIQ8gBSAHQagPaiIGKQMANwMAIAYgDzcDACAEQRBqIgQNAAsgAhCxDwJAIAApAwBCAVINACABIAAoAtgLEMwCCyABQQAQyAMCQCABKALcAyIJRQ0AA0AgASgC2AMhCkEAIQRBACEGAkAgCUEESQ0AIApBLGohBSAJQXxxIQtBACEEQQAhBgNAIAcgBCAFQVxqKAIAIggbIARBAWogBUFoaigCACIMGyAEQQJqIAVBdGooAgAiDRsgBEEDaiAFKAIAIg4bIQcgDkUgDUUgDEUgCEVycnIgBnIhBiAFQTBqIQUgBEEEaiIEIAtHDQALCwJAIAlBA3EiCEUNACAKIARBDGxqQQhqIQUDQCAHIAQgBSgCACIMGyEHIAVBDGohBSAEQQFqIQQgDEUgBnIhBiAIQX9qIggNAAsLIAZBAXFFDQEgASAHEMwCIAEoAtwDIgkNAAsLAkAgACgC3AsiBEGAgICAeHJBgICAgHhGDQAgACgC4AsgBEEBEL4YCwJAIAAoAvQLIgRFDQAgACgC+AsgBEEFdEEBEL4YCwJAIAAoAugLIgRBgICAgHhyQYCAgIB4Rg0AIAAoAuwLIARBAnRBBBC+GAsgACgChAwhBgJAIANFDQAgBiEEIAMhBQNAIAQQ5w0gBEHYAGohBCAFQX9qIgUNAAsLAkAgACgCgAwiBEUNACAGIARB2ABsQQgQvhgLIAJBwAtqJAAgAwu6BQIGfwF+IwBBMGsiByQAIAdBADYCDCAHQQA2AhAgByADNgIYIAcgAjYCFCAHIAU2AiAgByAENgIcAkACQCAGQQNHDQAgAEKBgICAYDcCACAAQgA3AggMAQsgAS0AjtICIQggAUEAOgCO0gICQCABLACM0gIiCUF8Rw0AIABCgYCAgLB/NwIAIABCADcCCAwBCwJAAkACQAJAAkAgCUEASA0AIAEtAI3SAiEKIAEtAI/SAiELAkAgBkEERiIMDQAgC0EBcQ0CC0HAAEEIIAobIApBAklyIQogASAMIAtyQQFxOgCP0gICQAJAAkAgBkEERw0AIAhBAXENAQsgASgChIACIgMNASAHIAEgB0EUaiAHQRxqIAdBDGogB0EQaiAKIApBAnIgBkEERhsgBhDzBiAHKQMAIQ0gACAHKAIQNgIMIAAgBygCDDYCCCAAIA03AgAMBwsgB0EkaiABQYiAAmogAiADIAQgBUEAIApBBHIQZSABIActACgiBjoAjNICQQEhBUF7IQQgBygCLCEDIAcoAiQhAiAGQfwBRg0FAkAgBsAiBkF/Sg0AQX0hBAwGCwJAIAYNAEEAIQVBASEEDAYLIAFB/wE6AIzSAkEBIQUMBQsgASgCgIACIgggBSADIAUgA0kbIgZqIgIgCEkNAiACQYCAAksNAwJAIAZFDQAgBCABIAhqIAb8CgAACyABIAJB//8BcTYCgIACIAEgAyAGazYChIACIAAgBjYCDCAAQQA2AgggACAJRSADIAVNcTYCBCAAQQA2AgAMBQsgAEKBgICAUDcCACAAQgA3AggMBAsgAEKBgICAYDcCACAAQgA3AggMAwsgCCACQcCaxAAQ2RgACyACQYCAAkHAmsQAENgYAAsgACADNgIMIAAgAjYCCCAAIAQ2AgQgACAFNgIACyAHQTBqJAALygUBBX8jAEEgayIAJAAgABC5GjYCDEHCt8EAQSgQkhchASAAQeq3wQBBBxCSFyICNgIQIAAgATYCFCAAQRhqIABBDGogAEEQaiAAQRRqEJATAkACQCAALQAYIgNBAUcNACAAKAIcIQQMAQsgAkGECEkNACACEK8RIAAoAhQhAQsCQCABQYQISQ0AIAEQrxELAkACQAJAAkAgAw0AQfG3wQBBDhCSFyEBIABB/7fBAEEQEJIXIgI2AhAgACABNgIUIABBGGogAEEMaiAAQRBqIABBFGoQkBMCQAJAIAAtABgiA0EBRw0AIAAoAhwhBAwBCyACQYQISQ0AIAIQrxEgACgCFCEBCwJAIAFBhAhJDQAgARCvEQsgAw0BQY+4wQBBBRCSFyEBIABBlLjBAEETEJIXIgI2AhAgACABNgIUIABBGGogAEEMaiAAQRBqIABBFGoQkBMCQAJAIAAtABgiA0EBRw0AIAAoAhwhBAwBCyACQYQISQ0AIAIQrxEgACgCFCEBCwJAIAFBhAhJDQAgARCvEQsgAw0CQae4wQBBBhCSFyEBIABBrbjBAEEMEJIXIgI2AhAgACABNgIUIABBGGogAEEMaiAAQRBqIABBFGoQkBMCQAJAIAAtABgiA0EBRw0AIAAoAhwhBAwBCyACQYQISQ0AIAIQrxEgACgCFCEBCwJAIAFBhAhJDQAgARCvEQsgAw0DIAAoAgwhASAAQSBqJAAgAQ8LIAAgBDYCHCAAIAI2AhhB/MPAAEErIABBGGpBjI/BAEHsuMEAEPgQAAsgACAENgIcIAAgAjYCGEH8w8AAQSsgAEEYakGMj8EAQdy4wQAQ+BAACyAAIAQ2AhwgACACNgIYQfzDwABBKyAAQRhqQYyPwQBBzLjBABD4EAALIAAgBDYCHCAAIAI2AhhB/MPAAEErIABBGGpBjI/BAEG8uMEAEPgQAAudBQIFfwd+IwBBgAFrIgIkACABQQhqIQMgAUGAAmohBAJAAkAgASkDAEICUQ0AQQAhBQwBC0EBIQULA0ACQAJAAkACQCAFDgIAAQELIAJBCGogARCzCiACKAIMIQYCQCACKAIIIgVBAUcNAEEBIQUMAgsgAUICNwMAIAVBAXENAUEBIQUMAwsCQCAEKAIAQYCAgIB4Rg0AIAJBEGogBBDfBiACKAIsIgUNAgJAIAQoAgAiA0GAgICAeHJBgICAgHhGDQAgASgChAIgA0EwbEEIEL4YCyAEQYCAgIB4NgIACwJAIAEpA4ABQgJSDQBBACEFDAELIAIgAUGAAWoiARCzCiACKAIEIQYCQCACKAIAIgVBAUcNAEEBIQUMAQsgAUICNwMACyAAIAU2AgAgACAGNgIEIAJBgAFqJAAPCyACQcgAakEYakIANwMAIAJByABqQSBqQgA3AwAgAkHIAGpBKGpCADcDACACQcgAakEwakEANgIAIAUpAwghByAFKAIcKQIMIQggBSkDACEJIAUoAhAhBSABKQKUAiEKIAIoAhghBiACQRBqQTBqQQA2AgAgAkEQakEoakIANwMAIAJBEGpBIGpCADcDACACQRBqQRhqQgA3AwAgAkEQakEQaiACQcgAakEQaikDACILNwMAIAJBEGpBCGogAkHIAGpBCGopAwAiDDcDACACIAIpA0giDTcDECABQgA3AwAgAyANNwMAIANBCGogDDcDACADQRBqIAs3AwAgA0EYakIANwMAIANBIGpCADcDACADQShqQgA3AwAgA0EwakEANgIAIAEgBjYCeCABQgA3A3AgASAKNwNoIAEgBTYCYCABIAk3A1ggASAINwNQIAFCADcDSCABIAc3A0BBACEFDAALC78FAgZ/A34jAEGgAWsiAiQAIAEoAhAhAwJAAkBBACkD8L1HpyIEDQAgAkHAAGoQ6RJBAEIBNwPwvUdBACACKQNIIgg3A4C+RyACQQhqQQApA+jIQTcDACACQQApA+DIQTcDACACIAg3AxggAiACKQNAIgk3AxAgCUIBfCEJDAELIAJBCGpBACkD6MhBNwMAQQBBACkD+L1HIgpCAXwiCTcD+L1HIAJBACkD4MhBNwMAIAJBACkDgL5HIgg3AxggAiAKNwMQIAQNACACQcAAahDpEkEAQgE3A/C9R0EAIAIpA0giCDcDgL5HIAIpA0AhCQsgAkEgakEIaiIFQQApA+jIQTcDACACIAk3AzBBACAJQgF8NwP4vUcgAiAINwM4IAJBACkD4MhBNwMgIAJBwABqQShqQgA3AwAgAkHAAGpBMGpCADcDACACQcAAakE4akEANgIAIAJCADcDYCACQgA3A0AgAkGAAWogAkHAAGogASgCHCIBKAIMIgYgASgCECIHELcDAkAgAigCgAFBBEYNAANAIAJBkAFqQQhqIAJBgAFqQQhqKQIANwMAIAIgAikCgAEiCTcDkAEgAkGQAWohAQJAAkACQCAJpyIEQX5qDgIAAgELIAIoApQBIgEoAgAhBAsCQAJAIARBAXENACACIQQMAQsgAiABQQRqENoJDQEgAkEgaiEECyAEIAEoAgQgASgCCBChCAsgAkGAAWogAkHAAGogBiAHELcDIAIoAoABQQRHDQALCyAAIAIpAyA3AyAgACACKQMANwMAIAAgAzYCQCAAQThqIAJBIGpBGGopAwA3AwAgAEEwaiACQSBqQRBqKQMANwMAIABBKGogBSkDADcDACAAQQhqIAJBCGopAwA3AwAgAEEQaiACQRBqKQMANwMAIABBGGogAkEYaikDADcDACACQaABaiQAC4EFAgN/AX4jAEGgAWsiCSQAIAlB0ABqIAIgBBDsByAJKAJYIQogCSgCVCEEAkACQAJAAkAgCSgCUCILQSdGDQAg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RQ0AIABB4ANqIAJBwANqQaAL/AoAAAsgAEGAgMAANgLADyAAIAE6AJwPIABBADYCmA8gAEKAgICAwAA3A5APIAAgBjcDiA8gACAHNwOADyACQYAaaiQAC64FAgJ/AX4jAEHgAGsiAiQAIAJByABqIAEQ0AUCQAJAIAIoAkhBAUcNACACIAIpA1A3AgggAiACKAJMNgIEIABBBGpBjrLCAEEEIAJBBGoQowsgAEEBNgIADAELAkACQAJAIAIpA1AiBEICUQ0AAkACQAJAAkACQAJAAkACQAJAAkACQAJAIASnQQFxRQ0AIAIgAikDWCIENwMQIASnQQ9xIgMOCgIDBAUGBwgLCQoBCxCxGkEMQQQQ+xciAUUNDBCxGkEEQQEQ+xciA0UNDSABQQQ2AgggASADNgIEIAFBBDYCACADQe3K0YsGNgAAIABCgYCAgICAgICAfzcCDCAAIAE2AgggAEKBgICAEDcDAAwOCyACIAM6AEggACABIAQgAkHIAGoQ0goMDQsgAEEjOgAIIABBADYCAAwMCyAAQSE7AQggAEEANgIADAsLIABBoQI7AQggAEEANgIADAoLIAAgASAEENoDDAkLIAAgASAEEOkFDAgLIAAgASAEIAJBEGoQ2AgMBwsgACABIAQQmwgMBgsgACABIAQQhgUMBQsgACABIAQQjwUMBAsgAkEcaiABQTBqIARCBIinEJwSAkAgAi0AHEEIRg0AIAJBKGpBCGogAkEcakEIaigCADYCACACIAIpAhw3AyggAkHIAGogAkEoahD+DiAAQQRqIAJByABqEI0NIABBATYCACACLQAoQQZxQQZGDQQgAkEoahCmDwwECyACQcgAaiACKAIgIAIoAiQQiRIgAkHEAGogAkHIAGpBCGooAgA2AAAgAiACKQJINwA8IABBGjoACCAAQQA2AgAgACACKQA5NwAJIABBEGogAkHAAGopAAA3AAAMAwsgAEECNgIADAILQQRBDBDYGQALQQFBBEGAmcIAEOYWAAsgAkHgAGokAAvxBAEGfyMAQaABayICJAACQAJAAkAgAUUNACABQXhqIgMgAygCAEEBaiIENgIAIARFDQEgASgCAA0CIAFBfzYCACACIAM2AkwgAiABNgJIIAIgAUEIajYCRCACQdAAaiABQShqENkFIAIoAlwhBSACKAJYIQYgAigCVCEEAkACQCACKAJQIgdBJ0YNACACQThqIAJBmAFqKQMANwMAIAJBMGogAkGQAWopAwA3AwAgAkEoaiACQdAAakE4aikDADcDACACQSBqIAJB0ABqQTBqKQMANwMAIAJBGGogAkHQAGpBKGopAwA3AwAgAkEQaiACQdAAakEgaikDADcDACACQQhqIAJB0ABqQRhqKQMANwMAIAIgAikDYDcDAAwBCyAGIAUQiBohBwJAIARFDQAgBiAEQQEQvhgLIAchBEEoIQcLIAEgASgCAEEBajYCACADIAMoAgBBf2oiATYCAAJAIAENACACQcQAakEIahCJFAsCQAJAIAdBKEcNAEEAIQEMAQsgAkHQAGpBGGogAkEIaikDADcDACACQdAAakEgaiACQRBqKQMANwMAIAJB0ABqQShqIAJBGGopAwA3AwAgAkHQAGpBMGogAkEgaikDADcDACACQdAAakE4aiACQShqKQMANwMAIAJBkAFqIAJBMGopAwA3AwAgAkGYAWogAkE4aikDADcDACACIAU2AlwgAiAGNgJYIAIgBDYCVCACIAc2AlAgAiACKQMANwNgQQEhASACQdAAahDwDCEECyAAIAE2AgggACAEQQAgARs2AgQgAEEAIAQgARs2AgAgAkGgAWokAA8LEMkZCwALEMoZAAuHBQIIfwF+IwBB4ABrIgIkACACQQxqIQMgASgCRCEEIAEoAkAhBQJAAkADQCACQQhqIAEgBSAEEPgDIAIoAghBAUYNASACKAIUIQYgAigCECEHAkAgAigCDCIIQQNGDQAgBkUNAQsLQQMhBAJAAkAgCEEDRg0AIAEgASgCUCAGazYCUCABQcgAakIAELEWIAAgBjYCCCAAIAc2AgQgACAINgIADAELAkAgAUHYAGoQnAoiBkUNACABQgA3AwAgAkEIakEYakIANwMAIAJBCGpBIGpCADcDACACQQhqQShqQgA3AwAgAkEIakEwakEANgIAIAYoAhwiBCgCDCEIIAQoAhAhBCAGKQMAIQogBigCECEGIAEgAikDCDcDCCABQRBqIAJBEGopAwA3AwAgAUEYaiACQQhqQRBqKQMANwMAIAFBIGpCADcDACABQShqQgA3AwAgAUEwakIANwMAIAFBOGpBADYCACABIAY2AlAgASAKNwNIIAEgBDYCRCABIAg2AkAgAUHIAGohAyAC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ACACQTRqIAIoAiggAigCLBDGEzYCBAwBCwJAIAFB/QBGDQAgAkERNgI0IAJBEGogCRDaEiAAIAJBNGogAigCECACKAIUEMYTNgIEDAELIAJBFTYCNCACQSBqIAkQ2hIgACACQTRqIAIoAiAgAigCJBDGEzYCBAtBASEGCyAAIAY6AAAgAkHAAGokAAuQBQIIfwF+IwBBIGsiAiQAAkACQAJAAkAgASgCnAEiAyABKAKgAU8NAAJAAkACQCABKAJYIgRBA0YNACABKAJoIgVFDQAgASAFQX9qNgJoIARBAkYNAiAEQQFxRQ0BDAQLIAJBCGogARCqByABQdgAaiIDQRBqIAJBCGpBEGopAwA3AwAgA0EIaiACQQhqQQhqKQMANwMAIAMgAikDCDcDACABKAJYIgRBA0YNAiABKAJoIgNFDQIgASADQX9qNgJoIAEoApwBIQMgBEECRg0BIARBAXENAwsgASADQQFqNgKcASABKAJcIgYpAwAhCkEAIQcMAwsgASADQQFqNgKcAQsgAEEKNgIMIABBxdbCADYCCCAAQouAgICogICAgH83AwAMAgtBASEHIAEgA0EBajYCnAEgASkDYCEKCwJAAkACQAJAIApCBIinIgUNAEEAIQRBASEIDAELIAEoAtABIQNBACEEIAFBADYC0AECQAJAIANFDQAgASgC1AEhCAwBC0EAIQggAUGoAWoQnAoiAw0AQQEhBAwCCyAIIAVqIgkgAygCEEsNASACIAMgCCAJQdyBwgAQ2RIgAigCBCEEIAIoAgAhCCABIAk2AtQBIAEgASgC2AEgBWo2AtgBIAFBACADIAkgAygCEEYbNgLQASAIRQ0BCwJAIAcNACAGKQMAIQoLIAJBCGogCiAIIAQQ+wQgAi0ADCEBIAIoAggiA0GLgICAeEcNASAAIAE6AAggAEKLgICAyICAgIB/NwMADAILIAAgBDoACCAAQouAgIC4gICAgH83AwAMAQsgACACKQANNwAFIABBDGogAkEIakEMaigAADYAACAAIAE6AAQgACADNgIACyACQSBqJAAL6QQCBX8BfiMAQYABayICJAACQAJAIAEtAOgGQQNHDQAgAUHwBmohAwJAIAEtALwHQQJHDQAgAkEIaiADKAIAEKgGIAIoAgwhBEEBIQUMAgsCQAJAIAEoAuAHIgQNACACQcgAaiAD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AToACCADIAQ2AgggBCAEKAIAIghBf2o2AgACQCAIQQFHDQAgA0EIahCVEgsgACEIIAANAAsLIANBIGokAA8LIANBADYCCEEAIANBBGpBiNzGACADQQhqQZzcxgAQqBQAC0GM3MYAENoYAAsCQCADLQAQDQADQBCCESADLQAQRQ0ACwsgAygCCCIIRQ0BIAggCCgCACIEQX9qNgIAIARBAUcNAQsgA0EIahCVEgsgACgCACEEDAALC9kEAQh/IwBBEGsiAyQAIAMgATYCBCADIAA2AgAgA0KggICADjcCCAJAAkACQAJAAkAgAigCECIERQ0AIAIoAhQiAQ0BDAILIAIoAgwiAEUNASACKAIIIgEgAEEDdGohBSAAQX9qQf////8BcUEBaiEGIAIoAgAhAANAAkAgAEEEaigCACIHRQ0AIAMoAgAgACgCACAHIAMoAgQoAgwREABFDQBBASEBDAULAkAgASgCACADIAFBBGooAgARCwBFDQBBASEBDAULIABBCGohACABQQhqIgEgBUYNAwwACwsgAUEYbCEIIAFBf2pB/////wFxQQFqIQYgAigCCCEJIAIoAgAhAEEAIQcDQAJAIABBBGooAgAiAUUNACADKAIAIAAoAgAgASADKAIEKAIMERAARQ0AQQEhAQwEC0EAIQVBACEKAkACQAJAIAQgB2oiAUEIai8BAA4DAAECAAsgAUEKai8BACEKDAELIAkgAUEMaigCAEEDdGovAQQhCgsCQAJAAkAgAS8BAA4DAAECAAsgAUECai8BACEFDAELIAkgAUEEaigCAEEDdGovAQQhBQsgAyAFOwEOIAMgCjsBDCADIAFBFGooAgA2AggCQCAJIAFBEGooAgBBA3RqIgEoAgAgAyABKAIEEQsARQ0AQQEhAQwECyAAQQhqIQAgCCAHQRhqIgdGDQIMAAsLQQAhBgsCQCAGIAIoAgRPDQAgAygCACACKAIAIAZBA3RqIgEoAgAgASgCBCADKAIEKAIMERAARQ0AQQEhAQwBC0EAIQELIANBEGokACABC7gEAQx/IAFBf2ohAyAAKAIEIQQgACgCACEFIAAoAgghBkEAIQdBACEIQQAhCUEAIQoCQANAIApBAXENAQJAAkAgAiAJSQ0AA0AgASAJaiEKAkACQAJAAkAgAiAJayILQQdLDQAgAiAJRw0BIAIhCQwF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IAMoAgAiACADKAIEIgQgB6ciBXEiAmopAABCgIGChIiQoMCAf4MiB0IAUg0AQQghBgNAIAIgBmohAiAGQQhqIQYgACACIARxIgJqKQAAQoCBgoSIkKDAgH+DIgdQDQALCwJAIAAgB3qnQQN2IAJqIARxIgJqLAAAIgZBAEgNACAAIAApAwBCgIGChIiQoMCAf4N6p0EDdiICai0AACEGCyAAIAJqIAVBGXYiBToAACAAIAJBeGogBHFqQQhqIAU6AAAgAyADKAIIIAZBAXFrNgIIIAMgAygCDEEBajYCDCAAQQAgAmtBOGxqIgBBSGoiAyABKQMINwMAIANBCGogAUEIakEIaikDADcDACADQRBqIAFBCGpBEGopAwA3AwAgA0EYaiABQQhqQRhqKQMANwMAIANBIGogAUEIakEgaikDADcDACAAQXhqIAg3AwAgAEFwaiAJNwMADAELIAAoAgAhAAsgAUEwaiQAIABBYGoLxwQCBn8DfiMAQTBrIgEkAAJAAkAgAC8BCEECRg0AIABBCGohAiAAKAIcIQMgACkDACEHAkACQEEAKALwvUdBAUcNAEEAKQOAvkchCEEAKQP4vUchCQwBCyABQQhqEOkSQQBCATcD8L1HQQAgASkDECIINwOAvkcgASkDCCEJC0EAIAlCAXw3A/i9RyABQShqQQApA+jIQTcDACABQQhqQRBqIAJBEGooAgA2AgAgAUEIakEIaiACQQhqKQMANwMAIAFBACkD4MhBNwMgIAEgAikDADcDCAJAIAMoAgAiACADKAIEIgQgB6ciBXEiAmopAABCgIGChIiQoMCAf4MiB0IAUg0AQQghBgNAIAIgBmohAiAGQQhqIQYgACACIARxIgJqKQAAQoCBgoSIkKDAgH+DIgdQDQALCwJAIAAgB3qnQQN2IAJqIARxIgJqLAAAIgZBAEgNACAAIAApAwBCgIGChIiQoMCAf4N6p0EDdiICai0AACEGCyAAIAJqIAVBGXYiBToAACAAIAJBeGogBHFqQQhqIAU6AAAgAyADKAIIIAZBAXFrNgIIIAMgAygCDEEBajYCDCAAQQAgAmtBOGxqIgBBSGoiAyABKQMINwMAIANBCGogAUEIakEIaikDADcDACADQRBqIAFBCGpBEGopAwA3AwAgA0EYaiABQQhqQRhqKQMANwMAIANBIGogAUEI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BEEIaikDADcDACACQQhqQRBqIARBEGopAwA3AwAgAiAEKQMANwMIIAIpAzAhDiACKQNQIQ0gAikDWCEMIAIoAmAhCiACKAJkIQkgAikDaCELIAcoAgAhAQsgBCACKQMINwMAIARBEGogAkEIakEQaikDADcDACAEQQhqIAJBCGpBCGopAwA3AwAgAiALNwNoIAIgCTYCZCACIAo2AmAgAiAMNwNYIAIgDTcDUCACIA43AzAgAkEIaiACQTBqIAEoAgwgASgCEBD9DiAIRQ0DIAItAAhBA0cNBCACIAApAwAiDDcDICACIA03AyggDCANUg0FIAAgCTYCGCAAIAo2AhQgAEEgaiIBIQAgASADRw0ACwsgAkGAAWokAA8LQfSQwgAQ+xkAC0GcnMIAQR9BvJzCABDOEwALQdybwgBBIEH8m8IAEM4TAAsgAkEANgIwQQAgAkEgaiACQShqIAJBMGpBjJzCABCTFAALygQCCX8EfiMAQYABayICJAACQAJAAkACQAJAIAFFDQAgACABQQV0aiEDIAJBMGpBCGohBCACQTBqQSBqIgVBGGohBgNAIABBHGoiBygCACEBAkACQCAAKAIQIggNACALQoCAgIBwgyELQgAhDEEAIQlBACEKQgAhDUIAIQ4MAQsgBUIANwMAIAVBCGpCADcDACAFQRBqQgA3AwAgBkEANgIAIAJCADcDMANAIAJB8ABqIAJBMGogASgCDCABKAIQELcDIAIoAnBBBEYNBCACKAJYIAhJDQALIAJBCGpBCGogBEEIaikDADcDACACQQhqQRBqIARBEGopAwA3AwAgAiAEKQMANwMIIAIpAzAhDiACKQNQIQ0gAikDWCEMIAIoAmAhCiACKAJkIQkgAikDaCELIAcoAgAhAQsgBCACKQMINwMAIARBEGogAkEIakEQaikDADcDACAEQQhqIAJBCGpBCGopAwA3AwAgAiALNwNoIAIgCTYCZCACIAo2AmAgAiAMNwNYIAIgDTcDUCACIA43AzAgAkEIaiACQTBqIAEoAgwgASgCEBC3AyAIRQ0DIAIoAghBBEcNBCACIAApAwAiDDcDICACIA03AyggDCANUg0FIAAgCTYCGCAAIAo2AhQgAEEgaiIBIQAgASADRw0ACwsgAkGAAWokAA8LQfSQwgAQ+xkAC0GcnMIAQR9BvJzCABDOEwAL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ACABKAIMIQQgAUEANgIMIAEpAxAhCiABQQA2AhQgBK1CIIYgASgCCCIFrYQhCyABKAIEIQYCQAJAAkACQAJAIAMOBgQEAQIDAAQLIAEgCyAGELoLDAMLAkAgASgCGCABKAIgIgNHDQAgAUEYaiADQQFBAUEBEIcMIAEoAiAhAwsgASADQQFqIgQ2AiBBACEFIAEoAhwiByADakEAOgAAIAEgASgCJEEBajYCJCAGrSELIAFBGGohCANAIAunQf8AcSALQv8AViIGQQd0ciEJAkACQCABKAIYIARGDQAgBCEDDAELIAggBEEBQQFBARCHDCABKAIcIQcgASgCICEDCyALQgeIIQsgASADQQFqIgQ2AiAgByADaiAJOgAAIAVBAWohBSAGDQALIAEgASgCJCAFajYCJAwCCyACIAs3AhggAiAGNgIUAkAgBCAGRw0AIAJBFGpB8LPCABDNDiACKAIYIQULIAUgBEEDdGogCjcDACACIARBAWo2AhwgASACQRRqEOMJDAELELEaAkBBCEEIEPsXIgRFDQAgBCALNwMAIAJBATYCECACIAQ2AgwgAkEBNgIIIAEgAkEIahDjCQwBC0EIQQgQ2BkACyAAIAEpAhg3AgAgAEEIaiABQSBqKQIANwIAAkAgASgCAEEDRw0AIAEoAgQiBEUNACABKAIIIARBA3RBCBC+GAsgAkEgaiQAC68EAgh/An4jAEEgayICJAAgASgCACEDIAFBADYCACABKAIMIQQgAUEANgIMIAEpAxAhCiABQQA2AhQgBK1CIIYgASgCCCIFrYQhCyABKAIEIQYCQAJAAkACQAJAIAMOBgQEAQIDAAQLIAEgCyAGEMILDAMLAkAgASgCGCABKAIgIgNHDQAgAUEYaiADQQFBAUEBEIcMIAEoAiAhAwsgASADQQFqIgQ2AiBBACEFIAEoAhwiByADakEAOgAAIAEgASgCJEEBajYCJCAGrSELIAFBGGohCANAIAunQf8AcSALQv8AViIGQQd0ciEJAkACQCABKAIYIARGDQAgBCEDDAELIAggBEEBQQFBARCHDCABKAIcIQcgASgCICEDCyALQgeIIQsgASADQQFqIgQ2AiAgByADaiAJOgAAIAVBAWohBSAGDQALIAEgASgCJCAFajYCJAwCCyACIAs3AhggAiAGNgIUAkAgBCAGRw0AIAJB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aiAAKAIMIAAoAggbKAIAIAFBDGogASgCDCABKAIIGygCAEYhBQwEC0EAIQUgACkDCCABKQMIUg0DIAAtABAgAS0AEEYhBQwDCyAAKQMIIAEpAwhRIQUMAgtBASEFIARBAUsNASACIARHDQACQCACQQFxRQ0AIAAoAhwiBSABKAIcRw0BIAAoAhggASgCGCAFEIQTDQEgACgCBCABKAIERw0BIAAoAgggASgCCEcNAUEAIQUgACkDECABKQMQUg0CIAAtAAEiBEECRiIAIAEtAAEiAkECRiIBcSEFIAANAiABDQIgAiAEc0EBcyEFDAILIABBCGogACgCCCAAKAIEGygCACABQQhqIAEoAgggASgCBBsoAgBGIQUMAQtBACEFCyAFQQFxC4YEAQR/AkACQCAALQAAIgJBf2pBACACQX5qQf8BcUEHSRsiA0EAIAEtAAAiBEF/aiAEQQJJG0cNAEEBIQUCQAJAAkACQAJAAkACQCADDggGBQQDAgEACAYLIAApAxAgASkDEFINBiAAKAIYIAEoAhhHDQZBACEFIAApAwggASkDCFINByAAKAIcIAEoAhxGIQUMBwtBACEFIAAoAgwiBCABKAIMRw0GIAAoAgggASgCCCAEEIQTRSEFDAYLIAApAwggASkDCFEhBQwFC0EAIQUgACkDECABKQMQUg0EIABBCWogACgCDCAALQAIGy0AACABQQlqIAEoAgwgAS0ACBstAABGIQUMBAtBACEFIAApAwggASkDCFINAyAALQAQIAEtABBGIQUMAwsgACkDCCABKQMIUSEFDAILQQEhBSAEQQFLDQEgAiAERw0AAkAgAkEBcUUNACAAKAIcIgUgASgCHEcNASAAKAIYIAEoAhggBRCEEw0BIAAoAgQgASgCBEcNASAAKAIIIAEoAghHDQFBACEFIAApAxAgASkDEFINAiAALQABIgRBAkYiACABLQABIgJBAkYiAXEhBSAADQIgAQ0CIAIgBHNBAXMhBQwCCyAAQQVqIAAoAgggAC0ABBstAAAgAUEFaiABKAIIIAEtAAQbLQAARiEFDAELQQAhBQsgBUEBcQvjAwICfwR+IwBB0ABrIgMkACADQcAAakIANwMAIANCADcDOCADIAE3AzAgAyABQvPK0cunjNmy9ACFNwMgIAMgAULt3pHzlszct+QAhTcDGCADIAA3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HCACQcIBrUIghiACQQxqrYQ3AyggAiACQShqNgIYIAEoAgAgASgCBCACQRBqEKMHIQAMAwsgAiAAQQRqNgIMIAJBATYCFCACQczbwwA2AhAgAkIBNwIcIAJBiwKtQiCGIAJBDGqthDcDKCACIAJBKGo2AhggASgCACABKAIEIAJBEGoQowchAAwCCyABQdTbwwBBHRClFyEADAELIAFBgbXDAEENEKUXIQALIAJBMGokACAAC/4DAQd/IwBBEGsiAiQAIAJBBGogARDGFQJAAkAgACgCACIBRQ0AIAAoAggiA0UNACAAKAIEIQRBACEFA0ACQAJAIAVFDQAgBCEGIAEhByAFIQEMAQtBACEGAkAgBEUNACAEIQACQCAEQQdxIghFDQADQCAAQX9qIQAgASgC6AIhASAIQX9qIggNAAsLIARBCEkNAANAIAEoAugCKALoAigC6AIoAugCKALoAigC6AIoAugCKALoAiEBIABBeGoiAA0ACwtBACEHCwJAAkAgBiABLwHmAk8NACABIQAMAQsDQCABKALgAiIARQ0EIAdBAWohByABLwHkAiEGIAAhASAGIAAvAeYCTw0ACwsgBkEBaiEEAkACQCAHDQAgACEFDAELIAAgBEECdGpB6AJqIQECQAJAIAdBB3EiBA0AIAchCAwBCyAHIQgDQCAIQX9qIQggASgCACIFQegCaiEBIARBf2oiBA0ACwsCQCAHQQhJDQADQCABKAIAKALoAigC6AIoAugCKALoAigC6AIoAugCKALoAiIFQegCaiEBIAhBeGoiCA0ACwtBACEEIABFDQILIAIgACAGQQV0ajYCDCACQQRqIAJBDGpB3OXBABD0DBpBACEBIANBf2oiAw0ACwsgAkEEahDyFCEBIAJBEGokACABDwtBqPfBABDaGAAL7wMCBn8DfiMAQTBrIgIkACAAKAIAIQMgAEECNgIAIAAoAgwhBCAAKAIIIQUgACgCBCEGAkACQAJAAkAgA0F+aiIHQQMgB0EDSRsOBAMAAQIDCwJAIAZBAkYNACACIAU2AhggAiAGNgIUIAJBADoAECABIAJBEGpBAUEBEK8HDAMLQgEQwxMhCCACQQU6ABAgAkIBNwMYIAEgAkEQakEBIAinQQFqEJgHDAILIAStIQgCQCAGQQJGDQAgBSEAAkAgBkEBcQ0AIAUoAgAhAAsg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A0ACQCAGIANBACAOeqdBA3YgCWogBHFrQShsaiILQWBqKAIARw0AIAogC0FcaigCACAGEIQTRQ0ECyAOQn98IA6DIg5QRQ0ACwsCQCARIBFCAYaDQoCBgoSIkKDAgH+DUA0AQQAPCyAJIAdBCGoiB2ogBHEhCQwACwsgDyEOIAggC0FoahCRDA0ACwsgBQvKBAIDfwF+IwBBIGsiAiQAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAEtAABBZmoiA0EBIANB/wFxQQpJG0H/AXEOCgABBwgCCQMEBQYACyAAIAEoAgggASgCDBCIGjYCBCAAQQQ6AAAMCgsgAkEANgIIIAJCgICAgBA3AgAgAkGY6MAANgIQIAJCoICAgA43AhQgAiACNgIMIAEgAkEMahDYEg0IIAIoAgAhASACKAIEIgQgAigCCBCSFyEDAkAgAUUNACAEIAFBARC+GAsgACADNgIEIABBBToAAAwJCyAAIAErAwgQpxc2AgQgAEEIOgAADAgLIAIgASkDCLkQpxciATYCDCAAIAJBDGoQgRo2AgQgAEEKOgAAIAFBhAhJDQcgARCvEQwHCyAAQQs6AAAgAEGCCEGDCCABLQABGzYCBAwGCyABLQAQIQMgACABKAIIIAEoAgwQiBo2AgQgACADOgABIABBDToAAAwFCyAAQYEINgIEIABBDDoAAAwECwJAIAEpAwgiBUL/////////D3xC/v///////x9UDQAgACAFEKgXNgIEIABBBjoAAAwECyAAIAW5EKcXNgIEIABBBjoAAAwDCyAAIAEpAwgQqRc2AgQgAEEHOgAADAILAkAgASkDECIFQv////////8PfEL+////////H1QNACAAIAUQqBc2AgQgAEEJOgAADAILIAAgBbkQpxc2AgQgAEEJOgAADAELQcDowABBNyACQR9qQbDowABB+OjAABD4EAALIAJBIGokAAv3AwIKfwZ+AkAgACgCDCICIAEoAgxGDQBBAA8LAkAgAg0AQQEPCyABKAIAIQMgASgCBCEEIAEpAxghDCABKQMQIQ0gACgCACIAQQhqIQEgACkDAEJ/hUKAgYKEiJCgwIB/gyEOAkADQCACRSEFIAJFDQECQCAOQgBSDQADQCAAQcB9aiEAIAEpAwAhDiABQQhqIgYhASAOQoCBgoSIkKDAgH+DIg5CgIGC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EKUXIQAMBgsgAUHDpcEAQRsQpRchAAwFCyABQd6lwQBBGxClFyEADAQLIAFB+aXBAEEgEKUXIQAMAwsgAiAAQQRqNgIAIAIgAEEQajYCBCACQQI2AgwgAkGoncEANgIIIAJCAjcCFCACQQ6tQiCGIAJBBGqthDcDKCACQQutQiCGIAKthDcDICACIAJBIGo2AhAgASgCACABKAIEIAJBCGoQowchAAwCCyACIABBBGo2AgAgAiAAQQhqNgIEIAJBAjYCDCACQeSdwQA2AgggAkICNwIUIAJBDq1CIIYiAyACQQRqrYQ3AyggAiADIAKthDcDICACIAJBIGo2AhAgASgCACABKAIEIAJBCGoQowchAAwBCyAAQQhqIAEQsQIhAAsgAkEwaiQAIAALngQBAX8jAEEwayICJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAtAAAODQABAgMEBQYHCAkKCwwACyABQejCwwBBFBClFyEADAwLIAFB/MLDAEEjEKUXIQAMCwsgAUGfw8MAQR8QpRchAAwKCyACIABBBGo2AgwgAkEBNgIUIAJB1MPDADYCECACQgE3AhwgAkHFAa1CIIYgAkEMaq2ENwMoIAIgAkEoajYCGCABKAIAIAEoAgQgAkEQahCjByEADAkLIAIgAEEBajYCDCACQQE2AhQgAkH0w8MANgIQIAJCATcCHCACQbMBrUIghiACQQxqrYQ3AyggAiACQShqNgIYIAEoAgAgASgCBCACQRBqEKMHIQAMCAsgAUH8w8MAQRUQpRchAAwHCyABQZHEwwBBERClFyEADAYLIABBBGogARCQEiEADAULAkACQAJAIAAtAAEOAwABAgALIAFB8OXDAEEtEKUXIQAMBgsgAUGd5sMAQR0QpRchAAwFCyABQbrmwwBBMhClFyEADAQLIABBBGogARDECSEADAMLIABBBGogARDaCyEADAILIABBBGogARDbCSEADAELIAIgAEEEajYCDCACQQE2AhQgAkGEqcMANgIQIAJCATcCHCACQcUBrUIghiACQQxqrYQ3AyggAiACQShqNgIYIAEoAgAgASgCBCACQRBqEKMHIQALIAJBMGokACAAC9sDAQd/IwBBIGsiBSQAQQEhBiABIAEoAhQiB0EBaiIINgIUIAFBDGohCQJAIAggASgCECIKTw0A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GGogAkEYaikDADcDACADQQhqQSBqIAJBIGopAwA3AwAgA0EIakEoaiACQShqKQMANwMAIANBCGpBMGogAkEwaikDADcDACADIAIpAwA3AwgCQCAAQX9qIgBBOGwiBEUNACACIAJBOGogBPwKAAALIAEgADYCMAJAIAEoAihBgICAgHhGDQAgARCUDwsgASADKQMINwMAIAFBMGogA0EIakEwaikDADcDACABQShqIANBCGpBKGopAwA3AwAgAUEgaiADQQhqQSBqKQMANwMAIAFBGGogA0EIakEYaikDADcDACABQRBqIANBCGpBEGopAwA3AwAgAUEIaiADQQhqQQhqKQMANwMACyADQcAAaiQADwsgA0EANgIYIANBATYCDCADQdyDwgA2AgggA0IENwIQIANBCGpB5IPCABCiFQALzgMBA38gAS0AACICQWZqIQMCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCAEH/////B2oiBEEIIARBCkkbDgoAAQIDBAUGBwgJAAtBACEEIAMNCSAAKAIMIAEoAgwiA0cNCSAAKAIIIAEoAgggAxCEE0UPCyADQQlLDQlBAA8LIANBAkYNCUEADwsgA0EDRg0JQQAPCyADQQRGDQlBAA8LIANBBUYNCUEADwsgA0EGRg0JQQAPCyADQQdGDQlBAA8LQQAhBCADQQhHDQEgAC0ADCABLQAQRw0BIAAoAggiAyABKAIMRw0BIAAoAgQgASgCCCADEIQTRQ8LIANBCUYhBAsgBA8LIAAoAgwhAwJAAkACQAJAIAJBaWpBACACQR5xQRhGGw4DAAECAAsgAUEBaiEEDAILIAEoAgghAiABKAIEIQQMAQsgASgCBEEIaiEEIAEoAgghAgsCQCADIAJGDQBBAA8LIAAoAgggBCADEIQTRQ8LIAApAwggASkDCFEPCyAAKQMIIAEpAwhRDwsgACsDCCABKwMIYQ8LIAApAwggASkDEFEPCyAAKQMIIAEpAwhRDwsgAC0ABCABLQABRgufAwEKfyACQf//A3EhBSABQf//A3EhBgJAIAQgBEGwK3AiB2siCEGwK0kNACAIIQkgAyEKA0AgCkGwK2ohC0EAIQEDQCAGIAogAWoiAi0AAGoiDCACQQFqLQAAaiINIAJBAmotAABqIg4gAkEDai0AAGoi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KQL8ATcC/AEgACABKQPYATcD2AEgACABKQPwATcD8AEgAEGMAmogAUGMAmooAgA2AgAgAEGEAmogAUGEAmopAgA3AgAgAEHgAWogAUHgAWooAgA2AgAgAEH4AWogAUH4AWooAgA2AgAgASkDQCEGIAEpAzAhByABKQM4IQgCQEH0AEUNACAAQdgAaiABQdgAakH0APwKAAALIAAgAjYC7AEgACAFNgLoASAAIAQ2AuQBIAAgASkDADcDACAAQQhqIAFBCGopAwA3AwAgAEEQaiABQRBqKQMANwMAIABBGGogAUEYaikDADcDACAAQSBqIAFBIGopAwA3AwAgAEEoaiABQShqKQMANwMAIAEpA0ghCSABKQNQIQogASgCkAIhAiAAIAg3AzggACACNgKQAiAAIAo3A1AgACAJNwNIIAAgBzcDMCAAIAY3A0AgAEHUAWogAUHUAWooAgA2AgAgACABKQLMATcCzAEPCyAEIAJBgJnCABDmFgAL2wMCBX8BfiMAQTBrIgIkAAJAAkACQAJAAkACQCAAKAIEIgMOAwEEAgALQQEhBCABQczfxgBBBxClFw0EIAIgACgCACIANgIUIAJBAjYCHCACQZzfxgA2AhggAkIBNwIkIAJB8gWtQiCGIAJBFGqthCIHNwMAIAIgAjYCICABKAIAIAEoAgQgAkEYahCjBw0EIANBAUcNAkEAIQQMBAsQjRoACyACQQM2AhwgAkG038YANgIYIAJCAjcCJCACQfMFrUIghiIHIAAoAgAiAK2ENwMAIAIgByAAQQhqrYQ3AwggAiACNgIgIAEoAgAgASgCBCACQRhqEKMHIQQMAgsgAEEIaiIFIANBAUdBA3QiAGohBiADQQN0IABrIQMDQCAGIQAgAiAFNgIUIAFB09/GAEECEKUXDQIgAkECNgIcIAJBnN/GADYCGCACQgE3AiQgAiAHNwMAIAIgAjYCICABKAIAIAEoAgQgAkEYahCjBw0CIABBCGohBiAAIQUgA0F4aiIDDQALQQAhBAwBCyACQQI2AhwgAkGc38YANgIYIAJCATcCJCACQfMFrUIghiAANQIAhDcDACACIAI2AiAgASgCACABKAIEIAJBGGoQowchBAsgAkEwaiQAIAQL5QMCBn8BfgJAAkACQCABKAIYIgJFDQACQAJAIAEpAwAiCFANACABKAIQIQMM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AkUNACABIAkgAvwKAAALIAAgBDYCFCAAIAE2AhAgACAFNgIMIAAgAzYCCCAAIAY2AgQgACAHNgIADwsCQCABKAIEQYCAgIB4Rg0AIAEoAgwiBEECdCEDQQAhBiAEQf////8DSw0DIANB/P///wdLDQMgASgCCCEHAkACQCADDQBBBCEBQQAhAgwBCxCxGkEEIQYgBCECIANBBBD7FyIBRQ0ECwJAIANFDQAgASAHIAP8CgAACyAErUIghiABrYQhCgsgACAKNwIIIAAgAjYCBCAAQYCAgIB4NgIADwsgBCACQYCZwgAQ5hYACyAIIAJBgJnCABDmFgALIAYgA0GAmcIAEOYWAAvGAwEEfyMAQbABayIDJAAgA0HgAGogASACEI0BIANByABqIgIgA0HgAGpBDGooAgA2AgAgAyADKQJkNwNAAkACQCADKAJgIgRBB0cNACAAIAMpA0A3AgQgAEEqNgIAIABBDGogAigCADYCAAwBCyADQThqIANB4ABqQThqKQMANwMAIANBMGogA0HgAGpBMGopAwA3AwAgA0EoaiADQeAAakEoaikDADcDACADQSBqIgUgA0HgAGpBIGopAwA3AwAgA0EYaiIGIANB4ABqQRhqKQMANwMAIANBDGogAigCADYCACADIAMpA3A3AxAgAyADKQNANwIEIAMgBDYCAAJAAkAgBEEFRw0AIANBwABqQRhqIAUpAwA3AwAgA0HAAGpBEGogBikDADcDACADQcgAaiADQRBqKQMANwMAIAMgAykDCDcDQCADQeAAaiABQSBqIANBwABqENsRAkAgAygCYEEnRg0AAkBB0ABFDQAgACADQeAAakHQAPwKAAALIANBwABqEPMIIAMoAgBBBUcNAgwDCyAAQSs2AgAgA0HAAGoQ8wggAygCAEEFRg0CDAELIABBJzYCAAsgAxDjDgsgA0GwAWokAAvNAwEFfyMAQSBrIgEkACAAKAIAIgJBACACKAIAIgMgA0EBRhs2AgACQAJAAkACQAJAAkAgA0EBRw0AIAIoAgRBAUcNASACQQE2AgAMAgsgAUEIakEEQQwQsREgASgCCCEEAkACQCABKAIMIgUNACAEIQMMAQsQsRogBSAEEPsXIQMLIANFDQIgA0KBgICAEDcCAAJAAkAgAigCEA0AIAFBADYCHCABQQA2AhQMAQsgAigCCCIERQ0EIAFBFGogBCACKAIMEKgECyADQQhqIgQgASkCFDcCACAEQQhqIAFBFGpBCGooAgA2AgAgAiACKAIAIgRBf2o2AgACQCAEQQFHDQAgABDwEwsgACADNgIADAELIAFBBEEMELERIAEoAgAhBAJAAkAgASgCBCIFDQAgBCEDDAELELEaIAUgBBD7FyEDCyADRQ0DIANCgYCAgBA3AgAgACADNgIAIANBCGogAikACDcAACADQRBqIAJBEGooAAA2AAAgAkF/Rg0AIAIgAigCBCIDQX9qNgIEIANBAUcNACACQRRBBBC+GAsgACgCACECIAFBIGokACACQQhqDwsgBCAFENgZAAtB7J7CABDaGAALIAQgBRDYGQALqgQCAn8CfiMAQfANayICJAAgAkEIaiABQQAgAhCjAgJAAkBBACgC8L1HQQFHDQBBACkDgL5HIQRBACkD+L1HIQUMAQsgAkH4C2oQ6RJBAEIBNwPwvUdBACACKQOADCIENwOAvkcgAikD+AshBQsgAkGADGpBACkD6MhBNwMAIAIgBTcDiAxBACAFQgF8NwP4vUcgAkEANgK8DCACQoCAgICAATcCtAwgAkEAOgDMDCACIAQ3A5AMIAJBADYCyAwgAkKAgICAwAA3A8AMIAJBgICAgHg2AqgMIAJCADcDoAwgAkEANgKYDCACQQApA+DIQTcD+AsgAkHQDGogAkH4C2ogASgClA8gASgCmA8QzQECQCACKALQDEEnRg0AAkBB0ABFDQAgAkGgDWogAkHQDGpB0AD8CgAAC0HUx8EAQSsgAkGgDWpBsJ/CAEH4g8MAEPgQAAsgAikDCCEFIAIoAtgLIQMCQEHAC0UNACAAQRhqIAJBGGpBwAv8CgAACyAAIAIpA+gLNwL0CyAAQfwLaiACQfALaigCADYCACAAIAIpAtwLNwLoCyAAQfALaiACQeQLaigCADYCACACKQMQIQQCQEHYAEUNACAAQZAMaiACQfgLakHYAPwKAAALIAAgATYC6AwgAEEANgKIDCAAQoCAgICAATcDgAwgAEGAgICAeDYC3AsgACADNgLYCyAAIAQ3AxAgAEIANwMIIAAgBTcDACACQfANaiQAC8QDAgd/A34gASkDECABKQMYIAIQpwghCiABKAIEIgMgCqdxIQQgCkIZiEL/AINCgYKEiJCgwIABfiELIAEo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KAIkIQQCQAJAIAMoAiBBAUcNACAAIAMpAig3AwggACAENgIEIABBAzYCAAwBCyADQQhqIAFBIGpBASADKAIoIARBgICAgHhGIgUbIgZBACADKAIsIAUbEN4XIAMoAhAhAiADKAIMIQcQuBohCAJAIAJFDQAgAkEFdCEJIANBIGpBIGohCiAHIQIDQCADQSBqQRhqIAJBGGopAAA3AwAgA0EgakEQaiACQRBqKQAANwMAIANBIGpBCGogAkEIaikAADcDACADIAIpAAA3AyAgA0GE58AANgJMIAMgCjYCSCADQYCAxAA2AkAgAyADQSBqNgJEIANBFGogA0HAAGoQpAggAygCGCILIAMoAhwQkhchAQJAIAMoAhQiDEUNACALIAxBARC+GAsgCCABEN0YGgJAIAFBhAhJDQAgARCvEQsgAkEgaiECIAlBYGoiCQ0ACwtBACAEIAUbIQIgAEEGNgIAIAAgCDYCBAJAIAMoAggiAUUNACAHIAFBBXRBARC+GAsgAkUNACAGIAJBBXRBARC+GAsgA0HQAGokAAvAAwIEfwF+IwBBwABrIgIkACACIAEgASgCQCABKAJEEP0OQQMhAwJAAkAgAi0AACIEQQNGDQAgACACKAABNgABIABBBGogAkEEaigAADYAACABIAEoAlAgAigCCCIDazYCUCABQcgAakIAELEWIAAgAzYCCCAAIAQ6AAAMAQsCQCABQdgAahCcCiIERQ0AIAFCADcDACACQRhqQgA3AwAgAkEgakIANwMAIAJBKGpCADcDACACQTBqQQA2AgAgBCgCHCIFKAIMIQMgBSgCECEFIAQpAwAhBiAEKAIQIQQgASACKQMANwMIIAFBEGogAkEIaikDADcDACABQRhqIAJBEGopAwA3AwAgAUEgakIANwMAIAFBKGpCADcDACABQTBqQgA3AwAgAUE4akEANgIAIAEgBDYCUCABIAY3A0ggASAFNgJEIAEgAzYCQCACQTRqIAEgAyAFEP0OAkAgAi0ANCIDQQNGDQAgACACKAA1NgABIABBBGogAkE0akEEaigAADYAACABIAEoAlAgAigCPCIEazYCUCABQcgAakIAELEWIAAgBDYCCAwBC0EDIQMLIAAgAzoAAAsgAkHAAGokAAuWAwEHfwJAAkAgAUECSQ0AAkACQAJAIAAoAgQiAyAAKAIASSIE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QYCAgIB4Rg0AAkAgAUUNACAAKAIEIAFBAnRBBBC+GAsgAEEMahCkESAAKAIMIgFFDQAgACgCECABQRxsQQQQvhgLIABBgICAgHg2AgAMAQsgAkEIaiAAKAIQIgFBCGopAgA3AwAgAkEQaiABQRBqKQIANwMAIAJBGGogAUEYaigCADYCACACIAEpAgA3AwACQCADQX9qIgNBHGwiBEUNACABIAFBHGogBPwKAAALIAAgAzYCFAJAIAAoAgAiAUGAgICAeEYNACAAQQxqIQMCQCABRQ0AIAAoAgQgAUECdEEEEL4YCyADEKQRIAMoAgAiAUUNACAAKAIQIAFBHGxBBBC+GAsgACACKQMANwIAIABBGGogAkEYaigCADYCACAAQRBqIAJBEGopAwA3AgAgAEEIaiACQQhqKQMANwIACyACQSBqJAAPCyACQQA2AhAgAkEBNgIEIAJB3IPCADYCACACQgQ3AgggAkHU38IAEKIVAAu9AwECfyMAQTBrIgIkAAJAAkACQAJAAkACQAJAIAAoAgAiA0GBgICAeGpBACADQYWAgIB4SBsOBgABAgMEBQALIAIgADYCCCACQQE2AhQgAkH8uMMANgIQIAJCATcCHCACQc8BrUIghiACQQhqrYQ3AyggAiACQShqNgIYIAEoAgAgASgCBCACQRBqEKMHIQAMBQsgAUGEucMAQQsQpRchAAwECyABQY+5wwBBCxClFyEADAMLIAIgACkCBDcCCCACQQE2AhQgAkGsucMANgIQIAJCATcCHCACQagBrUIghiACQQhqrYQ3AyggAiACQShqNgIYIAEoAgAgASgCBCACQRBqEKMHIQAMAgsgAiAAQQRqNgIIIAJBATYCFCACQdC5wwA2AhAgAkIBNwIcIAJBhwKtQiCGIAJBCGqthDcDKCACIAJBKGo2AhggASgCACABKAIEIAJBEGoQowchAAwBCyACIABBBGo2AgggAkEBNgIUIAJB6LnDADYCECACQgE3AhwgAkGIAq1CIIYgAkEIaq2ENwMoIAIgAkEoajYCGCABKAIAIAEoAgQgAkEQahCjByEACyACQTBqJAAgAAvyAgEFf0EAIQICQCABQc3/eyAAQRAgAEEQSxsiAGtPDQAgAEEQIAFBC2pBeHEgAUELSRsiA2pBDGoQnQEiAUUNACABQXhqIQICQAJAIABBf2oi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IAEgACADKAIUEQsAIQFBAEEBOgCouUdBAEEAKAKYuUdBf2o2Api5RyABDwtBACgC0MlFIQJBACgCzMlFIQECQEEAKALIyUVBAUcNACABIAIoAghBf2pBeHFqQQhqIQELIAEgACACKAIUEQsADwtBACgC0MlFIQJBACgCzMlFIQECQEEAKALIyUVBAUcNACABIAIoAghBf2pBeHFqQQhqIQELIAEgACACKAIUEQsAIQILIAIPC0GsxcUAEIMTAAuRAwEEfyAAQcgAaiEBAkACQAJAIAAtAHhBfmoiAkEEIAJB/wFxQQZJG0H/AXFBfWoOAgEAAgsCQCABLQAAIgFBHnFBGEcNACABQWlqQQJJDQAgACgCTCIBIAEoAgAiAUF/ajYCACABQQFHDQAgAEHMAGoQnhMLIABB4ABqIQELIAEQ+A8LAkAgAC8BMCIBQQJGDQAgAUUNACAAKAI0IgFFDQAgACgCOCABQQEQvhgLAkACQCAAKAIADQAgAC0ABCIBQR5xQRhHDQEgAUFpakECSQ0BIAAoAggiASABKAIAIgFBf2o2AgAgAUEBRw0BIABBCGoQnhMMAQsgAC8BECIBQQJGDQAgAUUNACAAKAIUIgFFDQAgACgCGCABQQEQvhgLIAAoAoQBIQMCQCAAKAKIASICRQ0AIANBEGohAQNAAkAgAUF4ai8BAEUNACABQXxqKAIAIgRFDQAgASgCACAEQQEQvhgLIAFBIGohASACQX9qIgINAAsLAkAgACgCgAEiAUUNACADIAFBBXRBCBC+GAsLhgMCCH8CfiAAQShqIQIgACABQShsaiEDQQAhBCMAQSBrIgVBCGpBCGohBiAAIQEDQCACIQcCQCABKQMoIgogASkDAFQgAUE4aigCACIIIAFBEGooAgAiAkkgCCACRhtBAUcNACAGIAFBxABqKQIANwMAIAVBCGpBEGoiCSABQcwAaigCADYCACAFIAEpAjw3AwggASkDMCELIAQhAgJAA0AgACACaiIBQShqIAEpAwA3AwAgAUHIAGogAUEgaikDADcDACABQcAAaiABQRhqKQMANwMAIAFBOGogAUEQaikDADcDACABQTBqIAFBCGopAwA3AwACQCACDQAgACEBDAILIAJBWGohAiAKIAFBWGopAwBUIAggAUFoaigCACIBSSAIIAFGGw0ACyAAIAJqQShq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ASAgACAJNwMYIABBEGogA0EIakEQaikDADcDACAAQQhqIANBCGpBCGopAwA3AwAgA0EwaiQADwsgBCAFQdTZwgAQ4xEACyAFIAFBgJnCABDmFgALnQMCAX8BfiMAQTBrIgIkAAJAAkACQAJAAkACQCAAKAIADgUAAQIDBAALIAIgAEEIajYCBCACQQE2AgwgAkGMvcEANgIIIAJCATcCFCACQSytQiCGIAJBBGqthDcDICACIAJBIGo2AhAgASgCACABKAIEIAJBCGoQowchAAwECyAAQQhqIAEQsQIhAAwDCyACIABBBGo2AgAgAiAAQQhqNgIEIAJBAjYCDCACQeSdwQA2AgggAkICNwIUIAJBDq1CIIYiAyACQQRqrYQ3AyggAiADIAKthDcDICACIAJBIGo2AhAgASgCACABKAIEIAJBCGoQowchAAwCCyAAQQhqIAEQvAQhAAwBCwJAIAAoAgRBhIDEAEYNACACIABBDGo2AgAgAiAAQQRqNgIEIAJBAjYCDCACQaiawQA2AgggAkICNwIUIAJBD61CIIYgAkEEaq2ENwMoIAJBDK1CIIYgAq2ENwMgIAIgAkEgajYCECABKAIAIAEoAgQgAkEIahCjByEADAELIAFB5JnBAEEuEKUXIQALIAJBMGokACAAC50DAgF/AX4jAEEwayICJAACQAJAAkACQAJAAkAgACgCAA4FAAECAwQACyACIABBCGo2AgQgAkEBNgIMIAJBjL3BADYCCCACQgE3AhQgAkEsrUIghiACQQRqrYQ3AyAgAiACQSBqNgIQIAEoAgAgASgCBCACQQhqEKMHIQAMBAsCQCAAKAIEQYSAxABGDQAgAiAAQQxqNgIAIAIgAEEEajYCBCACQQI2AgwgAkGomsEANgIIIAJCAjcCFCACQQ+tQiCGIAJBBGqthDcDKCACQQytQiCGIAKthDcDICACIAJBIGo2AhAgASgCACABKAIEIAJBCGoQowchAAwECyABQeSZwQBBLhClFyEADAMLIABBCGogARC8BCEADAILIABBCGogARCxAiEADAELIAIgAEEEajYCACACIABBCGo2AgQgAkECNgIMIAJB5J3BADYCCCACQgI3AhQgAkEOrUIghiIDIAJBBGqthDcDKCACIAMgAq2ENwMgIAIgAkEgajYCECABKAIAIAEoAgQgAkEIahCj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IARBAUEBEIcMIAIoAgghAQsCQCAERQ0AIAIoAgQgAWogA0EIaiAE/AoAAAsgACAENgIEIAIgASAEajYCCCAAQQQ6AAALIANBMGokAA8LIARBIEGE48EAENgYAAuOAwEFfyMAQTBrIgMkACADQSBqQgA3AwAgA0EYakIANwMAIANBEGpCADcDACADQgA3AwggA0EoaiABIANBCGpBIBC5CQJAAkACQCADLQAoIgRBBEYNAAJAA0ACQAJAAkACQCAEQf8BcQ4EBQABAgULIAMtAClBI0cNBAwCCyADKAIsLQAIQSNGDQEMAwsgAygCLCIELQAIQSNHDQIgBCgCACEFAkAgBEEEaigCACIGKAIAIgdFDQAgBSAHEQMACwJAIAYoAgQiB0UNACAFIAcgBigCCBC+GAsgBEEMQQQQvhgLIANBKGogASADQQhqQSAQuQkgAy0AKCIEQQRHDQAMAgsLIAAgAykDKDcCAAwBCyADKAIsIgRBIU8NAQJAIAQgAigCACACKAIIIgFrTQ0AIAIgASAEQQFBARCHDCACKAIIIQELAkAgBEUNACACKAIEIAFqIANBCGogBPwKAAALIAAgBDYCBCACIAEgBGo2AgggAEEEOgAACyADQTBqJAAPCyAEQSBBhOPBABDYGAALxQMBAn8jAEEQayICJAACQAJAAkACQAJAAkACQAJAAkACQAJAIAAtAABBZmoiA0EBIANB/wFxQQpJG0H/AXEOCgABAgMEBQYHCAkACyACIABBBGo2AgwgAUGqusMAQQUgAkEMakG4rcMAELIMIQAMCQsgAiAANgIMIAFBr7rDAEEDIAJBDGpB/OTBABCyDCEADAgLIAIgAEEIajYCDCABQbK6wwBBAyACQQxqQZTrwQAQsgwhAAwHCyACIABBCGo2AgwgAUG1usMAQQQgAkEMakHw7sEAELIMIQAMBgsgAiAAQQhqNgIMIAFBzLrDAEEDIAJBDGpBvLrDABCyDCEADAULIAIgAEEIajYCDCABQc+6wwBBByACQQxqQfzvwwAQsgwhAAwECyACIABBCGo2AgwgAUHWusMAQQkgAkEMakGU68EAELIMIQAMAwsgAiAAQQFqNgIMIAFBue/CAEEHIAJBDGpBzObBABCyDCEADAILIAIgAEEEajYCDCABQfC6wwBBB0H3usMAQQkgAEEQakHgusMAQYC7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IQMgAUGsz8IANgIMIAEgBjYCCCAHIQUMAQsLIAEoAhAiBUUNAiACIAUgASgCFCIHKAIMEQoAAkAgAikDACIIQgJSDQACQCAHKAIAIgZFDQAgBSAGEQMACwJAIAcoAgQiBkUNACAFIAYgBygCCBC+GAsgAUEANgIQCyAAIAIpAwg3AwggACAINwMADAMLIAAgAikDCDcDCCAAIAg3AwAMAgtBBEEQENgZAAsgAEICNwMACyACQRBqJAALwQMBAn8jAEEQayICJAACQAJAAkACQAJAAkACQAJAAkACQAJAIAAoAgBB/////wdqIgNBCCADQQpJGw4KAAECAwQFBgcICQALIAIgAEEEajYCDCABQaq6wwBBBSACQQxqQcSXwgAQsgwhAAwJCyACIABBBGo2AgwgAUGvusMAQQMgAkEMakH0/MEAELIMIQAMCAsgAiAAQQhqNgIMIAFBsrrDAEEDIAJBDGpBlOvBABCyDCEADAcLIAIgAEEIajYCDCABQbW6wwBBBCACQQxqQfDuwQAQsgwhAAwGCyACIABBCGo2AgwgAUHMusMAQQMgAkEMakG8usMAELIMIQAMBQsgAiAAQQhqNgIMIAFBz7rDAEEHIAJBDGpBlOvBABCyDCEADAQLIAIgAEEIajYCDCABQda6wwBBCSACQQxqQZTrwQAQsgwhAAwDCyACIABBBGo2AgwgAUG578IAQQcgAkEMakHM5sEAELIMIQAMAgsgAiAANgIMIAFB8LrDAEEHQfe6wwBBCSAAQQxqQeC6wwBBgLvDAEEFIAJBDGpBxJfCABCPDyEADAELIAFBhbvDAEEEEKUXIQALIAJBEGokACAAC6IDAgF/AX4jAEHwAGsiAiQAIAJByABqIAEQyQMCQAJAAkACQAJAIAItAEgiAUFlag4CAAECCwwCCyACQesAaiACQcgAakEMaigCACIBNgAAIAJBOGpBCGogATYCACACIAIpAkwiAzcAYyACIAM3AzggAkHIAGpBttbCAEEJIAJBOGoQowsgAiACQcgAakEIaikAADcAHyACIAIpAEk3AxggAiACKQMYNwMIIAIgAikAHzcADyACKQJYIQMgAi0ASCEBIABBDGogAikADzcAACAAIAIpAwg3AAUgACABOgAEQQEhAQwCCyACIAIpAEk3A2AgAiACQdAAaikAADcAZyACIAIpA2A3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QSBqJAAPCxDJGQsACxDKGQAL0gIBBH8CQCAAKAIIIgMgACgCAEcNACAAQfTkwgAQzA8LIAAoAgQgA2ogAToAACAAIANBAWoiAzYCCCACKAIEIQQgAigCACEFAkAgAigCCCIBIAAoAgAgA2tNDQAgACADIAFBAUEBEIcMIAAoAgghAwsCQCABRQ0AIAAoAgQgA2ogBCAB/AoAAAsgACADIAFqNgIIAkAgBUUNACAEIAVBARC+GAsgAigCFCIDQRxsIQQgAigCECEGIAIoAgwhAQJAIAMgACgCDCAAKAIUIgVrTQ0AIABBDGogBSADQQRBHBCHDCAAKAIUIQULAkAgBEUNACAAKAIQIAVBHGxqIAYgBPwKAAALIAAgBSADajYCFAJAIAFFDQAgBiABQRxsQQQQvhgLIAAgAigCGCAAKAIYakEBajYCGAJAIAAoAghBHksNAEH4isIAQSBBhOXCABDOEwALC9cCAQd/IwBBMGsiAyQAIANBDGogASACEPQHIAMoAhQhASADKAIQIQICQAJAIAMoAgwiBEGAgICAeEcNACAAIAE2AgggACACNgIEIABBAToAAAwBCwJAIAFBIEYNACAAIAE2AgggAEGCgMQANgIEIABBAToAACAERQ0BIAIgBEEBEL4YDAELIANBLGpBAmoiASACQQJqLQAAOgAAIANBIGoiBSACQRdqKQAANwMAIANBKGoiBiACQR9qLQAAOgAAIAMgAi8AADsBLCADIAIpAA83AxggAigACyEHIAIoAAchCCACKAADIQkCQCAERQ0AIAIgBEEBEL4YCyAAIAMvASw7AAEgACAHNgIMIAAgCDYCCCAAIAk2AgQgACADKQMYNwAQIABBADoAACAAQQNqIAEtAAA6AAAgAEEYaiAFKQMANwAAIABBIGogBi0AADoAAAsgA0EwaiQAC98CAQR/IwBBwABrIgEkACABQQA2AgggAUKAgICAEDcCACABQZjowAA2AhAgAUKggICADjcCFCAAKAIAIQIgASABNgIMAkACQAJAIAJBJ0YNACABIAA2AhwgAUEBNgIkIAFB2LrBADYCICABQgE3AiwgAUERrUIghiABQRxqrYQ3AzggASABQThqNgIoIAFBmOjAACABQSBqEKMHRQ0BDAILIABBBGogAUEMahDHDA0BCyABKAIAIQIgASgCBCIDIAEoAggQgxohBAJAIAJFDQAgAyACQQEQvhgLAkACQCAAKAIAQSdHDQAgACgCBCICQX1qQQJJDQEgAg0BIAAoAgghAgJAIAAoAgwiACgCACIDRQ0AIAIgAxEDAAsgACgCBCIDRQ0BIAIgAyAAKAIIEL4YDAELIAAQ7AQLIAFBwABqJAAgBA8LQcDowABBNyABQSBqQbDowABB+OjAABD4EAALyQIBCH8jAEGwAWsiBCQAQQAhBSAEQQhqIAJBACACKAI4IgYgAigCPBD3AgJAAkACQAJAIAQoApgBIgcgBCgCnAEiCE8NAANAIAQoAogBIQkgBEEDNgKIAQJAAkAgCUEDRg0AIAQpAowBQiCIpyEKIAchCwwBCyAEQaQBaiAEQQhqEO4GIAQoAqQBIglBA0YNAiAEKAKcASEIIAQoApgBIQsgBCgCrAEhCgsCQCAKIAtqIgcgCEsNACAEIAc2ApgBIAoNAyAHIAhJDQEMAgsLIAggC2siCg0BCyABQXBxQTBGDQEMAgsgCUECRw0AIAogBkcNACABQXBxQTBHDQELIAQgAiADEMcBQQAhBSAEKAIAIgcgBCgCBCIKTw0AIAAgCjYCCCAAIAc2AgQgACABQfcBcTYCDEEBIQULIAAgBTYCACAEQbABaiQAC/4CAQJ/IwBBEGsiAiQAAkACQAJAAkACQAJAAkACQAJAAkAgACgCAEGAgICAeHMiA0EBIANBCUkbDgkAAQIDBAUGBwgACyACIABBBGo2AgwgAUGM2sMAQQ4gAkEMakH82cMAELIMIQAMCAsgAiAANgIMIAFBrNrDAEEQIAJBDGpBnNrDABCyDCEADAcLIAIgAEEIajYCDCABQeSqwwBBCSACQQxqQbDIwwAQsgwhAAwGCyACIABBBGo2AgwgAUG82sMAQQcgAkEMakHwrMMAELIMIQAMBQsgAiAAQQRqNgIMIAFBw9rDAEEJIAJBDGpBkMLDABCyDCEADAQLIAIgAEEEajYCDCABQcmpwwBBDiACQQxqQbzmwQAQsgwhAAwDCyACIABBBGo2AgwgAUHM2sMAQRMgAkEMakHAmcIAELIMIQAMAgsgAUHf2sMAQQwQpRchAAwBCyACIAA2AgwgAUH2tMMAQQsgAkEMakHs2sMAELIMIQALIAJBEGokACAAC+wCAQR/IwBBMGsiAyQAQQEhBAJAIAAtAAQNAAJAAkACQCAALQAGDQAgAC0ABSEFAkAgACgCACIGLQAKQYABcQ0AQQEhBCAFQQFxRQ0CIAYoAgBBg5rHAEECIAYoAgQoAgwREABFDQIMBAtBASEEAkAgBUEBcQ0AIAYoAgBBkZrHAEEBIAYoAgQoAgwREAANBAtBASEEIABBAToAByADIABBB2o2AiwgA0HkmccANgIQIAMgBikCADcCJCADIAYpAgg3AhQgAyADQSRqNgIMIAEgA0EMaiACKAIMEQsADQMgAygCDEHQmccAQQIgAygCECgCDBEQAA0DDAILIANBADYCHCADQQE2AhAgA0HcmscANgIMIANCBDcCFCADQQxqQeSaxwAQohUACyABIAYgAigCDBELAA0BIAYoAgBB0JnHAEECIAYoAgQoAgwREAANAQsgAEEBOgAGQQAhBAsgACAEOgAEIANBMGokACAAC78CAQR/IwBBMGsiAiQAQQAhAwJAIAAtAGAgAS0AYEcNACAAKAIAQXxqIgRBAyAEQQNJGyIFIAEoAgBBfGoiBEEDIARBA0kbRw0AAkACQAJAAkACQCAFDgQDAAECAwsgAEEIaiABQQhqEJEEDQMMBAtBACEDQQAgACgCHCAAKAIEQYCAgIB4RhtBACABKAIcIAEoAgRBgICAgHhGG0cNAyACQShqQgA3AgAgAkIANwIgIAIgAUEEajYCHCACQQA2AhggAiAAQQRqNgIUA0AgAkEIaiACQRRqEMAHIAIoAggiA0UNAyADIAIoAgwQmAsNAAtBACEDDAMLIAAgARCPAUUNAiAAQSBqIAFBIGoQxwgNAQwCCyAAQQhqIAFBCGoQkQxFDQELIABBwABqIAFBwABqEMcIIQMLIAJBMGokACADC+UCAQF/IwBBkAZrIgMkACADQdgCaiACEPULAkACQCADLQDYAkEBRw0AIAAgAykC3AI3AgAMAQsgA0EIakECaiADLQDbAjoAACADQRtqIANB7AJqKQIANwAAIANBIGogA0HxAmopAAA3AAAgAyADLwDZAjsBCCADIAMpAuQCNwATIAMgAykC3AI3AAsgA0EoaiABQSBqIANBCGoQlhgCQCADKAKAAUECRg0AAkBBsAJFDQAgA0HYAmogA0EoakGwAvwKAAALIANBiAVqIANB2AJqEPUZIANBgYKACDYAjAYgAyADQYgFaiADQYwGahD3ASAD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iCEHIAEgAEEBaiIENgIIIAEoAgQgAGogAjoAACAFDQALC74CAQV/AkACQAJAAkACQCABQQFxRQ0AIAIgACgCCCIBTw0EIAAoAgQiAyACakEAOgAAIAIgACgCFCIETw0DIAAoAhAgAkEDdGpCATcCACADIAFqIQVBASEEDAELIAAoAggiAkUNASAAKAIEIgMgAmohBUEAIQQLIABBGGohBkEAIQJBBCEBA0ACQCADIAJqLQAARQ0AAkAgACgCICIHIAAoAhhHDQAgBkG4ycIAENEOCyAAKAIcIAdBAnRqIAI2AgAgACAHQQFqNgIgAkAgAiAAKAIUIgdPDQAgACgCECABaiIHIAQ2AgAgB0F8akEBNgIAIARBAWohBAwBCyACIAdByMnCABDjEQALIAFBCGohASADIAJBAWoiAmogBUcNAAsLDwsgAiAEQajJwgAQ4xEACyACIAFBmMnCABDjEQAL4AIBA38jAEEgayIEJAAQsRoCQAJAAkBBDEEEEPsXIgVFDQAQsRogAkEBEPsXIgZFDQECQCACRQ0AIAYgASAC/AoAAAsgBSACNgIIIAUgBjYCBCAFIAI2AgAgBEEANgIIIARCgICAgBA3AgAgBEHc48EANgIQIARCoICAgA43AhQgAy0AACECIAQgBDYCDAJAAkACQAJAIAJBempB/wFxIgZBAiAGQQJJGw4DAQIAAQsgAyAEQQxqENYMDQUMAgsgBEEMakH0nMMAQRoQpRdFDQEMBAsgBEEMakGOncMAQRcQpRcNAwsgACAEKQIANwIMIABBFGogBEEIaigCADYCACAAQQE2AgggACAFNgIEIABBATYCAAJAIAJBBnFBBkYNACADEKYPCyAEQSBqJAAPC0EEQQwQ2BkAC0EBIAJBgJnCABDmFgALQYTkwQBBNyAEQR9qQfTjwQBBvOTBABD4EAALzAIBB38jAEEwayICJAACQCAAKAIAQYCAgIB4Rg0AIAJBBGogACABEKABAkAgACgCCA0AAkAgACgCFCIDDQAgABCuECAAQYCAgIB4NgIADAELIAJBEGpBCGoiBCAAQRBqIgUoAgAiAUEIaikCADcDACACQRBqQRBqIgYgAUEQaikCADcDACACQRBqQRhqIgcgAUEYaigCADYCACACIAEpAgA3AxACQCADQX9qIgNBHGwiCEUNACABIAFBHGogCPwK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QZbSxQBBDhClFyEACyACQTBqJAAgAAukAgECfyMAQTBrIgIkAAJAAkACQAJAIAAoAgBBWWoiA0EBIANBA0kbDgMAAQIACyACIABBBGo2AgQgAkEBNgIMIAJBuLrBADYCCCACQgE3AhQgAkEqrUIghiACQQRqrYQ3AyAgAiACQSBqNgIQIAEoAgAgASgCBCACQQhqEKMHIQAMAgsgACABELECIQAMAQsCQCAAKAIEQYSAxABGDQAgAiAAQQxqNgIAIAIgAEEEajYCBCACQQI2AgwgAkGomsEANgIIIAJCAjcCFCACQQ+tQiCGIAJBBGqthDcDKCACQQytQiCGIAKthDcDICACIAJBIGo2AhAgASgCACABKAIEIAJBCGoQowchAAwBCyABQeSZwQBBLhClFyEACyACQTBqJAAgAAuqAgIDfwF+IwBBIGsiAyQAAkACQAJAIAFFDQAgAUF4aiIEIAQoAgBBAWoiBTYCACAFRQ0BIAEoAgANAiABQX82AgAgAyAENgIMIAMgATYCCCADIAFBBGo2AgQgA0EQaiACEJ8FIAMpAhghBiADKAIUIQUCQCADKAIQDQACQCABKAIQIgJFDQAgASgCFCACQQV0QQEQvhgLIAEgBjcCFCABIAU2AhBBhYDEACEFCyABIAEoAgBBAWo2AgAgBCAEKAIAQX9qIgE2AgACQCABDQAgA0EMahCKFAtBACEBAkAgBUGFgMQARg0AIAMgBjcCFCADIAU2AhBBASEBIANBEGoQnwwhBAsgACABNgIEIAAgBEEAIAEbNgIAIANBIGokAA8LEMkZCwALEMoZAAvFAgIBfwF+IwBBoANrIgMkACADIAI2AgwgA0GYAmogARDoBAJAAkAgAygClAMiAUGAgICAeEcNAAJAQdAARSIBDQAgA0GYAWogA0GYAmpB0AD8CgAACwJAIAENACAAIANBmAFqQdAA/AoAAAsgAkGECEkNASACEK8RDAELAkBB/ABFIgINACADQZgBaiADQZgCakH8APwKAAALIAMpA5gDIQQCQCACDQAgA0EQaiADQZgBakH8APwKAAALIAMgBDcDkAEgAyABNgKMASADQbACakEAKQOYl0E3AwAgA0GoAmpBACkDkJdBNwMAIANBoAJqQQApA4iXQTcDACADQQApA4CXQTcDmAIgACADQRBqIANBmAJqQQBBACADIANBDGoQkQEgA0EQahCoAyADKAIMIgJBhAhJDQAgAhCvEQsgA0GgA2okAAusAgIGfwN+AkAgARD4CCICDQAgAEIANwMADwsCQAJAIAEoAiQiASgCjAJFDQAgASkDkAIgASkDmAIgAhDMCCEIIAEoAoQCIgMgCKdxIQQgCEIZiEL/AINCgYKEiJCgwIABfiEJIAEoAoACIgFBXGohBUEAIQYDQAJAIAEgBGopAAAiCiAJhSIIQn+FIAhC//379+/fv/9+fINCgIGChIiQoMCAf4MiCFANAANAIAIgBUEAIAh6p0EDdiAEaiADcWsiB0EkbGpBIBCEE0UNBCAIQn98IAiDIghQRQ0ACwsgCiAKQgGGg0KAgYKEiJCgwIB/g1BFDQEgBCAGQQhqIgZqIANxIQQMAAsLQbCowgAQ2hgACyAAIAEgB0EkbGpBfGo1AgA3AwggAEIBNwMAC5sCAQR/IAAoAkAhAQJAIAAoAkQiAkUNACABQQhqIQMDQCADELsKIANB4ABqIQMgAkF/aiICDQALCwJAIAAoAjwiA0UNACABIANB4ABsQQgQvhgLAkAgACgCBCIDRQ0AIANBCWxBEWoiAkUNACAAKAIAIANBA3RrQXhqIAJBCBC+GAsgAEEgahDIBgJAIAAoAjAiA0GAgICAeEYNACADRQ0AIAAoAjQgA0EFdEEBEL4YCyAAKAJMIQQCQCAAKAJQIgJFDQAgBCEDA0ACQCADLwEARQ0AIANBBGooAgAiAUUNACADQQhqKAIAIAFBARC+GAsgA0EUaiEDIAJBf2oiAg0ACwsCQCAAKAJIIgNFDQAgBCADQRRsQQQQvhgLC4ICAQZ/AkAgA0EISQ0AIAAgACADQQN2IgNBBXQiBGogACADQThsIgVqIAMQ4AshACABIAEgBGogASAFaiADEOALIQEgAiACIARqIAIgBWogAxDgCyECCyAAKAIAIgNBBGooAgAiBiABKAIAIgRBBGooAgAiByADQQhqKAIAIgMgBEEIaigCACIEIAMgBEkbEIQTIQgCQCAGIAIoAgAiBUEEaigCACIJIAMgBUEIaigCACIFIAMgBUkbEIQTIgYgAyAFayAGGyAIIAMgBGsgCBsiA3NBAEgNACACIAEgByAJIAQgBSAEIAVJGxCEEyIAIAQgBWsgABsgA3NBAEgbIQALIAALpwICCH8CfiMAQfAAayICJAAgASgCkAEhAyACIAEpAwg3AxggAkEwaiABQSBqKQMANwMAIAJBKGogAUEYaikDADcDACACIAEpAxA3AyAgAiADIAFBKGogAkEYaiACQSBqEKAEAkAgAi0AFCIDQQJGDQAgASgCkAEiBCgCHCIFKAIQIgYgAigCDCIHTQ0AIAIoAgghCCACKQMAIQogBCgCECEJIAQpAwAhCyAFKAIMIQQgAiAGNgI8IAIgBDYCOCACIAsgCn03AzAgAiAGNgIoIAIgAzoAISACQQE6ACAgAiAHNgIkIAFBMGogAkEgaiAJIAhrIAYgB2sQiwQLAkBB0ABFDQAgAkEgaiABQTBqQdAA/AoAAAsgACACQSBqEIcDIAJB8ABqJAALrgICB38CfiMAQSBrIgEkACABIAAoAkAiAiAAKAIwIgNBBXRqIgRBACADIAAoAkQiBUkbNgIEAkAgAyAFTw0AIARBmI3CABCLCEUNACAAKAIkIQMgACkDACEIIAApAxAhCSAAKAIgIQYCQCAELQAAQQZHDQAgBCgCBCIHQYCAgIB4Rg0AIAdFDQAgBCgCCCAHQQEQvhgLIAQgBjYCHCAEIAM2AhggBCAJNwMQIAQgCDcDCCAEQQc6AAAgACAFNgIwIAAgACgCNEEBajYCNAJAIAUgACgCPEcNACAAQTxqQcyNwgAQ0A4gACgCQCECCyACIAVBBXRqQQg6AAAgACAFQQFqNgJEIAFBIGokAA8LIAFBADYCCEEAIAFBBGpBuI3CACABQQhqQbyNwgAQphQAC64CAgd/An4jAEEgayIBJAAgASAAKAJAIgIgACgCMCIDQQV0aiIEQQAgAyAAKAJEIgVJGzYCBAJAIAMgBU8NACAEQZiNwgAQjAhFDQAgACgCJCEDIAApAwAhCCAAKQMQIQkgACgCICEGAkAgBC0AAEEGRw0AIAQoAgQiB0GAgICAeEYNACAHRQ0AIAQoAgggB0EBEL4YCyAEIAY2AhwgBCADNgIYIAQgCTcDECAEIAg3AwggBEEHOgAAIAAgBTYCMCAAIAAoAjRBAWo2AjQCQCAFIAAoAjxHDQAgAEE8akHMjcIAEMcOIAAoAkAhAgsgACAFQQFqNgJEIAIgBUEFdGpBCDoAACABQSBqJAAPCyABQQA2AghBACABQQRqQbiNwgAgAUEIakG8jcIAEJIUAAuuAgIHfwJ+IwBBIGsiASQAIAEgACgCQCICIAAoAjAiA0EFdGoiBEEAIAMgACgCRCIFSRs2AgQCQCADIAVPDQAgBEGYjcIAEIsIRQ0AIAAoAiQhAyAAKQMAIQggACkDECEJIAAoAiAhBgJAIAQtAABBBkcNACAEKAIEIgdBgICAgHhGDQAgB0UNACAEKAIIIAdBARC+GAsgBCAGNgIcIAQgAzYCGCAEIAk3AxAgBCAINwMIIARBBzoAACAAIAU2AjAgACAAKAI0QQFqNgI0AkAgBSAAKAI8Rw0AIABBPGpBzI3CABDHDiAAKAJAIQILIAAgBUEBajYCRCACIAVBBXRqQQg6AAAgAUEgaiQADwsgAUEANgIIQQAgAUEEakG4jcIAIAFBCGpBvI3CABCWFAALrgICB38CfiMAQSBrIgEkACABIAAoAkAiAiAAKAIwIgNBBXRqIgRBACADIAAoAkQiBUkbNgIEAkAgAyAFTw0AIARBmI3CABCLCEUNACAAKAIkIQMgACkDACEIIAApAxAhCSAAKAIgIQYCQCAELQAAQQZHDQAgBCgCBCIHQYCAgIB4Rg0AIAdFDQAgBCgCCCAHQQEQvhgLIAQgBjYCHCAEIAM2AhggBCAJNwMQIAQgCDcDCCAEQQc6AAAgACAFNgIwIAAgACgCNEEBajYCNAJAIAUgACgCPEcNACAAQTxqQcyNwgAQxw4gACgCQCECCyAAIAVBAWo2AkQgAiAFQQV0akEIOgAAIAFBIGokAA8LIAFBADYCCEEAIAFBBGpBuI3CACABQQhqQbyNwgAQmhQAC64CAgd/An4jAEEgayIBJAAgASAAKAJAIgIgACgCMCIDQQV0aiIEQQAgAyAAKAJEIgVJGzYCBAJAIAMgBU8NACAEQZiNwgAQwgdFDQAgACgCJCEDIAApAwAhCCAAKQMQIQkgACgCICEGAkAgBC0AAEEGRw0AIAQoAgQiB0GAgICAeEYNACAHRQ0AIAQoAgggB0EBEL4YCyAEIAY2AhwgBCADNgIYIAQgCTcDECAEIAg3AwggBEEHOgAAIAAgBTYCMCAAIAAoAjRBAWo2AjQCQCAFIAAoAjxHDQAgAEE8akHMjcIAEMcOIAAoAkAhAgsgACAFQQFqNgJEIAIgBUEFdGpBCDoAACABQSBqJAAPCyABQQA2AghBACABQQRqQbiNwgAgAUEIakG8jcIAEJgUAAuuAgIHfwJ+IwBBIGsiASQAIAEgACgCQCICIAAoAjAiA0EFdGoiBEEAIAMgACgCRCIFSRs2AgQCQCADIAVPDQAgBEGYjcIAEI0IRQ0AIAAoAiQhAyAAKQMAIQggACkDECEJIAAoAiAhBgJAIAQtAABBBkcNACAEKAIEIgdBgICAgHhGDQAgB0UNACAEKAIIIAdBARC+GAsgBCAGNgIcIAQgAzYCGCAEIAk3AxAgBCAINwMIIARBBzoAACAAIAU2AjAgACAAKAI0QQFqNgI0AkAgBSAAKAI8Rw0AIABBPGpBzI3CABDHDiAAKAJAIQILIAAgBUEBajYCRCACIAVBBXRqQQg6AAAgAUEgaiQADwsgAUEANgIIQQAgAUEEakG4jcIAIAFBCGpBvI3CABCbFAALrgICB38CfiMAQSBrIgEkACABIAAoAkAiAiAAKAIwIgNBBXRqIgRBACADIAAoAkQiBUkbNgIEAkAgAyAFTw0AIARBmI3CABCOCEUNACAAKAIkIQMgACkDACEIIAApAxAhCSAAKAIgIQYCQCAELQAAQQZHDQAgBCgCBCIHQYCAgIB4Rg0AIAdFDQAgBCgCCCAHQQEQvhgLIAQgBjYCHCAEIAM2AhggBCAJNwMQIAQgCDcDCCAEQQc6AAAgACAFNgIwIAAgACgCNEEBajYCNAJAIAUgACgCPEcNACAAQTxqQcyNwgAQxw4gACgCQCECCyAAIAVBAWo2AkQgAiAFQQV0akEIOgAAIAFBIGokAA8LIAFBADYCCEEAIAFBBGpBuI3CACABQQhqQbyNwgAQnhQAC8ECAgJ/AX4jAEEQayIEJAAgAygCACEFAkACQAJAAkACQAJAAkACQAJAAkAgAUECRg0AIAVBAkYNASAFQQFxRQ0DIAMpAwgiBlBFDQQMBwsgBUECRg0BCxCxGkEYQQEQ+xciA0UNAyAAQRg2AgggACADNgIEIABBGDYCACADQRBqQQApAITVQjcAACADQQhqQQApAPzUQjcAACADQQApAPTUQjcAAAwHCyAAQQA2AgggAEKFgICACDcCAAwGCyADKAIEKQMAIgZQDQMLAkAgAUEBcQ0AIAIoAgAhAgsgBkKAgICAEFoNASAGpyEDDAMLQQFBGEGAmcIAEOYWAAtB1MfBAEErIARBD2pB1OzBAEGghcMAEPgQAAtBACEDQQAhAgsgACACNgIIIAAgAzYCBCAAQYWAgIB4NgIACyAEQRBqJAALtgICA38BfiMAQcAAayICJAACQCABKAIAQYCAgIB4Rw0AIAEoAgwhAyACQRxqQQhqIgRBADYCACACQoCAgIAQNwIcIAJBKGpBCGogAygCACIDQQhqKQIANwMAIAJBKGpBEGogA0EQaikCADcDACACIAMpAgA3AyggAkEcakHc4MYAIAJBKGoQowcaIAJBEGpBCGogBCgCACIDNgIAIAIgAikCHCIFNwMQIAFBCGogAzYCACABIAU3AgALIAEpAgAhBSABQoCAgIAQNwIAIAJBCGoiAyABQQhqIgEoAgA2AgAgAUEANgIAIAIgBTcDABCxGgJAQQxBBBD7FyIBDQBBBEEMENgZAAsgASACKQMANwIAIAFBCGogAygCADYCACAAQdTsxgA2AgQgACABNgIAIAJBwABqJAALmQIBBX8jAEEgayICJAACQAJAAkAgAEUNACAAQXhqIgMgAygCAEEBaiIENgIAIARFDQEgACgCAA0CIABBfzYCACACIAM2AhAgAiAANgIMIAIgAEEIaiIFNgIIIAFFDQAgAUF4aiIEIAQoAgBBAWoiBjYCACAGRQ0BIAEoAgANAiABQX82AgAgAiAENgIcIAIgATYCGCACIAFBCGoiBjYCFCAFIAYQ1g4hBiABIAEoAgBBAWo2AgAgBCAEKAIAQX9qIgE2AgACQCABDQAgAkEUakEIahCJFAsgACAAKAIAQQFqNgIAIAMgAygCAEF/aiIANgIAAkAgAA0AIAJBCGpBCGoQiRQLIAJBIGokACAGDwsQyRkLAAsQyhkAC9oCAQN/IABB+AJqEMUPAkAgACgC+AQiAUGLgICAeEYNAEEIIQICQAJAAkACQCABQf////8HaiIDQQggA0EKSRsOCQIABAQEBAQEAQQLIAAoAvwEIgFBgICAgHhyQYCAgIB4Rg0DDAILIAFBgICAgHhyQYCAgIB4Rg0CQQQhAgwBCyAAKAL8BCIBQYCAgIB4ckGAgICAeEYNAQsgAEH4BGogAmooAgAgAUEBEL4YCwJAIAAoAugFIgFBg4CAgHhIDQAgAUUNACAAKALsBSABQQEQvhgLIABByApqEKkNAkACQAJAIAAoAugKIgFFDQACQCABQYCAgIB4Rw0AIAAoAuwKIgFBgICAgHhyQYCAgIB4Rg0DQQghAwwCCyAAKALsCiABQQJ0QQQQvhgLIAAoAvQKIgFFDQFBECEDCyAAQegKaiADaigCACABQQJ0QQQQvhgLIABB8AlqEP8JC6ACAgR/A35BACEDAkAgACgCDEUNACAAKQMQIAApAxggASACENEIIQcgACgCBCIEIAencSEDIAdCGYhC/wCDQoGChIiQoMCAAX4hCCAAKAIAIQVBACEGAkADQAJAIAUgA2opAAAiCSAIhSIHQn+FIAdC//379+/fv/9+fINCgIGChIiQoMCAf4MiB1ANAANAAkAgAiAFQQAgB3qnQQN2IANqIARxa0HYAGxqIgBBsH9qKAIARw0AIAEgAEGsf2ooAgAgAhCEE0UNBAsgB0J/fCAHgyIHUEUNAAsLQQAhACAJIAlCAYaDQoCBgoSIkKDAgH+DUEUNASADIAZBCGoiBmogBHEhAwwACwsgAEGof2pBACAAGyEDCyADQRBqQQAgAxsLsAIBAn8CQAJAIAAoAgBB/////wdqIgJBCCACQQpJGyIDIAEoAgBB/////wdqIgJBCCACQQpJG0cNAEEBIQICQAJAAkACQAJAAkACQAJAAkAgAw4KCAcGBQQDAgEACggLIAAtAAwgAS0ADEcNCEEAIQIgACgCCCIDIAEoAghHDQkgACgCBCABKAIEIAMQhBNFDwsgAC0ABCABLQAERg8LIAApAwggASkDCFEPCyAAKQMIIAEpAwhRDwsgACsDCCABKwMIYQ8LIAApAwggASkDCFEPCyAAKQMIIAEpAwhRDwtBACECIAAoAgwiAyABKAIMRw0CIAAoAgggASgCCCADEIQTRQ8LQQAhAiAAKAIMIgMgASgCDEcNASAAKAIIIAEoAgggAxCEE0UPC0EAIQILIAILrwIBAX8jAEHAAGsiAyQAAkACQAJAAkACQAJAIAFBfmoOAgEAAgsQsRpBAUEBEPsXIgFFDQIgAEEBNgIIIAAgATYCBCAAQQE2AgAgAUEuOgAADAQLELEaQQFBARD7FyIBRQ0CIABBATYCCCAAIAE2AgQgAEEBNgIAIAFBLToAAAwDCyADIAI2AgggAyABNgIEIANBlIPCADYCGCADQgE3AiQgA0HwAa1CIIYgA0E8aq2ENwMwIANBATYCHCADIANBCGogAiABQQFxGzYCPCADIANBMGo2AiAgA0EMaiADQRhqELgJIAAgA0EMakHkzsIAENMRIAMoAgwiAEUNAiADKAIQIABBARC+GAwCC0EBQQFBgJnCABDmFgALQQFBAUGAmcIAEOYWAAsgA0HAAGokAAvDAgMDfwF+AXwjAEHAAGsiAiQAAkACQAJAAkAgAC0AAEF9ag4FAQAAAAIACyACQShqQQhqIABBCGopAwA3AwAgAiAAKQMANwMoIAJBKGogARDzBSEADAILAkACQCAAKwMIIga9IgVC////////////AINC//////////f/AFUNACAGIAJBKGoQlgIgAkEoamshACACQShqIQMMAQtB6NbFAEHr1sUAIAVCf1UiABtB79bFACAFQv////////8Hg1AiBBshA0EDQQQgABtBAyAEGyEACyACIAA2AiQgAiADNgIgIAJBAjYCBCACQbjxxQA2AgAgAkIBNwIMIAJB5gWtQiCGIAJBIGqthDcDGCACIAJBGGo2AgggASgCACABKAIEIAIQowchAAwBCyABQcjxxQBBBBClFyEACyACQcAAaiQAIAALrQIBAX8jAEEwayICJAACQAJAAkACQAJAAkACQAJAIAAoAgAOBwABAgMEBQYACyAAQQhqIAEQjwohAAwGCyAAQQhqIAEQvAQhAAwFCyAAQQhqIAEQsQIhAAwECyACIABBBGo2AgwgAkEBNgIUIAJBlMDBADYCECACQgE3AhwgAkETrUIghiACQQxqrYQ3AyggAiACQShqNgIYIAEoAgAgASgCBCACQRBqEKMHIQAMAwsgAUGcwMEAQSMQpRchAAwCCyACIABBBGo2AgwgAkEBNgIUIAJB1MDBADYCECACQgE3AhwgAkETrUIghiACQQxqrYQ3AyggAiACQShqNgIYIAEoAgAgASgCBCACQRBqEKMHIQAMAQsgAUHcwMEAQSIQpRchAAsgAkEwaiQAIAALlwIBBH8jAEEgayICJAACQAJAAkAgAEUNACAAQXhqIgMgAygCAEEBaiIENgIAIARFDQEgACgCAA0CIABBfzYCACACIAM2AhAgAiAANgIMIAIgAEEIajYCCCABRQ0AIAFBeGoiBCAEKAIAQQFqIgU2AgAgBUUNASABKAIADQIgAUF/NgIAIAIgBDYCHCACIAE2AhggAiABQQRqIgU2AhQgAEEoaiAFEN0XIQUgASABKAIAQQFqNgIAIAQgBCgC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IAJBDGqthDcDECACIAJBEGo2AjAgASgCACABKAIEIAJBKGoQowchAAwDCyACIABBBGo2AiQgAkEBNgIsIAJBlIPCADYCKCACQgE3AjQgAkHPAa1CIIYgAkEkaq2ENwMQIAIgAkEQajYCMCABKAIAIAEoAgQgAkEoahCjByEADAILIAAgARDbCiEADAELIAFBnOjDAEEQEKUXIQALIAJBwABqJAAgAAukAgEEfyMAQRBrIQICQAJAAkACQAJAIAEtAAAiA0FpakEAIANBHnFBGEYbDgMAAQIACyACQQ5qIAFBA2otAAA6AAAgAkEIaiABQRRqKAIANgIAIAIgAS8AATsBDCACIAEpAgw3AwAMAgsgAkEOaiABQQNqLQAAOgAAIAJBCGogAUEUaigCADYCACACIAEvAAE7AQwgAiABKQIMNwMADAELIAEoAgQiBCAEKAIAIgNBAWo2AgACQCADQQBIDQAgASgCCCEFQRkhAwwCCwALIAEoAgghBSABKAIEIQQLIAAgAzoAACAAIAIvAQw7AAEgACAFNgIIIAAgBDYCBCAAIAIpAwA3AgwgAEEDaiACQQ5qLQAAOgAAIABBFGogAkEIaigCADYCAAufAgEEfyMAQSBrIgIkAAJAIAEoAgAiAyABKAIIIgRHDQBBACEFAkACQAJAIARBAWoiA0EATg0ADAELQQAhBQJAIARFDQAgAiAENgIcIAIgASgCBDYCFEEBIQULIAIgBTYCGCACQQhqQQEgAyACQRRqEKMQIAIoAghBAUcNASACKAIQIQEgAigCDCEFCyAFIAFBjPjGABDmFgALIAIoAgwhBSABIAM2AgAgASAFNgIECyABIARBAWoiBTYCCCABKAIEIgEgBGpBADoAAAJAAkAgAyAFSw0AIAEhBAwBCwJAIAUNAEEBIQQgASADQQEQvhgMAQsgASADQQEgBRCXFyIEDQBBASAFENgZAAsgACAFNgIEIAAgBDYCACACQSBqJAALnwIBAn8jAEHAAWsiAyQAIANB6ABqIAIQxQMgA0EYakEIaiICIANB9ABqKAIANgIAIAMgAykCbDcDGAJAAkAgAygCaCIEQQVGDQAgACADKQMYNwIIIAAgBDYCBCAAQSc2AgAgAEEQaiACKAIANgIADAELIANBCGpBCGogAigCADYCACADIAMpAxg3AwggAUEgahDkCiABQbANaiECAkACQCABKALgHUGAgICAeEYNACADQegAahC9DyADQRhqIAIgA0EIaiADQegAahBxIANB6ABqEJUDDAELIANBGGogAiADQQhqIAFBiB1qEHELAkAgAygCGEEnRg0AQdAARQ0BIAAgA0EYakHQAPwKAAAMAQsgAEEoNgIACyADQcABaiQAC5gCAgV/AX4jAEEwayICJABBACEDAkAgACgCCCIERQ0AIAEoAgQhBSABKAIAIQEgAiAAKAIEIgAgBEEMbGpBdGoiBjYCDCACQQE2AhQgAkGUg8IANgIQIAJCATcCHCACQc8BrUIghiACQQxqrYQiBzcDKCACIAJBKGo2AhgCQCABIAUgAkEQahCjBw0AIAAgBkYNASAAQWhqIQYgBEEMbCEAIAUoAgwhBANAIAIgBiAAajYCDCABQZC1wgBBASAEERAADQEgAkEBNgIUIAJBlIPCADYCECACQgE3AhwgAiAHNwMoIAIgAkEoajYCGCABIAUgAkEQahCjBw0BIABBdGoiAEEMRw0ADAILC0EBIQMLIAJBMGokACADC7ECAQV/IwBBIGsiAyQAIAMgAjYCGCADIAE2AhQgA0EANgIQIANCgICAgIABNwMIAkAgACgCKEGAgICAeEYNACAAKAIsIQQgACgCMCEFIAAoAiAhBiAAKAIkIQcgA0EIakHsgcIAEIQOIAMoAgwiAEIANwMQIAAgBiAHQQV0ajYCDCAAIAY2AgggACAEIAVBOGxqNgIEIAAgBDYCACAAQQA2AiggAEEYakIANwMAIABBIGpBADYCACADQQE2AhALELEaAkBBoAJBCBD7FyIADQBBCEGgAhDYGQALIABCAjcDgAEgAEICNwMAIAAgAykDCDcDgAIgACACNgKYAiAAIAE2ApQCIABBiAJqIANBCGpBCGopAwA3AwAgAEGQAmogA0EYaigCADYCACADQSBqJAAgAAuYAgIHfwN+IAIoAhQhAyACKAIQIQRBACEFAkACQAJAIAEOAgIBAAsgBK0hCkEAIQUDQAJAAkACQCAAIAFBAXYiBiAFIgdqIgVBKGxqIggoAhAiCSADRw0AIAgpAwggClYNAQwCCyAJIANNDQELIAchBQsgASAGayIBQQFLDQALCwJAAkAgACAFQShsaiIBKAIQIgUgA0cNACABKQMIIgogBK0iC1YNAkIAIQwC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AUGY6MAANgIQIAFCoICAgA43AhQgASABNgIMAkAgACABQQxqEN8PDQAgASgCACECIAEoAgQiAyABKAIIEIMaIQQCQCACRQ0AIAMgAkEBEL4YCwJAAkACQAJAIAAoAgAOBAECAwABCwJAAkACQCAAKAIEIgJB+P///wdqQQAgAkH3////B2pBBUkbDgUABQUBAgULIABBBGoQmQ8MBAsgACgCCCIAQYQISQ0DIAAQrxEMAwsgACgCCCIAQYQISQ0CIAAQrxEMAgsgAEEIahC6DgwBCyAAQQhqEOwECyABQSBqJAAgBA8LQcDowABBNyABQR9qQbDowABB+OjAABD4EAALoQIBBH8jAEEgayIBJAAgAUEANgIIIAFCgICAgBA3AgAgAUGY6MAANgIQIAFCoICAgA43AhQgASABNgIMAkAgACABQQxqENIPDQAgASgCACECIAEoAgQiAyABKAIIEIMaIQQCQCACRQ0AIAMgAkEBEL4YCwJAAkACQAJAIAAoAgAOBAECAwABCwJAAkACQCAAKAIEIgJB+P///wdqQQAgAkH3////B2pBBUkbDgUABQUBAgULIABBBGoQmQ8MBAsgACgCCCIAQYQISQ0DIAAQrxEMAwsgACgCCCIAQYQISQ0CIAAQrxEMAgsgAEEIahC6DgwBCyAAQQhqEOwECyABQSBqJAAgBA8LQcDowABBNyABQR9qQbDowABB+OjAABD4EAAL+QEBA38jAEGwAWsiByQAAkACQAJAIAFFDQAgAUF4aiIIIAgoAgBBAWoiCTYCACAJRQ0BIAEoAgANAiABQX82AgAgByAINgJgIAcgATYCXCAHIAFBCGoiCTYCWCAHIAkgAiADIAQgBSAGELYCIAEgASgCAEEBajYCACAIIAgoAgBBf2oiATYCAAJAIAENACAHQdgAakEIahCJFAtBACEBAkAgBygCAEEJRg0AAkBB2ABFDQAgB0HYAGogB0HYAPwKAAALQQEhASAHQdgAahCzDiEICyAAIAE2AgQgACAIQQAgARs2AgAgB0GwAWokAA8LEMkZCwALEMoZAAupAgEBfyMAQeAAayICJAAgACgCACEAIAJB+LXDADYCWCACQei1wwA2AlAgAiAAQawEajYCTCACQfCYwgA2AkggAiAAQb4EajYCRCACQdi1wwA2AkAgAiAAQYAEajYCPCACQfCY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IgEkACABQQA2AgggAUKAgICAEDcCACABQZjowAA2AhAgAUKggICADjcCFCABIAE2AgwCQCAAIAFBDGoQrwoNACABKAIAIQIgASgCBCIDIAEoAggQgxohBAJAIAJFDQAgAyACQQEQvhgLAkACQAJAAkACQCAAKAIADggBAgQEAwQEBAALIAAoAgQiAkGCgICAeEgNAyACRQ0DIAAoAgggAkEBEL4YDAMLIABBCGoQug4MAgsgAEEIahDsBAwBCyAAQQRqEJkPCyABQSBqJAAgBA8LQcDowABBNyABQR9qQbDowABB+OjAABD4EAALzgEBBX8jAEEgayIBJAACQAJAAkAgAEUNACAAQXhqIgIgAigCAEEBaiIDNgIAIANFDQEgACgCAA0CIABBfzYCACABIAI2AhAgASAANgIMIAEgAEEIajYCCCABQRRqIABBKGoQwxggASgCGCIEIAEoAhwQiBohAwJAIAEoAhQiBUUNACAEIAVBARC+GAsgACAAKAIAQQFqNgIAIAIgAigCAEF/aiIANgIAAkAgAA0AIAFBCGpBCGoQiRQLIAFBIGokACADDwsQyRkLAAsQyhkAC84BAQV/IwBBIGsiASQAAkACQAJAIABFDQAgAEF4aiICIAIoAgBBAWoiAzYCACADRQ0BIAAoAgANAiAAQX82AgAgASACNgIQIAEgADYCDCABIABBCGo2AgggAUEUaiAAQShqEOYMIAEoAhgiBCABKAIcEIgaIQMCQCABKAIUIgVFDQAgBCAFQQEQvhgLIAAgACgCAEEBajYCACACIAIoAgBBf2oiADYCAAJAIAANACABQQhqQQhqEIkUCyABQSBqJAAgAw8LEMkZCwALEMoZAAvOAQEFfyMAQSBrIgEkAAJAAkACQCAARQ0AIABBeGoiAiACKAIAQQFqIgM2AgAgA0UNASAAKAIADQIgAEF/NgIAIAEgAjYCECABIAA2AgwgASAAQQhqNgIIIAFBFGogAEEoahDEGCABKAIYIgQgASgCHBCIGiEDAkAgASgCFCIFRQ0AIAQgBUEBEL4YCyAAIAAoAgBBAWo2AgAgAiACKAIAQX9qIgA2AgACQCAADQAgAUEIakEIahCJFAsgAUEgaiQAIAMPCxDJGQsACxDKGQAL+QEBAn8jAEEQayICJAACQAJAAkACQAJAAkACQCAAKAIAIgNBgYCA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AkACQAJAAkAgACgCgAQiAUH/////B2oiA0EIIANBCkkbDgkCAAQEBAQEBAEECyAAKAKEBCIBQYCAgIB4ckGAgICAeEYNAwwCCyABQYCAgIB4ckGAgICAeEYNAkEEIQIMAQsgACgChAQiAUGAgICAeHJBgICAgHhGDQELIABBgARqIAJqKAIAIAFBARC+GAsCQCAAKAKsBCIBQYKAgIB4SA0AIAFFDQAgACgCsAQgAUEBEL4YCwvDAQEBfyMAQTBrIgIkAAJAAkACQAJAAkACQCAAKAIADgUAAQIDBAALIAIgAEEIajYCDCACQQE2AhQgAkGMvcEANgIQIAJCATcCHCACQSytQiCGIAJBDGqthDcDKCACIAJBKGo2AhggASgCACABKAIEIAJBEGoQowchAAwECyABQdLDwQBBJBClFyEADAMLIABBCGogARCxAiEADAILIABBCGogARCLFiEADAELIAFBi77BAEENEKUXIQALIAJBMGokACAAC9MBAQF/IwBBwABrIgIkACAAKAIAKAIAIQAgAkHYvcMANgI4IAJByL3DADYCMCACIABBMGo2AiwgAkH87MEANgIoIAIgAEEsajYCJCACQbi9wwA2AiAgAiAAQSBqNgIcIAJB8JjCADYCGCACIABB1ABqNgIUIAJB8LbDADYCECACIAA2AgwgAkGovcMANgIIIAIgAEE8ajYCBCACIABByABqNgI8IAIgAkE8ajYCNCABQcS+wwBBCEGMvsMAQQcgAkEEakEHEIIMIQAgAkHAAGokACAAC6kBAQV/IABBBGohAiAAIAFBAnRqIQNBACEEIAAhAQNAIAIhBQJAIAEoAgQgASgCABCLDMBBf0oNACABKAIEIQYgBCEBAkADQCAAIAFqIgJBBGogAigCADYCAAJAIAENACAAIQEMAgsgBiABQXxqIgEgAGoiAigCABCLDMBBAEgNAAsgAkEEaiEBCyABIAY2AgALIARBBGohBCAFIQEgBUEEaiICIANHDQALC8YBAQF/IwBBMGsiAiQAAkACQAJAAkACQAJAIAAoAgAOBQABAgMEAAsgAiAAQQhqNgIMIAJBATYCFCACQbiYwQA2AhAgAkIBNwIcIAJBLK1CIIYgAkEMaq2ENwMoIAIgAkEoajYCGCABKAIAIAEoAgQgAkEQahCjByEADAQLIABBCGogARCxAiEA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ACABRQ0AIAAoAqwDIAFBARC+GAsgAEHoBmoQxQ8CQCAAKAKECUGBgICAeEYNACAAQegIahCpEAsCQAJAAkAgACgCmAkiAUUNAAJAIAFBgICAgHhHDQAgACgCnAkiAUGAgICAeHJBgICAgHhGDQNBCCECDAILIAAoApwJIAFBAnRBBBC+GAsgACgCpAkiAUUNAUEQIQILIABBmAlqIAJqKAIAIAFBAnRBBBC+GAsLqwEBAX8jAEEwayICJAACQAJAIAAvAQhBAkYNACACIAA2AgAgAiAAQQhqNgIEIAJBAjYCDCACQYi2wgA2AgggAkICNwIUIAJBzgGtQiCGIAJBBGqthDcDKCACQb0BrUIghiACrYQ3AyAgAiACQSBqNgIQIAEoAgAgASgCBCACQQhqEKMHIQAMAQsgASgCAEGkpMIAQQUgASgCBCgCDBEQACEACyACQTBqJAAgAAvBAQECfyMAQSBrIgIkAAJAAkACQEEAKAKIukdB/////wdxRQ0AEJEaRQ0BC0EAKAL8uUcNAUEAKAKEukchA0EAIAE2AoS6R0EAKAKAukchAUEAIAA2AoC6RwJAIAFFDQACQCADKAIAIgBFDQAgASAAEQMACyADKAIEIgBFDQAgASAAIAMoAggQvhgLIAJBIGokAA8LIAJBADYCGCACQQE2AgwgAkG87MYANgIIIAJCBDcCECACQQhqQcTsxgAQohULAAuvAQEBfyMAQTBrIgIkAAJAAkACQAJAAkAgACgCAA4EAAECAwALIAIgAEEIajYCDCACQQE2AhQgAkGMvcEANgIQIAJCATcCHCACQSytQiCGIAJBDGqthDcDKCACIAJBKGo2AhggASgCACABKAIEIAJBEGoQowchAAwDCyAAQQhqIAEQsQIhAAwCCyABQcK+wQBBFxClFyEADAELIABBBGogARD3CyEACyACQTBqJAAgAAuvAQEBfyMAQTBrIgIkAAJAAkACQAJAAkAgACgCAA4EAAECAwALIAIgAEEIajYCDCACQQE2AhQgAkGMvcEANgIQIAJCATcCHCACQSytQiCGIAJBDGqthDcDKCACIAJBKGo2AhggASgCACABKAIEIAJBEGoQowchAAwDCyABQbXDwQBBHRClFyEADAILIABBCGogARCxAiEADAELIABBCGogARCLFiEACyACQTBqJAAgAAujAQEDfyMAQRBrIgEkAAJAAkACQCAARQ0AIABBeGoiAiACKAIAQQFqIgM2AgAgA0UNASAAKAIADQIgAEF/NgIAIAEgAjYCDCABIAA2AgggASAAQQhqIgM2AgQgAxCJCyEDIAAgACgCAEEBajYCACACIAIoAgBBf2oiADYCAAJAIAANACABQQRqQQhqEIkUCyABQRBqJAAgAw8LEMkZCwALEMoZAAujAQEDfyMAQRBrIgEkAAJAAkACQCAARQ0AIABBeGoiAiACKAIAQQFqIgM2AgAgA0UNASAAKAIADQIgAEF/NgIAIAEgAjYCDCABIAA2AgggASAAQQhqIgM2AgQgAxCYCCEDIAAgACgCAEEBajYCACACIAIoAgBBf2oiADYCAAJAIAANACABQQRqQQhqEIkUCyABQRBqJAAgAw8LEMkZCwALEMoZAAuiAQEBfyMAQRBrIgIkACAAKAIAIQAgAkEEaiABEMUVIAIgADYCDCACQQRqIAJBDGpB3OjBABD0DBogAiAAQQFqNgIMIAJBBGogAkEMakHc6MEAEPQMGiACIABBAmo2AgwgAkEEaiACQQxqQdzowQAQ9AwaIAIgAEEDajYCDCACQQRqIAJBDGpB3OjBABD0DBogAkEEahDzFCEAIAJBEGokACAAC74BAQJ/IwBBEGsiAiQAAkACQAJAAkAgACgCACIAKAIAQXlqIgNBAiADQQJJGw4DAAECAAsgAiAAQQRqNgIEIAFBiMLDAEEGIAJBBGpBiJ/DABCyDCEADAILIAIgAEEEajYCCCABQYjLwwBBCiACQQhqQezBwwAQsgwhAAwBCyACIAA2AgwgAUGU2MMAQQ9Bo9jDAEELIABBCGpB9NfDAEH2iMMAQQUgAkEMakGE2MMAEI8PIQALIAJBEGokACAAC74BAQJ/IwBBIGsiAiQAAkACQAJAAkACQCAALQAADgQAAgQBAAsgAEECOgAAIAEoAgAhAyABQQA2AgAgA0UNAiADQgAQqRc2AgAgAEEDOgAACyACQSBqJAAPCyACQQA2AhggAkEBNgIMIAJBwOfAADYCCCACQgQ3AhAgAkEIakHslsEAEKIVAAtBiOjAABDaGAALIAJBADYCGCACQQE2AgwgAkGA6MAANgIIIAJCBDcCECACQQhqQeyWwQAQohUAC8cBAQJ/IwBBIGsiAiQAAkACQAJAAkACQCAALQAADgQAAgQBAAsgAEECOgAAIAEoAgAhAyABQQA2AgAgA0UNAiADQv///////////wAQqBc2AgAgAEEDOgAACyACQSBqJAAPCyACQQA2AhggAkEBNgIMIAJBwOfAADYCCCACQgQ3AhAgAkEIakHslsEAEKIVAAtBiOjAABDaGAALIAJBADYCGCACQQE2AgwgAkGA6MAANgIIIAJCBDcCECACQQhqQeyWwQAQohUAC8cBAQJ/IwBBIGsiAiQAAkACQAJAAkACQCAALQAADgQAAgQBAAsgAEECOgAAIAEoAgAhAyABQQA2AgAgA0UNAiADQoCAgICAgICAgH8QqBc2AgAgAEEDOgAACyACQSBqJAAPCyACQQA2AhggAkEBNgIMIAJBwOfAADYCCCACQgQ3AhAgAkEIakHslsEAEKIVAAtBiOjAABDaGAALIAJBADYCGCACQQE2AgwgAkGA6MAANgIIIAJCBDcCECACQQhqQeyWwQAQohUAC74BAQJ/IwBBIGsiAiQAAkACQAJAAkACQCAALQAADgQAAgQBAAsgAEECOgAAIAEoAgAhAyABQQA2AgAgA0UNAiADQn8QqRc2AgAgAEEDOgAACyACQSBqJAAPCyACQQA2AhggAkEBNgIMIAJBwOfAADYCCCACQgQ3AhAgAkEIakHslsEAEKIVAAtBiOjAABDaGAALIAJBADYCGCACQQE2AgwgAkGA6MAANgIIIAJCBDcCECACQQhqQeyWwQAQohUAC6cBAQF/IwBBMGsiAiQAAkACQCAAKAIAIgAoAgBBgoCAgHhGDQAgAiAAQRBqNgIAIAIgADYCBCACQQI2AgwgAkHknsEANgIIIAJCAjcCFCACQQ2tQiCGIAJBBGqthDcDKCACQQytQiCGIAKthDcDICACIAJBIGo2AhAgASgCACABKAIEIAJBCGoQowchAQwBCyABQbCewQBBFhClFyEBCyACQTBqJAAgAQumAQEBfyMAQTBrIgIkAAJAAkAgACgCACIAKAIAQYSAxABGDQAgAiAAQQhqNgIAIAIgADYCBCACQQI2AgwgAkGomsEANgIIIAJCAjcCFCACQQ+tQiCGIAJBBGqthDcDKCACQQytQiCGIAKthDcDICACIAJBIGo2AhAgASgCACABKAIEIAJBCGoQowchAQwBCyABQeSZwQBBLhClFyEBCyACQTBqJAAgAQuZAQECfwJAIANBCEkNACAAIAAgA0EDdiIDQQR0IgRqIAAgA0EcbCIFaiADEN4PIQAgASABIARqIAEgBWogAxDeDyEBIAIgAiAEaiACIAVqIAMQ3g8hAgsCQCAAKAIAIAEoAgAQiwwiAyAAKAIAIAIoAgAQiwxzwEEASA0AIAIgASABKAIAIAIoAgAQiwwgA3PAQQBIGyEACyAAC7EBAQF/IwBBMGsiAiQAAkACQAJAAkACQCAAKAIADgQAAQIDAAsgAiAAQQhqNgIMIAJBATYCFCACQYy9wQA2AhAgAkIBNwIcIAJBLK1CIIYgAkEMaq2ENwMoIAIgAkEoajYCGCABKAIAIAEoAgQgAkEQahCjByEADAMLIABBCGogARCxAiEADAILIAFBhKvBAEEqEKUXIQAMAQsgAUGLvsEAQQ0QpRchAAsgAkEwaiQAIAALsQEBAX8jAEEwayICJAACQAJAAkACQAJAIAAoAgAOBAABAgMACyACIABBCGo2AgwgAkEBNgIUIAJBjL3BADYCECACQgE3AhwgAkEsrUIghiACQQxqrYQ3AyggAiACQShqNgIYIAEoAgAgASgCBCACQRBqEKMHIQAMAwsgAUGEq8EAQSoQpRchAAwCCyABQdm+wQBBFRClFyEADAELIABBCGogARCxAiEACyACQTBqJAAgAAuhAQEDfyMAQRBrIgIkAAJAAkACQCAARQ0AIABBeGoiAyADKAIAQQFqIgQ2AgAgBEUNASAAKAIADQIgAEF/NgIAIAIgAzYCDCACIAA2AgggAiAAQQRqIgQ2AgQgBCABQQBHEPEIIAAgACgCAEEBajYCACADIAMoAgBBf2oiADYCAAJAIAANACACQQxqEIoUCyACQRBqJAAPCxDJGQsACxDKGQALoAEBA38jAEEQayIBJAACQAJAAkAgAEUNACAAQXhqIgIgAigCAEEBaiIDNgIAIANFDQEgACgCAA0CIABBfzYCACABIAI2AgwgASAANgIIIAEgAEEIajYCBCAAQShqEKgJIAAgACgCAEEBajYCACACIAIoAgBBf2oiADYCAAJAIAANACABQQRqQQhqEIkUCyABQRBqJAAPCxDJGQsACxDKGQALoAEBA38jAEEQayIBJAACQAJAAkAgAEUNACAAQXhqIgIgAigCAEEBaiIDNgIAIANFDQEgACgCAA0CIABBfzYCACABIAI2AgwgASAANgIIIAEgAEEIajYCBCAAQShqEO0NIAAgACgCAEEBajYCACACIAIoAgBBf2oiADYCAAJAIAANACABQQRqQQhqEIkUCyABQRBqJAAPCxDJGQsACxDKGQALoAEBA38jAEEQayIBJAACQAJAAkAgAEUNACAAQXhqIgIgAigCAEEBaiIDNgIAIANFDQEgACgCAA0CIABBfzYCACABIAI2AgwgASAANgIIIAEgAEEIajYCBCAAQShqELcNIAAgACgCAEEBajYCACACIAIoAgBBf2oiADYCAAJAIAANACABQQRqQQhqEIkUCyABQRBqJAAPCxDJGQsACxDKGQALoAEBA38jAEEQayIBJAACQAJAAkAgAEUNACAAQXhqIgIgAigCAEEBaiIDNgIAIANFDQEgACgCAA0CIABBfzYCACABIAI2AgwgASAANgIIIAEgAEEIajYCBCAAQShqEJUYIAAgACgCAEEBajYCACACIAIoAgBBf2oiADYCAAJAIAANACABQQRqQQhqEIkUCyABQRBqJAAPCxDJGQsACxDKGQALxAEBAn8jAEEgayIBJAACQAJAAkACQAJAQQAtALG5Rw4EAAIEAQALQQBBAjoAsblHIAAtAAAhAiAAQQA6AAAgAkUNAkEBQezmwAAQ0Q9BAEEDOgCxuUcLIAFBIGokAA8LIAFBADYCGCABQQE2AgwgAUHA58AANgIIIAFCBDcCECABQQhqQfy2wQAQohUAC0GI6MAAENoYAAsgAUEANgIYIAFBATYCDCABQYDowAA2AgggAUIENwIQIAFBCGpB/LbBABCiFQALvAEBBH8jAEEgayIBJAAgAUEANgIIIAFCgICAgBA3AgAgAUGY6MAANgIQIAFCoICAgA43AhQgASABNgIMAkAgACABQQxqEKMPDQAgASgCACECIAEoAgQiAyABKAIIEIMaIQQCQCACRQ0AIAMgAkEBEL4YCwJAAkACQCAAKAIADgIAAQILIABBCGoQug4MAQsgAEEIahDsBAsgAUEgaiQAIAQPC0HA6MAAQTcgAUEfakGw6MAAQfjowAAQ+BAAC74BAQR/IwBBIGsiASQAIAFBADYCCCABQoCAgIAQNwIAIAFBmOjAADYCECABQqCAgIAONwIUIAEgATYCDAJAIAAgAUEMahCkDw0AIAEoAgAhAiABKAIEIgMgASgCCBCSFyEEAkAgAkUNACADIAJBARC+GAsCQAJAAkAgACgCAA4EAQICAgALIABBCGoQ7AQMAQsgAEEIahC6DgsgAUEgaiQAIAQPC0HA6MAAQTcgAUEfakGw6MAAQfjowAAQ+BAAC70BAQR/IwBBIGsiASQAIAFBADYCCCABQoCAgIAQNwIAIAFBmOjAADYCECABQqCAgIAONwIUIAEgATYCDAJAIAAgAUEMahClDw0AIAEoAgAhAiABKAIEIgMgASgCCBCDGiEEAkAgAkUNACADIAJBARC+GAsCQAJAAkAgACgCAA4DAAIBAgsgAEEIahC6DgwBCyAAQQhqEOwECyABQSBqJAAgBA8LQcDowABBNyABQR9qQbDowABB+OjAABD4EAALvgEBBH8jAEEgayIBJAAgAUEANgIIIAFCgICAgBA3AgAgAUGY6MAANgIQIAFCoICAgA43AhQgASABNgIMAkAgACABQQxqEOAPDQAgASgCACECIAEoAgQiAyABKAIIEIMaIQQCQCACRQ0AIAMgAkEBEL4YCwJAAkACQCAAKAIADgQBAgIAAQsgAEEIahDsBAwBCyAAQQhqELoOCyABQSBqJAAgBA8LQcDowABBNyABQR9qQbDowABB+OjAABD4EAALrwEBAn8jAEEwayIDJAAgAyACNwMIAkACQCABLQACDQACQCACQv////////8PfEL/////////H1QNACADQQI2AhQgA0GEx8EANgIQIANCATcCHCADQaYBrUIghiADQQhqrYQ3AyggAyADQShqNgIYIANBEGoQug0hAUEBIQQMAgtBACEEIAK5EKcXIQEMAQtBACEEIAIQqBchAQsgACABNgIEIAAgBDYCACADQTBqJAALvQEBAn8CQCAAKALoBSIBQYOAgIB4SA0AIAFFDQAgACgC7AUgAUEBEL4YCwJAIAAoAvARIgFBg4CAgHhIDQAgAUUNACAAKAL0ESABQQEQvhgLAkAgAC0A9BRBAkcNAAJAIAAoAqgUIgFBiAlqKAIAIgJFDQAgAUGMCWooAgAgAkECdEEEEL4YCyABQZgJQQgQvhgLAkAgACgCoBUiAUGAgICAeHJBgICAgHhGDQAgACgCpBUgAUECdEEEEL4YCwu6AQEBfyMAQcAAayICJAAgACgCACEAIAJBlOvBADYCOCACQZztwQA2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QYuAgIB4Rg0AQQghAgJAAkACQCABQf////8HaiIDQQggA0EKSRsOCQIAAwMDAwMDAQMLIAAoAgQiAUGAgICAeHJBgICAgHhGDQIMAwsgAUGAgICAeHJBgICAgHhGDQFBBCECDAILIAAoAgQiAUGAgICAeHJBgICAgHhHDQELDwsgACACaigCACABQQEQvhgLmgECAX8BfiMAQTBrIgIkAAJAAkAgACgCACIAKAIMDQAgACABEIULIQAMAQsgAkEDNgIEIAJBwPDFADYCACACQgM3AgwgAkEFrUIghiIDIABBEGqthDcDKCACIAMgAEEMaq2ENwMgIAJB5QWtQiCGIACthDcDGCACIAJBGGo2AgggASgCACABKAIEIAIQowchAAsgAkEwaiQAIAALrgEBAX8jAEEQayICJAAgAkEEaiABEJwIAkACQCACLQAEQQFHDQAgACACKAIINgIEIABBgYCAgHg2AgAMAQsCQCACLQAFDQAgAEGAgICAeDYCAAwBCyACQQRqIAEoAgAQtwUCQCACKAIEQYCAgIB4Rw0AIAAgAigCCDYCBCAAQYGAgIB4NgIADAELIAAgAikCBDcCACAAQQhqIAJBBGpBCGooAgA2AgALIAJBEGokAAuuAQEBfyMAQRBrIgIkACACQQRqIAEQnAgCQAJAIAItAARBAUcNACAAIAIoAgg2AgQgAEGBgICAeDYCAAwBCwJAIAItAAUNACAAQYCAgIB4NgIADAELIAJBBGogASgCABD8AwJAIAIoAgRBgICAgHhHDQAgACACKAIINgIEIABBgYCAgHg2AgAMAQsgACACKQIENwIAIABBCGogAkEEakEIaigCADYCAAsgAkEQaiQAC64BAQF/IwBBEGsiAiQAIAJBBGogARCcCAJAAkAgAi0ABEEBRw0AIAAgAigCCDYCBCAAQYKAgIB4NgIADAELAkAgAi0ABQ0AIABBgYCAgHg2AgAMAQsgAkEEaiABKAIAEPYIAkAgAigCBEGBgICAeEcNACAAIAIoAgg2AgQgAEGCgICAeDYCAAwBCyAAIAIpAgQ3AgAgAEEIaiACQQRqQQhqKAIANgIACyACQRBqJAALqgEBAn8jAEEQayICJAAgAiABNgIAAkACQCACENAYDQAgAhDRGCEDIAIoAgAhASADDQAgAkEEaiABEOQHAkAgAigCBEGCgICA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CCAAIAM2AgQgAEEANgIADwsgAEEANgIEIABBATYCAAucAQECfyMAQRBrIgQkACAEIAIQpxciBTYCACAEIAMQsBgiAzYCBCAEQQhqIAEgBCAEQQRqEJATAkACQCAELQAIQQFHDQAgACAEKAIMNgIIIAAgBTYCBCAAQQE6AAAMAQsgACAELQAJOgABIABBADoAACAFQYQISQ0AIAUQrxEgBCgCBCEDCwJAIANBhAhJDQAgAxCvEQsgBEEQaiQAC54BAQF/AkAgAkEASA0AAkACQAJAIAMoAgRFDQACQCADKAIIIgQNACACDQIgASEDDAMLIAMoAgAgBCABIAIQlxchAwwCCyACDQAgASEDDAELELEaIAIgARD7FyEDCwJAIAMNACAAIAI2AgggACABNgIEIABBATYCAA8LIAAgAjYCCCAAIAM2AgQgAEEANgIADwsgAEEANgIEIABBATYCAAueAQEBfwJAIAJBAEgNAAJAAkACQCADKAIERQ0AAkAgAygCCCIEDQAgAg0CIAEhAwwDCyADKAIAIAQgASACEJcXIQMMAgsgAg0AIAEhAwwBCxCxGiACIAEQ+xchAwsCQCADDQAgACACNgIIIAAgATYCBCAAQQE2AgAPCyAAIAI2AgggACADNgIEIABBADYCAA8LIABBADYCBCAAQQE2AgALjQEBAX8CQCACIAEoAggiBE8NACAAIAEoAgQgAkEcbGoiAykCADcCACAAQQhqIANBCGopAgA3AgAgAEEQaiADQRBqKQIANwIAIABBGGogA0EYaigCADYCAAJAIAQgAkF/c2pBHGwiAEUNACADIANBHGogAPwKAAALIAEgBEF/ajYCCA8LIAIgBCADEOERAAunAQIEfwF+IAEoAhwhBCABKAIYIQUCQCABKAIIIgYgASgCAEcNACABQbjwwgAQjA4LIAFBCGpBADYCACABKAIEIQcgASkCACEIIAFCgICAgMAANwIAIAAgCDcCACAAQQhqIAZBAWo2AgAgACABKAIUNgIUIAAgASkCDDcCDCAHIAZBFGxqIgEgAzYCECABIAI2AgwgASAENgIIIAEgBTYCBCABQQA2AgALngEBAX8CQCACQQBIDQACQAJAAkAgAygCBEUNAAJAIAMoAggiBA0AIAINAiABIQMMAwsgAygCACAEIAEgAhCXFyEDDAILIAINACABIQMMAQsQsRogAiABEPsXIQMLAkAgAw0AIAAgAjYCCCAAIAE2AgQgAEEBNgIADwsgACACNgIIIAAgAzYCBCAAQQA2AgAPCyAAQQA2AgQgAEEBNgIAC54BAQF/AkAgAkEASA0AAkACQAJAIAMoAgRFDQACQCADKAIIIgQNACACDQIgASEDDAMLIAMoAgAgBCABIAIQlxchAwwCCyACDQAgASEDDAELELEaIAIgARD7FyEDCwJAIAMNACAAIAI2AgggACABNgIEIABBATYCAA8LIAAgAjYCCCAAIAM2AgQgAEEANgIADwsgAEEANgIEIABBATYCAAueAQEBfwJAIAJBAEgNAAJAAkACQCADKAIERQ0AAkAgAygCCCIEDQAgAg0CIAEhAwwDCyADKAIAIAQgASACEJcXIQMMAgsgAg0AIAEhAwwBCxCxGiACIAEQ+xchAwsCQCADDQAgACACNgIIIAAgATYCBCAAQQE2AgAPCyAAIAI2AgggACADNgIEIABBADYCAA8LIABBADYCBCAAQQE2AgALkgEBAX8jAEHAAGsiAyQAIAMgAjYCBCADIAE2AgAgA0EgakEIaiAAQQhqKQMANwMAIAMgACkDADcDICADQQI2AgwgA0H08MUANgIIIANCAjcCFCADQeMFrUIghiADrYQ3AzggA0HkBa1CIIYgA0Egaq2ENwMwIAMgA0EwajYCECADQQhqEKcOIQAgA0HAAGokACAAC5IBAQF/IwBBwABrIgMkACADIAI2AgQgAyABNgIAIANBIGpBCGogAEEIaikDADcDACADIAApAwA3AyAgA0ECNgIMIANBlPHFADYCCCADQgI3AhQgA0HjBa1CIIYgA62ENwM4IANB5AWtQiCGIANBIGqthDcDMCADIANBMGo2AhAgA0EIahCnDiEAIANBwABqJAAgAAueAQEBfwJAIAJBAEgNAAJAAkACQCADKAIERQ0AAkAgAygCCCIEDQAgAg0CIAEhAwwDCyADKAIAIAQgASACEJcXIQMMAgsgAg0AIAEhAwwBCxCxGiACIAEQ+xchAwsCQCADDQAgACACNgIIIAAgATYCBCAAQQE2AgAPCyAAIAI2AgggACADNgIEIABBADYCAA8LIABBADYCBCAAQQE2AgALngEBAX8CQCACQQBIDQACQAJAAkAgAygCBEUNAAJAIAMoAggiBA0AIAIN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AiABNgIMAkACQAJAIAJBDGoQ0BgNACACQRBqIAEQnwUgACACKQIUNwIEIABBDGogAkEQakEMaigCADYCACACKAIQRQ0BIABBATYCAAwCCyAAQoCAgICAgICAgH83AgAgAUGECEkNASABEK8RDAELIABBADYCAAsgAkEgaiQAC4wBAQF/AkACQAJAIAAoAgBBAUcNACAAQQhqIQAgASgCCCICQYCAgBBxDQECQCACQYCAgCBxDQAgACABENkTDwsgACABEMoQDwsgACgCBCEAIAEoAggiAkGAgIAQcQ0BAkAgAkGAgIAgcQ0AIAAgARDZEw8LIAAgARDKEA8LIAAgARDJEA8LIAAgARDJEAt8AQJ/IwBBEGsiAiQAIAAoAgAiAEEEaigCACEDIAAoAgAhACACQQRqIAEQxRUCQCADRQ0AIANBBXQhAwNAIAIgADYCDCACQQRqIAJBDGpB3OXBABD0DBogAEEgaiEAIANBYGoiAw0ACwsgAkEEahDzFCEAIAJBEGokACAAC4cBAQR/AkAgACgCACIBQYCAgIB4Rg0AIAAoAgQhAgJAIAAoAggiA0UNACACIQQDQCAEEOYOIARBwABqENsMIARB6ABqIQQgA0F/aiIDDQALCwJAIAFFDQAgAiABQegAbEEIEL4YCyAAQQxqEJYHIAAoAgwiBEUNACAAKAIQIARBHGxBBBC+GAsLfwECfyMAQTBrIgQkACABEOQKIARBJGogAUHADWoiBSACIAMQtAogBEEYaiAFIARBJGoQsgMgBEEkaiABKALoECABKALsECAEQRhqENMIIARBDGogBSAEQSRqENYCIAAgAUHwEGogASgCoBAgASgCpBAgBEEMahBoIARBMGokAAuDAQEBfyMAQRBrIgYkACAGIAAoAhAgASACIAMgBCAFQf8BcUECdEGs88MAaigCABCgByAAIAApAwAgBjUCCHw3AwAgACAAKQMIIAY1Agx8NwMIIAYoAgQhACAGKAIAIQUgBkEQaiQAQQFBAyAAQXtGG0GAhAwgAEEDdEH4//8HcXYgBRsLjAEBAX8CQAJAAkAgACgCAEEBRw0AIABBCGohACABKAIIIgJBgICAEHENAQJAIAJBgICAIHENACAAIAEQ2xIPCyAAIAEQyhAPCyAAKAIEIQAgASgCCCICQYCAgBBxDQECQCACQYCAgCBxDQAg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FCACIAI2AgwCQCABIAJBDGoQ6BJFDQBBwOjAAEE3IAJBH2pBsOjAAEH46MAAEPgQAAsgACACKQIANwIAIABBCGogAkEIaigCADYCACACQSBqJAALcQECfwJAIAAoAggiAUUNACAAKAIEQQxqIQADQAJAIABBdGooAgAiAkUNACAAQXhqKAIAIAJBARC+GAsgABC1EQJAIAAoAgAiAkUNACAAQQRqKAIAIAJBHGxBBBC+GAsgAEEcaiEAIAFBf2oiAQ0ACwsLbwEBfyMAQTBrIgMkACADIAI2AgQgAyABNgIAIANBAjYCDCADQZjGwQA2AgggA0ICNwIUIANBpQGtQiCGIAOthDcDKCADQQOtQiCGIACthDcDICADIANBIGo2AhAgA0EIahC6DSECIANBMGokACACC34BAX8jAEEQayICJAAgACgCACEAIAJBCGogAUHCk8IAQQcQxBUgAEEEaiEBAkACQCAALQAAQQFHDQAgAkEIakHsk8IAQQYgAUHck8IAELcLIQAMAQsgAkEIakGm+sEAQQUgAUG0lMIAELcLIQALIAAQ5BEhACACQRBqJAAgAAuDAQECfyMAQRBrIgIkAAJAAkACQAJAIAAoAgAiAy8BCEF+akH//wNxIgBBAiAAQQJJGw4DAAECAAsgAUHMoMMAQQUQpRchAAwCCyABQdGgwwBBAxClFyEADAELIAIgAzYCDCABQYiXwgBBAiACQQxqQdSgwwAQsgwhAAsgAkEQaiQAIAALggEBAn8jAEEQayICJAACQAJAAkACQCAAKAIAIgMtAABBempB/wFxIgBBAiAAQQJJGw4DAAECAAsgAUGlncMAQRYQpRchAAwCCyABQbudwwBBExClFyEADAELIAIgAzYCDCABQeCdwwBBBiACQQxqQdCdwwAQsgwhAAsgAkEQaiQAIAALfgEBfyMAQRBrIgIkACAAKAIAIQAgAkEIaiABQcKTwgBBBxDEFSAAQQRqIQECQAJAIAAtAABBAUcNACACQQhqQeyTwgBBBiABQdyTwgAQtwshAAwBCyACQQhqQab6wQBBBSABQcSUwgAQtwshAAsgABDkESEAIAJBEGokACAAC30BAX8jAEEQayICJAAgACgCACEAIAJBCGogAUHCk8IAQQcQxBUCQAJAIAAtAABBAUcNACACQQhqQeyTwgBBBiAAQQRqQdyT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AkEQaiQADwtBgtXFAEExEMgZAAtpAgF/AX4jAEEwayIDJAAgAyABNgIEIAMgADYCACADQQM2AgwgA0G4+sYANgIIIANCAjcCFCADQQWtQiCGIgQgA0EEaq2ENwMoIAMgBCADrYQ3AyAgAyADQSBqNgIQIANBCGogAhCiFQALaQIBfwF+IwBBMGsiAyQAIAMgATYCBCADIAA2AgAgA0EDNgIMIANB5PrGADYCCCADQgI3AhQgA0EFrUIghiIEIANBBGqthDcDKCADIAQgA62ENwMgIAMgA0EgajYCECADQQhqIAIQohUAC2kCAX8BfiMAQTBrIgMkACADIAE2AgQgAyAANgIAIANBAzYCDCADQZT7xgA2AgggA0ICNwIUIANBBa1CIIYiBCADQQRqrYQ3AyggAyAEIAOthDcDICADIANBIGo2AhAgA0EIaiACEKIVAAtpAgF/AX4jAEEwayIDJAAgAyABNgIEIAMgADYCACADQQI2AgwgA0GQmMcANgIIIANCAjcCFCADQQWtQiCGIgQgA62ENwMoIAMgBCADQQRqrYQ3AyAgAyADQSBqNgIQIANBCGogAhCiFQALeQECfyAALQAEIgEhAgJAIAAtAAVFDQBBASECAkAgAUEBcQ0AAkAgACgCACICLQAKQYABcQ0AIAIoAgBBi5rHAEECIAIoAgQoAgwREAAhAgwBCyACKAIAQYqaxwBBASACKAIEKAIMERAAIQILIAAgAjoABAsgAkEBcQtpAgF/AX4jAEEwayIDJAAgAyABNgIEIAMgADYCACADQQI2AgwgA0HssscANgIIIANCAjcCFCADQQWtQiCGIgQgA0EEaq2ENwMoIAMgBCADrYQ3AyAgAyADQSBqNgIQIANBCGogAhCiFQALaQIBfwF+IwBBMGsiAyQAIAMgATYCBCADIAA2AgAgA0ECNgIMIANBjLPHADYCCCADQgI3AhQgA0EFrUIghiIEIANBBGqthDcDKCADIAQgA62ENwMgIAMgA0EgajYCECADQQhqIAIQohUAC2kCAX8BfiMAQTBrIgMkACADIAE2AgQgAyAANgIAIANBAjYCDCADQcCzxwA2AgggA0ICNwIUIANBBa1CIIYiBCADQQRqrYQ3AyggAyAEIAOthDcDICADIANBIGo2AhAgA0EIaiACEKIVAAtpAgF/AX4jAEEwayIDJAAg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DwsgACABENIQC0EBAX8gACgCACEAAkAgASgCCCICQYCAgBBxDQACQCACQYCAgCBxDQAgACABEMcTDwsgACABENMQDwsgACABENIQC0EBAX8gACgCACEAAkAgASgCCCICQYCAgBBxDQACQCACQYCAgCBxDQAgACABENkTDwsgACABEMoQDwsgACABEMkQC0EBAX8gACgCACEAAkAgASgCCCICQYCAgBBxDQACQCACQYCAgCBxDQAgACABENsSDwsgACABEMoQDwsgACABEMkQC0EBAX8gACgCACEAAkAgASgCCCICQYCAgBBxDQACQCACQYCAgCBxDQAgACABELwLDwsgACABEMgQDwsgACABEMUQC0EBAX8gACgCACEAAkAgASgCCCICQYCAgBBxDQACQCACQYCAgCBxDQAgACABENkTDwsgACABEMoQDwsgACABEMkQC0EBAX8gACgCACEAAkAgASgCCCICQYCAgBBxDQACQCACQYCAgCBxDQAgACABEJgPDwsgACABEMYQDwsgACABEMcQC0EBAX8gACgCACEAAkAgASgCCCICQYCAgBBxDQACQCACQYCAgCBxDQAgACABEMcTDwsgACABENMQDwsgACABENIQC0EBAX8gACgCACEAAkAgASgCCCICQYCAgBBxDQACQCACQYCAgCBxDQAgACABELwLDwsgACABEMgQDwsgACABEMUQC0EBAX8gACgCACEAAkAgASgCCCICQYCAgBBxDQACQCACQYCAgCBxDQAgACABENsSDwsgACABEMoQDwsgACABEMkQC0EBAX8gACgCACEAAkAgASgCCCICQYCAgBBxDQACQCACQYCAgCBxDQAgACABEMcTDwsgACABENMQDwsgACABENIQC0EBAX8gACgCACEAAkAgASgCCCICQYCAgBBxDQACQCACQYCAgCBxDQAgACABEMcTDwsgACABENMQDwsgACABENIQCzoBAX8gACgCACIAQQhqEJoGAkAgAEF/Rg0AIAAgACgCBCIBQX9qNgIEIAFBAUcNACAAQRRBBBC+GAsLQgEBfyABQQRqIQICQAJAAkACQCABKAIADgQAAQIDAAsgACACEOYEDwsgACACEJwDDwsgACACEOIGDwsgACACEIMHC00AAkACQAJAAkAgAC0AAA4EAAECAwALIAFBlbvDAEEPEKUXDwsg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BCgCCCAEQRBqJAALKwAgACgCACgCACIAKQMAIABBCGopAwAgASgCAEEAIAJrQQxsakF0ahCPCAsrACAAKAIAKAIAIgApAwAgAEEIaikDACABKAIAQQAgAmtBKGxqQVhqEPoGCy0AIAAoAgAoAgAiACkDACAAQQhqKQMAIAEoAgBBACACa0HQAGxqQbB/ahDBCAsrACAAKAIAKAIAIgApAwAgAEEIaikDACABKAIAQQAgAmtBIWxqQV9qEMsICzQBAX8CQCAAKQMAQgJRDQAgACgC2AQiAUGDgICAeEgNACABRQ0AIAAoAtwEIAFBARC+GAsLKwAgACgCACgCACIAKQMAIABBCGopAwAgASgCAEEAIAJrQRhsakFoahDfCAsrACAAKAIAKAIAIgApAwAgAEEIaikDACABKAIAQQAgAmtBKGxqQVhqEKcICysAIAAoAgAoAgAiACkDACAAQQhqKQMAIAEoAgBBACACa0EsbGpBVGoQzAgLKwAgACgCACgCACIAKQMAIABBCGopAwAgASgCAEEAIAJrQSRsakFcahDMCAsrACAAKAIAKAIAIgApAwAgAEEIaikDACABKAIAQQAgAmtBFGxqQWxqEKcICysAIAAoAgAoAgAiACkDACAAQQhqKQMAIAEoAgBBACACa0EUbGpBbGoQpwgLKwAgACgCACgCACIAKQMAIABBCGopAwAgASgCAEEAIAJrQThsakFIahDbBwsrACAAKAIAKAIAIgApAwAgAEEIaikDACABKAIAQQAgAmtBDGxqQXRqEMUICy0AIAAoAgAoAgAiACkDACAAQQhqKQMAIAEoAgBBACACa0HYAGxqQah/ahDFCAs0ACABIAIQF0EAKALwuUchAkEAKAL0uUchAUEAQgA3AvC5RyAAIAE2AgQgACACQQFGNgIACzAAIABB+M7FADYCBCAAQQAgAUEEaiABLQAEQQRGG0EAIAEoAgBBgICAgHhGGzYCAAsxACAAIAEoAgAgAiADIAEoAgQoAgwREAA6AAggACABNgIEIAAgA0U6AAkgAEEANgIACy4BAX8jAEEQayIDJAAgAyAAIAEgAhCRCiADKAIAIAMoAgQgAygCCCADQRBqJAALLgEBfyMAQRBrIgMkACADIAAgASACELgWIAMoAgAgAygCBCADKAIIIANBEGokAAsuAQF/IwBBEGsiAyQAIAMgACABIAIQuhYgAygCACADKAIEIAMoAgggA0EQaiQACy0BAX8jAEEQayIFJAAgBSAAIAEgAiADIAQQhRYgBSgCACAFKAIEIAVBEGokAAstAQF/IwBBEGsiBSQAIAUgACABIAIgAyAEEKMVIAUoAgAgBSgCBCAFQRBqJAALLQEBfyMAQRBrIgUkACAFIAAgASACIAMgBBDbFCAFKAIAIAUoAgQgBUEQaiQACy0BAX8jAEEQayIFJAAgBSAAIAEgAiADIAQQhhYgBSgCACAFKAIEIAVBEGokAAsuAQF/IwBBEGsiAyQAIAMgACABIAIQvRYgAygCACADKAIEIAMoAgggA0EQaiQACy4BAX8jAEEQayIDJAAgAyAAIAEgAhC+FiADKAIAIAMoAgQgAygCCCADQRBqJAALLgEBfyMAQRBrIgMkACADIAAgASACEL8WIAMoAgAgAygCBCADKAIIIANBEGokAAsuAQF/IwBBEGsiAyQAIAMgACABIAIQwBYgAygCACADKAIEIAMoAgggA0EQaiQACy4BAX8jAEEQayIDJAAgAyAAIAEgAhDBFiADKwMAIAMoAgggAygCDCADQRBqJAALLgEBfyMAQRBrIgMkACADIAAgASACEMMWIAMoAgAgAygCBCADKAIIIANBEGokAAswAQF/AkACQCABENIYDQBBACECDAELQQEhAiABEIIaIQELIAAgATYCBCAAIAI2AgALMwEBfwJAIAAoAgAiAUGBgICAeEYNACABQYCAgIB4Rg0AIAFFDQAgACgCBCABQQEQvhgLCy0CAX8BfiMAQRBrIgEkACAAKQIAIQIgASAANgIMIAEgAjcCBCABQQRqEJAaAAsrAQF/IwBBEGsiAiQAIAJBATsBDCACIAE2AgggAiAANgIEIAJBBGoQoRUACy4BAX8gACABEIYKIgYgAiYBIAYgAxCGCiIGIAQmASAGEIYKIgYgBSYBIAYQhg0LLAEBfyMAQRBrIgIkACACIAAgARDqDCACKAIAIAIoAgQgAigCCCACQRBqJAALLAEBfyMAQRBrIgIkACACIAAgARCLCiACKAIAIAIoAgQgAigCCCACQRBqJAALKwEBfyMAQRBrIgQkACAEIAAgASACIAMQxxUgBCgCACAEKAIEIARBEGokAAsrAQF/IwBBEGsiBCQAIAQgACABIAIgAxDIFSAEKAIAIAQoAgQgBEEQaiQACysBAX8jAEEQayIEJAAgBCAAIAEgAiADEJwWIAQoAgAgBCgCBCAEQRBqJAALKwEBfyMAQRBrIgQkACAEIAAgASACIAMQnRYgBCgCACAEKAIEIARBEGokAAsrAQF/IwBBEGsiBCQAIAQgACABIAIgAxDLFSAEKAIAIAQoAgQgBEEQaiQACywBAX8jAEEQayICJAAgAiAAIAEQrRcgAigCACACKAIEIAIoAgggAkEQaiQACysBAX8jAEEQayIEJAAgBCAAIAEgAiADEM8VIAQoAgAgBCgCBCAEQRBqJAALLAEBfyMAQRBrIgIkACACIAAgARCvFyACKAIAIAIoAgQgAigCCCACQRBqJAALLAEBfyMAQRBrIgIkACACIAAgARCwFyACKwMAIAIoAgggAigCDCACQRBqJAALLAEBfyMAQRBrIgIkACACIAAgARCyFyACKAIAIAIoAgQgAigCCCACQRBqJAALLAEBfyMAQRBrIgIkACACIAAgARCzFyACKAIAIAIoAgQgAigCCCACQRBqJAALLAEBfyMAQRBrIgIkACACIAAgARC0FyACKAIAIAIoAgQgAigCCCACQRBqJAALLAEBfyMAQRBrIgIkACACIAAgARC1FyACKAIAIAIoAgQgAigCCCACQRBqJAALLAEBfyMAQRBrIgIkACACIAAgARC2FyACKAIAIAIoAgQgAigCCCACQRBqJAALLAEBfyMAQRBrIgIkACACIAAgARC3FyACKAIAIAIoAgQgAigCCCACQRBqJAALLAEBfyMAQRBrIgIkACACIAAgARC4FyACKAIAIAIoAgQgAigCCCACQRBqJAALKwEBfyMAQRBrIgQkACAEIAAgASACIAMQ0hUgBCgCACAEKAIEIARBEGokAAssAQF/IwBBEGsiAiQAIAIgACABELkXIAIoAgAgAigCBCACKAIIIAJBEGokAAssAQF/IwBBEGsiAiQAIAIgACABENMWIAIoAgAgAigCBCACKAIIIAJBEGokAAsuAQF/AkAgACgCACIBQYQISQ0AIAEQrxELAkAgACgCBCIAQYQISQ0AIAAQrxELCygAIAAoAgAoAgAiACkDACAAQQhqKQMAIAEoAgAgAkEEdGtBcGoQwggLKAAgACgCACgCACIAKQMAIABBCGopAwAgASgCACACQQR0a0Fw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IAAgARCGCiIDIAImASADEJELCxYBAX8gACABEIYKIgMgAiYBIAMQiQ0LFgEBfyAAIAEQhgoiAyACJgEgAxDJDAsWAQF/IAAgARCGCiIDIAImASADEKENCxYBAX8gACABEIYKIgMgAiYBIAMQygwLFgEBfyAAIAEQhgoiAyACJgEgAxDLDAsWAQF/IAAgARCGCiIDIAImASADEKsJCxYBAX8gACABEIYKIgMgAiYBIAMQjgkLFgEBfyAAIAEQhgoiAyACJgEgAxDjDAsWAQF/IAAgARCGCiIDIAImASADEMwMCxYBAX8gACABEIYKIgMgAiYBIAMQzQwLFgEBfyAAIAEQhgoiAyACJgEgAxDODAsVACACIAEgAEGY6cAAIAMoAjAREwALFQAgAiABIABB0IHBACADKAIwERMACxMAIAAgAhCnFzYCBCAAQQA2AgALEAAgACgCBCAAKAIAa0EYbgsUACAAKAIAIAEoAgAgASgCBBDNCAsUACAAKAIAIAEoAgAgASgCBBDOCAsUACAAKAIAIAEoAgAgASgCBBDXCAsUACAAKAIAIAEoAgAgASgCBBDPCAsUACAAKAIAIAEoAgAgASgCBBDQCAsVACACIAEgAEGwmcIAIAMoAjAREwALFQAgAiABIABBhPzBACADKAIwERMACxUAIAIgASAAQcCZwgAgAygCMBETAAsVACACIAEgAEG0/MEAIAMoAjAREwALFQAgAiABIABB0JnCACADKAIwERMACxUAIAIgASAAQeCZwgAgAygCMBETAAsVACACIAEgAEHwmcIAIAMoAjAREwALFQAgAiABIABBzObBACADKAIwERMACxUAIAIgASAAQfTqwQAgAygCMBETAAsVACACIAEgAEGAmsIAIAMoAjAREwALFQAgAiABIABBkJrCACADKAIwERMACxUAIAIgASAAQaCawgAgAygCMBETAAsVACACIAEgAEGwmsIAIAMoAjAREwALFQAgAiABIABB3OXBACADKAIwERMACxUAIAIgASAAQcCawgAgAygCMBETAAsVACACIAEgAEG0+8EAIAMoAjAREwALFQAgAiABIABB0JrCACADKAIwERMACxUAIAIgASAAQeCawgAgAygCMBETAAsVACACIAEgAEHwmsIAIAMoAjAREwALFQAgAiABIABBgJvCACADKAIwERMACxUAIAIgASAAQYzlwQAgAygCMBETAAsVACACIAEgAEGQm8IAIAMoAjAREwALFQAgAiABIABB3J3CACADKAIwERMACxUAIAIgASAAQeydwgAgAygCMBETAAsSACABEOQKIAAgAUGQDWoQrQsLEQAgACABQZANaiACIAMQzwMLEgAgABDkCiAAQZANaiABEKEMCxEAIAAgAUGQDWogAiADEPYDCxIAIAAgASgCAEGQDWogAhCMAQsVACACIAEgAEHUycUAIAMoAjAREwALEwAgAiABIAA1AgAgAygCFBE1AAsSACAAKAIAIAEoAgAQ4xhBAEcLEgAgACgCACABKAIAEOQYQQBHCxIAIAAoAgAgASgCABDlGEEARwsUACAAKAIAIAEgACgCBCgCDBELAAsUACAAKAIAIAEgACgCBCgCEBELAAsQACAAIAEgAiADIAQQ8QMACxUCAX8BbxASIQEQhgoiACABJgEgAAsVAgF/AW8QGiEBEIYKIgAgASYBIAALFQIBfwFvEBshARCGCiIAIAEmASAACxUCAX8BbxAeIQEQhgoiACABJgEgAAsQACAAJQEgASUBIAIlARAvCxQBAX8gACABEOsLIgIlASACEK8RCxQBAX8gACABEPwHIgIlASACEK8RCxQBAX8gABCGCiICIAEmASACENcOCxQBAX8gABCGCiICIAEmASACEOsRCxQBAX8gABCGCiICIAEmASACELsQCxQBAX8gABCGCiICIAEmASACEKwJCxQBAX8gABCGCiICIAEmASACENYJCxQBAX8gABCGCiICIAEmASACEIgQCxQBAX8gABCGCiICIAEmASACENwOCxQBAX8gABCGCiICIAEmASACEPYQCxEAIAAoAgAgACgCBCABENYYCxEAIAAoAgAgACgCBCABEN0ZCxEAIAAoAgQgACgCCCABEMwECxEAIAAoAgQgACgCCCABEN0ZCxABAX8gACABEOQWIQIgAg8LEAEBfyAAIAEQlxMhAiACDwsRACAAKAIAIAAoAgQgARDWGAsRACAAELkaNgIEIAAgATYCAAshACAAQsXqgN7D29jDhX83AwggAEKDm7q43IKXm1I3AwALEQAgACgCACAAKAIEIAEQ3RkLEQAgACgCACAAKAIEIAEQzAQLEQAgACgCBCAAKAIIIAEQ3RkLEwAgAEEoNgIEIABBrOnBADYCAAsTACAAQSg2AgQgAEGs6cEANgIACxMAIABBKDYCBCAAQazpwQA2AgALIQAgAEKqsa3choqJ7aR/NwMIIABC2ZOJkv6+h714NwMACyIAIABC94rxnsPKwPmjfzcDCCAAQo27g4uu1q2WsX83AwALIQAgAEL+u4yRutLe3gc3AwggAEK8t5WF64K9+qt/NwMACyEAIABCs83ti4DJod+TfzcDCCAAQrmfuMyQ89/TdjcDAAshACAAQrPM8omd0d7iXjcDCCAAQpPTnvSmsdrfrX83AwALIgAgAEKs7OLKneiGgdIANwMIIABCw/fS56LQ25ulfzcDAAshACAAQqDgsOWX8c2gNDcDCCAAQoa6s+WP3KeIk383AwALIAAgAEKpjIfwwp2l3kY3AwggAEKxgdD2u9rbzRs3AwALIQAgAEKj1tX39K69lW03AwggAELx/aedzcygkqN/NwMACyIAIABCg/PKw6/19/yMfzcDCCAAQtyA9bThsdWR7AA3AwALIAAgAEKNhdjXzfWJ8WQ3AwggAELPqo7QzfOS2jk3AwALIQAgAEKe5buS2pKboBw3AwggAEKX0p6/yJXen7B/NwMACyAAIABCy8m8gqTrqbxiNwMIIABCsMuQ+JGHxMBHNwMACxEAIAAoAgQgACgCCCABEMwECxEAIAAoAgQgACgCCCABEMwECxAAIAAQ5AogAEGQDWoQ7gkLDwAgACABQZANaiACEOwKCxEAIAAoAgAgACgCBCABEMwECxEAIAAoAgAgACgCBCABEN0ZCxAAIABCBDcCCCAAQgA3AgALIQAgAEL+u4yRutLe3gc3AwggAEK8t5WF64K9+qt/NwMACxEAIAAoAgQgACgCCCABEN0ZCxQAQQAgADYC9LlHQQBBATYC8LlHCxEAIAAoAgAgACgCBCABENYYCxEAIAAoAgAgACgCBCABEN0ZCyAAIABCnNfUgYnz0fY+NwMIIABCwJnT99W0k41NNwMACxEAIAAoAgAgACgCBCABEMwECxEAIAAoAgAgACgCBCABEN0ZCxEAIAEgACgCACAAKAIEEKUXCyAAIABC356dmJy3lrgCNwMIIABCoe2sjPn0nLgHNwMACyIAIABC7bqtts2F1PXjADcDCCAAQviCmb2V7sbFuX83AwALEQAgACgCACAAKAIEIAEQzAQLEQAgACgCACAAKAIEIAEQ3RkLEQAgACgCBCAAKAIIIAEQzAQLEQAgACgCBCAAKAIIIAEQ3RkLEwAgAEHk7MYANgIEIAAgATYCAAsRACABIAAoAgAgACgCBBClFwsRACAAKAIEIAAoAgggARDdGQsRACAAKAIEIAAoAgggARDMBAsRACABIAAoAgAgACgCBBC1BgsRACABKAIAIAEoAgQgABCjBwsRACABKAIAIAEoAgQgABCjBwsRAQF/EIYKIgEgACUBJgEgAQsSAQF/IAAQrQ8iASUBIAEQrxELEgEBfyAAEK4PIgElASABEK8RCxIBAX8gABDbDiIBJQEgARCvEQsSAQF/IAAQtA4iASUBIAEQrxELEgEBfyAAELUOIgElASABEK8RCxIBAX8gABC2DiIBJQEgARCvEQsSAQF/IAAQnA8iASUBIAEQrxELEgEBfyAAEK0OIgElASABEK8RCxIBAX8gABDUDyIBJQEgARCvEQsSAQF/IAAQ1Q8iASUBIAEQrxELEgEBfyAAEJEPIgElASABEK8RCxIBAX8gABCgDiIBJQEgARCvEQsPACAAKAIAKAIAIAEQrwsLDAAgACABIAIQoBIPCw4AIAAoAgAgASACEOgWCw0AIAAoAgAgACgCBEYLDwAgACgCACgCACABEPgOCw8AIAAoAgAoAgAgARDwDwsNACAAIAFBAUEBEMwHCw0AIAAgAUEAQQEQzAcLDAAgACABQRBqEKMMCwwAIAAgAUEQahCjDAsPACAAKAIAKAIAIAEQwA4LDwAgACgCACABKAIAEOAYCw0AIAAoAgAQlxpBAEcLDQAgACgCABCYGkEARwsNACAAKAIAEJkaQQBHCw8AIAAoAgAgASgCABDsFgsOACAAKAIAIAEgAhDtFgsNACAAKAIAEJwaQQBHCw0AIAAoAgAQnxpBAEcLDQAgACgCABCgGkEARwsNACAAKAIAEJ4aQQBHCw0AIAAoAgAQoRpBAEcLDQAgACgCABCiGkEARwsNACAAKAIAEKMaQQBHCw0AIAAoAgAQpBpBAEcLDgAgACACIAEoAgwRCwALDAAgACABIAIQ5REACwwAIAAgASACEOYRAAsMACAAIAEgAhDnEQALDwBBmZfHAEErIAAQzhMACwwAIAEgACACEOgRAAsPACAAKAIAKQMAIAEQkAsLDAAgACUBIAElARACCwwAIAAlASABJQEQDwsMACAAJQEgASUBEBALDAAgACUBIAElARAZCwwAIAAgASUBIAIQJgsMACAAIAEgAiUBEDULDAAgACUBIAElARBHCwwAIAAlASABJQEQSAsMACAAJQEgASUBEEoLEAEBfxCwGiIAJQEgABCvEQsMACAAKAIAIAEQ+wkLDAAgACgCACABEOIOCwwAIAAoAgAgARD4DgsMACAAKAIAIAEQzg4LDAAgACgCACABEN8ECwwAIAAoAgAgARC0FgsMACAAKAIAIAEQpBALDAAgACgCACABEMQRCwwAIAAoAgAgARDXEgsMACAAKAIAIAEQjxoLDAAgACgCACABEIAQCwwAIAAoAgAgARDoEgsMACAAKAIAIAEQ/AoLDAAgACgCACABEMcTCwwAIAAoAgAgARCrEAsOACABQa6rwQBBEBClFwsMACAAKAIAIAEQuAsLDAAgACgCACABEI8KCwwAIAAoAgAgARC8BAsMACAAKAIAIAEQgxALDAAgACgCACABENQJCwwAIAAoAgAgARD6EQsMACAAKAIAIAEQ+wsLDAAgACgCACABELgKCwwAIAAoAgAgARCxAgsMACAAKAIAIAEQxQwLDAAgACgCACABEKwHCw8AIAFBu6rBAEHJABClFwsMACAAKAIAIAEQuA4LDAAgACgCACABELkNCw4AIAFB/MvAAEEKEKUXCw4AIAFB5ObAAEEFEKUXCw4AIABBmOjAACABEKMHCw4AIAFB3OrAAEEFEKUXCwoAIAAgARDyFg8LDgAgAEHYxMEAIAEQowcLDgAgAUHIxcEAQQUQpRcLDAAgACgCACABEMQRCwwAIAAoAgAgARDwDwsMACAAKAIAIAEQiRALDAAgACgCACABEI8aCwwAIAAoAgAgARCkEAsMACAAKAIAIAEQ8Q0LDgAgAUHY48EAQQIQtQYLDAAgACgCACABEIoKCw4AIAFB9rTDAEELEKUXCwwAIAAoAgAgARDtEAsMACAAKAIAIAEQ7g4LDAAgACgCACABELcOCw4AIAFB7fjBAEELEKUXCwwAIAAoAgAgARC4CAsMACAAKAIAIAEQhQ4LDAAgACgCACABEOQOCwwAIAAoAgAgARC0FgsMACAAKAIAIAEQrw8LDAAgACgCACABEPgOCwwAIAAoAgAgARDJCQsMACAAKAIAIAEQ1xILDAAgACgCACABEP4JCwwAIAAoAgAgARD6CAsMACAAKAIAIAEQuw0LDAAgACgCACABENUSCwwAIAAoAgAgARDZEwsMACAAKAIAIAEQvA4LDAAgACgCACABENYMCwwAIAAoAgAgARCLDQsMACAAKAIAIAEQxxMLDAAgACgCACABENsSCwwAIAAoAgAgARDIEwsMACAAKAIAIAEQ0w0LDAAgACgCACABEJ0KCwwAIAAoAgAgARDVCAsMACAAKAIAIAEQmA8LDAAgACgCACABEJASCwwAIAAoAgAgARDYEgsMACAAKAIAIAEQiA8LDAAgACgCACABEIMWCwwAIAAoAgAgARDHEwsMACAAKAIAIAEQ2wkLDgAgAEHc48EAIAEQowcLDgAgAUHk7MEAQQUQpRcLDAAgACgCACABELECCwwAIAAoAgAgARC8DgsOACABQam4wgBBExClFwsOACABQby4wgBBHxClFwsLACAAIAEgAhCpCgsOACAAIAFBkIXDABDTEQsPACABQbyawwBByAAQpRcLDgAgAUHqs8MAQQ0QpRcLDgAgAUH2tMMAQQsQpRcLDgAgAUHYs8MAQRIQpRcLCgAgABDcChpBAQsOACABQcDMxQBBCxClFwsOACABQYzOxQBBCBClFwsMACAAKAIAIAEQtBYLDAAgACgCACABEPIQCwwAIAAoAgAgARDHEwsKACAAIAEQiRoACw0AQeTVxQBBGxDIGQALDgBB/9XFAEHPABDIGQALDgAgAEHk3MYAIAEQowcLDgAgAUH83MYAQQQQpRcLDgAgAUGA3cYAQQkQpRcLDgAgAUGJ3cYAQQgQpRcLDgAgAUHi38YAQQMQpRcLDgAgAUHl38YAQQIQpRcLDgAgAUHn38YAQQ0QpRcLDgAgAUH038YAQQMQpRcLDgAgAEHc4MYAIAEQowcLDAAgACABKQIANwMACw4AIABBuPfGACABEKMHCw4AIAFBqPfGAEEFEKUXCw4AIAFBrffGAEELEKUXCwoAIAEgABCJGQALDAAgACABKQIENwMACw4AIAFB4JbHAEEgELUGCw4AIAFBgJfHAEEYELUGCw4AIABB5JnHACABEKMHCwsAIAIgACABELUGCwwAIAAoAgAgARDzCgsKACAAIAElARATCwoAIAAgASUBEBULCgAgACABJQEQOQsKACAAIAElARA7CwoAIAAgASUBED0LCgAgACABJQEQQAsJACAAIAEQ0RkLCQAgACABEM8ZCwkAIAAgARDNGQsJACAAIAEQ0BkLCQAgACABENIZCwkAIAAgARDEGQsJACAAIAEQzhkLCQAgACABEL8ZCwkAIAAgARDBGQsJACAAIAEQuhkLCQAgACABEMwZCwkAIAAgARC7GQsJACAAIAEQkhcLCQAgACABELQWCwkAIABBADYCAAsJACAAEOQKIAALCQAgACABEKsCCwsAQYTawgAQtBMACwkAIABBADYCAAsJACAAQQA2AgALCQAgAEECNgIACwsAQeDPxQAQtBMACwgAIAAQtBMACwoAIAAoAgAQlRoLCQAgACABEJIXCwoAIAAoAgAQhhcLCQAgACABEIcXCwoAIAAoAgAQmhoLCgAgACgCABCIFwsKACAAKAIAEIkXCwkAIAAgARCKFwsKACAAKAIAEJYaCwkAIAAgARCMFwsKACAAKAIAEI0XCwoAIAAoAgAQjhcLCQAgACABEI8XCwgAIAAgARBJCwkAIAAgARCQFwsKACAAKAIAEJEXCwkAIABBADYCAAsLAEGM38YAELQTAAsJACAAQQA2AgALCQAgACABEPUJCwgAIAAQjRAACwoAQQAoAuS9R0ULCAAgACUBEAULCAAgACUBEAcLCAAgACUBEA0LCAAgACUBEBgLCAAgACUBECELCAAgACUBECMLCAAgACUBECQLCAAgACUBECgLCAAgACUBECkLCAAgACUBEDQLCAAgACUBEDcLCAAgACUBEDoLCAAgACUBEDwLCAAgACUBED4LCAAgACUBEEELCAAgACUBEEILCAAgACUBEEMLCAAgACUBEEQLCAAgACUBEEULBwAgARDsCAsHACABEOwICwcAIAEQ7AgLBwAgABCXBwsHACAAKAIACwcAIAAoAgALBwAgASkDAAsGABD6GQALBgAQuhoACwcAIAAQ4gcLBgAQuhoACwUAENMGCwMADwsEAEEGCwQAQQELBABBAAsEAEEACwYAQq29AwsEAEEACwUAEOkXCwUAEOoXCwMAAAsCAAsCAAsCAAsCAAsCAAsCAAsCAAsCAAsCAAsCAAsLxLkHAgBBgIDAAAvctQdhdXRvbWVyZ2Uvc3JjL2NvbHVtbmFyL2NvbHVtbl9yYW5nZS9rZXkucnMAYXV0b21lcmdlL3NyYy9vcF9zZXQyL29wX3NldC9tYXJrX2luZGV4LnJzAGF1dG9tZXJnZS9zcmMvb3Bfc2V0Mi9vcF9zZXQvaW5kZXgucnMAL3J1c3RjLzI5NDgzODgzZWVkNjlkNWZiNGRiMDE5NjRjZGYyYWY0ZDg2ZTljYjIvbGlicmFyeS9jb3JlL3NyYy9zbGljZS9pbmRleC5ycwAvcnVzdGMvMjk0ODM4ODNlZWQ2OWQ1ZmI0ZGIwMTk2NGNkZjJhZjRkODZlOWNiMi9saWJyYXJ5L2FsbG9jL3NyYy9ib3Jyb3cucnMAYXV0b21lcmdlL3NyYy9jb2x1bW5hci9lbmNvZGluZy9yYXcucnMAYXV0b21lcmdlL3NyYy9jb2x1bW5hci9jb2x1bW5fcmFuZ2UvcmF3LnJzAC9ob21lL3J1bm5lci93b3JrL2F1dG9tZXJnZS9hdXRvbWVyZ2UvcnVzdC9oZXhhbmUvc3JjL3Jhdy5ycwBsaWJyYXJ5L2NvcmUvc3JjL251bS9mbHQyZGVjL3N0cmF0ZWd5L2dyaXN1LnJzAGF1dG9tZXJnZS9zcmMvY29sdW1uYXIvY29sdW1uX3JhbmdlL29waWRfbGlzdC5ycwBsaWJyYXJ5L2NvcmUvc3JjL3NsaWNlL3NvcnQvc2hhcmVkL3NtYWxsc29ydC5ycwAvcnVzdGMvMjk0ODM4ODNlZWQ2OWQ1ZmI0ZGIwMTk2NGNkZjJhZjRkODZlOWNiMi9saWJyYXJ5L2NvcmUvc3JjL3NsaWNlL3NvcnQvc3RhYmxlL3F1aWNrc29ydC5ycwBhdXRvbWVyZ2Uvc3JjL29wX3NldDIvb3Bfc2V0L2luc2VydC5ycwBsaWJyYXJ5L3N0ZC9zcmMvdGhyZWFkL2N1cnJlbnQucnMAYXV0b21lcmdlL3NyYy9zdG9yYWdlL2RvY3VtZW50LnJzAGxpYnJhcnkvYWxsb2Mvc3JjL2ZtdC5ycwAvaG9tZS9ydW5uZXIvd29yay9hdXRvbWVyZ2UvYXV0b21lcmdlL3J1c3QvYXV0b21lcmdlL3NyYy9hdXRvY29tbWl0LnJzAGF1dG9tZXJnZS9zcmMvb3Bfc2V0Mi9vcF9zZXQucnMAbGlicmFyeS9jb3JlL3NyYy9udW0vZGl5X2Zsb2F0LnJzAGF1dG9tZXJnZS9zcmMvb3Bfc2V0Mi9wYXJlbnRzLnJzAGF1dG9tZXJnZS9zcmMvc3RvcmFnZS9jaGFuZ2UvY2hhbmdlX2FjdG9ycy5ycwAvaG9tZS9ydW5uZXIvd29yay9hdXRvbWVyZ2UvYXV0b21lcmdlL3J1c3QvYXV0b21lcmdlL3NyYy90ZXh0X2RpZmYvbXllcnMucnMAbGlicmFyeS9jb3JlL3NyYy9mbXQvYnVpbGRlcnMucnMAYXV0b21lcmdlL3NyYy9zdG9yYWdlL2NoYW5nZS9jaGFuZ2Vfb3BfY29sdW1ucy5ycwBhdXRvbWVyZ2Uvc3JjL3N0b3JhZ2UvY29sdW1ucy5ycwBhdXRvbWVyZ2Uvc3JjL29wX3NldDIvY29sdW1ucy5ycwAvaG9tZS9ydW5uZXIvd29yay9hdXRvbWVyZ2UvYXV0b21lcmdlL3J1c3QvYXV0b21lcmdlL3NyYy9pdGVyL3NwYW5zLnJzAGF1dG9tZXJnZS9zcmMvY29sdW1uYXIvZW5jb2RpbmcvZGVjb2RhYmxlX2ltcGxzLnJzAC9ydXN0Yy8yOTQ4Mzg4M2VlZDY5ZDVmYjRkYjAxOTY0Y2RmMmFmNGQ4NmU5Y2IyL2xpYnJhcnkvc3RkL3NyYy9pby9pbXBscy5ycwAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zZXJkZV9jb3JlLTEuMC4yMjgvc3JjL2RlL2ltcGxzLnJzAC9ob21lL3J1bm5lci93b3JrL2F1dG9tZXJnZS9hdXRvbWVyZ2UvcnVzdC9hdXRvbWVyZ2Uvc3JjL3RleHRfZGlmZi91dGlscy5ycwBhdXRvbWVyZ2Uvc3JjL21hcmtzLnJzAC9ob21lL3J1bm5lci93b3JrL2F1dG9tZXJnZS9hdXRvbWVyZ2UvcnVzdC9hdXRvbWVyZ2Uvc3JjL3R5cGVzLnJzAGF1dG9tZXJnZS9zcmMvb3Bfc2V0Mi90eXBlcy5ycwAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi91bmljb2RlLXNlZ21lbnRhdGlvbi0xLjEzLjIvc3JjL3RhYmxlcy5ycwAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi93YXNtLWJpbmRnZW4tMC4yLjExOC9zcmMvY29udmVydC9zbGljZXMucnMAL3J1c3RjLzI5NDgzODgzZWVkNjlkNWZiNGRiMDE5NjRjZGYyYWY0ZDg2ZTljYjIvbGlicmFyeS9zdGQvc3JjL3N5cy9zeW5jL29uY2Uvbm9fdGhyZWFkcy5ycwBsaWJyYXJ5L2FsbG9jL3NyYy9mZmkvY19zdHIucnMAL3J1c3RjLzI5NDgzODgzZWVkNjlkNWZiNGRiMDE5NjRjZGYyYWY0ZDg2ZTljYjIvbGlicmFyeS9hbGxvYy9zcmMvc3RyLnJzAGF1dG9tZXJnZS9zcmMvb3Bfc2V0Mi9jaGFuZ2UvY29sbGVjdG9yLnJzAC9ydXN0Yy8yOTQ4Mzg4M2VlZDY5ZDVmYjRkYjAxOTY0Y2RmMmFmNGQ4NmU5Y2IyL2xpYnJhcnkvY29yZS9zcmMvaXRlci90cmFpdHMvaXRlcmF0b3IucnMAL2hvbWUvcnVubmVyL3dvcmsvYXV0b21lcmdlL2F1dG9tZXJnZS9ydXN0L2hleGFuZS9zcmMvY3Vyc29yLnJzAGF1dG9tZXJnZS9zcmMvY3Vyc29yLnJzAGF1dG9tZXJnZS9zcmMvY29sdW1uYXIvZW5jb2RpbmcvY29sX2Vycm9yLnJzAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3NlcmRlX2pzb24tMS4wLjE0OS9zcmMvZXJyb3IucnMAL2hvbWUvcnVubmVyL3dvcmsvYXV0b21lcmdlL2F1dG9tZXJnZS9ydXN0L2hleGFuZS9zcmMvc2xhYi93cml0ZXIucnMAYXV0b21lcmdlL3NyYy9vcF9zZXQyL29wX3NldC9vcF9pdGVyLnJzAC9ydXN0Yy8yOTQ4Mzg4M2VlZDY5ZDVmYjRkYjAxOTY0Y2RmMmFmNGQ4NmU5Y2IyL2xpYnJhcnkvY29yZS9zcmMvc2xpY2UvaXRlci5ycwAvaG9tZS9ydW5uZXIvd29yay9hdXRvbWVyZ2UvYXV0b21lcmdlL3J1c3QvYXV0b21lcmdlL3NyYy90cmFuc2FjdGlvbi9pbm5lci5ycwAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi90cmFjaW5nLWNvcmUtMC4xLjM2L3NyYy9kaXNwYXRjaGVyLnJzAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL21pbml6X294aWRlLTAuOC45L3NyYy9pbmZsYXRlL291dHB1dF9idWZmZXIucnMAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvbWluaXpfb3hpZGUtMC44Ljkvc3JjL2RlZmxhdGUvYnVmZmVyLnJzAC9ob21lL3J1bm5lci93b3JrL2F1dG9tZXJnZS9hdXRvbWVyZ2UvcnVzdC9oZXhhbmUvc3JjL2VuY29kZXIucnMAYXV0b21lcmdlL3NyYy9zdG9yYWdlL2NvbHVtbnMvY29sdW1uX2J1aWxkZXIucnMAYXV0b21lcmdlL3NyYy9wYXRjaGVzL3BhdGNoX2J1aWxkZXIucnMAYXV0b21lcmdlL3NyYy9zeW5jL21lc3NhZ2VfYnVpbGRlci5ycwBhdXRvbWVyZ2Uvc3JjL3N0b3JhZ2UvYnVuZGxlL2J1aWxkZXIucnMAYXV0b21lcmdlLXdhc20vc3JjL2ludGVyb3AucnMAYXV0b21lcmdlL3NyYy9vcF9zZXQyL29wX3NldC9mb3VuZF9vcC5ycwBhdXRvbWVyZ2Uvc3JjL29wX3NldDIvb3AucnMAL3J1c3RjLzI5NDgzODgzZWVkNjlkNWZiNGRiMDE5NjRjZGYyYWY0ZDg2ZTljYjIvbGlicmFyeS9hbGxvYy9zcmMvY29sbGVjdGlvbnMvYnRyZWUvbWFwLnJzAC9ydXN0Yy8yOTQ4Mzg4M2VlZDY5ZDVmYjRkYjAxOTY0Y2RmMmFmNGQ4NmU5Y2IyL2xpYnJhcnkvY29yZS9zcmMvc3RyL3BhdHRlcm4ucnMAL3J1c3RjLzI5NDgzODgzZWVkNjlkNWZiNGRiMDE5NjRjZGYyYWY0ZDg2ZTljYjIvbGlicmFyeS9jb3JlL3NyYy9vcHRpb24ucnMAYXV0b21lcmdlL3NyYy90cmFuc2FjdGlvbi9tYW51YWxfdHJhbnNhY3Rpb24ucnMAYXV0b21lcmdlL3NyYy9zdG9yYWdlL2RvY3VtZW50L2NvbXByZXNzaW9uLnJzAGxpYnJhcnkvY29yZS9zcmMvbnVtL2ZsdDJkZWMvc3RyYXRlZ3kvZHJhZ29uLnJzAGF1dG9tZXJnZS9zcmMvc3RvcmFnZS9jb2x1bW5zL3Jhd19jb2x1bW4ucnMAYXV0b21lcmdlL3NyYy9jb2x1bW5hci9jb2x1bW5fcmFuZ2UvYm9vbGVhbi5ycwBsaWJyYXJ5L2NvcmUvc3JjL251bS9iaWdudW0ucnMAYXV0b21lcmdlL3NyYy9zeW5jL2Jsb29tLnJzAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL21pbml6X294aWRlLTAuOC45L3NyYy9pbmZsYXRlL3N0cmVhbS5ycwAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9taW5pel9veGlkZS0wLjguOS9zcmMvZGVmbGF0ZS9zdHJlYW0ucnMAYXV0b21lcmdlL3NyYy9zdG9yYWdlL2NodW5rLnJzAGF1dG9tZXJnZS9zcmMvY2xvY2sucnMAL3J1c3RjLzI5NDgzODgzZWVkNjlkNWZiNGRiMDE5NjRjZGYyYWY0ZDg2ZTljYjIvbGlicmFyeS9zdGQvc3JjL3N5bmMvbGF6eV9sb2NrLnJzAGhleGFuZS9zcmMvcGFjay5ycwAvaG9tZS9ydW5uZXIvd29yay9hdXRvbWVyZ2UvYXV0b21lcmdlL3J1c3QvYXV0b21lcmdlL3NyYy9jaGFuZ2VfZ3JhcGgucnMAL2hvbWUvcnVubmVyL3dvcmsvYXV0b21lcmdlL2F1dG9tZXJnZS9ydXN0L2F1dG9tZXJnZS9zcmMvcGF0Y2hlcy9wYXRjaC5ycwAvaG9tZS9ydW5uZXIvd29yay9hdXRvbWVyZ2UvYXV0b21lcmdlL3J1c3QvYXV0b21lcmdlL3NyYy9vcF9zZXQyL2NoYW5nZS9iYXRjaC5ycwAvaG9tZS9ydW5uZXIvd29yay9hdXRvbWVyZ2UvYXV0b21lcmdlL3J1c3QvYXV0b21lcmdlL3NyYy9wYXRjaGVzL3BhdGNoX2xvZy5ycwAvcnVzdGMvMjk0ODM4ODNlZWQ2OWQ1ZmI0ZGIwMTk2NGNkZjJhZjRkODZlOWNiMi9saWJyYXJ5L2FsbG9jL3NyYy9zdHJpbmcucnMAbGlicmFyeS9zdGQvc3JjL3Bhbmlja2luZy5ycwAvcnVzdGMvMjk0ODM4ODNlZWQ2OWQ1ZmI0ZGIwMTk2NGNkZjJhZjRkODZlOWNiMi9saWJyYXJ5L2NvcmUvc3JjL2lvL2JvcnJvd2VkX2J1Zi5ycwAvaG9tZS9ydW5uZXIvd29yay9hdXRvbWVyZ2UvYXV0b21lcmdlL3J1c3QvYXV0b21lcmdlL3NyYy90ZXh0X2RpZmYucnMAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvd2FzbS1iaW5kZ2VuLTAuMi4xMTgvc3JjL2V4dGVybnJlZi5ycwBhdXRvbWVyZ2Uvc3JjL2NvbHVtbmFyL2NvbHVtbl9yYW5nZS92YWx1ZS5ycwBhdXRvbWVyZ2Uvc3JjL2NoYW5nZV9xdWV1ZS5ycwAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi90cmFjaW5nLWNvcmUtMC4xLjM2L3NyYy9jYWxsc2l0ZS5ycwBhdXRvbWVyZ2Uvc3JjL2h5ZHJhdGUucnMAL3J1c3RjLzI5NDgzODgzZWVkNjlkNWZiNGRiMDE5NjRjZGYyYWY0ZDg2ZTljYjIvbGlicmFyeS9hbGxvYy9zcmMvY29sbGVjdGlvbnMvYnRyZWUvbmF2aWdhdGUucnMAaGV4YW5lL3NyYy9hZ2dyZWdhdGUucnMAYXV0b21lcmdlL3NyYy9zdG9yYWdlL3BhcnNlLnJzAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL21pbml6X294aWRlLTAuOC45L3NyYy9pbmZsYXRlL2NvcmUucnMAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvbWluaXpfb3hpZGUtMC44Ljkvc3JjL2RlZmxhdGUvY29yZS5ycwAvcnVzdGMvMjk0ODM4ODNlZWQ2OWQ1ZmI0ZGIwMTk2NGNkZjJhZjRkODZlOWNiMi9saWJyYXJ5L2NvcmUvc3JjL2Nsb25lLnJzAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3VuaWNvZGUtc2VnbWVudGF0aW9uLTEuMTMuMi9zcmMvZ3JhcGhlbWUucnMAYXV0b21lcmdlL3NyYy9jb2x1bW5hci9lbmNvZGluZy9ybGUucnMAYXV0b21lcmdlL3NyYy9jb2x1bW5hci9jb2x1bW5fcmFuZ2UvcmxlLnJzAC9ob21lL3J1bm5lci93b3JrL2F1dG9tZXJnZS9hdXRvbWVyZ2UvcnVzdC9oZXhhbmUvc3JjL3JsZS5ycwBsaWJyYXJ5L2NvcmUvc3JjL3VuaWNvZGUvcHJpbnRhYmxlLnJzAGF1dG9tZXJnZS13YXNtL3NyYy9leHBvcnRfY2FjaGUucnMAL2hvbWUvcnVubmVyL3dvcmsvYXV0b21lcmdlL2F1dG9tZXJnZS9ydXN0L2F1dG9tZXJnZS9zcmMvYXV0b21lcmdlLnJzAGF1dG9tZXJnZS9zcmMvc3RvcmFnZS9jaGFuZ2UucnMAYXV0b21lcmdlL3NyYy9jaGFuZ2UucnMAYXV0b21lcmdlL3NyYy9vcF9zZXQyL2NoYW5nZS5ycwBhdXRvbWVyZ2Uvc3JjL3N0b3JhZ2UvYnVuZGxlL3N0b3JhZ2UucnMAYXV0b21lcmdlL3NyYy9zZXF1ZW5jZV90cmVlLnJzAC9ob21lL3J1bm5lci93b3JrL2F1dG9tZXJnZS9hdXRvbWVyZ2UvcnVzdC9oZXhhbmUvc3JjL3NsYWIvdHJlZS5ycwAvcnVzdGMvMjk0ODM4ODNlZWQ2OWQ1ZmI0ZGIwMTk2NGNkZjJhZjRkODZlOWNiMi9saWJyYXJ5L2FsbG9jL3NyYy9jb2xsZWN0aW9ucy9idHJlZS9ub2RlLnJzAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3NlcmRlX2pzb24tMS4wLjE0OS9zcmMvZGUucnMAL3J1c3RjLzI5NDgzODgzZWVkNjlkNWZiNGRiMDE5NjRjZGYyYWY0ZDg2ZTljYjIvbGlicmFyeS9zdGQvc3JjL3N5bmMvcG9pc29uL29uY2UucnMAL3J1c3RjLzI5NDgzODgzZWVkNjlkNWZiNGRiMDE5NjRjZGYyYWY0ZDg2ZTljYjIvbGlicmFyeS9hbGxvYy9zcmMvc2xpY2UucnMAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvb25jZV9jZWxsLTEuMjEuNC9zcmMvaW1wX3N0ZC5ycwBhdXRvbWVyZ2Uvc3JjL2xlZ2FjeS9tb2QucnMAL3J1c3QvZGVwcy9oYXNoYnJvd24tMC4xNS40L3NyYy9yYXcvbW9kLnJzAGxpYnJhcnkvY29yZS9zcmMvZm10L21vZC5ycwBsaWJyYXJ5L2NvcmUvc3JjL3N0ci9tb2QucnMAL3J1c3RjLzI5NDgzODgzZWVkNjlkNWZiNGRiMDE5NjRjZGYyYWY0ZDg2ZTljYjIvbGlicmFyeS9zdGQvc3JjL2lvL21vZC5ycwAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zZXJkZV9jb3JlLTEuMC4yMjgvc3JjL2RlL21vZC5ycwBsaWJyYXJ5L3N0ZC9zcmMvdGhyZWFkL21vZC5ycwAvcnVzdGMvMjk0ODM4ODNlZWQ2OWQ1ZmI0ZGIwMTk2NGNkZjJhZjRkODZlOWNiMi9saWJyYXJ5L2FsbG9jL3NyYy9yYXdfdmVjL21vZC5ycwBsaWJyYXJ5L2NvcmUvc3JjL251bS9mbHQyZGVjL21vZC5ycwBhdXRvbWVyZ2Uvc3JjL2NvbHVtbmFyL2NvbHVtbl9yYW5nZS9vYmpfaWQucnMAL3J1c3RjLzI5NDgzODgzZWVkNjlkNWZiNGRiMDE5NjRjZGYyYWY0ZDg2ZTljYjIvbGlicmFyeS9hbGxvYy9zcmMvdmVjL3NwZWNfZnJvbV9pdGVyX25lc3RlZC5ycwAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9taW5pel9veGlkZS0wLjguOS9zcmMvZGVmbGF0ZS9zdG9yZWQucnMAYXV0b21lcmdlL3NyYy9zdG9yYWdlL2xvYWQucnMAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc2VyZGVfanNvbi0xLjAuMTQ5L3NyYy9yZWFkLnJzAC9ydXN0L2RlcHMvZGxtYWxsb2MtMC4yLjkvc3JjL2RsbWFsbG9jLnJzAGxpYnJhcnkvc3RkL3NyYy9hbGxvYy5ycwBhdXRvbWVyZ2Uvc3JjL3N5bmMucnMAL3J1c3RjLzI5NDgzODgzZWVkNjlkNWZiNGRiMDE5NjRjZGYyYWY0ZDg2ZTljYjIvbGlicmFyeS9hbGxvYy9zcmMvc3luYy5ycwAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi90aW55dmVjLTEuMTEuMC9zcmMvYXJyYXl2ZWMucnMAYXV0b21lcmdlLXdhc20vc3JjL2xpYi5ycwAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9jb25zb2xlX2Vycm9yX3BhbmljX2hvb2stMC4xLjcvc3JjL2xpYi5ycwAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zbW9sX3N0ci0wLjMuNi9zcmMvbGliLnJzAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2pzLXN5cy0wLjMuOTUvc3JjL2xpYi5ycwAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9zZXJkZS13YXNtLWJpbmRnZW4tMC42LjUvc3JjL2xpYi5ycwAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9vbmNlX2NlbGwtMS4yMS40L3NyYy9saWIucnMAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvaGV4LTAuNC4zL3NyYy9saWIucnMAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvaXRlcnRvb2xzLTAuMTQuMC9zcmMvbGliLnJzAGF1dG9tZXJnZS9zcmMvY29sdW1uYXIvY29sdW1uX3JhbmdlL2RlbHRhLnJzAC9ob21lL3J1bm5lci93b3JrL2F1dG9tZXJnZS9hdXRvbWVyZ2UvcnVzdC9oZXhhbmUvc3JjL2RlbHRhLnJzAC9ob21lL3J1bm5lci93b3JrL2F1dG9tZXJnZS9hdXRvbWVyZ2UvcnVzdC9oZXhhbmUvc3JjL2NvbHVtbmRhdGEucnMAAAABFhAAbgAAAHkAAABHAAAAARYQAG4AAAB6AAAAGgAAAAAAAAAIAAAABAAAADgAAABjYWxsZWQgYFJlc3VsdDo6dW53cmFwKClgIG9uIGFuIGBFcnJgIHZhbHVlAAEWEABuAAAAeQAAAD4AAAAbAxAARwAAAFcEAAA5AAAAGwMQAEcAAADjAwAAOQAAABsDEABHAAAAJwQAADkAAAAbAxAARwAAAFEEAAA5AAAAGwMQAEcAAAByBAAAOQAAABsDEABHAAAAfQQAADkAAAAbAxAARwAAAPkDAAA5AAAAGwMQAEcAAABgBAAAOQAAABsDEABHAAAAjgQAADkAAAAbAxAARwAAAJoEAAA5AAAAGwMQAEcAAADYAwAAOQAAABsDEABHAAAAMwQAADkAAAAbAxAARwAAAA4EAAA5AAAAGwMQAEcAAADuAwAAOQAAABsDEABHAAAAGwQAADkAAAAbAxAARwAAAAQEAAA5AAAAaW52YWxpZCB2YWx1ZTogLCBleHBlY3RlZCAAADgjEAAPAAAARyMQAAsAAABtaXNzaW5nIGZpZWxkIGBgZCMQAA8AAABzIxAAAQAAAHVua25vd24gZmllbGQgYGAsIGV4cGVjdGVkIACEIxAADwAAAJMjEAAMAAAAaW52YWxpZCBsZW5ndGggALAjEAAPAAAARyMQAAsAAABkdXBsaWNhdGUgZmllbGQgYAAAANAjEAARAAAAcyMQAAEAAAB1bmtub3duIHZhcmlhbnQgYAAAAPQjEAARAAAAkyMQAAwAAAAAAAAAAAAAAAEAAAA5AAAAAAAAAAAAAAABAAAAOgAAAAAAAAAAAAAAAQAAADsAAAAAAAAAAAAAAAEAAAA8AAAAAAAAAAAAAAABAAAAPQAAAAAAAAAAAAAAAQAAAD4AAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlyxgQAF8AAACiBAAAIgAAAMsYEABfAAAAmAQAACYAAAAsGBAAQwAAAFcFAAAcAAAAGBwQAF8AAAA0AAAABQAAABgcEABfAAAAEwAAAAUAAABjYXBhY2l0eSBvdmVyZmxvd251bGwAAACKCBAAWQAAAOsHAAAJAAAA//////////8YJRAAAAAAAAAAAAAAAAAAb3BzYWN0b3JoYXNoc2Vxc3RhcnRPcHRpbWVtZXNzYWdlZGVwc2V4dHJhX2J5dGVzc3RydWN0IENoYW5nZSB3aXRoIDkgZWxlbWVudHMAAABgJRAAHQAAAAAAAAAIAAAABAAAAD8AAABjb3VudGVydGltZXN0YW1wYnl0ZXN1aW50aW50ZmxvYXQ2NHVuZGVmaW5lZJglEAAHAAAAnyUQAAkAAACoJRAABQAAAK0lEAAEAAAAsSUQAAMAAAC0JRAABwAAALslEAAJAAAAYSBzZXF1ZW5jZQAAmgUQAGUAAACNBAAAHAAAAGFjdGlvbm9iamtleWVsZW1JZHByZWRpbnNlcnRkYXRhdHlwZXZhbHVlbmFtZWV4cGFuZHJlZnJlcXVlc3RUeXBlAAAAMCUQAAMAAABRJRAABAAAAEolEAAHAAAAPCUQAAMAAAAzJRAABQAAAE4mEAALAAAAYSBudW1iZXKMJhAACAAAAAAAAAAAAAAAAQAAAEAAAAAAAAAAAAAAAAEAAABBAAAAAAAAAAAAAAABAAAAQgAAAAEWEABuAAAAdAIAABsAAAABFhAAbgAAAHQCAABDAAAAARYQAG4AAAB3AgAAQwAAAAEWEABuAAAAfwIAADIAAAABFhAAbgAAAIYCAAAsAAAAARYQAG4AAACKAgAAKQAAAAEWEABuAAAAuQIAAB0AAAAAAwAAbwMAAIMEAACJBAAAkQUAAL0FAAC/BQAAvwUAAMEFAADCBQAAxAUAAMUFAADHBQAAxwUAABAGAAAaBgAASwYAAF8GAABwBgAAcAYAANYGAADcBgAA3wYAAOQGAADnBgAA6AYAAOoGAADtBgAAEQcAABEHAAAwBwAASgcAAKYHAACwBwAA6wcAAPMHAAD9BwAA/QcAABYIAAAZCAAAGwgAACMIAAAlCAAAJwgAACkIAAAtCAAAWQgAAFsIAACXCAAAnwgAAMoIAADhCAAA4wgAAAIJAAA6CQAAOgkAADwJAAA8CQAAQQkAAEgJAABRCQAAVwkAAGIJAABjCQAAgQkAAIEJAAC8CQAAvAkAAL4JAAC+CQAAwQkAAMQJAADXCQAA1wkAAOIJAADjCQAA/gkAAP4JAAABCgAAAgoAADwKAAA8CgAAQQoAAEIKAABHCgAASAoAAEsKAABNCgAAUQoAAFEKAABwCgAAcQoAAHUKAAB1CgAAgQoAAIIKAAC8CgAAvAoAAMEKAADFCgAAxwoAAMgKAADiCgAA4woAAPoKAAD/CgAAAQsAAAELAAA8CwAAPAsAAD4LAAA/CwAAQQsAAEQLAABVCwAAVwsAAGILAABjCwAAggsAAIILAAC+CwAAvgsAAMALAADACwAAzQsAAM0LAADXCwAA1wsAAAAMAAAADAAABAwAAAQMAAA8DAAAPAwAAD4MAABADAAARgwAAEgMAABKDAAATAwAAFUMAABWDAAAYgwAAGMMAACBDAAAgQwAALwMAAC8DAAAvwwAAMAMAADCDAAAwgwAAMYMAADIDAAAygwAAM0MAADVDAAA1gwAAOIMAADjDAAAAA0AAAENAAA7DQAAPA0AAD4NAAA+DQAAQQ0AAEQNAABXDQAAVw0AAGINAABjDQAAgQ0AAIENAADKDQAAyg0AAM8NAADPDQAA0g0AANQNAADWDQAA1g0AAN8NAADfDQAAMQ4AADEOAAA0DgAAOg4AAEcOAABODgAAsQ4AALEOAAC0DgAAvA4AAMgOAADODgAAGA8AABkPAAA1DwAANQ8AADcPAAA3DwAAOQ8AADkPAABxDwAAfg8AAIAPAACE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SW52YWxpZFV0ZjhJbnZhbGlkVmFsdWVJbnZhbGlkTGVuZ3RoQmFkRm9ybWF0SW52YWxpZFJlc3VtZQBiBhAAQgAAAIQBAAAxAAAAaW5kZXhTdGFydEVuZAAAAAAAAAAEAAAABAAAAGEAAABPcAAAAAAAAAQAAAAEAAAAYgAAAE1hcmtTZXRtYXJrcwAAAAAIAAAABAAAAGMAAABPYmpNZXRhaWR0eXBUYWJsZUxpc3RUZXh0AAAAAAAAAAgAAAAIAAAAZAAAAAAAAAAEAAAABAAAAGUAAABDb3VudGVyY3VycmVudAAAAAAAAAQAAAAEAAAAZgAAAE9wQ3Vyc29yY3RybW92ZV9jdXJzb3IAAAAAAAAEAAAABAAAAGcAAABVdGY4AAAAAAQAAAAEAAAAaAAAAFBhcnNlTGVmdG92ZXJEYXRhV3JvbmdDaHVua1R5cGUAAAAAAAQAAAAEAAAAaQAAAFV0ZjE2QmVmb3JlQWZ0ZXIAAAAABAAAAAQAAABqAAAAQnl0ZXNTdHJJbnQAAAAAAAQAAAAEAAAAawAAAFVpbnQAAAAABAAAAAQAAABsAAAARjY0AAAAAAAEAAAABAAAAG0AAABUaW1lc3RhbXBCb29sZWFuAAAAAAEAAAABAAAAbgAAAFVua25vd250eXBlX2NvZGVOdWxsTm9uZQAAAAAEAAAABAAAAG8AAABTb21lRmFpbEludmFsaWRJbmRleEludmFsaWRLZXlCYWRJbmNyZW1lbnRJbnZhbGlkTWFwT3BJbnZhbGlkTGlzdE9wAAAAAAAEAAAABAAAAHAAAABJbnZhbGlkVGV4dE9wQXBwbHlJbnZhbGlkUHJvcEludmFsaWRFbmNvZGluZ9QEEABHAAAAXgEAABEAAABJbnZhbGlkQ2hhbmdlQ29sdW1uc0ludmFsaWRPcHNDb2x1bW5zSW52YWxpZEJ1bmRsZUNvbHVtbkludmFsaWRCdW5kbGVDaGFuZ2VJbmZsYXRlRG9jdW1lbnRCYWRDaGVja3N1bQAAAAsOEABLAAAAMAgAAB8AAAAAAAAABAAAAAQAAABxAAAAR3JhcGhlbWUAAAAABAAAAAQAAAByAAAAQ2hhbmdlR3JhcGhEZWZsYXRlAAAAAAAABAAAAAQAAABzAAAARHVwbGljYXRlU2VxTnVtYmVyRHVwbGljYXRlQWN0b3JJZEludmFsaWRBY3RvcklkSW52YWxpZEFjdG9ySW5kZXgAAAAAAAAABAAAAAQAAAB0AAAASW52YWxpZENoYW5nZUhhc2hCeXRlc0ludmFsaWRDaGFyYWN0ZXIAAAAAAAAEAAAABAAAAHUAAABJbnZhbGlkSGFzaEludmFsaWRPYmpJZEludmFsaWRPYmpJZEZvcm1hdEludmFsaWRPcEludmFsaWRTZXEAAAAABAAAAAQAAAB2AAAASW52YWxpZEN1cnNvckludmFsaWRDdXJzb3JPcEludmFsaWRDdXJzb3JGb3JtYXQARgAAAAwAAAAEAAAAdwAAAEludmFsaWRWYWx1ZVR5cGVleHBlY3RlZHVuZXhwZWN0ZWQAAAAAAAAEAAAABAAAAHgAAABMb2FkAAAAAAQAAAAEAAAAeQAAAExvYWRDaGFuZ2VFcnJvck1pc3NpbmdDb3VudGVyTWlzc2luZ0hhc2hNaXNzaW5nRGVwc05vbkNoYW5nZUNvbXByZXNzZWROb3RBbk9iamVjdAAAAAAAAAAEAAAABAAAAHoAAABIeWRyYXRlRXJyb3JQYXRjaExvZ01pc21hdGNoAAAAAAQAAAAEAAAAewAAAEVuY29kaW5nRXJyb3JVbmJ1bmRsZQAAAAAAAAAEAAAABAAAAHwAAABDb2RlUG9pbnQAAAAAAAAABAAAAAQAAAAOAAAALBgQAEMAAAD1AAAAGAAAAGFzc2VydGlvbiBmYWlsZWQ6ICFzZWxmLmlzX2VtcHR5KCkAACwYEABDAAAAAgEAAAkAAAAsGBAAQwAAAAQBAAAjAAAALBgQAEMAAAB1AQAACQAAAH0AAAAMAAAABAAAAH4AAADjCBAAQAAAAEABAAAjAAAATWlzc2luZ0RlcAAAAAAAAAQAAAAEAAAAfwAAAEF1dG9tZXJnZQAAAIAAAAA4AAAACAAAAIEAAABQdXRNYXBjb25mbGljdFB1dFNlcQAAAAAEAAAABAAAAIIAAABJbnNlcnR2YWx1ZXODAAAAIAAAAAQAAACEAAAAAAAAAAQAAAAEAAAAhQAAAFNwbGljZVRleHQAAIYAAAAMAAAABAAAAIcAAABJbmNyZW1lbnRwcm9wAAAAAAAAAAQAAAAEAAAAiAAAAENvbmZsaWN0RGVsZXRlTWFwRGVsZXRlU2VxbGVuZ3RoAAAAAAQAAAAE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d2FzIG5vdCBhIHN0cmluZ2JhZCBzaGFyZWRIZWFkczogAACxTRAAEQAAAGJhZCBsYXN0U2VudEhlYWRzOiAAzE0QABMAAABiYWQgdGhlaXJIZWFkczog6E0QABAAAABiYWQgdGhlaXJOZWVkOiAAAE4QAA8AAABiYWQgdGhlaXJIYXZlOiAAGE4QAA8AAABiYWQgc2VudEhhc2hlczogME4QABAAAABpbkZsaWdodCBub3QgYSBib29sZWFuYmFkIHRoZWlyQ2FwYWJpbGl0aWVzOiAAAABeThAAFwAAAEdldFByb3Bwcm9wZXJ0eXVuYWJsZSB0byBnZXQgcHJvcGVydHkgAACPThAAFwAAANFMEAACAAAAU2V0UHJvcGVycm9yIHNldHRpbmcgcHJvcGVydHkgIG9uIEpTIHZhbHVlOiC/ThAAFwAAANZOEAAOAAAAAAAAAAQAAAAEAAAAnAAAAGJhZCBsYXN0U3luYzogAAAETxAADgAAAGJhZCBibG9vbTogABxPEAALAAAAdmFsdWUgd2FzIG5vdCBhbiBhcnJheWVycm9yIGxvYWRpbmcgaGF2ZSBhdCBpbmRleCAAAEZPEAAcAAAA0UwQAAIAAAB0aGUgdmFsdWUgd2FzIG5vdCBhIFVpbnQ4QXJyYXl1bmFibGUgdG8gZGVjb2RlOiCSTxAAEgAAAAAAAAAEAAAABAAAAJ0AAABTZXREZWxldGVlcnIAAAAABAAAAAQAAACeAAAAU2V0SGlkZGVuSW52YWxpZERhdGFIYW5kbGVyQ2FsbERhdGFIYW5kbGVyAAAAAAAABAAAAAQAAACfAAAASW52YWxpZERhdGF0eXBlR2V0U3BsaWNlQ2FsbFNwbGljZVJlZmxlY3RTZXRJbnZhbGlkUm9vdE1pc3NpbmdDaGlsZHVuYWJsZSB0byBkZWxldGUgcHJvcCAAAABXUBAAFgAAANFMEAACAAAAdW5hYmxlIHRvIHNldCBoaWRkZW4gcHJvcGVydHkgAACAUBAAHgAAAGRhdGEgaGFuZGxlciBmb3IgdHlwZSAgZGlkIG5vdCByZXR1cm4gYSB2YWxpZCBvYmplY3SoUBAAFgAAAL5QEAAeAAAAZXJyb3IgY2FsbGluZyBkYXRhIGhhbmRsZXIgZm9yIHR5cGUg7FAQACQAAADRTBAAAgAAAHVuYWJsZSB0byBnZXQgdGhlIHNwbGljZSBmdW5jdGlvbjogACBREAAjAAAAZXJyb3IgY2FsbGluZyBzcGxpY2U6IAAATFEQABYAAAByZWZsZWN0IHNldCBmYWlsZWRpbnZhbGlkIHJvb3QgcHJvY2Vzc2VkbWlzc2luZyBjaGlsZCBpbiBleHBvcnRjYW5ub3QgZGVsZXRlIGZyb20gYSBzZXFjYW5ub3QgcHV0IGtleSBpbiBzZXFjYW5ub3QgaW5jcmVtZW50IGEgbm9uLW51bWVyaWMgdmFsdWVjYW5ub3QgaW5jcmVtZW50IGEga2V5IGluIGEgc2VxY2Fubm90IGluY3JlbWVudCBpbmRleCBpbiBhIG1hcGNhbm5vdCBpbnNlcnQgaW50byBhIG1hcGNhbm5vdCBzcGxpY2UgaW50byBhIG1hcGNhbm5vdCBzcGxpY2UgdGV4dCBpbnRvIGEgc2VxY2Fubm90IHNwbGljZSB0ZXh0IGludG8gYSBtYXBjYW5ub3QgcHV0IGEgc2VxIGluZGV4IGluIGEgbWFwY2Fubm90IG1hcmsgYSBzcGFuIGluIGEgbWFwY2Fubm90IGhhdmUgYmxvY2tzIGluIGEgbWFwYXJyYXkgcGF0Y2ggYXBwbGllZCB0byBub24gYXJyYXl1bmFibGUgdG8gcmVhZCBoYXZlczogABlTEAAWAAAAY291bGQgbm90IHJlYWQgY2hhbmdlczogOFMQABgAAABjb3VsZCBub3QgcmVhZCAnY2hhbmdlcycgYXMgVWludDhBcnJheTogWFMQACgAAABjb3VsZCBub3QgcmVhZCBoZWFkczogAACIUxAAFgAAAGNvdWxkIG5vdCByZWFkIG5lZWQ6IAAAAKhTEAAVAAAAbm8gJ2NoYW5nZXMnIHByb3BlcnR5YmFkIHN1cHBvcnRlZF9jYXBhYmlsaXRpZXM6IAAAAN1TEAAcAAAAd2hvbGVEb2MgY2Fubm90IGJlIHVzZWQgaW4gYSB0eXBlOiB2MSBtZXNzYWdlb2JqIGlkIHdhcyBub3QgYSBzdHJpbmdpbnZhbGlkIHBhdGggAAAASFQQAA0AAADRTBAAAgAAAHVuYWJsZSB0byBpbXBvcnQgb2JqZWN0IGlkOiBoVBAAHAAAAHBhdGggY29tcG9uZW50ICAoKSBzaG91bGQgYmUgYW4gaW50ZWdlciB0byBpbmRleCBhIHNlcXVlbmNlAIxUEAAPAAAAm1QQAAIAAACdVBAAKgAAACkgcmVmZXJlbmNlZCBhIG5vbmV4aXN0ZW50IG9iamVjdAAAAIxUEAAPAAAAm1QQAAIAAADgVBAAIQAAAHBhdGggZGlkIG5vdCByZWZlciB0byBhbiBvYmplY3RleHBhbmQgbXVzdCBiZSAnbGVmdCcsICdyaWdodCcsICdib3RoJywgb3IgJ25vbmUnIC0gaXMgJ3JpZ2h0JyBieSBkZWZhdWx0Z2l2ZW4gcHJvcGVydHkgd2FzIG5vdCBhIHN0cmluZyBvciBpbnRlZ2Vybm90IGEgVWludDhBcnJheWNhcGFiaWxpdGllcyB3YXMgbm90IGFuIGFycmF5ZWxlbWVudCAgd2FzIG5vdCBhIHN0cmluZ9tVEAAIAAAA41UQABEAAAAgd2FzIG5vdCBhIHZhbGlkIGNhcGFiaWxpdHk6IAAAANtVEAAIAAAABFYQAB0AAABjaHVuayBsaXN0IHdhcyBub3QgYW4gYXJyYXkA21UQAAgAAACWTBAAFQAAAG11c3QgYmUgYSBibG9jayBvYmplY3Qgb3IgYSB0ZXh0IHNwYW5ibG9jayBtdXN0IGJlIGFuIG9iamVjdCd0eXBlJyBwcm9wZXJ0eSBtdXN0IGJlIGEgc3RyaW5naW52YWxpZCAndHlwZScgcHJvcGVydHk6IAAAALxWEAAZAAAAJ3RleHQnIHByb3BlcnR5IG11c3QgYmUgYSBzdHJpbmdpbnZhbGlkIG1hcmtzOiAAAFcQAA8AAABtYXJrcyB3ZXJlIG5vdCBhbiBvYmplY3R1cGRhdGVTcGFucyBhcmdzIG11c3QgYmUgYW4gYXJyYXlibG9jayAgbm90IGEgdmFsaWQgYmxvY2s6IABRVxAABgAAAFdXEAAUAAAAdmFsdWUgbm90IHByaW1pdGl2ZWludmFsaWQgaW1wb3J0OiAAj1cQABAAAABiaWdudW0gIGxhcmdlciB0aGFuIG1heCCoVxAABwAAAK9XEAARAAAAIHNtYWxsZXIgdGhhbiBtaW4gAACoVxAABwAAANBXEAASAAAAYmlnbnVtIGludmFsaWRlcnJvciBjYWxsaW5nIGRlY29uc3RydWN0b3I6IAACWBAAHQAAAGRlY29uc3RydWN0b3IgZGlkIG5vdCByZXR1cm4gYW4gYXJyYXkgb2YgW2RhdGF0eXBlLCB2YWx1ZV1kZWNvbnN0cnVjdG9yIHJldHVybmVkIGEgYmFkIGRhdGF0eXBlOiAAAABiWBAAJwAAAHRleHQgb2JqZWN0IGhhZCBubyB0ZXh0YmlnaW50IHRvbyBsYXJnZTogAAAAq1gQABIAAABiaWdpbnQgdG9vIHNtYWxsOiAAAMhYEAASAAAAdW5hYmxlIHRvIGRldGVybWluZSB0eXBlIG9mIHZhbHVla2V5IGF0IGluZGV4IAAABVkQAA0AAADjVRAAEQAAAHZhbHVlIGZvciBrZXkgIGNvdWxkIG5vdCBiZSBjb252ZXJ0ZWQgdG8gYSBzY2FsYXIgdmFsdWUAJFkQAA4AAAAyWRAAKQAAAG1hcmtzIHdhcyBub3QgYW4gb2JqZWN0Y29uZmlnIHdhcyBub3QgYW4gb2JqZWN0ZmFpbGVkIHRvIGdldCBwcm9wZXJ0eSAAAJtZEAAXAAAAaW52YWxpZCBkZWZhdWx0RXhwYW5kOiAAvFkQABcAAABpbnZhbGlkIHBlck1hcmtFeHBhbmQAAADcWRAAFQAAANFMEAACAAAAcGVyTWFya0V4cGFuZHMgd2FzIG5vdCBudWxsIGJ1dCBhbHNvIG5vdCBhbiBvYmplY3RhdHRlbXB0ZWQgdG8gdGFrZSBvd25lcnNoaXAgb2YgUnVzdCB2YWx1ZSB3aGlsZSBpdCB3YXMgYm9ycm93ZWRVbmtub3duTm90SW1wbGVtZW50ZWR1bmtub3duIGRhdGF0eXBlZGF0YXR5cGUgaXMgbm90IGEgc3RyaW5nY2Fubm90IGhhbmRsZSB1bmtub3duIGRhdGF0eXBlLwcQAG0AAAAlAQAADgAAAGQeEAAaAAAAUwIAABoAAABkHhAAGgAAAAgDAAAuAAAAbXVzdCBwYXNzIGEgYm9vbCB0byBlbmFibGVGcmVlemVwYXRjaGVzcmVjdXJzaXZlbnVtQ2hhbmdlc251bU9wc251bUFjdG9ycwAAAGQeEAAaAAAAoAYAAAoAAABkHhAAGgAAAJoGAABKAAAAZB4QABoAAACZBgAACgAAAH4eEABsAAAAlQAAAA4AAAB1bmNoZWNrZWRhbGxvd01pc3NpbmdEZXBzY29udmVydEltbXV0YWJsZVN0cmluZ3NUb1RleHRhMTEyMjIyNTRkMmY4NmVjOWRmMDczOGU3MDAyZjE1YTkzMGZlOWI0Z2l0SGVhZGF1dG9tZXJnZS13YXNtY2FyZ29QYWNrYWdlTmFtZTAuMS4wY2FyZ29QYWNrYWdlVmVyc2lvbjEuODAuMHJ1c3RjVmVyc2lvbgAAAGQeEAAaAAAABwcAAAYAAABkHhAAGgAAAAEHAAAGAAAAZB4QABoAAAD7BgAABgAAAGQeEAAaAAAA9QYAAAYAAABkHhAAGgAAAEYHAAA7AAAAZB4QABoAAABPBwAANgAAAGQeEAAaAAAASQcAADsAAABkHhAAGgAAAEIHAAAmAAAAZB4QABoAAABBBwAAIAAAAGQeEAAaAAAAQAcAACAAAABkHhAAGgAAAD8HAAAiAAAAZB4QABoAAAB8BwAAQAAAAGQeEAAaAAAAeQcAAAYAAABjb3VsZCBub3QgcGFyc2UgQWN0b3IgSUQgYXMgYSBoZXggc3RyaW5nOiAAAAxdEAAqAAAAZXJyb3IgYXBwbHlpbmcgY2hhbmdlczogQF0QABgAAABvYmplY3Qgbm90IHZpc2libGViYWQgaGVhZHM6IAAAAHJdEAALAAAAdmFsdWUgYXQgIGluIHZhbHVlcyB0byBpbnNlcnQgd2FzIG5vdCBhIHByaW1pdGl2ZQAAAIhdEAAJAAAAkV0QACgAAABvYmplY3Qgd2FzIG5vdCBhIHRleHQgb2JqZWN0dXBkYXRlX3RleHQgaXMgb25seSBhdmFpbGFsYmUgZm9yIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGV4dCBvYmplY3RzdmFsdWUgcGFzc2VkIHRvIHVwZGF0ZV90ZXh0IHdhcyBub3QgYSBzdHJpbmdpbnZhbGlkIGNvbmZpZzogAF9eEAAQAAAAaW52YWxpZCBvYmplY3QgaWQ6IAB4XhAAEwAAAGJsb2NrIG5hbWUgbXVzdCBiZSBhIHN0cmluZ2Jsb2NrIHBhcmVudHMgbXVzdCBiZSBhbiBhcnJheSBvZiBzdHJpbmdzaW52YWxpZCBjdXJzb3J0aGUgdmFsdWUgdG8gaW5zZXJ0IG11c3QgYmUgYW4gb2JqZWN0aW52YWxpZCB2YWx1ZXZhbHVlIG11c3QgYmUgYSBtYXAvb2JqZWN0aW52YWxpZCBhY3RvciBpZHZhbHVlcyBtdXN0IGJlIGFuIGFycmF5dmFsdWUgd2FzIG5vdCBudW1lcmljY291bGQgbm90IGRlY29kZSBzeW5jIG1lc3NhZ2U6IAAAAG5fEAAfAAAAcGF0Y2ggd2FzIG5vdCBhbiBvYmplY3RlcnJvciBjYWxsaW5nIHBhdGNoIGNhbGxiYWNrOiAAAACvXxAAHgAAAHVuYWJsZSB0byBidWlsZCBwYXRjaGVzOiAAAADYXxAAGQAAAGludmFsaWQgYmVmb3JlIGhlYWRzOiAAAPxfEAAWAAAAYmVmb3JlIGhlYWRzIHdlcmUgbnVsbCBvciB1bmRlZmluZWRpbnZhbGlkIGFmdGVyIGhlYWRzOiA/YBAAFQAAAGFmdGVyIGhlYWRzIHdlcmUgbnVsbCBvciB1bmRlZmluZWRubyBoZWFkcyBzcGVjaWZpZWRpbnZhbGlkIHBvc2l0aW9uIC0gbXVzdCBiZSBhbiBpbmRleCwgJ3N0YXJ0JyBvciAnZW5kJ2ludmFsaWQgbW92ZSAtIG11c3QgYmUgJ2JlZm9yZScgb3IgJ2FmdGVyJ2N1cnNvcnMgb25seSB2YWxpZCBvbiB0ZXh0IC0gb2JqIHR5cGU6IAAA72AQACcAAABVbmFibGUgdG8gcmVhZCBKUyBjaGFuZ2U6IAAAIGEQABoAAABJbnZhbGlkIG1hcmsgbmFtZUludmFsaWQgbWFyayB2YWx1ZTogAAAAVWEQABQAAABzdGFydCBtdXN0IGJlIGEgbnVtYmVyZW5kIG11c3QgYmUgYSBudW1iZXJyYW5nZSBtdXN0IGJlIGFuIG9iamVjdHRoZSBibG9jayB2YWx1ZSBtdXN0IGJlIGEgbWFwdGhlIHVwZGF0ZWQgYmxvY2sgYXJncyBtdXN0IGJlIGEgbWFwZXJyb3IgY3JlYXRpbmcgYnVuZGxlOiAAAAD2YRAAFwAAAAMAAAAFAAAABAAAAAQAAAA8NhAAMDkQADU5EAA5ORAABwAAAAkAAAAIAAAACAAAAGhBEABvQRAAeEEQAIBBEACgAAAADAAAAAQAAAChAAAAogAAAKMAAAAAAAAAAAAAAAEAAACkAAAAYSBEaXNwbGF5IGltcGxlbWVudGF0aW9uIHJldHVybmVkIGFuIGVycm9yIHVuZXhwZWN0ZWRseQAb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EwEAxRMBAMcTAQDJEwEAzhMBAM8TAQDSEwEA0hMBAOETAQDiEwEAOBQBAD8UAQBCFAEARBQBAEYUAQBGFAEAXhQBAF4UAQCwFAEAsBQBALMUAQC4FAEAuhQBALoUAQC9FAEAvRQBAL8UAQDAFAEAwhQBAMMUAQCvFQEArxUBALIVAQC1FQEAvBUBAL0VAQC/FQEAwBUBANwVAQDdFQEAMxYBADoWAQA9FgEAPRYBAD8WAQBAFgEAqxYBAKsWAQCtFgEArRYBALAWAQC3FgEAHRcBAB0XAQAfFwEAHxcBACIXAQAlFwEAJxcBACsXAQAvGAEANxgBADkYAQA6GAEAMBkBADAZAQA7GQEAPRkBAEMZAQBDGQEA1BkBANcZAQDaGQEA2xkBAOAZAQDgGQEAARoBAAoaAQAzGgEAOBoBADsaAQA+GgEAURoBAFYaAQBZGgEAWxoBAIoaAQCWGgEAmBoBAJgaAQBgGwEAYBsBAGIbAQBkGwEAZhsBAGYbAQAwHAEANhwBADgcAQA9HAEAPxwBAD8cAQCSHAEApxwBAKocAQCwHAEAshwBALMcAQC1HAEAthwBADEdAQA2HQEAOh0BADodAQA8HQEAPR0BAD8dAQBFHQEARx0BAEcdAQCQHQEAkR0BAJUdAQCVHQEAlx0BAJcdAQDzHgEA9B4BAAAfAQABHwEANh8BADofAQBAHwEAQR8BAFofAQBaHwEAQDQBAEA0AQBHNAEAVTQBAB5hAQApYQEALWEBAC9hAQDwagEA9GoBADBrAQA2awEAT28BAE9vAQCPbwEAkm8BAORvAQDkbwEA8G8BAPFvAQCdvAEAnrwBAADPAQAtzwEAMM8BAEbPAQBl0QEAadEBAG3RAQBy0QEAe9EBAILRAQCF0QEAi9EBAKrRAQCt0QEAQtIBAETSAQAA2gEANtoBADvaAQBs2gEAddoBAHXaAQCE2gEAhNoBAJvaAQCf2gEAodoBAK/aAQAA4AEABuABAAjgAQAY4AEAG+ABACHgAQAj4AEAJOABACbgAQAq4AEAj+ABAI/gAQAw4QEANuEBAK7iAQCu4gEA7OIBAO/iAQDs5AEA7+QBAO7lAQDv5QEA4+YBAOPmAQDm5gEA5uYBAO7mAQDv5gEA9eYBAPXmAQDQ6AEA1ugBAETpAQBK6QEA+/MBAP/zAQAgAA4AfwAOAAABDgDvAQ4AaW5jb25zaXN0ZW50IHN0YXRlAADMcBAAEgAAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IAAA6HAQACoAAAABFhAAbgAAAM0BAAANAAAAMDEyMzQ1Njc4OWFiY2RlZmFzc2VydGlvbiBmYWlsZWQ6IG4gPD0gc2VsZi5idWYuaW5pdCAtIHNlbGYuYnVmLmZpbGxlZAAAhBIQAFQAAAAdAQAACQAAAKoaEABKAAAAsgEAADEAAABmYWlsZWQgdG8gZmlsbCB3aG9sZSBidWZmZXIAlHEQABsAAAAlAAAAAAAAAAIAAACwcRAATgUQAEwAAACeAQAAFgAAACgpAAANAQAADAAAAAQAAAAOAQAADwEAABABAAAAAAAAAAAAAAEAAAARAQAAYSBEaXNwbGF5IGltcGxlbWVudGF0aW9uIHJldHVybmVkIGFuIGVycm9yIHVuZXhwZWN0ZWRseQAbEhAATAAAAA4LAAAOAAAAAAAAAAQAAAAEAAAAEgEAAAAAAAAEAAAABAAAABMBAAAAAAAABAAAAAQAAAAUAQAAAAAAAAQAAAAEAAAAFQEAAAAAAAAEAAAABAAAABYBAAAAAAAABAAAAAQAAACrAAAAAAAAAAQAAAAEAAAAFwEAAAAAAAAEAAAABAAAABgBAAAAAAAABAAAAAQAAAAZAQAAAAAAAAQAAAAEAAAAGgEAAAAAAAAEAAAABAAAABsBAAAAAAAABAAAAAQAAAD9AAAAAAAAAAQAAAAEAAAA/gAAAAAAAAAEAAAABAAAAMgAAAAAAAAABAAAAAQAAAAcAQAAAAAAAAQAAAAEAAAAHQEAAAAAAAAEAAAABAAAAMAAAAAAAAAABAAAAAQAAAAeAQAAAAAAAAQAAAAEAAAAAAEAAAAAAAAEAAAABAAAAMwAAAAAAAAABAAAAAQAAAAfAQAAAAAAAAQAAAAEAAAA/wAAAAAAAAAEAAAABAAAACABAAAAAAAABAAAAAQAAACtAAAAAAAAAAQAAAAEAAAA+wAAAAAAAAAEAAAABAAAAKoAAAAAAAAABAAAAAQAAAAhAQAAAAAAAAQAAAAEAAAAIgEAAAAAAAAEAAAABAAAAO8AAAAAAAAABAAAAAQAAAAjAQAAAAAAAAQAAAAEAAAAygAAAAAAAAAEAAAABAAAACQBAAAAAAAABAAAAAQAAAD8AAAAAAAAAAQAAAAEAAAArAAAAAAAAAAEAAAABAAAACUBAAAAAAAABAAAAAQAAAAmAQAAAAAAAAQAAAAEAAAArgAAALcVEABKAAAAzAAAAAUAAABkZXNjcmlwdGlvbigpIGlzIGRlcHJlY2F0ZWQ7IHVzZSBEaXNwbGF5NwIQAGAAAABOAAAAHwAAADcCEABgAAAASAAAABcAAAAAAAAABAAAAAQAAAAnAQAAAAAAAAQAAAAEAAAAKAEAAAAAAAAEAAAABAAAACkBAAAAAAAABAAAAAQAAAAqAQAAAAAAAAQAAAAEAAAAKwEAAAAAAAAEAAAABAAAACwBAAAAAAAABAAAAAQAAAAtAQAAAAAAAAQAAAAEAAAALgEAAAAAAAAEAAAABAAAAC8BAAAAAAAABAAAAAQAAAAwAQAAAAAAAAQAAAAEAAAAMQEAAAAAAAAEAAAABAAAADIBAAAAAAAABAAAAAQAAAAzAQAAAAAAAAQAAAAEAAAANAEAAAAAAAAEAAAABAAAADUBAAAAAAAABAAAAAQAAAA2AQAAAAAAAAQAAAAEAAAANwEAAAAAAAAEAAAABAAAADgBAAAAAAAABAAAAAQAAAA5AQAAAAAAAAQAAAAEAAAAOgEAAAAAAAAEAAAABAAAADsBAAAAAAAABAAAAAQAAAA8AQAAAAAAAAAAAAABAAAAPQEAAEVycm9yAAAAPgEAAAQAAAAEAAAAPwEAAAAAAAAEAAAABAAAAEABAAAAAAAACAAAAAgAAABBAQAAAAAAAAQAAAAEAAAAQgEAAGRhdGFsZW5hY2NtaW5tYXhhYnMArHYQAAQAAACwdhAAAwAAALN2EAADAAAAtnYQAAMAAAC5dhAAAwAAALx2EAADAAAAU2xhYgAAAAAEAAAABAAAAEMBAABJb0Vycm9yT3ZlcmZsb3cAZSAQAFcAAADHAAAAJQAAAGUgEABXAAAAxwAAAEEAAABEAQAACAAAAAQAAABFAQAARAEAAAgAAAAEAAAARgEAAEUBAAA0dxAARwEAAEgBAABJAQAASgEAAEsBAAAAAAAABAAAAAQAAABMAQAAQWNjQWdnYXNzZXJ0aW9uIGZhaWxlZDogbGVuID4gMABvGBAAXAAAAGUBAAAJAAAAUBQQAGAAAADGAAAAJwAAAGANEABbAAAA4wcAAEYAAABhc3NlcnRpb24gZmFpbGVkOiBpZHggPCBDQVBBQ0lUWW8YEABcAAAAlQIAAAkAAABhc3NlcnRpb24gZmFpbGVkOiBlZGdlLmhlaWdodCA9PSBzZWxmLmhlaWdodCAtIDFvGBAAXAAAAK0CAAAJAAAAbxgQAFwAAACxAgAACQAAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IGVtcHR5IGludGVybmFsIG5vZGUAAABQeBAAPQAAAG8YEABcAAAARgUAAB8AAABhc3NlcnRpb24gZmFpbGVkOiBzZWxmLmhlaWdodCA+IDAAAABvGBAAXAAAAGACAAAJAAAAYXNzZXJ0aW9uIGZhaWxlZDogc3JjLmxlbigpID09IGRzdC5sZW4oKW8YEABcAAAASgcAAAUAAABvGBAAXAAAAMcEAAAjAAAAbxgQAFwAAAAKBQAAJAAAAGFzc2VydGlvbiBmYWlsZWQ6IGVkZ2UuaGVpZ2h0ID09IHNlbGYubm9kZS5oZWlnaHQgLSAxAAAAbxgQAFwAAAD6AwAACQAAAGFzc2VydGlvbiBmYWlsZWQ6IG9sZF9yaWdodF9sZW4gKyBjb3VudCA8PSBDQVBBQ0lUWQBvGBAAXAAAAPcFAAANAAAAYXNzZXJ0aW9uIGZhaWxlZDogb2xkX2xlZnRfbGVuID49IGNvdW50AG8YEABcAAAA+AUAAA0AAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlbxgQAFwAAAAnBgAAFgAAAGFzc2VydGlvbiBmYWlsZWQ6IG9sZF9sZWZ0X2xlbiArIGNvdW50IDw9IENBUEFDSVRZAABvGBAAXAAAADYGAAANAAAAYXNzZXJ0aW9uIGZhaWxlZDogb2xkX3JpZ2h0X2xlbiA+PSBjb3VudG8YEABcAAAANwYAAA0AAABvGBAAXAAAAGcGAAAWAAAAYXNzZXJ0aW9uIGZhaWxlZDogbWF0Y2ggdHJhY2tfZWRnZV9pZHggewogICAgTGVmdE9yUmlnaHQ6OkxlZnQoaWR4KSA9PiBpZHggPD0gb2xkX2xlZnRfbGVuLAogICAgTGVmdE9yUmlnaHQ6OlJpZ2h0KGlkeCkgPT4gaWR4IDw9IHJpZ2h0X2xlbiwKfQAAbxgQAFwAAADJ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eHRyYV9ieXRlc19tZXRhZXh0cmFfYnl0ZXNfcmF3aGVhZHNub2Rlc19ieV9oYXNoY2xvY2tfY2FjaGVzZXFfaW5kZXgAAAD4yxAABQAAAP3LEAAGAAAAA8wQAAYAAAAJzBAABwAAAIyzEAADAAAAEMwQAAcAAACXsxAABgAAABfMEAAHAAAAHswQAAoAAAAozBAACAAAADDMEAAQAAAAQMwQAA8AAABPzBAABQAAAFTMEAANAAAAYcwQAAsAAABszBAACQAAAENoYW5nZUdyYXBoTm9kZUlkeEVkZ2VJZHgAAAAAAAAABAAAAAQAAAAZAgAARWRnZXRhcmdldG5leHRNaXNzaW5nRGVwYXR0ZW1wdGVkIHRvIGRlcml2ZSBhIGNsb2NrIGZvciBhIGNoYW5nZSB3aXRoIGRlcGVuZGVuY2llcyB3ZSBkb24ndCBoYXZlAAAAAAQAAAAEAAAAGgIAAFNlcUNsb2NrZXZlbnQgYXV0b21lcmdlL3NyYy9jb2x1bW5hci9jb2x1bW5fcmFuZ2Uva2V5LnJzOjE5NmF1dG9tZXJnZTo6Y29sdW1uYXI6OmNvbHVtbl9yYW5nZTo6a2V5AAAcxhAABwAAAH6ZEAADAAAAYXV0b21lcmdlL3NyYy9jb2x1bW5hci9jb2x1bW5fcmFuZ2Uva2V5LnJzAAABAAAAxAAAAAQAAACczRAANAAAANDNEAAmAAAA+M0QAAIAAABs2xEARMQQANDNEAAmAAAACM4QACoAAAABAAAAYnVmZmVyIHNpemUgZGlkIG5vdCBjaGFuZ2V0cnlpbmcgdG8gcmVhZCBwYXN0IGVuZEJ1ZmZlclNpemVEaWROb3RDaGFuZ2VUcnlpbmdUb1JlYWRQYXN0RW5kAAAAAAAABAAAAAQAAAAbAgAARGVjb2RlaW52YWxpZCBpbnRlZ2VyYmFkIGxlYjEyOGF0dGVtcHRlZCB0byBhbGxvY2F0ZSAgd2hpY2ggaXMgbGFyZ2VyIHRoYW4gdGhlIG1heGltdW0gb2YgAAD/zhAAFgAAABXPEAAlAAAAaW52YWxpZCBzdHJpbmcgZW5jb2RpbmdJbwAAAAAAAAAEAAAABAAAABwCAABGcm9tSW50QmFkTGViAAAAAAAAAAQAAAAEAAAAHQIAAEJhZExlYjEyOE92ZXJsYXJnZUFsbG9jYXRpb25hdHRlbXB0ZWRtYXhpbXVtQmFkU3RyaW5nAAAAHgIAAAwAAAAEAAAAHwIAAAAAAAAEAAAABAAAACACAABEZWNvZGVDb2x1bW5FcnJvcnBhdGgAAAAAAAAABAAAAAQAAAAhAgAAUGF0aFVuZXhwZWN0ZWROdWxscmVhc29uAAAAAAQAAAAEAAAAIgIAAFJlYWRFeGlzdGluZ1N0YXJ0RW5kAAAAAAQAAAAEAAAAIwIAACQCAAAUAAAABAAAAFYAAAAAAAAABAAAAAQAAAAlAgAAT3BDdXJzb3JjdHJtb3ZlX2N1cnNvckJlZm9yZUFmdGVyAAAAAAAAACAAAAABAAAAJgIAAAAAAAAgAAAAAQAAAKMBAAAmAgAAqNAQACcCAAAoAgAA2AEAACcCAADaAQAAZmFpbGVkIHRvIGxvYWQgY29tcHJlc3NlZCBkYXRhOiDk0BAAIAAAAGR1cGxpY2F0ZSBzZXEgIGZvdW5kIGZvciBhY3RvciAADNEQAA4AAAAa0RAAEQAAAGR1cGxpY2F0ZSBhY3RvciA6IHBvc3NpYmxlIGRvY3VtZW50IGNsb25lAAAAPNEQABAAAABM0RAAGQAAAGdlbmVyYWwgZmFpbHVyZWludmFsaWQgYWN0b3IgSUQgYGAAAIfREAASAAAAmdEQAAEAAABpbnZhbGlkIGFjdG9yIGluZGV4IGAAAACs0RAAFQAAAJnREAABAAAAaW52YWxpZCBVVEYtOCBjaGFyYWN0ZXIgYXQgANTREAAbAAAAaW52YWxpZCBoYXNoIAAAAPjREAANAAAAaW5kZXggIGlzIG91dCBvZiBib3VuZHMAENIQAAYAAAAW0hAAEQAAAGludmFsaWQgb2JqIGlkIGA40hAAEAAAAJnREAABAAAAaW52YWxpZCBvYmogaWQgZm9ybWF0IGAAWNIQABcAAACZ0RAAAQAAAGludmFsaWQgb3AgZm9yIG9iamVjdCBvZiB0eXBlIGAAgNIQAB8AAACZ0RAAAQAAAHNlcSCw0hAABAAAABbSEAARAAAAY3Vyc29yICBpcyBpbnZhbGlkAADE0hAABwAAAMvSEAALAAAAb3AgaGFzIG5vIHZhbGlkIGN1cnNvcmN1cnNvciBmb3JtYXQgaXMgaW52YWxpZGludmFsaWQgdHlwZSBvZiB2YWx1ZSwgZXhwZWN0ZWQgYGAgYnV0IHJlY2VpdmVkIGAAFtMQACEAAAA30xAAEAAAAJnREAABAAAAaW5jcmVtZW50IG9wZXJhdGlvbnMgbXVzdCBiZSBhZ2FpbnN0IGEgY291bnRlciB2YWx1ZWhhc2ggIGRvZXMgbm90IGNvcnJlc3BvbmQgdG8gYSBjaGFuZ2UgaW4gdGhpcyBkb2N1bWVudAAAlNMQAAUAAACZ0xAAMQAAAGNoYW5nZSdzIGRlcHMgc2hvdWxkIGFscmVhZHkgYmUgaW4gdGhlIGRvY3VtZW50Y29tcHJlc3NlZCBjaHVuayB3YXMgbm90IGEgY2hhbmdlaWQgd2FzIG5vdCBhbiBvYmplY3QgaWRwYXRjaCBsb2dzIGNhbm5vdCBiZSBzaGFyZWQgYmV0d2VlbiBkb2N1bWVudHNmYWlsZWQgdG8gdW5idW5kbGU6IHDUEAAUAAAAAAAAAAQAAAAEAAAAKQIAAERlZmxhdGVEdXBsaWNhdGVTZXFOdW1iZXJEdXBsaWNhdGVBY3RvcklkRmFpbEludmFsaWRBY3RvcklkSW52YWxpZEFjdG9ySW5kZXgAAAAABAAAAAQAAAAqAgAASW52YWxpZENoYW5nZUhhc2hCeXRlc0ludmFsaWRDaGFyYWN0ZXJJbnZhbGlkSGFzaEludmFsaWRJbmRleEludmFsaWRPYmpJZEludmFsaWRPYmpJZEZvcm1hdAAAAAAABAAAAAQAAAArAgAASW52YWxpZE9wSW52YWxpZFNlcQAAAAAABAAAAAQAAAAsAgAASW52YWxpZEN1cnNvckludmFsaWRDdXJzb3JPcEludmFsaWRDdXJzb3JGb3JtYXRJbnZhbGlkVmFsdWVUeXBlZXhwZWN0ZWR1bmV4cGVjdGVkTG9hZAAAAAAAAAAEAAAABAAAAC0CAABMb2FkQ2hhbmdlRXJyb3JNaXNzaW5nQ291bnRlck1pc3NpbmdIYXNoTWlzc2luZ0RlcHNOb25DaGFuZ2VDb21wcmVzc2VkTm90QW5PYmplY3QAAAAAAAAABAAAAAQAAAAuAgAASHlkcmF0ZUVycm9yUGF0Y2hMb2dNaXNtYXRjaAAAAAAEAAAABAAAAC8CAABFbmNvZGluZ0Vycm9yVW5idW5kbGVJbnZhbGlkIGNoYW5nZSBoYXNoIHNsaWNlOiCV1hAAGwAAAAAAAAAEAAAABAAAALoAAABJbnZhbGlkQ2hhbmdlSGFzaFNsaWNldW5yZWNvZ25pemVkIGFjdGlvbiBpbmRleCDe1hAAGgAAAG5vbiBudW1lcmljIGFyZ3VtZW50IGZvciBpbmMgb3BVbmtub3duQWN0aW9uTm9uTnVtZXJpY0luY2ludmFsaWQgaW5kZXggIGZvciBzZXF1ZW5jZTnXEAAOAAAAR9cQAA0AAABpbnZhbGlkIGtleSAgZm9yIG1hcGTXEAAMAAAAcNcQAAgAAABpbmNyZW1lbnQgb2YgYSBub24tY291bnRlcmludmFsaWQgb3AgYXBwbGllZCB0byBtYXBpbnZhbGlkIG9wIGFwcGllZCB0byBsaXN0aW52YWxpZCBvcCBhcHBsaWVkIHRvIG1hcDogANTXEAAbAAAAaW52YWxpZCBwcm9wIGluIHBhdGNoOiAA+NcQABcAAABpbnZhbGlkIGVuY29kaW5nIGZvciB0ZXh0IHZhbHVlSW52YWxpZEtleUJhZEluY3JlbWVudEludmFsaWRNYXBPcEludmFsaWRMaXN0T3AAAAAAAAAEAAAABAAAALkAAABJbnZhbGlkVGV4dE9wQXBwbHlJbnZhbGlkUHJvcEludmFsaWRFbmNvZGluZ2Nhbm5vdCBjaGFuZ2Ugb2JqZWN0IHR5cGVSb290SWQAMAIAAEAAAAAIAAAAMQIAAExpc3RWYWx1ZWNvbmZsaWN0AAAAAAAAAAQAAAAEAAAAMgIAAE1hcE1hcFZhbHVlU2NhbGFyAAAAAAAAAAQAAAAEAAAAMwIAAAAAAAAEAAAABAAAADQCAABMaXN0AAAAAAQAAAAEAAAANQIAAGV2ZW50IGF1dG9tZXJnZS9zcmMvaXRlci9zcGFucy5yczo1MzdhdXRvbWVyZ2U6Oml0ZXI6OnNwYW5zYXV0b21lcmdlL3NyYy9pdGVyL3NwYW5zLnJzAAABAAAAGQIAAAMAAABA2RAAJQAAAGXZEAAWAAAAJMYQAAEAAAB42xEARMQQAGXZEAAWAAAAe9kQABsAAAABAAAAdmFyaWFudCBpZGVudGlmaWVyc3RydWN0IENoYW5nZQA2AgAAGAAAAAQAAABaAAAATWFya3N0YXJ0ZW5kbmFtZU1hcmtBY2NJdGVtAAAAAAAEAAAABAAAADcCAABNYXJrQWNjdW11bGF0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AgAAdAIAACzhEAAnAgAAdgIAANgBAAAnAgAA2gEAAGludmFsaWQgZW5kIG9mIGlucHV0Y29tcHJlc3Npb24gZXJyb3IgaW4gY2hhbmdlIGNvbHVtbnNjb21wcmVzc2lvbiBlcnJvciBpbiBvcCBjb2x1bW5zaW52YWxpZCBjaGFuZ2UgY29sczogAL7hEAAVAAAAZmFpbGVkIHRvIHBhcnNlIGhlYWRlcjog3OEQABgAAABpbnZhbGlkIGNoYW5nZSBjb2x1bW5pbnZhbGlkIG9wIGNvbHVtbmludmFsaWQgYnVuZGxlOiAAACLiEAAQAAAAZW5jb2RlYXV0b21lcmdlOjpzdG9yYWdlOjpjaGFuZ2U6OmNoYW5nZV9vcF9jb2x1bW5zYXV0b21lcmdlL3NyYy9zdG9yYWdlL2NoYW5nZS9jaGFuZ2Vfb3BfY29sdW1ucy5ycwEAAAC3AAAAAgAAADziEAAGAAAAQuIQAC0AAAAEAAAAAAAAAITbEQBExBAAQuIQAC0AAABv4hAAMQAAAAIAAABldmVudCBhdXRvbWVyZ2Uvc3JjL3N0b3JhZ2UvY2hhbmdlL2NoYW5nZV9vcF9jb2x1bW5zLnJzOjIwNmV4cGFuZHMAABzGEAAHAAAAG+MQAAcAAAABAAAAzgAAAAAAAADg4hAAOwAAAELiEAAtAAAAJOMQAAIAAACQ2xEARMQQAELiEAAtAAAAb+IQADEAAAABAAAAZXZlbnQgYXV0b21lcmdlL3NyYy9zdG9yYWdlL2NoYW5nZS9jaGFuZ2Vfb3BfY29sdW1ucy5yczoyNDMAHMYQAAcAAAAwqxAABgAAAAEAAADzAAAAAAAAAHTjEAA7AAAAQuIQAC0AAACw4xAAAgAAAJzbEQBExBAAQuIQAC0AAABv4hAAMQAAAAEAAABjb3VudGVyIHRvbyBsYXJnZQAAAAAAAAAEAAAABAAAAHcCAABEZWNvZGVFcnJvcgAAAAAABAAAAAQAAAB4AgAASW52YWxpZE9wVHlwZUNvdW50ZXJUb29MYXJnZW1pc21hdGNoaW5nIGNvbHVtbiBhdCAAAFzkEAAWAAAAxKUQAAEAAABNaXNtYXRjaGluZ0NvbHVtbmV2ZW50IGF1dG9tZXJnZS9zcmMvc3RvcmFnZS9jaGFuZ2UvY2hhbmdlX29wX2NvbHVtbnMucnM6NTQ5dHlwABzGEAAHAAAA0OQQAAMAAAAI2xAAAgAAAAEAAAAlAgAAAwAAAJXkEAA7AAAAQuIQAC0AAADU5BAAAwAAAKjbEQBExBAAQuIQAC0AAABv4hAAMQAAAAEAAABmYWlsZWQgdG8gcGFyc2UgY2hhbmdlIGNvbHVtbnM6ICzlEAAgAAAAY2hhbmdlIGNvbnRhaW5lZCBjb21wcmVzc2VkIGNvbHVtbnMAAAAAAAQAAAAEAAAAeQIAAFJhd0NvbHVtbnN0aGVyZSB3YXMgZGF0YSBpbiBhIGNodW5rIGxlZnRvdmVyIGFmdGVyIHBhcnNpbmdmYWlsZWQgdG8gcGFyc2UgYnVuZGxlOiAAAMLlEAAYAAAAYmFkIGNoYW5nZSBjaHVuazogAADk5RAAEgAAAGJhZCBkb2N1bWVudCBjaHVuazogAOYQABQAAAB1bmFibGUgdG8gZGVjb21wcmVzc2UgY29tcHJlc3NlZCBjaHVuawAAAAAAAAQAAAAEAAAAegIAAEJ1bmRsZQAAAAAAAAQAAAAEAAAAewIAAENoYW5nZQAAAAAAAAQAAAAEAAAAfAIAAERvY3VtZW50dW5rbm93biBjaHVuayB0eXBlOiCM5hAAFAAAAEludmFsaWQgbWFnaWMgYnl0ZXNVbmtub3duQ2h1bmtUeXBlSW52YWxpZE1hZ2ljQnl0ZXNldmVudCBhdXRvbWVyZ2Uvc3JjL3N0b3JhZ2UvY2h1bmsucnM6NjJhdXRvbWVyZ2U6OnN0b3JhZ2U6OmNodW5raGVhZGVyAAAcxhAABwAAABznEAAGAAAAYXV0b21lcmdlL3NyYy9zdG9yYWdlL2NodW5rLnJzAAABAAAAPgAAAAAAAADc5hAAJwAAAAPnEAAZAAAAJOcQAAIAAAC02xEARMQQAAPnEAAZAAAANOcQAB4AAAABAAAAQ29tcHJlc3NlZAAAAAAAAAQAAAAEAAAAfQIAAENoZWNrU3VtAAAAAAQAAAABAAAAfgIAAAAAAAABAAAAAQAAAH8CAABjaGVja3N1bWNodW5rX3R5cGVkYXRhX2xlbmhlYWRlcl9zaXplaGFzaE5vdEluTm9ybWFsT3JkZXJjb2x1bW5zIHdlcmUgbm90IGluIG5vcm1hbGl6ZWQgb3JkZXJEdXBsaWNhdGVDb2x1bW5TcGVjc091dE9mT3JkZXJOZXN0ZWRHcm91cExvbmVSYXdWYWx1ZUNvbHVtbk1pc21hdGNoaW5nVmFsdWVNZXRhZGF0YUlkTm9uQ29udGlndW91c0NvbHVtbnNEYXRhT3V0T2ZSYW5nZWR1cGxpY2F0ZSBjb2x1bW4gc3BlY2lmaWNhdGlvbnM6IAAAAKzoEAAhAAAAb3V0IG9mIG9yZGVyIGNvbHVtbnNuZXN0ZWQgZ3JvdXByYXcgdmFsdWUgY29sdW1uIHdpdGhvdXQgbWV0YWRhdGEgY29sdW1udmFsdWUgbWV0YWRhdGEgZm9sbG93ZWQgYnkgdmFsdWUgY29sdW1uIHdpdGggZGlmZmVyZW50IGNvbHVtbiBJRG5vbiBjb250aWd1b3VzIGNvbHVtbnNkYXRhIG91dCBvZiByYW5nZQAAAAAABAAAAAQAAACAAgAAAAAAAAQAAAAEAAAAgQIAAJIEEAAhAAAA2wAAABoAAACSBBAAIQAAAOUAAAAaAAAAkgQQACEAAADqAAAAGgAAAJIEEAAhAAAA7wAAABoAAACSBBAAIQAAAOAAAAAaAAAAkgQQACEAAAD4AAAAIgAAAJIEEAAhAAAA/QAAACIAAACSBBAAIQAAAAUBAABDAAAAkgQQACEAAAAGAQAARQAAAGFkZF9jb2x1bW5hdXRvbWVyZ2U6OnN0b3JhZ2U6OmNvbHVtbnNjb2x1bW4AXeoQAAYAAACg2xAABQAAAGF1dG9tZXJnZS9zcmMvc3RvcmFnZS9jb2x1bW5zLnJzAQAAALkAAAACAAAAOOoQAAoAAABC6hAAGwAAAGTqEAACAAAAwNsRAETEEABC6hAAGwAAAHTqEAAgAAAAAgAAAGV2ZW50IGF1dG9tZXJnZS9zcmMvc3RvcmFnZS9jb2x1bW5zLnJzOjE4NQAAAQAAALkAAAAEAAAA1OoQACoAAABC6hAAGwAAAHzEEAABAAAAzNsRAETEEABC6hAAGwAAAHTqEAAgAAAAAQAAAGV2ZW50IGF1dG9tZXJnZS9zcmMvc3RvcmFnZS9jb2x1bW5zLnJzOjMxOHByZXYAABzGEAAHAAAAausQAAQAAAAuzRAABAAAAAEAAAA+AQAABAAAAEDrEAAqAAAAQuoQABsAAABw6xAAAwAAANjbEQBExBAAQuoQABsAAAB06hAAIAAAAAEAAABiYWQgY29sdW1uIGxheW91dCBmb3IgczogAAAAyOsQABYAAADe6xAAAwAAAAAAAAAIAAAABAAAAIICAAAAAAAABAAAAAQAAACDAgAAQmFkQ29sdW1uTGF5b3V0Y29sdW1uX3R5cGVldmVudCBhdXRvbWVyZ2Uvc3JjL3N0b3JhZ2UvZG9jdW1lbnQucnM6MzExYXV0b21lcmdlOjpzdG9yYWdlOjpkb2N1bWVudGNjLmhlYWRzAAAAHMYQAAcAAACUuhAADgAAAHXsEAAIAAAAYXV0b21lcmdlL3NyYy9zdG9yYWdlL2RvY3VtZW50LnJzAAAAAQAAADcBAAAEAAAALuwQACsAAABZ7BAAHAAAAIDsEAADAAAA5NsRAETEEABZ7BAAHAAAAJjsEAAhAAAAAQAAAAAAAAAEAAAABAAAAIQCAABJbnZhbGlkQ2hhbmdlcwAAAAAAAAQAAAAEAAAAhQIAAE1pc21hdGNoaW5nSGVhZHNQYWNrRXJyUmVhZE9wRXJySW52YWxpZENvbHVtbkxlbmd0aEludmFsaWRNYXhPcAAAAAAABAAAAAQAAACGAgAAaW52YWxpZCBjaGFuZ2VzOiAAAAB87RAAEQAAAGludmFsaWQgYWN0b3IgaWQgAAAAmO0QABEAAABpbnZhbGlkIGNvbHVtbiBsZW5ndGggAAC07RAAFgAAAG1heF9vcCBpcyBsb3dlciB0aGFuIHN0YXJ0X29wTWlzc2luZ0FjdG9yQ2hhbmdlc091dE9mT3JkZXJJbnZhbGlkU3RhdGVJbmNvcnJlY3RNYXhPcE1pc3NpbmdPcHNhIGNoYW5nZSByZWZlcmVuY2VkIGFuIGFjdG9yIGluZGV4IHdlIGNvdWxkbid0IGZpbmRjaGFuZ2VzIG91dCBvZiBvcmRlcmluY29ycmVjdCBtYXggb3BpbnZhbGlkIGludGVybmFsIHN0YXRlbWlzc2luZyBvcHNDaGVja0RvbnRDaGVja0ludmFsaWRDaGFuZ2VDb2x1bW5zSW52YWxpZE9wc0NvbHVtbnNJbnZhbGlkQnVuZGxlQ29sdW1uSW52YWxpZEJ1bmRsZUNoYW5nZUluZmxhdGVEb2N1bWVudEJhZENoZWNrc3VtdW5hYmxlIHRvIHBhcnNlIGNodW5rOiAd7xAAFwAAAGludmFsaWQgY2hhbmdlIGNvbHVtbnM6IDzvEAAY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ALUAuQDAAMUA1gDdAN4A4ADgAOAA4QDhAOEA4QDhAOEA4QDhAOUA7gDxAPMA+wD7AAkBCwEUASQBKAEwATABMQExATEBMQExATkBOgE8AT4BPgE+AUABQwFDAUQBRAFIAV0BbgGAAYQBhAGEAYUBhQGFAYUBiQGJAYkBigGLAYwBjAGMAYwBjAGPAZABkAGQAZABkgGSAZIBkgGSAZIBkgGSAZIBkgGSAZIBkgGSAZIBkgGSAZIBkgGSAZIBkgGSAZIBkgGSAZIBkgGSAZIBkgGSAZIBkgGSAZIBkgGSAZIBkgGSAZIBkgGSAZIBkgGSAZIBkgGSAZIBkgGSAZIBkgGSAZIBkgGSAZIBkgGSAZIBkgGSAZIBkgGSAZIBkgGSAZIBkgGSAZIBkgGSAZIBkgGSAZIBkgGSAZIBkgGSAZIBkgGSAZIBkgGSAZIBkgGSAZIBkgGSAZIBkgGSAZIBkgGSAZIBkgGSAZIBkgGSAZIBkgGSAZIBkgGSAZIBkgGSAZIBkgGSAZIBkgGSAZIBkgGSAZIBkgGSAZIBkgGSAZIBkgGSAZIBkgGSAZIBkgGSAZIBkgGSAZIBkgGSAZIBkgGSAZIBkgGSAZIBkgGSAZIBkgGSAZIBkgGSAZIBkgGSAZIBkgGSAZIBkgGSAZIBkgGSAZIBkgGSAZIBkgGSAZIBkgGSAZIBkgGSAZIBkgGSAZIBkgGSAZIBkgGSAZIBkgGSAZIBkgGSAZIBkgGSAZIBkgGSAZIBkgGSAZIBkgGSAZIBkgGSAZIBkgGSAZIBkgGSAZIBkgGSAZIBkgGSAZIBlAGWAZYBlgGdAaIBpwG2AcMBzgHOAdYB3wHpAfEB+wEDAg0CFgIfAikCMQI7AkMCTQJWAl8CaQJxAnsCgwKNApYCnwKpArECuwLDAs0C1gLfAukC8QL7AgMDDQMWAx8DKQMxAzsDQwNNA1YDXwNpA3EDewODA40DlgOfA6kDsQO7A8MDzQPWA98D6QPxA/sDAwQNBBYEHwQpBDEEOwRDBE0EVgRfBGkEcQR7BIMEjQSWBJ8EqQSxBLsEwwTNBNYE3wTpBPEE9gT2BPYE9gT2BPYE9gT2BPYE9gT2BPYE9gT2BPYE9gT2BPYE9gT2BPYE9gT2BPYE9gT2BPYE9gT2BPYE9gT2BPYE9gT2BPYE9gT2BPYE9gT2BPYE9gT2BPYE9gT2BPYE9gT2BPYE9gT2BPYE9gT2BPYE9gT2BPYE9gT2BPYE9gT2BPYE9gT2BPYE9gT2BPcE9wT3BPcE9wT3BPkE+gT6BPwE/AT8BPwE/QT9BP4E/wT/BP8E/wT/BP8E/wT/BP8E/wT/BP8E/wT/BAgFCQUJBQkFCQUJBQsFCwULBQ0FDgUPBRUFHgUnBTEFNwU6BUgFWAVfBWoFagVyBXgFfQWDBYMFhwWHBZUFmwWmBasFsQWxBbYFvQXDBckFyQXLBdUF1QXVBdUF1QXVBdUF1QXVBdUF1QXVBdUF1QXVBdUF1QXVBdUF1QXVBdUF1QXVBdUF1QXVBdUF1QXVBdUF1QXVBdUF1QXVBdUF1QXVBdUF1QXVBdgF2AXYBdgF2AXYBdgF2AXYBdgF2AXYBdgF2AXYBdgF2AXYBdgF2AXYBdgF2AXYBdgF2AXYBdgF2AXYBdgF2AXYBdgF2AXYBdgF2AXYBdgF2AXYBdgF2AXYBdgF2AXYBdgF2AXYBdgF2AXYBdgF2AXYBdgF2AXYBdgF2AXYBdgF2AXYBdgF2AXYBdgF2AXYBdgF2AXYBdgF2AXYBdgF2AXYBdgF2AXYBdgF2AXYBdgF2AXYBdsF2wXbBdsF2wXbBdsF2wXbBdsF2wXbBdsF2wXbBdsF2wXbBdsF3AXdBd0F3QXdBd8F3wXfBd8F4AXkBeQF5AXkBeQF5AXkBeQF5AXkBeQF5AXkBeQF5AXkBeQF5AXkBeQF5AXkBeQF5AXkBeQF5AXkBeQF5AXkBeQF5AXkBeQF5AXkBeQF5AXkBeQF5AXkBeQF5AXkBeQF5AXkBeQF5AXkBeQF5AXkBeQF5AXkBeQF5AXkBeQF5AXkBeQF5AXkBeQF5AXkBeQF5AXkBeQF5AXkBeQF5AXkBeQF5AXkBeQF5AXkBeQF5AXkBeQF5AXkBeQF5AXkBeQF5AXkBeQF5AXkBeQF5AXkBeQF5AXkBeQF5AXkBeQF5AXkBeQF5AXkBeQF5AXkBeQF5AXkBeQF5AXkBeQF5AXkBeQF5AXkBeQF5AXkBeQF5AXkBeQF5AXkBeQF5AXkBeQF5AXkBeQF5AXkBeQF5AXkBeQF5AXkBeYF5gXmBeYF5gXmBeYF5gXmBeYF5gXmBeYF5gXmBeYF5gXmBeYF5gXmBeYF5gXmBeYF5gXmBeYF5gXmBeYF5gXmBeYF5gXmBeYF6AXo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eBEADgAAAGZ4EQALAAAAaW52YWxpZCB2YWx1ZTogAIR4EQAPAAAAZngRAAsAAABmbG9hdGluZyBwb2ludCBgYAAAAKR4EQAQAAAAtHgRAAEAAABudWxsaAkQAGIAAADnAQAAKgAAAGgJEABiAAAA9wEAACEAAABoCRAAYgAAAPsBAAAMAAAAaAkQAGIAAAACAgAAIQAAAGgJEABiAAAACwIAACoAAABoCRAAYgAAAA8CAAAsAAAAaAkQAGIAAAAUAgAACQAAAP8cEABhAAAApgEAAEUAAAD/HBAAYQAAAKsBAAA9AAAA/xwQAGEAAACzAQAAGgAAAP8cEABhAAAAAAIAABMAAAD/HBAAYQAAAAUCAAAzAAAA/xwQAGEAAAAJAgAAPgAAAP8cEABhAAAADwIAADoAAAD/HBAAYQAAAFwCAAATAAAA/xwQAGEAAABuAgAAGQAAAP8cEABhAAAAcgMAABkAAAD/HBAAYQAAAHMDAAAaAAAA/xwQAGEAAAB0AwAAGQAAAP8cEABhAAAAdQMAABkAAAD/HBAAYQAAAHYDAAAZAAAA/xwQAGEAAAB3AwAAGQAAAP8cEABhAAAAeAMAABkAAAD/HBAAYQAAAHkDAAAZAAAA/xwQAGEAAADUAwAAEQAAAP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wAAAQACAAMABAAFAAYABwAIAAkA//////////////////8KAAsADAANAA4ADwD/////////////////////////////////////////////////////////////////////CgALAAwADQAOAA8A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAAQACAAMABAAFAAYABwAIAAkAD//////////////////6AAsADAANAA4ADwAP////////////////////////////////////////////////////////////////////+gALAAwADQAOAA8AD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABP3Ly+/LF3/3oPuxOc6OglsQk29z3Pqp+s6VSMYZGxdx2MA3UNg5XHFyRq77n1ndUlb0TS0ON6+R2tRGsocwVLd8Vqg2LO7Jsy7ApD+WfjTtV2RST7AejCP6fNk/dBnCKK1FbteQKi8w8RwXh1UkNr1kRWNIxBRZipqnhriRMKgwzWa0HvkVa+U9VWxmuYzCOPy8YRazbs7aiK7LeGvr8sOT8c6wKis5Sp1vMyFNf3ewdP46WDiuC5U8ywP9nM9drJIlyPJK1Y6Gj/nI8PQLPRvpWZ2TZsN5GhH8K5CQgQIy37/49ER4W1iqcyKAwK1Kv5+f+zFZnm4mxRPzKP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AgMBAgMBAgMEAQIDAQIDAQIDBAECAwECAwECAwQBAgMBAgMBAgMEAQIDAQIDAQIDBAECAwECAwECAwQBAgMBAgMBAgMBAgMEAQIDAQIDAQIDBAECAwECAwECAwQBAgMBAgMBAgMEAQIDAQIDAQIDBAECAwECAwECAwQBAgMBAgMBAgMEAQIDAQIDAQIDBAECAwECAwECAwQBAgMBAgMBAgMEAQIDAQIDAQIDAQIDBAECAwECAwECAwQBAgMBAgMBAgMEAQIDAQIDAQIDBAECAwECAwECAwQBAgMBAgMBAgMEAQIDAQIDAQIDBAECAwECAwECAwQBAgMBAgMBAgMEAQIDAQIDAQIDAQIDBAECAwECAwECAwQBAgMBAgMBAgMEAQIDAQIDAQIDBAECAwECAwECAwQBAgMBAgMBAgMEAQIDAQIDAQIDBAECAwECAwECAwQBAgMBAgMBAgMEAQIDAQIDAQIDAQIDBAECAwECAwECAwQBAgMBAgMBAgMEAQIDAQIDAQIDBAECAwECAwECAwQBAgMBAgMBAgMEAQIDAQIDAQIDBAECAwECAwECAwQBAgMBAgMBAgMEAQIDAQIDAQIDBAECAwECAwECAwECAwQBAgMBAgMBAgMEAQIDAQIDAQIDBAECAwECAwECAwQBAgMBAgMBAgMEAQIDAQIDAQIDBAECAwECAwECAwQBAgMBAgMBAgMEAQIDAQIDAQIDBAECAwECAwECAwECAwQBAgMBAgMBAgMEAQIDAQIDAQIDBAECAwECAwECAwQBAgMBAgMBAgMEAQIDAQIDAQIDBAECAwECAwECAwQBAgMBAgMBAgMEAQIDAQIDAQIDBAECAwECAwECAwQBAgMBAgMBAgMBAgMEAQIDAQIDAQIDBAECAwECAwECAwQBAgMBAgMBAgMEAQIDAQIDAQIDBAECAwECAwECAwQBAgMBAgMBAgMEAQIDAQIDAQIDBAECAwECAwECAwQBAgMBAgMBAgMBAgMEAQIDAQIDAQIDBAECAwECAwECAwQBAgMBAgMBAgMEAQIDAQIDAQIDBAECAwECAwECAwQBAgMBAgMBAgMEAQIDAQIDAQIDBAECAwECAwECAwQBAgMBAgMBAgMBAgMEAQIDAQIDAQIDBAECAwECAwECAwQBAgMBAgMBAgMEAQIDAQIDAQIDBAECAwECAwECAwQBAgMBAgMBAgMEAQIDAQIDAQIDBAECAwECAwECAwQBAgMBAgMBAgMEAQIDAQIDAQIDAQIDBAECAwECAwECAwQBAgMBAgMBAgMEAQIDAQIDAQIDBAECAwECAwECAwQBAgMBAgMBAgMEAQIDAQIDAQIDBAECAwECAwECAwQBAgMBAgMBAgMEAQIDAQIDAQIDAQIDBAECAwECAwECAwQBAgMBAgMBAgMEAQIDAQIDAQIDBAECAwECAwECAwQBAgMBAgMBAgMEAQIDAQIDAQIDBAECAwECAwECAwQBAgMBAgMBAgMEAQIDAQIDAQIDBAECAwECAwECAwECAwQBAgMBAgMBAgMEAQIDAQIDAQIDBAECAwECAwECAwQBAgMBAgMBAgMEAQIDAQIDAQIDBAECAwECAwECAwQBAgMBAgMBAgMEAQIDAQIDAQIDBAECAwECAwECAwECAwQBAgMBAgMBAgMEAQIDAQIDAQIDBAECAwECAwECAwQBAgMBAgMBAgMEAQIDAQIDAQIDBAECAwECAwECAwQBAgMBAgMBAgMEAQIDAQIDAQIDBAECAwECAwECAwQBAgMBAgMBAgMBAgMEAQIDAQIDAQIDBAECAwECAwECAwQBAgMBAgMBAgMEAQIDAQIDAQIDBAECAwECAwECAwQBAgMBAgMBAgMEAQIDAQIDAQIDBAECAwECAwECAwQBAgMBAgMBAgMBAgMEAQIDAQIDAQIDBAECAwECAwECAwQBAgMBAgMBAgMEAQIDAQIDAQIDBAECAwECAwECAwQBAgMBAgMBAgMEAQIDAQIDAQIDBAECAwECAwECAwQBAgMBAgMBAgMBAgMEAQIDAQIDAQIDBAECAwECAwECAwQBAgMBAgMBAgMEAQIDAQIDAQIDBAECAwECAwECAwQBAgMBAgMBAgMEAQIDAQIDAQIDBAECAwECAwECAwQBAgMBAgMBAgMEAQIDAQIDAQIDAQIDBAECAwECAwECAwQBAgMBAgMBAgMEAQIDAQIDAQIDBAECAwECAwECAwQBAgMBAgMBAgMEAQIDAQIDAQIDBAECAwECAwECAwQBAgMBAgMBAgMEAQIDAQIDAQIDAQIDBAECAwECAwECAwQBAgMBAgMBAgMEAQIDAQIDAQIDBAECAwECAwECAwQBAgMBAgMBAgMEAQIDAQIDAQIDBAECAwECAwECAwQBAgMBAgMBAgMEAQIDAQIDAQIDBAECMDAwMTAyMDMwNDA1MDYwNzA4MDkxMDExMTIxMzE0MTUxNjE3MTgxOTIwMjEyMjIzMjQyNTI2MjcyODI5MzAzMTMyMzMzNDM1MzYzNzM4Mzk0MDQxNDI0MzQ0NDU0NjQ3NDg0OTUwNTE1MjUzNTQ1NTU2NTc1ODU5NjA2MTYyNjM2NDY1NjY2NzY4Njk3MDcxNzI3Mzc0NzU3Njc3Nzg3OTgwODE4MjgzODQ4NTg2ODc4ODg5OTA5MTkyOTM5NDk1OTY5Nzk4OTkBAAAAyRkQAGIAAAChAAAANgAAAMkZEABiAAAAmwAAAAkAAABUaGUgbnVtYmVyIGJlaW5nIHJlYWQgaXMgbGFyZ2VyIHRoYW4gY2FuIGJlIHJlcHJlc2VudGVkAAAAAAAIAAAABAAAAPQCAAD1AgAA9gIAAHVuaXRhIGJvb2xlYW5hIHN0cmluZ2J5dGUgYXJyYXlib29sZWFuIGBgAAAAm64RAAkAAACkrhEAAQAAAGludGVnZXIgYAAAALiuEQAJAAAApK4RAAEAAABmbG9hdGluZyBwb2ludCBg1K4RABAAAACkrhEAAQAAAGNoYXJhY3RlciBgAPSuEQALAAAApK4RAAEAAABzdHJpbmcgABCvEQAHAAAAdW5pdCB2YWx1ZU9wdGlvbiB2YWx1ZW5ld3R5cGUgc3RydWN0c2VxdWVuY2VtYXBlbnVtdW5pdCB2YXJpYW50bmV3dHlwZSB2YXJpYW50dHVwbGUgdmFyaWFudHN0cnVjdCB2YXJpYW50AAAA9BoQAGMAAAAkCQAAEgAAAKSuEQABAAAApK4RAAEAAABgIG9yIGAAAKSuEQABAAAArK8RAAYAAACkrhEAAQAAAG9uZSBvZiAsIAAAAAEAAAAAAAAALjBpNjR1OGEgbm9uemVybyB1NjR1NjQAAAAAAAQAAAAEAAAA+gIAAHUbEABRAAAALgIAABEAAAAAAAAABAAAAAQAAAD7AgAAAAAAAAQAAAAEAAAA/AIAAE51bEVycm9yOgAAAAEAAAAAAAAAQLARAAEAAABAsBEAAQAAAP0CAAAMAAAABAAAAP4CAAD/AgAAAAMAAH4ZEABLAAAAwQEAAB0AAABhc3NlcnRpb24gZmFpbGVkOiBwc2l6ZSA+PSBzaXplICsgbWluX292ZXJoZWFkAABgHRAAKgAAALAEAAAJAAAAYXNzZXJ0aW9uIGZhaWxlZDogcHNpemUgPD0gc2l6ZSArIG1heF9vdmVyaGVhZAAAYB0QACoAAAC2BAAADQAAAHVzZSBvZiBzdGQ6OnRocmVhZDo6Y3VycmVudCgpIGlzIG5vdCBwb3NzaWJsZSBhZnRlciB0aGUgdGhyZWFkJ3MgbG9jYWwgZGF0YSBoYXMgYmVlbiBkZXN0cm95ZWQAAASxEQBeAAAAvgIQACIAAAABAQAACQAAAGZhaWxlZCB0byBnZW5lcmF0ZSB1bmlxdWUgdGhyZWFkIElEOiBiaXRzcGFjZSBleGhhdXN0ZWQAfLERADcAAABXGxAAHgAAAKkEAAANAAAAAQMAABAAAAAEAAAAAgMAAHRocmVhZCBuYW1lIG1heSBub3QgY29udGFpbiBpbnRlcmlvciBudWxsIGJ5dGVzAFcbEAAeAAAA9gQAACgAAABXb3VsZEJsb2NrAAABAAAAAAAAAGVudGl0eSBub3QgZm91bmRwZXJtaXNzaW9uIGRlbmllZGNvbm5lY3Rpb24gcmVmdXNlZGNvbm5lY3Rpb24gcmVzZXRob3N0IHVucmVhY2hhYmxlbmV0d29yayB1bnJlYWNoYWJsZWNvbm5lY3Rpb24gYWJvcnRlZG5vdCBjb25uZWN0ZWRhZGRyZXNzIGluIHVzZWFkZHJlc3Mgbm90IGF2YWlsYWJsZW5ldHdvcmsgZG93bmJyb2tlbiBwaXBlZW50aXR5IGFscmVhZHkgZXhpc3Rzb3BlcmF0aW9uIHdvdWxkIGJsb2Nrbm90IGEgZGlyZWN0b3J5aXMgYSBkaXJlY3RvcnlkaXJlY3Rvcnkgbm90IGVtcHR5cmVhZC1vbmx5IGZpbGVzeXN0ZW0gb3Igc3RvcmFnZSBtZWRpdW1maWxlc3lzdGVtIGxvb3Agb3IgaW5kaXJlY3Rpb24gbGltaXQgKGUuZy4gc3ltbGluayBsb29wKXN0YWxlIG5ldHdvcmsgZmlsZSBoYW5kbGVpbnZhbGlkIGlucHV0IHBhcmFtZXRlcmludmFsaWQgZGF0YXRpbWVkIG91dHdyaXRlIHplcm9ubyBzdG9yYWdlIHNwYWNlc2VlayBvbiB1bnNlZWthYmxlIGZpbGVxdW90YSBleGNlZWRlZGZpbGUgdG9vIGxhcmdlcmVzb3VyY2UgYnVzeWV4ZWN1dGFibGUgZmlsZSBidXN5ZGVhZGxvY2tjcm9zcy1kZXZpY2UgbGluayBvciByZW5hbWV0b28gbWFueSBsaW5rc2ludmFsaWQgZmlsZW5hbWVhcmd1bWVudCBsaXN0IHRvbyBsb25nb3BlcmF0aW9uIGludGVycnVwdGVkdW5zdXBwb3J0ZWR1bmV4cGVjdGVkIGVuZCBvZiBmaWxlb3V0IG9mIG1lbW9yeWluIHByb2dyZXNzb3RoZXIgZXJyb3J1bmNhdGVnb3JpemVkIGVycm9yT3MAAAAAAAQAAAAEAAAAAwMAAGNvZGUAAAAAAQAAAAEAAAAEAwAAa2luZP0CAAAMAAAABAAAAAUDAABtZXNzYWdlS2luZEVycm9yAAAAAAgAAAAEAAAABgMAAAAAAAAEAAAABAAAAAcDAABDdXN0b21lcnJvciAob3MgZXJyb3IgKQABAAAAAAAAAJO1EQALAAAAnrURAAEAAABwYW5pY2tlZCBhdCA6Cm1lbW9yeSBhbGxvY2F0aW9uIG9mICBieXRlcyBmYWlsZWTGtREAFQAAANu1EQANAAAAih0QABkAAABkAQAACQAAAGNhbm5vdCBtb2RpZnkgdGhlIHBhbmljIGhvb2sgZnJvbSBhIHBhbmlja2luZyB0aHJlYWQIthEANAAAAGcSEAAdAAAAkAAAAAkAAAD9AgAADAAAAAQAAAAIAwAAAAAAAAgAAAAEAAAACQMAAAAAAAAIAAAABAAAAAoDAAALAwAADAMAAA0DAAAOAwAAEAAAAAQAAAAPAwAAEAMAABEDAAASAwAATm90Rm91bmRQZXJtaXNzaW9uRGVuaWVkQ29ubmVjdGlvblJlZnVzZWRDb25uZWN0aW9uUmVzZXRIb3N0VW5yZWFjaGFibGVOZXR3b3JrVW5yZWFjaGFibGVDb25uZWN0aW9uQWJvcnRlZE5vdENvbm5lY3RlZEFkZHJJblVzZUFkZHJOb3RBdmFpbGFibGVOZXR3b3JrRG93bkJyb2tlblBpcGVBbHJlYWR5RXhpc3RzTm90QURpcmVjdG9yeUlzQURpcmVjdG9yeURpcmVjdG9yeU5vdEVtcHR5UmVhZE9ubHlGaWxlc3lzdGVtRmlsZXN5c3RlbUxvb3BTdGFsZU5ldHdvcmtGaWxlSGFuZGxl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AAAAAAAAANDMEQACAAAAAAAAAAwAAAAEAAAAIQMAACIDAAAjAwAAICAgICB7ICwgIHsKLAp9IH0oKAosCntdYXR0ZW1wdGVkIHRvIGJlZ2luIGEgbmV3IG1hcCBlbnRyeSB3aXRob3V0IGNvbXBsZXRpbmcgdGhlIHByZXZpb3VzIG9uZQAAFM0RAEYAAAA/BBAAIQAAANkDAAANAAAAYXR0ZW1wdGVkIHRvIGZvcm1hdCBhIG1hcCB2YWx1ZSBiZWZvcmUgaXRzIGtleQAAdM0RAC4AAAA/BBAAIQAAACUEAAANAAAAYXR0ZW1wdGVkIHRvIGZpbmlzaCBhIG1hcCB3aXRoIGEgcGFydGlhbCBlbnRyeQAAvM0RAC4AAAA/BBAAIQAAALEEAAANAAAAMHgwMDAxMDIwMzA0MDUwNjA3MDgwOTEwMTExMjEzMTQxNTE2MTcxODE5MjAyMTIyMjMyNDI1MjYyNzI4MjkzMDMxMzIzMzM0MzUzNjM3MzgzOTQwNDE0MjQzNDQ0NTQ2NDc0ODQ5NTA1MTUyNTM1NDU1NTY1NzU4NTk2MDYxNjI2MzY0NjU2NjY3Njg2OTcwNzE3MjczNzQ3NTc2Nzc3ODc5ODA4MTgyODM4NDg1ODY4Nzg4ODk5MDkxOTI5Mzk0OTU5Njk3OTg5OTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAHIaEAAcAAAAMwkAAAkAAAAAAAAACAAAAAQAAAAbAwAAZmFsc2V0cnVlAAAAchoQABwAAACsCgAAJgAAAHIaEAAcAAAAtQoAABoAAAB1c2VyLXByb3ZpZGVkIGNvbXBhcmlzb24gZnVuY3Rpb24gZG9lcyBub3QgY29ycmVjdGx5IGltcGxlbWVudCBhIHRvdGFsIG9yZGVyXM8RAEwAAAAHAhAAMAAAAFwDAAAFAAAAYXR0ZW1wdGVkIHRvIGluZGV4IHNsaWNlIHVwIHRvIG1heGltdW0gdXNpemXAzxEALAAAAGludmFsaWQgdXRmLTggc2VxdWVuY2Ugb2YgIGJ5dGVzIGZyb20gaW5kZXgg9M8RABoAAAAO0BEAEgAAAGluY29tcGxldGUgdXRmLTggYnl0ZSBzZXF1ZW5jZSBmcm9tIGluZGV4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bXBsIHdhc21fYmluZGdlbjo6Y2FzdDo6SnNDYXN0IGZvciBqc19zeXM6Ok9iamVjdDxUPj46Omluc3RhbmNlb2Y6Ol9fd2JnX2luc3RhbmNlb2ZfT2JqZWN0XzdjOTk0ODBhMWNkZmI5MTE6OmhjMmZkMjU3YjU0NmEzYWMyBlxqc19zeXM6Ok9iamVjdDxUPjo6ZGVmaW5lX3Byb3BlcnR5OjpfX3diZ19kZWZpbmVQcm9wZXJ0eV9hZWI5NWQwNDM0Y2UwM2QwOjpoODQ5NDhmYmM4NWM1NDIyNgdKanNfc3lzOjpBcnJheTxUPjo6bGVuZ3RoOjpfX3diZ19sZW5ndGhfM2Q0ZWNkMDRiZDhkMjJmMTo6aDMxMGM4NmFjZjM4NjM5ZTMIRGpzX3N5czo6T2JqZWN0OjprZXlzOjpfX3diZ19rZXlzXzJmZDFiZmRkYTdlMjc4Y2E6Omg2NzBiZmU5Nzk5OTY0YmU2CUhqc19zeXM6Ok9iamVjdDo6dmFsdWVzOjpfX3diZ192YWx1ZXNfMzAxYTc3MzYzY2Y2Yzc3Mzo6aDg3MmU5Nzg5NjYwZWYyODUKSmpzX3N5czo6RnVuY3Rpb248Rj46OmNhbGwxOjpfX3diZ19jYWxsX2EyNDU5MmE2ZjM0OWE5N2U6OmhkYTMxYjdmYzdkNGM0MGI0C0tqc19zeXM6Ok9iamVjdDxUPjo6YXNzaWduOjpfX3diZ19hc3NpZ25fNzUyYzJhZjE1MTJjYzdmZDo6aGQ0ZTM3ZThiMjIwMGQ2ZTIMSWpzX3N5czo6SXRlcmF0b3I8VD46Om5leHQ6Ol9fd2JnX25leHRfMDM0MGM0YWUzMjQzOTNjMzo6aDNiNTBmNzE2MjZiYzQ1YWMNTWpzX3N5czo6SXRlcmF0b3JOZXh0PFQ+Ojpkb25lOjpfX3diZ19kb25lXzkxNThmN2NjODc1MWJhMzI6OmhlOThhMjg2MjM4YWM2MTEyDk9qc19zeXM6Okl0ZXJhdG9yTmV4dDxUPjo6dmFsdWU6Ol9fd2JnX3ZhbHVlX2VlM2EwNmY0NTc5MTg0ZmE6OmhiYjMwNWJhYWU0OTY0NWZlD1pqc19zeXM6OlJlZmxlY3Q6OmRlbGV0ZV9wcm9wZXJ0eTo6X193YmdfZGVsZXRlUHJvcGVydHlfZDVmN2JkNzYzYWNiZGI0NDo6aGJiOTgyMjE4ZTY4YjJhZDAQTGpzX3N5czo6QXJyYXk8VD46OnVuc2hpZnQ6Ol9fd2JnX3Vuc2hpZnRfOTUxZWE3MWQ5ZDJkYzY2MDo6aDk5Y2JlZTViMmZlMmZiYTURR2pzX3N5czo6UmVmbGVjdDo6YXBwbHk6Ol9fd2JnX2FwcGx5XzMyOWIyYTQ0MDQxNWMyZTY6OmhmYWQzY2IwOTE3M2I3N2I0ElNjb25zb2xlX2Vycm9yX3BhbmljX2hvb2s6OkVycm9yOjpuZXc6Ol9fd2JnX25ld18yMjdkN2MwNTQxNGViODYxOjpoMTBlYjlkOTBjMDM4OWU1YxNXY29uc29sZV9lcnJvcl9wYW5pY19ob29rOjpFcnJvcjo6c3RhY2s6Ol9fd2JnX3N0YWNrXzNiMGQ5NzRiYmYzMWU0NGY6OmhjZmM0NmYzMjUxZTA3ZGMzFFBjb25zb2xlX2Vycm9yX3BhbmljX2hvb2s6OmVycm9yOjpfX3diZ19lcnJvcl9hNmZhMjAyYjU4YWExY2QzOjpoNWViMjA5YzFjMmVhZmM5NRV6PHNlcmRlX3dhc21fYmluZGdlbjo6ZXJyb3I6OkVycm9yIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6dG9fc3RyaW5nOjpfX3diZ19TdHJpbmdfODU2NGU1NTk3OTllY2NkYTo6aGE0ZTZmOWE3YjI2NDhlMTkWUXNlcmRlX3dhc21fYmluZGdlbjo6T2JqZWN0RXh0OjpzZXQ6Ol9fd2JnX3NldF82YmU0Mjc2OGM2OTBlMzgwOjpoZWNkMDhmNDg5NjY5NDAxMBdqZ2V0cmFuZG9tOjpiYWNrZW5kczo6d2FzbV9qczo6Z2V0X3JhbmRvbV92YWx1ZXM6Ol9fd2JnX2dldFJhbmRvbVZhbHVlc183NmRmYzY5ODI1YzljNTUyOjpoMjA2MTE0OTMzNjYxNjRkNBhdd2ViX3N5czo6ZmVhdHVyZXM6Omdlbl9jb25zb2xlOjpjb25zb2xlOjpsb2dfMTo6X193YmdfbG9nXzdlMWFhOTA2NGExZGJkYmQ6OmgwNDMyOGE2ODYwYzY4NzY2GV13ZWJfc3lzOjpmZWF0dXJlczo6Z2VuX2NvbnNvbGU6OmNvbnNvbGU6OmxvZ18yOjpfX3diZ19sb2dfZGZhMWVmZWRmMjY2NTYyZTo6aDcxMTg1ZWNhYjhmODkwNTIaQWpzX3N5czo6QXJyYXk6Om5ldzo6X193YmdfbmV3XzY4MjY3OGUyZjQ3ZTMyYmM6Omg3N2RmYTJhYTYwOTcwNGZjG0Jqc19zeXM6Ok9iamVjdDo6bmV3OjpfX3diZ19uZXdfYWE4ZDBmYTk3NjJjMjliZDo6aGZmNThiZGU5M2JjYjI5NWUcTmpzX3N5czo6bmV3X2JpZ2ludF91bmNoZWNrZWQ6Ol9fd2JnX0JpZ0ludF82NWJjZWEyNTFlNzg4MDgzOjpoOGZkZDUyMDVkOTA3NjFmYx1qanNfc3lzOjpJdGVyYXRvcjo6bG9va3NfbGlrZV9pdGVyYXRvcjo6TWF5YmVJdGVyYXRvcjo6bmV4dDo6X193YmdfbmV4dF83NjQ2ZWRhYTM5NDU4ZWY3OjpoYWEzMDVlNTI5OTYyZGI3NB5ManNfc3lzOjpTeW1ib2w6Oml0ZXJhdG9yOjpfX3diZ19pdGVyYXRvcl8wMTNiYzA5ZWM5OThjMmE3OjpoNGJlNmExNDJkODUxYjA2OB9KanNfc3lzOjpSZWZsZWN0OjpnZXRfc3ltYm9sOjpfX3diZ19nZXRfMWFmZmRiZGQ1NTczYjE2YTo6aGE5NmI3MjNkMWI4MmRiYmEgSmpzX3N5czo6RnVuY3Rpb248Rj46OmNhbGwwOjpfX3diZ19jYWxsXzE0YjE2OWY3NTliMjY3NDc6OmgyNzEwNmJmYzZhZjE0NDg0IUpqc19zeXM6OkpzU3RyaW5nOjpsZW5ndGg6Ol9fd2JnX2xlbmd0aF82YTg0NmIzYjIzYjc0YWNhOjpoNGExNGI2MGYyYjdhNTJkMSJDanNfc3lzOjpBcnJheTo6ZnJvbTo6X193YmdfZnJvbV8wZGJmMjlmMDllN2ZiMjAwOjpoMTk3NzFhYTNlMGUzNTg2YSNKanNfc3lzOjpBcnJheTo6aXNfYXJyYXk6Ol9fd2JnX2lzQXJyYXlfYzMxMDlkMTRmZmMwNjQ2OTo6aDQwZGRmYjk4MTcwODQyNDkkkgFqc19zeXM6Ol86OjxpbXBsIHdhc21fYmluZGdlbjo6Y2FzdDo6SnNDYXN0IGZvciBqc19zeXM6OkFycmF5QnVmZmVyPjo6aW5zdGFuY2VvZjo6X193YmdfaW5zdGFuY2VvZl9BcnJheUJ1ZmZlcl83Yzg0MzNjNmVkMTRmZmUzOjpoNzdkYjJiNWM0NDgzYmQ1ZSVNanNfc3lzOjpCaWdJbnQ6OnRvX3N0cmluZzo6X193YmdfdG9TdHJpbmdfYzMwNjFhZjJiZjg1OWQxOTo6aDI3NDQ4YmM4MDEwNzZlZWQmV2pzX3N5czo6QmlnSW50Ojp0b19zdHJpbmdfdW5jaGVja2VkOjpfX3diZ190b1N0cmluZ19jOTZkYzc2ZDU1NDdhNzE1OjpoMWI2Zjg4ZDAyNzczNzhmZSdBanNfc3lzOjpFcnJvcjo6bmV3OjpfX3diZ19uZXdfNWUzNjBkMmZmN2I5ZTFjMzo6aDNiYzFlZThkNTdjOTVlN2MohAFqc19zeXM6Ol86OjxpbXBsIHdhc21fYmluZGdlbjo6Y2FzdDo6SnNDYXN0IGZvciBqc19zeXM6OkRhdGU+OjppbnN0YW5jZW9mOjpfX3diZ19pbnN0YW5jZW9mX0RhdGVfODFiNzVmNWVkMzZiMzBlYTo6aDliM2JlYjU1YTczODI0NDApSWpzX3N5czo6RGF0ZTo6Z2V0X3RpbWU6Ol9fd2JnX2dldFRpbWVfZGE3YzU1ZjUyYjcxZThjNjo6aDhiOTExMjAzNGNmMmI3MmEqQGpzX3N5czo6RGF0ZTo6bmV3OjpfX3diZ19uZXdfNzkxMzY2NmZlNTA3MDY4NDo6aDk0NDc5ZTIxNTA1YzQ3MGUrSmpzX3N5czo6T2JqZWN0OjplbnRyaWVzOjpfX3diZ19lbnRyaWVzX2UwYjczYWE4NTcxZGRiNTY6OmgyNjE0ZDY2ZTM5MTg5YjFlLEZqc19zeXM6OlJhbmdlRXJyb3I6Om5ldzo6X193YmdfbmV3XzE5MTUyMWZlY2IxNzE2Mzk6Omg5NDY0ODgxMDQ2ZjljZmU1LUNqc19zeXM6OlJlZmxlY3Q6OmdldDo6X193YmdfZ2V0XzYwMTFmYTNhNThmNjEwNzQ6OmhmNDVjOGU1ZWZlYmZlOWJmLkxqc19zeXM6OlJlZmxlY3Q6Om93bl9rZXlzOjpfX3diZ19vd25LZXlzXzAyMzE4ODc2ODBmMGY5NDU6Omg4ZWViMTRkNmRiYzZjYjBjL0Nqc19zeXM6OlJlZmxlY3Q6OnNldDo6X193Ymdfc2V0XzAyMmJlZTUyZDBiMDViMTk6Omg0ZTliNjNlNmJjZDI1NTVhMEpqc19zeXM6OkpzU3RyaW5nOjpjb25jYXQ6Ol9fd2JnX2NvbmNhdF8xY2VmNTM4MDM3MmU5NjlkOjpoMzI0MDVlNGJlZTBmYzMyMzFIanNfc3lzOjpKc1N0cmluZzo6c2xpY2U6Ol9fd2JnX3NsaWNlXzQ1OTE2ZWQyZmFlN2UwZWE6OmhjMDRiOTBiODlkZDFhZjcyMkNqc19zeXM6OlN5bWJvbDo6Zm9yXzo6X193YmdfZm9yX2IwNjE2ZDFkZTc3NzRiZTk6OmhjYzRiZDQ5YTYxYzllZTcwM01qc19zeXM6OlN5bWJvbDo6dG9fc3RyaW5nOjpfX3diZ190b1N0cmluZ181YTg0Yjg1NTJiMzRhMTlkOjpoMDdmYThmYjRjMTYzMThjYzRManNfc3lzOjpVaW50OEFycmF5OjpsZW5ndGg6Ol9fd2JnX2xlbmd0aF85ZjE3NzUyMjRjZjFkODE1OjpoZWYwZTUyNmE0ODcyZDVmZTVdanNfc3lzOjpVaW50OEFycmF5Ojpjb3B5X3RvX3NsaWNlOjpfX3diZ19wcm90b3R5cGVzZXRjYWxsX2E2YjAyZWIwMGIwZjRjZTI6OmhhYTU5ODliZjRmZDljM2ZlNkZqc19zeXM6OlVpbnQ4QXJyYXk6Om5ldzo6X193YmdfbmV3XzBjNzQwM2RiNmU3ODJmMTk6Omg5ZTlmOWUyNzZiZDQzMmJlN5ABanNfc3lzOjpfOjo8aW1wbCB3YXNtX2JpbmRnZW46OmNhc3Q6OkpzQ2FzdCBmb3IganNfc3lzOjpVaW50OEFycmF5Pjo6aW5zdGFuY2VvZjo6X193YmdfaW5zdGFuY2VvZl9VaW50OEFycmF5XzE1MmJhMWYyODllZGNmM2Y6OmgzZjU5ZmYwM2YwZWMyYzJjOFxqc19zeXM6OlVpbnQ4QXJyYXk6Om5ld19mcm9tX3NsaWNlOjpfX3diZ19uZXdfZnJvbV9zbGljZV9iNWVhNDNlMjNmNjAwOGMwOjpoODcyZjU4ZDBlMTAwMzMxZDlkd2FzbV9iaW5kZ2VuOjpfX3diaW5kZ2VuX3N0cmluZ19nZXQ6Ol9fd2JnX19fd2JpbmRnZW5fc3RyaW5nX2dldF83ZWQ1MzIyOTkxY2FhZWM1OjpoYjI4MjA1MzgxZGRiNGYxNzpmd2FzbV9iaW5kZ2VuOjpfX3diaW5kZ2VuX2Jvb2xlYW5fZ2V0OjpfX3diZ19fX3diaW5kZ2VuX2Jvb2xlYW5fZ2V0XzZlYTE0OWYwYThkY2M1ZmY6OmhmNWJjYWFkOWIxNmE4NjcyO2R3YXNtX2JpbmRnZW46Ol9fd2JpbmRnZW5fbnVtYmVyX2dldDo6X193YmdfX193YmluZGdlbl9udW1iZXJfZ2V0X2M3ZjQyYWVkMDUyNWM0NTE6Omg1OGE4MzMwMzE1ZjgwOWJlPGh3YXNtX2JpbmRnZW46Ol9fd2JpbmRnZW5faXNfdW5kZWZpbmVkOjpfX3diZ19fX3diaW5kZ2VuX2lzX3VuZGVmaW5lZF8yOWE0M2I0ZDQyOTIwYWJkOjpoNDZjZWExZDE5NjQ4MjRjMD1od2FzbV9iaW5kZ2VuOjpfX3diaW5kZ2VuX2RlYnVnX3N0cmluZzo6X193YmdfX193YmluZGdlbl9kZWJ1Z19zdHJpbmdfYWI0YjM0ZDIzZDY3NzhiZDo6aGEwM2RhMTZiMjBjYWQ3OTI+VHdhc21fYmluZGdlbjo6X193YmluZGdlbl9pc19hcnJheTo6X193YmdfaXNBcnJheV8yNzkwNTE2YWE4NDhiZjE4OjpoYTFmM2IwYWQ1NTI1YTY1OD9Td2FzbV9iaW5kZ2VuOjpfX3diaW5kZ2VuX2Vycm9yX25ldzo6X193YmdfRXJyb3JfOTYwYzE1NWQzZDQ5ZTRjMjo6aGM2YjVmM2IzNzEwODEzNTZAXHdhc21fYmluZGdlbjo6X193YmluZGdlbl9qc29uX3NlcmlhbGl6ZTo6X193Ymdfc3RyaW5naWZ5XzA1N2M0MDI3MjcxZjgwMDc6OmhlNDg0NzM4OWFiM2E1MTdiQV53YXNtX2JpbmRnZW46Ol9fd2JpbmRnZW5faXNfbnVsbDo6X193YmdfX193YmluZGdlbl9pc19udWxsXzUyZmY0ZWMwNDE4NjczNmY6OmgxOTdhMTBmYjI3MzM0ZGQ5QmJ3YXNtX2JpbmRnZW46Ol9fd2JpbmRnZW5faXNfb2JqZWN0OjpfX3diZ19fX3diaW5kZ2VuX2lzX29iamVjdF82MzMyMmVjMGNkNmVhNGVmOjpoZjFhODVhZDU0YzQ5ZDFjM0Nmd2FzbV9iaW5kZ2VuOjpfX3diaW5kZ2VuX2lzX2Z1bmN0aW9uOjpfX3diZ19fX3diaW5kZ2VuX2lzX2Z1bmN0aW9uXzNiYWE5ZGIxYTk4N2Y0N2Q6Omg2ZWQyMTQ3YmRkNDdiMGJjRGJ3YXNtX2JpbmRnZW46Ol9fd2JpbmRnZW5faXNfc3RyaW5nOjpfX3diZ19fX3diaW5kZ2VuX2lzX3N0cmluZ182ZGYzYmY3ZWYxMTY0ZWQzOjpoZTgwYjdiMDQzM2YyZWVmZEVid2FzbV9iaW5kZ2VuOjpfX3diaW5kZ2VuX2lzX2JpZ2ludDo6X193YmdfX193YmluZGdlbl9pc19iaWdpbnRfZWMyNWM3ZjkxYjRkOWU5Mzo6aGYwNGE1MjU5MDQ1NDZiZWJGVndhc21fYmluZGdlbjo6X193YmluZGdlbl9uZWc6Ol9fd2JnX19fd2JpbmRnZW5fbmVnXzhkMzlkMjNlZjY1YzlmZGI6OmgzZGE3ZWQ3ZDRkODExMjkyR1R3YXNtX2JpbmRnZW46Ol9fd2JpbmRnZW5fbHQ6Ol9fd2JnX19fd2JpbmRnZW5fbHRfNzhiYWIzODI2MjhmYjQ4Zjo6aDRiZmQ2NGFkZTNiOTU3OTlIVHdhc21fYmluZGdlbjo6X193YmluZGdlbl9ndDo6X193YmdfX193YmluZGdlbl9ndF9mZDA4ZDhjYmUwYTg1NTFjOjpoZWJkZDU1OWFhMmUwOTdmMUlad2FzbV9iaW5kZ2VuOjpfX3diaW5kZ2VuX3Rocm93OjpfX3diZ19fX3diaW5kZ2VuX3Rocm93XzZiNjQ0NDliOWI5ZWQzM2M6OmgwNGNiNTg0YmMyMWJiODA5Smx3YXNtX2JpbmRnZW46Ol9fd2JpbmRnZW5fanN2YWxfbG9vc2VfZXE6Ol9fd2JnX19fd2JpbmRnZW5fanN2YWxfbG9vc2VfZXFfY2FjMzU2NWU4OWI0MTM0Yzo6aGZhNGIzODEyYzg2NDk2OTlMEEY2NCAtPiBFeHRlcm5yZWZNEEk2NCAtPiBFeHRlcm5yZWZOGFJlZihTdHJpbmcpIC0+IEV4dGVybnJlZk8QVTY0IC0+IEV4dGVybnJlZlA/YXV0b21lcmdlOjpvcF9zZXQyOjpjb2x1bW5zOjpDb2x1bW5zOjpzcGxpY2U6Omg1MDdlNWFmZmEwMmNkYzU0UT9hdXRvbWVyZ2U6Om9wX3NldDI6OmNvbHVtbnM6OkNvbHVtbnM6OnNwbGljZTo6aDQzODIxMGUzODA5NTk4ZDhSP2F1dG9tZXJnZTo6b3Bfc2V0Mjo6Y29sdW1uczo6Q29sdW1uczo6c3BsaWNlOjpoYjlhZjBhZjM3NTkwNDMwZVNHYXV0b21lcmdlOjpvcF9zZXQyOjpjaGFuZ2U6OmJhdGNoOjpCYXRjaEFwcGx5OjphcHBseTo6aGIyOWU4NzE1ZmM1Y2UwOWJUUmF1dG9tZXJnZTo6YXV0b21lcmdlOjpBdXRvbWVyZ2U6OmxvYWRfd2l0aF9vcHRpb25zOjp7e2Nsb3N1cmV9fTo6aDAwYWQ4ZmQ2NGE5NWQ0NmRVQGF1dG9tZXJnZTo6c3RvcmFnZTo6YnVuZGxlOjpCdW5kbGU6OmZyb21fbWV0YTo6aDg4MDU1MTJlMTFiNmEwNDhWWmF1dG9tZXJnZTo6c3RvcmFnZTo6Y2hhbmdlOjpjaGFuZ2Vfb3BfY29sdW1uczo6Q2hhbmdlT3BzQ29sdW1uczo6ZW5jb2RlOjpoNTI2ZTlkMjkwNmUxZTZjOVc9YXV0b21lcmdlOjpvcF9zZXQyOjpjb2x1bW5zOjpDb2x1bW5zOjpkdW1wOjpoOWYxOGU2OTIzMzUzZTU1N1g8YXV0b21lcmdlOjphdXRvbWVyZ2U6OkF1dG9tZXJnZTo6aXRlcl9mb3I6Omg4YjRjYjgzMzI4ZWM3ZmJjWUJhdXRvbWVyZ2U6OmF1dG9tZXJnZTo6QXV0b21lcmdlOjp1cGRhdGVfaGlzdG9yeTo6aDhmM2QxOTI3NDBiYzFlMDVaPmF1dG9tZXJnZTo6b3Bfc2V0Mjo6b3Bfc2V0OjpPcFNldDo6YWRkX3N1Y2M6OmgxNDk2OWZmZGIwZDlhYjZjWzphdXRvbWVyZ2U6Om9wX3NldDI6Om9wX3NldDo6T3BTZXQ6OmxvYWQ6OmhiOWZiYWUwZjJjZGUxZmI3XEhhdXRvbWVyZ2U6OnBhdGNoZXM6OnBhdGNoX2xvZzo6UGF0Y2hMb2c6Om1ha2VfcGF0Y2hlczo6aDMyYTgzZWM5OTI5YmY4N2JdOmF1dG9tZXJnZTo6c3RvcmFnZTo6Y2h1bms6OkNodW5rOjpwYXJzZTo6aDBhNjUwMmYzZGM5YWJkNTJeM2F1dG9tZXJnZV93YXNtOjpBdXRvbWVyZ2U6OmNsb25lOjpoYjI1MmJhYjg0YTZmNmVhNl9sPGNvcmU6Oml0ZXI6OmFkYXB0ZXJzOjpHZW5lcmljU2h1bnQ8SSxSPiBhcyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvcj46Om5leHQ6OmhjYWU2ZDVmZWZkNmVmN2QyYEhhdXRvbWVyZ2U6OnBhdGNoZXM6OnBhdGNoX2xvZzo6RXhwb3NlUXVldWU6OmZsdXNoX29iajo6aGI4NTVhNmEyMGY0NTFjMTlhugE8YXV0b21lcmdlOjpsZWdhY3k6OnNlcmRlX2ltcGxzOjpvcDo6PGltcGwgc2VyZGVfY29yZTo6ZGU6OkRlc2VyaWFsaXplIGZvciBhdXRvbWVyZ2U6OmxlZ2FjeTo6T3A+OjpkZXNlcmlhbGl6ZTo6T3BlcmF0aW9uVmlzaXRvciBhcyBzZXJkZV9jb3JlOjpkZTo6VmlzaXRvcj46OnZpc2l0X21hcDo6aDhhYWQyYTUxNjg3NTM0ZTNiLHNoYTI6OnNoYTI1Njo6Y29tcHJlc3MyNTY6OmhlMGQ1YTU3MGM1NWY3Zjg0Y2Y8YXV0b21lcmdlOjpjaGFuZ2U6OkNoYW5nZSBhcyBjb3JlOjpjb252ZXJ0OjpGcm9tPGF1dG9tZXJnZTo6bGVnYWN5OjpDaGFuZ2U+Pjo6ZnJvbTo6aDc1ZjBiODMxY2Y5MjQxOTZkQWF1dG9tZXJnZTo6Y2hhbmdlX2dyYXBoOjpDaGFuZ2VHcmFwaENvbHM6OmxvYWQ6OmhhNWNlMjA2NTU3NmEyN2M5ZTltaW5pel9veGlkZTo6aW5mbGF0ZTo6Y29yZTo6ZGVjb21wcmVzczo6aDc4MGY4MjIyYTYyN2RjYWJmOWF1dG9tZXJnZTo6c3RvcmFnZTo6bG9hZDo6bG9hZF9jaGFuZ2VzOjpoYWE1NjIxYmIyZDkxOTE0MGdmYXV0b21lcmdlOjpzeW5jOjo8aW1wbCBhdXRvbWVyZ2U6OmF1dG9tZXJnZTo6QXV0b21lcmdlPjo6cmVjZWl2ZV9zeW5jX21lc3NhZ2VfaW5uZXI6Omg0Y2U2NDlhYzg0YjNmY2YwaFphdXRvbWVyZ2U6Om9wX3NldDI6OmNoYW5nZTo6Y29sbGVjdG9yOjpDaGFuZ2VDb2xsZWN0b3I6OmZyb21fYnVpbGRfbWV0YTo6aDg0MmQ3YzM2NTdjNzk4ZGRpQGF1dG9tZXJnZV93YXNtOjpBdXRvbWVyZ2U6OmFwcGx5X3BhdGNoZXNfaW1wbDo6aDdkMzQxNWUxZjgzYTU5MTRqVDxqc19zeXM6OkFycmF5IGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6Y29sbGVjdDo6RXh0ZW5kPEE+Pjo6ZXh0ZW5kOjpoYzczMzI5NjA3NGUwMTMwMmtAYXV0b21lcmdlOjphdXRvbWVyZ2U6OkF1dG9tZXJnZTo6aW5zZXJ0X2FjdG9yOjpoNzI0ZmVjNjQwMjlkOTU0MWxPYXV0b21lcmdlOjp0cmFuc2FjdGlvbjo6aW5uZXI6OlRyYW5zYWN0aW9uSW5uZXI6OmNvbW1pdF9pbXBsOjpoMmI0NjZjNWY4YmI2NWU4Y21dYXV0b21lcmdlOjpvcF9zZXQyOjpjaGFuZ2U6OmNvbGxlY3Rvcjo6T3BFbmNvZGVyU3RyYXRlZ3k6OmludG9fY2hhbmdlX2NvbHM6Omg0M2EzNWY2ZTdlNzIyYzE1bj5hdXRvbWVyZ2U6OnN0b3JhZ2U6OmRvY3VtZW50OjpEb2N1bWVudDo6bmV3OjpoZTVmOTU2OTBkNjlmNGM0Nm9eYXV0b21lcmdlOjpzeW5jOjo8aW1wbCBhdXRvbWVyZ2U6OmF1dG9tZXJnZTo6QXV0b21lcmdlPjo6Z2V0X2hhc2hlc190b19zZW5kOjpoNTAxNTIwYzZmOTNmMmNlMXAwYXV0b21lcmdlX3dhc206OmVuY29kZV9jaGFuZ2U6OmhjMWY1NDEyNDYyNjc0MjgzcU1hdXRvbWVyZ2U6OmF1dG9tZXJnZTo6QXV0b21lcmdlOjphcHBseV9jaGFuZ2VzX2xvZ19wYXRjaGVzOjpoOGY4NmI5NzhjZTM5N2ZkOHI6YXV0b21lcmdlX3dhc206OkF1dG9tZXJnZTo6dXBkYXRlX3NwYW5zOjpoZDkxNzllNjVhOGY2N2QzMXNNYXV0b21lcmdlOjphdXRvbWVyZ2U6OkF1dG9tZXJnZTo6YXBwbHlfY2hhbmdlc19sb2dfcGF0Y2hlczo6aDk2YTBjZTE4MTE5NDg0YTB0QWF1dG9tZXJnZTo6c3RvcmFnZTo6YnVuZGxlOjpCdW5kbGU6OnRvX2NoYW5nZXM6OmgyNTFhYmIxMGZhYjgxMTFidTxoZXhhbmU6OnNsYWI6OnRyZWU6OlRyZWVOb2RlPFQsVz46OnJlbW92ZTo6aGZlNjc0NmFlZTRiMWE3MDd2bjxjb3JlOjppdGVyOjphZGFwdGVyczo6ZmlsdGVyOjpGaWx0ZXI8SSxQPiBhcyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvcj46Om5leHQ6Omg4ZGRlMzNkNWIwM2U5OTk2d1hhdXRvbWVyZ2U6Om9wX3NldDI6Om9wX3NldDo6bWFya19pbmRleDo6TWFya0luZGV4Q29sdW1uOjpyaWNoX3RleHRfYXQ6OmgxYjg5MTk3ODc1YWQzMTE5eFM8YXV0b21lcmdlOjpvcF9zZXQyOjpvcF9zZXQ6Ok9wU2V0IGFzIGNvcmU6OmNsb25lOjpDbG9uZT46OmNsb25lOjpoMmMwYWZkMWEzOTYwNzgwNHlWPGF1dG9tZXJnZTo6b3Bfc2V0Mjo6b3Bfc2V0OjpPcFNldCBhcyBjb3JlOjpjbG9uZTo6Q2xvbmU+OjpjbG9uZTo6aDJjMGFmZDFhMzk2MDc4MDRbMV16TGF1dG9tZXJnZTo6b3Bfc2V0Mjo6Y2hhbmdlOjpjb2xsZWN0b3I6OkNoYW5nZUJ1aWxkZXI6OmFkZDo6aGZlNTA4MjdiMjE1MjA5YWZ7PW1pbml6X294aWRlOjpkZWZsYXRlOjpjb3JlOjpjb21wcmVzc19pbm5lcjo6aGNmMjMyNDJiZDcwYzdkMDB8OWF1dG9tZXJnZTo6dGV4dF9kaWZmOjphcHBseV9tYXJrc19kaWZmOjpoMTZjMTc2ZTBmMmEyNzUzMn1BYXV0b21lcmdlOjpvcF9zZXQyOjpvcF9zZXQ6Ok9wU2V0OjpzZXRfaW5kZXhlczo6aDNjMmMzZjBhZTJhYzUzMDZ+UmF1dG9tZXJnZTo6YXV0b21lcmdlOjpBdXRvbWVyZ2U6OmNvbnZlcnRfc2NhbGFyX3N0cmluZ3NfdG9fdGV4dDo6aDk5NjUzMjE5YzRiZDM3NDR/SGNvcmU6Om51bTo6Zmx0MmRlYzo6c3RyYXRlZ3k6OmRyYWdvbjo6Zm9ybWF0X3Nob3J0ZXN0OjpoMTM2MzMxMGI0NGZjMjE2OIABSGF1dG9tZXJnZTo6c2VxdWVuY2VfdHJlZTo6U2VxdWVuY2VUcmVlTm9kZTxUPjo6cmVtb3ZlOjpoNzMxMjk4YjQzOTA1NjQyYoEBPGhleGFuZTo6c2xhYjo6dHJlZTo6VHJlZU5vZGU8VCxXPjo6cmVtb3ZlOjpoOTk4YmQxYTlhY2FjMjIwYoIBXDxhdXRvbWVyZ2U6Om9wX3NldDI6OmNvbHVtbnM6OkNvbHVtbnMgYXMgY29yZTo6ZGVmYXVsdDo6RGVmYXVsdD46OmRlZmF1bHQ6OmhlY2M4YzgzMDYwYWM5ZTQ5gwE+YXV0b21lcmdlOjphdXRvbWVyZ2U6OkF1dG9tZXJnZTo6bGVuZ3RoX2Zvcjo6aDgyY2M3NmQxNzA3ZjliNDSEAThhdXRvbWVyZ2Vfd2FzbTo6aW50ZXJvcDo6aW1wb3J0X21hcmtzOjpoMzQ4ZjZlMmQwZWVlN2U5OIUBUGF1dG9tZXJnZTo6dHJhbnNhY3Rpb246OmlubmVyOjpUcmFuc2FjdGlvbklubmVyOjp1cGRhdGVfdmFsdWU6OmhkOGVmZTg5NDI3OWY1MGJihgFCY29yZTo6c2xpY2U6OnNvcnQ6OnN0YWJsZTo6cXVpY2tzb3J0OjpxdWlja3NvcnQ6OmgxYmNkZGE5ZmFjZTI2N2EzhwE9bWluaXpfb3hpZGU6OmRlZmxhdGU6OmNvcmU6OmNvbXByZXNzX2Jsb2NrOjpoZjU1MDAyZjlhZjQ3NTIzM4gBUGF1dG9tZXJnZTo6dHJhbnNhY3Rpb246OmlubmVyOjpUcmFuc2FjdGlvbklubmVyOjppbm5lcl9zcGxpY2U6Omg5NGI4ZTlmOWYxNWRmY2Q1iQFEY29yZTo6c2xpY2U6OnNvcnQ6OnVuc3RhYmxlOjpxdWlja3NvcnQ6OnF1aWNrc29ydDo6aDA0OWU1OGMwOWRmNmRkM2OKAUNhdXRvbWVyZ2Vfd2FzbTo6c3luYzo6U3luY1N0YXRlOjpzZXRfc2VudF9oYXNoZXM6OmhiZDA5MmFhNmY1ZGM1MjM0iwFFY29yZTo6bnVtOjpmbHQyZGVjOjpzdHJhdGVneTo6ZHJhZ29uOjpmb3JtYXRfZXhhY3Q6Omg0Njg3ZGEyZTU0Njk2ZTNmjAFnPGF1dG9tZXJnZTo6YXV0b21lcmdlOjpBdXRvbWVyZ2UgYXMgYXV0b21lcmdlOjpzeW5jOjpTeW5jRG9jPjo6Z2VuZXJhdGVfc3luY19tZXNzYWdlOjpoOGZhNmViNzMxOWNmYTBkNo0BPWF1dG9tZXJnZV93YXNtOjppbnRlcm9wOjpqc192YWxfdG9faHlkcmF0ZTo6aDM3ZmJhZGEwN2YwNDA5NWSOAVJhdXRvbWVyZ2U6Om9wX3NldDI6OmNoYW5nZTo6Y29sbGVjdG9yOjpDaGFuZ2VDb2xsZWN0b3I6OmNvbGxlY3Q6OmhiN2JiN2VhMzI5ZGMxMzk3jwFZPGF1dG9tZXJnZTo6dGV4dF92YWx1ZTo6Q29uY3JldGVUZXh0VmFsdWUgYXMgY29yZTo6Y21wOjpQYXJ0aWFsRXE+OjplcTo6aGY0M2NlOTY0M2FlYzYxMGaQAVw8YXV0b21lcmdlOjp0ZXh0X3ZhbHVlOjpDb25jcmV0ZVRleHRWYWx1ZSBhcyBjb3JlOjpjbXA6OlBhcnRpYWxFcT46OmVxOjpoZjQzY2U5NjQzYWVjNjEwZlsxXZEBSWF1dG9tZXJnZV93YXNtOjpleHBvcnRfY2FjaGU6OkV4cG9ydENhY2hlOjptYXRlcmlhbGl6ZTo6aDQ3MDM1ZDIwZjI0ZGE2ZjeSAU5hdXRvbWVyZ2U6OnRyYW5zYWN0aW9uOjppbm5lcjo6VHJhbnNhY3Rpb25Jbm5lcjo6dXBkYXRlX21hcDo6aGI1N2Q1ZDZjYTA3YzU5NGKTAUJjb3JlOjpzbGljZTo6c29ydDo6c3RhYmxlOjpxdWlja3NvcnQ6OnF1aWNrc29ydDo6aDA4MzAzZGFiZDI4ZDZkNTiUAUxhdXRvbWVyZ2U6OnBhdGNoZXM6OnBhdGNoX2J1aWxkZXI6OlBhdGNoQnVpbGRlcjo6Z2V0X3BhdGg6Omg5NTFhMDY2NGZjMjU1YjQwlQFJYXV0b21lcmdlOjpvcF9zZXQyOjpvcF9zZXQ6Ok9wU2V0OjpzZWVrX29wc19ieV9tYXBfa2V5OjpoZWQwMjllMTc3MTM1M2QzYpYBT2F1dG9tZXJnZTo6dHJhbnNhY3Rpb246OmlubmVyOjpUcmFuc2FjdGlvbklubmVyOjp1cGRhdGVfbGlzdDo6aDFhZjkwOWM1OTVhMjA2NjiXAUphbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6OkJUcmVlTWFwPEssVixBPjo6aW5zZXJ0OjpoYzI1N2JiNzI2MzdkNjM5NpgBOWF1dG9tZXJnZTo6bWFya3M6Ok1hcmtBY2N1bXVsYXRvcjo6YWRkOjpoYTVlMmJlNDEwNjYzMDIwY5kBdWF1dG9tZXJnZTo6c3RvcmFnZTo6Y2hhbmdlOjpDaGFuZ2U8YXV0b21lcmdlOjpzdG9yYWdlOjpjaGFuZ2U6OlVudmVyaWZpZWQ+OjpwYXJzZV9mb2xsb3dpbmdfaGVhZGVyOjpoNzA5M2Q4ZDdiNWQ1YjExOJoBNGF1dG9tZXJnZV93YXNtOjpBdXRvbWVyZ2U6OnN1YnNldDo6aDAxNjEzZmY1ZjJmOTM2ZjSbATZhdXRvbWVyZ2U6Oml0ZXI6OmRvYzo6RGlmZkl0ZXI6OmxvZzo6aDY2MWQ1ZDkwMTM5NDNlMDScATthdXRvbWVyZ2U6OnRyYW5zYWN0aW9uOjppbm5lcjo6YmF0Y2hfYmZzOjpoYTliOTE1NDgyMzlmYmQwMJ0BOmRsbWFsbG9jOjpkbG1hbGxvYzo6RGxtYWxsb2M8QT46Om1hbGxvYzo6aGZmOTU4ZjUzYmFlNjMzZTOeAThhdXRvbWVyZ2U6OmF1dG9tZXJnZTo6QXV0b21lcmdlOjpmb3JrOjpoODllNzM0YTA4MjczMTY4OZ8BO2F1dG9tZXJnZTo6YXV0b21lcmdlOjpBdXRvbWVyZ2U6OmZvcmtfYXQ6OmhmYjNkODVlYjMyZjI3NmQ0oAFIYXV0b21lcmdlOjpzZXF1ZW5jZV90cmVlOjpTZXF1ZW5jZVRyZWVOb2RlPFQ+OjpyZW1vdmU6OmhlMDVjZGVlNzZkOTczNjM1oQFCY29yZTo6c2xpY2U6OnNvcnQ6OnN0YWJsZTo6cXVpY2tzb3J0OjpxdWlja3NvcnQ6OmhlMjAzY2RhN2U2YTNlZmY1ogGFAWF1dG9tZXJnZTo6c3RvcmFnZTo6YnVuZGxlOjpzdG9yYWdlOjpCdW5kbGVTdG9yYWdlPGF1dG9tZXJnZTo6c3RvcmFnZTo6Y2hhbmdlOjpVbnZlcmlmaWVkPjo6cGFyc2VfZm9sbG93aW5nX2hlYWRlcjo6aDUzM2M5ZTdmZmQyZjQ3OWSjAUJjb3JlOjpzbGljZTo6c29ydDo6c3RhYmxlOjpxdWlja3NvcnQ6OnF1aWNrc29ydDo6aDMwZjM1MTFiNmI3NmM3OGOkAVJhdXRvbWVyZ2U6Om9wX3NldDI6Om9wX3NldDo6bWFya19pbmRleDo6TWFya0luZGV4Q29sdW1uOjpzcGxpY2U6OmhiNTVjMGMyZjhmMWE3Y2Q5pQG7AWF1dG9tZXJnZV93YXNtOjppbnRlcm9wOjo8aW1wbCBjb3JlOjpjb252ZXJ0OjpUcnlGcm9tPGF1dG9tZXJnZV93YXNtOjppbnRlcm9wOjpKUz4gZm9yIGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6OnNldDo6QlRyZWVTZXQ8YXV0b21lcmdlOjp0eXBlczo6Q2hhbmdlSGFzaD4+Ojp0cnlfZnJvbTo6aGYzNmU4NjU3NmI0OTI5ZTSmATljb3JlOjpzbGljZTo6c29ydDo6c3RhYmxlOjpkcmlmdDo6c29ydDo6aDAwZDA4YzY4ZTI1MWQ3MTOnAUttaW5pel9veGlkZTo6ZGVmbGF0ZTo6Y29yZTo6SHVmZm1hbk94aWRlOjpvcHRpbWl6ZV90YWJsZTo6aDBjODA3ZmE4Mjg2NGE1OGGoAZ4BPGF1dG9tZXJnZTo6c3RvcmFnZTo6Y2hhbmdlOjpjaGFuZ2Vfb3BfY29sdW1uczo6Q2hhbmdlT3BzQ29sdW1ucyBhcyBjb3JlOjpjb252ZXJ0OjpUcnlGcm9tPGF1dG9tZXJnZTo6c3RvcmFnZTo6Y29sdW1uczo6Q29sdW1ucz4+Ojp0cnlfZnJvbTo6aDQ0OWJkYzE0YjY3NTVmYWOpAXA8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bWFwOjpCVHJlZU1hcDxLLFYsQT4gYXMgY29yZTo6Y2xvbmU6OkNsb25lPjo6Y2xvbmU6OmNsb25lX3N1YnRyZWU6Omg5NTk3OGU4ZmVkZjFkZjI4qgFwPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6QlRyZWVNYXA8SyxWLEE+IGFzIGNvcmU6OmNsb25lOjpDbG9uZT46OmNsb25lOjpjbG9uZV9zdWJ0cmVlOjpoZTIwZWMwY2VlZDM5MjE1OKsBQmNvcmU6OnNsaWNlOjpzb3J0OjpzdGFibGU6OnF1aWNrc29ydDo6cXVpY2tzb3J0OjpoODE0MzQ2YjgzZjc1YWIyM6wBQmNvcmU6OnNsaWNlOjpzb3J0OjpzdGFibGU6OnF1aWNrc29ydDo6cXVpY2tzb3J0OjpoOTEyYjZkMDRiMDJhNjNjOK0BR2hleGFuZTo6Y29sdW1uZGF0YTo6Q29sdW1uRGF0YUl0ZXI8Qz46OnNlZWtfdG9fdmFsdWU6Omg5MDE1NzQ4YWUwMDVmM2Q0rgFEY29yZTo6c2xpY2U6OnNvcnQ6OnVuc3RhYmxlOjpxdWlja3NvcnQ6OnF1aWNrc29ydDo6aGVmYjBlOGZlNDFhOWQ0OTOvAUhhdXRvbWVyZ2U6OnNlcXVlbmNlX3RyZWU6OlNlcXVlbmNlVHJlZU5vZGU8VD46OnJlbW92ZTo6aDFmZGY0YTllM2ZmNzJlYTCwAUhhdXRvbWVyZ2U6OnNlcXVlbmNlX3RyZWU6OlNlcXVlbmNlVHJlZU5vZGU8VD46OnJlbW92ZTo6aDk0YTE2ZmU4MjkxMTE3NGaxAUJjb3JlOjpzbGljZTo6c29ydDo6c3RhYmxlOjpxdWlja3NvcnQ6OnF1aWNrc29ydDo6aGQzMDdjMGZjNTZkNjAwNjiyAUJjb3JlOjpzbGljZTo6c29ydDo6c3RhYmxlOjpxdWlja3NvcnQ6OnF1aWNrc29ydDo6aGY5MDYyYzg0MzAyZjQ0NjazAUxhdXRvbWVyZ2U6OnRyYW5zYWN0aW9uOjppbm5lcjo6VHJhbnNhY3Rpb25Jbm5lcjo6bG9jYWxfb3A6Omg2Mjg2MzYzNjI3MzBhNWVltAFoPGNvcmU6Oml0ZXI6OmFkYXB0ZXJzOjptYXA6Ok1hcDxJLEY+IGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6bmV4dDo6aGQ4MzM3MTVhN2ZmYTlmODW1AUthdXRvbWVyZ2U6Om9wX3NldDI6OmNvbHVtbnM6OkNvbHVtbnM6OndyaXRlX3VubGVzc19lbXB0eTo6aDlmNTAyZDUzZDE3YjBiYTe2AUdoZXhhbmU6OmNvbHVtbmRhdGE6OkNvbHVtbkRhdGFJdGVyPEM+OjpzZWVrX3RvX3ZhbHVlOjpoNWYxMDUxMDg1NWZmYWY2NbcBTmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhdXRvbWVyZ2U6Om9wX3NldDI6Om9wX3NldDo6T3BTZXQ+OjpoZWQ4OTViMzc2MWQ0NjNmYrgBPWhleGFuZTo6Y29sdW1uZGF0YTo6Q29sdW1uRGF0YTxDPjo6c2F2ZV90bzo6aDk4MzZiNjczNmJhYmM1NWW5AUhhdXRvbWVyZ2U6OnNlcXVlbmNlX3RyZWU6OlNlcXVlbmNlVHJlZU5vZGU8VD46OnJlbW92ZTo6aGM0OTZkOGQzMGM0NWVmMGG6AVRhdXRvbWVyZ2Vfd2FzbTo6aW50ZXJvcDo6PGltcGwgYXV0b21lcmdlX3dhc206OkF1dG9tZXJnZT46OmltcG9ydDo6aGY3MmQ3YzZhYzcwMTZiN2O7AUJjb3JlOjpzbGljZTo6c29ydDo6c3RhYmxlOjpxdWlja3NvcnQ6OnF1aWNrc29ydDo6aDU0YjRiZTE2M2I3ZjY2N2a8AVthdXRvbWVyZ2Vfd2FzbTo6aW50ZXJvcDo6PGltcGwgYXV0b21lcmdlX3dhc206OkF1dG9tZXJnZT46OnVud3JhcF9vYmplY3Q6Omg3ZjI1NTQ5YTBjNjJhNzEzvQFKYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bWFwOjpCVHJlZU1hcDxLLFYsQT46Omluc2VydDo6aDQ5OTMxNjA3YTNhNzQ2YTW+AUJjb3JlOjpzbGljZTo6c29ydDo6c3RhYmxlOjpxdWlja3NvcnQ6OnF1aWNrc29ydDo6aDkxYWIxY2QxYTA2N2JhMTW/AUY8YWxsb2M6OnZlYzo6VmVjPFQsQT4gYXMgY29yZTo6Y2xvbmU6OkNsb25lPjo6Y2xvbmU6Omg2NGNjOWE4ZjgzODc1ZmNiwAFGYXV0b21lcmdlOjpvcF9zZXQyOjpjaGFuZ2U6OmJhdGNoOjpVbnRhbmdsZXI6OmZsdXNoOjpoNzUwNzZmN2MyM2E0MDA1NMEBTmF1dG9tZXJnZTo6Y2hhbmdlX2dyYXBoOjpDaGFuZ2VHcmFwaDo6Y2FsY3VsYXRlX2Nsb2NrX2lubmVyOjpoOTAwNTFmOTBjNTgwOTQ1ZMIBSmFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6QlRyZWVNYXA8SyxWLEE+OjppbnNlcnQ6Omg2NjIwZGMyY2I0ZDAzN2JmwwF6PGF1dG9tZXJnZTo6c3RvcmFnZTo6YnVuZGxlOjpidWlsZGVyOjpPcEl0ZXJVbnZlcmlmaWVkIGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6bmV4dDo6aDFjNDBhZTBkOTNjMmQwYjPEAUtjb3JlOjpzbGljZTo6c29ydDo6c2hhcmVkOjpzbWFsbHNvcnQ6OnNtYWxsX3NvcnRfZ2VuZXJhbDo6aDBhYjU5YWNjZWNmOGIwMzXFATNhdXRvbWVyZ2Vfd2FzbTo6QXV0b21lcmdlOjpzcGFuczo6aDMzNGJkOGZlM2FjNWY0N2bGAT1oZXhhbmU6OmNvbHVtbmRhdGE6OkNvbHVtbkRhdGE8Qz46OnNhdmVfdG86OmhkYzgxZmJlMzZmOTk2NzMyxwE9aGV4YW5lOjpjb2x1bW5kYXRhOjpDb2x1bW5EYXRhPEM+OjpzYXZlX3RvOjpoNmIxNTgzOTdiMmE3NjkyMMgBRWF1dG9tZXJnZTo6cGF0Y2hlczo6cGF0Y2hfbG9nOjpFeHBvc2VRdWV1ZTo6aW5zZXJ0OjpoZmQwZDQ0YTA2ZjNhNjQzZskBN2F1dG9tZXJnZTo6dGV4dF9kaWZmOjpteWVyczo6Y29ucXVlcjo6aDk2NmZlYjg0MWFkMjYxODbKAUBhdXRvbWVyZ2U6OmF1dG9jb21taXQ6OkF1dG9Db21taXQ6OmRpZmZfaW5uZXI6OmgwMDIwZTc4NmJjMDdkM2QyywEzYXV0b21lcmdlX3dhc206OkF1dG9tZXJnZTo6bWFya3M6OmgxZTUxZTlkNjMyMWQ0Nzg1zAFCY29yZTo6c2xpY2U6OnNvcnQ6OnN0YWJsZTo6cXVpY2tzb3J0OjpxdWlja3NvcnQ6OmgxMzZlNjcwOGI0YWRlZTk2zQFKYXV0b21lcmdlOjpwYXRjaGVzOjpwYXRjaF9sb2c6OlBhdGNoTG9nOjptaWdyYXRlX2FjdG9yczo6aDQyNjJiMjg2NWZmNzZjYTbOATptaW5pel9veGlkZTo6ZGVmbGF0ZTo6Y29yZTo6Zmx1c2hfYmxvY2s6OmgzYTBlOTFjNmY3OGVhMTE2zwEzYXV0b21lcmdlOjpzeW5jOjpNZXNzYWdlOjpkZWNvZGU6OmhhMzNiNWNjMmIxYTVjNTZi0AE9YXV0b21lcmdlOjp2YWx1ZTo6U2NhbGFyVmFsdWU6OmFzX2RhdGF0eXBlOjpoZjZkN2Q3MmEwYjViNTY3MdEBPGhleGFuZTo6Y29sdW1uZGF0YTo6Q29sdW1uRGF0YTxDPjo6c3BsaWNlOjpoOTUzODM4YmJlMGU1OTMxYdIBajxhdXRvbWVyZ2U6OnRleHRfZGlmZjo6QmxvY2tEaWZmSG9vayBhcyBhdXRvbWVyZ2U6OnRleHRfZGlmZjo6bXllcnM6OkRpZmZIb29rPjo6cmVwbGFjZTo6aDYwNTc3M2NhZWI1ZGY4NWbTAYEBPGF1dG9tZXJnZTo6c3RvcmFnZTo6Y2hhbmdlOjpjaGFuZ2Vfb3BfY29sdW1uczo6Q2hhbmdlT3BzSXRlciBhcyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvcj46Om5leHQ6OmgyY2ZhYmQwMTVkMDg1MmRl1AFEY29yZTo6c2xpY2U6OnNvcnQ6OnVuc3RhYmxlOjpxdWlja3NvcnQ6OnF1aWNrc29ydDo6aDMzZDVkY2FiYTczNjg3MTXVATljb3JlOjpzbGljZTo6c29ydDo6c3RhYmxlOjpkcmlmdDo6c29ydDo6aGExNThlMmUzNjk2YTI5MjbWAUJjb3JlOjpzbGljZTo6c29ydDo6c3RhYmxlOjpxdWlja3NvcnQ6OnF1aWNrc29ydDo6aGJjYmY5OTEyMTYzNmZjNDbXAT9hdXRvbWVyZ2U6Om1hcmtzOjpNYXJrU3RhdGVNYWNoaW5lOjptYXJrX2VuZDo6aDE4MTdjODZlMmJhMWJiYmLYAXJjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YWxsb2M6OnZlYzo6VmVjPGF1dG9tZXJnZTo6b3Bfc2V0Mjo6Y2hhbmdlOjpjb2xsZWN0b3I6OkNoYW5nZUJ1aWxkZXI+Pjo6aGMwNTRmYjA4MTA3MzJjYTDZAUphbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6OkJUcmVlTWFwPEssVixBPjo6aW5zZXJ0OjpoYzk3YmVkZDg3OTgwNzUzZdoBQWhleGFuZTo6c2xhYjo6dHJlZTo6VHJlZU5vZGU8VCxXPjo6c3BsaXRfY2hpbGQ6OmgxN2UyMTc1Y2ZmYjY1YTdi2wFuPHVuaWNvZGVfc2VnbWVudGF0aW9uOjpncmFwaGVtZTo6R3JhcGhlbWVzIGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6bmV4dDo6aDM0MWI3YTc4YWU0NDljYWTcAXE8dW5pY29kZV9zZWdtZW50YXRpb246OmdyYXBoZW1lOjpHcmFwaGVtZXMgYXMgY29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+OjpuZXh0OjpoMzQxYjdhNzhhZTQ0OWNhZFsxXd0BR2F1dG9tZXJnZTo6b3Bfc2V0Mjo6b3Bfc2V0OjpPcFNldDo6c2Vla19vcHNfYnlfaW5kZXg6Omg5YThmMmIzNTYxZWNlNjI53gFPYXV0b21lcmdlOjpvcF9zZXQyOjpjaGFuZ2U6OmJhdGNoOjpVbnRhbmdsZXI6OnVudGFuZ2xlX2lubmVyOjpoZTFiOWI2MDAzYTY3MDEzNN8BS2NvcmU6OnNsaWNlOjpzb3J0OjpzaGFyZWQ6OnNtYWxsc29ydDo6c21hbGxfc29ydF9nZW5lcmFsOjpoN2RiYTZkNGVlMjEwMTEwZOABSmFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6QlRyZWVNYXA8SyxWLEE+OjppbnNlcnQ6OmgzMjliNWQ4ZDUzY2ZhMGY14QFmPGF1dG9tZXJnZTo6aXRlcjo6c3BhbnM6OlNwYW5zRGlmZiBhcyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvcj46Om5leHQ6OmhmZTc4ODBlZmU3MmQ4NTE24gE+aGV4YW5lOjpzbGFiOjp3cml0ZXI6OlNsYWJXcml0ZXI8UD46OmZpbmlzaDo6aDMxYTYwMmU4NzVkMzZjZmLjAVthdXRvbWVyZ2U6OnN0b3JhZ2U6OmNvbHVtbnM6OkNvbHVtbkxheW91dFBhcnNlcjo6YWRkX2NvbHVtbjo6e3tjbG9zdXJlfX06OmhkNWRlNzgxZTMyMWI0ZDI25AFIaGV4YW5lOjpjb2x1bW5kYXRhOjpDb2x1bW5EYXRhSXRlcjxDPjo6YWR2YW5jZV9hY2NfYnk6OmgwNjYwYWExMjRjYjE5YTk55QE7YXV0b21lcmdlX3dhc206OkF1dG9tZXJnZTo6Z2V0X3dpdGhfdHlwZTo6aDZlZGRhY2Q2YmFjOWE2MGXmAUJhdXRvbWVyZ2U6OmF1dG9tZXJnZTo6QXV0b21lcmdlOjpsaXN0X3JhbmdlX2Zvcjo6aDQyYWYxMzU4Mjk0ZDkwMTHnAUVhdXRvbWVyZ2U6OmF1dG9tZXJnZTo6QXV0b21lcmdlOjpnZXRfY2hhbmdlc19hZGRlZDo6aDZjNTIwYzgyNmIzZThmNmboAU1hdXRvbWVyZ2U6OnRyYW5zYWN0aW9uOjppbm5lcjo6QmF0Y2hJbnNlcnRpb246OnNwbGljZV90ZXh0OjpoMzFkNTdhY2QxNmNjMTQ4YukBS2F1dG9tZXJnZTo6c3RvcmFnZTo6YnVuZGxlOjpidWlsZGVyOjpCdW5kbGVPcFdyaXRlcjo6YWRkOjpoNWM0MDU2ODdjODU4NTYwNuoBN2F1dG9tZXJnZV93YXNtOjpBdXRvbWVyZ2U6OmdldF9ibG9jazo6aDFlMTczODA3YWI1MzI0NWPrATdhdXRvbWVyZ2U6OnRleHRfZGlmZjo6bXllcnM6OmNvbnF1ZXI6OmgxMTk5NWEwMjE5YjdhMzYx7AE9YXV0b21lcmdlOjphdXRvbWVyZ2U6OkF1dG9tZXJnZTo6bWFya3NfZm9yOjpoZmJmYmY5ZTRmZGQzY2ZmN+0BN2F1dG9tZXJnZTo6dGV4dF9kaWZmOjpteWVyczo6Y29ucXVlcjo6aDIzZTY1ZDE4NjU0YWRmNGbuAThhdXRvbWVyZ2Vfd2FzbTo6QXV0b21lcmdlOjpwdXRfb2JqZWN0OjpoYjI0NWQ1ZDQ4ZjM0MWUzZe8BPGhleGFuZTo6Y29sdW1uZGF0YTo6Q29sdW1uRGF0YTxDPjo6c3BsaWNlOjpoMWI0M2U3NDc0YzY3NTJhZfABRGF1dG9tZXJnZTo6b3Bfc2V0Mjo6Y29sdW1uczo6Q29sdW1uczo6bG9hZF9jb2x1bW46OmhhNDJmYzgxNmUxODk0OWIz8QFpPGF1dG9tZXJnZTo6b3Bfc2V0Mjo6cGFyZW50czo6UGFyZW50cyBhcyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvcj46Om5leHQ6OmhjZjdjZTgyMGFkZmY4Nzkx8gFpYXV0b21lcmdlOjpvcF9zZXQyOjpvcF9zZXQ6OnZpc2libGU6OjxpbXBsIGF1dG9tZXJnZTo6b3Bfc2V0Mjo6b3A6Ok9wPjo6c2NvcGVfdG9fY2xvY2s6OmhhMTQ4MzgxYzllMDc1OTMw8wFEYXV0b21lcmdlOjpvcF9zZXQyOjpjb2x1bW5zOjpDb2x1bW5zOjpsb2FkX2NvbHVtbjo6aDhjYjcyNWQ2ODA3MTRhMmP0AURjb3JlOjpzbGljZTo6c29ydDo6dW5zdGFibGU6OnF1aWNrc29ydDo6cXVpY2tzb3J0OjpoZmVkYmYxNWJkZjA2NjZhNPUBQWF1dG9tZXJnZV93YXNtOjpBdXRvbWVyZ2U6OnNwbGljZV9mcm9tX2h5ZHJhdGU6OmhkMDdjMDViZDczMGQ0ZGEz9gE9aGV4YW5lOjpjb2x1bW5kYXRhOjpDb2x1bW5EYXRhPEM+OjpzYXZlX3RvOjpoYzJmNWZlMzY2OWRmZWY2NPcBc2F1dG9tZXJnZTo6bGVnYWN5OjpfOjo8aW1wbCBzZXJkZV9jb3JlOjpzZXI6OlNlcmlhbGl6ZSBmb3IgYXV0b21lcmdlOjpsZWdhY3k6OkNoYW5nZT46OnNlcmlhbGl6ZTo6aDAyNzM1ZGIyOWViZmQyZDL4AUVjb3JlOjpzbGljZTo6c29ydDo6c2hhcmVkOjpzbWFsbHNvcnQ6OnNvcnQ0X3N0YWJsZTo6aGQ4M2ZiYjcyYjQ5YWU0YzP5AURhdXRvbWVyZ2U6Om9wX3NldDI6OmNvbHVtbnM6OkNvbHVtbnM6OmxvYWRfY29sdW1uOjpoY2JmMDQyZjVlZmQ3Njc4Y/oBMWF1dG9tZXJnZV93YXNtOjpBdXRvbWVyZ2U6OmdldDo6aGQ2ZjM5YzkwZTFlY2QyYzb7AURhdXRvbWVyZ2U6Om9wX3NldDI6Om9wX3NldDo6T3BTZXQ6OnNlZWtfbGlzdF9vcGlkOjpoMzBhYmYyMzIyYTFiZDc0NvwBNmF1dG9tZXJnZV93YXNtOjppbnRlcm9wOjppbXBvcnRfb2JqOjpoODQ2ZDRlOTU3NmY4ZWMwNv0BRmF1dG9tZXJnZTo6b3Bfc2V0Mjo6Y2hhbmdlOjpiYXRjaDo6QmF0Y2hBcHBseTo6cHVzaDo6aDI1YTQ2ZGIzZDA3ODI5NWb+ATxoZXhhbmU6OmNvbHVtbmRhdGE6OkNvbHVtbkRhdGE8Qz46OnNwbGljZTo6aDgyZjdjNGVkZDJjMmQ4ZGP/AVhjb3JlOjpzbGljZTo6c29ydDo6c2hhcmVkOjpzbWFsbHNvcnQ6OnNtYWxsX3NvcnRfZ2VuZXJhbF93aXRoX3NjcmF0Y2g6OmgyZmZmYzZiNmVlNzgxMjQwgAJcPGhleGFuZTo6cmxlOjpSbGVDdXJzb3I8XyxQLFg+IGFzIGhleGFuZTo6Y3Vyc29yOjpDb2x1bW5DdXJzb3I+Ojp0cnlfbmV4dDo6aGFhMTk2MTkzMjZiYWM4MmGBAjRhdXRvbWVyZ2Vfd2FzbTo6QXV0b21lcmdlOjpzcGxpY2U6Omg3ZmRkMDFkYzgyMTE3YTMyggI5Y29yZTo6c2xpY2U6OnNvcnQ6OnN0YWJsZTo6ZHJpZnQ6OnNvcnQ6Omg4NWYyZWMwNzI0ZWZjNTM1gwKSAWF1dG9tZXJnZV93YXNtOjppbnRlcm9wOjo8aW1wbCBjb3JlOjpjb252ZXJ0OjpUcnlGcm9tPGF1dG9tZXJnZV93YXNtOjppbnRlcm9wOjpKUz4gZm9yIGF1dG9tZXJnZTo6c3luYzo6c3RhdGU6OlN0YXRlPjo6dHJ5X2Zyb206Omg0YzM3YjhmMDcyOGUwN2U2hAJUYXV0b21lcmdlOjpjb2x1bW5hcjo6ZW5jb2Rpbmc6OnJsZTo6UmxlRW5jb2RlcjxTLFQ+OjphcHBlbmRfdmFsdWU6OmhlMDYzZTFhZDQ0NWQzZDJjhQJMYXV0b21lcmdlOjpzdG9yYWdlOjpidW5kbGU6OmJ1aWxkZXI6Ok9wSXRlcklubmVyOjp0cnlfbmV3OjpoZmM0ODU2NjE1OGMyMDIzMoYCOWNvcmU6OnNsaWNlOjpzb3J0OjpzdGFibGU6OmRyaWZ0Ojpzb3J0OjpoN2Q0MTg2YjE2MWM4ZGZkMIcCMWF1dG9tZXJnZV93YXNtOjpBdXRvbWVyZ2U6OnB1dDo6aDVhYjI2MjYyZWRmMmJmNWKIAkRjb3JlOjpzbGljZTo6c29ydDo6dW5zdGFibGU6OnF1aWNrc29ydDo6cXVpY2tzb3J0OjpoODA2ZmFkYWQ5ZTc2NmU1N4kCejxhdXRvbWVyZ2U6Om9wX3NldDI6Om9wX3NldDo6Zm91bmRfb3A6Ok9wc0ZvdW5kSXRlcjxJPiBhcyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvcj46Om5leHQ6OmhiMjI2Y2M1MWQ3YmExYzkzigJKYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bWFwOjpCVHJlZU1hcDxLLFYsQT46Omluc2VydDo6aGE1ZDNjOGRkM2Q5MWUwN2WLAjlhdXRvbWVyZ2Vfd2FzbTo6QXV0b21lcmdlOjp1cGRhdGVfdGV4dDo6aGRlNjA5NzU1MjZjYzU2NGSMAjljb3JlOjpzbGljZTo6c29ydDo6c3RhYmxlOjpkcmlmdDo6c29ydDo6aDRhN2ZlMjg2YmQzN2Q2ZGGNAj9hdXRvbWVyZ2U6OmF1dG9tZXJnZTo6QXV0b21lcmdlOjpnZXRfYWxsX2Zvcjo6aGQzMDkzMTZmZjU5ZDk5MzKOAjNhdXRvbWVyZ2U6OnN5bmM6Ok1lc3NhZ2U6OmVuY29kZTo6aDhhNGQwZWU4YzUxNWIwNWGPAjZhdXRvbWVyZ2Vfd2FzbTo6QXV0b21lcmdlOjpvYmpfaW5mbzo6aDg4MTQwZjE5YWI4MWQ3OTaQAkthdXRvbWVyZ2U6OmF1dG9tZXJnZTo6QXV0b21lcmdlOjpnZXRfY3Vyc29yX3Bvc2l0aW9uX2Zvcjo6aDZkMjQ1NTcwNDAyMjY0NDORAj1oZXhhbmU6OnNsYWI6OnRyZWU6OlRyZWVOb2RlPFQsVz46OnJlcGxhY2U6Omg1YTJmMzdhMTUyZGMwODdikgI1YXV0b21lcmdlX3dhc206OkF1dG9tZXJnZTo6Z2V0X2FsbDo6aGMzZTQ1OTQzN2M5NjQ2MmGTAkthdXRvbWVyZ2U6Om9wX3NldDI6OmNvbHVtbnM6OkNvbHVtbnM6OndyaXRlX3VubGVzc19lbXB0eTo6aGI0MDVlMzgxMDBkZmI0M2OUAjZhdXRvbWVyZ2Vfd2FzbTo6QXV0b21lcmdlOjptYXJrc19hdDo6aDk0Y2VjODg5ZTU5M2RiODKVAmo8YXV0b21lcmdlOjppdGVyOjpkb2M6OkRvY0l0ZXJJbnRlcm5hbCBhcyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvcj46Om5leHQ6Omg4NGUzOWJhZmZhMjNiMmQ1lgJHPGY2NCBhcyB6bWlqOjpwcml2YXRlOjpTZWFsZWQ+Ojp3cml0ZV90b196bWlqX2J1ZmZlcjo6aDBiZTM2MGI4NzgzNDBhNWOXAmM8YXV0b21lcmdlOjppdGVyOjpkb2M6OkRpZmZJdGVyIGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6bmV4dDo6aDZkN2I0NjViNzBjMjE4ZTCYAkhhdXRvbWVyZ2U6OnN5bmM6Om1lc3NhZ2VfYnVpbGRlcjo6TWVzc2FnZUJ1aWxkZXI6Om5ldzo6aDExYWJjNDUyNGE4YjVlMTaZAk9hdXRvbWVyZ2U6OnRyYW5zYWN0aW9uOjppbm5lcjo6VHJhbnNhY3Rpb25Jbm5lcjo6ZmluYWxpemVfb3A6OmgyZmI2ZTkyZWQ1OTEyM2VlmgJOYXV0b21lcmdlOjpjb2x1bW5hcjo6ZW5jb2Rpbmc6OnJsZTo6UmxlRW5jb2RlcjxTLFQ+OjphcHBlbmQ6Omg4ZGEwNjk2MjcwOTJlZjkymwI0YXV0b21lcmdlX3dhc206OkF1dG9tZXJnZTo6ZGVsZXRlOjpoZThiNWNhMzhhMDJjM2Y3NpwCOGF1dG9tZXJnZV93YXNtOjpBdXRvbWVyZ2U6OmdldF9jdXJzb3I6Omg0ZGRkYzEzYzVhZDVjZjMxnQJEYXV0b21lcmdlOjpjaGFuZ2VfZ3JhcGg6OkNoYW5nZUdyYXBoOjpjYWNoZV9jbG9jazo6aGYwMWE4OGRjMmYyYTZlNjSeAmI8YXV0b21lcmdlOjpzdG9yYWdlOjpidW5kbGU6OkJ1bmRsZSBhcyBjb3JlOjpjb252ZXJ0OjpUcnlGcm9tPCZbdThdPj46OnRyeV9mcm9tOjpoOWRlMTk2OTA5OGUwNjBjZp8CajxhdXRvbWVyZ2U6Oml0ZXI6Omxpc3RfcmFuZ2U6Okxpc3REaWZmIGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6bmV4dDo6aGRiZDQyYjc3ZTJmZGVmZjigAl88aGV4YW5lOjpybGU6OlJsZVN0YXRlPFA+IGFzIGhleGFuZTo6ZW5jb2Rlcjo6RW5jb2RlclN0YXRlPFA+Pjo6YXBwZW5kX2NodW5rOjpoOGUwMjExMWFmODNlYWJiZKECaDxhdXRvbWVyZ2U6Oml0ZXI6Om1hcF9yYW5nZTo6TWFwRGlmZiBhcyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvcj46Om5leHQ6OmgxNWJhZWM3Zjk1NGEyOTg3ogJfPGhleGFuZTo6cmxlOjpSbGVTdGF0ZTxQPiBhcyBoZXhhbmU6OmVuY29kZXI6OkVuY29kZXJTdGF0ZTxQPj46OmFwcGVuZF9jaHVuazo6aDhkYjVkZDEyMDYxNmYzZTijAkRhdXRvbWVyZ2U6OmF1dG9tZXJnZTo6QXV0b21lcmdlOjp0cmFuc2FjdGlvbl9hcmdzOjpoMDIxOWI0ODc5N2FiYjA2ZqQCWTxhdXRvbWVyZ2U6OmNoYW5nZTo6Q2hhbmdlIGFzIGNvcmU6OmNvbnZlcnQ6OlRyeUZyb208Jlt1OF0+Pjo6dHJ5X2Zyb206OmgwNmQ2NmFhMTIyNzMwNjQ2pQKqAmFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6OnJlbW92ZTo6PGltcGwgYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6SGFuZGxlPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpNdXQsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TGVhZj4sYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpLVj4+OjpyZW1vdmVfbGVhZl9rdjo6aGUxOTUyZGE0MDkyYjI1NWWmAqoCYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6cmVtb3ZlOjo8aW1wbCBhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpIYW5kbGU8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6Ok11dCxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpMZWFmPixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OktWPj46OnJlbW92ZV9sZWFmX2t2OjpoYTI4YTM5ODk1YmFjNTAzNKcCqgJhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpyZW1vdmU6OjxpbXBsIGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkhhbmRsZTxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TXV0LEssVixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkxlYWY+LGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6S1Y+Pjo6cmVtb3ZlX2xlYWZfa3Y6OmhmNjliZjI5ZmQzZWE1ODRiqAJPYXV0b21lcmdlOjp0cmFuc2FjdGlvbjo6aW5uZXI6OlRyYW5zYWN0aW9uSW5uZXI6OnNwbGl0X2Jsb2NrOjpoZWZiMzRmNjE5MTYzY2U1NakCRjxhbGxvYzo6dmVjOjpWZWM8VCxBPiBhcyBjb3JlOjpjbG9uZTo6Q2xvbmU+OjpjbG9uZTo6aDA1NmIwYTBhNzRlYzM2MWGqAqoCYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6cmVtb3ZlOjo8aW1wbCBhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpIYW5kbGU8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6Ok11dCxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpMZWFmPixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OktWPj46OnJlbW92ZV9sZWFmX2t2OjpoMzFmNzdhOGY4OTcwNTNjMasCgAFhdXRvbWVyZ2U6OmNoYW5nZTo6PGltcGwgY29yZTo6Y29udmVydDo6RnJvbTwmYXV0b21lcmdlOjpjaGFuZ2U6OkNoYW5nZT4gZm9yIGF1dG9tZXJnZTo6bGVnYWN5OjpDaGFuZ2U+Ojpmcm9tOjpoMzdkMmEzNjcyM2MzMzI4ZawCPGF1dG9tZXJnZTo6Y2hhbmdlX2dyYXBoOjpDaGFuZ2VHcmFwaDo6bmV3OjpoMWRmMGZiODIwNzRlMjhkM60CbDxjb3JlOjppdGVyOjphZGFwdGVyczo6R2VuZXJpY1NodW50PEksUj4gYXMgY29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+OjpuZXh0OjpoNzJhODZmMDJkOTFhNWZlZa4CdjxhdXRvbWVyZ2U6Om9wX3NldDI6Om9wX3NldDo6dmlzaWJsZTo6U2NhblZpc0l0ZXIgYXMgYXV0b21lcmdlOjppdGVyOjp0b29sczo6U2hpZnRhYmxlPjo6c2hpZnRfbmV4dDo6aDFkM2E3YzJhNGQ2ZjVlZDOvAnQ8YXV0b21lcmdlOjpjb2x1bW5hcjo6Y29sdW1uX3JhbmdlOjprZXk6OktleUl0ZXIgYXMgY29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+OjpuZXh0OjpoYzE4NTFkNThhYzY2YzAwMLACTmF1dG9tZXJnZTo6dHJhbnNhY3Rpb246OmlubmVyOjpUcmFuc2FjdGlvbklubmVyOjpqb2luX2Jsb2NrOjpoN2U0ZDI4NTBjZTY3NmNkM7ECUDxhdXRvbWVyZ2U6OmVycm9yOjpBdXRvbWVyZ2VFcnJvciBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmhhNTBmM2E4YWI0ZjZhYzIxsgI4bWluaXpfb3hpZGU6OmluZmxhdGU6OmNvcmU6OmluaXRfdHJlZTo6aDMyNmYwYjNjMDAxOTlkOGSzAjJhdXRvbWVyZ2U6OnN0b3JhZ2U6OmNodW5rOjpoYXNoOjpoOGMzZjQ2MTY5M2ZiMTMwM7QCMHNlcmRlX2pzb246OmVycm9yOjptYWtlX2Vycm9yOjpoNDc0ZGM3MjM3OGFiMTU4NrUCS2hleGFuZTo6Y29sdW1uZGF0YTo6Q29sdW1uRGF0YUl0ZXI8Qz46OnJlc2V0X2l0ZXJfdG9fYWNjOjpoNmRmNjhmMGYyYjJlYTlmY7YCMmF1dG9tZXJnZV93YXNtOjpBdXRvbWVyZ2U6Om1hcms6OmhjYjQ0YTNhMDFkNzM3YTgztwI9aGV4YW5lOjpzbGFiOjp0cmVlOjpUcmVlTm9kZTxULFc+OjpyZXBsYWNlOjpoNjdlNjc0NmRhOGY0YTNjM7gCTmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhdXRvbWVyZ2U6OmF1dG9jb21taXQ6OkF1dG9Db21taXQ+OjpoNTQ5ZTc4MGQ3MzIyMTI0MLkCLmF1dG9tZXJnZV93YXNtOjpyZWFkX2J1bmRsZTo6aGNlNjRlYmIyOTk2NjBmYWK6Amo8aGV4YW5lOjpkZWx0YTo6RGVsdGFDdXJzb3JJbnRlcm5hbDxfPiBhcyBoZXhhbmU6OmN1cnNvcjo6Q29sdW1uQ3Vyc29yPjo6c3BsaWNlX2VuY29kZXI6OmhhYzE2YjkzYzUyZDNlNWZiuwJEYXV0b21lcmdlOjpvcF9zZXQyOjpjb2x1bW5zOjpDb2x1bW5zOjpsb2FkX2NvbHVtbjo6aGI4ZjcwNDE4YmMxYTU2ZjS8AjlhdXRvbWVyZ2Vfd2FzbTo6QXV0b21lcmdlOjpwdXNoX29iamVjdDo6aDY3MDI3MTFjNzk5Y2VmY2a9Ajljb3JlOjpzbGljZTo6c29ydDo6c3RhYmxlOjpkcmlmdDo6c29ydDo6aDM1YWVkOWE2MmIxYThhYWO+Ajljb3JlOjpzbGljZTo6c29ydDo6c3RhYmxlOjpkcmlmdDo6c29ydDo6aGYyMzFlNjliMGJlYjM1ZTS/Ak9hdXRvbWVyZ2U6OnBhdGNoZXM6OnBhdGNoX2J1aWxkZXI6OlBhdGNoQnVpbGRlcjo6c3BsaWNlX3RleHQ6OmgyZWRhMGI1MWM1NjJkZmU4wAJVPGF1dG9tZXJnZTo6aHlkcmF0ZTo6bGlzdDo6TGlzdFZhbHVlIGFzIGNvcmU6OmNsb25lOjpDbG9uZT46OmNsb25lOjpoMGY1Yzc2NzJkYWNlMjVmYcECWDxhdXRvbWVyZ2U6Omh5ZHJhdGU6Omxpc3Q6Okxpc3RWYWx1ZSBhcyBjb3JlOjpjbG9uZTo6Q2xvbmU+OjpjbG9uZTo6aDBmNWM3NjcyZGFjZTI1ZmFbMV3CAkVjb3JlOjpzbGljZTo6c29ydDo6c2hhcmVkOjpzbWFsbHNvcnQ6OnNvcnQ0X3N0YWJsZTo6aGM2NGRiYTUyMzQ3MGY0OTbDAj1hdXRvbWVyZ2U6Om1hcmtzOjpNYXJrU2V0Ojp3aXRob3V0X3VubWFya3M6Omg0NTY1NzA4ZWYxMjY4YTM5xAJLPGF1dG9tZXJnZTo6aHlkcmF0ZTo6VmFsdWUgYXMgY29yZTo6Y2xvbmU6OkNsb25lPjo6Y2xvbmU6OmhiYWNkNGIzMGZkMzBmNzg2xQI7YXV0b21lcmdlX3dhc206OkF1dG9tZXJnZTo6aW5zZXJ0X29iamVjdDo6aGRmY2NiODFkY2Y0YzYwYmPGAqoCYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6cmVtb3ZlOjo8aW1wbCBhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpIYW5kbGU8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6Ok11dCxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpMZWFmPixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OktWPj46OnJlbW92ZV9sZWFmX2t2OjpoOTczYTJkNWI2YzVhNTc2ZscCTjxhdXRvbWVyZ2U6Omh5ZHJhdGU6OlZhbHVlIGFzIGNvcmU6OmNsb25lOjpDbG9uZT46OmNsb25lOjpoYmFjZDRiMzBmZDMwZjc4NlsxXcgCqgJhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpyZW1vdmU6OjxpbXBsIGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkhhbmRsZTxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TXV0LEssVixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkxlYWY+LGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6S1Y+Pjo6cmVtb3ZlX2xlYWZfa3Y6Omg5YjYwNmFkNmJiZjljMjEzyQJCY29yZTo6c2xpY2U6OnNvcnQ6OnN0YWJsZTo6cXVpY2tzb3J0OjpxdWlja3NvcnQ6OmgwYTkzMTkxYmVlOTJhNDY2ygJLY29yZTo6bnVtOjpmbHQyZGVjOjpzdHJhdGVneTo6Z3Jpc3U6OmZvcm1hdF9zaG9ydGVzdF9vcHQ6OmgxYjZkNjA0MDUwZTlmNzE0ywJAaGFzaGJyb3duOjpyYXc6OlJhd1RhYmxlPFQsQT46OnJlc2VydmVfcmVoYXNoOjpoMzVjNWE5MTVkNjQ1NmQ1NcwCQGF1dG9tZXJnZTo6YXV0b21lcmdlOjpBdXRvbWVyZ2U6OnJlbW92ZV9hY3Rvcjo6aDc4M2Q3ZGQ3ODM2NjRlZGTNAj1oZXhhbmU6OmNvbHVtbmRhdGE6OkNvbHVtbkRhdGFJdGVyPEM+OjpuZXc6OmhkNTNmMGNmNTU0ODcwYjFmzgJEYXV0b21lcmdlOjpvcF9zZXQyOjpjb2x1bW5zOjpDb2x1bW5zOjpsb2FkX2NvbHVtbjo6aDhlZTdhMGZiYWFhYzU4OGTPAoQBPGF1dG9tZXJnZTo6c3RvcmFnZTo6YnVuZGxlOjpidWlsZGVyOjpCdW5kbGVDaGFuZ2VJdGVyVW52ZXJpZmllZCBhcyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvcj46Om5leHQ6Omg4ZDNkZTU0YTRiZWVkNGVl0AJ1PGF1dG9tZXJnZTo6b3Bfc2V0Mjo6b3Bfc2V0Ojp0b3Bfb3A6OlRvcE9wSXRlcjxJPiBhcyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvcj46Om5leHQ6Omg1NmI5ZjVhOTEwZmI0Njg00QI3YXV0b21lcmdlX3dhc206OkF1dG9tZXJnZTo6aW5jcmVtZW50OjpoODU5MDM4NTRiMjE4MTJjZdICRWF1dG9tZXJnZV93YXNtOjpBdXRvbWVyZ2U6OnB1dF9vYmplY3RfZnJvbV9oeWRyYXRlOjpoMzhjODRhOTk0NDE5M2FlZtMCR2hleGFuZTo6Y29sdW1uZGF0YTo6Q29sdW1uRGF0YTxDPjo6bG9hZF91bmxlc3NfZW1wdHk6Omg3NWUxNWI4Yzk4ZjhmODg01AJLYXV0b21lcmdlOjpvcF9zZXQyOjpvcF9zZXQ6Omluc2VydDo6SW5zZXJ0UXVlcnk6OnJlc29sdmU6Omg3MTg2NDQ5MDQxNTIxMDQy1QJsPGF1dG9tZXJnZV93YXNtOjppbnRlcm9wOjpKUyBhcyBjb3JlOjpjb252ZXJ0OjpGcm9tPGF1dG9tZXJnZTo6c3luYzo6c3RhdGU6OlN0YXRlPj46OmZyb206OmhjZTVhZTM1ZmIwOTBkYWY31gJXYXV0b21lcmdlOjpjaGFuZ2VfZ3JhcGg6OkNoYW5nZUdyYXBoOjpnZXRfYnVpbGRfbWV0YWRhdGFfZm9yX2luZGV4ZXM6Omg4MWZjMTg4YWJiOWE2NWNi1wI7YXV0b21lcmdlOjphdXRvbWVyZ2U6OkF1dG9tZXJnZTo6Z2V0X2Zvcjo6aGQ3MGYxMzQyM2RjYjU4Y2bYAl88aGV4YW5lOjpybGU6OlJsZVN0YXRlPFA+IGFzIGhleGFuZTo6ZW5jb2Rlcjo6RW5jb2RlclN0YXRlPFA+Pjo6YXBwZW5kX2NodW5rOjpoNWQxMjVlZGM0YzdmMzI4ZtkCNmF1dG9tZXJnZV93YXNtOjpkZWNvZGVfc3luY19tZXNzYWdlOjpoODk1NDhkNGY5NTIzMzllMtoCXzxoZXhhbmU6OnJsZTo6UmxlU3RhdGU8UD4gYXMgaGV4YW5lOjplbmNvZGVyOjpFbmNvZGVyU3RhdGU8UD4+OjphcHBlbmRfY2h1bms6OmgzOWZjNmU5MjE4MWQwNjE32wJrPGF1dG9tZXJnZTo6b3Bfc2V0Mjo6b3Bfc2V0OjpJdGVyT2JqSWRzIGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6bmV4dDo6aGU4ZTY2ZWU5MTg1NzAyMDPcAl9hbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6OkJUcmVlTWFwPEssVixBPjo6YnVsa19idWlsZF9mcm9tX3NvcnRlZF9pdGVyOjpoM2M3NzI2OTAyNTU3MDNkOd0CV2F1dG9tZXJnZTo6dHJhbnNhY3Rpb246OmlubmVyOjpUcmFuc2FjdGlvbklubmVyOjpiYXRjaF9jcmVhdGVfb2JqZWN0OjpoZGY0NDM3OWI1N2NmZmZjOd4COXNlcmRlX2pzb246OnJlYWQ6OnBhcnNlX3VuaWNvZGVfZXNjYXBlOjpoZjE4NzQ1ZjFjM2RhMmY0Zt8COWNvcmU6OnNsaWNlOjpzb3J0OjpzdGFibGU6OmRyaWZ0Ojpzb3J0OjpoODRjZDIyMTViMjRlY2RkOeACS2F1dG9tZXJnZTo6b3Bfc2V0Mjo6Y2hhbmdlOjpiYXRjaDo6VmFsdWVTdGF0ZTo6bWFwX2ZsdXNoOjpoMGU3MTI5YjkyNDgyOTcwOeECWjxhdXRvbWVyZ2U6OnRleHRfdmFsdWU6OkNvbmNyZXRlVGV4dFZhbHVlIGFzIGNvcmU6OmNsb25lOjpDbG9uZT46OmNsb25lOjpoNDZjNWFmMTk5YmNmNzIwNOICXTxhdXRvbWVyZ2U6OnRleHRfdmFsdWU6OkNvbmNyZXRlVGV4dFZhbHVlIGFzIGNvcmU6OmNsb25lOjpDbG9uZT46OmNsb25lOjpoNDZjNWFmMTk5YmNmNzIwNFsxXeMCYjxoZXhhbmU6OnJsZTo6UmxlQ3Vyc29yPF8sUCxYPiBhcyBoZXhhbmU6OmN1cnNvcjo6Q29sdW1uQ3Vyc29yPjo6c3BsaWNlX2VuY29kZXI6OmhjZTFlNzZmYWZiZTI2MzQ15AI5Y29yZTo6c2xpY2U6OnNvcnQ6OnN0YWJsZTo6ZHJpZnQ6OnNvcnQ6Omg5ODFmODk3MDg2YTQwZjNm5QJiPGhleGFuZTo6cmxlOjpSbGVDdXJzb3I8XyxQLFg+IGFzIGhleGFuZTo6Y3Vyc29yOjpDb2x1bW5DdXJzb3I+OjpzcGxpY2VfZW5jb2Rlcjo6aDk3YTBjZjMzZWM0Y2Q2Y2bmAl88aGV4YW5lOjpybGU6OlJsZVN0YXRlPFA+IGFzIGhleGFuZTo6ZW5jb2Rlcjo6RW5jb2RlclN0YXRlPFA+Pjo6YXBwZW5kX2NodW5rOjpoNDFmNTU4YWNiNDE5NmQ1Y+cCPWhleGFuZTo6Y29sdW1uZGF0YTo6Q29sdW1uRGF0YUl0ZXI8Qz46Om5ldzo6aDMwZmU3NTg3ZTk3OTE1ZWHoAmI8aGV4YW5lOjpybGU6OlJsZUN1cnNvcjxfLFAsWD4gYXMgaGV4YW5lOjpjdXJzb3I6OkNvbHVtbkN1cnNvcj46OnNwbGljZV9lbmNvZGVyOjpoZDNjZGIxMDcwNTU3YmQ2MOkCN2NvcmU6OnN0cjo6cGF0dGVybjo6U3RyU2VhcmNoZXI6Om5ldzo6aGJlNDI0MTU2YTg5YWI3OTLqAjljb3JlOjpzbGljZTo6c29ydDo6c3RhYmxlOjpkcmlmdDo6c29ydDo6aGE5OWJlOTQyMmZlNmY2ZDXrAj1oZXhhbmU6OmNvbHVtbmRhdGE6OkNvbHVtbkRhdGFJdGVyPEM+OjpuZXc6Omg1ZDY4NzNhMmIwZmExYmJm7AJzPGF1dG9tZXJnZTo6b3Bfc2V0Mjo6b3Bfc2V0OjptYXJrczo6TWFya0l0ZXI8ST4gYXMgY29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+OjpuZXh0OjpoMmFjZTQ5YTQ4MGE2YjA1MO0COmF1dG9tZXJnZV93YXNtOjpBdXRvbWVyZ2U6OnVwZGF0ZV9ibG9jazo6aGQzZTg1YWZlOGQ5YTlmZWLuAjlhdXRvbWVyZ2Vfd2FzbTo6QXV0b21lcmdlOjpzcGxpdF9ibG9jazo6aDVlYjY2M2MwNzA1MmNkNDHvAj1oZXhhbmU6OmNvbHVtbmRhdGE6OkNvbHVtbkRhdGFJdGVyPEM+OjpuZXc6OmgwMDc3NmM1MTlmN2EzYjEw8AJBaGV4YW5lOjpzbGFiOjp0cmVlOjpUcmVlTm9kZTxULFc+OjpzcGxpdF9jaGlsZDo6aGE2YWVkYmQxNDNlYzVmZjTxAjphdXRvbWVyZ2U6OnRleHRfZGlmZjo6c3BhbnNfYXNfZ3JhcGhlbWU6Omg5ZjY4ZjE2ZjY2ZDk3MGZh8gI9aGV4YW5lOjpjb2x1bW5kYXRhOjpDb2x1bW5EYXRhSXRlcjxDPjo6bmV3OjpoMDZlNmZiZmVhODA4NmM2M/MCTmhleGFuZTo6ZW5jb2Rlcjo6RW5jb2RlcjxDPjo6c2F2ZV90b19hbmRfcmVtYXBfdW5sZXNzX2VtcHR5OjpoY2VmNzBiOTA2ZWVmN2ViNfQCPWhleGFuZTo6Y29sdW1uZGF0YTo6Q29sdW1uRGF0YUl0ZXI8Qz46Om5ldzo6aDY5NjAyNmEyYjE4N2I2Yzj1AlRhdXRvbWVyZ2U6Om9wX3NldDI6OmNoYW5nZTo6Y29sbGVjdG9yOjpQcm9ncmVzc2l2ZUVuY29kZXI6OmFwcGVuZDo6aDg5OGU3NDA2MzJiYmU5NDb2AkRjb3JlOjpzbGljZTo6c29ydDo6c2hhcmVkOjpzbWFsbHNvcnQ6Omluc2VydF90YWlsOjpoMzM2ODU1ZGEyMWMwMjRkMvcCPWhleGFuZTo6Y29sdW1uZGF0YTo6Q29sdW1uRGF0YUl0ZXI8Qz46Om5ldzo6aGNkM2ZhNmY0MTI2MmFmOTH4Al88aGV4YW5lOjpjdXJzb3I6OlJ1bkl0ZXI8Qz4gYXMgY29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+OjpuZXh0OjpoMzY5MGJjYWQ5MWY1ZTEyNfkCOWNvcmU6OnNsaWNlOjpzb3J0OjpzdGFibGU6OmRyaWZ0Ojpzb3J0OjpoMDNiNDQzYTI4ZjliYzcyZPoCXzxoZXhhbmU6OnJsZTo6UmxlU3RhdGU8UD4gYXMgaGV4YW5lOjplbmNvZGVyOjpFbmNvZGVyU3RhdGU8UD4+OjphcHBlbmRfY2h1bms6OmgzNzkyZjc0MzM4ZDA3MGY3+wJiPGhleGFuZTo6cmxlOjpSbGVDdXJzb3I8XyxQLFg+IGFzIGhleGFuZTo6Y3Vyc29yOjpDb2x1bW5DdXJzb3I+OjpzcGxpY2VfZW5jb2Rlcjo6aDU0OWYzNTJlNjUxNzcwNjb8Aj5oZXhhbmU6OnNsYWI6OndyaXRlcjo6U2xhYldyaXRlcjxQPjo6ZmluaXNoOjpoOWM3NjJkNTM4NGU3Y2RlNP0CPWhleGFuZTo6Y29sdW1uZGF0YTo6Q29sdW1uRGF0YUl0ZXI8Qz46Om5ldzo6aDA4MTY1OGU3NDU3NzYzOTP+AkRhdXRvbWVyZ2U6Om9wX3NldDI6OmNvbHVtbnM6OkNvbHVtbnM6OmxvYWRfY29sdW1uOjpoNWJhNDZkN2ZkNDcyYTliN/8CRGF1dG9tZXJnZTo6b3Bfc2V0Mjo6Y29sdW1uczo6Q29sdW1uczo6bG9hZF9jb2x1bW46Omg5ODNjMjZmYzdiMDMyYzRmgANfPGhleGFuZTo6Y3Vyc29yOjpSdW5JdGVyPEM+IGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6bmV4dDo6aDU4ZDhlY2Q2OGY3YjEzMzmBA2I8aGV4YW5lOjpybGU6OlJsZUN1cnNvcjxfLFAsWD4gYXMgaGV4YW5lOjpjdXJzb3I6OkNvbHVtbkN1cnNvcj46OnNwbGljZV9lbmNvZGVyOjpoZTRhMzY2MmQyNTY0NTlmYYIDX2F1dG9tZXJnZV93YXNtOjppbnRlcm9wOjo8aW1wbCBhdXRvbWVyZ2Vfd2FzbTo6QXV0b21lcmdlPjo6bWF5YmVfd3JhcF9vYmplY3Q6Omg2M2Y0NmMyNDYyNjg2NGVlgwNiPGhleGFuZTo6cmxlOjpSbGVDdXJzb3I8XyxQLFg+IGFzIGhleGFuZTo6Y3Vyc29yOjpDb2x1bW5DdXJzb3I+OjpzcGxpY2VfZW5jb2Rlcjo6aGQyYjk4NmIxZWU3ZTI4OWWEAz5oZXhhbmU6OnNsYWI6OndyaXRlcjo6U2xhYldyaXRlcjxQPjo6ZmluaXNoOjpoZjNlMzJhZDAwYzBhNDczOYUDPmhleGFuZTo6c2xhYjo6d3JpdGVyOjpTbGFiV3JpdGVyPFA+OjpmaW5pc2g6OmhiYjk4Yzk2NDRlZWRjMGY3hgM+aGV4YW5lOjpzbGFiOjp3cml0ZXI6OlNsYWJXcml0ZXI8UD46OmZpbmlzaDo6aGE0NmIyNzFlN2M5ZjMzZmWHAz5oZXhhbmU6OnNsYWI6OndyaXRlcjo6U2xhYldyaXRlcjxQPjo6ZmluaXNoOjpoY2FiZmVmYzM4OTgxMzJkZIgDPmhleGFuZTo6c2xhYjo6d3JpdGVyOjpTbGFiV3JpdGVyPFA+OjpmaW5pc2g6OmhkMWNiMGEyYTk4MzEzNDdiiQM5Y29yZTo6c2xpY2U6OnNvcnQ6OnN0YWJsZTo6ZHJpZnQ6OnNvcnQ6OmhkODU4M2VjYzk5ZGI1MDMxigNNYXV0b21lcmdlOjpzZXF1ZW5jZV90cmVlOjpTZXF1ZW5jZVRyZWVOb2RlPFQ+OjpzcGxpdF9jaGlsZDo6aGIxMTBhM2Y4NzlkMDVjYziLAzdhdXRvbWVyZ2Vfd2FzbTo6QXV0b21lcmdlOjpkaWZmX3BhdGg6Omg1MWQ1YzIyOWEwMzQzNTA3jANYYXV0b21lcmdlOjpzdG9yYWdlOjpjaGFuZ2U6OmNoYW5nZV9vcF9jb2x1bW5zOjpDaGFuZ2VPcHNDb2x1bW5zOjppdGVyOjpoNTAxYjMyYjI2NzYzZWYwN40DSGF1dG9tZXJnZV93YXNtOjpBdXRvbWVyZ2U6Omluc2VydF9vYmplY3RfZnJvbV9oeWRyYXRlOjpoMzQ2MjgxNjBlMmJkMGM3NI4DOmF1dG9tZXJnZV93YXNtOjppbnRlcm9wOjpleHBvcnRfaHlkcmF0ZTo6aDBmNTE1YjBiYzNmMWQ1ZDKPA2I8aGV4YW5lOjpybGU6OlJsZUN1cnNvcjxfLFAsWD4gYXMgaGV4YW5lOjpjdXJzb3I6OkNvbHVtbkN1cnNvcj46OnNwbGljZV9lbmNvZGVyOjpoZGNjYjkzZWY5ODc0OWYzOZADS2F1dG9tZXJnZTo6YXV0b21lcmdlOjpBdXRvbWVyZ2U6OmdldF9jaGFuZ2VfbWV0YV9ieV9oYXNoOjpoMDQ3ZWFkZTRhODE5MTFkNJEDOWNvcmU6OnNsaWNlOjpzb3J0OjpzdGFibGU6OmRyaWZ0Ojpzb3J0OjpoNGEyODMzN2U4MTc3NTFiNJIDQGNvcmU6OnNsaWNlOjpzb3J0OjpzaGFyZWQ6OnBpdm90OjptZWRpYW4zX3JlYzo6aGRhNjk2NWJjMzRjYjc5M2KTAzlhdXRvbWVyZ2Vfd2FzbTo6aW50ZXJvcDo6YmlnaW50X3RvX2k2NDo6aDNjYjAxOTQwMmM0YzljODGUA1BhdXRvbWVyZ2U6OmF1dG9tZXJnZTo6QXV0b21lcmdlOjpsb2FkX2luY3JlbWVudGFsX2xvZ19wYXRjaGVzOjpoZjliNWJkMTgzNGMxZmQ0NpUDVGNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhdXRvbWVyZ2U6OnBhdGNoZXM6OnBhdGNoX2xvZzo6UGF0Y2hMb2c+OjpoYTdjM2E0MTM0ZDMxZWRiYpYDaTxoZXhhbmU6OmNvbHVtbmRhdGE6OkNvbHVtbkRhdGFJdGVyPEM+IGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6bnRoOjpoMmQyYTQ4ODc3N2YzMzc0YZcDaTxoZXhhbmU6OmNvbHVtbmRhdGE6OkNvbHVtbkRhdGFJdGVyPEM+IGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6bnRoOjpoMmM3MWZiOWQ5YWFkN2FiZJgDX2F1dG9tZXJnZTo6b3Bfc2V0Mjo6Y2hhbmdlOjpjb2xsZWN0b3I6OkNoYW5nZUNvbGxlY3Rvcjo6dHJ5X2Zyb21fY2hhbmdlX21ldGE6OmhhNzdmZTk4OGFmNzYzZmZmmQNpPGhleGFuZTo6Y29sdW1uZGF0YTo6Q29sdW1uRGF0YUl0ZXI8Qz4gYXMgY29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+OjpudGg6Omg2OGM1Yjk4ODkzYmM2ZTk2mgNFY29yZTo6c2xpY2U6OnNvcnQ6OnNoYXJlZDo6c21hbGxzb3J0Ojpzb3J0OF9zdGFibGU6OmgyYmM1NGNhMmY3NjM3NWI2mwM+YXV0b21lcmdlOjphdXRvbWVyZ2U6OkF1dG9tZXJnZTo6aW1wb3J0X29iajo6aDYxYjdmMTZlMGY4OWRmMGGcA2I8YXV0b21lcmdlOjp0ZXh0X3ZhbHVlOjpVdGYxNiBhcyBhdXRvbWVyZ2U6OnRleHRfdmFsdWU6OlRleHRWYWx1ZT46Om1ha2Vfc3RyaW5nOjpoNGE1ODg0NGFmZWM2MTg2Yp0DTzxhdXRvbWVyZ2U6OnN5bmM6OnN0YXRlOjpTdGF0ZSBhcyBjb3JlOjpjbG9uZTo6Q2xvbmU+OjpjbG9uZTo6aDEwNGIxZjUzYjcwMjY5OGKeA1BhdXRvbWVyZ2U6Om9wX3NldDI6OmNoYW5nZTo6YmF0Y2g6OlZhbHVlU3RhdGU6OnByb2Nlc3NfZG9jX29wOjpoMTU1ZGZhM2JjZWY3ZjM4Np8DSGF1dG9tZXJnZTo6dHJhbnNhY3Rpb246OmlubmVyOjpUcmFuc2FjdGlvbklubmVyOjptYXJrOjpoMDc3M2YyMDQxY2Q0Mjg2NaADV2F1dG9tZXJnZTo6dHJhbnNhY3Rpb246OmlubmVyOjpUcmFuc2FjdGlvbklubmVyOjpiYXRjaF9pbml0X3Jvb3RfbWFwOjpoOWQyZmE4ZTQ4NmRjMzU2NaEDdWF1dG9tZXJnZTo6c3RvcmFnZTo6YnVuZGxlOjpzdG9yYWdlOjpCdW5kbGVTdG9yYWdlPGF1dG9tZXJnZTo6c3RvcmFnZTo6Y2hhbmdlOjpVbnZlcmlmaWVkPjo6dmVyaWZ5OjpoYzg3ZDdhZjI5Njg4YmU5M6IDXDxoZXhhbmU6OnJsZTo6UmxlQ3Vyc29yPF8sUCxYPiBhcyBoZXhhbmU6OmN1cnNvcjo6Q29sdW1uQ3Vyc29yPjo6dHJ5X25leHQ6OmhkOGY3MjQ2ZDRiMWE2NjY0owMyYXV0b21lcmdlX3dhc206OkF1dG9tZXJnZTo6dGV4dDo6aGQxNjI3OGMwZDQ5ZWMxYjikAy9zdGQ6OmlvOjpkZWZhdWx0X3JlYWRfdG9fZW5kOjpoODJhNjFkYzUzNTgzN2NkZaUDRGNvcmU6OnNsaWNlOjpzb3J0OjpzaGFyZWQ6OnNtYWxsc29ydDo6aW5zZXJ0X3RhaWw6OmgyOGYwNzRmODEzMDk2ODBjpgNIYXV0b21lcmdlOjpvcF9zZXQyOjpvcF9zZXQ6Om9wX2l0ZXI6Ok9wSXRlcjo6dHJ5X25leHQ6OmgxZDk3NDBjNDYyMWU1MTNmpwM+YXV0b21lcmdlOjphdXRvbWVyZ2U6OkF1dG9tZXJnZTo6ZnJvbV9wYXJ0czo6aDFhYzVkZjgwNjZiMTYwNjCoA1Zjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YXV0b21lcmdlX3dhc206OmV4cG9ydF9jYWNoZTo6RXhwb3J0Q2FjaGU+OjpoYTM3MjRmZGMyYjQwYmNlOKkDRWNvcmU6OnNsaWNlOjpzb3J0OjpzaGFyZWQ6OnNtYWxsc29ydDo6c29ydDhfc3RhYmxlOjpoZTdkNjg0OTVhMmRmOTQ4N6oDRGF1dG9tZXJnZTo6YXV0b21lcmdlOjpBdXRvbWVyZ2U6OmdldF9jaGFuZ2VzX21ldGE6Omg1ZjhhMzViM2NjZDZmYzI4qwNcPGF1dG9tZXJnZTo6b3Bfc2V0Mjo6Y29sdW1uczo6SW5kZXhlcyBhcyBjb3JlOjpkZWZhdWx0OjpEZWZhdWx0Pjo6ZGVmYXVsdDo6aGU1NzY1Y2E2OTQ4NDM1NGSsA01hdXRvbWVyZ2U6Om9wX3NldDI6Om9wX3NldDo6b3BfaXRlcjo6U3VjY0l0ZXJJdGVyOjp0cnlfbnRoOjpoOTc0M2U5NjYzZDk5MmViYq0DTWF1dG9tZXJnZTo6c2VxdWVuY2VfdHJlZTo6U2VxdWVuY2VUcmVlTm9kZTxUPjo6c3BsaXRfY2hpbGQ6OmhkYzY1NGM5ZGMyNzZiYzgwrgNEYXV0b21lcmdlOjpvcF9zZXQyOjpjb2x1bW5zOjpDb2x1bW5zOjpsb2FkX2NvbHVtbjo6aDA2ODlhOTI5NGZmMzliNjWvA3k8YXV0b21lcmdlX3dhc206OmludGVyb3A6OkpTIGFzIGNvcmU6OmNvbnZlcnQ6OkZyb208JmF1dG9tZXJnZTo6b3Bfc2V0Mjo6dHlwZXM6OkNoYW5nZU1ldGFkYXRhPj46OmZyb206OmhmYWNiYWYzZDE0MjY4MWM3sAN/PGF1dG9tZXJnZTo6Y29sdW1uYXI6OmNvbHVtbl9yYW5nZTo6b3BpZF9saXN0OjpPcElkTGlzdEl0ZXIgYXMgY29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+OjpuZXh0OjpoNDJlMTQ3MWEyMzE1MWFhZrEDTWF1dG9tZXJnZTo6c2VxdWVuY2VfdHJlZTo6U2VxdWVuY2VUcmVlTm9kZTxUPjo6c3BsaXRfY2hpbGQ6OmhhNjE4Y2I2YTRjMWU1N2Q2sgNIYXV0b21lcmdlOjpjaGFuZ2VfZ3JhcGg6OkNoYW5nZUdyYXBoOjpjYWxjdWxhdGVfY2xvY2s6OmgwMzE4NDEwZDZmMGNmNjM0swNJYXV0b21lcmdlOjpvcF9zZXQyOjpvcF9zZXQ6Om9wX2l0ZXI6OktleUl0ZXI6OnRyeV9uZXh0OjpoOWZkZjFhZmJiMmEwZjZjOLQDRWNvcmU6OnNsaWNlOjpzb3J0OjpzaGFyZWQ6OnNtYWxsc29ydDo6c29ydDRfc3RhYmxlOjpoYWRiOWI1ZDg2YTE5ZmVkMbUDQWhleGFuZTo6ZW5jb2Rlcjo6RW5jb2RlcjxDPjo6c2F2ZV90b19hbmRfcmVtYXA6OmhhZTU5Y2Q3MmY5YWZlZjM4tgNfPGhleGFuZTo6cmxlOjpSbGVTdGF0ZTxQPiBhcyBoZXhhbmU6OmVuY29kZXI6OkVuY29kZXJTdGF0ZTxQPj46OmFwcGVuZF9jaHVuazo6aDllYTdjZDIyZDUwNTk0OWa3AzVoZXhhbmU6OmN1cnNvcjo6Q29sdW1uQ3Vyc29yOjpuZXh0OjpoY2QxYWY5OGQxNmM1YTc4YbgDTWF1dG9tZXJnZTo6c2VxdWVuY2VfdHJlZTo6U2VxdWVuY2VUcmVlTm9kZTxUPjo6c3BsaXRfY2hpbGQ6Omg4M2ExY2RkZjU0MTI3M2I2uQNNYXV0b21lcmdlOjpzZXF1ZW5jZV90cmVlOjpTZXF1ZW5jZVRyZWVOb2RlPFQ+OjpzcGxpdF9jaGlsZDo6aDU2N2FjMjkxZWYxZjE1ZTe6AzhoZXhhbmU6OmVuY29kZXI6OkVuY29kZXJTdGF0ZTo6YXBwZW5kOjpoOGY3NDAzMGI1MDRmNTdiNrsDaDxhdXRvbWVyZ2U6OmNoYW5nZV9ncmFwaDo6Q2hhbmdlSXRlciBhcyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvcj46Om5leHQ6OmhkZWQ3MTkzZjNiZWRkMmM0vANvPGF1dG9tZXJnZTo6b3Bfc2V0Mjo6b3Bfc2V0OjpvcF9pdGVyOjpPcEl0ZXIgYXMgY29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+OjpudGg6Omg1ZDZmNmUxNGE4MmYzYTVivQNOYXV0b21lcmdlOjpvcF9zZXQyOjpvcF9zZXQ6OmluZGV4OjpJbmRleEJ1aWxkZXI6OnByb2Nlc3Nfb3A6OmgwYTJhNGYzMzlhZmI1MDRlvgNKYXV0b21lcmdlOjpwYXRjaGVzOjpwYXRjaF9idWlsZGVyOjpQYXRjaEJ1aWxkZXI6Omluc2VydDo6aDdjMGJhNWM4MWY3ODc4YWW/Ay9zdGQ6OmlvOjpkZWZhdWx0X3JlYWRfdG9fZW5kOjpoZDk1N2IyZDNiOTI5NzA2MsADS2NvcmU6OnNsaWNlOjpzb3J0OjpzaGFyZWQ6OnNtYWxsc29ydDo6c21hbGxfc29ydF9nZW5lcmFsOjpoMTU0MWYwMDRmZWIzZTRiZcEDOmF1dG9tZXJnZTo6b3Bfc2V0Mjo6b3A6Ok9wOjpmaXhfY291bnRlcjo6aDUwYjZkOWY1NWYwMzVkNWXCA01hdXRvbWVyZ2U6OnNlcXVlbmNlX3RyZWU6OlNlcXVlbmNlVHJlZU5vZGU8VD46OnNwbGl0X2NoaWxkOjpoOTA1YWI3MmNiZDFhM2NhYcMDXzxoZXhhbmU6OmN1cnNvcjo6UnVuSXRlcjxDPiBhcyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvcj46Om5leHQ6OmhjNDYxMjBkMWI5OWVmZDJmxAM4aGV4YW5lOjplbmNvZGVyOjpFbmNvZGVyU3RhdGU6OmFwcGVuZDo6aDQzM2ExM2Q5MzkyYTkwYTLFA58BYXV0b21lcmdlX3dhc206OmludGVyb3A6OjxpbXBsIGNvcmU6OmNvbnZlcnQ6OlRyeUZyb208YXV0b21lcmdlX3dhc206OmludGVyb3A6OkpTPiBmb3IgYWxsb2M6OnZlYzo6VmVjPGF1dG9tZXJnZTo6Y2hhbmdlOjpDaGFuZ2U+Pjo6dHJ5X2Zyb206OmgwYTM3MzA5MTJjMjliMDVjxgMnYXV0b21lcmdlX3dhc206OmxvYWQ6OmgxZTYxZjgyYmNhMzc5MTQ2xwOQATxjb3JlOjppdGVyOjphZGFwdGVyczo6ZmxhdHRlbjo6RmxhdHRlbkNvbXBhdDxJLFU+IGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6dHJ5X2ZvbGQ6OmZsYXR0ZW46Ont7Y2xvc3VyZX19OjpoOGVhNGZkNzIzOGM4NTQ0YsgDS2F1dG9tZXJnZTo6YXV0b21lcmdlOjpBdXRvbWVyZ2U6OmFzc2VydF9ub191bnVzZWRfYWN0b3JzOjpoZWFiNzFiOThmMDVhNzcwMMkDTmF1dG9tZXJnZTo6Y29sdW1uYXI6OmVuY29kaW5nOjpybGU6OlJsZURlY29kZXI8VD46OnRyeV9uZXh0OjpoNzQ3ZDlkOTM2OTNkMmExYsoDXGF1dG9tZXJnZTo6aHlkcmF0ZTo6PGltcGwgYXV0b21lcmdlOjpvcF9zZXQyOjpvcF9zZXQ6Ok9wU2V0Pjo6aHlkcmF0ZV9tYXA6OmgyNTU1NzViZjE1YWI2MWQxywNCY29yZTo6bnVtOjpmbHQyZGVjOjpzdHJhdGVneTo6ZHJhZ29uOjptdWxfcG93MTA6OmhlYjU0ZjZlNTk5OWI5ZDM5zANcPGhleGFuZTo6ZGVsdGE6OkRlbHRhU3RhdGUgYXMgaGV4YW5lOjplbmNvZGVyOjpFbmNvZGVyU3RhdGU8aTY0Pj46OmFwcGVuZDo6aGNmM2RhMjE4MDY1NTM1MmPNAz5oZXhhbmU6OnNsYWI6OndyaXRlcjo6U2xhYldyaXRlcjxQPjo6ZmluaXNoOjpoZGIwMGI2ZGIxZmZlMzUxNs4DPmhleGFuZTo6c2xhYjo6d3JpdGVyOjpTbGFiV3JpdGVyPFA+OjpmaW5pc2g6OmgwNmI5N2EzZDIyODJmNTYwzwM6YXV0b21lcmdlOjphdXRvbWVyZ2U6OkF1dG9tZXJnZTo6aW1wb3J0OjpoNTRlZGUxNjhhZjU0MjVkYtADQWF1dG9tZXJnZTo6Y2hhbmdlOjpDaGFuZ2U6Om5ld19mcm9tX3VudmVyaWZpZWQ6OmhjZTJmNGNlNmJiYTZhN2Yy0QNOYXV0b21lcmdlOjpvcF9zZXQyOjpvcF9zZXQ6Om9wX2l0ZXI6OlN1Y2NJdGVySXRlcjo6dHJ5X25leHQ6OmgxNjAwNGM4NGIwMTBlZGQ00gM5YXV0b21lcmdlX3dhc206OmludGVyb3A6OmltcG9ydF9zY2FsYXI6OmhhYmYxMDAyMmRjNmNhZGVj0wNcPGhleGFuZTo6cmxlOjpSbGVDdXJzb3I8XyxQLFg+IGFzIGhleGFuZTo6Y3Vyc29yOjpDb2x1bW5DdXJzb3I+Ojp0cnlfbmV4dDo6aDQxYmIzMmRlYjNlZDZiY2TUA1NhdXRvbWVyZ2U6OnRyYW5zYWN0aW9uOjppbm5lcjo6VHJhbnNhY3Rpb25Jbm5lcjo6aW5zZXJ0X2xvY2FsX29wOjpoNDI5MTNlYWQwOGIzNTdhNtUDOGhleGFuZTo6ZW5jb2Rlcjo6RW5jb2RlclN0YXRlOjphcHBlbmQ6OmhmZWE2N2YxMjg4NjVkYzNl1gNhPGNvcmU6Om1hcmtlcjo6UGhhbnRvbURhdGE8VD4gYXMgc2VyZGVfY29yZTo6ZGU6OkRlc2VyaWFsaXplU2VlZD46OmRlc2VyaWFsaXplOjpoYjYzOGU1NDA2YTM1NWYyMNcDQ2F1dG9tZXJnZTo6b3Bfc2V0Mjo6b3Bfc2V0OjpPcFNldDo6Z2V0X29wX2lkX3Bvczo6aDRkMGUwYzdhNjdiMDE1OGbYA3g8Y29yZTo6aXRlcjo6YWRhcHRlcnM6OmZsYXR0ZW46OkZsYXRNYXA8SSxVLEY+IGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6YWR2YW5jZV9ieTo6aGM0OGFjNWVmZjdlMDQyMWbZA0VhdXRvbWVyZ2U6Om9wX3NldDI6Om9wX3NldDo6T3BTZXQ6OnF1ZXJ5X2luc2VydF9hdDo6aDRiMGU2MzVjNjYyNWM0ZmbaA1FhdXRvbWVyZ2U6OmNvbHVtbmFyOjpjb2x1bW5fcmFuZ2U6OnZhbHVlOjpWYWx1ZUl0ZXI6OnBhcnNlX3Jhdzo6aDk5Y2Q0OGE3YjkzY2RiMjDbA40BYXV0b21lcmdlX3dhc206OmludGVyb3A6OjxpbXBsIGNvcmU6OmNvbnZlcnQ6OlRyeUZyb208YXV0b21lcmdlX3dhc206OmludGVyb3A6OkpTPiBmb3IgYXV0b21lcmdlOjpzeW5jOjpNZXNzYWdlPjo6dHJ5X2Zyb206Omg0NzQ5NzgyZjk3ZGE1NGJm3AM8aGV4YW5lOjpzbGFiOjp0cmVlOjpTcGFuVHJlZTxULFc+OjppbnNlcnQ6OmhjYjQyYzE3MjBhYmUzZmE23QM4aGV4YW5lOjplbmNvZGVyOjpFbmNvZGVyU3RhdGU6OmFwcGVuZDo6aGFjMDFmZTJhMTA2ZTcyMmTeAz9hdXRvbWVyZ2Vfd2FzbTo6QXV0b21lcmdlOjpyZWdpc3Rlcl9kYXRhdHlwZTo6aDQyZTgyZjA1ZTY2NDhlNDDfA3Q8YXV0b21lcmdlOjphdXRvY29tbWl0OjpBdXRvQ29tbWl0IGFzIGF1dG9tZXJnZTo6dHJhbnNhY3Rpb246OnRyYW5zYWN0YWJsZTo6VHJhbnNhY3RhYmxlPjo6c3BsaWNlOjpoNjUyYjdkNzk4MWUyMzU2ZOADWTxhdXRvbWVyZ2U6OnBhdGNoZXM6OnBhdGNoX2xvZzo6UGF0Y2hMb2cgYXMgY29yZTo6Y2xvbmU6OkNsb25lPjo6Y2xvbmU6Omg3ZDVhZWM1MjJiNWYxMTEy4QNrPGhleGFuZTo6ZGVsdGE6OkRlbHRhQ3Vyc29ySW50ZXJuYWw8Xz4gYXMgaGV4YW5lOjpjdXJzb3I6OkNvbHVtbkN1cnNvcj46OmNvbXB1dGVfbWluX21heDo6aGE2OGJiNDQzODA2OGJkY2XiA1w8YXV0b21lcmdlOjpwYXRjaGVzOjpwYXRjaF9sb2c6OlBhdGNoTG9nIGFzIGNvcmU6OmNsb25lOjpDbG9uZT46OmNsb25lOjpoN2Q1YWVjNTIyYjVmMTExMlsxXeMDaTxoZXhhbmU6OmNvbHVtbmRhdGE6OkNvbHVtbkRhdGFJdGVyPEM+IGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6bnRoOjpoN2I0OWEzODU3NzQxYmE5ZuQDOmF1dG9tZXJnZTo6b3Bfc2V0Mjo6b3Bfc2V0OjpPcFNldDo6dGV4dDo6aDIyYmVkMzZlZGUzZDU5NzjlAzdtaW5pel9veGlkZTo6aW5mbGF0ZTo6Y29yZTo6dHJhbnNmZXI6OmhkZjVlMzA5ZDdhMjE0NjMx5gNpPGhleGFuZTo6Y29sdW1uZGF0YTo6Q29sdW1uRGF0YUl0ZXI8Qz4gYXMgY29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+OjpudGg6OmhlYjQxNjU3ZTg4NDE0MWMy5wM5YXV0b21lcmdlX3dhc206OmludGVyb3A6OmJpZ2ludF90b191NjQ6OmhkNTJmOTFhNTNjNmI4Njlh6AOMATxhdXRvbWVyZ2U6OnN0b3JhZ2U6OmRvY3VtZW50Ojpjb21wcmVzc2lvbjo6Q29tcHJlc3NpbmcgYXMgYXV0b21lcmdlOjpzdG9yYWdlOjpkb2N1bWVudDo6Y29tcHJlc3Npb246OkRpcmVjdGlvbj46OnByb2Nlc3M6OmhjZmVhNDMyY2Y2MWU1NmNl6QNWYXV0b21lcmdlOjpzdG9yYWdlOjpidW5kbGU6OmJ1aWxkZXI6OkJ1bmRsZUNoYW5nZUl0ZXJJbm5lcjo6dHJ5X25ldzo6aDY2OWQzMzY1ZDI2YjllYWHqA0phdXRvbWVyZ2U6OnRyYW5zYWN0aW9uOjppbm5lcjo6VHJhbnNhY3Rpb25Jbm5lcjo6Y29tbWl0OjpoY2FlNTFiMTM4MGQ2N2JkYusDQWF1dG9tZXJnZV93YXNtOjpBdXRvbWVyZ2U6OmdldF9jdXJzb3JfcG9zaXRpb246OmgzN2Q0ODM0YTZiMGI0OWQw7AM+aGV4YW5lOjpzbGFiOjp3cml0ZXI6OldyaXRlQWN0aW9uPFA+Ojp3cml0ZTo6aGFlY2IyMjgxYWNhYWE2ZGPtA0pjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YXV0b21lcmdlOjppdGVyOjpkb2M6OkRvY0l0ZXI+OjpoZWY1MWZiMDc0YmQwZGJlZu4DRXNlcmRlX2pzb246OmRlOjpEZXNlcmlhbGl6ZXI8Uj46OnBlZWtfaW52YWxpZF90eXBlOjpoMzA3MjM0MWNiYzgxYmJmOe8DPmhleGFuZTo6c2xhYjo6d3JpdGVyOjpXcml0ZUFjdGlvbjxQPjo6d3JpdGU6OmhkMGI2OWU3MTliNDExNDc48AM4Y29yZTo6bnVtOjpiaWdudW06OkJpZzMyeDQwOjptdWxfcG93Mjo6aDYzOWY0MDE0OTVmMjRlMjfxAzFjb3JlOjpzdHI6OnNsaWNlX2Vycm9yX2ZhaWxfcnQ6OmhiYTI5NjFmNTRiNzUzYWU38gMzYXV0b21lcmdlOjp0ZXh0X2RpZmY6Om15ZXJzX2RpZmY6Omg5NmVmMTM5YWY5YTRlZWY18wNTYXV0b21lcmdlOjpvcF9zZXQyOjpjaGFuZ2U6OmJhdGNoOjpWYWx1ZVN0YXRlOjpwcm9jZXNzX2NoYW5nZV9vcDo6aDMzOWYwOTdjNTgzYTQ0MTH0AztoZXhhbmU6OnJsZTo6UmxlQ3Vyc29yPF8sUCxYPjo6bG9hZF9jb3B5OjpoZDM1YmZlZmQ1NzVhNTZjY/UDaTxhdXRvbWVyZ2U6OnRleHRfZGlmZjo6QmxvY2tEaWZmSG9vayBhcyBhdXRvbWVyZ2U6OnRleHRfZGlmZjo6bXllcnM6OkRpZmZIb29rPjo6aW5zZXJ0OjpoYjNkMDIzMjMwODEwNGY4YfYDYjxhdXRvbWVyZ2U6OmF1dG9tZXJnZTo6QXV0b21lcmdlIGFzIGF1dG9tZXJnZTo6cmVhZDo6UmVhZERvYz46OmdldF9taXNzaW5nX2RlcHM6Omg1MzJiMjgyZWNjYzY3MjE49wNYYXV0b21lcmdlOjpvcF9zZXQyOjpjaGFuZ2U6OmNvbGxlY3Rvcjo6Q2hhbmdlQ29sbGVjdG9yOjpmbHVzaF9kZWxldGVzOjpoMGY3MTAyM2U0ZDEzMDI1MvgDXDxoZXhhbmU6OnJsZTo6UmxlQ3Vyc29yPF8sUCxYPiBhcyBoZXhhbmU6OmN1cnNvcjo6Q29sdW1uQ3Vyc29yPjo6dHJ5X25leHQ6OmgzMmM4NmEyNGQ4NjZlMmNl+QMyYXV0b21lcmdlX3dhc206OkF1dG9tZXJnZTo6cHVzaDo6aDFkNGE3NTFkMTc1Mjk1Njj6AzhoZXhhbmU6OmVuY29kZXI6OkVuY29kZXJTdGF0ZTo6YXBwZW5kOjpoZDJhOWE3ZGEwOGQ5ZGFkOfsDW2FsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkJhbGFuY2luZ0NvbnRleHQ8SyxWPjo6YnVsa19zdGVhbF9yaWdodDo6aDdiNDBmNTRjMzlkMWQ1NjD8A2E8Y29yZTo6bWFya2VyOjpQaGFudG9tRGF0YTxUPiBhcyBzZXJkZV9jb3JlOjpkZTo6RGVzZXJpYWxpemVTZWVkPjo6ZGVzZXJpYWxpemU6OmhjMzA3NmYzOWMxMzViOTc3/QNpPGhleGFuZTo6Y29sdW1uZGF0YTo6Q29sdW1uRGF0YUl0ZXI8Qz4gYXMgY29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+OjpudGg6OmhjNzBmN2FiNTAzZDQzYzFi/gM5YXV0b21lcmdlX3dhc206OkF1dG9tZXJnZTo6c2F2ZV9idW5kbGU6Omg0YmYyM2QyN2IyM2JhZDJj/wM+aGV4YW5lOjpzbGFiOjp3cml0ZXI6OldyaXRlQWN0aW9uPFA+Ojp3cml0ZTo6aGQ2MWJhZmM5Mzg3OGE2M2aABDRhdXRvbWVyZ2U6Om9wX3NldDI6Om9wOjpUeE9wOjptYXA6OmgxMTlmM2NhNjZmMjIyMDljgQRFY29yZTo6c2xpY2U6OnNvcnQ6OnNoYXJlZDo6c21hbGxzb3J0Ojpzb3J0NF9zdGFibGU6OmgxMjI5MzM4N2Y3NjkxMDRiggRFY29yZTo6c2xpY2U6OnNvcnQ6OnNoYXJlZDo6c21hbGxzb3J0Ojpzb3J0NF9zdGFibGU6Omg4MGM2YTA4NmU1ZjFlZjk3gwRFYXV0b21lcmdlOjpvcF9zZXQyOjpwYXJlbnRzOjpQYXJlbnRzOjp2aXNpYmxlX3BhdGg6Omg0MWZlMTY2ZjI2YjA3ZjE0hAQ0YXV0b21lcmdlX3dhc206OkF1dG9tZXJnZTo6aW5zZXJ0OjpoODVjY2ZjOGFlNTgxNDg1NoUEQmF1dG9tZXJnZTo6YXV0b21lcmdlOjpBdXRvbWVyZ2U6OmdldF9jdXJzb3JfZm9yOjpoYmE5ZDg2MjMwN2JlY2U1YYYEVGF1dG9tZXJnZTo6c3RvcmFnZTo6YnVuZGxlOjpidWlsZGVyOjpCdW5kbGVCdWlsZGVyOjpmbHVzaF9kZWxldGVzOjpoZWU3NmYyZjY5MGI2ZjA3MIcEggFhdXRvbWVyZ2U6OmxlZ2FjeTo6dXRpbGl0eV9pbXBsczo6b3BpZDo6PGltcGwgY29yZTo6c3RyOjp0cmFpdHM6OkZyb21TdHIgZm9yIGF1dG9tZXJnZTo6bGVnYWN5OjpPcElkPjo6ZnJvbV9zdHI6OmhkZTgzMzNiYzgyYTRkOWQ4iAQ3YXV0b21lcmdlOjpvcF9zZXQyOjpvcDo6T3A6OmFkZF9zdWNjOjpoNTMzYWJmMzU5OWJiNjk5N4kEajxhdXRvbWVyZ2U6Oml0ZXI6OnRvb2xzOjpTa2lwSXRlcjxJLFM+IGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6bmV4dDo6aGMxYWVhYWFjYmUzNmQyZGGKBDdjb3JlOjpzbGljZTo6c29ydDo6dW5zdGFibGU6OmlwbnNvcnQ6Omg3ZGNkYjljYWJmYzQxMDhliwQ8aGV4YW5lOjpzbGFiOjp3cml0ZXI6OlNsYWJXcml0ZXI8UD46OnB1c2g6Omg1NmEwYzNlNzg2ZDUwOTZmjAQyYXV0b21lcmdlX3dhc206OkF1dG9tZXJnZTo6a2V5czo6aDdmZDkyMzg3MjA0ZTlhM2GNBFw8aGV4YW5lOjpybGU6OlJsZUN1cnNvcjxfLFAsWD4gYXMgaGV4YW5lOjpjdXJzb3I6OkNvbHVtbkN1cnNvcj46OnRyeV9uZXh0OjpoYmRkNmQwYjIyZmMxZDA3Mo4EpQE8YXV0b21lcmdlOjpoeWRyYXRlOjptYXA6Ok1hcCBhcyBjb3JlOjpjb252ZXJ0OjpGcm9tPHN0ZDo6Y29sbGVjdGlvbnM6Omhhc2g6Om1hcDo6SGFzaE1hcDxhbGxvYzo6c3RyaW5nOjpTdHJpbmcsYXV0b21lcmdlOjpoeWRyYXRlOjpWYWx1ZT4+Pjo6ZnJvbTo6aDkxOTJjZmZmZjYwNjA2N2WPBDVoZXhhbmU6OnJhdzo6UmF3UmVhZGVyPFQ+OjpzZWVrX3RvOjpoZmM0OTZiODM0ZDZiZTk5MpAEXDxzdGQ6OmNvbGxlY3Rpb25zOjpoYXNoOjptYXA6Okhhc2hNYXA8SyxWLFM+IGFzIGNvcmU6OmNtcDo6UGFydGlhbEVxPjo6ZXE6Omg0OWMwOWZiMDk4MDYwZTNjkQRcPHN0ZDo6Y29sbGVjdGlvbnM6Omhhc2g6Om1hcDo6SGFzaE1hcDxLLFYsUz4gYXMgY29yZTo6Y21wOjpQYXJ0aWFsRXE+OjplcTo6aGMxNWFjM2NhOTY1MDFkMGGSBEBoZXhhbmU6OmNvbHVtbmRhdGE6OkNvbHVtbkRhdGE8Qz46OnJhd19yZWFkZXI6OmgzZDljMzFkZDkzOTY0MTEwkwRdYXV0b21lcmdlOjpoeWRyYXRlOjo8aW1wbCBhdXRvbWVyZ2U6Om9wX3NldDI6Om9wX3NldDo6T3BTZXQ+OjpoeWRyYXRlX2xpc3Q6OmhmNDdiOGE2YjBjM2M2ZGVilAROYXV0b21lcmdlOjp0cmFuc2FjdGlvbjo6aW5uZXI6OlRyYW5zYWN0aW9uSW5uZXI6OnB1dF9vYmplY3Q6OmgyZjIxMWI4NDQyZmM2MGM4lQRGaGV4YW5lOjpzbGFiOjp0cmVlOjpUcmVlTm9kZTxULFc+OjpyZWNvbXB1dGVfd2VpZ2h0OjpoMTJjZmIwNmNhYzgyOTQxN5YEUmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhdXRvbWVyZ2U6Oml0ZXI6OnNwYW5zOjpTcGFuc0ludGVybmFsPjo6aDNmOGMyZmIzYzEzNmQ4MDCXBFNhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpCYWxhbmNpbmdDb250ZXh0PEssVj46OmRvX21lcmdlOjpoMTA3YzY0OGFmN2E2YTAwNpgETGF1dG9tZXJnZV93YXNtOjpleHBvcnRfY2FjaGU6OkV4cG9ydENhY2hlOjptYWtlX3ZhbHVlX3JlZjo6aDU5YThjMTNkNzQ5OTU0ODGZBERjb3JlOjpzbGljZTo6c29ydDo6c2hhcmVkOjpzbWFsbHNvcnQ6Omluc2VydF90YWlsOjpoOTkxZjRmZGE0YWNlNTQwYZoEU2FsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkJhbGFuY2luZ0NvbnRleHQ8SyxWPjo6ZG9fbWVyZ2U6OmhhMWIwNWM1NGQzNmExNGQ4mwQ/YXV0b21lcmdlOjpzdG9yYWdlOjpjb2x1bW5zOjpDb2x1bW5zOjpwYXJzZTI6Omg2ZTcyNDU2NWFjOTU4YmE2nARuPGF1dG9tZXJnZV93YXNtOjppbnRlcm9wOjpBUiBhcyBjb3JlOjpjb252ZXJ0OjpGcm9tPCZbYXV0b21lcmdlOjpzeW5jOjpzdGF0ZTo6SGF2ZV0+Pjo6ZnJvbTo6aDM2NTljZDAxMDhlZDVjY2SdBEBhdXRvbWVyZ2U6OnN0b3JhZ2U6OnBhcnNlOjpsZWIxMjg6OmxlYjEyOF9pNjQ6OmgxYWE2NzU4N2Q1NTI2NjAzngQ1aGV4YW5lOjpjdXJzb3I6OkNvbHVtbkN1cnNvcjo6bmV4dDo6aDUzNDljZWQwNzQ4MjhmZDifBDxoZXhhbmU6OnNsYWI6OnRyZWU6OlNwYW5UcmVlPFQsVz46Omluc2VydDo6aDMyMDRiNWRiZDRhZDA1ZWWgBG48aGV4YW5lOjpib29sZWFuOjpCb29sZWFuQ3Vyc29ySW50ZXJuYWw8Xz4gYXMgaGV4YW5lOjpjdXJzb3I6OkNvbHVtbkN1cnNvcj46OmZpbmFsaXplX3N0YXRlOjpoNWFlNjc4NzBmN2YxMzBhMKEEO2F1dG9tZXJnZTo6aXRlcjo6c3BhbnM6Ok1hcmtEaWZmOjpleHBvcnQ6OmgwMjI4YjkyYTRmNjc1YjQzogSAAWF1dG9tZXJnZTo6c3RvcmFnZTo6Y29sdW1uczo6cmF3X2NvbHVtbjo6UmF3Q29sdW1uczxhdXRvbWVyZ2U6OnN0b3JhZ2U6OmNvbHVtbnM6OmNvbXByZXNzaW9uOjpVbmtub3duPjo6cGFyc2U6Omg0NDlmYmJmOGQxOWRhNjgxowRFY29yZTo6c2xpY2U6OnNvcnQ6OnNoYXJlZDo6c21hbGxzb3J0Ojpzb3J0OF9zdGFibGU6OmhkZjlmNDg3NWYxMGU5YmEzpAQ8aGV4YW5lOjplbmNvZGVyOjpTcGxpY2VFbmNvZGVyPEM+OjpmaW5pc2g6Omg2MGVhNzQ1N2M3N2U0MzhipQRiPGF1dG9tZXJnZTo6aXRlcjo6ZG9jOjpEb2NJdGVyIGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6bmV4dDo6aDA3MzE0MTExZGNhODRmNWGmBF9hdXRvbWVyZ2U6OnN0b3JhZ2U6OmNoYW5nZTo6Y2hhbmdlX29wX2NvbHVtbnM6OkNoYW5nZU9wc0NvbHVtbnM6OnJhd19jb2x1bW5zOjpoNjVlOTNjMDg3MGUwZDczNacEcDxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6OkJUcmVlTWFwPEssVixBPiBhcyBjb3JlOjpjbG9uZTo6Q2xvbmU+OjpjbG9uZTo6Y2xvbmVfc3VidHJlZTo6aGFkNDhmNWQ2N2YyZDM2MGaoBHA8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bWFwOjpCVHJlZU1hcDxLLFYsQT4gYXMgY29yZTo6Y2xvbmU6OkNsb25lPjo6Y2xvbmU6OmNsb25lX3N1YnRyZWU6OmhiZWY0YjIxYmYwMTY4MTZmqQRuPGhleGFuZTo6Ym9vbGVhbjo6Qm9vbGVhbkN1cnNvckludGVybmFsPF8+IGFzIGhleGFuZTo6Y3Vyc29yOjpDb2x1bW5DdXJzb3I+OjpzcGxpY2VfZW5jb2Rlcjo6aGU1ZmYwMTZlNmNlOWRkYWKqBElhdXRvbWVyZ2U6OmF1dG9tZXJnZTo6QXV0b21lcmdlOjptZXJnZV9hbmRfbG9nX3BhdGNoZXM6Omg2MTU0ZDE5ODNlMTg5OWIwqwRQYXV0b21lcmdlOjpjb2x1bW5hcjo6ZW5jb2Rpbmc6OmRlbHRhOjpEZWx0YUVuY29kZXI8Uz46OmFwcGVuZDo6aDMzZGExYzdlZTUwOWMxMWWsBGg8YXV0b21lcmdlOjppdGVyOjp0b29sczo6UGFzdFNraXBwZXIgYXMgY29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+OjpuZXh0OjpoY2RkYjdkOGY0OTJiZDJhMq0EWDxoZXhhbmU6OnJsZTo6UmxlU3RhdGU8UD4gYXMgaGV4YW5lOjplbmNvZGVyOjpFbmNvZGVyU3RhdGU8UD4+OjpmbHVzaDo6aDE1MDdmYWVmYmUwNmRlMjOuBD5oZXhhbmU6OnNsYWI6OndyaXRlcjo6V3JpdGVBY3Rpb248UD46OndyaXRlOjpoMmQ0ZWY0ZTc5OGI2ZjExYq8EPmhleGFuZTo6c2xhYjo6d3JpdGVyOjpXcml0ZUFjdGlvbjxQPjo6d3JpdGU6OmhlMGI5MWI2NWFlMjcwYWJisARDY29yZTo6aXRlcjo6YWRhcHRlcnM6OmZsYXR0ZW46OmFuZF90aGVuX29yX2NsZWFyOjpoNThhMzllY2QwMmNjMzlmN7EEWHVuaWNvZGVfc2VnbWVudGF0aW9uOjpncmFwaGVtZTo6R3JhcGhlbWVDdXJzb3I6OmhhbmRsZV9pbmNiX2NvbnNvbmFudDo6aDc3NTg0NjUzYTM3YTFhNDWyBFt1bmljb2RlX3NlZ21lbnRhdGlvbjo6Z3JhcGhlbWU6OkdyYXBoZW1lQ3Vyc29yOjpoYW5kbGVfaW5jYl9jb25zb25hbnQ6Omg3NzU4NDY1M2EzN2ExYTQ1WzFdswRcPGhleGFuZTo6cmxlOjpSbGVDdXJzb3I8XyxQLFg+IGFzIGhleGFuZTo6Y3Vyc29yOjpDb2x1bW5DdXJzb3I+Ojp0cnlfbmV4dDo6aDdmODU4MzlhNjFhODc5YWO0BEFhdXRvbWVyZ2U6Om1hcmtzOjpNYXJrU3RhdGVNYWNoaW5lOjptYXJrX2JlZ2luOjpoNTg3YjYyMDliNzY4ZDk3MrUEUWF1dG9tZXJnZTo6dHJhbnNhY3Rpb246OmlubmVyOjpUcmFuc2FjdGlvbklubmVyOjppbnNlcnRfb2JqZWN0OjpoZTNlNGU0MzdkYjY5M2ZiNrYEcDxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6OkJUcmVlTWFwPEssVixBPiBhcyBjb3JlOjpjbG9uZTo6Q2xvbmU+OjpjbG9uZTo6Y2xvbmVfc3VidHJlZTo6aDI0NjUyMWFmNGQzY2Y0YTm3BHA8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bWFwOjpCVHJlZU1hcDxLLFYsQT4gYXMgY29yZTo6Y2xvbmU6OkNsb25lPjo6Y2xvbmU6OmNsb25lX3N1YnRyZWU6OmhlYTA1YjE1MjZlZDAxMmY1uAQ2YXV0b21lcmdlOjpvcF9zZXQyOjpvcDo6T3A6OnZpc2libGU6OmhlYTc5YzExYWI0NDU3NjgwuQRaYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6QmFsYW5jaW5nQ29udGV4dDxLLFY+OjpidWxrX3N0ZWFsX2xlZnQ6Omg2MWMyYWZmMTZlZGYzZjZlugRTYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6QmFsYW5jaW5nQ29udGV4dDxLLFY+Ojpkb19tZXJnZTo6aDViY2RjY2QxYmY2YTNhYzO7BD5oZXhhbmU6OnNsYWI6OndyaXRlcjo6V3JpdGVBY3Rpb248UD46OndyaXRlOjpoYThmMmVjNzIyMWQ5NzkwNLwEVjxhdXRvbWVyZ2Vfd2FzbTo6aW50ZXJvcDo6ZXJyb3I6OkV4cG9ydCBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmgyMGU5NTYxYTRjZmRhZmNlvQRBaGV4YW5lOjpzbGFiOjp0cmVlOjpUcmVlTm9kZTxULFc+OjpsYXN0X3dlaWdodDo6aDk5OTlmNTA5MzEyNTkzMma+BEphdXRvbWVyZ2U6OnRyYW5zYWN0aW9uOjppbm5lcjo6VHJhbnNhY3Rpb25Jbm5lcjo6ZGVsZXRlOjpoNDhkMmZjMmRlZDJmMDBkZL8EM2NvcmU6OnN0cjo6Y291bnQ6OmRvX2NvdW50X2NoYXJzOjpoYjY3MTc0YmIzNjVmNDQ4YsAEhQFhdXRvbWVyZ2Vfd2FzbTo6dmFsdWU6OjxpbXBsIGNvcmU6OmNvbnZlcnQ6OkZyb208YXV0b21lcmdlX3dhc206OnZhbHVlOjpEYXRhdHlwZT4gZm9yIGFsbG9jOjpzdHJpbmc6OlN0cmluZz46OmZyb206OmgyNjgxMzQyZjU2ODkzNzkywQSAAWF1dG9tZXJnZTo6c3RvcmFnZTo6Y29sdW1uczo6cmF3X2NvbHVtbjo6UmF3Q29sdW1uczxhdXRvbWVyZ2U6OnN0b3JhZ2U6OmNvbHVtbnM6OmNvbXByZXNzaW9uOjpVbmtub3duPjo6cGFyc2U6OmgyZGQ2ZDYwNjczNTA2MmE1wgRgPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6QlRyZWVNYXA8SyxWLEE+IGFzIGNvcmU6OmNtcDo6UGFydGlhbEVxPjo6ZXE6Omg2NjBiN2RiNDNkMGFmODFlwwRfaGFzaGJyb3duOjpydXN0Y19lbnRyeTo6PGltcGwgaGFzaGJyb3duOjptYXA6Okhhc2hNYXA8SyxWLFMsQT4+OjpydXN0Y19lbnRyeTo6aDA0MDFlNjNjNDU4ODAzMDnEBD5oZXhhbmU6OnNsYWI6OndyaXRlcjo6V3JpdGVBY3Rpb248UD46OndyaXRlOjpoNjM1MjA2NGNhY2E4NjJlNsUEPmhleGFuZTo6c2xhYjo6d3JpdGVyOjpXcml0ZUFjdGlvbjxQPjo6d3JpdGU6Omg1ZGIzMDQ3YzMyNDIwZmMxxgRfaGFzaGJyb3duOjpydXN0Y19lbnRyeTo6PGltcGwgaGFzaGJyb3duOjptYXA6Okhhc2hNYXA8SyxWLFMsQT4+OjpydXN0Y19lbnRyeTo6aGRkNjMwMzIwMGExMWVmNGXHBFE8YXV0b21lcmdlOjppdGVyOjpzcGFuczo6TWFya0RpZmYgYXMgY29yZTo6Y21wOjpQYXJ0aWFsRXE+OjplcTo6aGJlYzdlOWJjNDM0Y2U2OTjIBE1hdXRvbWVyZ2U6OnRyYW5zYWN0aW9uOjppbm5lcjo6VHJhbnNhY3Rpb25Jbm5lcjo6ZG9faW5zZXJ0OjpoODU5Mzg3YmIzZmRiZTRkZckEU2FsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkJhbGFuY2luZ0NvbnRleHQ8SyxWPjo6ZG9fbWVyZ2U6OmgzMGYxYzU5ZDcwMDg2YWY2ygRTYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6QmFsYW5jaW5nQ29udGV4dDxLLFY+Ojpkb19tZXJnZTo6aDcwMTYzYmQwNmFmYjhlYjLLBLoBYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6c2VhcmNoOjo8aW1wbCBhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPEJvcnJvd1R5cGUsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TGVhZk9ySW50ZXJuYWw+Pjo6c2VhcmNoX3RyZWU6OmhjODIxODJjNzlmMzA1MjExzAQxPHN0ciBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoYjM5ZjlhMTk1MDJhMzBlY80EWzxoZXhhbmU6OmRlbHRhOjpEZWx0YVN0YXRlIGFzIGhleGFuZTo6ZW5jb2Rlcjo6RW5jb2RlclN0YXRlPGk2ND4+OjpmbHVzaDo6aDUwYTIyY2UzOTIzNzI5YzPOBFthbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpCYWxhbmNpbmdDb250ZXh0PEssVj46OmJ1bGtfc3RlYWxfcmlnaHQ6OmhiYzBlMTFkNmQ5YTMwNGY5zwRYPGhleGFuZTo6cmxlOjpSbGVTdGF0ZTxQPiBhcyBoZXhhbmU6OmVuY29kZXI6OkVuY29kZXJTdGF0ZTxQPj46OmZsdXNoOjpoYTQ3Y2QwMTk5ZjMzZGVkM9AEPGhleGFuZTo6ZW5jb2Rlcjo6U3BsaWNlRW5jb2RlcjxDPjo6ZmluaXNoOjpoM2JhMDQ2ZTE5Zjk0ZWE1NNEEqgJhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpyZW1vdmU6OjxpbXBsIGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkhhbmRsZTxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TXV0LEssVixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkxlYWY+LGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6S1Y+Pjo6cmVtb3ZlX2xlYWZfa3Y6Omg2MWExMGYwMmZlMGQzMjZj0gRNYXV0b21lcmdlX3dhc206OmV4cG9ydF9jYWNoZTo6RXhwb3J0Q2FjaGU6OmVuc3VyZV9kYXRhdHlwZTo6aDNkNmJiYzlmNTBmYzg4OGTTBDxoZXhhbmU6OmVuY29kZXI6OlNwbGljZUVuY29kZXI8Qz46OmZpbmlzaDo6aDJkZDU3OWFlOGRlMDQ0NDTUBDxoZXhhbmU6OmVuY29kZXI6OlNwbGljZUVuY29kZXI8Qz46OmZpbmlzaDo6aDVlMmM2MzI5MDQ5MzJjMGbVBGk8YXV0b21lcmdlOjppdGVyOjptYXBfcmFuZ2U6Ok1hcEl0ZXIgYXMgYXV0b21lcmdlOjppdGVyOjp0b29sczo6U2hpZnRhYmxlPjo6c2hpZnRfbmV4dDo6aDE0OWNkZTcwZDI5YTIwMDHWBHc8YXV0b21lcmdlOjpjb2x1bW5hcjo6ZW5jb2Rpbmc6OmRlbHRhOjpEZWx0YURlY29kZXIgYXMgY29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+OjpuZXh0OjpoMjk0MDU4NzI2NjY0ZGMxMtcEP2F1dG9tZXJnZTo6YXV0b21lcmdlOjpBdXRvbWVyZ2U6Omh5ZHJhdGVfb2JqOjpoY2Q2Yjg5YTUwYzQxNmZhY9gEgAFhdXRvbWVyZ2U6OnN0b3JhZ2U6OmNvbHVtbnM6OnJhd19jb2x1bW46OlJhd0NvbHVtbnM8YXV0b21lcmdlOjpzdG9yYWdlOjpjb2x1bW5zOjpjb21wcmVzc2lvbjo6VW5rbm93bj46OnBhcnNlOjpoNDJkOWJmODkzYmRmYjdhM9kEKF9fcnVzdGNbNTIyNGU2YjgxY2Q4MmE4Zl06Ol9fcmRsX3JlYWxsb2PaBDtoZXhhbmU6OnJsZTo6UmxlQ3Vyc29yPF8sUCxYPjo6bG9hZF9jb3B5OjpoZWE5YzZlMzQxZGQ4ZGE3N9sEO2hleGFuZTo6cmxlOjpSbGVDdXJzb3I8XyxQLFg+Ojpsb2FkX2NvcHk6OmgzZWM1ZDVlYThlZTZlMTFm3AQ7aGV4YW5lOjpybGU6OlJsZUN1cnNvcjxfLFAsWD46OmxvYWRfY29weTo6aDQ3NmEwYmRlYTYyMjMxMTDdBDtoZXhhbmU6OnJsZTo6UmxlQ3Vyc29yPF8sUCxYPjo6bG9hZF9jb3B5OjpoOGRkOGFkNWY4YTNhZTY2Y94EO2hleGFuZTo6cmxlOjpSbGVDdXJzb3I8XyxQLFg+Ojpsb2FkX2NvcHk6OmhkODUxM2MyMjM0ZjEyZGEz3wROPGF1dG9tZXJnZTo6ZXJyb3I6OkF1dG9tZXJnZUVycm9yIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmgyOTIzNGZhNmFjMDg1YmI04AQ4YXV0b21lcmdlOjpzeW5jOjpzdGF0ZTo6U3RhdGU6OmRlY29kZTo6aGYwNDNkYjUxZjM1NmFiMWHhBFE8YXV0b21lcmdlOjplcnJvcjo6QXV0b21lcmdlRXJyb3IgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDI5MjM0ZmE2YWMwODViYjRbMV3iBFNhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpCYWxhbmNpbmdDb250ZXh0PEssVj46OmRvX21lcmdlOjpoYWIzN2E1ODY0MDA0OGMzMOMEPGhleGFuZTo6ZW5jb2Rlcjo6U3BsaWNlRW5jb2RlcjxDPjo6ZmluaXNoOjpoNDZmYWIzNzJmYTdiNTIxOOQESGF1dG9tZXJnZV93YXNtOjpleHBvcnRfY2FjaGU6OkV4cG9ydENhY2hlOjplbnN1cmVfa2V5OjpoYzQ3MWYxNjQxNTg1NzQ3NuUEN2F1dG9tZXJnZTo6b3Bfc2V0Mjo6b3A6OlR4T3A6Omluc2VydDo6aGE1MTc3ZjM4ZmZkZWRiZmLmBGE8YXV0b21lcmdlOjp0ZXh0X3ZhbHVlOjpVdGY4IGFzIGF1dG9tZXJnZTo6dGV4dF92YWx1ZTo6VGV4dFZhbHVlPjo6bWFrZV9zdHJpbmc6OmhjMWI1ODE0MWNmYzU5ZWQw5wRKYXV0b21lcmdlOjpzdG9yYWdlOjpwYXJzZTo6bGVuZ3RoX3ByZWZpeGVkOjp7e2Nsb3N1cmV9fTo6aGEyZGIxMTY4MjFmMGI2MDDoBEFhdXRvbWVyZ2Vfd2FzbTo6ZXhwb3J0X2NhY2hlOjpFeHBvcnRDYWNoZTo6bmV3OjpoYmU0ZDgzNDQzYzQyMTczZOkERWNvcmU6OnNsaWNlOjpzb3J0OjpzaGFyZWQ6OnNtYWxsc29ydDo6c29ydDhfc3RhYmxlOjpoNjA2NDc2Y2IzOWI2OWE1MOoEQGF1dG9tZXJnZTo6b3Bfc2V0Mjo6b3Bfc2V0OjpPcFNldDo6aXRlcl9yYW5nZTo6aGQzZWJiMjQxZTE4ODc1NTDrBFVhdXRvbWVyZ2U6Om9wX3NldDI6OmNoYW5nZTo6Y29sbGVjdG9yOjpDaGFuZ2VDb2xsZWN0b3I6OnByb2Nlc3Nfb3A6OmhiMTU3MzkyYzU2OTIyNDA17ARNY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGF1dG9tZXJnZTo6ZXJyb3I6OkF1dG9tZXJnZUVycm9yPjo6aGRiNWFhZTBkZmI0OGEwMzXtBEhoZXhhbmU6OnNsYWI6OnRyZWU6OlNwYW5UcmVlRm5JdGVyPFQsVyxGPjo6cG9wX2N1cnNvcjo6aDRlNzRmMDYxODc5ZDYyNmbuBFthbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpCYWxhbmNpbmdDb250ZXh0PEssVj46OmJ1bGtfc3RlYWxfcmlnaHQ6OmhhNjc4NDRhMWM3NGUzYWJm7wRbYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6QmFsYW5jaW5nQ29udGV4dDxLLFY+OjpidWxrX3N0ZWFsX3JpZ2h0OjpoZTRlY2M1YmIzMjIwZDUxOfAEO2hleGFuZTo6Y29sdW1uZGF0YTo6Q29sdW1uRGF0YTxDPjo6cmVtYXA6OmhjYTAwYWViNWExMjhjZmZm8QRAYXV0b21lcmdlOjpzdG9yYWdlOjpwYXJzZTo6bGViMTI4OjpsZWIxMjhfdTY0OjpoNjM4ZTQ1YWJhMzczNjU1NfIESGNvcmU6Om51bTo6Zmx0MmRlYzo6c3RyYXRlZ3k6OmdyaXN1Ojpmb3JtYXRfZXhhY3Rfb3B0OjpoMzE4MGRiOGI3MWViZWEyZfMEQmNvcmU6OnNsaWNlOjpzb3J0Ojp1bnN0YWJsZTo6aGVhcHNvcnQ6OmhlYXBzb3J0OjpoZTliYjJiYTQ0OGI2N2I3MfQEPGF1dG9tZXJnZTo6b3Bfc2V0Mjo6b3Bfc2V0OjpPcFNldDo6ZXhwb3J0OjpoM2RlYjU2ZTViMWE1NWUwYfUEQGF1dG9tZXJnZTo6dGV4dF92YWx1ZTo6Q29uY3JldGVUZXh0VmFsdWU6Om5ldzo6aDVkZTFlNjdmMTI2NDBiMDX2BGk8aGV4YW5lOjpjb2x1bW5kYXRhOjpDb2x1bW5EYXRhSXRlcjxDPiBhcyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvcj46Om50aDo6aGQ1ODNjN2U0NGIxMzI4NjD3BDxoZXhhbmU6OmVuY29kZXI6OlNwbGljZUVuY29kZXI8Qz46OmZpbmlzaDo6aDgxYjM3YWI2N2ZmMjMzYzD4BENjb3JlOjppdGVyOjphZGFwdGVyczo6ZmxhdHRlbjo6YW5kX3RoZW5fb3JfY2xlYXI6OmgyZTEyMWNiMTk2MzY5YTJj+QRAY29yZTo6c2xpY2U6OnNvcnQ6OnNoYXJlZDo6cGl2b3Q6Om1lZGlhbjNfcmVjOjpoZGJmNjFjM2Y1YzJlOTlmOPoEQGF1dG9tZXJnZTo6c3RvcmFnZTo6cGFyc2U6OmxlYjEyODo6bGViMTI4X3U2NDo6aDEzYjdmZjU5NWJkNGQxNjX7BENhdXRvbWVyZ2U6Om9wX3NldDI6OnR5cGVzOjpTY2FsYXJWYWx1ZTo6ZnJvbV9yYXc6OmgwYjc3NzJiN2Q2MDczYWZi/ARAYXV0b21lcmdlOjpzdG9yYWdlOjpwYXJzZTo6bGViMTI4OjpsZWIxMjhfdTY0OjpoZjhmNDJjMWFiOGUwMjNkOf0ENWF1dG9tZXJnZV93YXNtOjppbnRlcm9wOjpnZXRfaGVhZHM6OmgxOTVkZDJiYjA3Mjg5ODcw/gQ5YXV0b21lcmdlOjppdGVyOjpzcGFuczo6U3BhbnNEaWZmOjpuZXc6OmgwMjAzODU3ZjdkZmEzOTFj/wRCY29yZTo6Zm10OjpmbG9hdDo6ZmxvYXRfdG9fZGVjaW1hbF9jb21tb25fZXhhY3Q6Omg2MGM4OWQwYTA5ZGM0Y2UygAVAc2VyZGVfanNvbjo6ZGU6OkRlc2VyaWFsaXplcjxSPjo6cGFyc2VfbnVtYmVyOjpoYjM3ZWFiMDY0NjFhMTQzYYEFPWF1dG9tZXJnZTo6bGVnYWN5OjpzZXJkZV9pbXBsczo6cmVhZF9maWVsZDo6aGI3MTdiYjkwMTllMDQ0ZjCCBaoCYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6cmVtb3ZlOjo8aW1wbCBhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpIYW5kbGU8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6Ok11dCxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpMZWFmPixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OktWPj46OnJlbW92ZV9sZWFmX2t2OjpoOThjNjMxYzMyZjU4MDI0N4MFQGF1dG9tZXJnZTo6c3RvcmFnZTo6cGFyc2U6OmxlYjEyODo6bGViMTI4X3UzMjo6aGJmNzI5NzJmZTQ3NjdkYjOEBU08YXV0b21lcmdlOjp2YWx1ZTo6U2NhbGFyVmFsdWUgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoOWY1YTQ3MjliMjkwNGE0NoUFM2NvcmU6OnNsaWNlOjo8aW1wbCBbVF0+OjpyZXZlcnNlOjpoMzk2YTI0NDM1ZTAzZTEwZYYFUWF1dG9tZXJnZTo6Y29sdW1uYXI6OmNvbHVtbl9yYW5nZTo6dmFsdWU6OlZhbHVlSXRlcjo6cGFyc2VfcmF3OjpoMDJkNGJjZjBiMjc3NDY5MIcFTmF1dG9tZXJnZTo6Y29sdW1uYXI6OmVuY29kaW5nOjpybGU6OlJsZUVuY29kZXI8UyxUPjo6ZmluaXNoOjpoZmQ5ZmIwMGQyMGEyOGU2Y4gFVjxhdXRvbWVyZ2U6Om9wX3NldDI6OnR5cGVzOjpTY2FsYXJWYWx1ZSBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmhkYWVjYzI3Y2YzNzZhOTI5iQVAYXV0b21lcmdlOjpzdG9yYWdlOjpwYXJzZTo6bGViMTI4OjpsZWIxMjhfdTY0OjpoYTg1YWRmN2ZmNDU3MDEzMYoFW2FsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkJhbGFuY2luZ0NvbnRleHQ8SyxWPjo6YnVsa19zdGVhbF9yaWdodDo6aDJhMDc1Y2E3ZGViNmRhNDSLBVg8aGV4YW5lOjpybGU6OlJsZVN0YXRlPFA+IGFzIGhleGFuZTo6ZW5jb2Rlcjo6RW5jb2RlclN0YXRlPFA+Pjo6Zmx1c2g6OmgyNzlkMmY3ZjBjMTYwMGNljAVTYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6QmFsYW5jaW5nQ29udGV4dDxLLFY+Ojpkb19tZXJnZTo6aDg0OTAyZGZmMmU3MzE0NjeNBVNhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpCYWxhbmNpbmdDb250ZXh0PEssVj46OmRvX21lcmdlOjpoZDVhNWU3MzAyMDc1ZTlhNI4FN2hleGFuZTo6Y3Vyc29yOjpDb2x1bW5DdXJzb3I6OnNwbGljZTo6aGU3ZjMxNmVjOGIwOTUyZDCPBVFhdXRvbWVyZ2U6OmNvbHVtbmFyOjpjb2x1bW5fcmFuZ2U6OnZhbHVlOjpWYWx1ZUl0ZXI6OnBhcnNlX3Jhdzo6aGRlNjUxNGJlNDE4Mjk2YTeQBU9hdXRvbWVyZ2U6Om9wX3NldDI6Om9wX3NldDo6T3BTZXQ6OmdldF9pbmNyZW1lbnRfZGlmZl9hdF9wb3M6OmhkOWEzMzEyOWUxN2M4MzE2kQU6Y29yZTo6bnVtOjpiaWdudW06OkJpZzMyeDQwOjptdWxfZGlnaXRzOjpoNmRhZTU0Njk3MzZhM2U2NZIFogFhdXRvbWVyZ2Vfd2FzbTo6aW50ZXJvcDo6PGltcGwgY29yZTo6Y29udmVydDo6VHJ5RnJvbTxhdXRvbWVyZ2Vfd2FzbTo6aW50ZXJvcDo6SlM+IGZvciBhbGxvYzo6dmVjOjpWZWM8YXV0b21lcmdlOjpzeW5jOjpzdGF0ZTo6SGF2ZT4+Ojp0cnlfZnJvbTo6aDAxMTI0ZmJhZjVkNTZhMjaTBVNhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpCYWxhbmNpbmdDb250ZXh0PEssVj46OmRvX21lcmdlOjpoYjdiYmU0OTMxYzIwNGQ1Y5QFPGhleGFuZTo6c2xhYjo6dHJlZTo6U3BhblRyZWU8VCxXPjo6c3BsaWNlOjpoOGRiOTM0MzczNzA2YTI5YZUFPGhleGFuZTo6c2xhYjo6dHJlZTo6U3BhblRyZWU8VCxXPjo6c3BsaWNlOjpoODA3ZWMzNmQyZWRjZmY5ZZYFWmF1dG9tZXJnZV93YXNtOjppbnRlcm9wOjo8aW1wbCBhdXRvbWVyZ2Vfd2FzbTo6QXV0b21lcmdlPjo6ZXhwb3J0X3ZhbHVlOjpoMDY0NDk2NjdhOTllMDE5NpcFT2hleGFuZTo6c2xhYjo6dHJlZTo6VHJlZU5vZGU8VCxXPjo6aW5zZXJ0X2ludG9fbm9uX2Z1bGxfbm9kZTo6aGY5YzY4NWIzYjIwNjVjYmOYBXA8YWxsb2M6OnZlYzo6VmVjPFQ+IGFzIGFsbG9jOjp2ZWM6OnNwZWNfZnJvbV9pdGVyX25lc3RlZDo6U3BlY0Zyb21JdGVyTmVzdGVkPFQsST4+Ojpmcm9tX2l0ZXI6OmgwNTRiYWQwZmU0ZjZmYmMzmQVEY29yZTo6c2xpY2U6OnNvcnQ6OnNoYXJlZDo6c21hbGxzb3J0OjppbnNlcnRfdGFpbDo6aDZhMTczMjM1ZDkwNDg1N2GaBURjb3JlOjpzbGljZTo6c29ydDo6c2hhcmVkOjpzbWFsbHNvcnQ6Omluc2VydF90YWlsOjpoN2E3OWJiYWU2MzQ1MDJmNpsFdDxhdXRvbWVyZ2U6OmF1dG9jb21taXQ6OkF1dG9Db21taXQgYXMgYXV0b21lcmdlOjp0cmFuc2FjdGlvbjo6dHJhbnNhY3RhYmxlOjpUcmFuc2FjdGFibGU+OjppbnNlcnQ6OmhjNmY4MzJkNmU4NmFlNDJjnAU0YXV0b21lcmdlX3dhc206OkF1dG9tZXJnZTo6bGVuZ3RoOjpoZWRiMzVmM2JkNmYyZDVhZp0FQGhleGFuZTo6Y29sdW1uZGF0YTo6Q29sdW1uRGF0YTxDPjo6aW5pdF9lbXB0eTo6aDJhM2Y0ZjZmODAyMzQ5ZmOeBTtoYXNoYnJvd246Om1hcDo6SGFzaE1hcDxLLFYsUyxBPjo6aW5zZXJ0OjpoODYwZDYxMDFlM2YwMTdlNJ8FogFhdXRvbWVyZ2Vfd2FzbTo6aW50ZXJvcDo6PGltcGwgY29yZTo6Y29udmVydDo6VHJ5RnJvbTxhdXRvbWVyZ2Vfd2FzbTo6aW50ZXJvcDo6SlM+IGZvciBhbGxvYzo6dmVjOjpWZWM8YXV0b21lcmdlOjp0eXBlczo6Q2hhbmdlSGFzaD4+Ojp0cnlfZnJvbTo6aDczMzliZDFjMzIzYzY5YWWgBT5oZXhhbmU6OnJsZTo6UmxlQ3Vyc29yPF8sUCxYPjo6ZW5jb2RlX2lubmVyOjpoNmZkMmViNzIzN2I2MmFmYaEFQ2NvcmU6Oml0ZXI6OmFkYXB0ZXJzOjptYXA6Om1hcF9mb2xkOjp7e2Nsb3N1cmV9fTo6aDc5MWNkOWIyY2I3NDQxNjSiBTtoZXhhbmU6OmNvbHVtbmRhdGE6OkNvbHVtbkRhdGE8Qz46OnJlbWFwOjpoYzY2NWI3ZWY0NGU2MjAwOaMFT2hleGFuZTo6c2xhYjo6dHJlZTo6VHJlZU5vZGU8VCxXPjo6aW5zZXJ0X2ludG9fbm9uX2Z1bGxfbm9kZTo6aGY4YTQxMzYwMjMwOTI4NjikBUljb3JlOjpmbXQ6OmZsb2F0OjpmbG9hdF90b19leHBvbmVudGlhbF9jb21tb25fc2hvcnRlc3Q6Omg1ZTlmYTNkYTdjODNkYTYypQVAaGV4YW5lOjpjb2x1bW5kYXRhOjpDb2x1bW5EYXRhPEM+Ojppbml0X2VtcHR5OjpoNjc3NTM4MzAwNWVmMzA2MaYFQGhleGFuZTo6Y29sdW1uZGF0YTo6Q29sdW1uRGF0YTxDPjo6aW5pdF9lbXB0eTo6aGFkNDlkODBmNjc4Y2FmYmanBUBoZXhhbmU6OmNvbHVtbmRhdGE6OkNvbHVtbkRhdGE8Qz46OmluaXRfZW1wdHk6OmhjN2UyZDkwNTNlMDlkYjYyqAVOYXV0b21lcmdlOjpjb2x1bW5hcjo6ZW5jb2Rpbmc6OnJsZTo6UmxlRW5jb2RlcjxTLFQ+OjpmaW5pc2g6OmhiNTJhOTA2MDk1ZDg0ODUwqQVAaGV4YW5lOjpzbGFiOjp0cmVlOjpUcmVlTm9kZTxULFc+OjpnZXRfY3Vyc29yOjpoZDNiOTU1ODI1MGQxZDRjY6oFUTxUIGFzIGFsbG9jOjpzbGljZTo6PGltcGwgW1RdPjo6dG9fdmVjX2luOjpDb252ZXJ0VmVjPjo6dG9fdmVjOjpoMjIwNGQ1NTgyNThiNjMzZKsFcjxjb3JlOjppdGVyOjphZGFwdGVyczo6ZmxhdHRlbjo6RmxhdE1hcDxJLFUsRj4gYXMgY29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+OjpuZXh0OjpoMzJiYWJhZmUxMDBmMWM3MKwFcjxjb3JlOjppdGVyOjphZGFwdGVyczo6ZmxhdHRlbjo6RmxhdE1hcDxJLFUsRj4gYXMgY29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+OjpuZXh0OjpoYzBkZDMyZjBiNmUwYzIwZa0FWmFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkJhbGFuY2luZ0NvbnRleHQ8SyxWPjo6YnVsa19zdGVhbF9sZWZ0OjpoMmZjNGQwOTA2ZGYyYzk0M64FUTxUIGFzIGFsbG9jOjpzbGljZTo6PGltcGwgW1RdPjo6dG9fdmVjX2luOjpDb252ZXJ0VmVjPjo6dG9fdmVjOjpoNTMwMTYyMTIwYzYwNzc2M68FcDxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6OkJUcmVlTWFwPEssVixBPiBhcyBjb3JlOjpjbG9uZTo6Q2xvbmU+OjpjbG9uZTo6Y2xvbmVfc3VidHJlZTo6aGM0YTEzNDhkY2NkMGU0MGawBUphbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6OkJUcmVlTWFwPEssVixBPjo6cmVtb3ZlOjpoZDM0MzczZTJiZGVhMjUxObEFcDxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6OkJUcmVlTWFwPEssVixBPiBhcyBjb3JlOjpjbG9uZTo6Q2xvbmU+OjpjbG9uZTo6Y2xvbmVfc3VidHJlZTo6aGVmYmExYThhYjAwN2ExNjiyBUBoYXNoYnJvd246OnJhdzo6UmF3VGFibGU8VCxBPjo6cmVzZXJ2ZV9yZWhhc2g6OmhjMTRlM2NhNWY2ZjY1ZGY5swVRYXV0b21lcmdlOjpwYXRjaGVzOjpwYXRjaF9idWlsZGVyOjpQYXRjaEJ1aWxkZXI6OmZsYWdfY29uZmxpY3Q6OmgyNTI1NjJhMDBiOWU2ZTk5tAVOYXV0b21lcmdlOjpzdG9yYWdlOjpjb2x1bW5zOjpDb2x1bW5MYXlvdXRQYXJzZXI6OmFkZF9jb2x1bW46OmgyZDM3YjRiZTIwYjE5MGE3tQVBaGFzaGJyb3duOjpyYXc6OlJhd1RhYmxlSW5uZXI6OnJlaGFzaF9pbl9wbGFjZTo6aGRiZTdiMjVhNjkyYzE4NjC2BURoYXNoYnJvd246OnJhdzo6UmF3VGFibGVJbm5lcjo6cmVoYXNoX2luX3BsYWNlOjpoZGJlN2IyNWE2OTJjMTg2MFsxXbcFYTxjb3JlOjptYXJrZXI6OlBoYW50b21EYXRhPFQ+IGFzIHNlcmRlX2NvcmU6OmRlOjpEZXNlcmlhbGl6ZVNlZWQ+OjpkZXNlcmlhbGl6ZTo6aGFkMDdkNWQ0YjhjYzE5NGS4BUlhdXRvbWVyZ2Vfd2FzbTo6ZXhwb3J0X2NhY2hlOjpFeHBvcnRDYWNoZTo6d3JhcF9zY2FsYXI6OmhjZWI5MmZkOGJkYjk4NzA2uQVYPGhleGFuZTo6cmxlOjpSbGVTdGF0ZTxQPiBhcyBoZXhhbmU6OmVuY29kZXI6OkVuY29kZXJTdGF0ZTxQPj46OmZsdXNoOjpoY2ZmMGM2MDlmMDIxNmYzZLoFeTxhdXRvbWVyZ2U6OmNvbHVtbmFyOjpjb2x1bW5fcmFuZ2U6Om9ial9pZDo6T2JqSWRJdGVyIGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6bmV4dDo6aDU4NDUzNmM0NTQ3MTk2MzW7BVg8YXV0b21lcmdlOjpjdXJzb3I6OkN1cnNvciBhcyBjb3JlOjpjb252ZXJ0OjpUcnlGcm9tPCZzdHI+Pjo6dHJ5X2Zyb206Omg0YjY3Y2E2NDk5MWQyZjRivAVAaGFzaGJyb3duOjpyYXc6OlJhd1RhYmxlPFQsQT46OnJlc2VydmVfcmVoYXNoOjpoNWNlMDhlYjk2NDkzMDIyOb0FXDxhdXRvbWVyZ2Vfd2FzbTo6aW50ZXJvcDo6ZXJyb3I6OkJhZFN5bmNTdGF0ZSBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmhiZmUwZjAxYjNiY2IyZTRhvgVLYXV0b21lcmdlOjpjaGFuZ2VfZ3JhcGg6OkNoYW5nZUdyYXBoOjpnZXRfYnVpbGRfbWV0YWRhdGE6OmgwNGI5YmI3NDY3ZTc0NTNmvwUrdHJhY2luZzo6c3Bhbjo6U3Bhbjo6bmV3OjpoZDRmMmUzOWViOGFmNjc4NcAFczxzZXJkZV93YXNtX2JpbmRnZW46OnNlcjo6T2JqZWN0U2VyaWFsaXplciBhcyBzZXJkZV9jb3JlOjpzZXI6OlNlcmlhbGl6ZVN0cnVjdD46OnNlcmlhbGl6ZV9maWVsZDo6aDdiYjFiYjFhZDZlMzUwMTDBBY4BPGF1dG9tZXJnZTo6c3RvcmFnZTo6ZG9jdW1lbnQ6OmNvbXByZXNzaW9uOjpEZWNvbXByZXNzaW5nIGFzIGF1dG9tZXJnZTo6c3RvcmFnZTo6ZG9jdW1lbnQ6OmNvbXByZXNzaW9uOjpEaXJlY3Rpb24+Ojpwcm9jZXNzOjpoNzk0ZjM2OGMyNmJlMzlmZMIFQGhhc2hicm93bjo6cmF3OjpSYXdUYWJsZTxULEE+OjpyZXNlcnZlX3JlaGFzaDo6aDM2MGUyMDZhZjkxNzdjZDPDBUBoYXNoYnJvd246OnJhdzo6UmF3VGFibGU8VCxBPjo6cmVzZXJ2ZV9yZWhhc2g6OmhlZDc2Njg5MTMwY2QzNTI4xAVAaGFzaGJyb3duOjpyYXc6OlJhd1RhYmxlPFQsQT46OnJlc2VydmVfcmVoYXNoOjpoNjM0NWRjOWNhNDIxMzc3N8UFW2FsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkJhbGFuY2luZ0NvbnRleHQ8SyxWPjo6YnVsa19zdGVhbF9yaWdodDo6aDgzZTJjZDk2ZDc0MzQ3OWHGBVthbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpCYWxhbmNpbmdDb250ZXh0PEssVj46OmJ1bGtfc3RlYWxfcmlnaHQ6OmhmZGJjNTEyZGQ2OTk5MzM3xwVAaGFzaGJyb3duOjpyYXc6OlJhd1RhYmxlPFQsQT46OnJlc2VydmVfcmVoYXNoOjpoNmQ4OGIzZTU1YjVjMjM3NMgFQGhhc2hicm93bjo6cmF3OjpSYXdUYWJsZTxULEE+OjpyZXNlcnZlX3JlaGFzaDo6aDQ2MTllNmQ1NGJiM2NlNDfJBUdhdXRvbWVyZ2U6OmNvbHVtbmFyOjplbmNvZGluZzo6cmF3OjpSYXdEZWNvZGVyOjpyZWFkOjpoNTVhYmY1ZTE2NmM2NmExMMoFbDxjb3JlOjppdGVyOjpzb3VyY2VzOjpmcm9tX2ZuOjpGcm9tRm48Rj4gYXMgY29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+OjpuZXh0OjpoNDZmMjI4ZDA2MDA1ODA5YssFYzxoZXhhbmU6OnJsZTo6UmxlQ3Vyc29yPF8sUCxYPiBhcyBoZXhhbmU6OmN1cnNvcjo6Q29sdW1uQ3Vyc29yPjo6Y29tcHV0ZV9taW5fbWF4OjpoODY0ZjM0NzQxZWM2YzdkY8wFU2F1dG9tZXJnZTo6Y29sdW1uYXI6OmVuY29kaW5nOjpybGU6OlJsZUVuY29kZXI8UyxUPjo6YXBwZW5kX251bGw6OmgyMDQzYjZhYWY4ZDA2NzY4zQVJYXV0b21lcmdlX3dhc206OmV4cG9ydF9jYWNoZTo6RXhwb3J0Q2FjaGU6OndyYXBfb2JqZWN0OjpoYjIzYmIxODY5NjRlZGQ2Ms4FW2FsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkJhbGFuY2luZ0NvbnRleHQ8SyxWPjo6YnVsa19zdGVhbF9yaWdodDo6aGMwYjdmYmU0NzRjMWI2NTTPBUVhdXRvbWVyZ2U6OmF1dG9tZXJnZTo6QXV0b21lcmdlOjpzYXZlX3dpdGhfb3B0aW9uczo6aDJiNzM0M2VlNjg0OWFiZTDQBU5hdXRvbWVyZ2U6OmNvbHVtbmFyOjplbmNvZGluZzo6cmxlOjpSbGVEZWNvZGVyPFQ+Ojp0cnlfbmV4dDo6aDk3Y2M3ZjY3Yzc4MzJkNTLRBVNhdXRvbWVyZ2U6OmNvbHVtbmFyOjplbmNvZGluZzo6cmxlOjpSbGVFbmNvZGVyPFMsVD46OmFwcGVuZF9udWxsOjpoMzc5YmM5OTA2MmQ1YzcyYdIFRWF1dG9tZXJnZTo6YXV0b21lcmdlOjpBdXRvbWVyZ2U6OmxvYWRfd2l0aF9vcHRpb25zOjpoM2I2OGU4OTcyZjZiYmEyZtMFNWNvcmU6OmZtdDo6Rm9ybWF0dGVyOjpwYWRfaW50ZWdyYWw6OmgzNmJlMTNjMDdhNjNmZTVj1AU2aGFzaGJyb3duOjpyYXc6OlJhd1RhYmxlPFQsQT46OmZpbmQ6Omg2YmEzYzcwNDViZmE0MDc31QVFY29yZTo6Y2hhcjo6bWV0aG9kczo6PGltcGwgY2hhcj46OmVzY2FwZV9kZWJ1Z19leHQ6Omg1OTU4ZjhlMmE3YzJmMGQ41gVAaGFzaGJyb3duOjpyYXc6OlJhd1RhYmxlPFQsQT46OnJlc2VydmVfcmVoYXNoOjpoZjMxODBlMTVmNmIyZmQ5YdcFWmFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkJhbGFuY2luZ0NvbnRleHQ8SyxWPjo6YnVsa19zdGVhbF9sZWZ0OjpoYzNlMjE1ZGZiNmVkMTNhNNgFWmFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkJhbGFuY2luZ0NvbnRleHQ8SyxWPjo6YnVsa19zdGVhbF9sZWZ0OjpoZjUxYjdjYjEwMzgzYzQ2ONkFRWF1dG9tZXJnZTo6YXV0b2NvbW1pdDo6QXV0b0NvbW1pdDo6c2F2ZV9hbmRfdmVyaWZ5OjpoMjBkYjQwNmQyNzZlZGIwN9oFQWF1dG9tZXJnZTo6b3Bfc2V0Mjo6dHlwZXM6OlNjYWxhclZhbHVlOjphc19yYXc6Omg4MzcwNjUyMDYyZWQwY2Qz2wU8aGV4YW5lOjplbmNvZGVyOjpTcGxpY2VFbmNvZGVyPEM+OjpmaW5pc2g6Omg3NWQ2MzAxY2VlYjI4MjI33AVMYXV0b21lcmdlOjpzZXF1ZW5jZV90cmVlOjpTZXF1ZW5jZVRyZWVJbnRlcm5hbDxUPjo6aW5zZXJ0OjpoZWNhMjQ3M2EwZmM3ZmQ4Yt0FaTxoZXhhbmU6OmNvbHVtbmRhdGE6OkNvbHVtbkRhdGFJdGVyPEM+IGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6bnRoOjpoOGM2YTlhMWEzZTRkY2ZkN94FcDxhdXRvbWVyZ2U6Om9wX3NldDI6Om9wX3NldDo6b3BfaXRlcjo6T3BJdGVyIGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6bmV4dDo6aDdiZmU3NDI4MWY2NTgwNGTfBUBoYXNoYnJvd246OnJhdzo6UmF3VGFibGU8VCxBPjo6cmVzZXJ2ZV9yZWhhc2g6OmgzNjU2YTgxZjk2YjFhOTgw4AVAaGFzaGJyb3duOjpyYXc6OlJhd1RhYmxlPFQsQT46OnJlc2VydmVfcmVoYXNoOjpoNWM2N2JhZmMzMzgxYmNjZuEF+wFhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpIYW5kbGU8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6Ok11dCxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpJbnRlcm5hbD4sYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpLVj46OnNwbGl0OjpoYTEzZmY2OTJiNTc1N2I3ZOIFOWF1dG9tZXJnZV93YXNtOjpBdXRvbWVyZ2U6Om1hdGVyaWFsaXplOjpoNmFhMmI1MDZjYzRlZDQ0ZuMFQGhhc2hicm93bjo6cmF3OjpSYXdUYWJsZTxULEE+OjpyZXNlcnZlX3JlaGFzaDo6aDBjNmQ2MzI0ZDhiODgzMzbkBfsBYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6SGFuZGxlPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpNdXQsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6SW50ZXJuYWw+LGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6S1Y+OjpzcGxpdDo6aGQwZWVkMjg5NzBlYTRlMGHlBUBoYXNoYnJvd246OnJhdzo6UmF3VGFibGU8VCxBPjo6cmVzZXJ2ZV9yZWhhc2g6OmhiMzc4NGM2NDkyMjcxY2Mw5gVAaGFzaGJyb3duOjpyYXc6OlJhd1RhYmxlPFQsQT46OnJlc2VydmVfcmVoYXNoOjpoOGI3YTBhZjUzZmM1NjYzY+cFMWNvcmU6OnN0cjo6Y29udmVydHM6OmZyb21fdXRmODo6aGYyZDIwN2I3OTFiZjc4NmPoBUNhdXRvbWVyZ2U6OmxlZ2FjeTo6c2VyZGVfaW1wbHM6Om9wOjp1bndyYXBfdmFsdWU6Omg0ZjZiMzcyNmVkY2M2NTQ56QVRYXV0b21lcmdlOjpjb2x1bW5hcjo6Y29sdW1uX3JhbmdlOjp2YWx1ZTo6VmFsdWVJdGVyOjpwYXJzZV9yYXc6OmhlODBhMzRjODllM2I0NmEz6gVPPGF1dG9tZXJnZTo6dmFsdWU6OlNjYWxhclZhbHVlIGFzIGNvcmU6OmNsb25lOjpDbG9uZT46OmNsb25lOjpoNWNkODA5MWUwNDQ1ZTVhYusFTmFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6SW50b0l0ZXI8SyxWLEE+OjpkeWluZ19uZXh0OjpoNDc3ZWE3NjI3OTkxM2Q5NuwFUjxhdXRvbWVyZ2U6OnZhbHVlOjpTY2FsYXJWYWx1ZSBhcyBjb3JlOjpjbG9uZTo6Q2xvbmU+OjpjbG9uZTo6aDVjZDgwOTFlMDQ0NWU1YWJbMV3tBU5hbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6OkludG9JdGVyPEssVixBPjo6ZHlpbmdfbmV4dDo6aDZhZDlmYWJiYWY0NGYwM2TuBU5hbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6OkludG9JdGVyPEssVixBPjo6ZHlpbmdfbmV4dDo6aGRiNDRjMTM4OGNiOWJkNjjvBU5hbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6OkludG9JdGVyPEssVixBPjo6ZHlpbmdfbmV4dDo6aGViMmVlNTMxOGJhNmQyODjwBT1hdXRvbWVyZ2U6OmF1dG9jb21taXQ6OkF1dG9Db21taXQ6OmZvcmtfYXQ6Omg3YTlmMzQxNTc2NGMyMWRm8QU4YXV0b21lcmdlX3dhc206OkF1dG9tZXJnZTo6am9pbl9ibG9jazo6aGZiNmExMGNhNjgwM2Q1OGPyBTphdXRvbWVyZ2U6Om9wX3NldDI6OnR5cGVzOjpwYXJzZV9sZWIxMjg6OmgyZWE4NGM5Y2Y4NjNkNjM38wVKPHNlcmRlX2NvcmU6OmRlOjpVbmV4cGVjdGVkIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aGZhODFkZTY2OWQzMGIxNDH0BThkbG1hbGxvYzo6ZGxtYWxsb2M6OkRsbWFsbG9jPEE+OjpmcmVlOjpoM2NkZDY1YjRhNTY4MTUwMvUFfDxhdXRvbWVyZ2U6Omh5ZHJhdGU6Omxpc3Q6Okxpc3QgYXMgY29yZTo6Y29udmVydDo6RnJvbTxhbGxvYzo6dmVjOjpWZWM8YXV0b21lcmdlOjpoeWRyYXRlOjpWYWx1ZT4+Pjo6ZnJvbTo6aDBkNGYyNGEyNjFmYzhiY2P2BUBoYXNoYnJvd246OnJhdzo6UmF3VGFibGU8VCxBPjo6cmVzZXJ2ZV9yZWhhc2g6Omg1ZTMzZWJhZmM5Y2YwZGRk9wVAaGFzaGJyb3duOjpyYXc6OlJhd1RhYmxlPFQsQT46OnJlc2VydmVfcmVoYXNoOjpoNjE0YzlkZGFkNWZmMDRlOfgFQGhhc2hicm93bjo6cmF3OjpSYXdUYWJsZTxULEE+OjpyZXNlcnZlX3JlaGFzaDo6aGQ4ODdlMjQzNjkzM2FmZDT5BVM8aGV4YW5lOjpjb2x1bW5kYXRhOjpDb2x1bW5EYXRhPEM+IGFzIGNvcmU6OmNsb25lOjpDbG9uZT46OmNsb25lOjpoNmU4YWI2NjEyYTUyMDUxYvoFQGhhc2hicm93bjo6cmF3OjpSYXdUYWJsZTxULEE+OjpyZXNlcnZlX3JlaGFzaDo6aDRkODdhY2I5ZTFmNDc3MzH7BUBoYXNoYnJvd246OnJhdzo6UmF3VGFibGU8VCxBPjo6cmVzZXJ2ZV9yZWhhc2g6OmhlZmQ0YTY0NDA5NmY2Y2E3/AVCY29yZTo6c2xpY2U6OnNvcnQ6OnVuc3RhYmxlOjpoZWFwc29ydDo6aGVhcHNvcnQ6OmhlYmEwOTBjN2QzNGZlYWQ0/QVTPGhleGFuZTo6Y29sdW1uZGF0YTo6Q29sdW1uRGF0YTxDPiBhcyBjb3JlOjpjbG9uZTo6Q2xvbmU+OjpjbG9uZTo6aDBlN2ExYjEwMzYxOTEwYWL+BTtoYXNoYnJvd246Om1hcDo6SGFzaE1hcDxLLFYsUyxBPjo6aW5zZXJ0OjpoODAzNTY1NjZkZDRhMTE5Yv8FQGhhc2hicm93bjo6cmF3OjpSYXdUYWJsZTxULEE+OjpyZXNlcnZlX3JlaGFzaDo6aDg4ZGZkN2U3NDUzNTE5NjSABkBoYXNoYnJvd246OnJhdzo6UmF3VGFibGU8VCxBPjo6cmVzZXJ2ZV9yZWhhc2g6OmhiNzc1NTNlM2EzZTEwOTRhgQZDYXV0b21lcmdlOjpjaGFuZ2VfZ3JhcGg6OkNoYW5nZUdyYXBoOjpnZXRfaGFzaGVzOjpoYmUwYTNhNWNiY2YwNWUyY4IGazxhdXRvbWVyZ2U6Om9wX3NldDI6Om9wOjpTdWNjSW5jQ3Vyc29ycyBhcyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvcj46Om5leHQ6OmhmN2E5Y2IzYWQ1MDZkODI0gwZBaGV4YW5lOjpzbGFiOjp0cmVlOjpUcmVlTm9kZTxULFc+OjpsYXN0X3dlaWdodDo6aGUxYjgxZWMwN2E5NzhjOWaEBl48YXV0b21lcmdlX3dhc206OmludGVyb3A6OmVycm9yOjpCYWRTeW5jTWVzc2FnZSBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmgxZGJlNWJkNGFlZjFkYjA2hQZqPGhleGFuZTo6Y29sdW1uZGF0YTo6Q29sdW1uRGF0YUl0ZXI8Qz4gYXMgY29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+OjpuZXh0OjpoYmRjN2ViNDdhNjlkNjI1ZYYGQWhleGFuZTo6c2xhYjo6dHJlZTo6VHJlZU5vZGU8VCxXPjo6bGFzdF93ZWlnaHQ6OmgwMjMxOWZmYWRkMThjMmY2hwZaYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6QmFsYW5jaW5nQ29udGV4dDxLLFY+OjpidWxrX3N0ZWFsX2xlZnQ6OmgzYmJkZDNmZTI5ZDliZGRhiAZAaGV4YW5lOjpzbGFiOjp3cml0ZXI6OlNsYWJXcml0ZXI8UD46OnB1c2hfbGl0OjpoODBmNjA2ZTlhOTIyOGU4MYkGQGF1dG9tZXJnZTo6bWFya3M6OlJpY2hUZXh0UXVlcnlTdGF0ZTo6cHJvY2Vzczo6aDdmMDRlOGE2MmI4MDY4ZWKKBkBoYXNoYnJvd246OnJhdzo6UmF3VGFibGU8VCxBPjo6cmVzZXJ2ZV9yZWhhc2g6Omg5NTc2ZWI2NGRjZDAyNmE5iwZAY29yZTo6c2xpY2U6OnNvcnQ6OnNoYXJlZDo6cGl2b3Q6Om1lZGlhbjNfcmVjOjpoN2MxZjlmZThmOTA3NWEwY4wGQGhhc2hicm93bjo6cmF3OjpSYXdUYWJsZTxULEE+OjpyZXNlcnZlX3JlaGFzaDo6aGU2NTY4OGFmZmJlMWE4MGKNBjthdXRvbWVyZ2U6Oml0ZXI6Om1hcF9yYW5nZTo6TWFwRGlmZjo6bmV3OjpoNWQ1ODhhOWI0NGUwNDg5Zo4GRHRyYWNpbmdfY29yZTo6Y2FsbHNpdGU6OnJlYnVpbGRfY2FsbHNpdGVfaW50ZXJlc3Q6OmgwZGY5ZWRlOGZjMDBiODk3jwZGPGFsbG9jOjp2ZWM6OlZlYzxULEE+IGFzIGNvcmU6OmNsb25lOjpDbG9uZT46OmNsb25lOjpoOTQ0NjA1NWQ0YzkzYWQ3NpAGRjxhbGxvYzo6dmVjOjpWZWM8VCxBPiBhcyBjb3JlOjpjbG9uZTo6Q2xvbmU+OjpjbG9uZTo6aGFkZGEzN2M5MTVlNmU0MzGRBkBoYXNoYnJvd246OnJhdzo6UmF3VGFibGU8VCxBPjo6cmVzZXJ2ZV9yZWhhc2g6OmgwNDA3YzhlODdiNTQ1MmM4kgY9YXV0b21lcmdlOjppdGVyOjpsaXN0X3JhbmdlOjpMaXN0RGlmZjo6bmV3OjpoYTkwMmQxZTUwMjgzNTFiZpMGR2F1dG9tZXJnZTo6cGF0Y2hlczo6cGF0Y2hfYnVpbGRlcjo6UGF0Y2hCdWlsZGVyOjpwdXQ6Omg1NTI0YjUxZDNlNDUyM2RjlAY8aGV4YW5lOjpzbGFiOjp3cml0ZXI6OlNsYWJXcml0ZXI8UD46OnB1c2g6OmgzNjUwMTUzZWVlOTNiMDkwlQZFY29yZTo6Zm10OjpmbG9hdDo6ZmxvYXRfdG9fZGVjaW1hbF9jb21tb25fc2hvcnRlc3Q6OmgzYmE1NTFjNjU1NzIzMzlllgZMPGNvcmU6Omhhc2g6OnNpcDo6SGFzaGVyPFM+IGFzIGNvcmU6Omhhc2g6Okhhc2hlcj46OndyaXRlOjpoMjA5ZmNiNDZiODMxNmJjMJcGTDxjb3JlOjpoYXNoOjpzaXA6Okhhc2hlcjxTPiBhcyBjb3JlOjpoYXNoOjpIYXNoZXI+Ojp3cml0ZTo6aDVkZjAyODY1ZWFlOGM5ZTKYBkBoZXhhbmU6OnNsYWI6OndyaXRlcjo6U2xhYldyaXRlcjxQPjo6cHVzaF9saXQ6OmgwZjg1NGFiMWZkNWM1ZjMymQZGY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGF1dG9tZXJnZTo6bWFya3M6Ok1hcmtTZXQ+OjpoNDlhYWQ5ODYyMjI1N2IxZZoGRmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhdXRvbWVyZ2U6Om1hcmtzOjpNYXJrU2V0Pjo6aGJkYmU0OGZjNDVkYjQ5ODGbBkJjb3JlOjpmbXQ6OkZvcm1hdHRlcjo6ZGVidWdfdHVwbGVfZmllbGQ0X2ZpbmlzaDo6aGRhZDE4NWQxNzE4ZGZhYTWcBo8BYXV0b21lcmdlX3dhc206OmludGVyb3A6OjxpbXBsIGNvcmU6OmNvbnZlcnQ6OlRyeUZyb208YXV0b21lcmdlX3dhc206OmludGVyb3A6OkpTPiBmb3IgYXV0b21lcmdlOjpzeW5jOjpDaHVua0xpc3Q+Ojp0cnlfZnJvbTo6aDNmYzE0NDY5OTJhMjdiZGWdBjtoYXNoYnJvd246Om1hcDo6SGFzaE1hcDxLLFYsUyxBPjo6aW5zZXJ0OjpoZmUxNGRhNDYxOGY4MjllYZ4GYTxhdXRvbWVyZ2U6OnRyYW5zYWN0aW9uOjppbm5lcjo6VHJhbnNhY3Rpb25Jbm5lciBhcyBjb3JlOjpjbG9uZTo6Q2xvbmU+OjpjbG9uZTo6aDMwZDI2YTljMTEwY2QyOGafBpUBPGF1dG9tZXJnZV93YXNtOjppbnRlcm9wOjpKUyBhcyBjb3JlOjpjb252ZXJ0OjpGcm9tPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6OnNldDo6QlRyZWVTZXQ8YXV0b21lcmdlOjp0eXBlczo6Q2hhbmdlSGFzaD4+Pjo6ZnJvbTo6aGE0MjE1NDZjYTYwZWY0N2agBkBoYXNoYnJvd246OnJhdzo6UmF3VGFibGU8VCxBPjo6cmVzZXJ2ZV9yZWhhc2g6OmgxZjMzOTA0NTcyOGYzZmEwoQZAaGFzaGJyb3duOjpyYXc6OlJhd1RhYmxlPFQsQT46OnJlc2VydmVfcmVoYXNoOjpoNjk2OGE3YzIwOGIxMjQxNaIGQGhhc2hicm93bjo6cmF3OjpSYXdUYWJsZTxULEE+OjpyZXNlcnZlX3JlaGFzaDo6aDc5MDI4YmMwNWYyZTY4ZTWjBkBoYXNoYnJvd246OnJhdzo6UmF3VGFibGU8VCxBPjo6cmVzZXJ2ZV9yZWhhc2g6Omg4YWUwZWQ1N2Y4OWI2ZWFkpAZsPGNvcmU6Oml0ZXI6OmFkYXB0ZXJzOjpHZW5lcmljU2h1bnQ8SSxSPiBhcyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvcj46Om5leHQ6OmhlOTQ3MGYxZjI5NDQ5ZjY5pQZAaGFzaGJyb3duOjpyYXc6OlJhd1RhYmxlPFQsQT46OnJlc2VydmVfcmVoYXNoOjpoOTYzZGI2MmU0NGZhZDkxM6YGNGNvcmU6Oml0ZXI6OmFkYXB0ZXJzOjp0cnlfcHJvY2Vzczo6aDQyYzc4NDI4NTdiMDMzN2KnBvsBYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6SGFuZGxlPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpNdXQsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6SW50ZXJuYWw+LGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6S1Y+OjpzcGxpdDo6aDA5NmQxYWIxYzJkN2M0MTeoBnU8YXV0b21lcmdlOjpvcF9zZXQyOjpvcF9zZXQ6OnZpc2libGU6OlNjYW5WaXNJdGVyIGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6bmV4dDo6aDVlODk1MjA4NzI2ZTg5ZWKpBjtoYXNoYnJvd246Om1hcDo6SGFzaE1hcDxLLFYsUyxBPjo6aW5zZXJ0OjpoZTA2ZTUwZDQ0N2JmODllZqoGTGF1dG9tZXJnZTo6c2VxdWVuY2VfdHJlZTo6U2VxdWVuY2VUcmVlSW50ZXJuYWw8VD46Omluc2VydDo6aGRhNGNkOTgyNzM2NmY5MDmrBkxhdXRvbWVyZ2U6OnNlcXVlbmNlX3RyZWU6OlNlcXVlbmNlVHJlZUludGVybmFsPFQ+OjppbnNlcnQ6OmhjYzQyMWNlZDY1NDAzNzI0rAZYPGhleGFuZTo6cmxlOjpSbGVTdGF0ZTxQPiBhcyBoZXhhbmU6OmVuY29kZXI6OkVuY29kZXJTdGF0ZTxQPj46OmZsdXNoOjpoNDA1N2MwNzYwNTgyZjYyYa0GRmF1dG9tZXJnZTo6b3Bfc2V0Mjo6dHlwZXM6OlNjYWxhclZhbHVlOjppbnRvX2xlZ2FjeTo6aDQwYjE2N2M0NGIwN2FlYTGuBkBhdXRvbWVyZ2U6Oml0ZXI6OnNwYW5zOjpTcGFuc0RpZmY6OnNoaWZ0X25leHQ6Omg2NmRhOTgwYTBiZjA1MjhirwZrPGF1dG9tZXJnZTo6aXRlcjo6bGlzdF9yYW5nZTo6TGlzdEl0ZXIgYXMgYXV0b21lcmdlOjppdGVyOjp0b29sczo6U2hpZnRhYmxlPjo6c2hpZnRfbmV4dDo6aDg1OTVjOGY4N2M5NmIyNmKwBjA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDljZGVhMTNmNzlhN2VjODGxBkxhdXRvbWVyZ2U6OnNlcXVlbmNlX3RyZWU6OlNlcXVlbmNlVHJlZUludGVybmFsPFQ+OjppbnNlcnQ6OmhlMTg0OThiMGNlYTY4NmJhsgZbYXV0b21lcmdlOjpzZXF1ZW5jZV90cmVlOjpTZXF1ZW5jZVRyZWVOb2RlPFQ+OjppbnNlcnRfaW50b19ub25fZnVsbF9ub2RlOjpoNDkzMzk4MDM4OTJmNWRjNbMGPGhleGFuZTo6c2xhYjo6d3JpdGVyOjpTbGFiV3JpdGVyPFA+OjpwdXNoOjpoNzg5NTNkZjcwNmZhNjEyNbQGO2hleGFuZTo6c2xhYjo6dHJlZTo6VHJlZU5vZGU8VCxXPjo6bWVyZ2U6OmgwYWEzZTg0OWE0YzQ1NTUztQYsY29yZTo6Zm10OjpGb3JtYXR0ZXI6OnBhZDo6aDdmMTU4ZDEzNTY4MDkzNDS2BlM8aGV4YW5lOjpzbGFiOjp0cmVlOjpUcmVlTm9kZTxULFc+IGFzIGNvcmU6OmNsb25lOjpDbG9uZT46OmNsb25lOjpoMmE1ODc0MjIwMjYyYmQzN7cGWDxhdXRvbWVyZ2U6Om9wX3NldDI6OnR5cGVzOjpTY2FsYXJWYWx1ZSBhcyBjb3JlOjpjbG9uZTo6Q2xvbmU+OjpjbG9uZTo6aDI1NGFjYjE1MmZmYmZiNGK4Bmw8Y29yZTo6aXRlcjo6YWRhcHRlcnM6OmNvcGllZDo6Q29waWVkPEk+IGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6bmV4dDo6aGFhNjZkY2ZkMWQ2ZmNjZGa5BjdoZXhhbmU6OmN1cnNvcjo6Q29sdW1uQ3Vyc29yOjpzcGxpY2U6Omg0MDcyZTg3NTEzZmYwMDAxugY3aGV4YW5lOjpjdXJzb3I6OkNvbHVtbkN1cnNvcjo6c3BsaWNlOjpoMTk1NTMzNDRmZmVlMzhjZbsGN2hleGFuZTo6Y3Vyc29yOjpDb2x1bW5DdXJzb3I6OnNwbGljZTo6aDIyM2FmMzMwMDZmNWQwNTS8BjdoZXhhbmU6OmN1cnNvcjo6Q29sdW1uQ3Vyc29yOjpzcGxpY2U6OmgzNWNiNzU0OGY4ZGI5Y2M4vQY3aGV4YW5lOjpjdXJzb3I6OkNvbHVtbkN1cnNvcjo6c3BsaWNlOjpoNTA2NDdiNzFhMmZlNjA0OL4GN2hleGFuZTo6Y3Vyc29yOjpDb2x1bW5DdXJzb3I6OnNwbGljZTo6aDVhYjhmMzZhODYxMTBiODG/BjdoZXhhbmU6OmN1cnNvcjo6Q29sdW1uQ3Vyc29yOjpzcGxpY2U6Omg3YTg5NTc4Y2UwZDJjMDhiwAZTPGhleGFuZTo6c2xhYjo6dHJlZTo6VHJlZU5vZGU8VCxXPiBhcyBjb3JlOjpjbG9uZTo6Q2xvbmU+OjpjbG9uZTo6aDNlYjVhYWQ0ZDMwMjczZGHBBls8YXV0b21lcmdlOjpvcF9zZXQyOjp0eXBlczo6U2NhbGFyVmFsdWUgYXMgY29yZTo6Y2xvbmU6OkNsb25lPjo6Y2xvbmU6OmgyNTRhY2IxNTJmZmJmYjRiWzFdwgZsPGNvcmU6Oml0ZXI6OmFkYXB0ZXJzOjpHZW5lcmljU2h1bnQ8SSxSPiBhcyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvcj46Om5leHQ6OmhmM2JmMjMyNzczMTMxYzdkwwY+YXV0b21lcmdlOjppdGVyOjpzcGFuczo6U3BhblN0YXRlOjpwdXNoX3N0cjo6aDJlMzQwYzhjZWFiOWM1OTTEBkJzZXJkZV9qc29uOjpkZTo6RGVzZXJpYWxpemVyPFI+OjpwYXJzZV9leHBvbmVudDo6aDA0NTRiOTkxYjBkZGUzNGLFBmI8aGV4YW5lOjpjdXJzb3I6OkN1cnNvckl0ZXI8Qz4gYXMgY29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+OjpuZXh0OjpoZDM2NjEwMjQ3YWZlMTY4OcYGPGhleGFuZTo6c2xhYjo6d3JpdGVyOjpTbGFiV3JpdGVyPFA+OjpwdXNoOjpoZGU1Y2E1MzRjMThjOTUyMscGnwFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bWFwOjpCVHJlZU1hcDxhdXRvbWVyZ2U6OnR5cGVzOjpPYmpJZCwoYXV0b21lcmdlOjp0eXBlczo6UHJvcCxhdXRvbWVyZ2U6OnR5cGVzOjpPYmpJZCk+Pjo6aDcxMzQ3NTM0MDdmYTE4YTTIBp8BY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6QlRyZWVNYXA8YXV0b21lcmdlOjp0eXBlczo6T2JqSWQsKGF1dG9tZXJnZTo6dHlwZXM6OlByb3AsYXV0b21lcmdlOjp0eXBlczo6T2JqSWQpPj46Omg5YTBkNGE4M2QyNTg3OWFiyQY3aGV4YW5lOjpjdXJzb3I6OkNvbHVtbkN1cnNvcjo6c3BsaWNlOjpoMDdiMGM3Y2E4ZWZmNTBhMMoGRWF1dG9tZXJnZTo6b3Bfc2V0Mjo6dHlwZXM6OlNjYWxhclZhbHVlOjppbnRvX293bmVkOjpoNDgxMmRkNDgyMDE4NDJlZssGO2hhc2hicm93bjo6bWFwOjpIYXNoTWFwPEssVixTLEE+OjpyZW1vdmU6Omg5MzQzNmY3M2ZmMTMzZGRjzAZhPGNvcmU6Om1hcmtlcjo6UGhhbnRvbURhdGE8VD4gYXMgc2VyZGVfY29yZTo6ZGU6OkRlc2VyaWFsaXplU2VlZD46OmRlc2VyaWFsaXplOjpoZmY0NzMwOWI3MGFhYmQyOc0GTmF1dG9tZXJnZTo6Y29sdW1uYXI6OmVuY29kaW5nOjpybGU6OlJsZUVuY29kZXI8UyxUPjo6YXBwZW5kOjpoNDdkMjEwOWEyM2NiZDgzYc4GUGF1dG9tZXJnZTo6b3Bfc2V0Mjo6b3Bfc2V0OjpvcF9pdGVyOjpPcElkSXRlcjo6bWF5YmVfdHJ5X25leHQ6OmhlYWMxYzIzOWRhMDliOWE3zwY+c2VyZGVfanNvbjo6cmVhZDo6U2xpY2VSZWFkOjpza2lwX3RvX2VzY2FwZTo6aDRiY2QwNGY3OGMzYTVhYWXQBmg8Y29yZTo6aXRlcjo6YWRhcHRlcnM6Om1hcDo6TWFwPEksRj4gYXMgY29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+OjpuZXh0OjpoODQ2NjUyZDFjMDY2NjlmZtEGTGF1dG9tZXJnZTo6dHJhbnNhY3Rpb246OmlubmVyOjpUcmFuc2FjdGlvbklubmVyOjpyb2xsYmFjazo6aGJlMGIzYmJjOWViZDEzMDDSBjhtaW5pel9veGlkZTo6aW5mbGF0ZTo6c3RyZWFtOjppbmZsYXRlOjpoZjAwOWZiNjQ5MjUxN2IyYtMGNGF1dG9tZXJnZV93YXNtOjp3YXNtX3JlbGVhc2VfaW5mbzo6aGI4Y2ZmZDk2MjQ0ZjI2OGHUBnI8Y29yZTo6aXRlcjo6YWRhcHRlcnM6OmZsYXR0ZW46OkZsYXRNYXA8SSxVLEY+IGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6bmV4dDo6aDBlOTczOTdhNzY5OGEzMmPVBooBPGF1dG9tZXJnZTo6b3Bfc2V0Mjo6b3Bfc2V0OjptYXJrX2luZGV4OjpNYXJrSW5kZXhTcGFubmVyIGFzIGhleGFuZTo6c2xhYjo6dHJlZTo6U3BhbldlaWdodDxoZXhhbmU6OnNsYWI6OlNsYWI+Pjo6YWxsb2M6OmhjZTVlYzk4Y2JjOTFjZDM41gZPYXV0b21lcmdlOjp0cmFuc2FjdGlvbjo6aW5uZXI6OlRyYW5zYWN0aW9uSW5uZXI6OnNwbGljZV90ZXh0OjpoYzgwODAxZTk3ZWUzMWFhONcGPmF1dG9tZXJnZTo6bWFya3M6Ok1hcmtTZXQ6OmZyb21fcXVlcnlfc3RhdGU6OmhlZjMyM2RjNDVkMDNhOTRm2AZUYXV0b21lcmdlOjpjb2x1bW5hcjo6ZW5jb2Rpbmc6OnJsZTo6UmxlRW5jb2RlcjxTLFQ+OjphcHBlbmRfdmFsdWU6OmgxNjBlNGM4MDVmZGY3MmMy2QZUYXV0b21lcmdlOjpjb2x1bW5hcjo6ZW5jb2Rpbmc6OnJsZTo6UmxlRW5jb2RlcjxTLFQ+OjphcHBlbmRfdmFsdWU6Omg1N2M2NjhmYTA1MmRiMzRl2gYmc21vbF9zdHI6OlJlcHI6Om5ldzo6aDgwN2RjZTFlZjk3MTMwNjnbBlg8aGV4YW5lOjpybGU6OlJsZVN0YXRlPFA+IGFzIGhleGFuZTo6ZW5jb2Rlcjo6RW5jb2RlclN0YXRlPFA+Pjo6Zmx1c2g6OmgzZDYwNTY5NzViNGYyOTNl3AY7aGFzaGJyb3duOjptYXA6Okhhc2hNYXA8SyxWLFMsQT46Omluc2VydDo6aDlkMzNhYzU5ZjQ4MTBhM2bdBk5hdXRvbWVyZ2U6OmNvbHVtbmFyOjplbmNvZGluZzo6cmxlOjpSbGVFbmNvZGVyPFMsVD46OmFwcGVuZDo6aDk4N2I1YzA3MzUxNzk2MGLeBmg8YXV0b21lcmdlX3dhc206OmludGVyb3A6OlN1YlZhbEl0ZXIgYXMgY29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+OjpuZXh0OjpoYWYwNWY3ZjRiMDFkMDM0Y98GbjxoZXhhbmU6OnNsYWI6OnRyZWU6OlNwYW5UcmVlRm5JdGVyPFQsVyxGPiBhcyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvcj46Om5leHQ6OmgxNGUyYjljZGFiNTc4N2Nl4AZLY29yZTo6aXRlcjo6YWRhcHRlcnM6OmNvcGllZDo6Y29weV90cnlfZm9sZDo6e3tjbG9zdXJlfX06Omg2NDQ5OThmYzMzZTcyZWM24QZAaGV4YW5lOjpzbGFiOjp3cml0ZXI6OlNsYWJXcml0ZXI8UD46OnB1c2hfbGl0OjpoYTkzZDc5YjA1NWJkYjIyZOIGZjxhdXRvbWVyZ2U6OnRleHRfdmFsdWU6OkNvZGVQb2ludCBhcyBhdXRvbWVyZ2U6OnRleHRfdmFsdWU6OlRleHRWYWx1ZT46Om1ha2Vfc3RyaW5nOjpoOWE0MWNiZDYxY2RjMmVlZuMGY2F1dG9tZXJnZTo6c3RvcmFnZTo6Y2hhbmdlOjpjaGFuZ2VfYWN0b3JzOjpDaGFuZ2VBY3RvcnM8QSxJLE8sQz46OnRyYW5zbGF0ZV9vcGlkOjpoYmQ2ZDUyZWNiMzBlNTA4M+QGPGNvcmU6OnNsaWNlOjo8aW1wbCBbVF0+OjpiaW5hcnlfc2VhcmNoX2J5OjpoYzc3ODY3NWJiMDUyN2IwOOUGOmF1dG9tZXJnZTo6b3Bfc2V0Mjo6b3Bfc2V0OjpPcFNldDo6aXRlcjo6aDQ3YjkxZDNiMWVkMTIzYWbmBkphdXRvbWVyZ2U6OnN0b3JhZ2U6OnBhcnNlOjpsZW5ndGhfcHJlZml4ZWQ6Ont7Y2xvc3VyZX19OjpoM2RmNGZjNjhiMTI5Zjc3ZOcGQmhleGFuZTo6Y29sdW1uZGF0YTo6Q29sdW1uRGF0YUl0ZXI8Qz46Om5leHRfcnVuOjpoYjY1NzNiYzRhZGVlODEyNugGPGhleGFuZTo6c2xhYjo6d3JpdGVyOjpTbGFiV3JpdGVyPFA+OjpwdXNoOjpoMmM1YjliMTU5YzM5YmFiMukGPGhleGFuZTo6c2xhYjo6d3JpdGVyOjpTbGFiV3JpdGVyPFA+OjpwdXNoOjpoODgxNzFhZDBjZWIzODYwYuoGN2F1dG9tZXJnZTo6YXV0b21lcmdlOjpBdXRvbWVyZ2U6Om5ldzo6aDNmMDc1MTBhNWI1YWUzNDfrBkVhdXRvbWVyZ2U6OmF1dG9tZXJnZTo6QXV0b21lcmdlOjpuZXdfd2l0aF9lbmNvZGluZzo6aDExZTQzMGNjMWZmZTVhNjjsBng8YXV0b21lcmdlOjpjb2x1bW5hcjo6Y29sdW1uX3JhbmdlOjp2YWx1ZTo6VmFsdWVJdGVyIGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6bmV4dDo6aDE1NGUzZDEwNTdmMjI2MTDtBhdhdXRvbWVyZ2Vfc2F2ZUFuZFZlcmlmee4GQWhleGFuZTo6Y29sdW1uZGF0YTo6Q29sdW1uRGF0YUl0ZXI8Qz46OnBvcF9ydW46OmhmNjQwMWQ1MGEzYWVhNWJm7wZMYXV0b21lcmdlOjpzZXF1ZW5jZV90cmVlOjpTZXF1ZW5jZVRyZWVJbnRlcm5hbDxUPjo6aW5zZXJ0OjpoNDZkZTA5NWEwNjIwNWRmM/AGbDxjb3JlOjppdGVyOjphZGFwdGVyczo6Y29waWVkOjpDb3BpZWQ8ST4gYXMgY29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+OjpuZXh0OjpoNmYxZDdiNTkwMDdmMzVlNfEGN2NvcmU6OnNsaWNlOjpzb3J0Ojp1bnN0YWJsZTo6aXBuc29ydDo6aDg2ZTc2MGUxYzViYTg4OTHyBkBoZXhhbmU6OnNsYWI6OndyaXRlcjo6U2xhYldyaXRlcjxQPjo6cHVzaF9saXQ6Omg0MmY5ZDg4MjRlNWNhNDlm8wY9bWluaXpfb3hpZGU6OmluZmxhdGU6OnN0cmVhbTo6aW5mbGF0ZV9sb29wOjpoOTNjNDExNzZiMGQ2ODE2Y/QGMmF1dG9tZXJnZV93YXNtOjpBdXRvbWVyZ2U6OmZvcms6Omg4ZGIxYWNkYWZhMmIwZjVi9QY6aGV4YW5lOjpzbGFiOjp0cmVlOjpTcGFuVHJlZTxULFc+Ojpsb2FkOjpoZjEwZjU4ZDY0MjMxNzc2NvYGJ2xlYjEyODo6cmVhZDo6c2lnbmVkOjpoMTIyYWI2N2JhMWU0MDkwN/cGWDxoZXhhbmU6OnJsZTo6UmxlU3RhdGU8UD4gYXMgaGV4YW5lOjplbmNvZGVyOjpFbmNvZGVyU3RhdGU8UD4+OjpmbHVzaDo6aDcyMjVmYWUyNWUzNjgwMmH4BjlhbGxvYzo6c3RyaW5nOjpTdHJpbmc6OmZyb21fdXRmOF9sb3NzeTo6aDRhMjc4ZDkwNWEwMTJiZTX5BkxhdXRvbWVyZ2U6OnNlcXVlbmNlX3RyZWU6OlNlcXVlbmNlVHJlZUludGVybmFsPFQ+OjppbnNlcnQ6OmhjNDU5Mjk2Y2EwZDc1Njc0+gY0Y29yZTo6aGFzaDo6QnVpbGRIYXNoZXI6Omhhc2hfb25lOjpoODU2NThkZDlkNmU5ZGUyNPsGWmFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkJhbGFuY2luZ0NvbnRleHQ8SyxWPjo6YnVsa19zdGVhbF9sZWZ0OjpoMzk0OWNlNzA0ZjgyMjNkNvwGWmFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkJhbGFuY2luZ0NvbnRleHQ8SyxWPjo6YnVsa19zdGVhbF9sZWZ0OjpoZjgyMmE3YTc2M2ZjNjNiN/0GTWF1dG9tZXJnZTo6cGF0Y2hlczo6cGF0Y2hfYnVpbGRlcjo6UGF0Y2hCdWlsZGVyOjppbmNyZW1lbnQ6Omg4YmVhN2JjOTdjYTJhODNk/gZGYXV0b21lcmdlX3dhc206OkF1dG9tZXJnZTo6YXBwbHlfYW5kX3JldHVybl9wYXRjaGVzOjpoYzZjMjI2ZmE0ZjM3ZDUxMP8G+wFhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpIYW5kbGU8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6Ok11dCxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpJbnRlcm5hbD4sYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpLVj46OnNwbGl0OjpoODIzM2MyY2ZjNjg3NjA3MIAHO2hhc2hicm93bjo6bWFwOjpIYXNoTWFwPEssVixTLEE+OjppbnNlcnQ6OmhkM2VhMjY0OTliMGVhZjk3gQdYYXV0b21lcmdlOjpvcF9zZXQyOjp0eXBlczo6PGltcGwgYXV0b21lcmdlOjp0eXBlczo6T3BUeXBlPjo6ZGVjb21wb3NlOjpoYmFmM2ZiNmQyZDYwMTIzNIIHQXNlcmRlX2pzb246OmRlOjpEZXNlcmlhbGl6ZXI8Uj46OnBhcnNlX2RlY2ltYWw6OmhiNmVkOTBhZDVhYWViY2I4gwdlPGF1dG9tZXJnZTo6dGV4dF92YWx1ZTo6R3JhcGhlbWUgYXMgYXV0b21lcmdlOjp0ZXh0X3ZhbHVlOjpUZXh0VmFsdWU+OjptYWtlX3N0cmluZzo6aGI4Yzk5MzY0NjBkOGJlZGWEBzo8c3RyIGFzIGhleGFuZTo6cGFjazo6UGFja2FibGU+Ojp1bnBhY2s6Omg3NmNmODIxNjI3OTViMDE4hQdTPGF1dG9tZXJnZTo6b3Bfc2V0Mjo6b3A6Ok9wQnVpbGRlciBhcyBjb3JlOjpjbG9uZTo6Q2xvbmU+OjpjbG9uZTo6aDVhMmVhYjYwZDEzNTY4YmGGB2s8c2VyZGVfanNvbjo6ZGU6Ok1hcEFjY2VzczxSPiBhcyBzZXJkZV9jb3JlOjpkZTo6TWFwQWNjZXNzPjo6bmV4dF9rZXlfc2VlZDo6aGFzX25leHRfa2V5OjpoYWM1OGNjZDcwZjQyMTI3NocHS2F1dG9tZXJnZTo6b3Bfc2V0Mjo6b3Bfc2V0OjpvcF9pdGVyOjpWYWx1ZUl0ZXI6OnRyeV9uZXh0OjpoNDkzMWQxM2I4NmY5ZmRlNIgHaDxhdXRvbWVyZ2U6Oml0ZXI6OnRvb2xzOjpEaWZmSXRlcjxJPiBhcyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvcj46Om5leHQ6Omg0ZmE1OTEyOTZiMjA0ZTA2iQdwPGFsbG9jOjp2ZWM6OlZlYzxUPiBhcyBhbGxvYzo6dmVjOjpzcGVjX2Zyb21faXRlcl9uZXN0ZWQ6OlNwZWNGcm9tSXRlck5lc3RlZDxULEk+Pjo6ZnJvbV9pdGVyOjpoYWIyZGYyM2RiNzZhZmQ1N4oHQGNvcmU6OnNsaWNlOjpzb3J0OjpzaGFyZWQ6OnBpdm90OjptZWRpYW4zX3JlYzo6aDA4NjYwMmUxMzMwY2NjMTeLB0Bjb3JlOjpzbGljZTo6c29ydDo6c2hhcmVkOjpwaXZvdDo6bWVkaWFuM19yZWM6OmhlODQ5MTZmY2RkNDA3MzNmjAdaYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6QmFsYW5jaW5nQ29udGV4dDxLLFY+OjpidWxrX3N0ZWFsX2xlZnQ6OmgzOWYzMWNkNTQwNDg5N2U4jQc8Y29yZTo6Zm10OjpGb3JtYXR0ZXI6OnBhZF9mb3JtYXR0ZWRfcGFydHM6OmhhYTk4NWM4NjYwNjZiNjI0jgc6Y29yZTo6c3RyOjppdGVyOjpTcGxpdEludGVybmFsPFA+OjpuZXh0OjpoMTgyZTAwMmFjNDA0NzZhOI8HPGhleGFuZTo6c2xhYjo6d3JpdGVyOjpTbGFiV3JpdGVyPFA+OjpwdXNoOjpoMDU5NWQ0YmI1NTk2YTJkMZAHQXNlcmRlX2pzb246OnJlYWQ6OlNsaWNlUmVhZDo6cG9zaXRpb25fb2ZfaW5kZXg6Omg2YTIwMTg1ZTliZWQzM2VlkQdIPGFsbG9jOjp2ZWM6OlZlYzxULEE+IGFzIGNvcmU6Om9wczo6ZHJvcDo6RHJvcD46OmRyb3A6Omg1MDkzMDlkMmVjZmE1YTlikgdzY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6OnNldDo6QlRyZWVTZXQ8YXV0b21lcmdlOjp0eXBlczo6Q2hhbmdlSGFzaD4+OjpoY2IyZTc2OGMxMjdlMGY0OJMHN3NlcmRlX3dhc21fYmluZGdlbjo6c3RhdGljX3N0cl90b19qczo6aGZiM2M3YmQxYmQ3ZGE0NmKUB0NhdXRvbWVyZ2U6Om9wX3NldDI6OnR5cGVzOjpTY2FsYXJWYWx1ZTo6dG9fb3duZWQ6Omg4NDlmYmQ1ZjhhNTc3YmFllQc8aGV4YW5lOjpzbGFiOjp3cml0ZXI6OlNsYWJXcml0ZXI8UD46OnB1c2g6Omg4NjIyZTE3ZjMzM2Y0N2M3lgdIPGFsbG9jOjp2ZWM6OlZlYzxULEE+IGFzIGNvcmU6Om9wczo6ZHJvcDo6RHJvcD46OmRyb3A6OmgxMjM1MDI3NDNjYjM3MGZklwehAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6OkJUcmVlTWFwPGF1dG9tZXJnZTo6dHlwZXM6OkNoYW5nZUhhc2gsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6c2V0X3ZhbDo6U2V0VmFsWlNUPj46OmgxOThjMWZlMTAzNjYwNTg1mAc8aGV4YW5lOjpzbGFiOjp3cml0ZXI6OlNsYWJXcml0ZXI8UD46OnB1c2g6Omg3MTA5N2U5OTkxNDcxNDM0mQf7AWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkhhbmRsZTxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TXV0LEssVixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkludGVybmFsPixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OktWPjo6c3BsaXQ6OmhhY2E5Y2FlMDU5YTYwYTUxmgdBaGV4YW5lOjpjb2x1bW5kYXRhOjpDb2x1bW5EYXRhSXRlcjxDPjo6cG9wX3J1bjo6aDU3YmJkMWEyZDIxNWRmNDSbB2I8YXV0b21lcmdlOjptYXJrczo6TWFya1NldEl0ZXIgYXMgY29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+OjpuZXh0OjpoNWViZGQ4NDg5MzA3ZDgzZpwH+wFhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpIYW5kbGU8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6Ok11dCxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpJbnRlcm5hbD4sYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpLVj46OnNwbGl0OjpoMzA3ZTZiMzgyYzZiNzc3Mp0H+wFhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpIYW5kbGU8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6Ok11dCxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpJbnRlcm5hbD4sYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpLVj46OnNwbGl0OjpoMTNlNzQyYzQ2YjMxN2E0Yp4HhAFhdXRvbWVyZ2U6OmNvbHVtbmFyOjplbmNvZGluZzo6ZGVjb2RhYmxlX2ltcGxzOjo8aW1wbCBhdXRvbWVyZ2U6OmNvbHVtbmFyOjplbmNvZGluZzo6RGVjb2RhYmxlIGZvciB1c2l6ZT46OmRlY29kZTo6aDQwNWQxZTRjNjRlMzRhNGafB1JhdXRvbWVyZ2U6Om9wX3NldDI6OmNoYW5nZTo6Y29sbGVjdG9yOjpDaGFuZ2VDb2xsZWN0b3I6OnRyeV9uZXc6OmgzYjg5NjUxZjJlYTAwYTcxoAc4bWluaXpfb3hpZGU6OmRlZmxhdGU6OnN0cmVhbTo6ZGVmbGF0ZTo6aDllZWI5OTI3MmU5MGZkZDWhBztoZXhhbmU6OnNsYWI6OnRyZWU6OlRyZWVOb2RlPFQsVz46Om1lcmdlOjpoMjRmNzhjYTU3NzAxNzlmMqIHNW9uY2VfY2VsbDo6aW1wOjppbml0aWFsaXplX29yX3dhaXQ6OmgxZWViNzkzNTk0NGE0Y2VhowcjY29yZTo6Zm10Ojp3cml0ZTo6aDM5ZmVmMGM1NTQ2NTFmNzKkB1M8Y29yZTo6Zm10OjpidWlsZGVyczo6UGFkQWRhcHRlciBhcyBjb3JlOjpmbXQ6OldyaXRlPjo6d3JpdGVfc3RyOjpoZGEwMTI2NTRhYTBiMzJiNaUHQ2F1dG9tZXJnZTo6b3Bfc2V0Mjo6b3A6Ok9wQnVpbGRlcjo6aHlkcmF0ZV92YWx1ZTo6aGVmYzdiMzFiYWQ5ODE3N2KmB1I8aGFzaGJyb3duOjptYXA6Okhhc2hNYXA8SyxWLFMsQT4gYXMgY29yZTo6Y2xvbmU6OkNsb25lPjo6Y2xvbmU6OmhhNWY5YjUzMGIyNWQyZDk5pwdAaGV4YW5lOjpzbGFiOjp3cml0ZXI6OlNsYWJXcml0ZXI8UD46OnB1c2hfbGl0OjpoNmFiYjdiMWVjMGZmM2ZmZqgHUjxoYXNoYnJvd246Om1hcDo6SGFzaE1hcDxLLFYsUyxBPiBhcyBjb3JlOjpjbG9uZTo6Q2xvbmU+OjpjbG9uZTo6aGQwMTZjNmY0OTI0MGYxNmKpB0I8YWxsb2M6OnZlYzo6VmVjPHU4PiBhcyBoZXg6OkZyb21IZXg+Ojpmcm9tX2hleDo6aGM3YjliMmUxYTg4NGJhNDGqB0FoZXhhbmU6OmNvbHVtbmRhdGE6OkNvbHVtbkRhdGFJdGVyPEM+Ojpwb3BfcnVuOjpoMGE5NzM5ZjdlZjVlYmRlYasHPmhleGFuZTo6Y3Vyc29yOjpSdW5JdGVyPEM+OjpzdWJfYWR2YW5jZV9hY2M6OmgyOTRmMzc5NzY0Njc0YmU2rAdbPGF1dG9tZXJnZV93YXNtOjppbnRlcm9wOjplcnJvcjo6SW1wb3J0VmFsdWUgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoZTNhZjA5NjlhNTg5YjMwYa0HTWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhdXRvbWVyZ2U6OmVycm9yOjpBdXRvbWVyZ2VFcnJvcj46Omg0MWFmM2Y0NjVjMTY4ZGRlrgdpY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGF1dG9tZXJnZTo6c3RvcmFnZTo6Y2hhbmdlOjpjaGFuZ2Vfb3BfY29sdW1uczo6Q2hhbmdlT3BzSXRlcj46OmhmYjQyMGY0MzA1ZWY1NTUwrwdAaGV4YW5lOjpzbGFiOjp3cml0ZXI6OlNsYWJXcml0ZXI8UD46OnB1c2hfbGl0OjpoMzU2ZDUyMGFiNWFlNjEyNbAHWDxoZXhhbmU6OnJsZTo6UmxlU3RhdGU8UD4gYXMgaGV4YW5lOjplbmNvZGVyOjpFbmNvZGVyU3RhdGU8UD4+OjpmbHVzaDo6aDE5MTI4YTljNDA5MzlhZTaxB0ZzdGQ6OmNvbGxlY3Rpb25zOjpoYXNoOjptYXA6OkVudHJ5PEssVj46Om9yX2RlZmF1bHQ6Omg2MTBiNTRmYjdhMzc2YTg4sgdGc3RkOjpjb2xsZWN0aW9uczo6aGFzaDo6bWFwOjpFbnRyeTxLLFY+Ojpvcl9kZWZhdWx0OjpoNTE0YmRmZDdmYmM0MGI4Y7MHQmNvcmU6OnNsaWNlOjpzb3J0Ojp1bnN0YWJsZTo6aGVhcHNvcnQ6OmhlYXBzb3J0OjpoOWFhYjVjOWExNTU2Y2M1ZbQHMXNlcmRlX2pzb246OnJlYWQ6OnBhcnNlX2VzY2FwZTo6aGM0Mzg3ZTkzZjllMjUyYWS1B1M8aGV4YW5lOjpzbGFiOjp0cmVlOjpUcmVlTm9kZTxULFc+IGFzIGNvcmU6OmNsb25lOjpDbG9uZT46OmNsb25lOjpoZWY4NDY3OWU0ZmJhM2Q4Y7YHUzxoZXhhbmU6OnNsYWI6OnRyZWU6OlRyZWVOb2RlPFQsVz4gYXMgY29yZTo6Y2xvbmU6OkNsb25lPjo6Y2xvbmU6Omg3MWFmMmE0YWViYjc4MDE5twdjPGhleGFuZTo6cmxlOjpSbGVDdXJzb3I8XyxQLFg+IGFzIGhleGFuZTo6Y3Vyc29yOjpDb2x1bW5DdXJzb3I+Ojpjb21wdXRlX21pbl9tYXg6OmhiZGQ1YjQ3ZGJlNmUyY2RjuAdjPGhleGFuZTo6cmxlOjpSbGVDdXJzb3I8XyxQLFg+IGFzIGhleGFuZTo6Y3Vyc29yOjpDb2x1bW5DdXJzb3I+Ojpjb21wdXRlX21pbl9tYXg6OmhmZWI0MjAwMjE2MDk4MjJluQdHYXV0b21lcmdlOjphdXRvY29tbWl0OjpBdXRvQ29tbWl0Ojpsb2FkX3dpdGhfb3B0aW9uczo6aDczZTFjMzhiODJhNjcyMjK6B1VhdXRvbWVyZ2U6OmNvbHVtbmFyOjplbmNvZGluZzo6cmxlOjpSbGVFbmNvZGVyPFMsVD46OmZsdXNoX2xpdF9ydW46Omg1ZDFhNDQxYTZkZmFjOWNmuwc/YXV0b21lcmdlOjppdGVyOjpkb2M6OkRpZmZJdGVyOjpwcm9jZXNzX2l0ZW06OmhjMWJhNGM4ZDQ2YTQxNzBivAdoPGF1dG9tZXJnZTo6b3Bfc2V0Mjo6b3A6OlN1Y2NDdXJzb3JzIGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6bmV4dDo6aDRjMTQwNTQ2OTJiNWZjNji9B1g8aGV4YW5lOjpybGU6OlJsZVN0YXRlPFA+IGFzIGhleGFuZTo6ZW5jb2Rlcjo6RW5jb2RlclN0YXRlPFA+Pjo6Zmx1c2g6OmgxYTcxMDQzMTU1ZTAwNWIzvgdbYXV0b21lcmdlOjpzZXF1ZW5jZV90cmVlOjpTZXF1ZW5jZVRyZWVOb2RlPFQ+OjppbnNlcnRfaW50b19ub25fZnVsbF9ub2RlOjpoNTMyN2Q3Y2NhNjllNjdiOL8HPmNvcmU6OmZtdDo6Rm9ybWF0dGVyOjp3cml0ZV9mb3JtYXR0ZWRfcGFydHM6OmhjMjkwZTY5ZGQ2OTA3ZmQywAdoPGNvcmU6Oml0ZXI6OmFkYXB0ZXJzOjp6aXA6OlppcDxBLEI+IGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6bmV4dDo6aDEwMDE0YjRmZGFlM2I5YTLBB2g8Y29yZTo6aXRlcjo6YWRhcHRlcnM6OnppcDo6WmlwPEEsQj4gYXMgY29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+OjpuZXh0OjpoNmYyNTBjZWY2MGEwYzI3MsIHVTxoZXhhbmU6OnNsYWI6OndyaXRlcjo6V3JpdGVBY3Rpb248UD4gYXMgY29yZTo6Y21wOjpQYXJ0aWFsRXE+OjplcTo6aGUxOWRiZTQ4ZWVkODBmMmPDB1VhdXRvbWVyZ2U6OmNvbHVtbmFyOjplbmNvZGluZzo6cmxlOjpSbGVFbmNvZGVyPFMsVD46OmZsdXNoX2xpdF9ydW46OmgyZDlkZDY3NWNjZmI2MDUyxAdsPGNvcmU6Oml0ZXI6OmFkYXB0ZXJzOjpHZW5lcmljU2h1bnQ8SSxSPiBhcyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvcj46Om5leHQ6OmgwZTY1NWY0NDZiYjdiZmNhxQdhPGNvcmU6Om1hcmtlcjo6UGhhbnRvbURhdGE8VD4gYXMgc2VyZGVfY29yZTo6ZGU6OkRlc2VyaWFsaXplU2VlZD46OmRlc2VyaWFsaXplOjpoMjA4ZDU2MzE3NzM5OWQxZMYHYTxjb3JlOjptYXJrZXI6OlBoYW50b21EYXRhPFQ+IGFzIHNlcmRlX2NvcmU6OmRlOjpEZXNlcmlhbGl6ZVNlZWQ+OjpkZXNlcmlhbGl6ZTo6aDdiNjhjMGRjNzQ5MDM2YzbHB0dhdXRvbWVyZ2U6OmNvbHVtbmFyOjplbmNvZGluZzo6cmF3OjpSYXdEZWNvZGVyOjpyZWFkOjpoOTA0NDcwZTdhMDIzZWU0ZsgHP2F1dG9tZXJnZTo6b3Bfc2V0Mjo6dHlwZXM6OlZhbHVlUmVmOjpoeWRyYXRlOjpoNDFkZDkwNDVhZmE3MGY1ZckHaDxhdXRvbWVyZ2U6Oml0ZXI6OnRvb2xzOjpEaWZmSXRlcjxJPiBhcyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvcj46Om5leHQ6Omg1ZTNmZDdkMzA4NmI1ZWQ5ygdbYXV0b21lcmdlOjpzZXF1ZW5jZV90cmVlOjpTZXF1ZW5jZVRyZWVOb2RlPFQ+OjppbnNlcnRfaW50b19ub25fZnVsbF9ub2RlOjpoZjJhZTNjYWU2NjI3Mzk1OcsHbDxjb3JlOjppdGVyOjphZGFwdGVyczo6bWFwOjpNYXA8SSxGPiBhcyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvcj46OnRyeV9mb2xkOjpoOTZmZjczYjY0MmVkM2I5M8wHR2F1dG9tZXJnZTo6YXV0b2NvbW1pdDo6QXV0b0NvbW1pdDo6c2F2ZV93aXRoX29wdGlvbnM6OmhhNzI0NTU4OGQwMjRhYmQ0zQc7aGFzaGJyb3duOjptYXA6Okhhc2hNYXA8SyxWLFMsQT46Omluc2VydDo6aDZmYTI2NWQ1YzAyMjI3YjPOBzdjb3JlOjpzbGljZTo6c29ydDo6dW5zdGFibGU6OmlwbnNvcnQ6OmgxOTA4OWMyMjA0YTU0NmE4zwc9YXV0b21lcmdlOjpsZWdhY3k6OnNlcmRlX2ltcGxzOjpyZWFkX2ZpZWxkOjpoMjQ2ZDQyZTFiODE0YzAwNtAHQmF1dG9tZXJnZV93YXNtOjpBdXRvbWVyZ2U6OnJlY2VpdmVfc3luY19tZXNzYWdlOjpoNjJkMjdlNDgyYmNmOWM3ZdEHYzxoZXhhbmU6OnJsZTo6UmxlQ3Vyc29yPF8sUCxYPiBhcyBoZXhhbmU6OmN1cnNvcjo6Q29sdW1uQ3Vyc29yPjo6Y29tcHV0ZV9taW5fbWF4OjpoZmEwYzQyY2ExN2EzMzA3MNIHYzxoZXhhbmU6OnJsZTo6UmxlQ3Vyc29yPF8sUCxYPiBhcyBoZXhhbmU6OmN1cnNvcjo6Q29sdW1uQ3Vyc29yPjo6Y29tcHV0ZV9taW5fbWF4OjpoZDg4OGYxMmU4YTA3MWU1M9MHYzxoZXhhbmU6OnJsZTo6UmxlQ3Vyc29yPF8sUCxYPiBhcyBoZXhhbmU6OmN1cnNvcjo6Q29sdW1uQ3Vyc29yPjo6Y29tcHV0ZV9taW5fbWF4OjpoZDk4ZDRhNGNhYTUyODY1Y9QHWDxoZXhhbmU6OnJsZTo6UmxlU3RhdGU8UD4gYXMgaGV4YW5lOjplbmNvZGVyOjpFbmNvZGVyU3RhdGU8UD4+OjpmbHVzaDo6aGE4ZWEwOGZiZTZhNzY0NTHVBztoYXNoYnJvd246Om1hcDo6SGFzaE1hcDxLLFYsUyxBPjo6aW5zZXJ0OjpoNmFkMzMyNTVmMGFkYzM3ZtYHO2hhc2hicm93bjo6bWFwOjpIYXNoTWFwPEssVixTLEE+OjppbnNlcnQ6OmgwNzQ3NWU3NWViOTU3MWUz1wdbYXV0b21lcmdlOjpzZXF1ZW5jZV90cmVlOjpTZXF1ZW5jZVRyZWVOb2RlPFQ+OjppbnNlcnRfaW50b19ub25fZnVsbF9ub2RlOjpoODZjYWQ0NjZiNGJjOTE2ZtgHW2F1dG9tZXJnZTo6c2VxdWVuY2VfdHJlZTo6U2VxdWVuY2VUcmVlTm9kZTxUPjo6aW5zZXJ0X2ludG9fbm9uX2Z1bGxfbm9kZTo6aDViODhhYmRhMjY1YmFmNjPZB1FhdXRvbWVyZ2U6OnRyYW5zYWN0aW9uOjppbm5lcjo6VHJhbnNhY3Rpb25Jbm5lcjo6dXBkYXRlX29iamVjdDo6aDFkYzgwNTJkNjNlN2YyOTbaBzRjb3JlOjpoYXNoOjpCdWlsZEhhc2hlcjo6aGFzaF9vbmU6Omg5MTRmNDkwMmUwNjhlNGYx2wc0Y29yZTo6aGFzaDo6QnVpbGRIYXNoZXI6Omhhc2hfb25lOjpoZTFlZjBjZDg3ZmNjMjRiY9wHRWNvcmU6OnNsaWNlOjpzb3J0OjpzaGFyZWQ6OnNtYWxsc29ydDo6c29ydDRfc3RhYmxlOjpoMDc0MTBiMjYzYjBiMmE5Nd0HSGhleGFuZTo6Y29sdW1uZGF0YTo6Q29sdW1uRGF0YUl0ZXI8Qz46OmFkdmFuY2VfYWNjX2J5OjpoODM1YmFkMTQwNDlmODgzN94HSGhleGFuZTo6Y29sdW1uZGF0YTo6Q29sdW1uRGF0YUl0ZXI8Qz46OmFkdmFuY2VfYWNjX2J5OjpoZjU5MmRhMDc2NDc1Y2U3Nt8HYjxoZXhhbmU6OmN1cnNvcjo6Q3Vyc29ySXRlcjxDPiBhcyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvcj46Om5leHQ6OmhlNzlkYjQxZGU5MmRjNGU34AdOYXV0b21lcmdlOjpjb2x1bW5hcjo6ZW5jb2Rpbmc6OnJsZTo6UmxlRW5jb2RlcjxTLFQ+OjpmaW5pc2g6OmgyMTAzMzE4NjUzODYwMzdl4QdOYXV0b21lcmdlOjpjb2x1bW5hcjo6ZW5jb2Rpbmc6OnJsZTo6UmxlRW5jb2RlcjxTLFQ+OjpmaW5pc2g6OmhjYzY4NmNiNzE0YWZkOTc34gdWPHNlcmRlX2pzb246OnJlYWQ6OlNsaWNlUmVhZCBhcyBzZXJkZV9qc29uOjpyZWFkOjpSZWFkPjo6aWdub3JlX3N0cjo6aDAxNDAyODUyMTBiNDI5ZGLjB2k8YXV0b21lcmdlOjppdGVyOjp0b29sczo6RGlmZkl0ZXI8ST4gYXMgYXV0b21lcmdlOjppdGVyOjp0b29sczo6U2hpZnRhYmxlPjo6c2hpZnRfbmV4dDo6aDE3OGQ2MjA4MzY1ZmYzMTnkB288YXV0b21lcmdlX3dhc206OnZhbHVlOjpEYXRhdHlwZSBhcyBjb3JlOjpjb252ZXJ0OjpUcnlGcm9tPHdhc21fYmluZGdlbjo6SnNWYWx1ZT4+Ojp0cnlfZnJvbTo6aDUwMWVlOTg2ZTY5ODVhNWLlB1g8aGV4YW5lOjpybGU6OlJsZVN0YXRlPFA+IGFzIGhleGFuZTo6ZW5jb2Rlcjo6RW5jb2RlclN0YXRlPFA+Pjo6Zmx1c2g6OmhhODhhMjJjM2IyOGM2ZTM45gdbYXV0b21lcmdlOjpzZXF1ZW5jZV90cmVlOjpTZXF1ZW5jZVRyZWVOb2RlPFQ+OjppbnNlcnRfaW50b19ub25fZnVsbF9ub2RlOjpoMGE5N2VhMDg4MzNhZWRlMOcHQjxhbGxvYzo6dmVjOjpWZWM8dTg+IGFzIGhleDo6RnJvbUhleD46OmZyb21faGV4OjpoODc0ZDkyYTFiNmY5NGY4NegHMmF1dG9tZXJnZV93YXNtOjpBdXRvbWVyZ2U6OmRpZmY6OmhkZGY5MTRkYmVkN2Y3MjQ56QdCY29yZTo6Zm10OjpGb3JtYXR0ZXI6OmRlYnVnX3R1cGxlX2ZpZWxkM19maW5pc2g6OmhmNjE2MWQyZTg5YjA0MDM36gf3AWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkhhbmRsZTxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TXV0LEssVixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkxlYWY+LGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6S1Y+OjpzcGxpdDo6aDY2YjkxZjVmNGFlMTZiM2LrB/cBYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6SGFuZGxlPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpNdXQsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TGVhZj4sYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpLVj46OnNwbGl0OjpoMjFjN2UzNDk2ZDUwMjY4ZOwHQGF1dG9tZXJnZTo6YXV0b21lcmdlOjpBdXRvbWVyZ2U6OmV4aWRfdG9fb3BpZDo6aDRhMTU1NzE1Nzg4MTgwYjTtB11hdXRvbWVyZ2U6OnN5bmM6OjxpbXBsIGF1dG9tZXJnZTo6YXV0b21lcmdlOjpBdXRvbWVyZ2U+OjptYWtlX2Jsb29tX2ZpbHRlcjo6aDk2ZWE3NDAxOTljYzg4MjfuB1I8aGFzaGJyb3duOjptYXA6Okhhc2hNYXA8SyxWLFMsQT4gYXMgY29yZTo6Y2xvbmU6OkNsb25lPjo6Y2xvbmU6Omg5YjYzZGEwODU5N2IyZWZk7wc9YXV0b21lcmdlOjpzeW5jOjpibG9vbTo6Qmxvb21GaWx0ZXI6OnBhcnNlOjpoMDU5NTYyZTBmNDI0YWFiOPAHRnNlcmRlX3dhc21fYmluZGdlbjo6ZGU6OkRlc2VyaWFsaXplcjo6aW52YWxpZF90eXBlXzo6aGYyMGMyMDFlZjA0MDQ4ZWbxB0RoZXhhbmU6OmVuY29kZXI6OkVuY29kZXI8Qz46OnNhdmVfdG9fdW5sZXNzX2VtcHR5OjpoNDU0NmNmY2NiMmJmMzU3ZvIHMWF1dG9tZXJnZTo6aHlkcmF0ZTo6VmFsdWU6Om5ldzo6aDFlNzY2N2VmOTBkNDFhNmPzB0phdXRvbWVyZ2U6Om9wX3NldDI6Om9wX3NldDo6b3BfaXRlcjo6VmFsdWVJdGVyOjp0cnlfbnRoOjpoNTA5MmE3OGUyNGNkZTMwY/QHQjxhbGxvYzo6dmVjOjpWZWM8dTg+IGFzIGhleDo6RnJvbUhleD46OmZyb21faGV4OjpoYjQ5MTU1NjExNzNjY2Q0NvUHQ2hleGFuZTo6c2xhYjo6dHJlZTo6VHJlZU5vZGU8VCxXPjo6cmVjb21wdXRlX2xlbjo6aDRkMTYzMmQyMjAzMWYzN2X2B2I8aGV4YW5lOjpjdXJzb3I6OkN1cnNvckl0ZXI8Qz4gYXMgY29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+OjpuZXh0OjpoZDUyZTczODU0YTNlZTc0NfcH5QE8YXV0b21lcmdlOjpzdG9yYWdlOjpjaGFuZ2U6OmNoYW5nZV9vcF9jb2x1bW5zOjpDaGFuZ2VPcHNDb2x1bW5zIGFzIGNvcmU6OmNvbnZlcnQ6OlRyeUZyb208YXV0b21lcmdlOjpzdG9yYWdlOjpjb2x1bW5zOjpyYXdfY29sdW1uOjpSYXdDb2x1bW5zPGF1dG9tZXJnZTo6c3RvcmFnZTo6Y29sdW1uczo6Y29tcHJlc3Npb246OlVuY29tcHJlc3NlZD4+Pjo6dHJ5X2Zyb206OmgxMWZjNmY2Nzg0OTVjMGIx+AdaY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGF1dG9tZXJnZTo6b3Bfc2V0Mjo6Y2hhbmdlOjpiYXRjaDo6QmF0Y2hBcHBseT46Omg3YmI1YThiYThhNDIwZDEz+QdAaGV4YW5lOjpzbGFiOjp3cml0ZXI6OlNsYWJXcml0ZXI8UD46OnB1c2hfbGl0OjpoNTIzMDM0ZDViZjA1Yjc0YvoHS2F1dG9tZXJnZTo6b3Bfc2V0Mjo6b3Bfc2V0OjpvcF9pdGVyOjpPYmpJZEl0ZXI6OnRyeV9uZXh0OjpoNzMwOGMxY2MzZDU0ODdmMfsHaDxjb3JlOjppdGVyOjphZGFwdGVyczo6bWFwOjpNYXA8SSxGPiBhcyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvcj46Om5leHQ6Omg0OTNjNjAzODFhMDc0YzFk/AcdYXV0b21lcmdlX2dlbmVyYXRlU3luY01lc3NhZ2X9B11hdXRvbWVyZ2U6Omh5ZHJhdGU6OjxpbXBsIGF1dG9tZXJnZTo6b3Bfc2V0Mjo6b3Bfc2V0OjpPcFNldD46Omh5ZHJhdGVfdGV4dDo6aGNjOGFhNTZjNGNiNmJhZTH+B0Bjb3JlOjpzdHI6OnBhdHRlcm46OlR3b1dheVNlYXJjaGVyOjpuZXh0X2JhY2s6Omg0Y2M5Nzk4Y2MxNTYzYmFi/wdhPGNvcmU6OnN0cjo6bG9zc3k6OlV0ZjhDaHVua3MgYXMgY29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+OjpuZXh0OjpoMDhiYzBhZTM2MzYxYTJlNYAIRWNvcmU6OnNsaWNlOjpzb3J0OjpzaGFyZWQ6OnNtYWxsc29ydDo6c29ydDRfc3RhYmxlOjpoMDM2ODg5NDhmM2JkZmI4OIEI+wFhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpIYW5kbGU8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6Ok11dCxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpJbnRlcm5hbD4sYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpLVj46OnNwbGl0OjpoZTJkOWZlNTA1ZmQ4Njk4OIIITTxUIGFzIGFsbG9jOjp2ZWM6OnNwZWNfZnJvbV9lbGVtOjpTcGVjRnJvbUVsZW0+Ojpmcm9tX2VsZW06OmhlZDk4ODAxODRkYTdhMzM3gwg0Y29yZTo6aGFzaDo6QnVpbGRIYXNoZXI6Omhhc2hfb25lOjpoYTk5NDM4MTUyN2RlNTgyYoQIO2hhc2hicm93bjo6bWFwOjpIYXNoTWFwPEssVixTLEE+OjppbnNlcnQ6Omg5ZDc0YjAzNTBhZWQ1MTE4hQhqPGhleGFuZTo6Y29sdW1uZGF0YTo6Q29sdW1uRGF0YUl0ZXI8Qz4gYXMgY29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+OjpuZXh0OjpoNzc0Y2UwMWYxNzM4ODk1NYYIO2hhc2hicm93bjo6bWFwOjpIYXNoTWFwPEssVixTLEE+OjppbnNlcnQ6OmhkZjRiMDljODMzNDk1MGEzhwhaYXV0b21lcmdlOjpzdG9yYWdlOjpidW5kbGU6OmJ1aWxkZXI6OkJ1bmRsZUJ1aWxkZXI6OnByb2Nlc3Nfb3BfaW50ZXJuYWw6Omg0Yjc5NzI4ODVhY2NjN2E3iAhNYXV0b21lcmdlOjphdXRvY29tbWl0OjpBdXRvQ29tbWl0OjplbnN1cmVfdHJhbnNhY3Rpb25fb3Blbjo6aGUwZTk0YmI1OTQ4NGU1NzaJCDhhdXRvbWVyZ2U6OnR5cGVzOjpUZXh0RW5jb2Rpbmc6OndpZHRoOjpoMzVmMmVkYjY2ZGU0N2YxZYoIUzxzZXJkZV9qc29uOjpyZWFkOjpTdHJSZWFkIGFzIHNlcmRlX2pzb246OnJlYWQ6OlJlYWQ+OjpwYXJzZV9zdHI6OmhhZWJiNzMzZjFhNzc0MjE5iwhVPGhleGFuZTo6c2xhYjo6d3JpdGVyOjpXcml0ZUFjdGlvbjxQPiBhcyBjb3JlOjpjbXA6OlBhcnRpYWxFcT46OmVxOjpoNzMzYWE5NzcyNzM5Mzg3OYwIVTxoZXhhbmU6OnNsYWI6OndyaXRlcjo6V3JpdGVBY3Rpb248UD4gYXMgY29yZTo6Y21wOjpQYXJ0aWFsRXE+OjplcTo6aDEwMDcwNmE4MjMyNjdmYjSNCFU8aGV4YW5lOjpzbGFiOjp3cml0ZXI6OldyaXRlQWN0aW9uPFA+IGFzIGNvcmU6OmNtcDo6UGFydGlhbEVxPjo6ZXE6OmhmZmIxN2Y2YzZjYjM5MTRmjghVPGhleGFuZTo6c2xhYjo6d3JpdGVyOjpXcml0ZUFjdGlvbjxQPiBhcyBjb3JlOjpjbXA6OlBhcnRpYWxFcT46OmVxOjpoOTI5ZTA4NmI5NGZmNmNjY48INGNvcmU6Omhhc2g6OkJ1aWxkSGFzaGVyOjpoYXNoX29uZTo6aGVmMmVjMWZjYzcxZWJkYTKQCD1oZXhhbmU6OnNsYWI6OndyaXRlcjo6U2xhYldyaXRlcjxQPjo6d3JpdGU6Omg2NDVmNTcwNWE4ZmJmNmM3kQgwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmgxMzI1ZmE2MzZlNWRiOWVikgg9aGV4YW5lOjpzbGFiOjp3cml0ZXI6OlNsYWJXcml0ZXI8UD46OndyaXRlOjpoZmEzNmQzYTZiZGIwOWRhNpMIPWhleGFuZTo6c2xhYjo6d3JpdGVyOjpTbGFiV3JpdGVyPFA+Ojp3cml0ZTo6aDYzZjJmOWU0N2JiNTRlYTiUCD1oZXhhbmU6OnNsYWI6OndyaXRlcjo6U2xhYldyaXRlcjxQPjo6d3JpdGU6OmgwMzJmMWZhNTI3MTcwNzc3lQg9aGV4YW5lOjpzbGFiOjp3cml0ZXI6OlNsYWJXcml0ZXI8UD46OndyaXRlOjpoODY0ODkxYTVkZjA0MzFhNJYIPWhleGFuZTo6c2xhYjo6d3JpdGVyOjpTbGFiV3JpdGVyPFA+Ojp3cml0ZTo6aGUyOGQzYjE5MmViYzhmYTeXCEJzZXJkZV9qc29uOjpkZTo6RGVzZXJpYWxpemVyPFI+OjppZ25vcmVfaW50ZWdlcjo6aDY1YzYyN2VkODBmNWM4OTWYCDNhdXRvbWVyZ2Vfd2FzbTo6QXV0b21lcmdlOjpzdGF0czo6aDc4MzkyNDJhYTBlN2VmNTaZCGw8Y29yZTo6aXRlcjo6YWRhcHRlcnM6OkdlbmVyaWNTaHVudDxJLFI+IGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6bmV4dDo6aGMwMTgxNzlkOGMwMjFjNDOaCD5hdXRvbWVyZ2U6OmF1dG9tZXJnZTo6QXV0b21lcmdlOjpzYXZlX2FmdGVyOjpoY2M4MzU0NTVjMjQ2MmFlMJsIUWF1dG9tZXJnZTo6Y29sdW1uYXI6OmNvbHVtbl9yYW5nZTo6dmFsdWU6OlZhbHVlSXRlcjo6cGFyc2VfcmF3OjpoMWI0OTE2MDVmMGY2YzIzN5wIczxzZXJkZV9qc29uOjpkZTo6U2VxQWNjZXNzPFI+IGFzIHNlcmRlX2NvcmU6OmRlOjpTZXFBY2Nlc3M+OjpuZXh0X2VsZW1lbnRfc2VlZDo6aGFzX25leHRfZWxlbWVudDo6aDc0YzM1MTg4MzM2YWY2OTmdCDA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDhlOWFjMGM5ZWJjMGI4NTGeCDA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGUzN2JlN2RiMGU0MDAzZjOfCF08YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bWFwOjpCVHJlZU1hcDxLLFYsQT4gYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGI4MjM0ZmJiYWRkMDU4MDegCGE8Y29yZTo6bWFya2VyOjpQaGFudG9tRGF0YTxUPiBhcyBzZXJkZV9jb3JlOjpkZTo6RGVzZXJpYWxpemVTZWVkPjo6ZGVzZXJpYWxpemU6OmhhZjhhMWIxNTE0YWVkNGMyoQg7aGFzaGJyb3duOjptYXA6Okhhc2hNYXA8SyxWLFMsQT46Omluc2VydDo6aDU3ZTQwMGExYjk5ZDk5NjSiCDo8aTY0IGFzIGhleGFuZTo6cGFjazo6UGFja2FibGU+Ojp1bnBhY2s6OmgyYzM2NWIzNmFiYzkwY2JhowhfPGF1dG9tZXJnZTo6c2VxdWVuY2VfdHJlZTo6U2VxdWVuY2VUcmVlTm9kZTxUPiBhcyBjb3JlOjpjbG9uZTo6Q2xvbmU+OjpjbG9uZTo6aDQxOTU3NDRlNjI4ZTY2NTikCGg8YWxsb2M6OnN0cmluZzo6U3RyaW5nIGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6Y29sbGVjdDo6RnJvbUl0ZXJhdG9yPGNoYXI+Pjo6ZnJvbV9pdGVyOjpoN2U4MTgwMjFlMTI4Y2I4YaUIbDxjb3JlOjppdGVyOjphZGFwdGVyczo6R2VuZXJpY1NodW50PEksUj4gYXMgY29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+OjpuZXh0OjpoOTViODM0NWQ5YTlkZDkwZqYIaDxhbGxvYzo6c3RyaW5nOjpTdHJpbmcgYXMgY29yZTo6aXRlcjo6dHJhaXRzOjpjb2xsZWN0OjpGcm9tSXRlcmF0b3I8Y2hhcj4+Ojpmcm9tX2l0ZXI6OmgxMjM2NTMyYWY2MWE1M2Uypwg0Y29yZTo6aGFzaDo6QnVpbGRIYXNoZXI6Omhhc2hfb25lOjpoOTMxZDc2NDFhMDk2NGZlNqgIQmNvcmU6OnNsaWNlOjpzb3J0Ojp1bnN0YWJsZTo6aGVhcHNvcnQ6OmhlYXBzb3J0OjpoNjgyOTU2MzJjY2Q1NDZiYakITmF1dG9tZXJnZTo6Y29sdW1uYXI6OmVuY29kaW5nOjpybGU6OlJsZUVuY29kZXI8UyxUPjo6ZmluaXNoOjpoNDc4YjE5Yjc5ODU2N2Q2NKoITmF1dG9tZXJnZTo6Y29sdW1uYXI6OmVuY29kaW5nOjpybGU6OlJsZUVuY29kZXI8UyxUPjo6ZmluaXNoOjpoYjRhNmZlYTZhZjM0MzE1MKsIXzxhdXRvbWVyZ2U6OnNlcXVlbmNlX3RyZWU6OlNlcXVlbmNlVHJlZU5vZGU8VD4gYXMgY29yZTo6Y2xvbmU6OkNsb25lPjo6Y2xvbmU6OmgyMmNhMjM2MDZhNTkzMzZhrAhBc2VyZGVfanNvbjo6ZGU6OkRlc2VyaWFsaXplcjxSPjo6cGFyc2VfaW50ZWdlcjo6aGUxYjdkMDU3ODVmMjEyOGOtCEBhdXRvbWVyZ2U6OnN5bmM6OmJsb29tOjpCbG9vbUZpbHRlcjo6dG9fYnl0ZXM6OmgzZDU0YjlhMGQ5ODczZTI5rggwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmgyYzYyOWZhYjA2ZDQ2YzJkrwgwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhiZDUxZGMzMDViMmFhZTJhsAgwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhjMTFhZDFhZmJjODMzOTRmsQgwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhmZTc3NWYyM2FlYjNhZmQ3sgg0PCZtdXQgVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoYWQxMTJmN2I4OWIwM2YwMLMIVTxoZXhhbmU6OnNsYWI6OndyaXRlcjo6V3JpdGVBY3Rpb248UD4gYXMgY29yZTo6Y21wOjpQYXJ0aWFsRXE+OjplcTo6aGEwMzI5NjZiZjA1NTJkN2a0CFR1bmljb2RlX3NlZ21lbnRhdGlvbjo6Z3JhcGhlbWU6OkdyYXBoZW1lQ3Vyc29yOjpncmFwaGVtZV9jYXRlZ29yeTo6aDAyOTdhYjBjOGRiNTUzNTO1CGw8Y29yZTo6aXRlcjo6YWRhcHRlcnM6OkdlbmVyaWNTaHVudDxJLFI+IGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6bmV4dDo6aDI0MTM2N2E0N2E0MjFjZDm2CDA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGE5MWI2YWIyZmQzYWY3ZmW3CF48YXV0b21lcmdlOjpzdG9yYWdlOjpkb2N1bWVudDo6UmVjb25zdHJ1Y3RFcnJvciBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmhmYzRjMTU3YWJjMDM5NGNkuAhbPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6OnNldDo6QlRyZWVTZXQ8VCxBPiBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMTBkYjcwN2FiZmQ3YTk2ZrkIWDxoZXhhbmU6OnJsZTo6UmxlU3RhdGU8UD4gYXMgaGV4YW5lOjplbmNvZGVyOjpFbmNvZGVyU3RhdGU8UD4+OjpmbHVzaDo6aDVlZmNkNTUyY2M5ZDMyZTS6CGE8Y29yZTo6c3RyOjpwYXR0ZXJuOjpDaGFyU2VhcmNoZXIgYXMgY29yZTo6c3RyOjpwYXR0ZXJuOjpTZWFyY2hlcj46Om5leHRfbWF0Y2g6OmhjZDUwM2EwOTc3OThhZjAxuwhpPGF1dG9tZXJnZTo6aXRlcjo6dG9vbHM6OkRpZmZJdGVyPEk+IGFzIGF1dG9tZXJnZTo6aXRlcjo6dG9vbHM6OlNoaWZ0YWJsZT46OnNoaWZ0X25leHQ6Omg5NWQ3ZWY1OTE4MTkzMDAzvAg0Y29yZTo6aGFzaDo6QnVpbGRIYXNoZXI6Omhhc2hfb25lOjpoN2YwNWU0Y2RhMjM1NTEwMr0ILWhleGFuZTo6ZW5jb2Rlcjo6Zmx1c2hfcnVuOjpoMjJjYjM5NzMyMzc5OTdkMr4ILWhleGFuZTo6ZW5jb2Rlcjo6Zmx1c2hfcnVuOjpoMjY0MGViMGNmYjAxZThhNL8IbTwmbXV0IHNlcmRlX2pzb246OmRlOjpEZXNlcmlhbGl6ZXI8Uj4gYXMgc2VyZGVfY29yZTo6ZGU6OkRlc2VyaWFsaXplcj46OmRlc2VyaWFsaXplX3N0cmluZzo6aGY1NzkwZmFjZmU3ZGFjYzjACDA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDZjYmRjNjRmODEwZTYwMTHBCDRjb3JlOjpoYXNoOjpCdWlsZEhhc2hlcjo6aGFzaF9vbmU6OmgxMDM4MjM5MWZlMzQ1YTQxwgg0Y29yZTo6aGFzaDo6QnVpbGRIYXNoZXI6Omhhc2hfb25lOjpoM2IzNmMyY2RjYzU1ZTY3McMINWhleGFuZTo6Y3Vyc29yOjpDb2x1bW5DdXJzb3I6Om5leHQ6Omg5ZDRlMTFmNjBhODI1OGFkxAgwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhiNTBiNmRiYjJiMzg4MTE0xQg0Y29yZTo6aGFzaDo6QnVpbGRIYXNoZXI6Omhhc2hfb25lOjpoY2QzMTdiNzMwOWZmNTk4ZsYI9wFhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpIYW5kbGU8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6Ok11dCxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpMZWFmPixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OktWPjo6c3BsaXQ6OmgwYjc0NzM0YmFiNTc5MDEwxwhcPHN0ZDo6Y29sbGVjdGlvbnM6Omhhc2g6Om1hcDo6SGFzaE1hcDxLLFYsUz4gYXMgY29yZTo6Y21wOjpQYXJ0aWFsRXE+OjplcTo6aDBiYTEwOGZhNGY3NTFjM2bICDhhdXRvbWVyZ2Vfd2FzbTo6aW50ZXJvcDo6YWxsb2Nfc2NhbGFyOjpoZjQ4M2FkNjVlMWJiZGJkM8kIXDxzdGQ6OmNvbGxlY3Rpb25zOjpoYXNoOjptYXA6Okhhc2hNYXA8SyxWLFM+IGFzIGNvcmU6OmNtcDo6UGFydGlhbEVxPjo6ZXE6Omg0NWEzZTEwMzU0MmZjYzg2ygh0PGF1dG9tZXJnZTo6b3Bfc2V0Mjo6b3Bfc2V0OjpvcF9pdGVyOjpWYWx1ZUl0ZXIgYXMgYXV0b21lcmdlOjppdGVyOjp0b29sczo6U2hpZnRhYmxlPjo6c2hpZnRfbmV4dDo6aGFmNjY2ZGNlZTBmMTQ0YTDLCDRjb3JlOjpoYXNoOjpCdWlsZEhhc2hlcjo6aGFzaF9vbmU6Omg1NmZiYzYzMDM3N2Y0YTVhzAg0Y29yZTo6aGFzaDo6QnVpbGRIYXNoZXI6Omhhc2hfb25lOjpoZWQ1OWVhYmI0OTY2OTZkOc0IXzxhdXRvbWVyZ2U6OnNlcXVlbmNlX3RyZWU6OlNlcXVlbmNlVHJlZUludGVybmFsPFQ+IGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmgyMjIzMTY4ZjAyYWUwZjM1zghfPGF1dG9tZXJnZTo6c2VxdWVuY2VfdHJlZTo6U2VxdWVuY2VUcmVlSW50ZXJuYWw8VD4gYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDA0NmI2YTgyYTFlM2VkYWPPCF88YXV0b21lcmdlOjpzZXF1ZW5jZV90cmVlOjpTZXF1ZW5jZVRyZWVJbnRlcm5hbDxUPiBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoNmJiODliOWFkN2IxODc3M9AIXzxhdXRvbWVyZ2U6OnNlcXVlbmNlX3RyZWU6OlNlcXVlbmNlVHJlZUludGVybmFsPFQ+IGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg5NWRiNTQwYmMzMGFhMTY00Qg0Y29yZTo6aGFzaDo6QnVpbGRIYXNoZXI6Omhhc2hfb25lOjpoYjc5Njg5ODdiYTkxMmMyNdIIMGFsbG9jOjpzdHI6OmpvaW5fZ2VuZXJpY19jb3B5OjpoNGJiNTMwOGI5ZWRjMTY1MdMISmF1dG9tZXJnZTo6Y2hhbmdlX2dyYXBoOjpDaGFuZ2VHcmFwaDo6Z2V0X2J1aWxkX2luZGV4ZXM6Omg0NDNlZWU4ZjdhNDYwNmQ41AhaPGF1dG9tZXJnZV93YXNtOjppbnRlcm9wOjplcnJvcjo6QXBwbHlQYXRjaCBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmhhZTU4YjM2MzI1NGU3MDgy1QhdPGF1dG9tZXJnZTo6c3RvcmFnZTo6YnVuZGxlOjplcnJvcjo6UGFyc2VFcnJvciBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6Omg5ODViZmNhYjBkNjBlNjUx1ghCc2VyZGVfanNvbjo6ZGU6OkRlc2VyaWFsaXplcjxSPjo6cGFyc2VfZXhwb25lbnQ6OmhlNzliZDFkMWNhNWQwMjRm1whfPGF1dG9tZXJnZTo6c2VxdWVuY2VfdHJlZTo6U2VxdWVuY2VUcmVlSW50ZXJuYWw8VD4gYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDg5MzgwZmJlMmQwM2E2ZDTYCFFhdXRvbWVyZ2U6OmNvbHVtbmFyOjpjb2x1bW5fcmFuZ2U6OnZhbHVlOjpWYWx1ZUl0ZXI6OnBhcnNlX3Jhdzo6aDVhNzY5M2VlMmU5MDQzNDXZCEdhdXRvbWVyZ2U6OnNlcXVlbmNlX3RyZWU6OlNlcXVlbmNlVHJlZU5vZGU8VD46Om1lcmdlOjpoMzY3ZmJjNDM2MDViOWEyMtoIQWhleGFuZTo6Y29sdW1uZGF0YTo6Q29sdW1uRGF0YUl0ZXI8Qz46OnBvcF9ydW46OmhhM2U1YmE2MzRiMWE5OWU32whCaGV4YW5lOjpjb2x1bW5kYXRhOjpDb2x1bW5EYXRhSXRlcjxDPjo6bmV4dF9ydW46OmhkNjFhYTYyNWYzODBhZjk43AhEYXV0b21lcmdlOjpvcF9zZXQyOjpvcF9zZXQ6OnZpc2libGU6OlZpc0l0ZXI6Om5ldzo6aGU4ODFjOWJiZDRhN2I4ODPdCGg8YXV0b21lcmdlOjppdGVyOjp0b29sczo6RGlmZkl0ZXI8ST4gYXMgY29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+OjpuZXh0OjpoMTYxNWE4MDQ4NDA2MDMzMt4INGNvcmU6Omhhc2g6OkJ1aWxkSGFzaGVyOjpoYXNoX29uZTo6aGRkNGM2ODFjZTQwMzVkYWPfCDRjb3JlOjpoYXNoOjpCdWlsZEhhc2hlcjo6aGFzaF9vbmU6OmhiMGI3ZWM2ODRhMzBhMjU04Ag0Y29yZTo6aGFzaDo6QnVpbGRIYXNoZXI6Omhhc2hfb25lOjpoM2Q3YWEyNzA1ODcyMTEyNOEINGNvcmU6Omhhc2g6OkJ1aWxkSGFzaGVyOjpoYXNoX29uZTo6aDg0ZmFlZTU3NzVmNjJlYjPiCDtoYXNoYnJvd246Om1hcDo6SGFzaE1hcDxLLFYsUyxBPjo6aW5zZXJ0OjpoYjc3OGYzYzhkNDE1OWEwZuMIYTxjb3JlOjptYXJrZXI6OlBoYW50b21EYXRhPFQ+IGFzIHNlcmRlX2NvcmU6OmRlOjpEZXNlcmlhbGl6ZVNlZWQ+OjpkZXNlcmlhbGl6ZTo6aDMwYzNkYWVkOGQ2YTY4OWHkCFBhdXRvbWVyZ2Vfd2FzbTo6ZXhwb3J0X2NhY2hlOjpFeHBvcnRDYWNoZTo6d3JhcF9jdXN0b21fb2JqZWN0OjpoNWVkOTQwNzI5YjdmNDc3NOUIM2F1dG9tZXJnZV93YXNtOjpBdXRvbWVyZ2U6Om1lcmdlOjpoNmM4MGU5OGM3YzgxMzliNeYIXGF1dG9tZXJnZTo6b3Bfc2V0Mjo6dHlwZXM6OjxpbXBsIGF1dG9tZXJnZTo6dmFsdWU6OlNjYWxhclZhbHVlPjo6aW50b19yZWY6OmgzMjg1MzFjMjQzOWVmY2M35wg3Y29yZTo6c2xpY2U6OnNvcnQ6OnVuc3RhYmxlOjppcG5zb3J0OjpoMzg4YjhiYTkyN2I2Y2JlZegIQWRsbWFsbG9jOjpkbG1hbGxvYzo6RGxtYWxsb2M8QT46OmRpc3Bvc2VfY2h1bms6Omg4MWE5ZWRkMjE4YTBmMDhm6Qg7aGFzaGJyb3duOjptYXA6Okhhc2hNYXA8SyxWLFMsQT46Omluc2VydDo6aGNiMjQyNzg1MzVmNzU4MTjqCDtoYXNoYnJvd246Om1hcDo6SGFzaE1hcDxLLFYsUyxBPjo6aW5zZXJ0OjpoMjAwZmVmYzRhODRjYmFjZusIVDxhdXRvbWVyZ2Vfd2FzbTo6aW50ZXJvcDo6ZXJyb3I6OkV4cG9ydCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoNDZhYjIwYmEyNzRhZTdhMOwIMWNvbnNvbGVfZXJyb3JfcGFuaWNfaG9vazo6aG9vazo6aDQyOWMwNzZhOTdjMDhmZjntCFBhdXRvbWVyZ2U6OnN0b3JhZ2U6OmNvbHVtbnM6OnJhd19jb2x1bW46OlJhd0NvbHVtbnM8VD46OndyaXRlOjpoODExODE4Yzk3NDQxOTg4ZO4IU2NvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhdXRvbWVyZ2U6OnBhdGNoZXM6OnBhdGNoOjpQYXRjaEFjdGlvbj46OmhlOWE0ZTNkOGQzYzZmOTFi7whTY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGF1dG9tZXJnZTo6cGF0Y2hlczo6cGF0Y2g6OlBhdGNoQWN0aW9uPjo6aDIzNWZkYzI1MjMxMTFmMGLwCFo8YXV0b21lcmdlOjpvcF9zZXQyOjptZXRhOjpWYWx1ZU1ldGEgYXMgaGV4YW5lOjpwYWNrOjpQYWNrYWJsZT46OnVucGFjazo6aDU1NjY4N2YwOGExMTZiYzTxCD9hdXRvbWVyZ2U6OnN5bmM6OnN0YXRlOjpTdGF0ZTo6c2V0X3JlYWRfb25seTo6aDgyMDY3YWQ4NTNjZWEwMDDyCDo8dTY0IGFzIGhleGFuZTo6cGFjazo6UGFja2FibGU+Ojp1bnBhY2s6OmhlYTg0OTg2MzliZjI5NDBl8wiAAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxoYXNoYnJvd246OnJhdzo6UmF3VGFibGU8KGFsbG9jOjpzdHJpbmc6OlN0cmluZyxhdXRvbWVyZ2U6Omh5ZHJhdGU6Om1hcDo6TWFwVmFsdWUpPj46Omg4MTAyMDEzODk3NTIwNTQ09AhBYXV0b21lcmdlOjpvcF9zZXQyOjpjaGFuZ2U6OkFjdG9yTWFwcGVyOjpyZXNldDo6aGRjMDIxMThhOWZiM2MwZGX1CJEBYXV0b21lcmdlX3dhc206OmludGVyb3A6OjxpbXBsIGNvcmU6OmNvbnZlcnQ6OlRyeUZyb208YXV0b21lcmdlX3dhc206OmludGVyb3A6OkpTPiBmb3IgYXV0b21lcmdlOjpzeW5jOjpzdGF0ZTo6SGF2ZT46OnRyeV9mcm9tOjpoMDE2MTMzOWJlMmEzZDU5MPYIYTxjb3JlOjptYXJrZXI6OlBoYW50b21EYXRhPFQ+IGFzIHNlcmRlX2NvcmU6OmRlOjpEZXNlcmlhbGl6ZVNlZWQ+OjpkZXNlcmlhbGl6ZTo6aGIwNmM2NzYxMjEwMTFkYmT3CGE8Y29yZTo6bWFya2VyOjpQaGFudG9tRGF0YTxUPiBhcyBzZXJkZV9jb3JlOjpkZTo6RGVzZXJpYWxpemVTZWVkPjo6ZGVzZXJpYWxpemU6Omg5MzQ1MDhlZWZkMjAyMzVi+AhsPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6OnNldDo6SXRlcjxUPiBhcyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvcj46Om5leHQ6Omg3ZjdmN2JkNGU1NDA5MjQw+Qg7c2VyZGVfanNvbjo6ZGU6OkRlc2VyaWFsaXplcjxSPjo6ZW5kX3NlcTo6aDQ4M2IxZWJmNTFlMDZkY2b6CFc8YXV0b21lcmdlOjpzdG9yYWdlOjpjaHVuazo6ZXJyb3I6OkNodW5rIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aDdhN2MzMDRhY2JhODNjMmT7CDxoZXhhbmU6OnNsYWI6OnRyZWU6OlNwYW5UcmVlPFQsVz46OnJlbW92ZTo6aDcyYjliZjgzYzdjODQ2YWL8CHY8YXV0b21lcmdlOjpvcF9zZXQyOjp0eXBlczo6U2NhbGFyVmFsdWUgYXMgY29yZTo6Y21wOjpQYXJ0aWFsRXE8YXV0b21lcmdlOjp2YWx1ZTo6U2NhbGFyVmFsdWU+Pjo6ZXE6Omg0NDRiZWQ4NzM1M2RhOWUx/Qg0c2ltZF9hZGxlcjMyOjppbXA6OnNjYWxhcjo6dXBkYXRlOjpoZTkwZDQ4Yjc1ZGZhYTNmNv4IQWhleGFuZTo6Y29sdW1uZGF0YTo6Q29sdW1uRGF0YUl0ZXI8Qz46OnBvcF9ydW46Omg4Y2M2MjMzZWY2Y2UwOTg2/wiFATxhdXRvbWVyZ2U6OmNvbHVtbmFyOjpjb2x1bW5fcmFuZ2U6OnZhbHVlOjpWYWx1ZU1ldGEgYXMgY29yZTo6Y29udmVydDo6RnJvbTwmYXV0b21lcmdlOjp2YWx1ZTo6U2NhbGFyVmFsdWU+Pjo6ZnJvbTo6aGE1MWVlN2YxMDFkMmJlOTaACT5oYXNoYnJvd246Om1hcDo6SGFzaE1hcDxLLFYsUyxBPjo6Z2V0X2lubmVyOjpoNzBiZjFhM2M0ZjZjYzhlMoEJSGhleGFuZTo6c2xhYjo6dHJlZTo6U3BhblRyZWVGbkl0ZXI8VCxXLEY+Ojpwb3BfY3Vyc29yOjpoYTkxNTU4YzZiZGI2Njc5ZoIJcDxhbGxvYzo6dmVjOjpWZWM8VD4gYXMgYWxsb2M6OnZlYzo6c3BlY19mcm9tX2l0ZXJfbmVzdGVkOjpTcGVjRnJvbUl0ZXJOZXN0ZWQ8VCxJPj46OmZyb21faXRlcjo6aDc2MTllMWE1NDU5OWVmMjGDCTVoZXhhbmU6OmN1cnNvcjo6Q29sdW1uQ3Vyc29yOjpzZWVrOjpoY2IwYThjYjRiNzNhZThkMYQJLWhleGFuZTo6ZW5jb2Rlcjo6Zmx1c2hfcnVuOjpoYTBlOGRjNDZlNzJlYTAzOYUJRGF1dG9tZXJnZTo6c3RvcmFnZTo6Y2hhbmdlOjpDaGFuZ2U8Tz46OmludG9fb3duZWQ6OmhmZTFhYmQ2MmYwNTY1OTdlhglFPHNlcmRlX2NvcmU6OmRlOjpPbmVPZiBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmhiZGU5YWViZWJlMjc1YWVjhwloPGNvcmU6Oml0ZXI6OmFkYXB0ZXJzOjptYXA6Ok1hcDxJLEY+IGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6bmV4dDo6aDA2MjcyMTljYTRjMTQ0NmOICUFoZXhhbmU6OmNvbHVtbmRhdGE6OkNvbHVtbkRhdGFJdGVyPEM+Ojpwb3BfcnVuOjpoNTc5MzNkNzhhZWY3NWQ4MIkJSGhleGFuZTo6c2xhYjo6dHJlZTo6U3BhblRyZWVGbkl0ZXI8VCxXLEY+Ojpwb3BfY3Vyc29yOjpoYjAxNzEzYjk4MTNhOWIyMYoJP2F1dG9tZXJnZTo6aXRlcjo6c3BhbnM6OlNwYW5JbnRlcm5hbDo6ZXhwb3J0OjpoNzI1NmVmNzc1YjY0ZWRhMYsJTjxhdXRvbWVyZ2U6OmVycm9yOjpIeWRyYXRlRXJyb3IgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoY2Q3NTRiODRiNzAyN2U0Y4wJUWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhdXRvbWVyZ2U6OmNoYW5nZV9ncmFwaDo6Q2hhbmdlR3JhcGg+OjpoZjViNDBiY2JhNmNmYzZkZI0JRGhleGFuZTo6ZW5jb2Rlcjo6RW5jb2RlcjxDPjo6c2F2ZV90b191bmxlc3NfZW1wdHk6OmgzNjNkYWJmOTBjOTQzNWNkjgkdYXV0b21lcmdlX2dldENoYW5nZU1ldGFCeUhhc2iPCXI8Y29yZTo6aXRlcjo6YWRhcHRlcnM6OmZsYXR0ZW46OkZsYXRNYXA8SSxVLEY+IGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6bmV4dDo6aDVhYzY2YWVlNGMwOTA0NDOQCfsBYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6SGFuZGxlPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpNdXQsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6SW50ZXJuYWw+LGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6S1Y+OjpzcGxpdDo6aGE5NWU4Mjg3M2EwNmRlNzORCT1hdXRvbWVyZ2U6OmF1dG9tZXJnZTo6QXV0b21lcmdlOjpzcGFuc19mb3I6OmhlZjg3NWJlZDQ1OGI0MzcykglOPGF1dG9tZXJnZTo6Y2xvY2s6OkNsb2NrUmFuZ2UgYXMgY29yZTo6Y2xvbmU6OkNsb25lPjo6Y2xvbmU6Omg2OGQ1YjBiYjljNTRkMjJikwlEYXV0b21lcmdlX3dhc206OkF1dG9tZXJnZTo6aW5pdF9yb290X2Zyb21faHlkcmF0ZTo6aGM2ZTY3ZGRiZWUwZjliODCUCTJhbGxvYzo6c3luYzo6QXJjPFQsQT46Om1ha2VfbXV0OjpoYzFjNDIwZjk3Y2RkYWJiMZUJP2F1dG9tZXJnZTo6YXV0b21lcmdlOjpBdXRvbWVyZ2U6OnRyYW5zYWN0aW9uOjpoNDU1ZDIwOGNkYTIwMTRjZZYJO2hhc2hicm93bjo6bWFwOjpIYXNoTWFwPEssVixTLEE+OjpyZW1vdmU6OmhjOGJkZmYwNTRmYWY2YTE1lwlYY29yZTo6bnVtOjpmbHQyZGVjOjpzdHJhdGVneTo6Z3Jpc3U6OmZvcm1hdF9leGFjdF9vcHQ6OnBvc3NpYmx5X3JvdW5kOjpoNmFmZWU5OWRhMDhhMTkzM5gJT2F1dG9tZXJnZV93YXNtOjpleHBvcnRfY2FjaGU6OkV4cG9ydENhY2hlOjpleHBvcnRfc2NhbGFyX3JlZjo6aDZmNTM4ZjZiYmUwYjVjZmOZCWg8aGV4YW5lOjpjb2x1bW5kYXRhOjpDb2xHcm91cEl0ZXI8Qz4gYXMgY29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+OjpuZXh0OjpoNDZjYzU5NWNjNWQyNmVhMJoJWjxzdGQ6OmNvbGxlY3Rpb25zOjpoYXNoOjpzZXQ6Okhhc2hTZXQ8VCxTPiBhcyBjb3JlOjpjbXA6OlBhcnRpYWxFcT46OmVxOjpoM2I0NmMzNGQzNmI5MGMxOZsJGWF1dG9tZXJnZV9kaWZmSW5jcmVtZW50YWycCT5hdXRvbWVyZ2Vfd2FzbTo6QXV0b21lcmdlOjpnZXRfbWlzc2luZ19kZXBzOjpoYTQ0OTYzNmVhODFiNjMyNJ0JQWhleGFuZTo6Y29sdW1uZGF0YTo6Q29sdW1uRGF0YUl0ZXI8Qz46OnBvcF9ydW46OmhjNDQ1YmVhYzQ0YzhlZGFhngk3Y29yZTo6c2xpY2U6OnNvcnQ6OnVuc3RhYmxlOjppcG5zb3J0OjpoZDNmZDMzMzJkMjk1NGYyZp8JTzxhdXRvbWVyZ2U6OnN0b3JhZ2U6OmxvYWQ6OkVycm9yIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aDdmZTM0YTk3Y2NjMmIwY2agCStzdGQ6OnRocmVhZDo6VGhyZWFkOjpuZXc6OmhhNGY1YTQ2NTg4ZmRlMjdloQlMY29yZTo6c2xpY2U6OnNvcnQ6OnNoYXJlZDo6c21hbGxzb3J0OjpiaWRpcmVjdGlvbmFsX21lcmdlOjpoMzYzODQwZWYzNTg5YWYyM6IJN2hleGFuZTo6Y3Vyc29yOjpDb2x1bW5DdXJzb3I6OmVuY29kZTo6aGI2ZTZhODNlNDc1OTFhNjWjCTZhdXRvbWVyZ2U6OnN0b3JhZ2U6OnBhcnNlOjphY3Rvcl9pZDo6aDcwN2MyYjhlMTAyZTViZTGkCZIBYXV0b21lcmdlX3dhc206OmludGVyb3A6OjxpbXBsIGNvcmU6OmNvbnZlcnQ6OlRyeUZyb208YXV0b21lcmdlX3dhc206OmludGVyb3A6OkpTPiBmb3IgYXV0b21lcmdlOjpzeW5jOjpNZXNzYWdlRmxhZ3M+Ojp0cnlfZnJvbTo6aGNhMTQxMDIzNzk4ZDlkY2SlCWg8aGV4YW5lOjpjb2x1bW5kYXRhOjpDb2xHcm91cEl0ZXI8Qz4gYXMgY29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+OjpuZXh0OjpoZTJiYWE2YzJlN2ZhZjA3ZKYJUWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhdXRvbWVyZ2U6Om9wX3NldDI6OmNvbHVtbnM6OkNvbHVtbnM+OjpoNjllMzA4ZDI1NzEyN2JjN6cJO2hhc2hicm93bjo6bWFwOjpIYXNoTWFwPEssVixTLEE+OjpyZW1vdmU6OmhiMDA3NjdhYzlhODUwMjAyqAlIYXV0b21lcmdlOjphdXRvY29tbWl0OjpBdXRvQ29tbWl0Ojp1cGRhdGVfZGlmZl9jdXJzb3I6Omg3Njk3ZTQwOTliNmI2ZDE1qQlrPGF1dG9tZXJnZTo6aXRlcjo6bGlzdF9yYW5nZTo6TGlzdFJhbmdlIGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6bmV4dDo6aDA1YmRhZDVjMmIxMGNhNGaqCU91bmljb2RlX3NlZ21lbnRhdGlvbjo6Z3JhcGhlbWU6OkdyYXBoZW1lQ3Vyc29yOjpoYW5kbGVfZW1vamk6Omg3YTQ0MTgyODBkNzhjNjBiqwkZYXV0b21lcmdlX2dldENoYW5nZUJ5SGFzaKwJD2ltcG9ydFN5bmNTdGF0Za0JUnVuaWNvZGVfc2VnbWVudGF0aW9uOjpncmFwaGVtZTo6R3JhcGhlbWVDdXJzb3I6OmhhbmRsZV9lbW9qaTo6aDdhNDQxODI4MGQ3OGM2MGJbMV2uCXI8Y29yZTo6aXRlcjo6YWRhcHRlcnM6OmZsYXR0ZW46OkZsYXRNYXA8SSxVLEY+IGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6bmV4dDo6aGQyMTExMGNiZGI5MjQ4YmavCV88YXV0b21lcmdlOjpzZXF1ZW5jZV90cmVlOjpTZXF1ZW5jZVRyZWVOb2RlPFQ+IGFzIGNvcmU6OmNsb25lOjpDbG9uZT46OmNsb25lOjpoZDhlZTgyZGNiZTYwMmI3ZbAJXzxhdXRvbWVyZ2U6OnNlcXVlbmNlX3RyZWU6OlNlcXVlbmNlVHJlZU5vZGU8VD4gYXMgY29yZTo6Y2xvbmU6OkNsb25lPjo6Y2xvbmU6OmgyZTQ5ZDk3ZmMxODQzMDBlsQlxPGhleGFuZTo6Y29sdW1uZGF0YTo6Q29sdW1uRGF0YTxDPiBhcyBjb3JlOjppdGVyOjp0cmFpdHM6OmNvbGxlY3Q6OkZyb21JdGVyYXRvcjxNPj46OmZyb21faXRlcjo6aGEzNGRhZjg0MTMyNzQ1NDmyCT9hdXRvbWVyZ2U6Om9wX3NldDI6OmNoYW5nZTo6QWN0b3JNYXBwZXI6Om5ldzo6aDBkM2E0ODEwYjYyNTc2ZTezCV88YXV0b21lcmdlOjpzZXF1ZW5jZV90cmVlOjpTZXF1ZW5jZVRyZWVOb2RlPFQ+IGFzIGNvcmU6OmNsb25lOjpDbG9uZT46OmNsb25lOjpoYWMwMWRhODhiZWNkYTg4NbQJXzxhdXRvbWVyZ2U6OnNlcXVlbmNlX3RyZWU6OlNlcXVlbmNlVHJlZU5vZGU8VD4gYXMgY29yZTo6Y2xvbmU6OkNsb25lPjo6Y2xvbmU6OmhlMTg0YTc1NWI4OTYyZDNhtQkxY29yZTo6cHRyOjpzd2FwX25vbm92ZXJsYXBwaW5nOjpoNGQ1OGFiNDE2OGRiMDE0NbYJbDxjb3JlOjppdGVyOjphZGFwdGVyczo6R2VuZXJpY1NodW50PEksUj4gYXMgY29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+OjpuZXh0OjpoODRmZWUxMjVmOGEwODBkY7cJMWNvcmU6OnB0cjo6c3dhcF9ub25vdmVybGFwcGluZzo6aDJkMDFlNmM4OTRiZDc4Yze4CTNhbGxvYzo6Zm10Ojpmb3JtYXQ6OmZvcm1hdF9pbm5lcjo6aDVmODNkMTdhNzNhMWFlN2K5CVc8ZmxhdGUyOjpkZWZsYXRlOjpidWZyZWFkOjpEZWZsYXRlRW5jb2RlcjxSPiBhcyBzdGQ6OmlvOjpSZWFkPjo6cmVhZDo6aDNiMGE1ZWU3ODNhZmRjNDG6CTxhdXRvbWVyZ2U6OmF1dG9tZXJnZTo6QXV0b21lcmdlOjp0ZXh0X2Zvcjo6aGExNWJjNTNmODBjNWQ1OTC7CWk8YXV0b21lcmdlOjppdGVyOjpsaXN0X3JhbmdlOjpMaXN0SXRlciBhcyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvcj46Om50aDo6aGMyZjMwNWNmOWE0NjZjMTe8CV08YXV0b21lcmdlOjp0ZXh0X3ZhbHVlOjpHcmFwaGVtZSBhcyBhdXRvbWVyZ2U6OnRleHRfdmFsdWU6OlRleHRWYWx1ZT46Om5ldzo6aGFhYTViZjVkOTM3NjY2NTi9CTtoZXhhbmU6OmRlbHRhOjpEZWx0YVN0YXRlOjpwZW5kaW5nX2RlbHRhOjpoYzgxODEzYTlmZjViNzYzML4JRWhleGFuZTo6ZGVsdGE6OkRlbHRhQ3Vyc29ySW50ZXJuYWw8Xz46OmZsdXNoX3R3aWNlOjpoNzM3OGZmYzRmMGQ0ZTIxNL8Jcjxjb3JlOjppdGVyOjphZGFwdGVyczo6ZmxhdHRlbjo6RmxhdE1hcDxJLFUsRj4gYXMgY29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+OjpuZXh0OjpoZjA5MDE0ZTRkZjg0MjJlNsAJPGF1dG9tZXJnZTo6YXV0b21lcmdlOjpBdXRvbWVyZ2U6OmtleXNfZm9yOjpoNzY2ZmY1M2NmN2MxNTNjZMEJggE8SSBhcyBhdXRvbWVyZ2U6OmNvbHVtbmFyOjplbmNvZGluZzo6Y29sdW1uX2RlY29kZXI6OkNvbHVtbkRlY29kZXI8Y29yZTo6b3B0aW9uOjpPcHRpb248VD4+Pjo6bWF5YmVfbmV4dF9pbl9jb2w6OmgzNGQzZDU5YTNjMTFjMjJlwgldPGF1dG9tZXJnZTo6dGV4dF92YWx1ZTo6VXRmMTYgYXMgYXV0b21lcmdlOjp0ZXh0X3ZhbHVlOjpUZXh0VmFsdWU+OjpyZW1vdmU6OmhkNTEyYjM2ZjA0Mzc2YWQywwlhPGF1dG9tZXJnZTo6dGV4dF92YWx1ZTo6Q29kZVBvaW50IGFzIGF1dG9tZXJnZTo6dGV4dF92YWx1ZTo6VGV4dFZhbHVlPjo6cmVtb3ZlOjpoZDI5NThkYjgxNzc3MDk0M8QJYDxhdXRvbWVyZ2U6Om9wX3NldDI6Om9wX3NldDo6b3BfaXRlcjo6UmVhZE9wRXJyb3IgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoNDhlZDkxZTYzZTYxZDc3NsUJPGRsbWFsbG9jOjpkbG1hbGxvYzo6RGxtYWxsb2M8QT46Om1lbWFsaWduOjpoMWQ4OGIwNjhhYjIxYjQ3ZcYJSGF1dG9tZXJnZV93YXNtOjpleHBvcnRfY2FjaGU6OkV4cG9ydENhY2hlOjpzZXRfaGlkZGVuOjpoYTA1Y2MxNWIyYmM2Yjg0OMcJRnNlcmRlX2pzb246OmRlOjpEZXNlcmlhbGl6ZXI8Uj46OnBhcnNlX2xvbmdfaW50ZWdlcjo6aDczMmE2MzI4ZmNhOWNlNjjICUY8YWxsb2M6OnZlYzo6VmVjPFQsQT4gYXMgY29yZTo6Y2xvbmU6OkNsb25lPjo6Y2xvbmU6Omg1ZWY4Mzg1ZThjZTU5NmE2yQlbPGF1dG9tZXJnZTo6c3RvcmFnZTo6YnVuZGxlOjplcnJvcjo6UGFyc2VFcnJvciBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMzJjOTZmZWI0YmFiNDY5NcoJUTxUIGFzIGFsbG9jOjpzbGljZTo6PGltcGwgW1RdPjo6dG9fdmVjX2luOjpDb252ZXJ0VmVjPjo6dG9fdmVjOjpoYTZhMWZmMGZjZjE0YjM0OMsJRmF1dG9tZXJnZTo6aXRlcjo6ZG9jOjpEb2NJdGVySW50ZXJuYWw6OnByb2Nlc3NfaXRlbTo6aDlkODYzYzE3Y2E5NDI2NzfMCZABYXV0b21lcmdlOjpsZWdhY3k6OnNlcmRlX2ltcGxzOjpjaGFuZ2VfaGFzaDo6PGltcGwgc2VyZGVfY29yZTo6ZGU6OkRlc2VyaWFsaXplIGZvciBhdXRvbWVyZ2U6OnR5cGVzOjpDaGFuZ2VIYXNoPjo6ZGVzZXJpYWxpemU6OmgyNTQyNzdkZDMyMTJiZWU4zQkOYXV0b21lcmdlX2ZvcmvOCTthdXRvbWVyZ2U6Oml0ZXI6OnNwYW5zOjpTcGFuU3RhdGU6OmZsdXNoOjpoMmZiZTY3YTM4ODg3MzEwNM8JOXRyYWNpbmc6Ol9fbWFjcm9fc3VwcG9ydDo6X19pc19lbmFibGVkOjpoMGEzOTQzNzNhYjBmZmI0NNAJQmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhdXRvbWVyZ2U6OmxlZ2FjeTo6T3A+OjpoM2EzZjZjNWE3YzAxNjVkMtEJUmNvcmU6OnNsaWNlOjpzb3J0OjpzaGFyZWQ6OnNtYWxsc29ydDo6aW5zZXJ0aW9uX3NvcnRfc2hpZnRfbGVmdDo6aDMyMmQ2YzlkZjIwYWEwY2LSCTphdXRvbWVyZ2U6OmF1dG9jb21taXQ6OkF1dG9Db21taXQ6OmZvcms6Omg5ZjkxMzJkZWU5ZjJjZWI50wlcPGF1dG9tZXJnZTo6dGV4dF92YWx1ZTo6VXRmOCBhcyBhdXRvbWVyZ2U6OnRleHRfdmFsdWU6OlRleHRWYWx1ZT46OnJlbW92ZTo6aGI1ZjA3ZTAyNzY0ZmVmNjLUCVs8YXV0b21lcmdlX3dhc206OmludGVyb3A6OmVycm9yOjpJbnZhbGlkU3BhbiBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmhiMWU2ZGE0OTEzOGFmMmNl1QkxYXV0b21lcmdlX3dhc206OkF1dG9tZXJnZTo6bmV3OjpoZGU3ZmE1ZDdlODJjYzMzOdYJEWVuY29kZVN5bmNNZXNzYWdl1wk7YXV0b21lcmdlOjpvcF9zZXQyOjpvcDo6T3A6OnRhZ2dlZF92YWx1ZTo6aDYxNTZjYzBiZTg2OTY0NGTYCU88YXV0b21lcmdlX3dhc206OmVycm9yOjpHZXRCbG9jayBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6Omg3MTJjOTA0ZDViYjQ4MzU42QlPPGF1dG9tZXJnZV93YXNtOjplcnJvcjo6R2V0U3BhbnMgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoNjMyOTc5MDQ2ZDE4NTZiN9oJO2hhc2hicm93bjo6bWFwOjpIYXNoTWFwPEssVixTLEE+OjpyZW1vdmU6OmgwMWM3YzJkYjJmZTUyZGEz2wlFPHN0ZDo6aW86OmVycm9yOjpFcnJvciBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6Omg4MWI2ODNkOWY5NDg3ODli3AlRc3RkOjpzeXM6OnRocmVhZF9sb2NhbDo6bm9fdGhyZWFkczo6TGF6eVN0b3JhZ2U8VD46OmluaXRpYWxpemU6Omg0YjYwZTQ1ZDlkMmI2ODlh3QmXAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6OkludG9JdGVyPHNtb2xfc3RyOjpTbW9sU3RyLGFsbG9jOjp2ZWM6OlZlYzxhdXRvbWVyZ2U6Om1hcmtzOjpNYXJrQWNjSXRlbT4+Pjo6aGVmNjUyNTI0MDhhYmM1MDfeCYoBPGF1dG9tZXJnZTo6b3Bfc2V0Mjo6b3Bfc2V0OjptYXJrX2luZGV4OjpNYXJrSW5kZXhTcGFubmVyIGFzIGhleGFuZTo6c2xhYjo6dHJlZTo6U3BhbldlaWdodDxoZXhhbmU6OnNsYWI6OlNsYWI+Pjo6dW5pb246OmgyMzA3MGFlMDhhZGRmZjUy3wljPGhleGFuZTo6cmxlOjpSbGVDdXJzb3I8XyxQLFg+IGFzIGhleGFuZTo6Y3Vyc29yOjpDb2x1bW5DdXJzb3I+Ojpjb21wdXRlX21pbl9tYXg6OmhkYzg2NDI2M2VjMjIyOWRi4Ak2YXV0b21lcmdlOjpvcF9zZXQyOjpvcDo6T3A6Om9wX3R5cGU6OmhiYjVkOGQ0NjI2NzQwYjdm4QlfPGF1dG9tZXJnZTo6c2VxdWVuY2VfdHJlZTo6U2VxdWVuY2VUcmVlTm9kZTxUPiBhcyBjb3JlOjpjbG9uZTo6Q2xvbmU+OjpjbG9uZTo6aDNkOTEzN2JiNTA0MzU5YzPiCT5hdXRvbWVyZ2U6OmF1dG9jb21taXQ6OkF1dG9Db21taXQ6OmRpZmZfb2JqOjpoZWYwNjIwNDVkOTA2Yzk1N+MJVWF1dG9tZXJnZTo6Y29sdW1uYXI6OmVuY29kaW5nOjpybGU6OlJsZUVuY29kZXI8UyxUPjo6Zmx1c2hfbGl0X3J1bjo6aDBjMWU2MDMxY2Q5OTZkZDfkCV88YXV0b21lcmdlOjpzZXF1ZW5jZV90cmVlOjpTZXF1ZW5jZVRyZWVOb2RlPFQ+IGFzIGNvcmU6OmNsb25lOjpDbG9uZT46OmNsb25lOjpoYTUwNTQyNDViMGQ1NjJhOOUJSGhleGFuZTo6c2xhYjo6dHJlZTo6U3BhblRyZWVGbkl0ZXI8VCxXLEY+Ojpwb3BfY3Vyc29yOjpoNDA1OGE5ZjFkNjllMzllMeYJSGhhc2hicm93bjo6cmF3OjpSYXdUYWJsZUlubmVyOjpmYWxsaWJsZV93aXRoX2NhcGFjaXR5OjpoOGUyOWE5ZGM1OTAwYjgwOOcJSGhleGFuZTo6c2xhYjo6dHJlZTo6U3BhblRyZWVGbkl0ZXI8VCxXLEY+Ojpwb3BfY3Vyc29yOjpoMDA5ZGE1ZTMzMWEwOThlNOgJ+wFhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpIYW5kbGU8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6Ok11dCxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpJbnRlcm5hbD4sYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpLVj46OnNwbGl0OjpoODg0YTVkNzlhZmMzYTUzZOkJSGhhc2hicm93bjo6cmF3OjpSYXdUYWJsZUlubmVyOjpmYWxsaWJsZV93aXRoX2NhcGFjaXR5OjpoOGJlNDM1MDhiYjg1YTQyMOoJZzxhdXRvbWVyZ2U6Oml0ZXI6Om1hcF9yYW5nZTo6TWFwSXRlciBhcyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvcj46Om50aDo6aGI4NzBkN2FiNTZiYmM3ZjXrCWI8YXV0b21lcmdlOjppdGVyOjpzcGFuczo6U3BhbnMgYXMgY29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+OjpuZXh0OjpoYTRmYTNkMzgyODYzNTViOOwJQmF1dG9tZXJnZTo6c3RvcmFnZTo6cGFyc2U6OmFwcGx5X246Ont7Y2xvc3VyZX19OjpoYTg2NDIzYzgxNTZhYmNhMu0JbDxjb3JlOjppdGVyOjphZGFwdGVyczo6Y29waWVkOjpDb3BpZWQ8ST4gYXMgY29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+OjpuZXh0OjpoNDk1MTk0MmYwYmUzNjczYu4JOGF1dG9tZXJnZTo6YXV0b21lcmdlOjpBdXRvbWVyZ2U6OmR1bXA6OmgyOTE2NDlhNmIwMmI5YTRi7wlVYXV0b21lcmdlOjpjb2x1bW5hcjo6ZW5jb2Rpbmc6OnJsZTo6UmxlRW5jb2RlcjxTLFQ+OjpmbHVzaF9saXRfcnVuOjpoMTQ1MDU5Nzc5ZjMxMzljOPAJ+wFhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpIYW5kbGU8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6Ok11dCxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpJbnRlcm5hbD4sYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpLVj46OnNwbGl0OjpoZTJkY2ExY2FiNjkyZjFiMPEJ+wFhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpIYW5kbGU8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6Ok11dCxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpJbnRlcm5hbD4sYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpLVj46OnNwbGl0OjpoYzNmM2YxZDc1ZTM1ZGRhOPIJXGF1dG9tZXJnZTo6Y29sdW1uYXI6OmVuY29kaW5nOjpjb2x1bW5fZGVjb2Rlcjo6Q29sdW1uRGVjb2Rlcjo6bmV4dF9pbl9jb2w6OmhiMmQ0ODNlZjU5Yzc2MGEy8wk4YXV0b21lcmdlOjpzeW5jOjpzdGF0ZTo6U3RhdGU6OmVuY29kZTo6aDMyMzM1OGIzYmE0N2M1YTD0CVI8YXV0b21lcmdlX3dhc206OmVycm9yOjpVcGRhdGVTcGFucyBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmhhYzc0ZDYyMGRlM2NmZjI09Qlnc3RkOjppbzo6ZXJyb3I6OjxpbXBsIGNvcmU6OmZtdDo6RGVidWcgZm9yIHN0ZDo6aW86OmVycm9yOjpyZXByX3VucGFja2VkOjpSZXByPjo6Zm10OjpoMWQ2NjQ5Y2YxODA2ODEzY/YJbDxjb3JlOjppdGVyOjphZGFwdGVyczo6R2VuZXJpY1NodW50PEksUj4gYXMgY29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+OjpuZXh0OjpoYWI5YjQwODFmOWM3Y2I5YvcJbDxjb3JlOjppdGVyOjphZGFwdGVyczo6R2VuZXJpY1NodW50PEksUj4gYXMgY29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+OjpuZXh0OjpoMDUzMWE1YjI0YzgxYWNkNfgJ9wFhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpIYW5kbGU8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6Ok11dCxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpMZWFmPixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OktWPjo6c3BsaXQ6Omg5ZGM0OTIwMGVhODZiYzYy+QlIaGV4YW5lOjpzbGFiOjp0cmVlOjpTcGFuVHJlZUZuSXRlcjxULFcsRj46OnBvcF9jdXJzb3I6OmgxMDFjNjgzMjkwMzk3MTc3+glCY29yZTo6Zm10OjpGb3JtYXR0ZXI6OmRlYnVnX3R1cGxlX2ZpZWxkMl9maW5pc2g6OmhjMjk4ZDA2YmQyMTBmZDBj+wlLPGF1dG9tZXJnZTo6dmFsdWU6OlNjYWxhclZhbHVlIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmgyYzQ1YzI3MmRhMWIyYTgy/AlBc3RkOjppbzo6ZGVmYXVsdF9yZWFkX3RvX2VuZDo6c21hbGxfcHJvYmVfcmVhZDo6aDk0ZDQxZjRmMzBiZGVhZjP9CUFzdGQ6OmlvOjpkZWZhdWx0X3JlYWRfdG9fZW5kOjpzbWFsbF9wcm9iZV9yZWFkOjpoYTg1OGQxNmY0MWZmMGYzZf4JTjxhdXRvbWVyZ2U6OnZhbHVlOjpTY2FsYXJWYWx1ZSBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMmM0NWMyNzJkYTFiMmE4MlsxXf8JTmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhdXRvbWVyZ2U6Oml0ZXI6OnNwYW5zOjpTcGFuU3RhdGU+OjpoYmViODQ4N2EwMjYzMTAxOYAKQGRsbWFsbG9jOjpkbG1hbGxvYzo6RGxtYWxsb2M8QT46OnVubGlua19jaHVuazo6aGJlMGU2ZjVmODNjZGFlYjGBCkZhdXRvbWVyZ2Vfd2FzbTo6ZXhwb3J0X2NhY2hlOjpFeHBvcnRDYWNoZTo6bWFrZV9tYXA6OmhiYzQwMzlmNTE2N2U4ZmMwggpHYXV0b21lcmdlX3dhc206OmV4cG9ydF9jYWNoZTo6RXhwb3J0Q2FjaGU6Om1ha2VfbGlzdDo6aDkzYmRjZTYxMjczN2M0YjODCkthdXRvbWVyZ2U6Om9wX3NldDI6OmNvbHVtbnM6OkNvbHVtbnM6OndyaXRlX3VubGVzc19lbXB0eTo6aDE0M2FjYWExMjk5Zjc3MDiEClc8ZmxhdGUyOjpkZWZsYXRlOjpidWZyZWFkOjpEZWZsYXRlRGVjb2RlcjxSPiBhcyBzdGQ6OmlvOjpSZWFkPjo6cmVhZDo6aDY2MzQzMDg0MmU1ODZhNjaFClJjb3JlOjpzbGljZTo6c29ydDo6c2hhcmVkOjpzbWFsbHNvcnQ6Omluc2VydGlvbl9zb3J0X3NoaWZ0X2xlZnQ6OmhkYTM2OWU0ZDZmOGM2OWIzhgoXX19leHRlcm5yZWZfdGFibGVfYWxsb2OHCkxjb3JlOjp1bmljb2RlOjp1bmljb2RlX2RhdGE6OmdyYXBoZW1lX2V4dGVuZDo6bG9va3VwX3Nsb3c6Omg2OGFjMDllOTYwYTBjZmU1iAowYXV0b21lcmdlX3dhc206OmRlY29kZV9jaGFuZ2U6OmgzYjliNDYzNGVmNTlkODdhiQpyPGNvcmU6Oml0ZXI6OmFkYXB0ZXJzOjpmbGF0dGVuOjpGbGF0TWFwPEksVSxGPiBhcyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvcj46Om5leHQ6Omg0NDE5ZjIzOWNiMGRmYWFjigpMPGF1dG9tZXJnZTo6aHlkcmF0ZTo6bGlzdDo6TGlzdCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoYmJjMzA3ZjYyZTkyMDA0NYsKD2F1dG9tZXJnZV9tZXJnZYwKcjxjb3JlOjppdGVyOjphZGFwdGVyczo6ZmxhdHRlbjo6RmxhdE1hcDxJLFUsRj4gYXMgY29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+OjpuZXh0OjpoNGIyZjI2ZjBlODRjMjUyZY0KVDxhdXRvbWVyZ2U6Om9wX3NldDI6OnR5cGVzOjpTY2FsYXJWYWx1ZSBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMjY0MTU0ODlmZjhmNTU1OI4KggE8SSBhcyBhdXRvbWVyZ2U6OmNvbHVtbmFyOjplbmNvZGluZzo6Y29sdW1uX2RlY29kZXI6OkNvbHVtbkRlY29kZXI8Y29yZTo6b3B0aW9uOjpPcHRpb248VD4+Pjo6bWF5YmVfbmV4dF9pbl9jb2w6OmgxM2I2ZGQ1ZmZiMDVjZjI2jwpZPGF1dG9tZXJnZV93YXNtOjppbnRlcm9wOjplcnJvcjo6SW1wb3J0T2JqIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aGJkZGJiNDUyMmNkYjAyYjWQCnM8c2VyZGVfd2FzbV9iaW5kZ2VuOjpzZXI6Ok9iamVjdFNlcmlhbGl6ZXIgYXMgc2VyZGVfY29yZTo6c2VyOjpTZXJpYWxpemVTdHJ1Y3Q+OjpzZXJpYWxpemVfZmllbGQ6OmgxMDUzNzhmZWM4YTdkNjUykQoPYXV0b21lcmdlX2Nsb25lkgpsY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGF1dG9tZXJnZTo6Y29sdW1uYXI6OmVuY29kaW5nOjpybGU6OlJsZVN0YXRlPHNtb2xfc3RyOjpTbW9sU3RyPj46OmgzYTk1YTZiOGJjZTRkNDVikwpNYXV0b21lcmdlOjphdXRvbWVyZ2U6OkF1dG9tZXJnZTo6Z2V0X29yX2NyZWF0ZV9hY3Rvcl9pbmRleDo6aDA4ZGVlZDg5NGQ5YzE2NTSUCno8YXV0b21lcmdlOjpvcF9zZXQyOjpvcF9zZXQ6Om9wX2l0ZXI6OkFjdGlvblZhbHVlSXRlciBhcyBhdXRvbWVyZ2U6Oml0ZXI6OnRvb2xzOjpTaGlmdGFibGU+OjpzaGlmdF9uZXh0OjpoODYyMTY4Y2MwZTZkOGQwNpUKQmhleGFuZTo6Y29sdW1uZGF0YTo6Q29sdW1uRGF0YUl0ZXI8Qz46Om5leHRfcnVuOjpoZjVjNjFjNGNiOWQ3OWNmM5YKQmhleGFuZTo6Y29sdW1uZGF0YTo6Q29sdW1uRGF0YUl0ZXI8Qz46Om5leHRfcnVuOjpoMmVjMDkyNThiYWRlZDFiM5cKNWhleGFuZTo6Y3Vyc29yOjpDb2x1bW5DdXJzb3I6OnNlZWs6OmgwODE0MzZjYTZlN2FhNmFimApBYXV0b21lcmdlOjphdXRvY29tbWl0OjpBdXRvQ29tbWl0Ojpjb21taXRfd2l0aDo6aGU2NTU4NzVlMWQyZDA3NzmZCjdjb3JlOjpwYW5pY2tpbmc6OmFzc2VydF9mYWlsZWRfaW5uZXI6Omg4ZmQ2MDMzZjFkOTAxOWMymgpsPGNvcmU6Oml0ZXI6OmFkYXB0ZXJzOjpHZW5lcmljU2h1bnQ8SSxSPiBhcyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvcj46Om5leHQ6Omg0MWUwMTMyZmQzNzM2NjRimwpzPHNlcmRlX3dhc21fYmluZGdlbjo6c2VyOjpPYmplY3RTZXJpYWxpemVyIGFzIHNlcmRlX2NvcmU6OnNlcjo6U2VyaWFsaXplU3RydWN0Pjo6c2VyaWFsaXplX2ZpZWxkOjpoNDdlZjU2MDE1Y2Q5Yjc3OZwKajxoZXhhbmU6OnNsYWI6OnRyZWU6OlNwYW5UcmVlSXRlcjxULFc+IGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6bmV4dDo6aDE1ZjVkZjgxNjg0NDg3MmadClY8YXV0b21lcmdlOjpzdG9yYWdlOjpjaGFuZ2U6OlBhcnNlRXJyb3IgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoYmViMzUwMTExNjY2MGNkM54KQmhleGFuZTo6c2xhYjo6d3JpdGVyOjpTbGFiV3JpdGVyPFA+OjpjbG9zZV9zbGFiOjpoNDZjNTJlNTk5Njg3MzM3Np8KQmhleGFuZTo6c2xhYjo6d3JpdGVyOjpTbGFiV3JpdGVyPFA+OjpjbG9zZV9zbGFiOjpoODI3MGRmYTE4OWU2YmRjNqAKN2hleGFuZTo6Y3Vyc29yOjpDb2x1bW5DdXJzb3I6OmVuY29kZTo6aDA0OTcyNWNiN2E4MTg1OWahClVhdXRvbWVyZ2U6OmNvbHVtbmFyOjplbmNvZGluZzo6cmxlOjpSbGVFbmNvZGVyPFMsVD46OmZsdXNoX2xpdF9ydW46OmhkNjc5NTc0YzA1ZmFlMjcyogpqYXV0b21lcmdlOjpvcF9zZXQyOjpvcF9zZXQ6Om9wX2l0ZXI6OjxpbXBsIGF1dG9tZXJnZTo6b3Bfc2V0Mjo6dHlwZXM6OktleVJlZj46OnRyeV9sb2FkOjpoZGExNTAyNWQwOGFhMWNlYqMKYzxhdXRvbWVyZ2U6OnN5bmM6OmJsb29tOjpCbG9vbUZpbHRlciBhcyBjb3JlOjpjb252ZXJ0OjpUcnlGcm9tPCZbdThdPj46OnRyeV9mcm9tOjpoNzNlZTYyNWQ4NzFjMmZhMaQKRTxnZXRyYW5kb206OmVycm9yOjpFcnJvciBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoNDdmZGJhMWFmZDIzZWE4Y6UKOGNvcmU6Om51bTo6Zmx0MmRlYzo6ZGlnaXRzX3RvX2RlY19zdHI6OmhlZWI0YThjOGQzYmU5MWEwpgrtAWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6OmZpeDo6PGltcGwgYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6Ok11dCxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpMZWFmT3JJbnRlcm5hbD4+OjpmaXhfbm9kZV9hbmRfYWZmZWN0ZWRfYW5jZXN0b3JzOjpoMjc5YTJmYWUwMTIxODkyNKcKeDxhdXRvbWVyZ2U6Om9wX3NldDI6Om9wX3NldDo6b3BfaXRlcjo6QWN0aW9uVmFsdWVJdGVyIGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6bnRoOjpoOGQ1NzY5NThkN2UxNjI2M6gKVWF1dG9tZXJnZTo6Y29sdW1uYXI6OmVuY29kaW5nOjpybGU6OlJsZUVuY29kZXI8UyxUPjo6Zmx1c2hfbGl0X3J1bjo6aGQ1NTVmNTFhZGExZDU1NmGpClg8YXV0b21lcmdlOjp0eXBlczo6QWN0b3JJZCBhcyBjb3JlOjpjb252ZXJ0OjpUcnlGcm9tPCZzdHI+Pjo6dHJ5X2Zyb206Omg5NTQ3MDIyMDA4Nzc5ZDE0qgpHYXV0b21lcmdlOjpzZXF1ZW5jZV90cmVlOjpTZXF1ZW5jZVRyZWVOb2RlPFQ+OjptZXJnZTo6aDcyY2RmNmNkZTQ1NzEwNmOrCjFoZXhhbmU6OmRlbHRhOjpfY29udGFpbnNfcmFuZ2U6OmhlNDEwMTQ3OTg5NzlkNjdhrApsPGNvcmU6Oml0ZXI6OmFkYXB0ZXJzOjpjb3BpZWQ6OkNvcGllZDxJPiBhcyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvcj46Om5leHQ6OmhmNzU0YmMxNDY5YThkZTNlrQp5PGF1dG9tZXJnZTo6b3Bfc2V0Mjo6b3Bfc2V0OjpvcF9xdWVyeTo6Rml4Q291bnRlcnM8VD4gYXMgY29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+OjpuZXh0OjpoMzVhYjk3OGViY2UxMTYyZK4KMmNvcmU6OnVuaWNvZGU6OnByaW50YWJsZTo6Y2hlY2s6Omg2ZjJmZGZhMTMxYzhkY2JkrwpLPGF1dG9tZXJnZV93YXNtOjplcnJvcjo6TWFyayBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmgyM2I0ZTI0ZTdiMDc5YTE3sApGYXV0b21lcmdlOjphdXRvY29tbWl0OjpBdXRvQ29tbWl0OjpkaWZmX2luY3JlbWVudGFsOjpoZDQxN2ZmZmFhOWU0YmYxM7EKQWF1dG9tZXJnZTo6bWFya3M6Ok1hcmtTdGF0ZU1hY2hpbmU6Om1hcmtfYWJvdmU6Omg1MzU3YWRlODczNjA1MWExsgpKPGF1dG9tZXJnZV93YXNtOjplcnJvcjo6R2V0IGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aDI0MmI5Mzg2ZjEyOGYzMWazCmo8aGV4YW5lOjpjdXJzb3I6OlJ1bkl0ZXJDb250YWluaW5nMjxDPiBhcyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvcj46Om5leHQ6OmhmMGJlYWNhYTRhN2I3NjAytApHYXV0b21lcmdlOjpjaGFuZ2VfZ3JhcGg6OkNoYW5nZUdyYXBoOjpoZWFkc190b19ub2Rlczo6aDM2MTUxZTRhYjJmODEwZTC1CkpzZXJkZV9qc29uOjpkZTo6RGVzZXJpYWxpemVyPFI+OjpwYXJzZV9kZWNpbWFsX292ZXJmbG93OjpoNzRmN2YzYTNjZWIxMWNiZbYKR2F1dG9tZXJnZTo6c2VxdWVuY2VfdHJlZTo6U2VxdWVuY2VUcmVlTm9kZTxUPjo6bWVyZ2U6OmhkMDZhYzQ2ODgwY2ExZjQ2twpHYXV0b21lcmdlOjpzZXF1ZW5jZV90cmVlOjpTZXF1ZW5jZVRyZWVOb2RlPFQ+OjptZXJnZTo6aGQ5OTlhZmMxZjIxMDUxYTG4Cmc8YXV0b21lcmdlX3dhc206OmludGVyb3A6OmVycm9yOjpJbXBvcnRVcGRhdGVTcGFuc0NvbmZpZyBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmgzNDZmMjkzODMwYmIxYTU3uQpsPGF1dG9tZXJnZV93YXNtOjppbnRlcm9wOjpBUiBhcyBjb3JlOjpjb252ZXJ0OjpGcm9tPGF1dG9tZXJnZTo6c3luYzo6TWVzc2FnZUZsYWdzPj46OmZyb206Omg2ZTAxNzliZjMzNDE0YTUxugoOYXV0b21lcmdlX3RleHS7ClFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YXV0b21lcmdlOjpwYXRjaGVzOjpwYXRjaF9sb2c6OkV2ZW50Pjo6aGQwMGU1Yjg4MmIxMjViZWS8CmA8YXV0b21lcmdlOjppdGVyOjprZXlzOjpLZXlzIGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6bmV4dDo6aGUzNDUwOWNlN2Y3MmM3NmS9Cjhjb3JlOjpmbXQ6Om51bTo6aW1wOjo8aW1wbCB1NjQ+OjpfZm10OjpoZDZkY2Y3ODU4ZDRhYWY4Yr4KU2F1dG9tZXJnZTo6Y29sdW1uYXI6OmVuY29kaW5nOjpybGU6OlJsZUVuY29kZXI8UyxUPjo6YXBwZW5kX251bGw6OmhhNDBmMzY5ODA3NDMyOTk1vwpTYXV0b21lcmdlOjpjb2x1bW5hcjo6ZW5jb2Rpbmc6OnJsZTo6UmxlRW5jb2RlcjxTLFQ+OjphcHBlbmRfbnVsbDo6aGY5YTRjMzU5YzhkMDE5ODbACkJhdXRvbWVyZ2U6OnN5bmM6OmJsb29tOjpCbG9vbUZpbHRlcjo6Z2V0X3Byb2Jlczo6aDg3YWY0M2JlOGU4ZTkwZTjBChxhdXRvbWVyZ2VfcmVjZWl2ZVN5bmNNZXNzYWdlwgpNYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bWFwOjpCVHJlZU1hcDxLLFYsQT46OnBvcF9maXJzdDo6aDk5ZjgwZWE3ZDhlZGI0ODbDClI8aGFzaGJyb3duOjptYXA6Okhhc2hNYXA8SyxWLFMsQT4gYXMgY29yZTo6Y2xvbmU6OkNsb25lPjo6Y2xvbmU6OmhhZjIyZjI1ZjczNTdkYTdixApJPHN0ZDo6cGFuaWM6OlBhbmljSG9va0luZm8gYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoYzgxMzBlNWFmZmE5ODQ2Y8UKE2F1dG9tZXJnZV9nZXRDdXJzb3LGCjA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDFmY2U0ODA4NTg1MDQ2YjPHCjA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDI2OGFmMThmYzdlNDZkMjXICjA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDJhNDk2MDIxMjQ4M2ZlOWLJCjA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDdlZGJiZDQ0MTI4ZGE0OTjKCjA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDk3ODI1YWRmNmYzMDhiNTLLCjA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGU1YzIzNTFjNTNiOWZlNWHMCjA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGY2MzE5NzRmOWNmZTc5ZTPNCjA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGY4MDYyN2MxNmI5Mjk1NDPOClpjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YXV0b21lcmdlOjpzdG9yYWdlOjpidW5kbGU6OmVycm9yOjpQYXJzZUVycm9yPjo6aDVjY2M5YTU2NWM3YWQ5MGTPClJjb3JlOjpzbGljZTo6c29ydDo6c2hhcmVkOjpzbWFsbHNvcnQ6Omluc2VydGlvbl9zb3J0X3NoaWZ0X2xlZnQ6Omg0Njg1MWUxMDVkN2NlODFm0Ao3aGV4YW5lOjplbmNvZGVyOjpFbmNvZGVyPEM+OjpzYXZlX3RvOjpoNDUzZWVlZmRhMzAxYzFjN9EKLWhleGFuZTo6ZW5jb2Rlcjo6Zmx1c2hfcnVuOjpoZjljZDE3ZTM3NGJiN2U2N9IKUWF1dG9tZXJnZTo6Y29sdW1uYXI6OmNvbHVtbl9yYW5nZTo6dmFsdWU6OlZhbHVlSXRlcjo6cGFyc2VfcmF3OjpoZDg0NDdhOTQ0NDJmMmY5YdMKMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMDEyMGE3ZjM0NTNiYTk3YdQKOGNvcmU6OmZtdDo6bnVtOjppbXA6OjxpbXBsIHUzMj46Ol9mbXQ6OmgyODViN2M4ZTdlYjVjNmUy1QpwPGFsbG9jOjp2ZWM6OlZlYzxUPiBhcyBhbGxvYzo6dmVjOjpzcGVjX2Zyb21faXRlcl9uZXN0ZWQ6OlNwZWNGcm9tSXRlck5lc3RlZDxULEk+Pjo6ZnJvbV9pdGVyOjpoMDY4YzAyMGIxMWYzMjZkMtYKFmF1dG9tZXJnZV9pbnNlcnRPYmplY3TXCnA8YWxsb2M6OnZlYzo6VmVjPFQ+IGFzIGFsbG9jOjp2ZWM6OnNwZWNfZnJvbV9pdGVyX25lc3RlZDo6U3BlY0Zyb21JdGVyTmVzdGVkPFQsST4+Ojpmcm9tX2l0ZXI6OmgzMDk5ZTY5MWQxOTU0Zjhj2Ao8YXV0b21lcmdlOjphdXRvbWVyZ2U6OkF1dG9tZXJnZTo6Y2xvY2tfYXQ6OmhiYmRiOGM1ODJhNWMwMjY42QpaYXV0b21lcmdlOjpjb2x1bW5hcjo6ZW5jb2Rpbmc6OmNvbF9lcnJvcjo6RGVjb2RlQ29sdW1uRXJyb3I6OmRlY29kZV9yYXc6Omg5NmQ0ZjNmYjMzNDI0NmU22gpgPGF1dG9tZXJnZTo6dGV4dF92YWx1ZTo6R3JhcGhlbWUgYXMgYXV0b21lcmdlOjp0ZXh0X3ZhbHVlOjpUZXh0VmFsdWU+OjpzcGxpY2U6Omg4M2ZiYjMzMDQ2NDA0NThi2wpwPGF1dG9tZXJnZTo6c3RvcmFnZTo6Y2hhbmdlOjpjaGFuZ2Vfb3BfY29sdW1uczo6UmVhZENoYW5nZU9wRXJyb3IgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoMjk0ODM0YTNhY2JkZTZlY9wKR29uY2VfY2VsbDo6aW1wOjpPbmNlQ2VsbDxUPjo6aW5pdGlhbGl6ZTo6e3tjbG9zdXJlfX06Omg0MGYxNGNkNmEyYzUyY2Fm3QoUYXV0b21lcmdlX3B1c2hPYmplY3TeChRhdXRvbWVyZ2VfZ2V0QWN0b3JJZN8K9wFhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpIYW5kbGU8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6Ok11dCxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpMZWFmPixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OktWPjo6c3BsaXQ6OmgwMzQ2NzVkNGNhOGM1NmYy4Ao8YXV0b21lcmdlX3dhc206OmludGVyb3A6OmJpZ2ludF90b19zY2FsYXI6OmgzZWFkODIxZjM1OWI0YWJm4QpjPG1pbml6X294aWRlOjpkZWZsYXRlOjpjb3JlOjpDb21wcmVzc29yT3hpZGUgYXMgY29yZTo6ZGVmYXVsdDo6RGVmYXVsdD46OmRlZmF1bHQ6OmhhYjcyYjFjZTE2NDdkNzJk4go3dHJhY2luZ19jb3JlOjpldmVudDo6RXZlbnQ6OmRpc3BhdGNoOjpoMzQ2N2MxMzRmYTViNTEyMOMKZjxoZXhhbmU6OnJhdzo6UmF3Q3Vyc29ySW50ZXJuYWw8Xz4gYXMgaGV4YW5lOjpjdXJzb3I6OkNvbHVtbkN1cnNvcj46OnNwbGljZV9lbmNvZGVyOjpoNTdmZGVjNmZlMmEzZWVkZOQKT2F1dG9tZXJnZTo6YXV0b2NvbW1pdDo6QXV0b0NvbW1pdDo6ZW5zdXJlX3RyYW5zYWN0aW9uX2Nsb3NlZDo6aGU0NzZhNzRjMGViYjYxYWLlCnk8YXV0b21lcmdlOjpvcF9zZXQyOjpvcF9zZXQ6OnZpc2libGU6OkluZGV4ZWRWaXNJdGVyIGFzIGF1dG9tZXJnZTo6aXRlcjo6dG9vbHM6OlNoaWZ0YWJsZT46OnNoaWZ0X25leHQ6Omg5ZThmNzE5YTJlM2RjOGNj5gpfPGF1dG9tZXJnZTo6c2VxdWVuY2VfdHJlZTo6U2VxdWVuY2VUcmVlTm9kZTxUPiBhcyBjb3JlOjpjbG9uZTo6Q2xvbmU+OjpjbG9uZTo6aDNhOGFkZWYxMDFkMzc0YzHnCnA8YWxsb2M6OnZlYzo6VmVjPFQ+IGFzIGFsbG9jOjp2ZWM6OnNwZWNfZnJvbV9pdGVyX25lc3RlZDo6U3BlY0Zyb21JdGVyTmVzdGVkPFQsST4+Ojpmcm9tX2l0ZXI6OmgwOTQyOWEzNmRhYTRlMmFi6AqfA2NvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjppdGVyOjphZGFwdGVyczo6ZmxhdHRlbjo6RmxhdE1hcDxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6OkludG9JdGVyPHNtb2xfc3RyOjpTbW9sU3RyLGFsbG9jOjp2ZWM6OlZlYzxhdXRvbWVyZ2U6Om1hcmtzOjpNYXJrQWNjSXRlbT4+LGNvcmU6Oml0ZXI6OmFkYXB0ZXJzOjptYXA6Ok1hcDxhbGxvYzo6dmVjOjppbnRvX2l0ZXI6OkludG9JdGVyPGF1dG9tZXJnZTo6bWFya3M6Ok1hcmtBY2NJdGVtPixhdXRvbWVyZ2U6Om1hcmtzOjpNYXJrQWNjdW11bGF0b3I6OmludG9faXRlcjo6e3tjbG9zdXJlfX06Ont7Y2xvc3VyZX19PixhdXRvbWVyZ2U6Om1hcmtzOjpNYXJrQWNjdW11bGF0b3I6OmludG9faXRlcjo6e3tjbG9zdXJlfX0+Pjo6aGJlNDAzYzk1YTE5ZGExMTbpCqoEY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGNvcmU6Oml0ZXI6OmFkYXB0ZXJzOjpmbGF0dGVuOjpGbGF0TWFwPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6SW50b0l0ZXI8c21vbF9zdHI6OlNtb2xTdHIsYWxsb2M6OnZlYzo6VmVjPGF1dG9tZXJnZTo6bWFya3M6Ok1hcmtBY2NJdGVtPj4sY29yZTo6aXRlcjo6YWRhcHRlcnM6Om1hcDo6TWFwPGNvcmU6Oml0ZXI6OmFkYXB0ZXJzOjpmaWx0ZXI6OkZpbHRlcjxhbGxvYzo6dmVjOjppbnRvX2l0ZXI6OkludG9JdGVyPGF1dG9tZXJnZTo6bWFya3M6Ok1hcmtBY2NJdGVtPixhdXRvbWVyZ2U6Om1hcmtzOjpNYXJrQWNjdW11bGF0b3I6OmludG9faXRlcl9ub191bm1hcms6Ont7Y2xvc3VyZX19Ojp7e2Nsb3N1cmV9fT4sYXV0b21lcmdlOjptYXJrczo6TWFya0FjY3VtdWxhdG9yOjppbnRvX2l0ZXJfbm9fdW5tYXJrOjp7e2Nsb3N1cmV9fTo6e3tjbG9zdXJlfX0+LGF1dG9tZXJnZTo6bWFya3M6Ok1hcmtBY2N1bXVsYXRvcjo6aW50b19pdGVyX25vX3VubWFyazo6e3tjbG9zdXJlfX0+Pjo6aDI0NDM4YzJjOTVjNWY0Y2HqClxjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YXV0b21lcmdlOjpvcF9zZXQyOjpvcF9zZXQ6Omluc2VydDo6SW5zZXJ0UXVlcnk+OjpoOGM5OGUyMzQ0YmQxM2FlM+sKXzxhdXRvbWVyZ2U6OnNlcXVlbmNlX3RyZWU6OlNlcXVlbmNlVHJlZU5vZGU8VD4gYXMgY29yZTo6Y2xvbmU6OkNsb25lPjo6Y2xvbmU6OmhiNmYzZDgwOGE1Mjk5Mzg07ApkPGF1dG9tZXJnZTo6YXV0b21lcmdlOjpBdXRvbWVyZ2UgYXMgYXV0b21lcmdlOjpyZWFkOjpSZWFkRG9jPjo6Z2V0X2NoYW5nZV9ieV9oYXNoOjpoN2Y0NWQxZTIxY2ZlOWNiM+0KRGF1dG9tZXJnZTo6b3Bfc2V0Mjo6Y2hhbmdlOjpsZW5ndGhfcHJlZml4ZWRfYnl0ZXM6Omg4MTRhZmY1YzQ5NGYwODJi7gpSY29yZTo6c2xpY2U6OnNvcnQ6OnNoYXJlZDo6c21hbGxzb3J0OjppbnNlcnRpb25fc29ydF9zaGlmdF9sZWZ0OjpoNjgwYzI1YjJjODJmNTIyOe8KjAFhdXRvbWVyZ2Vfd2FzbTo6ZXJyb3I6OjxpbXBsIGNvcmU6OmNvbnZlcnQ6OkZyb208YXV0b21lcmdlX3dhc206OmVycm9yOjpJbml0RnJvbUh5ZHJhdGU+IGZvciB3YXNtX2JpbmRnZW46OkpzVmFsdWU+Ojpmcm9tOjpoNmZmZTc3MjA1NDYxZDhiYfAKUmNvcmU6OnNsaWNlOjpzb3J0OjpzaGFyZWQ6OnNtYWxsc29ydDo6aW5zZXJ0aW9uX3NvcnRfc2hpZnRfbGVmdDo6aGMyMDI2MWM0NTBmMTM5MDjxCkxjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YXV0b21lcmdlOjpzdG9yYWdlOjpsb2FkOjpFcnJvcj46OmhmMjNhOTUzNWY4YTVkNGFl8gpBYXV0b21lcmdlOjpwYXRjaGVzOjpwYXRjaF9sb2c6OlBhdGNoTG9nOjptZXJnZTo6aDViNzY3MjVkZWM5Yzg5N2TzCkpjb3JlOjpmbXQ6Om51bTo6PGltcGwgY29yZTo6Zm10OjpEZWJ1ZyBmb3IgdTMyPjo6Zm10OjpoMjhhNmU1NTkzM2NhZmQ5YlsyXfQKnQFhdXRvbWVyZ2Vfd2FzbTo6aW50ZXJvcDo6ZXJyb3I6OjxpbXBsIGNvcmU6OmNvbnZlcnQ6OkZyb208YXV0b21lcmdlX3dhc206OmludGVyb3A6OmVycm9yOjpCYWRTeW5jTWVzc2FnZT4gZm9yIHdhc21fYmluZGdlbjo6SnNWYWx1ZT46OmZyb206OmhhZmU2MzliMmU1MjRkNzUx9QpFaGV4YW5lOjpzbGFiOjp0cmVlOjpUcmVlTm9kZTxULFc+OjpzdWJ0cmFjdF93ZWlnaHQ6Omg1YzczOWIxY2FjYzA2NDU19gpiPGhleGFuZTo6Y3Vyc29yOjpDdXJzb3JJdGVyPEM+IGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6bmV4dDo6aDA3ODNkYzFlNTcxYzA5NWH3CmI8aGV4YW5lOjpjdXJzb3I6OkN1cnNvckl0ZXI8Qz4gYXMgY29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+OjpuZXh0OjpoNDlmZGUxN2EwYTg4OWNhMPgKQ2F1dG9tZXJnZTo6cGF0Y2hlczo6cGF0Y2hfbG9nOjpQYXRjaExvZzo6cHV0X21hcDo6aDFiOWE0ODE5M2ZhNzJhNTn5CiNqc19zeXM6OnRyeV9pdGVyOjpoNmMzNzQ1NjExZGYyNzc0NPoKRmRsbWFsbG9jOjpkbG1hbGxvYzo6RGxtYWxsb2M8QT46Omluc2VydF9sYXJnZV9jaHVuazo6aGJkMzg2ZmVmMjM5OGZkNDX7Cmw8Y29yZTo6aXRlcjo6YWRhcHRlcnM6OkdlbmVyaWNTaHVudDxJLFI+IGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6bmV4dDo6aGE1N2NjMzVmOGEyNjBiMGL8Clc8YXV0b21lcmdlX3dhc206OmludGVyb3A6OmVycm9yOjpCYWRIYXZlIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aGVmOWQwZTZhZTFmY2Q4N2b9CvcBYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6SGFuZGxlPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpNdXQsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TGVhZj4sYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpLVj46OnNwbGl0OjpoYWQ3MzBmNzg1NmZjMDMwMP4KQWF1dG9tZXJnZTo6dGV4dF9kaWZmOjp1dGlsczo6Y29tbW9uX3ByZWZpeF9sZW46OmgzOWUyYWY5NGI0ZDc5ZGUw/wowPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhhMDY2OGYzMDg3MDg5ZGJhgAv3AWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkhhbmRsZTxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TXV0LEssVixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkxlYWY+LGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6S1Y+OjpzcGxpdDo6aDIzYjRjZGI5MGI4N2NmMjmBC/cBYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6SGFuZGxlPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpNdXQsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TGVhZj4sYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpLVj46OnNwbGl0OjpoODViNjQ5YTFhN2NlMGRhY4ILTmF1dG9tZXJnZTo6b3Bfc2V0Mjo6b3Bfc2V0OjpvcF9pdGVyOjpNYXJrSW5mb0l0ZXI6OnRyeV9uZXh0OjpoZTNjMDA0YWRhYjVjZmYxOIMLU2NvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhdXRvbWVyZ2Vfd2FzbTo6aW50ZXJvcDo6ZXJyb3I6OkV4cG9ydD46OmgzZDIzNzMwOTJmYjUxYjYyhAs1aGV4YW5lOjpjdXJzb3I6OkNvbHVtbkN1cnNvcjo6bmV4dDo6aGZmMTkxOTczMmQ2NmNlNjaFC0w8c2VyZGVfanNvbjo6ZXJyb3I6OkVycm9yQ29kZSBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmgxZGMxN2E0ZjgzOWIwMWM5hgtSPGhhc2hicm93bjo6bWFwOjpIYXNoTWFwPEssVixTLEE+IGFzIGNvcmU6OmNsb25lOjpDbG9uZT46OmNsb25lOjpoODNiNzlhYTA4YTM1ZDRmOIcLUjxoYXNoYnJvd246Om1hcDo6SGFzaE1hcDxLLFYsUyxBPiBhcyBjb3JlOjpjbG9uZTo6Q2xvbmU+OjpjbG9uZTo6aDNlNjJlNWQyYjQwYTU3MWGICxVhdXRvbWVyZ2VfZW1wdHlDaGFuZ2WJC0RhdXRvbWVyZ2Vfd2FzbTo6QXV0b21lcmdlOjp0b3BvX2hpc3RvcnlfdHJhdmVyc2FsOjpoNTM2MTBlZjgxYjQ1ZDIxM4oLUjxoYXNoYnJvd246Om1hcDo6SGFzaE1hcDxLLFYsUyxBPiBhcyBjb3JlOjpjbG9uZTo6Q2xvbmU+OjpjbG9uZTo6aDljMDQxOThjOGY0NDBjNTKLC1U8YWxsb2M6OnZlYzo6VmVjPHU4PiBhcyBoZXhhbmU6OmVuY29kZXI6OldyaXRlcjxQPj46OmZsdXNoX2xpdF9ydW46OmgwZmVhNGExMjczOTgwMDNkjAtOaGV4YW5lOjplbmNvZGVyOjpFbmNvZGVyPEM+OjpzYXZlX3RvX2FuZF9yZW1hcF91bmxlc3NfZW1wdHk6OmgxYTM3ZTA2Mzg4ZDViOGEyjQtSPGhhc2hicm93bjo6bWFwOjpIYXNoTWFwPEssVixTLEE+IGFzIGNvcmU6OmNsb25lOjpDbG9uZT46OmNsb25lOjpoY2Q3ODM3MjgyMjZjZDI1OY4LRWF1dG9tZXJnZTo6Y2hhbmdlX2dyYXBoOjpDaGFuZ2VHcmFwaENvbHM6OmZpbmFsaXplOjpoMWRlZjMwZWY5MjdkYjA3NY8LQWF1dG9tZXJnZTo6bWFya3M6Ok1hcmtTdGF0ZU1hY2hpbmU6Om1hcmtfYmVsb3c6OmhiNDU2MzkyM2FlZmJjNTEykAtKY29yZTo6Zm10OjpudW06OjxpbXBsIGNvcmU6OmZtdDo6RGVidWcgZm9yIHU2ND46OmZtdDo6aDgzNDVjYWMxYWM1MjhiMmNbM12RCxFhdXRvbWVyZ2VfaXNvbGF0ZZILR2F1dG9tZXJnZTo6c2VxdWVuY2VfdHJlZTo6U2VxdWVuY2VUcmVlTm9kZTxUPjo6bWVyZ2U6Omg2MjdiMTEyY2VhMWJjNWY1kwtZPGF1dG9tZXJnZTo6dHlwZXM6OkNoYW5nZUhhc2ggYXMgY29yZTo6c3RyOjp0cmFpdHM6OkZyb21TdHI+Ojpmcm9tX3N0cjo6aGFmNWU5YjczNjFlNWUxMmOUC44BYXV0b21lcmdlX3dhc206OmVycm9yOjo8aW1wbCBjb3JlOjpjb252ZXJ0OjpGcm9tPGF1dG9tZXJnZV93YXNtOjplcnJvcjo6QXBwbHlDaGFuZ2VzRXJyb3I+IGZvciB3YXNtX2JpbmRnZW46OkpzVmFsdWU+Ojpmcm9tOjpoNDQwNTg4Y2QzYzE5YmQyY5ULS2F1dG9tZXJnZTo6b3Bfc2V0Mjo6Y29sdW1uczo6Q29sdW1uczo6d3JpdGVfdW5sZXNzX2VtcHR5OjpoNzZlMGZkNmYwNGJmMjlkNpYLXDxhdXRvbWVyZ2U6OnN0b3JhZ2U6OmRvY3VtZW50OjpSZWNvbnN0cnVjdEVycm9yIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmgwMzg1ZGJmNGE5N2YzM2Qzlws1Y29yZTo6Zm10OjpidWlsZGVyczo6RGVidWdNYXA6OmtleTo6aDY5YzllNzZjYzg2ZmM4YzaYC1Q8YXV0b21lcmdlOjpoeWRyYXRlOjpsaXN0OjpMaXN0VmFsdWUgYXMgY29yZTo6Y21wOjpQYXJ0aWFsRXE+OjplcTo6aDE3Mzc2NjdhMjU3ZmUxYzSZC0hhdXRvbWVyZ2Vfd2FzbTo6QXV0b21lcmdlOjpnZXRfZGVjb2RlZF9jaGFuZ2VfYnlfaGFzaDo6aDVkYjNjZGI2OGFiZjg1NziaC1g8YXV0b21lcmdlOjpvcF9zZXQyOjp0eXBlczo6QWN0aW9uIGFzIGhleGFuZTo6cGFjazo6UGFja2FibGU+Ojp1bnBhY2s6OmhhMDFiYjQ3MTNjMjgwYTBkmwtXPGF1dG9tZXJnZTo6aHlkcmF0ZTo6bGlzdDo6TGlzdFZhbHVlIGFzIGNvcmU6OmNtcDo6UGFydGlhbEVxPjo6ZXE6OmgxNzM3NjY3YTI1N2ZlMWM0WzFdnAuWAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxzdGQ6OmNvbGxlY3Rpb25zOjpoYXNoOjptYXA6Okhhc2hNYXA8YXV0b21lcmdlOjp0eXBlczo6QWN0b3JJZCxzdGQ6OmNvbGxlY3Rpb25zOjpoYXNoOjpzZXQ6Okhhc2hTZXQ8dTY0Pj4+OjpoYmNlNzNlOWQ3M2I1MTkyZp0LlgFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8c3RkOjpjb2xsZWN0aW9uczo6aGFzaDo6bWFwOjpIYXNoTWFwPGF1dG9tZXJnZTo6dHlwZXM6OkFjdG9ySWQsc3RkOjpjb2xsZWN0aW9uczo6aGFzaDo6c2V0OjpIYXNoU2V0PHU2ND4+Pjo6aGQyOTBkODRlNTg4N2FmZGOeC1U8YWxsb2M6OnZlYzo6VmVjPHU4PiBhcyBoZXhhbmU6OmVuY29kZXI6OldyaXRlcjxQPj46OmZsdXNoX2xpdF9ydW46Omg1MmMwM2RlNThiMTk1ZDE0nws3aGV4YW5lOjplbmNvZGVyOjpFbmNvZGVyPEM+OjpzYXZlX3RvOjpoMDgxYzc3ODIxOGMyMGMyZaALN2hleGFuZTo6ZW5jb2Rlcjo6RW5jb2RlcjxDPjo6c2F2ZV90bzo6aGQzOTM2MWE4M2ZjZDQ2NDWhCzthdXRvbWVyZ2U6OnN0b3JhZ2U6OmNodW5rOjpIZWFkZXI6OndyaXRlOjpoODk3YWVhMDAyZjE2ZjU4OaILSWF1dG9tZXJnZTo6b3Bfc2V0Mjo6Y2hhbmdlOjpBY3Rvck1hcHBlcjo6YnVpbGRfbWFwcGluZzo6aDMxYTE5Y2ZlMzI4YmRiZTijC1phdXRvbWVyZ2U6OmNvbHVtbmFyOjplbmNvZGluZzo6Y29sX2Vycm9yOjpEZWNvZGVDb2x1bW5FcnJvcjo6ZGVjb2RlX3Jhdzo6aGFmYjgxMGY0ZmJlMmJlNWWkC2A8YXV0b21lcmdlOjp0ZXh0X3ZhbHVlOjpHcmFwaGVtZSBhcyBhdXRvbWVyZ2U6OnRleHRfdmFsdWU6OlRleHRWYWx1ZT46OnJlbW92ZTo6aDk1OGI5YThhZTgzYjE5MjelC31hdXRvbWVyZ2U6OnN0b3JhZ2U6OmJ1bmRsZTo6c3RvcmFnZTo6QnVuZGxlU3RvcmFnZTxhdXRvbWVyZ2U6OnN0b3JhZ2U6OmNoYW5nZTo6VmVyaWZpZWQ+OjppdGVyX2NoYW5nZV9tZXRhOjpoYmUzYjVlODNlZTgxZDQ3OaYLSjxhbGxvYzo6c3RyaW5nOjpTdHJpbmcgYXMgY29yZTo6Zm10OjpXcml0ZT46OndyaXRlX2NoYXI6Omg4YzAyNDI5MGFiM2ZhZjcxpwtNPGFsbG9jOjpzdHJpbmc6OlN0cmluZyBhcyBjb3JlOjpmbXQ6OldyaXRlPjo6d3JpdGVfY2hhcjo6aDhjMDI0MjkwYWIzZmFmNzFbMl2oC0ZhdXRvbWVyZ2U6OmNoYW5nZV9ncmFwaDo6Q2hhbmdlR3JhcGg6OmRlcHNfZm9yX2hhc2g6OmgxOTdlNTU4ZjhlYmNmYjliqQtpPGF1dG9tZXJnZTo6aXRlcjo6dG9vbHM6OlBhc3RTa2lwcGVyIGFzIGF1dG9tZXJnZTo6aXRlcjo6dG9vbHM6OlNoaWZ0YWJsZT46OnNoaWZ0X25leHQ6Omg4N2Y4ZGQ4MmM2MjRhY2E1qgtfYXV0b21lcmdlOjpvcF9zZXQyOjpvcF9zZXQ6Om9wX2l0ZXI6OjxpbXBsIGF1dG9tZXJnZTo6dHlwZXM6Ok9wSWQ+Ojp0cnlfbG9hZDo6aDkwZGE4NmUwNzI2YTE0NjirC1dhdXRvbWVyZ2U6OnN0b3JhZ2U6OmNvbHVtbnM6OnJhd19jb2x1bW46OlJhd0NvbHVtbnM8VD46OnVuY29tcHJlc3NlZDo6aDhjMDBiN2U3OGUzNmRjYmGsC008YWxsb2M6OnN0cmluZzo6U3RyaW5nIGFzIGNvcmU6OmZtdDo6V3JpdGU+Ojp3cml0ZV9jaGFyOjpoOGMwMjQyOTBhYjNmYWY3MVszXa0LSWF1dG9tZXJnZTo6YXV0b21lcmdlOjpBdXRvbWVyZ2U6OmdldF9sYXN0X2xvY2FsX2NoYW5nZTo6aDVlZTk3NTM5MTFhMjZkM2OuC0R0cmFjaW5nX2NvcmU6OmNhbGxzaXRlOjpEZWZhdWx0Q2FsbHNpdGU6OnJlZ2lzdGVyOjpoMDMzOWYxNzk0NDQ5MzIxOa8LWjxhdXRvbWVyZ2Vfd2FzbTo6aW50ZXJvcDo6ZXJyb3I6OkltcG9ydFBhdGggYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoYjU1N2NlOTllYmQ5MzAzObALTTxhbGxvYzo6c3RyaW5nOjpTdHJpbmcgYXMgY29yZTo6Zm10OjpXcml0ZT46OndyaXRlX2NoYXI6Omg4YzAyNDI5MGFiM2ZhZjcxWzFdsQtNPGFsbG9jOjpzdHJpbmc6OlN0cmluZyBhcyBjb3JlOjpmbXQ6OldyaXRlPjo6d3JpdGVfY2hhcjo6aDhjMDI0MjkwYWIzZmFmNzFbNF2yCzlhdXRvbWVyZ2Vfd2FzbTo6QXV0b21lcmdlOjpnZXRfY2hhbmdlczo6aGM5NjI1Nzc4NGRmYzc1NWKzC2w8Y29yZTo6aXRlcjo6YWRhcHRlcnM6OkdlbmVyaWNTaHVudDxJLFI+IGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6bmV4dDo6aGU0ZDE2OGQwMjhlOTg2NzG0CzdoZXhhbmU6OmVuY29kZXI6OkVuY29kZXI8Qz46OnNhdmVfdG86OmhmY2E3ZThmODE5MDU5MjkxtQszYXV0b21lcmdlOjpvcF9zZXQyOjpjb2x1bW5zOjpmbXQ6OmhlYWRlZjc1ODhkYTQ0YTc1tgszYXV0b21lcmdlOjpvcF9zZXQyOjpjb2x1bW5zOjpmbXQ6Omg4NzljMzQ4OTcyMDk5ZmQ5tws6Y29yZTo6Zm10OjpidWlsZGVyczo6RGVidWdTdHJ1Y3Q6OmZpZWxkOjpoYTlkZWNkN2JiMWFmZGMyNbgLYDxhdXRvbWVyZ2Vfd2FzbTo6aW50ZXJvcDo6ZXJyb3I6OkJhZENoYW5nZUhhc2hTZXQgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoNGNjMTdhMjhmMGFlNWI2ObkLTGNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhdXRvbWVyZ2Vfd2FzbTo6c3luYzo6U3luY1N0YXRlPjo6aGZkNGQ0OGU3MDM3NWIzM2S6C1FhdXRvbWVyZ2U6OmNvbHVtbmFyOjplbmNvZGluZzo6cmxlOjpSbGVFbmNvZGVyPFMsVD46OmZsdXNoX3J1bjo6aGY3MjM3ODI0ZTU0YzA2ZTC7C088YXV0b21lcmdlOjp2YWx1ZTo6VmFsdWUgYXMgY29yZTo6Y29udmVydDo6RnJvbTxjaGFyPj46OmZyb206OmhlNTQ4MzM5YmUzNTA5ZmE4vAtOY29yZTo6Zm10OjpudW06OmltcDo6PGltcGwgY29yZTo6Zm10OjpEaXNwbGF5IGZvciB1MTY+OjpmbXQ6OmgxY2U0MTgzYTQ0ZjU1YzVjvQs2Y29yZTo6c2xpY2U6Om1lbWNocjo6bWVtY2hyX2FsaWduZWQ6OmhiZjZkZGZlMGFjODcxZmYzvgtqPGhleGFuZTo6ZGVsdGE6OkRlbHRhQ3Vyc29ySW50ZXJuYWw8Xz4gYXMgaGV4YW5lOjpjdXJzb3I6OkNvbHVtbkN1cnNvcj46OmZpbmFsaXplX3N0YXRlOjpoNGIwZTU5NDRjODI0ODUzYr8LbDxjb3JlOjppdGVyOjphZGFwdGVyczo6R2VuZXJpY1NodW50PEksUj4gYXMgY29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+OjpuZXh0OjpoMTkwM2E3NDMxYWQzNGY3YcALP2F1dG9tZXJnZTo6YXV0b2NvbW1pdDo6QXV0b0NvbW1pdDo6Z2V0X2hlYWRzOjpoOGUwODU3MzZkYjkwODA5N8ELR2F1dG9tZXJnZTo6b3Bfc2V0Mjo6b3Bfc2V0OjpPcFNldDo6YWN0aW9uX3ZhbHVlX2l0ZXI6OmhmOTZkY2RkMThkODVhYTNiwgtRYXV0b21lcmdlOjpjb2x1bW5hcjo6ZW5jb2Rpbmc6OnJsZTo6UmxlRW5jb2RlcjxTLFQ+OjpmbHVzaF9ydW46OmhiZWM0NzAxNzAxZDIwYmMzwwtFYXV0b21lcmdlOjpvcF9zZXQyOjpvcF9zZXQ6Ok9wU2V0OjpzdWNjX2l0ZXJfcmFuZ2U6Omg4NjAzNTZmOWRhMWY3OWFlxAs7c2VyZGVfanNvbjo6ZGU6OkRlc2VyaWFsaXplcjxSPjo6ZW5kX21hcDo6aDFjMWRlM2U5NmM0MGQ1NzbFC1ljb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YXV0b21lcmdlX3dhc206OmludGVyb3A6OmVycm9yOjpCYWRTeW5jU3RhdGU+OjpoYjBjOTJjNTgxNDI1YWRiZsYLmAFhdXRvbWVyZ2Vfd2FzbTo6aW50ZXJvcDo6PGltcGwgY29yZTo6Y29udmVydDo6VHJ5RnJvbTxhdXRvbWVyZ2Vfd2FzbTo6aW50ZXJvcDo6SlM+IGZvciBhdXRvbWVyZ2U6OnN5bmM6OmJsb29tOjpCbG9vbUZpbHRlcj46OnRyeV9mcm9tOjpoNzU1ODYxZmFkNjI4MWNjMscLFmF1dG9tZXJnZV9hcHBseVBhdGNoZXPIC1Jjb3JlOjpzbGljZTo6c29ydDo6c2hhcmVkOjpzbWFsbHNvcnQ6Omluc2VydGlvbl9zb3J0X3NoaWZ0X2xlZnQ6OmgzMWFjZGQ4NTIzZTNmNmZlyQtVY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGF1dG9tZXJnZTo6dGV4dF92YWx1ZTo6Q29uY3JldGVUZXh0VmFsdWU+OjpoMTA0NTU2NDc5MDZhYzQ3OMoLT2NvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhdXRvbWVyZ2Vfd2FzbTo6aW50ZXJvcDo6SnNPYmpUeXBlPjo6aDc4ZTEyYzFlZTc3NTU3Y2HLCz5hdXRvbWVyZ2Vfd2FzbTo6QXV0b21lcmdlOjpnZXRfY2hhbmdlc19tZXRhOjpoYzkwNWJhYWI5N2YzYTc3OcwLQGhleGFuZTo6Y3Vyc29yOjpDb2x1bW5DdXJzb3I6OmNvbXB1dGVfbWluX21heDo6aGU3YjkxN2UwYmU1Y2UxODTNC1U8YWxsb2M6OnZlYzo6VmVjPHU4PiBhcyBoZXhhbmU6OmVuY29kZXI6OldyaXRlcjxQPj46OmZsdXNoX2xpdF9ydW46OmgwNDI2YWMwNWY2YmZjNWFkzgs/YXV0b21lcmdlOjphdXRvbWVyZ2U6OkF1dG9tZXJnZTo6cGFyZW50c19mb3I6OmhmZWJhNDEzOTk4MjA2MmU0zwtCYXV0b21lcmdlOjpvcF9zZXQyOjpvcF9zZXQ6Ok9wU2V0OjpzY29wZV90b19vYmo6OmhhOTVkYzU1MWMwNzJhYmM00AtzPGF1dG9tZXJnZTo6b3Bfc2V0Mjo6b3Bfc2V0OjpvcF9pdGVyOjpPcElkSXRlciBhcyBhdXRvbWVyZ2U6Oml0ZXI6OnRvb2xzOjpTaGlmdGFibGU+OjpzaGlmdF9uZXh0OjpoYzk5MjkyM2JlMGJiNzAzM9ELSGF1dG9tZXJnZTo6b3Bfc2V0Mjo6b3Bfc2V0OjpvcF9pdGVyOjpLZXlJdGVyOjp0cnlfbnRoOjpoYTJjNDVmNmJiNDFlZDA3YtILNDxjaGFyIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aGMyNTgyODFmZGYxMTY2YWHTC1Jjb3JlOjpzbGljZTo6c29ydDo6c2hhcmVkOjpzbWFsbHNvcnQ6Omluc2VydGlvbl9zb3J0X3NoaWZ0X2xlZnQ6Omg4NTE1NGQxYjVjN2YyYjgy1AtCPHNtb2xfc3RyOjpTbW9sU3RyIGFzIGNvcmU6OmNtcDo6UGFydGlhbEVxPjo6ZXE6OmgxOTgxN2NlYzk3NWIwN2M31QtCc2VyZGVfanNvbjo6ZGU6OkRlc2VyaWFsaXplcjxSPjo6ZjY0X2Zyb21fcGFydHM6Omg3MTAxY2ExZTA5YzhjYjBj1guWAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxoZXhhbmU6OnNsYWI6OnRyZWU6OlRyZWVOb2RlPGhleGFuZTo6c2xhYjo6U2xhYixhdXRvbWVyZ2U6Om9wX3NldDI6Om9wX3NldDo6bWFya19pbmRleDo6TWFya0luZGV4U3Bhbm5lcj4+OjpoNjA2YTRlN2VmNmQyNTAyM9cLlgFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8aGV4YW5lOjpzbGFiOjp0cmVlOjpUcmVlTm9kZTxoZXhhbmU6OnNsYWI6OlNsYWIsYXV0b21lcmdlOjpvcF9zZXQyOjpvcF9zZXQ6Om1hcmtfaW5kZXg6Ok1hcmtJbmRleFNwYW5uZXI+Pjo6aDZiMTlhMTVmMmVkMTkwNjXYC5ABYXV0b21lcmdlOjpjb2x1bW5hcjo6ZW5jb2Rpbmc6OmVuY29kYWJsZV9pbXBsczo6PGltcGwgYXV0b21lcmdlOjpjb2x1bW5hcjo6ZW5jb2Rpbmc6OkVuY29kYWJsZSBmb3Igc21vbF9zdHI6OlNtb2xTdHI+OjplbmNvZGU6OmhiMWUzOThiMzYzMDUzZmM02QtPYXV0b21lcmdlOjpvcF9zZXQyOjpvcF9zZXQ6Om1hcmtfaW5kZXg6Ok1hcmtJbmRleENvbHVtbjo6bmV3OjpoZWJlMGU3YTJiMTQ5MjRjONoLRzxoZXhhbmU6OnBhY2s6OlBhY2tFcnJvciBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6Omg1YWU1ZmMyM2U5YWM1MmM12wtLPGF1dG9tZXJnZV93YXNtOjplcnJvcjo6Rm9yayBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmhlNTM5OWJhNzc1ZjNjMDA13Asbc3luY3N0YXRlX3NldF9sYXN0U2VudEhlYWRz3QszYXV0b21lcmdlX3dhc206OkF1dG9tZXJnZTo6dG9fanM6OmgzNGE0NmYwNjkxMmQwNzk53gtoPGNvcmU6Oml0ZXI6OmFkYXB0ZXJzOjptYXA6Ok1hcDxJLEY+IGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6bmV4dDo6aDkzOTQ1YTk0ZWEyNjFiOGXfC1Rjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YXV0b21lcmdlOjpwYXRjaGVzOjpwYXRjaF9sb2c6OlBhdGNoTG9nPjo6aDBlYjBmNDkwZGRkOGM1YjDgC0Bjb3JlOjpzbGljZTo6c29ydDo6c2hhcmVkOjpwaXZvdDo6bWVkaWFuM19yZWM6OmgxYjM2OTZjYjYzNzcwMjNi4Qs8aGV4YW5lOjplbmNvZGVyOjpTcGxpY2VFbmNvZGVyPEM+OjpmaW5pc2g6OmgxMGVkY2ZjMmY2ZDUzMzIw4gtCaGV4YW5lOjpzbGFiOjp3cml0ZXI6OlNsYWJXcml0ZXI8UD46OmNsb3NlX3NsYWI6OmgzNmI0ODIzMjJhYWE5OTE04wtCaGV4YW5lOjpzbGFiOjp3cml0ZXI6OlNsYWJXcml0ZXI8UD46OmNsb3NlX3NsYWI6Omg0ODQ2ZjY0ZmJkOGZiNGFm5AtCaGV4YW5lOjpzbGFiOjp3cml0ZXI6OlNsYWJXcml0ZXI8UD46OmNsb3NlX3NsYWI6Omg0YmJjMzdkYzM1OGFjMjU45QtCaGV4YW5lOjpzbGFiOjp3cml0ZXI6OlNsYWJXcml0ZXI8UD46OmNsb3NlX3NsYWI6Omg0YzdiMzdiMDA4MDI3NmNl5gtCaGV4YW5lOjpzbGFiOjp3cml0ZXI6OlNsYWJXcml0ZXI8UD46OmNsb3NlX3NsYWI6Omg5NTUzZTU2OWQzOGRiMmM25wtCaGV4YW5lOjpzbGFiOjp3cml0ZXI6OlNsYWJXcml0ZXI8UD46OmNsb3NlX3NsYWI6OmhhYjFlZGY3MDA4MmUzNjM06AtCaGV4YW5lOjpzbGFiOjp3cml0ZXI6OlNsYWJXcml0ZXI8UD46OmNsb3NlX3NsYWI6OmhjYWNmZjczMDVmYTYyZDEy6QtgYXV0b21lcmdlOjpvcF9zZXQyOjpvcF9zZXQ6Om9wX2l0ZXI6OjxpbXBsIGF1dG9tZXJnZTo6dHlwZXM6Ok9iaklkPjo6dHJ5X2xvYWQ6OmgyNDc5ODBhMTlkNzdiNTU56gt0PHN0ZDo6cGFuaWNraW5nOjpiZWdpbl9wYW5pY19oYW5kbGVyOjpGb3JtYXRTdHJpbmdQYXlsb2FkIGFzIGNvcmU6OnBhbmljOjpQYW5pY1BheWxvYWQ+Ojp0YWtlX2JveDo6aGQzYzlhODRlOWU1MDFjODnrCxlhdXRvbWVyZ2VfZ2V0Q2hhbmdlc0FkZGVk7AtOY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGF1dG9tZXJnZTo6aXRlcjo6c3BhbnM6OlNwYW5zRGlmZj46Omg5MTFjN2EyZDlkYmRhZWMy7Qs0YXV0b21lcmdlOjpoeWRyYXRlOjptYXA6Ok1hcDo6Z2V0OjpoNGUwMmM2YzE5ODIwY2IyMu4LVzxhdXRvbWVyZ2U6Om9wX3NldDI6OnR5cGVzOjpTY2FsYXJWYWx1ZSBhcyBjb3JlOjpjbXA6OlBhcnRpYWxFcT46OmVxOjpoM2I1Y2ExNTc2MjI0OTA3Ze8LM2F1dG9tZXJnZTo6b3Bfc2V0Mjo6Y29sdW1uczo6Zm10OjpoNTBiM2MwZWU4N2EzODI4ZvALUTxzZXJkZV9qc29uOjplcnJvcjo6SnNvblVuZXhwZWN0ZWQgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoOWFmNDMxNWQ2ZWNmZjJlYfELSzxhdXRvbWVyZ2Vfd2FzbTo6ZXJyb3I6OkRpZmYgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoZTg2ZDkzOTNiYzhlMmQ1YvILF2F1dG9tZXJnZV9oYXNPdXJDaGFuZ2Vz8wuQAWF1dG9tZXJnZTo6Y29sdW1uYXI6OmVuY29kaW5nOjplbmNvZGFibGVfaW1wbHM6OjxpbXBsIGF1dG9tZXJnZTo6Y29sdW1uYXI6OmVuY29kaW5nOjpFbmNvZGFibGUgZm9yIHNtb2xfc3RyOjpTbW9sU3RyPjo6ZW5jb2RlOjpoYWEyZjQ0ZjZkNzg2NjlmYvQLR2F1dG9tZXJnZTo6b3Bfc2V0Mjo6b3Bfc2V0OjpPcFNldDo6dGV4dDo6e3tjbG9zdXJlfX06Omg5NjhjNjQ3MDhhZjA1NjMy9QuRAWF1dG9tZXJnZV93YXNtOjppbnRlcm9wOjo8aW1wbCBjb3JlOjpjb252ZXJ0OjpUcnlGcm9tPGF1dG9tZXJnZV93YXNtOjppbnRlcm9wOjpKUz4gZm9yIGF1dG9tZXJnZTo6dHlwZXM6OkNoYW5nZUhhc2g+Ojp0cnlfZnJvbTo6aDQ5MjA0YzdlYjJlMmJkMjP2C4gBYXV0b21lcmdlX3dhc206OmVycm9yOjo8aW1wbCBjb3JlOjpjb252ZXJ0OjpGcm9tPGF1dG9tZXJnZV93YXNtOjplcnJvcjo6VXBkYXRlU3BhbnM+IGZvciB3YXNtX2JpbmRnZW46OkpzVmFsdWU+Ojpmcm9tOjpoZDI1ODFkYWE5NmVjYzEwMPcLXjxhdXRvbWVyZ2Vfd2FzbTo6aW50ZXJvcDo6ZXJyb3I6OkpzVmFsVG9IeWRyYXRlIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aDg2MDdlODg5OTgxN2VmNjb4C0FhdXRvbWVyZ2U6Om9wX3NldDI6Om9wX3NldDo6T3BTZXQ6Om9iamVjdF90eXBlOjpoZmRmMzYwMTEyNWUwMmNkNvkLPWF1dG9tZXJnZTo6aXRlcjo6c3BhbnM6OlNwYW5zSW50ZXJuYWw6Om5ldzo6aDRlNWQ4OGViMmMxOGZjOGT6C40BYXV0b21lcmdlOjpsZWdhY3k6OnV0aWxpdHlfaW1wbHM6OmVsZW1lbnRfaWQ6OjxpbXBsIGNvcmU6OnN0cjo6dHJhaXRzOjpGcm9tU3RyIGZvciBhdXRvbWVyZ2U6OmxlZ2FjeTo6RWxlbWVudElkPjo6ZnJvbV9zdHI6OmhkNzdkMWEyNGFjYmIwNTlm+wtRPGF1dG9tZXJnZTo6c3luYzo6UmVhZE1lc3NhZ2VFcnJvciBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmhiYWEzYzk5Y2QwMWI4ODE5/AtPPHNtb2xfc3RyOjpTbW9sU3RyIGFzIGNvcmU6OmNsb25lOjpDbG9uZT46OmNsb25lOjpjb2xkX2Nsb25lOjpoNWZlY2ZiZjM5MzIyZWZiN/0LQmFsbG9jOjpmZmk6OmNfc3RyOjpDU3RyaW5nOjpfZnJvbV92ZWNfdW5jaGVja2VkOjpoZGUxMmYyYmEwNWFjNTAwM/4LO2F1dG9tZXJnZV93YXNtOjpBdXRvbWVyZ2U6OmFwcGx5X2NoYW5nZXM6OmgwODY3YzZjNDE5MmZiOThi/wtePGF1dG9tZXJnZTo6Y29sdW1uYXI6OmVuY29kaW5nOjpjb2xfZXJyb3I6OlBhdGggYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoYjYxOTc3YjhlNjQ4N2ViNoAMRmF1dG9tZXJnZTo6b3Bfc2V0Mjo6b3Bfc2V0OjpvcF9pdGVyOjpDdHJXYWxrZXI6Om5ldzo6aDhjMTAwZDZiNjQzZjkyMziBDE5hdXRvbWVyZ2U6Om9wX3NldDI6OmNoYW5nZTo6Y29sbGVjdG9yOjpDaGFuZ2VDb2xsZWN0b3I6OmFkZDo6aDI4OWM2OGYxOGIxNDkyNzSCDENjb3JlOjpmbXQ6OkZvcm1hdHRlcjo6ZGVidWdfc3RydWN0X2ZpZWxkc19maW5pc2g6OmhmOGMyZWEwMWI1MjY5N2ExgwxRYWxsb2M6OnJhd192ZWM6OlJhd1ZlY0lubmVyPEE+OjpyZXNlcnZlOjpkb19yZXNlcnZlX2FuZF9oYW5kbGU6OmgyYjAyNGMxNmVlNWI2ODU1hAxGY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGF1dG9tZXJnZV93YXNtOjpBdXRvbWVyZ2U+OjpoYTA3ODdmMmZkZWEwY2M3MYUMTTxhdXRvbWVyZ2Vfd2FzbTo6ZXJyb3I6OkN1cnNvciBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmhiYzRiZGVhNjc3OWI2MTFhhgxBaGV4YW5lOjpzbGFiOjp3cml0ZXI6OlNsYWJXcml0ZXI8UD46OmNsb3NlX2xpdDo6aDQ2NjI5ZGU2ZDVjZTZkNDiHDFFhbGxvYzo6cmF3X3ZlYzo6UmF3VmVjSW5uZXI8QT46OnJlc2VydmU6OmRvX3Jlc2VydmVfYW5kX2hhbmRsZTo6aDA2MDE0MWJkMTM4M2VhNGGIDEFoZXhhbmU6OnNsYWI6OndyaXRlcjo6U2xhYldyaXRlcjxQPjo6Y2xvc2VfbGl0OjpoOTY0NWNhNjU2MWE3MjJhNIkMOGhleGFuZTo6ZW5jb2Rlcjo6RW5jb2RlclN0YXRlOjphcHBlbmQ6OmhiZjU5NmE3ZDM3YjNiZmFjigxiPGhleGFuZTo6Y3Vyc29yOjpDdXJzb3JJdGVyPEM+IGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6bmV4dDo6aDkxOTg3ZTUxYjU2OGNkNziLDFA8YXV0b21lcmdlOjpleGlkOjpFeElkIGFzIGNvcmU6OmNtcDo6UGFydGlhbE9yZD46OnBhcnRpYWxfY21wOjpoY2UxYjBmOWZlZTliNDgwYYwMSWF1dG9tZXJnZTo6cGF0Y2hlczo6cGF0Y2hfbG9nOjpQYXRjaExvZzo6ZmxhZ19jb25mbGljdDo6aDMzNGY0MThhNjQwNDNkYTGNDExhdXRvbWVyZ2U6Om9wX3NldDI6OmNoYW5nZTo6YmF0Y2g6OkJhdGNoQXBwbHk6Omluc2VydF9vcHM6Omg2MjY4MGRkNTMzMzU5ZGMxjgxCYXV0b21lcmdlOjpwYXRjaGVzOjpwYXRjaF9sb2c6OlBhdGNoTG9nOjppbnNlcnQ6OmhhNjI1OTBhMzcxNjU1OWIxjwxRYWxsb2M6OnJhd192ZWM6OlJhd1ZlY0lubmVyPEE+OjpyZXNlcnZlOjpkb19yZXNlcnZlX2FuZF9oYW5kbGU6OmhkNGVkMjBmYjcyNWM4MTExkAxRYWxsb2M6OnJhd192ZWM6OlJhd1ZlY0lubmVyPEE+OjpyZXNlcnZlOjpkb19yZXNlcnZlX2FuZF9oYW5kbGU6OmhkZmUxYzBlOGRkMjBmNDFlkQxOPGF1dG9tZXJnZTo6dmFsdWU6OlNjYWxhclZhbHVlIGFzIGNvcmU6OmNtcDo6UGFydGlhbEVxPjo6ZXE6OmgwODlmMzRjY2RjOWJkODQwkgwNYXV0b21lcmdlX2dldJMMFWF1dG9tZXJnZV9nZXRXaXRoVHlwZZQMEGF1dG9tZXJnZV9nZXRBbGyVDFE8YXV0b21lcmdlOjp2YWx1ZTo6U2NhbGFyVmFsdWUgYXMgY29yZTo6Y21wOjpQYXJ0aWFsRXE+OjplcTo6aDA4OWYzNGNjZGM5YmQ4NDBbMV2WDEZjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YXV0b21lcmdlOjpjaGFuZ2U6OkNoYW5nZT46OmhmMzRkNWM0MTAxMzgwNWUwlwxDYXV0b21lcmdlOjpzdG9yYWdlOjpwYXJzZTo6bGVuZ3RoX3ByZWZpeGVkX2J5dGVzOjpoOWYwNWFkMjg2ODEwMGNmMZgMRmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhdXRvbWVyZ2U6OmNoYW5nZTo6Q2hhbmdlPjo6aDU2OTg0NTQ5ZDZlM2Q5MjOZDEFhdXRvbWVyZ2U6OnRleHRfZGlmZjo6dXRpbHM6OmNvbW1vbl9zdWZmaXhfbGVuOjpoNjlkMmUzZWU3MWU3ZDY5ZpoMDmF1dG9tZXJnZV9rZXlzmwwPYXV0b21lcmdlX3NwYW5znAwRYXV0b21lcmdlX29iakluZm+dDBBhdXRvbWVyZ2VfbGVuZ3RongxRYXV0b21lcmdlOjpjb2x1bW5hcjo6ZW5jb2Rpbmc6OnJsZTo6UmxlRW5jb2RlcjxTLFQ+OjpmbHVzaF9ydW46OmhmMWM3MDk2MWI2NjY5MzgwnwyeAWF1dG9tZXJnZV93YXNtOjppbnRlcm9wOjplcnJvcjo6PGltcGwgY29yZTo6Y29udmVydDo6RnJvbTxhdXRvbWVyZ2Vfd2FzbTo6aW50ZXJvcDo6ZXJyb3I6OkJhZENoYW5nZUhhc2hlcz4gZm9yIHdhc21fYmluZGdlbjo6SnNWYWx1ZT46OmZyb206OmgwZTgwNDYzOGFmMjk0Mjg2oAw0YXV0b21lcmdlX3dhc206OmRlY29kZV9zeW5jX3N0YXRlOjpoMzU5NTBmZGUwNjUwMzk2ZKEMQ2F1dG9tZXJnZTo6YXV0b21lcmdlOjpBdXRvbWVyZ2U6Omhhc19vdXJfY2hhbmdlczo6aGI3ZjkwZDU3N2U2OTZiZTiiDIgBYXV0b21lcmdlX3dhc206OmVycm9yOjo8aW1wbCBjb3JlOjpjb252ZXJ0OjpGcm9tPGF1dG9tZXJnZV93YXNtOjplcnJvcjo6VXBkYXRlQmxvY2s+IGZvciB3YXNtX2JpbmRnZW46OkpzVmFsdWU+Ojpmcm9tOjpoZDVkMjE3MDZlZGMwNGQzOKMMPGF1dG9tZXJnZTo6aXRlcjo6dG9vbHM6OkV4SWRQcm9taXNlOjpleGlkOjpoODhmZGI5M2UyMzdlMGE4OKQM9wFhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpIYW5kbGU8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6Ok11dCxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpMZWFmPixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OktWPjo6c3BsaXQ6Omg2ZjBlM2UzZGE1OTg2YjQ4pQxEaGV4YW5lOjplbmNvZGVyOjpFbmNvZGVyPEM+OjpzYXZlX3RvX3VubGVzc19lbXB0eTo6aGVmNjU4Zjc3NWRlYjQ5ZGamDFFhdXRvbWVyZ2U6OmNvbHVtbmFyOjplbmNvZGluZzo6cmxlOjpSbGVFbmNvZGVyPFMsVD46OmZsdXNoX3J1bjo6aDJkMTc2MDIxYWMxMjc2NTOnDHE8YXV0b21lcmdlOjpvcF9zZXQyOjpvcF9zZXQ6Om9wX2l0ZXI6Ok9wSWRJdGVyIGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6bnRoOjpoZThkMDMwOTVhNmQ3MGYzYqgMS2F1dG9tZXJnZTo6c3luYzo6bWVzc2FnZV9idWlsZGVyOjpNZXNzYWdlQnVpbGRlcjo6bmV3X3YyOjpoZWZjMjAwNmJlYjVkNGI4N6kMQm1pbml6X294aWRlOjpkZWZsYXRlOjpjb3JlOjpmbHVzaF9vdXRwdXRfYnVmZmVyOjpoZTZhY2ZlOGViNGMxN2VkMaoMMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoNTQwODFlZmEyOGU1NDA2NKsMMmF1dG9tZXJnZV93YXNtOjppbnRlcm9wOjpqc19nZXQ6OmgzYzc0YTJmZmZiZmFlNjA2rAwyYXV0b21lcmdlX3dhc206OmludGVyb3A6OmpzX2dldDo6aDI2ZTYyYWRlMGJmOWVmOGGtDDJhdXRvbWVyZ2Vfd2FzbTo6aW50ZXJvcDo6anNfZ2V0OjpoNjFkYzNiYjJjYjE3ZmYzYq4MXDxhdXRvbWVyZ2Vfd2FzbTo6ZXhwb3J0X2NhY2hlOjpDYWNoZWRPYmplY3QgYXMgY29yZTo6Y2xvbmU6OkNsb25lPjo6Y2xvbmU6OmgzN2E1Nzk4YTE1NTFkNjU5rwwSYXV0b21lcmdlX2RpZmZQYXRosAwwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg0Y2VhMDA2M2VlOWQyNWU0sQxCY29yZTo6c2xpY2U6OnNvcnQ6OnVuc3RhYmxlOjpoZWFwc29ydDo6aGVhcHNvcnQ6OmhhYzE2ZTcxOTViYmNjOGUzsgxCY29yZTo6Zm10OjpGb3JtYXR0ZXI6OmRlYnVnX3R1cGxlX2ZpZWxkMV9maW5pc2g6OmhkY2MyNWUwNWUyY2M1NjNkswxSdW5pY29kZV9zZWdtZW50YXRpb246OmdyYXBoZW1lOjpHcmFwaGVtZUN1cnNvcjo6aGFuZGxlX3JlZ2lvbmFsOjpoZGI3YmI3ZWE3YzcyNjcwYrQMTmF1dG9tZXJnZV93YXNtOjppbnRlcm9wOjpFeHRlcm5hbFR5cGVDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0OjpoNmJhMTNiZGM2YzQxMWE3ZLUMQWF1dG9tZXJnZTo6dGV4dF9kaWZmOjp1dGlsczo6Y29tbW9uX3ByZWZpeF9sZW46OmhlMTI0ZjUzNTc2MjkwZjRhtgxLYXV0b21lcmdlOjp0ZXh0X2RpZmY6OnJlcGxhY2U6OlJlcGxhY2U8RD46OmZsdXNoX2RlbF9pbnM6OmgyYjVhY2ExZDUwMGY2OTkwtwwyYXV0b21lcmdlX3dhc206OmludGVyb3A6OmpzX2dldDo6aDcxNDEwYWU5YzllZGM2NmK4DBJhdXRvbWVyZ2VfZ2V0QmxvY2u5DBNhdXRvbWVyZ2VfcHV0T2JqZWN0ugweYXV0b21lcmdlX3B1dE9iamVjdEZyb21IeWRyYXRluwwhYXV0b21lcmdlX2luc2VydE9iamVjdEZyb21IeWRyYXRlvAwVYXV0b21lcmdlX21hdGVyaWFsaXplvQwbYXV0b21lcmdlX2dldEN1cnNvclBvc2l0aW9uvgxVdW5pY29kZV9zZWdtZW50YXRpb246OmdyYXBoZW1lOjpHcmFwaGVtZUN1cnNvcjo6aGFuZGxlX3JlZ2lvbmFsOjpoZGI3YmI3ZWE3YzcyNjcwYlsxXb8MRGhleGFuZTo6ZW5jb2Rlcjo6RW5jb2RlcjxDPjo6c2F2ZV90b191bmxlc3NfZW1wdHk6Omg2OGE1MzMyMjhkMzcxZmE3wAxBYXV0b21lcmdlOjp0ZXh0X2RpZmY6OnV0aWxzOjpjb21tb25fcHJlZml4X2xlbjo6aGZiM2E1NzhlZDFmMjljY2TBDA5hdXRvbWVyZ2VfZGlmZsIMQGNvcmU6OnNsaWNlOjpzb3J0OjpzaGFyZWQ6OnBpdm90OjptZWRpYW4zX3JlYzo6aGM4NjZkYjI1MmNkOGM5OWXDDEBhdXRvbWVyZ2U6Om9wX3NldDI6Om9wX3NldDo6T3BTZXQ6OmlkX3RvX2V4aWQ6Omg2N2Y3ODA2NWJiNzcxM2EzxAxpPGF1dG9tZXJnZTo6dGV4dF9kaWZmOjpCbG9ja0RpZmZIb29rIGFzIGF1dG9tZXJnZTo6dGV4dF9kaWZmOjpteWVyczo6RGlmZkhvb2s+OjpkZWxldGU6Omg5ZmNmNmMwYjU4YWU2NDIwxQxfPGF1dG9tZXJnZV93YXNtOjppbnRlcm9wOjplcnJvcjo6QmFkQ2FwYWJpbGl0aWVzIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aDY1NWI1NWRjODgzYzg3Y2HGDJYBYXV0b21lcmdlX3dhc206OmludGVyb3A6OmVycm9yOjo8aW1wbCBjb3JlOjpjb252ZXJ0OjpGcm9tPGF1dG9tZXJnZV93YXNtOjppbnRlcm9wOjplcnJvcjo6U2V0UHJvcD4gZm9yIHdhc21fYmluZGdlbjo6SnNWYWx1ZT46OmZyb206Omg2ZGMxOGM2NGY2M2Q3ODMzxwxcPGF1dG9tZXJnZV93YXNtOjppbnRlcm9wOjplcnJvcjo6QmFkSlNDaGFuZ2VzIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aDZiNDBjOTRlYTRkOGQ5Y2TIDIkBYXV0b21lcmdlX3dhc206OmVycm9yOjo8aW1wbCBjb3JlOjpjb252ZXJ0OjpGcm9tPGF1dG9tZXJnZV93YXNtOjplcnJvcjo6RGVjb2RlQ2hhbmdlPiBmb3Igd2FzbV9iaW5kZ2VuOjpKc1ZhbHVlPjo6ZnJvbTo6aDY3YThmYWY0NWY3MTIyNzfJDBlhdXRvbWVyZ2VfbG9hZEluY3JlbWVudGFsygwUYXV0b21lcmdlX2dldENoYW5nZXPLDBhhdXRvbWVyZ2VfZ2V0Q2hhbmdlc01ldGHMDBhhdXRvbWVyZ2VfZ2V0TWlzc2luZ0RlcHPNDA5hdXRvbWVyZ2VfdG9KU84MFGF1dG9tZXJnZV9zYXZlQnVuZGxlzwwtaGV4YW5lOjplbmNvZGVyOjpmbHVzaF9ydW46OmhjNzY4ZThhOTQyZWQ0YjBi0AxIYXV0b21lcmdlOjp0cmFuc2FjdGlvbjo6aW5uZXI6OkJhdGNoSW5zZXJ0aW9uOjpmaW5pc2g6Omg1NDhlMzA4MTQwMWU2YmE30QxTPGF1dG9tZXJnZTo6c3luYzo6c3RhdGU6OkRlY29kZUVycm9yIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aDAyNTRmNDI1MDJmNjNkMjLSDFNjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YXV0b21lcmdlOjpzdG9yYWdlOjpkb2N1bWVudDo6RG9jdW1lbnQ+OjpoYTdlNmVlM2UxMDZjNDk3MdMMO2F1dG9tZXJnZTo6YXV0b2NvbW1pdDo6QXV0b0NvbW1pdDo6bWVyZ2U6Omg0OTUzYmVmY2JmODdjNjBh1AxIbWluaXpfb3hpZGU6OmluZmxhdGU6OnN0cmVhbTo6SW5mbGF0ZVN0YXRlOjpuZXdfYm94ZWQ6OmgyODMyNGEyZjc1OTYxM2Nk1QxRPGF1dG9tZXJnZV93YXNtOjplcnJvcjo6U2F2ZUJ1bmRsZSBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6Omg0OTg2MGEwZjZlNTA4NjZj1gxaPGF1dG9tZXJnZTo6Y29sdW1uYXI6OmVuY29kaW5nOjpEZWNvZGVFcnJvciBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmgxM2Q2NjRlYmU4Y2U5MGQ31wyIAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxzdGQ6OmNvbGxlY3Rpb25zOjpoYXNoOjptYXA6Okhhc2hNYXA8YXV0b21lcmdlOjp0eXBlczo6T3BJZCxhbGxvYzo6dmVjOjpWZWM8KHVzaXplLHVzaXplKT4+Pjo6aDM3MmIwMjgwNDRjYzE3ZGHYDJkBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGFsbG9jOjp2ZWM6OmludG9faXRlcjo6SW50b0l0ZXI8YXV0b21lcmdlOjphdXRvbWVyZ2U6OkF1dG9tZXJnZTo6Y29udmVydF9zY2FsYXJfc3RyaW5nc190b190ZXh0OjpDb252ZXJzaW9uPj46Omg2YTY4YTBhOGJmMjUxNjM42QxsPGNvcmU6Oml0ZXI6OmFkYXB0ZXJzOjpHZW5lcmljU2h1bnQ8SSxSPiBhcyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvcj46Om5leHQ6Omg1ZTk3M2UxZWQzODFlZDAx2gyGAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxzdGQ6OmNvbGxlY3Rpb25zOjpoYXNoOjptYXA6Okhhc2hNYXA8YWxsb2M6OnN0cmluZzo6U3RyaW5nLGF1dG9tZXJnZTo6dmFsdWU6OlNjYWxhclZhbHVlPj46OmhjNzBjNGU1ZmU3NTE0MTI42wyGAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxzdGQ6OmNvbGxlY3Rpb25zOjpoYXNoOjptYXA6Okhhc2hNYXA8YWxsb2M6OnN0cmluZzo6U3RyaW5nLGF1dG9tZXJnZTo6dmFsdWU6OlNjYWxhclZhbHVlPj46OmhjODM3NWExNGRjMDcxNGM53AxLaGV4YW5lOjpzbGFiOjp3cml0ZXI6OlNsYWJXcml0ZXI8UD46OmNoZWNrX2NvcHlfb3ZlcmZsb3c6OmgwMWEzYjQyYzE5YjI4YTAz3QxLaGV4YW5lOjpzbGFiOjp3cml0ZXI6OlNsYWJXcml0ZXI8UD46OmNoZWNrX2NvcHlfb3ZlcmZsb3c6OmgxYjU4NTIzZDg3MGEzYTRk3gxLaGV4YW5lOjpzbGFiOjp3cml0ZXI6OlNsYWJXcml0ZXI8UD46OmNoZWNrX2NvcHlfb3ZlcmZsb3c6Omg2Yzk0M2E4YzliZDMxYWNl3wxLaGV4YW5lOjpzbGFiOjp3cml0ZXI6OlNsYWJXcml0ZXI8UD46OmNoZWNrX2NvcHlfb3ZlcmZsb3c6OmhkNGRiMTU3MTNmMDk1NTA04AxLaGV4YW5lOjpzbGFiOjp3cml0ZXI6OlNsYWJXcml0ZXI8UD46OmNoZWNrX2NvcHlfb3ZlcmZsb3c6OmhmMWIxNDUwMjIwZmE4ODRk4QxLaGV4YW5lOjpzbGFiOjp3cml0ZXI6OlNsYWJXcml0ZXI8UD46OmNoZWNrX2NvcHlfb3ZlcmZsb3c6OmhmY2VmNzFjODkyMzAzMjVi4gxpPGF1dG9tZXJnZTo6YXV0b2NvbW1pdDo6U3luY1dyYXBwZXIgYXMgYXV0b21lcmdlOjpzeW5jOjpTeW5jRG9jPjo6cmVjZWl2ZV9zeW5jX21lc3NhZ2U6OmgzNTM2N2E5NDQzODQ2OWNm4wwgYXV0b21lcmdlX2dldERlY29kZWRDaGFuZ2VCeUhhc2jkDGdjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YWxsb2M6OnZlYzo6VmVjPGF1dG9tZXJnZTo6b3Bfc2V0Mjo6dHlwZXM6OkNoYW5nZU1ldGFkYXRhPj46OmgxZmE1MzYwNGJiNTAyZmM05QxHYXV0b21lcmdlOjphdXRvY29tbWl0OjpBdXRvQ29tbWl0OjpuZXdfd2l0aF9lbmNvZGluZzo6aDVlYTNhOWU0NDI4MjBjNzHmDEZhdXRvbWVyZ2U6OmF1dG9jb21taXQ6OkF1dG9Db21taXQ6OnNhdmVfaW5jcmVtZW50YWw6OmhkMDdmYWUzMTVhYTYzODkx5ww3Y29yZTo6Zm10OjpidWlsZGVyczo6RGVidWdNYXA6OmVudHJ5OjpoZDk3YTliNzlkYTVjMGEyMugMkgE8YXV0b21lcmdlX3dhc206OmludGVyb3A6OkpTIGFzIGNvcmU6OmNvbnZlcnQ6OkZyb208Y29yZTo6b3B0aW9uOjpPcHRpb248YWxsb2M6OnZlYzo6VmVjPGF1dG9tZXJnZTo6dHlwZXM6OkNoYW5nZUhhc2g+Pj4+Ojpmcm9tOjpoYzM3MmUwNGFhYzI3ZjI2OekMTTxhdXRvbWVyZ2Vfd2FzbTo6ZXJyb3I6Okluc2VydCBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmgzNWIwYTUzYmVhMWVlYjVk6gwNYXV0b21lcmdlX25ld+sMEGF1dG9tZXJnZV91bm1hcmvsDCxjb3JlOjplcnJvcjo6RXJyb3I6OmNhdXNlOjpoZjc2NTE0MzAyYTg4ZjEyNe0MRmF1dG9tZXJnZTo6YXV0b2NvbW1pdDo6QXV0b0NvbW1pdDo6bG9hZF9pbmNyZW1lbnRhbDo6aGMxMWMxNGEyYmVhZjIzMDfuDGA8YXV0b21lcmdlOjpzdG9yYWdlOjpidW5kbGU6OmVycm9yOjpQYXJzZUVycm9yIGFzIGNvcmU6OmVycm9yOjpFcnJvcj46OnNvdXJjZTo6aGJmNmM0MTE3ZjQyY2E5OGLvDIgBYXV0b21lcmdlX3dhc206OmVycm9yOjo8aW1wbCBjb3JlOjpjb252ZXJ0OjpGcm9tPGF1dG9tZXJnZV93YXNtOjplcnJvcjo6TWF0ZXJpYWxpemU+IGZvciB3YXNtX2JpbmRnZW46OkpzVmFsdWU+Ojpmcm9tOjpoYzE3ZTFmMWMzZjFiNmM2ZPAMgQFhdXRvbWVyZ2Vfd2FzbTo6ZXJyb3I6OjxpbXBsIGNvcmU6OmNvbnZlcnQ6OkZyb208YXV0b21lcmdlX3dhc206OmVycm9yOjpMb2FkPiBmb3Igd2FzbV9iaW5kZ2VuOjpKc1ZhbHVlPjo6ZnJvbTo6aDc0MmY1YzVmYjI1YTIxYTLxDFE8YWxsb2M6OnZlYzo6VmVjPHU4PiBhcyBoZXhhbmU6OmVuY29kZXI6OldyaXRlcjxQPj46OmZsdXNoX3J1bjo6aDRlNTllZTIwYzQ2Mjk2MjXyDD9hdXRvbWVyZ2U6Om9wX3NldDI6Om9wX3NldDo6T3BTZXQ6OnRvX3N0cmluZzo6aGUyYzA4MDlkMmNhMDMzNDnzDFthdXRvbWVyZ2U6Omh5ZHJhdGU6OjxpbXBsIGF1dG9tZXJnZTo6b3Bfc2V0Mjo6b3Bfc2V0OjpPcFNldD46Omh5ZHJhdGVfb3A6OmhiZGRmZWVkZGJiN2Y5YTRj9Aw3Y29yZTo6Zm10OjpidWlsZGVyczo6RGVidWdTZXQ6OmVudHJ5OjpoNWFkMjQ2NjE3ZmZmOTdmMfUMQ3NlcmRlX2pzb246OmRlOjpEZXNlcmlhbGl6ZXI8Uj46Omlnbm9yZV9leHBvbmVudDo6aDAxOGZmNjQxYzg1YTdiZWX2DI4BYXV0b21lcmdlX3dhc206OmVycm9yOjo8aW1wbCBjb3JlOjpjb252ZXJ0OjpGcm9tPGF1dG9tZXJnZV93YXNtOjplcnJvcjo6QmF0Y2hDcmVhdGVPYmplY3Q+IGZvciB3YXNtX2JpbmRnZW46OkpzVmFsdWU+Ojpmcm9tOjpoMmY2ZDNmNzhhYjZhYjM1NPcMigFhdXRvbWVyZ2Vfd2FzbTo6ZXJyb3I6OjxpbXBsIGNvcmU6OmNvbnZlcnQ6OkZyb208YXV0b21lcmdlX3dhc206OmVycm9yOjpTcGxpY2VIeWRyYXRlPiBmb3Igd2FzbV9iaW5kZ2VuOjpKc1ZhbHVlPjo6ZnJvbTo6aDRkYTZjNDY4NzgxMWE4NDT4DA5hdXRvbWVyZ2VfbWFya/kMMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoYzQ0MDIxYWU5YzMyMjdlYfoMjgFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8c3RkOjpjb2xsZWN0aW9uczo6aGFzaDo6bWFwOjpIYXNoTWFwPGF1dG9tZXJnZTo6Y2hhbmdlX2dyYXBoOjpOb2RlSWR4LGF1dG9tZXJnZTo6Y2xvY2s6OlNlcUNsb2NrPj46OmgzYWYxNGUwMGFiYjM0M2Nh+wxBaGV4YW5lOjpzbGFiOjp3cml0ZXI6OlNsYWJXcml0ZXI8UD46OmNoZWNrX21heDo6aDFjMTc3ZGM1Mzg0MmVlYWX8DEFoZXhhbmU6OnNsYWI6OndyaXRlcjo6U2xhYldyaXRlcjxQPjo6Y2hlY2tfbWF4OjpoMWRkOWY0NDkyNjY2MGIwZf0MQWhleGFuZTo6c2xhYjo6d3JpdGVyOjpTbGFiV3JpdGVyPFA+OjpjaGVja19tYXg6Omg2ODA3MzgyNGUxN2M0MWZi/gxBaGV4YW5lOjpzbGFiOjp3cml0ZXI6OlNsYWJXcml0ZXI8UD46OmNoZWNrX21heDo6aDAzNjU1NDA0MGVhZjQzZmP/DEFoZXhhbmU6OnNsYWI6OndyaXRlcjo6U2xhYldyaXRlcjxQPjo6Y2hlY2tfbWF4OjpoZWY1MWFhM2E4ZmIxMzE5ZoANQWhleGFuZTo6c2xhYjo6d3JpdGVyOjpTbGFiV3JpdGVyPFA+OjpjaGVja19tYXg6Omg3Y2VlNjE2NDYzMWU2YWJhgQ09YXV0b21lcmdlOjphdXRvbWVyZ2U6OkF1dG9tZXJnZTo6c2V0X2FjdG9yOjpoMzk0NWEzOTI4OWI3ZmEyN4INMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMDllYTg4ZjA4OTE2ODViZoMND3N5bmNzdGF0ZV9jbG9uZYQNNGF1dG9tZXJnZV93YXNtOjpBdXRvbWVyZ2U6OmNvbW1pdDo6aDY4YzczMzkyYTljZGQ4NjOFDRBhdXRvbWVyZ2Vfc3BsaWNlhg0QYXV0b21lcmdlX2luc2VydIcNDWF1dG9tZXJnZV9wdXSIDRthdXRvbWVyZ2Vfc3BsaWNlRnJvbUh5ZHJhdGWJDRNhdXRvbWVyZ2Vfc2F2ZVNpbmNlig0wPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg4Mjk1ZGNiZGQwNWE3NWM5iw1JPGF1dG9tZXJnZTo6Y3Vyc29yOjpDdXJzb3IgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoNWY4OTEwNGVmNDI2N2ViMYwNVWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhdXRvbWVyZ2U6OnRleHRfdmFsdWU6OkNvbmNyZXRlVGV4dFZhbHVlPjo6aGQ2MWEwOGY3ZGIwNTE5NmGNDV1hdXRvbWVyZ2U6OmNvbHVtbmFyOjplbmNvZGluZzo6Y29sX2Vycm9yOjpEZWNvZGVDb2x1bW5FcnJvcjo6aW52YWxpZF92YWx1ZTo6aDI2ZjQyMTQ5OTRmZjk4ZGOODTljb3JlOjpmbXQ6OmJ1aWxkZXJzOjpEZWJ1Z1R1cGxlOjpmaWVsZDo6aDljNGQ2M2EyZDE4MDFhN2SPDVBjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YXV0b21lcmdlOjptYXJrczo6VXBkYXRlU3BhbnNDb25maWc+OjpoY2UyMTlkMTY2NDE2MTQ0OZANlgFhdXRvbWVyZ2Vfd2FzbTo6aW50ZXJvcDo6PGltcGwgY29yZTo6Y29udmVydDo6VHJ5RnJvbTxhdXRvbWVyZ2Vfd2FzbTo6aW50ZXJvcDo6SlM+IGZvciBhdXRvbWVyZ2U6OmN1cnNvcjo6Q3Vyc29yUG9zaXRpb24+Ojp0cnlfZnJvbTo6aGU0Y2Q4NDk5YTY3MGEyZDmRDRVhdXRvbWVyZ2VfdXBkYXRlU3BhbnOSDQ5hdXRvbWVyZ2VfcHVzaJMNFGF1dG9tZXJnZV9zcGxpdEJsb2NrlA0VYXV0b21lcmdlX3VwZGF0ZUJsb2NrlQ0TYXV0b21lcmdlX2luY3JlbWVudJYNMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoZGFjNTg5YWYzMTAzMjFlM5cNTGNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhdXRvbWVyZ2U6OmF1dG9tZXJnZTo6QXV0b21lcmdlPjo6aDMyZjM1M2M2ZGJmNTkwZWOYDRRhdXRvbWVyZ2VfdXBkYXRlVGV4dJkNE2F1dG9tZXJnZV9qb2luQmxvY2uaDRBhdXRvbWVyZ2VfZGVsZXRlmw0yPCZUIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aDE4MDBmZjhmZTUyNWFiZjWcDTthdXRvbWVyZ2U6Oml0ZXI6OnRvb2xzOjpEaWZmU2tpcHBlcjo6bmV3OjpoYzZkOTVhZmJkMjMzMDYzYZ0NhgE8PHNlcmRlX2NvcmU6OmRlOjpXaXRoRGVjaW1hbFBvaW50IGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6TG9va0ZvckRlY2ltYWxQb2ludCBhcyBjb3JlOjpmbXQ6OldyaXRlPjo6d3JpdGVfc3RyOjpoZjAzMTQ2ODQzOGY5NWIxZZ4NfDxhdXRvbWVyZ2Vfd2FzbTo6aW50ZXJvcDo6QVIgYXMgY29yZTo6Y29udmVydDo6RnJvbTxhbGxvYzo6dmVjOjpWZWM8YXV0b21lcmdlOjp0eXBlczo6Q2hhbmdlSGFzaD4+Pjo6ZnJvbTo6aDg5MTk3N2VkMmJkNmVkMDCfDU08YXV0b21lcmdlX3dhc206OmVycm9yOjpTcGxpY2UgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoNTQyNGZkM2QxZWQ5NTliZKANHWF1dG9tZXJnZV9pbml0Um9vdEZyb21IeWRyYXRloQ0WYXV0b21lcmdlX2FwcGx5Q2hhbmdlc6INZGNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhdXRvbWVyZ2U6Om9wX3NldDI6Om9wX3NldDo6bWFya19pbmRleDo6TWFya0luZGV4Q29sdW1uPjo6aDdiOThmMzdlNjUwOTE3ODejDVJjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YXV0b21lcmdlOjppdGVyOjpsaXN0X3JhbmdlOjpMaXN0RGlmZj46OmgyY2IwZTQ4ZjQ3NTRjODdlpA1SY29yZTo6c2xpY2U6OnNvcnQ6OnNoYXJlZDo6c21hbGxzb3J0OjppbnNlcnRpb25fc29ydF9zaGlmdF9sZWZ0OjpoMTkxMWFjMmUwOGY0M2I2YqUNP2F1dG9tZXJnZTo6YXV0b2NvbW1pdDo6QXV0b0NvbW1pdDo6Z2V0X3Njb3BlOjpoOWQyMjRjOWUzMzRmYmU3YaYNYTxmbGF0ZTI6OmZmaTo6bWluaXpfb3hpZGU6OkluZmxhdGUgYXMgZmxhdGUyOjpmZmk6OkluZmxhdGVCYWNrZW5kPjo6ZGVjb21wcmVzczo6aDYxYTlhZjI1NjIwYmEzNDCnDTthdXRvbWVyZ2Vfd2FzbTo6QXV0b21lcmdlOjplbmFibGVfZnJlZXplOjpoYzNiMmE5NjEyNDg3OTgwMagNMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoY2MzNzliMjgyYWJmZTk3M6kNUWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhdXRvbWVyZ2U6Oml0ZXI6OnNwYW5zOjpSaWNoVGV4dERpZmY+OjpoZTY5NDcxMzIwM2MwZjBkZKoNUmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhdXRvbWVyZ2U6Oml0ZXI6OmRvYzo6RG9jSXRlbUludGVybmFsPjo6aDYwMWNmNDhkM2M0OWFlYTWrDTxoZXhhbmU6OmVuY29kZXI6OlNwbGljZUVuY29kZXI8Qz46OmZpbmlzaDo6aGVlZmFkMTQ5YzJiOTU2ZDGsDVk8c3RkOjpjb2xsZWN0aW9uczo6aGFzaDo6bWFwOjpIYXNoTWFwPEssVixTPiBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoNDQ0YzNkNzQxZTJiNGZlZK0NWTxzdGQ6OmNvbGxlY3Rpb25zOjpoYXNoOjptYXA6Okhhc2hNYXA8SyxWLFM+IGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhhNTI0NDFjYTAzOTZkZjU2rg0+YXV0b21lcmdlOjphdXRvY29tbWl0OjpBdXRvQ29tbWl0OjpwYXRjaF90bzo6aDdlYmYxNTUwNTI3NDgwYWSvDV48YXV0b21lcmdlOjpvcF9zZXQyOjp0eXBlczo6S2V5UmVmIGFzIGF1dG9tZXJnZTo6dHlwZXM6OkV4cG9ydGFibGU+OjpleHBvcnQ6Omg5OWNmZThhNThiM2Y0NGQ5sA1MPGF1dG9tZXJnZTo6dHlwZXM6OkNoYW5nZUhhc2ggYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoYzI2ZmExM2FhODYxMjI0OLENZzxjb3JlOjppdGVyOjphZGFwdGVyczo6dGFrZTo6VGFrZTxJPiBhcyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvcj46Om50aDo6aDBkNjRjMjMwMzRlYzRjNzWyDTVzdGQ6OnRocmVhZDo6Y3VycmVudDo6aW5pdF9jdXJyZW50OjpoZDNmZjJkZjIwMDUyYmQwNLMNW2F1dG9tZXJnZV93YXNtOjppbnRlcm9wOjo8aW1wbCBhdXRvbWVyZ2Vfd2FzbTo6QXV0b21lcmdlPjo6dW53cmFwX3NjYWxhcjo6aDFhZDZmYjQ0ZTBlMjVhNzG0DWE8c3RkOjpjb2xsZWN0aW9uczo6aGFzaDo6c2V0OjpIYXNoU2V0PFQ+IGFzIGNvcmU6OmNvbnZlcnQ6OkZyb208W1Q7IE5dPj46OmZyb206OmhiNWZmYTAxMjg4OTNhNzU1tQ0wPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg4MzA2MzczNjE0MWU4ZTditg13Y29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGF1dG9tZXJnZTo6c3RvcmFnZTo6Y2hhbmdlOjpDaGFuZ2U8YXV0b21lcmdlOjpzdG9yYWdlOjpjaGFuZ2U6OlVudmVyaWZpZWQ+Pjo6aDNhM2MzYTNjZWZkMGZiNDC3DT9hdXRvbWVyZ2U6OmF1dG9jb21taXQ6OkF1dG9Db21taXQ6OmludGVncmF0ZTo6aDg2ODU1Y2ZjNWRmNGNjMGG4DUNhdXRvbWVyZ2U6OmNoYW5nZV9ncmFwaDo6Q2hhbmdlR3JhcGg6Omhhc19jaGFuZ2U6OmhhZDQ0OWNiZmQwOGMxYTA1uQ1aPGF1dG9tZXJnZV93YXNtOjppbnRlcm9wOjplcnJvcjo6SW1wb3J0TWFyayBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmhkYWI3NTRjZjQxZTJiMDA2ug04c2VyZGVfd2FzbV9iaW5kZ2VuOjplcnJvcjo6RXJyb3I6Om5ldzo6aDFiMDc5OTYzYWEzZDE0YTm7DVg8YXV0b21lcmdlOjpzdG9yYWdlOjpkb2N1bWVudDo6UGFyc2VFcnJvciBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmhiODQzNTM2YmZjNzlkYTg5vA1JaGV4YW5lOjpzbGFiOjp3cml0ZXI6OlNsYWJXcml0ZXI8UD46Om1hbnVhbF9zbGFiX2JyZWFrOjpoMjNhMDBmYTNmYjdkYjEyOb0NPGhleGFuZTo6c2xhYjo6dHJlZTo6U3BhblRyZWU8VCxXPjo6cmVtb3ZlOjpoMzZmZmEyZjhhMDUzZjFmN74NSWhleGFuZTo6c2xhYjo6d3JpdGVyOjpTbGFiV3JpdGVyPFA+OjptYW51YWxfc2xhYl9icmVhazo6aDU5MjM2OTFhNzRhODhmY2a/DUloZXhhbmU6OnNsYWI6OndyaXRlcjo6U2xhYldyaXRlcjxQPjo6bWFudWFsX3NsYWJfYnJlYWs6Omg1OWZiYTEwMWM2NTMwNTRlwA1ZPHN0ZDo6Y29sbGVjdGlvbnM6Omhhc2g6Om1hcDo6SGFzaE1hcDxLLFYsUz4gYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDQ2NzdlZDhlNjdkOTFmZDLBDYwBYXV0b21lcmdlX3dhc206OnZhbHVlOjo8aW1wbCBjb3JlOjpjb252ZXJ0OjpGcm9tPGF1dG9tZXJnZV93YXNtOjp2YWx1ZTo6SW52YWxpZERhdGF0eXBlPiBmb3Igd2FzbV9iaW5kZ2VuOjpKc1ZhbHVlPjo6ZnJvbTo6aDBlNWEwODY5YTYxYzJkNTXCDYQBYXV0b21lcmdlX3dhc206OmVycm9yOjo8aW1wbCBjb3JlOjpjb252ZXJ0OjpGcm9tPGF1dG9tZXJnZV93YXNtOjplcnJvcjo6SXNvbGF0ZT4gZm9yIHdhc21fYmluZGdlbjo6SnNWYWx1ZT46OmZyb206OmhlOTgwOWNhZWUzY2FiYzRhww05YXV0b21lcmdlOjpvcF9zZXQyOjpvcDo6T3A6Om1hcmtfaW5kZXg6OmhlMjY2ZThlZjhjZWRhOTJmxA1iPGF1dG9tZXJnZTo6dGV4dF9kaWZmOjpUeEhvb2sgYXMgYXV0b21lcmdlOjp0ZXh0X2RpZmY6Om15ZXJzOjpEaWZmSG9vaz46Omluc2VydDo6aDA2YTEzMTRhMzE4NmI1YmHFDWI8YXV0b21lcmdlOjp0ZXh0X2RpZmY6OlR4SG9vayBhcyBhdXRvbWVyZ2U6OnRleHRfZGlmZjo6bXllcnM6OkRpZmZIb29rPjo6ZGVsZXRlOjpoZGI1ZDRiYTY5OGRiMWVkZcYNjQFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YXV0b21lcmdlOjpzZXF1ZW5jZV90cmVlOjpTZXF1ZW5jZVRyZWVOb2RlPChhdXRvbWVyZ2U6OnZhbHVlOjpWYWx1ZSxhdXRvbWVyZ2U6OmV4aWQ6OkV4SWQsYm9vbCk+Pjo6aGJiNDdjMGY1ZDM4NmU1NTjHDRRfX3diZ19hdXRvbWVyZ2VfZnJlZcgNEGF1dG9tZXJnZV9jb21taXTJDQRsb2Fkyg2HAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhdXRvbWVyZ2U6OnN0b3JhZ2U6OmJ1bmRsZTo6c3RvcmFnZTo6QnVuZGxlU3RvcmFnZTxhdXRvbWVyZ2U6OnN0b3JhZ2U6OmNoYW5nZTo6VW52ZXJpZmllZD4+OjpoNDU4MjZkNjk2Njc5MTMzY8sNjQFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YXV0b21lcmdlOjpzZXF1ZW5jZV90cmVlOjpTZXF1ZW5jZVRyZWVOb2RlPChhdXRvbWVyZ2U6OnZhbHVlOjpWYWx1ZSxhdXRvbWVyZ2U6OmV4aWQ6OkV4SWQsYm9vbCk+Pjo6aGI0Njc0YjZhMzcwZTcyYTHMDUdjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8aGV4YW5lOjpybGU6OlJsZVN0YXRlPHN0cj4+OjpoZTU1NDZjMGEwYzBlYmExMc0NT2NvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhdXRvbWVyZ2U6OnN0b3JhZ2U6OmJ1bmRsZTo6QnVuZGxlPjo6aGU4OTM4ZTEzMWRjMTMzMDHODThoZXhhbmU6OmVuY29kZXI6OkVuY29kZXJTdGF0ZTo6YXBwZW5kOjpoY2RhMjU5NTM1ODEyOGQ4Zs8NT2NvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhdXRvbWVyZ2U6OnN0b3JhZ2U6OmJ1bmRsZTo6QnVuZGxlPjo6aDgwOTJiZTNlMThjNTk5OWXQDRphdXRvbWVyZ2VfcmVnaXN0ZXJEYXRhdHlwZdENEWF1dG9tZXJnZV9tYXJrc0F00g0wPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmgxYTFmZDRjOWU3OTljMzZh0w1JPGF1dG9tZXJnZTo6dHlwZXM6OkFjdG9ySWQgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoZGUwMjQxZjNiOTZmNmQ2MNQNPGNvcmU6OnNsaWNlOjpzb3J0OjpzdGFibGU6OmRyaWZ0c29ydF9tYWluOjpoNTk5ZmQ0MWIwYmFlYmZmZdUNPGNvcmU6OnNsaWNlOjpzb3J0OjpzdGFibGU6OmRyaWZ0c29ydF9tYWluOjpoNWY0YTRjZWQzZjlhMGY1M9YNPGNvcmU6OnNsaWNlOjpzb3J0OjpzdGFibGU6OmRyaWZ0c29ydF9tYWluOjpoZmYwOTc1ZTRiM2Y2ZTJkMdcNL2FsbG9jOjp2ZWM6OlZlYzxULEE+OjppbnNlcnQ6OmgwOGQ1MjY0YmJmOTA0ODll2A07aGV4YW5lOjpzbGFiOjp0cmVlOjpUcmVlTm9kZTxULFc+OjpjaGVjazo6aDI0MjljNzZmNWJkN2RiN2PZDTtoZXhhbmU6OnNsYWI6OnRyZWU6OlRyZWVOb2RlPFQsVz46OmNoZWNrOjpoOTQyNWJlM2Y5NWZmNTc2M9oNUGF1dG9tZXJnZTo6b3Bfc2V0Mjo6b3Bfc2V0OjpvcF9pdGVyOjpPYmpJZEl0ZXI6OnNlZWtfdG9fdmFsdWU6OmhhNGM1YTMwYWIwYjM4OGIy2w1AYXV0b21lcmdlOjpvcF9zZXQyOjpvcDo6T3BCdWlsZGVyOjptYXJrX2luZGV4OjpoNWY1YjAyNDc5MjU4ZWE1ZNwNR2F1dG9tZXJnZTo6c2VxdWVuY2VfdHJlZTo6U2VxdWVuY2VUcmVlTm9kZTxUPjo6Y2hlY2s6OmgyN2M2YzBlODcyODM3ZDI03Q1HYXV0b21lcmdlOjpzZXF1ZW5jZV90cmVlOjpTZXF1ZW5jZVRyZWVOb2RlPFQ+OjpjaGVjazo6aDQ3ZDE4MWE2NDM3YWM1MTDeDUdhdXRvbWVyZ2U6OnNlcXVlbmNlX3RyZWU6OlNlcXVlbmNlVHJlZU5vZGU8VD46OmNoZWNrOjpoYjgyMzJlZWQ0OTkwM2Q3Nd8NR2F1dG9tZXJnZTo6c2VxdWVuY2VfdHJlZTo6U2VxdWVuY2VUcmVlTm9kZTxUPjo6Y2hlY2s6OmhjNTYwYjFmOWZmYjg2Y2Q24A1HYXV0b21lcmdlOjpzZXF1ZW5jZV90cmVlOjpTZXF1ZW5jZVRyZWVOb2RlPFQ+OjpjaGVjazo6aGQ3YzhmYTk4NWM1NzExNzjhDR9hdXRvbWVyZ2VfYXBwbHlBbmRSZXR1cm5QYXRjaGVz4g0PYXV0b21lcmdlX21hcmtz4w10Y29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGFsbG9jOjp2ZWM6OmludG9faXRlcjo6SW50b0l0ZXI8aGV4YW5lOjpzbGFiOjp3cml0ZXI6OldyaXRlQWN0aW9uPHN0cj4+Pjo6aGRmYzAyMjBhZjcwZDY0NDPkDWg8Y29yZTo6aXRlcjo6YWRhcHRlcnM6OnppcDo6WmlwPEEsQj4gYXMgY29yZTo6aXRlcjo6YWRhcHRlcnM6OnppcDo6WmlwSW1wbDxBLEI+Pjo6bnRoOjpoMmJmYjZmM2E3NzFhNWVhYeUNkwFhdXRvbWVyZ2Vfd2FzbTo6ZXJyb3I6OjxpbXBsIGNvcmU6OmNvbnZlcnQ6OkZyb208YXV0b21lcmdlX3dhc206OmVycm9yOjpHZXREZWNvZGVkQ2hhbmdlQnlIYXNoPiBmb3Igd2FzbV9iaW5kZ2VuOjpKc1ZhbHVlPjo6ZnJvbTo6aDVlYzJhNTVkZjkyOGRiMGbmDT5hdXRvbWVyZ2Vfd2FzbTo6QXV0b21lcmdlOjpsb2FkX2luY3JlbWVudGFsOjpoMjE2NGExNmQ5ZWVmZWRiNucNTmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhdXRvbWVyZ2U6Om9wX3NldDI6Om9wOjpPcEJ1aWxkZXI+OjpoNWZhNjc1ZDAxOTkwYzQxOOgNQGNvcmU6OnNsaWNlOjpzb3J0OjpzaGFyZWQ6OnBpdm90OjptZWRpYW4zX3JlYzo6aDI5NDRhNmM0NmQxNDUxNjTpDUBjb3JlOjpzbGljZTo6c29ydDo6c2hhcmVkOjpwaXZvdDo6bWVkaWFuM19yZWM6Omg1NzdmNWE4MWNkNjg2MjE56g1AY29yZTo6c2xpY2U6OnNvcnQ6OnNoYXJlZDo6cGl2b3Q6Om1lZGlhbjNfcmVjOjpoNjk5NTdlMGQyNDlhODE3MesNQGNvcmU6OnNsaWNlOjpzb3J0OjpzaGFyZWQ6OnBpdm90OjptZWRpYW4zX3JlYzo6aGQ0YWY5NGVlYzk3ZDY3MjLsDfcBYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6SGFuZGxlPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpNdXQsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TGVhZj4sYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpLVj46OnNwbGl0OjpoYmRkYjBkM2NmNWM1M2U3Yu0NR2F1dG9tZXJnZTo6YXV0b2NvbW1pdDo6QXV0b0NvbW1pdDo6cmVzZXRfZGlmZl9jdXJzb3I6OmhjMzQ3ZTgwMjA1NjliYTRh7g1QPHNlcmRlX2NvcmU6OmRlOjpXaXRoRGVjaW1hbFBvaW50IGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aGMwZTI5YTQ4ODMxMmQ2NjjvDUNjb3JlOjpmbXQ6OkZvcm1hdHRlcjo6ZGVidWdfc3RydWN0X2ZpZWxkNV9maW5pc2g6OmgwYmUwMjdmYjI0MmZkODdk8A1NY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGF1dG9tZXJnZTo6cGF0Y2hlczo6cGF0Y2g6OlBhdGNoPjo6aDNkZGNjNjhkODJkN2NkMzDxDUM8YWxsb2M6OmJvcnJvdzo6Q293PEI+IGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhhOTFmMzZlZjM4MTA0MjQ38g1NY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGF1dG9tZXJnZTo6cGF0Y2hlczo6cGF0Y2g6OlBhdGNoPjo6aDgwYzAwMDBlYzg5NzA5OTHzDVc8c3RkOjpjb2xsZWN0aW9uczo6aGFzaDo6c2V0OjpIYXNoU2V0PFQsUz4gYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDU0Y2FjNjgzY2E0NWIzZjf0DTRhdXRvbWVyZ2U6Om9wX3NldDI6Om9wOjpPcDo6dmFsdWU6OmhmMTg5ZmJkNTE1OWM5Njg19Q01aGV4YW5lOjpjdXJzb3I6OkNvbHVtbkN1cnNvcjo6bmV4dDo6aDBjOWFhZmI0NzMwNWMyOWT2DTVoZXhhbmU6OmN1cnNvcjo6Q29sdW1uQ3Vyc29yOjpuZXh0OjpoMjFhOGY1NmQ1MWE4NWFlZPcNNWhleGFuZTo6Y3Vyc29yOjpDb2x1bW5DdXJzb3I6Om5leHQ6OmhhOTI0Y2EwNTc0NzdlNzAy+A17PGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6OnNldDo6QlRyZWVTZXQ8VD4gYXMgY29yZTo6aXRlcjo6dHJhaXRzOjpjb2xsZWN0OjpGcm9tSXRlcmF0b3I8VD4+Ojpmcm9tX2l0ZXI6Omg2NmEwMTQ2MjkwZWM2ZmZi+Q2AAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxoYXNoYnJvd246OnJhdzo6UmF3VGFibGU8KGFsbG9jOjpzdHJpbmc6OlN0cmluZyxhdXRvbWVyZ2U6Omh5ZHJhdGU6Om1hcDo6TWFwVmFsdWUpPj46OmhjNmZiY2Y3MTY0ZmRmNzZk+g1rY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGNvcmU6Om9wdGlvbjo6T3B0aW9uPChhdXRvbWVyZ2U6Oml0ZXI6OnNwYW5zOjpTcGFuRGlmZix1c2l6ZSk+Pjo6aDg1ODEzNDVlYjFlZmQ0ODj7DWNjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9uOjpPcHRpb248YXV0b21lcmdlOjppdGVyOjpzcGFuczo6U3BhbkRpZmY+Pjo6aDRhZTlmYTU5ODkzOWY0MjP8DfcBYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6SGFuZGxlPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpNdXQsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TGVhZj4sYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpLVj46OnNwbGl0OjpoNTE4YWM1ZGU0NTMzYjdiZP0N9wFhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpIYW5kbGU8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6Ok11dCxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpMZWFmPixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OktWPjo6c3BsaXQ6OmgwMWI4MDM1MzMyZGQxNzZm/g1AYXV0b21lcmdlOjpwYXRjaGVzOjpwYXRjaF9sb2c6OlBhdGNoTG9nOjptYXJrOjpoOWU5NGZmNWVkZTA3M2QyZf8NN3N0ZDo6cGFuaWNraW5nOjpydXN0X3BhbmljX3dpdGhfaG9vazo6aDRmYTNkYWVhZDljNGUwYTeADjhhbGxvYzo6cmF3X3ZlYzo6UmF3VmVjPFQsQT46Omdyb3dfb25lOjpoMDliNmVjNjA2MDFhMWVjZoEOOGFsbG9jOjpyYXdfdmVjOjpSYXdWZWM8VCxBPjo6Z3Jvd19vbmU6OmhjZDhkZDhhOTc2MGE3Y2E3gg6FAWF1dG9tZXJnZV93YXNtOjplcnJvcjo6PGltcGwgY29yZTo6Y29udmVydDo6RnJvbTxhdXRvbWVyZ2Vfd2FzbTo6ZXJyb3I6OkdldEJsb2NrPiBmb3Igd2FzbV9iaW5kZ2VuOjpKc1ZhbHVlPjo6ZnJvbTo6aGMwMWNkOTY0OTlmMjU0ZjGDDoUBYXV0b21lcmdlX3dhc206OmVycm9yOjo8aW1wbCBjb3JlOjpjb252ZXJ0OjpGcm9tPGF1dG9tZXJnZV93YXNtOjplcnJvcjo6R2V0U3BhbnM+IGZvciB3YXNtX2JpbmRnZW46OkpzVmFsdWU+Ojpmcm9tOjpoODcyODE0ZjA1OGU4NDkwOYQOOGFsbG9jOjpyYXdfdmVjOjpSYXdWZWM8VCxBPjo6Z3Jvd19vbmU6Omg5Yzk5YTgwYTJjOGU4ZGRmhQ5UPGF1dG9tZXJnZTo6c3RvcmFnZTo6Y2hhbmdlOjpQYXJzZUVycm9yIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg1ZmZhYWQzN2I2Yjk4NDc1hg67AWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhdXRvbWVyZ2U6Om9wX3NldDI6Om9wX3NldDo6Zm91bmRfb3A6Ok9wc0ZvdW5kSXRlcjxhdXRvbWVyZ2U6Om9wX3NldDI6Om9wX3NldDo6bWFya3M6Ok5vTWFya0l0ZXI8YXV0b21lcmdlOjpvcF9zZXQyOjpvcF9zZXQ6Om9wX2l0ZXI6Ok9wSXRlcj4+Pjo6aGU5YWM5NDRiNGVmMDcxMDKHDldjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YXV0b21lcmdlOjpvcF9zZXQyOjpvcF9zZXQ6OlJlc29sdmVkQWN0aW9uPjo6aDA5Yjk0Y2IxNmRjZjgxNzGIDjhhbGxvYzo6cmF3X3ZlYzo6UmF3VmVjPFQsQT46Omdyb3dfb25lOjpoYWQ3YTIwYTM5ZTQwYWY5OYkOOGFsbG9jOjpyYXdfdmVjOjpSYXdWZWM8VCxBPjo6Z3Jvd19vbmU6OmgyMjM2ZDE1M2MwYjlhNzRhig44YWxsb2M6OnJhd192ZWM6OlJhd1ZlYzxULEE+Ojpncm93X29uZTo6aDA3YTU3NGU1NmNlMDkyZTaLDjhhbGxvYzo6cmF3X3ZlYzo6UmF3VmVjPFQsQT46Omdyb3dfb25lOjpoMDk2NWI5ZGVjODRjOGEzMIwOOGFsbG9jOjpyYXdfdmVjOjpSYXdWZWM8VCxBPjo6Z3Jvd19vbmU6OmgwOThiOTQ0NmY5MDVkNDRhjQ44YWxsb2M6OnJhd192ZWM6OlJhd1ZlYzxULEE+Ojpncm93X29uZTo6aDExY2E3NjE1NGQwYjZkZjOODjhhbGxvYzo6cmF3X3ZlYzo6UmF3VmVjPFQsQT46Omdyb3dfb25lOjpoMTVhMmRhNzFlM2NmOGFjY48OOGFsbG9jOjpyYXdfdmVjOjpSYXdWZWM8VCxBPjo6Z3Jvd19vbmU6OmgxNjEyZTc5ZWQ3Nzg2NWVmkA44YWxsb2M6OnJhd192ZWM6OlJhd1ZlYzxULEE+Ojpncm93X29uZTo6aDFlNmFhZDZmMGJiNGQ0MzeRDjhhbGxvYzo6cmF3X3ZlYzo6UmF3VmVjPFQsQT46Omdyb3dfb25lOjpoMjQ3YTBhYjIxNDZiZWVjN5IOOGFsbG9jOjpyYXdfdmVjOjpSYXdWZWM8VCxBPjo6Z3Jvd19vbmU6OmgyYjZlZTMzOTBiODQxZDE1kw44YWxsb2M6OnJhd192ZWM6OlJhd1ZlYzxULEE+Ojpncm93X29uZTo6aDM2YjJhMzNjNTAzMmMxZTeUDjhhbGxvYzo6cmF3X3ZlYzo6UmF3VmVjPFQsQT46Omdyb3dfb25lOjpoN2NkZmI1MGUyNzlmNWMxNJUOOGFsbG9jOjpyYXdfdmVjOjpSYXdWZWM8VCxBPjo6Z3Jvd19vbmU6OmhiOWEzZWM3MWVjN2ViZGYylg44YWxsb2M6OnJhd192ZWM6OlJhd1ZlYzxULEE+Ojpncm93X29uZTo6aGUyMGU4NzBmNGU3NTRiNGSXDjhhbGxvYzo6cmF3X3ZlYzo6UmF3VmVjPFQsQT46Omdyb3dfb25lOjpoZTNhMTcwMGEzYWMwMWI5M5gOWjxoZXhhbmU6OnJsZTo6UmxlQ3Vyc29yPF8sUCxYPiBhcyBoZXhhbmU6OmN1cnNvcjo6Q29sdW1uQ3Vyc29yPjo6ZmluaXNoOjpoZDJlYzI3YWIwNzNmNWZmMpkOQmF1dG9tZXJnZTo6YXV0b2NvbW1pdDo6QXV0b0NvbW1pdDo6ZW1wdHlfY2hhbmdlOjpoZGJmNzk1OTM0MmE3MjYxNZoORjxhdXRvbWVyZ2U6OmV4aWQ6OkV4SWQgYXMgY29yZTo6Y21wOjpQYXJ0aWFsRXE+OjplcTo6aDVlZmI0Y2ZlNTE1MWNkNDGbDoABYXV0b21lcmdlOjpsZWdhY3k6OnV0aWxpdHlfaW1wbHM6Om9waWQ6OjxpbXBsIGNvcmU6OmNtcDo6UGFydGlhbE9yZCBmb3IgYXV0b21lcmdlOjpsZWdhY3k6Ok9wSWQ+OjpwYXJ0aWFsX2NtcDo6aGVhYzA4OWNhNTRkYmMwMjicDjxhdXRvbWVyZ2U6Om9wX3NldDI6Om9wOjpPcDo6ZWxlbWlkX29yX2tleTo6aGZiYmE2N2ZmZTQ1YjlmYWGdDkVhdXRvbWVyZ2U6OnN5bmM6OmJsb29tOjpCbG9vbUZpbHRlcjo6Y29udGFpbnNfaGFzaDo6aDU3MTkwODU4NTU5YmNiODaeDjhhbGxvYzo6cmF3X3ZlYzo6UmF3VmVjPFQsQT46Omdyb3dfb25lOjpoZmI1NmNkMWYzY2FhZTI4N58OTjxzZXJkZV9qc29uOjplcnJvcjo6RXJyb3IgYXMgc2VyZGVfY29yZTo6ZGU6OkVycm9yPjo6Y3VzdG9tOjpoMDY5N2RhOTg3ZGUxMmI5NaAOD2VuY29kZVN5bmNTdGF0ZaEOUWFsbG9jOjpyYXdfdmVjOjpSYXdWZWNJbm5lcjxBPjo6cmVzZXJ2ZTo6ZG9fcmVzZXJ2ZV9hbmRfaGFuZGxlOjpoOTk3MGI5NTczZWRiNWM3M6IOiAFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YWxsb2M6OnZlYzo6aW50b19pdGVyOjpJbnRvSXRlcjxhdXRvbWVyZ2U6Om9wX3NldDI6OmNoYW5nZTo6Y29sbGVjdG9yOjpCdWlsZENoYW5nZU1ldGFkYXRhPj46OmhhMTg1ODI1MDIxMzA4NTQ0ow5SY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGhleGFuZTo6c2xhYjo6d3JpdGVyOjpTbGFiV3JpdGVyPHN0cj4+OjpoOGQwOTE0MzA2NmVjMWYwNaQOUTxhbGxvYzo6dmVjOjpWZWM8dTg+IGFzIGhleGFuZTo6ZW5jb2Rlcjo6V3JpdGVyPFA+Pjo6Zmx1c2hfcnVuOjpoYjUzNDU4MjZhOGJiY2Q2YqUOTWF1dG9tZXJnZTo6b3Bfc2V0Mjo6b3Bfc2V0OjpvcF9pdGVyOjpNYXJrSW5mb0l0ZXI6OnRyeV9udGg6Omg0NzdiM2FlMzBkYjUzM2Vipg5RYWxsb2M6OnJhd192ZWM6OlJhd1ZlY0lubmVyPEE+OjpyZXNlcnZlOjpkb19yZXNlcnZlX2FuZF9oYW5kbGU6OmhlNjU1YzU2NTU5ZWRlNWRmpw5OPHNlcmRlX2pzb246OmVycm9yOjpFcnJvciBhcyBzZXJkZV9jb3JlOjpkZTo6RXJyb3I+OjpjdXN0b206Omg5MWU5MzQ4MGIwMTY4M2I2qA5RYWxsb2M6OnJhd192ZWM6OlJhd1ZlY0lubmVyPEE+OjpyZXNlcnZlOjpkb19yZXNlcnZlX2FuZF9oYW5kbGU6OmhiYzAxZGIxYjc5YjNkOTFjqQ45Y29yZTo6dW5pY29kZTo6cHJpbnRhYmxlOjppc19wcmludGFibGU6Omg5YmMyNTFkNzZlOGI3NTBhqg5OY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGF1dG9tZXJnZTo6c3luYzo6UmVhZE1lc3NhZ2VFcnJvcj46Omg3MmUyNGExYTA5OGM1N2Y0qw6RAWF1dG9tZXJnZV93YXNtOjppbnRlcm9wOjo8aW1wbCBjb3JlOjpjb252ZXJ0OjpUcnlGcm9tPGF1dG9tZXJnZV93YXNtOjppbnRlcm9wOjpKUz4gZm9yIGF1dG9tZXJnZTo6bWFya3M6OkV4cGFuZE1hcms+Ojp0cnlfZnJvbTo6aDYzYzQ4NmY5MTk1MGEwNzisDhZhdXRvbWVyZ2VfZW5hYmxlRnJlZXplrQ4cYXV0b21lcmdlX2dldExhc3RMb2NhbENoYW5nZa4OMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMzgyYzJhYmYwNWM4NzY5Na8OMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoZTllMzMyNTNjNmY4MjJkNbAOQ2NvcmU6OmZtdDo6Rm9ybWF0dGVyOjpkZWJ1Z19zdHJ1Y3RfZmllbGQ0X2ZpbmlzaDo6aDk1MDM1MDNjYzFmNjQ3MTOxDnM8c2VyZGVfd2FzbV9iaW5kZ2VuOjpzZXI6Ok9iamVjdFNlcmlhbGl6ZXIgYXMgc2VyZGVfY29yZTo6c2VyOjpTZXJpYWxpemVTdHJ1Y3Q+OjpzZXJpYWxpemVfZmllbGQ6Omg0MTE5OTgyYWUwY2Q1NjYwsg6DAWF1dG9tZXJnZV93YXNtOjplcnJvcjo6PGltcGwgY29yZTo6Y29udmVydDo6RnJvbTxhdXRvbWVyZ2Vfd2FzbTo6ZXJyb3I6Okluc2VydD4gZm9yIHdhc21fYmluZGdlbjo6SnNWYWx1ZT46OmZyb206OmgwZGZkMzg5OTBhNDk4MWMwsw6BAWF1dG9tZXJnZV93YXNtOjplcnJvcjo6PGltcGwgY29yZTo6Y29udmVydDo6RnJvbTxhdXRvbWVyZ2Vfd2FzbTo6ZXJyb3I6Ok1hcms+IGZvciB3YXNtX2JpbmRnZW46OkpzVmFsdWU+Ojpmcm9tOjpoZjMzNDRiMmU3NTQzYTIwOLQODmF1dG9tZXJnZV9zYXZltQ4ZYXV0b21lcmdlX3NhdmVJbmNyZW1lbnRhbLYOGGF1dG9tZXJnZV9zYXZlTm9Db21wcmVzc7cOXjxhdXRvbWVyZ2U6Om9wX3NldDI6Om9wX3NldDo6b3BfaXRlcjo6UmVhZE9wRXJyb3IgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDU5MDgzMzEzNWY1MTU0M2S4Dkg8aGV4OjplcnJvcjo6RnJvbUhleEVycm9yIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aGZmMWFjODI4ZTQ3MjhkNzS5Dks8Y29yZTo6c3RyOjplcnJvcjo6VXRmOEVycm9yIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aGQ2ZDU4ZjQzZGM0N2QyNjW6DlZjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YXV0b21lcmdlX3dhc206OmludGVyb3A6OmVycm9yOjpJbXBvcnRPYmo+OjpoNWRhMDBjYmFlZTYzM2E0NbsOjQFhdXRvbWVyZ2Vfd2FzbTo6c3luYzo6PGltcGwgY29yZTo6Y29udmVydDo6RnJvbTxhdXRvbWVyZ2Vfd2FzbTo6c3luYzo6RGVjb2RlU3luY1N0YXRlRXJyPiBmb3Igd2FzbV9iaW5kZ2VuOjpKc1ZhbHVlPjo6ZnJvbTo6aDMzNTQyNDQ1M2ZlZTBlN2G8Dlw8YXV0b21lcmdlOjpzdG9yYWdlOjpjb2x1bW5zOjpCYWRDb2x1bW5MYXlvdXQgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoNjQ5NzNjZGI0MWMyNzA1Mb0OUmNvcmU6OnNsaWNlOjpzb3J0OjpzaGFyZWQ6OnNtYWxsc29ydDo6aW5zZXJ0aW9uX3NvcnRfc2hpZnRfbGVmdDo6aGU5YmFmMjY5ZWE4NDg1Nja+Dj9hdXRvbWVyZ2U6OmF1dG9tZXJnZTo6QXV0b21lcmdlOjpleGlkX3RvX29iajo6aGNmZjgzMGU0ZTMxYWU3ZjC/Dj08c21vbF9zdHI6OlNtb2xTdHIgYXMgY29yZTo6Y21wOjpPcmQ+OjpjbXA6OmgyYzc1OGMyYTQ3ZWE4YTk1wA4vY29yZTo6Zm10Ojpwb2ludGVyX2ZtdF9pbm5lcjo6aDY0YmJhMWIyMWI4Zjc4ODPBDjhhbGxvYzo6cmF3X3ZlYzo6UmF3VmVjPFQsQT46Omdyb3dfb25lOjpoMjBlZTEwNDQxNmJmNWJlZsIOTmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhdXRvbWVyZ2U6Om9wX3NldDI6Om9wOjpPcEJ1aWxkZXI+OjpoMTM2MzlmZTcwZTkyNTVkZcMOOGFsbG9jOjpyYXdfdmVjOjpSYXdWZWM8VCxBPjo6Z3Jvd19vbmU6Omg2YTkyYjEwZWNkYWMzZjM5xA4Yc3luY3N0YXRlX3NldF9zZW50SGFzaGVzxQ5VY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGF1dG9tZXJnZTo6aXRlcjo6bWFwX3JhbmdlOjpNYXBSYW5nZUl0ZW0+OjpoM2I1NTVhYzQ0MWVhMjE5YcYOOGFsbG9jOjpyYXdfdmVjOjpSYXdWZWM8VCxBPjo6Z3Jvd19vbmU6OmgxNzk4N2ZmMWMxNzQ3NGMzxw44YWxsb2M6OnJhd192ZWM6OlJhd1ZlYzxULEE+Ojpncm93X29uZTo6aDAwMDcxMjAzYTI3YTYwMWHIDjhhbGxvYzo6cmF3X3ZlYzo6UmF3VmVjPFQsQT46Omdyb3dfb25lOjpoMDk5YmU1M2UzY2YyZTgyYskOOGFsbG9jOjpyYXdfdmVjOjpSYXdWZWM8VCxBPjo6Z3Jvd19vbmU6OmgyMDA0MmY5MDNhMGY3OWQwyg44YWxsb2M6OnJhd192ZWM6OlJhd1ZlYzxULEE+Ojpncm93X29uZTo6aDIwZTEzYTM3NzA0MDRlZDPLDjhhbGxvYzo6cmF3X3ZlYzo6UmF3VmVjPFQsQT46Omdyb3dfb25lOjpoMzBhYTk1MDIwMjQyNzE2MMwOOGFsbG9jOjpyYXdfdmVjOjpSYXdWZWM8VCxBPjo6Z3Jvd19vbmU6OmhhM2I1MjhlODFkM2JiOWM1zQ44YWxsb2M6OnJhd192ZWM6OlJhd1ZlYzxULEE+Ojpncm93X29uZTo6aGI5YTM3N2RlNGZiYTNlNmPODko8YXV0b21lcmdlOjp0eXBlczo6Q2hhbmdlSGFzaCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoNGNkMmZmNzU3YTdiMDI5Oc8OOGFsbG9jOjpyYXdfdmVjOjpSYXdWZWM8VCxBPjo6Z3Jvd19vbmU6OmhmMDZhMDIxZTI1ZTE5ZTMw0A44YWxsb2M6OnJhd192ZWM6OlJhd1ZlYzxULEE+Ojpncm93X29uZTo6aGZhODJhZjEyNDU4MmMzNTHRDjhhbGxvYzo6cmF3X3ZlYzo6UmF3VmVjPFQsQT46Omdyb3dfb25lOjpoZmE4MGViZWU3ZmZjZmQ1NdIOSDxhbGxvYzo6dmVjOjpWZWM8VCxBPiBhcyBjb3JlOjpvcHM6OmRyb3A6OkRyb3A+Ojpkcm9wOjpoYjA0Yjc4NjJlYWNkNzQ1YtMOVWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhdXRvbWVyZ2U6Oml0ZXI6Om1hcF9yYW5nZTo6TWFwUmFuZ2VJdGVtPjo6aDAyNGE0Y2FhMmJjY2Q3NGbUDoABYXV0b21lcmdlX3dhc206OmVycm9yOjo8aW1wbCBjb3JlOjpjb252ZXJ0OjpGcm9tPGF1dG9tZXJnZV93YXNtOjplcnJvcjo6R2V0PiBmb3Igd2FzbV9iaW5kZ2VuOjpKc1ZhbHVlPjo6ZnJvbTo6aGM0M2Y1Y2EzYmQ3MTQ4MDDVDhRfX3diZ19zeW5jc3RhdGVfZnJlZdYOP2F1dG9tZXJnZV93YXNtOjpBdXRvbWVyZ2U6OmdldF9jaGFuZ2VzX2FkZGVkOjpoMzI0ZGQ5YWIzMTU5MmZhZtcOBmNyZWF0ZdgOSWF1dG9tZXJnZTo6b3Bfc2V0Mjo6dHlwZXM6OlZhbHVlUmVmOjpmcm9tX2FjdGlvbl92YWx1ZTo6aDczNzQ2ZTQ4OWUyYWU5MDjZDocBYXV0b21lcmdlX3dhc206OmVycm9yOjo8aW1wbCBjb3JlOjpjb252ZXJ0OjpGcm9tPGF1dG9tZXJnZV93YXNtOjplcnJvcjo6QXBwbHlQYXRjaD4gZm9yIHdhc21fYmluZGdlbjo6SnNWYWx1ZT46OmZyb206OmgzMWEzY2U5NjAyM2E5ZmE12g6PAWF1dG9tZXJnZV93YXNtOjplcnJvcjo6PGltcGwgY29yZTo6Y29udmVydDo6RnJvbTxhdXRvbWVyZ2Vfd2FzbTo6ZXJyb3I6OlJlY2VpdmVTeW5jTWVzc2FnZT4gZm9yIHdhc21fYmluZGdlbjo6SnNWYWx1ZT46OmZyb206OmhhZjNmYjZiMzlmOTczMjI42w4UYXV0b21lcmdlX3BlbmRpbmdPcHPcDg9kZWNvZGVTeW5jU3RhdGXdDi9hbGxvYzo6dmVjOjpWZWM8VCxBPjo6cmVtb3ZlOjpoNjRhZDEzMzkwODkxNzczMN4OOGFsbG9jOjpyYXdfdmVjOjpSYXdWZWM8VCxBPjo6Z3Jvd19vbmU6OmgyMmNmYmZhNjBhMjY2NGM33w5iPGhleGFuZTo6Y3Vyc29yOjpDdXJzb3JJdGVyPEM+IGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6bmV4dDo6aDZjNDc5ZWQyYzExYWQ3NzHgDkNjb3JlOjpmbXQ6OkZvcm1hdHRlcjo6ZGVidWdfc3RydWN0X2ZpZWxkM19maW5pc2g6Omg4OTkzNGFhYzhkZmY5NmU54Q48Y29yZTo6c3RyOjpjb3VudDo6Y2hhcl9jb3VudF9nZW5lcmFsX2Nhc2U6Omg4MjYzZjhmZmNhOWIyNTRi4g5FPGhleGFuZTo6cGFjazo6UGFja0Vycm9yIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhmNWUxNjQyZTA0ZTA3NGVh4w5GY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGF1dG9tZXJnZTo6aHlkcmF0ZTo6VmFsdWU+OjpoYTExNDgwYTQ3YWJlYmRkMuQOSDxoZXhhbmU6OnBhY2s6OlBhY2tFcnJvciBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoZjVlMTY0MmUwNGUwNzRlYVsxXeUOeGNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhbGxvYzo6dmVjOjpWZWM8YXV0b21lcmdlOjpvcF9zZXQyOjpjaGFuZ2U6OmNvbGxlY3Rvcjo6QnVpbGRDaGFuZ2VNZXRhZGF0YT4+OjpoZTBlYjNlYWI5ZmIzMzNjNeYORmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhdXRvbWVyZ2U6Omh5ZHJhdGU6OlZhbHVlPjo6aGJlMDRjYjI3ZDdmNjUxMGbnDkdjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YXV0b21lcmdlOjpvcF9zZXQyOjpvcDo6T3A+OjpoNWI1ZGIxMzYyNWFmMTRlN+gObjxoZXhhbmU6OnNsYWI6OlNsYWJXZWlnaHQgYXMgaGV4YW5lOjpzbGFiOjp0cmVlOjpTcGFuV2VpZ2h0PGhleGFuZTo6c2xhYjo6U2xhYj4+OjptYXliZV9zdWI6OmgxMDEzYTQyYjUwODc2NGY26Q48Y29yZTo6c2xpY2U6OnNvcnQ6OnN0YWJsZTo6ZHJpZnRzb3J0X21haW46Omg1YjU2MmRmNDIzMWNiNDc36g43YXV0b21lcmdlX3dhc206OmludGVyb3A6OmV4cG9ydF9wYXRoOjpoMWZlYmQ5NDYzYTgyYmJhYusObjxhdXRvbWVyZ2Vfd2FzbTo6aW50ZXJvcDo6QVIgYXMgY29yZTo6Y29udmVydDo6RnJvbTwmW2F1dG9tZXJnZTo6dHlwZXM6OkNoYW5nZUhhc2hdPj46OmZyb206Omg4ZmMyM2IzZDE3NDRkZDM17A6SAWF1dG9tZXJnZV93YXNtOjppbnRlcm9wOjo8aW1wbCBjb3JlOjpjb252ZXJ0OjpUcnlGcm9tPGF1dG9tZXJnZV93YXNtOjppbnRlcm9wOjpKUz4gZm9yIGF1dG9tZXJnZTo6Y3Vyc29yOjpNb3ZlQ3Vyc29yPjo6dHJ5X2Zyb206OmhmMzQ0MTMxN2YwYmUzMTUz7Q48Y29yZTo6c2xpY2U6OnNvcnQ6OnN0YWJsZTo6ZHJpZnRzb3J0X21haW46OmhhYjU2NjZmYjNjZjkyNzcw7g5DPGFsbG9jOjpib3Jyb3c6OkNvdzxCPiBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoY2ZkZTRlZmYwMmJhYTU2OO8OqQFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YWxsb2M6OnZlYzo6VmVjPGhleGFuZTo6c2xhYjo6dHJlZTo6Tm9kZVdhbGtlcjxoZXhhbmU6OnNsYWI6OlNsYWIsYXV0b21lcmdlOjpvcF9zZXQyOjpvcF9zZXQ6Om1hcmtfaW5kZXg6Ok1hcmtJbmRleFNwYW5uZXI+Pj46Omg1NmRhNzgzM2EzMTFiNTNk8A48Y29yZTo6c2xpY2U6OnNvcnQ6OnN0YWJsZTo6ZHJpZnRzb3J0X21haW46OmgyZjkwZmNlNzgzMmU0Y2Qw8Q48Y29yZTo6c2xpY2U6OnNvcnQ6OnN0YWJsZTo6ZHJpZnRzb3J0X21haW46Omg0MzdiNTZhYzYwOGE2ZWNj8g48Y29yZTo6c2xpY2U6OnNvcnQ6OnN0YWJsZTo6ZHJpZnRzb3J0X21haW46Omg4OWU2ZjA1MDA0NDE4NmY28w48Y29yZTo6c2xpY2U6OnNvcnQ6OnN0YWJsZTo6ZHJpZnRzb3J0X21haW46Omg5NDBiNDM3NmMzNWEzNmMz9A48Y29yZTo6c2xpY2U6OnNvcnQ6OnN0YWJsZTo6ZHJpZnRzb3J0X21haW46OmhmNWJlZWVlNjdmYWQ3NDRl9Q5FYXV0b21lcmdlOjpzdG9yYWdlOjpjb2x1bW5zOjpjb2x1bW46OkNvbHVtbjo6cmFuZ2U6OmhhYTIxMjg5NjJhNmY2Mjgy9g6HAWF1dG9tZXJnZV93YXNtOjplcnJvcjo6PGltcGwgY29yZTo6Y29udmVydDo6RnJvbTxhdXRvbWVyZ2Vfd2FzbTo6ZXJyb3I6OkJhZEFjdG9ySWQ+IGZvciB3YXNtX2JpbmRnZW46OkpzVmFsdWU+Ojpmcm9tOjpoOTIxMjQ3ZjU5ZjY1Yjk1N/cOiQFhdXRvbWVyZ2Vfd2FzbTo6ZXJyb3I6OjxpbXBsIGNvcmU6OmNvbnZlcnQ6OkZyb208YXV0b21lcmdlX3dhc206OmVycm9yOjpFbmNvZGVDaGFuZ2U+IGZvciB3YXNtX2JpbmRnZW46OkpzVmFsdWU+Ojpmcm9tOjpoYThiM2ViNzUyY2RjNzM0M/gORzxhdXRvbWVyZ2U6OnR5cGVzOjpBY3RvcklkIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg4MzMyZjYyODc0MzA5NDRl+Q5vPHN0ZDo6cGFuaWNraW5nOjpiZWdpbl9wYW5pY19oYW5kbGVyOjpGb3JtYXRTdHJpbmdQYXlsb2FkIGFzIGNvcmU6OnBhbmljOjpQYW5pY1BheWxvYWQ+OjpnZXQ6OmgwNTQzNjI0Yzc5NjkwMzFm+g5IPGFsbG9jOjp2ZWM6OlZlYzxULEE+IGFzIGNvcmU6Om9wczo6ZHJvcDo6RHJvcD46OmRyb3A6Omg0ZDhmY2ZiYTBlMmJiYTdi+w64AWF1dG9tZXJnZV93YXNtOjppbnRlcm9wOjo8aW1wbCBjb3JlOjpjb252ZXJ0OjpUcnlGcm9tPGF1dG9tZXJnZV93YXNtOjppbnRlcm9wOjpKUz4gZm9yIGNvcmU6Om9wdGlvbjo6T3B0aW9uPGFsbG9jOjp2ZWM6OlZlYzxhdXRvbWVyZ2U6OnN5bmM6OnN0YXRlOjpIYXZlPj4+Ojp0cnlfZnJvbTo6aDYzNjZlYmJhZTFlMTgyZTn8DidhdXRvbWVyZ2Vfd2FzbTo6aW5pdDo6aGZlY2EwMGU2OTFjMzhmYTb9DjVoZXhhbmU6OmN1cnNvcjo6Q29sdW1uQ3Vyc29yOjpuZXh0OjpoMTdlY2E5NDM3MDMzN2FhY/4ORTxUIGFzIGFsbG9jOjpzdHJpbmc6OlNwZWNUb1N0cmluZz46OnNwZWNfdG9fc3RyaW5nOjpoYzlhNzk1OWUwZTMwZDM4OP8OSDxhbGxvYzo6dmVjOjpWZWM8VCxBPiBhcyBjb3JlOjpvcHM6OmRyb3A6OkRyb3A+Ojpkcm9wOjpoYzA3MTk2YzEzNmY1YzhlNIAPkwFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YWxsb2M6OnZlYzo6aW50b19pdGVyOjpJbnRvSXRlcjwoYWxsb2M6OnN0cmluZzo6U3RyaW5nLGF1dG9tZXJnZTo6dmFsdWU6OlZhbHVlLGF1dG9tZXJnZTo6ZXhpZDo6RXhJZCk+Pjo6aDA5OWJiYmQ2M2Q3MWU2ZWOBD2Rjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YXV0b21lcmdlOjpzdG9yYWdlOjpjaGFuZ2U6OmNoYW5nZV9vcF9jb2x1bW5zOjpDaGFuZ2VPcD46Omg2ZjRhOGM4N2MyOGRmZDI2gg84YXV0b21lcmdlOjptYXJrczo6TWFyazo6aW50b19tYXJrX3NldDo6aDg5ZTQ3ZmEzY2NjMjAxMjiDD2A8YXV0b21lcmdlOjp0eXBlczo6QWN0b3JJZCBhcyBjb3JlOjpjb252ZXJ0OjpGcm9tPGFsbG9jOjp2ZWM6OlZlYzx1OD4+Pjo6ZnJvbTo6aDZjMzVkMmM4YzU5NWVhZDaED0Zjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YXV0b21lcmdlOjpsZWdhY3k6OkNoYW5nZT46Omg3OWJiZGNlMWNlZGQ4ZGVihQ81aGV4YW5lOjpjdXJzb3I6OkNvbHVtbkN1cnNvcjo6bmV4dDo6aGVjMDIxYjdiNTdhYmViNjSGDz5oZXhhbmU6OmNvbHVtbmRhdGE6OkNvbHVtbkRhdGE8Qz46OmlzX2VtcHR5OjpoNTVmMjhmNTMyZjc1NjkwMYcPMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoZmI5YjU4OTVhYWI0OGQxNYgPWDxhdXRvbWVyZ2U6OnN0b3JhZ2U6OmNodW5rOjplcnJvcjo6SGVhZGVyIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aDQxNjY1YWZiZmZhNDVmMTmJD8YBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGNvcmU6Oml0ZXI6OmFkYXB0ZXJzOjpjaGFpbjo6Q2hhaW48YWxsb2M6OnZlYzo6aW50b19pdGVyOjpJbnRvSXRlcjxhdXRvbWVyZ2U6OmNoYW5nZTo6Q2hhbmdlPixhbGxvYzo6dmVjOjppbnRvX2l0ZXI6OkludG9JdGVyPGF1dG9tZXJnZTo6Y2hhbmdlOjpDaGFuZ2U+Pj46OmhhOTNkNzhmMGY2NmVkZTdiig8sY29yZTo6ZXJyb3I6OkVycm9yOjpjYXVzZTo6aDQwMTgwZDQ2OTc2ZWUxYjSLD048YXV0b21lcmdlOjpoeWRyYXRlOjp0ZXh0OjpUZXh0IGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aDBmMWMyM2EzMGU4ZTMxYTGMD0lhdXRvbWVyZ2U6OnBhdGNoZXM6OnBhdGNoX2xvZzo6UGF0Y2hMb2c6OmluY3JlbWVudF9tYXA6OmhjMTZiMmFiM2ZmY2M2NWM2jQ9hPGF1dG9tZXJnZTo6c3RvcmFnZTo6ZG9jdW1lbnQ6OlJlY29uc3RydWN0RXJyb3IgYXMgY29yZTo6ZXJyb3I6OkVycm9yPjo6c291cmNlOjpoMjBiNDVhMTFmYWM2MzNhNY4PODxzdHIgYXMgaGV4YW5lOjpwYWNrOjpQYWNrYWJsZT46OnBhY2s6Omg1NDE1MWYwMjQ1NWY3YzIzjw9DY29yZTo6Zm10OjpGb3JtYXR0ZXI6OmRlYnVnX3N0cnVjdF9maWVsZDJfZmluaXNoOjpoN2M5MWFiODk4NjU4MWUzY5APOmF1dG9tZXJnZV93YXNtOjppbnRlcm9wOjpqc3ZhbHVlX3RvX2k2NDo6aDA1NmU2N2Y0ZGRmNTgyYTiRDw9leHBvcnRTeW5jU3RhdGWSD4cBYXV0b21lcmdlX3dhc206OmVycm9yOjo8aW1wbCBjb3JlOjpjb252ZXJ0OjpGcm9tPGF1dG9tZXJnZV93YXNtOjplcnJvcjo6U3BsaXRCbG9jaz4gZm9yIHdhc21fYmluZGdlbjo6SnNWYWx1ZT46OmZyb206OmgzNTA3YTViOTAxMjgzYTc2kw84YXV0b21lcmdlX3dhc206OkF1dG9tZXJnZTo6c2F2ZV9zaW5jZTo6aGU3MTc1NTI1OGE4YmRmYzaUD3Zjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8aGV4YW5lOjpzbGFiOjp0cmVlOjpUcmVlTm9kZTxoZXhhbmU6OnNsYWI6OlNsYWIsaGV4YW5lOjpzbGFiOjpTbGFiV2VpZ2h0Pj46OmhmOGUxYTRlMTI2ZDAyY2MzlQ9+PGF1dG9tZXJnZTo6b3Bfc2V0Mjo6bWV0YTo6VmFsdWVNZXRhIGFzIGNvcmU6OmNvbnZlcnQ6OkZyb208JmF1dG9tZXJnZTo6b3Bfc2V0Mjo6dHlwZXM6OlNjYWxhclZhbHVlPj46OmZyb206OmhhMWU1NmY3ZGNiNjBiZTEzlg9cPGF1dG9tZXJnZTo6dHlwZXM6OkNoYW5nZUhhc2ggYXMgY29yZTo6Y29udmVydDo6VHJ5RnJvbTwmW3U4XT4+Ojp0cnlfZnJvbTo6aDFlMWUxMmVhNzQxMzIzY2OXDy1qc19zeXM6OlVpbnQ4QXJyYXk6OnRvX3ZlYzo6aDhiMjE0Yzc3ODI5YWM0MWaYD01jb3JlOjpmbXQ6Om51bTo6aW1wOjo8aW1wbCBjb3JlOjpmbXQ6OkRpc3BsYXkgZm9yIHU4Pjo6Zm10OjpoZmUwZTE3MWU0ZWU0NDRkOZkPWGNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhdXRvbWVyZ2Vfd2FzbTo6aW50ZXJvcDo6ZXJyb3I6OkltcG9ydFZhbHVlPjo6aDEyNGZiMTI3YWRhZDI4OGaaDzJhdXRvbWVyZ2Vfd2FzbTo6aW50ZXJvcDo6anNfc2V0OjpoZGU0MGZlYjIyMGNkYjM4MJsPUTxhdXRvbWVyZ2Vfd2FzbTo6ZXJyb3I6OkFwcGx5UGF0Y2ggYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoMWQ2ODIzNGYyNmMwNjQ5M5wPEmF1dG9tZXJnZV9nZXRIZWFkc50PUmNvcmU6OnNsaWNlOjpzb3J0OjpzaGFyZWQ6OnNtYWxsc29ydDo6aW5zZXJ0aW9uX3NvcnRfc2hpZnRfbGVmdDo6aGExNDJlM2VhMTM5M2MyZGWeD0JhdXRvbWVyZ2U6OnBhdGNoZXM6OnBhdGNoX2xvZzo6UGF0Y2hMb2c6OnNwbGljZTo6aDcyMTI4ODA1MmE4MjIwNzefD0djb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YXV0b21lcmdlOjpvcF9zZXQyOjpvcDo6T3A+OjpoYjljYjQ4YzE3MTEyZjIxN6APUjxhdXRvbWVyZ2Vfd2FzbTo6ZXJyb3I6OlVwZGF0ZUJsb2NrIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aGVhYTRkYzY5YWI2Y2E0NzKhDzA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGZmMGE4ODEyNTcyZjBjMTWiD1Jjb3JlOjpzbGljZTo6c29ydDo6c2hhcmVkOjpzbWFsbHNvcnQ6Omluc2VydGlvbl9zb3J0X3NoaWZ0X2xlZnQ6Omg2OTNmZTI4Zjc5NGI0MDYyow9RPGF1dG9tZXJnZV93YXNtOjplcnJvcjo6VXBkYXRlVGV4dCBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmhjZGI4OWE2ZDJhMjdjM2VhpA9MPGF1dG9tZXJnZV93YXNtOjplcnJvcjo6QmxvY2sgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoMjFlNTVmZjc3MGZiYzVjM6UPUzxhdXRvbWVyZ2Vfd2FzbTo6ZXJyb3I6Okluc2VydE9iamVjdCBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6Omg3NDc5OGU5ZGQzZDg0YWFipg9XY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGF1dG9tZXJnZTo6Y29sdW1uYXI6OmVuY29kaW5nOjpEZWNvZGVFcnJvcj46Omg3YjE2NDlkNTc5MWNmMDkxpw9FYWxsb2M6OmNvbGxlY3Rpb25zOjp2ZWNfZGVxdWU6OlZlY0RlcXVlPFQsQT46Omdyb3c6OmgxNmZiODI0MTcyYmJmZTNlqA9FYWxsb2M6OmNvbGxlY3Rpb25zOjp2ZWNfZGVxdWU6OlZlY0RlcXVlPFQsQT46Omdyb3c6OmhkNjQ0YmMwN2Y1ZGQ1ODY5qQ9HPGF1dG9tZXJnZTo6aHlkcmF0ZTo6VmFsdWUgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGE2ZTUxMWM2OTUyN2E2YmSqD0Njb3JlOjpmbXQ6OkZvcm1hdHRlcjo6ZGVidWdfc3RydWN0X2ZpZWxkMV9maW5pc2g6OmgyYjNiNDhjZTdiZDA4ZDgwqw+LAWF1dG9tZXJnZV93YXNtOjplcnJvcjo6PGltcGwgY29yZTo6Y29udmVydDo6RnJvbTxhdXRvbWVyZ2Vfd2FzbTo6ZXJyb3I6OkJhZFN5bmNNZXNzYWdlPiBmb3Igd2FzbV9iaW5kZ2VuOjpKc1ZhbHVlPjo6ZnJvbTo6aDIyOTc4ZTU2ODQwYjRjYjOsD4cBYXV0b21lcmdlX3dhc206OmVycm9yOjo8aW1wbCBjb3JlOjpjb252ZXJ0OjpGcm9tPGF1dG9tZXJnZV93YXNtOjplcnJvcjo6UG9wUGF0Y2hlcz4gZm9yIHdhc21fYmluZGdlbjo6SnNWYWx1ZT46OmZyb206OmhjZGVlNDIzMTUzM2M0MzkzrQ8Vc3luY3N0YXRlX3NoYXJlZEhlYWRzrg8Xc3luY3N0YXRlX2xhc3RTZW50SGVhZHOvD0w8YXV0b21lcmdlOjpoeWRyYXRlOjp0ZXh0OjpUZXh0IGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg2MjIxNjAzN2RiOGJiMmM3sA9TY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGF1dG9tZXJnZTo6c3RvcmFnZTo6Y2hhbmdlOjpQYXJzZUVycm9yPjo6aDgwMjc1ZDBlYzQxMmY3MGSxD05jb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YXV0b21lcmdlOjpvcF9zZXQyOjpvcF9zZXQ6Ok9wU2V0Pjo6aDcwNTBlOTljY2E3NTcwOTmyD1xjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YXV0b21lcmdlOjp0cmFuc2FjdGlvbjo6aW5uZXI6OlRyYW5zYWN0aW9uSW5uZXI+OjpoYmQ4N2FiNmJjOGQxYzIwNbMPXWF1dG9tZXJnZTo6Y29sdW1uYXI6OmVuY29kaW5nOjpjb2xfZXJyb3I6OkRlY29kZUNvbHVtbkVycm9yOjppbnZhbGlkX3ZhbHVlOjpoZjVlNzhiNjE2NWI0Y2Q0Y7QPdzxhdXRvbWVyZ2U6OnN5bmM6OlJlYWRNZXNzYWdlRXJyb3IgYXMgY29yZTo6Y29udmVydDo6RnJvbTxhdXRvbWVyZ2U6OnN5bmM6OmJsb29tOjpQYXJzZUVycm9yPj46OmZyb206OmhhZjE1YTdkMTE5OWYzZTZmtQ9oPGF1dG9tZXJnZTo6dGV4dF9kaWZmOjpCbG9ja0RpZmZIb29rIGFzIGF1dG9tZXJnZTo6dGV4dF9kaWZmOjpteWVyczo6RGlmZkhvb2s+OjplcXVhbDo6aDZlZDc2ZjZjZThiODhkY2a2D1RtaW5pel9veGlkZTo6ZGVmbGF0ZTo6Y29yZTo6Q29tcHJlc3Nvck94aWRlOjpzZXRfZm9ybWF0X2FuZF9sZXZlbDo6aDU3YjY3ZWRlNTAwZmE5YWG3DzphdXRvbWVyZ2Vfd2FzbTo6aW50ZXJvcDo6ZXhwb3J0X3BhdGNoZXM6OmgzODdhZWY3YTU5ZWIyZGNkuA+DAWF1dG9tZXJnZV93YXNtOjplcnJvcjo6PGltcGwgY29yZTo6Y29udmVydDo6RnJvbTxhdXRvbWVyZ2Vfd2FzbTo6ZXJyb3I6OlNwbGljZT4gZm9yIHdhc21fYmluZGdlbjo6SnNWYWx1ZT46OmZyb206Omg0OGVkMTNiNWNkNzBlYWFiuQ+BAWF1dG9tZXJnZV93YXNtOjplcnJvcjo6PGltcGwgY29yZTo6Y29udmVydDo6RnJvbTxhdXRvbWVyZ2Vfd2FzbTo6ZXJyb3I6OkRpZmY+IGZvciB3YXNtX2JpbmRnZW46OkpzVmFsdWU+Ojpmcm9tOjpoZWJiMGMzNDEwM2MzNDg1YroPJWFsbG9jOjpmbXQ6OmZvcm1hdDo6aDA2NTFkNjk2NzljY2RjODm7Dy9hbGxvYzo6dmVjOjpWZWM8VCxBPjo6aW5zZXJ0OjpoM2U2ZDE1ODI2Nzk4NGYzMrwPPWF1dG9tZXJnZTo6YXV0b2NvbW1pdDo6QXV0b0NvbW1pdDo6aXNvbGF0ZTo6aDViZDMxZmJjYjY0MjEyYjO9D0BhdXRvbWVyZ2U6OnBhdGNoZXM6OnBhdGNoX2xvZzo6UGF0Y2hMb2c6Om51bGw6OmhkMzgxNDEzZjQyNjE1MTU3vg89d2FzbV9iaW5kZ2VuOjpjb252ZXJ0OjpjbG9zdXJlczo6Xzo6aW52b2tlOjpoNDY1MDhkYTc4ZTRkY2RlYr8PV2NvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhdXRvbWVyZ2U6Oml0ZXI6Omxpc3RfcmFuZ2U6Okxpc3RSYW5nZUl0ZW0+OjpoZGFiNzIwOWJlZWNjYzE1ZMAPngJjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YXV0b21lcmdlOjppdGVyOjp0b29sczo6U2tpcEl0ZXI8YXV0b21lcmdlOjpvcF9zZXQyOjpvcF9zZXQ6Om9wX2l0ZXI6Ok9wSXRlcixhdXRvbWVyZ2U6Oml0ZXI6OnRvb2xzOjpTa2lwV3JhcDxhdXRvbWVyZ2U6Oml0ZXI6OnRvb2xzOjpNZXJnZUl0ZXI8YXV0b21lcmdlOjpvcF9zZXQyOjpvcF9zZXQ6Om9wX2l0ZXI6OkN0cldhbGtlcixhdXRvbWVyZ2U6Om9wX3NldDI6Om9wX3NldDo6b3BfaXRlcjo6U3VjY1dhbGtlcj4+Pj46Omg2YjUxODBkNzFmMzk3NTU5wQ9XY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGF1dG9tZXJnZTo6aXRlcjo6bGlzdF9yYW5nZTo6TGlzdFJhbmdlSXRlbT46Omg1ZWNhYzlkNWVlNDY3NTAywg89d2FzbV9iaW5kZ2VuOjpjb252ZXJ0OjpjbG9zdXJlczo6Xzo6aW52b2tlOjpoZjA5Y2MyMjE3ZGM3NWNlMMMPUGNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhdXRvbWVyZ2U6Oml0ZXI6OnRvb2xzOjpEaWZmU2tpcHBlcj46Omg0OTNiNmJiNjg4N2NkM2E2xA8SYXV0b21lcmdlX3JvbGxiYWNrxQ9QY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGF1dG9tZXJnZTo6aXRlcjo6dG9vbHM6OkRpZmZTa2lwcGVyPjo6aDM0NGQ5Yjg1YzIyZjA2NDfGD1tjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YXV0b21lcmdlOjpzdG9yYWdlOjpkb2N1bWVudDo6UmVjb25zdHJ1Y3RFcnJvcj46OmhkMjhlM2Q1Yzk2MWYzZjBmxw88Y29yZTo6c2xpY2U6OnNvcnQ6OnN0YWJsZTo6ZHJpZnRzb3J0X21haW46OmgwNTQ1YWQzZWE4ZWU2NjA0yA88Y29yZTo6c2xpY2U6OnNvcnQ6OnN0YWJsZTo6ZHJpZnRzb3J0X21haW46Omg0NGUyMDI1NmU5NzMxMGRmyQ88Y29yZTo6c2xpY2U6OnNvcnQ6OnN0YWJsZTo6ZHJpZnRzb3J0X21haW46OmhiMjgwNTVlZTNiOGUyZDEyyg84YWxsb2M6OnJhd192ZWM6OlJhd1ZlYzxULEE+Ojpncm93X29uZTo6aDJlMmY1NTZmNmYzY2EzNmbLD0phdXRvbWVyZ2U6OnRyYW5zYWN0aW9uOjppbm5lcjo6VHJhbnNhY3Rpb25Jbm5lcjo6dW5tYXJrOjpoYmRmYjEzZTU4MWU5YWNjNMwPOGFsbG9jOjpyYXdfdmVjOjpSYXdWZWM8VCxBPjo6Z3Jvd19vbmU6Omg1ZjA2YTZlNGUyYmFkZWFlzQ9sY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGFsbG9jOjp2ZWM6OlZlYzwoYXV0b21lcmdlOjpleGlkOjpFeElkLGF1dG9tZXJnZTo6dHlwZXM6OlByb3ApPj46OmhmMGI0Zjk4NTNlYTJjOTM4zg+cAWF1dG9tZXJnZV93YXNtOjppbnRlcm9wOjplcnJvcjo6PGltcGwgY29yZTo6Y29udmVydDo6RnJvbTxhdXRvbWVyZ2Vfd2FzbTo6aW50ZXJvcDo6ZXJyb3I6OkJhZENoYW5nZUhhc2g+IGZvciB3YXNtX2JpbmRnZW46OkpzVmFsdWU+Ojpmcm9tOjpoZGNkM2Q1NzdkOTA4YjAwYc8PUGNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhdXRvbWVyZ2U6Oml0ZXI6Om1hcF9yYW5nZTo6TWFwRGlmZj46OmhlZTQyOTI5ZjFhOTE2OGYy0A9FPGF1dG9tZXJnZTo6ZXhpZDo6RXhJZCBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmhkOTk4ZmFmZjJlZDIyMWIy0Q8rc3RkOjpwYW5pY2tpbmc6OnNldF9ob29rOjpoYzkzNzA5OTUyMzkwNzQ3YtIPVDxhdXRvbWVyZ2Vfd2FzbTo6ZXJyb3I6OlNwbGljZUh5ZHJhdGUgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoMTYwNDA2ZTI5ZjM1NzFlY9MPUTxhdXRvbWVyZ2Vfd2FzbTo6ZXJyb3I6OlNwbGl0QmxvY2sgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoZDZlMWM1ZTVlZTdkOTkzN9QPHmF1dG9tZXJnZV90b3BvSGlzdG9yeVRyYXZlcnNhbNUPD2F1dG9tZXJnZV9zdGF0c9YPMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoNTU2YzAzNWYyZTU2N2MzZdcPMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoOWZlOTBmYjAwNjZlNTZkZtgPP3N0ZDo6c3lzOjpzeW5jOjpvbmNlOjpub190aHJlYWRzOjpPbmNlOjpjYWxsOjpoMzY2NGM0ODliOTg1MmUwMNkPP3N0ZDo6c3lzOjpzeW5jOjpvbmNlOjpub190aHJlYWRzOjpPbmNlOjpjYWxsOjpoNjU3ZTcwNDZjYzg2NTFjOdoPP3N0ZDo6c3lzOjpzeW5jOjpvbmNlOjpub190aHJlYWRzOjpPbmNlOjpjYWxsOjpoN2QzMTQ2ZmZmZTgxZjJhNdsPP3N0ZDo6c3lzOjpzeW5jOjpvbmNlOjpub190aHJlYWRzOjpPbmNlOjpjYWxsOjpoZDQxMzc3OTA2ZDQ5NDA3MdwPMjwmVCBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmgxN2VmYzAwY2M1ZGM4NzU13Q8yPCZUIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aGU0ZjM4ZjRkZTYwNTU4ODDeD0Bjb3JlOjpzbGljZTo6c29ydDo6c2hhcmVkOjpwaXZvdDo6bWVkaWFuM19yZWM6OmhlYWMyODc2NTZiZjNjNGRj3w9YPGF1dG9tZXJnZV93YXNtOjplcnJvcjo6QmF0Y2hDcmVhdGVPYmplY3QgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoODU2ZWYyMjUxZmM0ZTMxN+APUDxhdXRvbWVyZ2Vfd2FzbTo6ZXJyb3I6OkluY3JlbWVudCBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmhmY2I3ODliNmFmMWNlMDE34Q8Wc3luY3N0YXRlX3NldF9yZWFkT25seeIPGmF1dG9tZXJnZV91cGRhdGVEaWZmQ3Vyc29y4w8ZYXV0b21lcmdlX3Jlc2V0RGlmZkN1cnNvcuQPE2F1dG9tZXJnZV9pbnRlZ3JhdGXlDw5hdXRvbWVyZ2VfZHVtcOYPP3N0ZDo6c3lzOjpzeW5jOjpvbmNlOjpub190aHJlYWRzOjpPbmNlOjpjYWxsOjpoNzJiNGMxNGYwNzhjOThiNecPhwFhdXRvbWVyZ2Vfd2FzbTo6ZXJyb3I6OjxpbXBsIGNvcmU6OmNvbnZlcnQ6OkZyb208YXV0b21lcmdlX3dhc206OmVycm9yOjpVcGRhdGVUZXh0PiBmb3Igd2FzbV9iaW5kZ2VuOjpKc1ZhbHVlPjo6ZnJvbTo6aGZlZTBhYjYwY2QxMTNiNzfoD4IBYXV0b21lcmdlX3dhc206OmVycm9yOjo8aW1wbCBjb3JlOjpjb252ZXJ0OjpGcm9tPGF1dG9tZXJnZV93YXNtOjplcnJvcjo6QmxvY2s+IGZvciB3YXNtX2JpbmRnZW46OkpzVmFsdWU+Ojpmcm9tOjpoNjAwYjVhODg3YjNlOTU4OekPiQFhdXRvbWVyZ2Vfd2FzbTo6ZXJyb3I6OjxpbXBsIGNvcmU6OmNvbnZlcnQ6OkZyb208YXV0b21lcmdlX3dhc206OmVycm9yOjpJbnNlcnRPYmplY3Q+IGZvciB3YXNtX2JpbmRnZW46OkpzVmFsdWU+Ojpmcm9tOjpoMmE4NjdjYjA4NDYyNzdkNeoPhgFhdXRvbWVyZ2Vfd2FzbTo6ZXJyb3I6OjxpbXBsIGNvcmU6OmNvbnZlcnQ6OkZyb208YXV0b21lcmdlX3dhc206OmVycm9yOjpJbmNyZW1lbnQ+IGZvciB3YXNtX2JpbmRnZW46OkpzVmFsdWU+Ojpmcm9tOjpoZGMxOTFjMDYyYmQ4NDdmNOsPZzwmc2VyZGVfd2FzbV9iaW5kZ2VuOjpzZXI6OlNlcmlhbGl6ZXIgYXMgc2VyZGVfY29yZTo6c2VyOjpTZXJpYWxpemVyPjo6c2VyaWFsaXplX2k2NDo6aDIyMjUzMTgyZmI5NmY2YmbsD4sBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGF1dG9tZXJnZTo6b3Bfc2V0Mjo6b3Bfc2V0OjpvcF9xdWVyeTo6Rml4Q291bnRlcnM8YXV0b21lcmdlOjpvcF9zZXQyOjpvcF9zZXQ6Om9wX2l0ZXI6Ok9wSXRlcj4+OjpoYWQ2OGJkMDAzZDgxMDExOe0PMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMTYwZmYzMTAyODlhMjA4MO4PYTxhdXRvbWVyZ2U6OnRleHRfZGlmZjo6VHhIb29rIGFzIGF1dG9tZXJnZTo6dGV4dF9kaWZmOjpteWVyczo6RGlmZkhvb2s+OjplcXVhbDo6aDE0NGYwMDhlNGViN2VmYWXvD0tzZXJkZV9qc29uOjpkZTo6RGVzZXJpYWxpemVyPFI+OjpwYXJzZV9leHBvbmVudF9vdmVyZmxvdzo6aDRmYTVmYjg4ZWExMjdhMmHwD0o8Y29yZTo6b3BzOjpyYW5nZTo6UmFuZ2U8SWR4PiBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoZjZiNDNmOTMyMjcwMmRkMfEPe2NvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhdXRvbWVyZ2U6OnN0b3JhZ2U6OnBhcnNlOjpQYXJzZUVycm9yPGF1dG9tZXJnZTo6c3RvcmFnZTo6Y2h1bms6OmVycm9yOjpDaHVuaz4+OjpoODllY2NjZGU2OGE2Y2FhNvIPiQFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8aGV4YW5lOjplbmNvZGVyOjpFbmNvZGVyPGhleGFuZTo6cmxlOjpSbGVDdXJzb3I8NjRfdXNpemUsYXV0b21lcmdlOjpvcF9zZXQyOjp0eXBlczo6QWN0aW9uPj4+OjpoMGUxZGJlNDU0NWYyMWFlNPMPQGNvcmU6OnNsaWNlOjpzb3J0OjpzaGFyZWQ6OnBpdm90OjptZWRpYW4zX3JlYzo6aGNjMTYyYTFiZjkzZTEzNDb0Dz5hdXRvbWVyZ2U6OmF1dG9jb21taXQ6OkF1dG9Db21taXQ6OnJvbGxiYWNrOjpoZjYyZmQ3OTk5MGJmZjBiZvUPSjxjb3JlOjpvcHM6OnJhbmdlOjpSYW5nZTxJZHg+IGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmgzMTA3ZmZjZWE0NDI1MjQz9g8WX19leHRlcm5yZWZfZHJvcF9zbGljZfcPVXVuaWNvZGVfc2VnbWVudGF0aW9uOjpncmFwaGVtZTo6R3JhcGhlbWVDdXJzb3I6OmlzX2JvdW5kYXJ5X3Jlc3VsdDo6aDNiZTZjOTQ4YzMwZjViZDT4D0pjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YXV0b21lcmdlOjp2YWx1ZTo6U2NhbGFyVmFsdWU+OjpoYjU2NDAyMTA5NTllZmJmM/kPN3NlcmRlX2NvcmU6OmRlOjpFcnJvcjo6aW52YWxpZF92YWx1ZTo6aDc1MmY3YTNhN2ZlOTFiZDP6D1Y8YXV0b21lcmdlOjp0ZXh0X3ZhbHVlOjpDb25jcmV0ZVRleHRWYWx1ZSBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoZjY4YzZhNTQ4ZGYwYjhmY/sPZzwmc2VyZGVfd2FzbV9iaW5kZ2VuOjpzZXI6OlNlcmlhbGl6ZXIgYXMgc2VyZGVfY29yZTo6c2VyOjpTZXJpYWxpemVyPjo6c2VyaWFsaXplX3U2NDo6aDUwZWJlNzMyOTEwNmFmMmb8D1h1bmljb2RlX3NlZ21lbnRhdGlvbjo6Z3JhcGhlbWU6OkdyYXBoZW1lQ3Vyc29yOjppc19ib3VuZGFyeV9yZXN1bHQ6OmgzYmU2Yzk0OGMzMGY1YmQ0WzFd/Q9KY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGF1dG9tZXJnZTo6dmFsdWU6OlNjYWxhclZhbHVlPjo6aDUwYzdlZTFlYWRlZTM0NTT+D1k8YXV0b21lcmdlOjp0ZXh0X3ZhbHVlOjpDb25jcmV0ZVRleHRWYWx1ZSBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoZjY4YzZhNTQ4ZGYwYjhmY1sxXf8POm1pbml6X294aWRlOjppbmZsYXRlOjpjb3JlOjphcHBseV9tYXRjaDo6aDE5MDQwZjAwMmRkMjAwZTOAEEM8d2FzbV9iaW5kZ2VuOjpKc1ZhbHVlIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg4ZjkwYzRkNjQ1NmFiODM3gRBpY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPChhdXRvbWVyZ2U6OnR5cGVzOjpPcElkLGF1dG9tZXJnZTo6b3Bfc2V0Mjo6dHlwZXM6Ok1hcmtEYXRhKT46Omg2NWUzZmYzMjZkOTkzNWVkghBUY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGF1dG9tZXJnZTo6aXRlcjo6bWFwX3JhbmdlOjpNYXBEaWZmSXRlbT46OmgyYWY3MDdlNTgzZGJmMDMwgxBIPHNlcmRlX2pzb246OmVycm9yOjpFcnJvciBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmhkM2I5NmU2ZjdiNTE3NDllhBA6c2VyZGVfY29yZTo6ZGU6OlNlcUFjY2Vzczo6bmV4dF9lbGVtZW50OjpoODg3MmRlODM3NzkyNzEzNYUQOnNlcmRlX2NvcmU6OmRlOjpTZXFBY2Nlc3M6Om5leHRfZWxlbWVudDo6aGE3ZjE5YTRkMTcxMTZjYjGGEDpzZXJkZV9jb3JlOjpkZTo6U2VxQWNjZXNzOjpuZXh0X2VsZW1lbnQ6OmhkMTA3NjljNzYyMGRkNWM1hxCqAWF1dG9tZXJnZV93YXNtOjppbnRlcm9wOjo8aW1wbCBjb3JlOjpjb252ZXJ0OjpUcnlGcm9tPGF1dG9tZXJnZV93YXNtOjppbnRlcm9wOjpKUz4gZm9yIGNvcmU6Om9wdGlvbjo6T3B0aW9uPGF1dG9tZXJnZV93YXNtOjp2YWx1ZTo6RGF0YXR5cGU+Pjo6dHJ5X2Zyb206OmhkNzRkZjRjNTI0ZjYzNGFjiBARZGVjb2RlU3luY01lc3NhZ2WJEFo8YXV0b21lcmdlOjpzdG9yYWdlOjpjb2x1bW5zOjpCYWRDb2x1bW5MYXlvdXQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDFlMjhkYzdmNjNlZjU2MWGKEHJjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YWxsb2M6OnZlYzo6VmVjPChhdXRvbWVyZ2U6OnZhbHVlOjpWYWx1ZSxhdXRvbWVyZ2U6OmV4aWQ6OkV4SWQsYm9vbCk+Pjo6aDJhODRiNzk2Y2MwODQ1M2SLEE5jb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YXV0b21lcmdlOjpvcF9zZXQyOjp0eXBlczo6T3BUeXBlPjo6aGVmMWUyNWYwZmYxMGNmMGWMEEBjb3JlOjpzbGljZTo6c29ydDo6c2hhcmVkOjpwaXZvdDo6bWVkaWFuM19yZWM6OmgyYmNmMTVkNjQ3MDZhNTUzjRBDc3RkOjpwYW5pY2tpbmc6OmJlZ2luX3BhbmljX2hhbmRsZXI6Ont7Y2xvc3VyZX19OjpoZDZjMWIyZDkzOTIyMzFhY44QMmF1dG9tZXJnZV93YXNtOjppbnRlcm9wOjpqc19zZXQ6Omg2YzBkNjA5ZDZjZTQwNmExjxAyYXV0b21lcmdlX3dhc206OmludGVyb3A6OmpzX3NldDo6aGY0NGU1YmVkMWY2NTMyYmSQEIEBYXV0b21lcmdlX3dhc206OmVycm9yOjo8aW1wbCBjb3JlOjpjb252ZXJ0OjpGcm9tPGF1dG9tZXJnZV93YXNtOjplcnJvcjo6Rm9yaz4gZm9yIHdhc21fYmluZGdlbjo6SnNWYWx1ZT46OmZyb206OmgyODE2NzdmNDc2MWZhZWJikRCDAWF1dG9tZXJnZV93YXNtOjplcnJvcjo6PGltcGwgY29yZTo6Y29udmVydDo6RnJvbTxhdXRvbWVyZ2Vfd2FzbTo6ZXJyb3I6OkN1cnNvcj4gZm9yIHdhc21fYmluZGdlbjo6SnNWYWx1ZT46OmZyb206Omg1MmM5MzAwNjEwMWUxMGJkkhA6aGV4YW5lOjpybGU6OlJsZUN1cnNvcjxfLFAsWD46OnByb2dyZXNzOjpoNjgzMzU3YmUwYWQxYWRlYZMQUWF1dG9tZXJnZTo6c3RvcmFnZTo6YnVuZGxlOjpidWlsZGVyOjpPcEl0ZXJVbnZlcmlmaWVkOjp0cnlfbmV3OjpoMjA0OTRkMzdkODI5OTU2NJQQVjxhdXRvbWVyZ2U6OnR5cGVzOjpQYXJzZUNoYW5nZUhhc2hFcnJvciBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmhlNzk4YTI5YmQzZjRjNGU0lRBgPGFsbG9jOjpzdHJpbmc6OlN0cmluZyBhcyBjb3JlOjpjb252ZXJ0OjpGcm9tPGFsbG9jOjpib3Jyb3c6OkNvdzxzdHI+Pj46OmZyb206OmgyMTczMTIyMzQyNTg1NTI3lhBEY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGhleGFuZTo6cGFjazo6UGFja0Vycm9yPjo6aDM2YjU4MGVhY2ViYjUzYjGXEC5hbGxvYzo6cmF3X3ZlYzo6ZmluaXNoX2dyb3c6OmhiZjQyMTM2NjczMzcwMGFkmBAyYXV0b21lcmdlX3dhc206OmludGVyb3A6OmpzX3NldDo6aGRkNjA0ZTQxNjgzMGJlN2KZEC5hbGxvYzo6cmF3X3ZlYzo6ZmluaXNoX2dyb3c6OmhjMDYyOWFmODY3ZGVmYWZmmhAuYWxsb2M6OnJhd192ZWM6OmZpbmlzaF9ncm93OjpoNWQ4Nzk2OWJkZTM0MmQ1YpsQL2FsbG9jOjp2ZWM6OlZlYzxULEE+OjpyZW1vdmU6OmgzMjc3NWQzOWQ1NjllMTJjnBBgYXV0b21lcmdlOjpzdG9yYWdlOjpjb2x1bW5zOjpjb2x1bW5fYnVpbGRlcjo6R3JvdXBBd2FpdGluZ1ZhbHVlOjpmaW5pc2hfdmFsdWU6OmgxYWYzNGIyYjg0YWMzY2QxnRAuYWxsb2M6OnJhd192ZWM6OmZpbmlzaF9ncm93OjpoMGY1ZTA4NDNhZjQxNWFkY54QLmFsbG9jOjpyYXdfdmVjOjpmaW5pc2hfZ3Jvdzo6aDYwMjBkMjgxZDY5YzBkNjOfEC5hbGxvYzo6cmF3X3ZlYzo6ZmluaXNoX2dyb3c6OmhlMmMwYjJjZjNjOTUzMDgzoBBUPHNlcmRlX2pzb246OmVycm9yOjpFcnJvciBhcyBzZXJkZV9jb3JlOjpkZTo6RXJyb3I+OjppbnZhbGlkX3R5cGU6OmgyYTQ1ZGEzOGNkMjE0YTc2oRBVPHNlcmRlX2pzb246OmVycm9yOjpFcnJvciBhcyBzZXJkZV9jb3JlOjpkZTo6RXJyb3I+OjppbnZhbGlkX3ZhbHVlOjpoZTM0ZmQ5NTcyNWRkM2Q5MaIQLmFsbG9jOjpyYXdfdmVjOjpmaW5pc2hfZ3Jvdzo6aGMyMGIzMmU5NThjZTg1NDOjEC5hbGxvYzo6cmF3X3ZlYzo6ZmluaXNoX2dyb3c6Omg2MzNmMWEyODg4MWIwMGY4pBAyPGNoYXIgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDQyNzFhNmY0MWRhZjUyZTalEKgBYXV0b21lcmdlX3dhc206OmludGVyb3A6OjxpbXBsIGNvcmU6OmNvbnZlcnQ6OlRyeUZyb208YXV0b21lcmdlX3dhc206OmludGVyb3A6OkpTPiBmb3IgY29yZTo6b3B0aW9uOjpPcHRpb248YXV0b21lcmdlOjpzeW5jOjpNZXNzYWdlRmxhZ3M+Pjo6dHJ5X2Zyb206Omg1NDAzNjYxMmE4NDczY2M2phCHAWF1dG9tZXJnZV93YXNtOjplcnJvcjo6PGltcGwgY29yZTo6Y29udmVydDo6RnJvbTxhdXRvbWVyZ2Vfd2FzbTo6ZXJyb3I6OlNhdmVCdW5kbGU+IGZvciB3YXNtX2JpbmRnZW46OkpzVmFsdWU+Ojpmcm9tOjpoNGE5ZjhkNTVjZDQ1MzVjNacQMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoOTliY2E3ODI1Y2YwZjQwYqgQUGNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhdXRvbWVyZ2U6Om9wX3NldDI6OnR5cGVzOjpNYXJrRGF0YT46Omg4ODA4YzBmMmMwYjhmYTExqRBRY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGF1dG9tZXJnZTo6aXRlcjo6bWFwX3JhbmdlOjpNYXBFbnRyeT46OmhiYjhhNzgxZmU0ZjZiMjQxqhBAY29yZTo6c2xpY2U6OnNvcnQ6OnNoYXJlZDo6cGl2b3Q6Om1lZGlhbjNfcmVjOjpoZjM1ZDMxMjYyYWZkZmJkMqsQTDxhdXRvbWVyZ2U6OmNoYW5nZTo6TG9hZEVycm9yIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aDc5YjEyZjhlZDgwNDFiM2GsEHBjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9uOjpPcHRpb248YWxsb2M6OnZlYzo6VmVjPGF1dG9tZXJnZTo6c3luYzo6c3RhdGU6OkhhdmU+Pj46OmgzOGMyNTFmZDNhMjc0N2E1rRBEY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGhleGFuZTo6cGFjazo6UGFja0Vycm9yPjo6aGQ2MjYzODE4ZTFiZjg4MjOuEIQBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGNvcmU6Om9wdGlvbjo6T3B0aW9uPGF1dG9tZXJnZTo6c2VxdWVuY2VfdHJlZTo6U2VxdWVuY2VUcmVlTm9kZTxhbGxvYzo6c3RyaW5nOjpTdHJpbmc+Pj46OmhkODkzYzYyNzFkY2Y3ZDJhrxDoAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhdXRvbWVyZ2U6Om9wX3NldDI6Om9wX3NldDo6bWFya3M6Ok1hcmtJdGVyPGF1dG9tZXJnZTo6b3Bfc2V0Mjo6b3Bfc2V0Ojp0b3Bfb3A6OlRvcE9wSXRlcjxhdXRvbWVyZ2U6Om9wX3NldDI6Om9wX3NldDo6dmlzaWJsZTo6VmlzaWJsZU9wSXRlcjxhdXRvbWVyZ2U6Om9wX3NldDI6Om9wX3NldDo6b3BfaXRlcjo6T3BJdGVyPj4+Pjo6aDAxMzU1MTYxNWM0ZDkyZjKwEE08c3RkOjppbzo6ZXJyb3I6OkVycm9yIGFzIGNvcmU6OmVycm9yOjpFcnJvcj46OmRlc2NyaXB0aW9uOjpoZDc1ZjE0YTVlYTEyNWI0ObEQOmNvcmU6OmZtdDo6YnVpbGRlcnM6OkRlYnVnVHVwbGU6OmZpbmlzaDo6aDVkNjRiODlhZjBjMWI3YWWyEHM8c2VyZGVfd2FzbV9iaW5kZ2VuOjpzZXI6Ok9iamVjdFNlcmlhbGl6ZXIgYXMgc2VyZGVfY29yZTo6c2VyOjpTZXJpYWxpemVTdHJ1Y3Q+OjpzZXJpYWxpemVfZmllbGQ6OmhiYjQ2ZGQyZjFmZTc1NmI3sxBuPGNvcmU6Oml0ZXI6OmFkYXB0ZXJzOjpmaWx0ZXI6OkZpbHRlcjxJLFA+IGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6bmV4dDo6aGFiMWE0ZDIwNjA2YWZhM2K0EDA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDgwMGU2ZDUwM2ZkYTA3OGK1EFg8YXV0b21lcmdlOjpzdG9yYWdlOjpwYXJzZTo6UGFyc2VFcnJvcjxFPiBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6Omg3ODJlNGMyZjFhZmM1MWRmthBgYXV0b21lcmdlOjpzdG9yYWdlOjpjb2x1bW5zOjpjb2x1bW5fYnVpbGRlcjo6R3JvdXBBd2FpdGluZ1ZhbHVlOjpmaW5pc2hfZW1wdHk6OmhmOWU1MGEyOWVhNWVmMDIwtxAwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg0ZTE0MmUyOGJhNWQyNTA3uBAwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg3MWZlM2M2YTMyN2IwOThmuRAyPCZUIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aGVlYTU3YzFkZDQwOGU4OTe6EFhjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YXV0b21lcmdlX3dhc206OmludGVyb3A6OmVycm9yOjpJbnZhbGlkU3Bhbj46OmgzYzM1NWNkM2RhNjVmYmZiuxAMZGVjb2RlQ2hhbmdlvBAwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg1MjVlYTQ2MmU2NGE2MzVhvRBtPGF1dG9tZXJnZTo6c3RvcmFnZTo6Y29sdW1uczo6Y29sdW1uX3NwZWNpZmljYXRpb246OkNvbHVtblR5cGUgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoZmU1NzNjMTQ3NDdhZGFkYr4QMjwmVCBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmhmZGNlZjExZDU5Y2M0MjkwvxBtY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGF1dG9tZXJnZTo6c3RvcmFnZTo6Y2hhbmdlOjpjaGFuZ2Vfb3BfY29sdW1uczo6UmVhZENoYW5nZU9wRXJyb3I+OjpoODUwMGZmOTA0YmE2OGViY8AQQ2FsbG9jOjpyYXdfdmVjOjpSYXdWZWNJbm5lcjxBPjo6d2l0aF9jYXBhY2l0eV9pbjo6aDJlMDVjMWE4M2JkZGExYTTBEFg8YXV0b21lcmdlOjpzdG9yYWdlOjpwYXJzZTo6UGFyc2VFcnJvcjxFPiBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmhjZTE5OGMxNjYyNTg2MTEzwhBYPGF1dG9tZXJnZTo6c3RvcmFnZTo6cGFyc2U6OlBhcnNlRXJyb3I8RT4gYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoOWM2MDY4MThkOWY1MWU3YsMQXzxhdXRvbWVyZ2U6OnN0b3JhZ2U6OmxvYWQ6OmNoYW5nZV9jb2xsZWN0b3I6OkVycm9yIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmgwN2ZjZGM4ZGM2YjZiNGFhxBAzYWxsb2M6OnN5bmM6OkFyYzxULEE+Ojpkcm9wX3Nsb3c6OmgwODc0NGI0MjQzZjQ3MDgyxRBKY29yZTo6Zm10OjpudW06OjxpbXBsIGNvcmU6OmZtdDo6TG93ZXJIZXggZm9yIGkxNj46OmZtdDo6aDMzMTAyYzJkYWY2NjZhY2TGEEljb3JlOjpmbXQ6Om51bTo6PGltcGwgY29yZTo6Zm10OjpVcHBlckhleCBmb3IgaTg+OjpmbXQ6Omg4ZWM2ZTY3NGI5NDFmNDE2xxBJY29yZTo6Zm10OjpudW06OjxpbXBsIGNvcmU6OmZtdDo6TG93ZXJIZXggZm9yIGk4Pjo6Zm10OjpoMGIzZThjM2NhODlhZTVmOcgQSmNvcmU6OmZtdDo6bnVtOjo8aW1wbCBjb3JlOjpmbXQ6OlVwcGVySGV4IGZvciBpMTY+OjpmbXQ6OmhkN2ZiZWI1ZTgwYzBlMGU2yRBKY29yZTo6Zm10OjpudW06OjxpbXBsIGNvcmU6OmZtdDo6TG93ZXJIZXggZm9yIGk2ND46OmZtdDo6aGVkNjA2YmMxZDExNGNjYzDKEEpjb3JlOjpmbXQ6Om51bTo6PGltcGwgY29yZTo6Zm10OjpVcHBlckhleCBmb3IgaTY0Pjo6Zm10OjpoMWY4Y2M5OTA4ZThmMTcxMcsQN3NlcmRlX2NvcmU6OmRlOjpFcnJvcjo6dW5rbm93bl9maWVsZDo6aGU4N2E3YjdlOTNlMTEwYzfMEDlzZXJkZV9jb3JlOjpkZTo6RXJyb3I6OnVua25vd25fdmFyaWFudDo6aDdiNTE0ZDFlMTk1ZDkzZjPNEDI8JlQgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoNzJmMzYwMTkzZTlhZDYzMc4QV2NvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhdXRvbWVyZ2Vfd2FzbTo6aW50ZXJvcDo6ZXJyb3I6OkFwcGx5UGF0Y2g+OjpoNWQ5MDk2NmM4Y2FiMDUxZc8QWmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhbGxvYzo6dmVjOjpWZWM8YXV0b21lcmdlOjpzeW5jOjpzdGF0ZTo6SGF2ZT4+OjpoZTkzOWIxY2Q2YWEwMDBhNtAQQWF1dG9tZXJnZTo6YXV0b2NvbW1pdDo6QXV0b0NvbW1pdDo6ZGlmZl9jdXJzb3I6Omg0NTQxYmQ3YzdjMGJiMmQ00RAtc3RkOjppbzo6ZXJyb3I6OkVycm9yOjpuZXc6Omg5ZTEyYzQ4ZGQwZjcxNWRm0hBKY29yZTo6Zm10OjpudW06OjxpbXBsIGNvcmU6OmZtdDo6TG93ZXJIZXggZm9yIGkzMj46OmZtdDo6aDIwNzk3NjFmNTBiMTExYTHTEEpjb3JlOjpmbXQ6Om51bTo6PGltcGwgY29yZTo6Zm10OjpVcHBlckhleCBmb3IgaTMyPjo6Zm10OjpoY2U5MTJlMDEwOTRlYTc5ZdQQMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoNjNhZjZkYWI3ZmU3ZTJkMdUQMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoYmJkOGFiYjljNDVkZTQyOdYQMjwmVCBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmhkOWNlODFjODE0ZTU4OGVl1xBWY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGF1dG9tZXJnZTo6b3Bfc2V0Mjo6dHlwZXM6OkNoYW5nZU1ldGFkYXRhPjo6aDE1NTg1NDhjYTZkMjY2ZDnYEJsBYXV0b21lcmdlX3dhc206OmludGVyb3A6OmVycm9yOjo8aW1wbCBjb3JlOjpjb252ZXJ0OjpGcm9tPGF1dG9tZXJnZV93YXNtOjppbnRlcm9wOjplcnJvcjo6QmFkU3luY1N0YXRlPiBmb3Igd2FzbV9iaW5kZ2VuOjpKc1ZhbHVlPjo6ZnJvbTo6aGQyMDU3YWFmOWVhNzZjNGHZEJUBYXV0b21lcmdlX3dhc206OmludGVyb3A6OmVycm9yOjo8aW1wbCBjb3JlOjpjb252ZXJ0OjpGcm9tPGF1dG9tZXJnZV93YXNtOjppbnRlcm9wOjplcnJvcjo6RXhwb3J0PiBmb3Igd2FzbV9iaW5kZ2VuOjpKc1ZhbHVlPjo6ZnJvbTo6aDBjNGNjZmI2ZWY2OGMyYTLaEJkBYXV0b21lcmdlX3dhc206OmludGVyb3A6OmVycm9yOjo8aW1wbCBjb3JlOjpjb252ZXJ0OjpGcm9tPGF1dG9tZXJnZV93YXNtOjppbnRlcm9wOjplcnJvcjo6QXBwbHlQYXRjaD4gZm9yIHdhc21fYmluZGdlbjo6SnNWYWx1ZT46OmZyb206OmhkNDFlMWE5MjdlOWU1MTJk2xCCAWF1dG9tZXJnZV93YXNtOjplcnJvcjo6PGltcGwgY29yZTo6Y29udmVydDo6RnJvbTxhdXRvbWVyZ2Vfd2FzbTo6ZXJyb3I6Ok1lcmdlPiBmb3Igd2FzbV9iaW5kZ2VuOjpKc1ZhbHVlPjo6ZnJvbTo6aGZkZTA1MmNlZGFjZjdhOTjcEIMBPGFsbG9jOjp2ZWM6OlZlYzxULEE+IGFzIGFsbG9jOjp2ZWM6OnNwZWNfZXh0ZW5kOjpTcGVjRXh0ZW5kPFQsYWxsb2M6OnZlYzo6aW50b19pdGVyOjpJbnRvSXRlcjxUPj4+OjpzcGVjX2V4dGVuZDo6aDA1YjE5NjFmNzU5OThiYTHdEDA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDQ3NTdiZTYzODQ3OWVlMzHeEDA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDY4OWNlNmNiYzI5M2MyN2XfEDA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDhhNmY1MGM1ZjZiZjI2Y2TgEDA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDkxNWRkZDEwMzI0YWUzN2XhEDA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGQ3MDkwOTI5OTRhYWExMjTiEDA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGUyMTdmMDQzOGUzNTQ1NmLjEDA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGZiMjMzYTVkNmZiMDEyOGLkEGNjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YXV0b21lcmdlOjpvcF9zZXQyOjpjaGFuZ2U6OmNvbGxlY3Rvcjo6Q2hhbmdlQ29sbGVjdG9yPjo6aDI2YzU3Y2Q0MjJmYWI2OWblECxjb3JlOjplcnJvcjo6RXJyb3I6OmNhdXNlOjpoM2QzZGYyZjA2MDU5ODQyMOYQUzxhdXRvbWVyZ2U6OmVycm9yOjpBdXRvbWVyZ2VFcnJvciBhcyBjb3JlOjplcnJvcjo6RXJyb3I+Ojpzb3VyY2U6OmhkOGQ4NjU4N2ZmZDc3NzFm5xA8YXV0b21lcmdlX3dhc206OmludGVyb3A6OmV4cG9ydF9qdXN0X3BhdGg6Omg1OGQ5OWY1ZDBiMTdjYTcw6BA8aGV4YW5lOjplbmNvZGVyOjpTcGxpY2VFbmNvZGVyPEM+OjpmaW5pc2g6OmhlY2ExMWQwN2U5YTdlNTVj6RB1YXV0b21lcmdlOjpsZWdhY3k6OnV0aWxpdHlfaW1wbHM6Om9waWQ6OjxpbXBsIGNvcmU6OmZtdDo6RGlzcGxheSBmb3IgYXV0b21lcmdlOjpsZWdhY3k6Ok9wSWQ+OjpmbXQ6OmhkYWQ2ZjA1ODc4YzYxNzZm6hBoPHN0ZDo6cGFuaWNraW5nOjpiZWdpbl9wYW5pY19oYW5kbGVyOjpGb3JtYXRTdHJpbmdQYXlsb2FkIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aDI0ZDA1OGY1YjQ2YjEyY2PrEDhzZXJkZV9jb3JlOjpkZTo6RXJyb3I6OmludmFsaWRfbGVuZ3RoOjpoOWRhMWZiMWUzMDliM2FlOOwQuAFhdXRvbWVyZ2Vfd2FzbTo6aW50ZXJvcDo6PGltcGwgY29yZTo6Y29udmVydDo6VHJ5RnJvbTxhdXRvbWVyZ2Vfd2FzbTo6aW50ZXJvcDo6SlM+IGZvciBjb3JlOjpvcHRpb246Ok9wdGlvbjxhbGxvYzo6dmVjOjpWZWM8YXV0b21lcmdlOjp0eXBlczo6Q2hhbmdlSGFzaD4+Pjo6dHJ5X2Zyb206Omg3N2UzMzYxOWYyNTkxYmU27RBDPGFsbG9jOjpib3Jyb3c6OkNvdzxCPiBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoNmRhYWNmMjJjNmQ0OWZlNO4QMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoZTI3MjMwM2MxOWI3ZmYxNe8QkgFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9uOjpPcHRpb248YXV0b21lcmdlOjpzZXF1ZW5jZV90cmVlOjpTZXF1ZW5jZVRyZWVOb2RlPGF1dG9tZXJnZTo6aHlkcmF0ZTo6bGlzdDo6TGlzdFZhbHVlPj4+OjpoYzk4ZTQ2MDc5M2FhYzYzY/AQQWF1dG9tZXJnZTo6YXV0b2NvbW1pdDo6QXV0b0NvbW1pdDo6Z2V0X2NoYW5nZXM6Omg2Yjc3NmY0MWMxMWE3Y2Rl8RBDPGZsYXRlMjo6bWVtOjpDb21wcmVzcyBhcyBmbGF0ZTI6Onppbzo6T3BzPjo6cnVuOjpoZGQ5YTg0NjA0MTQyZDJiZPIQQzxhbGxvYzo6Ym9ycm93OjpDb3c8Qj4gYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDcwMGUwNTA0YWY0MGQ5YjPzECZqc19zeXM6OkJpZ0ludDo6YWJzOjpoZGY2MzAzNDk5NDE1OTRlZPQQCF9fbXVsdGkz9RBFY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHNlcmRlX2pzb246OmVycm9yOjpFcnJvcj46OmhjZWY2ZWE0ODY2NTA2NzVi9hAKcmVhZEJ1bmRsZfcQRjxoZXg6OmVycm9yOjpGcm9tSGV4RXJyb3IgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDEyYTVjNzgwNDBhM2ZkNTH4EC5jb3JlOjpyZXN1bHQ6OnVud3JhcF9mYWlsZWQ6OmhjOWYwY2Q1ZjJjYjA2MTg1+RAwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmgxYmE4ODg3ZjI2YzlkMTg1+hAwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmgyMWIwNjE3ZGJhOGViZmY2+xAwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg4OTc1Zjk5MGRmYmZiMjE1/BAwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg4ZDc4MWI0YzZkNmIxNmZk/RAwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhjY2U2MzZiZjEzMzI0ZjY4/hA9YXV0b21lcmdlOjpjaGFuZ2VfcXVldWU6OkNoYW5nZVF1ZXVlOjp0YWtlOjpoNWM0N2MwMmZmYzFhNjczYf8QbjxhdXRvbWVyZ2U6OnN0b3JhZ2U6OmNoYW5nZTo6Y2hhbmdlX29wX2NvbHVtbnM6OlJlYWRDaGFuZ2VPcEVycm9yIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhhNGE3ZjExYTMwMjY3YjMwgBE+Y29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I6Om50aDo6aDQ0NTg3NmI4MjljZDk0ZjeBETthdXRvbWVyZ2U6OnR5cGVzOjpBY3RvcklkOjp0b19oZXhfc3RyaW5nOjpoODRiY2MwNWY3MDU0ZGVkNYIRJHN0ZDo6dGhyZWFkOjpwYXJrOjpoNWNiMjI2NGM1ZmFhYjBiMoMRuwFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YXV0b21lcmdlOjpvcF9zZXQyOjpvcF9zZXQ6OnRvcF9vcDo6VG9wT3BJdGVyPGF1dG9tZXJnZTo6b3Bfc2V0Mjo6b3Bfc2V0Ojp2aXNpYmxlOjpWaXNpYmxlT3BJdGVyPGF1dG9tZXJnZTo6b3Bfc2V0Mjo6b3Bfc2V0OjpvcF9pdGVyOjpPcEl0ZXI+Pj46OmhmMzM2NTY0NzQyOGQxNjFihBF8Y29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGF1dG9tZXJnZTo6c2VxdWVuY2VfdHJlZTo6U2VxdWVuY2VUcmVlTm9kZTxhdXRvbWVyZ2U6Omh5ZHJhdGU6Omxpc3Q6Okxpc3RWYWx1ZT4+OjpoNjUzNDhhMmVjYTRhMWNhMoURQjxhbGxvYzo6dmVjOjpWZWM8VCxBPiBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMDUzNTcwMjRmNjVmZjA1OIYRQjxhbGxvYzo6dmVjOjpWZWM8VCxBPiBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMTUyNzgzNDA3ZWYyNGViNIcRQjxhbGxvYzo6dmVjOjpWZWM8VCxBPiBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMWNhYTg4ZjNhZWUxNjRkOIgRQjxhbGxvYzo6dmVjOjpWZWM8VCxBPiBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMmRmYjk5YjQyZjRmNjU1MYkRQjxhbGxvYzo6dmVjOjpWZWM8VCxBPiBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoNDM5ZDc4OTAwYjFjZTRmM4oRQjxhbGxvYzo6dmVjOjpWZWM8VCxBPiBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoNGRkMzZmMDMwZWE1YTI2M4sRQjxhbGxvYzo6dmVjOjpWZWM8VCxBPiBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoNGVmNWIyNTE5NmFkYzY4N4wRQjxhbGxvYzo6dmVjOjpWZWM8VCxBPiBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoNmMwZTk4YTIyOWEyNmNkNY0RQjxhbGxvYzo6dmVjOjpWZWM8VCxBPiBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoNzllYzcwZTU5YWNhMjcyZI4RQjxhbGxvYzo6dmVjOjpWZWM8VCxBPiBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoOTJjMGJmYzEwMzAzYzJkMo8RQjxhbGxvYzo6dmVjOjpWZWM8VCxBPiBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoOTMzNjMzYzVmZTVmNzU1MZARQjxhbGxvYzo6dmVjOjpWZWM8VCxBPiBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoOWQ3NzA2ZDgzOWU0MmRjMZERQjxhbGxvYzo6dmVjOjpWZWM8VCxBPiBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoYTk4ZGIyZmZhYzhjN2ZiNZIRQjxhbGxvYzo6dmVjOjpWZWM8VCxBPiBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoYjBiM2NiYjBhZTM0NzI3NJMRQjxhbGxvYzo6dmVjOjpWZWM8VCxBPiBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoYjUwNWY5ZWNjYzUxOTc5M5QRQjxhbGxvYzo6dmVjOjpWZWM8VCxBPiBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoYmUzNzQ5M2RjMTQ0M2I4YpURQjxhbGxvYzo6dmVjOjpWZWM8VCxBPiBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoYzIwOWI3Nzk1NTRiYzk3ZpYRQjxhbGxvYzo6dmVjOjpWZWM8VCxBPiBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoYzQwODU5MTFjYjA3OTUwMZcRQjxhbGxvYzo6dmVjOjpWZWM8VCxBPiBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoYzY5OTQwY2E4ZmY1OTI3N5gRQjxhbGxvYzo6dmVjOjpWZWM8VCxBPiBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoYzgyNDVlOGJmODUxZjZlY5kRQjxhbGxvYzo6dmVjOjpWZWM8VCxBPiBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoZGVhNjM3N2RlNzA5MDdiZZoRQjxhbGxvYzo6dmVjOjpWZWM8VCxBPiBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoZTkxNzYxMDkxMjc5NjBkOJsROWF1dG9tZXJnZTo6b3Bfc2V0Mjo6b3Bfc2V0OjpPcFNldDo6Z2V0OjpoOTQ2MzFmNDExMzE0YWI0OJwRNmF1dG9tZXJnZTo6dGV4dF9kaWZmOjpteWVyczo6Vjo6bmV3OjpoZmM1MDk5ZDQ5Nzk5MjY4NZ0RODxpNjQgYXMgaGV4YW5lOjpwYWNrOjpQYWNrYWJsZT46OnBhY2s6OmhkNTI4OGYwNjU2ZTk5NjMxnhE9d2FzbV9iaW5kZ2VuOjpjb252ZXJ0OjpjbG9zdXJlczo6Xzo6aW52b2tlOjpoMzA0N2E2Y2RkYzYyZmQyZZ8RPXdhc21fYmluZGdlbjo6Y29udmVydDo6Y2xvc3VyZXM6Ol86Omludm9rZTo6aGRiZDkwYmI4OTQzZWYzYzOgEUg8YWxsb2M6OnZlYzo6VmVjPFQsQT4gYXMgY29yZTo6b3BzOjpkcm9wOjpEcm9wPjo6ZHJvcDo6aGVjZWRmZGJjMDliM2VkNjWhEUg8YWxsb2M6OnZlYzo6VmVjPFQsQT4gYXMgY29yZTo6b3BzOjpkcm9wOjpEcm9wPjo6ZHJvcDo6aDQwOWMzMjAzZWVkYmM4NTaiEWZjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8KGFsbG9jOjpzdHJpbmc6OlN0cmluZyxhdXRvbWVyZ2U6Omh5ZHJhdGU6Om1hcDo6TWFwVmFsdWUpPjo6aDRlNmFhYjlmYjI4MDExN2OjEUg8YWxsb2M6OnZlYzo6VmVjPFQsQT4gYXMgY29yZTo6b3BzOjpkcm9wOjpEcm9wPjo6ZHJvcDo6aGMxZmRjZGE1ZjY2Y2U3YWWkEUg8YWxsb2M6OnZlYzo6VmVjPFQsQT4gYXMgY29yZTo6b3BzOjpkcm9wOjpEcm9wPjo6ZHJvcDo6aDk4YjE0NWMyNTIyZjg2OTSlET13YXNtX2JpbmRnZW46OmNvbnZlcnQ6OmNsb3N1cmVzOjpfOjppbnZva2U6OmgxNTQ4NzFjYjViNGVhYWRjphFiY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGF1dG9tZXJnZTo6bGVnYWN5OjpTb3J0ZWRWZWM8YXV0b21lcmdlOjpsZWdhY3k6Ok9wSWQ+Pjo6aGNmODhiZjUxYmZjMWFjODenETA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDNmMDEwMjc0YzZkYjY1N2GoETA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDQ2NDM5NDYxMmMzZDZkOWKpETA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDg3YjEzYTc3M2E5YzdhOWaqETA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDg4MWI1NTZmZjE4NGVjYTarETA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDhkNjU2MDc4M2Y1YjBhMGSsETA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGNkZTg5NDFiNjQ4NTJlNjmtEUM8YWxsb2M6OnN5bmM6OkFyYzxULEE+IGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg3ZmQyNmI3YjE5NDBhZWNirhE4PHU2NCBhcyBoZXhhbmU6OnBhY2s6OlBhY2thYmxlPjo6cGFjazo6aDYwNTdmOTdkM2Y4NTIyMWSvERlfX2V4dGVybnJlZl90YWJsZV9kZWFsbG9jsBEwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmgwZjBmYzIwNWQ1YzBlNDY3sRFAYWxsb2M6OnN5bmM6OmFyY2lubmVyX2xheW91dF9mb3JfdmFsdWVfbGF5b3V0OjpoNjU0MWEzMTZjNTZiMzdlM7IRMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoYmYzODBjNDI3MDYzNmZlM7MRRTxUIGFzIGFsbG9jOjpzdHJpbmc6OlNwZWNUb1N0cmluZz46OnNwZWNfdG9fc3RyaW5nOjpoMjk5MjE4MTEwMDAxZTFlMLQRRTxUIGFzIGFsbG9jOjpzdHJpbmc6OlNwZWNUb1N0cmluZz46OnNwZWNfdG9fc3RyaW5nOjpoNGU4Njg3YjgyMDUyYTRmN7URSDxhbGxvYzo6dmVjOjpWZWM8VCxBPiBhcyBjb3JlOjpvcHM6OmRyb3A6OkRyb3A+Ojpkcm9wOjpoYmFiMWUzZmI4OWYzOTc2M7YRNnNlcmRlX2NvcmU6OmRlOjpFcnJvcjo6aW52YWxpZF90eXBlOjpoOTE3M2QzMTVmNzVlYzE5MLcRMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMDY0MjY2Njk4ZDkyNDI0NLgRMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMWRmZWYzYTZmZDRiODBlMLkRMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMjJkNjI3NThkYWFjYzJmM7oRMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoM2U1MjlkMjQ2ZWFkNjI4NbsRMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoNGZmY2YwNjJjNDFiOTA2MbwRMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoNmU1ZjgyYzczYzU4NDUyYr0RMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoNzBkMmU2MmM1MGFhNzEzZb4RMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoN2ZjM2M5YTgyNGU3NmYxZL8RMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoOGNiMWQ3OTQ2YWJiZWYzM8ARMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoYjk5YzM0MGFmNjBkMTMwNMERSDxhbGxvYzo6dmVjOjpWZWM8VCxBPiBhcyBjb3JlOjpvcHM6OmRyb3A6OkRyb3A+Ojpkcm9wOjpoZmJlMTNiODQ0OTMzNGI4MsIRMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMjZhNDAyYzI3YmVkZWE1M8MROGNvcmU6OmZtdDo6YnVpbGRlcnM6OkRlYnVnTWFwOjpmaW5pc2g6OmhmM2ZiM2RjMDE1NDRhZDk2xBFJY29yZTo6Zm10OjpmbG9hdDo6PGltcGwgY29yZTo6Zm10OjpEZWJ1ZyBmb3IgZjY0Pjo6Zm10OjpoMDJkZDU3MmVkMzVmMDc2YsURTjxzZXJkZV9qc29uOjplcnJvcjo6RXJyb3IgYXMgc2VyZGVfY29yZTo6ZGU6OkVycm9yPjo6Y3VzdG9tOjpoOGNhOGI0OGE4YmI4NjFlOcYRMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoZTA3OGZhMzNkMzM4ZmY0M8cRU2NvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhdXRvbWVyZ2U6Om9wX3NldDI6OnR5cGVzOjpTY2FsYXJWYWx1ZT46Omg5OGNjZDZmOTJmY2RlOTI0yBFXY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGFsbG9jOjp2ZWM6OlZlYzxhdXRvbWVyZ2U6OnR5cGVzOjpBY3RvcklkPj46Omg4MGU4YzBmZGU3NzM3YTJiyRE+Y29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I6Om50aDo6aDQ5YzA3ZDg5Nzk3NDMwZDPKEUI8YWxsb2M6OnZlYzo6VmVjPFQsQT4gYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGI5ZDAxOTM1NGZjY2I5ZTbLEVY8YXV0b21lcmdlOjpzdG9yYWdlOjpjaHVuazo6ZXJyb3I6OkhlYWRlciBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoOGNiNThiOGNkM2QzNjM0Y8wRMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMmNlN2FjZmIzZDUzZGE0Zc0RMWF1dG9tZXJnZV93YXNtOjppbnRlcm9wOjphbGxvYzo6aDU0ODU0YmZmYTg3NDA0YWPOEV08YWxsb2M6OmJvcnJvdzo6Q293PEI+IGFzIGNvcmU6OmNtcDo6UGFydGlhbEVxPGFsbG9jOjpib3Jyb3c6OkNvdzxDPj4+OjplcTo6aDJlZGE0MGE2MzAxMjg4MDHPETA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDFmNjU5MTZhZDEzMWUwMjPQETA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDk3NWU1N2ZkNjEwNzY1MzXREVBjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YWxsb2M6OnZlYzo6VmVjPGhleGFuZTo6c2xhYjo6U2xhYj4+OjpoNmQ1ODMyZWM3Zjc0MzNiYtIRPXNlcmRlX2pzb246OmRlOjpQYXJzZXJOdW1iZXI6OmludmFsaWRfdHlwZTo6aGExZDQ5ODdhN2Q5MTUzNDDTEUc8YWxsb2M6OnN0cmluZzo6U3RyaW5nIGFzIGNvcmU6OmNsb25lOjpDbG9uZT46OmNsb25lOjpoYjZkYzFkNWI0ZjkxMmIwOdQRYDx1bmljb2RlX3NlZ21lbnRhdGlvbjo6Z3JhcGhlbWU6OkdyYXBoZW1lSW5jb21wbGV0ZSBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMDAyZTRmMGFkY2NlNDMwNtURMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMmMyZjdkZTFkNzgwNWRiYdYRMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoNWVlZDE0OWUzNzkwMDI0ZNcRMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoY2ZkMjQ5NTMxZjczZTdlMdgRYzx1bmljb2RlX3NlZ21lbnRhdGlvbjo6Z3JhcGhlbWU6OkdyYXBoZW1lSW5jb21wbGV0ZSBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMDAyZTRmMGFkY2NlNDMwNlsxXdkRDWluaXRTeW5jU3RhdGXaETA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDM3NTRiYjQwMzY5ZjRkNjTbEYQBPGF1dG9tZXJnZTo6YXV0b2NvbW1pdDo6QXV0b0NvbW1pdCBhcyBhdXRvbWVyZ2U6OnRyYW5zYWN0aW9uOjp0cmFuc2FjdGFibGU6OlRyYW5zYWN0YWJsZT46OmluaXRfcm9vdF9mcm9tX2h5ZHJhdGU6OmhhMTgwMjUxOTFlOTZmZGRi3BFBYXV0b21lcmdlOjphdXRvbWVyZ2U6OkF1dG9tZXJnZTo6aGFzX2FjdG9yX3NlcTo6aDk3YzM4NDA3MmRmNTI1MGHdEWE8bWluaXpfb3hpZGU6OmRlZmxhdGU6OmJ1ZmZlcjo6SGFzaEJ1ZmZlcnMgYXMgY29yZTo6ZGVmYXVsdDo6RGVmYXVsdD46OmRlZmF1bHQ6Omg1ZDU2NTk0MzNmZWUzNjhj3hE9d2FzbV9iaW5kZ2VuOjpjb252ZXJ0OjpjbG9zdXJlczo6Xzo6aW52b2tlOjpoYWI1YTkyZjExYTAzMjU2Zt8RZ2pzX3N5czo6PGltcGwgY29yZTo6Y29udmVydDo6RnJvbTxqc19zeXM6OkpzU3RyaW5nPiBmb3IgYWxsb2M6OnN0cmluZzo6U3RyaW5nPjo6ZnJvbTo6aDUwNjg1ODcyYjQ3MjllMWbgET5hbGxvYzo6dmVjOjpWZWM8VCxBPjo6aW5zZXJ0Ojphc3NlcnRfZmFpbGVkOjpoNGEyNjBiNjZmYmRhMzA3OeERPmFsbG9jOjp2ZWM6OlZlYzxULEE+OjpyZW1vdmU6OmFzc2VydF9mYWlsZWQ6OmgxY2Y1MGI4NTU3MzZmZTQ04hFBYWxsb2M6OnZlYzo6VmVjPFQsQT46OnNwbGl0X29mZjo6YXNzZXJ0X2ZhaWxlZDo6aDllNzZhNWMzMjlmYjhiZjDjETZjb3JlOjpwYW5pY2tpbmc6OnBhbmljX2JvdW5kc19jaGVjazo6aDBkYjQ4YTIyMzlmN2FhNGPkETtjb3JlOjpmbXQ6OmJ1aWxkZXJzOjpEZWJ1Z1N0cnVjdDo6ZmluaXNoOjpoMGVlNzA5YzA5ZGMxMTk4N+URVGNvcmU6OnNsaWNlOjppbmRleDo6c2xpY2Vfc3RhcnRfaW5kZXhfbGVuX2ZhaWw6OmRvX3BhbmljOjpydW50aW1lOjpoNjQzZTA0MjdkYThjNzlmZuYRUmNvcmU6OnNsaWNlOjppbmRleDo6c2xpY2VfZW5kX2luZGV4X2xlbl9mYWlsOjpkb19wYW5pYzo6cnVudGltZTo6aDdiMjNhY2Y3ZTRmYzM5ODnnEVBjb3JlOjpzbGljZTo6aW5kZXg6OnNsaWNlX2luZGV4X29yZGVyX2ZhaWw6OmRvX3BhbmljOjpydW50aW1lOjpoMmI4N2FkM2VlNzNkN2ViZegRYWNvcmU6OnNsaWNlOjo8aW1wbCBbVF0+Ojpjb3B5X2Zyb21fc2xpY2U6Omxlbl9taXNtYXRjaF9mYWlsOjpkb19wYW5pYzo6cnVudGltZTo6aGVmOTUxNGYyOGViNGMyMGLpEYsBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGNvcmU6OnJlc3VsdDo6UmVzdWx0PGF1dG9tZXJnZTo6aHlkcmF0ZTo6VmFsdWUsYXV0b21lcmdlX3dhc206OmludGVyb3A6OmVycm9yOjpKc1ZhbFRvSHlkcmF0ZT4+OjpoZTQ5MzA3YTcyMGVmYjZlY+oRMzwoVSxUKSBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoODBiMDA0NmZlYmMzYWI4MOsRDGVuY29kZUNoYW5nZewRMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoNWI1M2Y2ZTI5NDYzODc0MO0RMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoNzlhMmY0NGI4YzU3NGE2Ye4RMjwmVCBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmgxZGYxNWQyNDc4MzM2NDZl7xFvY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGFsbG9jOjp2ZWM6OlZlYzxhbGxvYzo6dmVjOjpWZWM8YXV0b21lcmdlOjpjaGFuZ2VfZ3JhcGg6Ok5vZGVJZHg+Pj46OmhmMzNhYjNmNDI4YjAwZmJh8BE+Y29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I6Om50aDo6aDc3MDcxNTIwMTZiNDlkOWLxETM8KFUsVCkgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGI0NTQ4Mzc1MzgxNWY4NTjyET13YXNtX2JpbmRnZW46OmNvbnZlcnQ6OmNsb3N1cmVzOjpfOjppbnZva2U6OmgxYWIxYjg1OGMxMTE3ZWYz8xE3c3RkOjphbGxvYzo6ZGVmYXVsdF9hbGxvY19lcnJvcl9ob29rOjpoMjRiMzAwNzU3MzU1ZDU1N/QRajxoZXhhbmU6OnNsYWI6OlNsYWJXZWlnaHQgYXMgaGV4YW5lOjpzbGFiOjp0cmVlOjpTcGFuV2VpZ2h0PGhleGFuZTo6c2xhYjo6U2xhYj4+Ojp1bmlvbjo6aGU1Yzc2NGY3MmZiOWQ1ZGP1EThzdGQ6OnRocmVhZDo6bG9jYWw6OkxvY2FsS2V5PFQ+Ojp3aXRoOjpoOGQyYmYxOTY0M2Y0ZTJhYvYRMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoNjk3NWZhMTBkZGVjZDJhZvcRQzxhbGxvYzo6Ym9ycm93OjpDb3c8Qj4gYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDgzZTcxNDU2MWQ3NzQ2N2P4EVk8YXV0b21lcmdlOjpzdG9yYWdlOjpidW5kbGU6OkludmFsaWRCdW5kbGUgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoMDlkNjM2NTY4MTM1ZjVmZfkRdjxhdXRvbWVyZ2U6OnN0b3JhZ2U6OmNoYW5nZTo6Y2hhbmdlX29wX2NvbHVtbnM6OlBhcnNlQ2hhbmdlQ29sdW1uc0Vycm9yIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aDU1OWY0OGZlNTI3YTVjMGX6EVM8YXV0b21lcmdlOjpzeW5jOjpibG9vbTo6RGVjb2RlRXJyb3IgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoNjRjYjQyYzJlYTI4ZDc0MvsRN3NlcmRlX2NvcmU6OmRlOjpFcnJvcjo6bWlzc2luZ19maWVsZDo6aGEwYzg3YTU1YWNhYWVmODP8ETlzZXJkZV9jb3JlOjpkZTo6RXJyb3I6OmR1cGxpY2F0ZV9maWVsZDo6aDE1ODg4NWMyMjRiZWEyZTL9ETA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGM4M2U4NzM4NGE1MjQzNzH+ETA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGU3ZGFhMTg2YWU3ZDYzN2T/ETA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGZmZGMyYTU3N2M1NzMwNTOAEkY8YWxsb2M6OnZlYzo6VmVjPFQsQT4gYXMgY29yZTo6Y2xvbmU6OkNsb25lPjo6Y2xvbmU6OmhhYzcxODAxMmZlYWIxZjY4gRJRPFQgYXMgYWxsb2M6OnNsaWNlOjo8aW1wbCBbVF0+Ojp0b192ZWNfaW46OkNvbnZlcnRWZWM+Ojp0b192ZWM6Omg1ODBiYmMwNzBiYWYxMmJlghIwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg0OTg1M2ZmOWIyYTRmMjIwgxIwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg2YTc2YjI5MGIyNWM4MzlmhBKMAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhdXRvbWVyZ2U6Om9wX3NldDI6Om9wX3NldDo6dmlzaWJsZTo6VmlzaWJsZU9wSXRlcjxhdXRvbWVyZ2U6Om9wX3NldDI6Om9wX3NldDo6b3BfaXRlcjo6T3BJdGVyPj46OmhlNWRmNDkxNjUzZTc5MzI4hRJHY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGF1dG9tZXJnZTo6c3luYzo6Q2h1bmtMaXN0Pjo6aDZlNzVmYzc4YTY4NDU2YzOGElNjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YWxsb2M6OnZlYzo6VmVjPGFsbG9jOjpzdHJpbmc6OlN0cmluZz4+OjpoNTIyZjA0NmI5ZDU0YzM1MocSW2NvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhdXRvbWVyZ2U6OmNvbHVtbmFyOjplbmNvZGluZzo6Y29sX2Vycm9yOjpQYXRoPjo6aDIzY2M1Mzc4NDA3MjFhMTmIEkY8YWxsb2M6OnZlYzo6VmVjPFQsQT4gYXMgY29yZTo6Y2xvbmU6OkNsb25lPjo6Y2xvbmU6OmhhZjU2MmQ5NWZmZjBkNTYwiRJRPFQgYXMgYWxsb2M6OnNsaWNlOjo8aW1wbCBbVF0+Ojp0b192ZWNfaW46OkNvbnZlcnRWZWM+Ojp0b192ZWM6OmgyMTk5ODAxMjM1OTRmYzg0ihJOPGF1dG9tZXJnZTo6dHlwZXM6OlByb3AgYXMgY29yZTo6Y29udmVydDo6RnJvbTwmc3RyPj46OmZyb206OmgzZDM3ZDc4OGJjYmQ4YzgyixIwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg4YWQwMjg1YjhhMmI5MTEzjBIwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhlNTZkNDU4ZDM3ZTAzYzlkjRIwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg0OGYwMTczZTU5ZGQ2NDNhjhIwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg0ZTUwOTE1NDVjZTI2ZWFmjxIwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg1Zjc3YTE4M2QxOWRhNGM4kBJjPGF1dG9tZXJnZTo6c3RvcmFnZTo6Y29sdW1uczo6cmF3X2NvbHVtbjo6UGFyc2VFcnJvciBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6Omg3MzAxY2M3OWM5NTE0NjUzkRIyPCZUIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aGIzM2EwN2I4NGNlZDU3NTiSEkM8YWxsb2M6OmJvcnJvdzo6Q293PEI+IGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg4NjczZmVmMWRhNjJiOWJkkxJJYXV0b21lcmdlOjpwYXRjaGVzOjpwYXRjaF9sb2c6OlBhdGNoTG9nOjppbmNyZW1lbnRfc2VxOjpoZDljZWZiYmIyODE1ODQ0ZJQSWTxoZXg6OkJ5dGVzVG9IZXhDaGFycyBhcyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvcj46Om5leHQ6OmgxYjE5YTU4ZDgzYmI0MTQylRIzYWxsb2M6OnN5bmM6OkFyYzxULEE+Ojpkcm9wX3Nsb3c6Omg0NzI0MzBmMWI0MTEzN2UylhIwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhjZmMyOTVkMGRjODVmZmFhlxJEPGF1dG9tZXJnZTo6dHlwZXM6OlByb3AgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDUyNGM3ZjY0YWFiM2QyM2KYEjA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDcwNTY2OGFmOTJlOWM5ODmZEjA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGIwN2EzZTAyNjYyYTVkNWGaEjA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGI3OGYyMmM2ZWI5YjIwZGSbEjA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGQ3MmM1OTJiNzJhNzUwNTWcEk1hdXRvbWVyZ2U6OmNvbHVtbmFyOjplbmNvZGluZzo6cmF3OjpSYXdEZWNvZGVyOjpyZWFkX2J5dGVzOjpoZWQwMWQzZjgyZmQ0YWU4Np0STzxhdXRvbWVyZ2U6Om9wX3NldDI6OnR5cGVzOjpLZXlSZWYgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDBmNWM2ZjNhOWU5MDc1ZTKeElY8YXV0b21lcmdlOjpzdG9yYWdlOjpwYXJzZTo6UGFyc2VFcnJvcjxFPiBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoZDM0NGVhNzMyNmVlNTVkMp8SRzxhdXRvbWVyZ2U6OnR5cGVzOjpQcm9wIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg1MjRjN2Y2NGFhYjNkMjNiWzFdoBIoX19ydXN0Y1s1MjI0ZTZiODFjZDgyYThmXTo6X19yZGxfZGVhbGxvY6ESLmF1dG9tZXJnZTo6bWFya3M6Ok1hcms6Om5ldzo6aGJkZGM3YjI3NmM4YTc1YWOiEjxoZXhhbmU6OmVuY29kZXI6OkVuY29kZXI8Qz46OmFwcGVuZF9jaHVuazo6aDc0MTdmODVhOGYyNmY5NzmjEkVhdXRvbWVyZ2U6OmF1dG9tZXJnZTo6QXV0b21lcmdlOjpsb2dfY3VycmVudF9zdGF0ZTo6aDAyYjE0NThlNmQwZDYxMmWkEi9hdXRvbWVyZ2U6Om1hcmtzOjpNYXJrOjpuYW1lOjpoOTBiYjgwYmYxMGY0ODA0OaUSBXJvdW5kphJtY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGNvcmU6Om9wdGlvbjo6T3B0aW9uPGF1dG9tZXJnZV93YXNtOjpleHBvcnRfY2FjaGU6OkNhY2hlZE9iamVjdD4+OjpoNGI3ZjMwZWU2ZDgwMDQ1Y6cSMjwmVCBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmhhZjhhM2ViYTcyNDZiNDJkqBIzYWxsb2M6OnN5bmM6OkFyYzxULEE+Ojpkcm9wX3Nsb3c6OmgwZjU4NjFlMTU0OGJiZjlmqRJPPGhleGFuZTo6Y29sdW1uZGF0YTo6Q29sdW1uRGF0YTxDPiBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMjg3NWJhZGY5MGRmY2MzN6oSTzxoZXhhbmU6OmNvbHVtbmRhdGE6OkNvbHVtbkRhdGE8Qz4gYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDRkOTMwOGRiYjc3NjQ5OWSrEk88aGV4YW5lOjpjb2x1bW5kYXRhOjpDb2x1bW5EYXRhPEM+IGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg3OWVmNGVjNzZkNWI0YTFlrBJPPGhleGFuZTo6Y29sdW1uZGF0YTo6Q29sdW1uRGF0YTxDPiBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoZTc1ZThkYjRmMDEyNTRkMq0SPXdhc21fYmluZGdlbjo6Y29udmVydDo6Y2xvc3VyZXM6Ol86Omludm9rZTo6aDA4MjAwMDhiZDczNDBmOWGuEj13YXNtX2JpbmRnZW46OmNvbnZlcnQ6OmNsb3N1cmVzOjpfOjppbnZva2U6Omg0NGJhMThmMzU3ZDdjOTI5rxI9d2FzbV9iaW5kZ2VuOjpjb252ZXJ0OjpjbG9zdXJlczo6Xzo6aW52b2tlOjpoNDY3ODQ0N2M5OGM3ZmZlNLASPXdhc21fYmluZGdlbjo6Y29udmVydDo6Y2xvc3VyZXM6Ol86Omludm9rZTo6aGE0Y2YyZjdkYTAwOGIyYmOxEj13YXNtX2JpbmRnZW46OmNvbnZlcnQ6OmNsb3N1cmVzOjpfOjppbnZva2U6OmhhNzUxOTNlMDYwMWQyZjFkshI9d2FzbV9iaW5kZ2VuOjpjb252ZXJ0OjpjbG9zdXJlczo6Xzo6aW52b2tlOjpoZWM3MjY2ZDU0Yjc0ODBlNLMSRzxzdGQ6OmlvOjplcnJvcjo6RXJyb3IgYXMgY29yZTo6ZXJyb3I6OkVycm9yPjo6Y2F1c2U6OmhhYzUxYjk0NzU0ZWNhZTY0tBJIPHN0ZDo6aW86OmVycm9yOjpFcnJvciBhcyBjb3JlOjplcnJvcjo6RXJyb3I+Ojpzb3VyY2U6Omg0ZWI0M2M2YjEyMWVhN2I1tRIuY29yZTo6b3B0aW9uOjpleHBlY3RfZmFpbGVkOjpoMWE3ZWNlMmUyNjdiNjY5MbYSTmNvcmU6OmZtdDo6bnVtOjppbXA6OjxpbXBsIGNvcmU6OmZtdDo6RGlzcGxheSBmb3IgaTMyPjo6Zm10OjpoMjNkMmI5ZjE1YmE2M2FiNrcSKmhleGFuZTo6c2xhYjo6U2xhYjo6bmV3OjpoMGU5YTkzNGQ2Yjg1YWZhObgSPXdhc21fYmluZGdlbjo6Y29udmVydDo6Y2xvc3VyZXM6Ol86Omludm9rZTo6aDJmZGU5ZWNiNGM3OGRkZWS5Ej13YXNtX2JpbmRnZW46OmNvbnZlcnQ6OmNsb3N1cmVzOjpfOjppbnZva2U6Omg0OThiMDA5NzYyY2VlMzg3uhIwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg3MmJmZmZjY2RlY2FjM2NmuxIwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmgwNzNlZDQzYTA4ZjFjNjNlvBIwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmgwOTQ0Mjk2ZDdiZTc2MTc4vRIwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmgwOWNkOWYwNzczMTg3NzRmvhIwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmgyNTBkNjQ1NTFhNDFkOTIwvxIwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhiZjI0OWQzOTgwYjVlY2YzwBIwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhkMjI0YjE5YmUwM2VkNGJlwRJCY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHN0ZDo6aW86OmVycm9yOjpFcnJvcj46Omg5NGEzMzYzZTIxOTdlZWM4whJkY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGF1dG9tZXJnZTo6b3Bfc2V0Mjo6Y2hhbmdlOjpjb2xsZWN0b3I6OkNvbGxlY3RlZENoYW5nZXM+OjpoNmY2ODA3YmI4M2E0MGY1NMMSYWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhbGxvYzo6dmVjOjpWZWM8YXV0b21lcmdlOjpoeWRyYXRlOjpsaXN0OjpMaXN0VmFsdWU+Pjo6aDA1YWEzMmE5MzQ4NGI1ZDPEEkZhdXRvbWVyZ2U6OnBhdGNoZXM6OnBhdGNoX2xvZzo6UGF0Y2hMb2c6OmRlbGV0ZV9zZXE6Omg2NGVhM2VlZjYzM2MzZThkxRJCY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHN0ZDo6aW86OmVycm9yOjpFcnJvcj46OmgyZTNlYjRhZGZmODFkNGVkxhJCY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHN0ZDo6aW86OmVycm9yOjpFcnJvcj46OmhjNGFlYWIwMWI0OTIxYTM3xxJDc2VyZGVfanNvbjo6cmVhZDo6U2xpY2VSZWFkOjpza2lwX3RvX2VzY2FwZV9zbG93OjpoZTE4N2IwMWMwMDliYWNmZcgSMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoM2E2NjRiMWJlZDA4ODhmNckSMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMDdiMjYzMzk2N2JjOGMxYsoSMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMGViODljNzk2ZTExZWVmZssSMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMGYzYWFjZDNiZmFmZWE3NMwSMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMTJiYmViMDA0ZTU4OTRmYs0SMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMTNkMzJjYjFlNTlhYzA3Zc4SMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoNDViMGY3YjdmZTA4ZDg1Zc8SMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoNGQzNDY2YjQ5NTU4MGFkMdASMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoOGUzYmM4NTI2YjVmZWUwY9ESMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoYjcwNGQzOTFjMzc4NzJlMdISMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoY2MyZGZjYzI5YTYxZGUzZdMSMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoZWY1ZmIxYWU0NDM0MTk5NtQSMjwmVCBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmgwYmY1MjQ2MWZlMmVlMTFh1RJhPGF1dG9tZXJnZTo6c3RvcmFnZTo6bG9hZDo6Y2hhbmdlX2NvbGxlY3Rvcjo6RXJyb3IgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoNjcxNDUzZjlmN2YwYjMxY9YSUWF1dG9tZXJnZTo6dHJhbnNhY3Rpb246OmlubmVyOjpUcmFuc2FjdGlvbklubmVyOjpyZXBsYWNlX2Jsb2NrOjpoZTQ0MDNlNDllNDQ0ZTExZtcSPzxzbW9sX3N0cjo6U21vbFN0ciBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoN2MwYjNiNGI4YzdkNTYwMdgSQTxzbW9sX3N0cjo6U21vbFN0ciBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6Omg0YjhkYjk3YzU3YzVhNTgx2RJpPGhleGFuZTo6c2xhYjo6U2xhYiBhcyBjb3JlOjpvcHM6OmluZGV4OjpJbmRleDxjb3JlOjpvcHM6OnJhbmdlOjpSYW5nZTx1c2l6ZT4+Pjo6aW5kZXg6Omg0NTE5NmU2MWYyMzExODQ12hJXPHNlcmRlX2pzb246OnJlYWQ6OlN0clJlYWQgYXMgc2VyZGVfanNvbjo6cmVhZDo6UmVhZD46OnBlZWtfcG9zaXRpb246OmhhNzZjNzk1OTI4YWM3Njdh2xJOY29yZTo6Zm10OjpudW06OmltcDo6PGltcGwgY29yZTo6Zm10OjpEaXNwbGF5IGZvciBpNjQ+OjpmbXQ6OmhlYWVkOWJiYTVhNzI5YzY03BI5c2VyZGVfanNvbjo6ZXJyb3I6OkVycm9yOjpmaXhfcG9zaXRpb246OmhjMTBlZWViMGUxNTBkNjA33RIwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmgwMzU2ZGZjOGIzMjUyMDA33hJIY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGF1dG9tZXJnZV93YXNtOjplcnJvcjo6TWFyaz46OmhlNGViOTlmZTFhMzI5NThj3xISc3luY3N0YXRlX3JlYWRPbmx54BIWc3luY3N0YXRlX3BlZXJSZWFkT25seeESMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMzhjNTY0Y2NjNWEzMTVmOeISMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoOTQ0NWNlZGMzM2YzODYzYeMSMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoYzRkMTAwNGE4MWExMDMwMeQSMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoYzc1NDQwYjY2YzI0ZDljYeUSMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoZTExYjU4N2NmNDIyMjllYeYSfGNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhbGxvYzo6dmVjOjpWZWM8KGF1dG9tZXJnZTo6dHlwZXM6Ok9iaklkLGF1dG9tZXJnZTo6cGF0Y2hlczo6cGF0Y2hfbG9nOjpFdmVudCk+Pjo6aDc3YjM5NDc2ZmZkYjNiODPnEltjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YXV0b21lcmdlOjpzdG9yYWdlOjpjb2x1bW5zOjpMYXlvdXRQYXJzZXJTdGF0ZT46OmhkODdjYTg5ZWFhNDc0NjVh6BJJPGF1dG9tZXJnZTo6dHlwZXM6Ok9ialR5cGUgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoNTJiMmNkZjNkYmU1OGU3ZukSRXN0ZDo6c3lzOjpyYW5kb206OnVuc3VwcG9ydGVkOjpoYXNobWFwX3JhbmRvbV9rZXlzOjpoNjI2ZTRlOTJkZTE3NGJhZuoSSTxhbGxvYzo6c3RyaW5nOjpTdHJpbmcgYXMgY29yZTo6Zm10OjpXcml0ZT46OndyaXRlX3N0cjo6aDkwMTM5NzU5MDgzNmI3ZDfrEjA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDBjNzYyMmViNzQxOWMyYTDsEjA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDBmYjU0ZGE5Mjk1NDM1NjntEjA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDFmMzUyNWE2ZDhmNTMwYzLuEjA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDI4NTJhODcwYzEwNmZlYmHvEjA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDljNjdhYjNkN2RjNmYwMTDwEjA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGI3OWQxY2E4MjU1ZmFmYjLxEjA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGMwYmE2ZGQ0ZWY1MzhkMTLyEjA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGQ1NWE0MzQ1ZDAzYjNmZDPzEjA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGRkZjg5YWJmNWI2NmRkMjH0EjA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGVlNjM5ZTA5MjU4MzFjNjn1EjA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGZhZWEyYjg5NTcwMzJlMDL2EjA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGZiMzI3Y2EyYjk0NGZkNDb3EkNjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YXV0b21lcmdlOjptYXJrczo6TWFyaz46OmhkYmFhOTUxOTJlZWVhNWZj+BJUY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGNvcmU6Om9wdGlvbjo6T3B0aW9uPHNtb2xfc3RyOjpTbW9sU3RyPj46Omg1NzkwNzY0ZGY2YzFkNDgz+RI+Y29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I6Om50aDo6aDk1MTcyZTdkN2YzOTZjNjb6Ekw8YWxsb2M6OnN0cmluZzo6U3RyaW5nIGFzIGNvcmU6OmZtdDo6V3JpdGU+Ojp3cml0ZV9zdHI6Omg5MDEzOTc1OTA4MzZiN2Q3WzJd+xJDPGFsbG9jOjpib3Jyb3c6OkNvdzxCPiBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoYzRjODI5NDkwMTMxMmViMvwSPWF1dG9tZXJnZTo6Y2hhbmdlX3F1ZXVlOjpDaGFuZ2VRdWV1ZTo6cHVzaDo6aGEwZjdiMmE0NjYwZmY3MDn9Ei1mbGF0ZTI6Om1lbTo6Q29tcHJlc3M6Om5ldzo6aDAyMTFhNTgwZGZjYWFmZGX+EjpvbmNlX2NlbGw6OmltcDo6T25jZUNlbGw8VD46OmluaXRpYWxpemU6OmgyYjgzNDcyNmJiNDBjMTdh/xIwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhhYTEyNTZlZGMyNjVhYzdhgBM+c2VyZGVfanNvbjo6ZGU6OkRlc2VyaWFsaXplcjxSPjo6cGVla19lcnJvcjo6aDE1MGE2MDZiNzE1ZjM3NzKBE0w8YWxsb2M6OnN0cmluZzo6U3RyaW5nIGFzIGNvcmU6OmZtdDo6V3JpdGU+Ojp3cml0ZV9zdHI6Omg5MDEzOTc1OTA4MzZiN2Q3WzNdghM1Y29yZTo6Y2VsbDo6cGFuaWNfYWxyZWFkeV9ib3Jyb3dlZDo6aDBlNzc1MjA4ZDcxMWMyYmKDEz1jb3JlOjpjZWxsOjpwYW5pY19hbHJlYWR5X211dGFibHlfYm9ycm93ZWQ6OmgyYzdiZTI3OThkNGI5NzYxhBMGbWVtY21whRNTY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGFsbG9jOjp2ZWM6OlZlYzxhdXRvbWVyZ2U6OmxlZ2FjeTo6T3A+Pjo6aGVjZDI5MGY4Y2JlYWQ1ZTWGE1tjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YWxsb2M6OnZlYzo6VmVjPGF1dG9tZXJnZTo6dmFsdWU6OlNjYWxhclZhbHVlPj46Omg1MzlmYWEyYjRkYWU3NWRlhxOHAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhbGxvYzo6dmVjOjpWZWM8aGV4YW5lOjpzbGFiOjp0cmVlOjpUcmVlTm9kZTxoZXhhbmU6OnNsYWI6OlNsYWIsaGV4YW5lOjpzbGFiOjpTbGFiV2VpZ2h0Pj4+OjpoYThkZmMxN2IxMGE3YzlkNYgTngFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YWxsb2M6OnZlYzo6VmVjPGF1dG9tZXJnZTo6c2VxdWVuY2VfdHJlZTo6U2VxdWVuY2VUcmVlTm9kZTwoYXV0b21lcmdlOjp2YWx1ZTo6VmFsdWUsYXV0b21lcmdlOjpleGlkOjpFeElkLGJvb2wpPj4+OjpoNmQwNGQ5NWViYTVlODMwYokTpwFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YWxsb2M6OnZlYzo6VmVjPGhleGFuZTo6c2xhYjo6dHJlZTo6VHJlZU5vZGU8aGV4YW5lOjpzbGFiOjpTbGFiLGF1dG9tZXJnZTo6b3Bfc2V0Mjo6b3Bfc2V0OjptYXJrX2luZGV4OjpNYXJrSW5kZXhTcGFubmVyPj4+OjpoODM3ZDA2NzdhNGU0ODMzZooTV2NvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhbGxvYzo6dmVjOjpWZWM8YXV0b21lcmdlOjpjaGFuZ2U6OkNoYW5nZT4+OjpoMzM0NDEzYjkzMjYwM2ZjNYsTYmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhdXRvbWVyZ2U6OnN0b3JhZ2U6OmJ1bmRsZTo6YnVpbGRlcjo6T3BJdGVyVW52ZXJpZmllZD46Omg0ZTdhZjhjMGVmNTQyNzIyjBNFPGNvcmU6Om9wdGlvbjo6T3B0aW9uPFQ+IGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg3MTIwMzEyY2Y5N2I0ZjcxjRNFPGNvcmU6Om9wdGlvbjo6T3B0aW9uPFQ+IGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhjMzQ1NTYwOTAwOWRiMTY5jhNFPGNvcmU6Om9wdGlvbjo6T3B0aW9uPFQ+IGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhlMWM5YzU5YjQ1NDY0YjlljxNFPGNvcmU6Om9wdGlvbjo6T3B0aW9uPFQ+IGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhlOGM1OWJhYjk3MTI2NWFmkBMnanNfc3lzOjpSZWZsZWN0OjpzZXQ6OmhlMGEwNTA3ZDU0ZmUwZjk5kRM6d2FzbV9iaW5kZ2VuOjpfX3diaW5kZ2VuX2pzb25fc2VyaWFsaXplOjpoNzFhZTk0YTk2M2E4MWU5NZITNndhc21fYmluZGdlbjo6X193YmluZGdlbl9zdHJpbmdfZ2V0OjpoOTZmMjc3YzgwM2MyMTYzYpMTTDxhbGxvYzo6c3RyaW5nOjpTdHJpbmcgYXMgY29yZTo6Zm10OjpXcml0ZT46OndyaXRlX3N0cjo6aDkwMTM5NzU5MDgzNmI3ZDdbMV2UE0U8Y29yZTo6b3B0aW9uOjpPcHRpb248VD4gYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGQyMWQ2MWI4MDk2YTYzZjmVEzdhdXRvbWVyZ2U6Om9wX3NldDI6Om9wOjpUeE9wOjphc19zdHI6OmhmMjgzOWQ2MzFlY2MxMjU4lhM0aGV4YW5lOjpzbGFiOjp3cml0ZXI6OmhlYWRlcl9zaXplOjpoZjZiZmZiZDMxOTBkOTNmNZcTLV9fcnVzdGNbNTIyNGU2YjgxY2Q4MmE4Zl06Ol9fcmRsX2FsbG9jX3plcm9lZJgTSDxkbG1hbGxvYzo6c3lzOjpTeXN0ZW0gYXMgZGxtYWxsb2M6OkFsbG9jYXRvcj46OmFsbG9jOjpoN2U5MzE5M2JiODA0Y2Q3YZkTQWhhc2hicm93bjo6cmF3OjpGYWxsaWJpbGl0eTo6Y2FwYWNpdHlfb3ZlcmZsb3c6OmgwNjJmMDUzY2VmODk0ODk2mhNMPGFsbG9jOjpzdHJpbmc6OlN0cmluZyBhcyBjb3JlOjpmbXQ6OldyaXRlPjo6d3JpdGVfc3RyOjpoOTAxMzk3NTkwODM2YjdkN1s0XZsThgFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6cmVzdWx0OjpSZXN1bHQ8YXV0b21lcmdlX3dhc206OmludGVyb3A6OkpTLGF1dG9tZXJnZV93YXNtOjppbnRlcm9wOjplcnJvcjo6R2V0UHJvcD4+OjpoMmMyNzQ1MDI2ZWE4NjgwNpwThQFhdXRvbWVyZ2Vfd2FzbTo6dmFsdWU6OjxpbXBsIGNvcmU6OmNvbnZlcnQ6OkZyb208YXV0b21lcmdlX3dhc206OnZhbHVlOjpEYXRhdHlwZT4gZm9yIHdhc21fYmluZGdlbjo6SnNWYWx1ZT46OmZyb206Omg4YzdjMmRjZjM3N2M3OWU4nRNQPHNlcmRlX3dhc21fYmluZGdlbjo6ZXJyb3I6OkVycm9yIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aGNlNTA0ODExOGM3YTQ0NjGeEzNhbGxvYzo6c3luYzo6QXJjPFQsQT46OmRyb3Bfc2xvdzo6aDE4YjMxNTA0MDFlNTE4OTOfE3c8Y29yZTo6aXRlcjo6YWRhcHRlcnM6OmZsYXR0ZW46OkZsYXRNYXA8SSxVLEY+IGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6c2l6ZV9oaW50OjpoOGEwN2Y2Zjc3OWMzNWU2MKATM2FsbG9jOjpzeW5jOjpBcmM8VCxBPjo6ZHJvcF9zbG93OjpoYjkwMzVlNTgyOGNkMTc4MqETVDxjb3JlOjpmbXQ6OmJ1aWxkZXJzOjpQYWRBZGFwdGVyIGFzIGNvcmU6OmZtdDo6V3JpdGU+Ojp3cml0ZV9jaGFyOjpoYzEwYTM2MmE0OTYzYjkzYqITPmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxzbW9sX3N0cjo6U21vbFN0cj46Omg5MjMwNmJiMmVhMDg3MjMzoxMwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg2MmQ1ZWZhZjNlYWQ2NTFmpBMwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg3OTkxNzM0MDRhNTVkYzg4pRMwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg4NTI2Yzk5ZGVlY2QyMTcyphMwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhkMDM3YmE5ZTJmNDAxYTQypxMwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg0NzU5ODM1ODNhNTdlYTU2qBMwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg1ZTkxOTRjMzAxNTVlZDE5qRMwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg3Mjc4YjUwYWFlNTZhMjY3qhMwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhiMGNmNGM0NTA2ZWJhOTVkqxMwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhkNjhiY2VhN2ViMjJmOTc5rBMwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhkYTI2MmVlZjU2YzI5YWM1rRM+Y29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHNtb2xfc3RyOjpTbW9sU3RyPjo6aDlkN2YxNzRmMTk3OGYyNGauE0dhbGxvYzo6c3luYzo6QXJjPFQsQT46OmRvd25ncmFkZTo6cGFuaWNfY29sZF9kaXNwbGF5OjpoNWY4ZDM5NmNmMTdjMzVjOa8TO2hleGFuZTo6cmxlOjpMaXRSdW5DdXJzb3I6OmhlYWRlcl9vZmZzZXQ6OmhmMjYxNmI1MDEwYjMyODNjsBM2anNfc3lzOjpCaWdJbnQ6OnRvX3N0cmluZ191bmNoZWNrZWQ6Omg4NDY3NTMwOTFhNmQ5MTlhsRMqc2VyZGVfanNvbjo6cmVhZDo6ZXJyb3I6OmgzZDYwZmRjOTM5MTA4NTVkshMqc2VyZGVfanNvbjo6cmVhZDo6ZXJyb3I6Omg1YmZjOGQwZWE3NTIwZmVisxMqc2VyZGVfanNvbjo6cmVhZDo6ZXJyb3I6OmgzNTUzN2JlODdiMmI1NGFitBMyY29yZTo6cGFuaWNraW5nOjpwYW5pY19leHBsaWNpdDo6aDk1MzMxY2Q2ZjgyMGZkODa1E1ljb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YXV0b21lcmdlOjpzdG9yYWdlOjpjb2x1bW5zOjpHcm91cFBhcnNlU3RhdGU+OjpoNDg1ZjQzZTIwODJiYWIwMbYTP2F1dG9tZXJnZTo6YXV0b2NvbW1pdDo6QXV0b0NvbW1pdDo6Z2V0X2FjdG9yOjpoMmFjZGI4MDQ3ZWQwNzFlMLcTV2F1dG9tZXJnZTo6c3RvcmFnZTo6Y29sdW1uczo6Y29sdW1uX2J1aWxkZXI6Okdyb3VwQnVpbGRlcjo6YWRkX2FjdG9yOjpoZGVjNDQ2YzIwNTU1ODUwOLgTWGF1dG9tZXJnZTo6c3RvcmFnZTo6Y29sdW1uczo6Y29sdW1uX2J1aWxkZXI6Okdyb3VwQnVpbGRlcjo6YWRkX3N0cmluZzo6aDU4MDYyOTUxMTBjZjk5ZGK5E1lhdXRvbWVyZ2U6OnN0b3JhZ2U6OmNvbHVtbnM6OmNvbHVtbl9idWlsZGVyOjpHcm91cEJ1aWxkZXI6OmFkZF9pbnRlZ2VyOjpoMDU0NThiN2I5NWRlOTY3ZLoTX2F1dG9tZXJnZTo6c3RvcmFnZTo6Y29sdW1uczo6Y29sdW1uX2J1aWxkZXI6Okdyb3VwQnVpbGRlcjo6YWRkX2RlbHRhX2ludGVnZXI6Omg5YTUyZDNkYTVmMzA3Mzg0uxNZYXV0b21lcmdlOjpzdG9yYWdlOjpjb2x1bW5zOjpjb2x1bW5fYnVpbGRlcjo6R3JvdXBCdWlsZGVyOjphZGRfYm9vbGVhbjo6aGUyMjRhMjZiYTNhZDU2YWa8Ezk8c3RyIGFzIGhleGFuZTo6cGFjazo6UGFja2FibGU+Ojp3aWR0aDo6aDE2NjEzNDdlYzcwNjExMTa9EzhzdGQ6OnBhbmlja2luZzo6cGFuaWNfY291bnQ6OmluY3JlYXNlOjpoNzU0ZDgxOTQ3MGEzOTUyMb4TXGNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTwoYXV0b21lcmdlOjp2YWx1ZTo6VmFsdWUsYXV0b21lcmdlOjpleGlkOjpFeElkKT46OmgzNTVhMDg0NmYxY2E5YjllvxNVPGF1dG9tZXJnZV93YXNtOjppbnRlcm9wOjplcnJvcjo6U2V0UHJvcCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoM2QwMGUwYTFiY2FmODA0McATXGNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTwoYXV0b21lcmdlOjp2YWx1ZTo6VmFsdWUsYXV0b21lcmdlOjpleGlkOjpFeElkKT46Omg4ZmIxN2NkZTEwMDg5ZDliwRNFY29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I6OmFkdmFuY2VfYnk6OmhjM2EzZjQyMTUyMmM3MWVlwhM1YXV0b21lcmdlOjpoeWRyYXRlOjptYXA6Ok1hcDo6aXRlcjo6aDUxNWE4ZjRmNDE5NDQwMjHDEytoZXhhbmU6OmxlYjEyODo6dWxlYnNpemU6OmgyODZiNmI3YjY0N2ZmMDQyxBM5PHU2NCBhcyBoZXhhbmU6OnBhY2s6OlBhY2thYmxlPjo6d2lkdGg6OmhlN2M4OWNkZjQxNThkZjUwxRM2d2FzbV9iaW5kZ2VuOjpfX3diaW5kZ2VuX251bWJlcl9nZXQ6OmgzYjFkMzk1NWRjYzg2ZDA0xhMzc2VyZGVfanNvbjo6ZXJyb3I6OkVycm9yOjpzeW50YXg6OmgwYjMyZWY5ZThlMDc3Zjc2xxNOY29yZTo6Zm10OjpudW06OmltcDo6PGltcGwgY29yZTo6Zm10OjpEaXNwbGF5IGZvciB1MzI+OjpmbXQ6OmhlZDQ0ZWQzMmI3MmY5NGU1yBNLY29yZTo6Zm10OjpmbG9hdDo6PGltcGwgY29yZTo6Zm10OjpEaXNwbGF5IGZvciBmNjQ+OjpmbXQ6OmgzY2Q5ZmI5MzJlNzZkZTI1yRMyPCZUIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aGQ5YzQ1YzA3NTRlMDAyMDbKE01oYXNoYnJvd246OnJhdzo6UmF3VGFibGU8VCxBPjo6cmVzZXJ2ZV9yZWhhc2g6Ont7Y2xvc3VyZX19OjpoZDk3MTZkNTFhMTQyZDlmNMsTaDxjb3JlOjppdGVyOjphZGFwdGVyczo6bWFwOjpNYXA8SSxGPiBhcyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvcj46Om5leHQ6OmhiMjRjN2MyMzk4NzFjZjE5zBNSPHNlcmRlX2pzb246OnJlYWQ6OlN0clJlYWQgYXMgc2VyZGVfanNvbjo6cmVhZDo6UmVhZD46OnBvc2l0aW9uOjpoN2NhZTFmODY2ODk3OGVlY80TcTxzdGQ6OnBhbmlja2luZzo6YmVnaW5fcGFuaWNfaGFuZGxlcjo6U3RhdGljU3RyUGF5bG9hZCBhcyBjb3JlOjpwYW5pYzo6UGFuaWNQYXlsb2FkPjo6dGFrZV9ib3g6OmgyYWIwNGIzY2IzOGZhNDZlzhMpY29yZTo6cGFuaWNraW5nOjpwYW5pYzo6aGFhMmRkYmRmMWVhNTY0MTfPEzA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGJhODVjOTVlYjE5ZWM0OWXQEzA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGM0YWQzNjBkYjEzZTA1NzfREzA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGQzNGZlZjlhYjRjN2E1MTnSE5ABY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHN0ZDo6Y29sbGVjdGlvbnM6Omhhc2g6Om1hcDo6SGFzaE1hcDxhdXRvbWVyZ2U6OnR5cGVzOjpDaGFuZ2VIYXNoLGF1dG9tZXJnZTo6Y2hhbmdlX2dyYXBoOjpOb2RlSWR4Pj46OmhhZjJkNmY2YzA3YjVhYjll0xM8dHJhY2luZ19jb3JlOjpkaXNwYXRjaGVyOjpEaXNwYXRjaDo6ZW50ZXI6OmgxYTIzNjY5YzUxMzIwMjRi1BM7dHJhY2luZ19jb3JlOjpkaXNwYXRjaGVyOjpEaXNwYXRjaDo6ZXhpdDo6aGY3NmJlN2EyYzFhYTk4YjfVE0B0cmFjaW5nX2NvcmU6OmRpc3BhdGNoZXI6OkRpc3BhdGNoOjp0cnlfY2xvc2U6OmhkNGZjNzQwZmJiMGM4ZWFk1hMsanNfc3lzOjpCaWdJbnQ6OnRvX3N0cmluZzo6aDQ3ZTcyZDUzZjRkOTEwNjLXEzBzdGQ6OnRocmVhZDo6Y3VycmVudDo6Y3VycmVudDo6aGVkOWI2NTY1ZjMxNjFiOGPYEy5zdGQ6OmlvOjplcnJvcjo6RXJyb3I6Ol9uZXc6OmhlZDVlOWQ0Y2Y3Y2ZlZjJh2RNOY29yZTo6Zm10OjpudW06OmltcDo6PGltcGwgY29yZTo6Zm10OjpEaXNwbGF5IGZvciB1NjQ+OjpmbXQ6Omg2OWYxNjQ1NTZhMjU0MjFl2hMdYXV0b21lcmdlX21hcmsgZXh0ZXJucmVmIHNoaW3bEzI8JlQgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoOTVmYmJlNDdkMGNkMjBlMtwTZjxoZXhhbmU6OnNsYWI6OndyaXRlcjo6U2xhYldyaXRlcjxQPiBhcyBoZXhhbmU6OmVuY29kZXI6OldyaXRlcjxQPj46OmZsdXNoX2Jvb2xfcnVuOjpoMGQ2Y2E0YmY1ZjNiZTRlMt0TOmF1dG9tZXJnZTo6YXV0b2NvbW1pdDo6QXV0b0NvbW1pdDo6ZGlmZjo6aDI0ODUyN2I0MDdmOWQ2MWTeEypoZXhhbmU6OmxlYjEyODo6bGVic2l6ZTo6aDQwOGYxM2RhNDE4OGRmMTDfEzk8aTY0IGFzIGhleGFuZTo6cGFjazo6UGFja2FibGU+Ojp3aWR0aDo6aDI0Njk3ZGQ5ZTNkZjNhNjfgEydqc19zeXM6OlJlZmxlY3Q6OmdldDo6aDk4NDIzNDU2YmE4YTVmMTHhEzlzZXJkZV9qc29uOjpkZTo6RGVzZXJpYWxpemVyPFI+OjplcnJvcjo6aDU2MzM3MDZkNGY3MDA1NWTiEypzZXJkZV9qc29uOjpyZWFkOjplcnJvcjo6aDk0OTVkNDk5NzUzMThiZWbjEzA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDNkY2QxODQ0NzEyYWIzMWXkEzA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDhmMmU0ZTZmMGFjZDBjNzHlEzA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDk0MDAwNWViZGRhYzEyMzLmEzA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDlkZmZmM2E2ZWYwNzgzY2TnEzA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGE4YjFkYWQ4ZjM0M2FlM2PoEzA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGQzOTJlZDg5ZDJiZmRmMTnpEzA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDNlYzdlYjM3YWMzZWVmNTLqEzA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDkxMTAzM2I1MTJlOTZkOGPrEzA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGNhNzYyMzVmMTg3MDhlOGTsEzA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGNiZWFlZDNjYzU5YzcxZDntEzA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGRjZWY1ZTdmYjgxZjAxMzXuEzA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGY2OTJjMTk0MmNkNDA0MzXvEzA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGY4ZmI2YTQ3MjcxN2Q0NmPwEzNhbGxvYzo6c3luYzo6QXJjPFQsQT46OmRyb3Bfc2xvdzo6aGFhNGMwZTkxZWY2NDMwY2XxE0hhdXRvbWVyZ2U6OnRleHRfdmFsdWU6OkNvbmNyZXRlVGV4dFZhbHVlOjptYWtlX3N0cmluZzo6aDA2ZjVlODk4M2MyMTdhOWLyE1o8YXV0b21lcmdlOjpvcF9zZXQyOjp0eXBlczo6UmVhZFNjYWxhckVycm9yIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aDEyZTlhMWY4Y2M1MzQ4MWLzE0Q8YXV0b21lcmdlOjp0eXBlczo6T3BJZCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMjk0NmVmZTA3OTM1MmNiN/QTMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMTJmYzUzODVhN2NkZGU2N/UTMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoOTkwNDI1M2Y3ZWU1Y2FmMvYTMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoYjMxYjM3MTRiZDg3NDk1MfcTMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoZDQzMjJlMTViNmNmMjI5MPgTMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoNjczOWU2MmE0OTE4NDc3YfkTSTxhbGxvYzo6ZmZpOjpjX3N0cjo6TnVsRXJyb3IgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGQxNmI1NmM2ZWEzOWQ4ZWL6EzA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDY5ODZiMzViYTVhY2M1NjX7E2k8YWxsb2M6OnZlYzo6aW50b19pdGVyOjpJbnRvSXRlcjxULEE+IGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6bmV4dDo6aDEzYzdiNWViODAyNTMzNmb8EzA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDFkYjVlODAxNzNiMzQwNTP9EzA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDhiMWFmZDBiNGM4MzE3Njf+E2ljb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8c3RkOjpjb2xsZWN0aW9uczo6aGFzaDo6c2V0OjpIYXNoU2V0PGF1dG9tZXJnZTo6dHlwZXM6Ok9wSWQ+Pjo6aGJkMTgyZTRkMTBkMjUyYWb/EzQ8Jm11dCBUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmgxZDE3MzgzMjM2M2ZjYWYzgBQ0PCZtdXQgVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoNzVjYzYxODZmZTk3YWY3ZoEUQGF1dG9tZXJnZTo6Y2hhbmdlX2dyYXBoOjpDaGFuZ2VHcmFwaDo6cGFyZW50czo6aDAwNTY1M2UyZThkOTU0ODCCFC9zaW1kX2FkbGVyMzI6OkFkbGVyMzI6OndyaXRlOjpoMGUwZWNiZTQxZmZhZTEyMYMUMWhleGFuZTo6cmxlOjpMaXRSdW5DdXJzb3I6Om5ldzo6aGI1YWQ2NGQyMWU1ODE3NDWEFCxqc19zeXM6OlJlZmxlY3Q6Om93bl9rZXlzOjpoYmZkM2IwYTNmOGY1MGIwMYUUQ2NvcmU6OmZtdDo6Rm9ybWF0dGVyOjpwYWRfaW50ZWdyYWw6OndyaXRlX3ByZWZpeDo6aDdlMTM0NGQ4MzZiNTg2YzWGFHI8YXV0b21lcmdlOjphdXRvY29tbWl0OjpBdXRvQ29tbWl0IGFzIGF1dG9tZXJnZTo6dHJhbnNhY3Rpb246OnRyYW5zYWN0YWJsZTo6VHJhbnNhY3RhYmxlPjo6bWFyazo6aDAwMzg0OWFmNGVmOWQxY2SHFFFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YXV0b21lcmdlOjplcnJvcjo6SW52YWxpZFNjYWxhclZhbHVlPjo6aDg4NTQwZTEyNTdjYzFhODaIFDFjb3JlOjpwYW5pY2tpbmc6OmFzc2VydF9mYWlsZWQ6OmgxYTQwNDllNzVjNjg0YjAyiRQwYWxsb2M6OnJjOjpSYzxULEE+Ojpkcm9wX3Nsb3c6OmgwNjgxMDc3NDUzNDk3NjBjihQwYWxsb2M6OnJjOjpSYzxULEE+Ojpkcm9wX3Nsb3c6OmgwZWYyZWZkNzVjNDliMDI3ixRoPGNvcmU6Oml0ZXI6OmFkYXB0ZXJzOjptYXA6Ok1hcDxJLEY+IGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6bmV4dDo6aDFhN2RlYTkyOGYxZDhiNjmMFG88YWxsb2M6OnZlYzo6aW50b19pdGVyOjpJbnRvSXRlcjxULEE+IGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6YWR2YW5jZV9ieTo6aDYyOGViZWRlYzA0ZjBhMTWNFDFjb3JlOjpwYW5pY2tpbmc6OmFzc2VydF9mYWlsZWQ6Omg0OGYxNWEzOTkxODZiOWIwjhQxY29yZTo6cGFuaWNraW5nOjphc3NlcnRfZmFpbGVkOjpoNDk5OTI2ODRkYmEyMzY4OI8UMWNvcmU6OnBhbmlja2luZzo6YXNzZXJ0X2ZhaWxlZDo6aDA2Yzg0ZTVlZDAzYjE2ODWQFDFjb3JlOjpwYW5pY2tpbmc6OmFzc2VydF9mYWlsZWQ6OmgxNzRhNmFlMWU1N2VhOTQzkRQxY29yZTo6cGFuaWNraW5nOjphc3NlcnRfZmFpbGVkOjpoMjFiMjZlZTAwNmJhYzlhNpIUMWNvcmU6OnBhbmlja2luZzo6YXNzZXJ0X2ZhaWxlZDo6aDIyNGVlMmY2YmM1NWNkYziTFDFjb3JlOjpwYW5pY2tpbmc6OmFzc2VydF9mYWlsZWQ6Omg0YTAxZTZjMjhiMjA4YmUxlBQxY29yZTo6cGFuaWNraW5nOjphc3NlcnRfZmFpbGVkOjpoNTg4MGFhMWJmMDRkYTViMZUUMWNvcmU6OnBhbmlja2luZzo6YXNzZXJ0X2ZhaWxlZDo6aDViZjc4MzQ1ZWUwMTc2NDmWFDFjb3JlOjpwYW5pY2tpbmc6OmFzc2VydF9mYWlsZWQ6Omg3YTU2N2IxZTdjNzk5YmMwlxQxY29yZTo6cGFuaWNraW5nOjphc3NlcnRfZmFpbGVkOjpoN2E4NWM0NjliYWRkYzllY5gUMWNvcmU6OnBhbmlja2luZzo6YXNzZXJ0X2ZhaWxlZDo6aDhjMTczNTkyNjNhYTJjYTeZFDFjb3JlOjpwYW5pY2tpbmc6OmFzc2VydF9mYWlsZWQ6Omg5M2VjNjBkYmQ1ZGM2OGI1mhQxY29yZTo6cGFuaWNraW5nOjphc3NlcnRfZmFpbGVkOjpoYThlOTFkZGE0NGUyNmQzMJsUMWNvcmU6OnBhbmlja2luZzo6YXNzZXJ0X2ZhaWxlZDo6aGIyYzU3YTNlZjk4ZGRiYTicFDFjb3JlOjpwYW5pY2tpbmc6OmFzc2VydF9mYWlsZWQ6OmhiOTRiNGVmYWViZjNhMzFmnRQxY29yZTo6cGFuaWNraW5nOjphc3NlcnRfZmFpbGVkOjpoY2YwMmUxN2NhMjA4Nzg4OZ4UMWNvcmU6OnBhbmlja2luZzo6YXNzZXJ0X2ZhaWxlZDo6aGU3MjI5MjcwNmU3MTU4NmWfFE88aGV4YW5lOjpzbGFiOjp0cmVlOjpTcGFuVHJlZTxULFc+IGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg3NjQ0NzAzN2QzNzAzY2I5oBRNaGFzaGJyb3duOjpyYXc6OlJhd1RhYmxlPFQsQT46OnJlc2VydmVfcmVoYXNoOjp7e2Nsb3N1cmV9fTo6aDdkM2RiM2FiZTdkZDcwNjGhFE1oYXNoYnJvd246OnJhdzo6UmF3VGFibGU8VCxBPjo6cmVzZXJ2ZV9yZWhhc2g6Ont7Y2xvc3VyZX19OjpoNDFmYjRmMDJmNmQ0MjkwMqIUTWhhc2hicm93bjo6cmF3OjpSYXdUYWJsZTxULEE+OjpyZXNlcnZlX3JlaGFzaDo6e3tjbG9zdXJlfX06Omg1N2E5Zjc3NGNmNzcxZjBjoxRNaGFzaGJyb3duOjpyYXc6OlJhd1RhYmxlPFQsQT46OnJlc2VydmVfcmVoYXNoOjp7e2Nsb3N1cmV9fTo6aDM0OWMyZWJjOGI4ZDM4MjekFHQ8YXV0b21lcmdlOjpzdG9yYWdlOjpjaGFuZ2U6OmNoYW5nZV9vcF9jb2x1bW5zOjpQYXJzZUNoYW5nZUNvbHVtbnNFcnJvciBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMGU1OTk3NzQzOTM4OWZmNaUUMWNvcmU6OnBhbmlja2luZzo6YXNzZXJ0X2ZhaWxlZDo6aDViYjRiNWExNWVkNWFlNTKmFDFjb3JlOjpwYW5pY2tpbmc6OmFzc2VydF9mYWlsZWQ6OmgzNGE4YmJmYzc0MDExZmE3pxQxY29yZTo6cGFuaWNraW5nOjphc3NlcnRfZmFpbGVkOjpoZDNhNmNlODUzM2FmMTU5Y6gUMWNvcmU6OnBhbmlja2luZzo6YXNzZXJ0X2ZhaWxlZDo6aDgzZTFiYmM1YjZiYzM0NjGpFDJhdXRvbWVyZ2VfZ2V0Q3Vyc29yIGV4dGVybnJlZiBzaGltIG11bHRpdmFsdWUgc2hpbaoUMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMTA5MzhhMDk4NWJhZmUxMasUMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMTg0NzA5YWYzMGFlMDk1MqwUMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMWUyMjczZDkwNGFhODI1Ya0UMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMjQzNjgxNjdkODM2MGFmYq4UMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMzhjOTgzZTk5ZDdjZTJlNK8UMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoYjlhYzJjZDM2ZjljMmY3OLAURmNvcmU6OmZtdDo6bnVtOjo8aW1wbCBjb3JlOjpmbXQ6OkRlYnVnIGZvciB1OD46OmZtdDo6aGMwNDU1YjI5NjhkYjAzMmWxFEdjb3JlOjpmbXQ6Om51bTo6PGltcGwgY29yZTo6Zm10OjpEZWJ1ZyBmb3IgaTY0Pjo6Zm10OjpoYzViMTk1MWQ5YjA1ZjJhMrIUR2NvcmU6OmZtdDo6bnVtOjo8aW1wbCBjb3JlOjpmbXQ6OkRlYnVnIGZvciB1MzI+OjpmbXQ6OmgyOGE2ZTU1OTMzY2FmZDlisxRHY29yZTo6Zm10OjpudW06OjxpbXBsIGNvcmU6OmZtdDo6RGVidWcgZm9yIHU2ND46OmZtdDo6aDgzNDVjYWMxYWM1MjhiMmO0FEljb3JlOjpmbXQ6Om51bTo6PGltcGwgY29yZTo6Zm10OjpEZWJ1ZyBmb3IgdXNpemU+OjpmbXQ6OmgyMzBmNWNjYTMyNmU4ZTJhtRQwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmgxZTUzOGY1MGE1YTQzYjg1thQwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmgyMDk4YjliNDY5Y2NjOTY0txQwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmgzOGZhN2MxNzVjMWIyYmZiuBQwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg2YTZlZDMyZWI5NDJmZTJjuRQwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg3MjY5MThkMDlmNzdmYjZkuhQwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg3NDIwOWY5MDQ2YjEzYWFluxQwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg3NDNlOWUwNDg0Nzc1Y2M3vBQwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg3NTFjYzc1MDViNzk3OWJkvRQwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg3YTYwNzZhZTUyNDc0MDM1vhQwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg4MDQ2ZWM2MDZhMDJmMzRmvxQwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg4NGNkZjRmOTdlMTg4NDAzwBQwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg4Y2QyYzY1MGJiZGE2MmE0wRQwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg5NThmMzZhZjllODk2ZmUxwhQwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhhZTI5NmU2MjBjZTVlNDI4wxQwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhiOTk5ZWFlODZmYjBiZWM1xBQwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhlNTVmYTNlZDYzYjJlNTZmxRRpPGF1dG9tZXJnZTo6c3RvcmFnZTo6Y29sdW1uczo6Y29sdW1uX3NwZWNpZmljYXRpb246OkNvbHVtbklkIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmgwNDFlODFlYTM4YjEyODMyxhRJY29yZTo6Zm10OjpudW06OjxpbXBsIGNvcmU6OmZtdDo6RGVidWcgZm9yIHU4Pjo6Zm10OjpoYzA0NTViMjk2OGRiMDMyZVsxXccUSmNvcmU6OmZtdDo6bnVtOjo8aW1wbCBjb3JlOjpmbXQ6OkRlYnVnIGZvciBpNjQ+OjpmbXQ6OmhjNWIxOTUxZDliMDVmMmEyWzFdyBRKY29yZTo6Zm10OjpudW06OjxpbXBsIGNvcmU6OmZtdDo6RGVidWcgZm9yIHUzMj46OmZtdDo6aDI4YTZlNTU5MzNjYWZkOWJbMV3JFEpjb3JlOjpmbXQ6Om51bTo6PGltcGwgY29yZTo6Zm10OjpEZWJ1ZyBmb3IgdTY0Pjo6Zm10OjpoODM0NWNhYzFhYzUyOGIyY1sxXcoUTGNvcmU6OmZtdDo6bnVtOjo8aW1wbCBjb3JlOjpmbXQ6OkRlYnVnIGZvciB1c2l6ZT46OmZtdDo6aDIzMGY1Y2NhMzI2ZThlMmFbMV3LFD5hdXRvbWVyZ2U6Om9wX3NldDI6Om9wX3NldDo6T3BTZXQ6Oml0ZXJfb2JqOjpoZWZkMWJiN2RkNmYxY2VhYswUXDxhdXRvbWVyZ2U6OnRleHRfZGlmZjo6bXllcnM6OlYgYXMgY29yZTo6b3BzOjppbmRleDo6SW5kZXg8aXNpemU+Pjo6aW5kZXg6OmhiN2I0ZWUzZTI3ZjkzMTI0zRRHY29yZTo6Zm10OjpudW06OjxpbXBsIGNvcmU6OmZtdDo6RGVidWcgZm9yIGkzMj46OmZtdDo6aDVkNTRhMjQwYWE5ODJkYzHOFEpjb3JlOjpmbXQ6Om51bTo6PGltcGwgY29yZTo6Zm10OjpEZWJ1ZyBmb3IgaTY0Pjo6Zm10OjpoYzViMTk1MWQ5YjA1ZjJhMlsyXc8USmNvcmU6OmZtdDo6bnVtOjo8aW1wbCBjb3JlOjpmbXQ6OkRlYnVnIGZvciB1NjQ+OjpmbXQ6Omg4MzQ1Y2FjMWFjNTI4YjJjWzJd0BRMY29yZTo6Zm10OjpudW06OjxpbXBsIGNvcmU6OmZtdDo6RGVidWcgZm9yIHVzaXplPjo6Zm10OjpoMjMwZjVjY2EzMjZlOGUyYVsyXdEUGl9fd2JpbmRnZW5fZGVzdHJveV9jbG9zdXJl0hRKY29yZTo6Zm10OjpudW06OjxpbXBsIGNvcmU6OmZtdDo6RGVidWcgZm9yIGkzMj46OmZtdDo6aDVkNTRhMjQwYWE5ODJkYzFbMV3TFExjb3JlOjpmbXQ6Om51bTo6PGltcGwgY29yZTo6Zm10OjpEZWJ1ZyBmb3IgdXNpemU+OjpmbXQ6OmgyMzBmNWNjYTMyNmU4ZTJhWzNd1BQ4c3RkOjp0aHJlYWQ6OlRocmVhZElkOjpuZXc6OmV4aGF1c3RlZDo6aGVhZWViZTMzYzU0NmE2OGPVFDRhbGxvYzo6cmF3X3ZlYzo6Y2FwYWNpdHlfb3ZlcmZsb3c6Omg4MWVhMWRiZTdjNzRkNzY11hRIY29yZTo6cGFuaWNraW5nOjpwYW5pY19jb25zdDo6cGFuaWNfY29uc3RfZGl2X2J5X3plcm86OmhmNTVlZmFiOTJkMmU3YTli1xRKPGNvcmU6Om9wczo6cmFuZ2U6OlJhbmdlPElkeD4gYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDgzNGNjNWU0MmQyNjUzMDjYFE9jb3JlOjpzbGljZTo6c29ydDo6c2hhcmVkOjpzbWFsbHNvcnQ6OnBhbmljX29uX29yZF92aW9sYXRpb246Omg5OWExMTNiMDBjYmRhNzYy2RREY29yZTo6c2xpY2U6OmluZGV4OjpzbGljZV9lbmRfaW5kZXhfb3ZlcmZsb3dfZmFpbDo6aDE0N2M1ZjY1NGM3ZDJkOTTaFEhjb3JlOjpwYW5pY2tpbmc6OnBhbmljX2NvbnN0OjpwYW5pY19jb25zdF9yZW1fYnlfemVybzo6aDYyMzg5MDZiN2M3MmYyODLbFBxhdXRvbWVyZ2VfcHV0IGV4dGVybnJlZiBzaGlt3BQhYXV0b21lcmdlX2RpZmZQYXRoIGV4dGVybnJlZiBzaGlt3RQiYXV0b21lcmdlX2dldEN1cnNvciBleHRlcm5yZWYgc2hpbd4UNWF1dG9tZXJnZV9pbnNlcnRPYmplY3QgZXh0ZXJucmVmIHNoaW0gbXVsdGl2YWx1ZSBzaGlt3xRFPGF1dG9tZXJnZTo6dHlwZXM6Ok9iaklkIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg4MTI3MTU5OTlhZjdiYmZj4BREPGhleGFuZTo6YWdncmVnYXRlOjpBY2MgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDliY2NiYTY4NDZkMGEwMGbhFEQ8aGV4YW5lOjphZ2dyZWdhdGU6OkFnZyBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoNzY4NzNmZjYyYjU1OGY3ZuIUTDxjb3JlOjphcnJheTo6VHJ5RnJvbVNsaWNlRXJyb3IgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGRmOGRmYmYzODVmM2U0ZjnjFE88Y29yZTo6bnVtOjplcnJvcjo6VHJ5RnJvbUludEVycm9yIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmgwMmJkNGNmMDQ0ZjRmYjIw5BRIPGF1dG9tZXJnZTo6dHlwZXM6Ok9iaklkIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg4MTI3MTU5OTlhZjdiYmZjWzFd5RROPGF1dG9tZXJnZTo6Y2hhbmdlX2dyYXBoOjpOb2RlSWR4IGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhiZjYzZjFmYWIxOTRlYjRi5hRRPGF1dG9tZXJnZTo6Y2hhbmdlX2dyYXBoOjpNaXNzaW5nRGVwIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhjZGYwMTllNDQyNTA3YjY05xRcPGF1dG9tZXJnZTo6Y29sdW1uYXI6OmVuY29kaW5nOjpjb2xfZXJyb3I6OlBhdGggYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDkyNzJkNTliOGY1YTQ4MWXoFGE8YXV0b21lcmdlOjpjb2x1bW5hcjo6c3BsaWNlX2Vycm9yOjpTcGxpY2VFcnJvcjxFLFI+IGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhmYjQ3NmI2ZmIwN2JjYzE56RRRPGF1dG9tZXJnZTo6c3RvcmFnZTo6Y2h1bms6OkNoZWNrU3VtIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg0YzJhNTU1NTJlMDFlMDcy6hRHPGhleGFuZTo6YWdncmVnYXRlOjpBY2MgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDliY2NiYTY4NDZkMGEwMGZbMV3rFC1hdXRvbWVyZ2VfdGV4dCBleHRlcm5yZWYgc2hpbSBtdWx0aXZhbHVlIHNoaW3sFDNhdXRvbWVyZ2VfcHVzaE9iamVjdCBleHRlcm5yZWYgc2hpbSBtdWx0aXZhbHVlIHNoaW3tFDFhdXRvbWVyZ2VfZGlmZlBhdGggZXh0ZXJucmVmIHNoaW0gbXVsdGl2YWx1ZSBzaGlt7hQ3c2VyZGVfd2FzbV9iaW5kZ2VuOjpkZTo6Y29udmVydF9wYWlyOjpoN2RmMzZiNzlkYTNiNGY3ZO8UMjwmVCBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmgzMWNkNzQ5MDAxM2NlZWI28BRePGhleDo6Qnl0ZXNUb0hleENoYXJzIGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6c2l6ZV9oaW50OjpoM2Y0NWMxMjRiMmViODg1OfEUEV9fd2JpbmRnZW5fbWFsbG9j8hQ4Y29yZTo6Zm10OjpidWlsZGVyczo6RGVidWdTZXQ6OmZpbmlzaDo6aDc0ZmVjZjMwMWYzMThjODTzFDljb3JlOjpmbXQ6OmJ1aWxkZXJzOjpEZWJ1Z0xpc3Q6OmZpbmlzaDo6aDJjNDQ1MTlhY2E4ZjI0MGP0FDJjb3JlOjpmbXQ6OkZvcm1hdHRlcjo6ZGVidWdfbWFwOjpoNjcwZjZkYmM0MGI4YWYzOfUULWF1dG9tZXJnZV9mb3JrIGV4dGVybnJlZiBzaGltIG11bHRpdmFsdWUgc2hpbfYUMWF1dG9tZXJnZV9nZXRCbG9jayBleHRlcm5yZWYgc2hpbSBtdWx0aXZhbHVlIHNoaW33FDJhdXRvbWVyZ2VfcHV0T2JqZWN0IGV4dGVybnJlZiBzaGltIG11bHRpdmFsdWUgc2hpbfgUPWF1dG9tZXJnZV9wdXRPYmplY3RGcm9tSHlkcmF0ZSBleHRlcm5yZWYgc2hpbSBtdWx0aXZhbHVlIHNoaW35FEBhdXRvbWVyZ2VfaW5zZXJ0T2JqZWN0RnJvbUh5ZHJhdGUgZXh0ZXJucmVmIHNoaW0gbXVsdGl2YWx1ZSBzaGlt+hQsYXV0b21lcmdlX2dldCBleHRlcm5yZWYgc2hpbSBtdWx0aXZhbHVlIHNoaW37FDRhdXRvbWVyZ2VfZ2V0V2l0aFR5cGUgZXh0ZXJucmVmIHNoaW0gbXVsdGl2YWx1ZSBzaGlt/BQvYXV0b21lcmdlX2dldEFsbCBleHRlcm5yZWYgc2hpbSBtdWx0aXZhbHVlIHNoaW39FDRhdXRvbWVyZ2VfbWF0ZXJpYWxpemUgZXh0ZXJucmVmIHNoaW0gbXVsdGl2YWx1ZSBzaGlt/hQ6YXV0b21lcmdlX2dldEN1cnNvclBvc2l0aW9uIGV4dGVybnJlZiBzaGltIG11bHRpdmFsdWUgc2hpbf8ULWF1dG9tZXJnZV9tYXJrIGV4dGVybnJlZiBzaGltIG11bHRpdmFsdWUgc2hpbYAVMGF1dG9tZXJnZV9tYXJrc0F0IGV4dGVybnJlZiBzaGltIG11bHRpdmFsdWUgc2hpbYEVTWhhc2hicm93bjo6cmF3OjpSYXdUYWJsZTxULEE+OjpyZXNlcnZlX3JlaGFzaDo6e3tjbG9zdXJlfX06Omg2YTZlOTNhYmFhMTdlY2RlghVNaGFzaGJyb3duOjpyYXc6OlJhd1RhYmxlPFQsQT46OnJlc2VydmVfcmVoYXNoOjp7e2Nsb3N1cmV9fTo6aDE5YWJhYzdiZGE5MmVhMTCDFU1oYXNoYnJvd246OnJhdzo6UmF3VGFibGU8VCxBPjo6cmVzZXJ2ZV9yZWhhc2g6Ont7Y2xvc3VyZX19OjpoMjI1YzgwZDJmY2NhNDA5ZoQVTWhhc2hicm93bjo6cmF3OjpSYXdUYWJsZTxULEE+OjpyZXNlcnZlX3JlaGFzaDo6e3tjbG9zdXJlfX06Omg4ZWY1MGNiNmY4ZDIwN2M5hRVsY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGF1dG9tZXJnZTo6c3RvcmFnZTo6YnVuZGxlOjpidWlsZGVyOjpCdW5kbGVDaGFuZ2VJdGVyVW52ZXJpZmllZD46Omg4MTE1NDRjYTRkNjc4MTQ1hhVNaGFzaGJyb3duOjpyYXc6OlJhd1RhYmxlPFQsQT46OnJlc2VydmVfcmVoYXNoOjp7e2Nsb3N1cmV9fTo6aGRiYTM2ZDc2NTNhYTBlMmSHFU1oYXNoYnJvd246OnJhdzo6UmF3VGFibGU8VCxBPjo6cmVzZXJ2ZV9yZWhhc2g6Ont7Y2xvc3VyZX19OjpoNjMzZGY3MGIzNTI0OWIxZYgVTWhhc2hicm93bjo6cmF3OjpSYXdUYWJsZTxULEE+OjpyZXNlcnZlX3JlaGFzaDo6e3tjbG9zdXJlfX06Omg5MmIzYTcxYmU0ZGUzZjQ0iRVNaGFzaGJyb3duOjpyYXc6OlJhd1RhYmxlPFQsQT46OnJlc2VydmVfcmVoYXNoOjp7e2Nsb3N1cmV9fTo6aGExYTI5OTNmOWEzMWRlZTiKFU1oYXNoYnJvd246OnJhdzo6UmF3VGFibGU8VCxBPjo6cmVzZXJ2ZV9yZWhhc2g6Ont7Y2xvc3VyZX19OjpoMzg3YzM4ZTczNzY3N2ZkMYsVTWhhc2hicm93bjo6cmF3OjpSYXdUYWJsZTxULEE+OjpyZXNlcnZlX3JlaGFzaDo6e3tjbG9zdXJlfX06OmhmNDBiOGUyZGY0MzEwNDRjjBVNaGFzaGJyb3duOjpyYXc6OlJhd1RhYmxlPFQsQT46OnJlc2VydmVfcmVoYXNoOjp7e2Nsb3N1cmV9fTo6aDFhYjA1YTk5MWQxN2QxMmSNFU1oYXNoYnJvd246OnJhdzo6UmF3VGFibGU8VCxBPjo6cmVzZXJ2ZV9yZWhhc2g6Ont7Y2xvc3VyZX19OjpoMmFkNThlNGJiOTM0ODJkZY4VTWhhc2hicm93bjo6cmF3OjpSYXdUYWJsZTxULEE+OjpyZXNlcnZlX3JlaGFzaDo6e3tjbG9zdXJlfX06OmhkYzVjZmI4ODdjNDg5YzJijxVCZ2V0cmFuZG9tOjpiYWNrZW5kczo6d2FzbV9qczo6Z2V0X3JhbmRvbV92YWx1ZXM6Omg1NTIyYTc0ODkyMjViNjBikBVKPGhleGFuZTo6cGFjazo6UGFja0Vycm9yIGFzIGNvcmU6OmVycm9yOjpFcnJvcj46OnNvdXJjZTo6aGQ4OWJhZmU2NTc3YTY2MziRFTRjb3JlOjpmbXQ6OkZvcm1hdHRlcjo6ZGVidWdfdHVwbGU6OmgyZTcwYzlmZmU4YjdlNTYzkhUfYXV0b21lcmdlX2Nsb25lIG11bHRpdmFsdWUgc2hpbZMVLWF1dG9tZXJnZV9rZXlzIGV4dGVybnJlZiBzaGltIG11bHRpdmFsdWUgc2hpbZQVLmF1dG9tZXJnZV9zcGFucyBleHRlcm5yZWYgc2hpbSBtdWx0aXZhbHVlIHNoaW2VFS9hdXRvbWVyZ2Vfc3BsaWNlIGV4dGVybnJlZiBzaGltIG11bHRpdmFsdWUgc2hpbZYVL2F1dG9tZXJnZV9pbnNlcnQgZXh0ZXJucmVmIHNoaW0gbXVsdGl2YWx1ZSBzaGltlxUsYXV0b21lcmdlX3B1dCBleHRlcm5yZWYgc2hpbSBtdWx0aXZhbHVlIHNoaW2YFTphdXRvbWVyZ2Vfc3BsaWNlRnJvbUh5ZHJhdGUgZXh0ZXJucmVmIHNoaW0gbXVsdGl2YWx1ZSBzaGltmRUwYXV0b21lcmdlX29iakluZm8gZXh0ZXJucmVmIHNoaW0gbXVsdGl2YWx1ZSBzaGltmhU1YXV0b21lcmdlX2FwcGx5UGF0Y2hlcyBleHRlcm5yZWYgc2hpbSBtdWx0aXZhbHVlIHNoaW2bFT5hdXRvbWVyZ2VfYXBwbHlBbmRSZXR1cm5QYXRjaGVzIGV4dGVybnJlZiBzaGltIG11bHRpdmFsdWUgc2hpbZwVLWF1dG9tZXJnZV9kaWZmIGV4dGVybnJlZiBzaGltIG11bHRpdmFsdWUgc2hpbZ0VL2F1dG9tZXJnZV9sZW5ndGggZXh0ZXJucmVmIHNoaW0gbXVsdGl2YWx1ZSBzaGltnhUuYXV0b21lcmdlX21hcmtzIGV4dGVybnJlZiBzaGltIG11bHRpdmFsdWUgc2hpbZ8VSnNlcmRlX3dhc21fYmluZGdlbjo6ZGU6OkRlc2VyaWFsaXplcjo6YXNfb2JqZWN0X2VudHJpZXM6OmhlZDcyYmI0ZjQ0ZTZiOGUwoBVOY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGF1dG9tZXJnZTo6b3Bfc2V0Mjo6dHlwZXM6OktleVJlZj46OmhjMjhmYTkwNDYwYTJjMTg3oRUsX19ydXN0Y1s1MjI0ZTZiODFjZDgyYThmXTo6cnVzdF9iZWdpbl91bndpbmSiFS1jb3JlOjpwYW5pY2tpbmc6OnBhbmljX2ZtdDo6aGQzMDUyYTM2NjJkNTBjOTWjFR9hdXRvbWVyZ2VfaW5zZXJ0IGV4dGVybnJlZiBzaGltpBUdYXV0b21lcmdlX25ldyBtdWx0aXZhbHVlIHNoaW2lFR9hdXRvbWVyZ2VfbWVyZ2UgbXVsdGl2YWx1ZSBzaGltphU0YXV0b21lcmdlX3VwZGF0ZVNwYW5zIGV4dGVybnJlZiBzaGltIG11bHRpdmFsdWUgc2hpbacVLWF1dG9tZXJnZV9wdXNoIGV4dGVybnJlZiBzaGltIG11bHRpdmFsdWUgc2hpbagVM2F1dG9tZXJnZV9zcGxpdEJsb2NrIGV4dGVybnJlZiBzaGltIG11bHRpdmFsdWUgc2hpbakVNGF1dG9tZXJnZV91cGRhdGVCbG9jayBleHRlcm5yZWYgc2hpbSBtdWx0aXZhbHVlIHNoaW2qFTJhdXRvbWVyZ2VfaW5jcmVtZW50IGV4dGVybnJlZiBzaGltIG11bHRpdmFsdWUgc2hpbasVNWF1dG9tZXJnZV9lbmFibGVGcmVlemUgZXh0ZXJucmVmIHNoaW0gbXVsdGl2YWx1ZSBzaGltrBU5YXV0b21lcmdlX3JlZ2lzdGVyRGF0YXR5cGUgZXh0ZXJucmVmIHNoaW0gbXVsdGl2YWx1ZSBzaGltrRUyYXV0b21lcmdlX3NhdmVTaW5jZSBleHRlcm5yZWYgc2hpbSBtdWx0aXZhbHVlIHNoaW2uFThhdXRvbWVyZ2VfbG9hZEluY3JlbWVudGFsIGV4dGVybnJlZiBzaGltIG11bHRpdmFsdWUgc2hpba8VM2F1dG9tZXJnZV9nZXRDaGFuZ2VzIGV4dGVybnJlZiBzaGltIG11bHRpdmFsdWUgc2hpbbAVN2F1dG9tZXJnZV9nZXRDaGFuZ2VzTWV0YSBleHRlcm5yZWYgc2hpbSBtdWx0aXZhbHVlIHNoaW2xFThhdXRvbWVyZ2VfZ2V0Q2hhbmdlQnlIYXNoIGV4dGVybnJlZiBzaGltIG11bHRpdmFsdWUgc2hpbbIVPGF1dG9tZXJnZV9nZXRDaGFuZ2VNZXRhQnlIYXNoIGV4dGVybnJlZiBzaGltIG11bHRpdmFsdWUgc2hpbbMVP2F1dG9tZXJnZV9nZXREZWNvZGVkQ2hhbmdlQnlIYXNoIGV4dGVybnJlZiBzaGltIG11bHRpdmFsdWUgc2hpbbQVN2F1dG9tZXJnZV9nZXRNaXNzaW5nRGVwcyBleHRlcm5yZWYgc2hpbSBtdWx0aXZhbHVlIHNoaW21FS1hdXRvbWVyZ2VfdG9KUyBleHRlcm5yZWYgc2hpbSBtdWx0aXZhbHVlIHNoaW22FS9hdXRvbWVyZ2VfdW5tYXJrIGV4dGVybnJlZiBzaGltIG11bHRpdmFsdWUgc2hpbbcVM2F1dG9tZXJnZV9zYXZlQnVuZGxlIGV4dGVybnJlZiBzaGltIG11bHRpdmFsdWUgc2hpbbgVI2xvYWQgZXh0ZXJucmVmIHNoaW0gbXVsdGl2YWx1ZSBzaGltuRVUY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGF1dG9tZXJnZV93YXNtOjppbnRlcm9wOjplcnJvcjo6U2V0UHJvcD46Omg0OGNjZWYwOGFhNzI5YWM2uhVNaGFzaGJyb3duOjpyYXc6OlJhd1RhYmxlPFQsQT46OnJlc2VydmVfcmVoYXNoOjp7e2Nsb3N1cmV9fTo6aDBmYzI2NTRmZWRlMGUwNWa7FU1oYXNoYnJvd246OnJhdzo6UmF3VGFibGU8VCxBPjo6cmVzZXJ2ZV9yZWhhc2g6Ont7Y2xvc3VyZX19OjpoMTc3MTAzMDlkNTA0MTU3ZbwVTWhhc2hicm93bjo6cmF3OjpSYXdUYWJsZTxULEE+OjpyZXNlcnZlX3JlaGFzaDo6e3tjbG9zdXJlfX06OmgxM2U5ODRhZjMxMzhkMzUyvRVNaGFzaGJyb3duOjpyYXc6OlJhd1RhYmxlPFQsQT46OnJlc2VydmVfcmVoYXNoOjp7e2Nsb3N1cmV9fTo6aGNmOTRmMjkxY2IwODFhZGS+FU1oYXNoYnJvd246OnJhdzo6UmF3VGFibGU8VCxBPjo6cmVzZXJ2ZV9yZWhhc2g6Ont7Y2xvc3VyZX19OjpoOGE1Y2QwMTMwZjNlY2MwML8VTWhhc2hicm93bjo6cmF3OjpSYXdUYWJsZTxULEE+OjpyZXNlcnZlX3JlaGFzaDo6e3tjbG9zdXJlfX06Omg1YzYwYjE2YTA3MjU0MjAxwBVNaGFzaGJyb3duOjpyYXc6OlJhd1RhYmxlPFQsQT46OnJlc2VydmVfcmVoYXNoOjp7e2Nsb3N1cmV9fTo6aDAzNTBjMjZhODA4YmVkNmXBFU1oYXNoYnJvd246OnJhdzo6UmF3VGFibGU8VCxBPjo6cmVzZXJ2ZV9yZWhhc2g6Ont7Y2xvc3VyZX19OjpoOWYwODBmZTViMzkyY2YwYsIVWTxqc19zeXM6OkpzU3RyaW5nIGFzIGNvcmU6OmNvbnZlcnQ6OkZyb208YWxsb2M6OnN0cmluZzo6U3RyaW5nPj46OmZyb206OmgyYjYxZGE0NTdjZTcxMzFkwxVDPGxlYjEyODo6cmVhZDo6RXJyb3IgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoNzdjOTA2ZDBhOTE2ODRkMsQVNWNvcmU6OmZtdDo6Rm9ybWF0dGVyOjpkZWJ1Z19zdHJ1Y3Q6Omg2YTkwODRiNWIzNTQzNTZlxRUzY29yZTo6Zm10OjpGb3JtYXR0ZXI6OmRlYnVnX2xpc3Q6OmhjMzA3NmNhY2U2OWI0ZWUwxhUyY29yZTo6Zm10OjpGb3JtYXR0ZXI6OmRlYnVnX3NldDo6aGIxMGY5OGI3ZjQ2NWFhNzfHFSRhdXRvbWVyZ2VfdXBkYXRlU3BhbnMgZXh0ZXJucmVmIHNoaW3IFR1hdXRvbWVyZ2VfcHVzaCBleHRlcm5yZWYgc2hpbckVImF1dG9tZXJnZV9wdXRPYmplY3QgZXh0ZXJucmVmIHNoaW3KFS1hdXRvbWVyZ2VfcHV0T2JqZWN0RnJvbUh5ZHJhdGUgZXh0ZXJucmVmIHNoaW3LFSJhdXRvbWVyZ2VfaW5jcmVtZW50IGV4dGVybnJlZiBzaGltzBUcYXV0b21lcmdlX2dldCBleHRlcm5yZWYgc2hpbc0VJGF1dG9tZXJnZV9nZXRXaXRoVHlwZSBleHRlcm5yZWYgc2hpbc4VH2F1dG9tZXJnZV9nZXRBbGwgZXh0ZXJucmVmIHNoaW3PFSlhdXRvbWVyZ2VfcmVnaXN0ZXJEYXRhdHlwZSBleHRlcm5yZWYgc2hpbdAVJGF1dG9tZXJnZV9tYXRlcmlhbGl6ZSBleHRlcm5yZWYgc2hpbdEVKmF1dG9tZXJnZV9nZXRDdXJzb3JQb3NpdGlvbiBleHRlcm5yZWYgc2hpbdIVH2F1dG9tZXJnZV91bm1hcmsgZXh0ZXJucmVmIHNoaW3TFTNhdXRvbWVyZ2VfdXBkYXRlVGV4dCBleHRlcm5yZWYgc2hpbSBtdWx0aXZhbHVlIHNoaW3UFTJhdXRvbWVyZ2Vfam9pbkJsb2NrIGV4dGVybnJlZiBzaGltIG11bHRpdmFsdWUgc2hpbdUVKWF1dG9tZXJnZV9kaWZmSW5jcmVtZW50YWwgbXVsdGl2YWx1ZSBzaGlt1hUvYXV0b21lcmdlX2RlbGV0ZSBleHRlcm5yZWYgc2hpbSBtdWx0aXZhbHVlIHNoaW3XFSdhdXRvbWVyZ2Vfc2F2ZUFuZFZlcmlmeSBtdWx0aXZhbHVlIHNoaW3YFTthdXRvbWVyZ2VfcmVjZWl2ZVN5bmNNZXNzYWdlIGV4dGVybnJlZiBzaGltIG11bHRpdmFsdWUgc2hpbdkVJWNyZWF0ZSBleHRlcm5yZWYgc2hpbSBtdWx0aXZhbHVlIHNoaW3aFStlbmNvZGVDaGFuZ2UgZXh0ZXJucmVmIHNoaW0gbXVsdGl2YWx1ZSBzaGlt2xUrZGVjb2RlQ2hhbmdlIGV4dGVybnJlZiBzaGltIG11bHRpdmFsdWUgc2hpbdwVLmltcG9ydFN5bmNTdGF0ZSBleHRlcm5yZWYgc2hpbSBtdWx0aXZhbHVlIHNoaW3dFTBlbmNvZGVTeW5jTWVzc2FnZSBleHRlcm5yZWYgc2hpbSBtdWx0aXZhbHVlIHNoaW3eFTBkZWNvZGVTeW5jTWVzc2FnZSBleHRlcm5yZWYgc2hpbSBtdWx0aXZhbHVlIHNoaW3fFS5kZWNvZGVTeW5jU3RhdGUgZXh0ZXJucmVmIHNoaW0gbXVsdGl2YWx1ZSBzaGlt4BUpcmVhZEJ1bmRsZSBleHRlcm5yZWYgc2hpbSBtdWx0aXZhbHVlIHNoaW3hFXBjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9uOjpPcHRpb248YWxsb2M6OnZlYzo6VmVjPGF1dG9tZXJnZTo6dHlwZXM6OkNoYW5nZUhhc2g+Pj46OmgwZjIxYTVmMWI4ZTY4MGE24hU4YXV0b21lcmdlOjpjaGFuZ2U6OkNoYW5nZTo6ZnJvbV9ieXRlczo6aGNiNzhjNTkwN2RhMGU5ZTjjFWk8YXV0b21lcmdlOjpjdXJzb3I6OkN1cnNvciBhcyBjb3JlOjpjb252ZXJ0OjpUcnlGcm9tPGFsbG9jOjpzdHJpbmc6OlN0cmluZz4+Ojp0cnlfZnJvbTo6aGE4OGRkZDkyOTNkMDMyMWbkFS9mbGF0ZTI6Om1lbTo6RGVjb21wcmVzczo6bmV3OjpoMzU0NDY5YWY4YzhlNWQyMOUVEl9fd2JpbmRnZW5fcmVhbGxvY+YVQGNvcmU6OnNsaWNlOjpzb3J0OjpzdGFibGU6OmRyaWZ0OjpzcXJ0X2FwcHJveDo6aDViM2M2NmU2Yzk4NmYzN2XnFTpzeW5jc3RhdGVfc2V0X2xhc3RTZW50SGVhZHMgZXh0ZXJucmVmIHNoaW0gbXVsdGl2YWx1ZSBzaGlt6BU3c3luY3N0YXRlX3NldF9zZW50SGFzaGVzIGV4dGVybnJlZiBzaGltIG11bHRpdmFsdWUgc2hpbekVPGF1dG9tZXJnZV9pbml0Um9vdEZyb21IeWRyYXRlIGV4dGVybnJlZiBzaGltIG11bHRpdmFsdWUgc2hpbeoVMGF1dG9tZXJnZV9pc29sYXRlIGV4dGVybnJlZiBzaGltIG11bHRpdmFsdWUgc2hpbesVNWF1dG9tZXJnZV9hcHBseUNoYW5nZXMgZXh0ZXJucmVmIHNoaW0gbXVsdGl2YWx1ZSBzaGlt7BUyPCZUIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aDYzYjBjMTgxN2JiNTcyM2TtFW08Y29yZTo6aXRlcjo6YWRhcHRlcnM6Om1hcDo6TWFwPEksRj4gYXMgY29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+OjpzaXplX2hpbnQ6OmgxY2FkODQ5OTEyZDhkNzdl7hVuPGFsbG9jOjp2ZWM6OmludG9faXRlcjo6SW50b0l0ZXI8VCxBPiBhcyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvcj46OnNpemVfaGludDo6aDkzZTIyNWQ5ODI2ZTlkYmbvFccDY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGNvcmU6Oml0ZXI6OmFkYXB0ZXJzOjpmbGF0dGVuOjpGbGF0TWFwPGhleGFuZTo6c2xhYjo6dHJlZTo6U3BhblRyZWVGbkl0ZXI8aGV4YW5lOjpzbGFiOjpTbGFiLGhleGFuZTo6c2xhYjo6U2xhYldlaWdodCxoZXhhbmU6OmNvbHVtbmRhdGE6OkNvbHVtbkRhdGE8aGV4YW5lOjpkZWx0YTo6RGVsdGFDdXJzb3JJbnRlcm5hbDw2NF91c2l6ZT4+OjpmaW5kX2J5X3JhbmdlOjp7e2Nsb3N1cmV9fT4saGV4YW5lOjpjdXJzb3I6OlJ1bkl0ZXJDb250YWluaW5nMjxoZXhhbmU6OmRlbHRhOjpEZWx0YUN1cnNvckludGVybmFsPDY0X3VzaXplPj4saGV4YW5lOjpjb2x1bW5kYXRhOjpDb2x1bW5EYXRhPGhleGFuZTo6ZGVsdGE6OkRlbHRhQ3Vyc29ySW50ZXJuYWw8NjRfdXNpemU+Pjo6ZmluZF9ieV9yYW5nZTo6e3tjbG9zdXJlfX0+Pjo6aDM2MGM5Y2EyMzdjNGYwN2TwFVJjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YWxsb2M6OnN5bmM6OkFyYzxhbGxvYzo6dmVjOjpWZWM8dTg+Pj46OmgzMGI3ZmQ4NzA0YzY2ZTZh8RUkYXV0b21lcmdlX2dldEFjdG9ySWQgbXVsdGl2YWx1ZSBzaGlt8hUwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg0YjgzMDU2YWM1ZjU5YzUy8xVDY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGF1dG9tZXJnZTo6dHlwZXM6OlByb3A+OjpoZWEzYmM5NTE3MTFiOTY2NPQVRmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhdXRvbWVyZ2U6OnR5cGVzOjpBY3RvcklkPjo6aGRhZDljMDk2YTAyM2NlYjb1FTA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDJhOGE3YTIzNzBlZjUyOTL2FTA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDYwYmVjMDMxNzA1ZTUxZDf3FTA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDgzNTk4Yzg3ZTgzMjQ0ZTX4FTA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGI1ZDk1ZjA5NDYwMzRjMzL5FTI8JlQgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoN2YwOGUyMDg0MjBmZWU2MvoVf2NvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhbGxvYzo6dmVjOjpWZWM8YXV0b21lcmdlOjpzZXF1ZW5jZV90cmVlOjpTZXF1ZW5jZVRyZWVOb2RlPGFsbG9jOjpzdHJpbmc6OlN0cmluZz4+Pjo6aDg4ZDYzMTMyYjU5OTlkZTn7FY0BY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGFsbG9jOjp2ZWM6OlZlYzxhdXRvbWVyZ2U6OnNlcXVlbmNlX3RyZWU6OlNlcXVlbmNlVHJlZU5vZGU8YXV0b21lcmdlOjpoeWRyYXRlOjpsaXN0OjpMaXN0VmFsdWU+Pj46Omg4MjY0ZWE5NmUwMzM5ZmI1/BVDY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGF1dG9tZXJnZTo6dHlwZXM6OlByb3A+OjpoNWZmYTBjOTQ3OWE0Yzk2Yf0VRmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhdXRvbWVyZ2U6OnR5cGVzOjpBY3RvcklkPjo6aDhhNjU3MGM2MjMyOTQzMTD+FUVjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YWxsb2M6OmJvcnJvdzo6Q293PFt1OF0+Pjo6aGVkNjg2MDFjZTIxOTRkMmX/FV1jb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YXV0b21lcmdlOjpvcF9zZXQyOjpvcF9zZXQ6Om9wX2l0ZXI6OlJlYWRPcEVycm9yPjo6aDU1YWY3ZTFhNGE3YjRkNDiAFmxjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YWxsb2M6OnZlYzo6VmVjPGF1dG9tZXJnZTo6c2VxdWVuY2VfdHJlZTo6U2VxdWVuY2VUcmVlTm9kZTx1OD4+Pjo6aGU0M2VhZmIxMjRjYjU3MzSBFm1jb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YWxsb2M6OnZlYzo6VmVjPGF1dG9tZXJnZTo6c2VxdWVuY2VfdHJlZTo6U2VxdWVuY2VUcmVlTm9kZTx1MTY+Pj46OmgyZjUyMzRmMTIwM2VmNTgyghZuY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGFsbG9jOjp2ZWM6OlZlYzxhdXRvbWVyZ2U6OnNlcXVlbmNlX3RyZWU6OlNlcXVlbmNlVHJlZU5vZGU8Y2hhcj4+Pjo6aGUzYWI0MDA4MjM4OGU1NzaDFkk8aGV4YW5lOjpyYXc6OlJlYWRSYXdFcnJvciBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmhjYzY0ZDJhMmZiNzRmYWUyhBY9d2FzbV9iaW5kZ2VuOjpjb252ZXJ0OjpjbG9zdXJlczo6Xzo6aW52b2tlOjpoZDExYzVjYjBkNGU3NDRlMoUWH2F1dG9tZXJnZV9zcGxpY2UgZXh0ZXJucmVmIHNoaW2GFiphdXRvbWVyZ2Vfc3BsaWNlRnJvbUh5ZHJhdGUgZXh0ZXJucmVmIHNoaW2HFixjb3JlOjplcnJvcjo6RXJyb3I6OmNhdXNlOjpoNTc4ZTg3NGZiNDIwYjg4YYgWS2NvcmU6OnNsaWNlOjpzb3J0OjpzaGFyZWQ6OnNtYWxsc29ydDo6c21hbGxfc29ydF9nZW5lcmFsOjpoNWRmMzU4M2UzYWY4MWU3OYkWTWhhc2hicm93bjo6cmF3OjpSYXdUYWJsZTxULEE+OjpyZXNlcnZlX3JlaGFzaDo6e3tjbG9zdXJlfX06OmhlNmJkNjYyNzk1MzZhOTFjihZHPGF1dG9tZXJnZTo6dHlwZXM6Ok9ialR5cGUgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDAwZWRiYTBiMWYzYjVlYTKLFlM8YXV0b21lcmdlOjplcnJvcjo6VXBkYXRlT2JqZWN0RXJyb3IgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoZjZmMzE3ZjIxNTViNmVkN4wWTzxhdXRvbWVyZ2U6Om9wX3NldDI6OnR5cGVzOjpBY3Rpb24gYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGI5N2EyYjljYmIxYjcyMDmNFlg8YXV0b21lcmdlOjpvcF9zZXQyOjp0eXBlczo6UmVhZFNjYWxhckVycm9yIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmgwZjE3MWM0NDBiNGZiZmFhjhZSPGF1dG9tZXJnZTo6c3RvcmFnZTo6Y2h1bms6OkNodW5rVHlwZSBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoYmM1OTUwZDkxNDRjM2UxM48WZDxhdXRvbWVyZ2U6OnN0b3JhZ2U6OmxvYWQ6OmNoYW5nZV9jb2xsZWN0b3I6OkVycm9yIGFzIGNvcmU6OmVycm9yOjpFcnJvcj46OnNvdXJjZTo6aDVlOWM2OTQ2NjE4MmQ4ZjSQFm48dHJhY2luZ19jb3JlOjpjYWxsc2l0ZTo6RGVmYXVsdENhbGxzaXRlIGFzIHRyYWNpbmdfY29yZTo6Y2FsbHNpdGU6OkNhbGxzaXRlPjo6c2V0X2ludGVyZXN0OjpoYzMzYTQ2YzVmMDljODU3NpEWPXdhc21fYmluZGdlbjo6Y29udmVydDo6Y2xvc3VyZXM6Ol86Omludm9rZTo6aDMyZWQ3NzA0MGJkMTE5NzaSFj13YXNtX2JpbmRnZW46OmNvbnZlcnQ6OmNsb3N1cmVzOjpfOjppbnZva2U6OmgzNjdjMWIxYWE2MzhlMjVlkxY9d2FzbV9iaW5kZ2VuOjpjb252ZXJ0OjpjbG9zdXJlczo6Xzo6aW52b2tlOjpoM2M4MjdjM2UwMDY5YmRjMJQWPXdhc21fYmluZGdlbjo6Y29udmVydDo6Y2xvc3VyZXM6Ol86Omludm9rZTo6aDU4YTIzMDY4NzJmNGQxZTOVFj13YXNtX2JpbmRnZW46OmNvbnZlcnQ6OmNsb3N1cmVzOjpfOjppbnZva2U6Omg3YzAyZDE1NjNmZGZjZTk1lhY9d2FzbV9iaW5kZ2VuOjpjb252ZXJ0OjpjbG9zdXJlczo6Xzo6aW52b2tlOjpoYTA3N2NhNDViMWVlNzJjMJcWPXdhc21fYmluZGdlbjo6Y29udmVydDo6Y2xvc3VyZXM6Ol86Omludm9rZTo6aGM3YjM4OGQ0NmM2NmE3MDKYFj13YXNtX2JpbmRnZW46OmNvbnZlcnQ6OmNsb3N1cmVzOjpfOjppbnZva2U6OmhkNDc5NjQwMGU4ZjZjZmQ4mRZlY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHN0ZDo6cGFuaWNraW5nOjpiZWdpbl9wYW5pY19oYW5kbGVyOjpGb3JtYXRTdHJpbmdQYXlsb2FkPjo6aGQ5MDQ5NDI0NmUwODAzYWGaFkc8c3RkOjppbzo6ZXJyb3I6OkVycm9yS2luZCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoZWQxMDNiN2Y1OTM4ZmRmNJsWOWhhc2hicm93bjo6cmF3OjpGYWxsaWJpbGl0eTo6YWxsb2NfZXJyOjpoYWRkOTZlZWNiOTg1YjczOJwWI2F1dG9tZXJnZV9zcGxpdEJsb2NrIGV4dGVybnJlZiBzaGltnRYkYXV0b21lcmdlX3VwZGF0ZUJsb2NrIGV4dGVybnJlZiBzaGltnhYhYXV0b21lcmdlX2dldEJsb2NrIGV4dGVybnJlZiBzaGltnxYlYXV0b21lcmdlX2luc2VydE9iamVjdCBleHRlcm5yZWYgc2hpbaAWMGF1dG9tZXJnZV9pbnNlcnRPYmplY3RGcm9tSHlkcmF0ZSBleHRlcm5yZWYgc2hpbaEWIGF1dG9tZXJnZV9tYXJrc0F0IGV4dGVybnJlZiBzaGltohYwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg0OGY3ZDViMmE2OTlhZjUyoxYwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhjMTY4ZjI0YzI2MDU3NWM0pBYwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhkZDg3NjkwZTI4N2NiYWIzpRZ0Y29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGFsbG9jOjp2ZWM6OlZlYzxjb3JlOjpvcHRpb246Ok9wdGlvbjxhdXRvbWVyZ2U6OmNoYW5nZV9ncmFwaDo6RWRnZUlkeD4+Pjo6aDQxMDk0NDhmNzM3YjJjZTGmFkFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YWxsb2M6OnZlYzo6VmVjPHUxNj4+OjpoZDYzYjU5NDRhNjcyNzU5ZqcWWmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhbGxvYzo6dmVjOjpWZWM8YXV0b21lcmdlOjp0eXBlczo6Q2hhbmdlSGFzaD4+OjpoZjMyNmM5N2FkZDhiMDAzOagWW2NvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhbGxvYzo6dmVjOjpWZWM8YXV0b21lcmdlOjpjaGFuZ2VfZ3JhcGg6OkVkZ2U+Pjo6aDY0MDYyNDYwYzQzZTNhOGSpFmdjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YWxsb2M6OnZlYzo6aW50b19pdGVyOjpJbnRvSXRlcjxjb3JlOjpvcHRpb246Ok9wdGlvbjxpNjQ+Pj46OmhkY2RhYTQyMGY4ZDdhNzI4qhY8aGV4YW5lOjplbmNvZGVyOjpFbmNvZGVyPEM+OjphcHBlbmRfY2h1bms6OmgxMjdlYTcwYzMwMTY1YjM3qxY8aGV4YW5lOjplbmNvZGVyOjpFbmNvZGVyPEM+OjphcHBlbmRfY2h1bms6OmgxNzAyYTJlMzQ3MGM0OGM2rBY8aGV4YW5lOjplbmNvZGVyOjpFbmNvZGVyPEM+OjphcHBlbmRfY2h1bms6Omg3NjExNDQ1YTllNzdmOWQ4rRY8aGV4YW5lOjplbmNvZGVyOjpFbmNvZGVyPEM+OjphcHBlbmRfY2h1bms6Omg4YWQzNzI1ZDllNDY2ZjQ2rhY8aGV4YW5lOjplbmNvZGVyOjpFbmNvZGVyPEM+OjphcHBlbmRfY2h1bms6Omg5NzgzNzYwMzllZTY3MjI4rxY8aGV4YW5lOjplbmNvZGVyOjpFbmNvZGVyPEM+OjphcHBlbmRfY2h1bms6Omg5ODU1MGQzZTJkNzAzZTUxsBY8aGV4YW5lOjplbmNvZGVyOjpFbmNvZGVyPEM+OjphcHBlbmRfY2h1bms6OmhhZTRkZGMzM2NiZTA4NmZjsRZWPGhleGFuZTo6YWdncmVnYXRlOjpBY2MgYXMgY29yZTo6b3BzOjphcml0aDo6U3ViQXNzaWduPjo6c3ViX2Fzc2lnbjo6aGU2MzljNzcyN2E1YTNjZWayFj13YXNtX2JpbmRnZW46OmNvbnZlcnQ6OmNsb3N1cmVzOjpfOjppbnZva2U6OmgwZGYwNDg0YzU4NmM4NzE3sxY9d2FzbV9iaW5kZ2VuOjpjb252ZXJ0OjpjbG9zdXJlczo6Xzo6aW52b2tlOjpoNDIzMWFhMzk1YTgzMDY5Y7QWNDxib29sIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aDk1NjcyMWNjMWQyNTUwMTW1Fmtqc19zeXM6Ok9iamVjdDxUPjo6ZGVmaW5lX3Byb3BlcnR5OjpfX3diZ19kZWZpbmVQcm9wZXJ0eV9hZWI5NWQwNDM0Y2UwM2QwOjpoODQ5NDhmYmM4NWM1NDIyNiBleHRlcm5yZWYgc2hpbbYWWWpzX3N5czo6RnVuY3Rpb248Rj46OmNhbGwxOjpfX3diZ19jYWxsX2EyNDU5MmE2ZjM0OWE5N2U6OmhkYTMxYjdmYzdkNGM0MGI0IGV4dGVybnJlZiBzaGlttxZWanNfc3lzOjpSZWZsZWN0OjphcHBseTo6X193YmdfYXBwbHlfMzI5YjJhNDQwNDE1YzJlNjo6aGZhZDNjYjA5MTczYjc3YjQgZXh0ZXJucmVmIHNoaW24Fh1hdXRvbWVyZ2Vfa2V5cyBleHRlcm5yZWYgc2hpbbkWHWF1dG9tZXJnZV90ZXh0IGV4dGVybnJlZiBzaGltuhYeYXV0b21lcmdlX3NwYW5zIGV4dGVybnJlZiBzaGltuxYjYXV0b21lcmdlX3VwZGF0ZVRleHQgZXh0ZXJucmVmIHNoaW28FiNhdXRvbWVyZ2VfcHVzaE9iamVjdCBleHRlcm5yZWYgc2hpbb0WIGF1dG9tZXJnZV9vYmpJbmZvIGV4dGVybnJlZiBzaGltvhYlYXV0b21lcmdlX2FwcGx5UGF0Y2hlcyBleHRlcm5yZWYgc2hpbb8WLmF1dG9tZXJnZV9hcHBseUFuZFJldHVyblBhdGNoZXMgZXh0ZXJucmVmIHNoaW3AFh1hdXRvbWVyZ2VfZGlmZiBleHRlcm5yZWYgc2hpbcEWH2F1dG9tZXJnZV9sZW5ndGggZXh0ZXJucmVmIHNoaW3CFh9hdXRvbWVyZ2VfZGVsZXRlIGV4dGVybnJlZiBzaGltwxYeYXV0b21lcmdlX21hcmtzIGV4dGVybnJlZiBzaGltxBYwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhiNGY4ZjM5N2EwMjdjZWZmxRYwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg3OWJjNmM0MzcwMjkxYjI5xhYwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhhNzkxNzMwMDQ4Y2Q1OTdjxxZbY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGNvcmU6Om9wdGlvbjo6T3B0aW9uPGhleGFuZTo6Y3Vyc29yOjpSdW48c3RyPj4+OjpoYWE3NGQxNGRkNGU1MzNmMsgWRzxoZXhhbmU6OnJhdzo6UmVhZFJhd0Vycm9yIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhjMzRhYWQxNTU3YmMzZTY5yRZHYXV0b21lcmdlOjphdXRvY29tbWl0OjpBdXRvQ29tbWl0OjpnZXRfY2hhbmdlc19hZGRlZDo6aDE5YWUxYjNkYTJjODRhNWLKFlE8YXV0b21lcmdlOjphdXRvbWVyZ2U6Ok9uUGFydGlhbExvYWQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGZjN2JkNTQwZGIwYmQ2ZWHLFlM8YXV0b21lcmdlOjphdXRvbWVyZ2U6OlN0cmluZ01pZ3JhdGlvbiBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoM2IxYjk4MDc4YTJlMmY3ZMwWWDxhdXRvbWVyZ2U6OnN0b3JhZ2U6OmxvYWQ6OlZlcmlmaWNhdGlvbk1vZGUgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDAyMDM0MDJjMWZlMjkyNmTNFkV0cmFjaW5nX2NvcmU6OnN1YnNjcmliZXI6OlN1YnNjcmliZXI6OmRvd25jYXN0X3Jhdzo6aDI2NDRkNjQ5ZTdkMTA5ZTDOFjI8JlQgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoMzExZTRhOTBiYzgxYzY3Oc8WYTxoZXhhbmU6OmFnZ3JlZ2F0ZTo6QWNjIGFzIGNvcmU6Om9wczo6YXJpdGg6OkRpdjxoZXhhbmU6OmFnZ3JlZ2F0ZTo6QWdnPj46OmRpdjo6aGVkNzY3YWJhNzY0YzdkMTfQFjZoZXhhbmU6OnJsZTo6TGl0UnVuQ3Vyc29yOjpudW1fbGVmdDo6aGZjOTJjOGUyODdkOTZjZjbRFj13YXNtX2JpbmRnZW46OmNvbnZlcnQ6OmNsb3N1cmVzOjpfOjppbnZva2U6Omg5YjE3ZDA2YzZlYmNkYTEx0haHATw8c2VyZGVfY29yZTo6ZGU6OldpdGhEZWNpbWFsUG9pbnQgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpMb29rRm9yRGVjaW1hbFBvaW50IGFzIGNvcmU6OmZtdDo6V3JpdGU+Ojp3cml0ZV9jaGFyOjpoNDJmMTAxOWVhMGY1OWNkMNMWE2xvYWQgZXh0ZXJucmVmIHNoaW3UFjA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGJlYzgzNGIwMTI4ODU3MmLVFkJjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YWxsb2M6OnN0cmluZzo6U3RyaW5nPjo6aDYzZDdhNGI0ZWYzZjE1ZWXWFk1oYXNoYnJvd246OnJhdzo6UmF3VGFibGU8VCxBPjo6cmVzZXJ2ZV9yZWhhc2g6Ont7Y2xvc3VyZX19OjpoZmVlZjAwZDdmYWE2MmNjNtcWQmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhbGxvYzo6c3RyaW5nOjpTdHJpbmc+OjpoMjE3ZDc1NDhiNzJiZWVlY9gWZzwmc2VyZGVfd2FzbV9iaW5kZ2VuOjpzZXI6OlNlcmlhbGl6ZXIgYXMgc2VyZGVfY29yZTo6c2VyOjpTZXJpYWxpemVyPjo6c2VyaWFsaXplX3NlcTo6aGM3NTM4NjZjNTgxYzk3YjnZFjA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDIyNjc1MGExNzczMzE1NjDaFjA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGNjY2VjOWUwNmU1OWUxNzHbFjI8JlQgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoZmFkYTBmYmE2MmVhMzQ3ZdwWQmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhbGxvYzo6c3RyaW5nOjpTdHJpbmc+OjpoY2M1MGY3NTdkYmM0ZjlhOd0WQGNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhbGxvYzo6dmVjOjpWZWM8dTg+Pjo6aDZiODk1ZmY0OWRiYTE1ODneFjd3YXNtX2JpbmRnZW46Ol9fd2JpbmRnZW5fYm9vbGVhbl9nZXQ6OmgzZDM0Mzg1NTgzNTMwMWZl3xbcAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhbGxvYzo6Ym94ZWQ6OmNvbnZlcnQ6OjxpbXBsIGNvcmU6OmNvbnZlcnQ6OkZyb208YWxsb2M6OnN0cmluZzo6U3RyaW5nPiBmb3IgYWxsb2M6OmJveGVkOjpCb3g8ZHluIGNvcmU6OmVycm9yOjpFcnJvcitjb3JlOjptYXJrZXI6OlN5bmMrY29yZTo6bWFya2VyOjpTZW5kPj46OmZyb206OlN0cmluZ0Vycm9yPjo6aGM3ZWZmMDIxODgxYTQ1NDDgFjA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGFkNWQ2YzZkMTkxNTcyM2bhFkJjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YWxsb2M6OnN0cmluZzo6U3RyaW5nPjo6aGExZDBjODVhOWU5YTM3MWHiFkhjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YWxsb2M6OmZmaTo6Y19zdHI6Ok51bEVycm9yPjo6aDA4NTY2Mjk1NDVmZmJmMzfjFlZjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9uOjpPcHRpb248YWxsb2M6OnZlYzo6VmVjPHU4Pj4+OjpoMTVmMjA3MmJlOTBlYjkyZOQWJl9fcnVzdGNbNTIyNGU2YjgxY2Q4MmE4Zl06Ol9fcmRsX2FsbG9j5RZCY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGFsbG9jOjpzdHJpbmc6OlN0cmluZz46Omg3NDAxYWFhODM2YmVmMGUw5hYvYWxsb2M6OnJhd192ZWM6OmhhbmRsZV9lcnJvcjo6aDI4YTE0YTAzZDE4ZTQyZTPnFlpqc19zeXM6Ok9iamVjdDxUPjo6YXNzaWduOjpfX3diZ19hc3NpZ25fNzUyYzJhZjE1MTJjYzdmZDo6aGQ0ZTM3ZThiMjIwMGQ2ZTIgZXh0ZXJucmVmIHNoaW3oFmBzZXJkZV93YXNtX2JpbmRnZW46Ok9iamVjdEV4dDo6c2V0OjpfX3diZ19zZXRfNmJlNDI3NjhjNjkwZTM4MDo6aGVjZDA4ZjQ4OTY2OTQwMTAgZXh0ZXJucmVmIHNoaW3pFllqc19zeXM6OlJlZmxlY3Q6OmdldF9zeW1ib2w6Ol9fd2JnX2dldF8xYWZmZGJkZDU1NzNiMTZhOjpoYTk2YjcyM2QxYjgyZGJiYSBleHRlcm5yZWYgc2hpbeoWWWpzX3N5czo6RnVuY3Rpb248Rj46OmNhbGwwOjpfX3diZ19jYWxsXzE0YjE2OWY3NTliMjY3NDc6OmgyNzEwNmJmYzZhZjE0NDg0IGV4dGVybnJlZiBzaGlt6xZSanNfc3lzOjpSZWZsZWN0OjpnZXQ6Ol9fd2JnX2dldF82MDExZmEzYTU4ZjYxMDc0OjpoZjQ1YzhlNWVmZWJmZTliZiBleHRlcm5yZWYgc2hpbewWWWpzX3N5czo6SnNTdHJpbmc6OmNvbmNhdDo6X193YmdfY29uY2F0XzFjZWY1MzgwMzcyZTk2OWQ6OmgzMjQwNWU0YmVlMGZjMzIzIGV4dGVybnJlZiBzaGlt7RZXanNfc3lzOjpKc1N0cmluZzo6c2xpY2U6Ol9fd2JnX3NsaWNlXzQ1OTE2ZWQyZmFlN2UwZWE6OmhjMDRiOTBiODlkZDFhZjcyIGV4dGVybnJlZiBzaGlt7hYwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmgyNmYzZGY0Mzc2MDgxZWM07xZmPCZzZXJkZV93YXNtX2JpbmRnZW46OnNlcjo6U2VyaWFsaXplciBhcyBzZXJkZV9jb3JlOjpzZXI6OlNlcmlhbGl6ZXI+OjpzZXJpYWxpemVfdTg6OmgxZjQ5NWFhMDRhMWE5NmRi8BagAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhdXRvbWVyZ2U6OmNvbHVtbmFyOjpzcGxpY2VfZXJyb3I6OlNwbGljZUVycm9yPGF1dG9tZXJnZTo6Y29sdW1uYXI6OmVuY29kaW5nOjpyYXc6OkVycm9yLGNvcmU6OmNvbnZlcnQ6OkluZmFsbGlibGU+Pjo6aGQ1MzY5ZTJiMzQwZjhiYznxFkM8YWxsb2M6OmJvcnJvdzo6Q293PEI+IGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg0ZDQ4MDgyNTExOWZhMGQ08hYjX19ydXN0Y1s1MjI0ZTZiODFjZDgyYThmXTo6X19yZ19vb23zFkNjb3JlOjphbGxvYzo6bGF5b3V0OjpMYXlvdXQ6OmlzX3NpemVfYWxpZ25fdmFsaWQ6OmhiZWE2OWYwODViYjAxYmNl9BZnanNfc3lzOjpBcnJheTxUPjo6Z2V0X3VuY2hlY2tlZDo6X193YmdfZ2V0X3VuY2hlY2tlZF8xN2Y1M2RhZDg1MmI5NTg4OjpoN2Y2MDExZTVmMDIzZTU4ZSBleHRlcm5yZWYgc2hpbfUWU2pzX3N5czo6QXJyYXk8VD46OmdldDo6X193YmdfZ2V0XzgzNjAyOTE3MjFlMjMzOWY6OmgyNTA3MTlkMjUyYmYyNjFhIGV4dGVybnJlZiBzaGlt9hZcanNfc3lzOjpCaWdJbnQ6OnRvX3N0cmluZzo6X193YmdfdG9TdHJpbmdfYzMwNjFhZjJiZjg1OWQxOTo6aDI3NDQ4YmM4MDEwNzZlZWQgZXh0ZXJucmVmIHNoaW33Fh1hdXRvbWVyZ2VfZm9yayBleHRlcm5yZWYgc2hpbfgWH2F1dG9tZXJnZV9jb21taXQgZXh0ZXJucmVmIHNoaW35FiRhdXRvbWVyZ2VfZW1wdHlDaGFuZ2UgZXh0ZXJucmVmIHNoaW36FkJjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8d2FzbV9iaW5kZ2VuOjpKc1ZhbHVlPjo6aDQwMTRlMDIzMTk3MWI0MGP7FkJjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8d2FzbV9iaW5kZ2VuOjpKc1ZhbHVlPjo6aDk0ZDljNTQxZjdiYzUxNzL8Fj9hdXRvbWVyZ2U6OmF1dG9jb21taXQ6OkF1dG9Db21taXQ6OnNldF9hY3Rvcjo6aDI5MDRhNTA4M2UyZDg4Yjb9FkBhdXRvbWVyZ2U6OmF1dG9jb21taXQ6OkF1dG9Db21taXQ6OnNhdmVfYWZ0ZXI6OmhhZmY5MDUyNGJjNGJkMGFj/hZGYXV0b21lcmdlOjphdXRvY29tbWl0OjpBdXRvQ29tbWl0OjpnZXRfY2hhbmdlc19tZXRhOjpoMTc0MzcxMDZlMDlmMGNkZv8WWmpzX3N5czo6T2JqZWN0PFQ+OjpmcmVlemU6Ol9fd2JnX2ZyZWV6ZV9jNzlmNDU3MjE5OThiYmJjOjpoOTZjNzAzOGI1ZmY2YThjMyBleHRlcm5yZWYgc2hpbYAXU2pzX3N5czo6T2JqZWN0OjprZXlzOjpfX3diZ19rZXlzXzJmZDFiZmRkYTdlMjc4Y2E6Omg2NzBiZmU5Nzk5OTY0YmU2IGV4dGVybnJlZiBzaGltgRdXanNfc3lzOjpPYmplY3Q6OnZhbHVlczo6X193YmdfdmFsdWVzXzMwMWE3NzM2M2NmNmM3NzM6Omg4NzJlOTc4OTY2MGVmMjg1IGV4dGVybnJlZiBzaGltghdYanNfc3lzOjpJdGVyYXRvcjxUPjo6bmV4dDo6X193YmdfbmV4dF8wMzQwYzRhZTMyNDM5M2MzOjpoM2I1MGY3MTYyNmJjNDVhYyBleHRlcm5yZWYgc2hpbYMXXmpzX3N5czo6SXRlcmF0b3JOZXh0PFQ+Ojp2YWx1ZTo6X193YmdfdmFsdWVfZWUzYTA2ZjQ1NzkxODRmYTo6aGJiMzA1YmFhZTQ5NjQ1ZmUgZXh0ZXJucmVmIHNoaW2EF11qc19zeXM6Om5ld19iaWdpbnRfdW5jaGVja2VkOjpfX3diZ19CaWdJbnRfNjViY2VhMjUxZTc4ODA4Mzo6aDhmZGQ1MjA1ZDkwNzYxZmMgZXh0ZXJucmVmIHNoaW2FF3lqc19zeXM6Okl0ZXJhdG9yOjpsb29rc19saWtlX2l0ZXJhdG9yOjpNYXliZUl0ZXJhdG9yOjpuZXh0OjpfX3diZ19uZXh0Xzc2NDZlZGFhMzk0NThlZjc6OmhhYTMwNWU1Mjk5NjJkYjc0IGV4dGVybnJlZiBzaGlthhdSanNfc3lzOjpBcnJheTo6ZnJvbTo6X193YmdfZnJvbV8wZGJmMjlmMDllN2ZiMjAwOjpoMTk3NzFhYTNlMGUzNTg2YSBleHRlcm5yZWYgc2hpbYcXUGpzX3N5czo6RXJyb3I6Om5ldzo6X193YmdfbmV3XzVlMzYwZDJmZjdiOWUxYzM6OmgzYmMxZWU4ZDU3Yzk1ZTdjIGV4dGVybnJlZiBzaGltiBdPanNfc3lzOjpEYXRlOjpuZXc6Ol9fd2JnX25ld183OTEzNjY2ZmU1MDcwNjg0OjpoOTQ0NzllMjE1MDVjNDcwZSBleHRlcm5yZWYgc2hpbYkXWWpzX3N5czo6T2JqZWN0OjplbnRyaWVzOjpfX3diZ19lbnRyaWVzX2UwYjczYWE4NTcxZGRiNTY6OmgyNjE0ZDY2ZTM5MTg5YjFlIGV4dGVybnJlZiBzaGltihdVanNfc3lzOjpSYW5nZUVycm9yOjpuZXc6Ol9fd2JnX25ld18xOTE1MjFmZWNiMTcxNjM5OjpoOTQ2NDg4MTA0NmY5Y2ZlNSBleHRlcm5yZWYgc2hpbYsXW2pzX3N5czo6UmVmbGVjdDo6b3duX2tleXM6Ol9fd2JnX293bktleXNfMDIzMTg4NzY4MGYwZjk0NTo6aDhlZWIxNGQ2ZGJjNmNiMGMgZXh0ZXJucmVmIHNoaW2MF1Jqc19zeXM6OlN5bWJvbDo6Zm9yXzo6X193YmdfZm9yX2IwNjE2ZDFkZTc3NzRiZTk6OmhjYzRiZDQ5YTYxYzllZTcwIGV4dGVybnJlZiBzaGltjRdcanNfc3lzOjpTeW1ib2w6OnRvX3N0cmluZzo6X193YmdfdG9TdHJpbmdfNWE4NGI4NTUyYjM0YTE5ZDo6aDA3ZmE4ZmI0YzE2MzE4Y2MgZXh0ZXJucmVmIHNoaW2OF1Vqc19zeXM6OlVpbnQ4QXJyYXk6Om5ldzo6X193YmdfbmV3XzBjNzQwM2RiNmU3ODJmMTk6Omg5ZTlmOWUyNzZiZDQzMmJlIGV4dGVybnJlZiBzaGltjxdranNfc3lzOjpVaW50OEFycmF5OjpuZXdfZnJvbV9zbGljZTo6X193YmdfbmV3X2Zyb21fc2xpY2VfYjVlYTQzZTIzZjYwMDhjMDo6aDg3MmY1OGQwZTEwMDMzMWQgZXh0ZXJucmVmIHNoaW2QF2J3YXNtX2JpbmRnZW46Ol9fd2JpbmRnZW5fZXJyb3JfbmV3OjpfX3diZ19FcnJvcl85NjBjMTU1ZDNkNDllNGMyOjpoYzZiNWYzYjM3MTA4MTM1NiBleHRlcm5yZWYgc2hpbZEXZXdhc21fYmluZGdlbjo6X193YmluZGdlbl9uZWc6Ol9fd2JnX19fd2JpbmRnZW5fbmVnXzhkMzlkMjNlZjY1YzlmZGI6OmgzZGE3ZWQ3ZDRkODExMjkyIGV4dGVybnJlZiBzaGltkhcnUmVmKFN0cmluZykgLT4gRXh0ZXJucmVmIGV4dGVybnJlZiBzaGltkxciYXV0b21lcmdlX2pvaW5CbG9jayBleHRlcm5yZWYgc2hpbZQXK2F1dG9tZXJnZV9yZWNlaXZlU3luY01lc3NhZ2UgZXh0ZXJucmVmIHNoaW2VFzA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGUzYzMwN2ExMjNkMjY0YWKWFzI8JlQgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoNGU3YmEzNTdmNGQyZGI2M5cXKV9fcnVzdGNbNTIyNGU2YjgxY2Q4MmE4Zl06Ol9fcnVzdF9yZWFsbG9jmBdwPCZzZXJkZV93YXNtX2JpbmRnZW46OnNlcjo6U2VyaWFsaXplciBhcyBzZXJkZV9jb3JlOjpzZXI6OlNlcmlhbGl6ZXI+OjpzZXJpYWxpemVfdW5pdF92YXJpYW50OjpoZmUwMjczMmM2ODIyOTA1ZJkXZzwmc2VyZGVfd2FzbV9iaW5kZ2VuOjpzZXI6OlNlcmlhbGl6ZXIgYXMgc2VyZGVfY29yZTo6c2VyOjpTZXJpYWxpemVyPjo6c2VyaWFsaXplX3N0cjo6aDNjMTY5YmMwZWMxY2ZjNjiaFzA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDExYjNkMDM0NmZlZDU1OWabFzA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDJhMWE4N2UwZGMxNDkxZDCcFzI8JlQgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoM2RmNjllOGJkODcxYzY4Np0XdmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxoZXhhbmU6OnNsYWI6OnRyZWU6OlNwYW5UcmVlPGhleGFuZTo6c2xhYjo6U2xhYixoZXhhbmU6OnNsYWI6OlNsYWJXZWlnaHQ+Pjo6aDRjNzU5ZWI4ODY0YzNiNzieF3Fjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8aGV4YW5lOjpjb2x1bW5kYXRhOjpDb2x1bW5EYXRhPGhleGFuZTo6cmxlOjpSbGVDdXJzb3I8NjRfdXNpemUsaTY0Pj4+OjpoYjQ5NGE2ZGY4ZmE2MDFjM58XTWF1dG9tZXJnZTo6YXV0b2NvbW1pdDo6QXV0b0NvbW1pdDo6Z2V0X2NoYW5nZV9tZXRhX2J5X2hhc2g6OmgzYWM3YWMwNDIwYTdmMTFjoBc+YXV0b21lcmdlOjphdXRvbWVyZ2U6OkF1dG9tZXJnZTo6aWRfdG9fZXhpZDo6aGQwZWJmNTZiYmZiY2UyMjChF0U8ZmxhdGUyOjptZW06OkRlY29tcHJlc3MgYXMgZmxhdGUyOjp6aW86Ok9wcz46OnJ1bjo6aGZlYmRkZmMyMzI1NjYwMWOiFw9fX3diaW5kZ2VuX2ZyZWWjFzI8JlQgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoNDZmN2JhNzYwMTViZWVlYqQXJV9fcnVzdGNbNTIyNGU2YjgxY2Q4MmE4Zl06OnJ1c3RfcGFuaWOlFzJjb3JlOjpmbXQ6OkZvcm1hdHRlcjo6d3JpdGVfc3RyOjpoMjk4MTZkNjEwZjQ2NzNlZqYXU2pzX3N5czo6QXJyYXk8VD46OnNldDo6X193Ymdfc2V0XzNiZjFkZTlmYWIwY2Q2NDQ6OmhjYTE3MDQ2ZDM5M2IzZWVlIGV4dGVybnJlZiBzaGltpxcfRjY0IC0+IEV4dGVybnJlZiBleHRlcm5yZWYgc2hpbagXH0k2NCAtPiBFeHRlcm5yZWYgZXh0ZXJucmVmIHNoaW2pFx9VNjQgLT4gRXh0ZXJucmVmIGV4dGVybnJlZiBzaGltqhcqc3luY3N0YXRlX3NldF9sYXN0U2VudEhlYWRzIGV4dGVybnJlZiBzaGltqxcnc3luY3N0YXRlX3NldF9zZW50SGFzaGVzIGV4dGVybnJlZiBzaGltrBcsYXV0b21lcmdlX2luaXRSb290RnJvbUh5ZHJhdGUgZXh0ZXJucmVmIHNoaW2tFyVhdXRvbWVyZ2VfZW5hYmxlRnJlZXplIGV4dGVybnJlZiBzaGltrhcgYXV0b21lcmdlX2lzb2xhdGUgZXh0ZXJucmVmIHNoaW2vFyJhdXRvbWVyZ2Vfc2F2ZVNpbmNlIGV4dGVybnJlZiBzaGltsBcoYXV0b21lcmdlX2xvYWRJbmNyZW1lbnRhbCBleHRlcm5yZWYgc2hpbbEXJWF1dG9tZXJnZV9hcHBseUNoYW5nZXMgZXh0ZXJucmVmIHNoaW2yFyNhdXRvbWVyZ2VfZ2V0Q2hhbmdlcyBleHRlcm5yZWYgc2hpbbMXJ2F1dG9tZXJnZV9nZXRDaGFuZ2VzTWV0YSBleHRlcm5yZWYgc2hpbbQXKGF1dG9tZXJnZV9nZXRDaGFuZ2VCeUhhc2ggZXh0ZXJucmVmIHNoaW21FyxhdXRvbWVyZ2VfZ2V0Q2hhbmdlTWV0YUJ5SGFzaCBleHRlcm5yZWYgc2hpbbYXL2F1dG9tZXJnZV9nZXREZWNvZGVkQ2hhbmdlQnlIYXNoIGV4dGVybnJlZiBzaGlttxcnYXV0b21lcmdlX2dldE1pc3NpbmdEZXBzIGV4dGVybnJlZiBzaGltuBcdYXV0b21lcmdlX3RvSlMgZXh0ZXJucmVmIHNoaW25FyNhdXRvbWVyZ2Vfc2F2ZUJ1bmRsZSBleHRlcm5yZWYgc2hpbboXXTx0cmFjaW5nX2NvcmU6OmZpZWxkOjpEZWJ1Z1ZhbHVlPFQ+IGFzIHRyYWNpbmdfY29yZTo6ZmllbGQ6OlZhbHVlPjo6cmVjb3JkOjpoMDY3ODIxMjZjOTI0NTFlNLsXXTx0cmFjaW5nX2NvcmU6OmZpZWxkOjpEZWJ1Z1ZhbHVlPFQ+IGFzIHRyYWNpbmdfY29yZTo6ZmllbGQ6OlZhbHVlPjo6cmVjb3JkOjpoYTkzOTkzYWQ2NGNhYjFlYrwXZzwmc2VyZGVfd2FzbV9iaW5kZ2VuOjpzZXI6OlNlcmlhbGl6ZXIgYXMgc2VyZGVfY29yZTo6c2VyOjpTZXJpYWxpemVyPjo6c2VyaWFsaXplX2Y2NDo6aGMxYTJlNzk5M2Q4Yzc2YTK9F3I8Y29yZTo6aXRlcjo6YWRhcHRlcnM6Om1hcDo6TWFwPEksRj4gYXMgY29yZTo6aXRlcjo6dHJhaXRzOjpleGFjdF9zaXplOjpFeGFjdFNpemVJdGVyYXRvcj46Omxlbjo6aGNkNTgwYTRjN2M3MWE2Nma+FzA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDI0YzBiODc3NWQ3Mjk4Nzm/FzA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDVhNmFiYjdkYjFjYjRlOWLAFzA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGNhY2NiMWYyNjgwOThiMTTBFzA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGQ1OWFlYWE1OTJiZjZkYjnCFzA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGVmMzY5ZmQ3ZTdhYmRkOWPDF108dHJhY2luZ19jb3JlOjpmaWVsZDo6RGVidWdWYWx1ZTxUPiBhcyB0cmFjaW5nX2NvcmU6OmZpZWxkOjpWYWx1ZT46OnJlY29yZDo6aDA0ZjIyMDVlM2Y3MWI2NzfEF108dHJhY2luZ19jb3JlOjpmaWVsZDo6RGVidWdWYWx1ZTxUPiBhcyB0cmFjaW5nX2NvcmU6OmZpZWxkOjpWYWx1ZT46OnJlY29yZDo6aDA4Njc2MWY3OTJiYWVmOGXFF108dHJhY2luZ19jb3JlOjpmaWVsZDo6RGVidWdWYWx1ZTxUPiBhcyB0cmFjaW5nX2NvcmU6OmZpZWxkOjpWYWx1ZT46OnJlY29yZDo6aDEwM2RjOGZiZmQ4NDgwNjnGF108dHJhY2luZ19jb3JlOjpmaWVsZDo6RGVidWdWYWx1ZTxUPiBhcyB0cmFjaW5nX2NvcmU6OmZpZWxkOjpWYWx1ZT46OnJlY29yZDo6aDI4MTczMjE1MTNmOWZhNjnHF108dHJhY2luZ19jb3JlOjpmaWVsZDo6RGVidWdWYWx1ZTxUPiBhcyB0cmFjaW5nX2NvcmU6OmZpZWxkOjpWYWx1ZT46OnJlY29yZDo6aDM1MzMwYzk0OWJmYjY5NGTIF108dHJhY2luZ19jb3JlOjpmaWVsZDo6RGVidWdWYWx1ZTxUPiBhcyB0cmFjaW5nX2NvcmU6OmZpZWxkOjpWYWx1ZT46OnJlY29yZDo6aDRjZGQzOTAyNTU1OGY0NDTJF108dHJhY2luZ19jb3JlOjpmaWVsZDo6RGVidWdWYWx1ZTxUPiBhcyB0cmFjaW5nX2NvcmU6OmZpZWxkOjpWYWx1ZT46OnJlY29yZDo6aDYyNmMyNTc5ZWI3MjU0NTfKF108dHJhY2luZ19jb3JlOjpmaWVsZDo6RGVidWdWYWx1ZTxUPiBhcyB0cmFjaW5nX2NvcmU6OmZpZWxkOjpWYWx1ZT46OnJlY29yZDo6aDYyZmY0OGIxNDJmNjZmYmbLF108dHJhY2luZ19jb3JlOjpmaWVsZDo6RGVidWdWYWx1ZTxUPiBhcyB0cmFjaW5nX2NvcmU6OmZpZWxkOjpWYWx1ZT46OnJlY29yZDo6aDY0MDZkZWFjZmFlMzBmOTbMF108dHJhY2luZ19jb3JlOjpmaWVsZDo6RGVidWdWYWx1ZTxUPiBhcyB0cmFjaW5nX2NvcmU6OmZpZWxkOjpWYWx1ZT46OnJlY29yZDo6aDdiMTZhZTQ2NTdlNTQ5N2TNF108dHJhY2luZ19jb3JlOjpmaWVsZDo6RGVidWdWYWx1ZTxUPiBhcyB0cmFjaW5nX2NvcmU6OmZpZWxkOjpWYWx1ZT46OnJlY29yZDo6aDg1MGJkNjQ3Njc5OTI2ZGTOF108dHJhY2luZ19jb3JlOjpmaWVsZDo6RGVidWdWYWx1ZTxUPiBhcyB0cmFjaW5nX2NvcmU6OmZpZWxkOjpWYWx1ZT46OnJlY29yZDo6aDg3MGFjZjA5Y2JjMmY1MmbPF108dHJhY2luZ19jb3JlOjpmaWVsZDo6RGVidWdWYWx1ZTxUPiBhcyB0cmFjaW5nX2NvcmU6OmZpZWxkOjpWYWx1ZT46OnJlY29yZDo6aDhmNTIwYjA5ZmUyZTM5MDbQF108dHJhY2luZ19jb3JlOjpmaWVsZDo6RGVidWdWYWx1ZTxUPiBhcyB0cmFjaW5nX2NvcmU6OmZpZWxkOjpWYWx1ZT46OnJlY29yZDo6aDlmYWExMzdiZmU5YWY4ODTRF108dHJhY2luZ19jb3JlOjpmaWVsZDo6RGVidWdWYWx1ZTxUPiBhcyB0cmFjaW5nX2NvcmU6OmZpZWxkOjpWYWx1ZT46OnJlY29yZDo6aGE0ZTU0NjI1ZGY4OTU4ODbSF108dHJhY2luZ19jb3JlOjpmaWVsZDo6RGVidWdWYWx1ZTxUPiBhcyB0cmFjaW5nX2NvcmU6OmZpZWxkOjpWYWx1ZT46OnJlY29yZDo6aGE4MjBjNGI1NjQxZjFiOWHTF108dHJhY2luZ19jb3JlOjpmaWVsZDo6RGVidWdWYWx1ZTxUPiBhcyB0cmFjaW5nX2NvcmU6OmZpZWxkOjpWYWx1ZT46OnJlY29yZDo6aGE5NzE4ODJhM2FjOGRmZjjUF108dHJhY2luZ19jb3JlOjpmaWVsZDo6RGVidWdWYWx1ZTxUPiBhcyB0cmFjaW5nX2NvcmU6OmZpZWxkOjpWYWx1ZT46OnJlY29yZDo6aGM2N2JlZTNjZDY5OTUxMjPVF108dHJhY2luZ19jb3JlOjpmaWVsZDo6RGVidWdWYWx1ZTxUPiBhcyB0cmFjaW5nX2NvcmU6OmZpZWxkOjpWYWx1ZT46OnJlY29yZDo6aGNmZjE0MDEzMTE1OWU1NjfWF108dHJhY2luZ19jb3JlOjpmaWVsZDo6RGVidWdWYWx1ZTxUPiBhcyB0cmFjaW5nX2NvcmU6OmZpZWxkOjpWYWx1ZT46OnJlY29yZDo6aGQzYzU1Zjc4OTJkOWFkM2bXF108dHJhY2luZ19jb3JlOjpmaWVsZDo6RGVidWdWYWx1ZTxUPiBhcyB0cmFjaW5nX2NvcmU6OmZpZWxkOjpWYWx1ZT46OnJlY29yZDo6aGUwYTIzYjJjZTZmYTNjODHYF108dHJhY2luZ19jb3JlOjpmaWVsZDo6RGVidWdWYWx1ZTxUPiBhcyB0cmFjaW5nX2NvcmU6OmZpZWxkOjpWYWx1ZT46OnJlY29yZDo6aGZhZjc0ODNkNTdhMjZiNDnZF188dHJhY2luZ19jb3JlOjpmaWVsZDo6RGlzcGxheVZhbHVlPFQ+IGFzIHRyYWNpbmdfY29yZTo6ZmllbGQ6OlZhbHVlPjo6cmVjb3JkOjpoNjIwZmU4MmY5NGM2NzczMtoXXzx0cmFjaW5nX2NvcmU6OmZpZWxkOjpEaXNwbGF5VmFsdWU8VD4gYXMgdHJhY2luZ19jb3JlOjpmaWVsZDo6VmFsdWU+OjpyZWNvcmQ6OmhmN2VhMTMyYTQyN2E5Njk42xdLYXV0b21lcmdlOjphdXRvY29tbWl0OjpBdXRvQ29tbWl0OjpnZXRfbGFzdF9sb2NhbF9jaGFuZ2U6Omg0ZjhlNTcxM2UzZGQwMmYw3Bc8YXV0b21lcmdlOjphdXRvY29tbWl0OjpBdXRvQ29tbWl0OjppbXBvcnQ6OmgwNTk2ZGM0NjE0NGY1ZDli3RdFYXV0b21lcmdlOjphdXRvY29tbWl0OjpBdXRvQ29tbWl0OjpoYXNfb3VyX2NoYW5nZXM6OmgzZGRkNjhlNWZkNDhmYjk53hdkPGF1dG9tZXJnZTo6YXV0b2NvbW1pdDo6QXV0b0NvbW1pdCBhcyBhdXRvbWVyZ2U6OnJlYWQ6OlJlYWREb2M+OjpnZXRfbWlzc2luZ19kZXBzOjpoYTIxMzQyZjI4YzZhNTVmY98XajxhdXRvbWVyZ2U6OmF1dG9jb21taXQ6OlN5bmNXcmFwcGVyIGFzIGF1dG9tZXJnZTo6c3luYzo6U3luY0RvYz46OmdlbmVyYXRlX3N5bmNfbWVzc2FnZTo6aGRiYzA0MTgwMTBkZjQxZWPgF088Y29yZTo6Zm10OjpBcmd1bWVudHMgYXMgdHJhY2luZ19jb3JlOjpmaWVsZDo6VmFsdWU+OjpyZWNvcmQ6Omg1ZDczM2IyOWFkYThmODc34Rc+PHUzMiBhcyB0cmFjaW5nX2NvcmU6OmZpZWxkOjpWYWx1ZT46OnJlY29yZDo6aDkwMDIzNGY3ZmU1YmY1MzXiFy53YXNtX2JpbmRnZW46Ol9fd2JpbmRnZW5fbHQ6Omg3ODFhMGY4MTFlNTI4Yjg24xcud2FzbV9iaW5kZ2VuOjpfX3diaW5kZ2VuX2d0OjpoMDEzMGM5MzIzZDRkOGJlNuQXOndhc21fYmluZGdlbjo6X193YmluZGdlbl9qc3ZhbF9sb29zZV9lcTo6aDYwNzQ4ZjMzMmM4N2MxNTblFzA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGI5OWJlZjY5MDc4MThhNTXmF0k8Y29yZTo6Zm10OjpGb3JtYXR0ZXIgYXMgY29yZTo6Zm10OjpXcml0ZT46OndyaXRlX2NoYXI6OmhhYTMyMDZjYzhkMDBlNmY05xcuY29yZTo6c3RyOjpzbGljZV9lcnJvcl9mYWlsOjpoN2VmMmZjNWJmODg1NDUwZegXYmNvbnNvbGVfZXJyb3JfcGFuaWNfaG9vazo6RXJyb3I6Om5ldzo6X193YmdfbmV3XzIyN2Q3YzA1NDE0ZWI4NjE6OmgxMGViOWQ5MGMwMzg5ZTVjIGV4dGVybnJlZiBzaGlt6RdQanNfc3lzOjpBcnJheTo6bmV3OjpfX3diZ19uZXdfNjgyNjc4ZTJmNDdlMzJiYzo6aDc3ZGZhMmFhNjA5NzA0ZmMgZXh0ZXJucmVmIHNoaW3qF1Fqc19zeXM6Ok9iamVjdDo6bmV3OjpfX3diZ19uZXdfYWE4ZDBmYTk3NjJjMjliZDo6aGZmNThiZGU5M2JjYjI5NWUgZXh0ZXJucmVmIHNoaW3rF1tqc19zeXM6OlN5bWJvbDo6aXRlcmF0b3I6Ol9fd2JnX2l0ZXJhdG9yXzAxM2JjMDllYzk5OGMyYTc6Omg0YmU2YTE0MmQ4NTFiMDY4IGV4dGVybnJlZiBzaGlt7BdSanNfc3lzOjpSZWZsZWN0OjpzZXQ6Ol9fd2JnX3NldF8wMjJiZWU1MmQwYjA1YjE5OjpoNGU5YjYzZTZiY2QyNTU1YSBleHRlcm5yZWYgc2hpbe0XKGF1dG9tZXJnZV9nZXRDaGFuZ2VzQWRkZWQgZXh0ZXJucmVmIHNoaW3uFyxhdXRvbWVyZ2VfZ2VuZXJhdGVTeW5jTWVzc2FnZSBleHRlcm5yZWYgc2hpbe8XFWNyZWF0ZSBleHRlcm5yZWYgc2hpbfAXG2VuY29kZUNoYW5nZSBleHRlcm5yZWYgc2hpbfEXG2RlY29kZUNoYW5nZSBleHRlcm5yZWYgc2hpbfIXHmltcG9ydFN5bmNTdGF0ZSBleHRlcm5yZWYgc2hpbfMXIGVuY29kZVN5bmNNZXNzYWdlIGV4dGVybnJlZiBzaGlt9BcgZGVjb2RlU3luY01lc3NhZ2UgZXh0ZXJucmVmIHNoaW31Fx5kZWNvZGVTeW5jU3RhdGUgZXh0ZXJucmVmIHNoaW32FxlyZWFkQnVuZGxlIGV4dGVybnJlZiBzaGlt9xcyPCZUIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aGU2OGU0ZWE2YTFkMjY0MmL4FzI8JlQgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoN2I1NzQ2MzY5ZWU0ZDFkNfkXQzxhbGxvYzo6c3RyaW5nOjpTdHJpbmcgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGU4Y2IxMjI5NWMyZWQ1Nzf6F0U8YWxsb2M6OnN0cmluZzo6U3RyaW5nIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aDk4NWUxYjhkZjE3Mjc4NDX7FydfX3J1c3RjWzUyMjRlNmI4MWNkODJhOGZdOjpfX3J1c3RfYWxsb2P8Fy5fX3J1c3RjWzUyMjRlNmI4MWNkODJhOGZdOjpfX3J1c3RfYWxsb2NfemVyb2Vk/RcyPCZUIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aDU1ZmQzYjMzOTUwMDg0Mzb+F2o8JnNlcmRlX3dhc21fYmluZGdlbjo6c2VyOjpTZXJpYWxpemVyIGFzIHNlcmRlX2NvcmU6OnNlcjo6U2VyaWFsaXplcj46OnNlcmlhbGl6ZV9zdHJ1Y3Q6OmhiNWU5MmU2YThjM2E3ZDUx/xdEdHJhY2luZ19jb3JlOjpjYWxsc2l0ZTo6Q2FsbHNpdGU6OnByaXZhdGVfdHlwZV9pZDo6aGQxOGMwZmZkZDhlMTE4ZTSAGDI8JlQgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoMzk2NzMwZmIwNTUyODU5NIEYMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoNjIyOWUxMzNkM2E5YzMwMYIYSDxhbGxvYzo6c3RyaW5nOjpTdHJpbmcgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoOTg1ZTFiOGRmMTcyNzg0NVsxXYMYMmNvcmU6OmVycm9yOjpFcnJvcjo6ZGVzY3JpcHRpb246OmgwOWY2NGQyMjM1Y2QzN2Q3hBgyY29yZTo6ZXJyb3I6OkVycm9yOjpkZXNjcmlwdGlvbjo6aDE0ZTEyZGQ2M2Q3MmYxYjCFGDJjb3JlOjplcnJvcjo6RXJyb3I6OmRlc2NyaXB0aW9uOjpoNDFjZjA2OTg2YWM1ZTUyNYYYLmNvcmU6OmVycm9yOjpFcnJvcjo6dHlwZV9pZDo6aDBhOTIzNmYxMjc2YjJlY2WHGC5jb3JlOjplcnJvcjo6RXJyb3I6OnR5cGVfaWQ6OmgxMDkxOGU3NTI4OWJiYmU3iBguY29yZTo6ZXJyb3I6OkVycm9yOjp0eXBlX2lkOjpoMjQyYmM2ZDE4ZDMyODE2ZokYLmNvcmU6OmVycm9yOjpFcnJvcjo6dHlwZV9pZDo6aDJhZjBiZTVmZGZlMTk1ZGaKGC5jb3JlOjplcnJvcjo6RXJyb3I6OnR5cGVfaWQ6Omg0YjU3MmYwYjAzMmE0NDllixguY29yZTo6ZXJyb3I6OkVycm9yOjp0eXBlX2lkOjpoNGY3M2E5N2VkOGNjYTY0ZYwYLmNvcmU6OmVycm9yOjpFcnJvcjo6dHlwZV9pZDo6aDUwNWY0YjEwYTMyMTNjMjCNGC5jb3JlOjplcnJvcjo6RXJyb3I6OnR5cGVfaWQ6Omg2YzcxMjU1NGEyZDBjZjEyjhguY29yZTo6ZXJyb3I6OkVycm9yOjp0eXBlX2lkOjpoODEyOWE5NjhiMzIwZDRiZY8YLmNvcmU6OmVycm9yOjpFcnJvcjo6dHlwZV9pZDo6aDkzYTlmNDIzYWJjMmI2MjSQGC5jb3JlOjplcnJvcjo6RXJyb3I6OnR5cGVfaWQ6OmhjMGU2MjJmNDBhZWY2ZmY2kRguY29yZTo6ZXJyb3I6OkVycm9yOjp0eXBlX2lkOjpoYzQ2Mjk4MzBhNjljNGZlZpIYLmNvcmU6OmVycm9yOjpFcnJvcjo6dHlwZV9pZDo6aGNiMjcwNTZlNjNmYjhiN2KTGEY8YWxsb2M6OnN0cmluZzo6U3RyaW5nIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhlOGNiMTIyOTVjMmVkNTc3WzFdlBhDPGFsbG9jOjpib3Jyb3c6OkNvdzxCPiBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoZmJkYmQzODQ3YzVhMTQ2YZUYOmF1dG9tZXJnZTo6YXV0b2NvbW1pdDo6QXV0b0NvbW1pdDo6ZHVtcDo6aGQ2YTIxN2JkNGQ5ZDUzNWaWGGY8YXV0b21lcmdlOjphdXRvY29tbWl0OjpBdXRvQ29tbWl0IGFzIGF1dG9tZXJnZTo6cmVhZDo6UmVhZERvYz46OmdldF9jaGFuZ2VfYnlfaGFzaDo6aGM4MjE5NWE5MDJmMGI2ZWGXGDA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDg5ZmMyMjFhMmRlZTIyZGWYGDI8JlQgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoYWVjZGFhZGJkYzNkZGJhM5kYXDxzdGQ6OnN5bmM6OnBvaXNvbjo6cndsb2NrOjpSd0xvY2s8VD4gYXMgY29yZTo6ZGVmYXVsdDo6RGVmYXVsdD46OmRlZmF1bHQ6OmhlNjBjMWY3NjQxMzEwNzM3mhguY29yZTo6ZXJyb3I6OkVycm9yOjp0eXBlX2lkOjpoYmVjMDMxYTVkMzk3NTBiZZsYSDxhbGxvYzo6c3RyaW5nOjpTdHJpbmcgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoOTg1ZTFiOGRmMTcyNzg0NVsyXZwYFF9fd2JpbmRnZW5fZXhuX3N0b3JlnRgyPCZUIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aDZkYzQ2YTQxOGRiMTg4NWaeGDI8JlQgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoODgwOTAzOWNlZDliNDRiNp8YLmNvcmU6OmVycm9yOjpFcnJvcjo6dHlwZV9pZDo6aGNiYjkxMjlmM2I4ZGUxNzSgGDA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGVkZTI5ZGE4ZDc3MmYxNjihGDI8JlQgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoNWY5OGU0MDc5Zjc3ZDZkNaIYOjwmc3RyIGFzIHNlcmRlX2NvcmU6OmRlOjpFeHBlY3RlZD46OmZtdDo6aDczZTZkZWY3Y2E5ODlkMGWjGDE8VCBhcyBjb3JlOjphbnk6OkFueT46OnR5cGVfaWQ6OmgxNTJkYTI1MWI5NGRlNGYwpBgxPFQgYXMgY29yZTo6YW55OjpBbnk+Ojp0eXBlX2lkOjpoZmNiMTkxZTZmMjA1NmU2ZKUYMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoNjg0N2JlNTI5NzMyZGI4N6YYMjwmVCBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmgzZDZjOTc2OTczM2JhOThmpxhGPGFsbG9jOjpzdHJpbmc6OlN0cmluZyBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoZThjYjEyMjk1YzJlZDU3N1syXagYSDxhbGxvYzo6c3RyaW5nOjpTdHJpbmcgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoOTg1ZTFiOGRmMTcyNzg0NVszXakYbDxzdGQ6OnBhbmlja2luZzo6YmVnaW5fcGFuaWNfaGFuZGxlcjo6U3RhdGljU3RyUGF5bG9hZCBhcyBjb3JlOjpwYW5pYzo6UGFuaWNQYXlsb2FkPjo6Z2V0OjpoM2JjNzFjYmY4YWZjYWI4MKoYZTxzdGQ6OnBhbmlja2luZzo6YmVnaW5fcGFuaWNfaGFuZGxlcjo6U3RhdGljU3RyUGF5bG9hZCBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmgzYWQ1MzViNjMwMmRiOGEwqxjfATxhbGxvYzo6Ym94ZWQ6OmNvbnZlcnQ6OjxpbXBsIGNvcmU6OmNvbnZlcnQ6OkZyb208YWxsb2M6OnN0cmluZzo6U3RyaW5nPiBmb3IgYWxsb2M6OmJveGVkOjpCb3g8ZHluIGNvcmU6OmVycm9yOjpFcnJvcitjb3JlOjptYXJrZXI6OlN5bmMrY29yZTo6bWFya2VyOjpTZW5kPj46OmZyb206OlN0cmluZ0Vycm9yIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aGZmZjlhN2U0ZmY2Y2Y1NTesGN0BPGFsbG9jOjpib3hlZDo6Y29udmVydDo6PGltcGwgY29yZTo6Y29udmVydDo6RnJvbTxhbGxvYzo6c3RyaW5nOjpTdHJpbmc+IGZvciBhbGxvYzo6Ym94ZWQ6OkJveDxkeW4gY29yZTo6ZXJyb3I6OkVycm9yK2NvcmU6Om1hcmtlcjo6U3luYytjb3JlOjptYXJrZXI6OlNlbmQ+Pjo6ZnJvbTo6U3RyaW5nRXJyb3IgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGM3MzQ5NzhjMmQwMzM4ZmStGDI8JlQgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoOThmMjFlNWVjZTA3MzI1Oa4YRDxjb3JlOjpmbXQ6OkFyZ3VtZW50cyBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmgzZTgyZmNjOTc3OTAxOWY5rxhCPGNvcmU6OmZtdDo6QXJndW1lbnRzIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg3YTI1M2JkYjMwYjMzNGMysBgbX193YmluZGdlbl9vYmplY3RfY2xvbmVfcmVmsRgkc3luY3N0YXRlX3NoYXJlZEhlYWRzIGV4dGVybnJlZiBzaGltshgmc3luY3N0YXRlX2xhc3RTZW50SGVhZHMgZXh0ZXJucmVmIHNoaW2zGCNhdXRvbWVyZ2VfcGVuZGluZ09wcyBleHRlcm5yZWYgc2hpbbQYHWF1dG9tZXJnZV9zYXZlIGV4dGVybnJlZiBzaGlttRgoYXV0b21lcmdlX3NhdmVJbmNyZW1lbnRhbCBleHRlcm5yZWYgc2hpbbYYJ2F1dG9tZXJnZV9zYXZlTm9Db21wcmVzcyBleHRlcm5yZWYgc2hpbbcYIWF1dG9tZXJnZV9nZXRIZWFkcyBleHRlcm5yZWYgc2hpbbgYK2F1dG9tZXJnZV9nZXRMYXN0TG9jYWxDaGFuZ2UgZXh0ZXJucmVmIHNoaW25GC1hdXRvbWVyZ2VfdG9wb0hpc3RvcnlUcmF2ZXJzYWwgZXh0ZXJucmVmIHNoaW26GB5hdXRvbWVyZ2Vfc3RhdHMgZXh0ZXJucmVmIHNoaW27GB5leHBvcnRTeW5jU3RhdGUgZXh0ZXJucmVmIHNoaW28GB5lbmNvZGVTeW5jU3RhdGUgZXh0ZXJucmVmIHNoaW29GDI8JlQgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoMTBhZTY2MWQ4MmI3ZGUyYb4YKV9fcnVzdGNbNTIyNGU2YjgxY2Q4MmE4Zl06Ol9fcnVzdF9kZWFsbG9jvxg1c2VyZGVfd2FzbV9iaW5kZ2VuOjpPYmplY3RFeHQ6OnNldDo6aDM0MGJhMDY2YWZiM2Y1M2bAGHc8Y29yZTo6aXRlcjo6YWRhcHRlcnM6Om1hcDo6TWFwPEksRj4gYXMgY29yZTo6aXRlcjo6dHJhaXRzOjpleGFjdF9zaXplOjpFeGFjdFNpemVJdGVyYXRvcj46OmlzX2VtcHR5OjpoMGJiMmIwZWJiNjVhNGMzZcEYMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoNGI2OWY3MWYwN2Q0YTIxNsIYMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoZTUxMTgwYWJhMmQ2YzJjMMMYOmF1dG9tZXJnZTo6YXV0b2NvbW1pdDo6QXV0b0NvbW1pdDo6c2F2ZTo6aDQ1MzRkYTZkMjU4ZDk2OGXEGEVhdXRvbWVyZ2U6OmF1dG9jb21taXQ6OkF1dG9Db21taXQ6OnNhdmVfbm9jb21wcmVzczo6aDViMmUzMTVkNTRlM2FjZTXFGEFhdXRvbWVyZ2U6Oml0ZXI6Omxpc3RfcmFuZ2U6Okxpc3RSYW5nZUl0ZW06OmlkOjpoODk0ZGY3OThhZjkyYmJmOMYYP2F1dG9tZXJnZTo6aXRlcjo6bWFwX3JhbmdlOjpNYXBSYW5nZUl0ZW06OmlkOjpoMzUyOTAyMzcyZThkNWEwNccYMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoNjI3ODc5YThjNzU1NjA1N8gYQXdlYl9zeXM6OmZlYXR1cmVzOjpnZW5fY29uc29sZTo6Y29uc29sZTo6bG9nXzI6OmgxNmZiZGM3NWQ4MDYzM2EyyRgqanNfc3lzOjpBcnJheTo6aXNfYXJyYXk6OmhmNTVjMzY4OGI4Y2Q3ODdlyhhjanNfc3lzOjpfOjo8aW1wbCB3YXNtX2JpbmRnZW46OmNhc3Q6OkpzQ2FzdCBmb3IganNfc3lzOjpBcnJheUJ1ZmZlcj46Omluc3RhbmNlb2Y6OmhmYjBkOWJjOTYyNDZjMTA1yxhcanNfc3lzOjpfOjo8aW1wbCB3YXNtX2JpbmRnZW46OmNhc3Q6OkpzQ2FzdCBmb3IganNfc3lzOjpEYXRlPjo6aW5zdGFuY2VvZjo6aDA2MDFlMjg5Y2U0YWYxMmLMGCtqc19zeXM6OkpzU3RyaW5nOjpjb25jYXQ6OmhjZjY0ODg5YzZkYWM4OGI1zRgqanNfc3lzOjpKc1N0cmluZzo6c2xpY2U6OmhhODA5NmZhOGNmYjE5ZDg2zhhianNfc3lzOjpfOjo8aW1wbCB3YXNtX2JpbmRnZW46OmNhc3Q6OkpzQ2FzdCBmb3IganNfc3lzOjpVaW50OEFycmF5Pjo6aW5zdGFuY2VvZjo6aDRlYzRhNDk3MmJjMDgyNWPPGDR3YXNtX2JpbmRnZW46Ol9fd2JpbmRnZW5faXNfYXJyYXk6Omg3OGMxNGE1OWU5YmE4OGU40Bgzd2FzbV9iaW5kZ2VuOjpfX3diaW5kZ2VuX2lzX251bGw6OmgwMDE1YmI2MDZjZGYyMTZi0Rg4d2FzbV9iaW5kZ2VuOjpfX3diaW5kZ2VuX2lzX3VuZGVmaW5lZDo6aDQyNTY1OGQ3MmVlOTQwNTPSGDV3YXNtX2JpbmRnZW46Ol9fd2JpbmRnZW5faXNfb2JqZWN0OjpoMzQxNzEzMjQ4ZGEyZWU1ONMYN3dhc21fYmluZGdlbjo6X193YmluZGdlbl9pc19mdW5jdGlvbjo6aGE5Zjg2MzAwM2I0MzEzMTDUGDV3YXNtX2JpbmRnZW46Ol9fd2JpbmRnZW5faXNfc3RyaW5nOjpoMGVmYTMxYTk4NDI3NThlM9UYNXdhc21fYmluZGdlbjo6X193YmluZGdlbl9pc19iaWdpbnQ6OmhlZDg2ZDcwNWNlNmQ0YjE31hhMPGR5biBzZXJkZV9jb3JlOjpkZTo6RXhwZWN0ZWQgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoYzI4YzY2Zjc0YjBlMjMzMNcYQWNvcmU6OnNsaWNlOjppbmRleDo6c2xpY2Vfc3RhcnRfaW5kZXhfbGVuX2ZhaWw6OmgyZDk1ZGRmMzlkYzA3MTM12Bg/Y29yZTo6c2xpY2U6OmluZGV4OjpzbGljZV9lbmRfaW5kZXhfbGVuX2ZhaWw6Omg0N2M3M2Y3ODhjMmU3MTFm2Rg9Y29yZTo6c2xpY2U6OmluZGV4OjpzbGljZV9pbmRleF9vcmRlcl9mYWlsOjpoNWY0YzUyMThkZjk4NGQzY9oYLmNvcmU6Om9wdGlvbjo6dW53cmFwX2ZhaWxlZDo6aDdmMDRjZDE1MTU5NWQwZTnbGE5jb3JlOjpzbGljZTo6PGltcGwgW1RdPjo6Y29weV9mcm9tX3NsaWNlOjpsZW5fbWlzbWF0Y2hfZmFpbDo6aGRiODU3Y2MzNzUwMmZkOWXcGDA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGIwNzFhZTZhZjcwMjZjMmTdGFVqc19zeXM6OkFycmF5PFQ+OjpwdXNoOjpfX3diZ19wdXNoXzQ3MWE1YjA2OGE1Mjk1ZjY6OmgyMzFmNThlODIxNjc3YjExIGV4dGVybnJlZiBzaGlt3hhpanNfc3lzOjpSZWZsZWN0OjpkZWxldGVfcHJvcGVydHk6Ol9fd2JnX2RlbGV0ZVByb3BlcnR5X2Q1ZjdiZDc2M2FjYmRiNDQ6OmhiYjk4MjIxOGU2OGIyYWQwIGV4dGVybnJlZiBzaGlt3xhbanNfc3lzOjpBcnJheTxUPjo6dW5zaGlmdDo6X193YmdfdW5zaGlmdF85NTFlYTcxZDlkMmRjNjYwOjpoOTljYmVlNWIyZmUyZmJhNSBleHRlcm5yZWYgc2hpbeAYbHdlYl9zeXM6OmZlYXR1cmVzOjpnZW5fY29uc29sZTo6Y29uc29sZTo6bG9nXzI6Ol9fd2JnX2xvZ19kZmExZWZlZGYyNjY1NjJlOjpoNzExODVlY2FiOGY4OTA1MiBleHRlcm5yZWYgc2hpbeEYZmpzX3N5czo6QmlnSW50Ojp0b19zdHJpbmdfdW5jaGVja2VkOjpfX3diZ190b1N0cmluZ19jOTZkYzc2ZDU1NDdhNzE1OjpoMWI2Zjg4ZDAyNzczNzhmZSBleHRlcm5yZWYgc2hpbeIYbGpzX3N5czo6VWludDhBcnJheTo6Y29weV90b19zbGljZTo6X193YmdfcHJvdG90eXBlc2V0Y2FsbF9hNmIwMmViMDBiMGY0Y2UyOjpoYWE1OTg5YmY0ZmQ5YzNmZSBleHRlcm5yZWYgc2hpbeMYY3dhc21fYmluZGdlbjo6X193YmluZGdlbl9sdDo6X193YmdfX193YmluZGdlbl9sdF83OGJhYjM4MjYyOGZiNDhmOjpoNGJmZDY0YWRlM2I5NTc5OSBleHRlcm5yZWYgc2hpbeQYY3dhc21fYmluZGdlbjo6X193YmluZGdlbl9ndDo6X193YmdfX193YmluZGdlbl9ndF9mZDA4ZDhjYmUwYTg1NTFjOjpoZWJkZDU1OWFhMmUwOTdmMSBleHRlcm5yZWYgc2hpbeUYe3dhc21fYmluZGdlbjo6X193YmluZGdlbl9qc3ZhbF9sb29zZV9lcTo6X193YmdfX193YmluZGdlbl9qc3ZhbF9sb29zZV9lcV9jYWMzNTY1ZTg5YjQxMzRjOjpoZmE0YjM4MTJjODY0OTY5OSBleHRlcm5yZWYgc2hpbeYYHndhc21SZWxlYXNlSW5mbyBleHRlcm5yZWYgc2hpbecYMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMDVkYWY0MzZmMTMwODUwN+gYMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoNzBlNmIzYWRhMTViYTc1NukYMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoNzRmMjllMTYxYjU2NTIzNOoYMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoOWIzZWQzZWMzZTMwNDgwZOsYMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoYjE4MjEyOTU2ZTMxZjMxMewYMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoYjcyNjZiNTc0YWNkMThiNu0YMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoYzdiNmRmNDE1MGVhMmMzOO4YMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoYzdkYTAzN2E0MzExNGUwM+8YMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoY2UzNWFjMjMyZjkyZWM2OfAYMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoZGEyMDFkZTljMzdlZjg1YfEYMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoZTgwZjQ3YmIwZWQyNTc2N/IYMjwmVCBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmgwMGYyZjYzNzkzMzU3Yzdm8xgyPCZUIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aDc3YTRmZjhmZjkxMzA0Yjn0GDI8JlQgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoYzk0YTMwZGNhYWQxYjc3ZfUYMjwmVCBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmgyODVhNjJkN2Q5MDk3NTZj9hgyPCZUIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aDNjZmI4ZGYyZWRhNjU1MTn3GDI8JlQgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoM2RmMzU5MTgzZGY4MTczOfgYMjwmVCBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6Omg0OGI4Nzk1Y2E2OGQzNGU4+RgyPCZUIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aDY5N2NlNDkxODIyYjg0ZWX6GDI8JlQgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoNjlmMTcxYzRhYWQ1MjRlM/sYMjwmVCBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6Omg2ZWVlMGIwNDZlZmNkMGJh/BgyPCZUIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aDg1NmM4MDE3ZTRkY2Q1Y2L9GDI8JlQgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoODg5YTc3NTYyMDdiNzljYf4YMjwmVCBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6Omg4YzFiMzVhZmEyMmFlYWU0/xgyPCZUIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aDk4ZTQyMzIzOTExMGRmM2WAGTI8JlQgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoYTExMmM2NmM5ZmNkMGFhNoEZMjwmVCBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmhhNzIxZmZkZTk0NDMxNzJhghkyPCZUIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aGIxNjI4Y2Y3ZWZlNjYyZGaDGTI8JlQgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoZjVlNmUzZWFkZjIwYmMzOIQZMjwmVCBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmhmODY1YmM0NGE2NDViNWM0hRk3PFQgYXMgc2VyZGVfY29yZTo6ZGU6OkV4cGVjdGVkPjo6Zm10OjpoMDFjMTE0ODE0MTcyYTUwOIYZNzxUIGFzIHNlcmRlX2NvcmU6OmRlOjpFeHBlY3RlZD46OmZtdDo6aDg4Nzk3MTUzNWEzMDBkMjSHGS5jb3JlOjpmbXQ6OldyaXRlOjp3cml0ZV9mbXQ6Omg4ZTQxZDVkYmE2MGYyYjkxiBk+PGNvcmU6OmZtdDo6RXJyb3IgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGI2OWRlMTYzYWE5OGZiYWGJGTVfX3J1c3RjWzUyMjRlNmI4MWNkODJhOGZdOjpfX3J1c3RfYWxsb2NfZXJyb3JfaGFuZGxlcooZLmNvcmU6OmZtdDo6V3JpdGU6OndyaXRlX2ZtdDo6aDRmM2FhNWRhMzI0N2IyYWWLGUE8Y29yZTo6Zm10OjpFcnJvciBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoYjY5ZGUxNjNhYTk4ZmJhYVsxXYwZMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMDU4ZTA3YzY3ODVlMzgwYo0ZMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMGJiZjczNDdhYzZmYzFhYo4ZMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMTQ2MTk4YzQxY2I3MGViZo8ZMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMTcwNzUyZjgzNzE1YTMzZZAZMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMWFkZWMwNDE0MmIwMGYyYpEZMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMjNkYTE5ODhiNzcyZDJiMpIZMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMjQyMTA1YjIyOTZiMTUzN5MZMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoNGNiYjc2NjkzYzIzMDk3ZpQZMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoNGViYjk2MjQ0MzE1OWIwNJUZMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoNTU1NDEyN2Q5MWRjYzM2MJYZMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoNTc5NDdjYTlkZWFlNDFhOJcZMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoODFiOGIzNGRlZmQ2MjJkMJgZMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoODk2MTcxZGIzMjFlMDRjZZkZMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoOWM1YjgzMjRlM2U5ZDU5MZoZMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoOWQ5ZWQ5NzJjMTE0NzJmYpsZMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoOWViN2MwYjc4MWZiYmQ0OJwZMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoYTg5MjQ5YjY0MGJjOTE2MZ0ZMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoYmIxNmZmZTZmNTY4N2YyNp4ZMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoZGVlOTQ5N2E3MTNiNzVlZZ8ZMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoZTdhNjA1ZjM1ZjAxZGVkMqAZMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoZjMwNTA4Y2VkOTlkOGI4MKEZMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoZmY3NjI5MjhmMDI1YWVmMqIZMjwmVCBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmgwMTZlZDNiZWVkNzNmYmU5oxkyPCZUIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aDA0YjM1YzI1ZmQzNTZkNjSkGTI8JlQgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoMGM3MGRjZWM3ZGViNThkMqUZMjwmVCBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmgwZWI3M2RiYTRlNjJhNDE5phkyPCZUIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aDE2ZjI3OTQ1MDgwNDc4OTWnGTI8JlQgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoMjgyYmI1ZTJmOTZjZmI4ZKgZMjwmVCBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmgyYWE0ZmExZTEyNTMyZmIxqRkyPCZUIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aDMwYjY3ODdkMDBjNjM1NjWqGTI8JlQgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoM2U0MzExMDQ2MDEwZTY2ZqsZMjwmVCBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6Omg0NWUzM2FjYjIxYTdiM2E5rBkyPCZUIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aDU0OTllNzUyMmE2MTRlYTetGTI8JlQgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoNWQzZWFhMGZkZDVkZjJhM64ZMjwmVCBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6Omg2NTI3ZjQ3MDI0NGU5MDM3rxkyPCZUIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aDY3YmQ5NWNmZDE1NGFmZmGwGTI8JlQgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoNjgxMTZhNzEwMDdkYTBmZbEZMjwmVCBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6Omg3ZmNhYzBlMDljYjdjYjA3shkyPCZUIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aDg3NmYxNjNmOWY3OTZmZGSzGTI8JlQgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoOGRmMjlmMGQzYmI5NzRhNrQZMjwmVCBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmhiOWFmZmVkODMxMDBiNDI0tRkyPCZUIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aGUwZjU1NzdmNjRkODg5MGK2GS5jb3JlOjpmbXQ6OldyaXRlOjp3cml0ZV9mbXQ6Omg4OGI3MzgwNjMxOGE5NDNitxlBPGNvcmU6OmZtdDo6RXJyb3IgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGI2OWRlMTYzYWE5OGZiYWFbMl24GVI8dHJhY2luZ19jb3JlOjpmaWVsZDo6RGlzcGxheVZhbHVlPFQ+IGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmgzNDBkOTE5ZjY3NDQ4MDQ3uRlSPHRyYWNpbmdfY29yZTo6ZmllbGQ6OkRpc3BsYXlWYWx1ZTxUPiBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoYjFhMjliYzBjM2Q4ZTY2NroZugE8YXV0b21lcmdlOjpsZWdhY3k6OnNlcmRlX2ltcGxzOjpvcDo6PGltcGwgc2VyZGVfY29yZTo6ZGU6OkRlc2VyaWFsaXplIGZvciBhdXRvbWVyZ2U6OmxlZ2FjeTo6T3A+OjpkZXNlcmlhbGl6ZTo6T3BlcmF0aW9uVmlzaXRvciBhcyBzZXJkZV9jb3JlOjpkZTo6VmlzaXRvcj46OmV4cGVjdGluZzo6aDVmODU4ZDVlYjY3MjVmYTK7GcgBPGF1dG9tZXJnZTo6bGVnYWN5OjpzZXJkZV9pbXBsczo6c2NhbGFyX3ZhbHVlOjo8aW1wbCBzZXJkZV9jb3JlOjpkZTo6RGVzZXJpYWxpemUgZm9yIGF1dG9tZXJnZTo6dmFsdWU6OlNjYWxhclZhbHVlPjo6ZGVzZXJpYWxpemU6OlZhbHVlVmlzaXRvciBhcyBzZXJkZV9jb3JlOjpkZTo6VmlzaXRvcj46OmV4cGVjdGluZzo6aDRmZjQzMDM1MjhiNGZlMma8GVY8YXV0b21lcmdlOjp0eXBlczo6QWN0b3JJZCBhcyBjb3JlOjpzdHI6OnRyYWl0czo6RnJvbVN0cj46OmZyb21fc3RyOjpoZTc5ZjMxN2I3YWQ0MTlhOb0ZYDxhdXRvbWVyZ2U6OnR5cGVzOjpQcm9wIGFzIGNvcmU6OmNvbnZlcnQ6OkZyb208JmFsbG9jOjpzdHJpbmc6OlN0cmluZz4+Ojpmcm9tOjpoMTEyODBhZGViMWFkMGJhYr4ZUzxhdXRvbWVyZ2U6OmNoYW5nZV9ncmFwaDo6TWlzc2luZ0RlcCBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmgxNjM0OWJhYjcwYjAzZTAwvxmpATxhdXRvbWVyZ2U6OmxlZ2FjeTo6Xzo6PGltcGwgc2VyZGVfY29yZTo6ZGU6OkRlc2VyaWFsaXplIGZvciBhdXRvbWVyZ2U6OmxlZ2FjeTo6Q2hhbmdlPjo6ZGVzZXJpYWxpemU6Ol9fVmlzaXRvciBhcyBzZXJkZV9jb3JlOjpkZTo6VmlzaXRvcj46OmV4cGVjdGluZzo6aDQzM2ZmMWE2MzcwNTMwZjjAGWA8YXV0b21lcmdlOjpvcF9zZXQyOjpjaGFuZ2U6OmNvbGxlY3Rvcjo6T3V0T2ZNZW1vcnkgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDdlOWNlNmMzNmVmYjUzNDHBGa4BPGF1dG9tZXJnZTo6dmFsdWU6Ol86OjxpbXBsIHNlcmRlX2NvcmU6OmRlOjpEZXNlcmlhbGl6ZSBmb3IgYXV0b21lcmdlOjp2YWx1ZTo6RGF0YVR5cGU+OjpkZXNlcmlhbGl6ZTo6X19GaWVsZFZpc2l0b3IgYXMgc2VyZGVfY29yZTo6ZGU6OlZpc2l0b3I+OjpleHBlY3Rpbmc6Omg0MWRlZjFlZmZhOWJiNjdkwhlIY29yZTo6b3BzOjpmdW5jdGlvbjo6Rm5PbmNlOjpjYWxsX29uY2V7e3Z0YWJsZS5zaGltfX06OmhhM2U4YWEzMzAzMzJiY2E2wxlOPGNvcmU6OmFsbG9jOjpsYXlvdXQ6OkxheW91dEVycm9yIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhhMzYzMDhkZDhhOGYzZGY1xBlkPHNtb2xfc3RyOjpzZXJkZTo6c21vbF9zdHI6OlNtb2xTdHJWaXNpdG9yIGFzIHNlcmRlX2NvcmU6OmRlOjpWaXNpdG9yPjo6ZXhwZWN0aW5nOjpoMjJhNDc0YjM1YmI3MmMyOMUZMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoOGY0OWRjM2I5NWRiOWE5YcYZMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoOWQyYTRkMTRkMzdjNjdjMMcZMjwmVCBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmgwOWMxOTY2MDI1NTJiMjQ0yBkqd2FzbV9iaW5kZ2VuOjp0aHJvd19zdHI6Omg4YTMzNmQyZWRjYmE1YTNiyRkxd2FzbV9iaW5kZ2VuOjpfX3J0Ojp0aHJvd19udWxsOjpoM2M1ZWM0MTM0NDI4NzQxYsoZMndhc21fYmluZGdlbjo6X19ydDo6Ym9ycm93X2ZhaWw6Omg0YTg3ZThhZTE3MWMyZWUwyxkuY29yZTo6Zm10OjpXcml0ZTo6d3JpdGVfZm10OjpoODlhOTc2ZTdmMDliZjkzYswZXTxzZXJkZV9jb3JlOjpkZTo6aW1wbHM6OlVuaXRWaXNpdG9yIGFzIHNlcmRlX2NvcmU6OmRlOjpWaXNpdG9yPjo6ZXhwZWN0aW5nOjpoYmYwOGMxNGU3YmY4OGY3Mc0ZXTxzZXJkZV9jb3JlOjpkZTo6aW1wbHM6OkJvb2xWaXNpdG9yIGFzIHNlcmRlX2NvcmU6OmRlOjpWaXNpdG9yPjo6ZXhwZWN0aW5nOjpoMWYyMjVmMDlhYTYzZGQ1ZM4ZXzxzZXJkZV9jb3JlOjpkZTo6aW1wbHM6OlN0cmluZ1Zpc2l0b3IgYXMgc2VyZGVfY29yZTo6ZGU6OlZpc2l0b3I+OjpleHBlY3Rpbmc6OmhhZTFmZWYxOTFkOWZjMDVkzxmbATxzZXJkZV9jb3JlOjpkZTo6aW1wbHM6OjxpbXBsIHNlcmRlX2NvcmU6OmRlOjpEZXNlcmlhbGl6ZSBmb3IgaTY0Pjo6ZGVzZXJpYWxpemU6OlByaW1pdGl2ZVZpc2l0b3IgYXMgc2VyZGVfY29yZTo6ZGU6OlZpc2l0b3I+OjpleHBlY3Rpbmc6Omg2MDU1YTk0N2ViMTE3ODdh0BmaATxzZXJkZV9jb3JlOjpkZTo6aW1wbHM6OjxpbXBsIHNlcmRlX2NvcmU6OmRlOjpEZXNlcmlhbGl6ZSBmb3IgdTg+OjpkZXNlcmlhbGl6ZTo6UHJpbWl0aXZlVmlzaXRvciBhcyBzZXJkZV9jb3JlOjpkZTo6VmlzaXRvcj46OmV4cGVjdGluZzo6aDM3YTNjZGFiNzc1MmM3NGPRGbYBPHNlcmRlX2NvcmU6OmRlOjppbXBsczo6PGltcGwgc2VyZGVfY29yZTo6ZGU6OkRlc2VyaWFsaXplIGZvciBjb3JlOjpudW06Om5vbnplcm86Ok5vblplcm88dTY0Pj46OmRlc2VyaWFsaXplOjpOb25aZXJvVmlzaXRvciBhcyBzZXJkZV9jb3JlOjpkZTo6VmlzaXRvcj46OmV4cGVjdGluZzo6aDQ4YmQyMjIxMDA2NDdiOTPSGZsBPHNlcmRlX2NvcmU6OmRlOjppbXBsczo6PGltcGwgc2VyZGVfY29yZTo6ZGU6OkRlc2VyaWFsaXplIGZvciB1NjQ+OjpkZXNlcmlhbGl6ZTo6UHJpbWl0aXZlVmlzaXRvciBhcyBzZXJkZV9jb3JlOjpkZTo6VmlzaXRvcj46OmV4cGVjdGluZzo6aGM5NTU2OTQwMGYzN2ZlMzLTGS5jb3JlOjpmbXQ6OldyaXRlOjp3cml0ZV9mbXQ6Omg5OGJlMzA2Y2ZjNzQ2ZjQ31BlvPHN0ZDo6cGFuaWNraW5nOjpiZWdpbl9wYW5pY19oYW5kbGVyOjpTdGF0aWNTdHJQYXlsb2FkIGFzIGNvcmU6OnBhbmljOjpQYW5pY1BheWxvYWQ+Ojphc19zdHI6Omg0NTgzMjhmNzRmMDZhOWVh1RkuY29yZTo6Zm10OjpXcml0ZTo6d3JpdGVfZm10OjpoNGUwMWE0YmU2ZDEzMDgwMdYZQTxjb3JlOjpmbXQ6OkVycm9yIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhiNjlkZTE2M2FhOThmYmFhWzNd1xlRPGNvcmU6OmFsbG9jOjpsYXlvdXQ6OkxheW91dEVycm9yIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhhMzYzMDhkZDhhOGYzZGY1WzFd2BkzYWxsb2M6OmFsbG9jOjpoYW5kbGVfYWxsb2NfZXJyb3I6OmhiYzcyMWU4ZGQzYjZmZmNl2RnnATxhbGxvYzo6Ym94ZWQ6OmNvbnZlcnQ6OjxpbXBsIGNvcmU6OmNvbnZlcnQ6OkZyb208YWxsb2M6OnN0cmluZzo6U3RyaW5nPiBmb3IgYWxsb2M6OmJveGVkOjpCb3g8ZHluIGNvcmU6OmVycm9yOjpFcnJvcitjb3JlOjptYXJrZXI6OlN5bmMrY29yZTo6bWFya2VyOjpTZW5kPj46OmZyb206OlN0cmluZ0Vycm9yIGFzIGNvcmU6OmVycm9yOjpFcnJvcj46OmRlc2NyaXB0aW9uOjpoYzhkOGYwY2U4MjVkMGZkZtoZRzxjb3JlOjpjZWxsOjpCb3Jyb3dFcnJvciBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmgwYjEzMWJjMWNkN2VhYjM22xlKPGNvcmU6OmNlbGw6OkJvcnJvd011dEVycm9yIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aGZiOGVjMDcyN2JhM2MwMTLcGS5jb3JlOjpmbXQ6OldyaXRlOjp3cml0ZV9mbXQ6OmhiZWY1ZTdkNDY1ZmU2Y2Nl3RkzPHN0ciBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmgzZTYxYzJjMjUzNGQ0ZGU53hkwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhhNWQ3MzY3ZTY4OTVlYzcy3xlmY29uc29sZV9lcnJvcl9wYW5pY19ob29rOjpFcnJvcjo6c3RhY2s6Ol9fd2JnX3N0YWNrXzNiMGQ5NzRiYmYzMWU0NGY6OmhjZmM0NmYzMjUxZTA3ZGMzIGV4dGVybnJlZiBzaGlt4BmJATxzZXJkZV93YXNtX2JpbmRnZW46OmVycm9yOjpFcnJvciBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OnRvX3N0cmluZzo6X193YmdfU3RyaW5nXzg1NjRlNTU5Nzk5ZWNjZGE6OmhhNGU2ZjlhN2IyNjQ4ZTE5IGV4dGVybnJlZiBzaGlt4Rlzd2FzbV9iaW5kZ2VuOjpfX3diaW5kZ2VuX3N0cmluZ19nZXQ6Ol9fd2JnX19fd2JpbmRnZW5fc3RyaW5nX2dldF83ZWQ1MzIyOTkxY2FhZWM1OjpoYjI4MjA1MzgxZGRiNGYxNyBleHRlcm5yZWYgc2hpbeIZc3dhc21fYmluZGdlbjo6X193YmluZGdlbl9udW1iZXJfZ2V0OjpfX3diZ19fX3diaW5kZ2VuX251bWJlcl9nZXRfYzdmNDJhZWQwNTI1YzQ1MTo6aDU4YTgzMzAzMTVmODA5YmUgZXh0ZXJucmVmIHNoaW3jGXd3YXNtX2JpbmRnZW46Ol9fd2JpbmRnZW5fZGVidWdfc3RyaW5nOjpfX3diZ19fX3diaW5kZ2VuX2RlYnVnX3N0cmluZ19hYjRiMzRkMjNkNjc3OGJkOjpoYTAzZGExNmIyMGNhZDc5MiBleHRlcm5yZWYgc2hpbeQZa3dhc21fYmluZGdlbjo6X193YmluZGdlbl9qc29uX3NlcmlhbGl6ZTo6X193Ymdfc3RyaW5naWZ5XzA1N2M0MDI3MjcxZjgwMDc6OmhlNDg0NzM4OWFiM2E1MTdiIGV4dGVybnJlZiBzaGlt5Rk3PFQgYXMgc2VyZGVfY29yZTo6ZGU6OkV4cGVjdGVkPjo6Zm10OjpoMDRkZDFmYjdhZWQ2ZTYwMuYZNzxUIGFzIHNlcmRlX2NvcmU6OmRlOjpFeHBlY3RlZD46OmZtdDo6aDA1NzAyMWQ4OTg2MjhkZGbnGTc8VCBhcyBzZXJkZV9jb3JlOjpkZTo6RXhwZWN0ZWQ+OjpmbXQ6OmgxY2JiNDhiZWYzM2IwMjNk6Bk3PFQgYXMgc2VyZGVfY29yZTo6ZGU6OkV4cGVjdGVkPjo6Zm10OjpoMjcwOTNmZDFhY2QyNmFkYukZNzxUIGFzIHNlcmRlX2NvcmU6OmRlOjpFeHBlY3RlZD46OmZtdDo6aDU3N2M5MmQ4MTI5N2RlMTTqGTc8VCBhcyBzZXJkZV9jb3JlOjpkZTo6RXhwZWN0ZWQ+OjpmbXQ6Omg1OTAzYTAzNzY2ZjhmM2M36xk3PFQgYXMgc2VyZGVfY29yZTo6ZGU6OkV4cGVjdGVkPjo6Zm10OjpoNmE0NzZjOTgwZjllNTVlN+wZNzxUIGFzIHNlcmRlX2NvcmU6OmRlOjpFeHBlY3RlZD46OmZtdDo6aDdiNTdlODM1NWE1NDQxNWTtGTc8VCBhcyBzZXJkZV9jb3JlOjpkZTo6RXhwZWN0ZWQ+OjpmbXQ6Omg4MGQ1MjZiMjcxYWI4N2Vk7hk3PFQgYXMgc2VyZGVfY29yZTo6ZGU6OkV4cGVjdGVkPjo6Zm10OjpoOTI5MWRkOTQ4M2NiOGZmMu8ZNzxUIGFzIHNlcmRlX2NvcmU6OmRlOjpFeHBlY3RlZD46OmZtdDo6aGQzNTYyMmVmZGNiY2VlNmLwGTc8VCBhcyBzZXJkZV9jb3JlOjpkZTo6RXhwZWN0ZWQ+OjpmbXQ6OmhmZTQ5MzQwNzI4MWFiNWJi8Rkvd2FzbV9iaW5kZ2VuOjpfX3J0Ojp3YmdfY2FzdDo6aDI2MDMyZTgwMDQyZDA0N2byGTI8Ym9vbCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoYmQ5ZTU4ODA2YTViMmIyNfMZLGNvcmU6OmVycm9yOjpFcnJvcjo6Y2F1c2U6OmgzODFjNjM5MTBjYTNmYWIw9Bk6YXV0b21lcmdlOjphdXRvY29tbWl0OjpBdXRvQ29tbWl0OjpzeW5jOjpoNmI1OWJiMjcyOTUxNTJiYfUZNGF1dG9tZXJnZTo6Y2hhbmdlOjpDaGFuZ2U6OmRlY29kZTo6aDE1MGFiNjM0NmE0YTllZDj2GYABPGF1dG9tZXJnZTo6b3Bfc2V0Mjo6b3Bfc2V0OjpJdGVyT2JqSWRzIGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6bmV4dDo6cGFuaWNfY29sZF9leHBsaWNpdDo6aDYzYjc4MGQ0YTc1NTA2Njb3GXM8YXV0b21lcmdlOjpzdG9yYWdlOjpjaGFuZ2U6OmNoYW5nZV9vcF9jb2x1bW5zOjpSZWFkQ2hhbmdlT3BFcnJvciBhcyBjb3JlOjplcnJvcjo6RXJyb3I+Ojpzb3VyY2U6OmgyZTUyNTgxMTE2MTZlMzM0+BlbPGF1dG9tZXJnZTo6c3RvcmFnZTo6Y2h1bms6OmVycm9yOjpIZWFkZXIgYXMgY29yZTo6ZXJyb3I6OkVycm9yPjo6c291cmNlOjpoNDJkNWFjNTU2MWI2NjQ1ZPkZRXRyYWNpbmdfY29yZTo6c3Vic2NyaWJlcjo6U3Vic2NyaWJlcjo6Y3VycmVudF9zcGFuOjpoZjdkNGQ3ZjZkOTRjYzZiZPoZTjxib29sIGFzIGhleGFuZTo6cGFjazo6UGFja2FibGU+OjpwYWNrOjpwYW5pY19jb2xkX2V4cGxpY2l0OjpoYzZiZGM5ODU3NGQ4Mjg0ZPsZVmhleGFuZTo6c2xhYjo6dHJlZTo6VHJlZU5vZGU8VCxXPjo6bGFzdF93ZWlnaHQ6OnBhbmljX2NvbGRfZXhwbGljaXQ6Omg0YmViZDk1ZjgyYmM3YTA1/BlBd2ViX3N5czo6ZmVhdHVyZXM6Omdlbl9jb25zb2xlOjpjb25zb2xlOjpsb2dfMTo6aGViZGViNzY2ZjNmZDFhZDH9GU08anNfc3lzOjpKc1N0cmluZyBhcyBjb3JlOjpzdHI6OnRyYWl0czo6RnJvbVN0cj46OmZyb21fc3RyOjpoMDg0ZTExNzAyNWE2NmE0ZP4ZJmpzX3N5czo6QXJyYXk6OmZyb206OmhiZDdmNjQzNTg2ZjIwNjJk/xklanNfc3lzOjpFcnJvcjo6bmV3OjpoYTk0ZGYxMWM1Y2M0ZmY5NoAaKWpzX3N5czo6RGF0ZTo6Z2V0X3RpbWU6OmhjZTJiYjg0Y2U4NzQ3ZDkwgRokanNfc3lzOjpEYXRlOjpuZXc6OmgxOTUyODgzMmJlODZlZmRjghoqanNfc3lzOjpPYmplY3Q6OmVudHJpZXM6OmgyNWY5YzRkNGEyMzU4YjJmgxoqanNfc3lzOjpSYW5nZUVycm9yOjpuZXc6OmhiYmE4OTNkNjVkY2E3MzljhBoranNfc3lzOjpKc1N0cmluZzo6bGVuZ3RoOjpoMDA5NjVjYWRkZjQxNzhhN4UaJ2pzX3N5czo6U3ltYm9sOjpmb3JfOjpoZDJmYzY2ODM5MGVjYTVkYoYaLGpzX3N5czo6U3ltYm9sOjp0b19zdHJpbmc6OmhhYjNiNDhjNTExMTcxNzAxhxoqanNfc3lzOjpVaW50OEFycmF5OjpuZXc6OmhmM2M4YmE5NjRkYjdiNTM3iBo1anNfc3lzOjpVaW50OEFycmF5OjpuZXdfZnJvbV9zbGljZTo6aDRiMzc0MmEzMTQ5NjY4ZTSJGjF3YXNtX2JpbmRnZW46Ol9fd2JpbmRnZW5fdGhyb3c6OmgyYjQ4MWQzMzZjZjdjMDY0iho1d2FzbV9iaW5kZ2VuOjpfX3diaW5kZ2VuX2Vycm9yX25ldzo6aGQ0Nzc0NDNiNGJlNjE1NDGLGi93YXNtX2JpbmRnZW46Ol9fd2JpbmRnZW5fbmVnOjpoZTkxN2QxODUxMmNlMjVlZowaLGNvcmU6OmVycm9yOjpFcnJvcjo6Y2F1c2U6OmhjYTlhN2FlNjMwYmQzODkyjRpaPHNlcmRlX2NvcmU6OmRlOjpPbmVPZiBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OnBhbmljX2NvbGRfZXhwbGljaXQ6OmhhYThiYzkwNWM3NmEyNTA5jho0Y29yZTo6cGFuaWM6OlBhbmljUGF5bG9hZDo6YXNfc3RyOjpoMDY4NDcxZjg1NjU5ZThkNI8aQzxzdGQ6OmlvOjplcnJvcjo6RXJyb3IgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDZhMzY2MzQ1NDQ4ZDI1MWSQGkJzdGQ6OnN5czo6YmFja3RyYWNlOjpfX3J1c3RfZW5kX3Nob3J0X2JhY2t0cmFjZTo6aDU5ZDZjNDAyZTQwYTE2ODWRGkFzdGQ6OnBhbmlja2luZzo6cGFuaWNfY291bnQ6OmlzX3plcm9fc2xvd19wYXRoOjpoYmI2NjE1N2FmM2QxZTgzNZIamgFqc19zeXM6Ol86OjxpbXBsIHdhc21fYmluZGdlbjo6Y2FzdDo6SnNDYXN0IGZvciBqc19zeXM6Ok9iamVjdDxUPj46Omluc3RhbmNlb2Y6Ol9fd2JnX2luc3RhbmNlb2ZfT2JqZWN0XzdjOTk0ODBhMWNkZmI5MTE6OmhjMmZkMjU3YjU0NmEzYWMyIGV4dGVybnJlZiBzaGltkxpZanNfc3lzOjpBcnJheTxUPjo6bGVuZ3RoOjpfX3diZ19sZW5ndGhfM2Q0ZWNkMDRiZDhkMjJmMTo6aDMxMGM4NmFjZjM4NjM5ZTMgZXh0ZXJucmVmIHNoaW2UGlxqc19zeXM6Okl0ZXJhdG9yTmV4dDxUPjo6ZG9uZTo6X193YmdfZG9uZV85MTU4ZjdjYzg3NTFiYTMyOjpoZTk4YTI4NjIzOGFjNjExMiBleHRlcm5yZWYgc2hpbZUabHdlYl9zeXM6OmZlYXR1cmVzOjpnZW5fY29uc29sZTo6Y29uc29sZTo6bG9nXzE6Ol9fd2JnX2xvZ183ZTFhYTkwNjRhMWRiZGJkOjpoMDQzMjhhNjg2MGM2ODc2NiBleHRlcm5yZWYgc2hpbZYaWWpzX3N5czo6SnNTdHJpbmc6Omxlbmd0aDo6X193YmdfbGVuZ3RoXzZhODQ2YjNiMjNiNzRhY2E6Omg0YTE0YjYwZjJiN2E1MmQxIGV4dGVybnJlZiBzaGltlxpZanNfc3lzOjpBcnJheTo6aXNfYXJyYXk6Ol9fd2JnX2lzQXJyYXlfYzMxMDlkMTRmZmMwNjQ2OTo6aDQwZGRmYjk4MTcwODQyNDkgZXh0ZXJucmVmIHNoaW2YGqEBanNfc3lzOjpfOjo8aW1wbCB3YXNtX2JpbmRnZW46OmNhc3Q6OkpzQ2FzdCBmb3IganNfc3lzOjpBcnJheUJ1ZmZlcj46Omluc3RhbmNlb2Y6Ol9fd2JnX2luc3RhbmNlb2ZfQXJyYXlCdWZmZXJfN2M4NDMzYzZlZDE0ZmZlMzo6aDc3ZGIyYjVjNDQ4M2JkNWUgZXh0ZXJucmVmIHNoaW2ZGpMBanNfc3lzOjpfOjo8aW1wbCB3YXNtX2JpbmRnZW46OmNhc3Q6OkpzQ2FzdCBmb3IganNfc3lzOjpEYXRlPjo6aW5zdGFuY2VvZjo6X193YmdfaW5zdGFuY2VvZl9EYXRlXzgxYjc1ZjVlZDM2YjMwZWE6Omg5YjNiZWI1NWE3MzgyNDQwIGV4dGVybnJlZiBzaGltmhpYanNfc3lzOjpEYXRlOjpnZXRfdGltZTo6X193YmdfZ2V0VGltZV9kYTdjNTVmNTJiNzFlOGM2OjpoOGI5MTEyMDM0Y2YyYjcyYSBleHRlcm5yZWYgc2hpbZsaW2pzX3N5czo6VWludDhBcnJheTo6bGVuZ3RoOjpfX3diZ19sZW5ndGhfOWYxNzc1MjI0Y2YxZDgxNTo6aGVmMGU1MjZhNDg3MmQ1ZmUgZXh0ZXJucmVmIHNoaW2cGp8BanNfc3lzOjpfOjo8aW1wbCB3YXNtX2JpbmRnZW46OmNhc3Q6OkpzQ2FzdCBmb3IganNfc3lzOjpVaW50OEFycmF5Pjo6aW5zdGFuY2VvZjo6X193YmdfaW5zdGFuY2VvZl9VaW50OEFycmF5XzE1MmJhMWYyODllZGNmM2Y6OmgzZjU5ZmYwM2YwZWMyYzJjIGV4dGVybnJlZiBzaGltnRp1d2FzbV9iaW5kZ2VuOjpfX3diaW5kZ2VuX2Jvb2xlYW5fZ2V0OjpfX3diZ19fX3diaW5kZ2VuX2Jvb2xlYW5fZ2V0XzZlYTE0OWYwYThkY2M1ZmY6OmhmNWJjYWFkOWIxNmE4NjcyIGV4dGVybnJlZiBzaGltnhp3d2FzbV9iaW5kZ2VuOjpfX3diaW5kZ2VuX2lzX3VuZGVmaW5lZDo6X193YmdfX193YmluZGdlbl9pc191bmRlZmluZWRfMjlhNDNiNGQ0MjkyMGFiZDo6aDQ2Y2VhMWQxOTY0ODI0YzAgZXh0ZXJucmVmIHNoaW2fGmN3YXNtX2JpbmRnZW46Ol9fd2JpbmRnZW5faXNfYXJyYXk6Ol9fd2JnX2lzQXJyYXlfMjc5MDUxNmFhODQ4YmYxODo6aGExZjNiMGFkNTUyNWE2NTggZXh0ZXJucmVmIHNoaW2gGm13YXNtX2JpbmRnZW46Ol9fd2JpbmRnZW5faXNfbnVsbDo6X193YmdfX193YmluZGdlbl9pc19udWxsXzUyZmY0ZWMwNDE4NjczNmY6OmgxOTdhMTBmYjI3MzM0ZGQ5IGV4dGVybnJlZiBzaGltoRpxd2FzbV9iaW5kZ2VuOjpfX3diaW5kZ2VuX2lzX29iamVjdDo6X193YmdfX193YmluZGdlbl9pc19vYmplY3RfNjMzMjJlYzBjZDZlYTRlZjo6aGYxYTg1YWQ1NGM0OWQxYzMgZXh0ZXJucmVmIHNoaW2iGnV3YXNtX2JpbmRnZW46Ol9fd2JpbmRnZW5faXNfZnVuY3Rpb246Ol9fd2JnX19fd2JpbmRnZW5faXNfZnVuY3Rpb25fM2JhYTlkYjFhOTg3ZjQ3ZDo6aDZlZDIxNDdiZGQ0N2IwYmMgZXh0ZXJucmVmIHNoaW2jGnF3YXNtX2JpbmRnZW46Ol9fd2JpbmRnZW5faXNfc3RyaW5nOjpfX3diZ19fX3diaW5kZ2VuX2lzX3N0cmluZ182ZGYzYmY3ZWYxMTY0ZWQzOjpoZTgwYjdiMDQzM2YyZWVmZCBleHRlcm5yZWYgc2hpbaQacXdhc21fYmluZGdlbjo6X193YmluZGdlbl9pc19iaWdpbnQ6Ol9fd2JnX19fd2JpbmRnZW5faXNfYmlnaW50X2VjMjVjN2Y5MWI0ZDllOTM6OmhmMDRhNTI1OTA0NTQ2YmViIGV4dGVybnJlZiBzaGltpRowY29yZTo6b3BzOjpmdW5jdGlvbjo6Rm46OmNhbGw6Omg1YjBkN2NlNDc5NzhiNTNjpho3Y29yZTo6b3BzOjpmdW5jdGlvbjo6Rm5NdXQ6OmNhbGxfbXV0OjpoNzhkZTdmMjRiNjUxNjU4ZqcaSGNvcmU6Om9wczo6ZnVuY3Rpb246OkZuT25jZTo6Y2FsbF9vbmNle3t2dGFibGUuc2hpbX19OjpoYmVkYTU3Mjg0YWRmMDRlZagac2NvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpzZXQ6OkJUcmVlU2V0PGF1dG9tZXJnZTo6dHlwZXM6OkNoYW5nZUhhc2g+Pjo6aDIwZWFiN2Q5M2E3ZDU2OTCpGmo8dHJhY2luZ19jb3JlOjpjYWxsc2l0ZTo6RGVmYXVsdENhbGxzaXRlIGFzIHRyYWNpbmdfY29yZTo6Y2FsbHNpdGU6OkNhbGxzaXRlPjo6bWV0YWRhdGE6OmhlYzEyYmE5NzVjOGE4YmE3qhptPHRyYWNpbmdfY29yZTo6Y2FsbHNpdGU6OkRlZmF1bHRDYWxsc2l0ZSBhcyB0cmFjaW5nX2NvcmU6OmNhbGxzaXRlOjpDYWxsc2l0ZT46Om1ldGFkYXRhOjpoZWMxMmJhOTc1YzhhOGJhN1sxXasaQ3RyYWNpbmdfY29yZTo6c3Vic2NyaWJlcjo6U3Vic2NyaWJlcjo6Y2xvbmVfc3Bhbjo6aDAzNTIwNmQ3NmQyZWNjZDKsGjk8Ym9vbCBhcyBoZXhhbmU6OnBhY2s6OlBhY2thYmxlPjo6cGFjazo6aDY5NTZhYzhmYWJmZGU0NTOtGjV3YXNtX2JpbmRnZW46Ol9fcnQ6Om1hbGxvY19mYWlsdXJlOjpoYzE2OGViZTcyZjkzM2NkMK4aVDxzZXJkZV9qc29uOjpyZWFkOjpTdHJSZWFkIGFzIHNlcmRlX2pzb246OnJlYWQ6OlJlYWQ+OjppZ25vcmVfc3RyOjpoMjY3NWMxYThmOTRkZTRmY68aLV9fcnVzdGNbNTIyNGU2YjgxY2Q4MmE4Zl06Ol9fcnVzdF9zdGFydF9wYW5pY7AaD3dhc21SZWxlYXNlSW5mb7EaPl9fcnVzdGNbNTIyNGU2YjgxY2Q4MmE4Zl06Ol9fcnVzdF9ub19hbGxvY19zaGltX2lzX3Vuc3RhYmxlX3YyshpHdHJhY2luZ19jb3JlOjpzdWJzY3JpYmVyOjpTdWJzY3JpYmVyOjptYXhfbGV2ZWxfaGludDo6aDg4NGI1MWY4NjA4MDM2YzizGkZ0cmFjaW5nX2NvcmU6OnN1YnNjcmliZXI6OlN1YnNjcmliZXI6OmV2ZW50X2VuYWJsZWQ6OmgwZWQ4NmVhMjExNWEyY2M4tBpCdHJhY2luZ19jb3JlOjpzdWJzY3JpYmVyOjpTdWJzY3JpYmVyOjp0cnlfY2xvc2U6Omg0NzQ2ZGY3YmQ2ODgxMzgytRp2PHRyYWNpbmdfY29yZTo6c3Vic2NyaWJlcjo6Tm9TdWJzY3JpYmVyIGFzIHRyYWNpbmdfY29yZTo6c3Vic2NyaWJlcjo6U3Vic2NyaWJlcj46OnJlZ2lzdGVyX2NhbGxzaXRlOjpoYzlmM2E2OWYzOWE1ZGE0ZLYabTx0cmFjaW5nX2NvcmU6OnN1YnNjcmliZXI6Ok5vU3Vic2NyaWJlciBhcyB0cmFjaW5nX2NvcmU6OnN1YnNjcmliZXI6OlN1YnNjcmliZXI+OjpuZXdfc3Bhbjo6aDBjYjRmYzgzZmZlNDI0OWO3Gmw8dHJhY2luZ19jb3JlOjpzdWJzY3JpYmVyOjpOb1N1YnNjcmliZXIgYXMgdHJhY2luZ19jb3JlOjpzdWJzY3JpYmVyOjpTdWJzY3JpYmVyPjo6ZW5hYmxlZDo6aGE2ZDIwNDhmYThmMmIxOTm4GiVqc19zeXM6OkFycmF5OjpuZXc6OmhmZmEyNDE5MWMzNTYzNDIyuRomanNfc3lzOjpPYmplY3Q6Om5ldzo6aDgxYWZjNTY5M2EyOTViODm6GidfX3J1c3RjWzUyMjRlNmI4MWNkODJhOGZdOjpfX3J1c3RfYWJvcnS7Gi5jb3JlOjplcnJvcjo6RXJyb3I6OnByb3ZpZGU6Omg1MGZlZmFhZjVhNjJiNmEwvBouY29yZTo6ZXJyb3I6OkVycm9yOjpwcm92aWRlOjpoNjUyODc0NTNjYTgyZWUyOL0aLmNvcmU6OmVycm9yOjpFcnJvcjo6cHJvdmlkZTo6aDdiMzhhNDZjNjNjYmQ4NzO+Gk10cmFjaW5nX2NvcmU6OnN1YnNjcmliZXI6OlN1YnNjcmliZXI6Om9uX3JlZ2lzdGVyX2Rpc3BhdGNoOjpoMTJhYzYwZDQ3ZjEyN2M5Y78aQnRyYWNpbmdfY29yZTo6c3Vic2NyaWJlcjo6U3Vic2NyaWJlcjo6ZHJvcF9zcGFuOjpoNDkyYmVlYTZlOTA5MzE3MsAaazx0cmFjaW5nX2NvcmU6OnN1YnNjcmliZXI6Ok5vU3Vic2NyaWJlciBhcyB0cmFjaW5nX2NvcmU6OnN1YnNjcmliZXI6OlN1YnNjcmliZXI+OjpyZWNvcmQ6OmhiNTU0NzljODdkNDMwOWM1wRp4PHRyYWNpbmdfY29yZTo6c3Vic2NyaWJlcjo6Tm9TdWJzY3JpYmVyIGFzIHRyYWNpbmdfY29yZTo6c3Vic2NyaWJlcjo6U3Vic2NyaWJlcj46OnJlY29yZF9mb2xsb3dzX2Zyb206OmhmZTZjM2Q3ZWYyNWRkY2IzwhppPHRyYWNpbmdfY29yZTo6c3Vic2NyaWJlcjo6Tm9TdWJzY3JpYmVyIGFzIHRyYWNpbmdfY29yZTo6c3Vic2NyaWJlcjo6U3Vic2NyaWJlcj46OmV4aXQ6OmhjYTIyODk5MjdmMDVmOThiwxouY29yZTo6ZXJyb3I6OkVycm9yOjpwcm92aWRlOjpoOTA4MjkwYzI4NTViYjk5MMQaLmNvcmU6OmVycm9yOjpFcnJvcjo6cHJvdmlkZTo6aGFkM2UwZTI1MTg5NDBjNTIFGAEBFV9fd2JpbmRnZW5fZXh0ZXJucmVmcwcSAQAPX19zdGFja19wb2ludGVyCRECAAcucm9kYXRhAQUuZGF0YQB8CXByb2R1Y2VycwIIbGFuZ3VhZ2UBBFJ1c3QADHByb2Nlc3NlZC1ieQMFcnVzdGMdMS44OS4wICgyOTQ4Mzg4M2UgMjAyNS0wOC0wNCkGd2FscnVzBjAuMjYuMQx3YXNtLWJpbmRnZW4TMC4yLjExOCAoNzUzYmI3ZmY0KQCUAQ90YXJnZXRfZmVhdHVyZXMIKwtidWxrLW1lbW9yeSsPYnVsay1tZW1vcnktb3B0KxZjYWxsLWluZGlyZWN0LW92ZXJsb25nKwptdWx0aXZhbHVlKw9tdXRhYmxlLWdsb2JhbHMrE25vbnRyYXBwaW5nLWZwdG9pbnQrD3JlZmVyZW5jZS10eXBlcysIc2lnbi1leHQ=\";export{A as automergeWasmBase64};\n//# sourceMappingURL=automerge.wasm.base64.mjs.map","/* esm.sh - @automerge/automerge@3.2.6 */\nvar f=Object.defineProperty;var s=Object.getOwnPropertyDescriptor;var n=Object.getOwnPropertyNames;var c=Object.prototype.hasOwnProperty;var e=(m,r,i,p)=>{if(r&&typeof r==\"object\"||typeof r==\"function\")for(let a of n(r))!c.call(m,a)&&a!==i&&f(m,a,{get:()=>r[a],enumerable:!(p=s(r,a))||p.enumerable});return m},t=(m,r,i)=>(e(m,r,\"default\"),i&&e(i,r,\"default\"));import{UseApi as y}from\"./dist/mjs/low_level.mjs\";var o={};t(o,g);import{automergeWasmBase64 as A}from\"./automerge.wasm.base64.mjs\";import{initSync as b}from\"./dist/mjs/wasm_bindgen_output/web/automerge_wasm.mjs\";import*as g from\"./dist/mjs/wasm_bindgen_output/web/automerge_wasm.mjs\";var x=Uint8Array.from(atob(A),m=>m.charCodeAt(0));b(x);export*from\"./dist/mjs/index.mjs\";y(o);\n//# sourceMappingURL=automerge.mjs.map"],"mappings":"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","names":["o","t","r","_","m","e","a","c","n","b","s","__name","e","n","i","r","o","c","a","t","r","t","__name","o","b","automerge_wasm_exports","__export","m","d","W","z","P","U","Q","L","N","V","$","J","G","q","K","X","Y","m","o","__name","t","e","R","_","r","s","f","p","b","n","c","y","d","w","O","a","u","k","W","z","P","U","L","N","V","$","J","q","K","X","Y","F","g","v","i","l","C","M","A","h","T","S","x","j","H","I","D","B","E","G","Q","r","n","s","e","t","c","__name","i","Q","automerge_wasm_exports","l","u","g","pe","de","__name","e","t","n","ge","s","I","P","Jt","k","ce","X","te","Ht","tt","nt","Ze","ue","Et","bt","Ge","gt","pt","At","rt","xt","Rt","mt","z","Qe","et","yt","ct","ie","Ye","ft","Ke","qe","ut","zt","Ft","le","ht","lt","Ct","se","It","jt","U","St","l","i","Je","_t","x","H","R","Wt","g","Mt","ot","ae","Y","Ut","Lt","it","Xt","wt","he","st","Gt","at","kt","$t","M","Dt","vt","Pt","Ot","q","Bt","Nt","Tt","Xe","Ve","u","me","j","L","A","a","m","p","r","o","$","G","J","c","Re","_","Ee","Ce","Q","d","y","b","ee","E","S","D","h","Fe","$e","He","De","Me","Be","Ne","ze","ne","B","Ue","F","fe","O","C","dt","N","re","A","f","s","n","c","e","__name","m","r","i","p","a","t","o","automerge_wasm_exports","x","A","G"],"sourceRoot":"","file":"/chunk-5EUZQD32.js.map"} \ No newline at end of file diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-5VXESY2O.js b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-5VXESY2O.js similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-5VXESY2O.js rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-5VXESY2O.js diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-5VXESY2O.js.br b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-5VXESY2O.js.br similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-5VXESY2O.js.br rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-5VXESY2O.js.br diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-5VXESY2O.js.map b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-5VXESY2O.js.map similarity index 99% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-5VXESY2O.js.map rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-5VXESY2O.js.map index d33b71f0..01b87aa0 100644 --- a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-5VXESY2O.js.map +++ b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-5VXESY2O.js.map @@ -1 +1 @@ -{"version":3,"sources":["https://jsr.io/@bradenmacdonald/s3-lite-client/0.9.6/transform-chunk-sizes.ts","https://jsr.io/@bradenmacdonald/s3-lite-client/0.9.6/xml-parser.ts","https://jsr.io/@bradenmacdonald/s3-lite-client/0.9.6/errors.ts","https://jsr.io/@bradenmacdonald/s3-lite-client/0.9.6/helpers.ts","https://jsr.io/@bradenmacdonald/s3-lite-client/0.9.6/object-uploader.ts","https://jsr.io/@bradenmacdonald/s3-lite-client/0.9.6/signing.ts","https://jsr.io/@bradenmacdonald/s3-lite-client/0.9.6/client.ts","/components/input/s3/common.js"],"sourcesContent":["/**\n * This stream transform will buffer the data it receives until it has enough to form\n * a chunk of the specified size, then pass on the data in chunks of the specified size.\n */\nexport class TransformChunkSizes extends TransformStream {\n constructor(private readonly outChunkSize: number) {\n // We'll keep one internal buffer of size outChunkSize,\n // plus a current \"offset\" telling us how many bytes are in it.\n let buffer = new Uint8Array(outChunkSize);\n let offset = 0;\n\n super({\n transform(chunk, controller) {\n let pos = 0;\n while (pos < chunk.length) {\n // How many bytes remain to fill the buffer?\n const needed = outChunkSize - offset;\n // How many bytes we can copy from the incoming chunk this iteration\n const toCopy = Math.min(needed, chunk.length - pos);\n\n // Copy from chunk into our internal buffer\n buffer.set(chunk.subarray(pos, pos + toCopy), offset);\n pos += toCopy;\n offset += toCopy;\n\n // If we've filled a chunk, push it to the output, then reset\n if (offset === outChunkSize) {\n controller.enqueue(buffer);\n // We must not reuse that buffer, because it's still being read by the controller.\n buffer = new Uint8Array(outChunkSize);\n offset = 0;\n }\n }\n },\n flush(controller) {\n // If anything remains in the buffer at the end, enqueue it.\n if (offset > 0) {\n controller.enqueue(buffer.subarray(0, offset));\n }\n },\n });\n }\n}\n","/**\n * Basic XML parser for Deno\n * https://github.com/nekobato/deno-xml-parser\n * By Hayato Koriyama, MIT licensed\n * Based on https://github.com/segmentio/xml-parser (MIT licensed)\n * \"Simple non-compliant XML parser because we just need to parse some basic responses\"\n */\n\ninterface Document {\n declaration: {\n attributes: Record;\n };\n root: Xml | undefined;\n}\n\ninterface Xml {\n name: string;\n attributes: Record;\n content?: string;\n children: Xml[];\n}\n\n/**\n * Parse the given string of `xml`.\n */\nexport function parse(xml: string): Document {\n xml = xml.trim();\n\n // strip comments\n xml = xml.replace(//g, \"\");\n\n return document();\n\n /**\n * XML document.\n */\n function document(): Document {\n return {\n declaration: declaration(),\n root: tag(),\n };\n }\n\n /**\n * Declaration.\n */\n function declaration() {\n const m = match(/^<\\?xml\\s*/);\n if (!m) return;\n\n // tag.\n // deno-lint-ignore no-explicit-any\n const node: any = {\n attributes: {},\n };\n\n // attributes\n while (!(eos() || is(\"?>\"))) {\n const attr = attribute();\n if (!attr) return node;\n node.attributes[attr.name] = attr.value;\n }\n\n match(/\\?>\\s*/);\n\n return node;\n }\n\n /**\n * Tag.\n */\n function tag() {\n const m = match(/^<([\\w-:.]+)\\s*/);\n if (!m) return;\n\n // name\n const node: Xml = {\n name: m[1],\n attributes: {},\n children: [],\n };\n\n // attributes\n while (!(eos() || is(\">\") || is(\"?>\") || is(\"/>\"))) {\n const attr = attribute();\n if (!attr) return node;\n node.attributes[attr.name] = attr.value;\n }\n\n // self closing tag\n if (match(/^\\s*\\/>\\s*/)) {\n return node;\n }\n\n match(/\\??>\\s*/);\n\n // content\n node.content = content();\n\n // children\n let child;\n while ((child = tag())) {\n node.children.push(child);\n }\n\n // closing\n match(/^<\\/[\\w-:.]+>\\s*/);\n\n return node;\n }\n\n /**\n * Text content.\n */\n function content() {\n const m = match(/^([^<]*)/);\n if (m) return entities(m[1]);\n return \"\";\n }\n\n /**\n * Attribute.\n */\n function attribute() {\n const m = match(/([\\w:-]+)\\s*=\\s*(\"[^\"]*\"|'[^']*'|\\w+)\\s*/);\n if (!m) return;\n return { name: m[1], value: entities(strip(m[2])) };\n }\n\n /**\n * Strip quotes from `val`.\n */\n function strip(val: string) {\n return val.replace(/^['\"]|['\"]$/g, \"\");\n }\n\n /** Basic handling of entities: & < > */\n function entities(val: string) {\n return val.replaceAll(\"<\", \"<\").replaceAll(\">\", \">\").replaceAll(\"&\", \"&\");\n }\n\n /**\n * Match `re` and advance the string.\n */\n function match(re: RegExp) {\n const m = xml.match(re);\n if (!m) return;\n xml = xml.slice(m[0].length);\n return m;\n }\n\n /**\n * End-of-source.\n */\n function eos() {\n return xml.length === 0;\n }\n\n /**\n * Check for `prefix`.\n */\n function is(prefix: string) {\n return xml.startsWith(prefix);\n }\n}\n","/**\n * @module\n * All the errors which can be thrown by this S3 client.\n * Every error is a subclass of S3Error.\n */\n\nimport { parse as parseXML } from \"./xml-parser.ts\";\n\n/**\n * Base class for all errors raised by this S3 client.\n */\nexport class S3Error extends Error {}\n\n// Preserve API compatibility with the old name:\n/** @deprecated Use `S3Error` instead. */\nexport const DenoS3LiteClientError = S3Error;\n\n/**\n * An argument or configuration parameter was invalid.\n */\nexport class InvalidArgumentError extends S3Error {}\n\n/**\n * InvalidEndpointError is generated when an invalid end point value is\n * provided which does not follow domain standards.\n */\nexport class InvalidEndpointError extends S3Error {}\n\n/**\n * InvalidBucketNameError is generated when an invalid bucket name is\n * provided which does not follow AWS S3 specifications.\n * http://docs.aws.amazon.com/AmazonS3/latest/dev/BucketRestrictions.html\n */\nexport class InvalidBucketNameError extends S3Error {\n constructor(public readonly bucketName: string) {\n super(`Invalid bucket name: ${bucketName}`);\n }\n}\n\n/**\n * InvalidObjectNameError is generated when an invalid object name is\n * provided which does not follow AWS S3 specifications.\n * http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html\n */\nexport class InvalidObjectNameError extends S3Error {\n constructor(public readonly objectName: string) {\n super(`Invalid object name: ${objectName}`);\n }\n}\n\n/** The request cannot be made without an access key to authenticate it */\nexport class AccessKeyRequiredError extends S3Error {\n constructor() {\n super(\"accessKey is required\");\n }\n}\n\n/** The request cannot be made without a secret key to authenticate it */\nexport class SecretKeyRequiredError extends S3Error {\n constructor() {\n super(\"secretKey is required\");\n }\n}\n\n/** The expiration time for the request is invalid */\nexport class InvalidExpiryError extends S3Error {\n constructor() {\n super(\"expirySeconds cannot be less than 1 second or more than 7 days\");\n }\n}\n\n/** Any error thrown by the server */\nexport class ServerError extends S3Error {\n readonly key: string | undefined;\n readonly bucketName: string | undefined;\n readonly resource: string | undefined;\n readonly region: string | undefined;\n\n constructor(\n public readonly statusCode: number,\n public readonly code: string,\n message: string,\n otherData: { key?: string; bucketName?: string; resource?: string; region?: string } = {},\n ) {\n super(message);\n this.key = otherData.key;\n this.bucketName = otherData.bucketName;\n this.resource = otherData.resource;\n this.region = otherData.region;\n }\n}\n\n/** Helper function to parse an error returned by the S3 server. */\nexport async function parseServerError(response: Response): Promise {\n try {\n const xmlParsed = parseXML(await response.text());\n const errorRoot = xmlParsed.root;\n if (errorRoot?.name !== \"Error\") {\n throw new Error(\"Invalid root, expected \");\n }\n const code = errorRoot.children.find((c) => c.name === \"Code\")?.content ?? \"UnknownErrorCode\";\n const message = errorRoot.children.find((c) => c.name === \"Message\")?.content ??\n \"The error message could not be determined.\";\n const key = errorRoot.children.find((c) => c.name === \"Key\")?.content;\n const bucketName = errorRoot.children.find((c) => c.name === \"BucketName\")?.content;\n const resource = errorRoot.children.find((c) => c.name === \"Resource\")?.content; // e.g. the object key\n const region = errorRoot.children.find((c) => c.name === \"Region\")?.content;\n return new ServerError(response.status, code, message, { key, bucketName, resource, region });\n } catch {\n return new ServerError(\n response.status,\n \"UnrecognizedError\",\n `Error: Unexpected response code ${response.status} ${response.statusText}. Unable to parse response as XML.`,\n );\n }\n}\n","/**\n * For TypeScript 5.7+ we have to write `Uint8Array` instead of\n * `Uint8Array` or we'll get type errors in various places where arrays based\n * on SharedArrayBuffer are not allowed. This type alias will work both pre-\n * and post- TypeScript 5.7. Yes this is annoying.\n */\nexport type Uint8Array_ = ReturnType;\n\nexport function isValidPort(port: number) {\n // verify if port is a number.\n if (typeof port !== \"number\" || isNaN(port)) {\n return false;\n }\n // Verify if port is in range.\n return port >= 1 && port <= 65535;\n}\n\n/**\n * Validate a bucket name.\n *\n * This is pretty minimal, general validation. We let the remote\n * S3 server do detailed validation.\n *\n * https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html\n */\nexport function isValidBucketName(bucket: string): boolean {\n if (typeof bucket !== \"string\") {\n return false;\n }\n // Generally the bucket name length limit is 63, but\n // \"Before March 1, 2018, buckets created in the US East (N. Virginia)\n // Region could have names that were up to 255 characters long\"\n if (bucket.length > 255) {\n return false;\n }\n // \"Bucket names must not contain two adjacent periods.\"\n if (bucket.includes(\"..\")) {\n return false;\n }\n // \"Bucket names must begin and end with a letter or number.\"\n // \"Bucket names can consist only of lowercase letters, numbers,\n // periods (.), and hyphens (-).\"\n // -> Most S3 servers require lowercase bucket names but some allow\n // uppercase (Backblaze, AWS us-east buckets created before 2018)\n return Boolean(bucket.match(/^[a-zA-Z0-9][a-zA-Z0-9.-]+[a-zA-Z0-9]$/));\n}\n\n/**\n * check if objectName is a valid object name\n * http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html\n */\nexport function isValidObjectName(objectName: string) {\n if (!isValidPrefix(objectName)) return false;\n if (objectName.length === 0) return false;\n return true;\n}\n\n// check if prefix is valid\nexport function isValidPrefix(prefix: string) {\n if (typeof prefix !== \"string\") return false;\n if (prefix.length > 1024) return false;\n return true;\n}\n\n/**\n * Convert some binary data to a hex string\n */\nexport function bin2hex(binary: Uint8Array) {\n return Array.from(binary).map((b) => b.toString(16).padStart(2, \"0\")).join(\n \"\",\n );\n}\n\nexport function sanitizeETag(etag = \"\") {\n const replaceChars: Record = {\n '\"': \"\",\n \""\": \"\",\n \""\": \"\",\n \""\": \"\",\n \""\": \"\",\n };\n return etag.replace(\n /^(\"|"|")|(\"|"|")$/g,\n (m) => replaceChars[m],\n );\n}\n\nexport function getVersionId(headers: Headers): string | null {\n return headers.get(\"x-amz-version-id\") ?? null;\n}\n\n/** Create a Date string with format: 'YYYYMMDDTHHmmss' + Z */\nexport function makeDateLong(date: Date) {\n // Gives format like: '2017-08-07T16:28:59.889Z'\n const dateStr = date.toISOString();\n\n return dateStr.slice(0, 4) +\n dateStr.slice(5, 7) +\n dateStr.slice(8, 13) +\n dateStr.slice(14, 16) +\n dateStr.slice(17, 19) + \"Z\";\n}\n\n/** Create a Date string with format: 'YYYYMMDD' */\nexport function makeDateShort(date: Date) {\n return makeDateLong(date).slice(0, 8);\n}\n\nexport function getScope(region: string, date: Date) {\n return `${makeDateShort(date)}/${region}/s3/aws4_request`;\n}\n\nexport async function sha256digestHex(data: Uint8Array_ | string) {\n if (!(data instanceof Uint8Array)) {\n data = new TextEncoder().encode(data);\n }\n return bin2hex(new Uint8Array(await crypto.subtle.digest(\"SHA-256\", data)));\n}\n","import type { Client, ObjectMetadata, UploadedObjectInfo } from \"./client.ts\";\nimport { getVersionId, sanitizeETag, type Uint8Array_ } from \"./helpers.ts\";\nimport { parse as parseXML } from \"./xml-parser.ts\";\n\n// Metadata headers that must be included in each part of a multi-part upload\nconst multipartTagAlongMetadataKeys = [\n \"x-amz-server-side-encryption-customer-algorithm\",\n \"x-amz-server-side-encryption-customer-key\",\n \"x-amz-server-side-encryption-customer-key-MD5\",\n];\n\n/**\n * Stream a file to S3\n *\n * We assume that TransformChunkSizes has been used first, so that this stream\n * will always receive chunks of exactly size \"partSize\", except for the final\n * chunk.\n *\n * Note that the total size of the upload doesn't have to be known in advance,\n * as long as TransformChunkSizes was used first. Then this ObjectUploader\n * will decide based on the size of the first chunk whether it is doing a\n * single-request upload or a multi-part upload.\n */\nexport class ObjectUploader extends WritableStream {\n public readonly getResult: () => UploadedObjectInfo;\n\n constructor({ client, bucketName, objectName, partSize, metadata }: {\n client: Client;\n bucketName: string;\n objectName: string;\n partSize: number;\n metadata: Record;\n }) {\n let result: UploadedObjectInfo;\n let nextPartNumber = 1;\n let uploadId: string;\n const etags: { part: number; etag: string }[] = [];\n /** If an error occurs during multi-part uploads, we temporarily store it here. */\n let multiUploadError: Error | undefined;\n /** If doing multi-part upload, this holds a promise for each part so we can upload them in parallel */\n const partsPromises: Promise[] = [];\n\n super({\n start() {}, // required\n async write(chunk, _controller) {\n const method = \"PUT\";\n const partNumber = nextPartNumber++;\n\n try {\n // We are going to upload this file in a single part, because it's small enough\n if (partNumber == 1 && chunk.length < partSize) {\n // PUT the chunk in a single request — use an empty query.\n const response = await client.makeRequest({\n method,\n headers: new Headers({\n // Set user metadata as this is not a multipart upload\n ...metadata,\n \"Content-Length\": String(chunk.length),\n }),\n bucketName,\n objectName,\n payload: chunk,\n });\n result = {\n etag: sanitizeETag(response.headers.get(\"etag\") ?? undefined),\n versionId: getVersionId(response.headers),\n };\n return;\n }\n\n /// If we get here, this is a streaming upload in multiple parts.\n if (partNumber === 1) {\n uploadId = (await initiateNewMultipartUpload({\n client,\n bucketName,\n objectName,\n metadata,\n })).uploadId;\n }\n // Upload the next part\n const partHeaders: Record = {\n \"Content-Length\": String(chunk.length),\n };\n for (const key of multipartTagAlongMetadataKeys) {\n const value = metadata[key];\n if (value) {\n partHeaders[key] = value;\n }\n }\n const partPromise = client.makeRequest({\n method,\n query: { partNumber: partNumber.toString(), uploadId },\n headers: new Headers(partHeaders),\n bucketName: bucketName,\n objectName: objectName,\n payload: chunk,\n }).then((response) => {\n // In order to aggregate the parts together, we need to collect the etags.\n let etag = response.headers.get(\"etag\") ?? \"\";\n if (etag) {\n etag = etag.replace(/^\"/, \"\").replace(/\"$/, \"\");\n }\n etags.push({ part: partNumber, etag });\n return response;\n });\n // We can't `await partPromise` now, because that will cause the uploads to\n // happen in series instead of parallel. But we don't want to let the promise\n // throw an exception when we haven't awaited it, because that can cause the\n // process to crash. So use .catch() to watch for errors and store them in\n // `multiUploadError` if they occur.\n partsPromises.push(partPromise.catch((err) => {\n // An error occurred when uploading this one part:\n if (!multiUploadError) {\n multiUploadError = err;\n }\n }));\n } catch (err) {\n // Throwing an error will make future writes to this sink fail.\n throw err;\n }\n },\n async close() {\n if (result) {\n // This was already completed, in a single upload. Nothing more to do.\n } else if (uploadId) {\n // Wait for all parts to finish uploading (or fail)\n await Promise.all(partsPromises);\n if (multiUploadError) {\n // One or more parts failed to upload:\n throw multiUploadError;\n }\n // Sort the etags (required)\n etags.sort((a, b) => a.part > b.part ? 1 : -1);\n // Complete the multi-part upload\n result = await completeMultipartUpload({ client, bucketName, objectName, uploadId, etags });\n } else {\n throw new Error(\"Stream was closed without uploading any data.\");\n }\n },\n });\n this.getResult = () => {\n if (result === undefined) {\n throw new Error(\"Result is not ready. await the stream first.\");\n }\n return result;\n };\n }\n}\n\n/** Initiate a new multipart upload request. */\nasync function initiateNewMultipartUpload(\n options: {\n client: Client;\n bucketName: string;\n objectName: string;\n metadata?: ObjectMetadata;\n },\n): Promise<{ uploadId: string }> {\n const method = \"POST\";\n const headers = new Headers(options.metadata);\n const query = \"uploads\";\n const response = await options.client.makeRequest({\n method,\n bucketName: options.bucketName,\n objectName: options.objectName,\n query,\n headers,\n returnBody: true,\n });\n // Response is like:\n // \n // dev-bucket\n // test-32m.dat\n // 422f976b-35e0-4a55-aca7-bf2d46277f93\n // \n const responseText = await response.text();\n const root = parseXML(responseText).root;\n if (!root || root.name !== \"InitiateMultipartUploadResult\") {\n throw new Error(`Unexpected response: ${responseText}`);\n }\n const uploadId = root.children.find((c) => c.name === \"UploadId\")?.content;\n if (!uploadId) {\n throw new Error(`Unable to get UploadId from response: ${responseText}`);\n }\n return { uploadId };\n}\n\nasync function completeMultipartUpload(\n { client, bucketName, objectName, uploadId, etags }: {\n client: Client;\n bucketName: string;\n objectName: string;\n uploadId: string;\n etags: { part: number; etag: string }[];\n },\n): Promise {\n const payload = `\n \n ${etags.map((et) => ` ${et.part}${et.etag}`).join(\"\\n\")}\n \n `;\n const response = await client.makeRequest({\n method: \"POST\",\n bucketName,\n objectName,\n query: `uploadId=${encodeURIComponent(uploadId)}`,\n payload: new TextEncoder().encode(payload),\n returnBody: true,\n });\n const responseText = await response.text();\n // Example response:\n // \n // \n // http://localhost:9000/dev-bucket/test-32m.dat\n // dev-bucket\n // test-32m.dat\n // "4581589392ae60eafdb031f441858c7a-7"\n // \n const root = parseXML(responseText).root;\n if (!root || root.name !== \"CompleteMultipartUploadResult\") {\n throw new Error(`Unexpected response: ${responseText}`);\n }\n const etagRaw = root.children.find((c) => c.name === \"ETag\")?.content;\n if (!etagRaw) throw new Error(`Unable to get ETag from response: ${responseText}`);\n const versionId = getVersionId(response.headers);\n return {\n etag: sanitizeETag(etagRaw),\n versionId,\n };\n}\n","import * as errors from \"./errors.ts\";\nimport { bin2hex, getScope, makeDateLong, makeDateShort, sha256digestHex, type Uint8Array_ } from \"./helpers.ts\";\n\nconst signV4Algorithm = \"AWS4-HMAC-SHA256\";\n\n/**\n * Generate the Authorization header required to authenticate an S3/AWS request.\n */\nexport async function signV4(request: {\n headers: Headers;\n method: string;\n path: string;\n accessKey: string;\n secretKey: string;\n region: string;\n date: Date;\n}): Promise {\n if (!request.accessKey) {\n throw new errors.AccessKeyRequiredError();\n }\n if (!request.secretKey) {\n throw new errors.SecretKeyRequiredError();\n }\n\n const sha256sum = request.headers.get(\"x-amz-content-sha256\");\n if (sha256sum === null) {\n throw new Error(\n \"Internal S3 client error - expected x-amz-content-sha256 header, but it's missing.\",\n );\n }\n\n const signedHeaders = getHeadersToSign(request.headers);\n const canonicalRequest = getCanonicalRequest(\n request.method,\n request.path,\n request.headers,\n signedHeaders,\n sha256sum,\n );\n const stringToSign = await getStringToSign(\n canonicalRequest,\n request.date,\n request.region,\n );\n const signingKey = await getSigningKey(\n request.date,\n request.region,\n request.secretKey,\n );\n const credential = getCredential(\n request.accessKey,\n request.region,\n request.date,\n );\n const signature = bin2hex(await sha256hmac(signingKey, stringToSign))\n .toLowerCase();\n\n return `${signV4Algorithm} Credential=${credential}, SignedHeaders=${\n signedHeaders.join(\";\").toLowerCase()\n }, Signature=${signature}`;\n}\n\n/**\n * Generate a pre-signed URL\n */\nexport async function presignV4(request: {\n protocol: \"http:\" | \"https:\";\n headers: Headers;\n method: string;\n path: string;\n accessKey: string;\n secretKey: string;\n sessionToken?: string;\n region: string;\n date: Date;\n expirySeconds: number;\n}): Promise {\n if (!request.accessKey) {\n throw new errors.AccessKeyRequiredError();\n }\n if (!request.secretKey) {\n throw new errors.SecretKeyRequiredError();\n }\n if (request.expirySeconds < 1 || request.expirySeconds > 604800) {\n throw new errors.InvalidExpiryError();\n }\n if (!request.headers.has(\"Host\")) {\n throw new Error(\"Internal error: host header missing\");\n }\n\n // Information about the future request that we're going to sign:\n const resource = request.path.split(\"?\")[0];\n const queryString = request.path.split(\"?\")[1];\n const iso8601Date = makeDateLong(request.date);\n const signedHeaders = getHeadersToSign(request.headers);\n const credential = getCredential(request.accessKey, request.region, request.date);\n const hashedPayload = \"UNSIGNED-PAYLOAD\";\n\n // Build the query string for our new signed URL:\n const newQuery = new URLSearchParams(queryString);\n newQuery.set(\"X-Amz-Algorithm\", signV4Algorithm);\n newQuery.set(\"X-Amz-Credential\", credential);\n newQuery.set(\"X-Amz-Date\", iso8601Date);\n newQuery.set(\"X-Amz-Expires\", request.expirySeconds.toString());\n newQuery.set(\"X-Amz-SignedHeaders\", signedHeaders.join(\";\").toLowerCase());\n if (request.sessionToken) {\n newQuery.set(\"X-Amz-Security-Token\", request.sessionToken);\n }\n const newQueryString = newQuery.toString().replace(\"+\", \"%20\"); // Signing requires spaces become %20, never +\n const signingPath = resource + \"?\" + newQueryString;\n const encodedPath = resource.split(\"/\").map((part) => encodeURIComponent(part)).join(\"/\");\n\n const canonicalRequest = getCanonicalRequest(\n request.method,\n signingPath,\n request.headers,\n signedHeaders,\n hashedPayload,\n );\n const stringToSign = await getStringToSign(canonicalRequest, request.date, request.region);\n const signingKey = await getSigningKey(request.date, request.region, request.secretKey);\n const signature = bin2hex(await sha256hmac(signingKey, stringToSign)).toLowerCase();\n // deno-fmt-ignore\n const presignedUrl = `${request.protocol}//${request.headers.get(\"Host\")}${encodedPath}?${newQueryString}&X-Amz-Signature=${signature}`;\n return presignedUrl;\n}\n\n/**\n * Given the set of HTTP headers that we'll be sending with an S3/AWS request, determine which\n * headers will be signed, and in what order.\n */\nfunction getHeadersToSign(headers: Headers): string[] {\n // Excerpts from @lsegal - https://github.com/aws/aws-sdk-js/issues/659#issuecomment-120477258\n //\n // User-Agent:\n //\n // This is ignored from signing because signing this causes problems with generating pre-signed URLs\n // (that are executed by other agents) or when customers pass requests through proxies, which may\n // modify the user-agent.\n //\n // Content-Length:\n //\n // This is ignored from signing because generating a pre-signed URL should not provide a content-length\n // constraint, specifically when vending a S3 pre-signed PUT URL. The corollary to this is that when\n // sending regular requests (non-pre-signed), the signature contains a checksum of the body, which\n // implicitly validates the payload length (since changing the number of bytes would change the checksum)\n // and therefore this header is not valuable in the signature.\n //\n // Content-Type:\n //\n // Signing this header causes quite a number of problems in browser environments, where browsers\n // like to modify and normalize the content-type header in different ways. There is more information\n // on this in https://github.com/aws/aws-sdk-js/issues/244. Avoiding this field simplifies logic\n // and reduces the possibility of future bugs\n //\n // Authorization:\n //\n // Is skipped for obvious reasons\n\n const ignoredHeaders = [\n \"authorization\",\n \"content-length\",\n \"content-type\",\n \"user-agent\",\n ];\n const headersToSign = [];\n for (const key of headers.keys()) {\n if (ignoredHeaders.includes(key.toLowerCase())) {\n continue; // Ignore this header\n }\n headersToSign.push(key);\n }\n headersToSign.sort();\n return headersToSign;\n}\n\nconst CODES = {\n A: \"A\".charCodeAt(0),\n Z: \"Z\".charCodeAt(0),\n a: \"a\".charCodeAt(0),\n z: \"z\".charCodeAt(0),\n \"0\": \"0\".charCodeAt(0),\n \"9\": \"9\".charCodeAt(0),\n \"/\": \"/\".charCodeAt(0),\n};\nconst ALLOWED_BYTES = \"-._~\".split(\"\").map((s) => s.charCodeAt(0));\n\n/**\n * Canonical URI encoding for signing, per AWS documentation:\n * 1. URI encode every byte except the unreserved characters:\n * 'A'-'Z', 'a'-'z', '0'-'9', '-', '.', '_', and '~'.\n * 2. The space character must be encoded as \"%20\" (and not as \"+\").\n * 3. Each URI encoded byte is formed by a '%' and the\n * two-digit uppercase hexadecimal value of the byte. e.g. \"%1A\".\n * 4. Encode the forward slash character, '/', everywhere except\n * in the object key name. For example, if the object key name\n * is photos/Jan/sample.jpg, the forward slash in the key name\n * is not encoded.\n *\n * See https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-header-based-auth.html\n *\n * @param string the string to encode.\n */\nfunction awsUriEncode(string: string, allowSlashes = false) {\n const bytes: Uint8Array = new TextEncoder().encode(string);\n let encoded = \"\";\n for (const byte of bytes) {\n if (\n (byte >= CODES.A && byte <= CODES.Z) ||\n (byte >= CODES.a && byte <= CODES.z) ||\n (byte >= CODES[\"0\"] && byte <= CODES[\"9\"]) ||\n (ALLOWED_BYTES.includes(byte)) ||\n (byte == CODES[\"/\"] && allowSlashes)\n ) {\n encoded += String.fromCharCode(byte);\n } else {\n encoded += \"%\" + byte.toString(16).padStart(2, \"0\").toUpperCase();\n }\n }\n return encoded;\n}\n\n/**\n * getCanonicalRequest generate a canonical request of style.\n *\n * canonicalRequest =\n * \\n\n * \\n\n * \\n\n * \\n\n * \\n\n * \n */\nfunction getCanonicalRequest(\n method: string,\n path: string,\n headers: Headers,\n headersToSign: string[],\n payloadHash: string,\n): string {\n const headersArray = headersToSign.reduce((acc, headerKey) => {\n // Trim spaces from the value (required by V4 spec)\n const val = `${headers.get(headerKey)}`.replace(/ +/g, \" \");\n acc.push(`${headerKey.toLowerCase()}:${val}`);\n return acc;\n }, []);\n\n const requestResource = path.split(\"?\")[0];\n let requestQuery = path.split(\"?\")[1];\n if (requestQuery) {\n requestQuery = requestQuery\n .split(\"&\")\n .map((element) => {\n const [key, val] = element.split(\"=\", 2);\n // The input is assumed to be encoded, so we need to decode it first.\n return awsUriEncode(decodeURIComponent(key)) + \"=\" + awsUriEncode(decodeURIComponent(val || \"\"));\n })\n .sort() // sort after encoding\n .join(\"&\");\n } else {\n requestQuery = \"\";\n }\n\n // construct the canonical string from these parts:\n return [\n method.toUpperCase(),\n awsUriEncode(requestResource, true),\n requestQuery,\n headersArray.join(\"\\n\") + \"\\n\",\n headersToSign.join(\";\").toLowerCase(),\n payloadHash,\n ].join(\"\\n\");\n}\n\n// returns the string that needs to be signed\nasync function getStringToSign(\n canonicalRequest: string,\n requestDate: Date,\n region: string,\n): Promise {\n const hash = await sha256digestHex(canonicalRequest);\n const scope = getScope(region, requestDate);\n return [\n signV4Algorithm,\n makeDateLong(requestDate),\n scope,\n hash,\n ].join(\"\\n\");\n}\n\n/** returns the key used for calculating signature */\nasync function getSigningKey(\n date: Date,\n region: string,\n secretKey: string,\n): Promise {\n const dateLine = makeDateShort(date);\n const hmac1 = await sha256hmac(\"AWS4\" + secretKey, dateLine);\n const hmac2 = await sha256hmac(hmac1, region);\n const hmac3 = await sha256hmac(hmac2, \"s3\");\n return await sha256hmac(hmac3, \"aws4_request\");\n}\n\n/** generate a credential string */\nfunction getCredential(accessKey: string, region: string, requestDate: Date) {\n return `${accessKey}/${getScope(region, requestDate)}`;\n}\n\n/**\n * Given a secret key and some data, generate a HMAC of the data using SHA-256.\n */\nasync function sha256hmac(\n secretKey: Uint8Array_ | string,\n data: Uint8Array_ | string,\n): Promise {\n const enc = new TextEncoder();\n const keyObject = await crypto.subtle.importKey(\n \"raw\", // raw format of the key - should be Uint8Array\n secretKey instanceof Uint8Array ? secretKey : enc.encode(secretKey),\n { name: \"HMAC\", hash: { name: \"SHA-256\" } }, // algorithm\n false, // export = false\n [\"sign\", \"verify\"], // what this key can do\n );\n const signature = await crypto.subtle.sign(\n \"HMAC\",\n keyObject,\n data instanceof Uint8Array ? data : enc.encode(data),\n );\n return new Uint8Array(signature);\n}\n\n/**\n * Type for S3 Post Policy conditions\n * S3 allows conditions to have different shapes\n */\ntype PolicyCondition = Record | string[];\n\n/**\n * Generate a presigned POST policy that can be used to allow direct uploads to S3.\n * This is equivalent to AWS SDK's presignedPost functionality.\n */\nexport async function presignPostV4(request: {\n host: string;\n protocol: \"http:\" | \"https:\";\n bucket: string;\n objectKey: string;\n accessKey: string;\n secretKey: string;\n region: string;\n date: Date;\n expirySeconds: number;\n conditions?: PolicyCondition[];\n fields?: Record;\n}): Promise<{\n url: string;\n fields: Record;\n}> {\n if (!request.accessKey) {\n throw new errors.AccessKeyRequiredError();\n }\n if (!request.secretKey) {\n throw new errors.SecretKeyRequiredError();\n }\n if (request.expirySeconds < 1 || request.expirySeconds > 604800) {\n throw new errors.InvalidExpiryError();\n }\n\n const expiration = new Date(request.date);\n expiration.setSeconds(expiration.getSeconds() + request.expirySeconds);\n const credential = getCredential(request.accessKey, request.region, request.date);\n const iso8601Date = makeDateLong(request.date);\n\n // Default required policy fields\n const fields: Record = {\n \"X-Amz-Algorithm\": signV4Algorithm,\n \"X-Amz-Credential\": credential,\n \"X-Amz-Date\": iso8601Date,\n \"key\": request.objectKey,\n ...request.fields,\n };\n\n // Build policy document\n const conditions: PolicyCondition[] = [\n { bucket: request.bucket },\n { key: request.objectKey },\n { \"X-Amz-Algorithm\": signV4Algorithm },\n { \"X-Amz-Credential\": credential },\n { \"X-Amz-Date\": iso8601Date },\n ];\n\n // Add any additional conditions provided by the user\n if (request.conditions) {\n conditions.push(...request.conditions);\n }\n\n // Add additional fields as conditions\n for (const [key, value] of Object.entries(request.fields || {})) {\n // Skip fields that we've already added to conditions\n if ([\"key\", \"X-Amz-Algorithm\", \"X-Amz-Credential\", \"X-Amz-Date\"].includes(key)) continue;\n conditions.push({ [key]: value });\n }\n\n const policy = {\n expiration: expiration.toISOString(),\n conditions,\n };\n\n // Convert policy to base64\n const policyBytes = new TextEncoder().encode(JSON.stringify(policy));\n const base64Policy = btoa(String.fromCharCode(...policyBytes));\n fields[\"policy\"] = base64Policy;\n\n // Calculate signature\n const stringToSign = base64Policy;\n const signingKey = await getSigningKey(request.date, request.region, request.secretKey);\n const signature = bin2hex(await sha256hmac(signingKey, stringToSign)).toLowerCase();\n fields[\"X-Amz-Signature\"] = signature;\n\n // Construct the URL\n const url = `${request.protocol}//${request.host}/${request.bucket}`;\n\n return { url, fields };\n}\n\n// Export for testing purposes only\nexport const _internalMethods = {\n awsUriEncode,\n getHeadersToSign,\n getCanonicalRequest,\n getStringToSign,\n getSigningKey,\n getCredential,\n sha256hmac,\n};\n","import { TransformChunkSizes } from \"./transform-chunk-sizes.ts\";\nimport * as errors from \"./errors.ts\";\nimport {\n isValidBucketName,\n isValidObjectName,\n isValidPort,\n makeDateLong,\n sanitizeETag,\n sha256digestHex,\n type Uint8Array_,\n} from \"./helpers.ts\";\nimport { ObjectUploader } from \"./object-uploader.ts\";\nimport { presignPostV4, presignV4, signV4 } from \"./signing.ts\";\nimport { parse as parseXML } from \"./xml-parser.ts\";\n\nexport interface ClientOptions {\n /**\n * The full URL of the S3 endpoint. Can also be just the hostname (deprecated).\n * Examples: \"https://s3.eu-west-1.amazonaws.com\", \"http://localhost:9000\"\n */\n endPoint: string;\n accessKey?: string;\n secretKey?: string;\n /** If using temporary credentials, a session token is required. Otherwise you don't need this. */\n sessionToken?: string;\n /** Default bucket name, if not specified on individual requests */\n bucket?: string;\n /** Region to use, e.g. \"us-east-1\" */\n region: string;\n /** Use path-style requests, e.g. https://endpoint/bucket/object-key instead of https://bucket/object-key (default: true) */\n pathStyle?: boolean | undefined;\n /**\n * Whether to use HTTPS. Defaults to true unless http:// is explicitly specified in endPoint.\n * @deprecated Pass in a complete URL to `endPoint` instead, including 'https://' or 'http://'\n */\n useSSL?: boolean | undefined;\n /**\n * Port to use. Will be extracted from URL if provided, otherwise defaults to 80/443 based on protocol.\n * @deprecated Pass in a complete URL to `endPoint` instead, including a port number if needed.\n */\n port?: number | undefined;\n /**\n * Path prefix. Usually not required, but some API servers like Supabase S3 need this.\n * e.g. If docs say \"S3 Storage URL: http://127.0.0.1:54321/storage/v1/s3\" then pathPrefix is \"/storage/v1/s3\"\n *\n * @deprecated Pass in a complete URL to `endPoint` instead.\n */\n pathPrefix?: string;\n}\n\n/**\n * Standard Metadata (headers) that can be set when interacting with an object.\n * See https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html\n */\nconst metadataKeys = [\n \"Content-Type\",\n \"Cache-Control\",\n \"Content-Disposition\",\n \"Content-Encoding\",\n \"Content-Language\",\n \"Expires\",\n \"x-amz-checksum-sha256\",\n \"x-amz-grant-full-control\",\n \"x-amz-grant-read\",\n \"x-amz-grant-read-acp\",\n \"x-amz-grant-write-acp\",\n \"x-amz-server-side-encryption\",\n \"x-amz-storage-class\",\n \"x-amz-website-redirect-location\",\n \"x-amz-server-side-encryption-customer-algorithm\",\n \"x-amz-server-side-encryption-customer-key\",\n \"x-amz-server-side-encryption-customer-key-MD5\",\n \"x-amz-server-side-encryption-aws-kms-key-id\",\n \"x-amz-server-side-encryption-context\",\n \"x-amz-server-side-encryption-bucket-key-enabled\",\n \"x-amz-request-payer\",\n \"x-amz-tagging\",\n \"x-amz-object-lock-mode\",\n \"x-amz-object-lock-retain-until-date\",\n \"x-amz-object-lock-legal-hold\",\n \"x-amz-expected-bucket-owner\",\n] as const;\n\n/**\n * Metadata (standard and custom) that can be set when uploading an object.\n *\n * Custom keys should be like \"x-amz-meta-...\"\n */\nexport type ObjectMetadata =\n & {\n \"x-amz-acl\"?:\n | \"private\"\n | \"public-read\"\n | \"public-read-write\"\n | \"authenticated-read\"\n | \"aws-exec-read\"\n | \"bucket-owner-read\"\n | \"bucket-owner-full-control\";\n }\n & { [K in typeof metadataKeys[number]]?: string }\n & { [customMetadata: `x-amz-meta-${string}`]: string };\n\n/** Response Header Overrides\n * These parameters can be used with an authenticated or presigned get object request, to\n * override certain headers that will be sent with the response. These cannot be used with\n * anonymous requests (although some servers like MinIO do seem to allow it).\n * See https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html\n */\nexport interface ResponseOverrideParams {\n \"response-content-type\"?: string;\n \"response-content-language\"?: string;\n \"response-expires\"?: string;\n \"response-cache-control\"?: string;\n \"response-content-disposition\"?: string;\n \"response-content-encoding\"?: string;\n}\n\nexport interface UploadedObjectInfo {\n etag: string;\n versionId: string | null;\n}\n\nexport interface CopiedObjectInfo extends UploadedObjectInfo {\n lastModified: Date;\n copySourceVersionId: string | null;\n}\n\n/** Details about an object as returned by a \"list objects\" operation */\nexport interface S3Object {\n type: \"Object\";\n key: string;\n lastModified: Date;\n etag: string;\n size: number;\n}\n/**\n * When listing objects and returning a delimited result (e.g. grouped by folders),\n * this represents a group of keys with a common prefix.\n * See https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-prefixes.html\n */\nexport interface CommonPrefix {\n type: \"CommonPrefix\";\n prefix: string;\n}\n\n/**\n * Additional properties provided by `statObject` compared to `listObjects`.\n */\nexport interface ObjectStatus extends S3Object {\n versionId: string | null;\n metadata: ObjectMetadata;\n}\n\n/** The minimum allowed part size for multi-part uploads. https://docs.aws.amazon.com/AmazonS3/latest/userguide/qfacts.html */\nconst minimumPartSize = 5 * 1024 * 1024;\n/** The maximum allowed part size for multi-part uploads. https://docs.aws.amazon.com/AmazonS3/latest/userguide/qfacts.html */\nconst maximumPartSize = 5 * 1024 * 1024 * 1024;\n/** The maximum allowed object size for multi-part uploads. https://docs.aws.amazon.com/AmazonS3/latest/userguide/qfacts.html */\nconst maxObjectSize = 5 * 1024 * 1024 * 1024 * 1024;\n\n/**\n * Interface for presigned POST policy conditions\n */\nexport type PolicyCondition = Record | string[];\n\n/**\n * Interface for the result of a presigned POST request\n */\nexport interface PresignedPostResult {\n /**\n * The URL to POST the form to\n */\n url: string;\n /**\n * The fields to include in the form\n */\n fields: Record;\n}\n\n/**\n * Client for connecting to S3-compatible object storage services.\n */\nexport class Client {\n readonly host: string;\n readonly port: number;\n readonly protocol: \"https:\" | \"http:\";\n readonly accessKey?: string;\n readonly #secretKey: string;\n readonly sessionToken?: string;\n readonly defaultBucket: string | undefined;\n readonly region: string;\n readonly userAgent = \"s3-lite-client\";\n /** Use path-style requests, e.g. https://endpoint/bucket/object-key instead of https://bucket/object-key */\n readonly pathStyle: boolean;\n readonly pathPrefix?: string;\n\n constructor({ endPoint, useSSL, port, pathPrefix, ...params }: Readonly) {\n // Check if endpoint is a URL (starts with http:// or https://)\n if (/^https?:\\/\\//i.test(endPoint)) {\n if (useSSL !== undefined || port !== undefined || pathPrefix !== undefined) {\n throw new errors.InvalidArgumentError(`useSSL/port/pathPrefix cannot be specified if endPoint is a URL.`);\n }\n try {\n const url = new URL(endPoint);\n endPoint = url.hostname; // Now this is just the hostname\n useSSL = url.protocol === \"https:\";\n port = url.port ? parseInt(url.port, 10) : (useSSL ? 443 : 80);\n if (url.pathname && url.pathname !== \"/\") {\n pathPrefix = url.pathname.endsWith(\"/\") ? url.pathname.slice(0, -1) : url.pathname;\n }\n } catch {\n throw new errors.InvalidEndpointError(`Invalid endPoint URL: ${endPoint}`);\n }\n }\n\n // Now validate the extracted hostname\n if (typeof endPoint !== \"string\" || endPoint.length === 0) {\n throw new errors.InvalidEndpointError(`Invalid endPoint: ${endPoint}`);\n }\n\n // Default values if not specified.\n if (useSSL === undefined) {\n useSSL = true;\n }\n\n // Validate port\n if (port !== undefined && !isValidPort(port)) {\n throw new errors.InvalidArgumentError(`Invalid port: ${port}`);\n }\n\n // Validate credentials\n if (params.accessKey && !params.secretKey) {\n throw new errors.InvalidArgumentError(`If specifying access key, secret key must also be provided.`);\n }\n if (params.accessKey && params.accessKey.startsWith(\"ASIA\") && !params.sessionToken) {\n throw new errors.InvalidArgumentError(`If specifying temporary access key, session token must also be provided.`);\n }\n\n const defaultPort = useSSL ? 443 : 80;\n this.port = port ?? defaultPort;\n this.host = endPoint.toLowerCase() + (this.port !== defaultPort ? `:${this.port}` : \"\");\n this.protocol = useSSL ? \"https:\" : \"http:\";\n this.accessKey = params.accessKey;\n this.#secretKey = params.secretKey ?? \"\";\n this.sessionToken = params.sessionToken;\n this.pathStyle = params.pathStyle ?? true; // Default path style is true\n this.pathPrefix = pathPrefix ?? \"\";\n this.defaultBucket = params.bucket;\n this.region = params.region;\n\n if (this.pathPrefix) {\n if (!this.pathStyle) {\n throw new errors.InvalidArgumentError(`pathPrefix is incompatible with pathStyle=false`);\n }\n if (!this.pathPrefix.startsWith(\"/\")) {\n throw new errors.InvalidArgumentError(`pathPrefix should start with /`);\n }\n if (this.pathPrefix.endsWith(\"/\")) {\n throw new errors.InvalidArgumentError(`pathPrefix should not end with /`);\n }\n }\n }\n\n /** Internal helper method to figure out which bucket name to use for a request */\n protected getBucketName(options: undefined | { bucketName?: string }): string {\n const bucketName = options?.bucketName ?? this.defaultBucket;\n if (bucketName === undefined || !isValidBucketName(bucketName)) {\n throw new errors.InvalidBucketNameError(bucketName ?? \"\");\n }\n return bucketName;\n }\n\n /**\n * Common code used for both \"normal\" requests and presigned URL requests\n */\n private buildRequestOptions(options: {\n objectName: string;\n bucketName?: string;\n headers?: Headers;\n query?: string | Record;\n }): {\n headers: Headers;\n host: string;\n path: string;\n encodedPath: string;\n } {\n const bucketName = this.getBucketName(options);\n const host = this.pathStyle ? this.host : `${bucketName}.${this.host}`;\n const headers = options.headers ?? new Headers();\n headers.set(\"host\", host);\n const queryAsString = typeof options.query === \"object\"\n ? new URLSearchParams(options.query).toString().replace(\"+\", \"%20\") // Signing requires spaces become %20, never +\n : (options.query);\n\n const basePath = this.pathStyle\n ? `${this.pathPrefix}/${bucketName}/${options.objectName}`\n : `/${options.objectName}`;\n const querySuffix = queryAsString ? `?${queryAsString}` : \"\";\n const path = basePath + querySuffix;\n // For signing, we have to use the path as-is, but for making the request we have to be sure to\n // escape the '+' and '%' characters, or we'll get signing errors, at least with some S3 servers.\n const encodedPath = basePath.split(\"/\").map((part) => encodeURIComponent(part)).join(\"/\") + querySuffix;\n return { headers, host, path, encodedPath };\n }\n\n /**\n * Make a single request to S3\n */\n public async makeRequest({ method, payload, ...options }: {\n method: \"POST\" | \"GET\" | \"PUT\" | \"DELETE\" | string;\n headers?: Headers;\n query?: string | Record;\n objectName: string;\n bucketName?: string;\n /** The status code we expect the server to return */\n statusCode?: number;\n /** The request body */\n payload?: Uint8Array_ | string;\n /**\n * returnBody: We have to read the request body to avoid leaking resources.\n * So by default this method will read and ignore the body. If you actually\n * need it, set returnBody: true and this function won't touch it so that\n * the caller can read it.\n */\n returnBody?: boolean;\n }): Promise {\n const date = new Date();\n const { headers, host, path, encodedPath } = this.buildRequestOptions(options);\n const statusCode = options.statusCode ?? 200;\n\n if (\n method === \"POST\" || method === \"PUT\" || method === \"DELETE\"\n ) {\n if (payload === undefined) {\n payload = new Uint8Array();\n } else if (typeof payload === \"string\") {\n payload = new TextEncoder().encode(payload);\n }\n headers.set(\"Content-Length\", String(payload.length));\n } else if (payload) {\n throw new Error(`Unexpected payload on ${method} request.`);\n }\n const sha256sum = await sha256digestHex(payload ?? new Uint8Array());\n headers.set(\"x-amz-date\", makeDateLong(date));\n headers.set(\"x-amz-content-sha256\", sha256sum);\n if (this.accessKey) {\n if (this.sessionToken) {\n headers.set(\"x-amz-security-token\", this.sessionToken);\n }\n headers.set(\n \"authorization\",\n await signV4({\n headers,\n method,\n path,\n accessKey: this.accessKey,\n secretKey: this.#secretKey,\n region: this.region,\n date,\n }),\n );\n }\n\n const fullUrl = `${this.protocol}//${host}${encodedPath}`;\n\n const response = await fetch(fullUrl, {\n method,\n headers,\n body: payload,\n });\n\n if (response.status !== statusCode) {\n if (response.status >= 400) {\n const error = await errors.parseServerError(response);\n throw error;\n } else if (response.status === 301) {\n // Unfortunately we are not allowed to access the Location header to know what the new location is.\n throw new errors.ServerError(\n response.status,\n \"UnexpectedRedirect\",\n `The server unexpectedly returned a redirect response. With AWS S3, this usually means you need to use a ` +\n `region-specific endpoint like \"s3.us-west-2.amazonaws.com\" instead of \"s3.amazonaws.com\"`,\n );\n }\n throw new errors.ServerError(\n response.status,\n \"UnexpectedStatusCode\",\n `Unexpected response code from the server (expected ${statusCode}, got ${response.status} ${response.statusText}).`,\n );\n }\n if (!options.returnBody) {\n // Just read the body and ignore its contents, to avoid leaking resources.\n await response.body?.getReader().read();\n }\n return response;\n }\n\n /**\n * Delete a single object.\n *\n * You can also pass a versionId to delete a specific version of an object.\n */\n async deleteObject(\n objectName: string,\n options: { bucketName?: string; versionId?: string; governanceBypass?: boolean } = {},\n ) {\n const bucketName = this.getBucketName(options);\n if (!isValidObjectName(objectName)) {\n throw new errors.InvalidObjectNameError(objectName);\n }\n\n const query: Record = options.versionId ? { versionId: options.versionId } : {};\n const headers = new Headers();\n if (options.governanceBypass) {\n headers.set(\"X-Amz-Bypass-Governance-Retention\", \"true\");\n }\n\n await this.makeRequest({\n method: \"DELETE\",\n bucketName,\n objectName,\n headers,\n query,\n statusCode: 204,\n });\n }\n\n /**\n * Check if an object with the specified key exists.\n */\n public async exists(\n objectName: string,\n options?: { bucketName?: string; versionId?: string; headers?: Record },\n ): Promise {\n try {\n await this.statObject(objectName, options);\n return true;\n } catch (err: unknown) {\n if (err instanceof errors.ServerError && err.statusCode === 404) {\n return false;\n }\n throw err;\n }\n }\n\n /**\n * Get an object.\n *\n * Returns a standard HTTP Response object, which has many ways of consuming the response including\n * `.text()`, `.json()`, `.body` (ReadableStream), `.arrayBuffer()`, and `.blob()`.\n */\n public getObject(\n objectName: string,\n options?: {\n metadata?: ObjectMetadata;\n bucketName?: string;\n versionId?: string;\n responseParams?: ResponseOverrideParams;\n },\n ): Promise {\n return this.getPartialObject(objectName, { ...options, offset: 0, length: 0 });\n }\n\n /**\n * Stream a partial object, starting from the specified offset in bytes, up to the specified length in bytes.\n * A length of zero will return the rest of the object from the specified offset.\n * Pass a version UUID as \"versionId\" to download a specific version.\n *\n * Returns a standard HTTP Response object.\n */\n public async getPartialObject(\n objectName: string,\n { offset, length, ...options }: {\n offset: number;\n length: number;\n metadata?: ObjectMetadata;\n bucketName?: string;\n versionId?: string;\n responseParams?: ResponseOverrideParams;\n },\n ): Promise {\n const bucketName = this.getBucketName(options);\n if (!isValidObjectName(objectName)) {\n throw new errors.InvalidObjectNameError(objectName);\n }\n\n const headers = new Headers(Object.entries(options.metadata ?? {}));\n let statusCode = 200; // Expected status code\n if (offset || length) {\n let range = \"\";\n if (offset) {\n range = `bytes=${+offset}-`;\n } else {\n range = \"bytes=0-\";\n offset = 0;\n }\n if (length) {\n range += `${(+length + offset) - 1}`;\n }\n headers.set(\"Range\", range);\n statusCode = 206; // HTTP 206 \"Partial Content\"\n }\n\n // Create query string options\n const query: Record = {\n ...options.responseParams,\n ...(options.versionId ? { versionId: options.versionId } : {}),\n };\n return await this.makeRequest({\n method: \"GET\",\n bucketName,\n objectName,\n headers,\n query,\n statusCode,\n returnBody: true,\n });\n }\n\n /**\n * Low-level method to generate a pre-signed URL.\n * @param method The HTTP method to use for the request\n * @param objectName The object name, e.g. \"path/to/file.txt\"\n * @param options Detailed options, such as expiry time for the pre-signed URL. Use expirySeconds to specify the expiry time; default is seven days.\n */\n getPresignedUrl(\n method: \"GET\" | \"PUT\" | \"HEAD\" | \"DELETE\",\n objectName: string,\n options: { bucketName?: string; parameters?: Record; expirySeconds?: number; requestDate?: Date } =\n {},\n ): Promise {\n if (!this.accessKey) {\n throw new errors.AccessKeyRequiredError();\n }\n if (!isValidObjectName(objectName)) {\n throw new errors.InvalidObjectNameError(objectName);\n }\n const { headers, path } = this.buildRequestOptions({\n objectName,\n bucketName: options.bucketName,\n query: options.parameters,\n });\n const requestDate = options.requestDate ?? new Date();\n const expirySeconds = options.expirySeconds ?? 24 * 60 * 60 * 7; // default expiration is 7 days in seconds.\n\n return presignV4({\n protocol: this.protocol,\n headers,\n method,\n path,\n accessKey: this.accessKey,\n secretKey: this.#secretKey,\n sessionToken: this.sessionToken,\n region: this.region,\n date: requestDate,\n expirySeconds,\n });\n }\n\n /**\n * Generate a pre-signed GET request URL.\n *\n * Use options.expirySeconds to override the expiration time (default is 7 days)\n */\n presignedGetObject(\n objectName: string,\n options: {\n bucketName?: string;\n versionId?: string;\n responseParams?: ResponseOverrideParams;\n expirySeconds?: number;\n requestDate?: Date;\n } = {},\n ): Promise {\n const { versionId, responseParams, ...otherOptions } = options;\n const parameters: Record = {\n ...responseParams,\n ...(versionId ? { versionId } : {}),\n };\n return this.getPresignedUrl(\"GET\", objectName, { parameters, ...otherOptions });\n }\n\n /**\n * List objects in the bucket, optionally filtered by the given key prefix.\n *\n * This returns a flat list; use `listObjectsGrouped()` for more advanced behavior,\n * such as grouping or pagination.\n */\n public async *listObjects(\n options: {\n prefix?: string;\n bucketName?: string;\n /** Don't return more than this many results in total. Default: unlimited. */\n maxResults?: number;\n /**\n * How many keys to retrieve per HTTP request (default: 1000)\n * This is a maximum; sometimes fewer keys will be returned.\n * This will not affect the shape of the result, just its efficiency.\n */\n pageSize?: number;\n } = {},\n ): AsyncGenerator {\n for await (const result of this.listObjectsGrouped({ ...options, delimiter: \"\" })) {\n // Since we didn't specify a delimiter, listObjectsGrouped() should only return\n // actual object keys, not any CommonPrefix groupings.\n if (result.type === \"Object\") {\n yield result;\n } else {\n throw new Error(`Unexpected result from listObjectsGrouped(): ${result}`);\n }\n }\n }\n\n /**\n * List objects in the bucket, optionally grouped based on the specified \"delimiter\".\n *\n * See https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-prefixes.html for\n * details on using a delimiter.\n *\n * To retrieve results page by page with this generator, you cannot use `for await`.\n * Instead, call this with a helper function like the following:\n * ```\n * async function retrievePage(continuationToken?: string) {\n * const pageSize = 10;\n * const iterator = client.listObjectsGrouped({ continuationToken, pageSize, maxResults: pageSize });\n * const page: S3Object[] = [];\n * let r: IteratorResult;\n * while (!(r = await iterator.next()).done) { if (r.value.type === \"Object\") page.push(r.value); }\n * // Once the iterator is 'done', r.value will have the continuation token.\n * return { page, continuationToken: r.value };\n * }\n * ```\n */\n public async *listObjectsGrouped(\n options: {\n delimiter?: string;\n prefix?: string;\n bucketName?: string;\n /** Don't return more than this many results in total. Default: unlimited. */\n maxResults?: number;\n /**\n * How many keys to retrieve per HTTP request (default: 1000)\n * This is a maximum; sometimes fewer keys will be returned.\n */\n pageSize?: number;\n /** Retrieve results from later pages using this continuation token. */\n continuationToken?: string;\n },\n ): AsyncGenerator {\n const bucketName = this.getBucketName(options);\n let continuationToken = options.continuationToken ?? \"\";\n const pageSize = options.pageSize ?? 1_000;\n if (pageSize < 1 || pageSize > 1_000) {\n throw new errors.InvalidArgumentError(\"pageSize must be between 1 and 1,000.\");\n }\n let resultCount = 0; // Count the total number of results\n\n while (true) {\n // How many results to fetch in the next request:\n const maxKeys = options.maxResults ? Math.min(pageSize, options.maxResults - resultCount) : pageSize;\n if (maxKeys === 0) {\n return;\n }\n // Fetch the next page of results:\n const pageResponse = await this.makeRequest({\n method: \"GET\",\n bucketName,\n objectName: \"\",\n query: {\n \"list-type\": \"2\",\n prefix: options.prefix ?? \"\",\n delimiter: options.delimiter ?? \"\",\n \"max-keys\": String(maxKeys),\n ...(continuationToken ? { \"continuation-token\": continuationToken } : {}),\n },\n returnBody: true,\n });\n const responseText = await pageResponse.text();\n // Parse the response XML.\n // See https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html#API_ListObjectsV2_ResponseSyntax\n const root = parseXML(responseText).root;\n if (!root || root.name !== \"ListBucketResult\") {\n throw new Error(`Unexpected response: ${responseText}`);\n }\n // If a delimiter was specified, first return any common prefixes from this page of results:\n const prefixElements = root.children\n .filter((c) => c.name === \"CommonPrefixes\")\n .flatMap((c) => c.children);\n const toYield: Array = [];\n for (const prefixElement of prefixElements) {\n toYield.push({\n type: \"CommonPrefix\",\n prefix: prefixElement.content ?? \"\",\n });\n resultCount++;\n }\n // Now return all regular object keys found in the result:\n for (const objectElement of root.children.filter((c) => c.name === \"Contents\")) {\n toYield.push({\n type: \"Object\",\n key: objectElement.children.find((c) => c.name === \"Key\")?.content ?? \"\",\n etag: sanitizeETag(objectElement.children.find((c) => c.name === \"ETag\")?.content ?? \"\"),\n size: parseInt(objectElement.children.find((c) => c.name === \"Size\")?.content ?? \"\", 10),\n lastModified: new Date(objectElement.children.find((c) => c.name === \"LastModified\")?.content ?? \"invalid\"),\n });\n resultCount++;\n }\n // Now, interlace the commonprefixes and regular objects, so that the overall result stays sorted\n // in alphabetical order, instead of mixed by common prefixes first then other entries later.\n // This way guarantees consistent behavior regardless of page size.\n toYield.sort((a, b) => {\n const aStr = a.type === \"Object\" ? a.key : a.prefix;\n const bStr = b.type === \"Object\" ? b.key : b.prefix;\n return aStr > bStr ? 1 : aStr < bStr ? -1 : 0;\n });\n for (const entry of toYield) {\n yield entry;\n }\n const isTruncated = root.children.find((c) => c.name === \"IsTruncated\")?.content === \"true\";\n if (isTruncated) {\n // There are more results.\n const nextContinuationToken = root.children.find((c) => c.name === \"NextContinuationToken\")?.content;\n if (!nextContinuationToken) {\n throw new Error(\"Unexpectedly missing continuation token, but server said there are more results.\");\n }\n continuationToken = nextContinuationToken;\n if (options.maxResults && resultCount >= options.maxResults) {\n // We returned the maximum number of results.\n // Don't retrieve any more results for now; stop iteration and return the continuationToken.\n return continuationToken;\n }\n } else {\n // That's it, no more results.\n return;\n }\n }\n }\n\n /**\n * Upload an object\n */\n async putObject(\n objectName: string,\n streamOrData: ReadableStream | Uint8Array | string,\n options?: {\n metadata?: ObjectMetadata;\n size?: number;\n bucketName?: string;\n /**\n * For large uploads, split them into parts of this size.\n * Default: 64MB if object size is known, 500MB if total object size is unknown.\n * This is a minimum; larger part sizes may be required for large uploads or if the total size is unknown.\n */\n partSize?: number;\n },\n ): Promise {\n const bucketName = this.getBucketName(options);\n if (!isValidObjectName(objectName)) {\n throw new errors.InvalidObjectNameError(objectName);\n }\n\n // Prepare a readable stream for the upload:\n let size: number | undefined;\n let stream: ReadableStream;\n if (typeof streamOrData === \"string\") {\n // Convert to binary using UTF-8\n const binaryData = new TextEncoder().encode(streamOrData);\n if (typeof ReadableStream.from !== \"undefined\") {\n stream = ReadableStream.from([binaryData]);\n } else {\n // ReadableStream.from is not yet supported by some runtimes :/\n // https://github.com/oven-sh/bun/issues/3700\n // https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream/from_static#browser_compatibility\n // deno-fmt-ignore\n stream = new ReadableStream({ start(c) { c.enqueue(binaryData); c.close(); } });\n }\n size = binaryData.length;\n } else if (streamOrData instanceof Uint8Array) {\n if (typeof ReadableStream.from !== \"undefined\") {\n stream = ReadableStream.from([streamOrData]);\n } else {\n // deno-fmt-ignore\n stream = new ReadableStream({ start(c) { c.enqueue(streamOrData); c.close(); } });\n }\n size = streamOrData.byteLength;\n } else if (streamOrData instanceof ReadableStream) {\n stream = streamOrData;\n } else {\n throw new errors.InvalidArgumentError(\n `Invalid stream/data type provided.`,\n );\n }\n\n // Validate the size parameter\n if (options?.size !== undefined) {\n if (size !== undefined && options?.size !== size) {\n throw new errors.InvalidArgumentError(\n `size was specified (${options.size}) but doesn't match auto-detected size (${size}).`,\n );\n }\n if (typeof options.size !== \"number\" || options.size < 0 || isNaN(options.size)) {\n throw new errors.InvalidArgumentError(\n `invalid size specified: ${options.size}`,\n );\n } else {\n size = options.size;\n }\n }\n\n // Determine the part size, if we may need to do a multi-part upload.\n const partSize = options?.partSize ?? this.calculatePartSize(size);\n if (partSize < minimumPartSize) {\n throw new errors.InvalidArgumentError(`Part size should be greater than 5MB`);\n } else if (partSize > maximumPartSize) {\n throw new errors.InvalidArgumentError(`Part size should be less than 6MB`);\n }\n\n // s3 requires that all non-end chunks be at least `this.partSize`,\n // so we chunk the stream until we hit either that size or the end before\n // we flush it to s3.\n const chunker = new TransformChunkSizes(partSize);\n\n // This is a Writable stream that can be written to in order to upload\n // to the specified bucket and object automatically.\n const uploader = new ObjectUploader({\n client: this,\n bucketName,\n objectName,\n partSize,\n metadata: options?.metadata ?? {},\n });\n // stream => chunker => uploader\n await stream.pipeThrough(chunker).pipeTo(uploader);\n return uploader.getResult();\n }\n\n /**\n * Calculate part size given the object size. Part size will be at least this.partSize.\n *\n * Per https://docs.aws.amazon.com/AmazonS3/latest/userguide/qfacts.html we have to\n * stick to the following rules:\n * - part size between 5MB (this.maximumPartSize) and 5GB (this.maxObjectSize)\n * (the final part can be smaller than 5MB however)\n * - maximum of 10,000 parts per upload\n * - maximum object size of 5TB\n */\n protected calculatePartSize(size: number | undefined): number {\n if (size === undefined) {\n // If we don't know the total size (e.g. we're streaming data), assume it's\n // the largest allowed object size, so we can guarantee the upload works\n // regardless of the total size.\n size = maxObjectSize;\n }\n if (size > maxObjectSize) {\n throw new TypeError(`size should not be more than ${maxObjectSize}`);\n }\n let partSize = 64 * 1024 * 1024; // Start with 64MB\n while (true) {\n // If partSize is big enough to accomodate the object size, then use it.\n if ((partSize * 10_000) > size) {\n return partSize;\n }\n // Try part sizes as 64MB, 80MB, 96MB etc.\n partSize += 16 * 1024 * 1024;\n }\n }\n\n /**\n * Get detailed information about an object.\n */\n public async statObject(\n objectName: string,\n options?: {\n bucketName?: string;\n versionId?: string;\n /**\n * Additional headers to include in the request\n */\n headers?: Record;\n },\n ): Promise {\n const bucketName = this.getBucketName(options);\n if (!isValidObjectName(objectName)) {\n throw new errors.InvalidObjectNameError(objectName);\n }\n const query: Record = {};\n if (options?.versionId) {\n query.versionId = options.versionId;\n }\n\n const response = await this.makeRequest({\n method: \"HEAD\",\n bucketName,\n objectName,\n query,\n // Add custom headers if provided\n headers: new Headers(options?.headers),\n });\n\n const metadata: ObjectMetadata = {};\n for (const header of metadataKeys) {\n if (response.headers.has(header)) {\n metadata[header] = response.headers.get(header) as string;\n }\n }\n // Also add in custom metadata\n response.headers.forEach((_value, key) => {\n if (key.startsWith(\"x-amz-meta-\")) {\n metadata[key as `x-amz-meta-${string}`] = response.headers.get(key) as string;\n }\n });\n\n return {\n type: \"Object\",\n key: objectName,\n size: parseInt(response.headers.get(\"content-length\") ?? \"\", 10),\n metadata,\n lastModified: new Date(response.headers.get(\"Last-Modified\") ?? \"error: missing last modified\"),\n versionId: response.headers.get(\"x-amz-version-id\") || null,\n etag: sanitizeETag(response.headers.get(\"ETag\") ?? \"\"),\n };\n }\n\n /**\n * Copy an object into this bucket\n */\n public async copyObject(\n source: { sourceBucketName?: string; sourceKey: string; sourceVersionId?: string },\n objectName: string,\n options?: {\n bucketName?: string;\n /** Metadata for the new object. If not specified, metadata will be copied from the source. */\n metadata?: ObjectMetadata;\n },\n ): Promise {\n const bucketName = this.getBucketName(options);\n const sourceBucketName = source.sourceBucketName ?? bucketName;\n if (!isValidObjectName(objectName)) {\n throw new errors.InvalidObjectNameError(objectName);\n }\n\n // The \"x-amz-copy-source\" header is like \"bucket/objectkey\" with an optional version ID.\n // e.g. \"awsexamplebucket/reports/january.pdf?versionId=QUpfdndhfd8438MNFDN93jdnJFkdmqnh893\"\n let xAmzCopySource = `${sourceBucketName}/${\n source.sourceKey.split(\"/\").map((part) => encodeURIComponent(part)).join(\"/\")\n }`;\n if (source.sourceVersionId) xAmzCopySource += `?versionId=${source.sourceVersionId}`;\n\n const headers = new Headers(options?.metadata);\n if (options?.metadata !== undefined) {\n headers.set(\"x-amz-metadata-directive\", \"REPLACE\");\n }\n headers.set(\"x-amz-copy-source\", xAmzCopySource);\n\n const response = await this.makeRequest({ method: \"PUT\", bucketName, objectName, headers, returnBody: true });\n\n const responseText = await response.text();\n // Parse the response XML.\n // See https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html#API_CopyObject_ResponseSyntax\n const root = parseXML(responseText).root;\n if (!root || root.name !== \"CopyObjectResult\") {\n throw new Error(`Unexpected response: ${responseText}`);\n }\n const etagString = root.children.find((c) => c.name === \"ETag\")?.content ?? \"\";\n const lastModifiedString = root.children.find((c) => c.name === \"LastModified\")?.content;\n if (lastModifiedString === undefined) {\n throw new Error(\"Unable to find ... from the server.\");\n }\n\n return {\n copySourceVersionId: response.headers.get(\"x-amz-copy-source-version-id\") || null,\n etag: sanitizeETag(etagString),\n lastModified: new Date(lastModifiedString),\n versionId: response.headers.get(\"x-amz-version-id\") || null,\n };\n }\n\n /** Check if a bucket exists */\n public async bucketExists(bucketName: string): Promise {\n try {\n const objects = this.listObjects({ bucketName });\n // We don't need to fully list the objects, just check if we can start listing\n await objects.next();\n return true;\n } catch (err: unknown) {\n if (err instanceof errors.ServerError && err.statusCode === 404) {\n return false;\n }\n throw err;\n }\n }\n\n /** Create a new bucket */\n public async makeBucket(bucketName: string): Promise {\n await this.makeRequest({\n method: \"PUT\",\n bucketName: this.getBucketName({ bucketName }),\n objectName: \"\",\n statusCode: 200,\n });\n }\n\n /** Delete a bucket (must be empty) */\n public async removeBucket(bucketName: string): Promise {\n await this.makeRequest({\n method: \"DELETE\",\n bucketName: this.getBucketName({ bucketName }),\n objectName: \"\",\n statusCode: 204,\n });\n }\n\n /**\n * Creates a presigned POST policy that can be used to allow browser/client uploads directly to S3.\n * This is equivalent to AWS SDK's createPresignedPost functionality.\n *\n * @param objectName - Object name for which the presigned URL is generated\n * @param options - Additional options\n * @returns An object with url and fields that can be used to construct a form for direct uploads\n */\n presignedPostObject(\n objectName: string,\n options: {\n /**\n * Bucket name to use for this operation. If not specified, the default bucket name will be used.\n */\n bucketName?: string;\n /**\n * Expiry time in seconds for the presigned URL. Default is 1 hour (3600 seconds).\n */\n expirySeconds?: number;\n /**\n * Date when the presigned URL becomes valid. Default is now.\n */\n requestDate?: Date;\n /**\n * Additional policy conditions to apply.\n * See: https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-HTTPPOSTConstructPolicy.html\n */\n conditions?: PolicyCondition[];\n /**\n * Additional form fields to include in the policy and the result.\n */\n fields?: Record;\n } = {},\n ): Promise {\n if (!isValidObjectName(objectName)) {\n throw new errors.InvalidObjectNameError(objectName);\n }\n\n const bucketName = this.getBucketName(options);\n if (!bucketName) {\n throw new Error(\n \"Bucket name is required for presignedPost, but none was provided either to this method nor to the client constructor\",\n );\n }\n\n // Build request options\n const requestDate = options.requestDate || new Date();\n const expirySeconds = options.expirySeconds ?? 3600; // Default 1 hour\n\n return presignPostV4({\n protocol: this.protocol,\n host: this.host,\n bucket: bucketName,\n objectKey: objectName,\n accessKey: this.accessKey || \"\",\n secretKey: this.#secretKey || \"\",\n region: this.region,\n date: requestDate,\n expirySeconds,\n conditions: options.conditions,\n fields: options.fields,\n });\n }\n}\n","import { S3Client } from \"@bradenmacdonald/s3-lite-client\";\nimport * as IDB from \"idb-keyval\";\nimport * as URI from \"fast-uri\";\nimport QS from \"query-string\";\n\nimport { cachedConsult } from \"~/components/input/common.js\";\nimport { safeDecodeURIComponent } from \"~/common/utils.js\";\nimport { ENCODINGS, IDB_BUCKETS, SCHEME } from \"./constants.js\";\n\n/**\n * @import { Track } from \"~/definitions/types.d.ts\";\n * @import { Bucket } from \"@specs/components/input/s3/types.d.ts\";\n */\n\n////////////////////////////////////////////\n// 🛠️\n////////////////////////////////////////////\n\n/**\n * @param {Track[]} tracks\n */\nexport function bucketsFromTracks(tracks) {\n /** @type {Record} */\n const acc = {};\n\n tracks.forEach((track) => {\n const parsed = parseURI(track.uri);\n if (!parsed) return;\n\n const id = bucketId(parsed.bucket);\n if (acc[id]) return;\n\n acc[id] = parsed.bucket;\n });\n\n return acc;\n}\n\n/**\n * @param {Bucket} bucket\n */\nexport function bucketId(bucket) {\n return `${bucket.accessKey}:${bucket.secretKey}@${bucket.host}`;\n}\n\n/**\n * @param {Bucket} bucket\n * @param {string} [path]\n */\nexport function buildURI(bucket, path) {\n return URI.serialize({\n scheme: SCHEME,\n userinfo: `${bucket.accessKey}:${bucket.secretKey}`,\n host: bucket.host.replace(/^\\w+:\\/\\//, \"\"),\n path: path,\n query: QS.stringify({\n bucketName: bucket.bucketName,\n bucketPath: bucket.path,\n region: bucket.region,\n }),\n });\n}\n\n/**\n * @param {Bucket} bucket\n * @returns {Promise}\n */\nexport async function consultBucket(bucket) {\n const client = createClient(bucket);\n try {\n const exists = await client.bucketExists(bucket.bucketName);\n return exists ? \"yes\" : \"no\";\n } catch {\n // Network/credentials/transport error: inconclusive — don't let a\n // transient blip flip this bucket to \"no\" for the full consult TTL.\n return \"unsure\";\n }\n}\n\nexport const consultBucketCached = cachedConsult(consultBucket, bucketId);\n\n/**\n * @param {Bucket} bucket\n */\nexport function createClient(bucket) {\n return new S3Client({\n bucket: bucket.bucketName,\n endPoint: `http${\n bucket.host.startsWith(\"localhost\") ? \"\" : \"s\"\n }://${bucket.host}`,\n region: bucket.region,\n pathStyle: false,\n accessKey: bucket.accessKey,\n secretKey: bucket.secretKey,\n });\n}\n\n/**\n * @param {string} a\n */\nexport function encodeAwsUriComponent(a) {\n return encodeURIComponent(a).replace(\n /(\\+|!|\"|#|\\$|&|'|\\(|\\)|\\*|\\+|,|:|;|=|\\?|@)/gim,\n (match) => /** @type {any} */ (ENCODINGS)[match] ?? match,\n );\n}\n\n/**\n * @param {Track[]} tracks\n */\nexport function groupTracksByBucket(tracks) {\n /** @type {Record} */\n const acc = {};\n\n tracks.forEach((track) => {\n const parsed = parseURI(track.uri);\n if (!parsed) return acc;\n\n const id = bucketId(parsed.bucket);\n\n if (acc[id]) {\n acc[id].tracks.push(track);\n } else {\n acc[id] = { bucket: parsed.bucket, tracks: [track] };\n }\n });\n\n return acc;\n}\n\n/**\n * @param {string[]} uris\n */\nexport function groupUrisByBucket(uris) {\n /** @type {Record} */\n const acc = {};\n\n uris.forEach((uri) => {\n const parsed = parseURI(uri);\n if (!parsed) return acc;\n\n const id = bucketId(parsed.bucket);\n\n if (acc[id]) {\n acc[id].uris.push(uri);\n } else {\n acc[id] = { bucket: parsed.bucket, uris: [uri] };\n }\n });\n\n return acc;\n}\n\n/**\n * @returns {Promise>}\n */\nexport async function loadBuckets() {\n const i = await IDB.get(IDB_BUCKETS);\n return i ? i : {};\n}\n\n/**\n * @param {string} uriString\n * @returns {{ bucket: Bucket; path: string } | undefined}\n */\nexport function parseURI(uriString) {\n const uri = URI.parse(uriString);\n if (uri.scheme !== SCHEME) return undefined;\n if (!uri.host) return undefined;\n\n const [accessKey, secretKey] = uri.userinfo?.split(\":\") ?? [];\n if (!accessKey || !secretKey) return undefined;\n\n const qs = QS.parse(uri.query || \"\");\n\n const bucket = {\n accessKey,\n bucketName: typeof qs.bucketName === \"string\" ? qs.bucketName : \"\",\n host: uri.host,\n path: qs.bucketPath === \"string\" ? qs.bucketPath : \"/\",\n region: typeof qs.region === \"string\" ? qs.region : \"\",\n secretKey,\n };\n\n const path =\n (bucket.path.replace(/\\/$/, \"\") + safeDecodeURIComponent(uri.path || \"\"))\n .replace(\n /^\\//,\n \"\",\n );\n\n return { bucket, path };\n}\n\n/**\n * @param {Record} items\n */\nexport async function saveBuckets(items) {\n await IDB.set(IDB_BUCKETS, items);\n}\n"],"mappings":"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","names":["TransformChunkSizes","__name","outChunkSize","buffer","offset","chunk","controller","pos","needed","toCopy","parse","xml","document","declaration","tag","__name","match","node","eos","is","attr","attribute","m","content","child","entities","strip","val","re","prefix","S3Error","__name","InvalidArgumentError","S3Error","__name","InvalidEndpointError","InvalidBucketNameError","bucketName","InvalidObjectNameError","objectName","AccessKeyRequiredError","SecretKeyRequiredError","InvalidExpiryError","ServerError","statusCode","code","message","otherData","parseServerError","response","errorRoot","parse","c","key","resource","region","isValidPort","port","__name","isValidBucketName","bucket","isValidObjectName","objectName","isValidPrefix","prefix","bin2hex","binary","b","sanitizeETag","etag","replaceChars","m","getVersionId","headers","makeDateLong","date","dateStr","makeDateShort","getScope","region","sha256digestHex","data","multipartTagAlongMetadataKeys","ObjectUploader","__name","client","bucketName","objectName","partSize","metadata","result","nextPartNumber","uploadId","etags","multiUploadError","partsPromises","chunk","_controller","partNumber","response","sanitizeETag","getVersionId","initiateNewMultipartUpload","partHeaders","key","value","partPromise","etag","err","a","b","completeMultipartUpload","options","method","headers","responseText","root","parse","c","payload","et","etagRaw","versionId","signV4Algorithm","signV4","request","AccessKeyRequiredError","SecretKeyRequiredError","sha256sum","signedHeaders","getHeadersToSign","canonicalRequest","getCanonicalRequest","stringToSign","getStringToSign","signingKey","getSigningKey","credential","getCredential","signature","bin2hex","sha256hmac","__name","presignV4","InvalidExpiryError","resource","queryString","iso8601Date","makeDateLong","hashedPayload","newQuery","newQueryString","signingPath","encodedPath","part","headers","ignoredHeaders","headersToSign","key","CODES","ALLOWED_BYTES","s","awsUriEncode","string","allowSlashes","bytes","encoded","byte","method","path","payloadHash","headersArray","acc","headerKey","val","requestResource","requestQuery","element","requestDate","region","hash","sha256digestHex","scope","getScope","date","secretKey","dateLine","makeDateShort","hmac1","hmac2","hmac3","accessKey","data","enc","keyObject","presignPostV4","expiration","fields","conditions","value","policy","policyBytes","base64Policy","metadataKeys","minimumPartSize","maximumPartSize","maxObjectSize","Client","__name","#secretKey","endPoint","useSSL","port","pathPrefix","params","InvalidArgumentError","url","InvalidEndpointError","isValidPort","defaultPort","options","bucketName","isValidBucketName","InvalidBucketNameError","host","headers","queryAsString","basePath","querySuffix","path","encodedPath","part","method","payload","date","statusCode","sha256sum","sha256digestHex","makeDateLong","signV4","fullUrl","response","parseServerError","ServerError","objectName","isValidObjectName","InvalidObjectNameError","query","err","offset","length","range","AccessKeyRequiredError","requestDate","expirySeconds","presignV4","versionId","responseParams","otherOptions","parameters","result","continuationToken","pageSize","resultCount","maxKeys","responseText","root","parse","prefixElements","c","toYield","prefixElement","objectElement","sanitizeETag","a","b","aStr","bStr","entry","nextContinuationToken","streamOrData","size","stream","binaryData","partSize","chunker","TransformChunkSizes","uploader","ObjectUploader","metadata","header","_value","key","source","sourceBucketName","xAmzCopySource","etagString","lastModifiedString","presignPostV4","bucketsFromTracks","tracks","acc","track","parsed","parseURI","id","bucketId","__name","bucket","buildURI","path","serialize","SCHEME","query_string_default","consultBucket","client","createClient","consultBucketCached","cachedConsult","Client","encodeAwsUriComponent","a","match","ENCODINGS","groupTracksByBucket","groupUrisByBucket","uris","uri","loadBuckets","i","get","IDB_BUCKETS","uriString","parse","accessKey","secretKey","qs","safeDecodeURIComponent","saveBuckets","items","set"],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse","file":"/chunk-5VXESY2O.js.map"} \ No newline at end of file +{"version":3,"sources":["https://jsr.io/@bradenmacdonald/s3-lite-client/0.9.6/transform-chunk-sizes.ts","https://jsr.io/@bradenmacdonald/s3-lite-client/0.9.6/xml-parser.ts","https://jsr.io/@bradenmacdonald/s3-lite-client/0.9.6/errors.ts","https://jsr.io/@bradenmacdonald/s3-lite-client/0.9.6/helpers.ts","https://jsr.io/@bradenmacdonald/s3-lite-client/0.9.6/object-uploader.ts","https://jsr.io/@bradenmacdonald/s3-lite-client/0.9.6/signing.ts","https://jsr.io/@bradenmacdonald/s3-lite-client/0.9.6/client.ts","/components/input/s3/common.js"],"sourcesContent":["/**\n * This stream transform will buffer the data it receives until it has enough to form\n * a chunk of the specified size, then pass on the data in chunks of the specified size.\n */\nexport class TransformChunkSizes extends TransformStream {\n constructor(private readonly outChunkSize: number) {\n // We'll keep one internal buffer of size outChunkSize,\n // plus a current \"offset\" telling us how many bytes are in it.\n let buffer = new Uint8Array(outChunkSize);\n let offset = 0;\n\n super({\n transform(chunk, controller) {\n let pos = 0;\n while (pos < chunk.length) {\n // How many bytes remain to fill the buffer?\n const needed = outChunkSize - offset;\n // How many bytes we can copy from the incoming chunk this iteration\n const toCopy = Math.min(needed, chunk.length - pos);\n\n // Copy from chunk into our internal buffer\n buffer.set(chunk.subarray(pos, pos + toCopy), offset);\n pos += toCopy;\n offset += toCopy;\n\n // If we've filled a chunk, push it to the output, then reset\n if (offset === outChunkSize) {\n controller.enqueue(buffer);\n // We must not reuse that buffer, because it's still being read by the controller.\n buffer = new Uint8Array(outChunkSize);\n offset = 0;\n }\n }\n },\n flush(controller) {\n // If anything remains in the buffer at the end, enqueue it.\n if (offset > 0) {\n controller.enqueue(buffer.subarray(0, offset));\n }\n },\n });\n }\n}\n","/**\n * Basic XML parser for Deno\n * https://github.com/nekobato/deno-xml-parser\n * By Hayato Koriyama, MIT licensed\n * Based on https://github.com/segmentio/xml-parser (MIT licensed)\n * \"Simple non-compliant XML parser because we just need to parse some basic responses\"\n */\n\ninterface Document {\n declaration: {\n attributes: Record;\n };\n root: Xml | undefined;\n}\n\ninterface Xml {\n name: string;\n attributes: Record;\n content?: string;\n children: Xml[];\n}\n\n/**\n * Parse the given string of `xml`.\n */\nexport function parse(xml: string): Document {\n xml = xml.trim();\n\n // strip comments\n xml = xml.replace(//g, \"\");\n\n return document();\n\n /**\n * XML document.\n */\n function document(): Document {\n return {\n declaration: declaration(),\n root: tag(),\n };\n }\n\n /**\n * Declaration.\n */\n function declaration() {\n const m = match(/^<\\?xml\\s*/);\n if (!m) return;\n\n // tag.\n // deno-lint-ignore no-explicit-any\n const node: any = {\n attributes: {},\n };\n\n // attributes\n while (!(eos() || is(\"?>\"))) {\n const attr = attribute();\n if (!attr) return node;\n node.attributes[attr.name] = attr.value;\n }\n\n match(/\\?>\\s*/);\n\n return node;\n }\n\n /**\n * Tag.\n */\n function tag() {\n const m = match(/^<([\\w-:.]+)\\s*/);\n if (!m) return;\n\n // name\n const node: Xml = {\n name: m[1],\n attributes: {},\n children: [],\n };\n\n // attributes\n while (!(eos() || is(\">\") || is(\"?>\") || is(\"/>\"))) {\n const attr = attribute();\n if (!attr) return node;\n node.attributes[attr.name] = attr.value;\n }\n\n // self closing tag\n if (match(/^\\s*\\/>\\s*/)) {\n return node;\n }\n\n match(/\\??>\\s*/);\n\n // content\n node.content = content();\n\n // children\n let child;\n while ((child = tag())) {\n node.children.push(child);\n }\n\n // closing\n match(/^<\\/[\\w-:.]+>\\s*/);\n\n return node;\n }\n\n /**\n * Text content.\n */\n function content() {\n const m = match(/^([^<]*)/);\n if (m) return entities(m[1]);\n return \"\";\n }\n\n /**\n * Attribute.\n */\n function attribute() {\n const m = match(/([\\w:-]+)\\s*=\\s*(\"[^\"]*\"|'[^']*'|\\w+)\\s*/);\n if (!m) return;\n return { name: m[1], value: entities(strip(m[2])) };\n }\n\n /**\n * Strip quotes from `val`.\n */\n function strip(val: string) {\n return val.replace(/^['\"]|['\"]$/g, \"\");\n }\n\n /** Basic handling of entities: & < > */\n function entities(val: string) {\n return val.replaceAll(\"<\", \"<\").replaceAll(\">\", \">\").replaceAll(\"&\", \"&\");\n }\n\n /**\n * Match `re` and advance the string.\n */\n function match(re: RegExp) {\n const m = xml.match(re);\n if (!m) return;\n xml = xml.slice(m[0].length);\n return m;\n }\n\n /**\n * End-of-source.\n */\n function eos() {\n return xml.length === 0;\n }\n\n /**\n * Check for `prefix`.\n */\n function is(prefix: string) {\n return xml.startsWith(prefix);\n }\n}\n","/**\n * @module\n * All the errors which can be thrown by this S3 client.\n * Every error is a subclass of S3Error.\n */\n\nimport { parse as parseXML } from \"./xml-parser.ts\";\n\n/**\n * Base class for all errors raised by this S3 client.\n */\nexport class S3Error extends Error {}\n\n// Preserve API compatibility with the old name:\n/** @deprecated Use `S3Error` instead. */\nexport const DenoS3LiteClientError = S3Error;\n\n/**\n * An argument or configuration parameter was invalid.\n */\nexport class InvalidArgumentError extends S3Error {}\n\n/**\n * InvalidEndpointError is generated when an invalid end point value is\n * provided which does not follow domain standards.\n */\nexport class InvalidEndpointError extends S3Error {}\n\n/**\n * InvalidBucketNameError is generated when an invalid bucket name is\n * provided which does not follow AWS S3 specifications.\n * http://docs.aws.amazon.com/AmazonS3/latest/dev/BucketRestrictions.html\n */\nexport class InvalidBucketNameError extends S3Error {\n constructor(public readonly bucketName: string) {\n super(`Invalid bucket name: ${bucketName}`);\n }\n}\n\n/**\n * InvalidObjectNameError is generated when an invalid object name is\n * provided which does not follow AWS S3 specifications.\n * http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html\n */\nexport class InvalidObjectNameError extends S3Error {\n constructor(public readonly objectName: string) {\n super(`Invalid object name: ${objectName}`);\n }\n}\n\n/** The request cannot be made without an access key to authenticate it */\nexport class AccessKeyRequiredError extends S3Error {\n constructor() {\n super(\"accessKey is required\");\n }\n}\n\n/** The request cannot be made without a secret key to authenticate it */\nexport class SecretKeyRequiredError extends S3Error {\n constructor() {\n super(\"secretKey is required\");\n }\n}\n\n/** The expiration time for the request is invalid */\nexport class InvalidExpiryError extends S3Error {\n constructor() {\n super(\"expirySeconds cannot be less than 1 second or more than 7 days\");\n }\n}\n\n/** Any error thrown by the server */\nexport class ServerError extends S3Error {\n readonly key: string | undefined;\n readonly bucketName: string | undefined;\n readonly resource: string | undefined;\n readonly region: string | undefined;\n\n constructor(\n public readonly statusCode: number,\n public readonly code: string,\n message: string,\n otherData: { key?: string; bucketName?: string; resource?: string; region?: string } = {},\n ) {\n super(message);\n this.key = otherData.key;\n this.bucketName = otherData.bucketName;\n this.resource = otherData.resource;\n this.region = otherData.region;\n }\n}\n\n/** Helper function to parse an error returned by the S3 server. */\nexport async function parseServerError(response: Response): Promise {\n try {\n const xmlParsed = parseXML(await response.text());\n const errorRoot = xmlParsed.root;\n if (errorRoot?.name !== \"Error\") {\n throw new Error(\"Invalid root, expected \");\n }\n const code = errorRoot.children.find((c) => c.name === \"Code\")?.content ?? \"UnknownErrorCode\";\n const message = errorRoot.children.find((c) => c.name === \"Message\")?.content ??\n \"The error message could not be determined.\";\n const key = errorRoot.children.find((c) => c.name === \"Key\")?.content;\n const bucketName = errorRoot.children.find((c) => c.name === \"BucketName\")?.content;\n const resource = errorRoot.children.find((c) => c.name === \"Resource\")?.content; // e.g. the object key\n const region = errorRoot.children.find((c) => c.name === \"Region\")?.content;\n return new ServerError(response.status, code, message, { key, bucketName, resource, region });\n } catch {\n return new ServerError(\n response.status,\n \"UnrecognizedError\",\n `Error: Unexpected response code ${response.status} ${response.statusText}. Unable to parse response as XML.`,\n );\n }\n}\n","/**\n * For TypeScript 5.7+ we have to write `Uint8Array` instead of\n * `Uint8Array` or we'll get type errors in various places where arrays based\n * on SharedArrayBuffer are not allowed. This type alias will work both pre-\n * and post- TypeScript 5.7. Yes this is annoying.\n */\nexport type Uint8Array_ = ReturnType;\n\nexport function isValidPort(port: number) {\n // verify if port is a number.\n if (typeof port !== \"number\" || isNaN(port)) {\n return false;\n }\n // Verify if port is in range.\n return port >= 1 && port <= 65535;\n}\n\n/**\n * Validate a bucket name.\n *\n * This is pretty minimal, general validation. We let the remote\n * S3 server do detailed validation.\n *\n * https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html\n */\nexport function isValidBucketName(bucket: string): boolean {\n if (typeof bucket !== \"string\") {\n return false;\n }\n // Generally the bucket name length limit is 63, but\n // \"Before March 1, 2018, buckets created in the US East (N. Virginia)\n // Region could have names that were up to 255 characters long\"\n if (bucket.length > 255) {\n return false;\n }\n // \"Bucket names must not contain two adjacent periods.\"\n if (bucket.includes(\"..\")) {\n return false;\n }\n // \"Bucket names must begin and end with a letter or number.\"\n // \"Bucket names can consist only of lowercase letters, numbers,\n // periods (.), and hyphens (-).\"\n // -> Most S3 servers require lowercase bucket names but some allow\n // uppercase (Backblaze, AWS us-east buckets created before 2018)\n return Boolean(bucket.match(/^[a-zA-Z0-9][a-zA-Z0-9.-]+[a-zA-Z0-9]$/));\n}\n\n/**\n * check if objectName is a valid object name\n * http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html\n */\nexport function isValidObjectName(objectName: string) {\n if (!isValidPrefix(objectName)) return false;\n if (objectName.length === 0) return false;\n return true;\n}\n\n// check if prefix is valid\nexport function isValidPrefix(prefix: string) {\n if (typeof prefix !== \"string\") return false;\n if (prefix.length > 1024) return false;\n return true;\n}\n\n/**\n * Convert some binary data to a hex string\n */\nexport function bin2hex(binary: Uint8Array) {\n return Array.from(binary).map((b) => b.toString(16).padStart(2, \"0\")).join(\n \"\",\n );\n}\n\nexport function sanitizeETag(etag = \"\") {\n const replaceChars: Record = {\n '\"': \"\",\n \""\": \"\",\n \""\": \"\",\n \""\": \"\",\n \""\": \"\",\n };\n return etag.replace(\n /^(\"|"|")|(\"|"|")$/g,\n (m) => replaceChars[m],\n );\n}\n\nexport function getVersionId(headers: Headers): string | null {\n return headers.get(\"x-amz-version-id\") ?? null;\n}\n\n/** Create a Date string with format: 'YYYYMMDDTHHmmss' + Z */\nexport function makeDateLong(date: Date) {\n // Gives format like: '2017-08-07T16:28:59.889Z'\n const dateStr = date.toISOString();\n\n return dateStr.slice(0, 4) +\n dateStr.slice(5, 7) +\n dateStr.slice(8, 13) +\n dateStr.slice(14, 16) +\n dateStr.slice(17, 19) + \"Z\";\n}\n\n/** Create a Date string with format: 'YYYYMMDD' */\nexport function makeDateShort(date: Date) {\n return makeDateLong(date).slice(0, 8);\n}\n\nexport function getScope(region: string, date: Date) {\n return `${makeDateShort(date)}/${region}/s3/aws4_request`;\n}\n\nexport async function sha256digestHex(data: Uint8Array_ | string) {\n if (!(data instanceof Uint8Array)) {\n data = new TextEncoder().encode(data);\n }\n return bin2hex(new Uint8Array(await crypto.subtle.digest(\"SHA-256\", data)));\n}\n","import type { Client, ObjectMetadata, UploadedObjectInfo } from \"./client.ts\";\nimport { getVersionId, sanitizeETag, type Uint8Array_ } from \"./helpers.ts\";\nimport { parse as parseXML } from \"./xml-parser.ts\";\n\n// Metadata headers that must be included in each part of a multi-part upload\nconst multipartTagAlongMetadataKeys = [\n \"x-amz-server-side-encryption-customer-algorithm\",\n \"x-amz-server-side-encryption-customer-key\",\n \"x-amz-server-side-encryption-customer-key-MD5\",\n];\n\n/**\n * Stream a file to S3\n *\n * We assume that TransformChunkSizes has been used first, so that this stream\n * will always receive chunks of exactly size \"partSize\", except for the final\n * chunk.\n *\n * Note that the total size of the upload doesn't have to be known in advance,\n * as long as TransformChunkSizes was used first. Then this ObjectUploader\n * will decide based on the size of the first chunk whether it is doing a\n * single-request upload or a multi-part upload.\n */\nexport class ObjectUploader extends WritableStream {\n public readonly getResult: () => UploadedObjectInfo;\n\n constructor({ client, bucketName, objectName, partSize, metadata }: {\n client: Client;\n bucketName: string;\n objectName: string;\n partSize: number;\n metadata: Record;\n }) {\n let result: UploadedObjectInfo;\n let nextPartNumber = 1;\n let uploadId: string;\n const etags: { part: number; etag: string }[] = [];\n /** If an error occurs during multi-part uploads, we temporarily store it here. */\n let multiUploadError: Error | undefined;\n /** If doing multi-part upload, this holds a promise for each part so we can upload them in parallel */\n const partsPromises: Promise[] = [];\n\n super({\n start() {}, // required\n async write(chunk, _controller) {\n const method = \"PUT\";\n const partNumber = nextPartNumber++;\n\n try {\n // We are going to upload this file in a single part, because it's small enough\n if (partNumber == 1 && chunk.length < partSize) {\n // PUT the chunk in a single request — use an empty query.\n const response = await client.makeRequest({\n method,\n headers: new Headers({\n // Set user metadata as this is not a multipart upload\n ...metadata,\n \"Content-Length\": String(chunk.length),\n }),\n bucketName,\n objectName,\n payload: chunk,\n });\n result = {\n etag: sanitizeETag(response.headers.get(\"etag\") ?? undefined),\n versionId: getVersionId(response.headers),\n };\n return;\n }\n\n /// If we get here, this is a streaming upload in multiple parts.\n if (partNumber === 1) {\n uploadId = (await initiateNewMultipartUpload({\n client,\n bucketName,\n objectName,\n metadata,\n })).uploadId;\n }\n // Upload the next part\n const partHeaders: Record = {\n \"Content-Length\": String(chunk.length),\n };\n for (const key of multipartTagAlongMetadataKeys) {\n const value = metadata[key];\n if (value) {\n partHeaders[key] = value;\n }\n }\n const partPromise = client.makeRequest({\n method,\n query: { partNumber: partNumber.toString(), uploadId },\n headers: new Headers(partHeaders),\n bucketName: bucketName,\n objectName: objectName,\n payload: chunk,\n }).then((response) => {\n // In order to aggregate the parts together, we need to collect the etags.\n let etag = response.headers.get(\"etag\") ?? \"\";\n if (etag) {\n etag = etag.replace(/^\"/, \"\").replace(/\"$/, \"\");\n }\n etags.push({ part: partNumber, etag });\n return response;\n });\n // We can't `await partPromise` now, because that will cause the uploads to\n // happen in series instead of parallel. But we don't want to let the promise\n // throw an exception when we haven't awaited it, because that can cause the\n // process to crash. So use .catch() to watch for errors and store them in\n // `multiUploadError` if they occur.\n partsPromises.push(partPromise.catch((err) => {\n // An error occurred when uploading this one part:\n if (!multiUploadError) {\n multiUploadError = err;\n }\n }));\n } catch (err) {\n // Throwing an error will make future writes to this sink fail.\n throw err;\n }\n },\n async close() {\n if (result) {\n // This was already completed, in a single upload. Nothing more to do.\n } else if (uploadId) {\n // Wait for all parts to finish uploading (or fail)\n await Promise.all(partsPromises);\n if (multiUploadError) {\n // One or more parts failed to upload:\n throw multiUploadError;\n }\n // Sort the etags (required)\n etags.sort((a, b) => a.part > b.part ? 1 : -1);\n // Complete the multi-part upload\n result = await completeMultipartUpload({ client, bucketName, objectName, uploadId, etags });\n } else {\n throw new Error(\"Stream was closed without uploading any data.\");\n }\n },\n });\n this.getResult = () => {\n if (result === undefined) {\n throw new Error(\"Result is not ready. await the stream first.\");\n }\n return result;\n };\n }\n}\n\n/** Initiate a new multipart upload request. */\nasync function initiateNewMultipartUpload(\n options: {\n client: Client;\n bucketName: string;\n objectName: string;\n metadata?: ObjectMetadata;\n },\n): Promise<{ uploadId: string }> {\n const method = \"POST\";\n const headers = new Headers(options.metadata);\n const query = \"uploads\";\n const response = await options.client.makeRequest({\n method,\n bucketName: options.bucketName,\n objectName: options.objectName,\n query,\n headers,\n returnBody: true,\n });\n // Response is like:\n // \n // dev-bucket\n // test-32m.dat\n // 422f976b-35e0-4a55-aca7-bf2d46277f93\n // \n const responseText = await response.text();\n const root = parseXML(responseText).root;\n if (!root || root.name !== \"InitiateMultipartUploadResult\") {\n throw new Error(`Unexpected response: ${responseText}`);\n }\n const uploadId = root.children.find((c) => c.name === \"UploadId\")?.content;\n if (!uploadId) {\n throw new Error(`Unable to get UploadId from response: ${responseText}`);\n }\n return { uploadId };\n}\n\nasync function completeMultipartUpload(\n { client, bucketName, objectName, uploadId, etags }: {\n client: Client;\n bucketName: string;\n objectName: string;\n uploadId: string;\n etags: { part: number; etag: string }[];\n },\n): Promise {\n const payload = `\n \n ${etags.map((et) => ` ${et.part}${et.etag}`).join(\"\\n\")}\n \n `;\n const response = await client.makeRequest({\n method: \"POST\",\n bucketName,\n objectName,\n query: `uploadId=${encodeURIComponent(uploadId)}`,\n payload: new TextEncoder().encode(payload),\n returnBody: true,\n });\n const responseText = await response.text();\n // Example response:\n // \n // \n // http://localhost:9000/dev-bucket/test-32m.dat\n // dev-bucket\n // test-32m.dat\n // "4581589392ae60eafdb031f441858c7a-7"\n // \n const root = parseXML(responseText).root;\n if (!root || root.name !== \"CompleteMultipartUploadResult\") {\n throw new Error(`Unexpected response: ${responseText}`);\n }\n const etagRaw = root.children.find((c) => c.name === \"ETag\")?.content;\n if (!etagRaw) throw new Error(`Unable to get ETag from response: ${responseText}`);\n const versionId = getVersionId(response.headers);\n return {\n etag: sanitizeETag(etagRaw),\n versionId,\n };\n}\n","import * as errors from \"./errors.ts\";\nimport { bin2hex, getScope, makeDateLong, makeDateShort, sha256digestHex, type Uint8Array_ } from \"./helpers.ts\";\n\nconst signV4Algorithm = \"AWS4-HMAC-SHA256\";\n\n/**\n * Generate the Authorization header required to authenticate an S3/AWS request.\n */\nexport async function signV4(request: {\n headers: Headers;\n method: string;\n path: string;\n accessKey: string;\n secretKey: string;\n region: string;\n date: Date;\n}): Promise {\n if (!request.accessKey) {\n throw new errors.AccessKeyRequiredError();\n }\n if (!request.secretKey) {\n throw new errors.SecretKeyRequiredError();\n }\n\n const sha256sum = request.headers.get(\"x-amz-content-sha256\");\n if (sha256sum === null) {\n throw new Error(\n \"Internal S3 client error - expected x-amz-content-sha256 header, but it's missing.\",\n );\n }\n\n const signedHeaders = getHeadersToSign(request.headers);\n const canonicalRequest = getCanonicalRequest(\n request.method,\n request.path,\n request.headers,\n signedHeaders,\n sha256sum,\n );\n const stringToSign = await getStringToSign(\n canonicalRequest,\n request.date,\n request.region,\n );\n const signingKey = await getSigningKey(\n request.date,\n request.region,\n request.secretKey,\n );\n const credential = getCredential(\n request.accessKey,\n request.region,\n request.date,\n );\n const signature = bin2hex(await sha256hmac(signingKey, stringToSign))\n .toLowerCase();\n\n return `${signV4Algorithm} Credential=${credential}, SignedHeaders=${\n signedHeaders.join(\";\").toLowerCase()\n }, Signature=${signature}`;\n}\n\n/**\n * Generate a pre-signed URL\n */\nexport async function presignV4(request: {\n protocol: \"http:\" | \"https:\";\n headers: Headers;\n method: string;\n path: string;\n accessKey: string;\n secretKey: string;\n sessionToken?: string;\n region: string;\n date: Date;\n expirySeconds: number;\n}): Promise {\n if (!request.accessKey) {\n throw new errors.AccessKeyRequiredError();\n }\n if (!request.secretKey) {\n throw new errors.SecretKeyRequiredError();\n }\n if (request.expirySeconds < 1 || request.expirySeconds > 604800) {\n throw new errors.InvalidExpiryError();\n }\n if (!request.headers.has(\"Host\")) {\n throw new Error(\"Internal error: host header missing\");\n }\n\n // Information about the future request that we're going to sign:\n const resource = request.path.split(\"?\")[0];\n const queryString = request.path.split(\"?\")[1];\n const iso8601Date = makeDateLong(request.date);\n const signedHeaders = getHeadersToSign(request.headers);\n const credential = getCredential(request.accessKey, request.region, request.date);\n const hashedPayload = \"UNSIGNED-PAYLOAD\";\n\n // Build the query string for our new signed URL:\n const newQuery = new URLSearchParams(queryString);\n newQuery.set(\"X-Amz-Algorithm\", signV4Algorithm);\n newQuery.set(\"X-Amz-Credential\", credential);\n newQuery.set(\"X-Amz-Date\", iso8601Date);\n newQuery.set(\"X-Amz-Expires\", request.expirySeconds.toString());\n newQuery.set(\"X-Amz-SignedHeaders\", signedHeaders.join(\";\").toLowerCase());\n if (request.sessionToken) {\n newQuery.set(\"X-Amz-Security-Token\", request.sessionToken);\n }\n const newQueryString = newQuery.toString().replace(\"+\", \"%20\"); // Signing requires spaces become %20, never +\n const signingPath = resource + \"?\" + newQueryString;\n const encodedPath = resource.split(\"/\").map((part) => encodeURIComponent(part)).join(\"/\");\n\n const canonicalRequest = getCanonicalRequest(\n request.method,\n signingPath,\n request.headers,\n signedHeaders,\n hashedPayload,\n );\n const stringToSign = await getStringToSign(canonicalRequest, request.date, request.region);\n const signingKey = await getSigningKey(request.date, request.region, request.secretKey);\n const signature = bin2hex(await sha256hmac(signingKey, stringToSign)).toLowerCase();\n // deno-fmt-ignore\n const presignedUrl = `${request.protocol}//${request.headers.get(\"Host\")}${encodedPath}?${newQueryString}&X-Amz-Signature=${signature}`;\n return presignedUrl;\n}\n\n/**\n * Given the set of HTTP headers that we'll be sending with an S3/AWS request, determine which\n * headers will be signed, and in what order.\n */\nfunction getHeadersToSign(headers: Headers): string[] {\n // Excerpts from @lsegal - https://github.com/aws/aws-sdk-js/issues/659#issuecomment-120477258\n //\n // User-Agent:\n //\n // This is ignored from signing because signing this causes problems with generating pre-signed URLs\n // (that are executed by other agents) or when customers pass requests through proxies, which may\n // modify the user-agent.\n //\n // Content-Length:\n //\n // This is ignored from signing because generating a pre-signed URL should not provide a content-length\n // constraint, specifically when vending a S3 pre-signed PUT URL. The corollary to this is that when\n // sending regular requests (non-pre-signed), the signature contains a checksum of the body, which\n // implicitly validates the payload length (since changing the number of bytes would change the checksum)\n // and therefore this header is not valuable in the signature.\n //\n // Content-Type:\n //\n // Signing this header causes quite a number of problems in browser environments, where browsers\n // like to modify and normalize the content-type header in different ways. There is more information\n // on this in https://github.com/aws/aws-sdk-js/issues/244. Avoiding this field simplifies logic\n // and reduces the possibility of future bugs\n //\n // Authorization:\n //\n // Is skipped for obvious reasons\n\n const ignoredHeaders = [\n \"authorization\",\n \"content-length\",\n \"content-type\",\n \"user-agent\",\n ];\n const headersToSign = [];\n for (const key of headers.keys()) {\n if (ignoredHeaders.includes(key.toLowerCase())) {\n continue; // Ignore this header\n }\n headersToSign.push(key);\n }\n headersToSign.sort();\n return headersToSign;\n}\n\nconst CODES = {\n A: \"A\".charCodeAt(0),\n Z: \"Z\".charCodeAt(0),\n a: \"a\".charCodeAt(0),\n z: \"z\".charCodeAt(0),\n \"0\": \"0\".charCodeAt(0),\n \"9\": \"9\".charCodeAt(0),\n \"/\": \"/\".charCodeAt(0),\n};\nconst ALLOWED_BYTES = \"-._~\".split(\"\").map((s) => s.charCodeAt(0));\n\n/**\n * Canonical URI encoding for signing, per AWS documentation:\n * 1. URI encode every byte except the unreserved characters:\n * 'A'-'Z', 'a'-'z', '0'-'9', '-', '.', '_', and '~'.\n * 2. The space character must be encoded as \"%20\" (and not as \"+\").\n * 3. Each URI encoded byte is formed by a '%' and the\n * two-digit uppercase hexadecimal value of the byte. e.g. \"%1A\".\n * 4. Encode the forward slash character, '/', everywhere except\n * in the object key name. For example, if the object key name\n * is photos/Jan/sample.jpg, the forward slash in the key name\n * is not encoded.\n *\n * See https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-header-based-auth.html\n *\n * @param string the string to encode.\n */\nfunction awsUriEncode(string: string, allowSlashes = false) {\n const bytes: Uint8Array = new TextEncoder().encode(string);\n let encoded = \"\";\n for (const byte of bytes) {\n if (\n (byte >= CODES.A && byte <= CODES.Z) ||\n (byte >= CODES.a && byte <= CODES.z) ||\n (byte >= CODES[\"0\"] && byte <= CODES[\"9\"]) ||\n (ALLOWED_BYTES.includes(byte)) ||\n (byte == CODES[\"/\"] && allowSlashes)\n ) {\n encoded += String.fromCharCode(byte);\n } else {\n encoded += \"%\" + byte.toString(16).padStart(2, \"0\").toUpperCase();\n }\n }\n return encoded;\n}\n\n/**\n * getCanonicalRequest generate a canonical request of style.\n *\n * canonicalRequest =\n * \\n\n * \\n\n * \\n\n * \\n\n * \\n\n * \n */\nfunction getCanonicalRequest(\n method: string,\n path: string,\n headers: Headers,\n headersToSign: string[],\n payloadHash: string,\n): string {\n const headersArray = headersToSign.reduce((acc, headerKey) => {\n // Trim spaces from the value (required by V4 spec)\n const val = `${headers.get(headerKey)}`.replace(/ +/g, \" \");\n acc.push(`${headerKey.toLowerCase()}:${val}`);\n return acc;\n }, []);\n\n const requestResource = path.split(\"?\")[0];\n let requestQuery = path.split(\"?\")[1];\n if (requestQuery) {\n requestQuery = requestQuery\n .split(\"&\")\n .map((element) => {\n const [key, val] = element.split(\"=\", 2);\n // The input is assumed to be encoded, so we need to decode it first.\n return awsUriEncode(decodeURIComponent(key)) + \"=\" + awsUriEncode(decodeURIComponent(val || \"\"));\n })\n .sort() // sort after encoding\n .join(\"&\");\n } else {\n requestQuery = \"\";\n }\n\n // construct the canonical string from these parts:\n return [\n method.toUpperCase(),\n awsUriEncode(requestResource, true),\n requestQuery,\n headersArray.join(\"\\n\") + \"\\n\",\n headersToSign.join(\";\").toLowerCase(),\n payloadHash,\n ].join(\"\\n\");\n}\n\n// returns the string that needs to be signed\nasync function getStringToSign(\n canonicalRequest: string,\n requestDate: Date,\n region: string,\n): Promise {\n const hash = await sha256digestHex(canonicalRequest);\n const scope = getScope(region, requestDate);\n return [\n signV4Algorithm,\n makeDateLong(requestDate),\n scope,\n hash,\n ].join(\"\\n\");\n}\n\n/** returns the key used for calculating signature */\nasync function getSigningKey(\n date: Date,\n region: string,\n secretKey: string,\n): Promise {\n const dateLine = makeDateShort(date);\n const hmac1 = await sha256hmac(\"AWS4\" + secretKey, dateLine);\n const hmac2 = await sha256hmac(hmac1, region);\n const hmac3 = await sha256hmac(hmac2, \"s3\");\n return await sha256hmac(hmac3, \"aws4_request\");\n}\n\n/** generate a credential string */\nfunction getCredential(accessKey: string, region: string, requestDate: Date) {\n return `${accessKey}/${getScope(region, requestDate)}`;\n}\n\n/**\n * Given a secret key and some data, generate a HMAC of the data using SHA-256.\n */\nasync function sha256hmac(\n secretKey: Uint8Array_ | string,\n data: Uint8Array_ | string,\n): Promise {\n const enc = new TextEncoder();\n const keyObject = await crypto.subtle.importKey(\n \"raw\", // raw format of the key - should be Uint8Array\n secretKey instanceof Uint8Array ? secretKey : enc.encode(secretKey),\n { name: \"HMAC\", hash: { name: \"SHA-256\" } }, // algorithm\n false, // export = false\n [\"sign\", \"verify\"], // what this key can do\n );\n const signature = await crypto.subtle.sign(\n \"HMAC\",\n keyObject,\n data instanceof Uint8Array ? data : enc.encode(data),\n );\n return new Uint8Array(signature);\n}\n\n/**\n * Type for S3 Post Policy conditions\n * S3 allows conditions to have different shapes\n */\ntype PolicyCondition = Record | string[];\n\n/**\n * Generate a presigned POST policy that can be used to allow direct uploads to S3.\n * This is equivalent to AWS SDK's presignedPost functionality.\n */\nexport async function presignPostV4(request: {\n host: string;\n protocol: \"http:\" | \"https:\";\n bucket: string;\n objectKey: string;\n accessKey: string;\n secretKey: string;\n region: string;\n date: Date;\n expirySeconds: number;\n conditions?: PolicyCondition[];\n fields?: Record;\n}): Promise<{\n url: string;\n fields: Record;\n}> {\n if (!request.accessKey) {\n throw new errors.AccessKeyRequiredError();\n }\n if (!request.secretKey) {\n throw new errors.SecretKeyRequiredError();\n }\n if (request.expirySeconds < 1 || request.expirySeconds > 604800) {\n throw new errors.InvalidExpiryError();\n }\n\n const expiration = new Date(request.date);\n expiration.setSeconds(expiration.getSeconds() + request.expirySeconds);\n const credential = getCredential(request.accessKey, request.region, request.date);\n const iso8601Date = makeDateLong(request.date);\n\n // Default required policy fields\n const fields: Record = {\n \"X-Amz-Algorithm\": signV4Algorithm,\n \"X-Amz-Credential\": credential,\n \"X-Amz-Date\": iso8601Date,\n \"key\": request.objectKey,\n ...request.fields,\n };\n\n // Build policy document\n const conditions: PolicyCondition[] = [\n { bucket: request.bucket },\n { key: request.objectKey },\n { \"X-Amz-Algorithm\": signV4Algorithm },\n { \"X-Amz-Credential\": credential },\n { \"X-Amz-Date\": iso8601Date },\n ];\n\n // Add any additional conditions provided by the user\n if (request.conditions) {\n conditions.push(...request.conditions);\n }\n\n // Add additional fields as conditions\n for (const [key, value] of Object.entries(request.fields || {})) {\n // Skip fields that we've already added to conditions\n if ([\"key\", \"X-Amz-Algorithm\", \"X-Amz-Credential\", \"X-Amz-Date\"].includes(key)) continue;\n conditions.push({ [key]: value });\n }\n\n const policy = {\n expiration: expiration.toISOString(),\n conditions,\n };\n\n // Convert policy to base64\n const policyBytes = new TextEncoder().encode(JSON.stringify(policy));\n const base64Policy = btoa(String.fromCharCode(...policyBytes));\n fields[\"policy\"] = base64Policy;\n\n // Calculate signature\n const stringToSign = base64Policy;\n const signingKey = await getSigningKey(request.date, request.region, request.secretKey);\n const signature = bin2hex(await sha256hmac(signingKey, stringToSign)).toLowerCase();\n fields[\"X-Amz-Signature\"] = signature;\n\n // Construct the URL\n const url = `${request.protocol}//${request.host}/${request.bucket}`;\n\n return { url, fields };\n}\n\n// Export for testing purposes only\nexport const _internalMethods = {\n awsUriEncode,\n getHeadersToSign,\n getCanonicalRequest,\n getStringToSign,\n getSigningKey,\n getCredential,\n sha256hmac,\n};\n","import { TransformChunkSizes } from \"./transform-chunk-sizes.ts\";\nimport * as errors from \"./errors.ts\";\nimport {\n isValidBucketName,\n isValidObjectName,\n isValidPort,\n makeDateLong,\n sanitizeETag,\n sha256digestHex,\n type Uint8Array_,\n} from \"./helpers.ts\";\nimport { ObjectUploader } from \"./object-uploader.ts\";\nimport { presignPostV4, presignV4, signV4 } from \"./signing.ts\";\nimport { parse as parseXML } from \"./xml-parser.ts\";\n\nexport interface ClientOptions {\n /**\n * The full URL of the S3 endpoint. Can also be just the hostname (deprecated).\n * Examples: \"https://s3.eu-west-1.amazonaws.com\", \"http://localhost:9000\"\n */\n endPoint: string;\n accessKey?: string;\n secretKey?: string;\n /** If using temporary credentials, a session token is required. Otherwise you don't need this. */\n sessionToken?: string;\n /** Default bucket name, if not specified on individual requests */\n bucket?: string;\n /** Region to use, e.g. \"us-east-1\" */\n region: string;\n /** Use path-style requests, e.g. https://endpoint/bucket/object-key instead of https://bucket/object-key (default: true) */\n pathStyle?: boolean | undefined;\n /**\n * Whether to use HTTPS. Defaults to true unless http:// is explicitly specified in endPoint.\n * @deprecated Pass in a complete URL to `endPoint` instead, including 'https://' or 'http://'\n */\n useSSL?: boolean | undefined;\n /**\n * Port to use. Will be extracted from URL if provided, otherwise defaults to 80/443 based on protocol.\n * @deprecated Pass in a complete URL to `endPoint` instead, including a port number if needed.\n */\n port?: number | undefined;\n /**\n * Path prefix. Usually not required, but some API servers like Supabase S3 need this.\n * e.g. If docs say \"S3 Storage URL: http://127.0.0.1:54321/storage/v1/s3\" then pathPrefix is \"/storage/v1/s3\"\n *\n * @deprecated Pass in a complete URL to `endPoint` instead.\n */\n pathPrefix?: string;\n}\n\n/**\n * Standard Metadata (headers) that can be set when interacting with an object.\n * See https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html\n */\nconst metadataKeys = [\n \"Content-Type\",\n \"Cache-Control\",\n \"Content-Disposition\",\n \"Content-Encoding\",\n \"Content-Language\",\n \"Expires\",\n \"x-amz-checksum-sha256\",\n \"x-amz-grant-full-control\",\n \"x-amz-grant-read\",\n \"x-amz-grant-read-acp\",\n \"x-amz-grant-write-acp\",\n \"x-amz-server-side-encryption\",\n \"x-amz-storage-class\",\n \"x-amz-website-redirect-location\",\n \"x-amz-server-side-encryption-customer-algorithm\",\n \"x-amz-server-side-encryption-customer-key\",\n \"x-amz-server-side-encryption-customer-key-MD5\",\n \"x-amz-server-side-encryption-aws-kms-key-id\",\n \"x-amz-server-side-encryption-context\",\n \"x-amz-server-side-encryption-bucket-key-enabled\",\n \"x-amz-request-payer\",\n \"x-amz-tagging\",\n \"x-amz-object-lock-mode\",\n \"x-amz-object-lock-retain-until-date\",\n \"x-amz-object-lock-legal-hold\",\n \"x-amz-expected-bucket-owner\",\n] as const;\n\n/**\n * Metadata (standard and custom) that can be set when uploading an object.\n *\n * Custom keys should be like \"x-amz-meta-...\"\n */\nexport type ObjectMetadata =\n & {\n \"x-amz-acl\"?:\n | \"private\"\n | \"public-read\"\n | \"public-read-write\"\n | \"authenticated-read\"\n | \"aws-exec-read\"\n | \"bucket-owner-read\"\n | \"bucket-owner-full-control\";\n }\n & { [K in typeof metadataKeys[number]]?: string }\n & { [customMetadata: `x-amz-meta-${string}`]: string };\n\n/** Response Header Overrides\n * These parameters can be used with an authenticated or presigned get object request, to\n * override certain headers that will be sent with the response. These cannot be used with\n * anonymous requests (although some servers like MinIO do seem to allow it).\n * See https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html\n */\nexport interface ResponseOverrideParams {\n \"response-content-type\"?: string;\n \"response-content-language\"?: string;\n \"response-expires\"?: string;\n \"response-cache-control\"?: string;\n \"response-content-disposition\"?: string;\n \"response-content-encoding\"?: string;\n}\n\nexport interface UploadedObjectInfo {\n etag: string;\n versionId: string | null;\n}\n\nexport interface CopiedObjectInfo extends UploadedObjectInfo {\n lastModified: Date;\n copySourceVersionId: string | null;\n}\n\n/** Details about an object as returned by a \"list objects\" operation */\nexport interface S3Object {\n type: \"Object\";\n key: string;\n lastModified: Date;\n etag: string;\n size: number;\n}\n/**\n * When listing objects and returning a delimited result (e.g. grouped by folders),\n * this represents a group of keys with a common prefix.\n * See https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-prefixes.html\n */\nexport interface CommonPrefix {\n type: \"CommonPrefix\";\n prefix: string;\n}\n\n/**\n * Additional properties provided by `statObject` compared to `listObjects`.\n */\nexport interface ObjectStatus extends S3Object {\n versionId: string | null;\n metadata: ObjectMetadata;\n}\n\n/** The minimum allowed part size for multi-part uploads. https://docs.aws.amazon.com/AmazonS3/latest/userguide/qfacts.html */\nconst minimumPartSize = 5 * 1024 * 1024;\n/** The maximum allowed part size for multi-part uploads. https://docs.aws.amazon.com/AmazonS3/latest/userguide/qfacts.html */\nconst maximumPartSize = 5 * 1024 * 1024 * 1024;\n/** The maximum allowed object size for multi-part uploads. https://docs.aws.amazon.com/AmazonS3/latest/userguide/qfacts.html */\nconst maxObjectSize = 5 * 1024 * 1024 * 1024 * 1024;\n\n/**\n * Interface for presigned POST policy conditions\n */\nexport type PolicyCondition = Record | string[];\n\n/**\n * Interface for the result of a presigned POST request\n */\nexport interface PresignedPostResult {\n /**\n * The URL to POST the form to\n */\n url: string;\n /**\n * The fields to include in the form\n */\n fields: Record;\n}\n\n/**\n * Client for connecting to S3-compatible object storage services.\n */\nexport class Client {\n readonly host: string;\n readonly port: number;\n readonly protocol: \"https:\" | \"http:\";\n readonly accessKey?: string;\n readonly #secretKey: string;\n readonly sessionToken?: string;\n readonly defaultBucket: string | undefined;\n readonly region: string;\n readonly userAgent = \"s3-lite-client\";\n /** Use path-style requests, e.g. https://endpoint/bucket/object-key instead of https://bucket/object-key */\n readonly pathStyle: boolean;\n readonly pathPrefix?: string;\n\n constructor({ endPoint, useSSL, port, pathPrefix, ...params }: Readonly) {\n // Check if endpoint is a URL (starts with http:// or https://)\n if (/^https?:\\/\\//i.test(endPoint)) {\n if (useSSL !== undefined || port !== undefined || pathPrefix !== undefined) {\n throw new errors.InvalidArgumentError(`useSSL/port/pathPrefix cannot be specified if endPoint is a URL.`);\n }\n try {\n const url = new URL(endPoint);\n endPoint = url.hostname; // Now this is just the hostname\n useSSL = url.protocol === \"https:\";\n port = url.port ? parseInt(url.port, 10) : (useSSL ? 443 : 80);\n if (url.pathname && url.pathname !== \"/\") {\n pathPrefix = url.pathname.endsWith(\"/\") ? url.pathname.slice(0, -1) : url.pathname;\n }\n } catch {\n throw new errors.InvalidEndpointError(`Invalid endPoint URL: ${endPoint}`);\n }\n }\n\n // Now validate the extracted hostname\n if (typeof endPoint !== \"string\" || endPoint.length === 0) {\n throw new errors.InvalidEndpointError(`Invalid endPoint: ${endPoint}`);\n }\n\n // Default values if not specified.\n if (useSSL === undefined) {\n useSSL = true;\n }\n\n // Validate port\n if (port !== undefined && !isValidPort(port)) {\n throw new errors.InvalidArgumentError(`Invalid port: ${port}`);\n }\n\n // Validate credentials\n if (params.accessKey && !params.secretKey) {\n throw new errors.InvalidArgumentError(`If specifying access key, secret key must also be provided.`);\n }\n if (params.accessKey && params.accessKey.startsWith(\"ASIA\") && !params.sessionToken) {\n throw new errors.InvalidArgumentError(`If specifying temporary access key, session token must also be provided.`);\n }\n\n const defaultPort = useSSL ? 443 : 80;\n this.port = port ?? defaultPort;\n this.host = endPoint.toLowerCase() + (this.port !== defaultPort ? `:${this.port}` : \"\");\n this.protocol = useSSL ? \"https:\" : \"http:\";\n this.accessKey = params.accessKey;\n this.#secretKey = params.secretKey ?? \"\";\n this.sessionToken = params.sessionToken;\n this.pathStyle = params.pathStyle ?? true; // Default path style is true\n this.pathPrefix = pathPrefix ?? \"\";\n this.defaultBucket = params.bucket;\n this.region = params.region;\n\n if (this.pathPrefix) {\n if (!this.pathStyle) {\n throw new errors.InvalidArgumentError(`pathPrefix is incompatible with pathStyle=false`);\n }\n if (!this.pathPrefix.startsWith(\"/\")) {\n throw new errors.InvalidArgumentError(`pathPrefix should start with /`);\n }\n if (this.pathPrefix.endsWith(\"/\")) {\n throw new errors.InvalidArgumentError(`pathPrefix should not end with /`);\n }\n }\n }\n\n /** Internal helper method to figure out which bucket name to use for a request */\n protected getBucketName(options: undefined | { bucketName?: string }): string {\n const bucketName = options?.bucketName ?? this.defaultBucket;\n if (bucketName === undefined || !isValidBucketName(bucketName)) {\n throw new errors.InvalidBucketNameError(bucketName ?? \"\");\n }\n return bucketName;\n }\n\n /**\n * Common code used for both \"normal\" requests and presigned URL requests\n */\n private buildRequestOptions(options: {\n objectName: string;\n bucketName?: string;\n headers?: Headers;\n query?: string | Record;\n }): {\n headers: Headers;\n host: string;\n path: string;\n encodedPath: string;\n } {\n const bucketName = this.getBucketName(options);\n const host = this.pathStyle ? this.host : `${bucketName}.${this.host}`;\n const headers = options.headers ?? new Headers();\n headers.set(\"host\", host);\n const queryAsString = typeof options.query === \"object\"\n ? new URLSearchParams(options.query).toString().replace(\"+\", \"%20\") // Signing requires spaces become %20, never +\n : (options.query);\n\n const basePath = this.pathStyle\n ? `${this.pathPrefix}/${bucketName}/${options.objectName}`\n : `/${options.objectName}`;\n const querySuffix = queryAsString ? `?${queryAsString}` : \"\";\n const path = basePath + querySuffix;\n // For signing, we have to use the path as-is, but for making the request we have to be sure to\n // escape the '+' and '%' characters, or we'll get signing errors, at least with some S3 servers.\n const encodedPath = basePath.split(\"/\").map((part) => encodeURIComponent(part)).join(\"/\") + querySuffix;\n return { headers, host, path, encodedPath };\n }\n\n /**\n * Make a single request to S3\n */\n public async makeRequest({ method, payload, ...options }: {\n method: \"POST\" | \"GET\" | \"PUT\" | \"DELETE\" | string;\n headers?: Headers;\n query?: string | Record;\n objectName: string;\n bucketName?: string;\n /** The status code we expect the server to return */\n statusCode?: number;\n /** The request body */\n payload?: Uint8Array_ | string;\n /**\n * returnBody: We have to read the request body to avoid leaking resources.\n * So by default this method will read and ignore the body. If you actually\n * need it, set returnBody: true and this function won't touch it so that\n * the caller can read it.\n */\n returnBody?: boolean;\n }): Promise {\n const date = new Date();\n const { headers, host, path, encodedPath } = this.buildRequestOptions(options);\n const statusCode = options.statusCode ?? 200;\n\n if (\n method === \"POST\" || method === \"PUT\" || method === \"DELETE\"\n ) {\n if (payload === undefined) {\n payload = new Uint8Array();\n } else if (typeof payload === \"string\") {\n payload = new TextEncoder().encode(payload);\n }\n headers.set(\"Content-Length\", String(payload.length));\n } else if (payload) {\n throw new Error(`Unexpected payload on ${method} request.`);\n }\n const sha256sum = await sha256digestHex(payload ?? new Uint8Array());\n headers.set(\"x-amz-date\", makeDateLong(date));\n headers.set(\"x-amz-content-sha256\", sha256sum);\n if (this.accessKey) {\n if (this.sessionToken) {\n headers.set(\"x-amz-security-token\", this.sessionToken);\n }\n headers.set(\n \"authorization\",\n await signV4({\n headers,\n method,\n path,\n accessKey: this.accessKey,\n secretKey: this.#secretKey,\n region: this.region,\n date,\n }),\n );\n }\n\n const fullUrl = `${this.protocol}//${host}${encodedPath}`;\n\n const response = await fetch(fullUrl, {\n method,\n headers,\n body: payload,\n });\n\n if (response.status !== statusCode) {\n if (response.status >= 400) {\n const error = await errors.parseServerError(response);\n throw error;\n } else if (response.status === 301) {\n // Unfortunately we are not allowed to access the Location header to know what the new location is.\n throw new errors.ServerError(\n response.status,\n \"UnexpectedRedirect\",\n `The server unexpectedly returned a redirect response. With AWS S3, this usually means you need to use a ` +\n `region-specific endpoint like \"s3.us-west-2.amazonaws.com\" instead of \"s3.amazonaws.com\"`,\n );\n }\n throw new errors.ServerError(\n response.status,\n \"UnexpectedStatusCode\",\n `Unexpected response code from the server (expected ${statusCode}, got ${response.status} ${response.statusText}).`,\n );\n }\n if (!options.returnBody) {\n // Just read the body and ignore its contents, to avoid leaking resources.\n await response.body?.getReader().read();\n }\n return response;\n }\n\n /**\n * Delete a single object.\n *\n * You can also pass a versionId to delete a specific version of an object.\n */\n async deleteObject(\n objectName: string,\n options: { bucketName?: string; versionId?: string; governanceBypass?: boolean } = {},\n ) {\n const bucketName = this.getBucketName(options);\n if (!isValidObjectName(objectName)) {\n throw new errors.InvalidObjectNameError(objectName);\n }\n\n const query: Record = options.versionId ? { versionId: options.versionId } : {};\n const headers = new Headers();\n if (options.governanceBypass) {\n headers.set(\"X-Amz-Bypass-Governance-Retention\", \"true\");\n }\n\n await this.makeRequest({\n method: \"DELETE\",\n bucketName,\n objectName,\n headers,\n query,\n statusCode: 204,\n });\n }\n\n /**\n * Check if an object with the specified key exists.\n */\n public async exists(\n objectName: string,\n options?: { bucketName?: string; versionId?: string; headers?: Record },\n ): Promise {\n try {\n await this.statObject(objectName, options);\n return true;\n } catch (err: unknown) {\n if (err instanceof errors.ServerError && err.statusCode === 404) {\n return false;\n }\n throw err;\n }\n }\n\n /**\n * Get an object.\n *\n * Returns a standard HTTP Response object, which has many ways of consuming the response including\n * `.text()`, `.json()`, `.body` (ReadableStream), `.arrayBuffer()`, and `.blob()`.\n */\n public getObject(\n objectName: string,\n options?: {\n metadata?: ObjectMetadata;\n bucketName?: string;\n versionId?: string;\n responseParams?: ResponseOverrideParams;\n },\n ): Promise {\n return this.getPartialObject(objectName, { ...options, offset: 0, length: 0 });\n }\n\n /**\n * Stream a partial object, starting from the specified offset in bytes, up to the specified length in bytes.\n * A length of zero will return the rest of the object from the specified offset.\n * Pass a version UUID as \"versionId\" to download a specific version.\n *\n * Returns a standard HTTP Response object.\n */\n public async getPartialObject(\n objectName: string,\n { offset, length, ...options }: {\n offset: number;\n length: number;\n metadata?: ObjectMetadata;\n bucketName?: string;\n versionId?: string;\n responseParams?: ResponseOverrideParams;\n },\n ): Promise {\n const bucketName = this.getBucketName(options);\n if (!isValidObjectName(objectName)) {\n throw new errors.InvalidObjectNameError(objectName);\n }\n\n const headers = new Headers(Object.entries(options.metadata ?? {}));\n let statusCode = 200; // Expected status code\n if (offset || length) {\n let range = \"\";\n if (offset) {\n range = `bytes=${+offset}-`;\n } else {\n range = \"bytes=0-\";\n offset = 0;\n }\n if (length) {\n range += `${(+length + offset) - 1}`;\n }\n headers.set(\"Range\", range);\n statusCode = 206; // HTTP 206 \"Partial Content\"\n }\n\n // Create query string options\n const query: Record = {\n ...options.responseParams,\n ...(options.versionId ? { versionId: options.versionId } : {}),\n };\n return await this.makeRequest({\n method: \"GET\",\n bucketName,\n objectName,\n headers,\n query,\n statusCode,\n returnBody: true,\n });\n }\n\n /**\n * Low-level method to generate a pre-signed URL.\n * @param method The HTTP method to use for the request\n * @param objectName The object name, e.g. \"path/to/file.txt\"\n * @param options Detailed options, such as expiry time for the pre-signed URL. Use expirySeconds to specify the expiry time; default is seven days.\n */\n getPresignedUrl(\n method: \"GET\" | \"PUT\" | \"HEAD\" | \"DELETE\",\n objectName: string,\n options: { bucketName?: string; parameters?: Record; expirySeconds?: number; requestDate?: Date } =\n {},\n ): Promise {\n if (!this.accessKey) {\n throw new errors.AccessKeyRequiredError();\n }\n if (!isValidObjectName(objectName)) {\n throw new errors.InvalidObjectNameError(objectName);\n }\n const { headers, path } = this.buildRequestOptions({\n objectName,\n bucketName: options.bucketName,\n query: options.parameters,\n });\n const requestDate = options.requestDate ?? new Date();\n const expirySeconds = options.expirySeconds ?? 24 * 60 * 60 * 7; // default expiration is 7 days in seconds.\n\n return presignV4({\n protocol: this.protocol,\n headers,\n method,\n path,\n accessKey: this.accessKey,\n secretKey: this.#secretKey,\n sessionToken: this.sessionToken,\n region: this.region,\n date: requestDate,\n expirySeconds,\n });\n }\n\n /**\n * Generate a pre-signed GET request URL.\n *\n * Use options.expirySeconds to override the expiration time (default is 7 days)\n */\n presignedGetObject(\n objectName: string,\n options: {\n bucketName?: string;\n versionId?: string;\n responseParams?: ResponseOverrideParams;\n expirySeconds?: number;\n requestDate?: Date;\n } = {},\n ): Promise {\n const { versionId, responseParams, ...otherOptions } = options;\n const parameters: Record = {\n ...responseParams,\n ...(versionId ? { versionId } : {}),\n };\n return this.getPresignedUrl(\"GET\", objectName, { parameters, ...otherOptions });\n }\n\n /**\n * List objects in the bucket, optionally filtered by the given key prefix.\n *\n * This returns a flat list; use `listObjectsGrouped()` for more advanced behavior,\n * such as grouping or pagination.\n */\n public async *listObjects(\n options: {\n prefix?: string;\n bucketName?: string;\n /** Don't return more than this many results in total. Default: unlimited. */\n maxResults?: number;\n /**\n * How many keys to retrieve per HTTP request (default: 1000)\n * This is a maximum; sometimes fewer keys will be returned.\n * This will not affect the shape of the result, just its efficiency.\n */\n pageSize?: number;\n } = {},\n ): AsyncGenerator {\n for await (const result of this.listObjectsGrouped({ ...options, delimiter: \"\" })) {\n // Since we didn't specify a delimiter, listObjectsGrouped() should only return\n // actual object keys, not any CommonPrefix groupings.\n if (result.type === \"Object\") {\n yield result;\n } else {\n throw new Error(`Unexpected result from listObjectsGrouped(): ${result}`);\n }\n }\n }\n\n /**\n * List objects in the bucket, optionally grouped based on the specified \"delimiter\".\n *\n * See https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-prefixes.html for\n * details on using a delimiter.\n *\n * To retrieve results page by page with this generator, you cannot use `for await`.\n * Instead, call this with a helper function like the following:\n * ```\n * async function retrievePage(continuationToken?: string) {\n * const pageSize = 10;\n * const iterator = client.listObjectsGrouped({ continuationToken, pageSize, maxResults: pageSize });\n * const page: S3Object[] = [];\n * let r: IteratorResult;\n * while (!(r = await iterator.next()).done) { if (r.value.type === \"Object\") page.push(r.value); }\n * // Once the iterator is 'done', r.value will have the continuation token.\n * return { page, continuationToken: r.value };\n * }\n * ```\n */\n public async *listObjectsGrouped(\n options: {\n delimiter?: string;\n prefix?: string;\n bucketName?: string;\n /** Don't return more than this many results in total. Default: unlimited. */\n maxResults?: number;\n /**\n * How many keys to retrieve per HTTP request (default: 1000)\n * This is a maximum; sometimes fewer keys will be returned.\n */\n pageSize?: number;\n /** Retrieve results from later pages using this continuation token. */\n continuationToken?: string;\n },\n ): AsyncGenerator {\n const bucketName = this.getBucketName(options);\n let continuationToken = options.continuationToken ?? \"\";\n const pageSize = options.pageSize ?? 1_000;\n if (pageSize < 1 || pageSize > 1_000) {\n throw new errors.InvalidArgumentError(\"pageSize must be between 1 and 1,000.\");\n }\n let resultCount = 0; // Count the total number of results\n\n while (true) {\n // How many results to fetch in the next request:\n const maxKeys = options.maxResults ? Math.min(pageSize, options.maxResults - resultCount) : pageSize;\n if (maxKeys === 0) {\n return;\n }\n // Fetch the next page of results:\n const pageResponse = await this.makeRequest({\n method: \"GET\",\n bucketName,\n objectName: \"\",\n query: {\n \"list-type\": \"2\",\n prefix: options.prefix ?? \"\",\n delimiter: options.delimiter ?? \"\",\n \"max-keys\": String(maxKeys),\n ...(continuationToken ? { \"continuation-token\": continuationToken } : {}),\n },\n returnBody: true,\n });\n const responseText = await pageResponse.text();\n // Parse the response XML.\n // See https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html#API_ListObjectsV2_ResponseSyntax\n const root = parseXML(responseText).root;\n if (!root || root.name !== \"ListBucketResult\") {\n throw new Error(`Unexpected response: ${responseText}`);\n }\n // If a delimiter was specified, first return any common prefixes from this page of results:\n const prefixElements = root.children\n .filter((c) => c.name === \"CommonPrefixes\")\n .flatMap((c) => c.children);\n const toYield: Array = [];\n for (const prefixElement of prefixElements) {\n toYield.push({\n type: \"CommonPrefix\",\n prefix: prefixElement.content ?? \"\",\n });\n resultCount++;\n }\n // Now return all regular object keys found in the result:\n for (const objectElement of root.children.filter((c) => c.name === \"Contents\")) {\n toYield.push({\n type: \"Object\",\n key: objectElement.children.find((c) => c.name === \"Key\")?.content ?? \"\",\n etag: sanitizeETag(objectElement.children.find((c) => c.name === \"ETag\")?.content ?? \"\"),\n size: parseInt(objectElement.children.find((c) => c.name === \"Size\")?.content ?? \"\", 10),\n lastModified: new Date(objectElement.children.find((c) => c.name === \"LastModified\")?.content ?? \"invalid\"),\n });\n resultCount++;\n }\n // Now, interlace the commonprefixes and regular objects, so that the overall result stays sorted\n // in alphabetical order, instead of mixed by common prefixes first then other entries later.\n // This way guarantees consistent behavior regardless of page size.\n toYield.sort((a, b) => {\n const aStr = a.type === \"Object\" ? a.key : a.prefix;\n const bStr = b.type === \"Object\" ? b.key : b.prefix;\n return aStr > bStr ? 1 : aStr < bStr ? -1 : 0;\n });\n for (const entry of toYield) {\n yield entry;\n }\n const isTruncated = root.children.find((c) => c.name === \"IsTruncated\")?.content === \"true\";\n if (isTruncated) {\n // There are more results.\n const nextContinuationToken = root.children.find((c) => c.name === \"NextContinuationToken\")?.content;\n if (!nextContinuationToken) {\n throw new Error(\"Unexpectedly missing continuation token, but server said there are more results.\");\n }\n continuationToken = nextContinuationToken;\n if (options.maxResults && resultCount >= options.maxResults) {\n // We returned the maximum number of results.\n // Don't retrieve any more results for now; stop iteration and return the continuationToken.\n return continuationToken;\n }\n } else {\n // That's it, no more results.\n return;\n }\n }\n }\n\n /**\n * Upload an object\n */\n async putObject(\n objectName: string,\n streamOrData: ReadableStream | Uint8Array | string,\n options?: {\n metadata?: ObjectMetadata;\n size?: number;\n bucketName?: string;\n /**\n * For large uploads, split them into parts of this size.\n * Default: 64MB if object size is known, 500MB if total object size is unknown.\n * This is a minimum; larger part sizes may be required for large uploads or if the total size is unknown.\n */\n partSize?: number;\n },\n ): Promise {\n const bucketName = this.getBucketName(options);\n if (!isValidObjectName(objectName)) {\n throw new errors.InvalidObjectNameError(objectName);\n }\n\n // Prepare a readable stream for the upload:\n let size: number | undefined;\n let stream: ReadableStream;\n if (typeof streamOrData === \"string\") {\n // Convert to binary using UTF-8\n const binaryData = new TextEncoder().encode(streamOrData);\n if (typeof ReadableStream.from !== \"undefined\") {\n stream = ReadableStream.from([binaryData]);\n } else {\n // ReadableStream.from is not yet supported by some runtimes :/\n // https://github.com/oven-sh/bun/issues/3700\n // https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream/from_static#browser_compatibility\n // deno-fmt-ignore\n stream = new ReadableStream({ start(c) { c.enqueue(binaryData); c.close(); } });\n }\n size = binaryData.length;\n } else if (streamOrData instanceof Uint8Array) {\n if (typeof ReadableStream.from !== \"undefined\") {\n stream = ReadableStream.from([streamOrData]);\n } else {\n // deno-fmt-ignore\n stream = new ReadableStream({ start(c) { c.enqueue(streamOrData); c.close(); } });\n }\n size = streamOrData.byteLength;\n } else if (streamOrData instanceof ReadableStream) {\n stream = streamOrData;\n } else {\n throw new errors.InvalidArgumentError(\n `Invalid stream/data type provided.`,\n );\n }\n\n // Validate the size parameter\n if (options?.size !== undefined) {\n if (size !== undefined && options?.size !== size) {\n throw new errors.InvalidArgumentError(\n `size was specified (${options.size}) but doesn't match auto-detected size (${size}).`,\n );\n }\n if (typeof options.size !== \"number\" || options.size < 0 || isNaN(options.size)) {\n throw new errors.InvalidArgumentError(\n `invalid size specified: ${options.size}`,\n );\n } else {\n size = options.size;\n }\n }\n\n // Determine the part size, if we may need to do a multi-part upload.\n const partSize = options?.partSize ?? this.calculatePartSize(size);\n if (partSize < minimumPartSize) {\n throw new errors.InvalidArgumentError(`Part size should be greater than 5MB`);\n } else if (partSize > maximumPartSize) {\n throw new errors.InvalidArgumentError(`Part size should be less than 6MB`);\n }\n\n // s3 requires that all non-end chunks be at least `this.partSize`,\n // so we chunk the stream until we hit either that size or the end before\n // we flush it to s3.\n const chunker = new TransformChunkSizes(partSize);\n\n // This is a Writable stream that can be written to in order to upload\n // to the specified bucket and object automatically.\n const uploader = new ObjectUploader({\n client: this,\n bucketName,\n objectName,\n partSize,\n metadata: options?.metadata ?? {},\n });\n // stream => chunker => uploader\n await stream.pipeThrough(chunker).pipeTo(uploader);\n return uploader.getResult();\n }\n\n /**\n * Calculate part size given the object size. Part size will be at least this.partSize.\n *\n * Per https://docs.aws.amazon.com/AmazonS3/latest/userguide/qfacts.html we have to\n * stick to the following rules:\n * - part size between 5MB (this.maximumPartSize) and 5GB (this.maxObjectSize)\n * (the final part can be smaller than 5MB however)\n * - maximum of 10,000 parts per upload\n * - maximum object size of 5TB\n */\n protected calculatePartSize(size: number | undefined): number {\n if (size === undefined) {\n // If we don't know the total size (e.g. we're streaming data), assume it's\n // the largest allowed object size, so we can guarantee the upload works\n // regardless of the total size.\n size = maxObjectSize;\n }\n if (size > maxObjectSize) {\n throw new TypeError(`size should not be more than ${maxObjectSize}`);\n }\n let partSize = 64 * 1024 * 1024; // Start with 64MB\n while (true) {\n // If partSize is big enough to accomodate the object size, then use it.\n if ((partSize * 10_000) > size) {\n return partSize;\n }\n // Try part sizes as 64MB, 80MB, 96MB etc.\n partSize += 16 * 1024 * 1024;\n }\n }\n\n /**\n * Get detailed information about an object.\n */\n public async statObject(\n objectName: string,\n options?: {\n bucketName?: string;\n versionId?: string;\n /**\n * Additional headers to include in the request\n */\n headers?: Record;\n },\n ): Promise {\n const bucketName = this.getBucketName(options);\n if (!isValidObjectName(objectName)) {\n throw new errors.InvalidObjectNameError(objectName);\n }\n const query: Record = {};\n if (options?.versionId) {\n query.versionId = options.versionId;\n }\n\n const response = await this.makeRequest({\n method: \"HEAD\",\n bucketName,\n objectName,\n query,\n // Add custom headers if provided\n headers: new Headers(options?.headers),\n });\n\n const metadata: ObjectMetadata = {};\n for (const header of metadataKeys) {\n if (response.headers.has(header)) {\n metadata[header] = response.headers.get(header) as string;\n }\n }\n // Also add in custom metadata\n response.headers.forEach((_value, key) => {\n if (key.startsWith(\"x-amz-meta-\")) {\n metadata[key as `x-amz-meta-${string}`] = response.headers.get(key) as string;\n }\n });\n\n return {\n type: \"Object\",\n key: objectName,\n size: parseInt(response.headers.get(\"content-length\") ?? \"\", 10),\n metadata,\n lastModified: new Date(response.headers.get(\"Last-Modified\") ?? \"error: missing last modified\"),\n versionId: response.headers.get(\"x-amz-version-id\") || null,\n etag: sanitizeETag(response.headers.get(\"ETag\") ?? \"\"),\n };\n }\n\n /**\n * Copy an object into this bucket\n */\n public async copyObject(\n source: { sourceBucketName?: string; sourceKey: string; sourceVersionId?: string },\n objectName: string,\n options?: {\n bucketName?: string;\n /** Metadata for the new object. If not specified, metadata will be copied from the source. */\n metadata?: ObjectMetadata;\n },\n ): Promise {\n const bucketName = this.getBucketName(options);\n const sourceBucketName = source.sourceBucketName ?? bucketName;\n if (!isValidObjectName(objectName)) {\n throw new errors.InvalidObjectNameError(objectName);\n }\n\n // The \"x-amz-copy-source\" header is like \"bucket/objectkey\" with an optional version ID.\n // e.g. \"awsexamplebucket/reports/january.pdf?versionId=QUpfdndhfd8438MNFDN93jdnJFkdmqnh893\"\n let xAmzCopySource = `${sourceBucketName}/${\n source.sourceKey.split(\"/\").map((part) => encodeURIComponent(part)).join(\"/\")\n }`;\n if (source.sourceVersionId) xAmzCopySource += `?versionId=${source.sourceVersionId}`;\n\n const headers = new Headers(options?.metadata);\n if (options?.metadata !== undefined) {\n headers.set(\"x-amz-metadata-directive\", \"REPLACE\");\n }\n headers.set(\"x-amz-copy-source\", xAmzCopySource);\n\n const response = await this.makeRequest({ method: \"PUT\", bucketName, objectName, headers, returnBody: true });\n\n const responseText = await response.text();\n // Parse the response XML.\n // See https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html#API_CopyObject_ResponseSyntax\n const root = parseXML(responseText).root;\n if (!root || root.name !== \"CopyObjectResult\") {\n throw new Error(`Unexpected response: ${responseText}`);\n }\n const etagString = root.children.find((c) => c.name === \"ETag\")?.content ?? \"\";\n const lastModifiedString = root.children.find((c) => c.name === \"LastModified\")?.content;\n if (lastModifiedString === undefined) {\n throw new Error(\"Unable to find ... from the server.\");\n }\n\n return {\n copySourceVersionId: response.headers.get(\"x-amz-copy-source-version-id\") || null,\n etag: sanitizeETag(etagString),\n lastModified: new Date(lastModifiedString),\n versionId: response.headers.get(\"x-amz-version-id\") || null,\n };\n }\n\n /** Check if a bucket exists */\n public async bucketExists(bucketName: string): Promise {\n try {\n const objects = this.listObjects({ bucketName });\n // We don't need to fully list the objects, just check if we can start listing\n await objects.next();\n return true;\n } catch (err: unknown) {\n if (err instanceof errors.ServerError && err.statusCode === 404) {\n return false;\n }\n throw err;\n }\n }\n\n /** Create a new bucket */\n public async makeBucket(bucketName: string): Promise {\n await this.makeRequest({\n method: \"PUT\",\n bucketName: this.getBucketName({ bucketName }),\n objectName: \"\",\n statusCode: 200,\n });\n }\n\n /** Delete a bucket (must be empty) */\n public async removeBucket(bucketName: string): Promise {\n await this.makeRequest({\n method: \"DELETE\",\n bucketName: this.getBucketName({ bucketName }),\n objectName: \"\",\n statusCode: 204,\n });\n }\n\n /**\n * Creates a presigned POST policy that can be used to allow browser/client uploads directly to S3.\n * This is equivalent to AWS SDK's createPresignedPost functionality.\n *\n * @param objectName - Object name for which the presigned URL is generated\n * @param options - Additional options\n * @returns An object with url and fields that can be used to construct a form for direct uploads\n */\n presignedPostObject(\n objectName: string,\n options: {\n /**\n * Bucket name to use for this operation. If not specified, the default bucket name will be used.\n */\n bucketName?: string;\n /**\n * Expiry time in seconds for the presigned URL. Default is 1 hour (3600 seconds).\n */\n expirySeconds?: number;\n /**\n * Date when the presigned URL becomes valid. Default is now.\n */\n requestDate?: Date;\n /**\n * Additional policy conditions to apply.\n * See: https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-HTTPPOSTConstructPolicy.html\n */\n conditions?: PolicyCondition[];\n /**\n * Additional form fields to include in the policy and the result.\n */\n fields?: Record;\n } = {},\n ): Promise {\n if (!isValidObjectName(objectName)) {\n throw new errors.InvalidObjectNameError(objectName);\n }\n\n const bucketName = this.getBucketName(options);\n if (!bucketName) {\n throw new Error(\n \"Bucket name is required for presignedPost, but none was provided either to this method nor to the client constructor\",\n );\n }\n\n // Build request options\n const requestDate = options.requestDate || new Date();\n const expirySeconds = options.expirySeconds ?? 3600; // Default 1 hour\n\n return presignPostV4({\n protocol: this.protocol,\n host: this.host,\n bucket: bucketName,\n objectKey: objectName,\n accessKey: this.accessKey || \"\",\n secretKey: this.#secretKey || \"\",\n region: this.region,\n date: requestDate,\n expirySeconds,\n conditions: options.conditions,\n fields: options.fields,\n });\n }\n}\n","import { S3Client } from \"@bradenmacdonald/s3-lite-client\";\nimport * as IDB from \"idb-keyval\";\nimport * as URI from \"fast-uri\";\nimport QS from \"query-string\";\n\nimport { cachedConsult } from \"~/components/input/common.js\";\nimport { safeDecodeURIComponent } from \"~/common/utils.js\";\nimport { ENCODINGS, IDB_BUCKETS, SCHEME } from \"./constants.js\";\n\n/**\n * @import { Track } from \"~/definitions/types.d.ts\";\n * @import { Bucket } from \"@specs/components/input/s3/types.d.ts\";\n */\n\n////////////////////////////////////////////\n// 🛠️\n////////////////////////////////////////////\n\n/**\n * @param {Track[]} tracks\n */\nexport function bucketsFromTracks(tracks) {\n /** @type {Record} */\n const acc = {};\n\n tracks.forEach((track) => {\n const parsed = parseURI(track.uri);\n if (!parsed) return;\n\n const id = bucketId(parsed.bucket);\n if (acc[id]) return;\n\n acc[id] = parsed.bucket;\n });\n\n return acc;\n}\n\n/**\n * @param {Bucket} bucket\n */\nexport function bucketId(bucket) {\n return `${bucket.accessKey}:${bucket.secretKey}@${bucket.host}`;\n}\n\n/**\n * @param {Bucket} bucket\n * @param {string} [path]\n */\nexport function buildURI(bucket, path) {\n return URI.serialize({\n scheme: SCHEME,\n userinfo: `${bucket.accessKey}:${bucket.secretKey}`,\n host: bucket.host.replace(/^\\w+:\\/\\//, \"\"),\n path: path,\n query: QS.stringify({\n bucketName: bucket.bucketName,\n bucketPath: bucket.path,\n region: bucket.region,\n }),\n });\n}\n\n/**\n * @param {Bucket} bucket\n * @returns {Promise}\n */\nexport async function consultBucket(bucket) {\n const client = createClient(bucket);\n try {\n const exists = await client.bucketExists(bucket.bucketName);\n return exists ? \"yes\" : \"no\";\n } catch {\n // Network/credentials/transport error: inconclusive — don't let a\n // transient blip flip this bucket to \"no\" for the full consult TTL.\n return \"unsure\";\n }\n}\n\nexport const consultBucketCached = cachedConsult(consultBucket, bucketId);\n\n/**\n * @param {Bucket} bucket\n */\nexport function createClient(bucket) {\n return new S3Client({\n bucket: bucket.bucketName,\n endPoint: `http${\n bucket.host.startsWith(\"localhost\") ? \"\" : \"s\"\n }://${bucket.host}`,\n region: bucket.region,\n pathStyle: false,\n accessKey: bucket.accessKey,\n secretKey: bucket.secretKey,\n });\n}\n\n/**\n * @param {string} a\n */\nexport function encodeAwsUriComponent(a) {\n return encodeURIComponent(a).replace(\n /(\\+|!|\"|#|\\$|&|'|\\(|\\)|\\*|\\+|,|:|;|=|\\?|@)/gim,\n (match) => /** @type {any} */ (ENCODINGS)[match] ?? match,\n );\n}\n\n/**\n * @param {Track[]} tracks\n */\nexport function groupTracksByBucket(tracks) {\n /** @type {Record} */\n const acc = {};\n\n tracks.forEach((track) => {\n const parsed = parseURI(track.uri);\n if (!parsed) return acc;\n\n const id = bucketId(parsed.bucket);\n\n if (acc[id]) {\n acc[id].tracks.push(track);\n } else {\n acc[id] = { bucket: parsed.bucket, tracks: [track] };\n }\n });\n\n return acc;\n}\n\n/**\n * @param {string[]} uris\n */\nexport function groupUrisByBucket(uris) {\n /** @type {Record} */\n const acc = {};\n\n uris.forEach((uri) => {\n const parsed = parseURI(uri);\n if (!parsed) return acc;\n\n const id = bucketId(parsed.bucket);\n\n if (acc[id]) {\n acc[id].uris.push(uri);\n } else {\n acc[id] = { bucket: parsed.bucket, uris: [uri] };\n }\n });\n\n return acc;\n}\n\n/**\n * @returns {Promise>}\n */\nexport async function loadBuckets() {\n const i = await IDB.get(IDB_BUCKETS);\n return i ? i : {};\n}\n\n/**\n * @param {string} uriString\n * @returns {{ bucket: Bucket; path: string } | undefined}\n */\nexport function parseURI(uriString) {\n const uri = URI.parse(uriString);\n if (uri.scheme !== SCHEME) return undefined;\n if (!uri.host) return undefined;\n\n const [accessKey, secretKey] = uri.userinfo?.split(\":\") ?? [];\n if (!accessKey || !secretKey) return undefined;\n\n const qs = QS.parse(uri.query || \"\");\n\n const bucket = {\n accessKey,\n bucketName: typeof qs.bucketName === \"string\" ? qs.bucketName : \"\",\n host: uri.host,\n path: qs.bucketPath === \"string\" ? qs.bucketPath : \"/\",\n region: typeof qs.region === \"string\" ? qs.region : \"\",\n secretKey,\n };\n\n const path =\n (bucket.path.replace(/\\/$/, \"\") + safeDecodeURIComponent(uri.path || \"\"))\n .replace(\n /^\\//,\n \"\",\n );\n\n return { bucket, path };\n}\n\n/**\n * @param {Record} items\n */\nexport async function saveBuckets(items) {\n await IDB.set(IDB_BUCKETS, items);\n}\n"],"mappings":"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","names":["TransformChunkSizes","__name","outChunkSize","buffer","offset","chunk","controller","pos","needed","toCopy","parse","xml","document","declaration","tag","__name","match","node","eos","is","attr","attribute","m","content","child","entities","strip","val","re","prefix","S3Error","__name","InvalidArgumentError","S3Error","__name","InvalidEndpointError","InvalidBucketNameError","bucketName","InvalidObjectNameError","objectName","AccessKeyRequiredError","SecretKeyRequiredError","InvalidExpiryError","ServerError","statusCode","code","message","otherData","parseServerError","response","errorRoot","parse","c","key","resource","region","isValidPort","port","__name","isValidBucketName","bucket","isValidObjectName","objectName","isValidPrefix","prefix","bin2hex","binary","b","sanitizeETag","etag","replaceChars","m","getVersionId","headers","makeDateLong","date","dateStr","makeDateShort","getScope","region","sha256digestHex","data","multipartTagAlongMetadataKeys","ObjectUploader","__name","client","bucketName","objectName","partSize","metadata","result","nextPartNumber","uploadId","etags","multiUploadError","partsPromises","chunk","_controller","partNumber","response","sanitizeETag","getVersionId","initiateNewMultipartUpload","partHeaders","key","value","partPromise","etag","err","a","b","completeMultipartUpload","options","method","headers","responseText","root","parse","c","payload","et","etagRaw","versionId","signV4Algorithm","signV4","request","AccessKeyRequiredError","SecretKeyRequiredError","sha256sum","signedHeaders","getHeadersToSign","canonicalRequest","getCanonicalRequest","stringToSign","getStringToSign","signingKey","getSigningKey","credential","getCredential","signature","bin2hex","sha256hmac","__name","presignV4","InvalidExpiryError","resource","queryString","iso8601Date","makeDateLong","hashedPayload","newQuery","newQueryString","signingPath","encodedPath","part","headers","ignoredHeaders","headersToSign","key","CODES","ALLOWED_BYTES","s","awsUriEncode","string","allowSlashes","bytes","encoded","byte","method","path","payloadHash","headersArray","acc","headerKey","val","requestResource","requestQuery","element","requestDate","region","hash","sha256digestHex","scope","getScope","date","secretKey","dateLine","makeDateShort","hmac1","hmac2","hmac3","accessKey","data","enc","keyObject","presignPostV4","expiration","fields","conditions","value","policy","policyBytes","base64Policy","metadataKeys","minimumPartSize","maximumPartSize","maxObjectSize","Client","__name","#secretKey","endPoint","useSSL","port","pathPrefix","params","InvalidArgumentError","url","InvalidEndpointError","isValidPort","defaultPort","options","bucketName","isValidBucketName","InvalidBucketNameError","host","headers","queryAsString","basePath","querySuffix","path","encodedPath","part","method","payload","date","statusCode","sha256sum","sha256digestHex","makeDateLong","signV4","fullUrl","response","parseServerError","ServerError","objectName","isValidObjectName","InvalidObjectNameError","query","err","offset","length","range","AccessKeyRequiredError","requestDate","expirySeconds","presignV4","versionId","responseParams","otherOptions","parameters","result","continuationToken","pageSize","resultCount","maxKeys","responseText","root","parse","prefixElements","c","toYield","prefixElement","objectElement","sanitizeETag","a","b","aStr","bStr","entry","nextContinuationToken","streamOrData","size","stream","binaryData","partSize","chunker","TransformChunkSizes","uploader","ObjectUploader","metadata","header","_value","key","source","sourceBucketName","xAmzCopySource","etagString","lastModifiedString","presignPostV4","bucketsFromTracks","tracks","acc","track","parsed","parseURI","id","bucketId","__name","bucket","buildURI","path","serialize","SCHEME","query_string_default","consultBucket","client","createClient","consultBucketCached","cachedConsult","Client","encodeAwsUriComponent","a","match","ENCODINGS","groupTracksByBucket","groupUrisByBucket","uris","uri","loadBuckets","i","get","IDB_BUCKETS","uriString","parse","accessKey","secretKey","qs","safeDecodeURIComponent","saveBuckets","items","set"],"sourceRoot":"","file":"/chunk-5VXESY2O.js.map"} \ No newline at end of file diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-633B7KO4.js b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-633B7KO4.js similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-633B7KO4.js rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-633B7KO4.js diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-633B7KO4.js.br b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-633B7KO4.js.br similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-633B7KO4.js.br rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-633B7KO4.js.br diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-633B7KO4.js.map b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-633B7KO4.js.map similarity index 97% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-633B7KO4.js.map rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-633B7KO4.js.map index 10ddde00..50fd9216 100644 --- a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-633B7KO4.js.map +++ b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-633B7KO4.js.map @@ -1 +1 @@ -{"version":3,"sources":["/facets/themes/winamp/window/element.js"],"sourcesContent":["import { defineElement, DiffuseElement } from \"~/common/element.js\";\n\n/**\n * @import {RenderArg} from \"~/common/element.d.ts\"\n */\n\n////////////////////////////////////////////\n// ELEMENT\n////////////////////////////////////////////\n\nclass WindowElement extends DiffuseElement {\n static observedAttributes = [\"open\"];\n\n constructor() {\n super();\n\n this.id = this.id?.length ? this.id : crypto.randomUUID();\n this.attachShadow({ mode: \"open\" });\n }\n\n // ACTIONS\n\n activate() {\n this.shadowRoot?.querySelector(\".title-bar\")?.classList.remove(\"inactive\");\n }\n\n deactivate() {\n this.shadowRoot?.querySelector(\".title-bar\")?.classList.add(\"inactive\");\n }\n\n // RENDER\n\n /**\n * @param {RenderArg} _\n */\n render({ html }) {\n return html`\n \n \n\n \n\n \n
\n \n
\n \n
\n
\n \n
\n
\n \n \n \n
\n
\n
\n \n
\n \n
\n `;\n }\n\n // EVENTS\n\n /**\n * @param {MouseEvent} mouse\n */\n titleBarMouseDown(mouse) {\n const event = new CustomEvent(\"dtw-window-start-move\", {\n bubbles: true,\n composed: true,\n detail: {\n element: this,\n x: mouse.x,\n xElement: mouse.layerX,\n y: mouse.y,\n yElement: mouse.layerY,\n },\n });\n\n this.dispatchEvent(event);\n }\n}\n\nexport default WindowElement;\n\n////////////////////////////////////////////\n// REGISTER\n////////////////////////////////////////////\n\nexport const CLASS = WindowElement;\nexport const NAME = \"dtw-window\";\n\ndefineElement(NAME, WindowElement);\n"],"mappings":"uFAUA,IAAMA,EAAN,cAA4BC,CAAe,CAV3C,MAU2C,CAAAC,EAAA,sBACzC,OAAO,mBAAqB,CAAC,MAAM,EAEnC,aAAc,CACZ,MAAM,EAEN,KAAK,GAAK,KAAK,IAAI,OAAS,KAAK,GAAK,OAAO,WAAW,EACxD,KAAK,aAAa,CAAE,KAAM,MAAO,CAAC,CACpC,CAIA,UAAW,CACT,KAAK,YAAY,cAAc,YAAY,GAAG,UAAU,OAAO,UAAU,CAC3E,CAEA,YAAa,CACX,KAAK,YAAY,cAAc,YAAY,GAAG,UAAU,IAAI,UAAU,CACxE,CAOA,OAAO,CAAE,KAAAC,CAAK,EAAG,CACf,OAAOA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAgCY,KAAK,aAAa,MAAM,CAAC;AAAA;AAAA;AAAA;AAAA,0BAItB,KAAK,kBAAkB,KAAK,IAAI,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mDAWR,IACnC,KAAK,gBAAgB,MAAM,CAAC;AAAA;AAAA;AAAA,4CAGA,KAAK,aAAa,cAAc,GAChE,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA,KAMZ,CAOA,kBAAkBC,EAAO,CACvB,IAAMC,EAAQ,IAAI,YAAY,wBAAyB,CACrD,QAAS,GACT,SAAU,GACV,OAAQ,CACN,QAAS,KACT,EAAGD,EAAM,EACT,SAAUA,EAAM,OAChB,EAAGA,EAAM,EACT,SAAUA,EAAM,MAClB,CACF,CAAC,EAED,KAAK,cAAcC,CAAK,CAC1B,CACF,EAEOC,EAAQN,EAMFO,EAAQP,EACRQ,EAAO,aAEpBC,EAAcD,EAAMR,CAAa","names":["WindowElement","DiffuseElement","__name","html","mouse","event","element_default","CLASS","NAME","defineElement"],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse","file":"/chunk-633B7KO4.js.map"} \ No newline at end of file +{"version":3,"sources":["/facets/themes/winamp/window/element.js"],"sourcesContent":["import { defineElement, DiffuseElement } from \"~/common/element.js\";\n\n/**\n * @import {RenderArg} from \"~/common/element.d.ts\"\n */\n\n////////////////////////////////////////////\n// ELEMENT\n////////////////////////////////////////////\n\nclass WindowElement extends DiffuseElement {\n static observedAttributes = [\"open\"];\n\n constructor() {\n super();\n\n this.id = this.id?.length ? this.id : crypto.randomUUID();\n this.attachShadow({ mode: \"open\" });\n }\n\n // ACTIONS\n\n activate() {\n this.shadowRoot?.querySelector(\".title-bar\")?.classList.remove(\"inactive\");\n }\n\n deactivate() {\n this.shadowRoot?.querySelector(\".title-bar\")?.classList.add(\"inactive\");\n }\n\n // RENDER\n\n /**\n * @param {RenderArg} _\n */\n render({ html }) {\n return html`\n \n \n\n \n\n \n
\n \n
\n \n
\n
\n \n
\n
\n \n \n \n
\n
\n
\n \n
\n \n
\n `;\n }\n\n // EVENTS\n\n /**\n * @param {MouseEvent} mouse\n */\n titleBarMouseDown(mouse) {\n const event = new CustomEvent(\"dtw-window-start-move\", {\n bubbles: true,\n composed: true,\n detail: {\n element: this,\n x: mouse.x,\n xElement: mouse.layerX,\n y: mouse.y,\n yElement: mouse.layerY,\n },\n });\n\n this.dispatchEvent(event);\n }\n}\n\nexport default WindowElement;\n\n////////////////////////////////////////////\n// REGISTER\n////////////////////////////////////////////\n\nexport const CLASS = WindowElement;\nexport const NAME = \"dtw-window\";\n\ndefineElement(NAME, WindowElement);\n"],"mappings":"uFAUA,IAAMA,EAAN,cAA4BC,CAAe,CAV3C,MAU2C,CAAAC,EAAA,sBACzC,OAAO,mBAAqB,CAAC,MAAM,EAEnC,aAAc,CACZ,MAAM,EAEN,KAAK,GAAK,KAAK,IAAI,OAAS,KAAK,GAAK,OAAO,WAAW,EACxD,KAAK,aAAa,CAAE,KAAM,MAAO,CAAC,CACpC,CAIA,UAAW,CACT,KAAK,YAAY,cAAc,YAAY,GAAG,UAAU,OAAO,UAAU,CAC3E,CAEA,YAAa,CACX,KAAK,YAAY,cAAc,YAAY,GAAG,UAAU,IAAI,UAAU,CACxE,CAOA,OAAO,CAAE,KAAAC,CAAK,EAAG,CACf,OAAOA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAgCY,KAAK,aAAa,MAAM,CAAC;AAAA;AAAA;AAAA;AAAA,0BAItB,KAAK,kBAAkB,KAAK,IAAI,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mDAWR,IACnC,KAAK,gBAAgB,MAAM,CAAC;AAAA;AAAA;AAAA,4CAGA,KAAK,aAAa,cAAc,GAChE,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA,KAMZ,CAOA,kBAAkBC,EAAO,CACvB,IAAMC,EAAQ,IAAI,YAAY,wBAAyB,CACrD,QAAS,GACT,SAAU,GACV,OAAQ,CACN,QAAS,KACT,EAAGD,EAAM,EACT,SAAUA,EAAM,OAChB,EAAGA,EAAM,EACT,SAAUA,EAAM,MAClB,CACF,CAAC,EAED,KAAK,cAAcC,CAAK,CAC1B,CACF,EAEOC,EAAQN,EAMFO,EAAQP,EACRQ,EAAO,aAEpBC,EAAcD,EAAMR,CAAa","names":["WindowElement","DiffuseElement","__name","html","mouse","event","element_default","CLASS","NAME","defineElement"],"sourceRoot":"","file":"/chunk-633B7KO4.js.map"} \ No newline at end of file diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-4ZM3UVIB.js b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-64SCJ6UI.js similarity index 74% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-4ZM3UVIB.js rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-64SCJ6UI.js index c56b88e5..9d3aa520 100644 --- a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-4ZM3UVIB.js +++ b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-64SCJ6UI.js @@ -1,3 +1,3 @@ -import{a}from"./chunk-CFWLGXGD.js";import{c as r}from"./chunk-GVZRJ6WO.js";import{m as o}from"./chunk-XILA3E7E.js";import{a as l}from"./chunk-75KFZLU6.js";var n=document.createElement("div");n.id="elements-container";document.body.appendChild(n);var u=!1,c=!1;o(()=>{let e=r.signals.orchestrator.output();if(!e)return;let t=e.facets.collection();t.state==="loaded"&&u===!1&&(u=!0,a(t.data,n).then(()=>{c=!0}))});async function h(){let e=await r.orchestrator.output();return e.hasSelected()&&!e.selected()&&!c&&await new Promise(t=>{let s=!1,d=o(()=>{if(s){d();return}e.selected()&&(s=!0,t(null))})}),e}l(h,"output");export{h as a}; +import{a}from"./chunk-CFWLGXGD.js";import{c as r}from"./chunk-ZGJDPGVE.js";import{m as o}from"./chunk-XILA3E7E.js";import{a as l}from"./chunk-75KFZLU6.js";var n=document.createElement("div");n.id="elements-container";document.body.appendChild(n);var u=!1,c=!1;o(()=>{let e=r.signals.orchestrator.output();if(!e)return;let t=e.facets.collection();t.state==="loaded"&&u===!1&&(u=!0,a(t.data,n).then(()=>{c=!0}))});async function h(){let e=await r.orchestrator.output();return e.hasSelected()&&!e.selected()&&!c&&await new Promise(t=>{let s=!1,d=o(()=>{if(s){d();return}e.selected()&&(s=!0,t(null))})}),e}l(h,"output");export{h as a}; -//# sourceMappingURL=./chunk-4ZM3UVIB.js.map \ No newline at end of file +//# sourceMappingURL=./chunk-64SCJ6UI.js.map \ No newline at end of file diff --git a/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-64SCJ6UI.js.br b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-64SCJ6UI.js.br new file mode 100644 index 0000000000000000000000000000000000000000..497cec04288d219fbe309e756231584dd042fc74 GIT binary patch literal 341 zcmb0xXJSa1n^`@rGudInqkPt%-r3Ui7B3a%dRhgWZ>_#^z=(VEM)Qc^{Jj z;2`+)&Jy)U{cG=R30^c?LNE4QwPxblH+_c}l-7OyTkyBIma%r4*&7EB!XHZGhZm%Q;_iB;po6*+9ozZNZw znG&%kJ$ci{RZp*6>sV)IalSD4y7!`4Ci|u-ys)a1u|JW$IK=Tlbm7V?iRT-aJzCne zSZ=c4S%IC-eaB7TY&D&|bbo@Xe0rANNv~TXE{pb`T;^H1Vz)0R&m^(49qe~6rA9LY E0FiC1nE(I) literal 0 HcmV?d00001 diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-4ZM3UVIB.js.map b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-64SCJ6UI.js.map similarity index 92% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-4ZM3UVIB.js.map rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-64SCJ6UI.js.map index c5c31efc..14e0a76e 100644 --- a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-4ZM3UVIB.js.map +++ b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-64SCJ6UI.js.map @@ -1 +1 @@ -{"version":3,"sources":["/common/pages/output.js"],"sourcesContent":["import { effect } from \"~/common/signal.js\";\nimport { insertPreludes } from \"~/common/facets/prelude.js\";\nimport foundation from \"~/common/foundation.js\";\n\nconst elements = document.createElement(\"div\");\nelements.id = \"elements-container\";\ndocument.body.appendChild(elements);\n\nlet preludeInserted = false;\nlet preludeLoaded = false;\n\neffect(() => {\n const out = foundation.signals.orchestrator.output();\n if (!out) return;\n\n const col = out.facets.collection();\n if (col.state !== \"loaded\") return;\n\n if (preludeInserted === false) {\n preludeInserted = true;\n insertPreludes(col.data, elements).then(() => {\n preludeLoaded = true;\n });\n }\n});\n\nexport async function output() {\n const out = await foundation.orchestrator.output();\n\n if (out.hasSelected() && !out.selected() && !preludeLoaded) {\n await new Promise((resolve) => {\n let resolved = false;\n\n const stop = effect(() => {\n if (resolved) {\n stop();\n return;\n }\n\n const s = out.selected();\n\n if (s) {\n resolved = true;\n resolve(null);\n }\n });\n });\n }\n\n return out;\n}\n"],"mappings":"2JAIA,IAAMA,EAAW,SAAS,cAAc,KAAK,EAC7CA,EAAS,GAAK,qBACd,SAAS,KAAK,YAAYA,CAAQ,EAElC,IAAIC,EAAkB,GAClBC,EAAgB,GAEpBC,EAAO,IAAM,CACX,IAAMC,EAAMC,EAAW,QAAQ,aAAa,OAAO,EACnD,GAAI,CAACD,EAAK,OAEV,IAAME,EAAMF,EAAI,OAAO,WAAW,EAC9BE,EAAI,QAAU,UAEdL,IAAoB,KACtBA,EAAkB,GAClBM,EAAeD,EAAI,KAAMN,CAAQ,EAAE,KAAK,IAAM,CAC5CE,EAAgB,EAClB,CAAC,EAEL,CAAC,EAED,eAAsBM,GAAS,CAC7B,IAAMJ,EAAM,MAAMC,EAAW,aAAa,OAAO,EAEjD,OAAID,EAAI,YAAY,GAAK,CAACA,EAAI,SAAS,GAAK,CAACF,GAC3C,MAAM,IAAI,QAASO,GAAY,CAC7B,IAAIC,EAAW,GAETC,EAAOR,EAAO,IAAM,CACxB,GAAIO,EAAU,CACZC,EAAK,EACL,MACF,CAEUP,EAAI,SAAS,IAGrBM,EAAW,GACXD,EAAQ,IAAI,EAEhB,CAAC,CACH,CAAC,EAGIL,CACT,CAxBsBQ,EAAAJ,EAAA","names":["elements","preludeInserted","preludeLoaded","effect","out","foundation_default","col","insertPreludes","output","resolve","resolved","stop","__name"],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse","file":"/chunk-4ZM3UVIB.js.map"} \ No newline at end of file +{"version":3,"sources":["/common/pages/output.js"],"sourcesContent":["import { effect } from \"~/common/signal.js\";\nimport { insertPreludes } from \"~/common/facets/prelude.js\";\nimport foundation from \"~/common/foundation.js\";\n\nconst elements = document.createElement(\"div\");\nelements.id = \"elements-container\";\ndocument.body.appendChild(elements);\n\nlet preludeInserted = false;\nlet preludeLoaded = false;\n\neffect(() => {\n const out = foundation.signals.orchestrator.output();\n if (!out) return;\n\n const col = out.facets.collection();\n if (col.state !== \"loaded\") return;\n\n if (preludeInserted === false) {\n preludeInserted = true;\n insertPreludes(col.data, elements).then(() => {\n preludeLoaded = true;\n });\n }\n});\n\nexport async function output() {\n const out = await foundation.orchestrator.output();\n\n if (out.hasSelected() && !out.selected() && !preludeLoaded) {\n await new Promise((resolve) => {\n let resolved = false;\n\n const stop = effect(() => {\n if (resolved) {\n stop();\n return;\n }\n\n const s = out.selected();\n\n if (s) {\n resolved = true;\n resolve(null);\n }\n });\n });\n }\n\n return out;\n}\n"],"mappings":"2JAIA,IAAMA,EAAW,SAAS,cAAc,KAAK,EAC7CA,EAAS,GAAK,qBACd,SAAS,KAAK,YAAYA,CAAQ,EAElC,IAAIC,EAAkB,GAClBC,EAAgB,GAEpBC,EAAO,IAAM,CACX,IAAMC,EAAMC,EAAW,QAAQ,aAAa,OAAO,EACnD,GAAI,CAACD,EAAK,OAEV,IAAME,EAAMF,EAAI,OAAO,WAAW,EAC9BE,EAAI,QAAU,UAEdL,IAAoB,KACtBA,EAAkB,GAClBM,EAAeD,EAAI,KAAMN,CAAQ,EAAE,KAAK,IAAM,CAC5CE,EAAgB,EAClB,CAAC,EAEL,CAAC,EAED,eAAsBM,GAAS,CAC7B,IAAMJ,EAAM,MAAMC,EAAW,aAAa,OAAO,EAEjD,OAAID,EAAI,YAAY,GAAK,CAACA,EAAI,SAAS,GAAK,CAACF,GAC3C,MAAM,IAAI,QAASO,GAAY,CAC7B,IAAIC,EAAW,GAETC,EAAOR,EAAO,IAAM,CACxB,GAAIO,EAAU,CACZC,EAAK,EACL,MACF,CAEUP,EAAI,SAAS,IAGrBM,EAAW,GACXD,EAAQ,IAAI,EAEhB,CAAC,CACH,CAAC,EAGIL,CACT,CAxBsBQ,EAAAJ,EAAA","names":["elements","preludeInserted","preludeLoaded","effect","out","foundation_default","col","insertPreludes","output","resolve","resolved","stop","__name"],"sourceRoot":"","file":"/chunk-64SCJ6UI.js.map"} \ No newline at end of file diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-6BX44RWC.js b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-6BX44RWC.js similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-6BX44RWC.js rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-6BX44RWC.js diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-6BX44RWC.js.br b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-6BX44RWC.js.br similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-6BX44RWC.js.br rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-6BX44RWC.js.br diff --git a/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-6BX44RWC.js.map b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-6BX44RWC.js.map new file mode 100644 index 00000000..5ff8f2e8 --- /dev/null +++ b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-6BX44RWC.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["/oauth/lock.js"],"sourcesContent":["// Both atproto and rocksky oauth modules import from the same\n// @atcute/oauth-browser-client instance, which holds a single global `database`\n// reference that configureOAuth() replaces on every call. When both elements\n// are on the same page their concurrent restoreOrFinalize() calls interleave:\n// module B's configureOAuth fires while module A's finalizeAuthorization is\n// mid-flight, so A's storeSession() ends up writing to B's localStorage\n// namespace. The session is \"lost\" on the next page load.\n//\n// This lock serialises all library operations so only one module at a time\n// owns the global state.\n\n/** @type {Promise} */\nlet _chain = Promise.resolve();\n\n/**\n * Run `fn` after all previously-enqueued OAuth operations complete.\n * Errors in `fn` propagate to the caller but do NOT block future operations.\n *\n * @template T\n * @param {() => Promise} fn\n * @returns {Promise}\n */\nexport function withOAuthLock(fn) {\n /** @type {Promise} */\n const result = _chain.then(fn);\n _chain = result.catch(() => {});\n return result;\n}\n"],"mappings":"wCAYA,IAAIA,EAAS,QAAQ,QAAQ,EAUtB,SAASC,EAAcC,EAAI,CAEhC,IAAMC,EAASH,EAAO,KAAKE,CAAE,EAC7B,OAAAF,EAASG,EAAO,MAAM,IAAM,CAAC,CAAC,EACvBA,CACT,CALgBC,EAAAH,EAAA","names":["_chain","withOAuthLock","fn","result","__name"],"sourceRoot":"","file":"/chunk-6BX44RWC.js.map"} \ No newline at end of file diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-NR4ANXJA.js b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-6MEKFGL7.js similarity index 97% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-NR4ANXJA.js rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-6MEKFGL7.js index 9d22574f..969e1d6f 100644 --- a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-NR4ANXJA.js +++ b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-6MEKFGL7.js @@ -1,3 +1,3 @@ -import{b as q}from"./chunk-ZGMMU2IC.js";import{a as E}from"./chunk-4ZM3UVIB.js";import{b as L}from"./chunk-CT5QLUQL.js";import{m as S}from"./chunk-XILA3E7E.js";import{a as b}from"./chunk-75KFZLU6.js";function R(){let g=document.querySelectorAll(".grid-filter button[data-filter]"),a=document.querySelectorAll(".grid-item"),n=document.querySelector(".grid-filter--categories"),l=[...new Set([...a].map(o=>o.dataset.category).filter(Boolean))].sort(),r=null,t=null;if(n&&l.length>1){r=document.createElement("span"),r.textContent="All";let o=document.createElement("button");o.className="button--border button--tiny button--transparent",o.setAttribute("popovertarget","grid-category-menu");let s=document.createElement("span");s.className="with-icon",s.appendChild(r);let u=document.createElement("i");u.className="ph-bold ph-caret-down",s.appendChild(u),o.appendChild(s),t=document.createElement("div"),t.id="grid-category-menu",t.className="dropdown",t.setAttribute("popover","");for(let d of["all",...l]){let y=document.createElement("button");y.dataset.category=d,y.textContent=d==="all"?"All":d,y.addEventListener("click",()=>{i=d;let A=new URL(location.href);d==="all"?A.searchParams.delete("category"):A.searchParams.set("category",d),history.replaceState(null,"",A),t?.hidePopover(),p(c,i)}),t.appendChild(y)}n.appendChild(o),n.appendChild(t)}let h="diffuse/dashboard/filter",c="all",i="all";function p(o,s){g.forEach(u=>{let d=u.dataset.filter!==o;u.classList.contains("button--transparent")!==d&&u.classList.toggle("button--transparent",d)}),r&&(r.textContent=s==="all"?"All":s),a.forEach(u=>{let d=(u.dataset.tags??"").split(",").includes("base");if(o==="base")u.hidden=!d;else{let y=o==="all"||u.dataset.kind===o,A=s==="all"||u.dataset.category===s;u.hidden=!(y&&A&&!d)}})}b(p,"applyFilter"),g.forEach(o=>{o.addEventListener("click",()=>{c=o.dataset.filter??"all",localStorage.setItem(h,c);let s=new URL(location.href);s.searchParams.delete("filter"),history.replaceState(null,"",s),p(c,i)})});let m=new URL(location.href),f=m.searchParams.get("filter"),e=localStorage.getItem(h);c=f==="prelude"||f==="interface"||f==="base"||f==="all"?f:e==="prelude"||e==="interface"||e==="base"?e:"all",i=m.searchParams.get("category")??"all",p(c,i)}b(R,"setupFilter");function k(){let g=document.querySelectorAll(".grid li");for(let a of g){let n=a.querySelector("button[data-action='toggle']");n&&n.addEventListener("click",async()=>{let l=a.getAttribute("data-uri"),r=a.getAttribute("data-name"),t=a.getAttribute("data-kind")??void 0,h=a.getAttribute("data-description")??void 0,c=a.getAttribute("data-tags"),i=c?c.split(",").filter(Boolean):void 0;if(!l||!r)return;let p=await E(),m=await q(p.facets);if(m.some(e=>e.uri===l&&e.resources===void 0))p.facets.save(m.filter(e=>e.uri!==l));else{let e=await L({description:h,kind:t,name:r,tags:i,uri:l},{fetchHTML:!1});p.facets.save([...m,e])}})}}b(k,"insertToggleButtons");var v;async function B(){v&&v();let g=await E();v=S(()=>{let a=document.querySelectorAll(".grid li"),n=g.facets.collection(),l=n.state==="loaded"?n.data:[],r=new Map(l.map(t=>[t.uri,t]));for(let t of a){let h=t.getAttribute("data-uri"),c=t.querySelector(".grid-item__menu"),i=t.querySelector("button[data-action='toggle']"),p=i?.querySelector("i");if(!c||!i||!p||!h)continue;let m=r.get(h),f=m&&m.resources===void 0,e=t.dataset.kind==="prelude";c.classList.toggle("grid-item__menu--active",f??!1),i.style.opacity="revert-layer",i.title=f?e?"Remove feature":"Unpin interface":e?"Add feature":"Pin interface",p.className=f?e?"ph-bold ph-check":"ph-fill ph-push-pin":e?"ph-bold ph-plus":"ph-bold ph-push-pin",p.style.transform=f&&!e?"rotate(-45deg)":""}})}b(B,"monitorToggleButtonStates");var w;async function M(){w&&w();let g=document.querySelector(".grid-filter");if(!g)return;let a=await E(),n=g.querySelector(".grid-filter--output");if(!n)return;let l=g.querySelector(".grid-filter--label-output");l&&(setTimeout(()=>{n.style.opacity="1",l.style.opacity="0.4"},250),w=S(()=>{let r=a.selected(),t=r?.label??r?.getAttribute?.("label")??"Local storage";n.textContent=t}))}b(M,"setupOutputIndicator");export{R as a,k as b,B as c,M as d}; +import{b as q}from"./chunk-ZGMMU2IC.js";import{a as E}from"./chunk-64SCJ6UI.js";import{b as L}from"./chunk-CT5QLUQL.js";import{m as S}from"./chunk-XILA3E7E.js";import{a as b}from"./chunk-75KFZLU6.js";function R(){let g=document.querySelectorAll(".grid-filter button[data-filter]"),a=document.querySelectorAll(".grid-item"),n=document.querySelector(".grid-filter--categories"),l=[...new Set([...a].map(o=>o.dataset.category).filter(Boolean))].sort(),r=null,t=null;if(n&&l.length>1){r=document.createElement("span"),r.textContent="All";let o=document.createElement("button");o.className="button--border button--tiny button--transparent",o.setAttribute("popovertarget","grid-category-menu");let s=document.createElement("span");s.className="with-icon",s.appendChild(r);let u=document.createElement("i");u.className="ph-bold ph-caret-down",s.appendChild(u),o.appendChild(s),t=document.createElement("div"),t.id="grid-category-menu",t.className="dropdown",t.setAttribute("popover","");for(let d of["all",...l]){let y=document.createElement("button");y.dataset.category=d,y.textContent=d==="all"?"All":d,y.addEventListener("click",()=>{i=d;let A=new URL(location.href);d==="all"?A.searchParams.delete("category"):A.searchParams.set("category",d),history.replaceState(null,"",A),t?.hidePopover(),p(c,i)}),t.appendChild(y)}n.appendChild(o),n.appendChild(t)}let h="diffuse/dashboard/filter",c="all",i="all";function p(o,s){g.forEach(u=>{let d=u.dataset.filter!==o;u.classList.contains("button--transparent")!==d&&u.classList.toggle("button--transparent",d)}),r&&(r.textContent=s==="all"?"All":s),a.forEach(u=>{let d=(u.dataset.tags??"").split(",").includes("base");if(o==="base")u.hidden=!d;else{let y=o==="all"||u.dataset.kind===o,A=s==="all"||u.dataset.category===s;u.hidden=!(y&&A&&!d)}})}b(p,"applyFilter"),g.forEach(o=>{o.addEventListener("click",()=>{c=o.dataset.filter??"all",localStorage.setItem(h,c);let s=new URL(location.href);s.searchParams.delete("filter"),history.replaceState(null,"",s),p(c,i)})});let m=new URL(location.href),f=m.searchParams.get("filter"),e=localStorage.getItem(h);c=f==="prelude"||f==="interface"||f==="base"||f==="all"?f:e==="prelude"||e==="interface"||e==="base"?e:"all",i=m.searchParams.get("category")??"all",p(c,i)}b(R,"setupFilter");function k(){let g=document.querySelectorAll(".grid li");for(let a of g){let n=a.querySelector("button[data-action='toggle']");n&&n.addEventListener("click",async()=>{let l=a.getAttribute("data-uri"),r=a.getAttribute("data-name"),t=a.getAttribute("data-kind")??void 0,h=a.getAttribute("data-description")??void 0,c=a.getAttribute("data-tags"),i=c?c.split(",").filter(Boolean):void 0;if(!l||!r)return;let p=await E(),m=await q(p.facets);if(m.some(e=>e.uri===l&&e.resources===void 0))p.facets.save(m.filter(e=>e.uri!==l));else{let e=await L({description:h,kind:t,name:r,tags:i,uri:l},{fetchHTML:!1});p.facets.save([...m,e])}})}}b(k,"insertToggleButtons");var v;async function B(){v&&v();let g=await E();v=S(()=>{let a=document.querySelectorAll(".grid li"),n=g.facets.collection(),l=n.state==="loaded"?n.data:[],r=new Map(l.map(t=>[t.uri,t]));for(let t of a){let h=t.getAttribute("data-uri"),c=t.querySelector(".grid-item__menu"),i=t.querySelector("button[data-action='toggle']"),p=i?.querySelector("i");if(!c||!i||!p||!h)continue;let m=r.get(h),f=m&&m.resources===void 0,e=t.dataset.kind==="prelude";c.classList.toggle("grid-item__menu--active",f??!1),i.style.opacity="revert-layer",i.title=f?e?"Remove feature":"Unpin interface":e?"Add feature":"Pin interface",p.className=f?e?"ph-bold ph-check":"ph-fill ph-push-pin":e?"ph-bold ph-plus":"ph-bold ph-push-pin",p.style.transform=f&&!e?"rotate(-45deg)":""}})}b(B,"monitorToggleButtonStates");var w;async function M(){w&&w();let g=document.querySelector(".grid-filter");if(!g)return;let a=await E(),n=g.querySelector(".grid-filter--output");if(!n)return;let l=g.querySelector(".grid-filter--label-output");l&&(setTimeout(()=>{n.style.opacity="1",l.style.opacity="0.4"},250),w=S(()=>{let r=a.selected(),t=r?.label??r?.getAttribute?.("label")??"Local storage";n.textContent=t}))}b(M,"setupOutputIndicator");export{R as a,k as b,B as c,M as d}; -//# sourceMappingURL=./chunk-NR4ANXJA.js.map \ No newline at end of file +//# sourceMappingURL=./chunk-6MEKFGL7.js.map \ No newline at end of file diff --git a/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-6MEKFGL7.js.br b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-6MEKFGL7.js.br new file mode 100644 index 0000000000000000000000000000000000000000..3619a5f7c5535a82060d727aabb76ea113ebebca GIT binary patch literal 1590 zcmb2P5MX$+Df8?8^W47L%QO|NgLE>{Et2T=A2k*YOhja zzzVJK-;+-|87*!6K8xvcLZ`<$**||6D&>^z-Y@tDOJs9d2INeQe?V=xXvh2J)PI;-L8lIG9u#|$2L zohmBa;BxKDcF)Jpg4Z#4UOG^nwT9*7H?x^ur$67{{X=UllY->O*~NKR^?t5V`u)do z=c8tsnZoRSpMzyWo*drvZh~;t1X=6!DO)Y8VO(Hld(C< zetzMOzs*P2C%Q{4WmP$U_4bNPURD`N=A{De&)AX|hB8mZ?hfVOCzt%HI zW)#~i#wPmSYlUN%)35saZ5N+wEKa)iiIu_1sY~>I>0-MR?-<)mHqA0QS0TZ0r>1># zuFnz0j~$;c*}Y~p*_FF|ftQPQnrgF7 z<|ReahK!AxQLxW5bQ74MZ26+~jC+;>Hfo-OJi-JZ!L#MdO~^MJ+!w^pVRh!&P9dWl$F&l9 zf9L+Kh*Q(v*!Ex@)9I)!O3xREXQUmfyYKQ%rIDrmj#9wU^Aq3cTolX7nWN?MG-Q>5 zn73c4Ujs)>%unv@Z=DJ&EP5xrI+K%Q=6UeYkqmw<57n2)^fOy~-nX4`)Y)-US$X$) zckKh0(q@J#Pw7{RZIWb3KJhGtZOYFlr5)QYE^1j4TQ|SzP6M~*v(JksSg%YjIyRy0Jomqi z6JIyUG$;SK-N4$8lrgTkk#=)h6hpkV;YSOff*n%p(PjvM; zZ#<`U;oPQ@$zHD!Vk~rQm%md-`b(yFkkT=U{>!u0tvS5n=Aw*qU+QmaE!ei|(sGX~X|rcqDWL~m z-kg#g$0){_xz9bC{bJavCjV8xCQn-R!Aj%7YT2#6d!8I^UG-o^W)<(h0^^CtTm&bY zs;uU%3e8`T!I!_)aPBe9FF#l47S?`WbkXPGsmosHLZ!r8Ke2r&7m^dqowjrp)B8mi zgMW5U?|mh})gbZOO3b^a*>S-I*ELG#=58o?>r~d)tsThAR(eit8O!Aj@v|RB#i@v% z?mNZfF1oYtgxloQHE-O)Y?fSY)1A*W^ILt@q4)zn=i}@gZ_Tu4VF-Hmd*<=;Uqt7Z z7l-~l#lx+A?tw;E|36om@JR)GCA?-|`)Hx;amgs_(syl-owwr7ym!%BeS6pKzn$K< SY9zKTd%R)RG}f~*|JVW0*$nmo literal 0 HcmV?d00001 diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-NR4ANXJA.js.map b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-6MEKFGL7.js.map similarity index 99% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-NR4ANXJA.js.map rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-6MEKFGL7.js.map index 1a323f92..823a3fa6 100644 --- a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-NR4ANXJA.js.map +++ b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-6MEKFGL7.js.map @@ -1 +1 @@ -{"version":3,"sources":["/common/pages/grid.js"],"sourcesContent":["import * as Output from \"~/common/output.js\";\nimport { facetFromURI } from \"~/common/facets/utils.js\";\nimport { effect } from \"~/common/signal.js\";\n\nimport { output } from \"./output.js\";\n\n////////////////////////////////////////////\n// FILTER\n////////////////////////////////////////////\n\nexport function setupFilter() {\n /** @type {NodeListOf} */\n const kindButtons = document.querySelectorAll(\n \".grid-filter button[data-filter]\",\n );\n\n /** @type {NodeListOf} */\n const items = document.querySelectorAll(\".grid-item\");\n\n // Build category buttons from the categories present in the current grid\n const categoriesEl = document.querySelector(\".grid-filter--categories\");\n const categories = /** @type {string[]} */ (\n [...new Set([...items].map((i) => i.dataset.category).filter(Boolean))]\n .sort()\n );\n\n /** @type {HTMLElement | null} */\n let categoryLabelEl = null;\n /** @type {HTMLElement | null} */\n let categoryMenuEl = null;\n\n if (categoriesEl && categories.length > 1) {\n categoryLabelEl = document.createElement(\"span\");\n categoryLabelEl.textContent = \"All\";\n\n const triggerBtn = document.createElement(\"button\");\n triggerBtn.className = \"button--border button--tiny button--transparent\";\n triggerBtn.setAttribute(\"popovertarget\", \"grid-category-menu\");\n const span = document.createElement(\"span\");\n span.className = \"with-icon\";\n span.appendChild(categoryLabelEl);\n const caret = document.createElement(\"i\");\n caret.className = \"ph-bold ph-caret-down\";\n span.appendChild(caret);\n triggerBtn.appendChild(span);\n\n categoryMenuEl = document.createElement(\"div\");\n categoryMenuEl.id = \"grid-category-menu\";\n categoryMenuEl.className = \"dropdown\";\n categoryMenuEl.setAttribute(\"popover\", \"\");\n\n for (const cat of [\"all\", ...categories]) {\n const item = document.createElement(\"button\");\n item.dataset.category = cat;\n item.textContent = cat === \"all\" ? \"All\" : cat;\n item.addEventListener(\"click\", () => {\n activeCategory = cat;\n const url = new URL(location.href);\n if (cat === \"all\") url.searchParams.delete(\"category\");\n else url.searchParams.set(\"category\", cat);\n history.replaceState(null, \"\", url);\n categoryMenuEl?.hidePopover();\n applyFilter(activeKind, activeCategory);\n });\n categoryMenuEl.appendChild(item);\n }\n\n categoriesEl.appendChild(triggerBtn);\n categoriesEl.appendChild(categoryMenuEl);\n }\n\n const FILTER_KIND_STORAGE_KEY = \"diffuse/dashboard/filter\";\n\n let activeKind = \"all\";\n let activeCategory = \"all\";\n\n /**\n * @param {string} kind\n * @param {string} category\n */\n function applyFilter(kind, category) {\n kindButtons.forEach((b) => {\n const transparent = b.dataset.filter !== kind;\n if (b.classList.contains(\"button--transparent\") !== transparent) {\n b.classList.toggle(\"button--transparent\", transparent);\n }\n });\n if (categoryLabelEl) {\n categoryLabelEl.textContent = category === \"all\" ? \"All\" : category;\n }\n items.forEach((item) => {\n const isBase = (item.dataset.tags ?? \"\").split(\",\").includes(\"base\");\n if (kind === \"base\") {\n item.hidden = !isBase;\n } else {\n const kindMatch = kind === \"all\" || item.dataset.kind === kind;\n const catMatch = category === \"all\" ||\n item.dataset.category === category;\n item.hidden = !(kindMatch && catMatch && !isBase);\n }\n });\n }\n\n kindButtons.forEach((b) => {\n b.addEventListener(\"click\", () => {\n activeKind = b.dataset.filter ?? \"all\";\n localStorage.setItem(FILTER_KIND_STORAGE_KEY, activeKind);\n const url = new URL(location.href);\n url.searchParams.delete(\"filter\");\n history.replaceState(null, \"\", url);\n applyFilter(activeKind, activeCategory);\n });\n });\n\n const url = new URL(location.href);\n const filterParam = url.searchParams.get(\"filter\");\n const storedKind = localStorage.getItem(FILTER_KIND_STORAGE_KEY);\n activeKind = filterParam === \"prelude\" || filterParam === \"interface\" ||\n filterParam === \"base\" || filterParam === \"all\"\n ? filterParam\n : storedKind === \"prelude\" || storedKind === \"interface\" ||\n storedKind === \"base\"\n ? storedKind\n : \"all\";\n activeCategory = url.searchParams.get(\"category\") ?? \"all\";\n applyFilter(activeKind, activeCategory);\n}\n\n////////////////////////////////////////////\n// TOGGLE BUTTONS\n////////////////////////////////////////////\n\nexport function insertToggleButtons() {\n const gridItems = /** @type {NodeListOf} */ (\n document.querySelectorAll(\".grid li\")\n );\n\n for (const li of gridItems) {\n const button = li.querySelector(\"button[data-action='toggle']\");\n if (!button) continue;\n\n button.addEventListener(\"click\", async () => {\n const uri = li.getAttribute(\"data-uri\");\n const name = li.getAttribute(\"data-name\");\n const kind = li.getAttribute(\"data-kind\") ?? undefined;\n const description = li.getAttribute(\"data-description\") ?? undefined;\n const tagsRaw = li.getAttribute(\"data-tags\");\n const tags = tagsRaw ? tagsRaw.split(\",\").filter(Boolean) : undefined;\n\n if (!uri || !name) return;\n\n const out = await output();\n const collection = await Output.data(out.facets);\n const isActive = collection.some((f) =>\n f.uri === uri && f.resources === undefined\n );\n\n if (isActive) {\n out.facets.save(collection.filter((f) => f.uri !== uri));\n } else {\n const facet = await facetFromURI(\n { description, kind, name, tags, uri },\n {\n fetchHTML: false,\n },\n );\n out.facets.save([...collection, facet]);\n }\n });\n }\n}\n\n////////////////////////////////////////////\n// SYNC ACTIVE STATES\n////////////////////////////////////////////\n\n/** @type {() => void | undefined} */\nlet stopMonitor;\n\nexport async function monitorToggleButtonStates() {\n if (stopMonitor) stopMonitor();\n const out = await output();\n\n stopMonitor = effect(() => {\n const gridItems = /** @type {NodeListOf} */ (\n document.querySelectorAll(\".grid li\")\n );\n\n const col = out.facets.collection();\n const collection = col.state === \"loaded\" ? col.data : [];\n const colMap = new Map(collection.map((f) => [f.uri, f]));\n\n for (const li of gridItems) {\n const uri = li.getAttribute(\"data-uri\");\n const menu = /** @type {HTMLElement | null} */ (\n li.querySelector(\".grid-item__menu\")\n );\n\n const button = /** @type {HTMLElement | null} */ (\n li.querySelector(\"button[data-action='toggle']\")\n );\n\n const icon = button?.querySelector(\"i\");\n\n if (!menu || !button || !icon || !uri) continue;\n\n const item = colMap.get(uri);\n const isActive = item && item.resources === undefined;\n const isPrelude = li.dataset.kind === \"prelude\";\n\n menu.classList.toggle(\"grid-item__menu--active\", isActive ?? false);\n\n button.style.opacity = \"revert-layer\";\n button.title = isActive\n ? (isPrelude ? \"Remove feature\" : \"Unpin interface\")\n : (isPrelude ? \"Add feature\" : \"Pin interface\");\n\n icon.className = isActive\n ? isPrelude ? \"ph-bold ph-check\" : \"ph-fill ph-push-pin\"\n : isPrelude\n ? \"ph-bold ph-plus\"\n : \"ph-bold ph-push-pin\";\n\n /** @type {HTMLElement} */ (icon).style.transform = isActive && !isPrelude\n ? \"rotate(-45deg)\"\n : \"\";\n }\n });\n}\n\n////////////////////////////////////////////\n// OUTPUT INDICATOR\n////////////////////////////////////////////\n\n/** @type {() => void | undefined} */\nlet stopOutputIndicator;\n\nexport async function setupOutputIndicator() {\n if (stopOutputIndicator) stopOutputIndicator();\n\n const filterEl = document.querySelector(\".grid-filter\");\n if (!filterEl) return;\n\n const out = await output();\n\n /** @type {HTMLElement | null} */\n const indicator = filterEl.querySelector(\".grid-filter--output\");\n if (!indicator) return;\n\n /** @type {HTMLElement | null} */\n const label = filterEl.querySelector(\".grid-filter--label-output\");\n if (!label) return;\n\n setTimeout(() => {\n indicator.style.opacity = \"1\";\n label.style.opacity = \"0.4\";\n }, 250);\n\n stopOutputIndicator = effect(() => {\n const selected = out.selected();\n const label = selected?.label ?? selected?.getAttribute?.(\"label\") ??\n \"Local storage\";\n indicator.textContent = label;\n });\n}\n"],"mappings":"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","names":["setupFilter","kindButtons","items","categoriesEl","categories","i","categoryLabelEl","categoryMenuEl","triggerBtn","span","caret","cat","item","activeCategory","url","applyFilter","activeKind","FILTER_KIND_STORAGE_KEY","kind","category","b","transparent","isBase","kindMatch","catMatch","__name","filterParam","storedKind","insertToggleButtons","gridItems","li","button","uri","name","description","tagsRaw","tags","out","output","collection","data","f","facet","facetFromURI","stopMonitor","monitorToggleButtonStates","effect","col","colMap","menu","icon","isActive","isPrelude","stopOutputIndicator","setupOutputIndicator","filterEl","indicator","label","selected"],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse","file":"/chunk-NR4ANXJA.js.map"} \ No newline at end of file +{"version":3,"sources":["/common/pages/grid.js"],"sourcesContent":["import * as Output from \"~/common/output.js\";\nimport { facetFromURI } from \"~/common/facets/utils.js\";\nimport { effect } from \"~/common/signal.js\";\n\nimport { output } from \"./output.js\";\n\n////////////////////////////////////////////\n// FILTER\n////////////////////////////////////////////\n\nexport function setupFilter() {\n /** @type {NodeListOf} */\n const kindButtons = document.querySelectorAll(\n \".grid-filter button[data-filter]\",\n );\n\n /** @type {NodeListOf} */\n const items = document.querySelectorAll(\".grid-item\");\n\n // Build category buttons from the categories present in the current grid\n const categoriesEl = document.querySelector(\".grid-filter--categories\");\n const categories = /** @type {string[]} */ (\n [...new Set([...items].map((i) => i.dataset.category).filter(Boolean))]\n .sort()\n );\n\n /** @type {HTMLElement | null} */\n let categoryLabelEl = null;\n /** @type {HTMLElement | null} */\n let categoryMenuEl = null;\n\n if (categoriesEl && categories.length > 1) {\n categoryLabelEl = document.createElement(\"span\");\n categoryLabelEl.textContent = \"All\";\n\n const triggerBtn = document.createElement(\"button\");\n triggerBtn.className = \"button--border button--tiny button--transparent\";\n triggerBtn.setAttribute(\"popovertarget\", \"grid-category-menu\");\n const span = document.createElement(\"span\");\n span.className = \"with-icon\";\n span.appendChild(categoryLabelEl);\n const caret = document.createElement(\"i\");\n caret.className = \"ph-bold ph-caret-down\";\n span.appendChild(caret);\n triggerBtn.appendChild(span);\n\n categoryMenuEl = document.createElement(\"div\");\n categoryMenuEl.id = \"grid-category-menu\";\n categoryMenuEl.className = \"dropdown\";\n categoryMenuEl.setAttribute(\"popover\", \"\");\n\n for (const cat of [\"all\", ...categories]) {\n const item = document.createElement(\"button\");\n item.dataset.category = cat;\n item.textContent = cat === \"all\" ? \"All\" : cat;\n item.addEventListener(\"click\", () => {\n activeCategory = cat;\n const url = new URL(location.href);\n if (cat === \"all\") url.searchParams.delete(\"category\");\n else url.searchParams.set(\"category\", cat);\n history.replaceState(null, \"\", url);\n categoryMenuEl?.hidePopover();\n applyFilter(activeKind, activeCategory);\n });\n categoryMenuEl.appendChild(item);\n }\n\n categoriesEl.appendChild(triggerBtn);\n categoriesEl.appendChild(categoryMenuEl);\n }\n\n const FILTER_KIND_STORAGE_KEY = \"diffuse/dashboard/filter\";\n\n let activeKind = \"all\";\n let activeCategory = \"all\";\n\n /**\n * @param {string} kind\n * @param {string} category\n */\n function applyFilter(kind, category) {\n kindButtons.forEach((b) => {\n const transparent = b.dataset.filter !== kind;\n if (b.classList.contains(\"button--transparent\") !== transparent) {\n b.classList.toggle(\"button--transparent\", transparent);\n }\n });\n if (categoryLabelEl) {\n categoryLabelEl.textContent = category === \"all\" ? \"All\" : category;\n }\n items.forEach((item) => {\n const isBase = (item.dataset.tags ?? \"\").split(\",\").includes(\"base\");\n if (kind === \"base\") {\n item.hidden = !isBase;\n } else {\n const kindMatch = kind === \"all\" || item.dataset.kind === kind;\n const catMatch = category === \"all\" ||\n item.dataset.category === category;\n item.hidden = !(kindMatch && catMatch && !isBase);\n }\n });\n }\n\n kindButtons.forEach((b) => {\n b.addEventListener(\"click\", () => {\n activeKind = b.dataset.filter ?? \"all\";\n localStorage.setItem(FILTER_KIND_STORAGE_KEY, activeKind);\n const url = new URL(location.href);\n url.searchParams.delete(\"filter\");\n history.replaceState(null, \"\", url);\n applyFilter(activeKind, activeCategory);\n });\n });\n\n const url = new URL(location.href);\n const filterParam = url.searchParams.get(\"filter\");\n const storedKind = localStorage.getItem(FILTER_KIND_STORAGE_KEY);\n activeKind = filterParam === \"prelude\" || filterParam === \"interface\" ||\n filterParam === \"base\" || filterParam === \"all\"\n ? filterParam\n : storedKind === \"prelude\" || storedKind === \"interface\" ||\n storedKind === \"base\"\n ? storedKind\n : \"all\";\n activeCategory = url.searchParams.get(\"category\") ?? \"all\";\n applyFilter(activeKind, activeCategory);\n}\n\n////////////////////////////////////////////\n// TOGGLE BUTTONS\n////////////////////////////////////////////\n\nexport function insertToggleButtons() {\n const gridItems = /** @type {NodeListOf} */ (\n document.querySelectorAll(\".grid li\")\n );\n\n for (const li of gridItems) {\n const button = li.querySelector(\"button[data-action='toggle']\");\n if (!button) continue;\n\n button.addEventListener(\"click\", async () => {\n const uri = li.getAttribute(\"data-uri\");\n const name = li.getAttribute(\"data-name\");\n const kind = li.getAttribute(\"data-kind\") ?? undefined;\n const description = li.getAttribute(\"data-description\") ?? undefined;\n const tagsRaw = li.getAttribute(\"data-tags\");\n const tags = tagsRaw ? tagsRaw.split(\",\").filter(Boolean) : undefined;\n\n if (!uri || !name) return;\n\n const out = await output();\n const collection = await Output.data(out.facets);\n const isActive = collection.some((f) =>\n f.uri === uri && f.resources === undefined\n );\n\n if (isActive) {\n out.facets.save(collection.filter((f) => f.uri !== uri));\n } else {\n const facet = await facetFromURI(\n { description, kind, name, tags, uri },\n {\n fetchHTML: false,\n },\n );\n out.facets.save([...collection, facet]);\n }\n });\n }\n}\n\n////////////////////////////////////////////\n// SYNC ACTIVE STATES\n////////////////////////////////////////////\n\n/** @type {() => void | undefined} */\nlet stopMonitor;\n\nexport async function monitorToggleButtonStates() {\n if (stopMonitor) stopMonitor();\n const out = await output();\n\n stopMonitor = effect(() => {\n const gridItems = /** @type {NodeListOf} */ (\n document.querySelectorAll(\".grid li\")\n );\n\n const col = out.facets.collection();\n const collection = col.state === \"loaded\" ? col.data : [];\n const colMap = new Map(collection.map((f) => [f.uri, f]));\n\n for (const li of gridItems) {\n const uri = li.getAttribute(\"data-uri\");\n const menu = /** @type {HTMLElement | null} */ (\n li.querySelector(\".grid-item__menu\")\n );\n\n const button = /** @type {HTMLElement | null} */ (\n li.querySelector(\"button[data-action='toggle']\")\n );\n\n const icon = button?.querySelector(\"i\");\n\n if (!menu || !button || !icon || !uri) continue;\n\n const item = colMap.get(uri);\n const isActive = item && item.resources === undefined;\n const isPrelude = li.dataset.kind === \"prelude\";\n\n menu.classList.toggle(\"grid-item__menu--active\", isActive ?? false);\n\n button.style.opacity = \"revert-layer\";\n button.title = isActive\n ? (isPrelude ? \"Remove feature\" : \"Unpin interface\")\n : (isPrelude ? \"Add feature\" : \"Pin interface\");\n\n icon.className = isActive\n ? isPrelude ? \"ph-bold ph-check\" : \"ph-fill ph-push-pin\"\n : isPrelude\n ? \"ph-bold ph-plus\"\n : \"ph-bold ph-push-pin\";\n\n /** @type {HTMLElement} */ (icon).style.transform = isActive && !isPrelude\n ? \"rotate(-45deg)\"\n : \"\";\n }\n });\n}\n\n////////////////////////////////////////////\n// OUTPUT INDICATOR\n////////////////////////////////////////////\n\n/** @type {() => void | undefined} */\nlet stopOutputIndicator;\n\nexport async function setupOutputIndicator() {\n if (stopOutputIndicator) stopOutputIndicator();\n\n const filterEl = document.querySelector(\".grid-filter\");\n if (!filterEl) return;\n\n const out = await output();\n\n /** @type {HTMLElement | null} */\n const indicator = filterEl.querySelector(\".grid-filter--output\");\n if (!indicator) return;\n\n /** @type {HTMLElement | null} */\n const label = filterEl.querySelector(\".grid-filter--label-output\");\n if (!label) return;\n\n setTimeout(() => {\n indicator.style.opacity = \"1\";\n label.style.opacity = \"0.4\";\n }, 250);\n\n stopOutputIndicator = effect(() => {\n const selected = out.selected();\n const label = selected?.label ?? selected?.getAttribute?.(\"label\") ??\n \"Local storage\";\n indicator.textContent = label;\n });\n}\n"],"mappings":"wMAUO,SAASA,GAAc,CAE5B,IAAMC,EAAc,SAAS,iBAC3B,kCACF,EAGMC,EAAQ,SAAS,iBAAiB,YAAY,EAG9CC,EAAe,SAAS,cAAc,0BAA0B,EAChEC,EACJ,CAAC,GAAG,IAAI,IAAI,CAAC,GAAGF,CAAK,EAAE,IAAKG,GAAMA,EAAE,QAAQ,QAAQ,EAAE,OAAO,OAAO,CAAC,CAAC,EACnE,KAAK,EAINC,EAAkB,KAElBC,EAAiB,KAErB,GAAIJ,GAAgBC,EAAW,OAAS,EAAG,CACzCE,EAAkB,SAAS,cAAc,MAAM,EAC/CA,EAAgB,YAAc,MAE9B,IAAME,EAAa,SAAS,cAAc,QAAQ,EAClDA,EAAW,UAAY,kDACvBA,EAAW,aAAa,gBAAiB,oBAAoB,EAC7D,IAAMC,EAAO,SAAS,cAAc,MAAM,EAC1CA,EAAK,UAAY,YACjBA,EAAK,YAAYH,CAAe,EAChC,IAAMI,EAAQ,SAAS,cAAc,GAAG,EACxCA,EAAM,UAAY,wBAClBD,EAAK,YAAYC,CAAK,EACtBF,EAAW,YAAYC,CAAI,EAE3BF,EAAiB,SAAS,cAAc,KAAK,EAC7CA,EAAe,GAAK,qBACpBA,EAAe,UAAY,WAC3BA,EAAe,aAAa,UAAW,EAAE,EAEzC,QAAWI,IAAO,CAAC,MAAO,GAAGP,CAAU,EAAG,CACxC,IAAMQ,EAAO,SAAS,cAAc,QAAQ,EAC5CA,EAAK,QAAQ,SAAWD,EACxBC,EAAK,YAAcD,IAAQ,MAAQ,MAAQA,EAC3CC,EAAK,iBAAiB,QAAS,IAAM,CACnCC,EAAiBF,EACjB,IAAMG,EAAM,IAAI,IAAI,SAAS,IAAI,EAC7BH,IAAQ,MAAOG,EAAI,aAAa,OAAO,UAAU,EAChDA,EAAI,aAAa,IAAI,WAAYH,CAAG,EACzC,QAAQ,aAAa,KAAM,GAAIG,CAAG,EAClCP,GAAgB,YAAY,EAC5BQ,EAAYC,EAAYH,CAAc,CACxC,CAAC,EACDN,EAAe,YAAYK,CAAI,CACjC,CAEAT,EAAa,YAAYK,CAAU,EACnCL,EAAa,YAAYI,CAAc,CACzC,CAEA,IAAMU,EAA0B,2BAE5BD,EAAa,MACbH,EAAiB,MAMrB,SAASE,EAAYG,EAAMC,EAAU,CACnClB,EAAY,QAASmB,GAAM,CACzB,IAAMC,EAAcD,EAAE,QAAQ,SAAWF,EACrCE,EAAE,UAAU,SAAS,qBAAqB,IAAMC,GAClDD,EAAE,UAAU,OAAO,sBAAuBC,CAAW,CAEzD,CAAC,EACGf,IACFA,EAAgB,YAAca,IAAa,MAAQ,MAAQA,GAE7DjB,EAAM,QAASU,GAAS,CACtB,IAAMU,GAAUV,EAAK,QAAQ,MAAQ,IAAI,MAAM,GAAG,EAAE,SAAS,MAAM,EACnE,GAAIM,IAAS,OACXN,EAAK,OAAS,CAACU,MACV,CACL,IAAMC,EAAYL,IAAS,OAASN,EAAK,QAAQ,OAASM,EACpDM,EAAWL,IAAa,OAC5BP,EAAK,QAAQ,WAAaO,EAC5BP,EAAK,OAAS,EAAEW,GAAaC,GAAY,CAACF,EAC5C,CACF,CAAC,CACH,CArBSG,EAAAV,EAAA,eAuBTd,EAAY,QAASmB,GAAM,CACzBA,EAAE,iBAAiB,QAAS,IAAM,CAChCJ,EAAaI,EAAE,QAAQ,QAAU,MACjC,aAAa,QAAQH,EAAyBD,CAAU,EACxD,IAAMF,EAAM,IAAI,IAAI,SAAS,IAAI,EACjCA,EAAI,aAAa,OAAO,QAAQ,EAChC,QAAQ,aAAa,KAAM,GAAIA,CAAG,EAClCC,EAAYC,EAAYH,CAAc,CACxC,CAAC,CACH,CAAC,EAED,IAAMC,EAAM,IAAI,IAAI,SAAS,IAAI,EAC3BY,EAAcZ,EAAI,aAAa,IAAI,QAAQ,EAC3Ca,EAAa,aAAa,QAAQV,CAAuB,EAC/DD,EAAaU,IAAgB,WAAaA,IAAgB,aACtDA,IAAgB,QAAUA,IAAgB,MAC1CA,EACAC,IAAe,WAAaA,IAAe,aACzCA,IAAe,OACjBA,EACA,MACJd,EAAiBC,EAAI,aAAa,IAAI,UAAU,GAAK,MACrDC,EAAYC,EAAYH,CAAc,CACxC,CApHgBY,EAAAzB,EAAA,eA0HT,SAAS4B,GAAsB,CACpC,IAAMC,EACJ,SAAS,iBAAiB,UAAU,EAGtC,QAAWC,KAAMD,EAAW,CAC1B,IAAME,EAASD,EAAG,cAAc,8BAA8B,EACzDC,GAELA,EAAO,iBAAiB,QAAS,SAAY,CAC3C,IAAMC,EAAMF,EAAG,aAAa,UAAU,EAChCG,EAAOH,EAAG,aAAa,WAAW,EAClCZ,EAAOY,EAAG,aAAa,WAAW,GAAK,OACvCI,EAAcJ,EAAG,aAAa,kBAAkB,GAAK,OACrDK,EAAUL,EAAG,aAAa,WAAW,EACrCM,EAAOD,EAAUA,EAAQ,MAAM,GAAG,EAAE,OAAO,OAAO,EAAI,OAE5D,GAAI,CAACH,GAAO,CAACC,EAAM,OAEnB,IAAMI,EAAM,MAAMC,EAAO,EACnBC,EAAa,MAAaC,EAAKH,EAAI,MAAM,EAK/C,GAJiBE,EAAW,KAAME,GAChCA,EAAE,MAAQT,GAAOS,EAAE,YAAc,MACnC,EAGEJ,EAAI,OAAO,KAAKE,EAAW,OAAQE,GAAMA,EAAE,MAAQT,CAAG,CAAC,MAClD,CACL,IAAMU,EAAQ,MAAMC,EAClB,CAAE,YAAAT,EAAa,KAAAhB,EAAM,KAAAe,EAAM,KAAAG,EAAM,IAAAJ,CAAI,EACrC,CACE,UAAW,EACb,CACF,EACAK,EAAI,OAAO,KAAK,CAAC,GAAGE,EAAYG,CAAK,CAAC,CACxC,CACF,CAAC,CACH,CACF,CAtCgBjB,EAAAG,EAAA,uBA6ChB,IAAIgB,EAEJ,eAAsBC,GAA4B,CAC5CD,GAAaA,EAAY,EAC7B,IAAMP,EAAM,MAAMC,EAAO,EAEzBM,EAAcE,EAAO,IAAM,CACzB,IAAMjB,EACJ,SAAS,iBAAiB,UAAU,EAGhCkB,EAAMV,EAAI,OAAO,WAAW,EAC5BE,EAAaQ,EAAI,QAAU,SAAWA,EAAI,KAAO,CAAC,EAClDC,EAAS,IAAI,IAAIT,EAAW,IAAKE,GAAM,CAACA,EAAE,IAAKA,CAAC,CAAC,CAAC,EAExD,QAAWX,KAAMD,EAAW,CAC1B,IAAMG,EAAMF,EAAG,aAAa,UAAU,EAChCmB,EACJnB,EAAG,cAAc,kBAAkB,EAG/BC,EACJD,EAAG,cAAc,8BAA8B,EAG3CoB,EAAOnB,GAAQ,cAAc,GAAG,EAEtC,GAAI,CAACkB,GAAQ,CAAClB,GAAU,CAACmB,GAAQ,CAAClB,EAAK,SAEvC,IAAMpB,EAAOoC,EAAO,IAAIhB,CAAG,EACrBmB,EAAWvC,GAAQA,EAAK,YAAc,OACtCwC,EAAYtB,EAAG,QAAQ,OAAS,UAEtCmB,EAAK,UAAU,OAAO,0BAA2BE,GAAY,EAAK,EAElEpB,EAAO,MAAM,QAAU,eACvBA,EAAO,MAAQoB,EACVC,EAAY,iBAAmB,kBAC/BA,EAAY,cAAgB,gBAEjCF,EAAK,UAAYC,EACbC,EAAY,mBAAqB,sBACjCA,EACA,kBACA,sBAEwBF,EAAM,MAAM,UAAYC,GAAY,CAACC,EAC7D,iBACA,EACN,CACF,CAAC,CACH,CAjDsB3B,EAAAoB,EAAA,6BAwDtB,IAAIQ,EAEJ,eAAsBC,GAAuB,CACvCD,GAAqBA,EAAoB,EAE7C,IAAME,EAAW,SAAS,cAAc,cAAc,EACtD,GAAI,CAACA,EAAU,OAEf,IAAMlB,EAAM,MAAMC,EAAO,EAGnBkB,EAAYD,EAAS,cAAc,sBAAsB,EAC/D,GAAI,CAACC,EAAW,OAGhB,IAAMC,EAAQF,EAAS,cAAc,4BAA4B,EAC5DE,IAEL,WAAW,IAAM,CACfD,EAAU,MAAM,QAAU,IAC1BC,EAAM,MAAM,QAAU,KACxB,EAAG,GAAG,EAENJ,EAAsBP,EAAO,IAAM,CACjC,IAAMY,EAAWrB,EAAI,SAAS,EACxBoB,EAAQC,GAAU,OAASA,GAAU,eAAe,OAAO,GAC/D,gBACFF,EAAU,YAAcC,CAC1B,CAAC,EACH,CA3BsBhC,EAAA6B,EAAA","names":["setupFilter","kindButtons","items","categoriesEl","categories","i","categoryLabelEl","categoryMenuEl","triggerBtn","span","caret","cat","item","activeCategory","url","applyFilter","activeKind","FILTER_KIND_STORAGE_KEY","kind","category","b","transparent","isBase","kindMatch","catMatch","__name","filterParam","storedKind","insertToggleButtons","gridItems","li","button","uri","name","description","tagsRaw","tags","out","output","collection","data","f","facet","facetFromURI","stopMonitor","monitorToggleButtonStates","effect","col","colMap","menu","icon","isActive","isPrelude","stopOutputIndicator","setupOutputIndicator","filterEl","indicator","label","selected"],"sourceRoot":"","file":"/chunk-6MEKFGL7.js.map"} \ No newline at end of file diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-6NC6NOLO.js b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-6NC6NOLO.js similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-6NC6NOLO.js rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-6NC6NOLO.js diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-6NC6NOLO.js.br b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-6NC6NOLO.js.br similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-6NC6NOLO.js.br rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-6NC6NOLO.js.br diff --git a/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-6NC6NOLO.js.map b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-6NC6NOLO.js.map new file mode 100644 index 00000000..e64f8e58 --- /dev/null +++ b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-6NC6NOLO.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["/components/output/polymorphic/indexed-db/constants.js"],"sourcesContent":["export const IDB_PREFIX = \"diffuse/output/polymorphic/indexed-db\";\n"],"mappings":"AAAO,IAAMA,EAAa","names":["IDB_PREFIX"],"sourceRoot":"","file":"/chunk-6NC6NOLO.js.map"} \ No newline at end of file diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-6XPFWKSW.js b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-6XPFWKSW.js similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-6XPFWKSW.js rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-6XPFWKSW.js diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-6XPFWKSW.js.br b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-6XPFWKSW.js.br similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-6XPFWKSW.js.br rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-6XPFWKSW.js.br diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-6XPFWKSW.js.map b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-6XPFWKSW.js.map similarity index 99% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-6XPFWKSW.js.map rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-6XPFWKSW.js.map index 6ed013aa..b2e482d1 100644 --- a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-6XPFWKSW.js.map +++ b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-6XPFWKSW.js.map @@ -1 +1 @@ -{"version":3,"sources":["/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/id3v2/FrameParser.js","/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/id3v2/ID3v2ChapterToken.js","/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/id3v2/FrameHeader.js","/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/id3v2/ID3v2Parser.js"],"sourcesContent":["import initDebug from 'debug';\nimport * as Token from 'token-types';\nimport * as util from '../common/Util.js';\nimport { AttachedPictureType, SyncTextHeader, TextEncodingToken, TextHeader } from './ID3v2Token.js';\nimport { Genres } from '../id3v1/ID3v1Parser.js';\nimport { makeUnexpectedFileContentError } from '../ParseError.js';\nimport { decodeUintBE } from '../common/Util.js';\nimport { ChapterInfo } from './ID3v2ChapterToken.js';\nimport { getFrameHeaderLength, readFrameHeader } from './FrameHeader.js';\nconst debug = initDebug('music-metadata:id3v2:frame-parser');\nconst defaultEnc = 'latin1'; // latin1 == iso-8859-1;\nconst urlEnc = { encoding: defaultEnc, bom: false };\nexport function parseGenre(origVal) {\n // match everything inside parentheses\n const genres = [];\n let code;\n let word = '';\n for (const c of origVal) {\n if (typeof code === 'string') {\n if (c === '(' && code === '') {\n word += '(';\n code = undefined;\n }\n else if (c === ')') {\n if (word !== '') {\n genres.push(word);\n word = '';\n }\n const genre = parseGenreCode(code);\n if (genre) {\n genres.push(genre);\n }\n code = undefined;\n }\n else\n code += c;\n }\n else if (c === '(') {\n code = '';\n }\n else {\n word += c;\n }\n }\n if (word) {\n if (genres.length === 0 && word.match(/^\\d*$/)) {\n word = parseGenreCode(word);\n }\n if (word) {\n genres.push(word);\n }\n }\n return genres;\n}\nfunction parseGenreCode(code) {\n if (code === 'RX')\n return 'Remix';\n if (code === 'CR')\n return 'Cover';\n if (code.match(/^\\d*$/)) {\n return Genres[Number.parseInt(code, 10)];\n }\n}\nexport class FrameParser {\n /**\n * Create id3v2 frame parser\n * @param major - Major version, e.g. (4) for id3v2.4\n * @param warningCollector - Used to collect decode issue\n */\n constructor(major, warningCollector) {\n this.major = major;\n this.warningCollector = warningCollector;\n }\n readData(uint8Array, type, includeCovers) {\n if (uint8Array.length === 0) {\n this.warningCollector.addWarning(`id3v2.${this.major} header has empty tag type=${type}`);\n return;\n }\n const { encoding, bom } = TextEncodingToken.get(uint8Array, 0);\n const length = uint8Array.length;\n let offset = 0;\n let output = []; // ToDo\n const nullTerminatorLength = FrameParser.getNullTerminatorLength(encoding);\n let fzero;\n debug(`Parsing tag type=${type}, encoding=${encoding}, bom=${bom}`);\n switch (type !== 'TXXX' && type[0] === 'T' ? 'T*' : type) {\n case 'T*': // 4.2.1. Text information frames - details\n case 'GRP1': // iTunes-specific ID3v2 grouping field\n case 'GP1': // iTunes-specific ID3v2.2 grouping field\n case 'IPLS': // v2.3: Involved people list\n case 'MVIN':\n case 'MVNM':\n case 'PCS':\n case 'PCST': {\n let text;\n try {\n text = FrameParser.trimNullPadding(util.decodeString(uint8Array.subarray(1), encoding));\n }\n catch (error) {\n if (error instanceof Error) {\n this.warningCollector.addWarning(`id3v2.${this.major} type=${type} header has invalid string value: ${error.message}`);\n break;\n }\n throw error;\n }\n switch (type) {\n case 'TMCL': // Musician credits list\n case 'TIPL': // Involved people list\n case 'IPLS': // Involved people list\n output = FrameParser.functionList(this.splitValue(type, text));\n break;\n case 'TRK':\n case 'TRCK':\n case 'TPOS':\n case 'TIT1':\n case 'TIT2':\n case 'TIT3':\n output = text;\n break;\n case 'TCOM':\n case 'TEXT':\n case 'TOLY':\n case 'TOPE':\n case 'TPE1':\n case 'TSRC':\n // id3v2.3 defines that TCOM, TEXT, TOLY, TOPE & TPE1 values are separated by /\n output = this.splitValue(type, text);\n break;\n case 'TCO':\n case 'TCON':\n output = this.splitValue(type, text).map(v => parseGenre(v)).reduce((acc, val) => acc.concat(val), []);\n break;\n case 'PCS':\n case 'PCST':\n // TODO: Why `default` not results `1` but `''`?\n output = this.major >= 4 ? this.splitValue(type, text) : [text];\n output = (Array.isArray(output) && output[0] === '') ? 1 : 0;\n break;\n default:\n output = this.major >= 4 ? this.splitValue(type, text) : [text];\n }\n break;\n }\n case 'TXXX': {\n const idAndData = FrameParser.readIdentifierAndData(uint8Array.subarray(1), encoding);\n output = {\n description: idAndData.id,\n text: this.splitValue(type, util.decodeString(idAndData.data, encoding).replace(/\\x00+$/, ''))\n };\n break;\n }\n case 'PIC':\n case 'APIC':\n if (includeCovers) {\n const pic = {};\n uint8Array = uint8Array.subarray(1);\n switch (this.major) {\n case 2:\n pic.format = util.decodeString(uint8Array.subarray(0, 3), 'latin1'); // 'latin1'; // latin1 == iso-8859-1;\n uint8Array = uint8Array.subarray(3);\n break;\n case 3:\n case 4:\n fzero = util.findZero(uint8Array, defaultEnc);\n pic.format = util.decodeString(uint8Array.subarray(0, fzero), defaultEnc);\n uint8Array = uint8Array.subarray(fzero + 1);\n break;\n default:\n throw makeUnexpectedMajorVersionError(this.major);\n }\n pic.format = FrameParser.fixPictureMimeType(pic.format);\n pic.type = AttachedPictureType[uint8Array[0]];\n uint8Array = uint8Array.subarray(1);\n fzero = util.findZero(uint8Array, encoding);\n pic.description = util.decodeString(uint8Array.subarray(0, fzero), encoding);\n uint8Array = uint8Array.subarray(fzero + nullTerminatorLength);\n pic.data = uint8Array;\n output = pic;\n }\n break;\n case 'CNT':\n case 'PCNT':\n output = decodeUintBE(uint8Array);\n break;\n case 'SYLT': {\n const syltHeader = SyncTextHeader.get(uint8Array, 0);\n uint8Array = uint8Array.subarray(SyncTextHeader.len);\n const result = {\n descriptor: '',\n language: syltHeader.language,\n contentType: syltHeader.contentType,\n timeStampFormat: syltHeader.timeStampFormat,\n syncText: []\n };\n let readSyllables = false;\n while (uint8Array.length > 0) {\n const nullStr = FrameParser.readNullTerminatedString(uint8Array, syltHeader.encoding);\n uint8Array = uint8Array.subarray(nullStr.len);\n if (readSyllables) {\n const timestamp = Token.UINT32_BE.get(uint8Array, 0);\n uint8Array = uint8Array.subarray(Token.UINT32_BE.len);\n result.syncText.push({\n text: nullStr.text,\n timestamp\n });\n }\n else {\n result.descriptor = nullStr.text;\n readSyllables = true;\n }\n }\n output = result;\n break;\n }\n case 'ULT':\n case 'USLT':\n case 'COM':\n case 'COMM': {\n const textHeader = TextHeader.get(uint8Array, offset);\n offset += TextHeader.len;\n const descriptorStr = FrameParser.readNullTerminatedString(uint8Array.subarray(offset), textHeader.encoding);\n offset += descriptorStr.len;\n const textStr = FrameParser.readNullTerminatedString(uint8Array.subarray(offset), textHeader.encoding);\n const comment = {\n language: textHeader.language,\n descriptor: descriptorStr.text,\n text: textStr.text\n };\n output = comment;\n break;\n }\n case 'UFID': {\n const ufid = FrameParser.readIdentifierAndData(uint8Array, defaultEnc);\n output = { owner_identifier: ufid.id, identifier: ufid.data };\n break;\n }\n case 'PRIV': { // private frame\n const priv = FrameParser.readIdentifierAndData(uint8Array, defaultEnc);\n output = { owner_identifier: priv.id, data: priv.data };\n break;\n }\n case 'POPM': { // Popularimeter\n uint8Array = uint8Array.subarray(offset);\n const emailStr = FrameParser.readNullTerminatedString(uint8Array, urlEnc);\n const email = emailStr.text;\n uint8Array = uint8Array.subarray(emailStr.len);\n if (uint8Array.length === 0) {\n this.warningCollector.addWarning(`id3v2.${this.major} type=${type} POPM frame missing rating byte`);\n output = { email, rating: 0, counter: undefined };\n break;\n }\n const rating = Token.UINT8.get(uint8Array, 0);\n const counterBytes = uint8Array.subarray(Token.UINT8.len);\n output = {\n email,\n rating,\n counter: counterBytes.length > 0 ? decodeUintBE(counterBytes) : undefined\n };\n break;\n }\n case 'GEOB': { // General encapsulated object\n // [encoding] 0x00 0x00/0x00 0x00 0x00/0x00 0x00 \n const encoding = TextEncodingToken.get(uint8Array, 0);\n uint8Array = uint8Array.subarray(1);\n const mimeTypeStr = FrameParser.readNullTerminatedString(uint8Array, urlEnc);\n const mimeType = mimeTypeStr.text;\n uint8Array = uint8Array.subarray(mimeTypeStr.len);\n const filenameStr = FrameParser.readNullTerminatedString(uint8Array, encoding);\n const filename = filenameStr.text;\n uint8Array = uint8Array.subarray(filenameStr.len);\n const descriptionStr = FrameParser.readNullTerminatedString(uint8Array, encoding);\n const description = descriptionStr.text;\n uint8Array = uint8Array.subarray(descriptionStr.len);\n const geob = {\n type: mimeType,\n filename,\n description,\n data: uint8Array\n };\n output = geob;\n break;\n }\n // W-Frames:\n case 'WCOM':\n case 'WCOP':\n case 'WOAF':\n case 'WOAR':\n case 'WOAS':\n case 'WORS':\n case 'WPAY':\n case 'WPUB':\n // Decode URL\n output = FrameParser.readNullTerminatedString(uint8Array, urlEnc).text;\n break;\n case 'WXXX': {\n // [encoding] 0x00/0x00 0x00 \n const encoding = TextEncodingToken.get(uint8Array, 0);\n uint8Array = uint8Array.subarray(1);\n const descriptionStr = FrameParser.readNullTerminatedString(uint8Array, encoding);\n const description = descriptionStr.text;\n uint8Array = uint8Array.subarray(descriptionStr.len);\n // URL is always ISO-8859-1\n output = { description, url: FrameParser.trimNullPadding(util.decodeString(uint8Array, defaultEnc)) };\n break;\n }\n case 'WFD':\n case 'WFED': {\n const encoding = TextEncodingToken.get(uint8Array, 0);\n uint8Array = uint8Array.subarray(1);\n output = FrameParser.readNullTerminatedString(uint8Array, encoding).text;\n break;\n }\n case 'MCDI': {\n // Music CD identifier\n output = uint8Array.subarray(0, length);\n break;\n }\n // ID3v2 Chapters 1.0\n // https://mutagen-specs.readthedocs.io/en/latest/id3/id3v2-chapters-1.0.html#chapter-frame\n case 'CHAP': { // // Chapter frame\n debug(\"Reading CHAP\");\n fzero = util.findZero(uint8Array, defaultEnc);\n const chapter = {\n label: util.decodeString(uint8Array.subarray(0, fzero), defaultEnc),\n info: ChapterInfo.get(uint8Array, fzero + 1),\n frames: new Map()\n };\n offset += fzero + 1 + ChapterInfo.len;\n while (offset < length) {\n const subFrame = readFrameHeader(uint8Array.subarray(offset), this.major, this.warningCollector);\n const headerSize = getFrameHeaderLength(this.major);\n offset += headerSize;\n const subOutput = this.readData(uint8Array.subarray(offset, offset + subFrame.length), subFrame.id, includeCovers);\n offset += subFrame.length;\n chapter.frames.set(subFrame.id, subOutput);\n }\n output = chapter;\n break;\n }\n // ID3v2 Chapters 1.0\n // https://mutagen-specs.readthedocs.io/en/latest/id3/id3v2-chapters-1.0.html#table-of-contents-frame\n case 'CTOC': { // Table of contents frame\n debug('Reading CTOC');\n // Element ID (null-terminated latin1)\n const idEnd = util.findZero(uint8Array, defaultEnc);\n const label = util.decodeString(uint8Array.subarray(0, idEnd), defaultEnc);\n offset = idEnd + 1;\n // Flags\n const flags = uint8Array[offset++];\n const topLevel = (flags & 0x02) !== 0;\n const ordered = (flags & 0x01) !== 0;\n // Child element IDs\n const entryCount = uint8Array[offset++];\n const childElementIds = [];\n for (let i = 0; i < entryCount && offset < length; i++) {\n const end = util.findZero(uint8Array.subarray(offset), defaultEnc);\n const childId = util.decodeString(uint8Array.subarray(offset, offset + end), defaultEnc);\n childElementIds.push(childId);\n offset += end + 1;\n }\n const toc = {\n label,\n flags: { topLevel, ordered },\n childElementIds,\n frames: new Map()\n };\n // Optional embedded sub-frames (e.g. TIT2) follow after the child list\n while (offset < length) {\n const subFrame = readFrameHeader(uint8Array.subarray(offset), this.major, this.warningCollector);\n const headerSize = getFrameHeaderLength(this.major);\n offset += headerSize;\n const subOutput = this.readData(uint8Array.subarray(offset, offset + subFrame.length), subFrame.id, includeCovers);\n offset += subFrame.length;\n toc.frames.set(subFrame.id, subOutput);\n }\n output = toc;\n break;\n }\n default:\n debug(`Warning: unsupported id3v2-tag-type: ${type}`);\n break;\n }\n return output;\n }\n static readNullTerminatedString(uint8Array, encoding) {\n const bomSize = encoding.bom ? 2 : 0;\n const originalLen = uint8Array.length;\n const valueArray = uint8Array.subarray(bomSize);\n const zeroIndex = util.findZero(valueArray, encoding.encoding);\n if (zeroIndex >= valueArray.length) {\n // No terminator found, decode full buffer remainder\n return {\n text: util.decodeString(uint8Array, encoding.encoding),\n len: originalLen\n };\n }\n const txt = uint8Array.subarray(0, bomSize + zeroIndex);\n return {\n text: util.decodeString(txt, encoding.encoding),\n len: bomSize + zeroIndex + FrameParser.getNullTerminatorLength(encoding.encoding)\n };\n }\n static fixPictureMimeType(pictureType) {\n pictureType = pictureType.toLocaleLowerCase();\n switch (pictureType) {\n case 'jpg':\n return 'image/jpeg';\n case 'png':\n return 'image/png';\n }\n return pictureType;\n }\n /**\n * Converts TMCL (Musician credits list) or TIPL (Involved people list)\n * @param entries\n */\n static functionList(entries) {\n const res = {};\n for (let i = 0; i + 1 < entries.length; i += 2) {\n const names = entries[i + 1].split(',');\n res[entries[i]] = res[entries[i]] ? res[entries[i]].concat(names) : names;\n }\n return res;\n }\n /**\n * id3v2.4 defines that multiple T* values are separated by 0x00\n * id3v2.3 defines that TCOM, TEXT, TOLY, TOPE & TPE1 values are separated by /\n * @param tag - Tag name\n * @param text - Concatenated tag value\n * @returns Split tag value\n */\n splitValue(tag, text) {\n let values;\n if (this.major < 4) {\n values = text.split(/\\x00/g);\n if (values.length > 1) {\n this.warningCollector.addWarning(`ID3v2.${this.major} ${tag} uses non standard null-separator.`);\n }\n else {\n values = text.split(/\\//g);\n }\n }\n else {\n values = text.split(/\\x00/g);\n }\n return FrameParser.trimArray(values);\n }\n static trimArray(values) {\n return values.map(value => FrameParser.trimNullPadding(value).trim());\n }\n static trimNullPadding(value) {\n let end = value.length;\n while (end > 0 && value.charCodeAt(end - 1) === 0) {\n end--;\n }\n return end === value.length ? value : value.slice(0, end);\n }\n static readIdentifierAndData(uint8Array, encoding) {\n const idStr = FrameParser.readNullTerminatedString(uint8Array, { encoding, bom: false });\n return { id: idStr.text, data: uint8Array.subarray(idStr.len) };\n }\n static getNullTerminatorLength(enc) {\n return enc.startsWith('utf-16') ? 2 : 1;\n }\n}\nexport class Id3v2ContentError extends makeUnexpectedFileContentError('id3v2') {\n}\nfunction makeUnexpectedMajorVersionError(majorVer) {\n throw new Id3v2ContentError(`Unexpected majorVer: ${majorVer}`);\n}\n","import * as Token from 'token-types';\n/**\n * Data portion of `CHAP` sub frame\n */\nexport const ChapterInfo = {\n len: 16,\n get: (buf, off) => {\n const startOffset = Token.UINT32_BE.get(buf, off + 8);\n const endOffset = Token.UINT32_BE.get(buf, off + 12);\n return {\n startTime: Token.UINT32_BE.get(buf, off),\n endTime: Token.UINT32_BE.get(buf, off + 4),\n startOffset: startOffset === 0xFFFFFFFF ? undefined : startOffset,\n endOffset: endOffset === 0xFFFFFFFF ? undefined : endOffset,\n };\n }\n};\n","// lib/id3v2/FrameHeader.ts\nimport * as Token from 'token-types';\nimport * as util from '../common/Util.js';\nimport { UINT32SYNCSAFE } from './ID3v2Token.js';\nimport { textDecode } from '@borewit/text-codec';\nimport { Id3v2ContentError } from './FrameParser.js';\n/**\n * Frame header length (bytes) depending on ID3v2 major version.\n */\nexport function getFrameHeaderLength(majorVer) {\n switch (majorVer) {\n case 2: return 6;\n case 3:\n case 4: return 10;\n default: throw makeUnexpectedMajorVersionError(majorVer);\n }\n}\nfunction readFrameFlags(b, majorVer) {\n // ID3v2.3 and ID3v2.4 use different bit layouts for the frame status and format flags.\n if (majorVer === 3) {\n // ID3v2.3: status `%abc00000`, format `%ijk00000` (https://id3.org/id3v2.3.0)\n return {\n status: {\n tag_alter_preservation: util.getBit(b, 0, 7),\n file_alter_preservation: util.getBit(b, 0, 6),\n read_only: util.getBit(b, 0, 5)\n },\n format: {\n compression: util.getBit(b, 1, 7),\n encryption: util.getBit(b, 1, 6),\n grouping_identity: util.getBit(b, 1, 5),\n // Unsynchronisation and data-length-indicator do not exist as per-frame flags in ID3v2.3.\n unsynchronisation: false,\n data_length_indicator: false\n }\n };\n }\n // ID3v2.4: status `%0abc0000`, format `%0h00kmnp` (https://id3.org/id3v2.4.0-structure)\n return {\n status: {\n tag_alter_preservation: util.getBit(b, 0, 6),\n file_alter_preservation: util.getBit(b, 0, 5),\n read_only: util.getBit(b, 0, 4)\n },\n format: {\n grouping_identity: util.getBit(b, 1, 6),\n compression: util.getBit(b, 1, 3),\n encryption: util.getBit(b, 1, 2),\n unsynchronisation: util.getBit(b, 1, 1),\n data_length_indicator: util.getBit(b, 1, 0)\n }\n };\n}\n/**\n * Factory: parse a frame header from its header bytes (6 for v2.2, 10 for v2.3/v2.4).\n *\n * Note: It only *parses* and does light validation. It does not read payload bytes.\n */\nexport function readFrameHeader(uint8Array, majorVer, warningCollector) {\n switch (majorVer) {\n case 2:\n return parseFrameHeaderV22(uint8Array, majorVer, warningCollector);\n case 3:\n case 4:\n return parseFrameHeaderV23V24(uint8Array, majorVer, warningCollector);\n default:\n throw makeUnexpectedMajorVersionError(majorVer);\n }\n}\nfunction parseFrameHeaderV22(uint8Array, majorVer, warningCollector) {\n const header = {\n id: textDecode(uint8Array.subarray(0, 3), 'ascii'),\n length: Token.UINT24_BE.get(uint8Array, 3)\n };\n if (!header.id.match(/^[A-Z0-9]{3}$/)) {\n warningCollector.addWarning(`Invalid ID3v2.${majorVer} frame-header-ID: ${header.id}`);\n }\n return header;\n}\nfunction parseFrameHeaderV23V24(uint8Array, majorVer, warningCollector) {\n const header = {\n id: textDecode(uint8Array.subarray(0, 4), 'ascii'),\n length: (majorVer === 4 ? UINT32SYNCSAFE : Token.UINT32_BE).get(uint8Array, 4),\n flags: readFrameFlags(uint8Array.subarray(8, 10), majorVer)\n };\n if (!header.id.match(/^[A-Z0-9]{4}$/)) {\n warningCollector.addWarning(`Invalid ID3v2.${majorVer} frame-header-ID: ${header.id}`);\n }\n return header;\n}\nfunction makeUnexpectedMajorVersionError(majorVer) {\n throw new Id3v2ContentError(`Unexpected majorVer: ${majorVer}`);\n}\n","import * as Token from 'token-types';\nimport { FrameParser, Id3v2ContentError } from './FrameParser.js';\nimport { ExtendedHeader, ID3v2Header } from './ID3v2Token.js';\nimport { getFrameHeaderLength, readFrameHeader } from './FrameHeader.js';\nexport class ID3v2Parser {\n constructor() {\n this.tokenizer = undefined;\n this.id3Header = undefined;\n this.metadata = undefined;\n this.headerType = undefined;\n this.options = undefined;\n }\n static removeUnsyncBytes(buffer) {\n let readI = 0;\n let writeI = 0;\n while (readI < buffer.length - 1) {\n if (readI !== writeI) {\n buffer[writeI] = buffer[readI];\n }\n readI += (buffer[readI] === 0xFF && buffer[readI + 1] === 0) ? 2 : 1;\n writeI++;\n }\n if (readI < buffer.length) {\n buffer[writeI++] = buffer[readI];\n }\n return buffer.subarray(0, writeI);\n }\n static readFrameData(uint8Array, frameHeader, majorVer, includeCovers, warningCollector) {\n const frameParser = new FrameParser(majorVer, warningCollector);\n switch (majorVer) {\n case 2:\n return frameParser.readData(uint8Array, frameHeader.id, includeCovers);\n case 3:\n case 4:\n if (frameHeader.flags?.format.unsynchronisation) {\n uint8Array = ID3v2Parser.removeUnsyncBytes(uint8Array);\n }\n if (frameHeader.flags?.format.data_length_indicator) {\n uint8Array = uint8Array.subarray(4, uint8Array.length);\n }\n return frameParser.readData(uint8Array, frameHeader.id, includeCovers);\n default:\n throw makeUnexpectedMajorVersionError(majorVer);\n }\n }\n /**\n * Create a combined tag key, of tag & description\n * @param tag e.g.: COM\n * @param description e.g. iTunPGAP\n * @returns string e.g. COM:iTunPGAP\n */\n static makeDescriptionTagName(tag, description) {\n return tag + (description ? `:${description}` : '');\n }\n async parse(metadata, tokenizer, options) {\n this.tokenizer = tokenizer;\n this.metadata = metadata;\n this.options = options;\n const id3Header = await this.tokenizer.readToken(ID3v2Header);\n if (id3Header.fileIdentifier !== 'ID3') {\n throw new Id3v2ContentError('expected ID3-header file-identifier \\'ID3\\' was not found');\n }\n this.id3Header = id3Header;\n this.headerType = (`ID3v2.${id3Header.version.major}`);\n await (id3Header.flags.isExtendedHeader ? this.parseExtendedHeader() : this.parseId3Data(id3Header.size));\n // Post process\n const chapters = ID3v2Parser.mapId3v2Chapters(this.metadata.native[this.headerType]);\n this.metadata.setFormat('chapters', chapters);\n }\n async parseExtendedHeader() {\n const extendedHeader = await this.tokenizer.readToken(ExtendedHeader);\n const dataRemaining = extendedHeader.size - ExtendedHeader.len;\n return dataRemaining > 0 ? this.parseExtendedHeaderData(dataRemaining, extendedHeader.size) : this.parseId3Data(this.id3Header.size - extendedHeader.size);\n }\n async parseExtendedHeaderData(dataRemaining, extendedHeaderSize) {\n await this.tokenizer.ignore(dataRemaining);\n return this.parseId3Data(this.id3Header.size - extendedHeaderSize);\n }\n async parseId3Data(dataLen) {\n const uint8Array = await this.tokenizer.readToken(new Token.Uint8ArrayType(dataLen));\n for (const tag of this.parseMetadata(uint8Array)) {\n switch (tag.id) {\n case 'TXXX':\n if (tag.value) {\n await this.handleTag(tag, tag.value.text, () => tag.value.description);\n }\n break;\n default:\n await (Array.isArray(tag.value) ? Promise.all(tag.value.map(value => this.addTag(tag.id, value))) : this.addTag(tag.id, tag.value));\n }\n }\n }\n async handleTag(tag, values, descriptor, resolveValue = value => value) {\n await Promise.all(values.map(value => this.addTag(ID3v2Parser.makeDescriptionTagName(tag.id, descriptor(value)), resolveValue(value))));\n }\n async addTag(id, value) {\n await this.metadata.addTag(this.headerType, id, value);\n }\n parseMetadata(data) {\n let offset = 0;\n const tags = [];\n while (true) {\n if (offset === data.length)\n break;\n const frameHeaderLength = getFrameHeaderLength(this.id3Header.version.major);\n if (offset + frameHeaderLength > data.length) {\n this.metadata.addWarning('Illegal ID3v2 tag length');\n break;\n }\n const frameHeaderBytes = data.subarray(offset, offset + frameHeaderLength);\n offset += frameHeaderLength;\n const frameHeader = readFrameHeader(frameHeaderBytes, this.id3Header.version.major, this.metadata);\n const frameDataBytes = data.subarray(offset, offset + frameHeader.length);\n offset += frameHeader.length;\n const values = ID3v2Parser.readFrameData(frameDataBytes, frameHeader, this.id3Header.version.major, !this.options.skipCovers, this.metadata);\n if (values) {\n tags.push({ id: frameHeader.id, value: values });\n }\n }\n return tags;\n }\n /**\n * Convert parsed ID3v2 chapter frames (CHAP / CTOC) to generic `format.chapters`.\n *\n * This function expects the `native` tags already to contain parsed `CHAP` and `CTOC` frame values,\n * as produced by `FrameParser.readData`.\n */\n static mapId3v2Chapters(id3Tags) {\n if (!id3Tags)\n return;\n const chapFrames = id3Tags.filter(t => t.id === 'CHAP');\n if (!chapFrames?.length)\n return;\n const tocFrames = id3Tags.filter(t => t.id === 'CTOC');\n const topLevelToc = tocFrames?.find(t => t.value.flags?.topLevel);\n const chapterById = new Map();\n for (const chap of chapFrames) {\n chapterById.set(chap.value.label, chap.value);\n }\n const orderedIds = topLevelToc?.value.childElementIds;\n const chapters = [];\n const source = orderedIds ?? [...chapterById.keys()];\n for (const id of source) {\n const chap = chapterById.get(id);\n if (!chap)\n continue;\n const frames = chap.frames;\n const title = frames.get('TIT2');\n if (!title)\n continue; // title is required\n chapters.push({\n id,\n title,\n url: frames.get('WXXX'),\n start: chap.info.startTime / 1000,\n end: chap.info.endTime / 1000,\n image: frames.get('APIC')\n });\n }\n // If no ordered CTOC, sort by time\n if (!orderedIds) {\n chapters.sort((a, b) => a.start - b.start);\n }\n return chapters.length ? chapters : undefined;\n }\n}\nfunction makeUnexpectedMajorVersionError(majorVer) {\n throw new Id3v2ContentError(`Unexpected majorVer: ${majorVer}`);\n}\n"],"mappings":"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","names":["import_debug","ChapterInfo","__name","buf","off","startOffset","UINT32_BE","endOffset","getFrameHeaderLength","majorVer","makeUnexpectedMajorVersionError","__name","readFrameFlags","b","getBit","readFrameHeader","uint8Array","warningCollector","parseFrameHeaderV22","parseFrameHeaderV23V24","header","textDecode","UINT24_BE","UINT32SYNCSAFE","UINT32_BE","Id3v2ContentError","debug","initDebug","defaultEnc","urlEnc","parseGenre","origVal","genres","code","word","c","genre","parseGenreCode","__name","Genres","FrameParser","_FrameParser","major","warningCollector","uint8Array","type","includeCovers","encoding","bom","TextEncodingToken","length","offset","output","nullTerminatorLength","fzero","text","decodeString","error","v","acc","val","idAndData","pic","findZero","makeUnexpectedMajorVersionError","AttachedPictureType","decodeUintBE","syltHeader","SyncTextHeader","result","readSyllables","nullStr","timestamp","UINT32_BE","textHeader","TextHeader","descriptorStr","textStr","ufid","priv","emailStr","email","rating","UINT8","counterBytes","mimeTypeStr","mimeType","filenameStr","filename","descriptionStr","description","chapter","ChapterInfo","subFrame","readFrameHeader","headerSize","getFrameHeaderLength","subOutput","idEnd","label","flags","topLevel","ordered","entryCount","childElementIds","i","end","childId","toc","bomSize","originalLen","valueArray","zeroIndex","txt","pictureType","entries","res","names","tag","values","value","idStr","enc","Id3v2ContentError","makeUnexpectedFileContentError","majorVer","ID3v2Parser","_ID3v2Parser","__name","buffer","readI","writeI","uint8Array","frameHeader","majorVer","includeCovers","warningCollector","frameParser","FrameParser","makeUnexpectedMajorVersionError","tag","description","metadata","tokenizer","options","id3Header","ID3v2Header","Id3v2ContentError","chapters","extendedHeader","ExtendedHeader","dataRemaining","extendedHeaderSize","dataLen","Uint8ArrayType","value","values","descriptor","resolveValue","id","data","offset","tags","frameHeaderLength","getFrameHeaderLength","frameHeaderBytes","readFrameHeader","frameDataBytes","id3Tags","chapFrames","t","topLevelToc","chapterById","chap","orderedIds","source","frames","title","a","b"],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse","file":"/chunk-6XPFWKSW.js.map"} \ No newline at end of file +{"version":3,"sources":["/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/id3v2/FrameParser.js","/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/id3v2/ID3v2ChapterToken.js","/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/id3v2/FrameHeader.js","/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/id3v2/ID3v2Parser.js"],"sourcesContent":["import initDebug from 'debug';\nimport * as Token from 'token-types';\nimport * as util from '../common/Util.js';\nimport { AttachedPictureType, SyncTextHeader, TextEncodingToken, TextHeader } from './ID3v2Token.js';\nimport { Genres } from '../id3v1/ID3v1Parser.js';\nimport { makeUnexpectedFileContentError } from '../ParseError.js';\nimport { decodeUintBE } from '../common/Util.js';\nimport { ChapterInfo } from './ID3v2ChapterToken.js';\nimport { getFrameHeaderLength, readFrameHeader } from './FrameHeader.js';\nconst debug = initDebug('music-metadata:id3v2:frame-parser');\nconst defaultEnc = 'latin1'; // latin1 == iso-8859-1;\nconst urlEnc = { encoding: defaultEnc, bom: false };\nexport function parseGenre(origVal) {\n // match everything inside parentheses\n const genres = [];\n let code;\n let word = '';\n for (const c of origVal) {\n if (typeof code === 'string') {\n if (c === '(' && code === '') {\n word += '(';\n code = undefined;\n }\n else if (c === ')') {\n if (word !== '') {\n genres.push(word);\n word = '';\n }\n const genre = parseGenreCode(code);\n if (genre) {\n genres.push(genre);\n }\n code = undefined;\n }\n else\n code += c;\n }\n else if (c === '(') {\n code = '';\n }\n else {\n word += c;\n }\n }\n if (word) {\n if (genres.length === 0 && word.match(/^\\d*$/)) {\n word = parseGenreCode(word);\n }\n if (word) {\n genres.push(word);\n }\n }\n return genres;\n}\nfunction parseGenreCode(code) {\n if (code === 'RX')\n return 'Remix';\n if (code === 'CR')\n return 'Cover';\n if (code.match(/^\\d*$/)) {\n return Genres[Number.parseInt(code, 10)];\n }\n}\nexport class FrameParser {\n /**\n * Create id3v2 frame parser\n * @param major - Major version, e.g. (4) for id3v2.4\n * @param warningCollector - Used to collect decode issue\n */\n constructor(major, warningCollector) {\n this.major = major;\n this.warningCollector = warningCollector;\n }\n readData(uint8Array, type, includeCovers) {\n if (uint8Array.length === 0) {\n this.warningCollector.addWarning(`id3v2.${this.major} header has empty tag type=${type}`);\n return;\n }\n const { encoding, bom } = TextEncodingToken.get(uint8Array, 0);\n const length = uint8Array.length;\n let offset = 0;\n let output = []; // ToDo\n const nullTerminatorLength = FrameParser.getNullTerminatorLength(encoding);\n let fzero;\n debug(`Parsing tag type=${type}, encoding=${encoding}, bom=${bom}`);\n switch (type !== 'TXXX' && type[0] === 'T' ? 'T*' : type) {\n case 'T*': // 4.2.1. Text information frames - details\n case 'GRP1': // iTunes-specific ID3v2 grouping field\n case 'GP1': // iTunes-specific ID3v2.2 grouping field\n case 'IPLS': // v2.3: Involved people list\n case 'MVIN':\n case 'MVNM':\n case 'PCS':\n case 'PCST': {\n let text;\n try {\n text = FrameParser.trimNullPadding(util.decodeString(uint8Array.subarray(1), encoding));\n }\n catch (error) {\n if (error instanceof Error) {\n this.warningCollector.addWarning(`id3v2.${this.major} type=${type} header has invalid string value: ${error.message}`);\n break;\n }\n throw error;\n }\n switch (type) {\n case 'TMCL': // Musician credits list\n case 'TIPL': // Involved people list\n case 'IPLS': // Involved people list\n output = FrameParser.functionList(this.splitValue(type, text));\n break;\n case 'TRK':\n case 'TRCK':\n case 'TPOS':\n case 'TIT1':\n case 'TIT2':\n case 'TIT3':\n output = text;\n break;\n case 'TCOM':\n case 'TEXT':\n case 'TOLY':\n case 'TOPE':\n case 'TPE1':\n case 'TSRC':\n // id3v2.3 defines that TCOM, TEXT, TOLY, TOPE & TPE1 values are separated by /\n output = this.splitValue(type, text);\n break;\n case 'TCO':\n case 'TCON':\n output = this.splitValue(type, text).map(v => parseGenre(v)).reduce((acc, val) => acc.concat(val), []);\n break;\n case 'PCS':\n case 'PCST':\n // TODO: Why `default` not results `1` but `''`?\n output = this.major >= 4 ? this.splitValue(type, text) : [text];\n output = (Array.isArray(output) && output[0] === '') ? 1 : 0;\n break;\n default:\n output = this.major >= 4 ? this.splitValue(type, text) : [text];\n }\n break;\n }\n case 'TXXX': {\n const idAndData = FrameParser.readIdentifierAndData(uint8Array.subarray(1), encoding);\n output = {\n description: idAndData.id,\n text: this.splitValue(type, util.decodeString(idAndData.data, encoding).replace(/\\x00+$/, ''))\n };\n break;\n }\n case 'PIC':\n case 'APIC':\n if (includeCovers) {\n const pic = {};\n uint8Array = uint8Array.subarray(1);\n switch (this.major) {\n case 2:\n pic.format = util.decodeString(uint8Array.subarray(0, 3), 'latin1'); // 'latin1'; // latin1 == iso-8859-1;\n uint8Array = uint8Array.subarray(3);\n break;\n case 3:\n case 4:\n fzero = util.findZero(uint8Array, defaultEnc);\n pic.format = util.decodeString(uint8Array.subarray(0, fzero), defaultEnc);\n uint8Array = uint8Array.subarray(fzero + 1);\n break;\n default:\n throw makeUnexpectedMajorVersionError(this.major);\n }\n pic.format = FrameParser.fixPictureMimeType(pic.format);\n pic.type = AttachedPictureType[uint8Array[0]];\n uint8Array = uint8Array.subarray(1);\n fzero = util.findZero(uint8Array, encoding);\n pic.description = util.decodeString(uint8Array.subarray(0, fzero), encoding);\n uint8Array = uint8Array.subarray(fzero + nullTerminatorLength);\n pic.data = uint8Array;\n output = pic;\n }\n break;\n case 'CNT':\n case 'PCNT':\n output = decodeUintBE(uint8Array);\n break;\n case 'SYLT': {\n const syltHeader = SyncTextHeader.get(uint8Array, 0);\n uint8Array = uint8Array.subarray(SyncTextHeader.len);\n const result = {\n descriptor: '',\n language: syltHeader.language,\n contentType: syltHeader.contentType,\n timeStampFormat: syltHeader.timeStampFormat,\n syncText: []\n };\n let readSyllables = false;\n while (uint8Array.length > 0) {\n const nullStr = FrameParser.readNullTerminatedString(uint8Array, syltHeader.encoding);\n uint8Array = uint8Array.subarray(nullStr.len);\n if (readSyllables) {\n const timestamp = Token.UINT32_BE.get(uint8Array, 0);\n uint8Array = uint8Array.subarray(Token.UINT32_BE.len);\n result.syncText.push({\n text: nullStr.text,\n timestamp\n });\n }\n else {\n result.descriptor = nullStr.text;\n readSyllables = true;\n }\n }\n output = result;\n break;\n }\n case 'ULT':\n case 'USLT':\n case 'COM':\n case 'COMM': {\n const textHeader = TextHeader.get(uint8Array, offset);\n offset += TextHeader.len;\n const descriptorStr = FrameParser.readNullTerminatedString(uint8Array.subarray(offset), textHeader.encoding);\n offset += descriptorStr.len;\n const textStr = FrameParser.readNullTerminatedString(uint8Array.subarray(offset), textHeader.encoding);\n const comment = {\n language: textHeader.language,\n descriptor: descriptorStr.text,\n text: textStr.text\n };\n output = comment;\n break;\n }\n case 'UFID': {\n const ufid = FrameParser.readIdentifierAndData(uint8Array, defaultEnc);\n output = { owner_identifier: ufid.id, identifier: ufid.data };\n break;\n }\n case 'PRIV': { // private frame\n const priv = FrameParser.readIdentifierAndData(uint8Array, defaultEnc);\n output = { owner_identifier: priv.id, data: priv.data };\n break;\n }\n case 'POPM': { // Popularimeter\n uint8Array = uint8Array.subarray(offset);\n const emailStr = FrameParser.readNullTerminatedString(uint8Array, urlEnc);\n const email = emailStr.text;\n uint8Array = uint8Array.subarray(emailStr.len);\n if (uint8Array.length === 0) {\n this.warningCollector.addWarning(`id3v2.${this.major} type=${type} POPM frame missing rating byte`);\n output = { email, rating: 0, counter: undefined };\n break;\n }\n const rating = Token.UINT8.get(uint8Array, 0);\n const counterBytes = uint8Array.subarray(Token.UINT8.len);\n output = {\n email,\n rating,\n counter: counterBytes.length > 0 ? decodeUintBE(counterBytes) : undefined\n };\n break;\n }\n case 'GEOB': { // General encapsulated object\n // [encoding] 0x00 0x00/0x00 0x00 0x00/0x00 0x00 \n const encoding = TextEncodingToken.get(uint8Array, 0);\n uint8Array = uint8Array.subarray(1);\n const mimeTypeStr = FrameParser.readNullTerminatedString(uint8Array, urlEnc);\n const mimeType = mimeTypeStr.text;\n uint8Array = uint8Array.subarray(mimeTypeStr.len);\n const filenameStr = FrameParser.readNullTerminatedString(uint8Array, encoding);\n const filename = filenameStr.text;\n uint8Array = uint8Array.subarray(filenameStr.len);\n const descriptionStr = FrameParser.readNullTerminatedString(uint8Array, encoding);\n const description = descriptionStr.text;\n uint8Array = uint8Array.subarray(descriptionStr.len);\n const geob = {\n type: mimeType,\n filename,\n description,\n data: uint8Array\n };\n output = geob;\n break;\n }\n // W-Frames:\n case 'WCOM':\n case 'WCOP':\n case 'WOAF':\n case 'WOAR':\n case 'WOAS':\n case 'WORS':\n case 'WPAY':\n case 'WPUB':\n // Decode URL\n output = FrameParser.readNullTerminatedString(uint8Array, urlEnc).text;\n break;\n case 'WXXX': {\n // [encoding] 0x00/0x00 0x00 \n const encoding = TextEncodingToken.get(uint8Array, 0);\n uint8Array = uint8Array.subarray(1);\n const descriptionStr = FrameParser.readNullTerminatedString(uint8Array, encoding);\n const description = descriptionStr.text;\n uint8Array = uint8Array.subarray(descriptionStr.len);\n // URL is always ISO-8859-1\n output = { description, url: FrameParser.trimNullPadding(util.decodeString(uint8Array, defaultEnc)) };\n break;\n }\n case 'WFD':\n case 'WFED': {\n const encoding = TextEncodingToken.get(uint8Array, 0);\n uint8Array = uint8Array.subarray(1);\n output = FrameParser.readNullTerminatedString(uint8Array, encoding).text;\n break;\n }\n case 'MCDI': {\n // Music CD identifier\n output = uint8Array.subarray(0, length);\n break;\n }\n // ID3v2 Chapters 1.0\n // https://mutagen-specs.readthedocs.io/en/latest/id3/id3v2-chapters-1.0.html#chapter-frame\n case 'CHAP': { // // Chapter frame\n debug(\"Reading CHAP\");\n fzero = util.findZero(uint8Array, defaultEnc);\n const chapter = {\n label: util.decodeString(uint8Array.subarray(0, fzero), defaultEnc),\n info: ChapterInfo.get(uint8Array, fzero + 1),\n frames: new Map()\n };\n offset += fzero + 1 + ChapterInfo.len;\n while (offset < length) {\n const subFrame = readFrameHeader(uint8Array.subarray(offset), this.major, this.warningCollector);\n const headerSize = getFrameHeaderLength(this.major);\n offset += headerSize;\n const subOutput = this.readData(uint8Array.subarray(offset, offset + subFrame.length), subFrame.id, includeCovers);\n offset += subFrame.length;\n chapter.frames.set(subFrame.id, subOutput);\n }\n output = chapter;\n break;\n }\n // ID3v2 Chapters 1.0\n // https://mutagen-specs.readthedocs.io/en/latest/id3/id3v2-chapters-1.0.html#table-of-contents-frame\n case 'CTOC': { // Table of contents frame\n debug('Reading CTOC');\n // Element ID (null-terminated latin1)\n const idEnd = util.findZero(uint8Array, defaultEnc);\n const label = util.decodeString(uint8Array.subarray(0, idEnd), defaultEnc);\n offset = idEnd + 1;\n // Flags\n const flags = uint8Array[offset++];\n const topLevel = (flags & 0x02) !== 0;\n const ordered = (flags & 0x01) !== 0;\n // Child element IDs\n const entryCount = uint8Array[offset++];\n const childElementIds = [];\n for (let i = 0; i < entryCount && offset < length; i++) {\n const end = util.findZero(uint8Array.subarray(offset), defaultEnc);\n const childId = util.decodeString(uint8Array.subarray(offset, offset + end), defaultEnc);\n childElementIds.push(childId);\n offset += end + 1;\n }\n const toc = {\n label,\n flags: { topLevel, ordered },\n childElementIds,\n frames: new Map()\n };\n // Optional embedded sub-frames (e.g. TIT2) follow after the child list\n while (offset < length) {\n const subFrame = readFrameHeader(uint8Array.subarray(offset), this.major, this.warningCollector);\n const headerSize = getFrameHeaderLength(this.major);\n offset += headerSize;\n const subOutput = this.readData(uint8Array.subarray(offset, offset + subFrame.length), subFrame.id, includeCovers);\n offset += subFrame.length;\n toc.frames.set(subFrame.id, subOutput);\n }\n output = toc;\n break;\n }\n default:\n debug(`Warning: unsupported id3v2-tag-type: ${type}`);\n break;\n }\n return output;\n }\n static readNullTerminatedString(uint8Array, encoding) {\n const bomSize = encoding.bom ? 2 : 0;\n const originalLen = uint8Array.length;\n const valueArray = uint8Array.subarray(bomSize);\n const zeroIndex = util.findZero(valueArray, encoding.encoding);\n if (zeroIndex >= valueArray.length) {\n // No terminator found, decode full buffer remainder\n return {\n text: util.decodeString(uint8Array, encoding.encoding),\n len: originalLen\n };\n }\n const txt = uint8Array.subarray(0, bomSize + zeroIndex);\n return {\n text: util.decodeString(txt, encoding.encoding),\n len: bomSize + zeroIndex + FrameParser.getNullTerminatorLength(encoding.encoding)\n };\n }\n static fixPictureMimeType(pictureType) {\n pictureType = pictureType.toLocaleLowerCase();\n switch (pictureType) {\n case 'jpg':\n return 'image/jpeg';\n case 'png':\n return 'image/png';\n }\n return pictureType;\n }\n /**\n * Converts TMCL (Musician credits list) or TIPL (Involved people list)\n * @param entries\n */\n static functionList(entries) {\n const res = {};\n for (let i = 0; i + 1 < entries.length; i += 2) {\n const names = entries[i + 1].split(',');\n res[entries[i]] = res[entries[i]] ? res[entries[i]].concat(names) : names;\n }\n return res;\n }\n /**\n * id3v2.4 defines that multiple T* values are separated by 0x00\n * id3v2.3 defines that TCOM, TEXT, TOLY, TOPE & TPE1 values are separated by /\n * @param tag - Tag name\n * @param text - Concatenated tag value\n * @returns Split tag value\n */\n splitValue(tag, text) {\n let values;\n if (this.major < 4) {\n values = text.split(/\\x00/g);\n if (values.length > 1) {\n this.warningCollector.addWarning(`ID3v2.${this.major} ${tag} uses non standard null-separator.`);\n }\n else {\n values = text.split(/\\//g);\n }\n }\n else {\n values = text.split(/\\x00/g);\n }\n return FrameParser.trimArray(values);\n }\n static trimArray(values) {\n return values.map(value => FrameParser.trimNullPadding(value).trim());\n }\n static trimNullPadding(value) {\n let end = value.length;\n while (end > 0 && value.charCodeAt(end - 1) === 0) {\n end--;\n }\n return end === value.length ? value : value.slice(0, end);\n }\n static readIdentifierAndData(uint8Array, encoding) {\n const idStr = FrameParser.readNullTerminatedString(uint8Array, { encoding, bom: false });\n return { id: idStr.text, data: uint8Array.subarray(idStr.len) };\n }\n static getNullTerminatorLength(enc) {\n return enc.startsWith('utf-16') ? 2 : 1;\n }\n}\nexport class Id3v2ContentError extends makeUnexpectedFileContentError('id3v2') {\n}\nfunction makeUnexpectedMajorVersionError(majorVer) {\n throw new Id3v2ContentError(`Unexpected majorVer: ${majorVer}`);\n}\n","import * as Token from 'token-types';\n/**\n * Data portion of `CHAP` sub frame\n */\nexport const ChapterInfo = {\n len: 16,\n get: (buf, off) => {\n const startOffset = Token.UINT32_BE.get(buf, off + 8);\n const endOffset = Token.UINT32_BE.get(buf, off + 12);\n return {\n startTime: Token.UINT32_BE.get(buf, off),\n endTime: Token.UINT32_BE.get(buf, off + 4),\n startOffset: startOffset === 0xFFFFFFFF ? undefined : startOffset,\n endOffset: endOffset === 0xFFFFFFFF ? undefined : endOffset,\n };\n }\n};\n","// lib/id3v2/FrameHeader.ts\nimport * as Token from 'token-types';\nimport * as util from '../common/Util.js';\nimport { UINT32SYNCSAFE } from './ID3v2Token.js';\nimport { textDecode } from '@borewit/text-codec';\nimport { Id3v2ContentError } from './FrameParser.js';\n/**\n * Frame header length (bytes) depending on ID3v2 major version.\n */\nexport function getFrameHeaderLength(majorVer) {\n switch (majorVer) {\n case 2: return 6;\n case 3:\n case 4: return 10;\n default: throw makeUnexpectedMajorVersionError(majorVer);\n }\n}\nfunction readFrameFlags(b, majorVer) {\n // ID3v2.3 and ID3v2.4 use different bit layouts for the frame status and format flags.\n if (majorVer === 3) {\n // ID3v2.3: status `%abc00000`, format `%ijk00000` (https://id3.org/id3v2.3.0)\n return {\n status: {\n tag_alter_preservation: util.getBit(b, 0, 7),\n file_alter_preservation: util.getBit(b, 0, 6),\n read_only: util.getBit(b, 0, 5)\n },\n format: {\n compression: util.getBit(b, 1, 7),\n encryption: util.getBit(b, 1, 6),\n grouping_identity: util.getBit(b, 1, 5),\n // Unsynchronisation and data-length-indicator do not exist as per-frame flags in ID3v2.3.\n unsynchronisation: false,\n data_length_indicator: false\n }\n };\n }\n // ID3v2.4: status `%0abc0000`, format `%0h00kmnp` (https://id3.org/id3v2.4.0-structure)\n return {\n status: {\n tag_alter_preservation: util.getBit(b, 0, 6),\n file_alter_preservation: util.getBit(b, 0, 5),\n read_only: util.getBit(b, 0, 4)\n },\n format: {\n grouping_identity: util.getBit(b, 1, 6),\n compression: util.getBit(b, 1, 3),\n encryption: util.getBit(b, 1, 2),\n unsynchronisation: util.getBit(b, 1, 1),\n data_length_indicator: util.getBit(b, 1, 0)\n }\n };\n}\n/**\n * Factory: parse a frame header from its header bytes (6 for v2.2, 10 for v2.3/v2.4).\n *\n * Note: It only *parses* and does light validation. It does not read payload bytes.\n */\nexport function readFrameHeader(uint8Array, majorVer, warningCollector) {\n switch (majorVer) {\n case 2:\n return parseFrameHeaderV22(uint8Array, majorVer, warningCollector);\n case 3:\n case 4:\n return parseFrameHeaderV23V24(uint8Array, majorVer, warningCollector);\n default:\n throw makeUnexpectedMajorVersionError(majorVer);\n }\n}\nfunction parseFrameHeaderV22(uint8Array, majorVer, warningCollector) {\n const header = {\n id: textDecode(uint8Array.subarray(0, 3), 'ascii'),\n length: Token.UINT24_BE.get(uint8Array, 3)\n };\n if (!header.id.match(/^[A-Z0-9]{3}$/)) {\n warningCollector.addWarning(`Invalid ID3v2.${majorVer} frame-header-ID: ${header.id}`);\n }\n return header;\n}\nfunction parseFrameHeaderV23V24(uint8Array, majorVer, warningCollector) {\n const header = {\n id: textDecode(uint8Array.subarray(0, 4), 'ascii'),\n length: (majorVer === 4 ? UINT32SYNCSAFE : Token.UINT32_BE).get(uint8Array, 4),\n flags: readFrameFlags(uint8Array.subarray(8, 10), majorVer)\n };\n if (!header.id.match(/^[A-Z0-9]{4}$/)) {\n warningCollector.addWarning(`Invalid ID3v2.${majorVer} frame-header-ID: ${header.id}`);\n }\n return header;\n}\nfunction makeUnexpectedMajorVersionError(majorVer) {\n throw new Id3v2ContentError(`Unexpected majorVer: ${majorVer}`);\n}\n","import * as Token from 'token-types';\nimport { FrameParser, Id3v2ContentError } from './FrameParser.js';\nimport { ExtendedHeader, ID3v2Header } from './ID3v2Token.js';\nimport { getFrameHeaderLength, readFrameHeader } from './FrameHeader.js';\nexport class ID3v2Parser {\n constructor() {\n this.tokenizer = undefined;\n this.id3Header = undefined;\n this.metadata = undefined;\n this.headerType = undefined;\n this.options = undefined;\n }\n static removeUnsyncBytes(buffer) {\n let readI = 0;\n let writeI = 0;\n while (readI < buffer.length - 1) {\n if (readI !== writeI) {\n buffer[writeI] = buffer[readI];\n }\n readI += (buffer[readI] === 0xFF && buffer[readI + 1] === 0) ? 2 : 1;\n writeI++;\n }\n if (readI < buffer.length) {\n buffer[writeI++] = buffer[readI];\n }\n return buffer.subarray(0, writeI);\n }\n static readFrameData(uint8Array, frameHeader, majorVer, includeCovers, warningCollector) {\n const frameParser = new FrameParser(majorVer, warningCollector);\n switch (majorVer) {\n case 2:\n return frameParser.readData(uint8Array, frameHeader.id, includeCovers);\n case 3:\n case 4:\n if (frameHeader.flags?.format.unsynchronisation) {\n uint8Array = ID3v2Parser.removeUnsyncBytes(uint8Array);\n }\n if (frameHeader.flags?.format.data_length_indicator) {\n uint8Array = uint8Array.subarray(4, uint8Array.length);\n }\n return frameParser.readData(uint8Array, frameHeader.id, includeCovers);\n default:\n throw makeUnexpectedMajorVersionError(majorVer);\n }\n }\n /**\n * Create a combined tag key, of tag & description\n * @param tag e.g.: COM\n * @param description e.g. iTunPGAP\n * @returns string e.g. COM:iTunPGAP\n */\n static makeDescriptionTagName(tag, description) {\n return tag + (description ? `:${description}` : '');\n }\n async parse(metadata, tokenizer, options) {\n this.tokenizer = tokenizer;\n this.metadata = metadata;\n this.options = options;\n const id3Header = await this.tokenizer.readToken(ID3v2Header);\n if (id3Header.fileIdentifier !== 'ID3') {\n throw new Id3v2ContentError('expected ID3-header file-identifier \\'ID3\\' was not found');\n }\n this.id3Header = id3Header;\n this.headerType = (`ID3v2.${id3Header.version.major}`);\n await (id3Header.flags.isExtendedHeader ? this.parseExtendedHeader() : this.parseId3Data(id3Header.size));\n // Post process\n const chapters = ID3v2Parser.mapId3v2Chapters(this.metadata.native[this.headerType]);\n this.metadata.setFormat('chapters', chapters);\n }\n async parseExtendedHeader() {\n const extendedHeader = await this.tokenizer.readToken(ExtendedHeader);\n const dataRemaining = extendedHeader.size - ExtendedHeader.len;\n return dataRemaining > 0 ? this.parseExtendedHeaderData(dataRemaining, extendedHeader.size) : this.parseId3Data(this.id3Header.size - extendedHeader.size);\n }\n async parseExtendedHeaderData(dataRemaining, extendedHeaderSize) {\n await this.tokenizer.ignore(dataRemaining);\n return this.parseId3Data(this.id3Header.size - extendedHeaderSize);\n }\n async parseId3Data(dataLen) {\n const uint8Array = await this.tokenizer.readToken(new Token.Uint8ArrayType(dataLen));\n for (const tag of this.parseMetadata(uint8Array)) {\n switch (tag.id) {\n case 'TXXX':\n if (tag.value) {\n await this.handleTag(tag, tag.value.text, () => tag.value.description);\n }\n break;\n default:\n await (Array.isArray(tag.value) ? Promise.all(tag.value.map(value => this.addTag(tag.id, value))) : this.addTag(tag.id, tag.value));\n }\n }\n }\n async handleTag(tag, values, descriptor, resolveValue = value => value) {\n await Promise.all(values.map(value => this.addTag(ID3v2Parser.makeDescriptionTagName(tag.id, descriptor(value)), resolveValue(value))));\n }\n async addTag(id, value) {\n await this.metadata.addTag(this.headerType, id, value);\n }\n parseMetadata(data) {\n let offset = 0;\n const tags = [];\n while (true) {\n if (offset === data.length)\n break;\n const frameHeaderLength = getFrameHeaderLength(this.id3Header.version.major);\n if (offset + frameHeaderLength > data.length) {\n this.metadata.addWarning('Illegal ID3v2 tag length');\n break;\n }\n const frameHeaderBytes = data.subarray(offset, offset + frameHeaderLength);\n offset += frameHeaderLength;\n const frameHeader = readFrameHeader(frameHeaderBytes, this.id3Header.version.major, this.metadata);\n const frameDataBytes = data.subarray(offset, offset + frameHeader.length);\n offset += frameHeader.length;\n const values = ID3v2Parser.readFrameData(frameDataBytes, frameHeader, this.id3Header.version.major, !this.options.skipCovers, this.metadata);\n if (values) {\n tags.push({ id: frameHeader.id, value: values });\n }\n }\n return tags;\n }\n /**\n * Convert parsed ID3v2 chapter frames (CHAP / CTOC) to generic `format.chapters`.\n *\n * This function expects the `native` tags already to contain parsed `CHAP` and `CTOC` frame values,\n * as produced by `FrameParser.readData`.\n */\n static mapId3v2Chapters(id3Tags) {\n if (!id3Tags)\n return;\n const chapFrames = id3Tags.filter(t => t.id === 'CHAP');\n if (!chapFrames?.length)\n return;\n const tocFrames = id3Tags.filter(t => t.id === 'CTOC');\n const topLevelToc = tocFrames?.find(t => t.value.flags?.topLevel);\n const chapterById = new Map();\n for (const chap of chapFrames) {\n chapterById.set(chap.value.label, chap.value);\n }\n const orderedIds = topLevelToc?.value.childElementIds;\n const chapters = [];\n const source = orderedIds ?? [...chapterById.keys()];\n for (const id of source) {\n const chap = chapterById.get(id);\n if (!chap)\n continue;\n const frames = chap.frames;\n const title = frames.get('TIT2');\n if (!title)\n continue; // title is required\n chapters.push({\n id,\n title,\n url: frames.get('WXXX'),\n start: chap.info.startTime / 1000,\n end: chap.info.endTime / 1000,\n image: frames.get('APIC')\n });\n }\n // If no ordered CTOC, sort by time\n if (!orderedIds) {\n chapters.sort((a, b) => a.start - b.start);\n }\n return chapters.length ? chapters : undefined;\n }\n}\nfunction makeUnexpectedMajorVersionError(majorVer) {\n throw new Id3v2ContentError(`Unexpected majorVer: ${majorVer}`);\n}\n"],"mappings":"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","names":["import_debug","ChapterInfo","__name","buf","off","startOffset","UINT32_BE","endOffset","getFrameHeaderLength","majorVer","makeUnexpectedMajorVersionError","__name","readFrameFlags","b","getBit","readFrameHeader","uint8Array","warningCollector","parseFrameHeaderV22","parseFrameHeaderV23V24","header","textDecode","UINT24_BE","UINT32SYNCSAFE","UINT32_BE","Id3v2ContentError","debug","initDebug","defaultEnc","urlEnc","parseGenre","origVal","genres","code","word","c","genre","parseGenreCode","__name","Genres","FrameParser","_FrameParser","major","warningCollector","uint8Array","type","includeCovers","encoding","bom","TextEncodingToken","length","offset","output","nullTerminatorLength","fzero","text","decodeString","error","v","acc","val","idAndData","pic","findZero","makeUnexpectedMajorVersionError","AttachedPictureType","decodeUintBE","syltHeader","SyncTextHeader","result","readSyllables","nullStr","timestamp","UINT32_BE","textHeader","TextHeader","descriptorStr","textStr","ufid","priv","emailStr","email","rating","UINT8","counterBytes","mimeTypeStr","mimeType","filenameStr","filename","descriptionStr","description","chapter","ChapterInfo","subFrame","readFrameHeader","headerSize","getFrameHeaderLength","subOutput","idEnd","label","flags","topLevel","ordered","entryCount","childElementIds","i","end","childId","toc","bomSize","originalLen","valueArray","zeroIndex","txt","pictureType","entries","res","names","tag","values","value","idStr","enc","Id3v2ContentError","makeUnexpectedFileContentError","majorVer","ID3v2Parser","_ID3v2Parser","__name","buffer","readI","writeI","uint8Array","frameHeader","majorVer","includeCovers","warningCollector","frameParser","FrameParser","makeUnexpectedMajorVersionError","tag","description","metadata","tokenizer","options","id3Header","ID3v2Header","Id3v2ContentError","chapters","extendedHeader","ExtendedHeader","dataRemaining","extendedHeaderSize","dataLen","Uint8ArrayType","value","values","descriptor","resolveValue","id","data","offset","tags","frameHeaderLength","getFrameHeaderLength","frameHeaderBytes","readFrameHeader","frameDataBytes","id3Tags","chapFrames","t","topLevelToc","chapterById","chap","orderedIds","source","frames","title","a","b"],"sourceRoot":"","file":"/chunk-6XPFWKSW.js.map"} \ No newline at end of file diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-75BXHJJB.js b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-75BXHJJB.js similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-75BXHJJB.js rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-75BXHJJB.js diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-75BXHJJB.js.br b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-75BXHJJB.js.br similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-75BXHJJB.js.br rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-75BXHJJB.js.br diff --git a/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-75BXHJJB.js.map b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-75BXHJJB.js.map new file mode 100644 index 00000000..3928baed --- /dev/null +++ b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-75BXHJJB.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["/components/output/bytes/s3/constants.js"],"sourcesContent":["export const OBJECT_PREFIX = \"\";\n"],"mappings":"AAAO,IAAMA,EAAgB","names":["OBJECT_PREFIX"],"sourceRoot":"","file":"/chunk-75BXHJJB.js.map"} \ No newline at end of file diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-75KFZLU6.js b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-75KFZLU6.js similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-75KFZLU6.js rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-75KFZLU6.js diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-75KFZLU6.js.br b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-75KFZLU6.js.br similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-75KFZLU6.js.br rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-75KFZLU6.js.br diff --git a/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-75KFZLU6.js.map b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-75KFZLU6.js.map new file mode 100644 index 00000000..77ade023 --- /dev/null +++ b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-75KFZLU6.js.map @@ -0,0 +1 @@ +{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[],"sourceRoot":"","file":"/chunk-75KFZLU6.js.map"} \ No newline at end of file diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-76OIFD3C.js b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-76OIFD3C.js similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-76OIFD3C.js rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-76OIFD3C.js diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-76OIFD3C.js.br b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-76OIFD3C.js.br similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-76OIFD3C.js.br rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-76OIFD3C.js.br diff --git a/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-76OIFD3C.js.map b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-76OIFD3C.js.map new file mode 100644 index 00000000..39f9c627 --- /dev/null +++ b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-76OIFD3C.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["/node_modules/.deno/lit-html@3.3.3/node_modules/lit-html/src/directives/keyed.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\nimport {nothing} from '../lit-html.js';\nimport {\n directive,\n Directive,\n ChildPart,\n DirectiveParameters,\n DirectiveResult,\n} from '../directive.js';\nimport {setCommittedValue} from '../directive-helpers.js';\n\nclass Keyed extends Directive {\n key: unknown = nothing;\n\n render(k: unknown, v: T): T {\n this.key = k;\n return v;\n }\n\n override update(part: ChildPart, [k, v]: DirectiveParameters) {\n if (k !== this.key) {\n // Clear the part before returning a value. The one-arg form of\n // setCommittedValue sets the value to a sentinel which forces a\n // commit the next render.\n setCommittedValue(part);\n this.key = k;\n }\n return v;\n }\n}\n\ninterface KeyedFunc {\n (k: unknown, v: V): DirectiveResult>;\n}\n\n/**\n * Associates a renderable value with a unique key. When the key changes, the\n * previous DOM is removed and disposed before rendering the next value, even\n * if the value - such as a template - is the same.\n *\n * This is useful for forcing re-renders of stateful components, or working\n * with code that expects new data to generate new HTML elements, such as some\n * animation techniques.\n */\nexport const keyed: KeyedFunc = directive(Keyed);\n\n/**\n * The type of the class that powers this directive. Necessary for naming the\n * directive's return type.\n */\nexport type {Keyed};\n"],"mappings":"mIAiDaA,EAAmBC,EAjChC,cAAuBC,CAAAA,CAAvB,aAAAC,CAAAA,MAAAA,GAAAA,SAAAA,EACEC,KAAAC,IAAeC,CAiBjB,CAfE,OAAOC,EAAYC,EAAAA,CAEjB,OADAJ,KAAKC,IAAME,EACJC,CACT,CAES,OAAOC,EAAAA,CAAkBF,EAAGC,CAAAA,EAAAA,CAQnC,OAPID,IAAMH,KAAKC,MAIbK,EAAkBD,CAAAA,EAClBL,KAAKC,IAAME,GAENC,CACT,CAAA,CAAA","names":["keyed","directive","Directive","constructor","this","key","nothing","k","v","part","setCommittedValue"],"sourceRoot":"","file":"/chunk-76OIFD3C.js.map"} \ No newline at end of file diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-7DWJBTKD.js b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-7DWJBTKD.js similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-7DWJBTKD.js rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-7DWJBTKD.js diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-7DWJBTKD.js.br b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-7DWJBTKD.js.br similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-7DWJBTKD.js.br rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-7DWJBTKD.js.br diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-7DWJBTKD.js.map b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-7DWJBTKD.js.map similarity index 98% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-7DWJBTKD.js.map rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-7DWJBTKD.js.map index 85159321..5cc6edcb 100644 --- a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-7DWJBTKD.js.map +++ b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-7DWJBTKD.js.map @@ -1 +1 @@ -{"version":3,"sources":["/components/input/local/common.js"],"sourcesContent":["import * as IDB from \"idb-keyval\";\nimport * as URI from \"fast-uri\";\n\nimport { isAudioFile } from \"~/components/input/common.js\";\nimport { safeDecodeURIComponent } from \"~/common/utils.js\";\nimport { IDB_HANDLES, SCHEME } from \"./constants.js\";\n\n/**\n * @import { Track } from \"~/definitions/types.d.ts\"\n */\n\n////////////////////////////////////////////\n// 🛠️\n////////////////////////////////////////////\n\n/**\n * @param {string} tid\n * @param {string} [path]\n */\nexport function buildURI(tid, path = \"/\") {\n return URI.serialize({\n scheme: SCHEME,\n host: tid,\n path,\n });\n}\n\n/**\n * @param {FileSystemDirectoryHandle} dirHandle\n * @param {string} [basePath]\n * @returns {Promise}\n */\nexport async function enumerateAudioFiles(dirHandle, basePath = \"/\") {\n const results = [];\n\n for await (const [name, handle] of /** @type {any} */ (dirHandle).entries()) {\n const entryPath = basePath + name;\n\n if (handle.kind === \"directory\") {\n const sub = await enumerateAudioFiles(\n /** @type {FileSystemDirectoryHandle} */ (handle),\n entryPath + \"/\",\n );\n results.push(...sub);\n } else if (isAudioFile(name)) {\n results.push(entryPath);\n }\n }\n\n return results;\n}\n\n/**\n * @param {FileSystemHandle} handle\n * @param {string} path\n * @returns {Promise}\n */\nexport async function getHandleFile(handle, path) {\n if (handle.kind === \"file\") {\n return /** @type {FileSystemFileHandle} */ (handle);\n }\n\n const parts = path.replace(/^\\//, \"\").split(\"/\").filter(Boolean);\n let current = /** @type {FileSystemDirectoryHandle} */ (handle);\n\n for (const part of parts.slice(0, -1)) {\n current = await current.getDirectoryHandle(part);\n }\n\n return current.getFileHandle(/** @type {string} */ (parts.at(-1)));\n}\n\n/**\n * @param {FileSystemHandle} handle\n * @param {string} path\n * @returns {Promise}\n */\nexport async function getDirectoryHandle(handle, path) {\n if (handle.kind === \"file\") {\n return undefined;\n }\n\n let current = /** @type {FileSystemDirectoryHandle} */ (handle);\n\n for (const part of path.replace(/^\\//, \"\").split(\"/\").filter(Boolean)) {\n current = await current.getDirectoryHandle(part);\n }\n\n return current;\n}\n\n/**\n * @param {string} path\n * @returns {string | undefined}\n */\nexport function dirname(path) {\n const index = path.lastIndexOf(\"/\");\n if (index === -1) return undefined;\n return path.slice(0, index + 1);\n}\n\n/**\n * @param {Track[]} tracks\n * @returns {Record}\n */\nexport function groupTracksByTid(tracks) {\n /** @type {Record} */\n const acc = {};\n\n tracks.forEach((track) => {\n const parsed = parseURI(track.uri);\n if (!parsed) return;\n\n const { tid } = parsed;\n if (acc[tid]) {\n acc[tid].tracks.push(track);\n } else {\n acc[tid] = { tid, tracks: [track] };\n }\n });\n\n return acc;\n}\n\n/**\n * @param {string[]} uris\n * @returns {Record}\n */\nexport function groupUrisByTid(uris) {\n /** @type {Record} */\n const acc = {};\n\n uris.forEach((uri) => {\n const parsed = parseURI(uri);\n if (!parsed) return;\n\n const { tid } = parsed;\n if (acc[tid]) {\n acc[tid].uris.push(uri);\n } else {\n acc[tid] = { tid, uris: [uri] };\n }\n });\n\n return acc;\n}\n\nexport function isSupported() {\n return typeof (/** @type {any} */ (globalThis).showDirectoryPicker) !==\n \"undefined\";\n}\n\n/**\n * @returns {Promise>}\n */\nexport async function loadHandles() {\n const i = await IDB.get(IDB_HANDLES);\n return i ?? {};\n}\n\n/**\n * @param {string} uriString\n * @returns {{ tid: string; path: string } | undefined}\n */\nexport function parseURI(uriString) {\n try {\n const url = new URL(uriString);\n if (url.protocol !== `${SCHEME}:`) return undefined;\n if (!url.host) return undefined;\n\n return {\n tid: url.host,\n path: safeDecodeURIComponent(url.pathname),\n };\n } catch {\n return undefined;\n }\n}\n\n/**\n * @param {Record} handles\n */\nexport async function saveHandles(handles) {\n await IDB.set(IDB_HANDLES, handles);\n}\n\n/**\n * @param {Track[]} tracks\n * @returns {Record}\n */\nexport function tidsFromTracks(tracks) {\n /** @type {Record} */\n const acc = {};\n\n tracks.forEach((track) => {\n const parsed = parseURI(track.uri);\n if (!parsed) return;\n acc[parsed.tid] = parsed.tid;\n });\n\n return acc;\n}\n"],"mappings":"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","names":["buildURI","tid","path","serialize","SCHEME","__name","enumerateAudioFiles","dirHandle","basePath","results","name","handle","entryPath","sub","isAudioFile","getHandleFile","parts","current","part","getDirectoryHandle","dirname","index","groupTracksByTid","tracks","acc","track","parsed","parseURI","groupUrisByTid","uris","uri","isSupported","loadHandles","get","IDB_HANDLES","uriString","url","safeDecodeURIComponent","saveHandles","handles","set","tidsFromTracks"],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse","file":"/chunk-7DWJBTKD.js.map"} \ No newline at end of file +{"version":3,"sources":["/components/input/local/common.js"],"sourcesContent":["import * as IDB from \"idb-keyval\";\nimport * as URI from \"fast-uri\";\n\nimport { isAudioFile } from \"~/components/input/common.js\";\nimport { safeDecodeURIComponent } from \"~/common/utils.js\";\nimport { IDB_HANDLES, SCHEME } from \"./constants.js\";\n\n/**\n * @import { Track } from \"~/definitions/types.d.ts\"\n */\n\n////////////////////////////////////////////\n// 🛠️\n////////////////////////////////////////////\n\n/**\n * @param {string} tid\n * @param {string} [path]\n */\nexport function buildURI(tid, path = \"/\") {\n return URI.serialize({\n scheme: SCHEME,\n host: tid,\n path,\n });\n}\n\n/**\n * @param {FileSystemDirectoryHandle} dirHandle\n * @param {string} [basePath]\n * @returns {Promise}\n */\nexport async function enumerateAudioFiles(dirHandle, basePath = \"/\") {\n const results = [];\n\n for await (const [name, handle] of /** @type {any} */ (dirHandle).entries()) {\n const entryPath = basePath + name;\n\n if (handle.kind === \"directory\") {\n const sub = await enumerateAudioFiles(\n /** @type {FileSystemDirectoryHandle} */ (handle),\n entryPath + \"/\",\n );\n results.push(...sub);\n } else if (isAudioFile(name)) {\n results.push(entryPath);\n }\n }\n\n return results;\n}\n\n/**\n * @param {FileSystemHandle} handle\n * @param {string} path\n * @returns {Promise}\n */\nexport async function getHandleFile(handle, path) {\n if (handle.kind === \"file\") {\n return /** @type {FileSystemFileHandle} */ (handle);\n }\n\n const parts = path.replace(/^\\//, \"\").split(\"/\").filter(Boolean);\n let current = /** @type {FileSystemDirectoryHandle} */ (handle);\n\n for (const part of parts.slice(0, -1)) {\n current = await current.getDirectoryHandle(part);\n }\n\n return current.getFileHandle(/** @type {string} */ (parts.at(-1)));\n}\n\n/**\n * @param {FileSystemHandle} handle\n * @param {string} path\n * @returns {Promise}\n */\nexport async function getDirectoryHandle(handle, path) {\n if (handle.kind === \"file\") {\n return undefined;\n }\n\n let current = /** @type {FileSystemDirectoryHandle} */ (handle);\n\n for (const part of path.replace(/^\\//, \"\").split(\"/\").filter(Boolean)) {\n current = await current.getDirectoryHandle(part);\n }\n\n return current;\n}\n\n/**\n * @param {string} path\n * @returns {string | undefined}\n */\nexport function dirname(path) {\n const index = path.lastIndexOf(\"/\");\n if (index === -1) return undefined;\n return path.slice(0, index + 1);\n}\n\n/**\n * @param {Track[]} tracks\n * @returns {Record}\n */\nexport function groupTracksByTid(tracks) {\n /** @type {Record} */\n const acc = {};\n\n tracks.forEach((track) => {\n const parsed = parseURI(track.uri);\n if (!parsed) return;\n\n const { tid } = parsed;\n if (acc[tid]) {\n acc[tid].tracks.push(track);\n } else {\n acc[tid] = { tid, tracks: [track] };\n }\n });\n\n return acc;\n}\n\n/**\n * @param {string[]} uris\n * @returns {Record}\n */\nexport function groupUrisByTid(uris) {\n /** @type {Record} */\n const acc = {};\n\n uris.forEach((uri) => {\n const parsed = parseURI(uri);\n if (!parsed) return;\n\n const { tid } = parsed;\n if (acc[tid]) {\n acc[tid].uris.push(uri);\n } else {\n acc[tid] = { tid, uris: [uri] };\n }\n });\n\n return acc;\n}\n\nexport function isSupported() {\n return typeof (/** @type {any} */ (globalThis).showDirectoryPicker) !==\n \"undefined\";\n}\n\n/**\n * @returns {Promise>}\n */\nexport async function loadHandles() {\n const i = await IDB.get(IDB_HANDLES);\n return i ?? {};\n}\n\n/**\n * @param {string} uriString\n * @returns {{ tid: string; path: string } | undefined}\n */\nexport function parseURI(uriString) {\n try {\n const url = new URL(uriString);\n if (url.protocol !== `${SCHEME}:`) return undefined;\n if (!url.host) return undefined;\n\n return {\n tid: url.host,\n path: safeDecodeURIComponent(url.pathname),\n };\n } catch {\n return undefined;\n }\n}\n\n/**\n * @param {Record} handles\n */\nexport async function saveHandles(handles) {\n await IDB.set(IDB_HANDLES, handles);\n}\n\n/**\n * @param {Track[]} tracks\n * @returns {Record}\n */\nexport function tidsFromTracks(tracks) {\n /** @type {Record} */\n const acc = {};\n\n tracks.forEach((track) => {\n const parsed = parseURI(track.uri);\n if (!parsed) return;\n acc[parsed.tid] = parsed.tid;\n });\n\n return acc;\n}\n"],"mappings":"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","names":["buildURI","tid","path","serialize","SCHEME","__name","enumerateAudioFiles","dirHandle","basePath","results","name","handle","entryPath","sub","isAudioFile","getHandleFile","parts","current","part","getDirectoryHandle","dirname","index","groupTracksByTid","tracks","acc","track","parsed","parseURI","groupUrisByTid","uris","uri","isSupported","loadHandles","get","IDB_HANDLES","uriString","url","safeDecodeURIComponent","saveHandles","handles","set","tidsFromTracks"],"sourceRoot":"","file":"/chunk-7DWJBTKD.js.map"} \ No newline at end of file diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-7GJVHJL3.js b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-7GJVHJL3.js similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-7GJVHJL3.js rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-7GJVHJL3.js diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-7GJVHJL3.js.br b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-7GJVHJL3.js.br similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-7GJVHJL3.js.br rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-7GJVHJL3.js.br diff --git a/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-7GJVHJL3.js.map b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-7GJVHJL3.js.map new file mode 100644 index 00000000..91e354fa --- /dev/null +++ b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-7GJVHJL3.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["/components/input/https-json/constants.js"],"sourcesContent":["export const SCHEME = \"https-json\";\n"],"mappings":"AAAO,IAAMA,EAAS","names":["SCHEME"],"sourceRoot":"","file":"/chunk-7GJVHJL3.js.map"} \ No newline at end of file diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-7K3Z36JT.js b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-7K3Z36JT.js similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-7K3Z36JT.js rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-7K3Z36JT.js diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-7K3Z36JT.js.br b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-7K3Z36JT.js.br similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-7K3Z36JT.js.br rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-7K3Z36JT.js.br diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-7K3Z36JT.js.map b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-7K3Z36JT.js.map similarity index 99% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-7K3Z36JT.js.map rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-7K3Z36JT.js.map index 46f41a75..32dc60fc 100644 --- a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-7K3Z36JT.js.map +++ b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-7K3Z36JT.js.map @@ -1 +1 @@ -{"version":3,"sources":["/components/transformer/output/bytes/dasl-sync/element.js"],"sourcesContent":["import { decode, encode } from \"@atcute/cbor\";\nimport { ifDefined } from \"lit-html/directives/if-defined.js\";\nimport deepDiff from \"@fry69/deep-diff\";\n\nimport \"~/components/output/polymorphic/indexed-db/element.js\";\n\nimport * as CID from \"~/common/cid.js\";\nimport { diff, strictEquality } from \"~/common/compare.js\";\nimport { collectionSchema } from \"~/common/self-describing.js\";\nimport { computed, signal } from \"~/common/signal.js\";\nimport { compareTimestamps } from \"~/common/temporal.js\";\nimport { OutputTransformer } from \"../../base.js\";\nimport { defineElement } from \"~/common/element.js\";\n\n/**\n * @import { SignalReader } from \"~/common/signal.d.ts\";\n * @import { RenderArg } from \"~/common/element.d.ts\"\n * @import { OutputElement } from \"@specs/components/output/types.d.ts\"\n *\n * @import { Container } from \"@specs/components/transformer/output/bytes/dasl-sync/types.d.ts\"\n */\n\n/** @type {Container} */\nconst EMPTY = {\n cid: undefined,\n data: [],\n inventory: { current: {}, removed: [] },\n};\n\n/**\n * @extends {OutputTransformer}\n */\nclass DaslBytesSyncOutputTransformer extends OutputTransformer {\n static NAME = \"diffuse/transformer/output/bytes/dasl-sync\";\n\n constructor() {\n super();\n\n const remote = this.base();\n const local = this.#localOutput.get;\n\n /**\n * @template {{ id: string; updatedAt: string }} T\n * @param {string} kind\n * @param {SignalReader<{ state: \"loading\" } | { state: \"loaded\"; data: Uint8Array | undefined } | { state: \"error\" }>} localCollection\n * @param {SignalReader<{ state: \"loading\" } | { state: \"loaded\"; data: Uint8Array | undefined } | { state: \"error\" }>} remoteCollection\n * @param {{ saveLocal: (bytes: Uint8Array) => Promise; saveRemote: (bytes: Uint8Array) => Promise }} sync\n */\n const state = (\n kind,\n localCollection,\n remoteCollection,\n { saveLocal, saveRemote },\n ) => {\n const container = signal(\n /** @type {Container} */ (EMPTY),\n { compare: strictEquality },\n );\n\n const isReady = signal(false);\n const merging = signal(\n { isBusy: false, lastCID: \"\", lastRemoteCID: \"\" },\n { compare: diff },\n );\n\n this.effect(() => {\n if (!isReady.value) return;\n if (merging.value.isBusy) return;\n\n const lc = localCollection();\n const rc = remote.ready() ? remoteCollection() : undefined;\n\n const lb = lc?.state === \"loaded\" ? lc.data : undefined;\n const rb = rc?.state === \"loaded\" ? rc.data : undefined;\n const rs = rc?.state;\n\n /** @type {Container | undefined} */\n const l = lb ? decode(lb) : undefined;\n\n /** @type {Container | undefined} */\n const r = rb && rs === \"loaded\" ? decode(rb) : undefined;\n\n if (!r) {\n if (l) {\n container.value = l;\n\n if (remote.ready() && rs === \"loaded\") {\n this.isLeader().then((isLeader) => {\n if (!isLeader) return;\n const bytes = this.save(l);\n saveRemote(bytes);\n });\n }\n }\n } else if (!l) {\n container.value = r;\n\n this.isLeader().then((isLeader) => {\n if (!isLeader) return;\n const bytes = this.save(r);\n saveLocal(bytes);\n });\n } else if (\n rs === \"loaded\" && this.hasDiverged({ local: l, remote: r })\n ) {\n // If we've already reconciled this exact (local, remote) pair and it\n // made no progress (e.g. the remote write failed, or the merge\n // resolved to the container we already hold), don't re-enter the\n // merge. Re-merging here only toggles `merging`'s busy flag, which\n // re-runs this effect and spins the reactive sync loop, freezing the\n // page. Wait until local or remote actually changes before trying\n // again.\n const prev = merging.value;\n if (prev.lastCID === (l.cid ?? \"\") &&\n prev.lastRemoteCID === (r.cid ?? \"\")) {\n return;\n }\n\n // Async merge\n this.isLeader().then((isLeader) => {\n if (!isLeader) return;\n\n merging.value = {\n isBusy: true,\n lastCID: prev.lastCID,\n lastRemoteCID: prev.lastRemoteCID,\n };\n\n this.merge(l, r).then(async (c) => {\n /**\n * Remote cid after the (possible) push. Stays at the pre-merge\n * remote cid when there's nothing to push or the push fails, so\n * the effect-level guard above knows this reconcile was already\n * attempted and won't retry it in a loop.\n */\n let resolvedRemoteCID = r.cid ?? \"\";\n let reconciledCID = c.cid ?? \"\";\n\n try {\n container.value = c;\n\n const bytes = this.save(c);\n\n if (c.cid !== l.cid) {\n await saveLocal(bytes);\n }\n\n if (remote.ready() && rs === \"loaded\" && c.cid !== r.cid) {\n await saveRemote(bytes);\n resolvedRemoteCID = c.cid ?? \"\";\n }\n } catch (err) {\n console.error(\"Merge failed:\", err);\n } finally {\n merging.value = {\n isBusy: false,\n lastCID: reconciledCID,\n lastRemoteCID: resolvedRemoteCID,\n };\n }\n }).catch((err) => {\n // Merge() itself rejected (before producing a reconciled\n // container). Reset the busy flag so the effect isn't stuck, and\n // record the exact (local, remote) pair we attempted so a\n // persistent failure is skipped rather than spinning forever.\n console.error(\"Merge failed:\", err);\n merging.value = {\n isBusy: false,\n lastCID: l.cid ?? \"\",\n lastRemoteCID: r.cid ?? \"\",\n };\n });\n });\n } else {\n container.value = l;\n }\n });\n\n return computed(() => {\n if (!isReady.get()) isReady.value = true;\n return container.get();\n });\n };\n\n // Container signals\n const facets = state(\n \"facets\",\n computed(() => local()?.facets.collection() ?? { state: \"loading\" }),\n remote.facets.collection,\n {\n saveLocal: async (v) => local()?.facets.save(v),\n saveRemote: remote.facets.save,\n },\n );\n\n const playlistItems = state(\n \"playlistItems\",\n computed(() =>\n local()?.playlistItems.collection() ?? { state: \"loading\" }\n ),\n remote.playlistItems.collection,\n {\n saveLocal: async (v) => local()?.playlistItems.save(v),\n saveRemote: remote.playlistItems.save,\n },\n );\n\n const settings = state(\n \"settings\",\n computed(() => local()?.settings.collection() ?? { state: \"loading\" }),\n remote.settings.collection,\n {\n saveLocal: async (v) => local()?.settings.save(v),\n saveRemote: remote.settings.save,\n },\n );\n\n const tracks = state(\n \"tracks\",\n computed(() => local()?.tracks.collection() ?? { state: \"loading\" }),\n remote.tracks.collection,\n {\n saveLocal: async (v) => local()?.tracks.save(v),\n saveRemote: remote.tracks.save,\n },\n );\n\n // Output manager\n this.facets = this.managerProp(\n { save: async (v) => local()?.facets.save(v) },\n remote.facets,\n remote.ready,\n facets,\n \"facets\",\n );\n\n this.playlistItems = this.managerProp(\n { save: async (v) => local()?.playlistItems.save(v) },\n remote.playlistItems,\n remote.ready,\n playlistItems,\n \"playlistItems\",\n );\n\n this.settings = this.managerProp(\n { save: async (v) => local()?.settings.save(v) },\n remote.settings,\n remote.ready,\n settings,\n \"settings\",\n );\n\n this.tracks = this.managerProp(\n { save: async (v) => local()?.tracks.save(v) },\n remote.tracks,\n remote.ready,\n tracks,\n \"tracks\",\n );\n\n this.ready = () => true;\n }\n\n // SIGNALS\n\n #localOutput = signal(\n /** @type {OutputElement | undefined} */ (undefined),\n );\n\n // LIFECYCLE\n\n /**\n * @override\n */\n async connectedCallback() {\n // Broadcast if needed\n if (this.hasAttribute(\"group\")) {\n this.broadcast(this.identifier, {});\n }\n\n super.connectedCallback();\n\n /** @type {OutputElement | null} */\n const local = this.root().querySelector(\"dop-indexed-db\");\n if (!local) throw new Error(\"Can't find local output\");\n\n customElements.whenDefined(local.localName).then(() => {\n this.#localOutput.value = local;\n });\n }\n\n // DATA FUNCTIONS\n\n /**\n * @template {{ id: string; updatedAt: string }} T\n * @param {{ previous: Container, collection: T[], name?: import(\"~/common/self-describing.js\").CollectionName }} _\n * @returns {Promise>}\n */\n async updateContainer({ previous, collection, name }) {\n const inventory = previous.inventory;\n const schema = name ? collectionSchema(name) : null;\n\n const collIds = collection.map(({ id }) => id);\n\n const currSet = new Set(Object.keys(inventory.current));\n const collSet = new Set(collIds);\n\n const newSet = collSet.difference(currSet);\n const remSet = currSet.difference(collSet);\n\n const alreadyRemoved = new Set(inventory.removed);\n const allRemoved = alreadyRemoved.union(remSet);\n\n /** @type {Record} */\n const current = { ...inventory.current };\n\n remSet.forEach((id) => {\n delete current[id];\n });\n\n /** @type Promise[] */\n const promises = [];\n\n collection.forEach((a) => {\n const encoded = encode(a);\n\n promises.push((async () => {\n const cid = await CID.create(0x71, encoded);\n current[a.id] = cid;\n })());\n });\n\n await Promise.all(promises);\n\n const newInventory = {\n current,\n removed: Array.from(allRemoved),\n };\n\n const container = {\n cid: await CID.create(0x71, encode(newInventory)),\n data: collection,\n inventory: newInventory,\n };\n return schema ? { ...container, $schema: schema } : container;\n }\n\n /**\n * @template {{ id: string; updatedAt: string }} T\n * @param {{ local: Container, remote: Container }} _\n */\n hasDiverged({ local, remote }) {\n return local.cid !== remote.cid;\n }\n\n /**\n * @template {{ id: string; updatedAt: string }} T\n * @param {Container} a\n * @param {Container} b\n * @returns {Promise>}\n */\n async merge(a, b) {\n const removedA = new Set(a.inventory.removed);\n const removedB = new Set(b.inventory.removed);\n const allRemoved = removedA.union(removedB);\n\n const currentA = a.inventory.current;\n const currentB = b.inventory.current;\n\n const mapA = new Map(a.data.map((item) => [item.id, item]));\n const mapB = new Map(b.data.map((item) => [item.id, item]));\n\n // Combine all known ids from both sides\n const allIds = new Set([\n ...Object.keys(currentA),\n ...Object.keys(currentB),\n ]);\n\n /** @type {Record} */\n const current = {};\n\n /** @type {T[]} */\n const data = [];\n\n // Construct `current` and `data`\n /** @type {Promise[]} */\n const cidPromises = [];\n\n for (const id of allIds) {\n if (allRemoved.has(id)) continue;\n\n if (id in currentA && id in currentB) {\n const itemA = mapA.get(id);\n const itemB = mapB.get(id);\n\n if (!itemA || !itemB) {\n console.warn(\"Should have found both items but didn't!\");\n continue;\n }\n\n // Items are identical, no merge or CID recomputation needed\n if (currentA[id] === currentB[id]) {\n data.push(itemA);\n current[id] = currentA[id];\n continue;\n }\n\n const hasAUpdatedAt = Boolean(itemA.updatedAt);\n const hasBUpdatedAt = Boolean(itemB.updatedAt);\n\n // The side that carries an `updatedAt` is the one that was edited, so\n // it should win over a pristine copy that never recorded a change (e.g.\n // a legacy seeded/starting-set facet persisted before it gained a\n // timestamp). Only when both carry one do we compare clocks.\n const isANewerThanB = (hasAUpdatedAt && !hasBUpdatedAt)\n ? true\n : (!hasAUpdatedAt && hasBUpdatedAt)\n ? false\n : hasAUpdatedAt && hasBUpdatedAt\n ? compareTimestamps(itemA.updatedAt, itemB.updatedAt) > 0\n : false;\n\n const newestItem = isANewerThanB ? itemA : itemB;\n const oldItem = isANewerThanB ? itemB : itemA;\n\n /** @type {T} */\n const mergedItem = { ...oldItem };\n\n deepDiff.applyDiff(mergedItem, newestItem);\n\n data.push(mergedItem);\n\n cidPromises.push(\n CID.create(0x71, encode(mergedItem)).then((cid) => {\n current[id] = cid;\n }),\n );\n } else {\n const item = mapA.get(id) ?? mapB.get(id);\n\n if (item) {\n data.push(item);\n current[id] = currentA[id] ?? currentB[id];\n }\n }\n }\n\n await Promise.all(cidPromises);\n\n // New inventory\n const updatedInventory = { current, removed: Array.from(allRemoved) };\n\n return {\n cid: await CID.create(0x71, encode(updatedInventory)),\n data,\n inventory: updatedInventory,\n $schema: a.$schema,\n };\n }\n\n /**\n * @template {{ id: string; updatedAt: string }} T\n * @param {Container} container\n * @returns {Uint8Array}\n */\n save(container) {\n return encode(container);\n }\n\n // OUTPUT MANAGER FUNCTIONS\n\n /**\n * @template {{ id: string; updatedAt: string }} T\n * @param {{ save: (bytes: Uint8Array) => Promise | void }} local\n * @param {{ collection: SignalReader<{ state: \"loading\" } | { state: \"loaded\"; data: Uint8Array | undefined } | { state: \"error\" }>, reload: () => Promise, save: (bytes: Uint8Array) => Promise }} remote\n * @param {SignalReader} remoteReady\n * @param {SignalReader>} container\n * @param {import(\"~/common/self-describing.js\").CollectionName} name\n * @returns {{ collection: SignalReader<{ state: \"loading\" } | { state: \"loaded\"; data: T[] } | { state: \"error\" }>, reload: () => Promise, save: (items: T[]) => Promise }}\n */\n managerProp(local, remote, remoteReady, container, name) {\n return {\n collection: computed(() => {\n const c = container();\n\n if (c.cid === undefined && remoteReady() && remote.collection().state === \"loading\") {\n return { state: \"loading\" };\n }\n\n return { state: \"loaded\", data: c.data };\n }),\n reload: remote.reload,\n save: async (/** @type {T[]} */ newItems) => {\n const adjustedContainer = await this.updateContainer({\n collection: newItems,\n previous: container(),\n name,\n });\n\n const bytes = this.save(adjustedContainer);\n await local.save(bytes);\n },\n };\n }\n\n // RENDER\n\n /**\n * @param {RenderArg} _\n */\n render({ html }) {\n return html`\n \n `;\n }\n}\n\nexport default DaslBytesSyncOutputTransformer;\n\n////////////////////////////////////////////\n// REGISTER\n////////////////////////////////////////////\n\nexport const CLASS = DaslBytesSyncOutputTransformer;\nexport const NAME = \"dtob-dasl-sync\";\n\ndefineElement(NAME, CLASS);\n"],"mappings":"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","names":["element_exports","__export","CLASS","NAME","element_default","EMPTY","DaslBytesSyncOutputTransformer","OutputTransformer","__name","remote","local","#localOutput","state","kind","localCollection","remoteCollection","saveLocal","saveRemote","container","signal","strictEquality","isReady","merging","diff","lc","rc","lb","rb","rs","l","decode","r","isLeader","bytes","prev","c","resolvedRemoteCID","reconciledCID","err","computed","facets","v","playlistItems","settings","tracks","previous","collection","name","inventory","schema","collectionSchema","collIds","id","currSet","collSet","newSet","remSet","allRemoved","current","promises","a","encoded","encode","cid","create","newInventory","b","removedA","removedB","currentA","currentB","mapA","item","mapB","allIds","data","cidPromises","itemA","itemB","hasAUpdatedAt","hasBUpdatedAt","isANewerThanB","compareTimestamps","newestItem","mergedItem","deep_diff_default","updatedInventory","remoteReady","newItems","adjustedContainer","html","o","element_default","CLASS","NAME","defineElement"],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse","file":"/chunk-7K3Z36JT.js.map"} \ No newline at end of file +{"version":3,"sources":["/components/transformer/output/bytes/dasl-sync/element.js"],"sourcesContent":["import { decode, encode } from \"@atcute/cbor\";\nimport { ifDefined } from \"lit-html/directives/if-defined.js\";\nimport deepDiff from \"@fry69/deep-diff\";\n\nimport \"~/components/output/polymorphic/indexed-db/element.js\";\n\nimport * as CID from \"~/common/cid.js\";\nimport { diff, strictEquality } from \"~/common/compare.js\";\nimport { collectionSchema } from \"~/common/self-describing.js\";\nimport { computed, signal } from \"~/common/signal.js\";\nimport { compareTimestamps } from \"~/common/temporal.js\";\nimport { OutputTransformer } from \"../../base.js\";\nimport { defineElement } from \"~/common/element.js\";\n\n/**\n * @import { SignalReader } from \"~/common/signal.d.ts\";\n * @import { RenderArg } from \"~/common/element.d.ts\"\n * @import { OutputElement } from \"@specs/components/output/types.d.ts\"\n *\n * @import { Container } from \"@specs/components/transformer/output/bytes/dasl-sync/types.d.ts\"\n */\n\n/** @type {Container} */\nconst EMPTY = {\n cid: undefined,\n data: [],\n inventory: { current: {}, removed: [] },\n};\n\n/**\n * @extends {OutputTransformer}\n */\nclass DaslBytesSyncOutputTransformer extends OutputTransformer {\n static NAME = \"diffuse/transformer/output/bytes/dasl-sync\";\n\n constructor() {\n super();\n\n const remote = this.base();\n const local = this.#localOutput.get;\n\n /**\n * @template {{ id: string; updatedAt: string }} T\n * @param {string} kind\n * @param {SignalReader<{ state: \"loading\" } | { state: \"loaded\"; data: Uint8Array | undefined } | { state: \"error\" }>} localCollection\n * @param {SignalReader<{ state: \"loading\" } | { state: \"loaded\"; data: Uint8Array | undefined } | { state: \"error\" }>} remoteCollection\n * @param {{ saveLocal: (bytes: Uint8Array) => Promise; saveRemote: (bytes: Uint8Array) => Promise }} sync\n */\n const state = (\n kind,\n localCollection,\n remoteCollection,\n { saveLocal, saveRemote },\n ) => {\n const container = signal(\n /** @type {Container} */ (EMPTY),\n { compare: strictEquality },\n );\n\n const isReady = signal(false);\n const merging = signal(\n { isBusy: false, lastCID: \"\", lastRemoteCID: \"\" },\n { compare: diff },\n );\n\n this.effect(() => {\n if (!isReady.value) return;\n if (merging.value.isBusy) return;\n\n const lc = localCollection();\n const rc = remote.ready() ? remoteCollection() : undefined;\n\n const lb = lc?.state === \"loaded\" ? lc.data : undefined;\n const rb = rc?.state === \"loaded\" ? rc.data : undefined;\n const rs = rc?.state;\n\n /** @type {Container | undefined} */\n const l = lb ? decode(lb) : undefined;\n\n /** @type {Container | undefined} */\n const r = rb && rs === \"loaded\" ? decode(rb) : undefined;\n\n if (!r) {\n if (l) {\n container.value = l;\n\n if (remote.ready() && rs === \"loaded\") {\n this.isLeader().then((isLeader) => {\n if (!isLeader) return;\n const bytes = this.save(l);\n saveRemote(bytes);\n });\n }\n }\n } else if (!l) {\n container.value = r;\n\n this.isLeader().then((isLeader) => {\n if (!isLeader) return;\n const bytes = this.save(r);\n saveLocal(bytes);\n });\n } else if (\n rs === \"loaded\" && this.hasDiverged({ local: l, remote: r })\n ) {\n // If we've already reconciled this exact (local, remote) pair and it\n // made no progress (e.g. the remote write failed, or the merge\n // resolved to the container we already hold), don't re-enter the\n // merge. Re-merging here only toggles `merging`'s busy flag, which\n // re-runs this effect and spins the reactive sync loop, freezing the\n // page. Wait until local or remote actually changes before trying\n // again.\n const prev = merging.value;\n if (prev.lastCID === (l.cid ?? \"\") &&\n prev.lastRemoteCID === (r.cid ?? \"\")) {\n return;\n }\n\n // Async merge\n this.isLeader().then((isLeader) => {\n if (!isLeader) return;\n\n merging.value = {\n isBusy: true,\n lastCID: prev.lastCID,\n lastRemoteCID: prev.lastRemoteCID,\n };\n\n this.merge(l, r).then(async (c) => {\n /**\n * Remote cid after the (possible) push. Stays at the pre-merge\n * remote cid when there's nothing to push or the push fails, so\n * the effect-level guard above knows this reconcile was already\n * attempted and won't retry it in a loop.\n */\n let resolvedRemoteCID = r.cid ?? \"\";\n let reconciledCID = c.cid ?? \"\";\n\n try {\n container.value = c;\n\n const bytes = this.save(c);\n\n if (c.cid !== l.cid) {\n await saveLocal(bytes);\n }\n\n if (remote.ready() && rs === \"loaded\" && c.cid !== r.cid) {\n await saveRemote(bytes);\n resolvedRemoteCID = c.cid ?? \"\";\n }\n } catch (err) {\n console.error(\"Merge failed:\", err);\n } finally {\n merging.value = {\n isBusy: false,\n lastCID: reconciledCID,\n lastRemoteCID: resolvedRemoteCID,\n };\n }\n }).catch((err) => {\n // Merge() itself rejected (before producing a reconciled\n // container). Reset the busy flag so the effect isn't stuck, and\n // record the exact (local, remote) pair we attempted so a\n // persistent failure is skipped rather than spinning forever.\n console.error(\"Merge failed:\", err);\n merging.value = {\n isBusy: false,\n lastCID: l.cid ?? \"\",\n lastRemoteCID: r.cid ?? \"\",\n };\n });\n });\n } else {\n container.value = l;\n }\n });\n\n return computed(() => {\n if (!isReady.get()) isReady.value = true;\n return container.get();\n });\n };\n\n // Container signals\n const facets = state(\n \"facets\",\n computed(() => local()?.facets.collection() ?? { state: \"loading\" }),\n remote.facets.collection,\n {\n saveLocal: async (v) => local()?.facets.save(v),\n saveRemote: remote.facets.save,\n },\n );\n\n const playlistItems = state(\n \"playlistItems\",\n computed(() =>\n local()?.playlistItems.collection() ?? { state: \"loading\" }\n ),\n remote.playlistItems.collection,\n {\n saveLocal: async (v) => local()?.playlistItems.save(v),\n saveRemote: remote.playlistItems.save,\n },\n );\n\n const settings = state(\n \"settings\",\n computed(() => local()?.settings.collection() ?? { state: \"loading\" }),\n remote.settings.collection,\n {\n saveLocal: async (v) => local()?.settings.save(v),\n saveRemote: remote.settings.save,\n },\n );\n\n const tracks = state(\n \"tracks\",\n computed(() => local()?.tracks.collection() ?? { state: \"loading\" }),\n remote.tracks.collection,\n {\n saveLocal: async (v) => local()?.tracks.save(v),\n saveRemote: remote.tracks.save,\n },\n );\n\n // Output manager\n this.facets = this.managerProp(\n { save: async (v) => local()?.facets.save(v) },\n remote.facets,\n remote.ready,\n facets,\n \"facets\",\n );\n\n this.playlistItems = this.managerProp(\n { save: async (v) => local()?.playlistItems.save(v) },\n remote.playlistItems,\n remote.ready,\n playlistItems,\n \"playlistItems\",\n );\n\n this.settings = this.managerProp(\n { save: async (v) => local()?.settings.save(v) },\n remote.settings,\n remote.ready,\n settings,\n \"settings\",\n );\n\n this.tracks = this.managerProp(\n { save: async (v) => local()?.tracks.save(v) },\n remote.tracks,\n remote.ready,\n tracks,\n \"tracks\",\n );\n\n this.ready = () => true;\n }\n\n // SIGNALS\n\n #localOutput = signal(\n /** @type {OutputElement | undefined} */ (undefined),\n );\n\n // LIFECYCLE\n\n /**\n * @override\n */\n async connectedCallback() {\n // Broadcast if needed\n if (this.hasAttribute(\"group\")) {\n this.broadcast(this.identifier, {});\n }\n\n super.connectedCallback();\n\n /** @type {OutputElement | null} */\n const local = this.root().querySelector(\"dop-indexed-db\");\n if (!local) throw new Error(\"Can't find local output\");\n\n customElements.whenDefined(local.localName).then(() => {\n this.#localOutput.value = local;\n });\n }\n\n // DATA FUNCTIONS\n\n /**\n * @template {{ id: string; updatedAt: string }} T\n * @param {{ previous: Container, collection: T[], name?: import(\"~/common/self-describing.js\").CollectionName }} _\n * @returns {Promise>}\n */\n async updateContainer({ previous, collection, name }) {\n const inventory = previous.inventory;\n const schema = name ? collectionSchema(name) : null;\n\n const collIds = collection.map(({ id }) => id);\n\n const currSet = new Set(Object.keys(inventory.current));\n const collSet = new Set(collIds);\n\n const newSet = collSet.difference(currSet);\n const remSet = currSet.difference(collSet);\n\n const alreadyRemoved = new Set(inventory.removed);\n const allRemoved = alreadyRemoved.union(remSet);\n\n /** @type {Record} */\n const current = { ...inventory.current };\n\n remSet.forEach((id) => {\n delete current[id];\n });\n\n /** @type Promise[] */\n const promises = [];\n\n collection.forEach((a) => {\n const encoded = encode(a);\n\n promises.push((async () => {\n const cid = await CID.create(0x71, encoded);\n current[a.id] = cid;\n })());\n });\n\n await Promise.all(promises);\n\n const newInventory = {\n current,\n removed: Array.from(allRemoved),\n };\n\n const container = {\n cid: await CID.create(0x71, encode(newInventory)),\n data: collection,\n inventory: newInventory,\n };\n return schema ? { ...container, $schema: schema } : container;\n }\n\n /**\n * @template {{ id: string; updatedAt: string }} T\n * @param {{ local: Container, remote: Container }} _\n */\n hasDiverged({ local, remote }) {\n return local.cid !== remote.cid;\n }\n\n /**\n * @template {{ id: string; updatedAt: string }} T\n * @param {Container} a\n * @param {Container} b\n * @returns {Promise>}\n */\n async merge(a, b) {\n const removedA = new Set(a.inventory.removed);\n const removedB = new Set(b.inventory.removed);\n const allRemoved = removedA.union(removedB);\n\n const currentA = a.inventory.current;\n const currentB = b.inventory.current;\n\n const mapA = new Map(a.data.map((item) => [item.id, item]));\n const mapB = new Map(b.data.map((item) => [item.id, item]));\n\n // Combine all known ids from both sides\n const allIds = new Set([\n ...Object.keys(currentA),\n ...Object.keys(currentB),\n ]);\n\n /** @type {Record} */\n const current = {};\n\n /** @type {T[]} */\n const data = [];\n\n // Construct `current` and `data`\n /** @type {Promise[]} */\n const cidPromises = [];\n\n for (const id of allIds) {\n if (allRemoved.has(id)) continue;\n\n if (id in currentA && id in currentB) {\n const itemA = mapA.get(id);\n const itemB = mapB.get(id);\n\n if (!itemA || !itemB) {\n console.warn(\"Should have found both items but didn't!\");\n continue;\n }\n\n // Items are identical, no merge or CID recomputation needed\n if (currentA[id] === currentB[id]) {\n data.push(itemA);\n current[id] = currentA[id];\n continue;\n }\n\n const hasAUpdatedAt = Boolean(itemA.updatedAt);\n const hasBUpdatedAt = Boolean(itemB.updatedAt);\n\n // The side that carries an `updatedAt` is the one that was edited, so\n // it should win over a pristine copy that never recorded a change (e.g.\n // a legacy seeded/starting-set facet persisted before it gained a\n // timestamp). Only when both carry one do we compare clocks.\n const isANewerThanB = (hasAUpdatedAt && !hasBUpdatedAt)\n ? true\n : (!hasAUpdatedAt && hasBUpdatedAt)\n ? false\n : hasAUpdatedAt && hasBUpdatedAt\n ? compareTimestamps(itemA.updatedAt, itemB.updatedAt) > 0\n : false;\n\n const newestItem = isANewerThanB ? itemA : itemB;\n const oldItem = isANewerThanB ? itemB : itemA;\n\n /** @type {T} */\n const mergedItem = { ...oldItem };\n\n deepDiff.applyDiff(mergedItem, newestItem);\n\n data.push(mergedItem);\n\n cidPromises.push(\n CID.create(0x71, encode(mergedItem)).then((cid) => {\n current[id] = cid;\n }),\n );\n } else {\n const item = mapA.get(id) ?? mapB.get(id);\n\n if (item) {\n data.push(item);\n current[id] = currentA[id] ?? currentB[id];\n }\n }\n }\n\n await Promise.all(cidPromises);\n\n // New inventory\n const updatedInventory = { current, removed: Array.from(allRemoved) };\n\n return {\n cid: await CID.create(0x71, encode(updatedInventory)),\n data,\n inventory: updatedInventory,\n $schema: a.$schema,\n };\n }\n\n /**\n * @template {{ id: string; updatedAt: string }} T\n * @param {Container} container\n * @returns {Uint8Array}\n */\n save(container) {\n return encode(container);\n }\n\n // OUTPUT MANAGER FUNCTIONS\n\n /**\n * @template {{ id: string; updatedAt: string }} T\n * @param {{ save: (bytes: Uint8Array) => Promise | void }} local\n * @param {{ collection: SignalReader<{ state: \"loading\" } | { state: \"loaded\"; data: Uint8Array | undefined } | { state: \"error\" }>, reload: () => Promise, save: (bytes: Uint8Array) => Promise }} remote\n * @param {SignalReader} remoteReady\n * @param {SignalReader>} container\n * @param {import(\"~/common/self-describing.js\").CollectionName} name\n * @returns {{ collection: SignalReader<{ state: \"loading\" } | { state: \"loaded\"; data: T[] } | { state: \"error\" }>, reload: () => Promise, save: (items: T[]) => Promise }}\n */\n managerProp(local, remote, remoteReady, container, name) {\n return {\n collection: computed(() => {\n const c = container();\n\n if (c.cid === undefined && remoteReady() && remote.collection().state === \"loading\") {\n return { state: \"loading\" };\n }\n\n return { state: \"loaded\", data: c.data };\n }),\n reload: remote.reload,\n save: async (/** @type {T[]} */ newItems) => {\n const adjustedContainer = await this.updateContainer({\n collection: newItems,\n previous: container(),\n name,\n });\n\n const bytes = this.save(adjustedContainer);\n await local.save(bytes);\n },\n };\n }\n\n // RENDER\n\n /**\n * @param {RenderArg} _\n */\n render({ html }) {\n return html`\n \n `;\n }\n}\n\nexport default DaslBytesSyncOutputTransformer;\n\n////////////////////////////////////////////\n// REGISTER\n////////////////////////////////////////////\n\nexport const CLASS = DaslBytesSyncOutputTransformer;\nexport const NAME = \"dtob-dasl-sync\";\n\ndefineElement(NAME, CLASS);\n"],"mappings":"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","names":["element_exports","__export","CLASS","NAME","element_default","EMPTY","DaslBytesSyncOutputTransformer","OutputTransformer","__name","remote","local","#localOutput","state","kind","localCollection","remoteCollection","saveLocal","saveRemote","container","signal","strictEquality","isReady","merging","diff","lc","rc","lb","rb","rs","l","decode","r","isLeader","bytes","prev","c","resolvedRemoteCID","reconciledCID","err","computed","facets","v","playlistItems","settings","tracks","previous","collection","name","inventory","schema","collectionSchema","collIds","id","currSet","collSet","newSet","remSet","allRemoved","current","promises","a","encoded","encode","cid","create","newInventory","b","removedA","removedB","currentA","currentB","mapA","item","mapB","allIds","data","cidPromises","itemA","itemB","hasAUpdatedAt","hasBUpdatedAt","isANewerThanB","compareTimestamps","newestItem","mergedItem","deep_diff_default","updatedInventory","remoteReady","newItems","adjustedContainer","html","o","element_default","CLASS","NAME","defineElement"],"sourceRoot":"","file":"/chunk-7K3Z36JT.js.map"} \ No newline at end of file diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-7NKQO6T3.js b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-7NKQO6T3.js similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-7NKQO6T3.js rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-7NKQO6T3.js diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-7NKQO6T3.js.br b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-7NKQO6T3.js.br similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-7NKQO6T3.js.br rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-7NKQO6T3.js.br diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-7NKQO6T3.js.map b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-7NKQO6T3.js.map similarity index 98% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-7NKQO6T3.js.map rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-7NKQO6T3.js.map index f83ad751..0123e344 100644 --- a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-7NKQO6T3.js.map +++ b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-7NKQO6T3.js.map @@ -1 +1 @@ -{"version":3,"sources":["/components/output/raw/atproto-passkey/oauth-client-metadata.json","/components/output/raw/atproto-passkey/oauth.js"],"sourcesContent":["{\n \"client_id\": \"https://diffuse.sh/latest/components/output/raw/atproto-passkey/oauth-client-metadata.json\",\n \"client_name\": \"Diffuse\",\n \"client_uri\": \"https://diffuse.sh\",\n \"redirect_uris\": [\"https://diffuse.sh/oauth/callback\"],\n \"scope\": \"atproto blob:application/octet-stream repo?collection=sh.diffuse.output.facet&collection=sh.diffuse.output.playlistItem&collection=sh.diffuse.output.playlistItemBundle&collection=sh.diffuse.output.setting&collection=sh.diffuse.output.track&collection=sh.diffuse.output.trackBundle\",\n \"grant_types\": [\"authorization_code\", \"refresh_token\"],\n \"response_types\": [\"code\"],\n \"token_endpoint_auth_method\": \"none\",\n \"application_type\": \"web\",\n \"dpop_bound_access_tokens\": true\n}\n","import { configureOAuth } from \"@atcute/oauth-browser-client\";\nimport { withOAuthLock } from \"~/oauth/lock.js\";\n\nimport metadata from \"./oauth-client-metadata.json\" with {\n type: \"json\",\n};\n\nimport {\n CompositeDidDocumentResolver,\n LocalActorResolver,\n PlcDidDocumentResolver,\n WebDidDocumentResolver,\n XrpcHandleResolver,\n} from \"@atcute/identity-resolver\";\n\nimport {\n createAuthorizationUrl,\n deleteStoredSession,\n finalizeAuthorization,\n getSession,\n OAuthUserAgent,\n TokenRefreshError,\n} from \"@atcute/oauth-browser-client\";\n\nexport { OAuthUserAgent, TokenRefreshError };\n\n/**\n * @import {Session} from \"@atcute/oauth-browser-client\"\n */\n\nconst STORAGE_KEY = \"diffuse/output/raw/atproto-passkey/did\";\nconst SCOPE = metadata.scope;\nconst STORAGE_NAME = \"diffuse/output/raw/atproto-passkey/atcute/oauth\";\nconst CLIENT_KEY = \"diffuse/output/raw/atproto-passkey\";\n\n// CONFIGURE\n// =========\n\nlet redirect_uri = location.origin + location.pathname + location.search;\n\nconst isLocalDev = redirect_uri.startsWith(\"http://127.0.0.1\");\n\nif (!isLocalDev) {\n redirect_uri = location.origin + \"/oauth/callback\";\n}\n\nconst client_id = isLocalDev\n ? `http://localhost/?redirect_uri=${encodeURIComponent(redirect_uri)}&scope=${\n encodeURIComponent(SCOPE)\n }`\n : /** @type {any} */ (import.meta).env?.ATPROTO_PUBLIC_CLIENT_ID ??\n \"https://diffuse.sh/latest/components/output/raw/atproto-passkey/oauth-client-metadata.json\";\n\nconst OAUTH_CONFIG = {\n metadata: {\n client_id,\n redirect_uri,\n },\n storageName: STORAGE_NAME,\n identityResolver: new LocalActorResolver({\n handleResolver: new XrpcHandleResolver({\n serviceUrl: \"https://public.api.bsky.app\",\n }),\n didDocumentResolver: new CompositeDidDocumentResolver({\n methods: {\n plc: new PlcDidDocumentResolver(),\n web: new WebDidDocumentResolver(),\n },\n }),\n }),\n};\n\nconfigureOAuth(OAUTH_CONFIG);\n\n// LOGIN\n// =====\n\n/**\n * Initiate the OAuth authorization flow for a given handle.\n * Navigates the browser away to the authorization server.\n *\n * @param {string} handle\n */\nexport function login(handle) {\n return withOAuthLock(async () => {\n configureOAuth(OAUTH_CONFIG);\n\n localStorage.setItem(\n \"oauth/callback/redirect_path\",\n location.pathname + location.search,\n );\n\n localStorage.setItem(\"oauth/pending-client\", CLIENT_KEY);\n\n const authUrl = await createAuthorizationUrl({\n target: { type: \"account\", identifier: /** @type {any} */ (handle) },\n scope: SCOPE,\n });\n\n location.assign(authUrl.toString());\n });\n}\n\n// SESSION RESTORE / CALLBACK\n// ==========================\n\n/**\n * Attempt to restore an existing session or finalize an OAuth callback.\n * Returns the session if successful, or null if no session is available.\n *\n * @returns {Promise}\n */\nexport function restoreOrFinalize() {\n return withOAuthLock(async () => {\n configureOAuth(OAUTH_CONFIG);\n\n const loc = globalThis.location;\n\n // Check for OAuth callback parameters (the library uses response_mode=fragment,\n // so params arrive in the URL hash, not the query string)\n const params = new URLSearchParams(loc.hash.slice(1));\n\n if (\n params.has(\"code\") &&\n localStorage.getItem(\"oauth/pending-client\") === CLIENT_KEY\n ) {\n // Finalize first; only clear the pending marker once it succeeds. If the\n // page reloads mid-exchange (e.g. a prelude change), the marker survives\n // so the reloaded page can retry instead of silently dropping the login.\n const result = await finalizeAuthorization(params);\n\n localStorage.removeItem(\"oauth/pending-client\");\n\n // Clean up URL (remove fragment containing OAuth params)\n history.replaceState(null, \"\", loc.pathname + loc.search);\n\n // Persist the DID for future session restoration\n localStorage.setItem(STORAGE_KEY, result.session.info.sub);\n\n return result.session;\n }\n\n // Try to restore a previously stored session\n const did = localStorage.getItem(STORAGE_KEY);\n\n if (did) {\n try {\n return await getSession(\n /** @type {`did:${string}:${string}`} */ (did),\n );\n } catch (err) {\n console.warn(err);\n clearStoredSession();\n return null;\n }\n }\n\n return null;\n });\n}\n\n// CLEAR SESSION\n// =============\n\n/**\n * Remove stored session data without contacting the server.\n * Used when the session has already been revoked.\n */\nexport function clearStoredSession() {\n const did = localStorage.getItem(STORAGE_KEY);\n\n if (did) {\n deleteStoredSession(/** @type {`did:${string}:${string}`} */ (did));\n }\n\n localStorage.removeItem(STORAGE_KEY);\n}\n\n// LOGOUT\n// ======\n\n/**\n * Sign out and revoke the current session.\n *\n * @param {OAuthUserAgent} agent\n */\nexport async function logout(agent) {\n const did = localStorage.getItem(STORAGE_KEY);\n\n try {\n await agent.signOut();\n } catch {\n if (did) {\n deleteStoredSession(\n /** @type {`did:${string}:${string}`} */ (did),\n );\n }\n }\n\n localStorage.removeItem(STORAGE_KEY);\n}\n"],"mappings":"mNAAA,IAAAA,EAAA,CACE,UAAa,6FACb,YAAe,UACf,WAAc,qBACd,cAAiB,CAAC,mCAAmC,EACrD,MAAS,2RACT,YAAe,CAAC,qBAAsB,eAAe,EACrD,eAAkB,CAAC,MAAM,EACzB,2BAA8B,OAC9B,iBAAoB,MACpB,yBAA4B,EAC9B,ECmBA,IAAMC,EAAc,yCACdC,EAAQC,EAAS,MACjBC,EAAe,kDACfC,EAAa,qCAKfC,EAAe,SAAS,OAAS,SAAS,SAAW,SAAS,OAE5DC,EAAaD,EAAa,WAAW,kBAAkB,EAExDC,IACHD,EAAe,SAAS,OAAS,mBAGnC,IAAME,EAAYD,EACd,kCAAkC,mBAAmBD,CAAY,CAAC,UAClE,mBAAmBJ,CAAK,CAC1B,GACsB,YAAa,KAAK,0BACtC,6FAEEO,EAAe,CACnB,SAAU,CACR,UAAAD,EACA,aAAAF,CACF,EACA,YAAaF,EACb,iBAAkB,IAAIM,EAAmB,CACvC,eAAgB,IAAIC,EAAmB,CACrC,WAAY,6BACd,CAAC,EACD,oBAAqB,IAAIC,EAA6B,CACpD,QAAS,CACP,IAAK,IAAIC,EACT,IAAK,IAAIC,CACX,CACF,CAAC,CACH,CAAC,CACH,EAEAC,EAAeN,CAAY,EAWpB,SAASO,EAAMC,EAAQ,CAC5B,OAAOC,EAAc,SAAY,CAC/BH,EAAeN,CAAY,EAE3B,aAAa,QACX,+BACA,SAAS,SAAW,SAAS,MAC/B,EAEA,aAAa,QAAQ,uBAAwBJ,CAAU,EAEvD,IAAMc,EAAU,MAAMC,EAAuB,CAC3C,OAAQ,CAAE,KAAM,UAAW,WAAgCH,CAAQ,EACnE,MAAOf,CACT,CAAC,EAED,SAAS,OAAOiB,EAAQ,SAAS,CAAC,CACpC,CAAC,CACH,CAlBgBE,EAAAL,EAAA,SA6BT,SAASM,GAAoB,CAClC,OAAOJ,EAAc,SAAY,CAC/BH,EAAeN,CAAY,EAE3B,IAAMc,EAAM,WAAW,SAIjBC,EAAS,IAAI,gBAAgBD,EAAI,KAAK,MAAM,CAAC,CAAC,EAEpD,GACEC,EAAO,IAAI,MAAM,GACjB,aAAa,QAAQ,sBAAsB,IAAMnB,EACjD,CAIA,IAAMoB,EAAS,MAAMC,EAAsBF,CAAM,EAEjD,oBAAa,WAAW,sBAAsB,EAG9C,QAAQ,aAAa,KAAM,GAAID,EAAI,SAAWA,EAAI,MAAM,EAGxD,aAAa,QAAQtB,EAAawB,EAAO,QAAQ,KAAK,GAAG,EAElDA,EAAO,OAChB,CAGA,IAAME,EAAM,aAAa,QAAQ1B,CAAW,EAE5C,GAAI0B,EACF,GAAI,CACF,OAAO,MAAMC,EAC+BD,CAC5C,CACF,OAASE,EAAK,CACZ,eAAQ,KAAKA,CAAG,EAChBC,EAAmB,EACZ,IACT,CAGF,OAAO,IACT,CAAC,CACH,CA/CgBT,EAAAC,EAAA,qBAwDT,SAASQ,GAAqB,CACnC,IAAMH,EAAM,aAAa,QAAQ1B,CAAW,EAExC0B,GACFI,EAA8DJ,CAAI,EAGpE,aAAa,WAAW1B,CAAW,CACrC,CARgBoB,EAAAS,EAAA,sBAkBhB,eAAsBE,EAAOC,EAAO,CAClC,IAAMN,EAAM,aAAa,QAAQ1B,CAAW,EAE5C,GAAI,CACF,MAAMgC,EAAM,QAAQ,CACtB,MAAQ,CACFN,GACFI,EAC4CJ,CAC5C,CAEJ,CAEA,aAAa,WAAW1B,CAAW,CACrC,CAdsBoB,EAAAW,EAAA","names":["oauth_client_metadata_default","STORAGE_KEY","SCOPE","oauth_client_metadata_default","STORAGE_NAME","CLIENT_KEY","redirect_uri","isLocalDev","client_id","OAUTH_CONFIG","LocalActorResolver","XrpcHandleResolver","CompositeDidDocumentResolver","PlcDidDocumentResolver","WebDidDocumentResolver","configureOAuth","login","handle","withOAuthLock","authUrl","createAuthorizationUrl","__name","restoreOrFinalize","loc","params","result","finalizeAuthorization","did","getSession","err","clearStoredSession","deleteStoredSession","logout","agent"],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse","file":"/chunk-7NKQO6T3.js.map"} \ No newline at end of file +{"version":3,"sources":["/components/output/raw/atproto-passkey/oauth-client-metadata.json","/components/output/raw/atproto-passkey/oauth.js"],"sourcesContent":["{\n \"client_id\": \"https://diffuse.sh/latest/components/output/raw/atproto-passkey/oauth-client-metadata.json\",\n \"client_name\": \"Diffuse\",\n \"client_uri\": \"https://diffuse.sh\",\n \"redirect_uris\": [\"https://diffuse.sh/oauth/callback\"],\n \"scope\": \"atproto blob:application/octet-stream repo?collection=sh.diffuse.output.facet&collection=sh.diffuse.output.playlistItem&collection=sh.diffuse.output.playlistItemBundle&collection=sh.diffuse.output.setting&collection=sh.diffuse.output.track&collection=sh.diffuse.output.trackBundle\",\n \"grant_types\": [\"authorization_code\", \"refresh_token\"],\n \"response_types\": [\"code\"],\n \"token_endpoint_auth_method\": \"none\",\n \"application_type\": \"web\",\n \"dpop_bound_access_tokens\": true\n}\n","import { configureOAuth } from \"@atcute/oauth-browser-client\";\nimport { withOAuthLock } from \"~/oauth/lock.js\";\n\nimport metadata from \"./oauth-client-metadata.json\" with {\n type: \"json\",\n};\n\nimport {\n CompositeDidDocumentResolver,\n LocalActorResolver,\n PlcDidDocumentResolver,\n WebDidDocumentResolver,\n XrpcHandleResolver,\n} from \"@atcute/identity-resolver\";\n\nimport {\n createAuthorizationUrl,\n deleteStoredSession,\n finalizeAuthorization,\n getSession,\n OAuthUserAgent,\n TokenRefreshError,\n} from \"@atcute/oauth-browser-client\";\n\nexport { OAuthUserAgent, TokenRefreshError };\n\n/**\n * @import {Session} from \"@atcute/oauth-browser-client\"\n */\n\nconst STORAGE_KEY = \"diffuse/output/raw/atproto-passkey/did\";\nconst SCOPE = metadata.scope;\nconst STORAGE_NAME = \"diffuse/output/raw/atproto-passkey/atcute/oauth\";\nconst CLIENT_KEY = \"diffuse/output/raw/atproto-passkey\";\n\n// CONFIGURE\n// =========\n\nlet redirect_uri = location.origin + location.pathname + location.search;\n\nconst isLocalDev = redirect_uri.startsWith(\"http://127.0.0.1\");\n\nif (!isLocalDev) {\n redirect_uri = location.origin + \"/oauth/callback\";\n}\n\nconst client_id = isLocalDev\n ? `http://localhost/?redirect_uri=${encodeURIComponent(redirect_uri)}&scope=${\n encodeURIComponent(SCOPE)\n }`\n : /** @type {any} */ (import.meta).env?.ATPROTO_PUBLIC_CLIENT_ID ??\n \"https://diffuse.sh/latest/components/output/raw/atproto-passkey/oauth-client-metadata.json\";\n\nconst OAUTH_CONFIG = {\n metadata: {\n client_id,\n redirect_uri,\n },\n storageName: STORAGE_NAME,\n identityResolver: new LocalActorResolver({\n handleResolver: new XrpcHandleResolver({\n serviceUrl: \"https://public.api.bsky.app\",\n }),\n didDocumentResolver: new CompositeDidDocumentResolver({\n methods: {\n plc: new PlcDidDocumentResolver(),\n web: new WebDidDocumentResolver(),\n },\n }),\n }),\n};\n\nconfigureOAuth(OAUTH_CONFIG);\n\n// LOGIN\n// =====\n\n/**\n * Initiate the OAuth authorization flow for a given handle.\n * Navigates the browser away to the authorization server.\n *\n * @param {string} handle\n */\nexport function login(handle) {\n return withOAuthLock(async () => {\n configureOAuth(OAUTH_CONFIG);\n\n localStorage.setItem(\n \"oauth/callback/redirect_path\",\n location.pathname + location.search,\n );\n\n localStorage.setItem(\"oauth/pending-client\", CLIENT_KEY);\n\n const authUrl = await createAuthorizationUrl({\n target: { type: \"account\", identifier: /** @type {any} */ (handle) },\n scope: SCOPE,\n });\n\n location.assign(authUrl.toString());\n });\n}\n\n// SESSION RESTORE / CALLBACK\n// ==========================\n\n/**\n * Attempt to restore an existing session or finalize an OAuth callback.\n * Returns the session if successful, or null if no session is available.\n *\n * @returns {Promise}\n */\nexport function restoreOrFinalize() {\n return withOAuthLock(async () => {\n configureOAuth(OAUTH_CONFIG);\n\n const loc = globalThis.location;\n\n // Check for OAuth callback parameters (the library uses response_mode=fragment,\n // so params arrive in the URL hash, not the query string)\n const params = new URLSearchParams(loc.hash.slice(1));\n\n if (\n params.has(\"code\") &&\n localStorage.getItem(\"oauth/pending-client\") === CLIENT_KEY\n ) {\n // Finalize first; only clear the pending marker once it succeeds. If the\n // page reloads mid-exchange (e.g. a prelude change), the marker survives\n // so the reloaded page can retry instead of silently dropping the login.\n const result = await finalizeAuthorization(params);\n\n localStorage.removeItem(\"oauth/pending-client\");\n\n // Clean up URL (remove fragment containing OAuth params)\n history.replaceState(null, \"\", loc.pathname + loc.search);\n\n // Persist the DID for future session restoration\n localStorage.setItem(STORAGE_KEY, result.session.info.sub);\n\n return result.session;\n }\n\n // Try to restore a previously stored session\n const did = localStorage.getItem(STORAGE_KEY);\n\n if (did) {\n try {\n return await getSession(\n /** @type {`did:${string}:${string}`} */ (did),\n );\n } catch (err) {\n console.warn(err);\n clearStoredSession();\n return null;\n }\n }\n\n return null;\n });\n}\n\n// CLEAR SESSION\n// =============\n\n/**\n * Remove stored session data without contacting the server.\n * Used when the session has already been revoked.\n */\nexport function clearStoredSession() {\n const did = localStorage.getItem(STORAGE_KEY);\n\n if (did) {\n deleteStoredSession(/** @type {`did:${string}:${string}`} */ (did));\n }\n\n localStorage.removeItem(STORAGE_KEY);\n}\n\n// LOGOUT\n// ======\n\n/**\n * Sign out and revoke the current session.\n *\n * @param {OAuthUserAgent} agent\n */\nexport async function logout(agent) {\n const did = localStorage.getItem(STORAGE_KEY);\n\n try {\n await agent.signOut();\n } catch {\n if (did) {\n deleteStoredSession(\n /** @type {`did:${string}:${string}`} */ (did),\n );\n }\n }\n\n localStorage.removeItem(STORAGE_KEY);\n}\n"],"mappings":"mNAAA,IAAAA,EAAA,CACE,UAAa,6FACb,YAAe,UACf,WAAc,qBACd,cAAiB,CAAC,mCAAmC,EACrD,MAAS,2RACT,YAAe,CAAC,qBAAsB,eAAe,EACrD,eAAkB,CAAC,MAAM,EACzB,2BAA8B,OAC9B,iBAAoB,MACpB,yBAA4B,EAC9B,ECmBA,IAAMC,EAAc,yCACdC,EAAQC,EAAS,MACjBC,EAAe,kDACfC,EAAa,qCAKfC,EAAe,SAAS,OAAS,SAAS,SAAW,SAAS,OAE5DC,EAAaD,EAAa,WAAW,kBAAkB,EAExDC,IACHD,EAAe,SAAS,OAAS,mBAGnC,IAAME,EAAYD,EACd,kCAAkC,mBAAmBD,CAAY,CAAC,UAClE,mBAAmBJ,CAAK,CAC1B,GACsB,YAAa,KAAK,0BACtC,6FAEEO,EAAe,CACnB,SAAU,CACR,UAAAD,EACA,aAAAF,CACF,EACA,YAAaF,EACb,iBAAkB,IAAIM,EAAmB,CACvC,eAAgB,IAAIC,EAAmB,CACrC,WAAY,6BACd,CAAC,EACD,oBAAqB,IAAIC,EAA6B,CACpD,QAAS,CACP,IAAK,IAAIC,EACT,IAAK,IAAIC,CACX,CACF,CAAC,CACH,CAAC,CACH,EAEAC,EAAeN,CAAY,EAWpB,SAASO,EAAMC,EAAQ,CAC5B,OAAOC,EAAc,SAAY,CAC/BH,EAAeN,CAAY,EAE3B,aAAa,QACX,+BACA,SAAS,SAAW,SAAS,MAC/B,EAEA,aAAa,QAAQ,uBAAwBJ,CAAU,EAEvD,IAAMc,EAAU,MAAMC,EAAuB,CAC3C,OAAQ,CAAE,KAAM,UAAW,WAAgCH,CAAQ,EACnE,MAAOf,CACT,CAAC,EAED,SAAS,OAAOiB,EAAQ,SAAS,CAAC,CACpC,CAAC,CACH,CAlBgBE,EAAAL,EAAA,SA6BT,SAASM,GAAoB,CAClC,OAAOJ,EAAc,SAAY,CAC/BH,EAAeN,CAAY,EAE3B,IAAMc,EAAM,WAAW,SAIjBC,EAAS,IAAI,gBAAgBD,EAAI,KAAK,MAAM,CAAC,CAAC,EAEpD,GACEC,EAAO,IAAI,MAAM,GACjB,aAAa,QAAQ,sBAAsB,IAAMnB,EACjD,CAIA,IAAMoB,EAAS,MAAMC,EAAsBF,CAAM,EAEjD,oBAAa,WAAW,sBAAsB,EAG9C,QAAQ,aAAa,KAAM,GAAID,EAAI,SAAWA,EAAI,MAAM,EAGxD,aAAa,QAAQtB,EAAawB,EAAO,QAAQ,KAAK,GAAG,EAElDA,EAAO,OAChB,CAGA,IAAME,EAAM,aAAa,QAAQ1B,CAAW,EAE5C,GAAI0B,EACF,GAAI,CACF,OAAO,MAAMC,EAC+BD,CAC5C,CACF,OAASE,EAAK,CACZ,eAAQ,KAAKA,CAAG,EAChBC,EAAmB,EACZ,IACT,CAGF,OAAO,IACT,CAAC,CACH,CA/CgBT,EAAAC,EAAA,qBAwDT,SAASQ,GAAqB,CACnC,IAAMH,EAAM,aAAa,QAAQ1B,CAAW,EAExC0B,GACFI,EAA8DJ,CAAI,EAGpE,aAAa,WAAW1B,CAAW,CACrC,CARgBoB,EAAAS,EAAA,sBAkBhB,eAAsBE,EAAOC,EAAO,CAClC,IAAMN,EAAM,aAAa,QAAQ1B,CAAW,EAE5C,GAAI,CACF,MAAMgC,EAAM,QAAQ,CACtB,MAAQ,CACFN,GACFI,EAC4CJ,CAC5C,CAEJ,CAEA,aAAa,WAAW1B,CAAW,CACrC,CAdsBoB,EAAAW,EAAA","names":["oauth_client_metadata_default","STORAGE_KEY","SCOPE","oauth_client_metadata_default","STORAGE_NAME","CLIENT_KEY","redirect_uri","isLocalDev","client_id","OAUTH_CONFIG","LocalActorResolver","XrpcHandleResolver","CompositeDidDocumentResolver","PlcDidDocumentResolver","WebDidDocumentResolver","configureOAuth","login","handle","withOAuthLock","authUrl","createAuthorizationUrl","__name","restoreOrFinalize","loc","params","result","finalizeAuthorization","did","getSession","err","clearStoredSession","deleteStoredSession","logout","agent"],"sourceRoot":"","file":"/chunk-7NKQO6T3.js.map"} \ No newline at end of file diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-7NOFREWU.js b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-7NOFREWU.js similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-7NOFREWU.js rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-7NOFREWU.js diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-7NOFREWU.js.br b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-7NOFREWU.js.br similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-7NOFREWU.js.br rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-7NOFREWU.js.br diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-7NOFREWU.js.map b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-7NOFREWU.js.map similarity index 96% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-7NOFREWU.js.map rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-7NOFREWU.js.map index eb95683a..a90aff0c 100644 --- a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-7NOFREWU.js.map +++ b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-7NOFREWU.js.map @@ -1 +1 @@ -{"version":3,"sources":["/components/input/opensubsonic/element.js"],"sourcesContent":["import { defineElement, DiffuseElement } from \"~/common/element.js\";\nimport { SCHEME } from \"./constants.js\";\nimport { buildURI, serversFromTracks } from \"./common.js\";\n\n/**\n * @import {InputActions, InputSchemeProvider} from \"@specs/components/input/types.d.ts\"\n * @import {ProxiedActions} from \"~/common/worker.d.ts\"\n * @import {Track} from \"~/definitions/types.d.ts\"\n */\n\n////////////////////////////////////////////\n// ELEMENT\n////////////////////////////////////////////\n\n/**\n * @implements {ProxiedActions}\n * @implements {InputSchemeProvider}\n */\nclass OpensubsonicInput extends DiffuseElement {\n static NAME = \"diffuse/input/opensubsonic\";\n static WORKER_URL = \"components/input/opensubsonic/worker.js\";\n\n SCHEME = SCHEME;\n\n constructor() {\n super();\n\n /** @type {ProxiedActions} */\n this.proxy = this.workerProxy();\n\n this.artwork = this.proxy.artwork;\n this.consult = this.proxy.consult;\n this.detach = this.proxy.detach;\n this.groupConsult = this.proxy.groupConsult;\n this.list = this.proxy.list;\n this.resolve = this.proxy.resolve;\n }\n\n // 🛠️\n\n /** @param {Track[]} tracks */\n sources(tracks) {\n return Object.values(serversFromTracks(tracks)).map((server) => {\n return {\n label: server.host,\n uri: buildURI(server),\n };\n });\n }\n}\n\nexport default OpensubsonicInput;\n\n////////////////////////////////////////////\n// REGISTER\n////////////////////////////////////////////\n\nexport const CLASS = OpensubsonicInput;\nexport const NAME = \"di-opensubsonic\";\n\ndefineElement(NAME, CLASS);\n"],"mappings":"gLAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,WAAAE,EAAA,SAAAC,EAAA,YAAAC,IAkBA,IAAMC,EAAN,cAAgCC,CAAe,CAlB/C,MAkB+C,CAAAC,EAAA,0BAC7C,OAAO,KAAO,6BACd,OAAO,WAAa,0CAEpB,OAASC,EAET,aAAc,CACZ,MAAM,EAGN,KAAK,MAAQ,KAAK,YAAY,EAE9B,KAAK,QAAU,KAAK,MAAM,QAC1B,KAAK,QAAU,KAAK,MAAM,QAC1B,KAAK,OAAS,KAAK,MAAM,OACzB,KAAK,aAAe,KAAK,MAAM,aAC/B,KAAK,KAAO,KAAK,MAAM,KACvB,KAAK,QAAU,KAAK,MAAM,OAC5B,CAKA,QAAQC,EAAQ,CACd,OAAO,OAAO,OAAOC,EAAkBD,CAAM,CAAC,EAAE,IAAKE,IAC5C,CACL,MAAOA,EAAO,KACd,IAAKC,EAASD,CAAM,CACtB,EACD,CACH,CACF,EAEOE,EAAQR,EAMFS,EAAQT,EACRU,EAAO,kBAEpBC,EAAcD,EAAMD,CAAK","names":["element_exports","__export","CLASS","NAME","element_default","OpensubsonicInput","DiffuseElement","__name","SCHEME","tracks","serversFromTracks","server","buildURI","element_default","CLASS","NAME","defineElement"],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse","file":"/chunk-7NOFREWU.js.map"} \ No newline at end of file +{"version":3,"sources":["/components/input/opensubsonic/element.js"],"sourcesContent":["import { defineElement, DiffuseElement } from \"~/common/element.js\";\nimport { SCHEME } from \"./constants.js\";\nimport { buildURI, serversFromTracks } from \"./common.js\";\n\n/**\n * @import {InputActions, InputSchemeProvider} from \"@specs/components/input/types.d.ts\"\n * @import {ProxiedActions} from \"~/common/worker.d.ts\"\n * @import {Track} from \"~/definitions/types.d.ts\"\n */\n\n////////////////////////////////////////////\n// ELEMENT\n////////////////////////////////////////////\n\n/**\n * @implements {ProxiedActions}\n * @implements {InputSchemeProvider}\n */\nclass OpensubsonicInput extends DiffuseElement {\n static NAME = \"diffuse/input/opensubsonic\";\n static WORKER_URL = \"components/input/opensubsonic/worker.js\";\n\n SCHEME = SCHEME;\n\n constructor() {\n super();\n\n /** @type {ProxiedActions} */\n this.proxy = this.workerProxy();\n\n this.artwork = this.proxy.artwork;\n this.consult = this.proxy.consult;\n this.detach = this.proxy.detach;\n this.groupConsult = this.proxy.groupConsult;\n this.list = this.proxy.list;\n this.resolve = this.proxy.resolve;\n }\n\n // 🛠️\n\n /** @param {Track[]} tracks */\n sources(tracks) {\n return Object.values(serversFromTracks(tracks)).map((server) => {\n return {\n label: server.host,\n uri: buildURI(server),\n };\n });\n }\n}\n\nexport default OpensubsonicInput;\n\n////////////////////////////////////////////\n// REGISTER\n////////////////////////////////////////////\n\nexport const CLASS = OpensubsonicInput;\nexport const NAME = \"di-opensubsonic\";\n\ndefineElement(NAME, CLASS);\n"],"mappings":"gLAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,WAAAE,EAAA,SAAAC,EAAA,YAAAC,IAkBA,IAAMC,EAAN,cAAgCC,CAAe,CAlB/C,MAkB+C,CAAAC,EAAA,0BAC7C,OAAO,KAAO,6BACd,OAAO,WAAa,0CAEpB,OAASC,EAET,aAAc,CACZ,MAAM,EAGN,KAAK,MAAQ,KAAK,YAAY,EAE9B,KAAK,QAAU,KAAK,MAAM,QAC1B,KAAK,QAAU,KAAK,MAAM,QAC1B,KAAK,OAAS,KAAK,MAAM,OACzB,KAAK,aAAe,KAAK,MAAM,aAC/B,KAAK,KAAO,KAAK,MAAM,KACvB,KAAK,QAAU,KAAK,MAAM,OAC5B,CAKA,QAAQC,EAAQ,CACd,OAAO,OAAO,OAAOC,EAAkBD,CAAM,CAAC,EAAE,IAAKE,IAC5C,CACL,MAAOA,EAAO,KACd,IAAKC,EAASD,CAAM,CACtB,EACD,CACH,CACF,EAEOE,EAAQR,EAMFS,EAAQT,EACRU,EAAO,kBAEpBC,EAAcD,EAAMD,CAAK","names":["element_exports","__export","CLASS","NAME","element_default","OpensubsonicInput","DiffuseElement","__name","SCHEME","tracks","serversFromTracks","server","buildURI","element_default","CLASS","NAME","defineElement"],"sourceRoot":"","file":"/chunk-7NOFREWU.js.map"} \ No newline at end of file diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-A2HI33AQ.js b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-A2HI33AQ.js similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-A2HI33AQ.js rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-A2HI33AQ.js diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-A2HI33AQ.js.br b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-A2HI33AQ.js.br similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-A2HI33AQ.js.br rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-A2HI33AQ.js.br diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-A2HI33AQ.js.map b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-A2HI33AQ.js.map similarity index 99% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-A2HI33AQ.js.map rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-A2HI33AQ.js.map index a4d374d0..a12e89c5 100644 --- a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-A2HI33AQ.js.map +++ b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-A2HI33AQ.js.map @@ -1 +1 @@ -{"version":3,"sources":["/node_modules/.deno/@atcute+cbor@2.3.6/node_modules/@atcute/cbor/dist/bytes.js","/node_modules/.deno/@atcute+cbor@2.3.6/node_modules/@atcute/cbor/dist/decode.js","/node_modules/.deno/@atcute+cbor@2.3.6/node_modules/@atcute/cbor/dist/encode.js"],"sourcesContent":["import { fromBase64, fromBase64Pad, toBase64 } from '@atcute/multibase';\nconst BYTES_SYMBOL = Symbol.for('@atcute/bytes-wrapper');\nexport class BytesWrapper {\n /** @internal */\n [BYTES_SYMBOL] = true;\n buf;\n constructor(buf) {\n this.buf = buf;\n }\n get $bytes() {\n return toBase64(this.buf);\n }\n toJSON() {\n return { $bytes: this.$bytes };\n }\n}\nexport const isBytes = (value) => {\n // oxlint-disable-next-line typescript/no-explicit-any\n const val = value;\n return (val instanceof BytesWrapper || (val !== null && typeof val === 'object' && typeof val.$bytes === 'string'));\n};\nexport const toBytes = (buf) => {\n return new BytesWrapper(buf);\n};\nexport const fromBytes = (bytes) => {\n if (bytes instanceof BytesWrapper) {\n return bytes.buf;\n }\n // atproto emits unpadded base64 but the data-model permits optional padding on `$bytes`; accept\n // both while keeping the generic codecs strict.\n const $bytes = bytes.$bytes;\n return $bytes.charCodeAt($bytes.length - 1) === 0x3d ? fromBase64Pad($bytes) : fromBase64($bytes);\n};\n","// oxlint-disable typescript/no-explicit-any\nimport { CidLinkWrapper, fromBinary } from '@atcute/cid';\nimport { decodeUtf8From } from '@atcute/uint8array';\nimport { toBytes } from './bytes.js';\nconst requireBytes = (state, needed) => {\n if (needed > state.b.length - state.p) {\n throw new RangeError(`unexpected end of input`);\n }\n};\nconst readArgument = (state, info) => {\n if (info < 24) {\n return info;\n }\n let arg;\n switch (info) {\n case 24: {\n requireBytes(state, 1);\n arg = readUint8(state);\n if (arg < 24) {\n throw new TypeError(`non-canonical argument encoding`);\n }\n break;\n }\n case 25: {\n requireBytes(state, 2);\n arg = readUint16(state);\n if (arg < 0x100) {\n throw new TypeError(`non-canonical argument encoding`);\n }\n break;\n }\n case 26: {\n requireBytes(state, 4);\n arg = readUint32(state);\n if (arg < 0x10000) {\n throw new TypeError(`non-canonical argument encoding`);\n }\n break;\n }\n case 27: {\n requireBytes(state, 8);\n arg = readUint53(state);\n if (arg < 0x100000000) {\n throw new TypeError(`non-canonical argument encoding`);\n }\n break;\n }\n default: {\n throw new Error(`invalid argument encoding; got ${info}`);\n }\n }\n return arg;\n};\nconst readFloat64 = (state) => {\n requireBytes(state, 8);\n const view = (state.v ??= new DataView(state.b.buffer, state.b.byteOffset, state.b.byteLength));\n const value = view.getFloat64(state.p);\n // DRISL forbids NaN and infinities; -0 and subnormals are finite and remain allowed.\n if (!Number.isFinite(value)) {\n throw new RangeError(`NaN and Infinity values not supported`);\n }\n state.p += 8;\n return value;\n};\nconst readUint8 = (state) => {\n return state.b[state.p++];\n};\nconst readUint16 = (state) => {\n let pos = state.p;\n const buf = state.b;\n const value = (buf[pos++] << 8) | buf[pos++];\n state.p = pos;\n return value;\n};\nconst readUint32 = (state) => {\n let pos = state.p;\n const buf = state.b;\n const value = ((buf[pos++] << 24) | (buf[pos++] << 16) | (buf[pos++] << 8) | buf[pos++]) >>> 0;\n state.p = pos;\n return value;\n};\nconst readUint53 = (state) => {\n const hi = readUint32(state);\n const lo = readUint32(state);\n if (hi > 0x1fffff) {\n throw new RangeError(`can't decode integers beyond safe integer range`);\n }\n return hi * 2 ** 32 + lo;\n};\nconst readString = (state, length) => {\n requireBytes(state, length);\n const string = decodeUtf8From(state.b, state.p, length);\n state.p += length;\n return string;\n};\nconst readBytes = (state, length) => {\n requireBytes(state, length);\n const slice = state.b.subarray(state.p, (state.p += length));\n return toBytes(slice);\n};\nconst readCid = (state, length) => {\n requireBytes(state, length);\n const cid = fromBinary(state.b.subarray(state.p, (state.p += length)));\n return new CidLinkWrapper(cid.bytes);\n};\nconst decodeStringKey = (state) => {\n requireBytes(state, 1);\n const prelude = readUint8(state);\n const type = prelude >> 5;\n if (type !== 3) {\n throw new TypeError(`expected map to only have string keys; got type ${type}`);\n }\n const info = prelude & 0x1f;\n const length = info < 24 ? info : readArgument(state, info);\n state.ks = state.p;\n state.kl = length;\n return readString(state, length);\n};\nexport const decodeFirst = (buf) => {\n const len = buf.length;\n const state = {\n b: buf,\n v: null,\n p: 0,\n ks: 0,\n kl: 0,\n };\n let stack = null;\n let value;\n jump: while (state.p < len) {\n // the loop condition guarantees the prelude byte; deeper reads guard themselves via requireBytes\n const prelude = readUint8(state);\n const type = prelude >> 5;\n const info = prelude & 0x1f;\n const arg = type === 7 ? 0 : info < 24 ? info : readArgument(state, info);\n switch (type) {\n case 0: {\n value = arg;\n break;\n }\n case 1: {\n value = -1 - arg;\n // `readUint53` caps the argument at the safe-integer range, but negation shifts the\n // lower bound by one, so -(2^53) can slip through; reject it to match the encoder.\n if (value < Number.MIN_SAFE_INTEGER) {\n throw new RangeError(`can't decode integers beyond safe integer range`);\n }\n break;\n }\n case 2: {\n value = readBytes(state, arg);\n break;\n }\n case 3: {\n value = readString(state, arg);\n break;\n }\n case 4: {\n if (arg > 0) {\n // each element needs at least one byte, so reject lengths larger than the remaining\n // input before allocating — a truncated header must not force a huge allocation.\n requireBytes(state, arg);\n // oxlint-disable-next-line no-new-array\n stack = { t: 1, c: (value = new Array(arg)), k: null, r: arg, n: stack };\n continue jump;\n }\n value = [];\n break;\n }\n case 5: {\n value = {};\n if (arg > 0) {\n // We'll read the key of the first item here.\n const first = decodeStringKey(state);\n stack = { t: 0, c: value, k: first, ks: state.ks, kl: state.kl, r: arg, n: stack };\n continue jump;\n }\n break;\n }\n case 6: {\n switch (arg) {\n case 42: {\n requireBytes(state, 1);\n const prelude = readUint8(state);\n const type = prelude >> 5;\n const info = prelude & 0x1f;\n if (type !== 2) {\n throw new TypeError(`expected cid-link to be type 2 (bytes); got type ${type}`);\n }\n const len = readArgument(state, info);\n value = readCid(state, len);\n break;\n }\n default: {\n throw new TypeError(`unsupported tag; got ${arg}`);\n }\n }\n break;\n }\n case 7: {\n switch (info) {\n case 20:\n case 21: {\n value = info === 21;\n break;\n }\n case 22: {\n value = null;\n break;\n }\n case 27: {\n value = readFloat64(state);\n break;\n }\n default: {\n throw new Error(`invalid simple value; got ${info}`);\n }\n }\n break;\n }\n default: {\n throw new TypeError(`invalid type; got ${type}`);\n }\n }\n while (stack !== null) {\n switch (stack.t) {\n case 0: {\n const obj = stack.c;\n const key = stack.k;\n if (key === '__proto__') {\n // Guard against prototype pollution. CWE-1321\n Object.defineProperty(obj, key, { enumerable: true, configurable: true, writable: true });\n }\n obj[key] = value;\n break;\n }\n case 1: {\n const arr = stack.c;\n const index = arr.length - stack.r;\n arr[index] = value;\n break;\n }\n }\n if (--stack.r) {\n // We still have more values to decode, continue\n if (!stack.t) {\n // Read the key of the next map item\n const prevStart = stack.ks;\n const prevLength = stack.kl;\n stack.k = decodeStringKey(state);\n const curStart = state.ks;\n const curLength = state.kl;\n // Canonical CBOR orders map keys by UTF-8 byte length, then bytewise on the raw\n // UTF-8 bytes. Comparing the buffer slices directly avoids the UTF-16 semantics\n // of JS string comparison, which diverges for non-ASCII keys.\n let cmp = curLength - prevLength;\n if (cmp === 0) {\n const buf = state.b;\n for (let i = 0; i < curLength; i++) {\n cmp = buf[curStart + i] - buf[prevStart + i];\n if (cmp !== 0) {\n break;\n }\n }\n }\n if (cmp <= 0) {\n throw new TypeError(`map keys are not in canonical order or contain duplicates`);\n }\n stack.ks = curStart;\n stack.kl = curLength;\n }\n continue jump;\n }\n // Unwrap the stack\n value = stack.c;\n stack = stack.n;\n }\n // a complete value: returning here means falling out of the loop can only happen when the\n // input ends mid-structure (or is empty), which the throw below reports.\n return [value, buf.subarray(state.p)];\n }\n throw new RangeError(`unexpected end of input`);\n};\nexport const decode = (buf) => {\n const [value, remainder] = decodeFirst(buf);\n if (remainder.length !== 0) {\n throw new Error(`decoded value contains remainder`);\n }\n return value;\n};\n","import { CidLinkWrapper, fromString } from '@atcute/cid';\nimport { allocUnsafe, compare, concat, encodeUtf8, encodeUtf8Into, getUtf8Length } from '@atcute/uint8array';\nimport { IS_NODE_RUNTIME } from '#runtime';\nimport { BytesWrapper, fromBytes } from './bytes.js';\nconst MAX_TYPE_ARG_LEN = 9;\nconst CHUNK_SIZE = 1024;\nconst _max = Math.max;\nconst _isInteger = Number.isInteger;\nconst _isFinite = Number.isFinite;\nconst MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER;\nconst MIN_SAFE_INTEGER = Number.MIN_SAFE_INTEGER;\nconst resizeIfNeeded = (state, needed) => {\n const buf = state.b;\n const pos = state.p;\n if (buf.byteLength < pos + needed) {\n state.c.push(buf.subarray(0, pos));\n state.l += pos;\n state.b = allocUnsafe(_max(CHUNK_SIZE, needed));\n state.v = null;\n state.p = 0;\n }\n};\nconst getTypeInfoLength = (arg) => {\n return arg < 24 ? 1 : arg < 0x100 ? 2 : arg < 0x10000 ? 3 : arg < 0x100000000 ? 5 : 9;\n};\nconst writeFloat64 = (state, val) => {\n const buf = state.b;\n const view = (state.v ??= new DataView(buf.buffer, buf.byteOffset, buf.byteLength));\n view.setFloat64(state.p, val);\n state.p += 8;\n};\nconst writeUint8 = (state, val) => {\n state.b[state.p++] = val;\n};\nconst writeUint16 = (state, val) => {\n let pos = state.p;\n const buf = state.b;\n buf[pos++] = val >>> 8;\n buf[pos++] = val & 0xff;\n state.p = pos;\n};\nconst writeUint32 = (state, val) => {\n let pos = state.p;\n const buf = state.b;\n buf[pos++] = val >>> 24;\n buf[pos++] = (val >>> 16) & 0xff;\n buf[pos++] = (val >>> 8) & 0xff;\n buf[pos++] = val & 0xff;\n state.p = pos;\n};\nconst writeUint53 = (state, val) => {\n let pos = state.p;\n const buf = state.b;\n const hi = (val / 2 ** 32) | 0;\n const lo = val >>> 0;\n buf[pos++] = hi >>> 24;\n buf[pos++] = (hi >>> 16) & 0xff;\n buf[pos++] = (hi >>> 8) & 0xff;\n buf[pos++] = hi & 0xff;\n buf[pos++] = lo >>> 24;\n buf[pos++] = (lo >>> 16) & 0xff;\n buf[pos++] = (lo >>> 8) & 0xff;\n buf[pos++] = lo & 0xff;\n state.p = pos;\n};\nconst writeTypeAndArgument = (state, type, arg) => {\n if (arg < 24) {\n writeUint8(state, (type << 5) | arg);\n }\n else if (arg < 0x100) {\n writeUint8(state, (type << 5) | 24);\n writeUint8(state, arg);\n }\n else if (arg < 0x10000) {\n writeUint8(state, (type << 5) | 25);\n writeUint16(state, arg);\n }\n else if (arg < 0x100000000) {\n writeUint8(state, (type << 5) | 26);\n writeUint32(state, arg);\n }\n else {\n writeUint8(state, (type << 5) | 27);\n writeUint53(state, arg);\n }\n};\n// --- Functions below MUST be cautious about ensuring there's enough room in the buffer!!\nconst writeInteger = (state, val) => {\n resizeIfNeeded(state, MAX_TYPE_ARG_LEN);\n if (val < 0) {\n writeTypeAndArgument(state, 1, -val - 1);\n }\n else {\n writeTypeAndArgument(state, 0, val);\n }\n};\nconst writeFloat = (state, val) => {\n resizeIfNeeded(state, 9);\n writeUint8(state, 0xe0 | 27);\n writeFloat64(state, val);\n};\nconst writeNumber = (state, val) => {\n if (!_isFinite(val)) {\n throw new RangeError(`NaN and Infinity values not supported`);\n }\n if (val > MAX_SAFE_INTEGER || val < MIN_SAFE_INTEGER) {\n throw new RangeError(`can't encode numbers beyond safe integer range`);\n }\n if (_isInteger(val)) {\n writeInteger(state, val);\n }\n else {\n // Note: https://atproto.com/specs/data-model#:~:text=not%20allowed%20in%20atproto\n writeFloat(state, val);\n }\n};\nconst writeString = (state, val) => {\n const strLength = val.length;\n if (strLength === 0) {\n resizeIfNeeded(state, 1);\n writeUint8(state, 0x60);\n return;\n }\n // JS strings are UTF-16 (ECMA spec)\n // Therefore, worst case length of UTF-8 is length * 3. (plus 9 bytes of CBOR header)\n // Greatly overshoots in practice, but doesn't matter. (alloc is O(1)+ anyway)\n resizeIfNeeded(state, strLength * 3 + MAX_TYPE_ARG_LEN);\n // Optimistic fast encode\n ascii: if (!IS_NODE_RUNTIME || strLength < 24) {\n const ptr = state.p + getTypeInfoLength(strLength);\n const first = val.charCodeAt(0);\n if (first > 0x7f) {\n break ascii;\n }\n state.b[ptr] = first;\n let i = 1;\n // batch-process four characters per iteration to lower charCodeAt/branch overhead.\n for (; i + 3 < strLength; i += 4) {\n const a = val.charCodeAt(i);\n const b = val.charCodeAt(i + 1);\n const c = val.charCodeAt(i + 2);\n const d = val.charCodeAt(i + 3);\n if ((a | b | c | d) & 0xff80) {\n break ascii;\n }\n state.b[ptr + i] = a;\n state.b[ptr + i + 1] = b;\n state.b[ptr + i + 2] = c;\n state.b[ptr + i + 3] = d;\n }\n for (; i < strLength; i++) {\n const code = val.charCodeAt(i);\n if (code > 0x7f) {\n break ascii;\n }\n state.b[ptr + i] = code;\n }\n // String was ASCII-only, we're done\n writeTypeAndArgument(state, 3, strLength);\n state.p += strLength;\n return;\n }\n // Credit: method used by cbor-x\n // Rather than allocate a buffer and then copy it back to the destination buffer:\n // - Estimate the length of the header based on the UTF-16 size of the string.\n // Should be accurate enough, see last point for when it isn't.\n // - Directly write the string at the estimated location, retrieving with it the actual length.\n // - Write the header now that the length is available.\n // - If the estimation happened to be wrong, correct the placement of the string.\n // While it's costly, it's actually roughly the same cost as if we encoded it separately + copy.\n const estimatedHeaderSize = getTypeInfoLength(strLength * 2);\n const estimatedPosition = state.p + estimatedHeaderSize;\n const len = encodeUtf8Into(state.b, val, estimatedPosition);\n const headerSize = getTypeInfoLength(len);\n if (estimatedHeaderSize !== headerSize) {\n // Estimation was incorrect, move the bytes to the real place.\n state.b.copyWithin(state.p + headerSize, estimatedPosition, estimatedPosition + len);\n }\n writeTypeAndArgument(state, 3, len);\n state.p += len;\n};\nconst writeBytes = (state, val) => {\n const buf = fromBytes(val);\n const len = buf.byteLength;\n resizeIfNeeded(state, len + MAX_TYPE_ARG_LEN);\n writeTypeAndArgument(state, 2, len);\n state.b.set(buf, state.p);\n state.p += len;\n};\nconst writeCid = (state, val) => {\n // CID bytes are prefixed with 0x00 for historical reasons, apparently.\n const buf = val instanceof CidLinkWrapper ? val.bytes : fromString(val.$link).bytes;\n const len = buf.byteLength + 1;\n resizeIfNeeded(state, len + 2 * MAX_TYPE_ARG_LEN);\n writeTypeAndArgument(state, 6, 42);\n writeTypeAndArgument(state, 2, len);\n state.b[state.p] = 0;\n state.b.set(buf, state.p + 1);\n state.p += len;\n};\n// oxlint-disable-next-line typescript/no-explicit-any\nconst writeValue = (state, val) => {\n switch (typeof val) {\n case 'boolean': {\n resizeIfNeeded(state, 1);\n return writeUint8(state, 0xf4 + +val);\n }\n case 'number': {\n return writeNumber(state, val);\n }\n case 'string': {\n return writeString(state, val);\n }\n case 'object': {\n // case: null\n if (val === null) {\n resizeIfNeeded(state, 1);\n return writeUint8(state, 0xf6);\n }\n // case: array\n if (Array.isArray(val)) {\n const len = val.length;\n resizeIfNeeded(state, MAX_TYPE_ARG_LEN);\n writeTypeAndArgument(state, 4, len);\n for (let idx = 0; idx < len; idx++) {\n writeValue(state, val[idx]);\n }\n return;\n }\n // case: POJO\n if (val.constructor === Object) {\n const keys = getOrderedObjectKeys(val);\n const len = keys.length;\n if (len === 1) {\n const key = keys[0];\n if (key === '$link') {\n if (typeof val.$link === 'string') {\n writeCid(state, val);\n return;\n }\n throw new TypeError(`unexpected cid-link value`);\n }\n if (key === '$bytes') {\n if (typeof val.$bytes === 'string') {\n writeBytes(state, val);\n return;\n }\n throw new TypeError(`unexpected bytes value`);\n }\n }\n resizeIfNeeded(state, MAX_TYPE_ARG_LEN);\n writeTypeAndArgument(state, 5, len);\n for (let idx = 0; idx < len; idx++) {\n const key = keys[idx];\n writeString(state, key);\n writeValue(state, val[key]);\n }\n return;\n }\n // case: cid-link wrappers / odd objects\n if ('$link' in val) {\n if (val instanceof CidLinkWrapper || typeof val.$link === 'string') {\n writeCid(state, val);\n return;\n }\n throw new TypeError(`unexpected cid-link value`);\n }\n // case: bytes wrappers / odd objects\n if ('$bytes' in val) {\n if (val instanceof BytesWrapper || typeof val.$bytes === 'string') {\n writeBytes(state, val);\n return;\n }\n throw new TypeError(`unexpected bytes value`);\n }\n }\n }\n throw new TypeError(`unsupported type: ${val}`);\n};\nconst createState = () => {\n return {\n c: [],\n b: allocUnsafe(CHUNK_SIZE),\n v: null,\n p: 0,\n l: 0,\n };\n};\nexport const encode = (value) => {\n const state = createState();\n writeValue(state, value);\n const final = state.b.subarray(0, state.p);\n if (!state.c.length) {\n return final;\n }\n state.c.push(final);\n return concat(state.c, state.l + state.p);\n};\n// re-sorts an already-collected key array by UTF-8 byte length, then bytewise on the UTF-8 bytes.\n// only needed when a key is non-ASCII; UTF-8 lengths/bytes are cached so each key is encoded at most\n// once, and the bytewise tiebreak only materializes bytes for equal-length keys.\nconst sortUtf8Keys = (keys) => {\n const len = keys.length;\n // oxlint-disable-next-line no-new-array\n const lengths = new Array(len);\n // oxlint-disable-next-line no-new-array\n const bytes = new Array(len);\n for (let i = 0; i < len; i++) {\n lengths[i] = getUtf8Length(keys[i]);\n }\n for (let i = 1; i < len; i++) {\n const keyA = keys[i];\n const lenA = lengths[i];\n // hold keyA's bytes in a local: the inner loop shifts bytes[i] away, so reading the cache\n // back through bytes[i] on later iterations would compare against the wrong key's bytes.\n let bytesA = bytes[i];\n let j = i - 1;\n for (; j >= 0; j--) {\n let cmp = lenA - lengths[j];\n if (cmp === 0) {\n // Note: keys are always distinct, so equal-length keys can never be byte-equal.\n cmp = compare((bytesA ??= encodeUtf8(keyA)), (bytes[j] ??= encodeUtf8(keys[j])));\n }\n if (cmp > 0) {\n break;\n }\n keys[j + 1] = keys[j];\n lengths[j + 1] = lengths[j];\n bytes[j + 1] = bytes[j];\n }\n keys[j + 1] = keyA;\n lengths[j + 1] = lenA;\n bytes[j + 1] = bytesA;\n }\n};\n/** @internal */\nexport const getOrderedObjectKeys = (obj) => {\n const keys = Object.keys(obj);\n let len = 0;\n let ascii = true;\n for (let i = 0; i < keys.length; i++) {\n const valA = keys[i];\n if (obj[valA] === undefined) {\n continue;\n }\n // for ASCII keys, UTF-16 length equals UTF-8 byte length and JS string comparison equals\n // bytewise UTF-8 comparison, so the cheap sort below is already canonical; a non-ASCII key\n // can diverge, so flag it for a UTF-8-correct re-sort.\n if (ascii) {\n for (let k = 0; k < valA.length; k++) {\n if (valA.charCodeAt(k) > 0x7f) {\n ascii = false;\n break;\n }\n }\n }\n const lenA = valA.length;\n let j = len - 1;\n for (; j >= 0; j--) {\n const valB = keys[j];\n // Note: Don't need to check for equality, keys are always distinct.\n if (lenA > valB.length || (lenA === valB.length && valA > valB)) {\n break;\n }\n keys[j + 1] = valB;\n }\n keys[j + 1] = valA;\n len++;\n }\n keys.length = len;\n if (!ascii) {\n sortUtf8Keys(keys);\n }\n return keys;\n};\n"],"mappings":"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","names":["BYTES_SYMBOL","BytesWrapper","__name","buf","toBase64","isBytes","value","val","toBytes","fromBytes","bytes","$bytes","fromBase64Pad","fromBase64","requireBytes","__name","state","needed","readArgument","info","arg","readUint8","readUint16","readUint32","readUint53","readFloat64","value","pos","buf","hi","lo","readString","length","string","decodeUtf8From","readBytes","slice","toBytes","readCid","cid","fromBinary","CidLinkWrapper","decodeStringKey","prelude","type","decodeFirst","len","stack","jump","first","obj","key","arr","index","prevStart","prevLength","curStart","curLength","cmp","i","decode","remainder","MAX_TYPE_ARG_LEN","CHUNK_SIZE","_max","_isInteger","_isFinite","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","resizeIfNeeded","__name","state","needed","buf","pos","allocUnsafe","getTypeInfoLength","arg","writeFloat64","val","writeUint8","writeUint16","writeUint32","writeUint53","hi","lo","writeTypeAndArgument","type","writeInteger","writeFloat","writeNumber","writeString","strLength","ascii","ptr","first","i","a","b","c","d","code","estimatedHeaderSize","estimatedPosition","len","encodeUtf8Into","headerSize","writeBytes","fromBytes","writeCid","CidLinkWrapper","fromString","writeValue","idx","keys","getOrderedObjectKeys","key","BytesWrapper","createState","encode","value","final","concat","sortUtf8Keys","lengths","bytes","getUtf8Length","keyA","lenA","bytesA","j","cmp","compare","encodeUtf8","obj","valA","k","valB"],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse","file":"/chunk-A2HI33AQ.js.map"} \ No newline at end of file +{"version":3,"sources":["/node_modules/.deno/@atcute+cbor@2.3.6/node_modules/@atcute/cbor/dist/bytes.js","/node_modules/.deno/@atcute+cbor@2.3.6/node_modules/@atcute/cbor/dist/decode.js","/node_modules/.deno/@atcute+cbor@2.3.6/node_modules/@atcute/cbor/dist/encode.js"],"sourcesContent":["import { fromBase64, fromBase64Pad, toBase64 } from '@atcute/multibase';\nconst BYTES_SYMBOL = Symbol.for('@atcute/bytes-wrapper');\nexport class BytesWrapper {\n /** @internal */\n [BYTES_SYMBOL] = true;\n buf;\n constructor(buf) {\n this.buf = buf;\n }\n get $bytes() {\n return toBase64(this.buf);\n }\n toJSON() {\n return { $bytes: this.$bytes };\n }\n}\nexport const isBytes = (value) => {\n // oxlint-disable-next-line typescript/no-explicit-any\n const val = value;\n return (val instanceof BytesWrapper || (val !== null && typeof val === 'object' && typeof val.$bytes === 'string'));\n};\nexport const toBytes = (buf) => {\n return new BytesWrapper(buf);\n};\nexport const fromBytes = (bytes) => {\n if (bytes instanceof BytesWrapper) {\n return bytes.buf;\n }\n // atproto emits unpadded base64 but the data-model permits optional padding on `$bytes`; accept\n // both while keeping the generic codecs strict.\n const $bytes = bytes.$bytes;\n return $bytes.charCodeAt($bytes.length - 1) === 0x3d ? fromBase64Pad($bytes) : fromBase64($bytes);\n};\n","// oxlint-disable typescript/no-explicit-any\nimport { CidLinkWrapper, fromBinary } from '@atcute/cid';\nimport { decodeUtf8From } from '@atcute/uint8array';\nimport { toBytes } from './bytes.js';\nconst requireBytes = (state, needed) => {\n if (needed > state.b.length - state.p) {\n throw new RangeError(`unexpected end of input`);\n }\n};\nconst readArgument = (state, info) => {\n if (info < 24) {\n return info;\n }\n let arg;\n switch (info) {\n case 24: {\n requireBytes(state, 1);\n arg = readUint8(state);\n if (arg < 24) {\n throw new TypeError(`non-canonical argument encoding`);\n }\n break;\n }\n case 25: {\n requireBytes(state, 2);\n arg = readUint16(state);\n if (arg < 0x100) {\n throw new TypeError(`non-canonical argument encoding`);\n }\n break;\n }\n case 26: {\n requireBytes(state, 4);\n arg = readUint32(state);\n if (arg < 0x10000) {\n throw new TypeError(`non-canonical argument encoding`);\n }\n break;\n }\n case 27: {\n requireBytes(state, 8);\n arg = readUint53(state);\n if (arg < 0x100000000) {\n throw new TypeError(`non-canonical argument encoding`);\n }\n break;\n }\n default: {\n throw new Error(`invalid argument encoding; got ${info}`);\n }\n }\n return arg;\n};\nconst readFloat64 = (state) => {\n requireBytes(state, 8);\n const view = (state.v ??= new DataView(state.b.buffer, state.b.byteOffset, state.b.byteLength));\n const value = view.getFloat64(state.p);\n // DRISL forbids NaN and infinities; -0 and subnormals are finite and remain allowed.\n if (!Number.isFinite(value)) {\n throw new RangeError(`NaN and Infinity values not supported`);\n }\n state.p += 8;\n return value;\n};\nconst readUint8 = (state) => {\n return state.b[state.p++];\n};\nconst readUint16 = (state) => {\n let pos = state.p;\n const buf = state.b;\n const value = (buf[pos++] << 8) | buf[pos++];\n state.p = pos;\n return value;\n};\nconst readUint32 = (state) => {\n let pos = state.p;\n const buf = state.b;\n const value = ((buf[pos++] << 24) | (buf[pos++] << 16) | (buf[pos++] << 8) | buf[pos++]) >>> 0;\n state.p = pos;\n return value;\n};\nconst readUint53 = (state) => {\n const hi = readUint32(state);\n const lo = readUint32(state);\n if (hi > 0x1fffff) {\n throw new RangeError(`can't decode integers beyond safe integer range`);\n }\n return hi * 2 ** 32 + lo;\n};\nconst readString = (state, length) => {\n requireBytes(state, length);\n const string = decodeUtf8From(state.b, state.p, length);\n state.p += length;\n return string;\n};\nconst readBytes = (state, length) => {\n requireBytes(state, length);\n const slice = state.b.subarray(state.p, (state.p += length));\n return toBytes(slice);\n};\nconst readCid = (state, length) => {\n requireBytes(state, length);\n const cid = fromBinary(state.b.subarray(state.p, (state.p += length)));\n return new CidLinkWrapper(cid.bytes);\n};\nconst decodeStringKey = (state) => {\n requireBytes(state, 1);\n const prelude = readUint8(state);\n const type = prelude >> 5;\n if (type !== 3) {\n throw new TypeError(`expected map to only have string keys; got type ${type}`);\n }\n const info = prelude & 0x1f;\n const length = info < 24 ? info : readArgument(state, info);\n state.ks = state.p;\n state.kl = length;\n return readString(state, length);\n};\nexport const decodeFirst = (buf) => {\n const len = buf.length;\n const state = {\n b: buf,\n v: null,\n p: 0,\n ks: 0,\n kl: 0,\n };\n let stack = null;\n let value;\n jump: while (state.p < len) {\n // the loop condition guarantees the prelude byte; deeper reads guard themselves via requireBytes\n const prelude = readUint8(state);\n const type = prelude >> 5;\n const info = prelude & 0x1f;\n const arg = type === 7 ? 0 : info < 24 ? info : readArgument(state, info);\n switch (type) {\n case 0: {\n value = arg;\n break;\n }\n case 1: {\n value = -1 - arg;\n // `readUint53` caps the argument at the safe-integer range, but negation shifts the\n // lower bound by one, so -(2^53) can slip through; reject it to match the encoder.\n if (value < Number.MIN_SAFE_INTEGER) {\n throw new RangeError(`can't decode integers beyond safe integer range`);\n }\n break;\n }\n case 2: {\n value = readBytes(state, arg);\n break;\n }\n case 3: {\n value = readString(state, arg);\n break;\n }\n case 4: {\n if (arg > 0) {\n // each element needs at least one byte, so reject lengths larger than the remaining\n // input before allocating — a truncated header must not force a huge allocation.\n requireBytes(state, arg);\n // oxlint-disable-next-line no-new-array\n stack = { t: 1, c: (value = new Array(arg)), k: null, r: arg, n: stack };\n continue jump;\n }\n value = [];\n break;\n }\n case 5: {\n value = {};\n if (arg > 0) {\n // We'll read the key of the first item here.\n const first = decodeStringKey(state);\n stack = { t: 0, c: value, k: first, ks: state.ks, kl: state.kl, r: arg, n: stack };\n continue jump;\n }\n break;\n }\n case 6: {\n switch (arg) {\n case 42: {\n requireBytes(state, 1);\n const prelude = readUint8(state);\n const type = prelude >> 5;\n const info = prelude & 0x1f;\n if (type !== 2) {\n throw new TypeError(`expected cid-link to be type 2 (bytes); got type ${type}`);\n }\n const len = readArgument(state, info);\n value = readCid(state, len);\n break;\n }\n default: {\n throw new TypeError(`unsupported tag; got ${arg}`);\n }\n }\n break;\n }\n case 7: {\n switch (info) {\n case 20:\n case 21: {\n value = info === 21;\n break;\n }\n case 22: {\n value = null;\n break;\n }\n case 27: {\n value = readFloat64(state);\n break;\n }\n default: {\n throw new Error(`invalid simple value; got ${info}`);\n }\n }\n break;\n }\n default: {\n throw new TypeError(`invalid type; got ${type}`);\n }\n }\n while (stack !== null) {\n switch (stack.t) {\n case 0: {\n const obj = stack.c;\n const key = stack.k;\n if (key === '__proto__') {\n // Guard against prototype pollution. CWE-1321\n Object.defineProperty(obj, key, { enumerable: true, configurable: true, writable: true });\n }\n obj[key] = value;\n break;\n }\n case 1: {\n const arr = stack.c;\n const index = arr.length - stack.r;\n arr[index] = value;\n break;\n }\n }\n if (--stack.r) {\n // We still have more values to decode, continue\n if (!stack.t) {\n // Read the key of the next map item\n const prevStart = stack.ks;\n const prevLength = stack.kl;\n stack.k = decodeStringKey(state);\n const curStart = state.ks;\n const curLength = state.kl;\n // Canonical CBOR orders map keys by UTF-8 byte length, then bytewise on the raw\n // UTF-8 bytes. Comparing the buffer slices directly avoids the UTF-16 semantics\n // of JS string comparison, which diverges for non-ASCII keys.\n let cmp = curLength - prevLength;\n if (cmp === 0) {\n const buf = state.b;\n for (let i = 0; i < curLength; i++) {\n cmp = buf[curStart + i] - buf[prevStart + i];\n if (cmp !== 0) {\n break;\n }\n }\n }\n if (cmp <= 0) {\n throw new TypeError(`map keys are not in canonical order or contain duplicates`);\n }\n stack.ks = curStart;\n stack.kl = curLength;\n }\n continue jump;\n }\n // Unwrap the stack\n value = stack.c;\n stack = stack.n;\n }\n // a complete value: returning here means falling out of the loop can only happen when the\n // input ends mid-structure (or is empty), which the throw below reports.\n return [value, buf.subarray(state.p)];\n }\n throw new RangeError(`unexpected end of input`);\n};\nexport const decode = (buf) => {\n const [value, remainder] = decodeFirst(buf);\n if (remainder.length !== 0) {\n throw new Error(`decoded value contains remainder`);\n }\n return value;\n};\n","import { CidLinkWrapper, fromString } from '@atcute/cid';\nimport { allocUnsafe, compare, concat, encodeUtf8, encodeUtf8Into, getUtf8Length } from '@atcute/uint8array';\nimport { IS_NODE_RUNTIME } from '#runtime';\nimport { BytesWrapper, fromBytes } from './bytes.js';\nconst MAX_TYPE_ARG_LEN = 9;\nconst CHUNK_SIZE = 1024;\nconst _max = Math.max;\nconst _isInteger = Number.isInteger;\nconst _isFinite = Number.isFinite;\nconst MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER;\nconst MIN_SAFE_INTEGER = Number.MIN_SAFE_INTEGER;\nconst resizeIfNeeded = (state, needed) => {\n const buf = state.b;\n const pos = state.p;\n if (buf.byteLength < pos + needed) {\n state.c.push(buf.subarray(0, pos));\n state.l += pos;\n state.b = allocUnsafe(_max(CHUNK_SIZE, needed));\n state.v = null;\n state.p = 0;\n }\n};\nconst getTypeInfoLength = (arg) => {\n return arg < 24 ? 1 : arg < 0x100 ? 2 : arg < 0x10000 ? 3 : arg < 0x100000000 ? 5 : 9;\n};\nconst writeFloat64 = (state, val) => {\n const buf = state.b;\n const view = (state.v ??= new DataView(buf.buffer, buf.byteOffset, buf.byteLength));\n view.setFloat64(state.p, val);\n state.p += 8;\n};\nconst writeUint8 = (state, val) => {\n state.b[state.p++] = val;\n};\nconst writeUint16 = (state, val) => {\n let pos = state.p;\n const buf = state.b;\n buf[pos++] = val >>> 8;\n buf[pos++] = val & 0xff;\n state.p = pos;\n};\nconst writeUint32 = (state, val) => {\n let pos = state.p;\n const buf = state.b;\n buf[pos++] = val >>> 24;\n buf[pos++] = (val >>> 16) & 0xff;\n buf[pos++] = (val >>> 8) & 0xff;\n buf[pos++] = val & 0xff;\n state.p = pos;\n};\nconst writeUint53 = (state, val) => {\n let pos = state.p;\n const buf = state.b;\n const hi = (val / 2 ** 32) | 0;\n const lo = val >>> 0;\n buf[pos++] = hi >>> 24;\n buf[pos++] = (hi >>> 16) & 0xff;\n buf[pos++] = (hi >>> 8) & 0xff;\n buf[pos++] = hi & 0xff;\n buf[pos++] = lo >>> 24;\n buf[pos++] = (lo >>> 16) & 0xff;\n buf[pos++] = (lo >>> 8) & 0xff;\n buf[pos++] = lo & 0xff;\n state.p = pos;\n};\nconst writeTypeAndArgument = (state, type, arg) => {\n if (arg < 24) {\n writeUint8(state, (type << 5) | arg);\n }\n else if (arg < 0x100) {\n writeUint8(state, (type << 5) | 24);\n writeUint8(state, arg);\n }\n else if (arg < 0x10000) {\n writeUint8(state, (type << 5) | 25);\n writeUint16(state, arg);\n }\n else if (arg < 0x100000000) {\n writeUint8(state, (type << 5) | 26);\n writeUint32(state, arg);\n }\n else {\n writeUint8(state, (type << 5) | 27);\n writeUint53(state, arg);\n }\n};\n// --- Functions below MUST be cautious about ensuring there's enough room in the buffer!!\nconst writeInteger = (state, val) => {\n resizeIfNeeded(state, MAX_TYPE_ARG_LEN);\n if (val < 0) {\n writeTypeAndArgument(state, 1, -val - 1);\n }\n else {\n writeTypeAndArgument(state, 0, val);\n }\n};\nconst writeFloat = (state, val) => {\n resizeIfNeeded(state, 9);\n writeUint8(state, 0xe0 | 27);\n writeFloat64(state, val);\n};\nconst writeNumber = (state, val) => {\n if (!_isFinite(val)) {\n throw new RangeError(`NaN and Infinity values not supported`);\n }\n if (val > MAX_SAFE_INTEGER || val < MIN_SAFE_INTEGER) {\n throw new RangeError(`can't encode numbers beyond safe integer range`);\n }\n if (_isInteger(val)) {\n writeInteger(state, val);\n }\n else {\n // Note: https://atproto.com/specs/data-model#:~:text=not%20allowed%20in%20atproto\n writeFloat(state, val);\n }\n};\nconst writeString = (state, val) => {\n const strLength = val.length;\n if (strLength === 0) {\n resizeIfNeeded(state, 1);\n writeUint8(state, 0x60);\n return;\n }\n // JS strings are UTF-16 (ECMA spec)\n // Therefore, worst case length of UTF-8 is length * 3. (plus 9 bytes of CBOR header)\n // Greatly overshoots in practice, but doesn't matter. (alloc is O(1)+ anyway)\n resizeIfNeeded(state, strLength * 3 + MAX_TYPE_ARG_LEN);\n // Optimistic fast encode\n ascii: if (!IS_NODE_RUNTIME || strLength < 24) {\n const ptr = state.p + getTypeInfoLength(strLength);\n const first = val.charCodeAt(0);\n if (first > 0x7f) {\n break ascii;\n }\n state.b[ptr] = first;\n let i = 1;\n // batch-process four characters per iteration to lower charCodeAt/branch overhead.\n for (; i + 3 < strLength; i += 4) {\n const a = val.charCodeAt(i);\n const b = val.charCodeAt(i + 1);\n const c = val.charCodeAt(i + 2);\n const d = val.charCodeAt(i + 3);\n if ((a | b | c | d) & 0xff80) {\n break ascii;\n }\n state.b[ptr + i] = a;\n state.b[ptr + i + 1] = b;\n state.b[ptr + i + 2] = c;\n state.b[ptr + i + 3] = d;\n }\n for (; i < strLength; i++) {\n const code = val.charCodeAt(i);\n if (code > 0x7f) {\n break ascii;\n }\n state.b[ptr + i] = code;\n }\n // String was ASCII-only, we're done\n writeTypeAndArgument(state, 3, strLength);\n state.p += strLength;\n return;\n }\n // Credit: method used by cbor-x\n // Rather than allocate a buffer and then copy it back to the destination buffer:\n // - Estimate the length of the header based on the UTF-16 size of the string.\n // Should be accurate enough, see last point for when it isn't.\n // - Directly write the string at the estimated location, retrieving with it the actual length.\n // - Write the header now that the length is available.\n // - If the estimation happened to be wrong, correct the placement of the string.\n // While it's costly, it's actually roughly the same cost as if we encoded it separately + copy.\n const estimatedHeaderSize = getTypeInfoLength(strLength * 2);\n const estimatedPosition = state.p + estimatedHeaderSize;\n const len = encodeUtf8Into(state.b, val, estimatedPosition);\n const headerSize = getTypeInfoLength(len);\n if (estimatedHeaderSize !== headerSize) {\n // Estimation was incorrect, move the bytes to the real place.\n state.b.copyWithin(state.p + headerSize, estimatedPosition, estimatedPosition + len);\n }\n writeTypeAndArgument(state, 3, len);\n state.p += len;\n};\nconst writeBytes = (state, val) => {\n const buf = fromBytes(val);\n const len = buf.byteLength;\n resizeIfNeeded(state, len + MAX_TYPE_ARG_LEN);\n writeTypeAndArgument(state, 2, len);\n state.b.set(buf, state.p);\n state.p += len;\n};\nconst writeCid = (state, val) => {\n // CID bytes are prefixed with 0x00 for historical reasons, apparently.\n const buf = val instanceof CidLinkWrapper ? val.bytes : fromString(val.$link).bytes;\n const len = buf.byteLength + 1;\n resizeIfNeeded(state, len + 2 * MAX_TYPE_ARG_LEN);\n writeTypeAndArgument(state, 6, 42);\n writeTypeAndArgument(state, 2, len);\n state.b[state.p] = 0;\n state.b.set(buf, state.p + 1);\n state.p += len;\n};\n// oxlint-disable-next-line typescript/no-explicit-any\nconst writeValue = (state, val) => {\n switch (typeof val) {\n case 'boolean': {\n resizeIfNeeded(state, 1);\n return writeUint8(state, 0xf4 + +val);\n }\n case 'number': {\n return writeNumber(state, val);\n }\n case 'string': {\n return writeString(state, val);\n }\n case 'object': {\n // case: null\n if (val === null) {\n resizeIfNeeded(state, 1);\n return writeUint8(state, 0xf6);\n }\n // case: array\n if (Array.isArray(val)) {\n const len = val.length;\n resizeIfNeeded(state, MAX_TYPE_ARG_LEN);\n writeTypeAndArgument(state, 4, len);\n for (let idx = 0; idx < len; idx++) {\n writeValue(state, val[idx]);\n }\n return;\n }\n // case: POJO\n if (val.constructor === Object) {\n const keys = getOrderedObjectKeys(val);\n const len = keys.length;\n if (len === 1) {\n const key = keys[0];\n if (key === '$link') {\n if (typeof val.$link === 'string') {\n writeCid(state, val);\n return;\n }\n throw new TypeError(`unexpected cid-link value`);\n }\n if (key === '$bytes') {\n if (typeof val.$bytes === 'string') {\n writeBytes(state, val);\n return;\n }\n throw new TypeError(`unexpected bytes value`);\n }\n }\n resizeIfNeeded(state, MAX_TYPE_ARG_LEN);\n writeTypeAndArgument(state, 5, len);\n for (let idx = 0; idx < len; idx++) {\n const key = keys[idx];\n writeString(state, key);\n writeValue(state, val[key]);\n }\n return;\n }\n // case: cid-link wrappers / odd objects\n if ('$link' in val) {\n if (val instanceof CidLinkWrapper || typeof val.$link === 'string') {\n writeCid(state, val);\n return;\n }\n throw new TypeError(`unexpected cid-link value`);\n }\n // case: bytes wrappers / odd objects\n if ('$bytes' in val) {\n if (val instanceof BytesWrapper || typeof val.$bytes === 'string') {\n writeBytes(state, val);\n return;\n }\n throw new TypeError(`unexpected bytes value`);\n }\n }\n }\n throw new TypeError(`unsupported type: ${val}`);\n};\nconst createState = () => {\n return {\n c: [],\n b: allocUnsafe(CHUNK_SIZE),\n v: null,\n p: 0,\n l: 0,\n };\n};\nexport const encode = (value) => {\n const state = createState();\n writeValue(state, value);\n const final = state.b.subarray(0, state.p);\n if (!state.c.length) {\n return final;\n }\n state.c.push(final);\n return concat(state.c, state.l + state.p);\n};\n// re-sorts an already-collected key array by UTF-8 byte length, then bytewise on the UTF-8 bytes.\n// only needed when a key is non-ASCII; UTF-8 lengths/bytes are cached so each key is encoded at most\n// once, and the bytewise tiebreak only materializes bytes for equal-length keys.\nconst sortUtf8Keys = (keys) => {\n const len = keys.length;\n // oxlint-disable-next-line no-new-array\n const lengths = new Array(len);\n // oxlint-disable-next-line no-new-array\n const bytes = new Array(len);\n for (let i = 0; i < len; i++) {\n lengths[i] = getUtf8Length(keys[i]);\n }\n for (let i = 1; i < len; i++) {\n const keyA = keys[i];\n const lenA = lengths[i];\n // hold keyA's bytes in a local: the inner loop shifts bytes[i] away, so reading the cache\n // back through bytes[i] on later iterations would compare against the wrong key's bytes.\n let bytesA = bytes[i];\n let j = i - 1;\n for (; j >= 0; j--) {\n let cmp = lenA - lengths[j];\n if (cmp === 0) {\n // Note: keys are always distinct, so equal-length keys can never be byte-equal.\n cmp = compare((bytesA ??= encodeUtf8(keyA)), (bytes[j] ??= encodeUtf8(keys[j])));\n }\n if (cmp > 0) {\n break;\n }\n keys[j + 1] = keys[j];\n lengths[j + 1] = lengths[j];\n bytes[j + 1] = bytes[j];\n }\n keys[j + 1] = keyA;\n lengths[j + 1] = lenA;\n bytes[j + 1] = bytesA;\n }\n};\n/** @internal */\nexport const getOrderedObjectKeys = (obj) => {\n const keys = Object.keys(obj);\n let len = 0;\n let ascii = true;\n for (let i = 0; i < keys.length; i++) {\n const valA = keys[i];\n if (obj[valA] === undefined) {\n continue;\n }\n // for ASCII keys, UTF-16 length equals UTF-8 byte length and JS string comparison equals\n // bytewise UTF-8 comparison, so the cheap sort below is already canonical; a non-ASCII key\n // can diverge, so flag it for a UTF-8-correct re-sort.\n if (ascii) {\n for (let k = 0; k < valA.length; k++) {\n if (valA.charCodeAt(k) > 0x7f) {\n ascii = false;\n break;\n }\n }\n }\n const lenA = valA.length;\n let j = len - 1;\n for (; j >= 0; j--) {\n const valB = keys[j];\n // Note: Don't need to check for equality, keys are always distinct.\n if (lenA > valB.length || (lenA === valB.length && valA > valB)) {\n break;\n }\n keys[j + 1] = valB;\n }\n keys[j + 1] = valA;\n len++;\n }\n keys.length = len;\n if (!ascii) {\n sortUtf8Keys(keys);\n }\n return keys;\n};\n"],"mappings":"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","names":["BYTES_SYMBOL","BytesWrapper","__name","buf","toBase64","isBytes","value","val","toBytes","fromBytes","bytes","$bytes","fromBase64Pad","fromBase64","requireBytes","__name","state","needed","readArgument","info","arg","readUint8","readUint16","readUint32","readUint53","readFloat64","value","pos","buf","hi","lo","readString","length","string","decodeUtf8From","readBytes","slice","toBytes","readCid","cid","fromBinary","CidLinkWrapper","decodeStringKey","prelude","type","decodeFirst","len","stack","jump","first","obj","key","arr","index","prevStart","prevLength","curStart","curLength","cmp","i","decode","remainder","MAX_TYPE_ARG_LEN","CHUNK_SIZE","_max","_isInteger","_isFinite","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","resizeIfNeeded","__name","state","needed","buf","pos","allocUnsafe","getTypeInfoLength","arg","writeFloat64","val","writeUint8","writeUint16","writeUint32","writeUint53","hi","lo","writeTypeAndArgument","type","writeInteger","writeFloat","writeNumber","writeString","strLength","ascii","ptr","first","i","a","b","c","d","code","estimatedHeaderSize","estimatedPosition","len","encodeUtf8Into","headerSize","writeBytes","fromBytes","writeCid","CidLinkWrapper","fromString","writeValue","idx","keys","getOrderedObjectKeys","key","BytesWrapper","createState","encode","value","final","concat","sortUtf8Keys","lengths","bytes","getUtf8Length","keyA","lenA","bytesA","j","cmp","compare","encodeUtf8","obj","valA","k","valB"],"sourceRoot":"","file":"/chunk-A2HI33AQ.js.map"} \ No newline at end of file diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-A565T3Q3.js b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-A565T3Q3.js similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-A565T3Q3.js rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-A565T3Q3.js diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-A565T3Q3.js.br b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-A565T3Q3.js.br similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-A565T3Q3.js.br rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-A565T3Q3.js.br diff --git a/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-A565T3Q3.js.map b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-A565T3Q3.js.map new file mode 100644 index 00000000..d7103e53 --- /dev/null +++ b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-A565T3Q3.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["/node_modules/.deno/core-js@3.50.0/node_modules/core-js/internals/global-this.js","/node_modules/.deno/core-js@3.50.0/node_modules/core-js/internals/path.js","/node_modules/.deno/core-js@3.50.0/node_modules/core-js/internals/fails.js","/node_modules/.deno/core-js@3.50.0/node_modules/core-js/internals/function-bind-native.js","/node_modules/.deno/core-js@3.50.0/node_modules/core-js/internals/function-uncurry-this.js","/node_modules/.deno/core-js@3.50.0/node_modules/core-js/internals/is-null-or-undefined.js","/node_modules/.deno/core-js@3.50.0/node_modules/core-js/internals/require-object-coercible.js","/node_modules/.deno/core-js@3.50.0/node_modules/core-js/internals/to-object.js","/node_modules/.deno/core-js@3.50.0/node_modules/core-js/internals/has-own-property.js","/node_modules/.deno/core-js@3.50.0/node_modules/core-js/internals/is-pure.js","/node_modules/.deno/core-js@3.50.0/node_modules/core-js/internals/define-global-property.js","/node_modules/.deno/core-js@3.50.0/node_modules/core-js/internals/shared-store.js","/node_modules/.deno/core-js@3.50.0/node_modules/core-js/internals/shared.js","/node_modules/.deno/core-js@3.50.0/node_modules/core-js/internals/uid.js","/node_modules/.deno/core-js@3.50.0/node_modules/core-js/internals/environment-user-agent.js","/node_modules/.deno/core-js@3.50.0/node_modules/core-js/internals/environment-v8-version.js","/node_modules/.deno/core-js@3.50.0/node_modules/core-js/internals/symbol-constructor-detection.js","/node_modules/.deno/core-js@3.50.0/node_modules/core-js/internals/use-symbol-as-uid.js","/node_modules/.deno/core-js@3.50.0/node_modules/core-js/internals/well-known-symbol.js","/node_modules/.deno/core-js@3.50.0/node_modules/core-js/internals/well-known-symbol-wrapped.js","/node_modules/.deno/core-js@3.50.0/node_modules/core-js/internals/descriptors.js","/node_modules/.deno/core-js@3.50.0/node_modules/core-js/internals/is-callable.js","/node_modules/.deno/core-js@3.50.0/node_modules/core-js/internals/is-object.js","/node_modules/.deno/core-js@3.50.0/node_modules/core-js/internals/document-create-element.js","/node_modules/.deno/core-js@3.50.0/node_modules/core-js/internals/ie8-dom-define.js","/node_modules/.deno/core-js@3.50.0/node_modules/core-js/internals/v8-prototype-define-bug.js","/node_modules/.deno/core-js@3.50.0/node_modules/core-js/internals/an-object.js","/node_modules/.deno/core-js@3.50.0/node_modules/core-js/internals/function-call.js","/node_modules/.deno/core-js@3.50.0/node_modules/core-js/internals/get-built-in.js","/node_modules/.deno/core-js@3.50.0/node_modules/core-js/internals/object-is-prototype-of.js","/node_modules/.deno/core-js@3.50.0/node_modules/core-js/internals/is-symbol.js","/node_modules/.deno/core-js@3.50.0/node_modules/core-js/internals/try-to-string.js","/node_modules/.deno/core-js@3.50.0/node_modules/core-js/internals/a-callable.js","/node_modules/.deno/core-js@3.50.0/node_modules/core-js/internals/get-method.js","/node_modules/.deno/core-js@3.50.0/node_modules/core-js/internals/ordinary-to-primitive.js","/node_modules/.deno/core-js@3.50.0/node_modules/core-js/internals/to-primitive.js","/node_modules/.deno/core-js@3.50.0/node_modules/core-js/internals/to-property-key.js","/node_modules/.deno/core-js@3.50.0/node_modules/core-js/internals/object-define-property.js","/node_modules/.deno/core-js@3.50.0/node_modules/core-js/internals/well-known-symbol-define.js","/node_modules/.deno/core-js@3.50.0/node_modules/core-js/internals/object-property-is-enumerable.js","/node_modules/.deno/core-js@3.50.0/node_modules/core-js/internals/create-property-descriptor.js","/node_modules/.deno/core-js@3.50.0/node_modules/core-js/internals/classof-raw.js","/node_modules/.deno/core-js@3.50.0/node_modules/core-js/internals/indexed-object.js","/node_modules/.deno/core-js@3.50.0/node_modules/core-js/internals/to-indexed-object.js","/node_modules/.deno/core-js@3.50.0/node_modules/core-js/internals/object-get-own-property-descriptor.js","/node_modules/.deno/core-js@3.50.0/node_modules/core-js/modules/es.symbol.async-dispose.js","/node_modules/.deno/core-js@3.50.0/node_modules/core-js/es/symbol/async-dispose.js","/node_modules/.deno/core-js@3.50.0/node_modules/core-js/modules/es.symbol.dispose.js","/node_modules/.deno/core-js@3.50.0/node_modules/core-js/es/symbol/dispose.js","/node_modules/.deno/@atproto+oauth-client-browser@0.0.0-spaces-alpha-20260818163953/node_modules/@atproto/oauth-client-browser/src/index.ts","/node_modules/.deno/zod@3.25.76/node_modules/zod/v3/external.js","/node_modules/.deno/zod@3.25.76/node_modules/zod/v3/helpers/util.js","/node_modules/.deno/zod@3.25.76/node_modules/zod/v3/ZodError.js","/node_modules/.deno/zod@3.25.76/node_modules/zod/v3/locales/en.js","/node_modules/.deno/zod@3.25.76/node_modules/zod/v3/errors.js","/node_modules/.deno/zod@3.25.76/node_modules/zod/v3/helpers/parseUtil.js","/node_modules/.deno/zod@3.25.76/node_modules/zod/v3/helpers/errorUtil.js","/node_modules/.deno/zod@3.25.76/node_modules/zod/v3/types.js","/node_modules/.deno/@atproto+jwk@0.7.4/node_modules/@atproto/jwk/src/errors.ts","/node_modules/.deno/multiformats@13.4.2/node_modules/multiformats/src/bytes.ts","/node_modules/.deno/multiformats@13.4.2/node_modules/multiformats/src/vendor/base-x.js","/node_modules/.deno/multiformats@13.4.2/node_modules/multiformats/src/bases/base.ts","/node_modules/.deno/multiformats@13.4.2/node_modules/multiformats/src/bases/base64.ts","/node_modules/.deno/@atproto+jwk@0.7.4/node_modules/@atproto/jwk/src/util.ts","/node_modules/.deno/@atproto+jwk@0.7.4/node_modules/@atproto/jwk/src/jwk.ts","/node_modules/.deno/@atproto+jwk@0.7.4/node_modules/@atproto/jwk/src/alg.ts","/node_modules/.deno/@atproto+jwk@0.7.4/node_modules/@atproto/jwk/src/jwks.ts","/node_modules/.deno/@atproto+jwk@0.7.4/node_modules/@atproto/jwk/src/jwt.ts","/node_modules/.deno/@atproto+jwk@0.7.4/node_modules/@atproto/jwk/src/jwt-decode.ts","/node_modules/.deno/@atproto+jwk@0.7.4/node_modules/@atproto/jwk/src/key.ts","/node_modules/.deno/@atproto+jwk@0.7.4/node_modules/@atproto/jwk/src/keyset.ts","/node_modules/.deno/jose@5.10.0/node_modules/jose/dist/browser/runtime/webcrypto.js","/node_modules/.deno/jose@5.10.0/node_modules/jose/dist/browser/lib/buffer_utils.js","/node_modules/.deno/jose@5.10.0/node_modules/jose/dist/browser/runtime/base64url.js","/node_modules/.deno/jose@5.10.0/node_modules/jose/dist/browser/util/errors.js","/node_modules/.deno/jose@5.10.0/node_modules/jose/dist/browser/runtime/random.js","/node_modules/.deno/jose@5.10.0/node_modules/jose/dist/browser/lib/crypto_key.js","/node_modules/.deno/jose@5.10.0/node_modules/jose/dist/browser/lib/invalid_key_input.js","/node_modules/.deno/jose@5.10.0/node_modules/jose/dist/browser/runtime/is_key_like.js","/node_modules/.deno/jose@5.10.0/node_modules/jose/dist/browser/lib/is_disjoint.js","/node_modules/.deno/jose@5.10.0/node_modules/jose/dist/browser/lib/is_object.js","/node_modules/.deno/jose@5.10.0/node_modules/jose/dist/browser/runtime/check_key_length.js","/node_modules/.deno/jose@5.10.0/node_modules/jose/dist/browser/lib/is_jwk.js","/node_modules/.deno/jose@5.10.0/node_modules/jose/dist/browser/runtime/jwk_to_key.js","/node_modules/.deno/jose@5.10.0/node_modules/jose/dist/browser/runtime/normalize_key.js","/node_modules/.deno/jose@5.10.0/node_modules/jose/dist/browser/runtime/asn1.js","/node_modules/.deno/jose@5.10.0/node_modules/jose/dist/browser/key/import.js","/node_modules/.deno/jose@5.10.0/node_modules/jose/dist/browser/lib/check_key_type.js","/node_modules/.deno/jose@5.10.0/node_modules/jose/dist/browser/lib/validate_crit.js","/node_modules/.deno/jose@5.10.0/node_modules/jose/dist/browser/lib/validate_algorithms.js","/node_modules/.deno/jose@5.10.0/node_modules/jose/dist/browser/runtime/key_to_jwk.js","/node_modules/.deno/jose@5.10.0/node_modules/jose/dist/browser/key/export.js","/node_modules/.deno/jose@5.10.0/node_modules/jose/dist/browser/runtime/subtle_dsa.js","/node_modules/.deno/jose@5.10.0/node_modules/jose/dist/browser/runtime/get_sign_verify_key.js","/node_modules/.deno/jose@5.10.0/node_modules/jose/dist/browser/runtime/verify.js","/node_modules/.deno/jose@5.10.0/node_modules/jose/dist/browser/jws/flattened/verify.js","/node_modules/.deno/jose@5.10.0/node_modules/jose/dist/browser/jws/compact/verify.js","/node_modules/.deno/jose@5.10.0/node_modules/jose/dist/browser/lib/epoch.js","/node_modules/.deno/jose@5.10.0/node_modules/jose/dist/browser/lib/secs.js","/node_modules/.deno/jose@5.10.0/node_modules/jose/dist/browser/lib/jwt_claims_set.js","/node_modules/.deno/jose@5.10.0/node_modules/jose/dist/browser/jwt/verify.js","/node_modules/.deno/jose@5.10.0/node_modules/jose/dist/browser/runtime/sign.js","/node_modules/.deno/jose@5.10.0/node_modules/jose/dist/browser/jws/flattened/sign.js","/node_modules/.deno/jose@5.10.0/node_modules/jose/dist/browser/jws/compact/sign.js","/node_modules/.deno/jose@5.10.0/node_modules/jose/dist/browser/jwt/produce.js","/node_modules/.deno/jose@5.10.0/node_modules/jose/dist/browser/jwt/sign.js","/node_modules/.deno/jose@5.10.0/node_modules/jose/dist/browser/jwks/remote.js","/node_modules/.deno/jose@5.10.0/node_modules/jose/dist/browser/runtime/generate.js","/node_modules/.deno/jose@5.10.0/node_modules/jose/dist/browser/key/generate_key_pair.js","/node_modules/.deno/@atproto+jwk-jose@0.2.4/node_modules/@atproto/jwk-jose/src/util.ts","/node_modules/.deno/@atproto+jwk-jose@0.2.4/node_modules/@atproto/jwk-jose/src/jose-key.ts","/node_modules/.deno/@atproto+jwk-webcrypto@0.3.4/node_modules/@atproto/jwk-webcrypto/src/util.ts","/node_modules/.deno/@atproto+jwk-webcrypto@0.3.4/node_modules/@atproto/jwk-webcrypto/src/webcrypto-key.ts","/node_modules/.deno/@atproto+oauth-client@0.0.0-spaces-alpha-20260818163953/node_modules/@atproto/oauth-client/src/index.ts","/node_modules/.deno/@atproto+did@0.5.4/node_modules/@atproto/did/src/lib/number.ts","/node_modules/.deno/@atproto+did@0.5.4/node_modules/@atproto/did/src/did-error.ts","/node_modules/.deno/@atproto+did@0.5.4/node_modules/@atproto/did/src/did.ts","/node_modules/.deno/@atproto+did@0.5.4/node_modules/@atproto/did/src/lib/uri.ts","/node_modules/.deno/@atproto+did@0.5.4/node_modules/@atproto/did/src/methods/plc.ts","/node_modules/.deno/@atproto+did@0.5.4/node_modules/@atproto/did/src/methods/web.ts","/node_modules/.deno/@atproto+did@0.5.4/node_modules/@atproto/did/src/utils.ts","/node_modules/.deno/@atproto+did@0.5.4/node_modules/@atproto/did/src/atproto.ts","/node_modules/.deno/@atproto+did@0.5.4/node_modules/@atproto/did/src/did-document.ts","/node_modules/.deno/@atproto-labs+simple-store@0.5.1/node_modules/@atproto-labs/simple-store/src/util.ts","/node_modules/.deno/@atproto-labs+simple-store@0.5.1/node_modules/@atproto-labs/simple-store/src/cached-getter.ts","/node_modules/.deno/@atproto-labs+simple-store@0.5.1/node_modules/@atproto-labs/simple-store/src/swallow-store-errors.ts","/node_modules/.deno/lru-cache@10.4.3/node_modules/lru-cache/src/index.ts","/node_modules/.deno/@atproto-labs+simple-store-memory@0.2.6/node_modules/@atproto-labs/simple-store-memory/src/util.ts","/node_modules/.deno/@atproto-labs+simple-store-memory@0.2.6/node_modules/@atproto-labs/simple-store-memory/src/index.ts","/node_modules/.deno/@atproto-labs+did-resolver@0.3.7/node_modules/@atproto-labs/did-resolver/src/did-cache-memory.ts","/node_modules/.deno/@atproto-labs+did-resolver@0.3.7/node_modules/@atproto-labs/did-resolver/src/did-cache.ts","/node_modules/.deno/@atproto-labs+fetch@0.3.5/node_modules/@atproto-labs/fetch/src/fetch-error.ts","/node_modules/.deno/@atproto-labs+fetch@0.3.5/node_modules/@atproto-labs/fetch/src/fetch.ts","/node_modules/.deno/@atproto-labs+fetch@0.3.5/node_modules/@atproto-labs/fetch/src/util.ts","/node_modules/.deno/@atproto-labs+fetch@0.3.5/node_modules/@atproto-labs/fetch/src/fetch-request.ts","/node_modules/.deno/@atproto-labs+pipe@0.2.4/node_modules/@atproto-labs/pipe/src/pipe.ts","/node_modules/.deno/@atproto-labs+fetch@0.3.5/node_modules/@atproto-labs/fetch/src/transformed-response.ts","/node_modules/.deno/@atproto-labs+fetch@0.3.5/node_modules/@atproto-labs/fetch/src/fetch-response.ts","/node_modules/.deno/@atproto-labs+fetch@0.3.5/node_modules/@atproto-labs/fetch/src/fetch-wrap.ts","/node_modules/.deno/@atproto-labs+did-resolver@0.3.7/node_modules/@atproto-labs/did-resolver/src/did-resolver-base.ts","/node_modules/.deno/@atproto-labs+did-resolver@0.3.7/node_modules/@atproto-labs/did-resolver/src/methods/plc.ts","/node_modules/.deno/@atproto-labs+did-resolver@0.3.7/node_modules/@atproto-labs/did-resolver/src/methods/web.ts","/node_modules/.deno/@atproto-labs+did-resolver@0.3.7/node_modules/@atproto-labs/did-resolver/src/did-resolver-common.ts","/node_modules/.deno/@atproto-labs+did-resolver@0.3.7/node_modules/@atproto-labs/did-resolver/src/create-did-resolver.ts","/node_modules/.deno/@atproto-labs+handle-resolver@0.4.8/node_modules/@atproto-labs/handle-resolver/src/handle-resolver-error.ts","/node_modules/.deno/@atproto-labs+handle-resolver@0.4.8/node_modules/@atproto-labs/handle-resolver/src/types.ts","/node_modules/.deno/@atproto-labs+handle-resolver@0.4.8/node_modules/@atproto-labs/handle-resolver/src/xrpc-handle-resolver.ts","/node_modules/.deno/@atproto-labs+handle-resolver@0.4.8/node_modules/@atproto-labs/handle-resolver/src/cached-handle-resolver.ts","/node_modules/.deno/@atproto-labs+handle-resolver@0.4.8/node_modules/@atproto-labs/handle-resolver/src/create-handle-resolver.ts","/node_modules/.deno/@atproto+oauth-types@0.7.5/node_modules/@atproto/oauth-types/src/constants.ts","/node_modules/.deno/@atproto+oauth-types@0.7.5/node_modules/@atproto/oauth-types/src/util.ts","/node_modules/.deno/@atproto+oauth-types@0.7.5/node_modules/@atproto/oauth-types/src/uri.ts","/node_modules/.deno/@atproto+oauth-types@0.7.5/node_modules/@atproto/oauth-types/src/atproto-loopback-client-redirect-uris.ts","/node_modules/.deno/@atproto+oauth-types@0.7.5/node_modules/@atproto/oauth-types/src/oauth-scope.ts","/node_modules/.deno/@atproto+oauth-types@0.7.5/node_modules/@atproto/oauth-types/src/atproto-oauth-scope.ts","/node_modules/.deno/@atproto+oauth-types@0.7.5/node_modules/@atproto/oauth-types/src/oauth-client-id.ts","/node_modules/.deno/@atproto+oauth-types@0.7.5/node_modules/@atproto/oauth-types/src/oauth-redirect-uri.ts","/node_modules/.deno/@atproto+oauth-types@0.7.5/node_modules/@atproto/oauth-types/src/oauth-client-id-loopback.ts","/node_modules/.deno/@atproto+oauth-types@0.7.5/node_modules/@atproto/oauth-types/src/atproto-loopback-client-id.ts","/node_modules/.deno/@atproto+oauth-types@0.7.5/node_modules/@atproto/oauth-types/src/atproto-loopback-client-metadata.ts","/node_modules/.deno/@atproto+oauth-types@0.7.5/node_modules/@atproto/oauth-types/src/oauth-authorization-details.ts","/node_modules/.deno/@atproto+oauth-types@0.7.5/node_modules/@atproto/oauth-types/src/oauth-token-type.ts","/node_modules/.deno/@atproto+oauth-types@0.7.5/node_modules/@atproto/oauth-types/src/oauth-token-response.ts","/node_modules/.deno/@atproto+oauth-types@0.7.5/node_modules/@atproto/oauth-types/src/atproto-oauth-token-response.ts","/node_modules/.deno/@atproto+oauth-types@0.7.5/node_modules/@atproto/oauth-types/src/oauth-access-token.ts","/node_modules/.deno/@atproto+oauth-types@0.7.5/node_modules/@atproto/oauth-types/src/oauth-authorization-code-grant-token-request.ts","/node_modules/.deno/@atproto+oauth-types@0.7.5/node_modules/@atproto/oauth-types/src/oauth-authorization-request-jar.ts","/node_modules/.deno/@atproto+oauth-types@0.7.5/node_modules/@atproto/oauth-types/src/oauth-code-challenge-method.ts","/node_modules/.deno/@atproto+oauth-types@0.7.5/node_modules/@atproto/oauth-types/src/oauth-prompt-mode.ts","/node_modules/.deno/@atproto+oauth-types@0.7.5/node_modules/@atproto/oauth-types/src/oauth-response-mode.ts","/node_modules/.deno/@atproto+oauth-types@0.7.5/node_modules/@atproto/oauth-types/src/oauth-response-type.ts","/node_modules/.deno/@atproto+oauth-types@0.7.5/node_modules/@atproto/oauth-types/src/oidc-claims-parameter.ts","/node_modules/.deno/@atproto+oauth-types@0.7.5/node_modules/@atproto/oauth-types/src/oidc-claims-properties.ts","/node_modules/.deno/@atproto+oauth-types@0.7.5/node_modules/@atproto/oauth-types/src/oidc-entity-type.ts","/node_modules/.deno/@atproto+oauth-types@0.7.5/node_modules/@atproto/oauth-types/src/oauth-authorization-request-parameters.ts","/node_modules/.deno/@atproto+oauth-types@0.7.5/node_modules/@atproto/oauth-types/src/oauth-authorization-request-par.ts","/node_modules/.deno/@atproto+oauth-types@0.7.5/node_modules/@atproto/oauth-types/src/oauth-request-uri.ts","/node_modules/.deno/@atproto+oauth-types@0.7.5/node_modules/@atproto/oauth-types/src/oauth-authorization-request-uri.ts","/node_modules/.deno/@atproto+oauth-types@0.7.5/node_modules/@atproto/oauth-types/src/oauth-authorization-request-query.ts","/node_modules/.deno/@atproto+oauth-types@0.7.5/node_modules/@atproto/oauth-types/src/oauth-authorization-response-error.ts","/node_modules/.deno/@atproto+oauth-types@0.7.5/node_modules/@atproto/oauth-types/src/oauth-issuer-identifier.ts","/node_modules/.deno/@atproto+oauth-types@0.7.5/node_modules/@atproto/oauth-types/src/oauth-authorization-server-metadata.ts","/node_modules/.deno/@atproto+oauth-types@0.7.5/node_modules/@atproto/oauth-types/src/oauth-client-credentials-grant-token-request.ts","/node_modules/.deno/@atproto+oauth-types@0.7.5/node_modules/@atproto/oauth-types/src/oauth-client-credentials.ts","/node_modules/.deno/@atproto+oauth-types@0.7.5/node_modules/@atproto/oauth-types/src/oauth-client-id-discoverable.ts","/node_modules/.deno/@atproto+oauth-types@0.7.5/node_modules/@atproto/oauth-types/src/oauth-endpoint-auth-method.ts","/node_modules/.deno/@atproto+oauth-types@0.7.5/node_modules/@atproto/oauth-types/src/oauth-grant-type.ts","/node_modules/.deno/@atproto+oauth-types@0.7.5/node_modules/@atproto/oauth-types/src/oauth-client-metadata.ts","/node_modules/.deno/@atproto+oauth-types@0.7.5/node_modules/@atproto/oauth-types/src/oauth-par-response.ts","/node_modules/.deno/@atproto+oauth-types@0.7.5/node_modules/@atproto/oauth-types/src/oauth-password-grant-token-request.ts","/node_modules/.deno/@atproto+oauth-types@0.7.5/node_modules/@atproto/oauth-types/src/oauth-protected-resource-metadata.ts","/node_modules/.deno/@atproto+oauth-types@0.7.5/node_modules/@atproto/oauth-types/src/oauth-refresh-token.ts","/node_modules/.deno/@atproto+oauth-types@0.7.5/node_modules/@atproto/oauth-types/src/oauth-refresh-token-grant-token-request.ts","/node_modules/.deno/@atproto+oauth-types@0.7.5/node_modules/@atproto/oauth-types/src/oauth-token-identification.ts","/node_modules/.deno/@atproto+oauth-types@0.7.5/node_modules/@atproto/oauth-types/src/oauth-token-request.ts","/node_modules/.deno/@atproto+oauth-types@0.7.5/node_modules/@atproto/oauth-types/src/oidc-authorization-error-response.ts","/node_modules/.deno/@atproto+oauth-types@0.7.5/node_modules/@atproto/oauth-types/src/oidc-userinfo.ts","/node_modules/.deno/@atproto+oauth-client@0.0.0-spaces-alpha-20260818163953/node_modules/@atproto/oauth-client/src/lock.ts","/node_modules/.deno/@atproto+oauth-client@0.0.0-spaces-alpha-20260818163953/node_modules/@atproto/oauth-client/src/util.ts","/node_modules/.deno/@atproto+oauth-client@0.0.0-spaces-alpha-20260818163953/node_modules/@atproto/oauth-client/src/oauth-authorization-server-metadata-resolver.ts","/node_modules/.deno/@atproto+oauth-client@0.0.0-spaces-alpha-20260818163953/node_modules/@atproto/oauth-client/src/oauth-callback-error.ts","/node_modules/.deno/@atproto-labs+identity-resolver@0.4.7/node_modules/@atproto-labs/identity-resolver/src/constants.ts","/node_modules/.deno/@atproto-labs+identity-resolver@0.4.7/node_modules/@atproto-labs/identity-resolver/src/identity-resolver-error.ts","/node_modules/.deno/@atproto-labs+identity-resolver@0.4.7/node_modules/@atproto-labs/identity-resolver/src/util.ts","/node_modules/.deno/@atproto-labs+identity-resolver@0.4.7/node_modules/@atproto-labs/identity-resolver/src/atproto-identity-resolver.ts","/node_modules/.deno/@atproto-labs+identity-resolver@0.4.7/node_modules/@atproto-labs/identity-resolver/src/create-identity-resolver.ts","/node_modules/.deno/@atproto+oauth-client@0.0.0-spaces-alpha-20260818163953/node_modules/@atproto/oauth-client/src/constants.ts","/node_modules/.deno/@atproto+oauth-client@0.0.0-spaces-alpha-20260818163953/node_modules/@atproto/oauth-client/src/errors/auth-method-unsatisfiable-error.ts","/node_modules/.deno/@atproto+oauth-client@0.0.0-spaces-alpha-20260818163953/node_modules/@atproto/oauth-client/src/errors/token-revoked-error.ts","/node_modules/.deno/@atproto+oauth-client@0.0.0-spaces-alpha-20260818163953/node_modules/@atproto/oauth-client/src/oauth-client-auth.ts","/node_modules/.deno/@atproto+oauth-client@0.0.0-spaces-alpha-20260818163953/node_modules/@atproto/oauth-client/src/oauth-protected-resource-metadata-resolver.ts","/node_modules/.deno/@atproto+oauth-client@0.0.0-spaces-alpha-20260818163953/node_modules/@atproto/oauth-client/src/oauth-resolver-error.ts","/node_modules/.deno/@atproto+oauth-client@0.0.0-spaces-alpha-20260818163953/node_modules/@atproto/oauth-client/src/oauth-resolver.ts","/node_modules/.deno/@atproto+oauth-client@0.0.0-spaces-alpha-20260818163953/node_modules/@atproto/oauth-client/src/errors/token-refresh-error.ts","/node_modules/.deno/@atproto+oauth-client@0.0.0-spaces-alpha-20260818163953/node_modules/@atproto/oauth-client/src/fetch-dpop.ts","/node_modules/.deno/@atproto+oauth-client@0.0.0-spaces-alpha-20260818163953/node_modules/@atproto/oauth-client/src/oauth-response-error.ts","/node_modules/.deno/@atproto+oauth-client@0.0.0-spaces-alpha-20260818163953/node_modules/@atproto/oauth-client/src/oauth-server-agent.ts","/node_modules/.deno/@atproto+oauth-client@0.0.0-spaces-alpha-20260818163953/node_modules/@atproto/oauth-client/src/oauth-server-factory.ts","/node_modules/.deno/@atproto+oauth-client@0.0.0-spaces-alpha-20260818163953/node_modules/@atproto/oauth-client/src/errors/token-invalid-error.ts","/node_modules/.deno/@atproto+oauth-client@0.0.0-spaces-alpha-20260818163953/node_modules/@atproto/oauth-client/src/oauth-session.ts","/node_modules/.deno/@atproto+oauth-client@0.0.0-spaces-alpha-20260818163953/node_modules/@atproto/oauth-client/src/runtime.ts","/node_modules/.deno/@atproto+oauth-client@0.0.0-spaces-alpha-20260818163953/node_modules/@atproto/oauth-client/src/session-getter.ts","/node_modules/.deno/@atproto+oauth-client@0.0.0-spaces-alpha-20260818163953/node_modules/@atproto/oauth-client/src/types.ts","/node_modules/.deno/@atproto+oauth-client@0.0.0-spaces-alpha-20260818163953/node_modules/@atproto/oauth-client/src/validate-client-metadata.ts","/node_modules/.deno/@atproto+oauth-client@0.0.0-spaces-alpha-20260818163953/node_modules/@atproto/oauth-client/src/oauth-client.ts","/node_modules/.deno/@atproto+oauth-client-browser@0.0.0-spaces-alpha-20260818163953/node_modules/@atproto/oauth-client-browser/src/indexed-db/db.ts","/node_modules/.deno/@atproto+oauth-client-browser@0.0.0-spaces-alpha-20260818163953/node_modules/@atproto/oauth-client-browser/src/indexed-db/db-transaction.ts","/node_modules/.deno/@atproto+oauth-client-browser@0.0.0-spaces-alpha-20260818163953/node_modules/@atproto/oauth-client-browser/src/indexed-db/util.ts","/node_modules/.deno/@atproto+oauth-client-browser@0.0.0-spaces-alpha-20260818163953/node_modules/@atproto/oauth-client-browser/src/indexed-db/db-index.ts","/node_modules/.deno/@atproto+oauth-client-browser@0.0.0-spaces-alpha-20260818163953/node_modules/@atproto/oauth-client-browser/src/indexed-db/db-object-store.ts","/node_modules/.deno/@atproto+oauth-client-browser@0.0.0-spaces-alpha-20260818163953/node_modules/@atproto/oauth-client-browser/src/browser-oauth-database.ts","/node_modules/.deno/@atproto+oauth-client-browser@0.0.0-spaces-alpha-20260818163953/node_modules/@atproto/oauth-client-browser/src/browser-runtime-implementation.ts","/node_modules/.deno/@atproto+oauth-client-browser@0.0.0-spaces-alpha-20260818163953/node_modules/@atproto/oauth-client-browser/src/errors.ts","/node_modules/.deno/@atproto+oauth-client-browser@0.0.0-spaces-alpha-20260818163953/node_modules/@atproto/oauth-client-browser/src/util.ts","/node_modules/.deno/@atproto+oauth-client-browser@0.0.0-spaces-alpha-20260818163953/node_modules/@atproto/oauth-client-browser/src/browser-oauth-client.ts","/components/output/raw/atproto-space/oauth-client-metadata.json","/components/output/raw/atproto-space/oauth.js"],"sourcesContent":["'use strict';\nvar check = function (it) {\n return it && it.Math === Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n check(typeof this == 'object' && this) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n","'use strict';\nvar globalThis = require('../internals/global-this');\n\nmodule.exports = globalThis;\n","'use strict';\nmodule.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-function-prototype-bind -- safe\n var test = function () { /* empty */ }.bind();\n // eslint-disable-next-line no-prototype-builtins -- safe\n return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar call = FunctionPrototype.call;\n// eslint-disable-next-line es/no-function-prototype-bind -- safe\nvar uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) {\n return function () {\n return call.apply(fn, arguments);\n };\n};\n","'use strict';\n// we can't use just `it == null` since of `document.all` special case\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec\nmodule.exports = function (it) {\n return it === null || it === undefined;\n};\n","'use strict';\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\nvar $TypeError = TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (isNullOrUndefined(it)) throw new $TypeError(\"Can't call method on \" + it);\n return it;\n};\n","'use strict';\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar $Object = Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return $Object(requireObjectCoercible(argument));\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\n// eslint-disable-next-line es/no-object-hasown -- safe\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty(toObject(it), key);\n};\n","'use strict';\nmodule.exports = false;\n","'use strict';\nvar globalThis = require('../internals/global-this');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n try {\n defineProperty(globalThis, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n globalThis[key] = value;\n } return value;\n};\n","'use strict';\nvar IS_PURE = require('../internals/is-pure');\nvar globalThis = require('../internals/global-this');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nvar SHARED = '__core-js_shared__';\nvar store = module.exports = globalThis[SHARED] || defineGlobalProperty(SHARED, {});\n\n(store.versions || (store.versions = [])).push({\n version: '3.50.0',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2013–2025 Denis Pushkarev (zloirock.ru), 2025–2026 CoreJS Company (core-js.io). All rights reserved.',\n license: 'https://github.com/zloirock/core-js/blob/v3.50.0/LICENSE',\n source: 'https://github.com/zloirock/core-js'\n});\n","'use strict';\nvar store = require('../internals/shared-store');\n// eslint-disable-next-line es/no-object-create -- safe\nvar create = Object.create || Object;\n\nmodule.exports = function (key, value) {\n return store[key] || (store[key] = value || create(null));\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.1.toString);\n\nmodule.exports = function (key) {\n return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\n\nvar navigator = globalThis.navigator;\nvar userAgent = navigator && navigator.userAgent;\n\nmodule.exports = userAgent ? String(userAgent) : '';\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar userAgent = require('../internals/environment-user-agent');\n\nvar process = globalThis.process;\nvar Deno = globalThis.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n // but their correct versions are not interesting for us\n version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = +match[1];\n }\n}\n\nmodule.exports = version;\n","'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/environment-v8-version');\nvar fails = require('../internals/fails');\nvar globalThis = require('../internals/global-this');\n\nvar $String = globalThis.String;\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol('symbol detection');\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n // nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will,\n // of course, fail.\n return !$String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\nmodule.exports = NATIVE_SYMBOL &&\n !Symbol.sham &&\n typeof Symbol.iterator == 'symbol';\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar Symbol = globalThis.Symbol;\nvar WellKnownSymbolsStore = shared('wks');\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol['for'] || Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!hasOwn(WellKnownSymbolsStore, name)) {\n WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol, name)\n ? Symbol[name]\n : createWellKnownSymbol('Symbol.' + name);\n } return WellKnownSymbolsStore[name];\n};\n","'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nexports.f = wellKnownSymbol;\n","'use strict';\nvar fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] !== 7;\n});\n","'use strict';\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot\nvar documentAll = typeof document == 'object' && document.all;\n\n// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\n// eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing\nmodule.exports = typeof documentAll == 'undefined' && documentAll !== undefined ? function (argument) {\n return typeof argument == 'function' || argument === documentAll;\n} : function (argument) {\n return typeof argument == 'function';\n};\n","'use strict';\nvar isCallable = require('../internals/is-callable');\n\nmodule.exports = function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it);\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar isObject = require('../internals/is-object');\n\nvar document = globalThis.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a !== 7;\n});\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n value: 42,\n writable: false\n }).prototype !== 42;\n});\n","'use strict';\nvar isObject = require('../internals/is-object');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n if (isObject(argument)) return argument;\n throw new $TypeError($String(argument) + ' is not an object');\n};\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar call = Function.prototype.call;\n// eslint-disable-next-line es/no-function-prototype-bind -- safe\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n return call.apply(call, arguments);\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (argument) {\n return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(globalThis[namespace]) : globalThis[namespace] && globalThis[namespace][method];\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar $Object = Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\n};\n","'use strict';\nvar $String = String;\n\nmodule.exports = function (argument) {\n try {\n return $String(argument);\n } catch (error) {\n return 'Object';\n }\n};\n","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n if (isCallable(argument)) return argument;\n throw new $TypeError(tryToString(argument) + ' is not a function');\n};\n","'use strict';\nvar aCallable = require('../internals/a-callable');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n var func = V[P];\n return isNullOrUndefined(func) ? undefined : aCallable(func);\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar $TypeError = TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n var fn, val;\n if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n throw new $TypeError(\"Can't convert object to primitive value\");\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar $TypeError = TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n var result;\n if (exoticToPrim) {\n if (pref === undefined) pref = 'default';\n result = call(exoticToPrim, input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw new $TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n","'use strict';\nvar toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n var key = toPrimitive(argument, 'string');\n return isSymbol(key) ? key : key + '';\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n var current = $getOwnPropertyDescriptor(O, P);\n if (current && current[WRITABLE]) {\n O[P] = Attributes.value;\n Attributes = {\n configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n writable: false\n };\n }\n } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw new $TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","'use strict';\nvar path = require('../internals/path');\nvar hasOwn = require('../internals/has-own-property');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineProperty = require('../internals/object-define-property').f;\n\nmodule.exports = function (NAME) {\n var Symbol = path.Symbol || (path.Symbol = {});\n if (!hasOwn(Symbol, NAME)) defineProperty(Symbol, NAME, {\n value: wrappedWellKnownSymbolModule.f(NAME)\n });\n};\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","'use strict';\nmodule.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n return stringSlice(toString(it), 8, -1);\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar $Object = Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !$Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) === 'String' ? split(it, '') : $Object(it);\n} : $Object;\n","'use strict';\n// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar call = require('../internals/function-call');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPropertyKey(P);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\nvar defineProperty = require('../internals/object-define-property').f;\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\n\nvar Symbol = globalThis.Symbol;\n\n// `Symbol.asyncDispose` well-known symbol\n// https://github.com/tc39/proposal-async-explicit-resource-management\ndefineWellKnownSymbol('asyncDispose');\n\nif (Symbol) {\n var descriptor = getOwnPropertyDescriptor(Symbol, 'asyncDispose');\n // workaround of NodeJS 20.4 bug\n // https://github.com/nodejs/node/issues/48699\n // and incorrect descriptor from some transpilers and userland helpers\n if (descriptor.enumerable && descriptor.configurable && descriptor.writable) {\n defineProperty(Symbol, 'asyncDispose', { value: descriptor.value, enumerable: false, configurable: false, writable: false });\n }\n}\n","'use strict';\nrequire('../../modules/es.symbol.async-dispose');\nvar WrappedWellKnownSymbolModule = require('../../internals/well-known-symbol-wrapped');\n\nmodule.exports = WrappedWellKnownSymbolModule.f('asyncDispose');\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\nvar defineProperty = require('../internals/object-define-property').f;\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\n\nvar Symbol = globalThis.Symbol;\n\n// `Symbol.dispose` well-known symbol\n// https://github.com/tc39/proposal-explicit-resource-management\ndefineWellKnownSymbol('dispose');\n\nif (Symbol) {\n var descriptor = getOwnPropertyDescriptor(Symbol, 'dispose');\n // workaround of NodeJS 20.4 bug\n // https://github.com/nodejs/node/issues/48699\n // and incorrect descriptor from some transpilers and userland helpers\n if (descriptor.enumerable && descriptor.configurable && descriptor.writable) {\n defineProperty(Symbol, 'dispose', { value: descriptor.value, enumerable: false, configurable: false, writable: false });\n }\n}\n","'use strict';\nrequire('../../modules/es.symbol.dispose');\nvar WrappedWellKnownSymbolModule = require('../../internals/well-known-symbol-wrapped');\n\nmodule.exports = WrappedWellKnownSymbolModule.f('dispose');\n","import 'core-js/es/symbol/async-dispose.js'\nimport 'core-js/es/symbol/dispose.js'\n\nexport * from '@atproto/jwk-webcrypto'\nexport * from '@atproto/oauth-client'\n\nexport * from './browser-oauth-client.js'\nexport * from './errors.js'\nexport { buildLoopbackClientId } from './util.js'\n","export * from \"./errors.js\";\nexport * from \"./helpers/parseUtil.js\";\nexport * from \"./helpers/typeAliases.js\";\nexport * from \"./helpers/util.js\";\nexport * from \"./types.js\";\nexport * from \"./ZodError.js\";\n","export var util;\n(function (util) {\n util.assertEqual = (_) => { };\n function assertIs(_arg) { }\n util.assertIs = assertIs;\n function assertNever(_x) {\n throw new Error();\n }\n util.assertNever = assertNever;\n util.arrayToEnum = (items) => {\n const obj = {};\n for (const item of items) {\n obj[item] = item;\n }\n return obj;\n };\n util.getValidEnumValues = (obj) => {\n const validKeys = util.objectKeys(obj).filter((k) => typeof obj[obj[k]] !== \"number\");\n const filtered = {};\n for (const k of validKeys) {\n filtered[k] = obj[k];\n }\n return util.objectValues(filtered);\n };\n util.objectValues = (obj) => {\n return util.objectKeys(obj).map(function (e) {\n return obj[e];\n });\n };\n util.objectKeys = typeof Object.keys === \"function\" // eslint-disable-line ban/ban\n ? (obj) => Object.keys(obj) // eslint-disable-line ban/ban\n : (object) => {\n const keys = [];\n for (const key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n keys.push(key);\n }\n }\n return keys;\n };\n util.find = (arr, checker) => {\n for (const item of arr) {\n if (checker(item))\n return item;\n }\n return undefined;\n };\n util.isInteger = typeof Number.isInteger === \"function\"\n ? (val) => Number.isInteger(val) // eslint-disable-line ban/ban\n : (val) => typeof val === \"number\" && Number.isFinite(val) && Math.floor(val) === val;\n function joinValues(array, separator = \" | \") {\n return array.map((val) => (typeof val === \"string\" ? `'${val}'` : val)).join(separator);\n }\n util.joinValues = joinValues;\n util.jsonStringifyReplacer = (_, value) => {\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n return value;\n };\n})(util || (util = {}));\nexport var objectUtil;\n(function (objectUtil) {\n objectUtil.mergeShapes = (first, second) => {\n return {\n ...first,\n ...second, // second overwrites first\n };\n };\n})(objectUtil || (objectUtil = {}));\nexport const ZodParsedType = util.arrayToEnum([\n \"string\",\n \"nan\",\n \"number\",\n \"integer\",\n \"float\",\n \"boolean\",\n \"date\",\n \"bigint\",\n \"symbol\",\n \"function\",\n \"undefined\",\n \"null\",\n \"array\",\n \"object\",\n \"unknown\",\n \"promise\",\n \"void\",\n \"never\",\n \"map\",\n \"set\",\n]);\nexport const getParsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"undefined\":\n return ZodParsedType.undefined;\n case \"string\":\n return ZodParsedType.string;\n case \"number\":\n return Number.isNaN(data) ? ZodParsedType.nan : ZodParsedType.number;\n case \"boolean\":\n return ZodParsedType.boolean;\n case \"function\":\n return ZodParsedType.function;\n case \"bigint\":\n return ZodParsedType.bigint;\n case \"symbol\":\n return ZodParsedType.symbol;\n case \"object\":\n if (Array.isArray(data)) {\n return ZodParsedType.array;\n }\n if (data === null) {\n return ZodParsedType.null;\n }\n if (data.then && typeof data.then === \"function\" && data.catch && typeof data.catch === \"function\") {\n return ZodParsedType.promise;\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return ZodParsedType.map;\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return ZodParsedType.set;\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return ZodParsedType.date;\n }\n return ZodParsedType.object;\n default:\n return ZodParsedType.unknown;\n }\n};\n","import { util } from \"./helpers/util.js\";\nexport const ZodIssueCode = util.arrayToEnum([\n \"invalid_type\",\n \"invalid_literal\",\n \"custom\",\n \"invalid_union\",\n \"invalid_union_discriminator\",\n \"invalid_enum_value\",\n \"unrecognized_keys\",\n \"invalid_arguments\",\n \"invalid_return_type\",\n \"invalid_date\",\n \"invalid_string\",\n \"too_small\",\n \"too_big\",\n \"invalid_intersection_types\",\n \"not_multiple_of\",\n \"not_finite\",\n]);\nexport const quotelessJson = (obj) => {\n const json = JSON.stringify(obj, null, 2);\n return json.replace(/\"([^\"]+)\":/g, \"$1:\");\n};\nexport class ZodError extends Error {\n get errors() {\n return this.issues;\n }\n constructor(issues) {\n super();\n this.issues = [];\n this.addIssue = (sub) => {\n this.issues = [...this.issues, sub];\n };\n this.addIssues = (subs = []) => {\n this.issues = [...this.issues, ...subs];\n };\n const actualProto = new.target.prototype;\n if (Object.setPrototypeOf) {\n // eslint-disable-next-line ban/ban\n Object.setPrototypeOf(this, actualProto);\n }\n else {\n this.__proto__ = actualProto;\n }\n this.name = \"ZodError\";\n this.issues = issues;\n }\n format(_mapper) {\n const mapper = _mapper ||\n function (issue) {\n return issue.message;\n };\n const fieldErrors = { _errors: [] };\n const processError = (error) => {\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\") {\n issue.unionErrors.map(processError);\n }\n else if (issue.code === \"invalid_return_type\") {\n processError(issue.returnTypeError);\n }\n else if (issue.code === \"invalid_arguments\") {\n processError(issue.argumentsError);\n }\n else if (issue.path.length === 0) {\n fieldErrors._errors.push(mapper(issue));\n }\n else {\n let curr = fieldErrors;\n let i = 0;\n while (i < issue.path.length) {\n const el = issue.path[i];\n const terminal = i === issue.path.length - 1;\n if (!terminal) {\n curr[el] = curr[el] || { _errors: [] };\n // if (typeof el === \"string\") {\n // curr[el] = curr[el] || { _errors: [] };\n // } else if (typeof el === \"number\") {\n // const errorArray: any = [];\n // errorArray._errors = [];\n // curr[el] = curr[el] || errorArray;\n // }\n }\n else {\n curr[el] = curr[el] || { _errors: [] };\n curr[el]._errors.push(mapper(issue));\n }\n curr = curr[el];\n i++;\n }\n }\n }\n };\n processError(this);\n return fieldErrors;\n }\n static assert(value) {\n if (!(value instanceof ZodError)) {\n throw new Error(`Not a ZodError: ${value}`);\n }\n }\n toString() {\n return this.message;\n }\n get message() {\n return JSON.stringify(this.issues, util.jsonStringifyReplacer, 2);\n }\n get isEmpty() {\n return this.issues.length === 0;\n }\n flatten(mapper = (issue) => issue.message) {\n const fieldErrors = {};\n const formErrors = [];\n for (const sub of this.issues) {\n if (sub.path.length > 0) {\n const firstEl = sub.path[0];\n fieldErrors[firstEl] = fieldErrors[firstEl] || [];\n fieldErrors[firstEl].push(mapper(sub));\n }\n else {\n formErrors.push(mapper(sub));\n }\n }\n return { formErrors, fieldErrors };\n }\n get formErrors() {\n return this.flatten();\n }\n}\nZodError.create = (issues) => {\n const error = new ZodError(issues);\n return error;\n};\n","import { ZodIssueCode } from \"../ZodError.js\";\nimport { util, ZodParsedType } from \"../helpers/util.js\";\nconst errorMap = (issue, _ctx) => {\n let message;\n switch (issue.code) {\n case ZodIssueCode.invalid_type:\n if (issue.received === ZodParsedType.undefined) {\n message = \"Required\";\n }\n else {\n message = `Expected ${issue.expected}, received ${issue.received}`;\n }\n break;\n case ZodIssueCode.invalid_literal:\n message = `Invalid literal value, expected ${JSON.stringify(issue.expected, util.jsonStringifyReplacer)}`;\n break;\n case ZodIssueCode.unrecognized_keys:\n message = `Unrecognized key(s) in object: ${util.joinValues(issue.keys, \", \")}`;\n break;\n case ZodIssueCode.invalid_union:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_union_discriminator:\n message = `Invalid discriminator value. Expected ${util.joinValues(issue.options)}`;\n break;\n case ZodIssueCode.invalid_enum_value:\n message = `Invalid enum value. Expected ${util.joinValues(issue.options)}, received '${issue.received}'`;\n break;\n case ZodIssueCode.invalid_arguments:\n message = `Invalid function arguments`;\n break;\n case ZodIssueCode.invalid_return_type:\n message = `Invalid function return type`;\n break;\n case ZodIssueCode.invalid_date:\n message = `Invalid date`;\n break;\n case ZodIssueCode.invalid_string:\n if (typeof issue.validation === \"object\") {\n if (\"includes\" in issue.validation) {\n message = `Invalid input: must include \"${issue.validation.includes}\"`;\n if (typeof issue.validation.position === \"number\") {\n message = `${message} at one or more positions greater than or equal to ${issue.validation.position}`;\n }\n }\n else if (\"startsWith\" in issue.validation) {\n message = `Invalid input: must start with \"${issue.validation.startsWith}\"`;\n }\n else if (\"endsWith\" in issue.validation) {\n message = `Invalid input: must end with \"${issue.validation.endsWith}\"`;\n }\n else {\n util.assertNever(issue.validation);\n }\n }\n else if (issue.validation !== \"regex\") {\n message = `Invalid ${issue.validation}`;\n }\n else {\n message = \"Invalid\";\n }\n break;\n case ZodIssueCode.too_small:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `more than`} ${issue.minimum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `over`} ${issue.minimum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n else if (issue.type === \"bigint\")\n message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${new Date(Number(issue.minimum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.too_big:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `less than`} ${issue.maximum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `under`} ${issue.maximum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n else if (issue.type === \"bigint\")\n message = `BigInt must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact ? `exactly` : issue.inclusive ? `smaller than or equal to` : `smaller than`} ${new Date(Number(issue.maximum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.custom:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_intersection_types:\n message = `Intersection results could not be merged`;\n break;\n case ZodIssueCode.not_multiple_of:\n message = `Number must be a multiple of ${issue.multipleOf}`;\n break;\n case ZodIssueCode.not_finite:\n message = \"Number must be finite\";\n break;\n default:\n message = _ctx.defaultError;\n util.assertNever(issue);\n }\n return { message };\n};\nexport default errorMap;\n","import defaultErrorMap from \"./locales/en.js\";\nlet overrideErrorMap = defaultErrorMap;\nexport { defaultErrorMap };\nexport function setErrorMap(map) {\n overrideErrorMap = map;\n}\nexport function getErrorMap() {\n return overrideErrorMap;\n}\n","import { getErrorMap } from \"../errors.js\";\nimport defaultErrorMap from \"../locales/en.js\";\nexport const makeIssue = (params) => {\n const { data, path, errorMaps, issueData } = params;\n const fullPath = [...path, ...(issueData.path || [])];\n const fullIssue = {\n ...issueData,\n path: fullPath,\n };\n if (issueData.message !== undefined) {\n return {\n ...issueData,\n path: fullPath,\n message: issueData.message,\n };\n }\n let errorMessage = \"\";\n const maps = errorMaps\n .filter((m) => !!m)\n .slice()\n .reverse();\n for (const map of maps) {\n errorMessage = map(fullIssue, { data, defaultError: errorMessage }).message;\n }\n return {\n ...issueData,\n path: fullPath,\n message: errorMessage,\n };\n};\nexport const EMPTY_PATH = [];\nexport function addIssueToContext(ctx, issueData) {\n const overrideMap = getErrorMap();\n const issue = makeIssue({\n issueData: issueData,\n data: ctx.data,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap, // contextual error map is first priority\n ctx.schemaErrorMap, // then schema-bound map if available\n overrideMap, // then global override map\n overrideMap === defaultErrorMap ? undefined : defaultErrorMap, // then global default map\n ].filter((x) => !!x),\n });\n ctx.common.issues.push(issue);\n}\nexport class ParseStatus {\n constructor() {\n this.value = \"valid\";\n }\n dirty() {\n if (this.value === \"valid\")\n this.value = \"dirty\";\n }\n abort() {\n if (this.value !== \"aborted\")\n this.value = \"aborted\";\n }\n static mergeArray(status, results) {\n const arrayValue = [];\n for (const s of results) {\n if (s.status === \"aborted\")\n return INVALID;\n if (s.status === \"dirty\")\n status.dirty();\n arrayValue.push(s.value);\n }\n return { status: status.value, value: arrayValue };\n }\n static async mergeObjectAsync(status, pairs) {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n });\n }\n return ParseStatus.mergeObjectSync(status, syncPairs);\n }\n static mergeObjectSync(status, pairs) {\n const finalObject = {};\n for (const pair of pairs) {\n const { key, value } = pair;\n if (key.status === \"aborted\")\n return INVALID;\n if (value.status === \"aborted\")\n return INVALID;\n if (key.status === \"dirty\")\n status.dirty();\n if (value.status === \"dirty\")\n status.dirty();\n if (key.value !== \"__proto__\" && (typeof value.value !== \"undefined\" || pair.alwaysSet)) {\n finalObject[key.value] = value.value;\n }\n }\n return { status: status.value, value: finalObject };\n }\n}\nexport const INVALID = Object.freeze({\n status: \"aborted\",\n});\nexport const DIRTY = (value) => ({ status: \"dirty\", value });\nexport const OK = (value) => ({ status: \"valid\", value });\nexport const isAborted = (x) => x.status === \"aborted\";\nexport const isDirty = (x) => x.status === \"dirty\";\nexport const isValid = (x) => x.status === \"valid\";\nexport const isAsync = (x) => typeof Promise !== \"undefined\" && x instanceof Promise;\n","export var errorUtil;\n(function (errorUtil) {\n errorUtil.errToObj = (message) => typeof message === \"string\" ? { message } : message || {};\n // biome-ignore lint:\n errorUtil.toString = (message) => typeof message === \"string\" ? message : message?.message;\n})(errorUtil || (errorUtil = {}));\n","import { ZodError, ZodIssueCode, } from \"./ZodError.js\";\nimport { defaultErrorMap, getErrorMap } from \"./errors.js\";\nimport { errorUtil } from \"./helpers/errorUtil.js\";\nimport { DIRTY, INVALID, OK, ParseStatus, addIssueToContext, isAborted, isAsync, isDirty, isValid, makeIssue, } from \"./helpers/parseUtil.js\";\nimport { util, ZodParsedType, getParsedType } from \"./helpers/util.js\";\nclass ParseInputLazyPath {\n constructor(parent, value, path, key) {\n this._cachedPath = [];\n this.parent = parent;\n this.data = value;\n this._path = path;\n this._key = key;\n }\n get path() {\n if (!this._cachedPath.length) {\n if (Array.isArray(this._key)) {\n this._cachedPath.push(...this._path, ...this._key);\n }\n else {\n this._cachedPath.push(...this._path, this._key);\n }\n }\n return this._cachedPath;\n }\n}\nconst handleResult = (ctx, result) => {\n if (isValid(result)) {\n return { success: true, data: result.value };\n }\n else {\n if (!ctx.common.issues.length) {\n throw new Error(\"Validation failed but no issues detected.\");\n }\n return {\n success: false,\n get error() {\n if (this._error)\n return this._error;\n const error = new ZodError(ctx.common.issues);\n this._error = error;\n return this._error;\n },\n };\n }\n};\nfunction processCreateParams(params) {\n if (!params)\n return {};\n const { errorMap, invalid_type_error, required_error, description } = params;\n if (errorMap && (invalid_type_error || required_error)) {\n throw new Error(`Can't use \"invalid_type_error\" or \"required_error\" in conjunction with custom error map.`);\n }\n if (errorMap)\n return { errorMap: errorMap, description };\n const customMap = (iss, ctx) => {\n const { message } = params;\n if (iss.code === \"invalid_enum_value\") {\n return { message: message ?? ctx.defaultError };\n }\n if (typeof ctx.data === \"undefined\") {\n return { message: message ?? required_error ?? ctx.defaultError };\n }\n if (iss.code !== \"invalid_type\")\n return { message: ctx.defaultError };\n return { message: message ?? invalid_type_error ?? ctx.defaultError };\n };\n return { errorMap: customMap, description };\n}\nexport class ZodType {\n get description() {\n return this._def.description;\n }\n _getType(input) {\n return getParsedType(input.data);\n }\n _getOrReturnCtx(input, ctx) {\n return (ctx || {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n });\n }\n _processInputParams(input) {\n return {\n status: new ParseStatus(),\n ctx: {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n },\n };\n }\n _parseSync(input) {\n const result = this._parse(input);\n if (isAsync(result)) {\n throw new Error(\"Synchronous parse encountered promise.\");\n }\n return result;\n }\n _parseAsync(input) {\n const result = this._parse(input);\n return Promise.resolve(result);\n }\n parse(data, params) {\n const result = this.safeParse(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n safeParse(data, params) {\n const ctx = {\n common: {\n issues: [],\n async: params?.async ?? false,\n contextualErrorMap: params?.errorMap,\n },\n path: params?.path || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const result = this._parseSync({ data, path: ctx.path, parent: ctx });\n return handleResult(ctx, result);\n }\n \"~validate\"(data) {\n const ctx = {\n common: {\n issues: [],\n async: !!this[\"~standard\"].async,\n },\n path: [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n if (!this[\"~standard\"].async) {\n try {\n const result = this._parseSync({ data, path: [], parent: ctx });\n return isValid(result)\n ? {\n value: result.value,\n }\n : {\n issues: ctx.common.issues,\n };\n }\n catch (err) {\n if (err?.message?.toLowerCase()?.includes(\"encountered\")) {\n this[\"~standard\"].async = true;\n }\n ctx.common = {\n issues: [],\n async: true,\n };\n }\n }\n return this._parseAsync({ data, path: [], parent: ctx }).then((result) => isValid(result)\n ? {\n value: result.value,\n }\n : {\n issues: ctx.common.issues,\n });\n }\n async parseAsync(data, params) {\n const result = await this.safeParseAsync(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n async safeParseAsync(data, params) {\n const ctx = {\n common: {\n issues: [],\n contextualErrorMap: params?.errorMap,\n async: true,\n },\n path: params?.path || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const maybeAsyncResult = this._parse({ data, path: ctx.path, parent: ctx });\n const result = await (isAsync(maybeAsyncResult) ? maybeAsyncResult : Promise.resolve(maybeAsyncResult));\n return handleResult(ctx, result);\n }\n refine(check, message) {\n const getIssueProperties = (val) => {\n if (typeof message === \"string\" || typeof message === \"undefined\") {\n return { message };\n }\n else if (typeof message === \"function\") {\n return message(val);\n }\n else {\n return message;\n }\n };\n return this._refinement((val, ctx) => {\n const result = check(val);\n const setError = () => ctx.addIssue({\n code: ZodIssueCode.custom,\n ...getIssueProperties(val),\n });\n if (typeof Promise !== \"undefined\" && result instanceof Promise) {\n return result.then((data) => {\n if (!data) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n if (!result) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n refinement(check, refinementData) {\n return this._refinement((val, ctx) => {\n if (!check(val)) {\n ctx.addIssue(typeof refinementData === \"function\" ? refinementData(val, ctx) : refinementData);\n return false;\n }\n else {\n return true;\n }\n });\n }\n _refinement(refinement) {\n return new ZodEffects({\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"refinement\", refinement },\n });\n }\n superRefine(refinement) {\n return this._refinement(refinement);\n }\n constructor(def) {\n /** Alias of safeParseAsync */\n this.spa = this.safeParseAsync;\n this._def = def;\n this.parse = this.parse.bind(this);\n this.safeParse = this.safeParse.bind(this);\n this.parseAsync = this.parseAsync.bind(this);\n this.safeParseAsync = this.safeParseAsync.bind(this);\n this.spa = this.spa.bind(this);\n this.refine = this.refine.bind(this);\n this.refinement = this.refinement.bind(this);\n this.superRefine = this.superRefine.bind(this);\n this.optional = this.optional.bind(this);\n this.nullable = this.nullable.bind(this);\n this.nullish = this.nullish.bind(this);\n this.array = this.array.bind(this);\n this.promise = this.promise.bind(this);\n this.or = this.or.bind(this);\n this.and = this.and.bind(this);\n this.transform = this.transform.bind(this);\n this.brand = this.brand.bind(this);\n this.default = this.default.bind(this);\n this.catch = this.catch.bind(this);\n this.describe = this.describe.bind(this);\n this.pipe = this.pipe.bind(this);\n this.readonly = this.readonly.bind(this);\n this.isNullable = this.isNullable.bind(this);\n this.isOptional = this.isOptional.bind(this);\n this[\"~standard\"] = {\n version: 1,\n vendor: \"zod\",\n validate: (data) => this[\"~validate\"](data),\n };\n }\n optional() {\n return ZodOptional.create(this, this._def);\n }\n nullable() {\n return ZodNullable.create(this, this._def);\n }\n nullish() {\n return this.nullable().optional();\n }\n array() {\n return ZodArray.create(this);\n }\n promise() {\n return ZodPromise.create(this, this._def);\n }\n or(option) {\n return ZodUnion.create([this, option], this._def);\n }\n and(incoming) {\n return ZodIntersection.create(this, incoming, this._def);\n }\n transform(transform) {\n return new ZodEffects({\n ...processCreateParams(this._def),\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"transform\", transform },\n });\n }\n default(def) {\n const defaultValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodDefault({\n ...processCreateParams(this._def),\n innerType: this,\n defaultValue: defaultValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n });\n }\n brand() {\n return new ZodBranded({\n typeName: ZodFirstPartyTypeKind.ZodBranded,\n type: this,\n ...processCreateParams(this._def),\n });\n }\n catch(def) {\n const catchValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodCatch({\n ...processCreateParams(this._def),\n innerType: this,\n catchValue: catchValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n });\n }\n describe(description) {\n const This = this.constructor;\n return new This({\n ...this._def,\n description,\n });\n }\n pipe(target) {\n return ZodPipeline.create(this, target);\n }\n readonly() {\n return ZodReadonly.create(this);\n }\n isOptional() {\n return this.safeParse(undefined).success;\n }\n isNullable() {\n return this.safeParse(null).success;\n }\n}\nconst cuidRegex = /^c[^\\s-]{8,}$/i;\nconst cuid2Regex = /^[0-9a-z]+$/;\nconst ulidRegex = /^[0-9A-HJKMNP-TV-Z]{26}$/i;\n// const uuidRegex =\n// /^([a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}|00000000-0000-0000-0000-000000000000)$/i;\nconst uuidRegex = /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/i;\nconst nanoidRegex = /^[a-z0-9_-]{21}$/i;\nconst jwtRegex = /^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$/;\nconst durationRegex = /^[-+]?P(?!$)(?:(?:[-+]?\\d+Y)|(?:[-+]?\\d+[.,]\\d+Y$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:(?:[-+]?\\d+W)|(?:[-+]?\\d+[.,]\\d+W$))?(?:(?:[-+]?\\d+D)|(?:[-+]?\\d+[.,]\\d+D$))?(?:T(?=[\\d+-])(?:(?:[-+]?\\d+H)|(?:[-+]?\\d+[.,]\\d+H$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:[-+]?\\d+(?:[.,]\\d+)?S)?)??$/;\n// from https://stackoverflow.com/a/46181/1550155\n// old version: too slow, didn't support unicode\n// const emailRegex = /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i;\n//old email regex\n// const emailRegex = /^(([^<>()[\\].,;:\\s@\"]+(\\.[^<>()[\\].,;:\\s@\"]+)*)|(\".+\"))@((?!-)([^<>()[\\].,;:\\s@\"]+\\.)+[^<>()[\\].,;:\\s@\"]{1,})[^-<>()[\\].,;:\\s@\"]$/i;\n// eslint-disable-next-line\n// const emailRegex =\n// /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\])|(\\[IPv6:(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))\\])|([A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])*(\\.[A-Za-z]{2,})+))$/;\n// const emailRegex =\n// /^[a-zA-Z0-9\\.\\!\\#\\$\\%\\&\\'\\*\\+\\/\\=\\?\\^\\_\\`\\{\\|\\}\\~\\-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n// const emailRegex =\n// /^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])$/i;\nconst emailRegex = /^(?!\\.)(?!.*\\.\\.)([A-Z0-9_'+\\-\\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\\-]*\\.)+[A-Z]{2,}$/i;\n// const emailRegex =\n// /^[a-z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-z0-9-]+(?:\\.[a-z0-9\\-]+)*$/i;\n// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nconst _emojiRegex = `^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$`;\nlet emojiRegex;\n// faster, simpler, safer\nconst ipv4Regex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;\nconst ipv4CidrRegex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/(3[0-2]|[12]?[0-9])$/;\n// const ipv6Regex =\n// /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/;\nconst ipv6Regex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/;\nconst ipv6CidrRegex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/;\n// https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript\nconst base64Regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;\n// https://base64.guru/standards/base64url\nconst base64urlRegex = /^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/;\n// simple\n// const dateRegexSource = `\\\\d{4}-\\\\d{2}-\\\\d{2}`;\n// no leap year validation\n// const dateRegexSource = `\\\\d{4}-((0[13578]|10|12)-31|(0[13-9]|1[0-2])-30|(0[1-9]|1[0-2])-(0[1-9]|1\\\\d|2\\\\d))`;\n// with leap year validation\nconst dateRegexSource = `((\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\\\d|30)|(02)-(0[1-9]|1\\\\d|2[0-8])))`;\nconst dateRegex = new RegExp(`^${dateRegexSource}$`);\nfunction timeRegexSource(args) {\n let secondsRegexSource = `[0-5]\\\\d`;\n if (args.precision) {\n secondsRegexSource = `${secondsRegexSource}\\\\.\\\\d{${args.precision}}`;\n }\n else if (args.precision == null) {\n secondsRegexSource = `${secondsRegexSource}(\\\\.\\\\d+)?`;\n }\n const secondsQuantifier = args.precision ? \"+\" : \"?\"; // require seconds if precision is nonzero\n return `([01]\\\\d|2[0-3]):[0-5]\\\\d(:${secondsRegexSource})${secondsQuantifier}`;\n}\nfunction timeRegex(args) {\n return new RegExp(`^${timeRegexSource(args)}$`);\n}\n// Adapted from https://stackoverflow.com/a/3143231\nexport function datetimeRegex(args) {\n let regex = `${dateRegexSource}T${timeRegexSource(args)}`;\n const opts = [];\n opts.push(args.local ? `Z?` : `Z`);\n if (args.offset)\n opts.push(`([+-]\\\\d{2}:?\\\\d{2})`);\n regex = `${regex}(${opts.join(\"|\")})`;\n return new RegExp(`^${regex}$`);\n}\nfunction isValidIP(ip, version) {\n if ((version === \"v4\" || !version) && ipv4Regex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6Regex.test(ip)) {\n return true;\n }\n return false;\n}\nfunction isValidJWT(jwt, alg) {\n if (!jwtRegex.test(jwt))\n return false;\n try {\n const [header] = jwt.split(\".\");\n if (!header)\n return false;\n // Convert base64url to base64\n const base64 = header\n .replace(/-/g, \"+\")\n .replace(/_/g, \"/\")\n .padEnd(header.length + ((4 - (header.length % 4)) % 4), \"=\");\n const decoded = JSON.parse(atob(base64));\n if (typeof decoded !== \"object\" || decoded === null)\n return false;\n if (\"typ\" in decoded && decoded?.typ !== \"JWT\")\n return false;\n if (!decoded.alg)\n return false;\n if (alg && decoded.alg !== alg)\n return false;\n return true;\n }\n catch {\n return false;\n }\n}\nfunction isValidCidr(ip, version) {\n if ((version === \"v4\" || !version) && ipv4CidrRegex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6CidrRegex.test(ip)) {\n return true;\n }\n return false;\n}\nexport class ZodString extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = String(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.string) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.string,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.length < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.length > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"length\") {\n const tooBig = input.data.length > check.value;\n const tooSmall = input.data.length < check.value;\n if (tooBig || tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n if (tooBig) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n else if (tooSmall) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n status.dirty();\n }\n }\n else if (check.kind === \"email\") {\n if (!emailRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"email\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"emoji\") {\n if (!emojiRegex) {\n emojiRegex = new RegExp(_emojiRegex, \"u\");\n }\n if (!emojiRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"emoji\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"uuid\") {\n if (!uuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"uuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"nanoid\") {\n if (!nanoidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"nanoid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid\") {\n if (!cuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid2\") {\n if (!cuid2Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid2\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ulid\") {\n if (!ulidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ulid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"url\") {\n try {\n new URL(input.data);\n }\n catch {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"regex\") {\n check.regex.lastIndex = 0;\n const testResult = check.regex.test(input.data);\n if (!testResult) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"regex\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"trim\") {\n input.data = input.data.trim();\n }\n else if (check.kind === \"includes\") {\n if (!input.data.includes(check.value, check.position)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { includes: check.value, position: check.position },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"toLowerCase\") {\n input.data = input.data.toLowerCase();\n }\n else if (check.kind === \"toUpperCase\") {\n input.data = input.data.toUpperCase();\n }\n else if (check.kind === \"startsWith\") {\n if (!input.data.startsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { startsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"endsWith\") {\n if (!input.data.endsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { endsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"datetime\") {\n const regex = datetimeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"datetime\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"date\") {\n const regex = dateRegex;\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"date\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"time\") {\n const regex = timeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"time\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"duration\") {\n if (!durationRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"duration\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ip\") {\n if (!isValidIP(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ip\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"jwt\") {\n if (!isValidJWT(input.data, check.alg)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"jwt\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cidr\") {\n if (!isValidCidr(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cidr\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64\") {\n if (!base64Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64url\") {\n if (!base64urlRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _regex(regex, validation, message) {\n return this.refinement((data) => regex.test(data), {\n validation,\n code: ZodIssueCode.invalid_string,\n ...errorUtil.errToObj(message),\n });\n }\n _addCheck(check) {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n email(message) {\n return this._addCheck({ kind: \"email\", ...errorUtil.errToObj(message) });\n }\n url(message) {\n return this._addCheck({ kind: \"url\", ...errorUtil.errToObj(message) });\n }\n emoji(message) {\n return this._addCheck({ kind: \"emoji\", ...errorUtil.errToObj(message) });\n }\n uuid(message) {\n return this._addCheck({ kind: \"uuid\", ...errorUtil.errToObj(message) });\n }\n nanoid(message) {\n return this._addCheck({ kind: \"nanoid\", ...errorUtil.errToObj(message) });\n }\n cuid(message) {\n return this._addCheck({ kind: \"cuid\", ...errorUtil.errToObj(message) });\n }\n cuid2(message) {\n return this._addCheck({ kind: \"cuid2\", ...errorUtil.errToObj(message) });\n }\n ulid(message) {\n return this._addCheck({ kind: \"ulid\", ...errorUtil.errToObj(message) });\n }\n base64(message) {\n return this._addCheck({ kind: \"base64\", ...errorUtil.errToObj(message) });\n }\n base64url(message) {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return this._addCheck({\n kind: \"base64url\",\n ...errorUtil.errToObj(message),\n });\n }\n jwt(options) {\n return this._addCheck({ kind: \"jwt\", ...errorUtil.errToObj(options) });\n }\n ip(options) {\n return this._addCheck({ kind: \"ip\", ...errorUtil.errToObj(options) });\n }\n cidr(options) {\n return this._addCheck({ kind: \"cidr\", ...errorUtil.errToObj(options) });\n }\n datetime(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"datetime\",\n precision: null,\n offset: false,\n local: false,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"datetime\",\n precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n offset: options?.offset ?? false,\n local: options?.local ?? false,\n ...errorUtil.errToObj(options?.message),\n });\n }\n date(message) {\n return this._addCheck({ kind: \"date\", message });\n }\n time(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"time\",\n precision: null,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"time\",\n precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n ...errorUtil.errToObj(options?.message),\n });\n }\n duration(message) {\n return this._addCheck({ kind: \"duration\", ...errorUtil.errToObj(message) });\n }\n regex(regex, message) {\n return this._addCheck({\n kind: \"regex\",\n regex: regex,\n ...errorUtil.errToObj(message),\n });\n }\n includes(value, options) {\n return this._addCheck({\n kind: \"includes\",\n value: value,\n position: options?.position,\n ...errorUtil.errToObj(options?.message),\n });\n }\n startsWith(value, message) {\n return this._addCheck({\n kind: \"startsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n endsWith(value, message) {\n return this._addCheck({\n kind: \"endsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n min(minLength, message) {\n return this._addCheck({\n kind: \"min\",\n value: minLength,\n ...errorUtil.errToObj(message),\n });\n }\n max(maxLength, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxLength,\n ...errorUtil.errToObj(message),\n });\n }\n length(len, message) {\n return this._addCheck({\n kind: \"length\",\n value: len,\n ...errorUtil.errToObj(message),\n });\n }\n /**\n * Equivalent to `.min(1)`\n */\n nonempty(message) {\n return this.min(1, errorUtil.errToObj(message));\n }\n trim() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"trim\" }],\n });\n }\n toLowerCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toLowerCase\" }],\n });\n }\n toUpperCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toUpperCase\" }],\n });\n }\n get isDatetime() {\n return !!this._def.checks.find((ch) => ch.kind === \"datetime\");\n }\n get isDate() {\n return !!this._def.checks.find((ch) => ch.kind === \"date\");\n }\n get isTime() {\n return !!this._def.checks.find((ch) => ch.kind === \"time\");\n }\n get isDuration() {\n return !!this._def.checks.find((ch) => ch.kind === \"duration\");\n }\n get isEmail() {\n return !!this._def.checks.find((ch) => ch.kind === \"email\");\n }\n get isURL() {\n return !!this._def.checks.find((ch) => ch.kind === \"url\");\n }\n get isEmoji() {\n return !!this._def.checks.find((ch) => ch.kind === \"emoji\");\n }\n get isUUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"uuid\");\n }\n get isNANOID() {\n return !!this._def.checks.find((ch) => ch.kind === \"nanoid\");\n }\n get isCUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid\");\n }\n get isCUID2() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid2\");\n }\n get isULID() {\n return !!this._def.checks.find((ch) => ch.kind === \"ulid\");\n }\n get isIP() {\n return !!this._def.checks.find((ch) => ch.kind === \"ip\");\n }\n get isCIDR() {\n return !!this._def.checks.find((ch) => ch.kind === \"cidr\");\n }\n get isBase64() {\n return !!this._def.checks.find((ch) => ch.kind === \"base64\");\n }\n get isBase64url() {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return !!this._def.checks.find((ch) => ch.kind === \"base64url\");\n }\n get minLength() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxLength() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodString.create = (params) => {\n return new ZodString({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodString,\n coerce: params?.coerce ?? false,\n ...processCreateParams(params),\n });\n};\n// https://stackoverflow.com/questions/3966484/why-does-modulus-operator-return-fractional-number-in-javascript/31711034#31711034\nfunction floatSafeRemainder(val, step) {\n const valDecCount = (val.toString().split(\".\")[1] || \"\").length;\n const stepDecCount = (step.toString().split(\".\")[1] || \"\").length;\n const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount;\n const valInt = Number.parseInt(val.toFixed(decCount).replace(\".\", \"\"));\n const stepInt = Number.parseInt(step.toFixed(decCount).replace(\".\", \"\"));\n return (valInt % stepInt) / 10 ** decCount;\n}\nexport class ZodNumber extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n this.step = this.multipleOf;\n }\n _parse(input) {\n if (this._def.coerce) {\n input.data = Number(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.number) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.number,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"int\") {\n if (!util.isInteger(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: \"integer\",\n received: \"float\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (floatSafeRemainder(input.data, check.value) !== 0) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"finite\") {\n if (!Number.isFinite(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_finite,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodNumber({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodNumber({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n int(message) {\n return this._addCheck({\n kind: \"int\",\n message: errorUtil.toString(message),\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value: value,\n message: errorUtil.toString(message),\n });\n }\n finite(message) {\n return this._addCheck({\n kind: \"finite\",\n message: errorUtil.toString(message),\n });\n }\n safe(message) {\n return this._addCheck({\n kind: \"min\",\n inclusive: true,\n value: Number.MIN_SAFE_INTEGER,\n message: errorUtil.toString(message),\n })._addCheck({\n kind: \"max\",\n inclusive: true,\n value: Number.MAX_SAFE_INTEGER,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n get isInt() {\n return !!this._def.checks.find((ch) => ch.kind === \"int\" || (ch.kind === \"multipleOf\" && util.isInteger(ch.value)));\n }\n get isFinite() {\n let max = null;\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"finite\" || ch.kind === \"int\" || ch.kind === \"multipleOf\") {\n return true;\n }\n else if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n else if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return Number.isFinite(min) && Number.isFinite(max);\n }\n}\nZodNumber.create = (params) => {\n return new ZodNumber({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodNumber,\n coerce: params?.coerce || false,\n ...processCreateParams(params),\n });\n};\nexport class ZodBigInt extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n }\n _parse(input) {\n if (this._def.coerce) {\n try {\n input.data = BigInt(input.data);\n }\n catch {\n return this._getInvalidInput(input);\n }\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.bigint) {\n return this._getInvalidInput(input);\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n type: \"bigint\",\n minimum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n type: \"bigint\",\n maximum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (input.data % check.value !== BigInt(0)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _getInvalidInput(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.bigint,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodBigInt({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodBigInt({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodBigInt.create = (params) => {\n return new ZodBigInt({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodBigInt,\n coerce: params?.coerce ?? false,\n ...processCreateParams(params),\n });\n};\nexport class ZodBoolean extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = Boolean(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.boolean) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.boolean,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodBoolean.create = (params) => {\n return new ZodBoolean({\n typeName: ZodFirstPartyTypeKind.ZodBoolean,\n coerce: params?.coerce || false,\n ...processCreateParams(params),\n });\n};\nexport class ZodDate extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = new Date(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.date) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.date,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (Number.isNaN(input.data.getTime())) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_date,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.getTime() < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n message: check.message,\n inclusive: true,\n exact: false,\n minimum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.getTime() > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n message: check.message,\n inclusive: true,\n exact: false,\n maximum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return {\n status: status.value,\n value: new Date(input.data.getTime()),\n };\n }\n _addCheck(check) {\n return new ZodDate({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n min(minDate, message) {\n return this._addCheck({\n kind: \"min\",\n value: minDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n max(maxDate, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n get minDate() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min != null ? new Date(min) : null;\n }\n get maxDate() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max != null ? new Date(max) : null;\n }\n}\nZodDate.create = (params) => {\n return new ZodDate({\n checks: [],\n coerce: params?.coerce || false,\n typeName: ZodFirstPartyTypeKind.ZodDate,\n ...processCreateParams(params),\n });\n};\nexport class ZodSymbol extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.symbol) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.symbol,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodSymbol.create = (params) => {\n return new ZodSymbol({\n typeName: ZodFirstPartyTypeKind.ZodSymbol,\n ...processCreateParams(params),\n });\n};\nexport class ZodUndefined extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.undefined,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodUndefined.create = (params) => {\n return new ZodUndefined({\n typeName: ZodFirstPartyTypeKind.ZodUndefined,\n ...processCreateParams(params),\n });\n};\nexport class ZodNull extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.null) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.null,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodNull.create = (params) => {\n return new ZodNull({\n typeName: ZodFirstPartyTypeKind.ZodNull,\n ...processCreateParams(params),\n });\n};\nexport class ZodAny extends ZodType {\n constructor() {\n super(...arguments);\n // to prevent instances of other classes from extending ZodAny. this causes issues with catchall in ZodObject.\n this._any = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodAny.create = (params) => {\n return new ZodAny({\n typeName: ZodFirstPartyTypeKind.ZodAny,\n ...processCreateParams(params),\n });\n};\nexport class ZodUnknown extends ZodType {\n constructor() {\n super(...arguments);\n // required\n this._unknown = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodUnknown.create = (params) => {\n return new ZodUnknown({\n typeName: ZodFirstPartyTypeKind.ZodUnknown,\n ...processCreateParams(params),\n });\n};\nexport class ZodNever extends ZodType {\n _parse(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.never,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n}\nZodNever.create = (params) => {\n return new ZodNever({\n typeName: ZodFirstPartyTypeKind.ZodNever,\n ...processCreateParams(params),\n });\n};\nexport class ZodVoid extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.void,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodVoid.create = (params) => {\n return new ZodVoid({\n typeName: ZodFirstPartyTypeKind.ZodVoid,\n ...processCreateParams(params),\n });\n};\nexport class ZodArray extends ZodType {\n _parse(input) {\n const { ctx, status } = this._processInputParams(input);\n const def = this._def;\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (def.exactLength !== null) {\n const tooBig = ctx.data.length > def.exactLength.value;\n const tooSmall = ctx.data.length < def.exactLength.value;\n if (tooBig || tooSmall) {\n addIssueToContext(ctx, {\n code: tooBig ? ZodIssueCode.too_big : ZodIssueCode.too_small,\n minimum: (tooSmall ? def.exactLength.value : undefined),\n maximum: (tooBig ? def.exactLength.value : undefined),\n type: \"array\",\n inclusive: true,\n exact: true,\n message: def.exactLength.message,\n });\n status.dirty();\n }\n }\n if (def.minLength !== null) {\n if (ctx.data.length < def.minLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.minLength.message,\n });\n status.dirty();\n }\n }\n if (def.maxLength !== null) {\n if (ctx.data.length > def.maxLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.maxLength.message,\n });\n status.dirty();\n }\n }\n if (ctx.common.async) {\n return Promise.all([...ctx.data].map((item, i) => {\n return def.type._parseAsync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n })).then((result) => {\n return ParseStatus.mergeArray(status, result);\n });\n }\n const result = [...ctx.data].map((item, i) => {\n return def.type._parseSync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n });\n return ParseStatus.mergeArray(status, result);\n }\n get element() {\n return this._def.type;\n }\n min(minLength, message) {\n return new ZodArray({\n ...this._def,\n minLength: { value: minLength, message: errorUtil.toString(message) },\n });\n }\n max(maxLength, message) {\n return new ZodArray({\n ...this._def,\n maxLength: { value: maxLength, message: errorUtil.toString(message) },\n });\n }\n length(len, message) {\n return new ZodArray({\n ...this._def,\n exactLength: { value: len, message: errorUtil.toString(message) },\n });\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodArray.create = (schema, params) => {\n return new ZodArray({\n type: schema,\n minLength: null,\n maxLength: null,\n exactLength: null,\n typeName: ZodFirstPartyTypeKind.ZodArray,\n ...processCreateParams(params),\n });\n};\nfunction deepPartialify(schema) {\n if (schema instanceof ZodObject) {\n const newShape = {};\n for (const key in schema.shape) {\n const fieldSchema = schema.shape[key];\n newShape[key] = ZodOptional.create(deepPartialify(fieldSchema));\n }\n return new ZodObject({\n ...schema._def,\n shape: () => newShape,\n });\n }\n else if (schema instanceof ZodArray) {\n return new ZodArray({\n ...schema._def,\n type: deepPartialify(schema.element),\n });\n }\n else if (schema instanceof ZodOptional) {\n return ZodOptional.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodNullable) {\n return ZodNullable.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodTuple) {\n return ZodTuple.create(schema.items.map((item) => deepPartialify(item)));\n }\n else {\n return schema;\n }\n}\nexport class ZodObject extends ZodType {\n constructor() {\n super(...arguments);\n this._cached = null;\n /**\n * @deprecated In most cases, this is no longer needed - unknown properties are now silently stripped.\n * If you want to pass through unknown properties, use `.passthrough()` instead.\n */\n this.nonstrict = this.passthrough;\n // extend<\n // Augmentation extends ZodRawShape,\n // NewOutput extends util.flatten<{\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // }>,\n // NewInput extends util.flatten<{\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }>\n // >(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape,\n // UnknownKeys,\n // Catchall,\n // NewOutput,\n // NewInput\n // > {\n // return new ZodObject({\n // ...this._def,\n // shape: () => ({\n // ...this._def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // }\n /**\n * @deprecated Use `.extend` instead\n * */\n this.augment = this.extend;\n }\n _getCached() {\n if (this._cached !== null)\n return this._cached;\n const shape = this._def.shape();\n const keys = util.objectKeys(shape);\n this._cached = { shape, keys };\n return this._cached;\n }\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.object) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const { status, ctx } = this._processInputParams(input);\n const { shape, keys: shapeKeys } = this._getCached();\n const extraKeys = [];\n if (!(this._def.catchall instanceof ZodNever && this._def.unknownKeys === \"strip\")) {\n for (const key in ctx.data) {\n if (!shapeKeys.includes(key)) {\n extraKeys.push(key);\n }\n }\n }\n const pairs = [];\n for (const key of shapeKeys) {\n const keyValidator = shape[key];\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: keyValidator._parse(new ParseInputLazyPath(ctx, value, ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (this._def.catchall instanceof ZodNever) {\n const unknownKeys = this._def.unknownKeys;\n if (unknownKeys === \"passthrough\") {\n for (const key of extraKeys) {\n pairs.push({\n key: { status: \"valid\", value: key },\n value: { status: \"valid\", value: ctx.data[key] },\n });\n }\n }\n else if (unknownKeys === \"strict\") {\n if (extraKeys.length > 0) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.unrecognized_keys,\n keys: extraKeys,\n });\n status.dirty();\n }\n }\n else if (unknownKeys === \"strip\") {\n }\n else {\n throw new Error(`Internal ZodObject error: invalid unknownKeys value.`);\n }\n }\n else {\n // run catchall validation\n const catchall = this._def.catchall;\n for (const key of extraKeys) {\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: catchall._parse(new ParseInputLazyPath(ctx, value, ctx.path, key) //, ctx.child(key), value, getParsedType(value)\n ),\n alwaysSet: key in ctx.data,\n });\n }\n }\n if (ctx.common.async) {\n return Promise.resolve()\n .then(async () => {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n alwaysSet: pair.alwaysSet,\n });\n }\n return syncPairs;\n })\n .then((syncPairs) => {\n return ParseStatus.mergeObjectSync(status, syncPairs);\n });\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get shape() {\n return this._def.shape();\n }\n strict(message) {\n errorUtil.errToObj;\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strict\",\n ...(message !== undefined\n ? {\n errorMap: (issue, ctx) => {\n const defaultError = this._def.errorMap?.(issue, ctx).message ?? ctx.defaultError;\n if (issue.code === \"unrecognized_keys\")\n return {\n message: errorUtil.errToObj(message).message ?? defaultError,\n };\n return {\n message: defaultError,\n };\n },\n }\n : {}),\n });\n }\n strip() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strip\",\n });\n }\n passthrough() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"passthrough\",\n });\n }\n // const AugmentFactory =\n // (def: Def) =>\n // (\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape, Augmentation>,\n // Def[\"unknownKeys\"],\n // Def[\"catchall\"]\n // > => {\n // return new ZodObject({\n // ...def,\n // shape: () => ({\n // ...def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // };\n extend(augmentation) {\n return new ZodObject({\n ...this._def,\n shape: () => ({\n ...this._def.shape(),\n ...augmentation,\n }),\n });\n }\n /**\n * Prior to zod@1.0.12 there was a bug in the\n * inferred type of merged objects. Please\n * upgrade if you are experiencing issues.\n */\n merge(merging) {\n const merged = new ZodObject({\n unknownKeys: merging._def.unknownKeys,\n catchall: merging._def.catchall,\n shape: () => ({\n ...this._def.shape(),\n ...merging._def.shape(),\n }),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n });\n return merged;\n }\n // merge<\n // Incoming extends AnyZodObject,\n // Augmentation extends Incoming[\"shape\"],\n // NewOutput extends {\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // },\n // NewInput extends {\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }\n // >(\n // merging: Incoming\n // ): ZodObject<\n // extendShape>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"],\n // NewOutput,\n // NewInput\n // > {\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n setKey(key, schema) {\n return this.augment({ [key]: schema });\n }\n // merge(\n // merging: Incoming\n // ): //ZodObject = (merging) => {\n // ZodObject<\n // extendShape>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"]\n // > {\n // // const mergedShape = objectUtil.mergeShapes(\n // // this._def.shape(),\n // // merging._def.shape()\n // // );\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n catchall(index) {\n return new ZodObject({\n ...this._def,\n catchall: index,\n });\n }\n pick(mask) {\n const shape = {};\n for (const key of util.objectKeys(mask)) {\n if (mask[key] && this.shape[key]) {\n shape[key] = this.shape[key];\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n omit(mask) {\n const shape = {};\n for (const key of util.objectKeys(this.shape)) {\n if (!mask[key]) {\n shape[key] = this.shape[key];\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n /**\n * @deprecated\n */\n deepPartial() {\n return deepPartialify(this);\n }\n partial(mask) {\n const newShape = {};\n for (const key of util.objectKeys(this.shape)) {\n const fieldSchema = this.shape[key];\n if (mask && !mask[key]) {\n newShape[key] = fieldSchema;\n }\n else {\n newShape[key] = fieldSchema.optional();\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n required(mask) {\n const newShape = {};\n for (const key of util.objectKeys(this.shape)) {\n if (mask && !mask[key]) {\n newShape[key] = this.shape[key];\n }\n else {\n const fieldSchema = this.shape[key];\n let newField = fieldSchema;\n while (newField instanceof ZodOptional) {\n newField = newField._def.innerType;\n }\n newShape[key] = newField;\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n keyof() {\n return createZodEnum(util.objectKeys(this.shape));\n }\n}\nZodObject.create = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.strictCreate = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strict\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.lazycreate = (shape, params) => {\n return new ZodObject({\n shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nexport class ZodUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const options = this._def.options;\n function handleResults(results) {\n // return first issue-free validation if it exists\n for (const result of results) {\n if (result.result.status === \"valid\") {\n return result.result;\n }\n }\n for (const result of results) {\n if (result.result.status === \"dirty\") {\n // add issues from dirty option\n ctx.common.issues.push(...result.ctx.common.issues);\n return result.result;\n }\n }\n // return invalid\n const unionErrors = results.map((result) => new ZodError(result.ctx.common.issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return Promise.all(options.map(async (option) => {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n return {\n result: await option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n }),\n ctx: childCtx,\n };\n })).then(handleResults);\n }\n else {\n let dirty = undefined;\n const issues = [];\n for (const option of options) {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n const result = option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n });\n if (result.status === \"valid\") {\n return result;\n }\n else if (result.status === \"dirty\" && !dirty) {\n dirty = { result, ctx: childCtx };\n }\n if (childCtx.common.issues.length) {\n issues.push(childCtx.common.issues);\n }\n }\n if (dirty) {\n ctx.common.issues.push(...dirty.ctx.common.issues);\n return dirty.result;\n }\n const unionErrors = issues.map((issues) => new ZodError(issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n }\n get options() {\n return this._def.options;\n }\n}\nZodUnion.create = (types, params) => {\n return new ZodUnion({\n options: types,\n typeName: ZodFirstPartyTypeKind.ZodUnion,\n ...processCreateParams(params),\n });\n};\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\n////////// //////////\n////////// ZodDiscriminatedUnion //////////\n////////// //////////\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\nconst getDiscriminator = (type) => {\n if (type instanceof ZodLazy) {\n return getDiscriminator(type.schema);\n }\n else if (type instanceof ZodEffects) {\n return getDiscriminator(type.innerType());\n }\n else if (type instanceof ZodLiteral) {\n return [type.value];\n }\n else if (type instanceof ZodEnum) {\n return type.options;\n }\n else if (type instanceof ZodNativeEnum) {\n // eslint-disable-next-line ban/ban\n return util.objectValues(type.enum);\n }\n else if (type instanceof ZodDefault) {\n return getDiscriminator(type._def.innerType);\n }\n else if (type instanceof ZodUndefined) {\n return [undefined];\n }\n else if (type instanceof ZodNull) {\n return [null];\n }\n else if (type instanceof ZodOptional) {\n return [undefined, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodNullable) {\n return [null, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodBranded) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodReadonly) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodCatch) {\n return getDiscriminator(type._def.innerType);\n }\n else {\n return [];\n }\n};\nexport class ZodDiscriminatedUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const discriminator = this.discriminator;\n const discriminatorValue = ctx.data[discriminator];\n const option = this.optionsMap.get(discriminatorValue);\n if (!option) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union_discriminator,\n options: Array.from(this.optionsMap.keys()),\n path: [discriminator],\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n else {\n return option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n get discriminator() {\n return this._def.discriminator;\n }\n get options() {\n return this._def.options;\n }\n get optionsMap() {\n return this._def.optionsMap;\n }\n /**\n * The constructor of the discriminated union schema. Its behaviour is very similar to that of the normal z.union() constructor.\n * However, it only allows a union of objects, all of which need to share a discriminator property. This property must\n * have a different value for each object in the union.\n * @param discriminator the name of the discriminator property\n * @param types an array of object schemas\n * @param params\n */\n static create(discriminator, options, params) {\n // Get all the valid discriminator values\n const optionsMap = new Map();\n // try {\n for (const type of options) {\n const discriminatorValues = getDiscriminator(type.shape[discriminator]);\n if (!discriminatorValues.length) {\n throw new Error(`A discriminator value for key \\`${discriminator}\\` could not be extracted from all schema options`);\n }\n for (const value of discriminatorValues) {\n if (optionsMap.has(value)) {\n throw new Error(`Discriminator property ${String(discriminator)} has duplicate value ${String(value)}`);\n }\n optionsMap.set(value, type);\n }\n }\n return new ZodDiscriminatedUnion({\n typeName: ZodFirstPartyTypeKind.ZodDiscriminatedUnion,\n discriminator,\n options,\n optionsMap,\n ...processCreateParams(params),\n });\n }\n}\nfunction mergeValues(a, b) {\n const aType = getParsedType(a);\n const bType = getParsedType(b);\n if (a === b) {\n return { valid: true, data: a };\n }\n else if (aType === ZodParsedType.object && bType === ZodParsedType.object) {\n const bKeys = util.objectKeys(b);\n const sharedKeys = util.objectKeys(a).filter((key) => bKeys.indexOf(key) !== -1);\n const newObj = { ...a, ...b };\n for (const key of sharedKeys) {\n const sharedValue = mergeValues(a[key], b[key]);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newObj[key] = sharedValue.data;\n }\n return { valid: true, data: newObj };\n }\n else if (aType === ZodParsedType.array && bType === ZodParsedType.array) {\n if (a.length !== b.length) {\n return { valid: false };\n }\n const newArray = [];\n for (let index = 0; index < a.length; index++) {\n const itemA = a[index];\n const itemB = b[index];\n const sharedValue = mergeValues(itemA, itemB);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newArray.push(sharedValue.data);\n }\n return { valid: true, data: newArray };\n }\n else if (aType === ZodParsedType.date && bType === ZodParsedType.date && +a === +b) {\n return { valid: true, data: a };\n }\n else {\n return { valid: false };\n }\n}\nexport class ZodIntersection extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const handleParsed = (parsedLeft, parsedRight) => {\n if (isAborted(parsedLeft) || isAborted(parsedRight)) {\n return INVALID;\n }\n const merged = mergeValues(parsedLeft.value, parsedRight.value);\n if (!merged.valid) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_intersection_types,\n });\n return INVALID;\n }\n if (isDirty(parsedLeft) || isDirty(parsedRight)) {\n status.dirty();\n }\n return { status: status.value, value: merged.data };\n };\n if (ctx.common.async) {\n return Promise.all([\n this._def.left._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n this._def.right._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n ]).then(([left, right]) => handleParsed(left, right));\n }\n else {\n return handleParsed(this._def.left._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }), this._def.right._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }));\n }\n }\n}\nZodIntersection.create = (left, right, params) => {\n return new ZodIntersection({\n left: left,\n right: right,\n typeName: ZodFirstPartyTypeKind.ZodIntersection,\n ...processCreateParams(params),\n });\n};\n// type ZodTupleItems = [ZodTypeAny, ...ZodTypeAny[]];\nexport class ZodTuple extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (ctx.data.length < this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n return INVALID;\n }\n const rest = this._def.rest;\n if (!rest && ctx.data.length > this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n status.dirty();\n }\n const items = [...ctx.data]\n .map((item, itemIndex) => {\n const schema = this._def.items[itemIndex] || this._def.rest;\n if (!schema)\n return null;\n return schema._parse(new ParseInputLazyPath(ctx, item, ctx.path, itemIndex));\n })\n .filter((x) => !!x); // filter nulls\n if (ctx.common.async) {\n return Promise.all(items).then((results) => {\n return ParseStatus.mergeArray(status, results);\n });\n }\n else {\n return ParseStatus.mergeArray(status, items);\n }\n }\n get items() {\n return this._def.items;\n }\n rest(rest) {\n return new ZodTuple({\n ...this._def,\n rest,\n });\n }\n}\nZodTuple.create = (schemas, params) => {\n if (!Array.isArray(schemas)) {\n throw new Error(\"You must pass an array of schemas to z.tuple([ ... ])\");\n }\n return new ZodTuple({\n items: schemas,\n typeName: ZodFirstPartyTypeKind.ZodTuple,\n rest: null,\n ...processCreateParams(params),\n });\n};\nexport class ZodRecord extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const pairs = [];\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n for (const key in ctx.data) {\n pairs.push({\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, key)),\n value: valueType._parse(new ParseInputLazyPath(ctx, ctx.data[key], ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (ctx.common.async) {\n return ParseStatus.mergeObjectAsync(status, pairs);\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get element() {\n return this._def.valueType;\n }\n static create(first, second, third) {\n if (second instanceof ZodType) {\n return new ZodRecord({\n keyType: first,\n valueType: second,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(third),\n });\n }\n return new ZodRecord({\n keyType: ZodString.create(),\n valueType: first,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(second),\n });\n }\n}\nexport class ZodMap extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.map) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.map,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n const pairs = [...ctx.data.entries()].map(([key, value], index) => {\n return {\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, [index, \"key\"])),\n value: valueType._parse(new ParseInputLazyPath(ctx, value, ctx.path, [index, \"value\"])),\n };\n });\n if (ctx.common.async) {\n const finalMap = new Map();\n return Promise.resolve().then(async () => {\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n });\n }\n else {\n const finalMap = new Map();\n for (const pair of pairs) {\n const key = pair.key;\n const value = pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n }\n }\n}\nZodMap.create = (keyType, valueType, params) => {\n return new ZodMap({\n valueType,\n keyType,\n typeName: ZodFirstPartyTypeKind.ZodMap,\n ...processCreateParams(params),\n });\n};\nexport class ZodSet extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.set) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.set,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const def = this._def;\n if (def.minSize !== null) {\n if (ctx.data.size < def.minSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.minSize.message,\n });\n status.dirty();\n }\n }\n if (def.maxSize !== null) {\n if (ctx.data.size > def.maxSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.maxSize.message,\n });\n status.dirty();\n }\n }\n const valueType = this._def.valueType;\n function finalizeSet(elements) {\n const parsedSet = new Set();\n for (const element of elements) {\n if (element.status === \"aborted\")\n return INVALID;\n if (element.status === \"dirty\")\n status.dirty();\n parsedSet.add(element.value);\n }\n return { status: status.value, value: parsedSet };\n }\n const elements = [...ctx.data.values()].map((item, i) => valueType._parse(new ParseInputLazyPath(ctx, item, ctx.path, i)));\n if (ctx.common.async) {\n return Promise.all(elements).then((elements) => finalizeSet(elements));\n }\n else {\n return finalizeSet(elements);\n }\n }\n min(minSize, message) {\n return new ZodSet({\n ...this._def,\n minSize: { value: minSize, message: errorUtil.toString(message) },\n });\n }\n max(maxSize, message) {\n return new ZodSet({\n ...this._def,\n maxSize: { value: maxSize, message: errorUtil.toString(message) },\n });\n }\n size(size, message) {\n return this.min(size, message).max(size, message);\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodSet.create = (valueType, params) => {\n return new ZodSet({\n valueType,\n minSize: null,\n maxSize: null,\n typeName: ZodFirstPartyTypeKind.ZodSet,\n ...processCreateParams(params),\n });\n};\nexport class ZodFunction extends ZodType {\n constructor() {\n super(...arguments);\n this.validate = this.implement;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.function) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.function,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n function makeArgsIssue(args, error) {\n return makeIssue({\n data: args,\n path: ctx.path,\n errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_arguments,\n argumentsError: error,\n },\n });\n }\n function makeReturnsIssue(returns, error) {\n return makeIssue({\n data: returns,\n path: ctx.path,\n errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_return_type,\n returnTypeError: error,\n },\n });\n }\n const params = { errorMap: ctx.common.contextualErrorMap };\n const fn = ctx.data;\n if (this._def.returns instanceof ZodPromise) {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(async function (...args) {\n const error = new ZodError([]);\n const parsedArgs = await me._def.args.parseAsync(args, params).catch((e) => {\n error.addIssue(makeArgsIssue(args, e));\n throw error;\n });\n const result = await Reflect.apply(fn, this, parsedArgs);\n const parsedReturns = await me._def.returns._def.type\n .parseAsync(result, params)\n .catch((e) => {\n error.addIssue(makeReturnsIssue(result, e));\n throw error;\n });\n return parsedReturns;\n });\n }\n else {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(function (...args) {\n const parsedArgs = me._def.args.safeParse(args, params);\n if (!parsedArgs.success) {\n throw new ZodError([makeArgsIssue(args, parsedArgs.error)]);\n }\n const result = Reflect.apply(fn, this, parsedArgs.data);\n const parsedReturns = me._def.returns.safeParse(result, params);\n if (!parsedReturns.success) {\n throw new ZodError([makeReturnsIssue(result, parsedReturns.error)]);\n }\n return parsedReturns.data;\n });\n }\n }\n parameters() {\n return this._def.args;\n }\n returnType() {\n return this._def.returns;\n }\n args(...items) {\n return new ZodFunction({\n ...this._def,\n args: ZodTuple.create(items).rest(ZodUnknown.create()),\n });\n }\n returns(returnType) {\n return new ZodFunction({\n ...this._def,\n returns: returnType,\n });\n }\n implement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n strictImplement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n static create(args, returns, params) {\n return new ZodFunction({\n args: (args ? args : ZodTuple.create([]).rest(ZodUnknown.create())),\n returns: returns || ZodUnknown.create(),\n typeName: ZodFirstPartyTypeKind.ZodFunction,\n ...processCreateParams(params),\n });\n }\n}\nexport class ZodLazy extends ZodType {\n get schema() {\n return this._def.getter();\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const lazySchema = this._def.getter();\n return lazySchema._parse({ data: ctx.data, path: ctx.path, parent: ctx });\n }\n}\nZodLazy.create = (getter, params) => {\n return new ZodLazy({\n getter: getter,\n typeName: ZodFirstPartyTypeKind.ZodLazy,\n ...processCreateParams(params),\n });\n};\nexport class ZodLiteral extends ZodType {\n _parse(input) {\n if (input.data !== this._def.value) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_literal,\n expected: this._def.value,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n get value() {\n return this._def.value;\n }\n}\nZodLiteral.create = (value, params) => {\n return new ZodLiteral({\n value: value,\n typeName: ZodFirstPartyTypeKind.ZodLiteral,\n ...processCreateParams(params),\n });\n};\nfunction createZodEnum(values, params) {\n return new ZodEnum({\n values,\n typeName: ZodFirstPartyTypeKind.ZodEnum,\n ...processCreateParams(params),\n });\n}\nexport class ZodEnum extends ZodType {\n _parse(input) {\n if (typeof input.data !== \"string\") {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!this._cache) {\n this._cache = new Set(this._def.values);\n }\n if (!this._cache.has(input.data)) {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get options() {\n return this._def.values;\n }\n get enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Values() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n extract(values, newDef = this._def) {\n return ZodEnum.create(values, {\n ...this._def,\n ...newDef,\n });\n }\n exclude(values, newDef = this._def) {\n return ZodEnum.create(this.options.filter((opt) => !values.includes(opt)), {\n ...this._def,\n ...newDef,\n });\n }\n}\nZodEnum.create = createZodEnum;\nexport class ZodNativeEnum extends ZodType {\n _parse(input) {\n const nativeEnumValues = util.getValidEnumValues(this._def.values);\n const ctx = this._getOrReturnCtx(input);\n if (ctx.parsedType !== ZodParsedType.string && ctx.parsedType !== ZodParsedType.number) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!this._cache) {\n this._cache = new Set(util.getValidEnumValues(this._def.values));\n }\n if (!this._cache.has(input.data)) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get enum() {\n return this._def.values;\n }\n}\nZodNativeEnum.create = (values, params) => {\n return new ZodNativeEnum({\n values: values,\n typeName: ZodFirstPartyTypeKind.ZodNativeEnum,\n ...processCreateParams(params),\n });\n};\nexport class ZodPromise extends ZodType {\n unwrap() {\n return this._def.type;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.promise && ctx.common.async === false) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.promise,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const promisified = ctx.parsedType === ZodParsedType.promise ? ctx.data : Promise.resolve(ctx.data);\n return OK(promisified.then((data) => {\n return this._def.type.parseAsync(data, {\n path: ctx.path,\n errorMap: ctx.common.contextualErrorMap,\n });\n }));\n }\n}\nZodPromise.create = (schema, params) => {\n return new ZodPromise({\n type: schema,\n typeName: ZodFirstPartyTypeKind.ZodPromise,\n ...processCreateParams(params),\n });\n};\nexport class ZodEffects extends ZodType {\n innerType() {\n return this._def.schema;\n }\n sourceType() {\n return this._def.schema._def.typeName === ZodFirstPartyTypeKind.ZodEffects\n ? this._def.schema.sourceType()\n : this._def.schema;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const effect = this._def.effect || null;\n const checkCtx = {\n addIssue: (arg) => {\n addIssueToContext(ctx, arg);\n if (arg.fatal) {\n status.abort();\n }\n else {\n status.dirty();\n }\n },\n get path() {\n return ctx.path;\n },\n };\n checkCtx.addIssue = checkCtx.addIssue.bind(checkCtx);\n if (effect.type === \"preprocess\") {\n const processed = effect.transform(ctx.data, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(processed).then(async (processed) => {\n if (status.value === \"aborted\")\n return INVALID;\n const result = await this._def.schema._parseAsync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n });\n }\n else {\n if (status.value === \"aborted\")\n return INVALID;\n const result = this._def.schema._parseSync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n }\n }\n if (effect.type === \"refinement\") {\n const executeRefinement = (acc) => {\n const result = effect.refinement(acc, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(result);\n }\n if (result instanceof Promise) {\n throw new Error(\"Async refinement encountered during synchronous parse operation. Use .parseAsync instead.\");\n }\n return acc;\n };\n if (ctx.common.async === false) {\n const inner = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n // return value is ignored\n executeRefinement(inner.value);\n return { status: status.value, value: inner.value };\n }\n else {\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((inner) => {\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n return executeRefinement(inner.value).then(() => {\n return { status: status.value, value: inner.value };\n });\n });\n }\n }\n if (effect.type === \"transform\") {\n if (ctx.common.async === false) {\n const base = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (!isValid(base))\n return INVALID;\n const result = effect.transform(base.value, checkCtx);\n if (result instanceof Promise) {\n throw new Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);\n }\n return { status: status.value, value: result };\n }\n else {\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((base) => {\n if (!isValid(base))\n return INVALID;\n return Promise.resolve(effect.transform(base.value, checkCtx)).then((result) => ({\n status: status.value,\n value: result,\n }));\n });\n }\n }\n util.assertNever(effect);\n }\n}\nZodEffects.create = (schema, effect, params) => {\n return new ZodEffects({\n schema,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect,\n ...processCreateParams(params),\n });\n};\nZodEffects.createWithPreprocess = (preprocess, schema, params) => {\n return new ZodEffects({\n schema,\n effect: { type: \"preprocess\", transform: preprocess },\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n ...processCreateParams(params),\n });\n};\nexport { ZodEffects as ZodTransformer };\nexport class ZodOptional extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.undefined) {\n return OK(undefined);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodOptional.create = (type, params) => {\n return new ZodOptional({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodOptional,\n ...processCreateParams(params),\n });\n};\nexport class ZodNullable extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.null) {\n return OK(null);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodNullable.create = (type, params) => {\n return new ZodNullable({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodNullable,\n ...processCreateParams(params),\n });\n};\nexport class ZodDefault extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n let data = ctx.data;\n if (ctx.parsedType === ZodParsedType.undefined) {\n data = this._def.defaultValue();\n }\n return this._def.innerType._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n removeDefault() {\n return this._def.innerType;\n }\n}\nZodDefault.create = (type, params) => {\n return new ZodDefault({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n defaultValue: typeof params.default === \"function\" ? params.default : () => params.default,\n ...processCreateParams(params),\n });\n};\nexport class ZodCatch extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n // newCtx is used to not collect issues from inner types in ctx\n const newCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n };\n const result = this._def.innerType._parse({\n data: newCtx.data,\n path: newCtx.path,\n parent: {\n ...newCtx,\n },\n });\n if (isAsync(result)) {\n return result.then((result) => {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n });\n }\n else {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n }\n }\n removeCatch() {\n return this._def.innerType;\n }\n}\nZodCatch.create = (type, params) => {\n return new ZodCatch({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n catchValue: typeof params.catch === \"function\" ? params.catch : () => params.catch,\n ...processCreateParams(params),\n });\n};\nexport class ZodNaN extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.nan) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.nan,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n}\nZodNaN.create = (params) => {\n return new ZodNaN({\n typeName: ZodFirstPartyTypeKind.ZodNaN,\n ...processCreateParams(params),\n });\n};\nexport const BRAND = Symbol(\"zod_brand\");\nexport class ZodBranded extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const data = ctx.data;\n return this._def.type._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n unwrap() {\n return this._def.type;\n }\n}\nexport class ZodPipeline extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.common.async) {\n const handleAsync = async () => {\n const inResult = await this._def.in._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return DIRTY(inResult.value);\n }\n else {\n return this._def.out._parseAsync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n };\n return handleAsync();\n }\n else {\n const inResult = this._def.in._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return {\n status: \"dirty\",\n value: inResult.value,\n };\n }\n else {\n return this._def.out._parseSync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n }\n static create(a, b) {\n return new ZodPipeline({\n in: a,\n out: b,\n typeName: ZodFirstPartyTypeKind.ZodPipeline,\n });\n }\n}\nexport class ZodReadonly extends ZodType {\n _parse(input) {\n const result = this._def.innerType._parse(input);\n const freeze = (data) => {\n if (isValid(data)) {\n data.value = Object.freeze(data.value);\n }\n return data;\n };\n return isAsync(result) ? result.then((data) => freeze(data)) : freeze(result);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodReadonly.create = (type, params) => {\n return new ZodReadonly({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodReadonly,\n ...processCreateParams(params),\n });\n};\n////////////////////////////////////////\n////////////////////////////////////////\n////////// //////////\n////////// z.custom //////////\n////////// //////////\n////////////////////////////////////////\n////////////////////////////////////////\nfunction cleanParams(params, data) {\n const p = typeof params === \"function\" ? params(data) : typeof params === \"string\" ? { message: params } : params;\n const p2 = typeof p === \"string\" ? { message: p } : p;\n return p2;\n}\nexport function custom(check, _params = {}, \n/**\n * @deprecated\n *\n * Pass `fatal` into the params object instead:\n *\n * ```ts\n * z.string().custom((val) => val.length > 5, { fatal: false })\n * ```\n *\n */\nfatal) {\n if (check)\n return ZodAny.create().superRefine((data, ctx) => {\n const r = check(data);\n if (r instanceof Promise) {\n return r.then((r) => {\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = params.fatal ?? fatal ?? true;\n ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n }\n });\n }\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = params.fatal ?? fatal ?? true;\n ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n }\n return;\n });\n return ZodAny.create();\n}\nexport { ZodType as Schema, ZodType as ZodSchema };\nexport const late = {\n object: ZodObject.lazycreate,\n};\nexport var ZodFirstPartyTypeKind;\n(function (ZodFirstPartyTypeKind) {\n ZodFirstPartyTypeKind[\"ZodString\"] = \"ZodString\";\n ZodFirstPartyTypeKind[\"ZodNumber\"] = \"ZodNumber\";\n ZodFirstPartyTypeKind[\"ZodNaN\"] = \"ZodNaN\";\n ZodFirstPartyTypeKind[\"ZodBigInt\"] = \"ZodBigInt\";\n ZodFirstPartyTypeKind[\"ZodBoolean\"] = \"ZodBoolean\";\n ZodFirstPartyTypeKind[\"ZodDate\"] = \"ZodDate\";\n ZodFirstPartyTypeKind[\"ZodSymbol\"] = \"ZodSymbol\";\n ZodFirstPartyTypeKind[\"ZodUndefined\"] = \"ZodUndefined\";\n ZodFirstPartyTypeKind[\"ZodNull\"] = \"ZodNull\";\n ZodFirstPartyTypeKind[\"ZodAny\"] = \"ZodAny\";\n ZodFirstPartyTypeKind[\"ZodUnknown\"] = \"ZodUnknown\";\n ZodFirstPartyTypeKind[\"ZodNever\"] = \"ZodNever\";\n ZodFirstPartyTypeKind[\"ZodVoid\"] = \"ZodVoid\";\n ZodFirstPartyTypeKind[\"ZodArray\"] = \"ZodArray\";\n ZodFirstPartyTypeKind[\"ZodObject\"] = \"ZodObject\";\n ZodFirstPartyTypeKind[\"ZodUnion\"] = \"ZodUnion\";\n ZodFirstPartyTypeKind[\"ZodDiscriminatedUnion\"] = \"ZodDiscriminatedUnion\";\n ZodFirstPartyTypeKind[\"ZodIntersection\"] = \"ZodIntersection\";\n ZodFirstPartyTypeKind[\"ZodTuple\"] = \"ZodTuple\";\n ZodFirstPartyTypeKind[\"ZodRecord\"] = \"ZodRecord\";\n ZodFirstPartyTypeKind[\"ZodMap\"] = \"ZodMap\";\n ZodFirstPartyTypeKind[\"ZodSet\"] = \"ZodSet\";\n ZodFirstPartyTypeKind[\"ZodFunction\"] = \"ZodFunction\";\n ZodFirstPartyTypeKind[\"ZodLazy\"] = \"ZodLazy\";\n ZodFirstPartyTypeKind[\"ZodLiteral\"] = \"ZodLiteral\";\n ZodFirstPartyTypeKind[\"ZodEnum\"] = \"ZodEnum\";\n ZodFirstPartyTypeKind[\"ZodEffects\"] = \"ZodEffects\";\n ZodFirstPartyTypeKind[\"ZodNativeEnum\"] = \"ZodNativeEnum\";\n ZodFirstPartyTypeKind[\"ZodOptional\"] = \"ZodOptional\";\n ZodFirstPartyTypeKind[\"ZodNullable\"] = \"ZodNullable\";\n ZodFirstPartyTypeKind[\"ZodDefault\"] = \"ZodDefault\";\n ZodFirstPartyTypeKind[\"ZodCatch\"] = \"ZodCatch\";\n ZodFirstPartyTypeKind[\"ZodPromise\"] = \"ZodPromise\";\n ZodFirstPartyTypeKind[\"ZodBranded\"] = \"ZodBranded\";\n ZodFirstPartyTypeKind[\"ZodPipeline\"] = \"ZodPipeline\";\n ZodFirstPartyTypeKind[\"ZodReadonly\"] = \"ZodReadonly\";\n})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));\n// requires TS 4.4+\nclass Class {\n constructor(..._) { }\n}\nconst instanceOfType = (\n// const instanceOfType = any>(\ncls, params = {\n message: `Input not instance of ${cls.name}`,\n}) => custom((data) => data instanceof cls, params);\nconst stringType = ZodString.create;\nconst numberType = ZodNumber.create;\nconst nanType = ZodNaN.create;\nconst bigIntType = ZodBigInt.create;\nconst booleanType = ZodBoolean.create;\nconst dateType = ZodDate.create;\nconst symbolType = ZodSymbol.create;\nconst undefinedType = ZodUndefined.create;\nconst nullType = ZodNull.create;\nconst anyType = ZodAny.create;\nconst unknownType = ZodUnknown.create;\nconst neverType = ZodNever.create;\nconst voidType = ZodVoid.create;\nconst arrayType = ZodArray.create;\nconst objectType = ZodObject.create;\nconst strictObjectType = ZodObject.strictCreate;\nconst unionType = ZodUnion.create;\nconst discriminatedUnionType = ZodDiscriminatedUnion.create;\nconst intersectionType = ZodIntersection.create;\nconst tupleType = ZodTuple.create;\nconst recordType = ZodRecord.create;\nconst mapType = ZodMap.create;\nconst setType = ZodSet.create;\nconst functionType = ZodFunction.create;\nconst lazyType = ZodLazy.create;\nconst literalType = ZodLiteral.create;\nconst enumType = ZodEnum.create;\nconst nativeEnumType = ZodNativeEnum.create;\nconst promiseType = ZodPromise.create;\nconst effectsType = ZodEffects.create;\nconst optionalType = ZodOptional.create;\nconst nullableType = ZodNullable.create;\nconst preprocessType = ZodEffects.createWithPreprocess;\nconst pipelineType = ZodPipeline.create;\nconst ostring = () => stringType().optional();\nconst onumber = () => numberType().optional();\nconst oboolean = () => booleanType().optional();\nexport const coerce = {\n string: ((arg) => ZodString.create({ ...arg, coerce: true })),\n number: ((arg) => ZodNumber.create({ ...arg, coerce: true })),\n boolean: ((arg) => ZodBoolean.create({\n ...arg,\n coerce: true,\n })),\n bigint: ((arg) => ZodBigInt.create({ ...arg, coerce: true })),\n date: ((arg) => ZodDate.create({ ...arg, coerce: true })),\n};\nexport { anyType as any, arrayType as array, bigIntType as bigint, booleanType as boolean, dateType as date, discriminatedUnionType as discriminatedUnion, effectsType as effect, enumType as enum, functionType as function, instanceOfType as instanceof, intersectionType as intersection, lazyType as lazy, literalType as literal, mapType as map, nanType as nan, nativeEnumType as nativeEnum, neverType as never, nullType as null, nullableType as nullable, numberType as number, objectType as object, oboolean, onumber, optionalType as optional, ostring, pipelineType as pipeline, preprocessType as preprocess, promiseType as promise, recordType as record, setType as set, strictObjectType as strictObject, stringType as string, symbolType as symbol, effectsType as transformer, tupleType as tuple, undefinedType as undefined, unionType as union, unknownType as unknown, voidType as void, };\nexport const NEVER = INVALID;\n","export type ErrorOptions = { cause?: unknown }\n\nexport const ERR_JWKS_NO_MATCHING_KEY = 'ERR_JWKS_NO_MATCHING_KEY'\nexport const ERR_JWK_INVALID = 'ERR_JWK_INVALID'\nexport const ERR_JWK_NOT_FOUND = 'ERR_JWK_NOT_FOUND'\nexport const ERR_JWT_INVALID = 'ERR_JWT_INVALID'\nexport const ERR_JWT_CREATE = 'ERR_JWT_CREATE'\nexport const ERR_JWT_VERIFY = 'ERR_JWT_VERIFY'\n\nexport class JwkError extends TypeError {\n constructor(\n message = 'JWK error',\n public readonly code = ERR_JWK_INVALID,\n options?: ErrorOptions,\n ) {\n super(message, options)\n }\n}\n\nexport class JwtCreateError extends Error {\n constructor(\n message = 'Unable to create JWT',\n public readonly code = ERR_JWT_CREATE,\n options?: ErrorOptions,\n ) {\n super(message, options)\n }\n\n static from(cause: unknown, code?: string, message?: string): JwtCreateError {\n if (cause instanceof JwtCreateError) return cause\n if (cause instanceof JwkError) {\n return new JwtCreateError(message, cause.code, { cause })\n }\n\n return new JwtCreateError(message, code, { cause })\n }\n}\n\nexport class JwtVerifyError extends Error {\n constructor(\n message = 'Invalid JWT',\n public readonly code = ERR_JWT_VERIFY,\n options?: ErrorOptions,\n ) {\n super(message, options)\n }\n\n static from(cause: unknown, code?: string, message?: string): JwtVerifyError {\n if (cause instanceof JwtVerifyError) return cause\n if (cause instanceof JwkError) {\n return new JwtVerifyError(message, cause.code, { cause })\n }\n\n return new JwtVerifyError(message, code, { cause })\n }\n}\n","export const empty = new Uint8Array(0)\n\nexport function toHex (d: Uint8Array): string {\n return d.reduce((hex, byte) => hex + byte.toString(16).padStart(2, '0'), '')\n}\n\nexport function fromHex (hex: string): Uint8Array {\n const hexes = hex.match(/../g)\n return hexes != null ? new Uint8Array(hexes.map(b => parseInt(b, 16))) : empty\n}\n\nexport function equals (aa: Uint8Array, bb: Uint8Array): boolean {\n if (aa === bb) { return true }\n if (aa.byteLength !== bb.byteLength) {\n return false\n }\n\n for (let ii = 0; ii < aa.byteLength; ii++) {\n if (aa[ii] !== bb[ii]) {\n return false\n }\n }\n\n return true\n}\n\nexport function coerce (o: ArrayBufferView | ArrayBuffer | Uint8Array): Uint8Array {\n if (o instanceof Uint8Array && o.constructor.name === 'Uint8Array') { return o }\n if (o instanceof ArrayBuffer) { return new Uint8Array(o) }\n if (ArrayBuffer.isView(o)) {\n return new Uint8Array(o.buffer, o.byteOffset, o.byteLength)\n }\n throw new Error('Unknown type, must be binary type')\n}\n\nexport function isBinary (o: unknown): o is ArrayBuffer | ArrayBufferView {\n return o instanceof ArrayBuffer || ArrayBuffer.isView(o)\n}\n\nexport function fromString (str: string): Uint8Array {\n return new TextEncoder().encode(str)\n}\n\nexport function toString (b: Uint8Array): string {\n return new TextDecoder().decode(b)\n}\n","/* eslint-disable */\n// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\n/**\n * @param {string} ALPHABET\n * @param {any} name\n */\nfunction base (ALPHABET, name) {\n if (ALPHABET.length >= 255) { throw new TypeError('Alphabet too long') }\n var BASE_MAP = new Uint8Array(256);\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255;\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i);\n var xc = x.charCodeAt(0);\n if (BASE_MAP[xc] !== 255) { throw new TypeError(x + ' is ambiguous') }\n BASE_MAP[xc] = i;\n }\n var BASE = ALPHABET.length;\n var LEADER = ALPHABET.charAt(0);\n var FACTOR = Math.log(BASE) / Math.log(256); // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE); // log(256) / log(BASE), rounded up\n /**\n * @param {any[] | Iterable} source\n */\n function encode (source) {\n // @ts-ignore\n if (source instanceof Uint8Array) ; else if (ArrayBuffer.isView(source)) {\n source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength);\n } else if (Array.isArray(source)) {\n source = Uint8Array.from(source);\n }\n if (!(source instanceof Uint8Array)) { throw new TypeError('Expected Uint8Array') }\n if (source.length === 0) { return '' }\n // Skip & count leading zeroes.\n var zeroes = 0;\n var length = 0;\n var pbegin = 0;\n var pend = source.length;\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++;\n zeroes++;\n }\n // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0;\n var b58 = new Uint8Array(size);\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin];\n // Apply \"b58 = b58 * 256 + ch\".\n var i = 0;\n for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n carry += (256 * b58[it1]) >>> 0;\n b58[it1] = (carry % BASE) >>> 0;\n carry = (carry / BASE) >>> 0;\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i;\n pbegin++;\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length;\n while (it2 !== size && b58[it2] === 0) {\n it2++;\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes);\n for (; it2 < size; ++it2) { str += ALPHABET.charAt(b58[it2]); }\n return str\n }\n /**\n * @param {string | string[]} source\n */\n function decodeUnsafe (source) {\n if (typeof source !== 'string') { throw new TypeError('Expected String') }\n if (source.length === 0) { return new Uint8Array() }\n var psz = 0;\n // Skip leading spaces.\n if (source[psz] === ' ') { return }\n // Skip and count leading '1's.\n var zeroes = 0;\n var length = 0;\n while (source[psz] === LEADER) {\n zeroes++;\n psz++;\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0; // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size);\n // Process the characters.\n while (source[psz]) {\n // Decode character\n var carry = BASE_MAP[source.charCodeAt(psz)];\n // Invalid character\n if (carry === 255) { return }\n var i = 0;\n for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (BASE * b256[it3]) >>> 0;\n b256[it3] = (carry % 256) >>> 0;\n carry = (carry / 256) >>> 0;\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i;\n psz++;\n }\n // Skip trailing spaces.\n if (source[psz] === ' ') { return }\n // Skip leading zeroes in b256.\n var it4 = size - length;\n while (it4 !== size && b256[it4] === 0) {\n it4++;\n }\n var vch = new Uint8Array(zeroes + (size - it4));\n var j = zeroes;\n while (it4 !== size) {\n vch[j++] = b256[it4++];\n }\n return vch\n }\n /**\n * @param {string | string[]} string\n */\n function decode (string) {\n var buffer = decodeUnsafe(string);\n if (buffer) { return buffer }\n throw new Error(`Non-${name} character`)\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n }\n}\nvar src = base;\n\nvar _brrp__multiformats_scope_baseX = src;\n\nexport default _brrp__multiformats_scope_baseX;\n","import { coerce } from '../bytes.js'\nimport basex from '../vendor/base-x.js'\nimport type { BaseCodec, BaseDecoder, BaseEncoder, CombobaseDecoder, Multibase, MultibaseCodec, MultibaseDecoder, MultibaseEncoder, UnibaseDecoder } from './interface.js'\n\ninterface EncodeFn { (bytes: Uint8Array): string }\ninterface DecodeFn { (text: string): Uint8Array }\n\n/**\n * Class represents both BaseEncoder and MultibaseEncoder meaning it\n * can be used to encode to multibase or base encode without multibase\n * prefix.\n */\nclass Encoder implements MultibaseEncoder, BaseEncoder {\n readonly name: Base\n readonly prefix: Prefix\n readonly baseEncode: EncodeFn\n\n constructor (name: Base, prefix: Prefix, baseEncode: EncodeFn) {\n this.name = name\n this.prefix = prefix\n this.baseEncode = baseEncode\n }\n\n encode (bytes: Uint8Array): Multibase {\n if (bytes instanceof Uint8Array) {\n return `${this.prefix}${this.baseEncode(bytes)}`\n } else {\n throw Error('Unknown type, must be binary type')\n }\n }\n}\n\n/**\n * Class represents both BaseDecoder and MultibaseDecoder so it could be used\n * to decode multibases (with matching prefix) or just base decode strings\n * with corresponding base encoding.\n */\nclass Decoder implements MultibaseDecoder, UnibaseDecoder, BaseDecoder {\n readonly name: Base\n readonly prefix: Prefix\n readonly baseDecode: DecodeFn\n private readonly prefixCodePoint: number\n\n constructor (name: Base, prefix: Prefix, baseDecode: DecodeFn) {\n this.name = name\n this.prefix = prefix\n const prefixCodePoint = prefix.codePointAt(0)\n /* c8 ignore next 3 */\n if (prefixCodePoint === undefined) {\n throw new Error('Invalid prefix character')\n }\n this.prefixCodePoint = prefixCodePoint\n this.baseDecode = baseDecode\n }\n\n decode (text: string): Uint8Array {\n if (typeof text === 'string') {\n if (text.codePointAt(0) !== this.prefixCodePoint) {\n throw Error(`Unable to decode multibase string ${JSON.stringify(text)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`)\n }\n return this.baseDecode(text.slice(this.prefix.length))\n } else {\n throw Error('Can only multibase decode strings')\n }\n }\n\n or (decoder: UnibaseDecoder | ComposedDecoder): ComposedDecoder {\n return or(this, decoder)\n }\n}\n\ntype Decoders = Record>\n\nclass ComposedDecoder implements MultibaseDecoder, CombobaseDecoder {\n readonly decoders: Decoders\n\n constructor (decoders: Decoders) {\n this.decoders = decoders\n }\n\n or (decoder: UnibaseDecoder | ComposedDecoder): ComposedDecoder {\n return or(this, decoder)\n }\n\n decode (input: string): Uint8Array {\n const prefix = input[0] as Prefix\n const decoder = this.decoders[prefix]\n if (decoder != null) {\n return decoder.decode(input)\n } else {\n throw RangeError(`Unable to decode multibase string ${JSON.stringify(input)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)\n }\n }\n}\n\nexport function or (left: UnibaseDecoder | CombobaseDecoder, right: UnibaseDecoder | CombobaseDecoder): ComposedDecoder {\n return new ComposedDecoder({\n ...(left.decoders ?? { [(left as UnibaseDecoder).prefix]: left }),\n ...(right.decoders ?? { [(right as UnibaseDecoder).prefix]: right })\n } as Decoders)\n}\n\nexport class Codec implements MultibaseCodec, MultibaseEncoder, MultibaseDecoder, BaseCodec, BaseEncoder, BaseDecoder {\n readonly name: Base\n readonly prefix: Prefix\n readonly baseEncode: EncodeFn\n readonly baseDecode: DecodeFn\n readonly encoder: Encoder\n readonly decoder: Decoder\n\n constructor (name: Base, prefix: Prefix, baseEncode: EncodeFn, baseDecode: DecodeFn) {\n this.name = name\n this.prefix = prefix\n this.baseEncode = baseEncode\n this.baseDecode = baseDecode\n this.encoder = new Encoder(name, prefix, baseEncode)\n this.decoder = new Decoder(name, prefix, baseDecode)\n }\n\n encode (input: Uint8Array): string {\n return this.encoder.encode(input)\n }\n\n decode (input: string): Uint8Array {\n return this.decoder.decode(input)\n }\n}\n\nexport function from ({ name, prefix, encode, decode }: { name: Base, prefix: Prefix, encode: EncodeFn, decode: DecodeFn }): Codec {\n return new Codec(name, prefix, encode, decode)\n}\n\nexport function baseX ({ name, prefix, alphabet }: { name: Base, prefix: Prefix, alphabet: string }): Codec {\n const { encode, decode } = basex(alphabet, name)\n return from({\n prefix,\n name,\n encode,\n decode: (text: string): Uint8Array => coerce(decode(text))\n })\n}\n\nfunction decode (string: string, alphabetIdx: Record, bitsPerChar: number, name: string): Uint8Array {\n // Count the padding bytes:\n let end = string.length\n while (string[end - 1] === '=') {\n --end\n }\n\n // Allocate the output:\n const out = new Uint8Array((end * bitsPerChar / 8) | 0)\n\n // Parse the data:\n let bits = 0 // Number of bits currently in the buffer\n let buffer = 0 // Bits waiting to be written out, MSB first\n let written = 0 // Next byte to write\n for (let i = 0; i < end; ++i) {\n // Read one character from the string:\n const value = alphabetIdx[string[i]]\n if (value === undefined) {\n throw new SyntaxError(`Non-${name} character`)\n }\n\n // Append the bits to the buffer:\n buffer = (buffer << bitsPerChar) | value\n bits += bitsPerChar\n\n // Write out some bits if the buffer has a byte's worth:\n if (bits >= 8) {\n bits -= 8\n out[written++] = 0xff & (buffer >> bits)\n }\n }\n\n // Verify that we have received just enough bits:\n if (bits >= bitsPerChar || (0xff & (buffer << (8 - bits))) !== 0) {\n throw new SyntaxError('Unexpected end of data')\n }\n\n return out\n}\n\nfunction encode (data: Uint8Array, alphabet: string, bitsPerChar: number): string {\n const pad = alphabet[alphabet.length - 1] === '='\n const mask = (1 << bitsPerChar) - 1\n let out = ''\n\n let bits = 0 // Number of bits currently in the buffer\n let buffer = 0 // Bits waiting to be written out, MSB first\n for (let i = 0; i < data.length; ++i) {\n // Slurp data into the buffer:\n buffer = (buffer << 8) | data[i]\n bits += 8\n\n // Write out as much as we can:\n while (bits > bitsPerChar) {\n bits -= bitsPerChar\n out += alphabet[mask & (buffer >> bits)]\n }\n }\n\n // Partial character:\n if (bits !== 0) {\n out += alphabet[mask & (buffer << (bitsPerChar - bits))]\n }\n\n // Add padding characters until we hit a byte boundary:\n if (pad) {\n while (((out.length * bitsPerChar) & 7) !== 0) {\n out += '='\n }\n }\n\n return out\n}\n\nfunction createAlphabetIdx (alphabet: string): Record {\n // Build the character lookup table:\n const alphabetIdx: Record = {}\n for (let i = 0; i < alphabet.length; ++i) {\n alphabetIdx[alphabet[i]] = i\n }\n return alphabetIdx\n}\n\n/**\n * RFC4648 Factory\n */\nexport function rfc4648 ({ name, prefix, bitsPerChar, alphabet }: { name: Base, prefix: Prefix, bitsPerChar: number, alphabet: string }): Codec {\n const alphabetIdx = createAlphabetIdx(alphabet)\n return from({\n prefix,\n name,\n encode (input: Uint8Array): string {\n return encode(input, alphabet, bitsPerChar)\n },\n decode (input: string): Uint8Array {\n return decode(input, alphabetIdx, bitsPerChar, name)\n }\n })\n}\n","import { rfc4648 } from './base.js'\n\nexport const base64 = rfc4648({\n prefix: 'm',\n name: 'base64',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n bitsPerChar: 6\n})\n\nexport const base64pad = rfc4648({\n prefix: 'M',\n name: 'base64pad',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\n bitsPerChar: 6\n})\n\nexport const base64url = rfc4648({\n prefix: 'u',\n name: 'base64url',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_',\n bitsPerChar: 6\n})\n\nexport const base64urlpad = rfc4648({\n prefix: 'U',\n name: 'base64urlpad',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=',\n bitsPerChar: 6\n})\n","import { base64url } from 'multiformats/bases/base64'\nimport { type RefinementCtx, ZodIssueCode } from 'zod'\n\nexport type Simplify = { [K in keyof T]: T[K] } & {}\nexport type Override = Simplify>\n\nexport type RequiredKey = Simplify<\n T & {\n [L in K]-?: unknown extends T[L]\n ? NonNullable | null\n : Exclude\n }\n>\n\nexport const isDefined = (i: T | undefined): i is T => i !== undefined\n\nexport const preferredOrderCmp =\n (order: readonly T[]) =>\n (a: T, b: T) => {\n const aIdx = order.indexOf(a)\n const bIdx = order.indexOf(b)\n if (aIdx === bIdx) return 0\n if (aIdx === -1) return 1\n if (bIdx === -1) return -1\n return aIdx - bIdx\n }\n\n/* eslint-disable @typescript-eslint/no-unused-vars -- `v` is used at runtime in the returned type guards; v8 false-positive */\nexport function matchesAny(\n value: null | undefined | T | readonly T[],\n): (v: unknown) => v is T {\n return value == null\n ? (v): v is T => true\n : Array.isArray(value)\n ? (v): v is T => value.includes(v)\n : (v): v is T => v === value\n}\n/* eslint-enable @typescript-eslint/no-unused-vars */\n\n/**\n * Decorator to cache the result of a getter on a class instance.\n */\nexport const cachedGetter = (\n target: (this: T) => V,\n _context: ClassGetterDecoratorContext,\n) => {\n return function (this: T) {\n const value = target.call(this)\n Object.defineProperty(this, target.name, {\n get: () => value,\n enumerable: true,\n configurable: true,\n })\n return value\n }\n}\n\nconst decoder = new TextDecoder()\nexport function parseB64uJson(input: string): unknown {\n const inputBytes = base64url.baseDecode(input)\n const json = decoder.decode(inputBytes)\n return JSON.parse(json)\n}\n\n/**\n * @example\n * ```ts\n * // jwtSchema will only allow base64url chars & \".\" (dot)\n * const jwtSchema = z.string().superRefine(jwtCharsRefinement)\n * ```\n */\nexport const jwtCharsRefinement = (data: string, ctx: RefinementCtx): void => {\n // Note: this is a hot path, let's avoid using a RegExp\n let char\n\n for (let i = 0; i < data.length; i++) {\n char = data.charCodeAt(i)\n\n if (\n // Base64 URL encoding (most frequent)\n (65 <= char && char <= 90) || // A-Z\n (97 <= char && char <= 122) || // a-z\n (48 <= char && char <= 57) || // 0-9\n char === 45 || // -\n char === 95 || // _\n // Boundary (least frequent, check last)\n char === 46 // .\n ) {\n // continue\n } else {\n // Invalid char might be a surrogate pair\n const invalidChar = String.fromCodePoint(data.codePointAt(i)!)\n return ctx.addIssue({\n code: ZodIssueCode.custom,\n message: `Invalid character \"${invalidChar}\" in JWT at position ${i}`,\n })\n }\n }\n}\n\n/**\n * @example\n * ```ts\n * type SegmentedString3 = SegmentedString<3> // `${string}.${string}.${string}`\n * type SegmentedString4 = SegmentedString<4> // `${string}.${string}.${string}.${string}`\n * ```\n *\n * @note\n * This utility only provides one way type safety (A SegmentedString<4> can be\n * assigned to SegmentedString<3> but not vice versa). The purpose of this\n * utility is to improve DX by avoiding as many potential errors as build time.\n * DO NOT rely on this to enforce security or data integrity.\n */\ntype SegmentedString<\n C extends number,\n Acc extends string[] = [string],\n> = Acc['length'] extends C\n ? `${Acc[0]}`\n : `${Acc[0]}.${SegmentedString}`\n\n/**\n * @example\n * ```ts\n * const jwtSchema = z.string().superRefine(segmentedStringRefinementFactory(3))\n * type Jwt = z.infer // `${string}.${string}.${string}`\n * ```\n */\nexport const segmentedStringRefinementFactory = (\n count: C,\n minPartLength = 2,\n) => {\n if (!Number.isFinite(count) || count < 1 || (count | 0) !== count) {\n throw new TypeError(`Count must be a natural number (got ${count})`)\n }\n\n const minTotalLength = count * minPartLength + (count - 1)\n const errorPrefix = `Invalid JWT format`\n\n return (data: string, ctx: RefinementCtx): data is SegmentedString => {\n if (data.length < minTotalLength) {\n ctx.addIssue({\n code: ZodIssueCode.custom,\n message: `${errorPrefix}: too short`,\n })\n return false\n }\n let currentStart = 0\n for (let i = 0; i < count - 1; i++) {\n const nextDot = data.indexOf('.', currentStart)\n if (nextDot === -1) {\n ctx.addIssue({\n code: ZodIssueCode.custom,\n message: `${errorPrefix}: expected ${count} segments, got ${i + 1}`,\n })\n return false\n }\n if (nextDot - currentStart < minPartLength) {\n ctx.addIssue({\n code: ZodIssueCode.custom,\n message: `${errorPrefix}: segment ${i + 1} is too short`,\n })\n return false\n }\n currentStart = nextDot + 1\n }\n if (data.indexOf('.', currentStart) !== -1) {\n ctx.addIssue({\n code: ZodIssueCode.custom,\n message: `${errorPrefix}: too many segments`,\n })\n return false\n }\n if (data.length - currentStart < minPartLength) {\n ctx.addIssue({\n code: ZodIssueCode.custom,\n message: `${errorPrefix}: last segment is too short`,\n })\n return false\n }\n return true\n }\n}\n\nexport function isLastOccurrence<\n T extends number | boolean | string | null | undefined | symbol | bigint,\n>(v: T, i: number, arr: readonly T[]): boolean {\n return arr.indexOf(v, i + 1) === -1\n}\n","import { z } from 'zod'\nimport { isLastOccurrence } from './util.js'\n\nexport const PUBLIC_KEY_USAGE = ['verify', 'encrypt', 'wrapKey'] as const\nexport const publicKeyUsageSchema = z.enum(PUBLIC_KEY_USAGE)\nexport type PublicKeyUsage = (typeof PUBLIC_KEY_USAGE)[number]\nexport function isPublicKeyUsage(usage: unknown): usage is PublicKeyUsage {\n return (PUBLIC_KEY_USAGE as readonly unknown[]).includes(usage)\n}\n\n/**\n * Determines if the given key usage is consistent for \"sig\" (signature) public\n * key use.\n */\nexport function isSigKeyUsage(v: KeyUsage) {\n return v === 'verify'\n}\n\n/**\n * Determines if the given key usage is consistent for \"enc\" (encryption) public\n * key use.\n *\n * > When a key is used to wrap another key and a public key use\n * > designation for the first key is desired, the \"enc\" (encryption)\n * > key use value is used, since key wrapping is a kind of encryption.\n * > The \"enc\" value is also to be used for public keys used for key\n * > agreement operations.\n * @see {@link https://datatracker.ietf.org/doc/html/rfc7517#section-4.2}\n */\nexport function isEncKeyUsage(v: KeyUsage) {\n return v === 'encrypt' || v === 'wrapKey'\n}\n\nexport const PRIVATE_KEY_USAGE = [\n 'sign',\n 'decrypt',\n 'unwrapKey',\n 'deriveKey',\n 'deriveBits',\n] as const\nexport const privateKeyUsageSchema = z.enum(PRIVATE_KEY_USAGE)\nexport type PrivateKeyUsage = (typeof PRIVATE_KEY_USAGE)[number]\nexport function isPrivateKeyUsage(usage: unknown): usage is PrivateKeyUsage {\n return (PRIVATE_KEY_USAGE as readonly unknown[]).includes(usage)\n}\n\nexport const KEY_USAGE = [...PRIVATE_KEY_USAGE, ...PUBLIC_KEY_USAGE] as const\nexport const keyUsageSchema = z.enum(KEY_USAGE)\nexport type KeyUsage = (typeof KEY_USAGE)[number]\n\n/**\n * @see {@link https://datatracker.ietf.org/doc/html/rfc7517#section-4 JSON Web Key (JWK) Format}\n * @see {@link https://www.iana.org/assignments/jose/jose.xhtml#web-key-parameters IANA \"JSON Web Key Parameters\" registry}\n */\nconst jwkBaseSchema = z.object({\n kty: z.string().min(1),\n alg: z.string().min(1).optional(),\n kid: z.string().min(1).optional(),\n use: z.enum(['sig', 'enc']).optional(),\n key_ops: z\n .array(keyUsageSchema)\n .min(1, { message: 'At least one key usage must be specified' })\n // https://datatracker.ietf.org/doc/html/rfc7517#section-4.3\n // > Duplicate key operation values MUST NOT be present in the array.\n .refine((ops) => ops.every(isLastOccurrence), {\n message: 'key_ops must not contain duplicates',\n })\n .optional(),\n\n x5c: z.array(z.string()).optional(), // X.509 Certificate Chain\n x5t: z.string().min(1).optional(), // X.509 Certificate SHA-1 Thumbprint\n 'x5t#S256': z.string().min(1).optional(), // X.509 Certificate SHA-256 Thumbprint\n x5u: z.string().url().optional(), // X.509 URL\n\n // https://www.w3.org/TR/webcrypto/\n ext: z.boolean().optional(), // Extractable\n\n // Federation Historical Keys Response\n // https://openid.net/specs/openid-federation-1_0.html#name-federation-historical-keys-res\n iat: z.number().int().optional(), // Issued At (timestamp)\n exp: z.number().int().optional(), // Expiration Time (timestamp)\n nbf: z.number().int().optional(), // Not Before (timestamp)\n revoked: z // properties of the revocation\n .object({\n revoked_at: z.number().int(),\n reason: z.string().optional(),\n })\n .optional(),\n})\n\nexport type JwkBase = z.infer\n\nconst jwkRsaKeySchema = jwkBaseSchema.extend({\n kty: z.literal('RSA'),\n alg: z\n .enum(['RS256', 'RS384', 'RS512', 'PS256', 'PS384', 'PS512'])\n .optional(),\n\n n: z.string().min(1), // Modulus\n e: z.string().min(1), // Exponent\n\n d: z.string().min(1).optional(), // Private Exponent\n p: z.string().min(1).optional(), // First Prime Factor\n q: z.string().min(1).optional(), // Second Prime Factor\n dp: z.string().min(1).optional(), // First Factor CRT Exponent\n dq: z.string().min(1).optional(), // Second Factor CRT Exponent\n qi: z.string().min(1).optional(), // First CRT Coefficient\n oth: z\n .array(\n z.object({\n r: z.string().optional(),\n d: z.string().optional(),\n t: z.string().optional(),\n }),\n )\n .min(1)\n .optional(), // Other Primes Info\n})\n\nconst jwkEcKeySchema = jwkBaseSchema.extend({\n kty: z.literal('EC'),\n alg: z.enum(['ES256', 'ES384', 'ES512']).optional(),\n crv: z.enum(['P-256', 'P-384', 'P-521']),\n\n x: z.string().min(1),\n y: z.string().min(1),\n\n d: z.string().min(1).optional(), // ECC Private Key\n})\n\nconst jwkEcSecp256k1KeySchema = jwkBaseSchema.extend({\n kty: z.literal('EC'),\n alg: z.enum(['ES256K']).optional(),\n crv: z.enum(['secp256k1']),\n\n x: z.string().min(1),\n y: z.string().min(1),\n\n d: z.string().min(1).optional(), // ECC Private Key\n})\n\nconst jwkOkpKeySchema = jwkBaseSchema.extend({\n kty: z.literal('OKP'),\n alg: z.enum(['EdDSA']).optional(),\n crv: z.enum(['Ed25519', 'Ed448']),\n\n x: z.string().min(1),\n d: z.string().min(1).optional(), // ECC Private Key\n})\n\nconst jwkSymKeySchema = jwkBaseSchema.extend({\n kty: z.literal('oct'), // Octet Sequence (used to represent symmetric keys)\n alg: z.enum(['HS256', 'HS384', 'HS512']).optional(),\n\n k: z.string(), // Key Value (base64url encoded)\n})\n\n/**\n * Zod parser for known JWK types\n */\nexport const jwkSchema = z\n .union([\n jwkRsaKeySchema,\n jwkEcKeySchema,\n jwkEcSecp256k1KeySchema,\n jwkOkpKeySchema,\n jwkSymKeySchema,\n ])\n // @TODO These rules should be applied to jwkBaseSchema, but Zod 3 doesn't\n // support extending refined schemas. Move these to the base schema when we\n // upgrade to Zod 4.\n .refine(\n // https://datatracker.ietf.org/doc/html/rfc7517#section-4.2\n // > The \"use\" (public key use) parameter identifies the intended use of the\n // > public key\n (k): boolean => k.use == null || isPublicJwk(k),\n {\n message: '\"use\" can only be used with public keys',\n path: ['use'],\n },\n )\n .refine(\n (k): boolean => !k.key_ops?.some(isPrivateKeyUsage) || isPrivateJwk(k),\n {\n message: 'private key usage not allowed for public keys',\n path: ['key_ops'],\n },\n )\n .refine(\n // https://datatracker.ietf.org/doc/html/rfc7517#section-4.3\n // > The \"use\" and \"key_ops\" JWK members SHOULD NOT be used together;\n // > however, if both are used, the information they convey MUST be\n // > consistent.\n (k): boolean =>\n k.use == null ||\n k.key_ops == null ||\n (k.use === 'sig' && k.key_ops.every(isSigKeyUsage)) ||\n (k.use === 'enc' && k.key_ops.every(isEncKeyUsage)),\n {\n message: '\"key_ops\" must be consistent with \"use\"',\n path: ['key_ops'],\n },\n )\n\nexport type Jwk = z.output\n\n/** @deprecated use {@link jwkSchema} instead */\nexport const jwkValidator = jwkSchema\n\nexport const jwkPubSchema = jwkSchema\n .refine(hasKid, {\n message: '\"kid\" is required',\n path: ['kid'],\n })\n // @NOTE for legacy reasons, we don't impose the presence of either \"use\" or \"key_ops\"\n .refine(isPublicJwk, {\n message: 'private key not allowed',\n })\n .refine((k): boolean => !k.key_ops || k.key_ops.every(isPublicKeyUsage), {\n message: '\"key_ops\" must not contain private key usage for public keys',\n path: ['key_ops'],\n })\n\nexport type PublicJwk = z.output\n\nexport const jwkPrivateSchema = jwkSchema\n // @NOTE we don't impose the presence of \"kid\"\n .refine(isPrivateJwk, {\n message: 'private key required',\n })\n\nexport type PrivateJwk = z.output\n\nexport function hasKid(\n jwk: J,\n): jwk is J & { kid: NonNullable } {\n return 'kid' in jwk && jwk.kid != null\n}\n\nexport function hasSharedSecretJwk(\n jwk: J,\n): jwk is J & { k: NonNullable } {\n return 'k' in jwk && jwk.k != null\n}\n\nexport function hasPrivateSecretJwk(\n jwk: J,\n): jwk is J & { d: NonNullable } {\n return 'd' in jwk && jwk.d != null\n}\n\nexport function isPrivateJwk(jwk: J) {\n return hasPrivateSecretJwk(jwk) || hasSharedSecretJwk(jwk)\n}\n\nexport function isPublicJwk(\n jwk: J,\n): jwk is Extract<\n Exclude }>,\n { d?: NonNullable }\n> & { d?: never } {\n return !hasPrivateSecretJwk(jwk) && !hasSharedSecretJwk(jwk)\n}\n","import { JwkError } from './errors.js'\nimport { type JwkBase, isEncKeyUsage, isSigKeyUsage } from './jwk.js'\n\n// Copy variable to prevent bundlers from automatically polyfilling \"process\" (e.g. parcel)\nconst { process } = globalThis\nconst IS_NODE_RUNTIME =\n typeof process !== 'undefined' && typeof process?.versions?.node === 'string'\n\nexport function* jwkAlgorithms(jwk: JwkBase): Generator {\n // Ed25519, Ed448, and secp256k1 always have \"alg\"\n\n if (typeof jwk.alg === 'string') {\n yield jwk.alg\n return\n }\n\n switch (jwk.kty) {\n case 'EC': {\n if (jwkSupportsEnc(jwk)) {\n yield 'ECDH-ES'\n yield 'ECDH-ES+A128KW'\n yield 'ECDH-ES+A192KW'\n yield 'ECDH-ES+A256KW'\n }\n\n if (jwkSupportsSig(jwk)) {\n const crv = 'crv' in jwk ? jwk.crv : undefined\n switch (crv) {\n case 'P-256':\n case 'P-384':\n yield `ES${crv.slice(-3)}`\n break\n case 'P-521':\n yield 'ES512'\n break\n case 'secp256k1':\n if (IS_NODE_RUNTIME) yield 'ES256K'\n break\n default:\n throw new JwkError(`Unsupported crv \"${crv}\"`)\n }\n }\n\n return\n }\n\n case 'OKP': {\n if (!jwk.use) throw new JwkError('Missing \"use\" Parameter value')\n yield 'ECDH-ES'\n yield 'ECDH-ES+A128KW'\n yield 'ECDH-ES+A192KW'\n yield 'ECDH-ES+A256KW'\n return\n }\n\n case 'RSA': {\n if (jwkSupportsEnc(jwk)) {\n yield 'RSA-OAEP'\n yield 'RSA-OAEP-256'\n yield 'RSA-OAEP-384'\n yield 'RSA-OAEP-512'\n if (IS_NODE_RUNTIME) yield 'RSA1_5'\n }\n\n if (jwkSupportsSig(jwk)) {\n yield 'PS256'\n yield 'PS384'\n yield 'PS512'\n yield 'RS256'\n yield 'RS384'\n yield 'RS512'\n }\n\n return\n }\n\n case 'oct': {\n if (jwkSupportsEnc(jwk)) {\n yield 'A128GCMKW'\n yield 'A192GCMKW'\n yield 'A256GCMKW'\n yield 'A128KW'\n yield 'A192KW'\n yield 'A256KW'\n }\n\n if (jwkSupportsSig(jwk)) {\n yield 'HS256'\n yield 'HS384'\n yield 'HS512'\n }\n\n return\n }\n\n default:\n throw new JwkError(`Unsupported kty \"${jwk.kty}\"`)\n }\n}\n\nfunction jwkSupportsEnc(jwk: JwkBase): boolean {\n return (\n jwk.key_ops?.some(isEncKeyUsage) ?? (jwk.use == null || jwk.use === 'enc')\n )\n}\n\nfunction jwkSupportsSig(jwk: JwkBase): boolean {\n return (\n jwk.key_ops?.some(isSigKeyUsage) ?? (jwk.use == null || jwk.use === 'sig')\n )\n}\n","import { z } from 'zod'\nimport { jwkPubSchema, jwkSchema } from './jwk.js'\n\n/**\n * JSON Web Key Set schema. The keys set, in this context, represents a\n * collection of JSON Web Keys (JWKs), that can be both public and private.\n */\nexport const jwksSchema = z.object({\n keys: z.array(z.unknown()).transform((input) => {\n // > Implementations SHOULD ignore JWKs within a JWK Set that use \"kty\"\n // > (key type) values that are not understood by them, that are missing\n // > required members, or for which values are out of the supported\n // > ranges.\n return input\n .map((item) => jwkSchema.safeParse(item))\n .filter((res) => res.success)\n .map((res) => res.data)\n }),\n})\n\nexport type Jwks = z.output\n\n/**\n * Public JSON Web Key Set schema.\n */\nexport const jwksPubSchema = z.object({\n keys: z.array(z.unknown()).transform((input) => {\n // > Implementations SHOULD ignore JWKs within a JWK Set that use \"kty\"\n // > (key type) values that are not understood by them, that are missing\n // > required members, or for which values are out of the supported\n // > ranges.\n return input\n .map((item) => jwkPubSchema.safeParse(item))\n .filter((res) => res.success)\n .map((res) => res.data)\n }),\n})\n\nexport type JwksPub = z.output\n","import { z } from 'zod'\nimport { jwkPubSchema } from './jwk.js'\nimport { jwtCharsRefinement, segmentedStringRefinementFactory } from './util.js'\n\nexport const signedJwtSchema = z\n .string()\n .superRefine(jwtCharsRefinement)\n .superRefine(segmentedStringRefinementFactory(3))\n\nexport type SignedJwt = z.infer\nexport const isSignedJwt = (data: unknown): data is SignedJwt =>\n signedJwtSchema.safeParse(data).success\n\nexport const unsignedJwtSchema = z\n .string()\n .superRefine(jwtCharsRefinement)\n .superRefine(segmentedStringRefinementFactory(2))\n\nexport type UnsignedJwt = z.infer\nexport const isUnsignedJwt = (data: unknown): data is UnsignedJwt =>\n unsignedJwtSchema.safeParse(data).success\n\n/**\n * @see {@link https://www.rfc-editor.org/rfc/rfc7515.html#section-4}\n */\nexport const jwtHeaderSchema = z\n .object({\n /** \"alg\" (Algorithm) Header Parameter */\n alg: z.string(),\n /** \"jku\" (JWK Set URL) Header Parameter */\n jku: z.string().url().optional(),\n /** \"jwk\" (JSON Web Key) Header Parameter */\n jwk: z\n .object({\n kty: z.string(),\n crv: z.string().optional(),\n x: z.string().optional(),\n y: z.string().optional(),\n e: z.string().optional(),\n n: z.string().optional(),\n })\n .optional(),\n /** \"kid\" (Key ID) Header Parameter */\n kid: z.string().optional(),\n /** \"x5u\" (X.509 URL) Header Parameter */\n x5u: z.string().optional(),\n /** \"x5c\" (X.509 Certificate Chain) Header Parameter */\n x5c: z.array(z.string()).optional(),\n /** \"x5t\" (X.509 Certificate SHA-1 Thumbprint) Header Parameter */\n x5t: z.string().optional(),\n /** \"x5t#S256\" (X.509 Certificate SHA-256 Thumbprint) Header Parameter */\n 'x5t#S256': z.string().optional(),\n /** \"typ\" (Type) Header Parameter */\n typ: z.string().optional(),\n /** \"cty\" (Content Type) Header Parameter */\n cty: z.string().optional(),\n /** \"crit\" (Critical) Header Parameter */\n crit: z.array(z.string()).optional(),\n })\n .passthrough()\n\nexport type JwtHeader = z.infer\n\n/**\n * @see {@link https://www.rfc-editor.org/rfc/rfc9449.html#section-4.2-4.6}\n * @see {@link https://www.rfc-editor.org/rfc/rfc9110#section-7.1}\n */\nexport const htuSchema = z.string().superRefine((value, ctx) => {\n try {\n const url = new URL(value)\n if (url.protocol !== 'http:' && url.protocol !== 'https:') {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'Only http: and https: protocols are allowed',\n })\n }\n\n if (url.username || url.password) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'Credentials not allowed',\n })\n }\n\n if (url.search) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'Query string not allowed',\n })\n }\n\n if (url.hash) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'Fragment not allowed',\n })\n }\n } catch (err) {\n ctx.addIssue({\n code: z.ZodIssueCode.invalid_string,\n validation: 'url',\n })\n }\n\n return value\n})\n\n// https://www.iana.org/assignments/jwt/jwt.xhtml\nexport const jwtPayloadSchema = z\n .object({\n iss: z.string().optional(),\n aud: z.union([z.string(), z.array(z.string()).nonempty()]).optional(),\n sub: z.string().optional(),\n exp: z.number().int().optional(),\n nbf: z.number().int().optional(),\n iat: z.number().int().optional(),\n jti: z.string().optional(),\n htm: z.string().optional(),\n htu: htuSchema.optional(),\n ath: z.string().optional(),\n acr: z.string().optional(),\n azp: z.string().optional(),\n amr: z.array(z.string()).optional(),\n // https://datatracker.ietf.org/doc/html/rfc7800\n cnf: z\n .object({\n kid: z.string().optional(), // Key ID\n jwk: jwkPubSchema.optional(), // JWK\n jwe: z.string().optional(), // Encrypted key\n jku: z.string().url().optional(), // JWK Set URI (\"kid\" should also be provided)\n\n // https://datatracker.ietf.org/doc/html/rfc9449#section-6.1\n jkt: z.string().optional(),\n\n // https://datatracker.ietf.org/doc/html/rfc8705\n 'x5t#S256': z.string().optional(), // X.509 Certificate SHA-256 Thumbprint\n\n // https://datatracker.ietf.org/doc/html/rfc9203\n osc: z.string().optional(), // OSCORE_Input_Material carrying the parameters for using OSCORE per-message security with implicit key confirmation\n })\n .optional(),\n\n client_id: z.string().optional(),\n\n scope: z.string().optional(),\n nonce: z.string().optional(),\n\n at_hash: z.string().optional(),\n c_hash: z.string().optional(),\n s_hash: z.string().optional(),\n auth_time: z.number().int().optional(),\n\n // https://openid.net/specs/openid-connect-core-1_0.html#StandardClaims\n\n // OpenID: \"profile\" scope\n name: z.string().optional(),\n family_name: z.string().optional(),\n given_name: z.string().optional(),\n middle_name: z.string().optional(),\n nickname: z.string().optional(),\n preferred_username: z.string().optional(),\n gender: z.string().optional(), // OpenID only defines \"male\" and \"female\" without forbidding other values\n picture: z.string().url().optional(),\n profile: z.string().url().optional(),\n website: z.string().url().optional(),\n birthdate: z\n .string()\n .regex(/\\d{4}-\\d{2}-\\d{2}/) // YYYY-MM-DD\n .optional(),\n zoneinfo: z\n .string()\n .regex(/^[A-Za-z0-9_/]+$/)\n .optional(),\n locale: z\n .string()\n .regex(/^[a-z]{2,3}(-[A-Z]{2})?$/)\n .optional(),\n updated_at: z.number().int().optional(),\n\n // OpenID: \"email\" scope\n email: z.string().optional(),\n email_verified: z.boolean().optional(),\n\n // OpenID: \"phone\" scope\n phone_number: z.string().optional(),\n phone_number_verified: z.boolean().optional(),\n\n // OpenID: \"address\" scope\n // https://openid.net/specs/openid-connect-core-1_0.html#AddressClaim\n address: z\n .object({\n formatted: z.string().optional(),\n street_address: z.string().optional(),\n locality: z.string().optional(),\n region: z.string().optional(),\n postal_code: z.string().optional(),\n country: z.string().optional(),\n })\n .optional(),\n\n // https://datatracker.ietf.org/doc/html/rfc9396#section-14.2\n authorization_details: z\n .array(\n z\n .object({\n type: z.string(),\n // https://datatracker.ietf.org/doc/html/rfc9396#section-2.2\n locations: z.array(z.string()).optional(),\n actions: z.array(z.string()).optional(),\n datatypes: z.array(z.string()).optional(),\n identifier: z.string().optional(),\n privileges: z.array(z.string()).optional(),\n })\n .passthrough(),\n )\n .optional(),\n })\n .passthrough()\n\nexport type JwtPayload = z.infer\n","import { ERR_JWT_INVALID, JwtVerifyError } from './errors.js'\nimport {\n type JwtHeader,\n type JwtPayload,\n jwtHeaderSchema,\n jwtPayloadSchema,\n} from './jwt.js'\nimport { parseB64uJson } from './util.js'\n\nexport function unsafeDecodeJwt(jwt: string): {\n header: JwtHeader\n payload: JwtPayload\n} {\n const { 0: headerEnc, 1: payloadEnc, length } = jwt.split('.')\n if (length > 3 || length < 2) {\n throw new JwtVerifyError(undefined, ERR_JWT_INVALID)\n }\n\n const header = jwtHeaderSchema.parse(parseB64uJson(headerEnc!))\n if (length === 2 && header?.alg !== 'none') {\n throw new JwtVerifyError(undefined, ERR_JWT_INVALID)\n }\n\n const payload = jwtPayloadSchema.parse(parseB64uJson(payloadEnc!))\n\n return { header, payload }\n}\n","import { jwkAlgorithms } from './alg.js'\nimport {\n type Jwk,\n type KeyUsage,\n PUBLIC_KEY_USAGE,\n type PrivateJwk,\n type PublicJwk,\n type PublicKeyUsage,\n hasSharedSecretJwk,\n isEncKeyUsage,\n isPrivateJwk,\n isPublicKeyUsage,\n isSigKeyUsage,\n jwkPubSchema,\n jwkSchema,\n} from './jwk.js'\nimport type { VerifyOptions, VerifyResult } from './jwt-verify.js'\nimport type { JwtHeader, JwtPayload, SignedJwt } from './jwt.js'\nimport { cachedGetter } from './util.js'\n\nexport type KeyMatchOptions = {\n usage?: KeyUsage\n kid?: string | string[]\n alg?: string | string[]\n}\n\nexport type ActivityCheckOptions = {\n allowRevoked?: boolean\n clockTolerance?: number\n currentDate?: Date\n}\n\nexport abstract class Key {\n constructor(readonly jwk: Readonly) {}\n\n @cachedGetter\n get isPrivate(): boolean {\n return isPrivateJwk(this.jwk)\n }\n\n @cachedGetter\n get isSymetric(): boolean {\n return hasSharedSecretJwk(this.jwk)\n }\n\n get privateJwk(): Readonly | undefined {\n if (!this.isPrivate) return undefined\n\n return this.jwk as Readonly\n }\n\n @cachedGetter\n get publicJwk(): Readonly | undefined {\n if (this.isSymetric) return undefined\n if (!this.isPrivate) return this.jwk as Readonly\n\n const validated = jwkPubSchema.safeParse({\n ...this.jwk,\n d: undefined,\n k: undefined,\n use: undefined,\n key_ops: buildPublicKeyOps(this.keyOps) ?? PUBLIC_KEY_USAGE,\n })\n\n // One reason why the parsing might fail is if key_ops is empty. This check\n // also allows to future proof the code (e.g if another type of private key\n // is added that uses a different property than \"d\" or \"k\" to store its\n // private value).\n if (!validated.success) return undefined\n\n return Object.freeze(validated.data)\n }\n\n @cachedGetter\n get bareJwk(): Readonly | undefined {\n if (this.isSymetric) return undefined\n const { kty, crv, e, n, x, y } = this.jwk as any\n return Object.freeze(jwkSchema.parse({ crv, e, kty, n, x, y }))\n }\n\n /**\n * @note Only defined on public keys\n */\n get use(): 'sig' | 'enc' | undefined {\n return this.jwk.use\n }\n\n get keyOps(): readonly KeyUsage[] | undefined {\n return this.jwk.key_ops\n }\n\n /**\n * The (forced) algorithm to use. If not provided, the key will be usable with\n * any of the algorithms in {@link algorithms}.\n *\n * @see {@link https://datatracker.ietf.org/doc/html/rfc7518#section-3.1 | \"alg\" (Algorithm) Header Parameter Values for JWS}\n */\n get alg() {\n return this.jwk.alg\n }\n\n get kid() {\n return this.jwk.kid\n }\n\n get crv() {\n return (this.jwk as { crv: undefined } | Extract).crv\n }\n\n /**\n * All the algorithms that this key can be used with. If `alg` is provided,\n * this set will only contain that algorithm.\n */\n @cachedGetter\n get algorithms(): readonly string[] {\n return Object.freeze(Array.from(jwkAlgorithms(this.jwk)))\n }\n\n get isRevoked() {\n return this.jwk.revoked != null\n }\n\n isActive(options?: ActivityCheckOptions) {\n if (!options?.allowRevoked && this.isRevoked) return false\n\n const tolerance = options?.clockTolerance ?? 0\n if (tolerance !== Infinity) {\n const now = options?.currentDate?.getTime() ?? Date.now()\n const { exp, nbf } = this.jwk\n\n if (nbf != null && !(now >= nbf * 1e3 - tolerance)) return false\n if (exp != null && !(now < exp * 1e3 + tolerance)) return false\n }\n\n return true\n }\n\n matches(opts: KeyMatchOptions): boolean {\n if (opts.kid != null) {\n const matchesKid = Array.isArray(opts.kid)\n ? this.kid != null && opts.kid.includes(this.kid)\n : this.kid === opts.kid\n if (!matchesKid) return false\n }\n\n if (opts.alg != null) {\n const matchesAlg = Array.isArray(opts.alg)\n ? opts.alg.some((a) => this.algorithms.includes(a))\n : this.algorithms.includes(opts.alg)\n if (!matchesAlg) return false\n }\n\n if (opts.usage != null) {\n const matchesOps =\n this.keyOps == null ||\n this.keyOps.includes(opts.usage) ||\n // @NOTE Because this.jwk represents the private key (typically used for\n // private operations), the public counterpart operations are allowed.\n (opts.usage === 'verify' && this.keyOps.includes('sign')) ||\n (opts.usage === 'encrypt' && this.keyOps.includes('decrypt')) ||\n (opts.usage === 'wrapKey' && this.keyOps.includes('unwrapKey'))\n if (!matchesOps) return false\n\n const matchesUse =\n this.use == null ||\n (this.use === 'sig' && isSigKeyUsage(opts.usage)) ||\n (this.use === 'enc' && isEncKeyUsage(opts.usage))\n if (!matchesUse) return false\n\n // @NOTE This is only relevant when \"key_ops\" and \"use\" are undefined.\n // This line also ensures that when \"opts.usage\" is a private key usage\n // (e.g. \"sign\"), the key is indeed a private key.\n const matchesKeyType = this.isPrivate || isPublicKeyUsage(opts.usage)\n if (!matchesKeyType) return false\n }\n\n return true\n }\n\n /**\n * Create a signed JWT\n */\n abstract createJwt(header: JwtHeader, payload: JwtPayload): Promise\n\n /**\n * Verify the signature, headers and payload of a JWT\n *\n * @throws {JwtVerifyError} if the JWT is invalid\n */\n abstract verifyJwt(\n token: SignedJwt,\n options?: VerifyOptions,\n ): Promise>\n}\n\nfunction buildPublicKeyOps(\n keyUsages?: readonly KeyUsage[],\n): PublicKeyUsage[] | undefined {\n if (keyUsages == null) return undefined\n\n // https://datatracker.ietf.org/doc/html/rfc7517#section-4.3\n // > Duplicate key operation values MUST NOT be present in the array.\n const publicOps = new Set(keyUsages.filter(isPublicKeyUsage))\n\n // @NOTE Translating private key usage into public key usage\n if (keyUsages.includes('sign')) publicOps.add('verify')\n if (keyUsages.includes('decrypt')) publicOps.add('encrypt')\n if (keyUsages.includes('unwrapKey')) publicOps.add('wrapKey')\n\n return Array.from(publicOps)\n}\n","import {\n ERR_JWKS_NO_MATCHING_KEY,\n ERR_JWK_NOT_FOUND,\n ERR_JWT_INVALID,\n JwkError,\n JwtCreateError,\n JwtVerifyError,\n} from './errors.js'\nimport type { PrivateKeyUsage } from './jwk.js'\nimport type { JwksPub } from './jwks.js'\nimport { unsafeDecodeJwt } from './jwt-decode.js'\nimport type { VerifyOptions, VerifyResult } from './jwt-verify.js'\nimport type { JwtHeader, JwtPayload, SignedJwt } from './jwt.js'\nimport type { ActivityCheckOptions, Key, KeyMatchOptions } from './key.js'\nimport {\n type Override,\n cachedGetter,\n isDefined,\n matchesAny,\n preferredOrderCmp,\n} from './util.js'\n\nexport type { ActivityCheckOptions, KeyMatchOptions }\nexport type FindKeyOptions = KeyMatchOptions & ActivityCheckOptions\n\nexport type JwtSignHeader = Override<\n JwtHeader,\n Pick\n>\n\nexport type JwtPayloadGetter

= (\n header: JwtHeader,\n key: Key,\n) => P | PromiseLike

\n\nconst extractPrivateJwk = (key: Key) => key.privateJwk\nconst extractPublicJwk = (key: Key) => key.publicJwk\n\nexport class Keyset implements Iterable {\n private readonly keys: readonly K[]\n\n constructor(\n iterable: Iterable,\n /**\n * The preferred algorithms to use when signing a JWT using this keyset.\n *\n * @see {@link https://datatracker.ietf.org/doc/html/rfc7518#section-3.1}\n */\n public readonly preferredSigningAlgorithms: readonly string[] = iterable instanceof\n Keyset\n ? [...iterable.preferredSigningAlgorithms]\n : [\n // Prefer elliptic curve algorithms\n 'EdDSA',\n 'ES256K',\n 'ES256',\n // https://datatracker.ietf.org/doc/html/rfc7518#section-3.5\n 'PS256',\n 'PS384',\n 'PS512',\n 'HS256',\n 'HS384',\n 'HS512',\n ],\n ) {\n const keys: K[] = []\n\n const keyIds = new Set()\n for (const key of iterable) {\n if (!key) continue\n\n keys.push(key)\n\n if (key.kid) {\n if (keyIds.has(key.kid)) throw new JwkError(`Duplicate key: ${key.kid}`)\n else keyIds.add(key.kid)\n }\n }\n\n this.keys = Object.freeze(keys)\n }\n\n get size(): number {\n return this.keys.length\n }\n\n @cachedGetter\n get signAlgorithms(): readonly string[] {\n const algorithms = new Set()\n for (const key of this) {\n if (key.use !== 'sig') continue\n for (const alg of key.algorithms) {\n algorithms.add(alg)\n }\n }\n return Object.freeze(\n [...algorithms].sort(preferredOrderCmp(this.preferredSigningAlgorithms)),\n )\n }\n\n @cachedGetter\n get publicJwks() {\n return Object.freeze({\n keys: Object.freeze(Array.from(this, extractPublicJwk).filter(isDefined)),\n })\n }\n\n @cachedGetter\n get privateJwks() {\n return Object.freeze({\n keys: Object.freeze(\n Array.from(this, extractPrivateJwk).filter(isDefined),\n ),\n })\n }\n\n has(kid: string): boolean {\n return this.keys.some((key) => key.kid === kid)\n }\n\n get(options: FindKeyOptions): K {\n const key = this.find(options)\n if (key) return key\n\n throw new JwkError(\n `Key not found ${options.kid ?? options.alg ?? options.usage ?? ''}`,\n ERR_JWK_NOT_FOUND,\n )\n }\n\n find(options: FindKeyOptions): K | undefined {\n for (const key of this.list(options)) {\n return key\n }\n\n return undefined\n }\n\n *list(options: O) {\n for (const key of this) {\n if (key.isActive(options) && key.matches(options)) {\n yield key\n }\n }\n }\n\n findPrivateKey({\n kid,\n alg,\n usage,\n ...options\n }: FindKeyOptions & { usage: PrivateKeyUsage }): {\n key: Key\n alg: string\n } {\n const matchingKeys: Key[] = []\n\n // Allow the loop bellow to return early when a single \"alg\" is provided\n if (Array.isArray(alg) && alg.length === 1) alg = alg[0]\n\n for (const key of this.list({ ...options, kid, alg, usage })) {\n // Skip negotiation if a single \"alg\" was provided\n if (typeof alg === 'string') return { key, alg }\n\n matchingKeys.push(key)\n }\n\n const isAllowedAlg = matchesAny(alg)\n const candidates = matchingKeys.map(\n (key) => [key, key.algorithms.filter(isAllowedAlg)] as const,\n )\n\n // Return the first candidates that matches the preferred algorithms\n for (const prefAlg of this.preferredSigningAlgorithms) {\n for (const [matchingKey, matchingAlgs] of candidates) {\n if (matchingAlgs.includes(prefAlg)) {\n return { key: matchingKey, alg: prefAlg }\n }\n }\n }\n\n // Return any candidate\n for (const [matchingKey, matchingAlgs] of candidates) {\n for (const alg of matchingAlgs) {\n return { key: matchingKey, alg }\n }\n }\n\n throw new JwkError(\n `No private key found for ${kid || alg || usage}`,\n ERR_JWK_NOT_FOUND,\n )\n }\n\n [Symbol.iterator](): IterableIterator {\n return this.keys.values()\n }\n\n async createJwt(\n { alg: sAlg, kid: sKid, ...header }: JwtSignHeader,\n payload: JwtPayload | JwtPayloadGetter,\n ): Promise {\n try {\n const { key, alg } = this.findPrivateKey({\n alg: sAlg,\n kid: sKid,\n usage: 'sign',\n allowRevoked: false, // For explicitness (default value is false)\n })\n const protectedHeader = { ...header, alg, kid: key.kid }\n\n if (typeof payload === 'function') {\n payload = await payload(protectedHeader, key)\n }\n\n return await key.createJwt(protectedHeader, payload)\n } catch (err) {\n throw JwtCreateError.from(err)\n }\n }\n\n async verifyJwt(\n token: SignedJwt,\n options?: ActivityCheckOptions & VerifyOptions,\n ): Promise & { key: K }> {\n const { header } = unsafeDecodeJwt(token)\n const { kid, alg } = header\n\n const errors: unknown[] = []\n\n for (const key of this.list({ ...options, kid, alg, usage: 'verify' })) {\n try {\n const result = await key.verifyJwt(token, options)\n return { ...result, key }\n } catch (err) {\n errors.push(err)\n }\n }\n\n switch (errors.length) {\n case 0:\n throw new JwtVerifyError('No key matched', ERR_JWKS_NO_MATCHING_KEY)\n case 1:\n throw JwtVerifyError.from(errors[0], ERR_JWT_INVALID)\n default:\n throw JwtVerifyError.from(errors, ERR_JWT_INVALID)\n }\n }\n\n toJSON() {\n // Make a copy to allow mutation of the result\n return structuredClone(this.publicJwks) as JwksPub\n }\n}\n","export default crypto;\nexport const isCryptoKey = (key) => key instanceof CryptoKey;\n","import digest from '../runtime/digest.js';\nexport const encoder = new TextEncoder();\nexport const decoder = new TextDecoder();\nconst MAX_INT32 = 2 ** 32;\nexport function concat(...buffers) {\n const size = buffers.reduce((acc, { length }) => acc + length, 0);\n const buf = new Uint8Array(size);\n let i = 0;\n for (const buffer of buffers) {\n buf.set(buffer, i);\n i += buffer.length;\n }\n return buf;\n}\nexport function p2s(alg, p2sInput) {\n return concat(encoder.encode(alg), new Uint8Array([0]), p2sInput);\n}\nfunction writeUInt32BE(buf, value, offset) {\n if (value < 0 || value >= MAX_INT32) {\n throw new RangeError(`value must be >= 0 and <= ${MAX_INT32 - 1}. Received ${value}`);\n }\n buf.set([value >>> 24, value >>> 16, value >>> 8, value & 0xff], offset);\n}\nexport function uint64be(value) {\n const high = Math.floor(value / MAX_INT32);\n const low = value % MAX_INT32;\n const buf = new Uint8Array(8);\n writeUInt32BE(buf, high, 0);\n writeUInt32BE(buf, low, 4);\n return buf;\n}\nexport function uint32be(value) {\n const buf = new Uint8Array(4);\n writeUInt32BE(buf, value);\n return buf;\n}\nexport function lengthAndInput(input) {\n return concat(uint32be(input.length), input);\n}\nexport async function concatKdf(secret, bits, value) {\n const iterations = Math.ceil((bits >> 3) / 32);\n const res = new Uint8Array(iterations * 32);\n for (let iter = 0; iter < iterations; iter++) {\n const buf = new Uint8Array(4 + secret.length + value.length);\n buf.set(uint32be(iter + 1));\n buf.set(secret, 4);\n buf.set(value, 4 + secret.length);\n res.set(await digest('sha256', buf), iter * 32);\n }\n return res.slice(0, bits >> 3);\n}\n","import { encoder, decoder } from '../lib/buffer_utils.js';\nexport const encodeBase64 = (input) => {\n let unencoded = input;\n if (typeof unencoded === 'string') {\n unencoded = encoder.encode(unencoded);\n }\n const CHUNK_SIZE = 0x8000;\n const arr = [];\n for (let i = 0; i < unencoded.length; i += CHUNK_SIZE) {\n arr.push(String.fromCharCode.apply(null, unencoded.subarray(i, i + CHUNK_SIZE)));\n }\n return btoa(arr.join(''));\n};\nexport const encode = (input) => {\n return encodeBase64(input).replace(/=/g, '').replace(/\\+/g, '-').replace(/\\//g, '_');\n};\nexport const decodeBase64 = (encoded) => {\n const binary = atob(encoded);\n const bytes = new Uint8Array(binary.length);\n for (let i = 0; i < binary.length; i++) {\n bytes[i] = binary.charCodeAt(i);\n }\n return bytes;\n};\nexport const decode = (input) => {\n let encoded = input;\n if (encoded instanceof Uint8Array) {\n encoded = decoder.decode(encoded);\n }\n encoded = encoded.replace(/-/g, '+').replace(/_/g, '/').replace(/\\s/g, '');\n try {\n return decodeBase64(encoded);\n }\n catch {\n throw new TypeError('The input to be decoded is not correctly encoded.');\n }\n};\n","export class JOSEError extends Error {\n constructor(message, options) {\n super(message, options);\n this.code = 'ERR_JOSE_GENERIC';\n this.name = this.constructor.name;\n Error.captureStackTrace?.(this, this.constructor);\n }\n}\nJOSEError.code = 'ERR_JOSE_GENERIC';\nexport class JWTClaimValidationFailed extends JOSEError {\n constructor(message, payload, claim = 'unspecified', reason = 'unspecified') {\n super(message, { cause: { claim, reason, payload } });\n this.code = 'ERR_JWT_CLAIM_VALIDATION_FAILED';\n this.claim = claim;\n this.reason = reason;\n this.payload = payload;\n }\n}\nJWTClaimValidationFailed.code = 'ERR_JWT_CLAIM_VALIDATION_FAILED';\nexport class JWTExpired extends JOSEError {\n constructor(message, payload, claim = 'unspecified', reason = 'unspecified') {\n super(message, { cause: { claim, reason, payload } });\n this.code = 'ERR_JWT_EXPIRED';\n this.claim = claim;\n this.reason = reason;\n this.payload = payload;\n }\n}\nJWTExpired.code = 'ERR_JWT_EXPIRED';\nexport class JOSEAlgNotAllowed extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = 'ERR_JOSE_ALG_NOT_ALLOWED';\n }\n}\nJOSEAlgNotAllowed.code = 'ERR_JOSE_ALG_NOT_ALLOWED';\nexport class JOSENotSupported extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = 'ERR_JOSE_NOT_SUPPORTED';\n }\n}\nJOSENotSupported.code = 'ERR_JOSE_NOT_SUPPORTED';\nexport class JWEDecryptionFailed extends JOSEError {\n constructor(message = 'decryption operation failed', options) {\n super(message, options);\n this.code = 'ERR_JWE_DECRYPTION_FAILED';\n }\n}\nJWEDecryptionFailed.code = 'ERR_JWE_DECRYPTION_FAILED';\nexport class JWEInvalid extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = 'ERR_JWE_INVALID';\n }\n}\nJWEInvalid.code = 'ERR_JWE_INVALID';\nexport class JWSInvalid extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = 'ERR_JWS_INVALID';\n }\n}\nJWSInvalid.code = 'ERR_JWS_INVALID';\nexport class JWTInvalid extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = 'ERR_JWT_INVALID';\n }\n}\nJWTInvalid.code = 'ERR_JWT_INVALID';\nexport class JWKInvalid extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = 'ERR_JWK_INVALID';\n }\n}\nJWKInvalid.code = 'ERR_JWK_INVALID';\nexport class JWKSInvalid extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = 'ERR_JWKS_INVALID';\n }\n}\nJWKSInvalid.code = 'ERR_JWKS_INVALID';\nexport class JWKSNoMatchingKey extends JOSEError {\n constructor(message = 'no applicable key found in the JSON Web Key Set', options) {\n super(message, options);\n this.code = 'ERR_JWKS_NO_MATCHING_KEY';\n }\n}\nJWKSNoMatchingKey.code = 'ERR_JWKS_NO_MATCHING_KEY';\nexport class JWKSMultipleMatchingKeys extends JOSEError {\n constructor(message = 'multiple matching keys found in the JSON Web Key Set', options) {\n super(message, options);\n this.code = 'ERR_JWKS_MULTIPLE_MATCHING_KEYS';\n }\n}\nSymbol.asyncIterator;\nJWKSMultipleMatchingKeys.code = 'ERR_JWKS_MULTIPLE_MATCHING_KEYS';\nexport class JWKSTimeout extends JOSEError {\n constructor(message = 'request timed out', options) {\n super(message, options);\n this.code = 'ERR_JWKS_TIMEOUT';\n }\n}\nJWKSTimeout.code = 'ERR_JWKS_TIMEOUT';\nexport class JWSSignatureVerificationFailed extends JOSEError {\n constructor(message = 'signature verification failed', options) {\n super(message, options);\n this.code = 'ERR_JWS_SIGNATURE_VERIFICATION_FAILED';\n }\n}\nJWSSignatureVerificationFailed.code = 'ERR_JWS_SIGNATURE_VERIFICATION_FAILED';\n","import crypto from './webcrypto.js';\nexport default crypto.getRandomValues.bind(crypto);\n","function unusable(name, prop = 'algorithm.name') {\n return new TypeError(`CryptoKey does not support this operation, its ${prop} must be ${name}`);\n}\nfunction isAlgorithm(algorithm, name) {\n return algorithm.name === name;\n}\nfunction getHashLength(hash) {\n return parseInt(hash.name.slice(4), 10);\n}\nfunction getNamedCurve(alg) {\n switch (alg) {\n case 'ES256':\n return 'P-256';\n case 'ES384':\n return 'P-384';\n case 'ES512':\n return 'P-521';\n default:\n throw new Error('unreachable');\n }\n}\nfunction checkUsage(key, usages) {\n if (usages.length && !usages.some((expected) => key.usages.includes(expected))) {\n let msg = 'CryptoKey does not support this operation, its usages must include ';\n if (usages.length > 2) {\n const last = usages.pop();\n msg += `one of ${usages.join(', ')}, or ${last}.`;\n }\n else if (usages.length === 2) {\n msg += `one of ${usages[0]} or ${usages[1]}.`;\n }\n else {\n msg += `${usages[0]}.`;\n }\n throw new TypeError(msg);\n }\n}\nexport function checkSigCryptoKey(key, alg, ...usages) {\n switch (alg) {\n case 'HS256':\n case 'HS384':\n case 'HS512': {\n if (!isAlgorithm(key.algorithm, 'HMAC'))\n throw unusable('HMAC');\n const expected = parseInt(alg.slice(2), 10);\n const actual = getHashLength(key.algorithm.hash);\n if (actual !== expected)\n throw unusable(`SHA-${expected}`, 'algorithm.hash');\n break;\n }\n case 'RS256':\n case 'RS384':\n case 'RS512': {\n if (!isAlgorithm(key.algorithm, 'RSASSA-PKCS1-v1_5'))\n throw unusable('RSASSA-PKCS1-v1_5');\n const expected = parseInt(alg.slice(2), 10);\n const actual = getHashLength(key.algorithm.hash);\n if (actual !== expected)\n throw unusable(`SHA-${expected}`, 'algorithm.hash');\n break;\n }\n case 'PS256':\n case 'PS384':\n case 'PS512': {\n if (!isAlgorithm(key.algorithm, 'RSA-PSS'))\n throw unusable('RSA-PSS');\n const expected = parseInt(alg.slice(2), 10);\n const actual = getHashLength(key.algorithm.hash);\n if (actual !== expected)\n throw unusable(`SHA-${expected}`, 'algorithm.hash');\n break;\n }\n case 'EdDSA': {\n if (key.algorithm.name !== 'Ed25519' && key.algorithm.name !== 'Ed448') {\n throw unusable('Ed25519 or Ed448');\n }\n break;\n }\n case 'Ed25519': {\n if (!isAlgorithm(key.algorithm, 'Ed25519'))\n throw unusable('Ed25519');\n break;\n }\n case 'ES256':\n case 'ES384':\n case 'ES512': {\n if (!isAlgorithm(key.algorithm, 'ECDSA'))\n throw unusable('ECDSA');\n const expected = getNamedCurve(alg);\n const actual = key.algorithm.namedCurve;\n if (actual !== expected)\n throw unusable(expected, 'algorithm.namedCurve');\n break;\n }\n default:\n throw new TypeError('CryptoKey does not support this operation');\n }\n checkUsage(key, usages);\n}\nexport function checkEncCryptoKey(key, alg, ...usages) {\n switch (alg) {\n case 'A128GCM':\n case 'A192GCM':\n case 'A256GCM': {\n if (!isAlgorithm(key.algorithm, 'AES-GCM'))\n throw unusable('AES-GCM');\n const expected = parseInt(alg.slice(1, 4), 10);\n const actual = key.algorithm.length;\n if (actual !== expected)\n throw unusable(expected, 'algorithm.length');\n break;\n }\n case 'A128KW':\n case 'A192KW':\n case 'A256KW': {\n if (!isAlgorithm(key.algorithm, 'AES-KW'))\n throw unusable('AES-KW');\n const expected = parseInt(alg.slice(1, 4), 10);\n const actual = key.algorithm.length;\n if (actual !== expected)\n throw unusable(expected, 'algorithm.length');\n break;\n }\n case 'ECDH': {\n switch (key.algorithm.name) {\n case 'ECDH':\n case 'X25519':\n case 'X448':\n break;\n default:\n throw unusable('ECDH, X25519, or X448');\n }\n break;\n }\n case 'PBES2-HS256+A128KW':\n case 'PBES2-HS384+A192KW':\n case 'PBES2-HS512+A256KW':\n if (!isAlgorithm(key.algorithm, 'PBKDF2'))\n throw unusable('PBKDF2');\n break;\n case 'RSA-OAEP':\n case 'RSA-OAEP-256':\n case 'RSA-OAEP-384':\n case 'RSA-OAEP-512': {\n if (!isAlgorithm(key.algorithm, 'RSA-OAEP'))\n throw unusable('RSA-OAEP');\n const expected = parseInt(alg.slice(9), 10) || 1;\n const actual = getHashLength(key.algorithm.hash);\n if (actual !== expected)\n throw unusable(`SHA-${expected}`, 'algorithm.hash');\n break;\n }\n default:\n throw new TypeError('CryptoKey does not support this operation');\n }\n checkUsage(key, usages);\n}\n","function message(msg, actual, ...types) {\n types = types.filter(Boolean);\n if (types.length > 2) {\n const last = types.pop();\n msg += `one of type ${types.join(', ')}, or ${last}.`;\n }\n else if (types.length === 2) {\n msg += `one of type ${types[0]} or ${types[1]}.`;\n }\n else {\n msg += `of type ${types[0]}.`;\n }\n if (actual == null) {\n msg += ` Received ${actual}`;\n }\n else if (typeof actual === 'function' && actual.name) {\n msg += ` Received function ${actual.name}`;\n }\n else if (typeof actual === 'object' && actual != null) {\n if (actual.constructor?.name) {\n msg += ` Received an instance of ${actual.constructor.name}`;\n }\n }\n return msg;\n}\nexport default (actual, ...types) => {\n return message('Key must be ', actual, ...types);\n};\nexport function withAlg(alg, actual, ...types) {\n return message(`Key for the ${alg} algorithm must be `, actual, ...types);\n}\n","import { isCryptoKey } from './webcrypto.js';\nexport default (key) => {\n if (isCryptoKey(key)) {\n return true;\n }\n return key?.[Symbol.toStringTag] === 'KeyObject';\n};\nexport const types = ['CryptoKey'];\n","const isDisjoint = (...headers) => {\n const sources = headers.filter(Boolean);\n if (sources.length === 0 || sources.length === 1) {\n return true;\n }\n let acc;\n for (const header of sources) {\n const parameters = Object.keys(header);\n if (!acc || acc.size === 0) {\n acc = new Set(parameters);\n continue;\n }\n for (const parameter of parameters) {\n if (acc.has(parameter)) {\n return false;\n }\n acc.add(parameter);\n }\n }\n return true;\n};\nexport default isDisjoint;\n","function isObjectLike(value) {\n return typeof value === 'object' && value !== null;\n}\nexport default function isObject(input) {\n if (!isObjectLike(input) || Object.prototype.toString.call(input) !== '[object Object]') {\n return false;\n }\n if (Object.getPrototypeOf(input) === null) {\n return true;\n }\n let proto = input;\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n return Object.getPrototypeOf(input) === proto;\n}\n","export default (alg, key) => {\n if (alg.startsWith('RS') || alg.startsWith('PS')) {\n const { modulusLength } = key.algorithm;\n if (typeof modulusLength !== 'number' || modulusLength < 2048) {\n throw new TypeError(`${alg} requires key modulusLength to be 2048 bits or larger`);\n }\n }\n};\n","import isObject from './is_object.js';\nexport function isJWK(key) {\n return isObject(key) && typeof key.kty === 'string';\n}\nexport function isPrivateJWK(key) {\n return key.kty !== 'oct' && typeof key.d === 'string';\n}\nexport function isPublicJWK(key) {\n return key.kty !== 'oct' && typeof key.d === 'undefined';\n}\nexport function isSecretJWK(key) {\n return isJWK(key) && key.kty === 'oct' && typeof key.k === 'string';\n}\n","import crypto from './webcrypto.js';\nimport { JOSENotSupported } from '../util/errors.js';\nfunction subtleMapping(jwk) {\n let algorithm;\n let keyUsages;\n switch (jwk.kty) {\n case 'RSA': {\n switch (jwk.alg) {\n case 'PS256':\n case 'PS384':\n case 'PS512':\n algorithm = { name: 'RSA-PSS', hash: `SHA-${jwk.alg.slice(-3)}` };\n keyUsages = jwk.d ? ['sign'] : ['verify'];\n break;\n case 'RS256':\n case 'RS384':\n case 'RS512':\n algorithm = { name: 'RSASSA-PKCS1-v1_5', hash: `SHA-${jwk.alg.slice(-3)}` };\n keyUsages = jwk.d ? ['sign'] : ['verify'];\n break;\n case 'RSA-OAEP':\n case 'RSA-OAEP-256':\n case 'RSA-OAEP-384':\n case 'RSA-OAEP-512':\n algorithm = {\n name: 'RSA-OAEP',\n hash: `SHA-${parseInt(jwk.alg.slice(-3), 10) || 1}`,\n };\n keyUsages = jwk.d ? ['decrypt', 'unwrapKey'] : ['encrypt', 'wrapKey'];\n break;\n default:\n throw new JOSENotSupported('Invalid or unsupported JWK \"alg\" (Algorithm) Parameter value');\n }\n break;\n }\n case 'EC': {\n switch (jwk.alg) {\n case 'ES256':\n algorithm = { name: 'ECDSA', namedCurve: 'P-256' };\n keyUsages = jwk.d ? ['sign'] : ['verify'];\n break;\n case 'ES384':\n algorithm = { name: 'ECDSA', namedCurve: 'P-384' };\n keyUsages = jwk.d ? ['sign'] : ['verify'];\n break;\n case 'ES512':\n algorithm = { name: 'ECDSA', namedCurve: 'P-521' };\n keyUsages = jwk.d ? ['sign'] : ['verify'];\n break;\n case 'ECDH-ES':\n case 'ECDH-ES+A128KW':\n case 'ECDH-ES+A192KW':\n case 'ECDH-ES+A256KW':\n algorithm = { name: 'ECDH', namedCurve: jwk.crv };\n keyUsages = jwk.d ? ['deriveBits'] : [];\n break;\n default:\n throw new JOSENotSupported('Invalid or unsupported JWK \"alg\" (Algorithm) Parameter value');\n }\n break;\n }\n case 'OKP': {\n switch (jwk.alg) {\n case 'Ed25519':\n algorithm = { name: 'Ed25519' };\n keyUsages = jwk.d ? ['sign'] : ['verify'];\n break;\n case 'EdDSA':\n algorithm = { name: jwk.crv };\n keyUsages = jwk.d ? ['sign'] : ['verify'];\n break;\n case 'ECDH-ES':\n case 'ECDH-ES+A128KW':\n case 'ECDH-ES+A192KW':\n case 'ECDH-ES+A256KW':\n algorithm = { name: jwk.crv };\n keyUsages = jwk.d ? ['deriveBits'] : [];\n break;\n default:\n throw new JOSENotSupported('Invalid or unsupported JWK \"alg\" (Algorithm) Parameter value');\n }\n break;\n }\n default:\n throw new JOSENotSupported('Invalid or unsupported JWK \"kty\" (Key Type) Parameter value');\n }\n return { algorithm, keyUsages };\n}\nconst parse = async (jwk) => {\n if (!jwk.alg) {\n throw new TypeError('\"alg\" argument is required when \"jwk.alg\" is not present');\n }\n const { algorithm, keyUsages } = subtleMapping(jwk);\n const rest = [\n algorithm,\n jwk.ext ?? false,\n jwk.key_ops ?? keyUsages,\n ];\n const keyData = { ...jwk };\n delete keyData.alg;\n delete keyData.use;\n return crypto.subtle.importKey('jwk', keyData, ...rest);\n};\nexport default parse;\n","import { isJWK } from '../lib/is_jwk.js';\nimport { decode } from './base64url.js';\nimport importJWK from './jwk_to_key.js';\nconst exportKeyValue = (k) => decode(k);\nlet privCache;\nlet pubCache;\nconst isKeyObject = (key) => {\n return key?.[Symbol.toStringTag] === 'KeyObject';\n};\nconst importAndCache = async (cache, key, jwk, alg, freeze = false) => {\n let cached = cache.get(key);\n if (cached?.[alg]) {\n return cached[alg];\n }\n const cryptoKey = await importJWK({ ...jwk, alg });\n if (freeze)\n Object.freeze(key);\n if (!cached) {\n cache.set(key, { [alg]: cryptoKey });\n }\n else {\n cached[alg] = cryptoKey;\n }\n return cryptoKey;\n};\nconst normalizePublicKey = (key, alg) => {\n if (isKeyObject(key)) {\n let jwk = key.export({ format: 'jwk' });\n delete jwk.d;\n delete jwk.dp;\n delete jwk.dq;\n delete jwk.p;\n delete jwk.q;\n delete jwk.qi;\n if (jwk.k) {\n return exportKeyValue(jwk.k);\n }\n pubCache || (pubCache = new WeakMap());\n return importAndCache(pubCache, key, jwk, alg);\n }\n if (isJWK(key)) {\n if (key.k)\n return decode(key.k);\n pubCache || (pubCache = new WeakMap());\n const cryptoKey = importAndCache(pubCache, key, key, alg, true);\n return cryptoKey;\n }\n return key;\n};\nconst normalizePrivateKey = (key, alg) => {\n if (isKeyObject(key)) {\n let jwk = key.export({ format: 'jwk' });\n if (jwk.k) {\n return exportKeyValue(jwk.k);\n }\n privCache || (privCache = new WeakMap());\n return importAndCache(privCache, key, jwk, alg);\n }\n if (isJWK(key)) {\n if (key.k)\n return decode(key.k);\n privCache || (privCache = new WeakMap());\n const cryptoKey = importAndCache(privCache, key, key, alg, true);\n return cryptoKey;\n }\n return key;\n};\nexport default { normalizePublicKey, normalizePrivateKey };\n","import crypto, { isCryptoKey } from './webcrypto.js';\nimport invalidKeyInput from '../lib/invalid_key_input.js';\nimport { encodeBase64, decodeBase64 } from './base64url.js';\nimport formatPEM from '../lib/format_pem.js';\nimport { JOSENotSupported } from '../util/errors.js';\nimport { types } from './is_key_like.js';\nconst genericExport = async (keyType, keyFormat, key) => {\n if (!isCryptoKey(key)) {\n throw new TypeError(invalidKeyInput(key, ...types));\n }\n if (!key.extractable) {\n throw new TypeError('CryptoKey is not extractable');\n }\n if (key.type !== keyType) {\n throw new TypeError(`key is not a ${keyType} key`);\n }\n return formatPEM(encodeBase64(new Uint8Array(await crypto.subtle.exportKey(keyFormat, key))), `${keyType.toUpperCase()} KEY`);\n};\nexport const toSPKI = (key) => {\n return genericExport('public', 'spki', key);\n};\nexport const toPKCS8 = (key) => {\n return genericExport('private', 'pkcs8', key);\n};\nconst findOid = (keyData, oid, from = 0) => {\n if (from === 0) {\n oid.unshift(oid.length);\n oid.unshift(0x06);\n }\n const i = keyData.indexOf(oid[0], from);\n if (i === -1)\n return false;\n const sub = keyData.subarray(i, i + oid.length);\n if (sub.length !== oid.length)\n return false;\n return sub.every((value, index) => value === oid[index]) || findOid(keyData, oid, i + 1);\n};\nconst getNamedCurve = (keyData) => {\n switch (true) {\n case findOid(keyData, [0x2a, 0x86, 0x48, 0xce, 0x3d, 0x03, 0x01, 0x07]):\n return 'P-256';\n case findOid(keyData, [0x2b, 0x81, 0x04, 0x00, 0x22]):\n return 'P-384';\n case findOid(keyData, [0x2b, 0x81, 0x04, 0x00, 0x23]):\n return 'P-521';\n case findOid(keyData, [0x2b, 0x65, 0x6e]):\n return 'X25519';\n case findOid(keyData, [0x2b, 0x65, 0x6f]):\n return 'X448';\n case findOid(keyData, [0x2b, 0x65, 0x70]):\n return 'Ed25519';\n case findOid(keyData, [0x2b, 0x65, 0x71]):\n return 'Ed448';\n default:\n throw new JOSENotSupported('Invalid or unsupported EC Key Curve or OKP Key Sub Type');\n }\n};\nconst genericImport = async (replace, keyFormat, pem, alg, options) => {\n let algorithm;\n let keyUsages;\n const keyData = new Uint8Array(atob(pem.replace(replace, ''))\n .split('')\n .map((c) => c.charCodeAt(0)));\n const isPublic = keyFormat === 'spki';\n switch (alg) {\n case 'PS256':\n case 'PS384':\n case 'PS512':\n algorithm = { name: 'RSA-PSS', hash: `SHA-${alg.slice(-3)}` };\n keyUsages = isPublic ? ['verify'] : ['sign'];\n break;\n case 'RS256':\n case 'RS384':\n case 'RS512':\n algorithm = { name: 'RSASSA-PKCS1-v1_5', hash: `SHA-${alg.slice(-3)}` };\n keyUsages = isPublic ? ['verify'] : ['sign'];\n break;\n case 'RSA-OAEP':\n case 'RSA-OAEP-256':\n case 'RSA-OAEP-384':\n case 'RSA-OAEP-512':\n algorithm = {\n name: 'RSA-OAEP',\n hash: `SHA-${parseInt(alg.slice(-3), 10) || 1}`,\n };\n keyUsages = isPublic ? ['encrypt', 'wrapKey'] : ['decrypt', 'unwrapKey'];\n break;\n case 'ES256':\n algorithm = { name: 'ECDSA', namedCurve: 'P-256' };\n keyUsages = isPublic ? ['verify'] : ['sign'];\n break;\n case 'ES384':\n algorithm = { name: 'ECDSA', namedCurve: 'P-384' };\n keyUsages = isPublic ? ['verify'] : ['sign'];\n break;\n case 'ES512':\n algorithm = { name: 'ECDSA', namedCurve: 'P-521' };\n keyUsages = isPublic ? ['verify'] : ['sign'];\n break;\n case 'ECDH-ES':\n case 'ECDH-ES+A128KW':\n case 'ECDH-ES+A192KW':\n case 'ECDH-ES+A256KW': {\n const namedCurve = getNamedCurve(keyData);\n algorithm = namedCurve.startsWith('P-') ? { name: 'ECDH', namedCurve } : { name: namedCurve };\n keyUsages = isPublic ? [] : ['deriveBits'];\n break;\n }\n case 'Ed25519':\n algorithm = { name: 'Ed25519' };\n keyUsages = isPublic ? ['verify'] : ['sign'];\n break;\n case 'EdDSA':\n algorithm = { name: getNamedCurve(keyData) };\n keyUsages = isPublic ? ['verify'] : ['sign'];\n break;\n default:\n throw new JOSENotSupported('Invalid or unsupported \"alg\" (Algorithm) value');\n }\n return crypto.subtle.importKey(keyFormat, keyData, algorithm, options?.extractable ?? false, keyUsages);\n};\nexport const fromPKCS8 = (pem, alg, options) => {\n return genericImport(/(?:-----(?:BEGIN|END) PRIVATE KEY-----|\\s)/g, 'pkcs8', pem, alg, options);\n};\nexport const fromSPKI = (pem, alg, options) => {\n return genericImport(/(?:-----(?:BEGIN|END) PUBLIC KEY-----|\\s)/g, 'spki', pem, alg, options);\n};\nfunction getElement(seq) {\n const result = [];\n let next = 0;\n while (next < seq.length) {\n const nextPart = parseElement(seq.subarray(next));\n result.push(nextPart);\n next += nextPart.byteLength;\n }\n return result;\n}\nfunction parseElement(bytes) {\n let position = 0;\n let tag = bytes[0] & 0x1f;\n position++;\n if (tag === 0x1f) {\n tag = 0;\n while (bytes[position] >= 0x80) {\n tag = tag * 128 + bytes[position] - 0x80;\n position++;\n }\n tag = tag * 128 + bytes[position] - 0x80;\n position++;\n }\n let length = 0;\n if (bytes[position] < 0x80) {\n length = bytes[position];\n position++;\n }\n else if (length === 0x80) {\n length = 0;\n while (bytes[position + length] !== 0 || bytes[position + length + 1] !== 0) {\n if (length > bytes.byteLength) {\n throw new TypeError('invalid indefinite form length');\n }\n length++;\n }\n const byteLength = position + length + 2;\n return {\n byteLength,\n contents: bytes.subarray(position, position + length),\n raw: bytes.subarray(0, byteLength),\n };\n }\n else {\n const numberOfDigits = bytes[position] & 0x7f;\n position++;\n length = 0;\n for (let i = 0; i < numberOfDigits; i++) {\n length = length * 256 + bytes[position];\n position++;\n }\n }\n const byteLength = position + length;\n return {\n byteLength,\n contents: bytes.subarray(position, byteLength),\n raw: bytes.subarray(0, byteLength),\n };\n}\nfunction spkiFromX509(buf) {\n const tbsCertificate = getElement(getElement(parseElement(buf).contents)[0].contents);\n return encodeBase64(tbsCertificate[tbsCertificate[0].raw[0] === 0xa0 ? 6 : 5].raw);\n}\nfunction getSPKI(x509) {\n const pem = x509.replace(/(?:-----(?:BEGIN|END) CERTIFICATE-----|\\s)/g, '');\n const raw = decodeBase64(pem);\n return formatPEM(spkiFromX509(raw), 'PUBLIC KEY');\n}\nexport const fromX509 = (pem, alg, options) => {\n let spki;\n try {\n spki = getSPKI(pem);\n }\n catch (cause) {\n throw new TypeError('Failed to parse the X.509 certificate', { cause });\n }\n return fromSPKI(spki, alg, options);\n};\n","import { decode as decodeBase64URL } from '../runtime/base64url.js';\nimport { fromSPKI, fromPKCS8, fromX509 } from '../runtime/asn1.js';\nimport asKeyObject from '../runtime/jwk_to_key.js';\nimport { JOSENotSupported } from '../util/errors.js';\nimport isObject from '../lib/is_object.js';\nexport async function importSPKI(spki, alg, options) {\n if (typeof spki !== 'string' || spki.indexOf('-----BEGIN PUBLIC KEY-----') !== 0) {\n throw new TypeError('\"spki\" must be SPKI formatted string');\n }\n return fromSPKI(spki, alg, options);\n}\nexport async function importX509(x509, alg, options) {\n if (typeof x509 !== 'string' || x509.indexOf('-----BEGIN CERTIFICATE-----') !== 0) {\n throw new TypeError('\"x509\" must be X.509 formatted string');\n }\n return fromX509(x509, alg, options);\n}\nexport async function importPKCS8(pkcs8, alg, options) {\n if (typeof pkcs8 !== 'string' || pkcs8.indexOf('-----BEGIN PRIVATE KEY-----') !== 0) {\n throw new TypeError('\"pkcs8\" must be PKCS#8 formatted string');\n }\n return fromPKCS8(pkcs8, alg, options);\n}\nexport async function importJWK(jwk, alg) {\n if (!isObject(jwk)) {\n throw new TypeError('JWK must be an object');\n }\n alg || (alg = jwk.alg);\n switch (jwk.kty) {\n case 'oct':\n if (typeof jwk.k !== 'string' || !jwk.k) {\n throw new TypeError('missing \"k\" (Key Value) Parameter value');\n }\n return decodeBase64URL(jwk.k);\n case 'RSA':\n if ('oth' in jwk && jwk.oth !== undefined) {\n throw new JOSENotSupported('RSA JWK \"oth\" (Other Primes Info) Parameter value is not supported');\n }\n case 'EC':\n case 'OKP':\n return asKeyObject({ ...jwk, alg });\n default:\n throw new JOSENotSupported('Unsupported \"kty\" (Key Type) Parameter value');\n }\n}\n","import { withAlg as invalidKeyInput } from './invalid_key_input.js';\nimport isKeyLike, { types } from '../runtime/is_key_like.js';\nimport * as jwk from './is_jwk.js';\nconst tag = (key) => key?.[Symbol.toStringTag];\nconst jwkMatchesOp = (alg, key, usage) => {\n if (key.use !== undefined && key.use !== 'sig') {\n throw new TypeError('Invalid key for this operation, when present its use must be sig');\n }\n if (key.key_ops !== undefined && key.key_ops.includes?.(usage) !== true) {\n throw new TypeError(`Invalid key for this operation, when present its key_ops must include ${usage}`);\n }\n if (key.alg !== undefined && key.alg !== alg) {\n throw new TypeError(`Invalid key for this operation, when present its alg must be ${alg}`);\n }\n return true;\n};\nconst symmetricTypeCheck = (alg, key, usage, allowJwk) => {\n if (key instanceof Uint8Array)\n return;\n if (allowJwk && jwk.isJWK(key)) {\n if (jwk.isSecretJWK(key) && jwkMatchesOp(alg, key, usage))\n return;\n throw new TypeError(`JSON Web Key for symmetric algorithms must have JWK \"kty\" (Key Type) equal to \"oct\" and the JWK \"k\" (Key Value) present`);\n }\n if (!isKeyLike(key)) {\n throw new TypeError(invalidKeyInput(alg, key, ...types, 'Uint8Array', allowJwk ? 'JSON Web Key' : null));\n }\n if (key.type !== 'secret') {\n throw new TypeError(`${tag(key)} instances for symmetric algorithms must be of type \"secret\"`);\n }\n};\nconst asymmetricTypeCheck = (alg, key, usage, allowJwk) => {\n if (allowJwk && jwk.isJWK(key)) {\n switch (usage) {\n case 'sign':\n if (jwk.isPrivateJWK(key) && jwkMatchesOp(alg, key, usage))\n return;\n throw new TypeError(`JSON Web Key for this operation be a private JWK`);\n case 'verify':\n if (jwk.isPublicJWK(key) && jwkMatchesOp(alg, key, usage))\n return;\n throw new TypeError(`JSON Web Key for this operation be a public JWK`);\n }\n }\n if (!isKeyLike(key)) {\n throw new TypeError(invalidKeyInput(alg, key, ...types, allowJwk ? 'JSON Web Key' : null));\n }\n if (key.type === 'secret') {\n throw new TypeError(`${tag(key)} instances for asymmetric algorithms must not be of type \"secret\"`);\n }\n if (usage === 'sign' && key.type === 'public') {\n throw new TypeError(`${tag(key)} instances for asymmetric algorithm signing must be of type \"private\"`);\n }\n if (usage === 'decrypt' && key.type === 'public') {\n throw new TypeError(`${tag(key)} instances for asymmetric algorithm decryption must be of type \"private\"`);\n }\n if (key.algorithm && usage === 'verify' && key.type === 'private') {\n throw new TypeError(`${tag(key)} instances for asymmetric algorithm verifying must be of type \"public\"`);\n }\n if (key.algorithm && usage === 'encrypt' && key.type === 'private') {\n throw new TypeError(`${tag(key)} instances for asymmetric algorithm encryption must be of type \"public\"`);\n }\n};\nfunction checkKeyType(allowJwk, alg, key, usage) {\n const symmetric = alg.startsWith('HS') ||\n alg === 'dir' ||\n alg.startsWith('PBES2') ||\n /^A\\d{3}(?:GCM)?KW$/.test(alg);\n if (symmetric) {\n symmetricTypeCheck(alg, key, usage, allowJwk);\n }\n else {\n asymmetricTypeCheck(alg, key, usage, allowJwk);\n }\n}\nexport default checkKeyType.bind(undefined, false);\nexport const checkKeyTypeWithJwk = checkKeyType.bind(undefined, true);\n","import { JOSENotSupported } from '../util/errors.js';\nfunction validateCrit(Err, recognizedDefault, recognizedOption, protectedHeader, joseHeader) {\n if (joseHeader.crit !== undefined && protectedHeader?.crit === undefined) {\n throw new Err('\"crit\" (Critical) Header Parameter MUST be integrity protected');\n }\n if (!protectedHeader || protectedHeader.crit === undefined) {\n return new Set();\n }\n if (!Array.isArray(protectedHeader.crit) ||\n protectedHeader.crit.length === 0 ||\n protectedHeader.crit.some((input) => typeof input !== 'string' || input.length === 0)) {\n throw new Err('\"crit\" (Critical) Header Parameter MUST be an array of non-empty strings when present');\n }\n let recognized;\n if (recognizedOption !== undefined) {\n recognized = new Map([...Object.entries(recognizedOption), ...recognizedDefault.entries()]);\n }\n else {\n recognized = recognizedDefault;\n }\n for (const parameter of protectedHeader.crit) {\n if (!recognized.has(parameter)) {\n throw new JOSENotSupported(`Extension Header Parameter \"${parameter}\" is not recognized`);\n }\n if (joseHeader[parameter] === undefined) {\n throw new Err(`Extension Header Parameter \"${parameter}\" is missing`);\n }\n if (recognized.get(parameter) && protectedHeader[parameter] === undefined) {\n throw new Err(`Extension Header Parameter \"${parameter}\" MUST be integrity protected`);\n }\n }\n return new Set(protectedHeader.crit);\n}\nexport default validateCrit;\n","const validateAlgorithms = (option, algorithms) => {\n if (algorithms !== undefined &&\n (!Array.isArray(algorithms) || algorithms.some((s) => typeof s !== 'string'))) {\n throw new TypeError(`\"${option}\" option must be an array of strings`);\n }\n if (!algorithms) {\n return undefined;\n }\n return new Set(algorithms);\n};\nexport default validateAlgorithms;\n","import crypto, { isCryptoKey } from './webcrypto.js';\nimport invalidKeyInput from '../lib/invalid_key_input.js';\nimport { encode as base64url } from './base64url.js';\nimport { types } from './is_key_like.js';\nconst keyToJWK = async (key) => {\n if (key instanceof Uint8Array) {\n return {\n kty: 'oct',\n k: base64url(key),\n };\n }\n if (!isCryptoKey(key)) {\n throw new TypeError(invalidKeyInput(key, ...types, 'Uint8Array'));\n }\n if (!key.extractable) {\n throw new TypeError('non-extractable CryptoKey cannot be exported as a JWK');\n }\n const { ext, key_ops, alg, use, ...jwk } = await crypto.subtle.exportKey('jwk', key);\n return jwk;\n};\nexport default keyToJWK;\n","import { toSPKI as exportPublic } from '../runtime/asn1.js';\nimport { toPKCS8 as exportPrivate } from '../runtime/asn1.js';\nimport keyToJWK from '../runtime/key_to_jwk.js';\nexport async function exportSPKI(key) {\n return exportPublic(key);\n}\nexport async function exportPKCS8(key) {\n return exportPrivate(key);\n}\nexport async function exportJWK(key) {\n return keyToJWK(key);\n}\n","import { JOSENotSupported } from '../util/errors.js';\nexport default function subtleDsa(alg, algorithm) {\n const hash = `SHA-${alg.slice(-3)}`;\n switch (alg) {\n case 'HS256':\n case 'HS384':\n case 'HS512':\n return { hash, name: 'HMAC' };\n case 'PS256':\n case 'PS384':\n case 'PS512':\n return { hash, name: 'RSA-PSS', saltLength: alg.slice(-3) >> 3 };\n case 'RS256':\n case 'RS384':\n case 'RS512':\n return { hash, name: 'RSASSA-PKCS1-v1_5' };\n case 'ES256':\n case 'ES384':\n case 'ES512':\n return { hash, name: 'ECDSA', namedCurve: algorithm.namedCurve };\n case 'Ed25519':\n return { name: 'Ed25519' };\n case 'EdDSA':\n return { name: algorithm.name };\n default:\n throw new JOSENotSupported(`alg ${alg} is not supported either by JOSE or your javascript runtime`);\n }\n}\n","import crypto, { isCryptoKey } from './webcrypto.js';\nimport { checkSigCryptoKey } from '../lib/crypto_key.js';\nimport invalidKeyInput from '../lib/invalid_key_input.js';\nimport { types } from './is_key_like.js';\nimport normalize from './normalize_key.js';\nexport default async function getCryptoKey(alg, key, usage) {\n if (usage === 'sign') {\n key = await normalize.normalizePrivateKey(key, alg);\n }\n if (usage === 'verify') {\n key = await normalize.normalizePublicKey(key, alg);\n }\n if (isCryptoKey(key)) {\n checkSigCryptoKey(key, alg, usage);\n return key;\n }\n if (key instanceof Uint8Array) {\n if (!alg.startsWith('HS')) {\n throw new TypeError(invalidKeyInput(key, ...types));\n }\n return crypto.subtle.importKey('raw', key, { hash: `SHA-${alg.slice(-3)}`, name: 'HMAC' }, false, [usage]);\n }\n throw new TypeError(invalidKeyInput(key, ...types, 'Uint8Array', 'JSON Web Key'));\n}\n","import subtleAlgorithm from './subtle_dsa.js';\nimport crypto from './webcrypto.js';\nimport checkKeyLength from './check_key_length.js';\nimport getVerifyKey from './get_sign_verify_key.js';\nconst verify = async (alg, key, signature, data) => {\n const cryptoKey = await getVerifyKey(alg, key, 'verify');\n checkKeyLength(alg, cryptoKey);\n const algorithm = subtleAlgorithm(alg, cryptoKey.algorithm);\n try {\n return await crypto.subtle.verify(algorithm, cryptoKey, signature, data);\n }\n catch {\n return false;\n }\n};\nexport default verify;\n","import { decode as base64url } from '../../runtime/base64url.js';\nimport verify from '../../runtime/verify.js';\nimport { JOSEAlgNotAllowed, JWSInvalid, JWSSignatureVerificationFailed } from '../../util/errors.js';\nimport { concat, encoder, decoder } from '../../lib/buffer_utils.js';\nimport isDisjoint from '../../lib/is_disjoint.js';\nimport isObject from '../../lib/is_object.js';\nimport { checkKeyTypeWithJwk } from '../../lib/check_key_type.js';\nimport validateCrit from '../../lib/validate_crit.js';\nimport validateAlgorithms from '../../lib/validate_algorithms.js';\nimport { isJWK } from '../../lib/is_jwk.js';\nimport { importJWK } from '../../key/import.js';\nexport async function flattenedVerify(jws, key, options) {\n if (!isObject(jws)) {\n throw new JWSInvalid('Flattened JWS must be an object');\n }\n if (jws.protected === undefined && jws.header === undefined) {\n throw new JWSInvalid('Flattened JWS must have either of the \"protected\" or \"header\" members');\n }\n if (jws.protected !== undefined && typeof jws.protected !== 'string') {\n throw new JWSInvalid('JWS Protected Header incorrect type');\n }\n if (jws.payload === undefined) {\n throw new JWSInvalid('JWS Payload missing');\n }\n if (typeof jws.signature !== 'string') {\n throw new JWSInvalid('JWS Signature missing or incorrect type');\n }\n if (jws.header !== undefined && !isObject(jws.header)) {\n throw new JWSInvalid('JWS Unprotected Header incorrect type');\n }\n let parsedProt = {};\n if (jws.protected) {\n try {\n const protectedHeader = base64url(jws.protected);\n parsedProt = JSON.parse(decoder.decode(protectedHeader));\n }\n catch {\n throw new JWSInvalid('JWS Protected Header is invalid');\n }\n }\n if (!isDisjoint(parsedProt, jws.header)) {\n throw new JWSInvalid('JWS Protected and JWS Unprotected Header Parameter names must be disjoint');\n }\n const joseHeader = {\n ...parsedProt,\n ...jws.header,\n };\n const extensions = validateCrit(JWSInvalid, new Map([['b64', true]]), options?.crit, parsedProt, joseHeader);\n let b64 = true;\n if (extensions.has('b64')) {\n b64 = parsedProt.b64;\n if (typeof b64 !== 'boolean') {\n throw new JWSInvalid('The \"b64\" (base64url-encode payload) Header Parameter must be a boolean');\n }\n }\n const { alg } = joseHeader;\n if (typeof alg !== 'string' || !alg) {\n throw new JWSInvalid('JWS \"alg\" (Algorithm) Header Parameter missing or invalid');\n }\n const algorithms = options && validateAlgorithms('algorithms', options.algorithms);\n if (algorithms && !algorithms.has(alg)) {\n throw new JOSEAlgNotAllowed('\"alg\" (Algorithm) Header Parameter value not allowed');\n }\n if (b64) {\n if (typeof jws.payload !== 'string') {\n throw new JWSInvalid('JWS Payload must be a string');\n }\n }\n else if (typeof jws.payload !== 'string' && !(jws.payload instanceof Uint8Array)) {\n throw new JWSInvalid('JWS Payload must be a string or an Uint8Array instance');\n }\n let resolvedKey = false;\n if (typeof key === 'function') {\n key = await key(parsedProt, jws);\n resolvedKey = true;\n checkKeyTypeWithJwk(alg, key, 'verify');\n if (isJWK(key)) {\n key = await importJWK(key, alg);\n }\n }\n else {\n checkKeyTypeWithJwk(alg, key, 'verify');\n }\n const data = concat(encoder.encode(jws.protected ?? ''), encoder.encode('.'), typeof jws.payload === 'string' ? encoder.encode(jws.payload) : jws.payload);\n let signature;\n try {\n signature = base64url(jws.signature);\n }\n catch {\n throw new JWSInvalid('Failed to base64url decode the signature');\n }\n const verified = await verify(alg, key, signature, data);\n if (!verified) {\n throw new JWSSignatureVerificationFailed();\n }\n let payload;\n if (b64) {\n try {\n payload = base64url(jws.payload);\n }\n catch {\n throw new JWSInvalid('Failed to base64url decode the payload');\n }\n }\n else if (typeof jws.payload === 'string') {\n payload = encoder.encode(jws.payload);\n }\n else {\n payload = jws.payload;\n }\n const result = { payload };\n if (jws.protected !== undefined) {\n result.protectedHeader = parsedProt;\n }\n if (jws.header !== undefined) {\n result.unprotectedHeader = jws.header;\n }\n if (resolvedKey) {\n return { ...result, key };\n }\n return result;\n}\n","import { flattenedVerify } from '../flattened/verify.js';\nimport { JWSInvalid } from '../../util/errors.js';\nimport { decoder } from '../../lib/buffer_utils.js';\nexport async function compactVerify(jws, key, options) {\n if (jws instanceof Uint8Array) {\n jws = decoder.decode(jws);\n }\n if (typeof jws !== 'string') {\n throw new JWSInvalid('Compact JWS must be a string or Uint8Array');\n }\n const { 0: protectedHeader, 1: payload, 2: signature, length } = jws.split('.');\n if (length !== 3) {\n throw new JWSInvalid('Invalid Compact JWS');\n }\n const verified = await flattenedVerify({ payload, protected: protectedHeader, signature }, key, options);\n const result = { payload: verified.payload, protectedHeader: verified.protectedHeader };\n if (typeof key === 'function') {\n return { ...result, key: verified.key };\n }\n return result;\n}\n","export default (date) => Math.floor(date.getTime() / 1000);\n","const minute = 60;\nconst hour = minute * 60;\nconst day = hour * 24;\nconst week = day * 7;\nconst year = day * 365.25;\nconst REGEX = /^(\\+|\\-)? ?(\\d+|\\d+\\.\\d+) ?(seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)(?: (ago|from now))?$/i;\nexport default (str) => {\n const matched = REGEX.exec(str);\n if (!matched || (matched[4] && matched[1])) {\n throw new TypeError('Invalid time period format');\n }\n const value = parseFloat(matched[2]);\n const unit = matched[3].toLowerCase();\n let numericDate;\n switch (unit) {\n case 'sec':\n case 'secs':\n case 'second':\n case 'seconds':\n case 's':\n numericDate = Math.round(value);\n break;\n case 'minute':\n case 'minutes':\n case 'min':\n case 'mins':\n case 'm':\n numericDate = Math.round(value * minute);\n break;\n case 'hour':\n case 'hours':\n case 'hr':\n case 'hrs':\n case 'h':\n numericDate = Math.round(value * hour);\n break;\n case 'day':\n case 'days':\n case 'd':\n numericDate = Math.round(value * day);\n break;\n case 'week':\n case 'weeks':\n case 'w':\n numericDate = Math.round(value * week);\n break;\n default:\n numericDate = Math.round(value * year);\n break;\n }\n if (matched[1] === '-' || matched[4] === 'ago') {\n return -numericDate;\n }\n return numericDate;\n};\n","import { JWTClaimValidationFailed, JWTExpired, JWTInvalid } from '../util/errors.js';\nimport { decoder } from './buffer_utils.js';\nimport epoch from './epoch.js';\nimport secs from './secs.js';\nimport isObject from './is_object.js';\nconst normalizeTyp = (value) => value.toLowerCase().replace(/^application\\//, '');\nconst checkAudiencePresence = (audPayload, audOption) => {\n if (typeof audPayload === 'string') {\n return audOption.includes(audPayload);\n }\n if (Array.isArray(audPayload)) {\n return audOption.some(Set.prototype.has.bind(new Set(audPayload)));\n }\n return false;\n};\nexport default (protectedHeader, encodedPayload, options = {}) => {\n let payload;\n try {\n payload = JSON.parse(decoder.decode(encodedPayload));\n }\n catch {\n }\n if (!isObject(payload)) {\n throw new JWTInvalid('JWT Claims Set must be a top-level JSON object');\n }\n const { typ } = options;\n if (typ &&\n (typeof protectedHeader.typ !== 'string' ||\n normalizeTyp(protectedHeader.typ) !== normalizeTyp(typ))) {\n throw new JWTClaimValidationFailed('unexpected \"typ\" JWT header value', payload, 'typ', 'check_failed');\n }\n const { requiredClaims = [], issuer, subject, audience, maxTokenAge } = options;\n const presenceCheck = [...requiredClaims];\n if (maxTokenAge !== undefined)\n presenceCheck.push('iat');\n if (audience !== undefined)\n presenceCheck.push('aud');\n if (subject !== undefined)\n presenceCheck.push('sub');\n if (issuer !== undefined)\n presenceCheck.push('iss');\n for (const claim of new Set(presenceCheck.reverse())) {\n if (!(claim in payload)) {\n throw new JWTClaimValidationFailed(`missing required \"${claim}\" claim`, payload, claim, 'missing');\n }\n }\n if (issuer &&\n !(Array.isArray(issuer) ? issuer : [issuer]).includes(payload.iss)) {\n throw new JWTClaimValidationFailed('unexpected \"iss\" claim value', payload, 'iss', 'check_failed');\n }\n if (subject && payload.sub !== subject) {\n throw new JWTClaimValidationFailed('unexpected \"sub\" claim value', payload, 'sub', 'check_failed');\n }\n if (audience &&\n !checkAudiencePresence(payload.aud, typeof audience === 'string' ? [audience] : audience)) {\n throw new JWTClaimValidationFailed('unexpected \"aud\" claim value', payload, 'aud', 'check_failed');\n }\n let tolerance;\n switch (typeof options.clockTolerance) {\n case 'string':\n tolerance = secs(options.clockTolerance);\n break;\n case 'number':\n tolerance = options.clockTolerance;\n break;\n case 'undefined':\n tolerance = 0;\n break;\n default:\n throw new TypeError('Invalid clockTolerance option type');\n }\n const { currentDate } = options;\n const now = epoch(currentDate || new Date());\n if ((payload.iat !== undefined || maxTokenAge) && typeof payload.iat !== 'number') {\n throw new JWTClaimValidationFailed('\"iat\" claim must be a number', payload, 'iat', 'invalid');\n }\n if (payload.nbf !== undefined) {\n if (typeof payload.nbf !== 'number') {\n throw new JWTClaimValidationFailed('\"nbf\" claim must be a number', payload, 'nbf', 'invalid');\n }\n if (payload.nbf > now + tolerance) {\n throw new JWTClaimValidationFailed('\"nbf\" claim timestamp check failed', payload, 'nbf', 'check_failed');\n }\n }\n if (payload.exp !== undefined) {\n if (typeof payload.exp !== 'number') {\n throw new JWTClaimValidationFailed('\"exp\" claim must be a number', payload, 'exp', 'invalid');\n }\n if (payload.exp <= now - tolerance) {\n throw new JWTExpired('\"exp\" claim timestamp check failed', payload, 'exp', 'check_failed');\n }\n }\n if (maxTokenAge) {\n const age = now - payload.iat;\n const max = typeof maxTokenAge === 'number' ? maxTokenAge : secs(maxTokenAge);\n if (age - tolerance > max) {\n throw new JWTExpired('\"iat\" claim timestamp check failed (too far in the past)', payload, 'iat', 'check_failed');\n }\n if (age < 0 - tolerance) {\n throw new JWTClaimValidationFailed('\"iat\" claim timestamp check failed (it should be in the past)', payload, 'iat', 'check_failed');\n }\n }\n return payload;\n};\n","import { compactVerify } from '../jws/compact/verify.js';\nimport jwtPayload from '../lib/jwt_claims_set.js';\nimport { JWTInvalid } from '../util/errors.js';\nexport async function jwtVerify(jwt, key, options) {\n const verified = await compactVerify(jwt, key, options);\n if (verified.protectedHeader.crit?.includes('b64') && verified.protectedHeader.b64 === false) {\n throw new JWTInvalid('JWTs MUST NOT use unencoded payload');\n }\n const payload = jwtPayload(verified.protectedHeader, verified.payload, options);\n const result = { payload, protectedHeader: verified.protectedHeader };\n if (typeof key === 'function') {\n return { ...result, key: verified.key };\n }\n return result;\n}\n","import subtleAlgorithm from './subtle_dsa.js';\nimport crypto from './webcrypto.js';\nimport checkKeyLength from './check_key_length.js';\nimport getSignKey from './get_sign_verify_key.js';\nconst sign = async (alg, key, data) => {\n const cryptoKey = await getSignKey(alg, key, 'sign');\n checkKeyLength(alg, cryptoKey);\n const signature = await crypto.subtle.sign(subtleAlgorithm(alg, cryptoKey.algorithm), cryptoKey, data);\n return new Uint8Array(signature);\n};\nexport default sign;\n","import { encode as base64url } from '../../runtime/base64url.js';\nimport sign from '../../runtime/sign.js';\nimport isDisjoint from '../../lib/is_disjoint.js';\nimport { JWSInvalid } from '../../util/errors.js';\nimport { encoder, decoder, concat } from '../../lib/buffer_utils.js';\nimport { checkKeyTypeWithJwk } from '../../lib/check_key_type.js';\nimport validateCrit from '../../lib/validate_crit.js';\nexport class FlattenedSign {\n constructor(payload) {\n if (!(payload instanceof Uint8Array)) {\n throw new TypeError('payload must be an instance of Uint8Array');\n }\n this._payload = payload;\n }\n setProtectedHeader(protectedHeader) {\n if (this._protectedHeader) {\n throw new TypeError('setProtectedHeader can only be called once');\n }\n this._protectedHeader = protectedHeader;\n return this;\n }\n setUnprotectedHeader(unprotectedHeader) {\n if (this._unprotectedHeader) {\n throw new TypeError('setUnprotectedHeader can only be called once');\n }\n this._unprotectedHeader = unprotectedHeader;\n return this;\n }\n async sign(key, options) {\n if (!this._protectedHeader && !this._unprotectedHeader) {\n throw new JWSInvalid('either setProtectedHeader or setUnprotectedHeader must be called before #sign()');\n }\n if (!isDisjoint(this._protectedHeader, this._unprotectedHeader)) {\n throw new JWSInvalid('JWS Protected and JWS Unprotected Header Parameter names must be disjoint');\n }\n const joseHeader = {\n ...this._protectedHeader,\n ...this._unprotectedHeader,\n };\n const extensions = validateCrit(JWSInvalid, new Map([['b64', true]]), options?.crit, this._protectedHeader, joseHeader);\n let b64 = true;\n if (extensions.has('b64')) {\n b64 = this._protectedHeader.b64;\n if (typeof b64 !== 'boolean') {\n throw new JWSInvalid('The \"b64\" (base64url-encode payload) Header Parameter must be a boolean');\n }\n }\n const { alg } = joseHeader;\n if (typeof alg !== 'string' || !alg) {\n throw new JWSInvalid('JWS \"alg\" (Algorithm) Header Parameter missing or invalid');\n }\n checkKeyTypeWithJwk(alg, key, 'sign');\n let payload = this._payload;\n if (b64) {\n payload = encoder.encode(base64url(payload));\n }\n let protectedHeader;\n if (this._protectedHeader) {\n protectedHeader = encoder.encode(base64url(JSON.stringify(this._protectedHeader)));\n }\n else {\n protectedHeader = encoder.encode('');\n }\n const data = concat(protectedHeader, encoder.encode('.'), payload);\n const signature = await sign(alg, key, data);\n const jws = {\n signature: base64url(signature),\n payload: '',\n };\n if (b64) {\n jws.payload = decoder.decode(payload);\n }\n if (this._unprotectedHeader) {\n jws.header = this._unprotectedHeader;\n }\n if (this._protectedHeader) {\n jws.protected = decoder.decode(protectedHeader);\n }\n return jws;\n }\n}\n","import { FlattenedSign } from '../flattened/sign.js';\nexport class CompactSign {\n constructor(payload) {\n this._flattened = new FlattenedSign(payload);\n }\n setProtectedHeader(protectedHeader) {\n this._flattened.setProtectedHeader(protectedHeader);\n return this;\n }\n async sign(key, options) {\n const jws = await this._flattened.sign(key, options);\n if (jws.payload === undefined) {\n throw new TypeError('use the flattened module for creating JWS with b64: false');\n }\n return `${jws.protected}.${jws.payload}.${jws.signature}`;\n }\n}\n","import epoch from '../lib/epoch.js';\nimport isObject from '../lib/is_object.js';\nimport secs from '../lib/secs.js';\nfunction validateInput(label, input) {\n if (!Number.isFinite(input)) {\n throw new TypeError(`Invalid ${label} input`);\n }\n return input;\n}\nexport class ProduceJWT {\n constructor(payload = {}) {\n if (!isObject(payload)) {\n throw new TypeError('JWT Claims Set MUST be an object');\n }\n this._payload = payload;\n }\n setIssuer(issuer) {\n this._payload = { ...this._payload, iss: issuer };\n return this;\n }\n setSubject(subject) {\n this._payload = { ...this._payload, sub: subject };\n return this;\n }\n setAudience(audience) {\n this._payload = { ...this._payload, aud: audience };\n return this;\n }\n setJti(jwtId) {\n this._payload = { ...this._payload, jti: jwtId };\n return this;\n }\n setNotBefore(input) {\n if (typeof input === 'number') {\n this._payload = { ...this._payload, nbf: validateInput('setNotBefore', input) };\n }\n else if (input instanceof Date) {\n this._payload = { ...this._payload, nbf: validateInput('setNotBefore', epoch(input)) };\n }\n else {\n this._payload = { ...this._payload, nbf: epoch(new Date()) + secs(input) };\n }\n return this;\n }\n setExpirationTime(input) {\n if (typeof input === 'number') {\n this._payload = { ...this._payload, exp: validateInput('setExpirationTime', input) };\n }\n else if (input instanceof Date) {\n this._payload = { ...this._payload, exp: validateInput('setExpirationTime', epoch(input)) };\n }\n else {\n this._payload = { ...this._payload, exp: epoch(new Date()) + secs(input) };\n }\n return this;\n }\n setIssuedAt(input) {\n if (typeof input === 'undefined') {\n this._payload = { ...this._payload, iat: epoch(new Date()) };\n }\n else if (input instanceof Date) {\n this._payload = { ...this._payload, iat: validateInput('setIssuedAt', epoch(input)) };\n }\n else if (typeof input === 'string') {\n this._payload = {\n ...this._payload,\n iat: validateInput('setIssuedAt', epoch(new Date()) + secs(input)),\n };\n }\n else {\n this._payload = { ...this._payload, iat: validateInput('setIssuedAt', input) };\n }\n return this;\n }\n}\n","import { CompactSign } from '../jws/compact/sign.js';\nimport { JWTInvalid } from '../util/errors.js';\nimport { encoder } from '../lib/buffer_utils.js';\nimport { ProduceJWT } from './produce.js';\nexport class SignJWT extends ProduceJWT {\n setProtectedHeader(protectedHeader) {\n this._protectedHeader = protectedHeader;\n return this;\n }\n async sign(key, options) {\n const sig = new CompactSign(encoder.encode(JSON.stringify(this._payload)));\n sig.setProtectedHeader(this._protectedHeader);\n if (Array.isArray(this._protectedHeader?.crit) &&\n this._protectedHeader.crit.includes('b64') &&\n this._protectedHeader.b64 === false) {\n throw new JWTInvalid('JWTs MUST NOT use unencoded payload');\n }\n return sig.sign(key, options);\n }\n}\n","import fetchJwks from '../runtime/fetch_jwks.js';\nimport { JWKSNoMatchingKey } from '../util/errors.js';\nimport { createLocalJWKSet } from './local.js';\nimport isObject from '../lib/is_object.js';\nfunction isCloudflareWorkers() {\n return (typeof WebSocketPair !== 'undefined' ||\n (typeof navigator !== 'undefined' && navigator.userAgent === 'Cloudflare-Workers') ||\n (typeof EdgeRuntime !== 'undefined' && EdgeRuntime === 'vercel'));\n}\nlet USER_AGENT;\nif (typeof navigator === 'undefined' || !navigator.userAgent?.startsWith?.('Mozilla/5.0 ')) {\n const NAME = 'jose';\n const VERSION = 'v5.10.0';\n USER_AGENT = `${NAME}/${VERSION}`;\n}\nexport const jwksCache = Symbol();\nfunction isFreshJwksCache(input, cacheMaxAge) {\n if (typeof input !== 'object' || input === null) {\n return false;\n }\n if (!('uat' in input) || typeof input.uat !== 'number' || Date.now() - input.uat >= cacheMaxAge) {\n return false;\n }\n if (!('jwks' in input) ||\n !isObject(input.jwks) ||\n !Array.isArray(input.jwks.keys) ||\n !Array.prototype.every.call(input.jwks.keys, isObject)) {\n return false;\n }\n return true;\n}\nclass RemoteJWKSet {\n constructor(url, options) {\n if (!(url instanceof URL)) {\n throw new TypeError('url must be an instance of URL');\n }\n this._url = new URL(url.href);\n this._options = { agent: options?.agent, headers: options?.headers };\n this._timeoutDuration =\n typeof options?.timeoutDuration === 'number' ? options?.timeoutDuration : 5000;\n this._cooldownDuration =\n typeof options?.cooldownDuration === 'number' ? options?.cooldownDuration : 30000;\n this._cacheMaxAge = typeof options?.cacheMaxAge === 'number' ? options?.cacheMaxAge : 600000;\n if (options?.[jwksCache] !== undefined) {\n this._cache = options?.[jwksCache];\n if (isFreshJwksCache(options?.[jwksCache], this._cacheMaxAge)) {\n this._jwksTimestamp = this._cache.uat;\n this._local = createLocalJWKSet(this._cache.jwks);\n }\n }\n }\n coolingDown() {\n return typeof this._jwksTimestamp === 'number'\n ? Date.now() < this._jwksTimestamp + this._cooldownDuration\n : false;\n }\n fresh() {\n return typeof this._jwksTimestamp === 'number'\n ? Date.now() < this._jwksTimestamp + this._cacheMaxAge\n : false;\n }\n async getKey(protectedHeader, token) {\n if (!this._local || !this.fresh()) {\n await this.reload();\n }\n try {\n return await this._local(protectedHeader, token);\n }\n catch (err) {\n if (err instanceof JWKSNoMatchingKey) {\n if (this.coolingDown() === false) {\n await this.reload();\n return this._local(protectedHeader, token);\n }\n }\n throw err;\n }\n }\n async reload() {\n if (this._pendingFetch && isCloudflareWorkers()) {\n this._pendingFetch = undefined;\n }\n const headers = new Headers(this._options.headers);\n if (USER_AGENT && !headers.has('User-Agent')) {\n headers.set('User-Agent', USER_AGENT);\n this._options.headers = Object.fromEntries(headers.entries());\n }\n this._pendingFetch || (this._pendingFetch = fetchJwks(this._url, this._timeoutDuration, this._options)\n .then((json) => {\n this._local = createLocalJWKSet(json);\n if (this._cache) {\n this._cache.uat = Date.now();\n this._cache.jwks = json;\n }\n this._jwksTimestamp = Date.now();\n this._pendingFetch = undefined;\n })\n .catch((err) => {\n this._pendingFetch = undefined;\n throw err;\n }));\n await this._pendingFetch;\n }\n}\nexport function createRemoteJWKSet(url, options) {\n const set = new RemoteJWKSet(url, options);\n const remoteJWKSet = async (protectedHeader, token) => set.getKey(protectedHeader, token);\n Object.defineProperties(remoteJWKSet, {\n coolingDown: {\n get: () => set.coolingDown(),\n enumerable: true,\n configurable: false,\n },\n fresh: {\n get: () => set.fresh(),\n enumerable: true,\n configurable: false,\n },\n reload: {\n value: () => set.reload(),\n enumerable: true,\n configurable: false,\n writable: false,\n },\n reloading: {\n get: () => !!set._pendingFetch,\n enumerable: true,\n configurable: false,\n },\n jwks: {\n value: () => set._local?.jwks(),\n enumerable: true,\n configurable: false,\n writable: false,\n },\n });\n return remoteJWKSet;\n}\nexport const experimental_jwksCache = jwksCache;\n","import crypto from './webcrypto.js';\nimport { JOSENotSupported } from '../util/errors.js';\nimport random from './random.js';\nexport async function generateSecret(alg, options) {\n let length;\n let algorithm;\n let keyUsages;\n switch (alg) {\n case 'HS256':\n case 'HS384':\n case 'HS512':\n length = parseInt(alg.slice(-3), 10);\n algorithm = { name: 'HMAC', hash: `SHA-${length}`, length };\n keyUsages = ['sign', 'verify'];\n break;\n case 'A128CBC-HS256':\n case 'A192CBC-HS384':\n case 'A256CBC-HS512':\n length = parseInt(alg.slice(-3), 10);\n return random(new Uint8Array(length >> 3));\n case 'A128KW':\n case 'A192KW':\n case 'A256KW':\n length = parseInt(alg.slice(1, 4), 10);\n algorithm = { name: 'AES-KW', length };\n keyUsages = ['wrapKey', 'unwrapKey'];\n break;\n case 'A128GCMKW':\n case 'A192GCMKW':\n case 'A256GCMKW':\n case 'A128GCM':\n case 'A192GCM':\n case 'A256GCM':\n length = parseInt(alg.slice(1, 4), 10);\n algorithm = { name: 'AES-GCM', length };\n keyUsages = ['encrypt', 'decrypt'];\n break;\n default:\n throw new JOSENotSupported('Invalid or unsupported JWK \"alg\" (Algorithm) Parameter value');\n }\n return crypto.subtle.generateKey(algorithm, options?.extractable ?? false, keyUsages);\n}\nfunction getModulusLengthOption(options) {\n const modulusLength = options?.modulusLength ?? 2048;\n if (typeof modulusLength !== 'number' || modulusLength < 2048) {\n throw new JOSENotSupported('Invalid or unsupported modulusLength option provided, 2048 bits or larger keys must be used');\n }\n return modulusLength;\n}\nexport async function generateKeyPair(alg, options) {\n let algorithm;\n let keyUsages;\n switch (alg) {\n case 'PS256':\n case 'PS384':\n case 'PS512':\n algorithm = {\n name: 'RSA-PSS',\n hash: `SHA-${alg.slice(-3)}`,\n publicExponent: new Uint8Array([0x01, 0x00, 0x01]),\n modulusLength: getModulusLengthOption(options),\n };\n keyUsages = ['sign', 'verify'];\n break;\n case 'RS256':\n case 'RS384':\n case 'RS512':\n algorithm = {\n name: 'RSASSA-PKCS1-v1_5',\n hash: `SHA-${alg.slice(-3)}`,\n publicExponent: new Uint8Array([0x01, 0x00, 0x01]),\n modulusLength: getModulusLengthOption(options),\n };\n keyUsages = ['sign', 'verify'];\n break;\n case 'RSA-OAEP':\n case 'RSA-OAEP-256':\n case 'RSA-OAEP-384':\n case 'RSA-OAEP-512':\n algorithm = {\n name: 'RSA-OAEP',\n hash: `SHA-${parseInt(alg.slice(-3), 10) || 1}`,\n publicExponent: new Uint8Array([0x01, 0x00, 0x01]),\n modulusLength: getModulusLengthOption(options),\n };\n keyUsages = ['decrypt', 'unwrapKey', 'encrypt', 'wrapKey'];\n break;\n case 'ES256':\n algorithm = { name: 'ECDSA', namedCurve: 'P-256' };\n keyUsages = ['sign', 'verify'];\n break;\n case 'ES384':\n algorithm = { name: 'ECDSA', namedCurve: 'P-384' };\n keyUsages = ['sign', 'verify'];\n break;\n case 'ES512':\n algorithm = { name: 'ECDSA', namedCurve: 'P-521' };\n keyUsages = ['sign', 'verify'];\n break;\n case 'Ed25519':\n algorithm = { name: 'Ed25519' };\n keyUsages = ['sign', 'verify'];\n break;\n case 'EdDSA': {\n keyUsages = ['sign', 'verify'];\n const crv = options?.crv ?? 'Ed25519';\n switch (crv) {\n case 'Ed25519':\n case 'Ed448':\n algorithm = { name: crv };\n break;\n default:\n throw new JOSENotSupported('Invalid or unsupported crv option provided');\n }\n break;\n }\n case 'ECDH-ES':\n case 'ECDH-ES+A128KW':\n case 'ECDH-ES+A192KW':\n case 'ECDH-ES+A256KW': {\n keyUsages = ['deriveKey', 'deriveBits'];\n const crv = options?.crv ?? 'P-256';\n switch (crv) {\n case 'P-256':\n case 'P-384':\n case 'P-521': {\n algorithm = { name: 'ECDH', namedCurve: crv };\n break;\n }\n case 'X25519':\n case 'X448':\n algorithm = { name: crv };\n break;\n default:\n throw new JOSENotSupported('Invalid or unsupported crv option provided, supported values are P-256, P-384, P-521, X25519, and X448');\n }\n break;\n }\n default:\n throw new JOSENotSupported('Invalid or unsupported JWK \"alg\" (Algorithm) Parameter value');\n }\n return crypto.subtle.generateKey(algorithm, options?.extractable ?? false, keyUsages);\n}\n","import { generateKeyPair as generate } from '../runtime/generate.js';\nexport async function generateKeyPair(alg, options) {\n return generate(alg, options);\n}\n","// eslint-disable-next-line @typescript-eslint/no-empty-object-type\nexport type Simplify = { [K in keyof T]: T[K] } & {}\n\nexport type RequiredKey = Simplify<\n T & {\n [L in K]-?: unknown extends T[L]\n ? NonNullable | null\n : Exclude\n }\n>\n\nexport function either(\n a?: T,\n b?: T,\n): T | undefined {\n if (a != null && b != null && a !== b) {\n throw new TypeError(`Expected \"${b}\", got \"${a}\"`)\n }\n return a ?? b ?? undefined\n}\n","import {\n type GenerateKeyPairOptions,\n type GenerateKeyPairResult,\n type JWK,\n type JWTVerifyOptions,\n type KeyLike,\n SignJWT,\n errors,\n exportJWK,\n generateKeyPair,\n importJWK,\n importPKCS8,\n jwtVerify,\n} from 'jose'\nimport {\n type Jwk,\n JwkError,\n JwtCreateError,\n type JwtHeader,\n type JwtPayload,\n JwtVerifyError,\n Key,\n type SignedJwt,\n type VerifyOptions,\n type VerifyResult,\n isPrivateJwk,\n jwkSchema,\n jwtHeaderSchema,\n jwtPayloadSchema,\n} from '@atproto/jwk'\nimport { type RequiredKey, either } from './util.js'\n\nconst { JOSEError } = errors\n\nexport {\n type GenerateKeyPairOptions,\n type GenerateKeyPairResult,\n type Jwk,\n type JwtHeader,\n type JwtPayload,\n type KeyLike,\n type SignedJwt,\n type VerifyOptions,\n}\n\nexport class JoseKey extends Key {\n /**\n * Some runtimes (e.g. Bun) require an `alg` second argument to be set when\n * invoking `importJWK`. In order to be compatible with these runtimes, we\n * provide the following method to ensure the `alg` is always set. We also\n * take the opportunity to ensure that the `alg` is compatible with this key.\n */\n protected async getKeyObj(alg: string) {\n if (!this.algorithms.includes(alg)) {\n throw new JwkError(`Key cannot be used with algorithm \"${alg}\"`)\n }\n try {\n return await importJWK(this.jwk as JWK, alg)\n } catch (cause) {\n throw new JwkError('Failed to import JWK', undefined, { cause })\n }\n }\n\n async createJwt(header: JwtHeader, payload: JwtPayload): Promise {\n try {\n const { kid } = header\n if (kid && kid !== this.kid) {\n throw new JwtCreateError(\n `Invalid \"kid\" (${kid}) used to sign with key \"${this.kid}\"`,\n )\n }\n\n const { alg } = header\n if (!alg) {\n throw new JwtCreateError('Missing \"alg\" in JWT header')\n }\n\n const keyObj = await this.getKeyObj(alg)\n const jwtBuilder = new SignJWT(payload).setProtectedHeader({\n ...header,\n alg,\n kid: this.kid,\n })\n\n const signedJwt = await jwtBuilder.sign(keyObj)\n\n return signedJwt as SignedJwt\n } catch (cause) {\n if (cause instanceof JOSEError) {\n throw new JwtCreateError(cause.message, cause.code, { cause })\n } else {\n throw JwtCreateError.from(cause)\n }\n }\n }\n\n async verifyJwt(\n token: SignedJwt,\n options?: VerifyOptions,\n ): Promise> {\n try {\n const result = await jwtVerify(\n token,\n async ({ alg }) => this.getKeyObj(alg),\n { ...options, algorithms: this.algorithms } as JWTVerifyOptions,\n )\n\n // @NOTE if all tokens are signed exclusively through createJwt(), then\n // there should be no need to parse the payload and headers here. But\n // since the JWT could have been signed with the same key from somewhere\n // else, let's parse it to ensure the integrity (and type safety) of the\n // data.\n const headerParsed = jwtHeaderSchema.safeParse(result.protectedHeader)\n if (!headerParsed.success) {\n throw new JwtVerifyError('Invalid JWT header', undefined, {\n cause: headerParsed.error,\n })\n }\n\n const payloadParsed = jwtPayloadSchema.safeParse(result.payload)\n if (!payloadParsed.success) {\n throw new JwtVerifyError('Invalid JWT payload', undefined, {\n cause: payloadParsed.error,\n })\n }\n\n return {\n protectedHeader: headerParsed.data,\n // \"requiredClaims\" enforced by jwtVerify()\n payload: payloadParsed.data as RequiredKey,\n }\n } catch (cause) {\n if (cause instanceof JOSEError) {\n throw new JwtVerifyError(cause.message, cause.code, { cause })\n } else {\n throw JwtVerifyError.from(cause)\n }\n }\n }\n\n static async generateKeyPair(\n allowedAlgos: readonly string[] = ['ES256'],\n options?: GenerateKeyPairOptions,\n ) {\n if (!allowedAlgos.length) {\n throw new JwkError('No algorithms provided for key generation')\n }\n\n const errors: unknown[] = []\n for (const alg of allowedAlgos) {\n try {\n return await generateKeyPair(alg, options)\n } catch (err) {\n errors.push(err)\n }\n }\n\n throw new JwkError('Failed to generate key pair', undefined, {\n cause: new AggregateError(errors, 'None of the algorithms worked'),\n })\n }\n\n static async generate(\n allowedAlgos: string[] = ['ES256'],\n kid?: string,\n options?: Omit,\n ): Promise {\n const kp = await this.generateKeyPair(allowedAlgos, {\n ...options,\n extractable: true,\n })\n return this.fromKeyLike(kp.privateKey, kid)\n }\n\n static async fromImportable(\n input: string | KeyLike | Jwk,\n kid?: string,\n ): Promise {\n if (typeof input === 'string') {\n // PKCS8\n if (input.startsWith('-----')) {\n // The \"alg\" is only needed in WebCrypto (NodeJS will be fine)\n return this.fromPKCS8(input, '', kid)\n }\n\n // Jwk (string)\n if (input.startsWith('{')) {\n return this.fromJWK(input, kid)\n }\n\n throw new JwkError('Invalid input')\n }\n\n if (typeof input === 'object') {\n // Jwk\n if ('kty' in input || 'alg' in input) {\n return this.fromJWK(input, kid)\n }\n\n // KeyLike\n return this.fromKeyLike(input, kid)\n }\n\n throw new JwkError('Invalid input')\n }\n\n /**\n * @see {@link exportJWK}\n */\n static async fromKeyLike(\n keyLike: KeyLike | Uint8Array,\n kid?: string,\n alg?: string,\n ): Promise {\n const jwk = await exportJWK(keyLike)\n if (alg) {\n if (!jwk.alg) jwk.alg = alg\n else if (jwk.alg !== alg) throw new JwkError('Invalid \"alg\" in JWK')\n }\n return this.fromJWK(jwk, kid)\n }\n\n /**\n * @see {@link importPKCS8}\n */\n static async fromPKCS8(\n pem: string,\n alg: string,\n kid?: string,\n ): Promise {\n const keyLike = await importPKCS8(pem, alg, { extractable: true })\n return this.fromKeyLike(keyLike, kid)\n }\n\n static async fromJWK(\n input: string | Record,\n inputKid?: string,\n ): Promise {\n const jwk = typeof input === 'string' ? JSON.parse(input) : input\n if (!jwk || typeof jwk !== 'object') throw new JwkError('Invalid JWK')\n\n const kid = either(jwk.kid, inputKid)\n\n // Backwards compatibility with old behavior\n if (jwk.use != null && isPrivateJwk(jwk)) {\n console.warn(\n 'Deprecation warning: Private JWK with a \"use\" property will be rejected in the future. Please remove replace \"use\" with (valid) \"key_ops\".',\n )\n jwk.key_ops ??= jwk.use === 'sig' ? ['sign'] : ['encrypt']\n delete jwk.use\n }\n\n return new JoseKey(jwkSchema.parse({ ...jwk, kid }))\n }\n}\n","export type JWSAlgorithm =\n // HMAC\n | 'HS256'\n | 'HS384'\n | 'HS512'\n // RSA\n | 'PS256'\n | 'PS384'\n | 'PS512'\n | 'RS256'\n | 'RS384'\n | 'RS512'\n // EC\n | 'ES256'\n | 'ES256K'\n | 'ES384'\n | 'ES512'\n // OKP\n | 'EdDSA'\n\nexport type SubtleAlgorithm = RsaHashedKeyGenParams | EcKeyGenParams\n\nexport function toSubtleAlgorithm(\n alg: string,\n crv?: string,\n options?: { modulusLength?: number },\n): SubtleAlgorithm {\n switch (alg) {\n case 'PS256':\n case 'PS384':\n case 'PS512':\n return {\n name: 'RSA-PSS',\n hash: `SHA-${alg.slice(-3) as '256' | '384' | '512'}`,\n modulusLength: options?.modulusLength ?? 2048,\n publicExponent: new Uint8Array([0x01, 0x00, 0x01]),\n }\n case 'RS256':\n case 'RS384':\n case 'RS512':\n return {\n name: 'RSASSA-PKCS1-v1_5',\n hash: `SHA-${alg.slice(-3) as '256' | '384' | '512'}`,\n modulusLength: options?.modulusLength ?? 2048,\n publicExponent: new Uint8Array([0x01, 0x00, 0x01]),\n }\n case 'ES256':\n case 'ES384':\n return {\n name: 'ECDSA',\n namedCurve: `P-${alg.slice(-3) as '256' | '384'}`,\n }\n case 'ES512':\n return {\n name: 'ECDSA',\n namedCurve: 'P-521',\n }\n default:\n // https://github.com/w3c/webcrypto/issues/82#issuecomment-849856773\n\n throw new TypeError(`Unsupported alg \"${alg}\"`)\n }\n}\n\nexport function fromSubtleAlgorithm(algorithm: KeyAlgorithm): JWSAlgorithm {\n switch (algorithm.name) {\n case 'RSA-PSS':\n case 'RSASSA-PKCS1-v1_5': {\n const hash = (algorithm).hash.name\n switch (hash) {\n case 'SHA-256':\n case 'SHA-384':\n case 'SHA-512': {\n const prefix = algorithm.name === 'RSA-PSS' ? 'PS' : 'RS'\n return `${prefix}${hash.slice(-3) as '256' | '384' | '512'}`\n }\n default:\n throw new TypeError('unsupported RsaHashedKeyAlgorithm hash')\n }\n }\n case 'ECDSA': {\n const namedCurve = (algorithm).namedCurve\n switch (namedCurve) {\n case 'P-256':\n case 'P-384':\n case 'P-512':\n return `ES${namedCurve.slice(-3) as '256' | '384' | '512'}`\n case 'P-521':\n return 'ES512'\n default:\n throw new TypeError('unsupported EcKeyAlgorithm namedCurve')\n }\n }\n case 'Ed448':\n case 'Ed25519':\n return 'EdDSA'\n default:\n // https://github.com/w3c/webcrypto/issues/82#issuecomment-849856773\n\n throw new TypeError(`Unexpected algorithm \"${algorithm.name}\"`)\n }\n}\n\nexport function isCryptoKeyPair(\n v: unknown,\n extractable?: boolean,\n): v is CryptoKeyPair {\n return (\n typeof v === 'object' &&\n v !== null &&\n 'privateKey' in v &&\n v.privateKey instanceof CryptoKey &&\n v.privateKey.type === 'private' &&\n (extractable == null || v.privateKey.extractable === extractable) &&\n v.privateKey.usages.includes('sign') &&\n 'publicKey' in v &&\n v.publicKey instanceof CryptoKey &&\n v.publicKey.type === 'public' &&\n v.publicKey.extractable === true &&\n v.publicKey.usages.includes('verify')\n )\n}\n","import { type Jwk, JwkError, jwkSchema } from '@atproto/jwk'\nimport { type GenerateKeyPairOptions, JoseKey } from '@atproto/jwk-jose'\nimport { fromSubtleAlgorithm, isCryptoKeyPair } from './util.js'\n\nexport class WebcryptoKey extends JoseKey {\n // We need to override the static method generate from JoseKey because\n // the browser needs both the private and public keys\n static override async generate(\n allowedAlgos: string[] = ['ES256'],\n kid: string = crypto.randomUUID(),\n options?: GenerateKeyPairOptions,\n ): Promise {\n const keyPair = await this.generateKeyPair(allowedAlgos, options)\n\n // Type safety only: in the browser, 'jose' always generates a CryptoKeyPair\n if (!isCryptoKeyPair(keyPair)) {\n throw new TypeError('Invalid CryptoKeyPair')\n }\n\n return this.fromKeypair(keyPair, kid)\n }\n\n static async fromKeypair(\n cryptoKeyPair: CryptoKeyPair,\n kid?: string,\n ): Promise {\n const {\n alg = fromSubtleAlgorithm(cryptoKeyPair.privateKey.algorithm),\n ...jwk\n } = await crypto.subtle.exportKey(\n 'jwk',\n cryptoKeyPair.privateKey.extractable\n ? cryptoKeyPair.privateKey\n : cryptoKeyPair.publicKey,\n )\n\n return new WebcryptoKey(\n jwkSchema.parse({ ...jwk, kid, alg }),\n cryptoKeyPair,\n )\n }\n\n constructor(\n jwk: Readonly,\n readonly cryptoKeyPair: CryptoKeyPair,\n ) {\n // Webcrypto keys are bound to a single algorithm\n if (!jwk.alg) throw new JwkError('JWK \"alg\" is required for Webcrypto keys')\n\n super(jwk)\n }\n\n get isPrivate() {\n return true\n }\n\n protected override async getKeyObj(alg: string) {\n if (this.jwk.alg !== alg) {\n throw new JwkError(`Key cannot be used with algorithm \"${alg}\"`)\n }\n return this.cryptoKeyPair.privateKey\n }\n}\n","import 'core-js/es/symbol/dispose.js'\n\nexport * from '@atproto-labs/did-resolver'\nexport {\n FetchError,\n FetchRequestError,\n FetchResponseError,\n} from '@atproto-labs/fetch'\nexport * from '@atproto-labs/handle-resolver'\n\nexport * from '@atproto/did'\nexport * from '@atproto/jwk'\nexport * from '@atproto/oauth-types'\n\nexport * from './lock.js'\nexport * from './oauth-authorization-server-metadata-resolver.js'\nexport * from './oauth-callback-error.js'\nexport * from './oauth-client.js'\nexport * from './oauth-protected-resource-metadata-resolver.js'\nexport * from './oauth-resolver-error.js'\nexport * from './oauth-response-error.js'\nexport * from './oauth-server-agent.js'\nexport * from './oauth-server-factory.js'\nexport * from './oauth-session.js'\nexport * from './runtime-implementation.js'\nexport * from './session-getter.js'\nexport * from './state-store.js'\nexport * from './types.js'\n\nexport * from './errors/token-invalid-error.js'\nexport * from './errors/token-refresh-error.js'\nexport * from './errors/token-revoked-error.js'\n","export const ifNumber = (value: unknown): undefined | number =>\n typeof value === 'number' ? value : undefined\n","import { ifNumber } from './lib/number.js'\n\nexport class DidError extends Error {\n constructor(\n public readonly did: string,\n message: string,\n public readonly code: string,\n public readonly status = 400,\n cause?: unknown,\n ) {\n super(message, { cause })\n }\n\n /**\n * For compatibility with error handlers in common HTTP frameworks.\n */\n get statusCode() {\n return this.status\n }\n\n override toString() {\n return `${this.constructor.name} ${this.code} (${this.did}): ${this.message}`\n }\n\n static from(cause: unknown, did: string): DidError {\n if (cause instanceof DidError) {\n return cause\n }\n\n const message =\n cause instanceof Error\n ? cause.message\n : typeof cause === 'string'\n ? cause\n : 'An unknown error occurred'\n\n const status =\n typeof cause === 'object' && cause != null\n ? ('statusCode' in cause ? ifNumber(cause.statusCode) : undefined) ??\n ('status' in cause ? ifNumber(cause.status) : undefined)\n : undefined\n\n return new DidError(did, message, 'did-unknown-error', status, cause)\n }\n}\n\nexport class InvalidDidError extends DidError {\n constructor(did: string, message: string, cause?: unknown) {\n super(did, message, 'did-invalid', 400, cause)\n }\n}\n","import { z } from 'zod'\nimport { DidError, InvalidDidError } from './did-error.js'\n\nconst DID_PREFIX = 'did:'\nconst DID_PREFIX_LENGTH = DID_PREFIX.length\nexport { DID_PREFIX }\n\n/**\n * Type representation of a Did, with method.\n *\n * ```bnf\n * did = \"did:\" method-name \":\" method-specific-id\n * method-name = 1*method-char\n * method-char = %x61-7A / DIGIT\n * method-specific-id = *( *idchar \":\" ) 1*idchar\n * idchar = ALPHA / DIGIT / \".\" / \"-\" / \"_\" / pct-encoded\n * pct-encoded = \"%\" HEXDIG HEXDIG\n * ```\n *\n * @example\n * ```ts\n * type DidWeb = Did<'web'> // `did:web:${string}`\n * type DidCustom = Did<'web' | 'plc'> // `did:${'web' | 'plc'}:${string}`\n * type DidNever = Did<' invalid 🥴 '> // never\n * type DidFoo = Did<'foo' | ' invalid 🥴 '> // `did:foo:${string}`\n * ```\n *\n * @see {@link https://www.w3.org/TR/did-core/#did-syntax}\n */\nexport type Did = `did:${AsDidMethod}:${string}`\n\n/**\n * DID Method\n */\nexport type AsDidMethod = string extends M\n ? string // can't know...\n : AsDidMethodInternal\n\ntype AlphanumericChar = DigitChar | LowerAlphaChar\ntype DigitChar = '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9'\ntype LowerAlphaChar =\n | 'a'\n | 'b'\n | 'c'\n | 'd'\n | 'e'\n | 'f'\n | 'g'\n | 'h'\n | 'i'\n | 'j'\n | 'k'\n | 'l'\n | 'm'\n | 'n'\n | 'o'\n | 'p'\n | 'q'\n | 'r'\n | 's'\n | 't'\n | 'u'\n | 'v'\n | 'w'\n | 'x'\n | 'y'\n | 'z'\n\ntype AsDidMethodInternal<\n S,\n Acc extends string,\n> = S extends `${infer H}${infer T}`\n ? H extends AlphanumericChar\n ? AsDidMethodInternal\n : never\n : Acc extends ''\n ? never\n : Acc\n\n/**\n * DID Method-name check function.\n *\n * Check if the input is a valid DID method name, at the position between\n * `start` (inclusive) and `end` (exclusive).\n */\nexport function assertDidMethod(\n input: string,\n start = 0,\n end = input.length,\n): void {\n if (\n !Number.isFinite(end) ||\n !Number.isFinite(start) ||\n end < start ||\n end > input.length\n ) {\n throw new TypeError('Invalid start or end position')\n }\n if (end === start) {\n throw new InvalidDidError(input, `Empty method name`)\n }\n\n let c: number\n for (let i = start; i < end; i++) {\n c = input.charCodeAt(i)\n if (\n (c < 0x61 || c > 0x7a) && // a-z\n (c < 0x30 || c > 0x39) // 0-9\n ) {\n throw new InvalidDidError(\n input,\n `Invalid character at position ${i} in DID method name`,\n )\n }\n }\n}\n\n/**\n * This method assumes the input is a valid Did\n */\nexport function extractDidMethod(did: D) {\n const msidSep = did.indexOf(':', DID_PREFIX_LENGTH)\n const method = did.slice(DID_PREFIX_LENGTH, msidSep)\n return method as D extends Did ? M : string\n}\n\n/**\n * DID Method-specific identifier check function.\n *\n * Check if the input is a valid DID method-specific identifier, at the position\n * between `start` (inclusive) and `end` (exclusive).\n */\nexport function assertDidMsid(\n input: string,\n start = 0,\n end = input.length,\n): void {\n if (\n !Number.isFinite(end) ||\n !Number.isFinite(start) ||\n end < start ||\n end > input.length\n ) {\n throw new TypeError('Invalid start or end position')\n }\n if (end === start) {\n throw new InvalidDidError(input, `DID method-specific id must not be empty`)\n }\n\n let c: number\n for (let i = start; i < end; i++) {\n c = input.charCodeAt(i)\n\n // Check for frequent chars first\n if (\n (c < 0x61 || c > 0x7a) && // a-z\n (c < 0x41 || c > 0x5a) && // A-Z\n (c < 0x30 || c > 0x39) && // 0-9\n c !== 0x2e && // .\n c !== 0x2d && // -\n c !== 0x5f // _\n ) {\n // Less frequent chars are checked here\n\n // \":\"\n if (c === 0x3a) {\n if (i === end - 1) {\n throw new InvalidDidError(input, `DID cannot end with \":\"`)\n }\n continue\n }\n\n // pct-encoded\n if (c === 0x25) {\n c = input.charCodeAt(++i)\n if ((c < 0x30 || c > 0x39) && (c < 0x41 || c > 0x46)) {\n throw new InvalidDidError(\n input,\n `Invalid pct-encoded character at position ${i}`,\n )\n }\n\n c = input.charCodeAt(++i)\n if ((c < 0x30 || c > 0x39) && (c < 0x41 || c > 0x46)) {\n throw new InvalidDidError(\n input,\n `Invalid pct-encoded character at position ${i}`,\n )\n }\n\n // There must always be 2 HEXDIG after a \"%\"\n if (i >= end) {\n throw new InvalidDidError(\n input,\n `Incomplete pct-encoded character at position ${i - 2}`,\n )\n }\n\n continue\n }\n\n throw new InvalidDidError(\n input,\n `Disallowed character in DID at position ${i}`,\n )\n }\n }\n}\n\nexport function assertDid(input: unknown): asserts input is Did {\n if (typeof input !== 'string') {\n throw new InvalidDidError(typeof input, `DID must be a string`)\n }\n\n const { length } = input\n if (length > 2048) {\n throw new InvalidDidError(input, `DID is too long (2048 chars max)`)\n }\n\n if (!input.startsWith(DID_PREFIX)) {\n throw new InvalidDidError(input, `DID requires \"${DID_PREFIX}\" prefix`)\n }\n\n const idSep = input.indexOf(':', DID_PREFIX_LENGTH)\n if (idSep === -1) {\n throw new InvalidDidError(input, `Missing colon after method name`)\n }\n\n assertDidMethod(input, DID_PREFIX_LENGTH, idSep)\n assertDidMsid(input, idSep + 1, length)\n}\n\nexport function isDid(input: unknown): input is Did {\n try {\n assertDid(input)\n return true\n } catch (err) {\n if (err instanceof DidError) {\n return false\n }\n\n // Unexpected TypeError (should never happen)\n throw err\n }\n}\n\nexport function asDid(input: T) {\n assertDid(input)\n return input\n}\n\nexport const didSchema = z\n .string()\n .superRefine((value: string, ctx: z.RefinementCtx): value is Did => {\n try {\n assertDid(value)\n return true\n } catch (err) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: err instanceof Error ? err.message : 'Unexpected error',\n })\n return false\n }\n })\n","/**\n * @see {@link https://www.w3.org/TR/did-1.0/#dfn-did-fragments}\n * @see {@link https://datatracker.ietf.org/doc/html/rfc3986#section-3.5}\n */\nexport function isFragment(\n value: string,\n startIdx = 0,\n endIdx = value.length,\n): boolean {\n let charCode: number\n for (let i = startIdx; i < endIdx; i++) {\n charCode = value.charCodeAt(i)\n\n // fragment = *( pchar / \"/\" / \"?\" )\n // pchar = unreserved / pct-encoded / sub-delims / \":\" / \"@\"\n // unreserved = ALPHA / DIGIT / \"-\" / \".\" / \"_\" / \"~\"\n // pct-encoded = \"%\" HEXDIG HEXDIG\n // sub-delims = \"!\" / \"$\" / \"&\" / \"'\" / \"(\" / \")\" / \"*\" / \"+\" / \",\" / \";\" / \"=\"\n if (\n (charCode >= 65 /* A */ && charCode <= 90) /* Z */ ||\n (charCode >= 97 /* a */ && charCode <= 122) /* z */ ||\n (charCode >= 48 /* 0 */ && charCode <= 57) /* 9 */ ||\n charCode === 45 /* \"-\" */ ||\n charCode === 46 /* \".\" */ ||\n charCode === 95 /* \"_\" */ ||\n charCode === 126 /* \"~\" */\n ) {\n // unreserved\n } else if (\n charCode === 33 /* \"!\" */ ||\n charCode === 36 /* \"$\" */ ||\n charCode === 38 /* \"&\" */ ||\n charCode === 39 /* \"'\" */ ||\n charCode === 40 /* \"(\" */ ||\n charCode === 41 /* \")\" */ ||\n charCode === 42 /* \"*\" */ ||\n charCode === 43 /* \"+\" */ ||\n charCode === 44 /* \",\" */ ||\n charCode === 59 /* \";\" */ ||\n charCode === 61 /* \"=\" */\n ) {\n // sub-delims\n } else if (charCode === 58 /* \":\" */ || charCode === 64 /* \"@\" */) {\n // pchar extra\n } else if (charCode === 47 /* \"/\" */ || charCode === 63 /* \"?\" */) {\n // fragment extra\n } else if (charCode === 37 /* \"%\" */) {\n // pct-enc\n if (i + 2 >= endIdx) return false\n if (!isHexDigit(value.charCodeAt(i + 1))) return false\n if (!isHexDigit(value.charCodeAt(i + 2))) return false\n i += 2\n } else {\n return false\n }\n }\n\n return true\n}\n\nexport function isHexDigit(code: number): boolean {\n return (\n (code >= 48 && code <= 57) || // 0-9\n (code >= 65 && code <= 70) || // A-F\n (code >= 97 && code <= 102) // a-f\n )\n}\n\nexport const canParse =\n URL.canParse?.bind(URL) ??\n ((url, base) => {\n try {\n new URL(url, base)\n return true\n } catch {\n return false\n }\n })\n","import { InvalidDidError } from '../did-error.js'\nimport type { Did } from '../did.js'\n\nconst DID_PLC_PREFIX = `did:plc:`\nconst DID_PLC_PREFIX_LENGTH = DID_PLC_PREFIX.length\nconst DID_PLC_LENGTH = 32\n\nexport { DID_PLC_PREFIX }\n\nexport function isDidPlc(input: unknown): input is Did<'plc'> {\n // Optimization: equivalent to try/catch around \"assertDidPlc\"\n if (typeof input !== 'string') return false\n if (input.length !== DID_PLC_LENGTH) return false\n if (!input.startsWith(DID_PLC_PREFIX)) return false\n for (let i = DID_PLC_PREFIX_LENGTH; i < DID_PLC_LENGTH; i++) {\n if (!isBase32Char(input.charCodeAt(i))) return false\n }\n return true\n}\n\nexport function asDidPlc(input: T) {\n assertDidPlc(input)\n return input\n}\n\nexport function assertDidPlc(input: unknown): asserts input is Did<'plc'> {\n if (typeof input !== 'string') {\n throw new InvalidDidError(typeof input, `DID must be a string`)\n }\n\n if (!input.startsWith(DID_PLC_PREFIX)) {\n throw new InvalidDidError(input, `Invalid did:plc prefix`)\n }\n\n if (input.length !== DID_PLC_LENGTH) {\n throw new InvalidDidError(\n input,\n `did:plc must be ${DID_PLC_LENGTH} characters long`,\n )\n }\n\n // The following check is not necessary, as the check below is more strict:\n\n // assertDidMsid(input, DID_PLC_PREFIX.length)\n\n for (let i = DID_PLC_PREFIX_LENGTH; i < DID_PLC_LENGTH; i++) {\n if (!isBase32Char(input.charCodeAt(i))) {\n throw new InvalidDidError(input, `Invalid character at position ${i}`)\n }\n }\n}\n\nconst isBase32Char = (c: number): boolean =>\n (c >= 0x61 && c <= 0x7a) || (c >= 0x32 && c <= 0x37) // [a-z2-7]\n","import { InvalidDidError } from '../did-error.js'\nimport { type Did, assertDidMsid } from '../did.js'\nimport { canParse } from '../lib/uri.js'\n\nexport const DID_WEB_PREFIX = `did:web:` satisfies Did<'web'>\n\n/**\n * This function checks if the input is a valid Web DID, as per DID spec.\n */\nexport function isDidWeb(input: unknown): input is Did<'web'> {\n // Optimization: make cheap checks first\n if (typeof input !== 'string') return false\n if (!input.startsWith(DID_WEB_PREFIX)) return false\n if (input.charAt(DID_WEB_PREFIX.length) === ':') return false\n\n try {\n assertDidMsid(input, DID_WEB_PREFIX.length)\n } catch {\n return false\n }\n\n return canParse(buildDidWebUrl(input as Did<'web'>))\n}\n\nexport function asDidWeb(input: T) {\n assertDidWeb(input)\n return input\n}\n\nexport function assertDidWeb(input: unknown): asserts input is Did<'web'> {\n if (typeof input !== 'string') {\n throw new InvalidDidError(typeof input, `DID must be a string`)\n }\n\n if (!input.startsWith(DID_WEB_PREFIX)) {\n throw new InvalidDidError(input, `Invalid did:web prefix`)\n }\n\n if (input.charAt(DID_WEB_PREFIX.length) === ':') {\n throw new InvalidDidError(input, 'did:web MSID must not start with a colon')\n }\n\n // Make sure every char is valid (per DID spec)\n assertDidMsid(input, DID_WEB_PREFIX.length)\n\n if (!canParse(buildDidWebUrl(input as Did<'web'>))) {\n throw new InvalidDidError(input, 'Invalid Web DID')\n }\n}\n\nexport function didWebToUrl(did: Did<'web'>) {\n try {\n return new URL(buildDidWebUrl(did)) as URL & {\n protocol: 'http:' | 'https:'\n }\n } catch (cause) {\n throw new InvalidDidError(did, 'Invalid Web DID', cause)\n }\n}\n\nexport function urlToDidWeb(url: URL): Did<'web'> {\n const port = url.port ? `%3A${url.port}` : ''\n const path = url.pathname === '/' ? '' : url.pathname.replaceAll('/', ':')\n\n return `did:web:${url.hostname}${port}${path}`\n}\n\nexport function buildDidWebUrl(did: Did<'web'>): string {\n const hostIdx = DID_WEB_PREFIX.length\n const pathIdx = did.indexOf(':', hostIdx)\n\n const hostEnc =\n pathIdx === -1 ? did.slice(hostIdx) : did.slice(hostIdx, pathIdx)\n const host = hostEnc.replaceAll('%3A', ':')\n const path = pathIdx === -1 ? '' : did.slice(pathIdx).replaceAll(':', '/')\n const proto =\n host.startsWith('localhost') &&\n (host.length === 9 || host.charCodeAt(9) === 58) /* ':' */\n ? 'http'\n : 'https'\n\n return `${proto}://${host}${path}`\n}\n","export type Identifier =\n | `#${I}`\n | `${D}#${I}`\nexport function matchesIdentifier(\n did: D,\n id: I,\n candidate: string,\n): candidate is Identifier {\n // optimized implementation of:\n // return candidate === `#${id}` || candidate === `${did}#${id}`\n\n return candidate.charCodeAt(0) === 35 // '#'\n ? candidate.length === id.length + 1 && candidate.endsWith(id)\n : candidate.length === id.length + 1 + did.length &&\n candidate.charCodeAt(did.length) === 35 && // '#'\n candidate.startsWith(did) &&\n candidate.endsWith(id)\n}\n","import { z } from 'zod'\nimport type { DidDocument, DidService } from './did-document.js'\nimport { DidError, InvalidDidError } from './did-error.js'\nimport { type DidRefAbsolute, isDidRefAbsolute } from './did-ref.js'\nimport type { Did } from './did.js'\nimport { canParse } from './lib/uri.js'\nimport {\n DID_PLC_PREFIX,\n DID_WEB_PREFIX,\n assertDidPlc,\n assertDidWeb,\n isDidPlc,\n isDidWeb,\n} from './methods.js'\nimport { type Identifier, matchesIdentifier } from './utils.js'\n\n// This file contains atproto-specific DID validation utilities.\n\nexport type AtprotoIdentityDidMethods = 'plc' | 'web'\nexport type AtprotoDid = Did\nexport type AtprotoDidDocument = DidDocument\n\nexport const atprotoDidSchema = z\n .string()\n .refine(isAtprotoDid, `Atproto only allows \"plc\" and \"web\" DID methods`)\n\nexport function isAtprotoDid(input: unknown): input is AtprotoDid {\n return isDidPlc(input) || isAtprotoDidWeb(input)\n}\n\nexport function asAtprotoDid(input: T) {\n assertAtprotoDid(input)\n return input\n}\n\nexport function assertAtprotoDid(input: unknown): asserts input is AtprotoDid {\n if (typeof input !== 'string') {\n throw new InvalidDidError(typeof input, `DID must be a string`)\n } else if (input.startsWith(DID_PLC_PREFIX)) {\n assertDidPlc(input)\n } else if (input.startsWith(DID_WEB_PREFIX)) {\n assertAtprotoDidWeb(input)\n } else {\n throw new InvalidDidError(\n input,\n `Atproto only allows \"plc\" and \"web\" DID methods`,\n )\n }\n}\n\nexport function assertAtprotoDidWeb(\n input: unknown,\n): asserts input is Did<'web'> {\n assertDidWeb(input)\n\n if (isDidWebWithPath(input)) {\n throw new InvalidDidError(\n input,\n `Atproto does not allow path components in Web DIDs`,\n )\n }\n\n if (isDidWebWithHttpsPort(input)) {\n throw new InvalidDidError(\n input,\n `Atproto does not allow port numbers in Web DIDs, except for localhost`,\n )\n }\n}\n\n/**\n * @see {@link https://atproto.com/specs/did#blessed-did-methods}\n */\nexport function isAtprotoDidWeb(input: unknown): input is Did<'web'> {\n if (!isDidWeb(input)) {\n return false\n }\n\n if (isDidWebWithPath(input)) {\n return false\n }\n\n if (isDidWebWithHttpsPort(input)) {\n return false\n }\n\n return true\n}\n\nfunction isDidWebWithPath(did: Did<'web'>): boolean {\n return did.includes(':', DID_WEB_PREFIX.length)\n}\n\nfunction isLocalhostDid(did: Did<'web'>): boolean {\n return (\n did === 'did:web:localhost' ||\n did.startsWith('did:web:localhost:') ||\n did.startsWith('did:web:localhost%3A')\n )\n}\n\nfunction isDidWebWithHttpsPort(did: Did<'web'>): boolean {\n if (isLocalhostDid(did)) return false\n\n const pathIdx = did.indexOf(':', DID_WEB_PREFIX.length)\n\n const hasPort =\n pathIdx === -1\n ? // No path component, check if there's a port separator anywhere after\n // the \"did:web:\" prefix\n did.includes('%3A', DID_WEB_PREFIX.length)\n : // There is a path component; if there is an encoded colon *before* it,\n // then there is a port number\n did.lastIndexOf('%3A', pathIdx) !== -1\n\n return hasPort\n}\n\nexport type AtprotoData<\n M extends AtprotoIdentityDidMethods = AtprotoIdentityDidMethods,\n> = {\n did: Did\n aka?: string\n key?: AtprotoVerificationMethod\n pds?: AtprotoPersonalDataServerService\n}\n\nexport function extractAtprotoData(\n document: DidDocument,\n): AtprotoData {\n return {\n did: document.id,\n aka: document.alsoKnownAs?.find(isAtprotoAka)?.slice(5),\n key: document.verificationMethod?.find(\n isAtprotoVerificationMethod,\n document,\n ),\n pds: document.service?.find(\n isAtprotoPersonalDataServerService,\n document,\n ),\n }\n}\n\nexport function extractPdsUrl(document: AtprotoDidDocument): URL {\n const service = document.service?.find(\n isAtprotoPersonalDataServerService,\n document,\n )\n\n if (!service) {\n throw new DidError(\n document.id,\n `Document ${document.id} does not contain a (valid) #atproto_pds service URL`,\n 'did-service-not-found',\n )\n }\n\n return new URL(service.serviceEndpoint)\n}\n\nexport type AtprotoAka = `at://${string}`\nexport function isAtprotoAka(value: string): value is AtprotoAka {\n return value.startsWith('at://')\n}\n\nexport type AtprotoPersonalDataServerService<\n M extends AtprotoIdentityDidMethods = AtprotoIdentityDidMethods,\n> = DidService & {\n id: Identifier, 'atproto_pds'>\n type: 'AtprotoPersonalDataServer'\n serviceEndpoint: string\n}\n\nexport function isAtprotoPersonalDataServerService<\n M extends AtprotoIdentityDidMethods = AtprotoIdentityDidMethods,\n>(\n this: DidDocument,\n service: null | undefined | DidService,\n): service is AtprotoPersonalDataServerService {\n return (\n service?.type === 'AtprotoPersonalDataServer' &&\n typeof service.serviceEndpoint === 'string' &&\n canParse(service.serviceEndpoint) &&\n matchesIdentifier(this.id, 'atproto_pds', service.id)\n )\n}\n\nexport const ATPROTO_VERIFICATION_METHOD_TYPES = Object.freeze([\n 'EcdsaSecp256r1VerificationKey2019',\n 'EcdsaSecp256k1VerificationKey2019',\n 'Multikey',\n] as const)\nexport type SupportedAtprotoVerificationMethodType =\n (typeof ATPROTO_VERIFICATION_METHOD_TYPES)[number]\n\ntype VerificationMethod = NonNullable[number]\nexport type AtprotoVerificationMethod<\n M extends AtprotoIdentityDidMethods = AtprotoIdentityDidMethods,\n> = Extract & {\n id: Identifier, 'atproto'>\n type: SupportedAtprotoVerificationMethodType\n publicKeyMultibase: string\n}\n\nexport function isAtprotoVerificationMethod<\n M extends AtprotoIdentityDidMethods = AtprotoIdentityDidMethods,\n>(\n this: DidDocument,\n method:\n | null\n | undefined\n | NonNullable['verificationMethod']>[number],\n): method is AtprotoVerificationMethod {\n return (\n typeof method === 'object' &&\n typeof method?.publicKeyMultibase === 'string' &&\n (ATPROTO_VERIFICATION_METHOD_TYPES as readonly unknown[]).includes(\n method.type,\n ) &&\n matchesIdentifier(this.id, 'atproto', method.id)\n )\n}\n\n/**\n * An atproto-constrained absolute DID reference: `${AtprotoDid}#${fragment}`.\n */\nexport type AtprotoDidRefAbsolute = DidRefAbsolute\n\nexport function isAtprotoDidRefAbsolute(\n value: unknown,\n): value is AtprotoDidRefAbsolute {\n if (!isDidRefAbsolute(value)) return false\n return isAtprotoDid(value.slice(0, value.indexOf('#')))\n}\n","import { z } from 'zod'\nimport { type Did, didSchema } from './did.js'\nimport { isFragment } from './lib/uri.js'\n\n/**\n * RFC3968 compliant URI\n *\n * @see {@link https://www.rfc-editor.org/rfc/rfc3986}\n */\nconst rfc3968UriSchema = z.string().url('RFC3968 compliant URI')\n\nconst didControllerSchema = z.union([didSchema, z.array(didSchema)])\n\n/**\n * @note this schema is too permissive\n */\nconst didRelativeUriSchema = z.union([\n rfc3968UriSchema.refine(\n (value) => {\n const fragmentIndex = value.indexOf('#')\n if (fragmentIndex === -1) return false\n return isFragment(value, fragmentIndex + 1)\n },\n {\n message: 'Missing or invalid fragment in RFC3968 URI',\n },\n ),\n z\n .string()\n .refine((value) => value.charCodeAt(0) === 35 /* # */, {\n message: 'Fragment must start with #',\n })\n .refine((value) => isFragment(value, 1), {\n message: 'Invalid char in URI fragment',\n }),\n])\n\n/**\n * @see {@link https://www.w3.org/TR/did-1.0/#verification-material Verification Material}\n */\nconst didVerificationMethodSchema = z.object({\n id: didRelativeUriSchema,\n type: z.string().min(1),\n controller: didControllerSchema,\n publicKeyJwk: z.record(z.string(), z.unknown()).optional(),\n publicKeyMultibase: z.string().optional(),\n})\n\n/**\n * The value of the id property MUST be a URI conforming to [RFC3986]. A\n * conforming producer MUST NOT produce multiple service entries with the same\n * id. A conforming consumer MUST produce an error if it detects multiple\n * service entries with the same id.\n *\n * @note Normally, only rfc3968UriSchema should be allowed here. However, the\n * did:plc uses relative URI. For this reason, we also allow relative URIs\n * here.\n */\nconst didServiceIdSchema = didRelativeUriSchema\n\n/**\n * The value of the type property MUST be a string or a set of strings. In order\n * to maximize interoperability, the service type and its associated properties\n * SHOULD be registered in the DID Specification Registries\n * [DID-SPEC-REGISTRIES].\n */\nconst didServiceTypeSchema = z.union([z.string(), z.array(z.string())])\n\n/**\n * The value of the serviceEndpoint property MUST be a string, a map, or a set\n * composed of one or more strings and/or maps. All string values MUST be valid\n * URIs conforming to [RFC3986] and normalized according to the Normalization\n * and Comparison rules in RFC3986 and to any normalization rules in its\n * applicable URI scheme specification.\n */\nconst didServiceEndpointSchema = z.union([\n rfc3968UriSchema,\n z.record(z.string(), rfc3968UriSchema),\n z\n .array(z.union([rfc3968UriSchema, z.record(z.string(), rfc3968UriSchema)]))\n .nonempty(),\n])\n\n/**\n * Each service map MUST contain id, type, and serviceEndpoint properties.\n * @see {@link https://www.w3.org/TR/did-core/#services}\n */\nconst didServiceSchema = z.object({\n id: didServiceIdSchema,\n type: didServiceTypeSchema,\n serviceEndpoint: didServiceEndpointSchema,\n})\n\nexport type DidService = z.infer\n\n/**\n * @see {@link https://www.w3.org/TR/did-1.0/#referring-to-verification-methods Referring to Verification Methods}\n */\nconst verificationMethodReference = z.union([\n //\n didRelativeUriSchema,\n didVerificationMethodSchema,\n])\n\n/**\n * @note This schema is incomplete\n * @see {@link https://www.w3.org/TR/did-core/#production-0}\n */\nexport const didDocumentSchema = z.object({\n '@context': z\n .union([\n z.literal('https://www.w3.org/ns/did/v1'),\n z\n .array(z.string().url())\n .nonempty()\n .refine((data) => data[0] === 'https://www.w3.org/ns/did/v1', {\n message: 'First @context must be https://www.w3.org/ns/did/v1',\n }),\n ])\n // @NOTE @context is required by producers, but optional for consumers.\n .optional(),\n id: didSchema,\n controller: didControllerSchema.optional(),\n alsoKnownAs: z.array(rfc3968UriSchema).optional(),\n service: z.array(didServiceSchema).optional(),\n authentication: z.array(verificationMethodReference).optional(),\n verificationMethod: z.array(didVerificationMethodSchema).optional(),\n})\n\nexport type DidDocument = z.infer<\n typeof didDocumentSchema\n> & { id: Did }\n\n// @TODO: add other refinements ?\nexport const didDocumentValidator = didDocumentSchema\n // Ensure that every service id is unique\n .superRefine(({ id: did, service }, ctx) => {\n if (service) {\n const visited = new Set()\n\n for (let i = 0; i < service.length; i++) {\n const current = service[i]\n\n const serviceId = current.id.startsWith('#')\n ? `${did}${current.id}`\n : current.id\n\n if (!visited.has(serviceId)) {\n visited.add(serviceId)\n } else {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `Duplicate service id (${current.id}) found in the document`,\n path: ['service', i, 'id'],\n })\n }\n }\n }\n })\n","export type Awaitable = V | PromiseLike\n\nexport type ContextOptions = C extends void | undefined\n ? { context?: undefined }\n : { context: C }\n\nexport function assert(\n condition: unknown,\n message = 'Assertion failed',\n): asserts condition {\n if (!condition) throw new Error(message)\n}\n","import type { GetOptions, Key, SimpleStore, Value } from './simple-store.js'\nimport { type Awaitable, type ContextOptions, assert } from './util.js'\n\nexport type { GetOptions }\nexport type GetCachedOptions = ContextOptions & {\n signal?: AbortSignal\n\n /**\n * Do not use the cache to get the value. Always get a new value from the\n * getter function.\n *\n * @default false\n */\n noCache?: boolean\n\n /**\n * When getting a value from the cache, allow the value to be returned even if\n * it is stale.\n *\n * Has no effect if the `isStale` option was not provided to the CachedGetter.\n *\n * @default true // If the CachedGetter has an isStale option\n * @default false // If no isStale option was provided to the CachedGetter\n */\n allowStale?: boolean\n}\n\nexport type GetterOptions = {\n context: C extends void ? undefined : C\n noCache: boolean\n signal?: AbortSignal\n}\n\nexport type Getter = (\n key: K,\n options: GetterOptions,\n storedValue: undefined | V,\n) => Awaitable\n\nexport type CachedGetterOptions = {\n isStale?: (key: K, value: V) => boolean | PromiseLike\n deleteOnError?: (\n err: unknown,\n key: K,\n value: V,\n ) => boolean | PromiseLike\n}\n\ntype PendingItem = Promise<{ value: V; isFresh: boolean }>\n\nconst returnTrue = () => true\nconst returnFalse = () => false\n\n/**\n * Wrapper utility that uses a store to speed up the retrieval of values from an\n * (expensive) getter function.\n */\nexport class CachedGetter<\n K extends Key = string,\n V extends Value = Value,\n C = void,\n> {\n readonly #pending = new Map>()\n readonly #getter: Getter\n readonly #store: SimpleStore\n readonly #options: CachedGetterOptions = {}\n\n constructor(\n getter: Getter,\n store: SimpleStore,\n options: CachedGetterOptions = {},\n ) {\n this.#getter = getter\n this.#store = store\n this.#options = options\n }\n\n async get(\n key: C extends void ? K : never,\n options?: GetCachedOptions,\n ): Promise\n async get(\n key: C extends void ? never : K,\n options: GetCachedOptions,\n ): Promise\n async get(\n key: K,\n {\n signal,\n context,\n allowStale = false,\n noCache = false,\n } = {} as GetCachedOptions,\n ): Promise {\n signal?.throwIfAborted()\n\n const { isStale, deleteOnError } = this.#options\n\n const allowStored: (value: V) => Awaitable = noCache\n ? returnFalse // Never allow stored values to be returned\n : allowStale || isStale == null\n ? returnTrue // Always allow stored values to be returned\n : async (value: V) => !(await isStale(key, value))\n\n // As long as concurrent requests are made for the same key, only one\n // request will be made to the getStored & getter functions at a time. This\n // works because there is no async operation between the while() loop and\n // the pending.set() call below. Because of the single threaded nature of\n // JavaScript, the pending item will be set before the next iteration of the\n // while loop of any concurrent request.\n let previousExecutionFlow: undefined | PendingItem\n while ((previousExecutionFlow = this.#pending.get(key))) {\n try {\n // If a concurrent request is already in progress, wait for it to finish\n const { isFresh, value } = await previousExecutionFlow\n\n // Use the concurrent request's result if it is fresh\n if (isFresh) return value\n // Use the concurrent request's result if not fresh (loaded from the\n // store), and matches the conditions for using a stored value.\n if (await allowStored(value)) return value\n } catch {\n // Ignore errors from previous execution flows (they will have been\n // propagated by that flow).\n }\n\n // Break the loop if the signal was aborted\n signal?.throwIfAborted()\n }\n\n const currentExecutionFlow: PendingItem = Promise.resolve()\n .then(async () => {\n signal?.throwIfAborted()\n\n const storedValue = await this.getStored(key, { signal })\n\n if (storedValue !== undefined && (await allowStored(storedValue))) {\n // Use the stored value as return value for the current execution\n // flow. Notify other concurrent execution flows (that should be\n // \"awaiting\" in the loop above until this promise resolves) that we\n // got a value, but that it came from the store (isFresh = false).\n\n // We don't throw if the signal is aborted because we do want to\n // return the stored value to allow concurrent execution flows to use\n // it. If we want to return a failed promise, we can\n // signal?.throwIfAborted before returning at the end of this\n // method.\n return { isFresh: false, value: storedValue }\n }\n\n // Don't call the getter function if the signal was aborted, because it\n // may be an expensive operation.\n signal?.throwIfAborted()\n\n return Promise.resolve()\n .then(async () => {\n const options = { signal, noCache, context } as GetterOptions\n return this.#getter.call(null, key, options, storedValue)\n })\n .catch(async (err) => {\n if (storedValue !== undefined) {\n try {\n if (await deleteOnError?.(err, key, storedValue)) {\n await this.delStored(key, err)\n }\n } catch (error) {\n throw new AggregateError(\n [err, error],\n 'Error while deleting stored value',\n )\n }\n }\n throw err\n })\n .then(async (value) => {\n // The value is stored even if the signal was aborted.\n await this.setStored(key, value)\n return { isFresh: true, value }\n })\n })\n .finally(() => {\n assert(\n this.#pending.get(key) === currentExecutionFlow,\n `Pending item for key \"${key}\" was replaced before it finished.`,\n )\n this.#pending.delete(key)\n })\n\n // This should never happen. Indeed, there must not be any 'await'\n // statement between this and the loop iteration check meaning that\n // this.pending.get returned undefined. It is there to catch bugs that\n // would occur in future changes to the code.\n assert(\n !this.#pending.has(key),\n `Concurrent execution flow for key \"${key}\" should not exist.`,\n )\n\n this.#pending.set(key, currentExecutionFlow)\n\n const { value } = await currentExecutionFlow\n return value\n }\n\n // @NOTE We propagate errors from the store. If the use-case prefers to ignore\n // errors from the store, it should be handled in the store implementation\n // (eg. by returning `undefined` instead of throwing).\n\n // @NOTE We define the store methods here to allow for overriding them in\n // subclasses.\n\n async getStored(key: K, options?: GetOptions): Promise {\n return this.#store.get(key, options)\n }\n\n async setStored(key: K, value: V): Promise {\n await this.#store.set(key, value)\n }\n\n async delStored(key: K, _cause?: unknown): Promise {\n await this.#store.del(key)\n }\n}\n","import type { Key, SimpleStore, Value } from './simple-store.js'\n\nexport type StoreOperation = 'get' | 'set' | 'del' | 'clear'\n\nexport type StoreErrorHandler = (\n err: unknown,\n operation: StoreOperation,\n key?: K,\n) => void\n\n/**\n * Default {@link StoreErrorHandler} that logs the error to the console.\n */\nexport const logStoreError: StoreErrorHandler = (err, operation) => {\n console.error(`SimpleStore error during \"${operation}\"`, err)\n}\n\n/**\n * Wraps a {@link SimpleStore} so that errors thrown by its operations are\n * caught and passed to `onError` instead of being propagated.\n *\n * This is meant to be used when the store acts as a *cache* in front of a real\n * source of truth: a transient store failure should degrade to a cache miss\n * (and a refetch from the getter) rather than break the operation. When used\n * with a {@link CachedGetter}, a swallowed `get` error resolves to `undefined`,\n * which the getter treats as a cache miss.\n *\n * Do *not* use this when the store is the source of truth (e.g. an OAuth\n * session store): in that case a persistence failure must be propagated.\n *\n * @note The `value` is intentionally not passed to `onError` to avoid logging\n * potentially large or sensitive payloads.\n */\nexport function swallowStoreErrors(\n store: SimpleStore,\n onError: StoreErrorHandler = logStoreError,\n): Required> {\n return {\n async get(key, options) {\n options?.signal?.throwIfAborted()\n try {\n return await store.get(key, options)\n } catch (err) {\n // A caller-initiated cancellation is control flow, not a store\n // failure: propagate it instead of logging it and returning a\n // (misleading) cache miss.\n if (options?.signal?.aborted) throw err\n onError(err, 'get', key)\n return undefined\n }\n },\n async set(key, value) {\n try {\n await store.set(key, value)\n } catch (err) {\n onError(err, 'set', key)\n }\n },\n async del(key) {\n try {\n await store.del(key)\n } catch (err) {\n onError(err, 'del', key)\n }\n },\n async clear() {\n try {\n await store.clear?.()\n } catch (err) {\n onError(err, 'clear')\n }\n },\n }\n}\n","/**\n * @module LRUCache\n */\n\n// module-private names and types\ntype Perf = { now: () => number }\nconst perf: Perf =\n typeof performance === 'object' &&\n performance &&\n typeof performance.now === 'function'\n ? performance\n : Date\n\nconst warned = new Set()\n\n// either a function or a class\ntype ForC = ((...a: any[]) => any) | { new (...a: any[]): any }\n\n/* c8 ignore start */\nconst PROCESS = (\n typeof process === 'object' && !!process ? process : {}\n) as { [k: string]: any }\n/* c8 ignore start */\n\nconst emitWarning = (\n msg: string,\n type: string,\n code: string,\n fn: ForC\n) => {\n typeof PROCESS.emitWarning === 'function'\n ? PROCESS.emitWarning(msg, type, code, fn)\n : console.error(`[${code}] ${type}: ${msg}`)\n}\n\nlet AC = globalThis.AbortController\nlet AS = globalThis.AbortSignal\n\n/* c8 ignore start */\nif (typeof AC === 'undefined') {\n //@ts-ignore\n AS = class AbortSignal {\n onabort?: (...a: any[]) => any\n _onabort: ((...a: any[]) => any)[] = []\n reason?: any\n aborted: boolean = false\n addEventListener(_: string, fn: (...a: any[]) => any) {\n this._onabort.push(fn)\n }\n }\n //@ts-ignore\n AC = class AbortController {\n constructor() {\n warnACPolyfill()\n }\n signal = new AS()\n abort(reason: any) {\n if (this.signal.aborted) return\n //@ts-ignore\n this.signal.reason = reason\n //@ts-ignore\n this.signal.aborted = true\n //@ts-ignore\n for (const fn of this.signal._onabort) {\n fn(reason)\n }\n this.signal.onabort?.(reason)\n }\n }\n let printACPolyfillWarning =\n PROCESS.env?.LRU_CACHE_IGNORE_AC_WARNING !== '1'\n const warnACPolyfill = () => {\n if (!printACPolyfillWarning) return\n printACPolyfillWarning = false\n emitWarning(\n 'AbortController is not defined. If using lru-cache in ' +\n 'node 14, load an AbortController polyfill from the ' +\n '`node-abort-controller` package. A minimal polyfill is ' +\n 'provided for use by LRUCache.fetch(), but it should not be ' +\n 'relied upon in other contexts (eg, passing it to other APIs that ' +\n 'use AbortController/AbortSignal might have undesirable effects). ' +\n 'You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.',\n 'NO_ABORT_CONTROLLER',\n 'ENOTSUP',\n warnACPolyfill\n )\n }\n}\n/* c8 ignore stop */\n\nconst shouldWarn = (code: string) => !warned.has(code)\n\nconst TYPE = Symbol('type')\nexport type PosInt = number & { [TYPE]: 'Positive Integer' }\nexport type Index = number & { [TYPE]: 'LRUCache Index' }\n\nconst isPosInt = (n: any): n is PosInt =>\n n && n === Math.floor(n) && n > 0 && isFinite(n)\n\nexport type UintArray = Uint8Array | Uint16Array | Uint32Array\nexport type NumberArray = UintArray | number[]\n\n/* c8 ignore start */\n// This is a little bit ridiculous, tbh.\n// The maximum array length is 2^32-1 or thereabouts on most JS impls.\n// And well before that point, you're caching the entire world, I mean,\n// that's ~32GB of just integers for the next/prev links, plus whatever\n// else to hold that many keys and values. Just filling the memory with\n// zeroes at init time is brutal when you get that big.\n// But why not be complete?\n// Maybe in the future, these limits will have expanded.\nconst getUintArray = (max: number) =>\n !isPosInt(max)\n ? null\n : max <= Math.pow(2, 8)\n ? Uint8Array\n : max <= Math.pow(2, 16)\n ? Uint16Array\n : max <= Math.pow(2, 32)\n ? Uint32Array\n : max <= Number.MAX_SAFE_INTEGER\n ? ZeroArray\n : null\n/* c8 ignore stop */\n\nclass ZeroArray extends Array {\n constructor(size: number) {\n super(size)\n this.fill(0)\n }\n}\nexport type { ZeroArray }\nexport type { Stack }\n\nexport type StackLike = Stack | Index[]\nclass Stack {\n heap: NumberArray\n length: number\n // private constructor\n static #constructing: boolean = false\n static create(max: number): StackLike {\n const HeapCls = getUintArray(max)\n if (!HeapCls) return []\n Stack.#constructing = true\n const s = new Stack(max, HeapCls)\n Stack.#constructing = false\n return s\n }\n constructor(\n max: number,\n HeapCls: { new (n: number): NumberArray }\n ) {\n /* c8 ignore start */\n if (!Stack.#constructing) {\n throw new TypeError('instantiate Stack using Stack.create(n)')\n }\n /* c8 ignore stop */\n this.heap = new HeapCls(max)\n this.length = 0\n }\n push(n: Index) {\n this.heap[this.length++] = n\n }\n pop(): Index {\n return this.heap[--this.length] as Index\n }\n}\n\n/**\n * Promise representing an in-progress {@link LRUCache#fetch} call\n */\nexport type BackgroundFetch = Promise & {\n __returned: BackgroundFetch | undefined\n __abortController: AbortController\n __staleWhileFetching: V | undefined\n}\n\nexport type DisposeTask = [\n value: V,\n key: K,\n reason: LRUCache.DisposeReason\n]\n\nexport namespace LRUCache {\n /**\n * An integer greater than 0, reflecting the calculated size of items\n */\n export type Size = number\n\n /**\n * Integer greater than 0, representing some number of milliseconds, or the\n * time at which a TTL started counting from.\n */\n export type Milliseconds = number\n\n /**\n * An integer greater than 0, reflecting a number of items\n */\n export type Count = number\n\n /**\n * The reason why an item was removed from the cache, passed\n * to the {@link Disposer} methods.\n *\n * - `evict`: The item was evicted because it is the least recently used,\n * and the cache is full.\n * - `set`: A new value was set, overwriting the old value being disposed.\n * - `delete`: The item was explicitly deleted, either by calling\n * {@link LRUCache#delete}, {@link LRUCache#clear}, or\n * {@link LRUCache#set} with an undefined value.\n * - `expire`: The item was removed due to exceeding its TTL.\n * - `fetch`: A {@link OptionsBase#fetchMethod} operation returned\n * `undefined` or was aborted, causing the item to be deleted.\n */\n export type DisposeReason =\n | 'evict'\n | 'set'\n | 'delete'\n | 'expire'\n | 'fetch'\n /**\n * A method called upon item removal, passed as the\n * {@link OptionsBase.dispose} and/or\n * {@link OptionsBase.disposeAfter} options.\n */\n export type Disposer = (\n value: V,\n key: K,\n reason: DisposeReason\n ) => void\n\n /**\n * A function that returns the effective calculated size\n * of an entry in the cache.\n */\n export type SizeCalculator = (value: V, key: K) => Size\n\n /**\n * Options provided to the\n * {@link OptionsBase.fetchMethod} function.\n */\n export interface FetcherOptions {\n signal: AbortSignal\n options: FetcherFetchOptions\n /**\n * Object provided in the {@link FetchOptions.context} option to\n * {@link LRUCache#fetch}\n */\n context: FC\n }\n\n /**\n * Occasionally, it may be useful to track the internal behavior of the\n * cache, particularly for logging, debugging, or for behavior within the\n * `fetchMethod`. To do this, you can pass a `status` object to the\n * {@link LRUCache#fetch}, {@link LRUCache#get}, {@link LRUCache#set},\n * {@link LRUCache#memo}, and {@link LRUCache#has} methods.\n *\n * The `status` option should be a plain JavaScript object. The following\n * fields will be set on it appropriately, depending on the situation.\n */\n export interface Status {\n /**\n * The status of a set() operation.\n *\n * - add: the item was not found in the cache, and was added\n * - update: the item was in the cache, with the same value provided\n * - replace: the item was in the cache, and replaced\n * - miss: the item was not added to the cache for some reason\n */\n set?: 'add' | 'update' | 'replace' | 'miss'\n\n /**\n * the ttl stored for the item, or undefined if ttls are not used.\n */\n ttl?: Milliseconds\n\n /**\n * the start time for the item, or undefined if ttls are not used.\n */\n start?: Milliseconds\n\n /**\n * The timestamp used for TTL calculation\n */\n now?: Milliseconds\n\n /**\n * the remaining ttl for the item, or undefined if ttls are not used.\n */\n remainingTTL?: Milliseconds\n\n /**\n * The calculated size for the item, if sizes are used.\n */\n entrySize?: Size\n\n /**\n * The total calculated size of the cache, if sizes are used.\n */\n totalCalculatedSize?: Size\n\n /**\n * A flag indicating that the item was not stored, due to exceeding the\n * {@link OptionsBase.maxEntrySize}\n */\n maxEntrySizeExceeded?: true\n\n /**\n * The old value, specified in the case of `set:'update'` or\n * `set:'replace'`\n */\n oldValue?: V\n\n /**\n * The results of a {@link LRUCache#has} operation\n *\n * - hit: the item was found in the cache\n * - stale: the item was found in the cache, but is stale\n * - miss: the item was not found in the cache\n */\n has?: 'hit' | 'stale' | 'miss'\n\n /**\n * The status of a {@link LRUCache#fetch} operation.\n * Note that this can change as the underlying fetch() moves through\n * various states.\n *\n * - inflight: there is another fetch() for this key which is in process\n * - get: there is no {@link OptionsBase.fetchMethod}, so\n * {@link LRUCache#get} was called.\n * - miss: the item is not in cache, and will be fetched.\n * - hit: the item is in the cache, and was resolved immediately.\n * - stale: the item is in the cache, but stale.\n * - refresh: the item is in the cache, and not stale, but\n * {@link FetchOptions.forceRefresh} was specified.\n */\n fetch?: 'get' | 'inflight' | 'miss' | 'hit' | 'stale' | 'refresh'\n\n /**\n * The {@link OptionsBase.fetchMethod} was called\n */\n fetchDispatched?: true\n\n /**\n * The cached value was updated after a successful call to\n * {@link OptionsBase.fetchMethod}\n */\n fetchUpdated?: true\n\n /**\n * The reason for a fetch() rejection. Either the error raised by the\n * {@link OptionsBase.fetchMethod}, or the reason for an\n * AbortSignal.\n */\n fetchError?: Error\n\n /**\n * The fetch received an abort signal\n */\n fetchAborted?: true\n\n /**\n * The abort signal received was ignored, and the fetch was allowed to\n * continue.\n */\n fetchAbortIgnored?: true\n\n /**\n * The fetchMethod promise resolved successfully\n */\n fetchResolved?: true\n\n /**\n * The fetchMethod promise was rejected\n */\n fetchRejected?: true\n\n /**\n * The status of a {@link LRUCache#get} operation.\n *\n * - fetching: The item is currently being fetched. If a previous value\n * is present and allowed, that will be returned.\n * - stale: The item is in the cache, and is stale.\n * - hit: the item is in the cache\n * - miss: the item is not in the cache\n */\n get?: 'stale' | 'hit' | 'miss'\n\n /**\n * A fetch or get operation returned a stale value.\n */\n returnedStale?: true\n }\n\n /**\n * options which override the options set in the LRUCache constructor\n * when calling {@link LRUCache#fetch}.\n *\n * This is the union of {@link GetOptions} and {@link SetOptions}, plus\n * {@link OptionsBase.noDeleteOnFetchRejection},\n * {@link OptionsBase.allowStaleOnFetchRejection},\n * {@link FetchOptions.forceRefresh}, and\n * {@link FetcherOptions.context}\n *\n * Any of these may be modified in the {@link OptionsBase.fetchMethod}\n * function, but the {@link GetOptions} fields will of course have no\n * effect, as the {@link LRUCache#get} call already happened by the time\n * the fetchMethod is called.\n */\n export interface FetcherFetchOptions\n extends Pick<\n OptionsBase,\n | 'allowStale'\n | 'updateAgeOnGet'\n | 'noDeleteOnStaleGet'\n | 'sizeCalculation'\n | 'ttl'\n | 'noDisposeOnSet'\n | 'noUpdateTTL'\n | 'noDeleteOnFetchRejection'\n | 'allowStaleOnFetchRejection'\n | 'ignoreFetchAbort'\n | 'allowStaleOnFetchAbort'\n > {\n status?: Status\n size?: Size\n }\n\n /**\n * Options that may be passed to the {@link LRUCache#fetch} method.\n */\n export interface FetchOptions\n extends FetcherFetchOptions {\n /**\n * Set to true to force a re-load of the existing data, even if it\n * is not yet stale.\n */\n forceRefresh?: boolean\n /**\n * Context provided to the {@link OptionsBase.fetchMethod} as\n * the {@link FetcherOptions.context} param.\n *\n * If the FC type is specified as unknown (the default),\n * undefined or void, then this is optional. Otherwise, it will\n * be required.\n */\n context?: FC\n signal?: AbortSignal\n status?: Status\n }\n /**\n * Options provided to {@link LRUCache#fetch} when the FC type is something\n * other than `unknown`, `undefined`, or `void`\n */\n export interface FetchOptionsWithContext\n extends FetchOptions {\n context: FC\n }\n /**\n * Options provided to {@link LRUCache#fetch} when the FC type is\n * `undefined` or `void`\n */\n export interface FetchOptionsNoContext\n extends FetchOptions {\n context?: undefined\n }\n\n export interface MemoOptions\n extends Pick<\n OptionsBase,\n | 'allowStale'\n | 'updateAgeOnGet'\n | 'noDeleteOnStaleGet'\n | 'sizeCalculation'\n | 'ttl'\n | 'noDisposeOnSet'\n | 'noUpdateTTL'\n | 'noDeleteOnFetchRejection'\n | 'allowStaleOnFetchRejection'\n | 'ignoreFetchAbort'\n | 'allowStaleOnFetchAbort'\n > {\n /**\n * Set to true to force a re-load of the existing data, even if it\n * is not yet stale.\n */\n forceRefresh?: boolean\n /**\n * Context provided to the {@link OptionsBase.memoMethod} as\n * the {@link MemoizerOptions.context} param.\n *\n * If the FC type is specified as unknown (the default),\n * undefined or void, then this is optional. Otherwise, it will\n * be required.\n */\n context?: FC\n status?: Status\n }\n /**\n * Options provided to {@link LRUCache#memo} when the FC type is something\n * other than `unknown`, `undefined`, or `void`\n */\n export interface MemoOptionsWithContext\n extends MemoOptions {\n context: FC\n }\n /**\n * Options provided to {@link LRUCache#memo} when the FC type is\n * `undefined` or `void`\n */\n export interface MemoOptionsNoContext\n extends MemoOptions {\n context?: undefined\n }\n\n /**\n * Options provided to the\n * {@link OptionsBase.memoMethod} function.\n */\n export interface MemoizerOptions {\n options: MemoizerMemoOptions\n /**\n * Object provided in the {@link MemoOptions.context} option to\n * {@link LRUCache#memo}\n */\n context: FC\n }\n\n /**\n * options which override the options set in the LRUCache constructor\n * when calling {@link LRUCache#memo}.\n *\n * This is the union of {@link GetOptions} and {@link SetOptions}, plus\n * {@link MemoOptions.forceRefresh}, and\n * {@link MemoerOptions.context}\n *\n * Any of these may be modified in the {@link OptionsBase.memoMethod}\n * function, but the {@link GetOptions} fields will of course have no\n * effect, as the {@link LRUCache#get} call already happened by the time\n * the memoMethod is called.\n */\n export interface MemoizerMemoOptions\n extends Pick<\n OptionsBase,\n | 'allowStale'\n | 'updateAgeOnGet'\n | 'noDeleteOnStaleGet'\n | 'sizeCalculation'\n | 'ttl'\n | 'noDisposeOnSet'\n | 'noUpdateTTL'\n > {\n status?: Status\n size?: Size\n start?: Milliseconds\n }\n\n /**\n * Options that may be passed to the {@link LRUCache#has} method.\n */\n export interface HasOptions\n extends Pick, 'updateAgeOnHas'> {\n status?: Status\n }\n\n /**\n * Options that may be passed to the {@link LRUCache#get} method.\n */\n export interface GetOptions\n extends Pick<\n OptionsBase,\n 'allowStale' | 'updateAgeOnGet' | 'noDeleteOnStaleGet'\n > {\n status?: Status\n }\n\n /**\n * Options that may be passed to the {@link LRUCache#peek} method.\n */\n export interface PeekOptions\n extends Pick, 'allowStale'> {}\n\n /**\n * Options that may be passed to the {@link LRUCache#set} method.\n */\n export interface SetOptions\n extends Pick<\n OptionsBase,\n 'sizeCalculation' | 'ttl' | 'noDisposeOnSet' | 'noUpdateTTL'\n > {\n /**\n * If size tracking is enabled, then setting an explicit size\n * in the {@link LRUCache#set} call will prevent calling the\n * {@link OptionsBase.sizeCalculation} function.\n */\n size?: Size\n /**\n * If TTL tracking is enabled, then setting an explicit start\n * time in the {@link LRUCache#set} call will override the\n * default time from `performance.now()` or `Date.now()`.\n *\n * Note that it must be a valid value for whichever time-tracking\n * method is in use.\n */\n start?: Milliseconds\n status?: Status\n }\n\n /**\n * The type signature for the {@link OptionsBase.fetchMethod} option.\n */\n export type Fetcher = (\n key: K,\n staleValue: V | undefined,\n options: FetcherOptions\n ) => Promise | V | undefined | void\n\n /**\n * the type signature for the {@link OptionsBase.memoMethod} option.\n */\n export type Memoizer = (\n key: K,\n staleValue: V | undefined,\n options: MemoizerOptions\n ) => V\n\n /**\n * Options which may be passed to the {@link LRUCache} constructor.\n *\n * Most of these may be overridden in the various options that use\n * them.\n *\n * Despite all being technically optional, the constructor requires that\n * a cache is at minimum limited by one or more of {@link OptionsBase.max},\n * {@link OptionsBase.ttl}, or {@link OptionsBase.maxSize}.\n *\n * If {@link OptionsBase.ttl} is used alone, then it is strongly advised\n * (and in fact required by the type definitions here) that the cache\n * also set {@link OptionsBase.ttlAutopurge}, to prevent potentially\n * unbounded storage.\n *\n * All options are also available on the {@link LRUCache} instance, making\n * it safe to pass an LRUCache instance as the options argumemnt to\n * make another empty cache of the same type.\n *\n * Some options are marked as read-only, because changing them after\n * instantiation is not safe. Changing any of the other options will of\n * course only have an effect on subsequent method calls.\n */\n export interface OptionsBase {\n /**\n * The maximum number of items to store in the cache before evicting\n * old entries. This is read-only on the {@link LRUCache} instance,\n * and may not be overridden.\n *\n * If set, then storage space will be pre-allocated at construction\n * time, and the cache will perform significantly faster.\n *\n * Note that significantly fewer items may be stored, if\n * {@link OptionsBase.maxSize} and/or {@link OptionsBase.ttl} are also\n * set.\n *\n * **It is strongly recommended to set a `max` to prevent unbounded growth\n * of the cache.**\n */\n max?: Count\n\n /**\n * Max time in milliseconds for items to live in cache before they are\n * considered stale. Note that stale items are NOT preemptively removed by\n * default, and MAY live in the cache, contributing to its LRU max, long\n * after they have expired, unless {@link OptionsBase.ttlAutopurge} is\n * set.\n *\n * If set to `0` (the default value), then that means \"do not track\n * TTL\", not \"expire immediately\".\n *\n * Also, as this cache is optimized for LRU/MRU operations, some of\n * the staleness/TTL checks will reduce performance, as they will incur\n * overhead by deleting items.\n *\n * This is not primarily a TTL cache, and does not make strong TTL\n * guarantees. There is no pre-emptive pruning of expired items, but you\n * _may_ set a TTL on the cache, and it will treat expired items as missing\n * when they are fetched, and delete them.\n *\n * Optional, but must be a non-negative integer in ms if specified.\n *\n * This may be overridden by passing an options object to `cache.set()`.\n *\n * At least one of `max`, `maxSize`, or `TTL` is required. This must be a\n * positive integer if set.\n *\n * Even if ttl tracking is enabled, **it is strongly recommended to set a\n * `max` to prevent unbounded growth of the cache.**\n *\n * If ttl tracking is enabled, and `max` and `maxSize` are not set,\n * and `ttlAutopurge` is not set, then a warning will be emitted\n * cautioning about the potential for unbounded memory consumption.\n * (The TypeScript definitions will also discourage this.)\n */\n ttl?: Milliseconds\n\n /**\n * Minimum amount of time in ms in which to check for staleness.\n * Defaults to 1, which means that the current time is checked\n * at most once per millisecond.\n *\n * Set to 0 to check the current time every time staleness is tested.\n * (This reduces performance, and is theoretically unnecessary.)\n *\n * Setting this to a higher value will improve performance somewhat\n * while using ttl tracking, albeit at the expense of keeping stale\n * items around a bit longer than their TTLs would indicate.\n *\n * @default 1\n */\n ttlResolution?: Milliseconds\n\n /**\n * Preemptively remove stale items from the cache.\n *\n * Note that this may *significantly* degrade performance, especially if\n * the cache is storing a large number of items. It is almost always best\n * to just leave the stale items in the cache, and let them fall out as new\n * items are added.\n *\n * Note that this means that {@link OptionsBase.allowStale} is a bit\n * pointless, as stale items will be deleted almost as soon as they\n * expire.\n *\n * Use with caution!\n */\n ttlAutopurge?: boolean\n\n /**\n * When using time-expiring entries with `ttl`, setting this to `true` will\n * make each item's age reset to 0 whenever it is retrieved from cache with\n * {@link LRUCache#get}, causing it to not expire. (It can still fall out\n * of cache based on recency of use, of course.)\n *\n * Has no effect if {@link OptionsBase.ttl} is not set.\n *\n * This may be overridden by passing an options object to `cache.get()`.\n */\n updateAgeOnGet?: boolean\n\n /**\n * When using time-expiring entries with `ttl`, setting this to `true` will\n * make each item's age reset to 0 whenever its presence in the cache is\n * checked with {@link LRUCache#has}, causing it to not expire. (It can\n * still fall out of cache based on recency of use, of course.)\n *\n * Has no effect if {@link OptionsBase.ttl} is not set.\n */\n updateAgeOnHas?: boolean\n\n /**\n * Allow {@link LRUCache#get} and {@link LRUCache#fetch} calls to return\n * stale data, if available.\n *\n * By default, if you set `ttl`, stale items will only be deleted from the\n * cache when you `get(key)`. That is, it's not preemptively pruning items,\n * unless {@link OptionsBase.ttlAutopurge} is set.\n *\n * If you set `allowStale:true`, it'll return the stale value *as well as*\n * deleting it. If you don't set this, then it'll return `undefined` when\n * you try to get a stale entry.\n *\n * Note that when a stale entry is fetched, _even if it is returned due to\n * `allowStale` being set_, it is removed from the cache immediately. You\n * can suppress this behavior by setting\n * {@link OptionsBase.noDeleteOnStaleGet}, either in the constructor, or in\n * the options provided to {@link LRUCache#get}.\n *\n * This may be overridden by passing an options object to `cache.get()`.\n * The `cache.has()` method will always return `false` for stale items.\n *\n * Only relevant if a ttl is set.\n */\n allowStale?: boolean\n\n /**\n * Function that is called on items when they are dropped from the\n * cache, as `dispose(value, key, reason)`.\n *\n * This can be handy if you want to close file descriptors or do\n * other cleanup tasks when items are no longer stored in the cache.\n *\n * **NOTE**: It is called _before_ the item has been fully removed\n * from the cache, so if you want to put it right back in, you need\n * to wait until the next tick. If you try to add it back in during\n * the `dispose()` function call, it will break things in subtle and\n * weird ways.\n *\n * Unlike several other options, this may _not_ be overridden by\n * passing an option to `set()`, for performance reasons.\n *\n * The `reason` will be one of the following strings, corresponding\n * to the reason for the item's deletion:\n *\n * - `evict` Item was evicted to make space for a new addition\n * - `set` Item was overwritten by a new value\n * - `expire` Item expired its TTL\n * - `fetch` Item was deleted due to a failed or aborted fetch, or a\n * fetchMethod returning `undefined.\n * - `delete` Item was removed by explicit `cache.delete(key)`,\n * `cache.clear()`, or `cache.set(key, undefined)`.\n */\n dispose?: Disposer\n\n /**\n * The same as {@link OptionsBase.dispose}, but called *after* the entry\n * is completely removed and the cache is once again in a clean state.\n *\n * It is safe to add an item right back into the cache at this point.\n * However, note that it is *very* easy to inadvertently create infinite\n * recursion this way.\n */\n disposeAfter?: Disposer\n\n /**\n * Set to true to suppress calling the\n * {@link OptionsBase.dispose} function if the entry key is\n * still accessible within the cache.\n *\n * This may be overridden by passing an options object to\n * {@link LRUCache#set}.\n *\n * Only relevant if `dispose` or `disposeAfter` are set.\n */\n noDisposeOnSet?: boolean\n\n /**\n * Boolean flag to tell the cache to not update the TTL when setting a new\n * value for an existing key (ie, when updating a value rather than\n * inserting a new value). Note that the TTL value is _always_ set (if\n * provided) when adding a new entry into the cache.\n *\n * Has no effect if a {@link OptionsBase.ttl} is not set.\n *\n * May be passed as an option to {@link LRUCache#set}.\n */\n noUpdateTTL?: boolean\n\n /**\n * Set to a positive integer to track the sizes of items added to the\n * cache, and automatically evict items in order to stay below this size.\n * Note that this may result in fewer than `max` items being stored.\n *\n * Attempting to add an item to the cache whose calculated size is greater\n * that this amount will be a no-op. The item will not be cached, and no\n * other items will be evicted.\n *\n * Optional, must be a positive integer if provided.\n *\n * Sets `maxEntrySize` to the same value, unless a different value is\n * provided for `maxEntrySize`.\n *\n * At least one of `max`, `maxSize`, or `TTL` is required. This must be a\n * positive integer if set.\n *\n * Even if size tracking is enabled, **it is strongly recommended to set a\n * `max` to prevent unbounded growth of the cache.**\n *\n * Note also that size tracking can negatively impact performance,\n * though for most cases, only minimally.\n */\n maxSize?: Size\n\n /**\n * The maximum allowed size for any single item in the cache.\n *\n * If a larger item is passed to {@link LRUCache#set} or returned by a\n * {@link OptionsBase.fetchMethod} or {@link OptionsBase.memoMethod}, then\n * it will not be stored in the cache.\n *\n * Attempting to add an item whose calculated size is greater than\n * this amount will not cache the item or evict any old items, but\n * WILL delete an existing value if one is already present.\n *\n * Optional, must be a positive integer if provided. Defaults to\n * the value of `maxSize` if provided.\n */\n maxEntrySize?: Size\n\n /**\n * A function that returns a number indicating the item's size.\n *\n * Requires {@link OptionsBase.maxSize} to be set.\n *\n * If not provided, and {@link OptionsBase.maxSize} or\n * {@link OptionsBase.maxEntrySize} are set, then all\n * {@link LRUCache#set} calls **must** provide an explicit\n * {@link SetOptions.size} or sizeCalculation param.\n */\n sizeCalculation?: SizeCalculator\n\n /**\n * Method that provides the implementation for {@link LRUCache#fetch}\n *\n * ```ts\n * fetchMethod(key, staleValue, { signal, options, context })\n * ```\n *\n * If `fetchMethod` is not provided, then `cache.fetch(key)` is equivalent\n * to `Promise.resolve(cache.get(key))`.\n *\n * If at any time, `signal.aborted` is set to `true`, or if the\n * `signal.onabort` method is called, or if it emits an `'abort'` event\n * which you can listen to with `addEventListener`, then that means that\n * the fetch should be abandoned. This may be passed along to async\n * functions aware of AbortController/AbortSignal behavior.\n *\n * The `fetchMethod` should **only** return `undefined` or a Promise\n * resolving to `undefined` if the AbortController signaled an `abort`\n * event. In all other cases, it should return or resolve to a value\n * suitable for adding to the cache.\n *\n * The `options` object is a union of the options that may be provided to\n * `set()` and `get()`. If they are modified, then that will result in\n * modifying the settings to `cache.set()` when the value is resolved, and\n * in the case of\n * {@link OptionsBase.noDeleteOnFetchRejection} and\n * {@link OptionsBase.allowStaleOnFetchRejection}, the handling of\n * `fetchMethod` failures.\n *\n * For example, a DNS cache may update the TTL based on the value returned\n * from a remote DNS server by changing `options.ttl` in the `fetchMethod`.\n */\n fetchMethod?: Fetcher\n\n /**\n * Method that provides the implementation for {@link LRUCache#memo}\n */\n memoMethod?: Memoizer\n\n /**\n * Set to true to suppress the deletion of stale data when a\n * {@link OptionsBase.fetchMethod} returns a rejected promise.\n */\n noDeleteOnFetchRejection?: boolean\n\n /**\n * Do not delete stale items when they are retrieved with\n * {@link LRUCache#get}.\n *\n * Note that the `get` return value will still be `undefined`\n * unless {@link OptionsBase.allowStale} is true.\n *\n * When using time-expiring entries with `ttl`, by default stale\n * items will be removed from the cache when the key is accessed\n * with `cache.get()`.\n *\n * Setting this option will cause stale items to remain in the cache, until\n * they are explicitly deleted with `cache.delete(key)`, or retrieved with\n * `noDeleteOnStaleGet` set to `false`.\n *\n * This may be overridden by passing an options object to `cache.get()`.\n *\n * Only relevant if a ttl is used.\n */\n noDeleteOnStaleGet?: boolean\n\n /**\n * Set to true to allow returning stale data when a\n * {@link OptionsBase.fetchMethod} throws an error or returns a rejected\n * promise.\n *\n * This differs from using {@link OptionsBase.allowStale} in that stale\n * data will ONLY be returned in the case that the {@link LRUCache#fetch}\n * fails, not any other times.\n *\n * If a `fetchMethod` fails, and there is no stale value available, the\n * `fetch()` will resolve to `undefined`. Ie, all `fetchMethod` errors are\n * suppressed.\n *\n * Implies `noDeleteOnFetchRejection`.\n *\n * This may be set in calls to `fetch()`, or defaulted on the constructor,\n * or overridden by modifying the options object in the `fetchMethod`.\n */\n allowStaleOnFetchRejection?: boolean\n\n /**\n * Set to true to return a stale value from the cache when the\n * `AbortSignal` passed to the {@link OptionsBase.fetchMethod} dispatches\n * an `'abort'` event, whether user-triggered, or due to internal cache\n * behavior.\n *\n * Unless {@link OptionsBase.ignoreFetchAbort} is also set, the underlying\n * {@link OptionsBase.fetchMethod} will still be considered canceled, and\n * any value it returns will be ignored and not cached.\n *\n * Caveat: since fetches are aborted when a new value is explicitly\n * set in the cache, this can lead to fetch returning a stale value,\n * since that was the fallback value _at the moment the `fetch()` was\n * initiated_, even though the new updated value is now present in\n * the cache.\n *\n * For example:\n *\n * ```ts\n * const cache = new LRUCache({\n * ttl: 100,\n * fetchMethod: async (url, oldValue, { signal }) => {\n * const res = await fetch(url, { signal })\n * return await res.json()\n * }\n * })\n * cache.set('https://example.com/', { some: 'data' })\n * // 100ms go by...\n * const result = cache.fetch('https://example.com/')\n * cache.set('https://example.com/', { other: 'thing' })\n * console.log(await result) // { some: 'data' }\n * console.log(cache.get('https://example.com/')) // { other: 'thing' }\n * ```\n */\n allowStaleOnFetchAbort?: boolean\n\n /**\n * Set to true to ignore the `abort` event emitted by the `AbortSignal`\n * object passed to {@link OptionsBase.fetchMethod}, and still cache the\n * resulting resolution value, as long as it is not `undefined`.\n *\n * When used on its own, this means aborted {@link LRUCache#fetch} calls\n * are not immediately resolved or rejected when they are aborted, and\n * instead take the full time to await.\n *\n * When used with {@link OptionsBase.allowStaleOnFetchAbort}, aborted\n * {@link LRUCache#fetch} calls will resolve immediately to their stale\n * cached value or `undefined`, and will continue to process and eventually\n * update the cache when they resolve, as long as the resulting value is\n * not `undefined`, thus supporting a \"return stale on timeout while\n * refreshing\" mechanism by passing `AbortSignal.timeout(n)` as the signal.\n *\n * For example:\n *\n * ```ts\n * const c = new LRUCache({\n * ttl: 100,\n * ignoreFetchAbort: true,\n * allowStaleOnFetchAbort: true,\n * fetchMethod: async (key, oldValue, { signal }) => {\n * // note: do NOT pass the signal to fetch()!\n * // let's say this fetch can take a long time.\n * const res = await fetch(`https://slow-backend-server/${key}`)\n * return await res.json()\n * },\n * })\n *\n * // this will return the stale value after 100ms, while still\n * // updating in the background for next time.\n * const val = await c.fetch('key', { signal: AbortSignal.timeout(100) })\n * ```\n *\n * **Note**: regardless of this setting, an `abort` event _is still\n * emitted on the `AbortSignal` object_, so may result in invalid results\n * when passed to other underlying APIs that use AbortSignals.\n *\n * This may be overridden in the {@link OptionsBase.fetchMethod} or the\n * call to {@link LRUCache#fetch}.\n */\n ignoreFetchAbort?: boolean\n }\n\n export interface OptionsMaxLimit\n extends OptionsBase {\n max: Count\n }\n export interface OptionsTTLLimit\n extends OptionsBase {\n ttl: Milliseconds\n ttlAutopurge: boolean\n }\n export interface OptionsSizeLimit\n extends OptionsBase {\n maxSize: Size\n }\n\n /**\n * The valid safe options for the {@link LRUCache} constructor\n */\n export type Options =\n | OptionsMaxLimit\n | OptionsSizeLimit\n | OptionsTTLLimit\n\n /**\n * Entry objects used by {@link LRUCache#load} and {@link LRUCache#dump},\n * and returned by {@link LRUCache#info}.\n */\n export interface Entry {\n value: V\n ttl?: Milliseconds\n size?: Size\n start?: Milliseconds\n }\n}\n\n/**\n * Default export, the thing you're using this module to get.\n *\n * The `K` and `V` types define the key and value types, respectively. The\n * optional `FC` type defines the type of the `context` object passed to\n * `cache.fetch()` and `cache.memo()`.\n *\n * Keys and values **must not** be `null` or `undefined`.\n *\n * All properties from the options object (with the exception of `max`,\n * `maxSize`, `fetchMethod`, `memoMethod`, `dispose` and `disposeAfter`) are\n * added as normal public members. (The listed options are read-only getters.)\n *\n * Changing any of these will alter the defaults for subsequent method calls.\n */\nexport class LRUCache\n implements Map\n{\n // options that cannot be changed without disaster\n readonly #max: LRUCache.Count\n readonly #maxSize: LRUCache.Size\n readonly #dispose?: LRUCache.Disposer\n readonly #disposeAfter?: LRUCache.Disposer\n readonly #fetchMethod?: LRUCache.Fetcher\n readonly #memoMethod?: LRUCache.Memoizer\n\n /**\n * {@link LRUCache.OptionsBase.ttl}\n */\n ttl: LRUCache.Milliseconds\n\n /**\n * {@link LRUCache.OptionsBase.ttlResolution}\n */\n ttlResolution: LRUCache.Milliseconds\n /**\n * {@link LRUCache.OptionsBase.ttlAutopurge}\n */\n ttlAutopurge: boolean\n /**\n * {@link LRUCache.OptionsBase.updateAgeOnGet}\n */\n updateAgeOnGet: boolean\n /**\n * {@link LRUCache.OptionsBase.updateAgeOnHas}\n */\n updateAgeOnHas: boolean\n /**\n * {@link LRUCache.OptionsBase.allowStale}\n */\n allowStale: boolean\n\n /**\n * {@link LRUCache.OptionsBase.noDisposeOnSet}\n */\n noDisposeOnSet: boolean\n /**\n * {@link LRUCache.OptionsBase.noUpdateTTL}\n */\n noUpdateTTL: boolean\n /**\n * {@link LRUCache.OptionsBase.maxEntrySize}\n */\n maxEntrySize: LRUCache.Size\n /**\n * {@link LRUCache.OptionsBase.sizeCalculation}\n */\n sizeCalculation?: LRUCache.SizeCalculator\n /**\n * {@link LRUCache.OptionsBase.noDeleteOnFetchRejection}\n */\n noDeleteOnFetchRejection: boolean\n /**\n * {@link LRUCache.OptionsBase.noDeleteOnStaleGet}\n */\n noDeleteOnStaleGet: boolean\n /**\n * {@link LRUCache.OptionsBase.allowStaleOnFetchAbort}\n */\n allowStaleOnFetchAbort: boolean\n /**\n * {@link LRUCache.OptionsBase.allowStaleOnFetchRejection}\n */\n allowStaleOnFetchRejection: boolean\n /**\n * {@link LRUCache.OptionsBase.ignoreFetchAbort}\n */\n ignoreFetchAbort: boolean\n\n // computed properties\n #size: LRUCache.Count\n #calculatedSize: LRUCache.Size\n #keyMap: Map\n #keyList: (K | undefined)[]\n #valList: (V | BackgroundFetch | undefined)[]\n #next: NumberArray\n #prev: NumberArray\n #head: Index\n #tail: Index\n #free: StackLike\n #disposed?: DisposeTask[]\n #sizes?: ZeroArray\n #starts?: ZeroArray\n #ttls?: ZeroArray\n\n #hasDispose: boolean\n #hasFetchMethod: boolean\n #hasDisposeAfter: boolean\n\n /**\n * Do not call this method unless you need to inspect the\n * inner workings of the cache. If anything returned by this\n * object is modified in any way, strange breakage may occur.\n *\n * These fields are private for a reason!\n *\n * @internal\n */\n static unsafeExposeInternals<\n K extends {},\n V extends {},\n FC extends unknown = unknown\n >(c: LRUCache) {\n return {\n // properties\n starts: c.#starts,\n ttls: c.#ttls,\n sizes: c.#sizes,\n keyMap: c.#keyMap as Map,\n keyList: c.#keyList,\n valList: c.#valList,\n next: c.#next,\n prev: c.#prev,\n get head() {\n return c.#head\n },\n get tail() {\n return c.#tail\n },\n free: c.#free,\n // methods\n isBackgroundFetch: (p: any) => c.#isBackgroundFetch(p),\n backgroundFetch: (\n k: K,\n index: number | undefined,\n options: LRUCache.FetchOptions,\n context: any\n ): BackgroundFetch =>\n c.#backgroundFetch(\n k,\n index as Index | undefined,\n options,\n context\n ),\n moveToTail: (index: number): void =>\n c.#moveToTail(index as Index),\n indexes: (options?: { allowStale: boolean }) =>\n c.#indexes(options),\n rindexes: (options?: { allowStale: boolean }) =>\n c.#rindexes(options),\n isStale: (index: number | undefined) =>\n c.#isStale(index as Index),\n }\n }\n\n // Protected read-only members\n\n /**\n * {@link LRUCache.OptionsBase.max} (read-only)\n */\n get max(): LRUCache.Count {\n return this.#max\n }\n /**\n * {@link LRUCache.OptionsBase.maxSize} (read-only)\n */\n get maxSize(): LRUCache.Count {\n return this.#maxSize\n }\n /**\n * The total computed size of items in the cache (read-only)\n */\n get calculatedSize(): LRUCache.Size {\n return this.#calculatedSize\n }\n /**\n * The number of items stored in the cache (read-only)\n */\n get size(): LRUCache.Count {\n return this.#size\n }\n /**\n * {@link LRUCache.OptionsBase.fetchMethod} (read-only)\n */\n get fetchMethod(): LRUCache.Fetcher | undefined {\n return this.#fetchMethod\n }\n get memoMethod(): LRUCache.Memoizer | undefined {\n return this.#memoMethod\n }\n /**\n * {@link LRUCache.OptionsBase.dispose} (read-only)\n */\n get dispose() {\n return this.#dispose\n }\n /**\n * {@link LRUCache.OptionsBase.disposeAfter} (read-only)\n */\n get disposeAfter() {\n return this.#disposeAfter\n }\n\n constructor(\n options: LRUCache.Options | LRUCache\n ) {\n const {\n max = 0,\n ttl,\n ttlResolution = 1,\n ttlAutopurge,\n updateAgeOnGet,\n updateAgeOnHas,\n allowStale,\n dispose,\n disposeAfter,\n noDisposeOnSet,\n noUpdateTTL,\n maxSize = 0,\n maxEntrySize = 0,\n sizeCalculation,\n fetchMethod,\n memoMethod,\n noDeleteOnFetchRejection,\n noDeleteOnStaleGet,\n allowStaleOnFetchRejection,\n allowStaleOnFetchAbort,\n ignoreFetchAbort,\n } = options\n\n if (max !== 0 && !isPosInt(max)) {\n throw new TypeError('max option must be a nonnegative integer')\n }\n\n const UintArray = max ? getUintArray(max) : Array\n if (!UintArray) {\n throw new Error('invalid max value: ' + max)\n }\n\n this.#max = max\n this.#maxSize = maxSize\n this.maxEntrySize = maxEntrySize || this.#maxSize\n this.sizeCalculation = sizeCalculation\n if (this.sizeCalculation) {\n if (!this.#maxSize && !this.maxEntrySize) {\n throw new TypeError(\n 'cannot set sizeCalculation without setting maxSize or maxEntrySize'\n )\n }\n if (typeof this.sizeCalculation !== 'function') {\n throw new TypeError('sizeCalculation set to non-function')\n }\n }\n\n if (\n memoMethod !== undefined &&\n typeof memoMethod !== 'function'\n ) {\n throw new TypeError('memoMethod must be a function if defined')\n }\n this.#memoMethod = memoMethod\n\n if (\n fetchMethod !== undefined &&\n typeof fetchMethod !== 'function'\n ) {\n throw new TypeError(\n 'fetchMethod must be a function if specified'\n )\n }\n this.#fetchMethod = fetchMethod\n this.#hasFetchMethod = !!fetchMethod\n\n this.#keyMap = new Map()\n this.#keyList = new Array(max).fill(undefined)\n this.#valList = new Array(max).fill(undefined)\n this.#next = new UintArray(max)\n this.#prev = new UintArray(max)\n this.#head = 0 as Index\n this.#tail = 0 as Index\n this.#free = Stack.create(max)\n this.#size = 0\n this.#calculatedSize = 0\n\n if (typeof dispose === 'function') {\n this.#dispose = dispose\n }\n if (typeof disposeAfter === 'function') {\n this.#disposeAfter = disposeAfter\n this.#disposed = []\n } else {\n this.#disposeAfter = undefined\n this.#disposed = undefined\n }\n this.#hasDispose = !!this.#dispose\n this.#hasDisposeAfter = !!this.#disposeAfter\n\n this.noDisposeOnSet = !!noDisposeOnSet\n this.noUpdateTTL = !!noUpdateTTL\n this.noDeleteOnFetchRejection = !!noDeleteOnFetchRejection\n this.allowStaleOnFetchRejection = !!allowStaleOnFetchRejection\n this.allowStaleOnFetchAbort = !!allowStaleOnFetchAbort\n this.ignoreFetchAbort = !!ignoreFetchAbort\n\n // NB: maxEntrySize is set to maxSize if it's set\n if (this.maxEntrySize !== 0) {\n if (this.#maxSize !== 0) {\n if (!isPosInt(this.#maxSize)) {\n throw new TypeError(\n 'maxSize must be a positive integer if specified'\n )\n }\n }\n if (!isPosInt(this.maxEntrySize)) {\n throw new TypeError(\n 'maxEntrySize must be a positive integer if specified'\n )\n }\n this.#initializeSizeTracking()\n }\n\n this.allowStale = !!allowStale\n this.noDeleteOnStaleGet = !!noDeleteOnStaleGet\n this.updateAgeOnGet = !!updateAgeOnGet\n this.updateAgeOnHas = !!updateAgeOnHas\n this.ttlResolution =\n isPosInt(ttlResolution) || ttlResolution === 0\n ? ttlResolution\n : 1\n this.ttlAutopurge = !!ttlAutopurge\n this.ttl = ttl || 0\n if (this.ttl) {\n if (!isPosInt(this.ttl)) {\n throw new TypeError(\n 'ttl must be a positive integer if specified'\n )\n }\n this.#initializeTTLTracking()\n }\n\n // do not allow completely unbounded caches\n if (this.#max === 0 && this.ttl === 0 && this.#maxSize === 0) {\n throw new TypeError(\n 'At least one of max, maxSize, or ttl is required'\n )\n }\n if (!this.ttlAutopurge && !this.#max && !this.#maxSize) {\n const code = 'LRU_CACHE_UNBOUNDED'\n if (shouldWarn(code)) {\n warned.add(code)\n const msg =\n 'TTL caching without ttlAutopurge, max, or maxSize can ' +\n 'result in unbounded memory consumption.'\n emitWarning(msg, 'UnboundedCacheWarning', code, LRUCache)\n }\n }\n }\n\n /**\n * Return the number of ms left in the item's TTL. If item is not in cache,\n * returns `0`. Returns `Infinity` if item is in cache without a defined TTL.\n */\n getRemainingTTL(key: K) {\n return this.#keyMap.has(key) ? Infinity : 0\n }\n\n #initializeTTLTracking() {\n const ttls = new ZeroArray(this.#max)\n const starts = new ZeroArray(this.#max)\n this.#ttls = ttls\n this.#starts = starts\n\n this.#setItemTTL = (index, ttl, start = perf.now()) => {\n starts[index] = ttl !== 0 ? start : 0\n ttls[index] = ttl\n if (ttl !== 0 && this.ttlAutopurge) {\n const t = setTimeout(() => {\n if (this.#isStale(index)) {\n this.#delete(this.#keyList[index] as K, 'expire')\n }\n }, ttl + 1)\n // unref() not supported on all platforms\n /* c8 ignore start */\n if (t.unref) {\n t.unref()\n }\n /* c8 ignore stop */\n }\n }\n\n this.#updateItemAge = index => {\n starts[index] = ttls[index] !== 0 ? perf.now() : 0\n }\n\n this.#statusTTL = (status, index) => {\n if (ttls[index]) {\n const ttl = ttls[index]\n const start = starts[index]\n /* c8 ignore next */\n if (!ttl || !start) return\n status.ttl = ttl\n status.start = start\n status.now = cachedNow || getNow()\n const age = status.now - start\n status.remainingTTL = ttl - age\n }\n }\n\n // debounce calls to perf.now() to 1s so we're not hitting\n // that costly call repeatedly.\n let cachedNow = 0\n const getNow = () => {\n const n = perf.now()\n if (this.ttlResolution > 0) {\n cachedNow = n\n const t = setTimeout(\n () => (cachedNow = 0),\n this.ttlResolution\n )\n // not available on all platforms\n /* c8 ignore start */\n if (t.unref) {\n t.unref()\n }\n /* c8 ignore stop */\n }\n return n\n }\n\n this.getRemainingTTL = key => {\n const index = this.#keyMap.get(key)\n if (index === undefined) {\n return 0\n }\n const ttl = ttls[index]\n const start = starts[index]\n if (!ttl || !start) {\n return Infinity\n }\n const age = (cachedNow || getNow()) - start\n return ttl - age\n }\n\n this.#isStale = index => {\n const s = starts[index]\n const t = ttls[index]\n return !!t && !!s && (cachedNow || getNow()) - s > t\n }\n }\n\n // conditionally set private methods related to TTL\n #updateItemAge: (index: Index) => void = () => {}\n #statusTTL: (status: LRUCache.Status, index: Index) => void =\n () => {}\n #setItemTTL: (\n index: Index,\n ttl: LRUCache.Milliseconds,\n start?: LRUCache.Milliseconds\n // ignore because we never call this if we're not already in TTL mode\n /* c8 ignore start */\n ) => void = () => {}\n /* c8 ignore stop */\n\n #isStale: (index: Index) => boolean = () => false\n\n #initializeSizeTracking() {\n const sizes = new ZeroArray(this.#max)\n this.#calculatedSize = 0\n this.#sizes = sizes\n this.#removeItemSize = index => {\n this.#calculatedSize -= sizes[index] as number\n sizes[index] = 0\n }\n this.#requireSize = (k, v, size, sizeCalculation) => {\n // provisionally accept background fetches.\n // actual value size will be checked when they return.\n if (this.#isBackgroundFetch(v)) {\n return 0\n }\n if (!isPosInt(size)) {\n if (sizeCalculation) {\n if (typeof sizeCalculation !== 'function') {\n throw new TypeError('sizeCalculation must be a function')\n }\n size = sizeCalculation(v, k)\n if (!isPosInt(size)) {\n throw new TypeError(\n 'sizeCalculation return invalid (expect positive integer)'\n )\n }\n } else {\n throw new TypeError(\n 'invalid size value (must be positive integer). ' +\n 'When maxSize or maxEntrySize is used, sizeCalculation ' +\n 'or size must be set.'\n )\n }\n }\n return size\n }\n this.#addItemSize = (\n index: Index,\n size: LRUCache.Size,\n status?: LRUCache.Status\n ) => {\n sizes[index] = size\n if (this.#maxSize) {\n const maxSize = this.#maxSize - (sizes[index] as number)\n while (this.#calculatedSize > maxSize) {\n this.#evict(true)\n }\n }\n this.#calculatedSize += sizes[index] as number\n if (status) {\n status.entrySize = size\n status.totalCalculatedSize = this.#calculatedSize\n }\n }\n }\n\n #removeItemSize: (index: Index) => void = _i => {}\n #addItemSize: (\n index: Index,\n size: LRUCache.Size,\n status?: LRUCache.Status\n ) => void = (_i, _s, _st) => {}\n #requireSize: (\n k: K,\n v: V | BackgroundFetch,\n size?: LRUCache.Size,\n sizeCalculation?: LRUCache.SizeCalculator\n ) => LRUCache.Size = (\n _k: K,\n _v: V | BackgroundFetch,\n size?: LRUCache.Size,\n sizeCalculation?: LRUCache.SizeCalculator\n ) => {\n if (size || sizeCalculation) {\n throw new TypeError(\n 'cannot set size without setting maxSize or maxEntrySize on cache'\n )\n }\n return 0\n };\n\n *#indexes({ allowStale = this.allowStale } = {}) {\n if (this.#size) {\n for (let i = this.#tail; true; ) {\n if (!this.#isValidIndex(i)) {\n break\n }\n if (allowStale || !this.#isStale(i)) {\n yield i\n }\n if (i === this.#head) {\n break\n } else {\n i = this.#prev[i] as Index\n }\n }\n }\n }\n\n *#rindexes({ allowStale = this.allowStale } = {}) {\n if (this.#size) {\n for (let i = this.#head; true; ) {\n if (!this.#isValidIndex(i)) {\n break\n }\n if (allowStale || !this.#isStale(i)) {\n yield i\n }\n if (i === this.#tail) {\n break\n } else {\n i = this.#next[i] as Index\n }\n }\n }\n }\n\n #isValidIndex(index: Index) {\n return (\n index !== undefined &&\n this.#keyMap.get(this.#keyList[index] as K) === index\n )\n }\n\n /**\n * Return a generator yielding `[key, value]` pairs,\n * in order from most recently used to least recently used.\n */\n *entries() {\n for (const i of this.#indexes()) {\n if (\n this.#valList[i] !== undefined &&\n this.#keyList[i] !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])\n ) {\n yield [this.#keyList[i], this.#valList[i]] as [K, V]\n }\n }\n }\n\n /**\n * Inverse order version of {@link LRUCache.entries}\n *\n * Return a generator yielding `[key, value]` pairs,\n * in order from least recently used to most recently used.\n */\n *rentries() {\n for (const i of this.#rindexes()) {\n if (\n this.#valList[i] !== undefined &&\n this.#keyList[i] !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])\n ) {\n yield [this.#keyList[i], this.#valList[i]]\n }\n }\n }\n\n /**\n * Return a generator yielding the keys in the cache,\n * in order from most recently used to least recently used.\n */\n *keys() {\n for (const i of this.#indexes()) {\n const k = this.#keyList[i]\n if (\n k !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])\n ) {\n yield k\n }\n }\n }\n\n /**\n * Inverse order version of {@link LRUCache.keys}\n *\n * Return a generator yielding the keys in the cache,\n * in order from least recently used to most recently used.\n */\n *rkeys() {\n for (const i of this.#rindexes()) {\n const k = this.#keyList[i]\n if (\n k !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])\n ) {\n yield k\n }\n }\n }\n\n /**\n * Return a generator yielding the values in the cache,\n * in order from most recently used to least recently used.\n */\n *values() {\n for (const i of this.#indexes()) {\n const v = this.#valList[i]\n if (\n v !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])\n ) {\n yield this.#valList[i] as V\n }\n }\n }\n\n /**\n * Inverse order version of {@link LRUCache.values}\n *\n * Return a generator yielding the values in the cache,\n * in order from least recently used to most recently used.\n */\n *rvalues() {\n for (const i of this.#rindexes()) {\n const v = this.#valList[i]\n if (\n v !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])\n ) {\n yield this.#valList[i]\n }\n }\n }\n\n /**\n * Iterating over the cache itself yields the same results as\n * {@link LRUCache.entries}\n */\n [Symbol.iterator]() {\n return this.entries()\n }\n\n /**\n * A String value that is used in the creation of the default string\n * description of an object. Called by the built-in method\n * `Object.prototype.toString`.\n */\n [Symbol.toStringTag] = 'LRUCache'\n\n /**\n * Find a value for which the supplied fn method returns a truthy value,\n * similar to `Array.find()`. fn is called as `fn(value, key, cache)`.\n */\n find(\n fn: (v: V, k: K, self: LRUCache) => boolean,\n getOptions: LRUCache.GetOptions = {}\n ) {\n for (const i of this.#indexes()) {\n const v = this.#valList[i]\n const value = this.#isBackgroundFetch(v)\n ? v.__staleWhileFetching\n : v\n if (value === undefined) continue\n if (fn(value, this.#keyList[i] as K, this)) {\n return this.get(this.#keyList[i] as K, getOptions)\n }\n }\n }\n\n /**\n * Call the supplied function on each item in the cache, in order from most\n * recently used to least recently used.\n *\n * `fn` is called as `fn(value, key, cache)`.\n *\n * If `thisp` is provided, function will be called in the `this`-context of\n * the provided object, or the cache if no `thisp` object is provided.\n *\n * Does not update age or recenty of use, or iterate over stale values.\n */\n forEach(\n fn: (v: V, k: K, self: LRUCache) => any,\n thisp: any = this\n ) {\n for (const i of this.#indexes()) {\n const v = this.#valList[i]\n const value = this.#isBackgroundFetch(v)\n ? v.__staleWhileFetching\n : v\n if (value === undefined) continue\n fn.call(thisp, value, this.#keyList[i] as K, this)\n }\n }\n\n /**\n * The same as {@link LRUCache.forEach} but items are iterated over in\n * reverse order. (ie, less recently used items are iterated over first.)\n */\n rforEach(\n fn: (v: V, k: K, self: LRUCache) => any,\n thisp: any = this\n ) {\n for (const i of this.#rindexes()) {\n const v = this.#valList[i]\n const value = this.#isBackgroundFetch(v)\n ? v.__staleWhileFetching\n : v\n if (value === undefined) continue\n fn.call(thisp, value, this.#keyList[i] as K, this)\n }\n }\n\n /**\n * Delete any stale entries. Returns true if anything was removed,\n * false otherwise.\n */\n purgeStale() {\n let deleted = false\n for (const i of this.#rindexes({ allowStale: true })) {\n if (this.#isStale(i)) {\n this.#delete(this.#keyList[i] as K, 'expire')\n deleted = true\n }\n }\n return deleted\n }\n\n /**\n * Get the extended info about a given entry, to get its value, size, and\n * TTL info simultaneously. Returns `undefined` if the key is not present.\n *\n * Unlike {@link LRUCache#dump}, which is designed to be portable and survive\n * serialization, the `start` value is always the current timestamp, and the\n * `ttl` is a calculated remaining time to live (negative if expired).\n *\n * Always returns stale values, if their info is found in the cache, so be\n * sure to check for expirations (ie, a negative {@link LRUCache.Entry#ttl})\n * if relevant.\n */\n info(key: K): LRUCache.Entry | undefined {\n const i = this.#keyMap.get(key)\n if (i === undefined) return undefined\n const v = this.#valList[i]\n const value: V | undefined = this.#isBackgroundFetch(v)\n ? v.__staleWhileFetching\n : v\n if (value === undefined) return undefined\n const entry: LRUCache.Entry = { value }\n if (this.#ttls && this.#starts) {\n const ttl = this.#ttls[i]\n const start = this.#starts[i]\n if (ttl && start) {\n const remain = ttl - (perf.now() - start)\n entry.ttl = remain\n entry.start = Date.now()\n }\n }\n if (this.#sizes) {\n entry.size = this.#sizes[i]\n }\n return entry\n }\n\n /**\n * Return an array of [key, {@link LRUCache.Entry}] tuples which can be\n * passed to {@link LRLUCache#load}.\n *\n * The `start` fields are calculated relative to a portable `Date.now()`\n * timestamp, even if `performance.now()` is available.\n *\n * Stale entries are always included in the `dump`, even if\n * {@link LRUCache.OptionsBase.allowStale} is false.\n *\n * Note: this returns an actual array, not a generator, so it can be more\n * easily passed around.\n */\n dump() {\n const arr: [K, LRUCache.Entry][] = []\n for (const i of this.#indexes({ allowStale: true })) {\n const key = this.#keyList[i]\n const v = this.#valList[i]\n const value: V | undefined = this.#isBackgroundFetch(v)\n ? v.__staleWhileFetching\n : v\n if (value === undefined || key === undefined) continue\n const entry: LRUCache.Entry = { value }\n if (this.#ttls && this.#starts) {\n entry.ttl = this.#ttls[i]\n // always dump the start relative to a portable timestamp\n // it's ok for this to be a bit slow, it's a rare operation.\n const age = perf.now() - (this.#starts[i] as number)\n entry.start = Math.floor(Date.now() - age)\n }\n if (this.#sizes) {\n entry.size = this.#sizes[i]\n }\n arr.unshift([key, entry])\n }\n return arr\n }\n\n /**\n * Reset the cache and load in the items in entries in the order listed.\n *\n * The shape of the resulting cache may be different if the same options are\n * not used in both caches.\n *\n * The `start` fields are assumed to be calculated relative to a portable\n * `Date.now()` timestamp, even if `performance.now()` is available.\n */\n load(arr: [K, LRUCache.Entry][]) {\n this.clear()\n for (const [key, entry] of arr) {\n if (entry.start) {\n // entry.start is a portable timestamp, but we may be using\n // node's performance.now(), so calculate the offset, so that\n // we get the intended remaining TTL, no matter how long it's\n // been on ice.\n //\n // it's ok for this to be a bit slow, it's a rare operation.\n const age = Date.now() - entry.start\n entry.start = perf.now() - age\n }\n this.set(key, entry.value, entry)\n }\n }\n\n /**\n * Add a value to the cache.\n *\n * Note: if `undefined` is specified as a value, this is an alias for\n * {@link LRUCache#delete}\n *\n * Fields on the {@link LRUCache.SetOptions} options param will override\n * their corresponding values in the constructor options for the scope\n * of this single `set()` operation.\n *\n * If `start` is provided, then that will set the effective start\n * time for the TTL calculation. Note that this must be a previous\n * value of `performance.now()` if supported, or a previous value of\n * `Date.now()` if not.\n *\n * Options object may also include `size`, which will prevent\n * calling the `sizeCalculation` function and just use the specified\n * number if it is a positive integer, and `noDisposeOnSet` which\n * will prevent calling a `dispose` function in the case of\n * overwrites.\n *\n * If the `size` (or return value of `sizeCalculation`) for a given\n * entry is greater than `maxEntrySize`, then the item will not be\n * added to the cache.\n *\n * Will update the recency of the entry.\n *\n * If the value is `undefined`, then this is an alias for\n * `cache.delete(key)`. `undefined` is never stored in the cache.\n */\n set(\n k: K,\n v: V | BackgroundFetch | undefined,\n setOptions: LRUCache.SetOptions = {}\n ) {\n if (v === undefined) {\n this.delete(k)\n return this\n }\n const {\n ttl = this.ttl,\n start,\n noDisposeOnSet = this.noDisposeOnSet,\n sizeCalculation = this.sizeCalculation,\n status,\n } = setOptions\n let { noUpdateTTL = this.noUpdateTTL } = setOptions\n\n const size = this.#requireSize(\n k,\n v,\n setOptions.size || 0,\n sizeCalculation\n )\n // if the item doesn't fit, don't do anything\n // NB: maxEntrySize set to maxSize by default\n if (this.maxEntrySize && size > this.maxEntrySize) {\n if (status) {\n status.set = 'miss'\n status.maxEntrySizeExceeded = true\n }\n // have to delete, in case something is there already.\n this.#delete(k, 'set')\n return this\n }\n let index = this.#size === 0 ? undefined : this.#keyMap.get(k)\n if (index === undefined) {\n // addition\n index = (\n this.#size === 0\n ? this.#tail\n : this.#free.length !== 0\n ? this.#free.pop()\n : this.#size === this.#max\n ? this.#evict(false)\n : this.#size\n ) as Index\n this.#keyList[index] = k\n this.#valList[index] = v\n this.#keyMap.set(k, index)\n this.#next[this.#tail] = index\n this.#prev[index] = this.#tail\n this.#tail = index\n this.#size++\n this.#addItemSize(index, size, status)\n if (status) status.set = 'add'\n noUpdateTTL = false\n } else {\n // update\n this.#moveToTail(index)\n const oldVal = this.#valList[index] as V | BackgroundFetch\n if (v !== oldVal) {\n if (this.#hasFetchMethod && this.#isBackgroundFetch(oldVal)) {\n oldVal.__abortController.abort(new Error('replaced'))\n const { __staleWhileFetching: s } = oldVal\n if (s !== undefined && !noDisposeOnSet) {\n if (this.#hasDispose) {\n this.#dispose?.(s as V, k, 'set')\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([s as V, k, 'set'])\n }\n }\n } else if (!noDisposeOnSet) {\n if (this.#hasDispose) {\n this.#dispose?.(oldVal as V, k, 'set')\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([oldVal as V, k, 'set'])\n }\n }\n this.#removeItemSize(index)\n this.#addItemSize(index, size, status)\n this.#valList[index] = v\n if (status) {\n status.set = 'replace'\n const oldValue =\n oldVal && this.#isBackgroundFetch(oldVal)\n ? oldVal.__staleWhileFetching\n : oldVal\n if (oldValue !== undefined) status.oldValue = oldValue\n }\n } else if (status) {\n status.set = 'update'\n }\n }\n if (ttl !== 0 && !this.#ttls) {\n this.#initializeTTLTracking()\n }\n if (this.#ttls) {\n if (!noUpdateTTL) {\n this.#setItemTTL(index, ttl, start)\n }\n if (status) this.#statusTTL(status, index)\n }\n if (!noDisposeOnSet && this.#hasDisposeAfter && this.#disposed) {\n const dt = this.#disposed\n let task: DisposeTask | undefined\n while ((task = dt?.shift())) {\n this.#disposeAfter?.(...task)\n }\n }\n return this\n }\n\n /**\n * Evict the least recently used item, returning its value or\n * `undefined` if cache is empty.\n */\n pop(): V | undefined {\n try {\n while (this.#size) {\n const val = this.#valList[this.#head]\n this.#evict(true)\n if (this.#isBackgroundFetch(val)) {\n if (val.__staleWhileFetching) {\n return val.__staleWhileFetching\n }\n } else if (val !== undefined) {\n return val\n }\n }\n } finally {\n if (this.#hasDisposeAfter && this.#disposed) {\n const dt = this.#disposed\n let task: DisposeTask | undefined\n while ((task = dt?.shift())) {\n this.#disposeAfter?.(...task)\n }\n }\n }\n }\n\n #evict(free: boolean) {\n const head = this.#head\n const k = this.#keyList[head] as K\n const v = this.#valList[head] as V\n if (this.#hasFetchMethod && this.#isBackgroundFetch(v)) {\n v.__abortController.abort(new Error('evicted'))\n } else if (this.#hasDispose || this.#hasDisposeAfter) {\n if (this.#hasDispose) {\n this.#dispose?.(v, k, 'evict')\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([v, k, 'evict'])\n }\n }\n this.#removeItemSize(head)\n // if we aren't about to use the index, then null these out\n if (free) {\n this.#keyList[head] = undefined\n this.#valList[head] = undefined\n this.#free.push(head)\n }\n if (this.#size === 1) {\n this.#head = this.#tail = 0 as Index\n this.#free.length = 0\n } else {\n this.#head = this.#next[head] as Index\n }\n this.#keyMap.delete(k)\n this.#size--\n return head\n }\n\n /**\n * Check if a key is in the cache, without updating the recency of use.\n * Will return false if the item is stale, even though it is technically\n * in the cache.\n *\n * Check if a key is in the cache, without updating the recency of\n * use. Age is updated if {@link LRUCache.OptionsBase.updateAgeOnHas} is set\n * to `true` in either the options or the constructor.\n *\n * Will return `false` if the item is stale, even though it is technically in\n * the cache. The difference can be determined (if it matters) by using a\n * `status` argument, and inspecting the `has` field.\n *\n * Will not update item age unless\n * {@link LRUCache.OptionsBase.updateAgeOnHas} is set.\n */\n has(k: K, hasOptions: LRUCache.HasOptions = {}) {\n const { updateAgeOnHas = this.updateAgeOnHas, status } =\n hasOptions\n const index = this.#keyMap.get(k)\n if (index !== undefined) {\n const v = this.#valList[index]\n if (\n this.#isBackgroundFetch(v) &&\n v.__staleWhileFetching === undefined\n ) {\n return false\n }\n if (!this.#isStale(index)) {\n if (updateAgeOnHas) {\n this.#updateItemAge(index)\n }\n if (status) {\n status.has = 'hit'\n this.#statusTTL(status, index)\n }\n return true\n } else if (status) {\n status.has = 'stale'\n this.#statusTTL(status, index)\n }\n } else if (status) {\n status.has = 'miss'\n }\n return false\n }\n\n /**\n * Like {@link LRUCache#get} but doesn't update recency or delete stale\n * items.\n *\n * Returns `undefined` if the item is stale, unless\n * {@link LRUCache.OptionsBase.allowStale} is set.\n */\n peek(k: K, peekOptions: LRUCache.PeekOptions = {}) {\n const { allowStale = this.allowStale } = peekOptions\n const index = this.#keyMap.get(k)\n if (\n index === undefined ||\n (!allowStale && this.#isStale(index))\n ) {\n return\n }\n const v = this.#valList[index]\n // either stale and allowed, or forcing a refresh of non-stale value\n return this.#isBackgroundFetch(v) ? v.__staleWhileFetching : v\n }\n\n #backgroundFetch(\n k: K,\n index: Index | undefined,\n options: LRUCache.FetchOptions,\n context: any\n ): BackgroundFetch {\n const v = index === undefined ? undefined : this.#valList[index]\n if (this.#isBackgroundFetch(v)) {\n return v\n }\n\n const ac = new AC()\n const { signal } = options\n // when/if our AC signals, then stop listening to theirs.\n signal?.addEventListener('abort', () => ac.abort(signal.reason), {\n signal: ac.signal,\n })\n\n const fetchOpts = {\n signal: ac.signal,\n options,\n context,\n }\n\n const cb = (\n v: V | undefined,\n updateCache = false\n ): V | undefined => {\n const { aborted } = ac.signal\n const ignoreAbort = options.ignoreFetchAbort && v !== undefined\n if (options.status) {\n if (aborted && !updateCache) {\n options.status.fetchAborted = true\n options.status.fetchError = ac.signal.reason\n if (ignoreAbort) options.status.fetchAbortIgnored = true\n } else {\n options.status.fetchResolved = true\n }\n }\n if (aborted && !ignoreAbort && !updateCache) {\n return fetchFail(ac.signal.reason)\n }\n // either we didn't abort, and are still here, or we did, and ignored\n const bf = p as BackgroundFetch\n if (this.#valList[index as Index] === p) {\n if (v === undefined) {\n if (bf.__staleWhileFetching) {\n this.#valList[index as Index] = bf.__staleWhileFetching\n } else {\n this.#delete(k, 'fetch')\n }\n } else {\n if (options.status) options.status.fetchUpdated = true\n this.set(k, v, fetchOpts.options)\n }\n }\n return v\n }\n\n const eb = (er: any) => {\n if (options.status) {\n options.status.fetchRejected = true\n options.status.fetchError = er\n }\n return fetchFail(er)\n }\n\n const fetchFail = (er: any): V | undefined => {\n const { aborted } = ac.signal\n const allowStaleAborted =\n aborted && options.allowStaleOnFetchAbort\n const allowStale =\n allowStaleAborted || options.allowStaleOnFetchRejection\n const noDelete = allowStale || options.noDeleteOnFetchRejection\n const bf = p as BackgroundFetch\n if (this.#valList[index as Index] === p) {\n // if we allow stale on fetch rejections, then we need to ensure that\n // the stale value is not removed from the cache when the fetch fails.\n const del = !noDelete || bf.__staleWhileFetching === undefined\n if (del) {\n this.#delete(k, 'fetch')\n } else if (!allowStaleAborted) {\n // still replace the *promise* with the stale value,\n // since we are done with the promise at this point.\n // leave it untouched if we're still waiting for an\n // aborted background fetch that hasn't yet returned.\n this.#valList[index as Index] = bf.__staleWhileFetching\n }\n }\n if (allowStale) {\n if (options.status && bf.__staleWhileFetching !== undefined) {\n options.status.returnedStale = true\n }\n return bf.__staleWhileFetching\n } else if (bf.__returned === bf) {\n throw er\n }\n }\n\n const pcall = (\n res: (v: V | undefined) => void,\n rej: (e: any) => void\n ) => {\n const fmp = this.#fetchMethod?.(k, v, fetchOpts)\n if (fmp && fmp instanceof Promise) {\n fmp.then(v => res(v === undefined ? undefined : v), rej)\n }\n // ignored, we go until we finish, regardless.\n // defer check until we are actually aborting,\n // so fetchMethod can override.\n ac.signal.addEventListener('abort', () => {\n if (\n !options.ignoreFetchAbort ||\n options.allowStaleOnFetchAbort\n ) {\n res(undefined)\n // when it eventually resolves, update the cache.\n if (options.allowStaleOnFetchAbort) {\n res = v => cb(v, true)\n }\n }\n })\n }\n\n if (options.status) options.status.fetchDispatched = true\n const p = new Promise(pcall).then(cb, eb)\n const bf: BackgroundFetch = Object.assign(p, {\n __abortController: ac,\n __staleWhileFetching: v,\n __returned: undefined,\n })\n\n if (index === undefined) {\n // internal, don't expose status.\n this.set(k, bf, { ...fetchOpts.options, status: undefined })\n index = this.#keyMap.get(k)\n } else {\n this.#valList[index] = bf\n }\n return bf\n }\n\n #isBackgroundFetch(p: any): p is BackgroundFetch {\n if (!this.#hasFetchMethod) return false\n const b = p as BackgroundFetch\n return (\n !!b &&\n b instanceof Promise &&\n b.hasOwnProperty('__staleWhileFetching') &&\n b.__abortController instanceof AC\n )\n }\n\n /**\n * Make an asynchronous cached fetch using the\n * {@link LRUCache.OptionsBase.fetchMethod} function.\n *\n * If the value is in the cache and not stale, then the returned\n * Promise resolves to the value.\n *\n * If not in the cache, or beyond its TTL staleness, then\n * `fetchMethod(key, staleValue, { options, signal, context })` is\n * called, and the value returned will be added to the cache once\n * resolved.\n *\n * If called with `allowStale`, and an asynchronous fetch is\n * currently in progress to reload a stale value, then the former\n * stale value will be returned.\n *\n * If called with `forceRefresh`, then the cached item will be\n * re-fetched, even if it is not stale. However, if `allowStale` is also\n * set, then the old value will still be returned. This is useful\n * in cases where you want to force a reload of a cached value. If\n * a background fetch is already in progress, then `forceRefresh`\n * has no effect.\n *\n * If multiple fetches for the same key are issued, then they will all be\n * coalesced into a single call to fetchMethod.\n *\n * Note that this means that handling options such as\n * {@link LRUCache.OptionsBase.allowStaleOnFetchAbort},\n * {@link LRUCache.FetchOptions.signal},\n * and {@link LRUCache.OptionsBase.allowStaleOnFetchRejection} will be\n * determined by the FIRST fetch() call for a given key.\n *\n * This is a known (fixable) shortcoming which will be addresed on when\n * someone complains about it, as the fix would involve added complexity and\n * may not be worth the costs for this edge case.\n *\n * If {@link LRUCache.OptionsBase.fetchMethod} is not specified, then this is\n * effectively an alias for `Promise.resolve(cache.get(key))`.\n *\n * When the fetch method resolves to a value, if the fetch has not\n * been aborted due to deletion, eviction, or being overwritten,\n * then it is added to the cache using the options provided.\n *\n * If the key is evicted or deleted before the `fetchMethod`\n * resolves, then the AbortSignal passed to the `fetchMethod` will\n * receive an `abort` event, and the promise returned by `fetch()`\n * will reject with the reason for the abort.\n *\n * If a `signal` is passed to the `fetch()` call, then aborting the\n * signal will abort the fetch and cause the `fetch()` promise to\n * reject with the reason provided.\n *\n * **Setting `context`**\n *\n * If an `FC` type is set to a type other than `unknown`, `void`, or\n * `undefined` in the {@link LRUCache} constructor, then all\n * calls to `cache.fetch()` _must_ provide a `context` option. If\n * set to `undefined` or `void`, then calls to fetch _must not_\n * provide a `context` option.\n *\n * The `context` param allows you to provide arbitrary data that\n * might be relevant in the course of fetching the data. It is only\n * relevant for the course of a single `fetch()` operation, and\n * discarded afterwards.\n *\n * **Note: `fetch()` calls are inflight-unique**\n *\n * If you call `fetch()` multiple times with the same key value,\n * then every call after the first will resolve on the same\n * promise1,\n * _even if they have different settings that would otherwise change\n * the behavior of the fetch_, such as `noDeleteOnFetchRejection`\n * or `ignoreFetchAbort`.\n *\n * In most cases, this is not a problem (in fact, only fetching\n * something once is what you probably want, if you're caching in\n * the first place). If you are changing the fetch() options\n * dramatically between runs, there's a good chance that you might\n * be trying to fit divergent semantics into a single object, and\n * would be better off with multiple cache instances.\n *\n * **1**: Ie, they're not the \"same Promise\", but they resolve at\n * the same time, because they're both waiting on the same\n * underlying fetchMethod response.\n */\n\n fetch(\n k: K,\n fetchOptions: unknown extends FC\n ? LRUCache.FetchOptions\n : FC extends undefined | void\n ? LRUCache.FetchOptionsNoContext\n : LRUCache.FetchOptionsWithContext\n ): Promise\n\n // this overload not allowed if context is required\n fetch(\n k: unknown extends FC\n ? K\n : FC extends undefined | void\n ? K\n : never,\n fetchOptions?: unknown extends FC\n ? LRUCache.FetchOptions\n : FC extends undefined | void\n ? LRUCache.FetchOptionsNoContext\n : never\n ): Promise\n\n async fetch(\n k: K,\n fetchOptions: LRUCache.FetchOptions = {}\n ): Promise {\n const {\n // get options\n allowStale = this.allowStale,\n updateAgeOnGet = this.updateAgeOnGet,\n noDeleteOnStaleGet = this.noDeleteOnStaleGet,\n // set options\n ttl = this.ttl,\n noDisposeOnSet = this.noDisposeOnSet,\n size = 0,\n sizeCalculation = this.sizeCalculation,\n noUpdateTTL = this.noUpdateTTL,\n // fetch exclusive options\n noDeleteOnFetchRejection = this.noDeleteOnFetchRejection,\n allowStaleOnFetchRejection = this.allowStaleOnFetchRejection,\n ignoreFetchAbort = this.ignoreFetchAbort,\n allowStaleOnFetchAbort = this.allowStaleOnFetchAbort,\n context,\n forceRefresh = false,\n status,\n signal,\n } = fetchOptions\n\n if (!this.#hasFetchMethod) {\n if (status) status.fetch = 'get'\n return this.get(k, {\n allowStale,\n updateAgeOnGet,\n noDeleteOnStaleGet,\n status,\n })\n }\n\n const options = {\n allowStale,\n updateAgeOnGet,\n noDeleteOnStaleGet,\n ttl,\n noDisposeOnSet,\n size,\n sizeCalculation,\n noUpdateTTL,\n noDeleteOnFetchRejection,\n allowStaleOnFetchRejection,\n allowStaleOnFetchAbort,\n ignoreFetchAbort,\n status,\n signal,\n }\n\n let index = this.#keyMap.get(k)\n if (index === undefined) {\n if (status) status.fetch = 'miss'\n const p = this.#backgroundFetch(k, index, options, context)\n return (p.__returned = p)\n } else {\n // in cache, maybe already fetching\n const v = this.#valList[index]\n if (this.#isBackgroundFetch(v)) {\n const stale =\n allowStale && v.__staleWhileFetching !== undefined\n if (status) {\n status.fetch = 'inflight'\n if (stale) status.returnedStale = true\n }\n return stale ? v.__staleWhileFetching : (v.__returned = v)\n }\n\n // if we force a refresh, that means do NOT serve the cached value,\n // unless we are already in the process of refreshing the cache.\n const isStale = this.#isStale(index)\n if (!forceRefresh && !isStale) {\n if (status) status.fetch = 'hit'\n this.#moveToTail(index)\n if (updateAgeOnGet) {\n this.#updateItemAge(index)\n }\n if (status) this.#statusTTL(status, index)\n return v\n }\n\n // ok, it is stale or a forced refresh, and not already fetching.\n // refresh the cache.\n const p = this.#backgroundFetch(k, index, options, context)\n const hasStale = p.__staleWhileFetching !== undefined\n const staleVal = hasStale && allowStale\n if (status) {\n status.fetch = isStale ? 'stale' : 'refresh'\n if (staleVal && isStale) status.returnedStale = true\n }\n return staleVal ? p.__staleWhileFetching : (p.__returned = p)\n }\n }\n\n /**\n * In some cases, `cache.fetch()` may resolve to `undefined`, either because\n * a {@link LRUCache.OptionsBase#fetchMethod} was not provided (turning\n * `cache.fetch(k)` into just an async wrapper around `cache.get(k)`) or\n * because `ignoreFetchAbort` was specified (either to the constructor or\n * in the {@link LRUCache.FetchOptions}). Also, the\n * {@link OptionsBase.fetchMethod} may return `undefined` or `void`, making\n * the test even more complicated.\n *\n * Because inferring the cases where `undefined` might be returned are so\n * cumbersome, but testing for `undefined` can also be annoying, this method\n * can be used, which will reject if `this.fetch()` resolves to undefined.\n */\n forceFetch(\n k: K,\n fetchOptions: unknown extends FC\n ? LRUCache.FetchOptions\n : FC extends undefined | void\n ? LRUCache.FetchOptionsNoContext\n : LRUCache.FetchOptionsWithContext\n ): Promise\n // this overload not allowed if context is required\n forceFetch(\n k: unknown extends FC\n ? K\n : FC extends undefined | void\n ? K\n : never,\n fetchOptions?: unknown extends FC\n ? LRUCache.FetchOptions\n : FC extends undefined | void\n ? LRUCache.FetchOptionsNoContext\n : never\n ): Promise\n async forceFetch(\n k: K,\n fetchOptions: LRUCache.FetchOptions = {}\n ): Promise {\n const v = await this.fetch(\n k,\n fetchOptions as unknown extends FC\n ? LRUCache.FetchOptions\n : FC extends undefined | void\n ? LRUCache.FetchOptionsNoContext\n : LRUCache.FetchOptionsWithContext\n )\n if (v === undefined) throw new Error('fetch() returned undefined')\n return v\n }\n\n /**\n * If the key is found in the cache, then this is equivalent to\n * {@link LRUCache#get}. If not, in the cache, then calculate the value using\n * the {@link LRUCache.OptionsBase.memoMethod}, and add it to the cache.\n *\n * If an `FC` type is set to a type other than `unknown`, `void`, or\n * `undefined` in the LRUCache constructor, then all calls to `cache.memo()`\n * _must_ provide a `context` option. If set to `undefined` or `void`, then\n * calls to memo _must not_ provide a `context` option.\n *\n * The `context` param allows you to provide arbitrary data that might be\n * relevant in the course of fetching the data. It is only relevant for the\n * course of a single `memo()` operation, and discarded afterwards.\n */\n memo(\n k: K,\n memoOptions: unknown extends FC\n ? LRUCache.MemoOptions\n : FC extends undefined | void\n ? LRUCache.MemoOptionsNoContext\n : LRUCache.MemoOptionsWithContext\n ): V\n // this overload not allowed if context is required\n memo(\n k: unknown extends FC\n ? K\n : FC extends undefined | void\n ? K\n : never,\n memoOptions?: unknown extends FC\n ? LRUCache.MemoOptions\n : FC extends undefined | void\n ? LRUCache.MemoOptionsNoContext\n : never\n ): V\n memo(k: K, memoOptions: LRUCache.MemoOptions = {}) {\n const memoMethod = this.#memoMethod\n if (!memoMethod) {\n throw new Error('no memoMethod provided to constructor')\n }\n const { context, forceRefresh, ...options } = memoOptions\n const v = this.get(k, options)\n if (!forceRefresh && v !== undefined) return v\n const vv = memoMethod(k, v, {\n options,\n context,\n } as LRUCache.MemoizerOptions)\n this.set(k, vv, options)\n return vv\n }\n\n /**\n * Return a value from the cache. Will update the recency of the cache\n * entry found.\n *\n * If the key is not found, get() will return `undefined`.\n */\n get(k: K, getOptions: LRUCache.GetOptions = {}) {\n const {\n allowStale = this.allowStale,\n updateAgeOnGet = this.updateAgeOnGet,\n noDeleteOnStaleGet = this.noDeleteOnStaleGet,\n status,\n } = getOptions\n const index = this.#keyMap.get(k)\n if (index !== undefined) {\n const value = this.#valList[index]\n const fetching = this.#isBackgroundFetch(value)\n if (status) this.#statusTTL(status, index)\n if (this.#isStale(index)) {\n if (status) status.get = 'stale'\n // delete only if not an in-flight background fetch\n if (!fetching) {\n if (!noDeleteOnStaleGet) {\n this.#delete(k, 'expire')\n }\n if (status && allowStale) status.returnedStale = true\n return allowStale ? value : undefined\n } else {\n if (\n status &&\n allowStale &&\n value.__staleWhileFetching !== undefined\n ) {\n status.returnedStale = true\n }\n return allowStale ? value.__staleWhileFetching : undefined\n }\n } else {\n if (status) status.get = 'hit'\n // if we're currently fetching it, we don't actually have it yet\n // it's not stale, which means this isn't a staleWhileRefetching.\n // If it's not stale, and fetching, AND has a __staleWhileFetching\n // value, then that means the user fetched with {forceRefresh:true},\n // so it's safe to return that value.\n if (fetching) {\n return value.__staleWhileFetching\n }\n this.#moveToTail(index)\n if (updateAgeOnGet) {\n this.#updateItemAge(index)\n }\n return value\n }\n } else if (status) {\n status.get = 'miss'\n }\n }\n\n #connect(p: Index, n: Index) {\n this.#prev[n] = p\n this.#next[p] = n\n }\n\n #moveToTail(index: Index): void {\n // if tail already, nothing to do\n // if head, move head to next[index]\n // else\n // move next[prev[index]] to next[index] (head has no prev)\n // move prev[next[index]] to prev[index]\n // prev[index] = tail\n // next[tail] = index\n // tail = index\n if (index !== this.#tail) {\n if (index === this.#head) {\n this.#head = this.#next[index] as Index\n } else {\n this.#connect(\n this.#prev[index] as Index,\n this.#next[index] as Index\n )\n }\n this.#connect(this.#tail, index)\n this.#tail = index\n }\n }\n\n /**\n * Deletes a key out of the cache.\n *\n * Returns true if the key was deleted, false otherwise.\n */\n delete(k: K) {\n return this.#delete(k, 'delete')\n }\n\n #delete(k: K, reason: LRUCache.DisposeReason) {\n let deleted = false\n if (this.#size !== 0) {\n const index = this.#keyMap.get(k)\n if (index !== undefined) {\n deleted = true\n if (this.#size === 1) {\n this.#clear(reason)\n } else {\n this.#removeItemSize(index)\n const v = this.#valList[index]\n if (this.#isBackgroundFetch(v)) {\n v.__abortController.abort(new Error('deleted'))\n } else if (this.#hasDispose || this.#hasDisposeAfter) {\n if (this.#hasDispose) {\n this.#dispose?.(v as V, k, reason)\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([v as V, k, reason])\n }\n }\n this.#keyMap.delete(k)\n this.#keyList[index] = undefined\n this.#valList[index] = undefined\n if (index === this.#tail) {\n this.#tail = this.#prev[index] as Index\n } else if (index === this.#head) {\n this.#head = this.#next[index] as Index\n } else {\n const pi = this.#prev[index] as number\n this.#next[pi] = this.#next[index] as number\n const ni = this.#next[index] as number\n this.#prev[ni] = this.#prev[index] as number\n }\n this.#size--\n this.#free.push(index)\n }\n }\n }\n if (this.#hasDisposeAfter && this.#disposed?.length) {\n const dt = this.#disposed\n let task: DisposeTask | undefined\n while ((task = dt?.shift())) {\n this.#disposeAfter?.(...task)\n }\n }\n return deleted\n }\n\n /**\n * Clear the cache entirely, throwing away all values.\n */\n clear() {\n return this.#clear('delete')\n }\n #clear(reason: LRUCache.DisposeReason) {\n for (const index of this.#rindexes({ allowStale: true })) {\n const v = this.#valList[index]\n if (this.#isBackgroundFetch(v)) {\n v.__abortController.abort(new Error('deleted'))\n } else {\n const k = this.#keyList[index]\n if (this.#hasDispose) {\n this.#dispose?.(v as V, k as K, reason)\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([v as V, k as K, reason])\n }\n }\n }\n\n this.#keyMap.clear()\n this.#valList.fill(undefined)\n this.#keyList.fill(undefined)\n if (this.#ttls && this.#starts) {\n this.#ttls.fill(0)\n this.#starts.fill(0)\n }\n if (this.#sizes) {\n this.#sizes.fill(0)\n }\n this.#head = 0 as Index\n this.#tail = 0 as Index\n this.#free.length = 0\n this.#calculatedSize = 0\n this.#size = 0\n if (this.#hasDisposeAfter && this.#disposed) {\n const dt = this.#disposed\n let task: DisposeTask | undefined\n while ((task = dt?.shift())) {\n this.#disposeAfter?.(...task)\n }\n }\n }\n}\n","const knownSizes = new WeakMap()\n\n/**\n * @see {@link https://stackoverflow.com/a/11900218/356537}\n */\nexport function roughSizeOfObject(value: unknown): number {\n const objectList = new Set()\n const stack = [value] // This would be more efficient using a circular buffer\n let bytes = 0\n\n while (stack.length) {\n const value = stack.pop()\n\n // > All objects on the heap start with a shape descriptor, which takes one\n // > pointer size (usually 4 bytes these days, thanks to \"pointer\n // > compression\" on 64-bit platforms).\n\n switch (typeof value) {\n // Types are ordered by frequency\n case 'string':\n // https://stackoverflow.com/a/68791382/356537\n bytes += 12 + 4 * Math.ceil(value.length / 4)\n break\n case 'number':\n bytes += 12 // Shape descriptor + double\n break\n case 'boolean':\n bytes += 4 // Shape descriptor\n break\n case 'object':\n bytes += 4 // Shape descriptor\n\n if (value === null) {\n break\n }\n\n if (knownSizes.has(value)) {\n bytes += knownSizes.get(value)!\n break\n }\n\n if (objectList.has(value)) continue\n objectList.add(value)\n\n if (Array.isArray(value)) {\n bytes += 4\n stack.push(...value)\n } else {\n bytes += 8\n const keys = Object.getOwnPropertyNames(value)\n for (let i = 0; i < keys.length; i++) {\n bytes += 4\n const key = keys[i]\n const val = (value as Record)[key]\n if (val !== undefined) stack.push(val)\n stack.push(key)\n }\n }\n break\n case 'function':\n bytes += 8 // Shape descriptor + pointer (assuming functions are shared)\n break\n case 'symbol':\n bytes += 8 // Shape descriptor + pointer\n break\n case 'bigint':\n bytes += 16 // Shape descriptor + BigInt\n break\n }\n }\n\n if (typeof value === 'object' && value !== null) {\n knownSizes.set(value, bytes)\n }\n\n return bytes\n}\n","import { LRUCache } from 'lru-cache'\nimport type { Key, SimpleStore, Value } from '@atproto-labs/simple-store'\nimport { roughSizeOfObject } from './util.js'\n\nexport type SimpleStoreMemoryOptions = {\n /**\n * The maximum number of entries in the cache.\n */\n max?: number\n\n /**\n * The time-to-live of a cache entry, in milliseconds.\n */\n ttl?: number\n\n /**\n * Whether to automatically prune expired entries.\n */\n ttlAutopurge?: boolean\n\n /**\n * The maximum total size of the cache, in units defined by the sizeCalculation\n * function.\n *\n * @default No limit\n */\n maxSize?: number\n\n /**\n * The maximum size of a single cache entry, in units defined by the\n * sizeCalculation function.\n *\n * @default No limit\n */\n maxEntrySize?: number\n\n /**\n * A function that returns the size of a value. The size is used to determine\n * when the cache should be pruned, based on `maxSize`.\n *\n * @default The (rough) size in bytes used in memory.\n */\n sizeCalculation?: (value: V, key: K) => number\n} & ( // Memory is not infinite, so at least one pruning option is required.\n { max: number } | { maxSize: number } | { ttl: number; ttlAutopurge: boolean }\n)\n\n// LRUCache does not allow storing \"null\", so we use a symbol to represent it.\nconst nullSymbol = Symbol('nullItem')\ntype AsLruValue = V extends null\n ? typeof nullSymbol\n : Exclude\nconst toLruValue = (value: V) =>\n (value === null ? nullSymbol : value) as AsLruValue\nconst fromLruValue = (value: AsLruValue) =>\n (value === nullSymbol ? null : value) as V\n\nexport class SimpleStoreMemory<\n K extends Key,\n V extends Value,\n> implements SimpleStore {\n #cache: LRUCache>\n\n constructor({ sizeCalculation, ...options }: SimpleStoreMemoryOptions) {\n this.#cache = new LRUCache>({\n ...options,\n allowStale: false,\n updateAgeOnGet: false,\n updateAgeOnHas: false,\n sizeCalculation: sizeCalculation\n ? (value, key) => sizeCalculation(fromLruValue(value), key)\n : options.maxEntrySize != null || options.maxSize != null\n ? // maxEntrySize and maxSize require a size calculation function.\n roughSizeOfObject\n : undefined,\n })\n }\n\n get(key: K): V | undefined {\n const value = this.#cache.get(key)\n if (value === undefined) return undefined\n\n return fromLruValue(value)\n }\n\n set(key: K, value: V): void {\n this.#cache.set(key, toLruValue(value))\n }\n\n del(key: K): void {\n this.#cache.delete(key)\n }\n\n clear(): void {\n this.#cache.clear()\n }\n}\n","import type { Did, DidDocument } from '@atproto/did'\nimport {\n SimpleStoreMemory,\n type SimpleStoreMemoryOptions,\n} from '@atproto-labs/simple-store-memory'\nimport type { DidCache } from './did-cache.js'\n\nconst DEFAULT_TTL = 3600 * 1000 // 1 hour\nconst DEFAULT_MAX_SIZE = 50 * 1024 * 1024 // ~50MB\n\nexport type DidCacheMemoryOptions = SimpleStoreMemoryOptions\n\nexport class DidCacheMemory\n extends SimpleStoreMemory\n implements DidCache\n{\n constructor(options?: DidCacheMemoryOptions) {\n super(\n options?.max == null\n ? { ttl: DEFAULT_TTL, maxSize: DEFAULT_MAX_SIZE, ...options }\n : { ttl: DEFAULT_TTL, ...options },\n )\n }\n}\n","import type { Did, DidDocument } from '@atproto/did'\nimport {\n CachedGetter,\n type SimpleStore,\n type StoreErrorHandler,\n swallowStoreErrors,\n} from '@atproto-labs/simple-store'\nimport { DidCacheMemory } from './did-cache-memory.js'\nimport type { DidMethod, ResolveDidOptions } from './did-method.js'\nimport type { DidResolver, ResolvedDocument } from './did-resolver.js'\n\nexport type { DidMethod, ResolveDidOptions, ResolvedDocument }\n\nexport type DidCache = SimpleStore\n\n/**\n * Called when the {@link DidCache} throws. The cache is treated as best-effort:\n * failures are logged (by default) and degrade to a cache miss + resolution\n * from the underlying resolver, rather than being propagated.\n */\nexport type DidCacheErrorHandler = StoreErrorHandler\n\nexport type DidResolverCachedOptions = {\n cache?: DidCache\n onDidCacheError?: DidCacheErrorHandler\n}\n\nexport class DidResolverCached<\n M extends string = string,\n> implements DidResolver {\n protected readonly getter: CachedGetter\n constructor(\n resolver: DidResolver,\n cache: DidCache = new DidCacheMemory(),\n onDidCacheError?: DidCacheErrorHandler,\n ) {\n this.getter = new CachedGetter(\n (did, options) => resolver.resolve(did, options),\n swallowStoreErrors(cache, onDidCacheError),\n )\n }\n\n public async resolve(did: D, options?: ResolveDidOptions) {\n return this.getter.get(did, options) as Promise>\n }\n}\n","export abstract class FetchError extends Error {\n constructor(\n public readonly statusCode: number,\n message?: string,\n options?: ErrorOptions,\n ) {\n super(message, options)\n }\n\n get expose() {\n return true\n }\n}\n","import type { ThisParameterOverride } from './util.js'\n\nexport type FetchContext = void | null | typeof globalThis\n\nexport type FetchBound = (\n input: string | URL | Request,\n init?: RequestInit,\n) => Promise\n\n// NOT using \"typeof globalThis.fetch\" here because \"globalThis.fetch\" does not\n// have a \"this\" parameter, while runtimes do ensure that \"fetch\" is called with\n// the correct \"this\" parameter (either null, undefined, or window).\n\nexport type Fetch = ThisParameterOverride\n\nexport type SimpleFetchBound = (input: Request) => Promise\nexport type SimpleFetch = ThisParameterOverride<\n C,\n SimpleFetchBound\n>\n\nexport function toRequestTransformer(\n requestTransformer: (this: C, input: Request) => O,\n): ThisParameterOverride<\n C,\n (input: string | URL | Request, init?: RequestInit) => O\n> {\n return function (this: C, input, init) {\n return requestTransformer.call(this, asRequest(input, init))\n }\n}\n\nexport function asRequest(\n input: string | URL | Request,\n init?: RequestInit,\n): Request {\n if (!init && input instanceof Request) return input\n return new Request(input, init)\n}\n","// @TODO: Move some of these to a shared package ?\n\nexport type JsonScalar = string | number | boolean | null\nexport type Json = JsonScalar | Json[] | { [key: string]: undefined | Json }\nexport type JsonObject = { [key: string]: undefined | Json }\nexport type JsonArray = Json[]\n\nexport type ThisParameterOverride<\n C,\n Fn extends (...a: any) => any,\n> = Fn extends (...args: infer P) => infer R\n ? ((this: C, ...args: P) => R) & {\n bind(context: C): (...args: P) => R\n }\n : never\n\nexport function isIp(hostname: string) {\n // IPv4\n if (hostname.match(/^\\d+\\.\\d+\\.\\d+\\.\\d+$/)) return true\n\n // IPv6\n if (hostname.startsWith('[') && hostname.endsWith(']')) return true\n\n return false\n}\n\nexport const ifString = (v: V) => (typeof v === 'string' ? v : undefined)\n\nexport class MaxBytesTransformStream extends TransformStream<\n Uint8Array,\n Uint8Array\n> {\n constructor(maxBytes: number) {\n // Note: negation accounts for invalid value types (NaN, non numbers)\n if (!(maxBytes >= 0)) {\n throw new TypeError('maxBytes must be a non-negative number')\n }\n\n let bytesRead = 0\n\n super({\n transform: (\n chunk: Uint8Array,\n ctrl: TransformStreamDefaultController,\n ) => {\n if ((bytesRead += chunk.length) <= maxBytes) {\n ctrl.enqueue(chunk)\n } else {\n ctrl.error(new Error('Response too large'))\n }\n },\n })\n }\n}\n\nconst LINE_BREAK = /\\r?\\n/g\nexport function padLines(input: string, pad: string) {\n if (!input) return input\n return pad + input.replace(LINE_BREAK, `$&${pad}`)\n}\n\n/**\n * @param [onCancellationError] - Callback that will trigger to asynchronously\n * handle any error that occurs while cancelling the response body. Providing\n * this will speed up the process and avoid potential deadlocks. Defaults to\n * awaiting the cancellation operation. use `\"log\"` to log the error.\n * @see {@link https://undici.nodejs.org/#/?id=garbage-collection}\n * @note awaiting this function's result, when no `onCancellationError` is\n * provided, might result in a dead lock. Indeed, if the response was cloned(),\n * the response.body.cancel() method will not resolve until the other response's\n * body is consumed/cancelled.\n *\n * @example\n * ```ts\n * // Make sure response was not cloned, or that every cloned response was\n * // consumed/cancelled before awaiting this function's result.\n * await cancelBody(response)\n * ```\n * @example\n * ```ts\n * await cancelBody(response, (err) => {\n * // No biggie, let's just log the error\n * console.warn('Failed to cancel response body', err)\n * })\n * ```\n * @example\n * ```ts\n * // Will generate an \"unhandledRejection\" if an error occurs while cancelling\n * // the response body. This will likely crash the process.\n * await cancelBody(response, (err) => { throw err })\n * ```\n */\nexport async function cancelBody(\n body: Body,\n onCancellationError?: 'log' | ((err: unknown) => void),\n): Promise {\n if (\n body.body &&\n !body.bodyUsed &&\n !body.body.locked &&\n // Support for alternative fetch implementations\n typeof body.body.cancel === 'function'\n ) {\n if (typeof onCancellationError === 'function') {\n void body.body.cancel().catch(onCancellationError)\n } else if (onCancellationError === 'log') {\n void body.body.cancel().catch(logCancellationError)\n } else {\n await body.body.cancel()\n }\n }\n}\n\nexport function logCancellationError(err: unknown): void {\n console.warn('Failed to cancel response body', err)\n}\n\nexport async function stringifyMessage(input: Body & { headers: Headers }) {\n try {\n const headers = stringifyHeaders(input.headers)\n const payload = await stringifyBody(input)\n return headers && payload ? `${headers}\\n${payload}` : headers || payload\n } finally {\n void cancelBody(input, 'log')\n }\n}\n\nfunction stringifyHeaders(headers: Headers) {\n return Array.from(headers)\n .map(([name, value]) => `${name}: ${value}`)\n .join('\\n')\n}\n\nasync function stringifyBody(body: Body) {\n try {\n const blob = await body.blob()\n if (blob.type?.startsWith('text/')) {\n const text = await blob.text()\n return JSON.stringify(text)\n }\n\n if (/application\\/(?:\\w+\\+)?json/.test(blob.type)) {\n const text = await blob.text()\n return text.includes('\\n') ? JSON.stringify(JSON.parse(text)) : text\n }\n\n return `[Body size: ${blob.size}, type: ${JSON.stringify(blob.type)} ]`\n } catch {\n return '[Body could not be read]'\n }\n}\n\nexport const extractUrl = (input: Request | string | URL) =>\n typeof input === 'string'\n ? new URL(input)\n : input instanceof URL\n ? input\n : new URL(input.url)\n","import { FetchError } from './fetch-error.js'\nimport { asRequest } from './fetch.js'\nimport { isIp } from './util.js'\n\nexport class FetchRequestError extends FetchError {\n constructor(\n public readonly request: Request,\n statusCode?: number,\n message?: string,\n options?: ErrorOptions,\n ) {\n if (statusCode == null || !message) {\n const info = extractInfo(extractRootCause(options?.cause))\n statusCode ??= info[0]\n message ||= info[1]\n }\n\n super(statusCode, message, options)\n }\n\n get expose() {\n // A 500 request error means that the request was not made due to an infra,\n // programming or server side issue. The message should no be exposed to\n // downstream clients.\n return this.statusCode !== 500\n }\n\n static from(request: Request, cause: unknown): FetchRequestError {\n if (cause instanceof FetchRequestError) return cause\n return new FetchRequestError(request, undefined, undefined, { cause })\n }\n}\n\nfunction extractRootCause(err: unknown): unknown {\n // Unwrap the Network error from undici (i.e. Node's internal fetch() implementation)\n // https://github.com/nodejs/undici/blob/3274c975947ce11a08508743df026f73598bfead/lib/web/fetch/index.js#L223-L228\n if (\n err instanceof TypeError &&\n err.message === 'fetch failed' &&\n err.cause !== undefined\n ) {\n return err.cause\n }\n\n return err\n}\n\nfunction extractInfo(err: unknown): [statusCode: number, message: string] {\n if (typeof err === 'string' && err.length > 0) {\n return [500, err]\n }\n\n if (!(err instanceof Error)) {\n return [500, 'Failed to fetch']\n }\n\n // Undici fetch() \"network\" errors\n switch (err.message) {\n case 'failed to fetch the data URL':\n return [400, err.message]\n case 'unexpected redirect':\n case 'cors failure':\n case 'blocked':\n case 'proxy authentication required':\n // These cases could be represented either as a 4xx user error (invalid\n // URL provided), or as a 5xx server error (server didn't behave as\n // expected).\n return [502, err.message]\n }\n\n // NodeJS errors\n const code = 'code' in err ? err.code : undefined\n if (typeof code === 'string') {\n switch (true) {\n case code === 'ENOTFOUND':\n return [400, 'Invalid hostname']\n case code === 'ECONNREFUSED':\n return [502, 'Connection refused']\n case code === 'DEPTH_ZERO_SELF_SIGNED_CERT':\n return [502, 'Self-signed certificate']\n case code.startsWith('ERR_TLS'):\n return [502, 'TLS error']\n case code.startsWith('ECONN'):\n return [502, 'Connection error']\n default:\n return [500, `${code} error`]\n }\n }\n\n return [500, err.message]\n}\n\nexport function protocolCheckRequestTransform(protocols: {\n 'about:'?: boolean\n 'blob:'?: boolean\n 'data:'?: boolean\n 'file:'?: boolean\n 'http:'?: boolean | { allowCustomPort: boolean }\n 'https:'?: boolean | { allowCustomPort: boolean }\n}) {\n return (input: Request | string | URL, init?: RequestInit) => {\n const request = asRequest(input, init)\n\n const { protocol, port } = new URL(request.url)\n\n const config: undefined | boolean | { allowCustomPort?: boolean } =\n Object.hasOwn(protocols, protocol)\n ? protocols[protocol as keyof typeof protocols]\n : undefined\n\n if (!config) {\n throw new FetchRequestError(\n request,\n 400,\n `Forbidden protocol \"${protocol}\"`,\n )\n } else if (config === true) {\n // Safe to proceed\n } else if (!config['allowCustomPort'] && port !== '') {\n throw new FetchRequestError(\n request,\n 400,\n `Custom ${protocol} ports not allowed`,\n )\n }\n\n return request\n }\n}\n\nexport function explicitRedirectCheckRequestTransform() {\n return (input: Request | string | URL, init?: RequestInit): Request => {\n const request = asRequest(input, init)\n\n // We want to avoid the case where the user of this code forgot to explicit\n // a redirect strategy.\n if (init?.redirect != null) return request\n\n // Sadly, if the `input` is a request, and `init` was omitted, there is no\n // way to tell if the `redirect === 'follow'` value comes from the user, or\n // fetch's default. In order to prevent accidental omission, this case is\n // forbidden.\n if (request.redirect === 'follow') {\n throw new FetchRequestError(\n request,\n 500,\n 'Request redirect must be \"error\" or \"manual\"',\n )\n }\n\n return request\n }\n}\n\nexport function requireHostHeaderTransform() {\n return (input: Request | string | URL, init?: RequestInit) => {\n // Note that fetch() will automatically add the Host header from the URL and\n // discard any Host header manually set in the request.\n\n const request = asRequest(input, init)\n\n const { protocol, hostname } = new URL(request.url)\n\n // \"Host\" header only makes sense in the context of an HTTP request\n if (protocol !== 'http:' && protocol !== 'https:') {\n throw new FetchRequestError(\n request,\n 400,\n `\"${protocol}\" requests are not allowed`,\n )\n }\n\n if (!hostname || isIp(hostname)) {\n throw new FetchRequestError(request, 400, 'Invalid hostname')\n }\n\n return request\n }\n}\n\nexport const DEFAULT_FORBIDDEN_DOMAIN_NAMES = [\n 'example.com',\n '*.example.com',\n 'example.org',\n '*.example.org',\n 'example.net',\n '*.example.net',\n 'googleusercontent.com',\n '*.googleusercontent.com',\n]\n\nexport function forbiddenDomainNameRequestTransform(\n denyList: Iterable = DEFAULT_FORBIDDEN_DOMAIN_NAMES,\n) {\n const denySet = new Set(denyList)\n\n // Optimization: if no forbidden domain names are provided, we can skip the\n // check entirely.\n if (denySet.size === 0) {\n return asRequest\n }\n\n return async (input: Request | string | URL, init?: RequestInit) => {\n const request = asRequest(input, init)\n\n const { hostname } = new URL(request.url)\n\n // Full domain name check\n if (denySet.has(hostname)) {\n throw new FetchRequestError(request, 403, 'Forbidden hostname')\n }\n\n // Sub domain name check\n let curDot = hostname.indexOf('.')\n while (curDot !== -1) {\n const subdomain = hostname.slice(curDot + 1)\n if (denySet.has(`*.${subdomain}`)) {\n throw new FetchRequestError(request, 403, 'Forbidden hostname')\n }\n curDot = hostname.indexOf('.', curDot + 1)\n }\n\n return request\n }\n}\n","import type { Fn, Transformer } from './type.js'\n\ntype PipelineArgs = T extends [\n Fn,\n ...any[],\n]\n ? A\n : never\n\ntype PipelineOutput = T extends [...any[], Fn] ? O : never\n\ntype PipelineRecursive<\n F extends readonly Transformer[],\n Acc extends any[],\n> = F extends readonly [Transformer]\n ? [...Acc, Transformer]\n : F extends readonly [Transformer, ...infer Tail]\n ? Tail extends readonly [Transformer, ...any[]]\n ? PipelineRecursive]>\n : never\n : never\n\ntype Pipeline, ...Transformer[]]> =\n F extends readonly [Fn]\n ? [Fn]\n : F extends readonly [Fn, ...infer Tail]\n ? Tail extends readonly [Transformer, ...any[]]\n ? PipelineRecursive]>\n : never\n : never\n\n/**\n * This utility function allows to properly type a pipeline of transformers.\n *\n * @example\n * ```ts\n * // Will be typed as \"(input: string) => Promise\"\n * const parse = pipe(\n * async (input: string) => JSON.parse(input),\n * async (input: unknown) => {\n * if (typeof input === 'number') return input\n * throw new TypeError('Invalid input')\n * },\n * (input: number) => input * 2,\n * )\n * ```\n */\nexport function pipe, ...Transformer[]]>(\n ...pipeline: Pipeline extends T ? T : Pipeline\n) {\n return pipeline.reduce(pipeTwo) as (\n ...args: PipelineArgs\n ) => Promise>\n}\n\nexport function pipeTwo(\n first: Fn,\n second: Transformer,\n): (...args: A) => Promise {\n return async (...args) => second(await first(...args))\n}\n","export class TransformedResponse extends Response {\n #response: Response\n\n constructor(response: Response, transform: TransformStream) {\n if (!response.body) {\n throw new TypeError('Response body is not available')\n }\n if (response.bodyUsed) {\n throw new TypeError('Response body is already used')\n }\n\n super(response.body.pipeThrough(transform), {\n status: response.status,\n statusText: response.statusText,\n headers: response.headers,\n })\n\n this.#response = response\n }\n\n /**\n * Some props can't be set through ResponseInit, so we need to proxy them\n */\n get url() {\n return this.#response.url\n }\n get redirected() {\n return this.#response.redirected\n }\n get type() {\n return this.#response.type\n }\n get statusText() {\n return this.#response.statusText\n }\n}\n","import { type Transformer, pipe } from '@atproto-labs/pipe'\nimport { FetchError } from './fetch-error.js'\nimport { TransformedResponse } from './transformed-response.js'\nimport {\n type Json,\n MaxBytesTransformStream,\n cancelBody,\n ifString,\n logCancellationError,\n} from './util.js'\n\n/**\n * media-type = type \"/\" subtype *( \";\" parameter )\n * type = token\n * subtype = token\n * token = 1*\n * separators = \"(\" | \")\" | \"<\" | \">\" | \"@\"\n * | \",\" | \";\" | \":\" | \"\\\" | <\">\n * | \"/\" | \"[\" | \"]\" | \"?\" | \"=\"\n * | \"{\" | \"}\" | SP | HT\n * CTL = \n * SP = \n * HT = \n * @note The type, subtype, and parameter attribute names are case-insensitive.\n * @see {@link https://datatracker.ietf.org/doc/html/rfc2616#autoid-23}\n */\nconst JSON_MIME = /^application\\/(?:[^()<>@,;:/[\\]\\\\?={} \\t]+\\+)?json$/i\n\nexport type ResponseTransformer = Transformer\nexport type ResponseMessageGetter = Transformer\n\nexport class FetchResponseError extends FetchError {\n constructor(\n public readonly response: Response,\n statusCode: number = response.status,\n message: string = response.statusText,\n options?: ErrorOptions,\n ) {\n super(statusCode, message, options)\n }\n\n static async from(\n response: Response,\n customMessage: string | ResponseMessageGetter = extractResponseMessage,\n statusCode = response.status,\n options?: ErrorOptions,\n ) {\n const message =\n typeof customMessage === 'string'\n ? customMessage\n : typeof customMessage === 'function'\n ? await customMessage(response)\n : undefined\n\n return new FetchResponseError(response, statusCode, message, options)\n }\n}\n\nconst extractResponseMessage: ResponseMessageGetter = async (response) => {\n const mimeType = extractMime(response)\n if (!mimeType) return undefined\n\n try {\n if (mimeType === 'text/plain') {\n return await response.text()\n } else if (JSON_MIME.test(mimeType)) {\n const json: unknown = await response.json()\n\n if (typeof json === 'string') return json\n if (typeof json === 'object' && json != null) {\n if ('error_description' in json) {\n const errorDescription = ifString(json.error_description)\n if (errorDescription) return errorDescription\n }\n\n if ('error' in json) {\n const error = ifString(json.error)\n if (error) return error\n }\n\n if ('message' in json) {\n const message = ifString(json.message)\n if (message) return message\n }\n }\n }\n } catch {\n // noop\n }\n\n return undefined\n}\n\nexport async function peekJson(\n response: Response,\n maxSize = Infinity,\n): Promise {\n const type = extractMime(response)\n if (type !== 'application/json') return undefined\n checkLength(response, maxSize)\n\n // 1) Clone the request so we can consume the body\n const clonedResponse = response.clone()\n\n // 2) Make sure the request's body is not too large\n const limitedResponse =\n response.body && maxSize < Infinity\n ? new TransformedResponse(\n clonedResponse,\n new MaxBytesTransformStream(maxSize),\n )\n : // Note: some runtimes (e.g. react-native) don't expose a body property\n clonedResponse\n\n // 3) Parse the JSON\n return limitedResponse.json()\n}\n\nexport function checkLength(response: Response, maxBytes: number) {\n // Note: negation accounts for invalid value types (NaN, non numbers)\n if (!(maxBytes >= 0)) {\n throw new TypeError('maxBytes must be a non-negative number')\n }\n const length = extractLength(response)\n if (length != null && length > maxBytes) {\n throw new FetchResponseError(response, 502, 'Response too large')\n }\n return length\n}\n\nexport function extractLength(response: Response) {\n const contentLength = response.headers.get('Content-Length')\n if (contentLength == null) return undefined\n if (!/^\\d+$/.test(contentLength)) {\n throw new FetchResponseError(response, 502, 'Invalid Content-Length')\n }\n const length = Number(contentLength)\n if (!Number.isSafeInteger(length)) {\n throw new FetchResponseError(response, 502, 'Content-Length too large')\n }\n return length\n}\n\nexport function extractMime(response: Response) {\n const contentType = response.headers.get('Content-Type')\n if (contentType == null) return undefined\n\n return contentType.split(';', 1)[0]!.trim()\n}\n\n/**\n * If the transformer results in an error, ensure that the response body is\n * consumed as, in some environments (Node 👀), the response will not\n * automatically be GC'd.\n *\n * @see {@link https://undici.nodejs.org/#/?id=garbage-collection}\n * @param [onCancellationError] - Callback to handle any async body cancelling\n * error. Defaults to logging the error. Do not use `null` if the request is\n * cloned.\n */\nexport function cancelBodyOnError(\n transformer: Transformer,\n onCancellationError: null | ((err: unknown) => void) = logCancellationError,\n): (response: Response) => Promise {\n return async (response) => {\n try {\n return await transformer(response)\n } catch (err) {\n await cancelBody(response, onCancellationError ?? undefined)\n throw err\n }\n }\n}\n\nexport function fetchOkProcessor(\n customMessage?: string | ResponseMessageGetter,\n): ResponseTransformer {\n return cancelBodyOnError((response) => {\n return fetchOkTransformer(response, customMessage)\n })\n}\n\nexport async function fetchOkTransformer(\n response: Response,\n customMessage?: string | ResponseMessageGetter,\n) {\n if (response.ok) return response\n throw await FetchResponseError.from(response, customMessage)\n}\n\nexport function fetchMaxSizeProcessor(maxBytes: number): ResponseTransformer {\n if (maxBytes === Infinity) return (response) => response\n if (!Number.isFinite(maxBytes) || maxBytes < 0) {\n throw new TypeError('maxBytes must be a 0, Infinity or a positive number')\n }\n return cancelBodyOnError((response) => {\n return fetchResponseMaxSizeChecker(response, maxBytes)\n })\n}\n\nexport function fetchResponseMaxSizeChecker(\n response: Response,\n maxBytes: number,\n): Response {\n if (maxBytes === Infinity) return response\n checkLength(response, maxBytes)\n\n // Some engines (react-native 👀) don't expose a body property. In that case,\n // we will only rely on the Content-Length header.\n if (!response.body) return response\n\n const transform = new MaxBytesTransformStream(maxBytes)\n return new TransformedResponse(response, transform)\n}\n\nexport type MimeTypeCheckFn = (mimeType: string) => boolean\nexport type MimeTypeCheck = string | RegExp | MimeTypeCheckFn\n\nexport function fetchTypeProcessor(\n expectedMime: MimeTypeCheck,\n contentTypeRequired = true,\n): ResponseTransformer {\n const isExpected: MimeTypeCheckFn =\n typeof expectedMime === 'string'\n ? (mimeType) => mimeType === expectedMime\n : expectedMime instanceof RegExp\n ? (mimeType) => expectedMime.test(mimeType)\n : expectedMime\n\n return cancelBodyOnError((response) => {\n return fetchResponseTypeChecker(response, isExpected, contentTypeRequired)\n })\n}\n\nexport async function fetchResponseTypeChecker(\n response: Response,\n isExpectedMime: MimeTypeCheckFn,\n contentTypeRequired = true,\n): Promise {\n const mimeType = extractMime(response)\n if (mimeType) {\n if (!isExpectedMime(mimeType.toLowerCase())) {\n throw await FetchResponseError.from(\n response,\n `Unexpected response Content-Type (${mimeType})`,\n 502,\n )\n }\n } else if (contentTypeRequired) {\n throw await FetchResponseError.from(\n response,\n 'Missing response Content-Type header',\n 502,\n )\n }\n\n return response\n}\n\nexport type ParsedJsonResponse = {\n response: Response\n json: T\n}\n\nexport async function fetchResponseJsonTransformer(\n response: Response,\n): Promise> {\n try {\n const json = (await response.json()) as T\n return { response, json }\n } catch (cause) {\n throw new FetchResponseError(\n response,\n 502,\n 'Unable to parse response as JSON',\n { cause },\n )\n }\n}\n\nexport function fetchJsonProcessor(\n expectedMime: MimeTypeCheck = JSON_MIME,\n contentTypeRequired = true,\n): Transformer> {\n return pipe(\n fetchTypeProcessor(expectedMime, contentTypeRequired),\n cancelBodyOnError(fetchResponseJsonTransformer),\n )\n}\n\nexport type SyncValidationSchema = {\n parse(value: unknown, params?: P): S\n}\n\nexport type AsyncValidationSchema = {\n parseAsync(value: unknown, params?: P): Promise\n}\n\nexport function fetchJsonValidatorProcessor(\n schema: SyncValidationSchema | AsyncValidationSchema,\n params?: P,\n): Transformer {\n if ('parseAsync' in schema && typeof schema.parseAsync === 'function') {\n return async (jsonResponse: ParsedJsonResponse): Promise =>\n schema.parseAsync(jsonResponse.json, params)\n }\n\n if ('parse' in schema && typeof schema.parse === 'function') {\n return async (jsonResponse: ParsedJsonResponse): Promise =>\n schema.parse(jsonResponse.json, params)\n }\n\n // Needed for type safety (and allows fool proofing the usage of this function)\n throw new TypeError('Invalid schema')\n}\n\n/** @note Use {@link fetchJsonValidatorProcessor} instead */\nexport const fetchJsonZodProcessor = fetchJsonValidatorProcessor\n","import { FetchRequestError } from './fetch-request.js'\nimport { type Fetch, type FetchContext, toRequestTransformer } from './fetch.js'\nimport { TransformedResponse } from './transformed-response.js'\nimport { padLines, stringifyMessage } from './util.js'\n\ntype LogFn = (...args: Args) => void | PromiseLike\n\nexport function loggedFetch({\n fetch = globalThis.fetch as Fetch,\n logRequest = true as boolean | LogFn<[request: Request]>,\n logResponse = true as boolean | LogFn<[response: Response, request: Request]>,\n logError = true as boolean | LogFn<[error: unknown, request: Request]>,\n}) {\n const onRequest: undefined | LogFn<[request: Request]> =\n logRequest === true\n ? async (request) => {\n const requestMessage = await stringifyMessage(request)\n console.info(\n `> ${request.method} ${request.url}\\n${padLines(requestMessage, ' ')}`,\n )\n }\n : logRequest || undefined\n\n const onResponse: undefined | LogFn<[response: Response, request: Request]> =\n logResponse === true\n ? async (response) => {\n const responseMessage = await stringifyMessage(response.clone())\n console.info(\n `< HTTP/1.1 ${response.status} ${response.statusText}\\n${padLines(responseMessage, ' ')}`,\n )\n }\n : logResponse || undefined\n\n const onError: undefined | LogFn<[error: unknown, request: Request]> =\n logError === true\n ? async (error) => {\n console.error(`< Error:`, error)\n }\n : logError || undefined\n\n if (!onRequest && !onResponse && !onError) return fetch\n\n return toRequestTransformer(async function (\n this: C,\n request,\n ): Promise {\n if (onRequest) await onRequest(request)\n\n try {\n const response = await fetch.call(this, request)\n\n if (onResponse) await onResponse(response, request)\n\n return response\n } catch (error) {\n if (onError) await onError(error, request)\n\n throw error\n }\n })\n}\n\nexport const timedFetch = (\n timeout = 60e3,\n fetch: Fetch = globalThis.fetch,\n): Fetch => {\n if (timeout === Infinity) return fetch\n if (!Number.isFinite(timeout) || timeout <= 0) {\n throw new TypeError('Timeout must be positive')\n }\n return toRequestTransformer(async function (\n this: C,\n request,\n ): Promise {\n const controller = new AbortController()\n const signal = controller.signal\n\n const abort = () => {\n controller.abort()\n }\n const cleanup = () => {\n clearTimeout(timer)\n request.signal?.removeEventListener('abort', abort)\n }\n\n const timer = setTimeout(abort, timeout)\n if (typeof timer === 'object') timer.unref?.() // only on node\n request.signal?.addEventListener('abort', abort)\n\n signal.addEventListener('abort', cleanup)\n\n const response = await fetch.call(this, request, { signal })\n\n if (!response.body) {\n cleanup()\n return response\n } else {\n // Cleanup the timer & event listeners when the body stream is closed\n const transform = new TransformStream({ flush: cleanup })\n return new TransformedResponse(response, transform)\n }\n })\n}\n\n/**\n * Wraps a fetch function to bind it to a specific context, and wrap any thrown\n * errors into a FetchRequestError.\n *\n * @example\n *\n * ```ts\n * class MyClient {\n * constructor(private fetch = globalThis.fetch) {}\n *\n * async get(url: string) {\n * // This will generate an error, because the context used is not a\n * // FetchContext (it's a MyClient instance).\n * return this.fetch(url)\n * }\n * }\n * ```\n *\n * @example\n *\n * ```ts\n * class MyClient {\n * private fetch: Fetch\n *\n * constructor(fetch = globalThis.fetch) {\n * this.fetch = bindFetch(fetch)\n * }\n *\n * async get(url: string) {\n * return this.fetch(url) // no more error\n * }\n * }\n * ```\n */\nexport function bindFetch(\n fetch: Fetch = globalThis.fetch,\n context: C = globalThis as C,\n) {\n return toRequestTransformer(async (request) => {\n try {\n return await fetch.call(context, request)\n } catch (err) {\n throw FetchRequestError.from(request, err)\n }\n })\n}\n","import { ZodError } from 'zod'\nimport { type Did, DidError, extractDidMethod } from '@atproto/did'\nimport { FetchError, FetchResponseError } from '@atproto-labs/fetch'\nimport type { DidMethod, DidMethods, ResolveDidOptions } from './did-method.js'\nimport type { DidResolver, ResolvedDocument } from './did-resolver.js'\n\nexport type { DidMethod, ResolveDidOptions, ResolvedDocument }\n\nexport class DidResolverBase<\n M extends string = string,\n> implements DidResolver {\n protected readonly methods: Map>\n\n constructor(methods: DidMethods) {\n this.methods = new Map(Object.entries(methods))\n }\n\n async resolve(\n did: D,\n options?: ResolveDidOptions,\n ): Promise> {\n options?.signal?.throwIfAborted()\n\n const method = extractDidMethod(did)\n const resolver = this.methods.get(method)\n if (!resolver) {\n throw new DidError(\n did,\n `Unsupported DID method`,\n 'did-method-invalid',\n 400,\n )\n }\n\n try {\n const document = await resolver.resolve(did as Did, options)\n if (document.id !== did) {\n throw new DidError(\n did,\n `DID document id (${document.id}) does not match DID`,\n 'did-document-id-mismatch',\n 400,\n )\n }\n\n return document as ResolvedDocument\n } catch (err) {\n if (err instanceof FetchResponseError) {\n const status = err.response.status >= 500 ? 502 : err.response.status\n throw new DidError(did, err.message, 'did-fetch-error', status, err)\n }\n\n if (err instanceof FetchError) {\n throw new DidError(did, err.message, 'did-fetch-error', 400, err)\n }\n\n if (err instanceof ZodError) {\n throw new DidError(\n did,\n err.message,\n 'did-document-format-error',\n 503,\n err,\n )\n }\n\n throw DidError.from(err, did)\n }\n }\n}\n","import { type Did, assertDidPlc, didDocumentValidator } from '@atproto/did'\nimport {\n type Fetch,\n bindFetch,\n fetchJsonProcessor,\n fetchJsonZodProcessor,\n fetchOkProcessor,\n} from '@atproto-labs/fetch'\nimport { pipe } from '@atproto-labs/pipe'\nimport type { DidMethod, ResolveDidOptions } from '../did-method.js'\n\nconst fetchSuccessHandler = pipe(\n fetchOkProcessor(),\n fetchJsonProcessor(/^application\\/(did\\+ld\\+)?json$/),\n fetchJsonZodProcessor(didDocumentValidator),\n)\n\nexport type DidPlcMethodOptions = {\n /**\n * @default globalThis.fetch\n */\n fetch?: Fetch\n\n /**\n * @default 'https://plc.directory/'\n */\n plcDirectoryUrl?: string | URL\n}\n\nexport class DidPlcMethod implements DidMethod<'plc'> {\n protected readonly fetch: Fetch\n\n public readonly plcDirectoryUrl: URL\n\n constructor(options?: DidPlcMethodOptions) {\n this.plcDirectoryUrl = new URL(\n options?.plcDirectoryUrl || 'https://plc.directory/',\n )\n this.fetch = bindFetch(options?.fetch)\n }\n\n async resolve(did: Did<'plc'>, options?: ResolveDidOptions) {\n // Although the did should start with `did:plc:` (thanks to typings), we\n // should still check if the msid is valid.\n assertDidPlc(did)\n\n // Should never throw\n const url = new URL(`/${encodeURIComponent(did)}`, this.plcDirectoryUrl)\n\n return this.fetch(url, {\n redirect: 'error',\n headers: { accept: 'application/did+ld+json,application/json' },\n signal: options?.signal,\n }).then(fetchSuccessHandler)\n }\n}\n","import {\n type Did,\n DidError,\n didDocumentValidator,\n didWebToUrl,\n} from '@atproto/did'\nimport {\n type Fetch,\n bindFetch,\n fetchJsonProcessor,\n fetchJsonZodProcessor,\n fetchOkProcessor,\n} from '@atproto-labs/fetch'\nimport { pipe } from '@atproto-labs/pipe'\nimport type { DidMethod, ResolveDidOptions } from '../did-method.js'\n\nconst fetchSuccessHandler = pipe(\n fetchOkProcessor(),\n fetchJsonProcessor(/^application\\/(did\\+ld\\+)?json$/),\n fetchJsonZodProcessor(didDocumentValidator),\n)\n\nexport type DidWebMethodOptions = {\n fetch?: Fetch\n /** @default true */\n allowHttp?: boolean\n}\n\nexport class DidWebMethod implements DidMethod<'web'> {\n protected readonly fetch: Fetch\n protected readonly allowHttp: boolean\n\n constructor({\n fetch = globalThis.fetch,\n allowHttp = true,\n }: DidWebMethodOptions = {}) {\n this.fetch = bindFetch(fetch)\n this.allowHttp = allowHttp\n }\n\n async resolve(did: Did<'web'>, options?: ResolveDidOptions) {\n const didDocumentUrl = buildDidWebDocumentUrl(did)\n\n if (!this.allowHttp && didDocumentUrl.protocol === 'http:') {\n throw new DidError(\n did,\n 'Resolution of \"http\" did:web is not allowed',\n 'did-web-http-not-allowed',\n )\n }\n\n // Note we do not explicitly check for \"localhost\" here. Instead, we rely on\n // the injected 'fetch' function to handle the URL. If the URL is\n // \"localhost\", or resolves to a private IP address, the fetch function is\n // responsible for handling it.\n\n return this.fetch(didDocumentUrl, {\n redirect: 'error',\n headers: { accept: 'application/did+ld+json,application/json' },\n signal: options?.signal,\n }).then(fetchSuccessHandler)\n }\n}\n\n/**\n * @see {@link https://datatracker.ietf.org/doc/html/rfc8615}\n * @see {@link https://w3c-ccg.github.io/did-method-web/#create-register}\n */\nexport function buildDidWebDocumentUrl(did: Did<'web'>) {\n const url = didWebToUrl(did) // Will throw if the DID is invalid\n\n // Note: DID cannot end with an `:`, so they cannot end with a `/`. This is\n // true unless when there is no path at all, in which case the URL constructor\n // will set the pathname to `/`.\n\n // https://w3c-ccg.github.io/did-method-web/#read-resolve\n if (url.pathname === '/') {\n return new URL(`/.well-known/did.json`, url)\n } else {\n return new URL(`${url.pathname}/did.json`, url)\n }\n}\n","import { DidResolverBase } from './did-resolver-base.js'\nimport { DidPlcMethod, type DidPlcMethodOptions } from './methods/plc.js'\nimport { DidWebMethod, type DidWebMethodOptions } from './methods/web.js'\nimport type { Simplify } from './util.js'\n\nexport type DidResolverCommonOptions = Simplify<\n DidPlcMethodOptions & DidWebMethodOptions\n>\n\nexport class DidResolverCommon\n extends DidResolverBase<'plc' | 'web'>\n implements DidResolverBase<'plc' | 'web'>\n{\n constructor(options?: DidResolverCommonOptions) {\n super({\n plc: new DidPlcMethod(options),\n web: new DidWebMethod(options),\n })\n }\n}\n","import type { AtprotoIdentityDidMethods } from '@atproto/did'\nimport {\n type DidCache,\n type DidCacheErrorHandler,\n DidResolverCached,\n} from './did-cache.js'\nimport {\n DidResolverCommon,\n type DidResolverCommonOptions,\n} from './did-resolver-common.js'\nimport type { DidResolver } from './did-resolver.js'\n\nexport type { AtprotoIdentityDidMethods }\n\nexport type CreateDidResolverOptions = {\n didResolver?: DidResolver\n didCache?: DidCache\n onDidCacheError?: DidCacheErrorHandler\n} & Partial\n\nexport function createDidResolver(\n options: CreateDidResolverOptions,\n): DidResolver {\n const { didResolver, didCache, onDidCacheError } = options\n\n if (didResolver instanceof DidResolverCached && !didCache) {\n return didResolver\n }\n\n return new DidResolverCached(\n didResolver ?? new DidResolverCommon(options),\n didCache,\n onDidCacheError,\n )\n}\n","export class HandleResolverError extends Error {\n name = 'HandleResolverError'\n}\n","import { type AtprotoDid, isAtprotoDid } from '@atproto/did'\nexport type { AtprotoDid, AtprotoIdentityDidMethods } from '@atproto/did'\n\n/**\n * Context passed to a {@link HandleResolverErrorHandler} alongside the raw\n * error, identifying which resolution strategy produced it.\n */\nexport type HandleResolverErrorContext = {\n /**\n * Which resolver raised the error. Only the well-known HTTP resolver reports\n * through `onError`: it is the only strategy that swallows failures (returning\n * `null`), so it is the only one whose errors would otherwise be invisible.\n * The DNS and XRPC resolvers throw on unexpected errors, so their failures\n * already surface to the caller.\n */\n resolver: 'well-known'\n /** The handle being resolved when the error occurred. */\n handle: string\n}\n\n/**\n * Observability hook invoked when a resolver hits a non-abort error during\n * handle resolution. The resolver still returns `null` per its contract; this\n * only exposes the cause (SSRF blocks, 5xx upstream errors, redirects, network\n * errors, etc.) for logging, telemetry, or surfacing a specific failure mode to\n * end users.\n */\nexport type HandleResolverErrorHandler = (\n err: unknown,\n context: HandleResolverErrorContext,\n) => void\n\nexport type ResolveHandleOptions = {\n signal?: AbortSignal\n noCache?: boolean\n}\n\n/**\n * @see {@link https://atproto.com/specs/did#blessed-did-methods}\n */\nexport type ResolvedHandle = null | AtprotoDid\n\n/**\n * @see {@link https://atproto.com/specs/did#blessed-did-methods}\n */\nexport function isResolvedHandle(value: unknown): value is ResolvedHandle {\n return value === null || isAtprotoDid(value)\n}\n\nexport function asResolvedHandle(value: T): null | (T & AtprotoDid) {\n return isResolvedHandle(value) ? value : null\n}\n\nexport interface HandleResolver {\n /**\n * @returns the DID that corresponds to the given handle, or `null` if no DID\n * is found. `null` should only be returned if no unexpected behavior occurred\n * during the resolution process.\n * @throws Error if the resolution method fails due to an unexpected error, or\n * if the resolution is aborted ({@link ResolveHandleOptions}).\n */\n resolve(\n handle: string,\n options?: ResolveHandleOptions,\n ): Promise\n}\n","import { z } from 'zod'\nimport { HandleResolverError } from './handle-resolver-error.js'\nimport {\n type HandleResolver,\n type ResolveHandleOptions,\n type ResolvedHandle,\n isResolvedHandle,\n} from './types.js'\n\nexport const xrpcErrorSchema = z.object({\n error: z.string(),\n message: z.string().optional(),\n})\n\nexport type XrpcHandleResolverOptions = {\n /**\n * Fetch function to use for HTTP requests. Allows customizing the request\n * behavior, e.g. adding headers, setting a timeout, mocking, etc.\n *\n * @default globalThis.fetch\n */\n fetch?: typeof globalThis.fetch\n}\n\nexport class XrpcHandleResolver implements HandleResolver {\n /**\n * URL of the atproto lexicon server. This is the base URL where the\n * `com.atproto.identity.resolveHandle` XRPC method is located.\n */\n protected readonly serviceUrl: URL\n protected readonly fetch: typeof globalThis.fetch\n\n constructor(service: URL | string, options?: XrpcHandleResolverOptions) {\n this.serviceUrl = new URL(service)\n this.fetch = options?.fetch ?? globalThis.fetch\n }\n\n public async resolve(\n handle: string,\n options?: ResolveHandleOptions,\n ): Promise {\n const url = new URL(\n '/xrpc/com.atproto.identity.resolveHandle',\n this.serviceUrl,\n )\n url.searchParams.set('handle', handle)\n\n const response = await this.fetch.call(null, url, {\n cache: options?.noCache ? 'no-cache' : undefined,\n signal: options?.signal,\n redirect: 'error',\n })\n const payload = await response.json()\n\n // The response should either be\n // - 400 Bad Request with { error: 'InvalidRequest', message: 'Unable to resolve handle' }\n // - 200 OK with { did: NonNullable }\n // Any other response is considered unexpected behavior an should throw an error.\n\n if (response.status === 400) {\n const { error, data } = xrpcErrorSchema.safeParse(payload)\n if (error) {\n throw new HandleResolverError(\n `Invalid response from resolveHandle method: ${error.message}`,\n { cause: error },\n )\n }\n if (\n data.error === 'InvalidRequest' &&\n data.message === 'Unable to resolve handle'\n ) {\n return null\n }\n }\n\n if (!response.ok) {\n throw new HandleResolverError(\n 'Invalid status code from resolveHandle method',\n )\n }\n\n const value: unknown = payload?.did\n\n if (!isResolvedHandle(value)) {\n throw new HandleResolverError(\n 'Invalid DID returned from resolveHandle method',\n )\n }\n\n return value\n }\n}\n","import {\n CachedGetter,\n type SimpleStore,\n type StoreErrorHandler,\n swallowStoreErrors,\n} from '@atproto-labs/simple-store'\nimport { SimpleStoreMemory } from '@atproto-labs/simple-store-memory'\nimport type {\n HandleResolver,\n ResolveHandleOptions,\n ResolvedHandle,\n} from './types.js'\n\nexport type HandleCache = SimpleStore\n\n/**\n * Called when the {@link HandleCache} throws. The cache is treated as\n * best-effort: failures are logged (by default) and degrade to a cache miss +\n * resolution from the underlying resolver, rather than being propagated.\n */\nexport type HandleCacheErrorHandler = StoreErrorHandler\n\nexport class CachedHandleResolver implements HandleResolver {\n private getter: CachedGetter\n\n constructor(\n /**\n * The resolver that will be used to resolve handles.\n */\n resolver: HandleResolver,\n cache: HandleCache = new SimpleStoreMemory({\n max: 1000,\n ttl: 10 * 60e3,\n }),\n onHandleCacheError?: HandleCacheErrorHandler,\n ) {\n this.getter = new CachedGetter(\n (handle, options) => resolver.resolve(handle, options),\n swallowStoreErrors(cache, onHandleCacheError),\n )\n }\n\n async resolve(\n handle: string,\n options?: ResolveHandleOptions,\n ): Promise {\n return this.getter.get(handle, options)\n }\n}\n","import {\n CachedHandleResolver,\n type HandleCache,\n type HandleCacheErrorHandler,\n} from './cached-handle-resolver.js'\nimport type { HandleResolver } from './types.js'\nimport {\n XrpcHandleResolver,\n type XrpcHandleResolverOptions,\n} from './xrpc-handle-resolver.js'\n\nexport type CreateHandleResolverOptions = {\n handleResolver: URL | string | HandleResolver\n handleCache?: HandleCache\n onHandleCacheError?: HandleCacheErrorHandler\n} & Partial\n\nexport function createHandleResolver(\n options: CreateHandleResolverOptions,\n): HandleResolver {\n const { handleResolver, handleCache, onHandleCacheError } = options\n\n if (handleResolver instanceof CachedHandleResolver && !handleCache) {\n return handleResolver\n }\n\n return new CachedHandleResolver(\n typeof handleResolver === 'string' || handleResolver instanceof URL\n ? new XrpcHandleResolver(handleResolver, options)\n : handleResolver,\n handleCache,\n onHandleCacheError,\n )\n}\n","export const CLIENT_ASSERTION_TYPE_JWT_BEARER =\n 'urn:ietf:params:oauth:client-assertion-type:jwt-bearer'\n","export const canParseUrl =\n // eslint-disable-next-line n/no-unsupported-features/node-builtins\n URL.canParse?.bind(URL) ??\n // URL.canParse is not available in Node.js < 18.7.0\n ((urlStr: string): boolean => {\n try {\n new URL(urlStr)\n return true\n } catch {\n return false\n }\n })\n\nexport function isHostnameIP(hostname: string) {\n // IPv4\n if (hostname.match(/^\\d+\\.\\d+\\.\\d+\\.\\d+$/)) return true\n\n // IPv6\n if (hostname.startsWith('[') && hostname.endsWith(']')) return true\n\n return false\n}\n\nexport type LoopbackHost = 'localhost' | '127.0.0.1' | '[::1]'\n\nexport function isLoopbackHost(host: unknown): host is LoopbackHost {\n return host === 'localhost' || host === '127.0.0.1' || host === '[::1]'\n}\n\nexport function isLocalHostname(hostname: string): boolean {\n const parts = hostname.split('.')\n if (parts.length < 2) return true\n\n const tld = parts.at(-1)!.toLowerCase()\n return (\n tld === 'test' ||\n tld === 'local' ||\n tld === 'localhost' ||\n tld === 'invalid' ||\n tld === 'example'\n )\n}\n\nexport function safeUrl(input: URL | string): URL | null {\n try {\n return new URL(input)\n } catch {\n return null\n }\n}\n\nexport function extractUrlPath(url: string) {\n // Extracts the path from a URL, without relying on the URL constructor\n // (because it normalizes the URL)\n const endOfProtocol = url.startsWith('https://')\n ? 8\n : url.startsWith('http://')\n ? 7\n : -1\n if (endOfProtocol === -1) {\n throw new TypeError('URL must use the \"https:\" or \"http:\" protocol')\n }\n\n const hashIdx = url.indexOf('#', endOfProtocol)\n const questionIdx = url.indexOf('?', endOfProtocol)\n\n const queryStrIdx =\n questionIdx !== -1 && (hashIdx === -1 || questionIdx < hashIdx)\n ? questionIdx\n : -1\n\n const pathEnd =\n hashIdx === -1\n ? queryStrIdx === -1\n ? url.length\n : queryStrIdx\n : queryStrIdx === -1\n ? hashIdx\n : Math.min(hashIdx, queryStrIdx)\n\n const slashIdx = url.indexOf('/', endOfProtocol)\n\n const pathStart = slashIdx === -1 || slashIdx > pathEnd ? pathEnd : slashIdx\n\n if (endOfProtocol === pathStart) {\n throw new TypeError('URL must contain a host')\n }\n\n return url.substring(pathStart, pathEnd)\n}\n\nexport const jsonObjectPreprocess = (val: unknown) => {\n if (typeof val === 'string' && val.startsWith('{') && val.endsWith('}')) {\n try {\n return JSON.parse(val)\n } catch {\n return val\n }\n }\n\n return val\n}\n\nexport const numberPreprocess = (val: unknown): unknown => {\n if (typeof val === 'string') {\n const number = Number(val)\n if (!Number.isNaN(number)) return number\n }\n return val\n}\n\n/**\n * Returns true if the two arrays contain the same elements, regardless of order\n * or duplicates.\n */\nexport function arrayEquivalent(a: readonly T[], b: readonly T[]) {\n if (a === b) return true\n return a.every(includedIn, b) && b.every(includedIn, a)\n}\n\nexport function includedIn(this: readonly T[], item: T) {\n return this.includes(item)\n}\n\nexport function asArray(\n value: Iterable | undefined,\n): undefined | readonly T[] {\n if (value == null) return undefined\n if (Array.isArray(value)) return value // already a (possibly readonly) array\n return Array.from(value)\n}\n\nexport type SpaceSeparatedValue =\n `${'' | `${string} `}${Value}${'' | ` ${string}`}`\n\nexport const isSpaceSeparatedValue = (\n value: Value,\n input: string,\n): input is SpaceSeparatedValue => {\n if (value.length === 0) throw new TypeError('Value cannot be empty')\n if (value.includes(' ')) throw new TypeError('Value cannot contain spaces')\n\n // Optimized version of:\n // return input.split(' ').includes(value)\n\n const inputLength = input.length\n const valueLength = value.length\n\n if (inputLength < valueLength) return false\n\n let idx = input.indexOf(value)\n let idxEnd: number\n\n while (idx !== -1) {\n idxEnd = idx + valueLength\n\n if (\n // at beginning or preceded by space\n (idx === 0 || input.charCodeAt(idx - 1) === 32) &&\n // at end or followed by space\n (idxEnd === inputLength || input.charCodeAt(idxEnd) === 32)\n ) {\n return true\n }\n\n idx = input.indexOf(value, idxEnd + 1)\n }\n\n return false\n}\n","import { type TypeOf, ZodIssueCode, z } from 'zod'\nimport {\n canParseUrl,\n isHostnameIP,\n isLocalHostname,\n isLoopbackHost,\n} from './util.js'\n\n/**\n * Valid, but potentially dangerous URL (`data:`, `file:`, `javascript:`, etc.).\n *\n * Any value that matches this schema is safe to parse using `new URL()`.\n */\nexport const dangerousUriSchema = z\n .string()\n .refine(\n (data): data is `${string}:${string}` =>\n data.includes(':') && canParseUrl(data),\n {\n message: 'Invalid URL',\n },\n )\n\n/**\n * Valid, but potentially dangerous URL (`data:`, `file:`, `javascript:`, etc.).\n */\nexport type DangerousUrl = TypeOf\n\nexport const loopbackUriSchema = dangerousUriSchema.superRefine(\n (\n value,\n ctx,\n ): value is\n | `http://[::1]${string}`\n | `http://localhost${'' | `${':' | '/' | '?' | '#'}${string}`}`\n | `http://127.0.0.1${'' | `${':' | '/' | '?' | '#'}${string}`}` => {\n // Loopback url must use the \"http:\" protocol\n if (!value.startsWith('http://')) {\n ctx.addIssue({\n code: ZodIssueCode.custom,\n message: 'URL must use the \"http:\" protocol',\n })\n return false\n }\n\n const url = new URL(value)\n\n if (!isLoopbackHost(url.hostname)) {\n ctx.addIssue({\n code: ZodIssueCode.custom,\n message: 'URL must use \"localhost\", \"127.0.0.1\" or \"[::1]\" as hostname',\n })\n return false\n }\n\n return true\n },\n)\n\nexport type LoopbackUri = TypeOf\n\nexport const httpsUriSchema = dangerousUriSchema.superRefine(\n (value, ctx): value is `https://${string}` => {\n if (!value.startsWith('https://')) {\n ctx.addIssue({\n code: ZodIssueCode.custom,\n message: 'URL must use the \"https:\" protocol',\n })\n return false\n }\n\n const url = new URL(value)\n\n // Disallow loopback URLs with the `https:` protocol\n if (isLoopbackHost(url.hostname)) {\n ctx.addIssue({\n code: ZodIssueCode.custom,\n message: 'https: URL must not use a loopback host',\n })\n return false\n }\n\n if (isHostnameIP(url.hostname)) {\n // Hostname is an IP address\n } else {\n // Hostname is a domain name\n if (!url.hostname.includes('.')) {\n // we don't depend on PSL here, so we only check for a dot\n ctx.addIssue({\n code: ZodIssueCode.custom,\n message: 'Domain name must contain at least two segments',\n })\n return false\n }\n\n if (url.hostname.endsWith('.local')) {\n ctx.addIssue({\n code: ZodIssueCode.custom,\n message: 'Domain name must not end with \".local\"',\n })\n return false\n }\n }\n\n return true\n },\n)\n\nexport type HttpsUri = TypeOf\n\nexport const webUriSchema = z\n .string()\n .superRefine((value, ctx): value is LoopbackUri | HttpsUri => {\n // discriminated union of `loopbackUriSchema` and `httpsUriSchema`\n if (value.startsWith('http://')) {\n const result = loopbackUriSchema.safeParse(value)\n if (!result.success) result.error.issues.forEach(ctx.addIssue, ctx)\n return result.success\n }\n\n if (value.startsWith('https://')) {\n const result = httpsUriSchema.safeParse(value)\n if (!result.success) result.error.issues.forEach(ctx.addIssue, ctx)\n return result.success\n }\n\n ctx.addIssue({\n code: ZodIssueCode.custom,\n message: 'URL must use the \"http:\" or \"https:\" protocol',\n })\n return false\n })\n\nexport type WebUri = TypeOf\n\nexport const privateUseUriSchema = dangerousUriSchema.superRefine(\n (value, ctx): value is `${string}.${string}:/${string}` => {\n const dotIdx = value.indexOf('.')\n const colonIdx = value.indexOf(':')\n\n // Optimization: avoid parsing the URL if the protocol does not contain a \".\"\n if (dotIdx === -1 || colonIdx === -1 || dotIdx > colonIdx) {\n ctx.addIssue({\n code: ZodIssueCode.custom,\n message:\n 'Private-use URI scheme requires a \".\" as part of the protocol',\n })\n return false\n }\n\n const url = new URL(value)\n\n // Should be covered by the check before, but let's be extra sure\n if (!url.protocol.includes('.')) {\n ctx.addIssue({\n code: ZodIssueCode.custom,\n message: 'Invalid private-use URI scheme',\n })\n return false\n }\n\n // https://datatracker.ietf.org/doc/html/rfc8252#section-7.1\n //\n // > When choosing a URI scheme to associate with the app, apps MUST use a\n // > URI scheme based on a domain name under their control, expressed in\n // > reverse order\n //\n // https://datatracker.ietf.org/doc/html/rfc8252#section-8.4\n //\n // > In addition to the collision-resistant properties, requiring a URI\n // > scheme based on a domain name that is under the control of the app can\n // > help to prove ownership in the event of a dispute where two apps claim\n // > the same private-use URI scheme (where one app is acting maliciously).\n //\n // We can't check for ownership here (as there is no concept of proven\n // ownership in a generic validation logic), besides excluding local domains\n // as they can't be controlled/owned by the app.\n //\n // https://atproto.com/specs/oauth\n //\n // > Any custom scheme must match the `client_id` hostname in reverse-domain\n // > order.\n //\n // This ATPROTO specific requirement cannot be enforced here, (as there is\n // no concept of `client_id` in this context).\n\n const uriScheme = url.protocol.slice(0, -1) // remove trailing \":\"\n const urlDomain = uriScheme.split('.').reverse().join('.')\n\n if (isLocalHostname(urlDomain)) {\n ctx.addIssue({\n code: ZodIssueCode.custom,\n message: `Private-use URI Scheme redirect URI must not be a local hostname`,\n })\n }\n\n // https://datatracker.ietf.org/doc/html/rfc8252#section-7.1\n //\n // > Following the requirements of Section 3.2 of [RFC3986], as there is no\n // > naming authority for private-use URI scheme redirects, only a single\n // > slash (\"/\") appears after the scheme component.\n if (\n url.href.startsWith(`${url.protocol}//`) ||\n url.username ||\n url.password ||\n url.hostname ||\n url.port\n ) {\n ctx.addIssue({\n code: ZodIssueCode.custom,\n message:\n 'Private-Use URI Scheme must be in the form :/{path} (notice the single slash!) as per RFC 8252',\n })\n return false\n }\n\n return true\n },\n)\n\nexport type PrivateUseUri = TypeOf\n","export const DEFAULT_LOOPBACK_CLIENT_REDIRECT_URIS = Object.freeze([\n `http://127.0.0.1/`,\n `http://[::1]/`,\n] as const)\n","import { z } from 'zod'\n\n// scope = scope-token *( SP scope-token )\n// scope-token = 1*( %x21 / %x23-5B / %x5D-7E )\nexport const OAUTH_SCOPE_REGEXP =\n /^[\\x21\\x23-\\x5B\\x5D-\\x7E]+(?: [\\x21\\x23-\\x5B\\x5D-\\x7E]+)*$/\n\nexport const isOAuthScope = (input: string): boolean =>\n OAUTH_SCOPE_REGEXP.test(input)\n\n/**\n * A (single) space separated list of non empty printable ASCII char string\n * (except backslash and double quote).\n *\n * @see {@link https://datatracker.ietf.org/doc/html/draft-ietf-oauth-v2-1-11#section-1.4.1}\n */\nexport const oauthScopeSchema = z.string().refine(isOAuthScope, {\n message: 'Invalid OAuth scope',\n})\n\nexport type OAuthScope = z.infer\n","import { z } from 'zod'\nimport { type OAuthScope, isOAuthScope } from './oauth-scope.js'\nimport { type SpaceSeparatedValue, isSpaceSeparatedValue } from './util.js'\n\nexport const ATPROTO_SCOPE_VALUE = 'atproto'\nexport type AtprotoScopeValue = typeof ATPROTO_SCOPE_VALUE\n\nexport type AtprotoOAuthScope = OAuthScope &\n SpaceSeparatedValue\n\nexport function isAtprotoOAuthScope(input: string): input is AtprotoOAuthScope {\n return (\n isOAuthScope(input) && isSpaceSeparatedValue(ATPROTO_SCOPE_VALUE, input)\n )\n}\n\nexport function asAtprotoOAuthScope(input: I) {\n if (isAtprotoOAuthScope(input)) return input\n throw new TypeError(`Value must contain \"${ATPROTO_SCOPE_VALUE}\" scope value`)\n}\n\nexport function assertAtprotoOAuthScope(\n input: string,\n): asserts input is AtprotoOAuthScope {\n void asAtprotoOAuthScope(input)\n}\n\nexport const atprotoOAuthScopeSchema = z.string().refine(isAtprotoOAuthScope, {\n message: 'Invalid ATProto OAuth scope',\n})\n\n// Default scope is for reading identity (did) only\nexport const DEFAULT_ATPROTO_OAUTH_SCOPE =\n ATPROTO_SCOPE_VALUE satisfies AtprotoOAuthScope\n","import { z } from 'zod'\n\nexport const oauthClientIdSchema = z.string().min(1)\nexport type OAuthClientId = z.infer\n","import { type TypeOf, ZodIssueCode, z } from 'zod'\nimport {\n type HttpsUri,\n type LoopbackUri,\n type PrivateUseUri,\n httpsUriSchema,\n loopbackUriSchema,\n privateUseUriSchema,\n} from './uri.js'\n\n/**\n * This is a {@link loopbackUriSchema} with the additional restriction that\n * the hostname `localhost` is not allowed.\n *\n * @see {@link https://datatracker.ietf.org/doc/html/rfc8252#section-8.3 Loopback Redirect Considerations} RFC8252\n *\n * > While redirect URIs using localhost (i.e.,\n * > \"http://localhost:{port}/{path}\") function similarly to loopback IP\n * > redirects described in Section 7.3, the use of localhost is NOT\n * > RECOMMENDED. Specifying a redirect URI with the loopback IP literal rather\n * > than localhost avoids inadvertently listening on network interfaces other\n * > than the loopback interface. It is also less susceptible to client-side\n * > firewalls and misconfigured host name resolution on the user's device.\n */\nexport const loopbackRedirectURISchema = loopbackUriSchema.superRefine(\n (value, ctx): value is Exclude => {\n if (value.startsWith('http://localhost')) {\n ctx.addIssue({\n code: ZodIssueCode.custom,\n message:\n 'Use of \"localhost\" hostname is not allowed (RFC 8252), use a loopback IP such as \"127.0.0.1\" instead',\n })\n return false\n }\n\n return true\n },\n)\nexport type LoopbackRedirectURI = TypeOf\n\nexport const oauthLoopbackClientRedirectUriSchema = loopbackRedirectURISchema\nexport type OAuthLoopbackRedirectURI = TypeOf<\n typeof oauthLoopbackClientRedirectUriSchema\n>\n\nexport const oauthRedirectUriSchema = z\n .string()\n .superRefine(\n (value, ctx): value is HttpsUri | LoopbackRedirectURI | PrivateUseUri => {\n if (value.startsWith('https:')) {\n const result = httpsUriSchema.safeParse(value)\n if (!result.success) result.error.issues.forEach(ctx.addIssue, ctx)\n return result.success\n } else if (value.startsWith('http:')) {\n const result = loopbackRedirectURISchema.safeParse(value)\n if (!result.success) result.error.issues.forEach(ctx.addIssue, ctx)\n return result.success\n } else if (/^[^.:]+(?:\\.[^.:]+)+:/.test(value)) {\n const result = privateUseUriSchema.safeParse(value)\n if (!result.success) result.error.issues.forEach(ctx.addIssue, ctx)\n return result.success\n } else {\n ctx.addIssue({\n code: ZodIssueCode.custom,\n message:\n 'URL must use the \"https:\" or \"http:\" protocol, or a private-use URI scheme (RFC 8252)',\n })\n return false\n }\n },\n )\n\nexport type OAuthRedirectUri = TypeOf\n","import { oauthClientIdSchema } from './oauth-client-id.js'\nimport {\n type OAuthLoopbackRedirectURI,\n oauthLoopbackClientRedirectUriSchema,\n} from './oauth-redirect-uri.js'\nimport { type OAuthScope, oauthScopeSchema } from './oauth-scope.js'\n\nexport const LOOPBACK_CLIENT_ID_ORIGIN = 'http://localhost'\n\n// @NOTE This is not actually based on a standard, but rather a convention\n// established by Bluesky in the Atproto specs and implementation. As such, and\n// in order to respect the convention from this package, these should be\n// prefixed with \"Atproto\" instead of \"OAuth\". For legacy reasons, we keep the\n// current names, but we should rename them in a future major release, unless\n// loopback client ids have since then been standardized.\n\nexport type OAuthClientIdLoopback =\n `http://localhost${'' | `/`}${'' | `?${string}`}`\n\nexport type OAuthLoopbackClientIdParams = {\n scope?: OAuthScope\n redirect_uris?: [OAuthLoopbackRedirectURI, ...OAuthLoopbackRedirectURI[]]\n}\n\nexport const oauthClientIdLoopbackSchema = oauthClientIdSchema.superRefine(\n (input, ctx): input is OAuthClientIdLoopback => {\n const result = safeParseOAuthLoopbackClientId(input)\n if (!result.success) {\n ctx.addIssue({ code: 'custom', message: result.message })\n }\n return result.success\n },\n)\n\nexport function assertOAuthLoopbackClientId(\n input: string,\n): asserts input is OAuthClientIdLoopback {\n void parseOAuthLoopbackClientId(input)\n}\n\nexport function isOAuthClientIdLoopback(\n input: T,\n): input is T & OAuthClientIdLoopback {\n return safeParseOAuthLoopbackClientId(input).success\n}\n\nexport function asOAuthClientIdLoopback(input: T) {\n assertOAuthLoopbackClientId(input)\n return input\n}\n\nexport function parseOAuthLoopbackClientId(\n input: string,\n): OAuthLoopbackClientIdParams {\n const result = safeParseOAuthLoopbackClientId(input)\n if (result.success) return result.value\n\n throw new TypeError(`Invalid loopback client ID: ${result.message}`)\n}\n\n/**\n * Similar to Zod's {@link SafeParseReturnType} but uses a simple \"message\"\n * string instead of an \"error\" Error object.\n */\ntype LightParseReturnType =\n | { success: true; value: T }\n | { success: false; message: string }\n\nexport function safeParseOAuthLoopbackClientId(\n input: string,\n): LightParseReturnType {\n // @NOTE Not using \"new URL\" to ensure input indeed matches the type\n // OAuthClientIdLoopback\n\n if (!input.startsWith(LOOPBACK_CLIENT_ID_ORIGIN)) {\n return {\n success: false,\n message: `Value must start with \"${LOOPBACK_CLIENT_ID_ORIGIN}\"`,\n }\n }\n\n if (input.includes('#', LOOPBACK_CLIENT_ID_ORIGIN.length)) {\n return {\n success: false,\n message: 'Value must not contain a hash component',\n }\n }\n\n // Since we don't allow a path component (except for a single \"/\") the query\n // string starts after the origin (+ 1 if there is a \"/\")\n const queryStringIdx =\n input.length > LOOPBACK_CLIENT_ID_ORIGIN.length &&\n input.charCodeAt(LOOPBACK_CLIENT_ID_ORIGIN.length) === 0x2f /* '/' */\n ? LOOPBACK_CLIENT_ID_ORIGIN.length + 1\n : LOOPBACK_CLIENT_ID_ORIGIN.length\n\n // Since we determined the position of the query string based on the origin\n // length (instead of looking for a \"?\"), we need to make sure the query\n // string position (if any) indeed starts with a \"?\".\n if (\n input.length !== queryStringIdx &&\n input.charCodeAt(queryStringIdx) !== 0x3f /* '?' */\n ) {\n return {\n success: false,\n message: 'Value must not contain a path component',\n }\n }\n\n const queryString = input.slice(queryStringIdx + 1)\n return safeParseOAuthLoopbackClientIdQueryString(queryString)\n}\n\nexport function safeParseOAuthLoopbackClientIdQueryString(\n input: string | Iterable<[key: string, value: string]>,\n): LightParseReturnType {\n // Parse query params\n const params: OAuthLoopbackClientIdParams = {}\n\n const it = typeof input === 'string' ? new URLSearchParams(input) : input\n for (const [key, value] of it) {\n if (key === 'scope') {\n if ('scope' in params) {\n return {\n success: false,\n message: 'Duplicate \"scope\" query parameter',\n }\n }\n\n const res = oauthScopeSchema.safeParse(value)\n if (!res.success) {\n const reason = res.error.issues.map((i) => i.message).join(', ')\n return {\n success: false,\n message: `Invalid \"scope\" query parameter: ${reason || 'Validation failed'}`,\n }\n }\n\n params.scope = res.data\n } else if (key === 'redirect_uri') {\n const res = oauthLoopbackClientRedirectUriSchema.safeParse(value)\n if (!res.success) {\n const reason = res.error.issues.map((i) => i.message).join(', ')\n return {\n success: false,\n message: `Invalid \"redirect_uri\" query parameter: ${reason || 'Validation failed'}`,\n }\n }\n\n if (params.redirect_uris == null) params.redirect_uris = [res.data]\n else params.redirect_uris.push(res.data)\n } else {\n return {\n success: false,\n message: `Unexpected query parameter \"${key}\"`,\n }\n }\n }\n\n return {\n success: true,\n value: params,\n }\n}\n","import { DEFAULT_LOOPBACK_CLIENT_REDIRECT_URIS } from './atproto-loopback-client-redirect-uris.js'\nimport {\n type AtprotoOAuthScope,\n DEFAULT_ATPROTO_OAUTH_SCOPE,\n asAtprotoOAuthScope,\n isAtprotoOAuthScope,\n} from './atproto-oauth-scope.js'\nimport {\n LOOPBACK_CLIENT_ID_ORIGIN,\n type OAuthClientIdLoopback,\n parseOAuthLoopbackClientId,\n} from './oauth-client-id-loopback.js'\nimport {\n type OAuthLoopbackRedirectURI,\n oauthLoopbackClientRedirectUriSchema,\n} from './oauth-redirect-uri.js'\nimport { arrayEquivalent, asArray } from './util.js'\n\nexport type OAuthLoopbackClientIdConfig = {\n scope?: string\n redirect_uris?: Iterable\n}\n\nexport function buildAtprotoLoopbackClientId(\n config?: OAuthLoopbackClientIdConfig,\n): OAuthClientIdLoopback {\n if (config) {\n const params = new URLSearchParams()\n\n const { scope } = config\n if (scope != null && scope !== DEFAULT_ATPROTO_OAUTH_SCOPE) {\n params.set('scope', asAtprotoOAuthScope(scope))\n }\n\n const redirectUris = asArray(config.redirect_uris)\n if (\n redirectUris &&\n !arrayEquivalent(redirectUris, DEFAULT_LOOPBACK_CLIENT_REDIRECT_URIS)\n ) {\n if (!redirectUris.length) {\n throw new TypeError(`Unexpected empty \"redirect_uris\" config`)\n }\n for (const uri of redirectUris) {\n params.append(\n 'redirect_uri',\n oauthLoopbackClientRedirectUriSchema.parse(uri),\n )\n }\n }\n\n if (params.size) {\n return `${LOOPBACK_CLIENT_ID_ORIGIN}?${params.toString()}`\n }\n }\n\n return LOOPBACK_CLIENT_ID_ORIGIN\n}\n\nexport type AtprotoLoopbackClientIdParams = {\n scope: AtprotoOAuthScope\n redirect_uris: [OAuthLoopbackRedirectURI, ...OAuthLoopbackRedirectURI[]]\n}\n\nexport function parseAtprotoLoopbackClientId(\n clientId: string,\n): AtprotoLoopbackClientIdParams {\n const { scope = DEFAULT_ATPROTO_OAUTH_SCOPE, redirect_uris } =\n parseOAuthLoopbackClientId(clientId)\n if (!isAtprotoOAuthScope(scope)) {\n throw new TypeError(\n 'ATProto Loopback ClientID must include \"atproto\" scope',\n )\n }\n return {\n scope,\n redirect_uris: redirect_uris ?? [...DEFAULT_LOOPBACK_CLIENT_REDIRECT_URIS],\n }\n}\n","import {\n type AtprotoLoopbackClientIdParams,\n type OAuthLoopbackClientIdConfig,\n buildAtprotoLoopbackClientId,\n parseAtprotoLoopbackClientId,\n} from './atproto-loopback-client-id.js'\nimport type { AtprotoOAuthScope } from './atproto-oauth-scope.js'\nimport type { OAuthClientIdLoopback } from './oauth-client-id-loopback.js'\nimport type { OAuthClientMetadataInput } from './oauth-client-metadata.js'\nimport type { OAuthLoopbackRedirectURI } from './oauth-redirect-uri.js'\n\nexport type AtprotoLoopbackClientMetadata = OAuthClientMetadataInput & {\n client_id: OAuthClientIdLoopback\n scope: AtprotoOAuthScope\n redirect_uris: [OAuthLoopbackRedirectURI, ...OAuthLoopbackRedirectURI[]]\n}\n\nexport function atprotoLoopbackClientMetadata(\n clientId: string,\n): AtprotoLoopbackClientMetadata {\n const params = parseAtprotoLoopbackClientId(clientId)\n // Safe to cast because parseAtprotoLoopbackClientId ensures it's a loopback ID\n return buildMetadataInternal(clientId as OAuthClientIdLoopback, params)\n}\n\nexport function buildAtprotoLoopbackClientMetadata(\n config: OAuthLoopbackClientIdConfig,\n): AtprotoLoopbackClientMetadata {\n const clientId = buildAtprotoLoopbackClientId(config)\n return buildMetadataInternal(clientId, parseAtprotoLoopbackClientId(clientId))\n}\n\nfunction buildMetadataInternal(\n clientId: OAuthClientIdLoopback,\n clientParams: AtprotoLoopbackClientIdParams,\n): AtprotoLoopbackClientMetadata {\n return {\n client_id: clientId,\n scope: clientParams.scope,\n redirect_uris: clientParams.redirect_uris,\n response_types: ['code'],\n grant_types: ['authorization_code', 'refresh_token'],\n token_endpoint_auth_method: 'none',\n application_type: 'native',\n dpop_bound_access_tokens: true,\n }\n}\n","import { z } from 'zod'\nimport { dangerousUriSchema } from './uri.js'\n\n/**\n * @see {@link https://datatracker.ietf.org/doc/html/rfc9396#section-2 | RFC 9396, Section 2}\n */\nexport const oauthAuthorizationDetailSchema = z.object({\n type: z.string(),\n /**\n * An array of strings representing the location of the resource or RS. These\n * strings are typically URIs identifying the location of the RS.\n */\n locations: z.array(dangerousUriSchema).optional(),\n /**\n * An array of strings representing the kinds of actions to be taken at the\n * resource.\n */\n actions: z.array(z.string()).optional(),\n /**\n * An array of strings representing the kinds of data being requested from the\n * resource.\n */\n datatypes: z.array(z.string()).optional(),\n /**\n * A string identifier indicating a specific resource available at the API.\n */\n identifier: z.string().optional(),\n /**\n * An array of strings representing the types or levels of privilege being\n * requested at the resource.\n */\n privileges: z.array(z.string()).optional(),\n})\n\nexport type OAuthAuthorizationDetail = z.infer<\n typeof oauthAuthorizationDetailSchema\n>\n\n/**\n * @see {@link https://datatracker.ietf.org/doc/html/rfc9396#section-2 | RFC 9396, Section 2}\n */\nexport const oauthAuthorizationDetailsSchema = z.array(\n oauthAuthorizationDetailSchema,\n)\n\nexport type OAuthAuthorizationDetails = z.infer<\n typeof oauthAuthorizationDetailsSchema\n>\n","import { z } from 'zod'\n\n// Case insensitive input, normalized output\nexport const oauthTokenTypeSchema = z.union([\n z\n .string()\n .regex(/^DPoP$/i)\n .transform(() => 'DPoP' as const),\n z\n .string()\n .regex(/^Bearer$/i)\n .transform(() => 'Bearer' as const),\n])\n\nexport type OAuthTokenType = z.infer\n","import { z } from 'zod'\nimport { signedJwtSchema } from '@atproto/jwk'\nimport { oauthAuthorizationDetailsSchema } from './oauth-authorization-details.js'\nimport { oauthTokenTypeSchema } from './oauth-token-type.js'\n\n/**\n * @see {@link https://www.rfc-editor.org/rfc/rfc6749.html#section-5.1 | RFC 6749 (OAuth2), Section 5.1}\n */\nexport const oauthTokenResponseSchema = z\n .object({\n // https://www.rfc-editor.org/rfc/rfc6749.html#section-5.1\n access_token: z.string(),\n token_type: oauthTokenTypeSchema,\n scope: z.string().optional(),\n refresh_token: z.string().optional(),\n expires_in: z.number().optional(),\n // https://openid.net/specs/openid-connect-core-1_0.html#TokenResponse\n id_token: signedJwtSchema.optional(),\n // https://datatracker.ietf.org/doc/html/rfc9396#name-enriched-authorization-deta\n authorization_details: oauthAuthorizationDetailsSchema.optional(),\n })\n // https://www.rfc-editor.org/rfc/rfc6749.html#section-5.1\n // > The client MUST ignore unrecognized value names in the response.\n .passthrough()\n\n/**\n * @see {@link oauthTokenResponseSchema}\n */\nexport type OAuthTokenResponse = z.infer\n","import { type TypeOf, z } from 'zod'\nimport { atprotoDidSchema } from '@atproto/did'\nimport { atprotoOAuthScopeSchema } from './atproto-oauth-scope.js'\nimport { oauthTokenResponseSchema } from './oauth-token-response.js'\n\nexport const atprotoOAuthTokenResponseSchema = oauthTokenResponseSchema.extend({\n token_type: z.literal('DPoP'),\n sub: atprotoDidSchema,\n scope: atprotoOAuthScopeSchema,\n // OpenID is not compatible with atproto identities\n id_token: z.never().optional(),\n})\n\nexport type AtprotoOAuthTokenResponse = TypeOf<\n typeof atprotoOAuthTokenResponseSchema\n>\n","import { z } from 'zod'\n\nexport const oauthAccessTokenSchema = z.string().min(1)\nexport type OAuthAccessToken = z.infer\n","import { z } from 'zod'\nimport { oauthRedirectUriSchema } from './oauth-redirect-uri.js'\n\nexport const oauthAuthorizationCodeGrantTokenRequestSchema = z.object({\n grant_type: z.literal('authorization_code'),\n code: z.string().min(1),\n redirect_uri: oauthRedirectUriSchema,\n /** @see {@link https://datatracker.ietf.org/doc/html/rfc7636#section-4.1} */\n code_verifier: z\n .string()\n .min(43)\n .max(128)\n .regex(/^[a-zA-Z0-9-._~]+$/)\n .optional(),\n})\n\nexport type OAuthAuthorizationCodeGrantTokenRequest = z.infer<\n typeof oauthAuthorizationCodeGrantTokenRequestSchema\n>\n","import { z } from 'zod'\nimport { signedJwtSchema, unsignedJwtSchema } from '@atproto/jwk'\n\nexport const oauthAuthorizationRequestJarSchema = z.object({\n /**\n * AuthorizationRequest inside a JWT:\n * - \"iat\" is required and **MUST** be less than one minute\n *\n * @see {@link https://datatracker.ietf.org/doc/html/rfc9101}\n */\n request: z.union([signedJwtSchema, unsignedJwtSchema]),\n})\n\nexport type OAuthAuthorizationRequestJar = z.infer<\n typeof oauthAuthorizationRequestJarSchema\n>\n","import { z } from 'zod'\n\nexport const oauthCodeChallengeMethodSchema = z.enum(['S256', 'plain'])\n","import { z } from 'zod'\n\n/**\n * - \"none\" will only be allowed if the user already allowed the client on the same device\n * - \"login\" will force the user to login again, unless he very recently logged in\n * - \"consent\" will force the user to consent again\n * - \"select_account\" will force the user to select an account\n * - \"create\" will force the user registration screen\n */\nexport const oauthPromptModeSchema = z.enum([\n 'none',\n 'login',\n 'consent',\n 'select_account',\n 'create',\n])\n\nexport type OAuthPromptMode = z.infer\n","import { z } from 'zod'\n\nexport const oauthResponseModeSchema = z.enum([\n 'query',\n 'fragment',\n 'form_post',\n])\n\nexport type OAuthResponseMode = z.infer\n","import { z } from 'zod'\n\nexport const oauthResponseTypeSchema = z.enum([\n // OAuth2 (https://datatracker.ietf.org/doc/html/draft-ietf-oauth-v2-1-10#section-4.1.1)\n 'code', // Authorization Code Grant\n 'token', // Implicit Grant\n\n // OIDC (https://openid.net/specs/oauth-v2-multiple-response-types-1_0.html)\n 'none',\n 'code id_token token',\n 'code id_token',\n 'code token',\n 'id_token token',\n 'id_token',\n])\n\nexport type OAuthResponseType = z.infer\n","import { z } from 'zod'\n\nexport const oidcClaimsParameterSchema = z.enum([\n // https://openid.net/specs/openid-provider-authentication-policy-extension-1_0.html#rfc.section.5.2\n // if client metadata \"require_auth_time\" is true, this *must* be provided\n 'auth_time',\n\n // OIDC\n 'nonce',\n 'acr',\n\n // OpenID: \"profile\" scope\n 'name',\n 'family_name',\n 'given_name',\n 'middle_name',\n 'nickname',\n 'preferred_username',\n 'gender',\n 'picture',\n 'profile',\n 'website',\n 'birthdate',\n 'zoneinfo',\n 'locale',\n 'updated_at',\n\n // OpenID: \"email\" scope\n 'email',\n 'email_verified',\n\n // OpenID: \"phone\" scope\n 'phone_number',\n 'phone_number_verified',\n\n // OpenID: \"address\" scope\n 'address',\n])\n\nexport type OidcClaimsParameter = z.infer\n","import { z } from 'zod'\n\nconst oidcClaimsValueSchema = z.union([z.string(), z.number(), z.boolean()])\n\nexport const oidcClaimsPropertiesSchema = z.object({\n essential: z.boolean().optional(),\n value: oidcClaimsValueSchema.optional(),\n values: z.array(oidcClaimsValueSchema).optional(),\n})\n\nexport type OidcClaimsProperties = z.infer\n","import { z } from 'zod'\n\nexport const oidcEntityTypeSchema = z.enum(['userinfo', 'id_token'])\n\nexport type OidcEntityType = z.infer\n","import { z } from 'zod'\nimport { signedJwtSchema } from '@atproto/jwk'\nimport { oauthAuthorizationDetailsSchema } from './oauth-authorization-details.js'\nimport { oauthClientIdSchema } from './oauth-client-id.js'\nimport { oauthCodeChallengeMethodSchema } from './oauth-code-challenge-method.js'\nimport { oauthPromptModeSchema } from './oauth-prompt-mode.js'\nimport { oauthRedirectUriSchema } from './oauth-redirect-uri.js'\nimport { oauthResponseModeSchema } from './oauth-response-mode.js'\nimport { oauthResponseTypeSchema } from './oauth-response-type.js'\nimport { oauthScopeSchema } from './oauth-scope.js'\nimport { oidcClaimsParameterSchema } from './oidc-claims-parameter.js'\nimport { oidcClaimsPropertiesSchema } from './oidc-claims-properties.js'\nimport { oidcEntityTypeSchema } from './oidc-entity-type.js'\nimport { jsonObjectPreprocess, numberPreprocess } from './util.js'\n\n/**\n * @note non string parameters will be converted from their string\n * representation since oauth request parameters are typically sent as URL\n * encoded form data or URL encoded query string.\n * @see {@link https://openid.net/specs/openid-connect-core-1_0.html#AuthRequest | OIDC}\n */\nexport const oauthAuthorizationRequestParametersSchema = z.object({\n client_id: oauthClientIdSchema,\n state: z.string().optional(),\n redirect_uri: oauthRedirectUriSchema.optional(),\n scope: oauthScopeSchema.optional(),\n response_type: oauthResponseTypeSchema,\n\n // PKCE\n\n // https://datatracker.ietf.org/doc/html/rfc7636#section-4.3\n code_challenge: z.string().optional(),\n code_challenge_method: oauthCodeChallengeMethodSchema.optional(),\n\n // DPOP\n\n // https://datatracker.ietf.org/doc/html/rfc9449#section-12.3\n dpop_jkt: z.string().optional(),\n\n // OIDC\n\n // Default depend on response_type\n response_mode: oauthResponseModeSchema.optional(),\n\n nonce: z.string().optional(),\n\n // Specifies the allowable elapsed time in seconds since the last time the\n // End-User was actively authenticated by the OP. If the elapsed time is\n // greater than this value, the OP MUST attempt to actively re-authenticate\n // the End-User. (The max_age request parameter corresponds to the OpenID 2.0\n // PAPE [OpenID.PAPE] max_auth_age request parameter.) When max_age is used,\n // the ID Token returned MUST include an auth_time Claim Value. Note that\n // max_age=0 is equivalent to prompt=login.\n max_age: z.preprocess(numberPreprocess, z.number().int().min(0)).optional(),\n\n claims: z\n .preprocess(\n jsonObjectPreprocess,\n z.record(\n oidcEntityTypeSchema,\n z.record(\n oidcClaimsParameterSchema,\n z.union([z.literal(null), oidcClaimsPropertiesSchema]),\n ),\n ),\n )\n .optional(),\n\n // https://openid.net/specs/openid-connect-core-1_0.html#RegistrationParameter\n // Not supported by this library (yet?)\n // registration: clientMetadataSchema.optional(),\n\n login_hint: z.string().min(1).optional(),\n\n ui_locales: z\n .string()\n .regex(/^[a-z]{2,3}(-[A-Z]{2})?( [a-z]{2,3}(-[A-Z]{2})?)*$/) // fr-CA fr en\n .optional(),\n\n // Previous ID Token, should be provided when prompt=none is used\n id_token_hint: signedJwtSchema.optional(),\n\n // Type of UI the AS is displayed on\n display: z.enum(['page', 'popup', 'touch', 'wap']).optional(),\n\n // How the AS should prompt the user for authorization:\n prompt: oauthPromptModeSchema.optional(),\n\n // https://datatracker.ietf.org/doc/html/rfc9396\n authorization_details: z\n .preprocess(jsonObjectPreprocess, oauthAuthorizationDetailsSchema)\n .optional(),\n})\n\n/**\n * @see {oauthAuthorizationRequestParametersSchema}\n */\nexport type OAuthAuthorizationRequestParameters = z.infer<\n typeof oauthAuthorizationRequestParametersSchema\n>\n","import { z } from 'zod'\nimport { oauthAuthorizationRequestJarSchema } from './oauth-authorization-request-jar.js'\nimport { oauthAuthorizationRequestParametersSchema } from './oauth-authorization-request-parameters.js'\n\nexport const oauthAuthorizationRequestParSchema = z.union([\n oauthAuthorizationRequestParametersSchema,\n oauthAuthorizationRequestJarSchema,\n])\n\nexport type OAuthAuthorizationRequestPar = z.infer<\n typeof oauthAuthorizationRequestParSchema\n>\n","import { z } from 'zod'\n\nexport const oauthRequestUriSchema = z.string().min(1)\n\nexport type OAuthRequestUri = z.infer\n","import { z } from 'zod'\nimport { oauthRequestUriSchema } from './oauth-request-uri.js'\n\nexport const oauthAuthorizationRequestUriSchema = z.object({\n request_uri: oauthRequestUriSchema,\n})\n\nexport type OAuthAuthorizationRequestUri = z.infer<\n typeof oauthAuthorizationRequestUriSchema\n>\n","import { z } from 'zod'\nimport { oauthAuthorizationRequestJarSchema } from './oauth-authorization-request-jar.js'\nimport { oauthAuthorizationRequestParametersSchema } from './oauth-authorization-request-parameters.js'\nimport { oauthAuthorizationRequestUriSchema } from './oauth-authorization-request-uri.js'\nimport { oauthClientIdSchema } from './oauth-client-id.js'\n\nexport const oauthAuthorizationRequestQuerySchema = z.intersection(\n z.object({\n // REQUIRED. OAuth 2.0 [RFC6749] client_id.\n client_id: oauthClientIdSchema,\n }),\n z.union([\n oauthAuthorizationRequestParametersSchema,\n oauthAuthorizationRequestJarSchema,\n oauthAuthorizationRequestUriSchema,\n ]),\n)\n\nexport type OAuthAuthorizationRequestQuery = z.infer<\n typeof oauthAuthorizationRequestQuerySchema\n>\n","import { z } from 'zod'\n\n/**\n * @see {@link https://datatracker.ietf.org/doc/html/draft-ietf-oauth-v2-1-12#name-error-response-2}\n */\nexport const oauthAuthorizationResponseErrorSchema = z.enum([\n // The request is missing a required parameter, includes an invalid parameter value, includes a parameter more than once, or is otherwise malformed.\n 'invalid_request',\n // The client is not authorized to request an authorization code using this method.\n 'unauthorized_client',\n // The resource owner or authorization server denied the request.\n 'access_denied',\n // The authorization server does not support obtaining an authorization code using this method.\n 'unsupported_response_type',\n // The requested scope is invalid, unknown, or malformed.\n 'invalid_scope',\n // The authorization server encountered an unexpected condition that prevented it from fulfilling the request. (This error code is needed because a 500 Internal Server Error HTTP status code cannot be returned to the client via an HTTP redirect.)\n 'server_error',\n // The authorization server is currently unable to handle the request due to a temporary overloading or maintenance of the server. (This error code is needed because a 503 Service Unavailable HTTP status code cannot be returned to the client via an HTTP redirect.)\n 'temporarily_unavailable',\n])\n\nexport type OAuthAuthorizationResponseError = z.infer<\n typeof oauthAuthorizationResponseErrorSchema\n>\n","import { z } from 'zod'\nimport { webUriSchema } from './uri.js'\n\nexport const oauthIssuerIdentifierSchema = webUriSchema.superRefine(\n (value, ctx) => {\n // Validate the issuer (MIX-UP attacks)\n\n if (value.endsWith('/')) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'Issuer URL must not end with a slash',\n })\n return false\n }\n\n const url = new URL(value)\n\n if (url.username || url.password) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'Issuer URL must not contain a username or password',\n })\n return false\n }\n\n if (url.hash || url.search) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'Issuer URL must not contain a query or fragment',\n })\n return false\n }\n\n const canonicalValue = url.pathname === '/' ? url.origin : url.href\n if (value !== canonicalValue) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'Issuer URL must be in the canonical form',\n })\n return false\n }\n\n return true\n },\n)\n\nexport type OAuthIssuerIdentifier = z.infer\n","import { z } from 'zod'\nimport { oauthCodeChallengeMethodSchema } from './oauth-code-challenge-method.js'\nimport { oauthIssuerIdentifierSchema } from './oauth-issuer-identifier.js'\nimport { oauthPromptModeSchema } from './oauth-prompt-mode.js'\nimport { webUriSchema } from './uri.js'\n\n/**\n * @see {@link https://datatracker.ietf.org/doc/html/rfc8414}\n * @note we do not enforce https: scheme in URIs to support development\n * environments. Make sure to validate the URIs before using it in a production\n * environment.\n */\nexport const oauthAuthorizationServerMetadataSchema = z.object({\n issuer: oauthIssuerIdentifierSchema,\n\n claims_supported: z.array(z.string()).optional(),\n claims_locales_supported: z.array(z.string()).optional(),\n claims_parameter_supported: z.boolean().optional(),\n request_parameter_supported: z.boolean().optional(),\n request_uri_parameter_supported: z.boolean().optional(),\n require_request_uri_registration: z.boolean().optional(),\n scopes_supported: z.array(z.string()).optional(),\n subject_types_supported: z.array(z.string()).optional(),\n response_types_supported: z.array(z.string()).optional(),\n response_modes_supported: z.array(z.string()).optional(),\n grant_types_supported: z.array(z.string()).optional(),\n code_challenge_methods_supported: z\n .array(oauthCodeChallengeMethodSchema)\n .min(1)\n .optional(),\n ui_locales_supported: z.array(z.string()).optional(),\n id_token_signing_alg_values_supported: z.array(z.string()).optional(),\n display_values_supported: z.array(z.string()).optional(),\n request_object_signing_alg_values_supported: z.array(z.string()).optional(),\n authorization_response_iss_parameter_supported: z.boolean().optional(),\n authorization_details_types_supported: z.array(z.string()).optional(),\n request_object_encryption_alg_values_supported: z\n .array(z.string())\n .optional(),\n request_object_encryption_enc_values_supported: z\n .array(z.string())\n .optional(),\n\n jwks_uri: webUriSchema.optional(),\n\n authorization_endpoint: webUriSchema, // .optional(),\n\n token_endpoint: webUriSchema, // .optional(),\n // https://www.rfc-editor.org/rfc/rfc8414.html#section-2\n token_endpoint_auth_methods_supported: z\n .array(z.string())\n // > If omitted, the default is \"client_secret_basic\" [...].\n .default(['client_secret_basic']),\n token_endpoint_auth_signing_alg_values_supported: z\n .array(z.string())\n .optional(),\n\n revocation_endpoint: webUriSchema.optional(),\n introspection_endpoint: webUriSchema.optional(),\n pushed_authorization_request_endpoint: webUriSchema.optional(),\n\n require_pushed_authorization_requests: z.boolean().optional(),\n\n userinfo_endpoint: webUriSchema.optional(),\n end_session_endpoint: webUriSchema.optional(),\n registration_endpoint: webUriSchema.optional(),\n\n // https://datatracker.ietf.org/doc/html/rfc9449#section-5.1\n dpop_signing_alg_values_supported: z.array(z.string()).optional(),\n\n // https://www.rfc-editor.org/rfc/rfc9728.html#section-4\n protected_resources: z.array(webUriSchema).optional(),\n\n // https://www.ietf.org/archive/id/draft-ietf-oauth-client-id-metadata-document-00.html\n client_id_metadata_document_supported: z.boolean().optional(),\n\n // https://openid.net/specs/openid-connect-prompt-create-1_0.html#section-4.2\n prompt_values_supported: z.array(oauthPromptModeSchema).optional(),\n})\n\nexport type OAuthAuthorizationServerMetadata = z.infer<\n typeof oauthAuthorizationServerMetadataSchema\n>\n\nexport const oauthAuthorizationServerMetadataValidator =\n oauthAuthorizationServerMetadataSchema\n .superRefine((data, ctx) => {\n if (\n data.require_pushed_authorization_requests &&\n !data.pushed_authorization_request_endpoint\n ) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message:\n '\"pushed_authorization_request_endpoint\" required when \"require_pushed_authorization_requests\" is true',\n })\n }\n })\n .superRefine((data, ctx) => {\n if (data.response_types_supported) {\n if (!data.response_types_supported.includes('code')) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'Response type \"code\" is required',\n })\n }\n }\n })\n .superRefine((data, ctx) => {\n if (\n data.token_endpoint_auth_signing_alg_values_supported?.includes('none')\n ) {\n // https://openid.net/specs/openid-connect-discovery-1_0.html#rfc.section.3\n // > The value `none` MUST NOT be used.\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'Client authentication method \"none\" is not allowed',\n })\n }\n })\n","import { z } from 'zod'\n\nexport const oauthClientCredentialsGrantTokenRequestSchema = z.object({\n grant_type: z.literal('client_credentials'),\n})\n\nexport type OAuthClientCredentialsGrantTokenRequest = z.infer<\n typeof oauthClientCredentialsGrantTokenRequestSchema\n>\n","import { z } from 'zod'\nimport { signedJwtSchema } from '@atproto/jwk'\nimport { CLIENT_ASSERTION_TYPE_JWT_BEARER } from './constants.js'\nimport { oauthClientIdSchema } from './oauth-client-id.js'\n\nexport const oauthClientCredentialsJwtBearerSchema = z.object({\n client_id: oauthClientIdSchema,\n client_assertion_type: z.literal(CLIENT_ASSERTION_TYPE_JWT_BEARER),\n /**\n * - \"sub\" the subject MUST be the \"client_id\" of the OAuth client\n * - \"iat\" is required and MUST be less than one minute\n * - \"aud\" must containing a value that identifies the authorization server\n * - The JWT MAY contain a \"jti\" (JWT ID) claim that provides a unique identifier for the token.\n * - Note that the authorization server may reject JWTs with an \"exp\" claim value that is unreasonably far in the future.\n *\n * @see {@link https://datatracker.ietf.org/doc/html/rfc7523#section-3}\n */\n client_assertion: signedJwtSchema,\n})\n\nexport type OAuthClientCredentialsJwtBearer = z.infer<\n typeof oauthClientCredentialsJwtBearerSchema\n>\n\nexport const oauthClientCredentialsSecretPostSchema = z.object({\n client_id: oauthClientIdSchema,\n client_secret: z.string(),\n})\n\nexport type OAuthClientCredentialsSecretPost = z.infer<\n typeof oauthClientCredentialsSecretPostSchema\n>\n\nexport const oauthClientCredentialsNoneSchema = z.object({\n client_id: oauthClientIdSchema,\n})\n\nexport type OAuthClientCredentialsNone = z.infer<\n typeof oauthClientCredentialsNoneSchema\n>\n\n//\n\nexport const oauthClientCredentialsSchema = z.union([\n oauthClientCredentialsJwtBearerSchema,\n oauthClientCredentialsSecretPostSchema,\n // Must be last since it is less specific\n oauthClientCredentialsNoneSchema,\n])\n\nexport type OAuthClientCredentials = z.infer<\n typeof oauthClientCredentialsSchema\n>\n","import { type TypeOf, z } from 'zod'\nimport { oauthClientIdSchema } from './oauth-client-id.js'\nimport { httpsUriSchema } from './uri.js'\nimport { extractUrlPath, isHostnameIP } from './util.js'\n\n/**\n * @see {@link https://www.ietf.org/archive/id/draft-ietf-oauth-client-id-metadata-document-00.html}\n */\nexport const oauthClientIdDiscoverableSchema = z\n .intersection(oauthClientIdSchema, httpsUriSchema)\n .superRefine((value, ctx): value is `https://${string}/${string}` => {\n const url = new URL(value)\n\n if (url.username || url.password) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'ClientID must not contain credentials',\n })\n return false\n }\n\n if (url.hash) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'ClientID must not contain a fragment',\n })\n return false\n }\n\n if (url.pathname === '/') {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message:\n 'ClientID must contain a path component (e.g. \"/client-metadata.json\")',\n })\n return false\n }\n\n if (url.pathname.endsWith('/')) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'ClientID path must not end with a trailing slash',\n })\n return false\n }\n\n if (isHostnameIP(url.hostname)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'ClientID hostname must not be an IP address',\n })\n return false\n }\n\n // URL constructor normalizes the URL, so we extract the path manually to\n // avoid normalization, then compare it to the normalized path to ensure\n // that the URL does not contain path traversal or other unexpected characters\n if (extractUrlPath(value) !== url.pathname) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `ClientID must be in canonical form (\"${url.href}\", got \"${value}\")`,\n })\n return false\n }\n\n return true\n })\n\nexport type OAuthClientIdDiscoverable = TypeOf<\n typeof oauthClientIdDiscoverableSchema\n>\n\nexport function isOAuthClientIdDiscoverable(\n clientId: string,\n): clientId is OAuthClientIdDiscoverable {\n return oauthClientIdDiscoverableSchema.safeParse(clientId).success\n}\n\nexport const conventionalOAuthClientIdSchema =\n oauthClientIdDiscoverableSchema.superRefine(\n (value, ctx): value is `https://${string}/oauth-client-metadata.json` => {\n const url = new URL(value)\n\n if (url.port) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'ClientID must not contain a port',\n })\n return false\n }\n\n if (url.search) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'ClientID must not contain a query string',\n })\n return false\n }\n\n if (url.pathname !== '/oauth-client-metadata.json') {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'ClientID must be \"/oauth-client-metadata.json\"',\n })\n return false\n }\n\n return true\n },\n )\n\nexport type ConventionalOAuthClientId = TypeOf<\n typeof conventionalOAuthClientIdSchema\n>\n\nexport function isConventionalOAuthClientId(\n clientId: string,\n): clientId is ConventionalOAuthClientId {\n return conventionalOAuthClientIdSchema.safeParse(clientId).success\n}\n\nexport function assertOAuthDiscoverableClientId(\n value: string,\n): asserts value is OAuthClientIdDiscoverable {\n void oauthClientIdDiscoverableSchema.parse(value)\n}\n\nexport function parseOAuthDiscoverableClientId(clientId: string): URL {\n return new URL(oauthClientIdDiscoverableSchema.parse(clientId))\n}\n","import { z } from 'zod'\n\nexport const oauthEndpointAuthMethod = z.enum([\n 'client_secret_basic',\n 'client_secret_jwt',\n 'client_secret_post',\n 'none',\n 'private_key_jwt',\n 'self_signed_tls_client_auth',\n 'tls_client_auth',\n])\n\nexport type OauthEndpointAuthMethod = z.infer\n","import { z } from 'zod'\n\nexport const oauthGrantTypeSchema = z.enum([\n 'authorization_code',\n 'implicit',\n 'refresh_token',\n 'password', // Not part of OAuth 2.1\n 'client_credentials',\n 'urn:ietf:params:oauth:grant-type:jwt-bearer',\n 'urn:ietf:params:oauth:grant-type:saml2-bearer',\n])\n\nexport type OAuthGrantType = z.infer\n","import { z } from 'zod'\nimport { jwksPubSchema } from '@atproto/jwk'\nimport { oauthClientIdSchema } from './oauth-client-id.js'\nimport { oauthEndpointAuthMethod } from './oauth-endpoint-auth-method.js'\nimport { oauthGrantTypeSchema } from './oauth-grant-type.js'\nimport { oauthRedirectUriSchema } from './oauth-redirect-uri.js'\nimport { oauthResponseTypeSchema } from './oauth-response-type.js'\nimport { oauthScopeSchema } from './oauth-scope.js'\nimport { webUriSchema } from './uri.js'\n\n/**\n * @see {@link https://openid.net/specs/openid-connect-registration-1_0.html}\n * @see {@link https://datatracker.ietf.org/doc/html/rfc7591}\n * @note we do not enforce https: scheme in URIs to support development\n * environments. Make sure to validate the URIs before using it in a production\n * environment.\n */\nexport const oauthClientMetadataSchema = z.object({\n /**\n * @note redirect_uris require additional validation\n */\n // https://www.rfc-editor.org/rfc/rfc7591.html#section-2\n redirect_uris: z.array(oauthRedirectUriSchema).nonempty(),\n response_types: z\n .array(oauthResponseTypeSchema)\n .nonempty()\n // > If omitted, the default is that the client will use only the \"code\"\n // > response type.\n .default(['code']),\n grant_types: z\n .array(oauthGrantTypeSchema)\n .nonempty()\n // > If omitted, the default behavior is that the client will use only the\n // > \"authorization_code\" Grant Type.\n .default(['authorization_code']),\n scope: oauthScopeSchema.optional(),\n // https://www.rfc-editor.org/rfc/rfc7591.html#section-2\n token_endpoint_auth_method: oauthEndpointAuthMethod\n // > If unspecified or omitted, the default is \"client_secret_basic\" [...].\n .default('client_secret_basic'),\n token_endpoint_auth_signing_alg: z.string().optional(),\n userinfo_signed_response_alg: z.string().optional(),\n userinfo_encrypted_response_alg: z.string().optional(),\n jwks_uri: webUriSchema.optional(),\n jwks: jwksPubSchema.optional(),\n application_type: z.enum(['web', 'native']).default('web'), // default, per spec, is \"web\"\n subject_type: z.enum(['public', 'pairwise']).default('public'),\n request_object_signing_alg: z.string().optional(),\n id_token_signed_response_alg: z.string().optional(),\n authorization_signed_response_alg: z.string().default('RS256'),\n authorization_encrypted_response_enc: z.enum(['A128CBC-HS256']).optional(),\n authorization_encrypted_response_alg: z.string().optional(),\n client_id: oauthClientIdSchema.optional(),\n client_name: z.string().optional(),\n client_uri: webUriSchema.optional(),\n policy_uri: webUriSchema.optional(),\n tos_uri: webUriSchema.optional(),\n logo_uri: webUriSchema.optional(), // @TODO: allow data: uri ?\n\n /**\n * Default Maximum Authentication Age. Specifies that the End-User MUST be\n * actively authenticated if the End-User was authenticated longer ago than\n * the specified number of seconds. The max_age request parameter overrides\n * this default value. If omitted, no default Maximum Authentication Age is\n * specified.\n */\n default_max_age: z.number().optional(),\n require_auth_time: z.boolean().optional(),\n contacts: z.array(z.string().email()).optional(),\n tls_client_certificate_bound_access_tokens: z.boolean().optional(),\n\n // https://datatracker.ietf.org/doc/html/rfc9449#section-5.2\n dpop_bound_access_tokens: z.boolean().optional(),\n\n // https://datatracker.ietf.org/doc/html/rfc9396#section-14.5\n authorization_details_types: z.array(z.string()).optional(),\n})\n\nexport type OAuthClientMetadata = z.infer\nexport type OAuthClientMetadataInput = z.input\n","import { z } from 'zod'\n\nexport const oauthParResponseSchema = z.object({\n request_uri: z.string(),\n expires_in: z.number().int().positive(),\n})\n\nexport type OAuthParResponse = z.infer\n","import { z } from 'zod'\n\nexport const oauthPasswordGrantTokenRequestSchema = z.object({\n grant_type: z.literal('password'),\n username: z.string(),\n password: z.string(),\n})\n\nexport type OAuthPasswordGrantTokenRequest = z.infer<\n typeof oauthPasswordGrantTokenRequestSchema\n>\n","import { z } from 'zod'\nimport { oauthIssuerIdentifierSchema } from './oauth-issuer-identifier.js'\nimport { webUriSchema } from './uri.js'\n\n/**\n * @see {@link https://www.rfc-editor.org/rfc/rfc9728.html#section-3.2}\n */\nexport const oauthProtectedResourceMetadataSchema = z.object({\n /**\n * REQUIRED. The protected resource's resource identifier, which is a URL that\n * uses the https scheme and has no query or fragment components. Using these\n * well-known resources is described in Section 3.\n *\n * @note This schema allows non https URLs for testing & development purposes.\n * Make sure to validate the URL before using it in a production environment.\n */\n resource: webUriSchema\n .refine((url) => !url.includes('?'), {\n message: 'Resource URL must not contain query parameters',\n })\n .refine((url) => !url.includes('#'), {\n message: 'Resource URL must not contain a fragment',\n }),\n\n /**\n * OPTIONAL. JSON array containing a list of OAuth authorization server issuer\n * identifiers, as defined in [RFC8414], for authorization servers that can be\n * used with this protected resource. Protected resources MAY choose not to\n * advertise some supported authorization servers even when this parameter is\n * used. In some use cases, the set of authorization servers will not be\n * enumerable, in which case this metadata parameter would not be used.\n */\n authorization_servers: z.array(oauthIssuerIdentifierSchema).optional(),\n\n /**\n * OPTIONAL. URL of the protected resource's JWK Set [JWK] document. This\n * contains public keys belonging to the protected resource, such as signing\n * key(s) that the resource server uses to sign resource responses. This URL\n * MUST use the https scheme. When both signing and encryption keys are made\n * available, a use (public key use) parameter value is REQUIRED for all keys\n * in the referenced JWK Set to indicate each key's intended usage.\n */\n jwks_uri: webUriSchema.optional(),\n\n /**\n * RECOMMENDED. JSON array containing a list of the OAuth 2.0 [RFC6749] scope\n * values that are used in authorization requests to request access to this\n * protected resource. Protected resources MAY choose not to advertise some\n * scope values supported even when this parameter is used.\n */\n scopes_supported: z.array(z.string()).optional(),\n\n /**\n * OPTIONAL. JSON array containing a list of the supported methods of sending\n * an OAuth 2.0 Bearer Token [RFC6750] to the protected resource. Defined\n * values are [\"header\", \"body\", \"query\"], corresponding to Sections 2.1, 2.2,\n * and 2.3 of RFC 6750.\n */\n bearer_methods_supported: z\n .array(z.enum(['header', 'body', 'query']))\n .optional(),\n\n /**\n * OPTIONAL. JSON array containing a list of the JWS [JWS] signing algorithms\n * (alg values) [JWA] supported by the protected resource for signing resource\n * responses, for instance, as described in [FAPI.MessageSigning]. No default\n * algorithms are implied if this entry is omitted. The value none MUST NOT be\n * used.\n */\n resource_signing_alg_values_supported: z.array(z.string()).optional(),\n\n /**\n * OPTIONAL. URL of a page containing human-readable information that\n * developers might want or need to know when using the protected resource\n */\n resource_documentation: webUriSchema.optional(),\n\n /**\n * OPTIONAL. URL that the protected resource provides to read about the\n * protected resource's requirements on how the client can use the data\n * provided by the protected resource\n */\n resource_policy_uri: webUriSchema.optional(),\n\n /**\n * OPTIONAL. URL that the protected resource provides to read about the\n * protected resource's terms of service\n */\n resource_tos_uri: webUriSchema.optional(),\n})\n\nexport type OAuthProtectedResourceMetadata = z.infer<\n typeof oauthProtectedResourceMetadataSchema\n>\n","import { z } from 'zod'\n\nexport const oauthRefreshTokenSchema = z.string().min(1)\nexport type OAuthRefreshToken = z.infer\n","import { z } from 'zod'\nimport { oauthRefreshTokenSchema } from './oauth-refresh-token.js'\n\nexport const oauthRefreshTokenGrantTokenRequestSchema = z.object({\n grant_type: z.literal('refresh_token'),\n refresh_token: oauthRefreshTokenSchema,\n})\n\nexport type OAuthRefreshTokenGrantTokenRequest = z.infer<\n typeof oauthRefreshTokenGrantTokenRequestSchema\n>\n","import { z } from 'zod'\nimport { oauthAccessTokenSchema } from './oauth-access-token.js'\nimport { oauthRefreshTokenSchema } from './oauth-refresh-token.js'\n\nexport const oauthTokenIdentificationSchema = z.object({\n token: z.union([oauthAccessTokenSchema, oauthRefreshTokenSchema]),\n token_type_hint: z.enum(['access_token', 'refresh_token']).optional(),\n})\n\nexport type OAuthTokenIdentification = z.infer<\n typeof oauthTokenIdentificationSchema\n>\n","import { z } from 'zod'\nimport { oauthAuthorizationCodeGrantTokenRequestSchema } from './oauth-authorization-code-grant-token-request.js'\nimport { oauthClientCredentialsGrantTokenRequestSchema } from './oauth-client-credentials-grant-token-request.js'\nimport { oauthPasswordGrantTokenRequestSchema } from './oauth-password-grant-token-request.js'\nimport { oauthRefreshTokenGrantTokenRequestSchema } from './oauth-refresh-token-grant-token-request.js'\n\nexport const oauthTokenRequestSchema = z.discriminatedUnion('grant_type', [\n oauthAuthorizationCodeGrantTokenRequestSchema,\n oauthRefreshTokenGrantTokenRequestSchema,\n oauthPasswordGrantTokenRequestSchema,\n oauthClientCredentialsGrantTokenRequestSchema,\n])\n\nexport type OAuthTokenRequest = z.infer\n","import { z } from 'zod'\n\n/**\n * @see {@link https://openid.net/specs/openid-connect-core-1_0.html#AuthError}\n */\nexport const oidcAuthorizationResponseErrorSchema = z.enum([\n // The Authorization Server requires End-User interaction of some form to proceed. This error MAY be returned when the prompt parameter value in the Authentication Request is none, but the Authentication Request cannot be completed without displaying a user interface for End-User interaction.\n 'interaction_required',\n // The Authorization Server requires End-User authentication. This error MAY be returned when the prompt parameter value in the Authentication Request is none, but the Authentication Request cannot be completed without displaying a user interface for End-User authentication.\n 'login_required',\n // The End-User is REQUIRED to select a session at the Authorization Server. The End-User MAY be authenticated at the Authorization Server with different associated accounts, but the End-User did not select a session. This error MAY be returned when the prompt parameter value in the Authentication Request is none, but the Authentication Request cannot be completed without displaying a user interface to prompt for a session to use.\n 'account_selection_required',\n // The Authorization Server requires End-User consent. This error MAY be returned when the prompt parameter value in the Authentication Request is none, but the Authentication Request cannot be completed without displaying a user interface for End-User consent.\n 'consent_required',\n // The request_uri in the Authorization Request returns an error or contains invalid data.\n 'invalid_request_uri',\n // The request parameter contains an invalid Request Object.\n 'invalid_request_object',\n // The OP does not support use of the request parameter defined in Section 6.\n 'request_not_supported',\n // The OP does not support use of the request_uri parameter defined in Section 6.\n 'request_uri_not_supported',\n // The OP does not support use of the registration parameter defined in Section 7.2.1.\n 'registration_not_supported',\n])\n\nexport type OidcAuthorizationResponseError = z.infer<\n typeof oidcAuthorizationResponseErrorSchema\n>\n","import { z } from 'zod'\n\nexport const oidcUserinfoSchema = z.object({\n sub: z.string(),\n iss: z.string().url().optional(),\n aud: z.union([z.string(), z.array(z.string()).min(1)]).optional(),\n\n email: z.string().email().optional(),\n email_verified: z.boolean().optional(),\n name: z.string().optional(),\n preferred_username: z.string().optional(),\n picture: z.string().url().optional(),\n})\n\nexport type OidcUserinfo = z.infer\n","import type { RuntimeLock } from './runtime-implementation.js'\n\nconst locks = new Map>()\n\nfunction acquireLocalLock(name: unknown): Promise<() => void> {\n return new Promise((resolveAcquire) => {\n const prev = locks.get(name) ?? Promise.resolve()\n const next = prev.then(() => {\n return new Promise((resolveRelease) => {\n const release = () => {\n // Only delete the lock if it is still the current one\n if (locks.get(name) === next) locks.delete(name)\n\n resolveRelease()\n }\n\n resolveAcquire(release)\n })\n })\n\n locks.set(name, next)\n })\n}\n\nexport const requestLocalLock: RuntimeLock = (name, fn) => {\n return acquireLocalLock(name).then(async (release) => {\n try {\n return await fn()\n } finally {\n release()\n }\n })\n}\n","export type Awaitable = T | PromiseLike\nexport type Simplify = { [K in keyof T]: T[K] } & NonNullable\n\nexport const ifString = (v: V) => (typeof v === 'string' ? v : undefined)\n\nexport function contentMime(headers: Headers): string | undefined {\n return headers.get('content-type')?.split(';')[0]!.trim()\n}\n\n/**\n * Returns an {@link AbortSignal} that aborts after `ms` milliseconds.\n *\n * Uses the native {@link AbortSignal.timeout} when available, and otherwise\n * falls back to an {@link AbortController} + `setTimeout`. The static\n * `AbortSignal.timeout` method is not implemented in every runtime this package\n * targets (notably React Native / Expo), so relying on it directly throws a\n * `TypeError: AbortSignal.timeout is not a function` at runtime.\n *\n * @see {@link https://github.com/facebook/react-native/issues/42042}\n */\nexport function timeoutSignal(ms: number): AbortSignal {\n if (typeof AbortSignal.timeout === 'function') {\n return AbortSignal.timeout(ms)\n }\n\n const controller = new AbortController()\n setTimeout(() => controller.abort(timeoutError(ms)), ms)\n return controller.signal\n}\n\n/**\n * Builds the reason used to abort a {@link timeoutSignal} fallback. Mirrors the\n * native `AbortSignal.timeout` behaviour (a `TimeoutError` `DOMException`) when\n * `DOMException` is available, and degrades to a plain `Error` in runtimes that\n * lack it.\n */\nfunction timeoutError(ms: number): unknown {\n const message = `The operation timed out after ${ms} ms`\n if (typeof DOMException === 'function') {\n return new DOMException(message, 'TimeoutError')\n }\n return new Error(message)\n}\n\nexport function combineSignals(\n signals: readonly (AbortSignal | undefined)[],\n): AbortController & Disposable {\n const controller = new DisposableAbortController()\n\n const onAbort = function (this: AbortSignal, _event: Event) {\n const reason = new Error('This operation was aborted', {\n cause: this.reason,\n })\n\n controller.abort(reason)\n }\n\n try {\n for (const sig of signals) {\n if (sig) {\n sig.throwIfAborted()\n sig.addEventListener('abort', onAbort, { signal: controller.signal })\n }\n }\n\n return controller\n } catch (err) {\n controller.abort(err)\n throw err\n }\n}\n\n/**\n * Allows using {@link AbortController} with the `using` keyword, in order to\n * automatically abort them once the execution block ends.\n */\nclass DisposableAbortController extends AbortController implements Disposable {\n [Symbol.dispose]() {\n this.abort(new Error('AbortController was disposed'))\n }\n}\n","import {\n type OAuthAuthorizationServerMetadata,\n oauthAuthorizationServerMetadataValidator,\n oauthIssuerIdentifierSchema,\n} from '@atproto/oauth-types'\nimport {\n type Fetch,\n FetchResponseError,\n bindFetch,\n cancelBody,\n} from '@atproto-labs/fetch'\nimport {\n CachedGetter,\n type GetCachedOptions,\n type SimpleStore,\n type StoreErrorHandler,\n swallowStoreErrors,\n} from '@atproto-labs/simple-store'\nimport { contentMime } from './util.js'\n\nexport type { GetCachedOptions, OAuthAuthorizationServerMetadata }\n\nexport type AuthorizationServerMetadataCache = SimpleStore<\n string,\n OAuthAuthorizationServerMetadata\n>\n\nexport type OAuthAuthorizationServerMetadataResolverConfig = {\n allowHttpIssuer?: boolean\n\n /**\n * Called when the metadata cache throws. The cache is best-effort: failures\n * are logged (by default) and degrade to a cache miss + refetch, rather than\n * being propagated.\n */\n onCacheError?: StoreErrorHandler\n}\n\n/**\n * @see {@link https://datatracker.ietf.org/doc/html/rfc8414}\n */\nexport class OAuthAuthorizationServerMetadataResolver extends CachedGetter<\n string,\n OAuthAuthorizationServerMetadata\n> {\n private readonly fetch: Fetch\n private readonly allowHttpIssuer: boolean\n\n constructor(\n cache: AuthorizationServerMetadataCache,\n fetch?: Fetch,\n config?: OAuthAuthorizationServerMetadataResolverConfig,\n ) {\n super(\n async (issuer, options) => this.fetchMetadata(issuer, options),\n swallowStoreErrors(cache, config?.onCacheError),\n )\n\n this.fetch = bindFetch(fetch)\n this.allowHttpIssuer = config?.allowHttpIssuer === true\n }\n\n async get(\n input: URL | string,\n options?: GetCachedOptions,\n ): Promise {\n const issuer = oauthIssuerIdentifierSchema.parse(String(input))\n if (!this.allowHttpIssuer && issuer.startsWith('http:')) {\n throw new TypeError(\n 'Unsecure issuer URL protocol only allowed in development and test environments',\n )\n }\n return super.get(issuer, options)\n }\n\n private async fetchMetadata(\n issuer: string,\n options?: GetCachedOptions,\n ): Promise {\n const url = new URL(`/.well-known/oauth-authorization-server`, issuer)\n const request = new Request(url, {\n headers: { accept: 'application/json' },\n cache: options?.noCache ? 'no-cache' : undefined,\n signal: options?.signal,\n redirect: 'manual', // response must be 200 OK\n })\n\n const response = await this.fetch(request)\n\n // https://datatracker.ietf.org/doc/html/rfc8414#section-3.2\n if (response.status !== 200) {\n await cancelBody(response, 'log')\n throw await FetchResponseError.from(\n response,\n `Unexpected status code ${response.status} for \"${url}\"`,\n undefined,\n { cause: request },\n )\n }\n\n if (contentMime(response.headers) !== 'application/json') {\n await cancelBody(response, 'log')\n throw await FetchResponseError.from(\n response,\n `Unexpected content type for \"${url}\"`,\n undefined,\n { cause: request },\n )\n }\n\n const metadata = oauthAuthorizationServerMetadataValidator.parse(\n await response.json(),\n )\n\n // Validate the issuer (MIX-UP attacks)\n // https://datatracker.ietf.org/doc/html/draft-ietf-oauth-security-topics#name-mix-up-attacks\n // https://datatracker.ietf.org/doc/html/rfc8414#section-2\n if (metadata.issuer !== issuer) {\n throw new TypeError(`Invalid issuer ${metadata.issuer}`)\n }\n\n // ATPROTO requires client_id_metadata_document\n // https://datatracker.ietf.org/doc/draft-ietf-oauth-client-id-metadata-document/\n if (metadata.client_id_metadata_document_supported !== true) {\n throw new TypeError(\n `Authorization server \"${issuer}\" does not support client_id_metadata_document`,\n )\n }\n\n return metadata\n }\n}\n","export class OAuthCallbackError extends Error {\n static from(err: unknown, params: URLSearchParams, state?: string) {\n if (err instanceof OAuthCallbackError) return err\n const message = err instanceof Error ? err.message : undefined\n return new OAuthCallbackError(params, message, state, err)\n }\n\n constructor(\n public readonly params: URLSearchParams,\n message = params.get('error_description') || 'OAuth callback error',\n public readonly state?: string,\n cause?: unknown,\n ) {\n super(message, { cause })\n }\n}\n","export const HANDLE_INVALID = 'handle.invalid'\n","export class IdentityResolverError extends Error {\n name = 'IdentityResolverError'\n}\n","import type {\n AtprotoIdentityDidMethods,\n DidDocument,\n} from '@atproto-labs/did-resolver'\n\n/**\n * Extract the raw, un-validated, Atproto handle from a DID document.\n */\nexport function extractAtprotoHandle(\n document: DidDocument,\n): string | undefined {\n if (document.alsoKnownAs) {\n for (const h of document.alsoKnownAs) {\n if (h.startsWith('at://')) {\n // strip off \"at://\" prefix\n return h.slice(5)\n }\n }\n }\n return undefined\n}\n\n/**\n * Extracts a validated, normalized Atproto handle from a DID document.\n */\nexport function extractNormalizedHandle(\n document: DidDocument,\n): string | undefined {\n const handle = extractAtprotoHandle(document)\n if (!handle) return undefined\n return asNormalizedHandle(handle)\n}\n\nexport function asNormalizedHandle(input: string): string | undefined {\n const handle = normalizeHandle(input)\n return isValidHandle(handle) ? handle : undefined\n}\n\nexport function normalizeHandle(handle: string): string {\n return handle.toLowerCase()\n}\n\nexport function isValidHandle(handle: string): boolean {\n return (\n handle.length > 0 &&\n handle.length < 254 &&\n /^([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\\.)+[a-zA-Z]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?$/.test(\n handle,\n )\n )\n}\n","import {\n type AtprotoDid,\n type AtprotoIdentityDidMethods,\n type DidDocument,\n type DidResolver,\n type ResolveDidOptions,\n isAtprotoDid,\n} from '@atproto-labs/did-resolver'\nimport type {\n HandleResolver,\n ResolveHandleOptions,\n} from '@atproto-labs/handle-resolver'\nimport { HANDLE_INVALID } from './constants.js'\nimport { IdentityResolverError } from './identity-resolver-error.js'\nimport type {\n IdentityInfo,\n IdentityResolver,\n ResolveIdentityOptions,\n} from './identity-resolver.js'\nimport { asNormalizedHandle, extractNormalizedHandle } from './util.js'\n\n// @TODO Move this to its own package as soon as we have a distinct\n// implementation based on XRPC calls to the\n// \"com.atproto.identity.resolveIdentity\" method.\n\n/**\n * Implementation of the official ATPROTO identity resolution strategy.\n * This implementation relies on two primitives:\n * - DID resolution (using the `DidResolver` interface)\n * - Handle resolution (using the `HandleResolver` interface)\n */\nexport class AtprotoIdentityResolver implements IdentityResolver {\n constructor(\n protected readonly didResolver: DidResolver,\n protected readonly handleResolver: HandleResolver,\n ) {}\n\n public async resolve(\n input: string,\n options?: ResolveIdentityOptions,\n ): Promise {\n return isAtprotoDid(input)\n ? this.resolveFromDid(input, options)\n : this.resolveFromHandle(input, options)\n }\n\n public async resolveFromDid(\n did: AtprotoDid,\n options?: ResolveDidOptions,\n ): Promise {\n const document = await this.getDocumentFromDid(did, options)\n\n options?.signal?.throwIfAborted()\n\n // We will only return the document's handle alias if it resolves to the\n // same DID as the input.\n const handle = extractNormalizedHandle(document)\n const resolvedDid = handle\n ? await this.handleResolver\n .resolve(handle, options)\n .catch(() => undefined) // Ignore errors (temporarily unavailable)\n : undefined\n\n return {\n did: document.id,\n didDoc: document,\n handle: handle && resolvedDid === did ? handle : HANDLE_INVALID,\n }\n }\n\n public async resolveFromHandle(\n handle: string,\n options?: ResolveHandleOptions,\n ): Promise {\n const document = await this.getDocumentFromHandle(handle, options)\n\n // @NOTE bi-directional resolution enforced in getDocumentFromHandle()\n\n return {\n did: document.id,\n didDoc: document,\n handle: extractNormalizedHandle(document) || HANDLE_INVALID,\n }\n }\n\n public async getDocumentFromDid(\n did: AtprotoDid,\n options?: ResolveDidOptions,\n ): Promise> {\n return this.didResolver.resolve(did, options)\n }\n\n public async getDocumentFromHandle(\n input: string,\n options?: ResolveHandleOptions,\n ): Promise> {\n const handle = asNormalizedHandle(input)\n if (!handle) {\n throw new IdentityResolverError(`Invalid handle \"${input}\" provided.`)\n }\n\n const did = await this.handleResolver.resolve(handle, options)\n\n if (!did) {\n throw new IdentityResolverError(\n `Handle \"${handle}\" does not resolve to a DID`,\n )\n }\n\n options?.signal?.throwIfAborted()\n\n // Note: Not using \"return this.resolveDid(did, options)\" to make the extra\n // check for the handle in the DID document:\n\n const document = await this.didResolver.resolve(did, options)\n\n // Enforce bi-directional resolution\n if (handle !== extractNormalizedHandle(document)) {\n throw new IdentityResolverError(\n `Did document for \"${did}\" does not include the handle \"${handle}\"`,\n )\n }\n\n return document\n }\n}\n","import {\n type CreateDidResolverOptions,\n createDidResolver,\n} from '@atproto-labs/did-resolver'\nimport {\n type CreateHandleResolverOptions,\n createHandleResolver,\n} from '@atproto-labs/handle-resolver'\nimport { AtprotoIdentityResolver } from './atproto-identity-resolver.js'\nimport type { IdentityResolver } from './identity-resolver.js'\n\nexport type CreateIdentityResolverOptions = {\n identityResolver?: IdentityResolver\n} & Partial\n\nexport function createIdentityResolver(\n options: CreateIdentityResolverOptions,\n): IdentityResolver {\n if ('identityResolver' in options && options.identityResolver != null) {\n return options.identityResolver\n }\n\n if ('handleResolver' in options && options.handleResolver != null) {\n const didResolver = createDidResolver(options)\n const handleResolver = createHandleResolver(\n options as typeof options & {\n handleResolver: NonNullable<(typeof options)['handleResolver']>\n },\n )\n return new AtprotoIdentityResolver(didResolver, handleResolver)\n }\n\n throw new TypeError('identityResolver or handleResolver option is required')\n}\n","/**\n * Per ATProto spec (OpenID uses RS256)\n */\nexport const FALLBACK_ALG = 'ES256'\n","export class AuthMethodUnsatisfiableError extends Error {}\n","export class TokenRevokedError extends Error {\n constructor(\n public readonly sub: string,\n message = `The session for \"${sub}\" was successfully revoked`,\n options?: { cause?: unknown },\n ) {\n super(message, options)\n }\n}\n","import type { Keyset } from '@atproto/jwk'\nimport {\n CLIENT_ASSERTION_TYPE_JWT_BEARER,\n type OAuthAuthorizationServerMetadata,\n type OAuthClientCredentials,\n} from '@atproto/oauth-types'\nimport { FALLBACK_ALG } from './constants.js'\nimport { AuthMethodUnsatisfiableError } from './errors/auth-method-unsatisfiable-error.js'\nimport type { Runtime } from './runtime.js'\nimport type { ClientMetadata } from './types.js'\nimport type { Awaitable } from './util.js'\n\nexport type ClientAuthMethod =\n { method: 'none' } | { method: 'private_key_jwt'; kid: string }\n\nexport function negotiateClientAuthMethod(\n serverMetadata: OAuthAuthorizationServerMetadata,\n clientMetadata: ClientMetadata,\n keyset?: Keyset,\n): ClientAuthMethod {\n const method = clientMetadata.token_endpoint_auth_method\n\n // @NOTE ATproto spec requires that AS support both \"none\" and\n // \"private_key_jwt\", and that clients use one of the other. The following\n // check ensures that the AS is indeed compliant with this client's\n // configuration.\n const methods = supportedMethods(serverMetadata)\n if (!methods.includes(method)) {\n throw new Error(\n `The server does not support \"${method}\" authentication. Supported methods are: ${methods.join(\n ', ',\n )}.`,\n )\n }\n\n if (method === 'private_key_jwt') {\n // Invalid client configuration. This should not happen as\n // \"validateClientMetadata\" already check this.\n if (!keyset) throw new Error('A keyset is required for private_key_jwt')\n\n const alg = supportedAlgs(serverMetadata)\n\n // @NOTE we can't use `keyset.findPrivateKey` here because we can't enforce\n // that the returned key contains a \"kid\". The following implementation is\n // more robust against keysets containing keys without a \"kid\" property.\n for (const key of keyset.list({ alg, usage: 'sign' })) {\n // Return the first key from the key set that matches the server's\n // supported algorithms.\n if (key.kid) return { method: 'private_key_jwt', kid: key.kid }\n }\n\n throw new Error(\n alg.includes(FALLBACK_ALG)\n ? `Client authentication method \"${method}\" requires at least one \"${FALLBACK_ALG}\" signing key with a \"kid\" property`\n : // AS is not compliant with the ATproto OAuth spec.\n `Authorization server requires \"${method}\" authentication method, but does not support \"${FALLBACK_ALG}\" algorithm.`,\n )\n }\n\n if (method === 'none') {\n return { method: 'none' }\n }\n\n throw new Error(\n `The ATProto OAuth spec requires that client use either \"none\" or \"private_key_jwt\" authentication method.` +\n (method === 'client_secret_basic'\n ? ' You might want to explicitly set \"token_endpoint_auth_method\" to one of those values in the client metadata document.'\n : ` You set \"${method}\" which is not allowed.`),\n )\n}\n\nexport type ClientCredentialsFactory = () => Awaitable<{\n headers?: Record\n payload?: OAuthClientCredentials\n}>\n\n/**\n * @throws {AuthMethodUnsatisfiableError} if the authentication method is no\n * long usable (either because the AS changed, of because the key is no longer\n * available in the keyset).\n */\nexport function createClientCredentialsFactory(\n authMethod: ClientAuthMethod,\n serverMetadata: OAuthAuthorizationServerMetadata,\n clientMetadata: ClientMetadata,\n runtime: Runtime,\n keyset?: Keyset,\n): ClientCredentialsFactory {\n // Ensure the AS still supports the auth method.\n if (!supportedMethods(serverMetadata).includes(authMethod.method)) {\n throw new AuthMethodUnsatisfiableError(\n `Client authentication method \"${authMethod.method}\" no longer supported`,\n )\n }\n\n if (authMethod.method === 'none') {\n return () => ({\n payload: {\n client_id: clientMetadata.client_id,\n },\n })\n }\n\n if (authMethod.method === 'private_key_jwt') {\n try {\n // The client used to be a confidential client but no longer has a keyset.\n if (!keyset) throw new Error('A keyset is required for private_key_jwt')\n\n // @NOTE throws if no matching key can be found\n const { key, alg } = keyset.findPrivateKey({\n usage: 'sign',\n kid: authMethod.kid,\n alg: supportedAlgs(serverMetadata),\n })\n\n // https://www.rfc-editor.org/rfc/rfc7523.html#section-3\n return async () => ({\n payload: {\n client_id: clientMetadata.client_id,\n client_assertion_type: CLIENT_ASSERTION_TYPE_JWT_BEARER,\n client_assertion: await key.createJwt(\n { alg },\n {\n // > The JWT MUST contain an \"iss\" (issuer) claim that contains a\n // > unique identifier for the entity that issued the JWT.\n iss: clientMetadata.client_id,\n // > For client authentication, the subject MUST be the\n // > \"client_id\" of the OAuth client.\n sub: clientMetadata.client_id,\n // > The JWT MUST contain an \"aud\" (audience) claim containing a value\n // > that identifies the authorization server as an intended audience.\n // > The token endpoint URL of the authorization server MAY be used as a\n // > value for an \"aud\" element to identify the authorization server as an\n // > intended audience of the JWT.\n aud: serverMetadata.issuer,\n // > The JWT MAY contain a \"jti\" (JWT ID) claim that provides a\n // > unique identifier for the token.\n jti: await runtime.generateNonce(),\n // > The JWT MAY contain an \"iat\" (issued at) claim that\n // > identifies the time at which the JWT was issued.\n iat: Math.floor(Date.now() / 1000),\n // > The JWT MUST contain an \"exp\" (expiration time) claim that\n // > limits the time window during which the JWT can be used.\n exp: Math.floor(Date.now() / 1000) + 60, // 1 minute\n },\n ),\n },\n })\n } catch (cause) {\n throw new AuthMethodUnsatisfiableError('Failed to load private key', {\n cause,\n })\n }\n }\n\n throw new AuthMethodUnsatisfiableError(\n // @ts-expect-error\n `Unsupported auth method ${authMethod.method}`,\n )\n}\n\nfunction supportedMethods(serverMetadata: OAuthAuthorizationServerMetadata) {\n return serverMetadata['token_endpoint_auth_methods_supported']\n}\n\nfunction supportedAlgs(serverMetadata: OAuthAuthorizationServerMetadata) {\n return (\n serverMetadata['token_endpoint_auth_signing_alg_values_supported'] ?? [\n // @NOTE If not specified, assume that the server supports the ES256\n // algorithm, as prescribed by the spec:\n //\n // > Clients and Authorization Servers currently must support the ES256\n // > cryptographic system [for client authentication].\n //\n // https://atproto.com/specs/oauth#confidential-client-authentication\n FALLBACK_ALG,\n ]\n )\n}\n","import {\n type OAuthProtectedResourceMetadata,\n oauthProtectedResourceMetadataSchema,\n} from '@atproto/oauth-types'\nimport {\n type Fetch,\n FetchResponseError,\n bindFetch,\n cancelBody,\n} from '@atproto-labs/fetch'\nimport {\n CachedGetter,\n type GetCachedOptions,\n type SimpleStore,\n type StoreErrorHandler,\n swallowStoreErrors,\n} from '@atproto-labs/simple-store'\nimport { contentMime } from './util.js'\n\nexport type { GetCachedOptions, OAuthProtectedResourceMetadata }\n\nexport type ProtectedResourceMetadataCache = SimpleStore<\n string,\n OAuthProtectedResourceMetadata | null\n>\n\nexport type OAuthProtectedResourceMetadataResolverConfig = {\n allowHttpResource?: boolean\n\n /**\n * Called when the metadata cache throws. The cache is best-effort: failures\n * are logged (by default) and degrade to a cache miss + refetch, rather than\n * being propagated.\n */\n onCacheError?: StoreErrorHandler\n}\n\n/**\n * @see {@link https://www.rfc-editor.org/rfc/rfc9728.html}\n */\nexport class OAuthProtectedResourceMetadataResolver extends CachedGetter<\n string,\n OAuthProtectedResourceMetadata | null\n> {\n private readonly fetch: Fetch\n private readonly allowHttpResource: boolean\n\n constructor(\n cache: ProtectedResourceMetadataCache,\n fetch: Fetch = globalThis.fetch,\n config?: OAuthProtectedResourceMetadataResolverConfig,\n ) {\n super(\n async (origin, options) => this.fetchMetadata(origin, options),\n swallowStoreErrors(cache, config?.onCacheError),\n )\n\n this.fetch = bindFetch(fetch)\n this.allowHttpResource = config?.allowHttpResource === true\n }\n\n async get(\n resource: string | URL,\n options?: GetCachedOptions,\n ): Promise {\n const { protocol, origin } = new URL(resource)\n\n if (protocol !== 'https:' && protocol !== 'http:') {\n throw new TypeError(\n `Invalid protected resource metadata URL protocol: ${protocol}`,\n )\n }\n\n if (protocol === 'http:' && !this.allowHttpResource) {\n throw new TypeError(\n `Unsecure resource metadata URL (${protocol}) only allowed in development and test environments`,\n )\n }\n\n return super.get(origin, options)\n }\n\n private async fetchMetadata(\n origin: string,\n options?: GetCachedOptions,\n ): Promise {\n const url = new URL(`/.well-known/oauth-protected-resource`, origin)\n const request = new Request(url, {\n signal: options?.signal,\n headers: { accept: 'application/json' },\n cache: options?.noCache ? 'no-cache' : undefined,\n redirect: 'manual', // response must be 200 OK\n })\n\n const response = await this.fetch(request)\n\n if (response.status === 404) {\n await cancelBody(response, 'log')\n return null\n }\n\n // https://www.rfc-editor.org/rfc/rfc9728.html#section-3.2\n if (response.status !== 200) {\n await cancelBody(response, 'log')\n throw await FetchResponseError.from(\n response,\n `Unexpected status code ${response.status} for \"${url}\"`,\n undefined,\n { cause: request },\n )\n }\n\n if (contentMime(response.headers) !== 'application/json') {\n await cancelBody(response, 'log')\n throw await FetchResponseError.from(\n response,\n `Unexpected content type for \"${url}\"`,\n undefined,\n { cause: request },\n )\n }\n\n const metadata = oauthProtectedResourceMetadataSchema.parse(\n await response.json(),\n )\n\n // https://www.rfc-editor.org/rfc/rfc9728.html#section-3.3\n if (metadata.resource !== origin) {\n throw new TypeError(`Invalid issuer ${metadata.resource}`)\n }\n\n return metadata\n }\n}\n","import { ZodError } from 'zod'\n\nexport class OAuthResolverError extends Error {\n constructor(message: string, options?: { cause?: unknown }) {\n super(message, options)\n }\n\n static from(cause: unknown, message?: string): OAuthResolverError {\n if (cause instanceof OAuthResolverError) return cause\n const validationReason =\n cause instanceof ZodError\n ? `${cause.errors[0].path} ${cause.errors[0].message}`\n : null\n const fullMessage =\n (message ?? `Unable to resolve identity`) +\n (validationReason ? ` (${validationReason})` : '')\n return new OAuthResolverError(fullMessage, {\n cause,\n })\n }\n}\n","import { extractPdsUrl } from '@atproto/did'\nimport {\n type OAuthAuthorizationServerMetadata,\n oauthIssuerIdentifierSchema,\n} from '@atproto/oauth-types'\nimport type {\n IdentityInfo,\n IdentityResolver,\n ResolveIdentityOptions,\n} from '@atproto-labs/identity-resolver'\nimport type {\n GetCachedOptions,\n OAuthAuthorizationServerMetadataResolver,\n} from './oauth-authorization-server-metadata-resolver.js'\nimport type { OAuthProtectedResourceMetadataResolver } from './oauth-protected-resource-metadata-resolver.js'\nimport { OAuthResolverError } from './oauth-resolver-error.js'\n\nexport type { GetCachedOptions }\nexport type ResolveOAuthOptions = GetCachedOptions & ResolveIdentityOptions\n\nexport class OAuthResolver {\n constructor(\n readonly identityResolver: IdentityResolver,\n readonly protectedResourceMetadataResolver: OAuthProtectedResourceMetadataResolver,\n readonly authorizationServerMetadataResolver: OAuthAuthorizationServerMetadataResolver,\n ) {}\n\n /**\n * @param input - A handle, DID, PDS URL or Entryway URL\n */\n public async resolve(\n input: string,\n options?: ResolveOAuthOptions,\n ): Promise<{\n identityInfo?: IdentityInfo\n metadata: OAuthAuthorizationServerMetadata\n }> {\n // Allow using an entryway, or PDS url, directly as login input (e.g.\n // when the user forgot their handle, or when the handle does not\n // resolve to a DID)\n return /^https?:\\/\\//.test(input)\n ? this.resolveFromService(input, options)\n : this.resolveFromIdentity(input, options)\n }\n\n /**\n * @note this method can be used to verify if a particular uri supports OAuth\n * based sign-in (for compatibility with legacy implementation).\n */\n public async resolveFromService(\n input: string,\n options?: ResolveOAuthOptions,\n ): Promise<{\n metadata: OAuthAuthorizationServerMetadata\n }> {\n try {\n // Assume first that input is a PDS URL (as required by ATPROTO)\n const metadata = await this.getResourceServerMetadata(input, options)\n return { metadata }\n } catch (err) {\n if (!options?.signal?.aborted && err instanceof OAuthResolverError) {\n try {\n // Fallback to trying to fetch as an issuer (Entryway)\n const result = oauthIssuerIdentifierSchema.safeParse(input)\n if (result.success) {\n const metadata = await this.getAuthorizationServerMetadata(\n result.data,\n options,\n )\n return { metadata }\n }\n } catch {\n // Fallback failed, throw original error\n }\n }\n\n throw err\n }\n }\n\n public async resolveFromIdentity(\n input: string,\n options?: ResolveOAuthOptions,\n ): Promise<{\n identityInfo: IdentityInfo\n metadata: OAuthAuthorizationServerMetadata\n pds: URL\n }> {\n const identityInfo = await this.resolveIdentity(input, options)\n\n options?.signal?.throwIfAborted()\n\n const pds = extractPdsUrl(identityInfo.didDoc)\n\n const metadata = await this.getResourceServerMetadata(pds, options)\n\n return { identityInfo, metadata, pds }\n }\n\n public async resolveIdentity(\n input: string,\n options?: ResolveIdentityOptions,\n ): Promise {\n try {\n return await this.identityResolver.resolve(input, options)\n } catch (cause) {\n throw OAuthResolverError.from(\n cause,\n `Failed to resolve identity: ${input}`,\n )\n }\n }\n\n public async getAuthorizationServerMetadata(\n issuer: string | URL,\n options?: GetCachedOptions,\n ): Promise {\n try {\n return await this.authorizationServerMetadataResolver.get(issuer, options)\n } catch (cause) {\n throw OAuthResolverError.from(\n cause,\n `Failed to resolve OAuth server metadata for issuer: ${issuer}`,\n )\n }\n }\n\n public async getResourceServerMetadata(\n pdsUrl: string | URL,\n options?: GetCachedOptions,\n ) {\n try {\n const rsMetadata = await this.protectedResourceMetadataResolver.get(\n pdsUrl,\n options,\n )\n\n if (!rsMetadata) {\n return this.getAuthorizationServerMetadata(pdsUrl, options)\n }\n\n // ATPROTO requires one, and only one, authorization server entry\n if (rsMetadata.authorization_servers?.length !== 1) {\n throw new OAuthResolverError(\n rsMetadata.authorization_servers?.length\n ? `Unable to determine authorization server for PDS: ${pdsUrl}`\n : `No authorization servers found for PDS: ${pdsUrl}`,\n )\n }\n\n const issuer = rsMetadata.authorization_servers![0]!\n\n options?.signal?.throwIfAborted()\n\n const asMetadata = await this.getAuthorizationServerMetadata(\n issuer,\n options,\n )\n\n // https://www.rfc-editor.org/rfc/rfc9728.html#section-4\n if (asMetadata.protected_resources) {\n if (!asMetadata.protected_resources.includes(rsMetadata.resource)) {\n throw new OAuthResolverError(\n `PDS \"${pdsUrl}\" not protected by issuer \"${issuer}\"`,\n )\n }\n }\n\n return asMetadata\n } catch (cause) {\n throw OAuthResolverError.from(\n cause,\n `Failed to resolve OAuth server metadata for resource: ${pdsUrl}`,\n )\n }\n }\n}\n","export class TokenRefreshError extends Error {\n constructor(\n public readonly sub: string,\n message: string,\n options?: { cause?: unknown },\n ) {\n super(message, options)\n }\n}\n","import { base64url } from 'multiformats/bases/base64'\nimport type { Key } from '@atproto/jwk'\nimport {\n type Fetch,\n type FetchContext,\n cancelBody,\n peekJson,\n} from '@atproto-labs/fetch'\nimport type { SimpleStore } from '@atproto-labs/simple-store'\n\n// \"undefined\" in non https environments or environments without crypto\nconst subtle = globalThis.crypto?.subtle as SubtleCrypto | undefined\n\nconst ReadableStream = globalThis.ReadableStream as\n typeof globalThis.ReadableStream | undefined\n\nexport type DpopFetchWrapperOptions = {\n key: Key\n nonces: SimpleStore\n supportedAlgs?: string[]\n sha256?: (input: string) => Promise\n\n /**\n * Is the intended server an authorization server (true) or a resource server\n * (false)? Setting this may allow to avoid parsing the response body to\n * determine the dpop-nonce.\n *\n * @default undefined\n */\n isAuthServer?: boolean\n fetch?: Fetch\n}\n\nexport function dpopFetchWrapper({\n key,\n // @TODO we should provide a default based on specs\n supportedAlgs,\n nonces,\n sha256 = typeof subtle !== 'undefined' ? subtleSha256 : undefined,\n isAuthServer,\n fetch = globalThis.fetch,\n}: DpopFetchWrapperOptions): Fetch {\n if (!sha256) {\n throw new TypeError(\n `crypto.subtle is not available in this environment. Please provide a sha256 function.`,\n )\n }\n\n // Throws if negotiation fails\n const alg = negotiateAlg(key, supportedAlgs)\n\n return async function (this: C, input, init) {\n const request: Request =\n init == null && input instanceof Request\n ? input\n : new Request(input, init)\n\n const authorizationHeader = request.headers.get('Authorization')\n const ath = authorizationHeader?.startsWith('DPoP ')\n ? await sha256(authorizationHeader.slice(5))\n : undefined\n\n const { origin } = new URL(request.url)\n\n const htm = request.method\n const htu = buildHtu(request.url)\n\n let initNonce: string | undefined\n try {\n initNonce = await nonces.get(origin)\n } catch {\n // Ignore get errors, we will just not send a nonce\n }\n\n const initProof = await buildProof(key, alg, htm, htu, initNonce, ath)\n request.headers.set('DPoP', initProof)\n\n const initResponse = await fetch.call(this, request)\n\n // Make sure the response body is consumed. Either by the caller (when the\n // response is returned), of if an error is thrown (catch block).\n\n const nextNonce = initResponse.headers.get('DPoP-Nonce')\n if (!nextNonce || nextNonce === initNonce) {\n // No nonce was returned or it is the same as the one we sent. No need to\n // update the nonce store, or retry the request.\n return initResponse\n }\n\n // Store the fresh nonce for future requests\n try {\n await nonces.set(origin, nextNonce)\n } catch {\n // Ignore set errors\n }\n\n const shouldRetry = await isUseDpopNonceError(initResponse, isAuthServer)\n if (!shouldRetry) {\n // Not a \"use_dpop_nonce\" error, so there is no need to retry\n return initResponse\n }\n\n // If the input stream was already consumed, we cannot retry the request. A\n // solution would be to clone() the request but that would bufferize the\n // entire stream in memory which can lead to memory starvation. Instead, we\n // will return the original response and let the calling code handle retries.\n\n if (input === request) {\n // The input request body was consumed. We cannot retry the request.\n return initResponse\n }\n\n if (ReadableStream && init?.body instanceof ReadableStream) {\n // The init body was consumed. We cannot retry the request.\n return initResponse\n }\n\n // We will now retry the request with the fresh nonce.\n\n // The initial response body must be consumed (see cancelBody's doc).\n await cancelBody(initResponse, 'log')\n\n const nextProof = await buildProof(key, alg, htm, htu, nextNonce, ath)\n const nextRequest = new Request(input, init)\n nextRequest.headers.set('DPoP', nextProof)\n\n const retryRequest = await fetch.call(this, nextRequest)\n const retryNonce = retryRequest.headers.get('DPoP-Nonce')\n if (!retryNonce || retryNonce === initNonce) {\n // No nonce was returned or it is the same as the one we sent. No need to\n // update the nonce store, or retry the request.\n return retryRequest\n }\n\n // Store the fresh nonce for future requests\n try {\n await nonces.set(origin, retryNonce)\n } catch {\n // Ignore set errors\n }\n\n return retryRequest\n }\n}\n\n/**\n * Strip query and fragment\n *\n * @see {@link https://www.rfc-editor.org/rfc/rfc9449.html#section-4.2-4.6}\n */\nfunction buildHtu(url: string): string {\n const fragmentIndex = url.indexOf('#')\n const queryIndex = url.indexOf('?')\n\n const end =\n fragmentIndex === -1\n ? queryIndex\n : queryIndex === -1\n ? fragmentIndex\n : Math.min(fragmentIndex, queryIndex)\n\n return end === -1 ? url : url.slice(0, end)\n}\n\nasync function buildProof(\n key: Key,\n alg: string,\n htm: string,\n htu: string,\n nonce?: string,\n ath?: string,\n) {\n const jwk = key.bareJwk\n if (!jwk) {\n throw new Error('Only asymmetric keys can be used as DPoP proofs')\n }\n\n const now = Math.floor(Date.now() / 1e3)\n\n return key.createJwt(\n // https://datatracker.ietf.org/doc/html/rfc9449#section-4.2\n {\n alg,\n typ: 'dpop+jwt',\n jwk,\n },\n {\n iat: now,\n // Any collision will cause the request to be rejected by the server. no biggie.\n jti: Math.random().toString(36).slice(2),\n htm,\n htu,\n nonce,\n ath,\n },\n )\n}\n\nasync function isUseDpopNonceError(\n response: Response,\n isAuthServer?: boolean,\n): Promise {\n // https://datatracker.ietf.org/doc/html/rfc6750#section-3\n // https://datatracker.ietf.org/doc/html/rfc9449#name-resource-server-provided-no\n if (isAuthServer === undefined || isAuthServer === false) {\n if (response.status === 401) {\n const wwwAuth = response.headers.get('WWW-Authenticate')\n if (wwwAuth?.startsWith('DPoP')) {\n return wwwAuth.includes('error=\"use_dpop_nonce\"')\n }\n }\n }\n\n // https://datatracker.ietf.org/doc/html/rfc9449#name-authorization-server-provid\n if (isAuthServer === undefined || isAuthServer === true) {\n if (response.status === 400) {\n try {\n const json = await peekJson(response, 10 * 1024)\n return (json as any)?.['error'] === 'use_dpop_nonce'\n } catch {\n // Response too big (to be \"use_dpop_nonce\" error) or invalid JSON\n return false\n }\n }\n }\n\n return false\n}\n\nfunction negotiateAlg(key: Key, supportedAlgs: string[] | undefined): string {\n if (supportedAlgs) {\n // Use order of supportedAlgs as preference\n const alg = supportedAlgs.find((a) => key.algorithms.includes(a))\n if (alg) return alg\n } else {\n const [alg] = key.algorithms\n if (alg) return alg\n }\n\n throw new Error('Key does not match any alg supported by the server')\n}\n\nasync function subtleSha256(input: string): Promise {\n if (subtle == null) {\n throw new Error(\n `crypto.subtle is not available in this environment. Please provide a sha256 function.`,\n )\n }\n\n const bytes = new TextEncoder().encode(input)\n const digest = await subtle.digest('SHA-256', bytes)\n const digestBytes = new Uint8Array(digest)\n return base64url.baseEncode(digestBytes)\n}\n","import type { Json } from '@atproto-labs/fetch'\nimport { ifString } from './util.js'\n\nexport class OAuthResponseError extends Error {\n readonly error?: string\n readonly errorDescription?: string\n\n constructor(\n public readonly response: Response,\n public readonly payload: Json,\n ) {\n const error = ifString((payload as any)?.['error'])\n const errorDescription = ifString((payload as any)?.['error_description'])\n\n const messageError = error ? `\"${error}\"` : 'unknown'\n const messageDesc = errorDescription ? `: ${errorDescription}` : ''\n const message = `OAuth ${messageError} error${messageDesc}`\n\n super(message)\n\n this.error = error\n this.errorDescription = errorDescription\n }\n\n get status() {\n return this.response.status\n }\n\n get headers() {\n return this.response.headers\n }\n}\n","import type { AtprotoDid } from '@atproto/did'\nimport type { Key, Keyset } from '@atproto/jwk'\nimport {\n type AtprotoOAuthScope,\n type AtprotoOAuthTokenResponse,\n type OAuthAuthorizationRequestPar,\n type OAuthAuthorizationServerMetadata,\n type OAuthEndpointName,\n type OAuthParResponse,\n type OAuthRedirectUri,\n type OAuthTokenRequest,\n atprotoOAuthTokenResponseSchema,\n oauthParResponseSchema,\n} from '@atproto/oauth-types'\nimport {\n type Fetch,\n type Json,\n bindFetch,\n fetchJsonProcessor,\n} from '@atproto-labs/fetch'\nimport type { SimpleStore } from '@atproto-labs/simple-store'\nimport { TokenRefreshError } from './errors/token-refresh-error.js'\nimport { dpopFetchWrapper } from './fetch-dpop.js'\nimport {\n type ClientAuthMethod,\n type ClientCredentialsFactory,\n createClientCredentialsFactory,\n} from './oauth-client-auth.js'\nimport type { OAuthResolver } from './oauth-resolver.js'\nimport { OAuthResponseError } from './oauth-response-error.js'\nimport type { Runtime } from './runtime.js'\nimport type { ClientMetadata } from './types.js'\nimport { timeoutSignal } from './util.js'\n\nexport type { AtprotoDid, AtprotoOAuthScope, AtprotoOAuthTokenResponse }\n\nexport type TokenSet = {\n iss: string\n sub: AtprotoDid\n aud: string\n scope: AtprotoOAuthScope\n\n refresh_token?: string\n access_token: string\n token_type: 'DPoP'\n /** ISO Date */\n expires_at?: string\n}\n\nexport type DpopNonceCache = SimpleStore\n\nexport class OAuthServerAgent {\n protected dpopFetch: Fetch\n protected clientCredentialsFactory: ClientCredentialsFactory\n\n /**\n * @throws see {@link createClientCredentialsFactory}\n */\n constructor(\n readonly authMethod: ClientAuthMethod,\n readonly dpopKey: Key,\n readonly serverMetadata: OAuthAuthorizationServerMetadata,\n readonly clientMetadata: ClientMetadata,\n readonly dpopNonces: DpopNonceCache,\n readonly oauthResolver: OAuthResolver,\n readonly runtime: Runtime,\n readonly keyset?: Keyset,\n fetch?: Fetch,\n ) {\n this.clientCredentialsFactory = createClientCredentialsFactory(\n authMethod,\n serverMetadata,\n clientMetadata,\n runtime,\n keyset,\n )\n\n this.dpopFetch = dpopFetchWrapper({\n fetch: bindFetch(fetch),\n key: dpopKey,\n supportedAlgs: serverMetadata.dpop_signing_alg_values_supported,\n sha256: async (v) => runtime.sha256(v),\n nonces: dpopNonces,\n isAuthServer: true,\n })\n }\n\n get issuer() {\n return this.serverMetadata.issuer\n }\n\n async revoke(token: string) {\n try {\n await this.request('revocation', { token })\n } catch {\n // Don't care\n }\n }\n\n async exchangeCode(\n code: string,\n codeVerifier?: string,\n redirectUri?: OAuthRedirectUri,\n ): Promise {\n const now = Date.now()\n\n const tokenResponse = await this.request('token', {\n grant_type: 'authorization_code',\n // redirectUri should always be passed by the calling code, but if it is\n // not, default to the first redirect_uri registered for the client:\n redirect_uri: redirectUri ?? this.clientMetadata.redirect_uris[0],\n code,\n code_verifier: codeVerifier,\n })\n\n try {\n // /!\\ IMPORTANT /!\\\n //\n // The tokenResponse MUST always be valid before the \"sub\" it contains\n // can be trusted (see Atproto's OAuth spec for details).\n const aud = await this.verifyIssuer(tokenResponse.sub)\n\n return {\n aud,\n sub: tokenResponse.sub,\n iss: this.issuer,\n\n scope: tokenResponse.scope,\n refresh_token: tokenResponse.refresh_token,\n access_token: tokenResponse.access_token,\n token_type: tokenResponse.token_type,\n\n expires_at:\n typeof tokenResponse.expires_in === 'number'\n ? new Date(now + tokenResponse.expires_in * 1000).toISOString()\n : undefined,\n }\n } catch (err) {\n await this.revoke(tokenResponse.access_token)\n\n throw err\n }\n }\n\n async refresh(tokenSet: TokenSet): Promise {\n if (!tokenSet.refresh_token) {\n throw new TokenRefreshError(tokenSet.sub, 'No refresh token available')\n }\n\n // /!\\ IMPORTANT /!\\\n //\n // The \"sub\" MUST be a DID, whose issuer authority is indeed the server we\n // are trying to obtain credentials from. Note that we are doing this\n // *before* we actually try to refresh the token:\n // 1) To avoid unnecessary refresh\n // 2) So that the refresh is the last async operation, ensuring as few\n // async operations happen before the result gets a chance to be stored.\n const aud = await this.verifyIssuer(tokenSet.sub)\n\n const now = Date.now()\n\n const tokenResponse = await this.request('token', {\n grant_type: 'refresh_token',\n refresh_token: tokenSet.refresh_token,\n })\n\n return {\n aud,\n sub: tokenSet.sub,\n iss: this.issuer,\n\n scope: tokenResponse.scope,\n refresh_token: tokenResponse.refresh_token,\n access_token: tokenResponse.access_token,\n token_type: tokenResponse.token_type,\n\n expires_at:\n typeof tokenResponse.expires_in === 'number'\n ? new Date(now + tokenResponse.expires_in * 1000).toISOString()\n : undefined,\n }\n }\n\n /**\n * VERY IMPORTANT ! Always call this to process token responses.\n *\n * Whenever an OAuth token response is received, we **MUST** verify that the\n * \"sub\" is a DID, whose issuer authority is indeed the server we just\n * obtained credentials from. This check is a critical step to actually be\n * able to use the \"sub\" (DID) as being the actual user's identifier.\n *\n * @returns The user's PDS URL (the resource server for the user)\n */\n protected async verifyIssuer(sub: AtprotoDid): Promise {\n const resolved = await this.oauthResolver.resolveFromIdentity(sub, {\n noCache: true,\n allowStale: false,\n signal: timeoutSignal(10e3),\n })\n\n if (this.issuer !== resolved.metadata.issuer) {\n // Best case scenario; the user switched PDS. Worst case scenario; a bad\n // actor is trying to impersonate a user. In any case, we must not allow\n // this token to be used.\n throw new TypeError('Issuer mismatch')\n }\n\n return resolved.pds.href\n }\n\n async request(\n endpoint: Endpoint,\n payload: Endpoint extends 'token'\n ? OAuthTokenRequest\n : Endpoint extends 'pushed_authorization_request'\n ? OAuthAuthorizationRequestPar\n : Record,\n ): Promise<\n Endpoint extends 'token'\n ? AtprotoOAuthTokenResponse\n : Endpoint extends 'pushed_authorization_request'\n ? OAuthParResponse\n : Json\n >\n async request(\n endpoint: OAuthEndpointName,\n payload: Record,\n ): Promise {\n const url = this.serverMetadata[`${endpoint}_endpoint`]\n if (!url) throw new Error(`No ${endpoint} endpoint available`)\n\n const auth = await this.clientCredentialsFactory()\n\n // https://datatracker.ietf.org/doc/html/draft-ietf-oauth-v2-1-13#section-3.2.2\n // https://datatracker.ietf.org/doc/html/rfc7009#section-2.1\n // https://datatracker.ietf.org/doc/html/rfc7662#section-2.1\n // https://datatracker.ietf.org/doc/html/rfc9126#section-2\n const { response, json } = await this.dpopFetch(url, {\n method: 'POST',\n headers: {\n ...auth.headers,\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n body: wwwFormUrlEncode({ ...payload, ...auth.payload }),\n }).then(fetchJsonProcessor())\n\n if (response.ok) {\n switch (endpoint) {\n case 'token':\n return atprotoOAuthTokenResponseSchema.parse(json)\n case 'pushed_authorization_request':\n return oauthParResponseSchema.parse(json)\n default:\n return json\n }\n } else {\n throw new OAuthResponseError(response, json)\n }\n }\n}\n\nfunction wwwFormUrlEncode(payload: Record) {\n return new URLSearchParams(\n Object.entries(payload)\n .filter(entryHasDefinedValue)\n .map(stringifyEntryValue),\n ).toString()\n}\n\nfunction entryHasDefinedValue(\n entry: [string, unknown],\n): entry is [string, null | NonNullable] {\n return entry[1] !== undefined\n}\n\nfunction stringifyEntryValue(entry: [string, unknown]): [string, string] {\n const name = entry[0]\n const value = entry[1]\n\n switch (typeof value) {\n case 'string':\n return [name, value]\n case 'number':\n case 'boolean':\n return [name, String(value)]\n default: {\n const enc = JSON.stringify(value)\n if (enc === undefined) {\n throw new Error(`Unsupported value type for ${name}: ${String(value)}`)\n }\n return [name, enc]\n }\n }\n}\n","import type { Key, Keyset } from '@atproto/jwk'\nimport type { OAuthAuthorizationServerMetadata } from '@atproto/oauth-types'\nimport type { Fetch } from '@atproto-labs/fetch'\nimport type { GetCachedOptions } from './oauth-authorization-server-metadata-resolver.js'\nimport type { ClientAuthMethod } from './oauth-client-auth.js'\nimport type { OAuthResolver } from './oauth-resolver.js'\nimport { type DpopNonceCache, OAuthServerAgent } from './oauth-server-agent.js'\nimport type { Runtime } from './runtime.js'\nimport type { ClientMetadata } from './types.js'\n\nexport class OAuthServerFactory {\n constructor(\n readonly clientMetadata: ClientMetadata,\n readonly runtime: Runtime,\n readonly resolver: OAuthResolver,\n readonly fetch: Fetch,\n readonly keyset: Keyset | undefined,\n readonly dpopNonceCache: DpopNonceCache,\n ) {}\n\n /**\n * @param authMethod `undefined` means that we are restoring a session that\n * was created before we started storing the `authMethod` in the session. In\n * that case, we will use the first key from the keyset.\n *\n * Support for this might be removed in the future.\n *\n * @throws see {@link OAuthServerFactory.fromMetadata}\n */\n async fromIssuer(\n issuer: string,\n authMethod: ClientAuthMethod,\n dpopKey: Key,\n options?: GetCachedOptions,\n ) {\n const serverMetadata = await this.resolver.getAuthorizationServerMetadata(\n issuer,\n options,\n )\n\n return this.fromMetadata(serverMetadata, authMethod, dpopKey)\n }\n\n /**\n * @throws see {@link OAuthServerAgent}\n */\n async fromMetadata(\n serverMetadata: OAuthAuthorizationServerMetadata,\n authMethod: ClientAuthMethod,\n dpopKey: Key,\n ) {\n return new OAuthServerAgent(\n authMethod,\n dpopKey,\n serverMetadata,\n this.clientMetadata,\n this.dpopNonceCache,\n this.resolver,\n this.runtime,\n this.keyset,\n this.fetch,\n )\n }\n}\n","export class TokenInvalidError extends Error {\n constructor(\n public readonly sub: string,\n message = `The session for \"${sub}\" is invalid`,\n options?: { cause?: unknown },\n ) {\n super(message, options)\n }\n}\n","import type { AtprotoDid } from '@atproto/did'\nimport type {\n AtprotoOAuthScope,\n OAuthAuthorizationServerMetadata,\n} from '@atproto/oauth-types'\nimport { type Fetch, bindFetch } from '@atproto-labs/fetch'\nimport { TokenInvalidError } from './errors/token-invalid-error.js'\nimport { TokenRevokedError } from './errors/token-revoked-error.js'\nimport { dpopFetchWrapper } from './fetch-dpop.js'\nimport type { OAuthServerAgent, TokenSet } from './oauth-server-agent.js'\nimport type { SessionGetter } from './session-getter.js'\n\nconst ReadableStream = globalThis.ReadableStream as\n typeof globalThis.ReadableStream | undefined\n\nexport type { AtprotoDid, AtprotoOAuthScope }\nexport type TokenInfo = {\n expiresAt?: Date\n expired?: boolean\n scope: AtprotoOAuthScope\n iss: string\n aud: string\n sub: AtprotoDid\n}\n\nexport class OAuthSession {\n protected dpopFetch: Fetch\n\n constructor(\n public readonly server: OAuthServerAgent,\n public readonly sub: AtprotoDid,\n private readonly sessionGetter: SessionGetter,\n fetch: Fetch = globalThis.fetch,\n ) {\n this.dpopFetch = dpopFetchWrapper({\n fetch: bindFetch(fetch),\n key: server.dpopKey,\n supportedAlgs: server.serverMetadata.dpop_signing_alg_values_supported,\n sha256: async (v) => server.runtime.sha256(v),\n nonces: server.dpopNonces,\n isAuthServer: false,\n })\n }\n\n get did(): AtprotoDid {\n return this.sub\n }\n\n get serverMetadata(): Readonly {\n return this.server.serverMetadata\n }\n\n /**\n * @param refresh When `true`, the credentials will be refreshed even if they\n * are not expired. When `false`, the credentials will not be refreshed even\n * if they are expired. When `undefined`, the credentials will be refreshed\n * if, and only if, they are (about to be) expired. Defaults to `undefined`.\n */\n protected async getTokenSet(refresh: boolean | 'auto'): Promise {\n const { tokenSet } = await this.sessionGetter.getSession(this.sub, refresh)\n\n return tokenSet\n }\n\n async getTokenInfo(refresh: boolean | 'auto' = 'auto'): Promise {\n const tokenSet = await this.getTokenSet(refresh)\n const expiresAt =\n tokenSet.expires_at == null ? undefined : new Date(tokenSet.expires_at)\n\n return {\n expiresAt,\n get expired() {\n return expiresAt == null\n ? undefined\n : expiresAt.getTime() < Date.now() - 5e3\n },\n scope: tokenSet.scope,\n iss: tokenSet.iss,\n aud: tokenSet.aud,\n sub: tokenSet.sub,\n }\n }\n\n async signOut(): Promise {\n try {\n const tokenSet = await this.getTokenSet(false)\n await this.server.revoke(tokenSet.access_token)\n } finally {\n await this.sessionGetter.delStored(\n this.sub,\n new TokenRevokedError(this.sub),\n )\n }\n }\n\n async fetchHandler(pathname: string, init?: RequestInit): Promise {\n // This will try and refresh the token if it is known to be expired\n const tokenSet = await this.getTokenSet('auto')\n\n const initialUrl = new URL(pathname, tokenSet.aud satisfies string)\n const initialAuth = `${tokenSet.token_type} ${tokenSet.access_token}`\n\n const headers = new Headers(init?.headers)\n headers.set('Authorization', initialAuth)\n\n const initialResponse = await this.dpopFetch(initialUrl, {\n ...init,\n headers,\n })\n\n // If the token is not expired, we don't need to refresh it\n if (!isInvalidTokenResponse(initialResponse)) {\n return initialResponse\n }\n\n let tokenSetFresh: TokenSet\n try {\n // Force a refresh\n tokenSetFresh = await this.getTokenSet(true)\n } catch (err) {\n return initialResponse\n }\n\n // The stream was already consumed. We cannot retry the request. A solution\n // would be to tee() the input stream but that would bufferize the entire\n // stream in memory which can lead to memory starvation. Instead, we will\n // return the original response and let the calling code handle retries.\n if (ReadableStream && init?.body instanceof ReadableStream) {\n return initialResponse\n }\n\n const finalAuth = `${tokenSetFresh.token_type} ${tokenSetFresh.access_token}`\n const finalUrl = new URL(pathname, tokenSetFresh.aud)\n\n headers.set('Authorization', finalAuth)\n\n const finalResponse = await this.dpopFetch(finalUrl, { ...init, headers })\n\n // The token was successfully refreshed, but is still not accepted by the\n // resource server. This might be due to the resource server not accepting\n // credentials from the authorization server (e.g. because some migration\n // occurred). Any ways, there is no point in keeping the session.\n if (isInvalidTokenResponse(finalResponse)) {\n // @TODO Is there a \"softer\" way to handle this, e.g. by marking the\n // session as \"expired\" in the session store, allowing the user to trigger\n // a new login (using login_hint)?\n await this.sessionGetter.delStored(\n this.sub,\n new TokenInvalidError(this.sub),\n )\n }\n\n return finalResponse\n }\n}\n\n/**\n * @see {@link https://datatracker.ietf.org/doc/html/rfc6750#section-3}\n * @see {@link https://datatracker.ietf.org/doc/html/rfc9449#name-resource-server-provided-no}\n */\nfunction isInvalidTokenResponse(response: Response) {\n if (response.status !== 401) return false\n const wwwAuth = response.headers.get('WWW-Authenticate')\n return (\n wwwAuth != null &&\n (wwwAuth.startsWith('Bearer ') || wwwAuth.startsWith('DPoP ')) &&\n wwwAuth.includes('error=\"invalid_token\"')\n )\n}\n","import { base64url } from 'multiformats/bases/base64'\nimport type { Jwk, Key } from '@atproto/jwk'\nimport { requestLocalLock } from './lock.js'\nimport type {\n RuntimeImplementation,\n RuntimeLock,\n} from './runtime-implementation.js'\n\nexport class Runtime {\n readonly hasImplementationLock: boolean\n readonly usingLock: RuntimeLock\n\n constructor(protected implementation: RuntimeImplementation) {\n const { requestLock } = implementation\n\n this.hasImplementationLock = requestLock != null\n this.usingLock =\n requestLock?.bind(implementation) ||\n // Falling back to a local lock\n requestLocalLock\n }\n\n public async generateKey(algs: string[]): Promise {\n const algsSorted = Array.from(algs).sort(compareAlgos)\n return this.implementation.createKey(algsSorted)\n }\n\n public async sha256(text: string): Promise {\n const bytes = new TextEncoder().encode(text)\n const digest = await this.implementation.digest(bytes, { name: 'sha256' })\n return base64url.baseEncode(digest)\n }\n\n public async generateNonce(length = 16): Promise {\n const bytes = await this.implementation.getRandomValues(length)\n return base64url.baseEncode(bytes)\n }\n\n public async generatePKCE(byteLength?: number) {\n const verifier = await this.generateVerifier(byteLength)\n return {\n verifier,\n challenge: await this.sha256(verifier),\n method: 'S256' as const,\n }\n }\n\n public async calculateJwkThumbprint(jwk: Jwk) {\n const components = extractJktComponents(jwk)\n const data = JSON.stringify(components)\n return this.sha256(data)\n }\n\n /**\n * @see {@link https://datatracker.ietf.org/doc/html/rfc7636#section-4.1}\n * @note It is RECOMMENDED that the output of a suitable random number generator\n * be used to create a 32-octet sequence. The octet sequence is then\n * base64url-encoded to produce a 43-octet URL safe string to use as the code\n * verifier.\n */\n protected async generateVerifier(byteLength = 32) {\n if (byteLength < 32 || byteLength > 96) {\n throw new TypeError('Invalid code_verifier length')\n }\n const bytes = await this.implementation.getRandomValues(byteLength)\n return base64url.baseEncode(bytes)\n }\n}\n\nfunction extractJktComponents(jwk: Record) {\n const get = (field: string) => {\n const value = jwk[field]\n if (typeof value !== 'string' || !value) {\n throw new TypeError(`\"${field}\" Parameter missing or invalid`)\n }\n return value\n }\n\n switch (jwk.kty) {\n case 'EC':\n return { crv: get('crv'), kty: get('kty'), x: get('x'), y: get('y') }\n case 'OKP':\n return { crv: get('crv'), kty: get('kty'), x: get('x') }\n case 'RSA':\n return { e: get('e'), kty: get('kty'), n: get('n') }\n case 'oct':\n return { k: get('k'), kty: get('kty') }\n default:\n throw new TypeError('\"kty\" (Key Type) Parameter missing or unsupported')\n }\n}\n\n/**\n * 256K > ES (256 > 384 > 512) > PS (256 > 384 > 512) > RS (256 > 384 > 512) > other (in original order)\n */\nfunction compareAlgos(a: string, b: string): number {\n if (a === 'ES256K') return -1\n if (b === 'ES256K') return 1\n\n for (const prefix of ['ES', 'PS', 'RS']) {\n if (a.startsWith(prefix)) {\n if (b.startsWith(prefix)) {\n const aLen = parseInt(a.slice(2, 5))\n const bLen = parseInt(b.slice(2, 5))\n\n // Prefer shorter key lengths\n return aLen - bLen\n }\n return -1\n } else if (b.startsWith(prefix)) {\n return 1\n }\n }\n\n // Don't know how to compare, keep original order\n return 0\n}\n","import type { AtprotoDid } from '@atproto/did'\nimport type { Key } from '@atproto/jwk'\nimport {\n CachedGetter,\n type GetCachedOptions,\n type SimpleStore,\n} from '@atproto-labs/simple-store'\nimport { AuthMethodUnsatisfiableError } from './errors/auth-method-unsatisfiable-error.js'\nimport { TokenInvalidError } from './errors/token-invalid-error.js'\nimport { TokenRefreshError } from './errors/token-refresh-error.js'\nimport { TokenRevokedError } from './errors/token-revoked-error.js'\nimport type { ClientAuthMethod } from './oauth-client-auth.js'\nimport { OAuthResponseError } from './oauth-response-error.js'\nimport type { TokenSet } from './oauth-server-agent.js'\nimport type { OAuthServerFactory } from './oauth-server-factory.js'\nimport type { Runtime } from './runtime.js'\nimport { combineSignals, timeoutSignal } from './util.js'\n\nexport type Session = {\n dpopKey: Key\n authMethod: ClientAuthMethod\n tokenSet: TokenSet\n}\n\nexport type SessionStore = SimpleStore\n\nexport type SessionGetterOptions = {\n onSessionUpdated?: (sub: AtprotoDid, session: Session) => void\n onSessionDeleted?: (\n sub: AtprotoDid,\n cause: TokenRefreshError | TokenRevokedError | TokenInvalidError | unknown,\n ) => void\n}\n\nexport function isExpectedSessionError(err: unknown) {\n return (\n err instanceof TokenRefreshError ||\n err instanceof TokenRevokedError ||\n err instanceof TokenInvalidError ||\n err instanceof AuthMethodUnsatisfiableError ||\n // The stored session is invalid (e.g. missing properties) and cannot\n // be used properly\n err instanceof TypeError\n )\n}\n\n/**\n * There are several advantages to wrapping the sessionStore in a (single)\n * CachedGetter, the main of which is that the cached getter will ensure that at\n * most one fresh call is ever being made. Another advantage, is that it\n * contains the logic for reading from the cache which, if the cache is based on\n * localStorage/indexedDB, will sync across multiple tabs (for a given sub).\n */\nexport class SessionGetter extends CachedGetter {\n readonly #serverFactory: OAuthServerFactory\n readonly #runtime: Runtime\n readonly #options: SessionGetterOptions\n\n constructor(\n sessionStore: SessionStore,\n serverFactory: OAuthServerFactory,\n runtime: Runtime,\n options: SessionGetterOptions = {},\n ) {\n super(\n async (sub, { signal }, storedSession) => {\n // There needs to be a previous session to be able to refresh. If\n // storedSession is undefined, it means that the store does not contain\n // a session for the given sub.\n if (storedSession === undefined) {\n // Because the session is not in the store, this.delStored() method\n // will not be called by the CachedGetter class (because there is\n // nothing to delete). This would typically happen if there is no\n // synchronization mechanism between instances of this class. Let's\n // make sure an event is dispatched here if this occurs.\n const msg = 'The session was deleted by another process'\n const cause = new TokenRefreshError(sub, msg)\n await options.onSessionDeleted?.call(null, sub, cause)\n throw cause\n }\n\n // @NOTE Throwing a TokenRefreshError (or any other error class defined\n // in the deleteOnError options) will result in this.delStored() being\n // called.\n\n const { dpopKey, authMethod, tokenSet } = storedSession\n\n if (sub !== tokenSet.sub) {\n // Fool-proofing (e.g. against invalid session storage)\n throw new TokenRefreshError(sub, 'Stored session sub mismatch')\n }\n\n if (!tokenSet.refresh_token) {\n throw new TokenRefreshError(sub, 'No refresh token available')\n }\n\n const server = await serverFactory.fromIssuer(\n tokenSet.iss,\n authMethod,\n dpopKey,\n { signal },\n )\n\n // Because refresh tokens can only be used once, we must not use the\n // \"signal\" to abort the refresh, or throw any abort error beyond this\n // point. Any thrown error beyond this point will prevent the\n // TokenGetter from obtaining, and storing, the new token set,\n // effectively rendering the currently saved session unusable.\n signal?.throwIfAborted()\n\n try {\n const newTokenSet = await server.refresh(tokenSet)\n\n if (sub !== newTokenSet.sub) {\n // The server returned another sub. Was the tokenSet manipulated?\n throw new TokenRefreshError(sub, 'Token set sub mismatch')\n }\n\n return {\n dpopKey,\n tokenSet: newTokenSet,\n authMethod: server.authMethod,\n }\n } catch (cause) {\n // Since refresh tokens can only be used once, we might run into\n // concurrency issues if multiple instances (e.g. browser tabs) are\n // trying to refresh the same token simultaneously. The chances of\n // this happening when multiple instances are started simultaneously\n // is reduced by randomizing the expiry time (see isStale() below).\n // The best solution is to use a mutex/lock to ensure that only one\n // instance is refreshing the token at a time (runtime.usingLock) but\n // that is not always possible. Let's try to recover from concurrency\n // issues, or force the session to be deleted by throwing a\n // TokenRefreshError.\n if (\n cause instanceof OAuthResponseError &&\n cause.status === 400 &&\n cause.error === 'invalid_grant'\n ) {\n // In case there is no lock implementation in the runtime, we will\n // wait for a short time to give the other concurrent instances a\n // chance to finish their refreshing of the token. If a concurrent\n // refresh did occur, we will pretend that this one succeeded.\n if (!runtime.hasImplementationLock) {\n await new Promise((r) => setTimeout(r, 1000))\n\n const stored = await this.getStored(sub)\n if (stored === undefined) {\n // A concurrent refresh occurred and caused the session to be\n // deleted (for a reason we can't know at this point).\n\n // Using a distinct error message mainly for debugging\n // purposes. Also, throwing a TokenRefreshError to trigger\n // deletion through the deleteOnError callback.\n const msg = 'The session was deleted by another process'\n throw new TokenRefreshError(sub, msg, { cause })\n } else if (\n stored.tokenSet.access_token !== tokenSet.access_token ||\n stored.tokenSet.refresh_token !== tokenSet.refresh_token\n ) {\n // A concurrent refresh occurred. Pretend this one succeeded.\n return stored\n } else {\n // There were no concurrent refresh. The token is (likely)\n // simply no longer valid.\n }\n }\n\n // Make sure the session gets deleted from the store\n const msg = cause.errorDescription ?? 'The session was revoked'\n throw new TokenRefreshError(sub, msg, { cause })\n }\n\n throw cause\n }\n },\n sessionStore,\n {\n isStale: (sub, { tokenSet }) => {\n return (\n tokenSet.expires_at != null &&\n new Date(tokenSet.expires_at).getTime() <\n Date.now() +\n // Add some lee way to ensure the token is not expired when it\n // reaches the server.\n 10e3 +\n // Add some randomness to reduce the chances of multiple\n // instances trying to refresh the token at the same.\n 30e3 * Math.random()\n )\n },\n deleteOnError: isExpectedSessionError,\n },\n )\n\n this.#serverFactory = serverFactory\n this.#runtime = runtime\n this.#options = options\n }\n\n override async setStored(sub: AtprotoDid, session: Session) {\n // Prevent tampering with the stored value\n if (sub !== session.tokenSet.sub) {\n throw new Error('Token set does not match the expected sub')\n }\n\n try {\n await super.setStored(sub, session)\n } catch (err) {\n // If we fail to persist the session, we assume that we won't be able to\n // fetch it again. We don't want to leave the session in a \"limbo\" state,\n // so we proactively revoke the session and delete it from the store.\n\n const errors: unknown[] = [err]\n\n try {\n const { tokenSet, dpopKey, authMethod } = session\n const server = await this.#serverFactory.fromIssuer(\n tokenSet.iss,\n authMethod,\n dpopKey,\n )\n await server.revoke(tokenSet.refresh_token ?? tokenSet.access_token)\n } catch (err) {\n errors.push(err)\n }\n\n try {\n await this.delStored(sub, err)\n } catch (err) {\n errors.push(err)\n }\n\n throw new AggregateError(errors, `Failed to store session for ${sub}`)\n }\n\n await this.#options.onSessionUpdated?.call(null, sub, session)\n }\n\n override async delStored(sub: AtprotoDid, cause?: unknown): Promise {\n await super.delStored(sub, cause)\n await this.#options.onSessionDeleted?.call(null, sub, cause)\n }\n\n override async get(\n sub: AtprotoDid,\n options?: GetCachedOptions,\n ): Promise {\n const session = await this.#runtime.usingLock(\n `@atproto-oauth-client-${sub}`,\n async () => {\n // Make sure, even if there is no signal in the options, that the\n // request will be cancelled after at most 30 seconds.\n const signal = timeoutSignal(30e3)\n\n using abortController = combineSignals([options?.signal, signal])\n\n return await super.get(sub, {\n ...options,\n signal: abortController.signal,\n })\n },\n )\n\n if (sub !== session.tokenSet.sub) {\n // Fool-proofing (e.g. against invalid session storage)\n throw new Error('Token set does not match the expected sub')\n }\n\n return session\n }\n\n /**\n * @param refresh When `true`, the credentials will be refreshed even if they\n * are not expired. When `false`, the credentials will not be refreshed even\n * if they are expired. When `undefined`, the credentials will be refreshed\n * if, and only if, they are (about to be) expired. Defaults to `undefined`.\n */\n async getSession(sub: AtprotoDid, refresh: boolean | 'auto' = 'auto') {\n return this.get(sub, {\n noCache: refresh === true,\n allowStale: refresh === false,\n })\n }\n}\n","import { type TypeOf, z } from 'zod'\nimport {\n type OAuthAuthorizationRequestParameters,\n oauthClientIdDiscoverableSchema,\n oauthClientIdLoopbackSchema,\n oauthClientMetadataSchema,\n} from '@atproto/oauth-types'\nimport type { Simplify } from './util.js'\n\n// Note: These types are not prefixed with `OAuth` because they are not specific\n// to OAuth. They are specific to this packages. OAuth specific types are in\n// `@atproto/oauth-types`.\n\nexport type AuthorizeOptions = Simplify<\n Omit<\n OAuthAuthorizationRequestParameters,\n | 'client_id'\n | 'response_mode'\n | 'response_type'\n | 'login_hint'\n | 'code_challenge'\n | 'code_challenge_method'\n > & {\n signal?: AbortSignal\n }\n>\n\nexport type CallbackOptions = Simplify<\n Partial>\n>\n\nexport const clientMetadataSchema = oauthClientMetadataSchema.extend({\n client_id: z.union([\n oauthClientIdDiscoverableSchema,\n oauthClientIdLoopbackSchema,\n ]),\n})\n\nexport type ClientMetadata = TypeOf\n","import type { Keyset } from '@atproto/jwk'\nimport {\n type OAuthClientMetadataInput,\n assertOAuthDiscoverableClientId,\n assertOAuthLoopbackClientId,\n} from '@atproto/oauth-types'\nimport { FALLBACK_ALG } from './constants.js'\nimport { type ClientMetadata, clientMetadataSchema } from './types.js'\n\nexport function validateClientMetadata(\n input: OAuthClientMetadataInput,\n keyset?: Keyset,\n): ClientMetadata {\n // Allow to pass a keyset and omit the jwks/jwks_uri properties\n if (!input.jwks && !input.jwks_uri && keyset?.size) {\n input = { ...input, jwks: keyset.toJSON() }\n }\n\n const metadata = clientMetadataSchema.parse(input)\n\n // Validate client ID\n if (metadata.client_id.startsWith('http:')) {\n assertOAuthLoopbackClientId(metadata.client_id)\n } else {\n assertOAuthDiscoverableClientId(metadata.client_id)\n }\n\n const scopes = metadata.scope?.split(' ')\n if (!scopes?.includes('atproto')) {\n throw new TypeError(`Client metadata must include the \"atproto\" scope`)\n }\n\n if (!metadata.response_types.includes('code')) {\n throw new TypeError(`\"response_types\" must include \"code\"`)\n }\n\n if (!metadata.grant_types.includes('authorization_code')) {\n throw new TypeError(`\"grant_types\" must include \"authorization_code\"`)\n }\n\n const method = metadata.token_endpoint_auth_method\n const methodAlg = metadata.token_endpoint_auth_signing_alg\n switch (method) {\n case 'none':\n if (methodAlg) {\n throw new TypeError(\n `\"token_endpoint_auth_signing_alg\" must not be provided when \"token_endpoint_auth_method\" is \"${method}\"`,\n )\n }\n break\n\n case 'private_key_jwt': {\n if (!methodAlg) {\n throw new TypeError(\n `\"token_endpoint_auth_signing_alg\" must be provided when \"token_endpoint_auth_method\" is \"${method}\"`,\n )\n }\n\n if (!keyset) {\n throw new TypeError(\n `Client authentication method \"${method}\" requires a keyset`,\n )\n }\n\n // @NOTE This reproduces the logic from `negotiateClientAuthMethod` at\n // initialization time to ensure that every key that might end-up being\n // used is indeed valid & advertised in the metadata.\n const signingKeys = Array.from(keyset.list({ usage: 'sign' })).filter(\n (key) => key.kid,\n )\n\n if (!signingKeys.length) {\n throw new TypeError(\n `Client authentication method \"${method}\" requires at least one active signing key with a \"kid\" property`,\n )\n }\n\n if (!signingKeys.some((key) => key.algorithms.includes(FALLBACK_ALG))) {\n throw new TypeError(\n `Client authentication method \"${method}\" requires at least one active \"${FALLBACK_ALG}\" signing key`,\n )\n }\n\n if (metadata.jwks) {\n // Ensure that all the signing keys that could end-up being used are\n // advertised in the JWKS.\n for (const key of signingKeys) {\n if (\n !metadata.jwks.keys.some((k) => k.kid === key.kid && !k.revoked)\n ) {\n throw new TypeError(\n `Missing or inactive key \"${key.kid}\" in jwks. Make sure that every signing key of the Keyset is declared as an active key in the Metadata's JWKS.`,\n )\n }\n }\n } else if (metadata.jwks_uri) {\n // @NOTE we only ensure that all the signing keys are referenced in JWKS\n // when it is available (see previous \"if\") as we don't want to download\n // that file here (for efficiency reasons).\n } else {\n throw new TypeError(\n `Client authentication method \"${method}\" requires a JWKS`,\n )\n }\n\n break\n }\n\n default:\n throw new TypeError(\n `Unsupported \"token_endpoint_auth_method\" value: ${method}`,\n )\n }\n\n return metadata\n}\n","import { Key, Keyset } from '@atproto/jwk'\nimport {\n type OAuthAuthorizationRequestParameters,\n type OAuthClientIdDiscoverable,\n type OAuthClientMetadata,\n type OAuthClientMetadataInput,\n type OAuthResponseMode,\n oauthClientMetadataSchema,\n} from '@atproto/oauth-types'\nimport {\n type AtprotoDid,\n type DidCache,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n type DidResolverCommonOptions,\n assertAtprotoDid,\n} from '@atproto-labs/did-resolver'\nimport type { Fetch } from '@atproto-labs/fetch'\nimport type { HandleCache, HandleResolver } from '@atproto-labs/handle-resolver'\nimport { HANDLE_INVALID } from '@atproto-labs/identity-resolver'\nimport { SimpleStoreMemory } from '@atproto-labs/simple-store-memory'\nimport { FALLBACK_ALG } from './constants.js'\nimport { AuthMethodUnsatisfiableError } from './errors/auth-method-unsatisfiable-error.js'\nimport { TokenRevokedError } from './errors/token-revoked-error.js'\nimport {\n type CreateIdentityResolverOptions,\n createIdentityResolver,\n} from './identity-resolver.js'\nimport {\n type AuthorizationServerMetadataCache,\n OAuthAuthorizationServerMetadataResolver,\n} from './oauth-authorization-server-metadata-resolver.js'\nimport { OAuthCallbackError } from './oauth-callback-error.js'\nimport { negotiateClientAuthMethod } from './oauth-client-auth.js'\nimport {\n OAuthProtectedResourceMetadataResolver,\n type ProtectedResourceMetadataCache,\n} from './oauth-protected-resource-metadata-resolver.js'\nimport { OAuthResolver } from './oauth-resolver.js'\nimport type { DpopNonceCache, OAuthServerAgent } from './oauth-server-agent.js'\nimport { OAuthServerFactory } from './oauth-server-factory.js'\nimport { OAuthSession } from './oauth-session.js'\nimport type { RuntimeImplementation } from './runtime-implementation.js'\nimport { Runtime } from './runtime.js'\nimport {\n SessionGetter,\n type SessionGetterOptions,\n type SessionStore,\n isExpectedSessionError,\n} from './session-getter.js'\nimport type { InternalStateData, StateStore } from './state-store.js'\nimport type {\n AuthorizeOptions,\n CallbackOptions,\n ClientMetadata,\n} from './types.js'\nimport { validateClientMetadata } from './validate-client-metadata.js'\n\n// Export all types needed to construct OAuthClientOptions\nexport type {\n AuthorizationServerMetadataCache,\n CreateIdentityResolverOptions,\n DidCache,\n DpopNonceCache,\n Fetch,\n HandleCache,\n HandleResolver,\n InternalStateData,\n OAuthClientMetadata,\n OAuthClientMetadataInput,\n OAuthResponseMode,\n ProtectedResourceMetadataCache,\n RuntimeImplementation,\n SessionGetterOptions,\n SessionStore,\n StateStore,\n}\n\nexport { Key, Keyset }\n\nexport type OAuthClientOptions = {\n // Config\n responseMode: OAuthResponseMode\n clientMetadata: Readonly\n keyset?: Keyset | Iterable\n /**\n * Determines if the client will allow communicating with the OAuth Servers\n * (Authorization & Resource), or to retrieve \"did:web\" documents, over\n * unsafe HTTP connections. It is recommended to set this to `true` only for\n * development purposes.\n *\n * @note This does not affect the identity resolution mechanism, which will\n * allow HTTP connections to the PLC Directory (if the provided directory url\n * is \"http:\" based).\n * @default false\n * @see {@link OAuthProtectedResourceMetadataResolver.allowHttpResource}\n * @see {@link OAuthAuthorizationServerMetadataResolver.allowHttpIssuer}\n * @see {@link DidResolverCommonOptions.allowHttp}\n */\n allowHttp?: boolean\n\n // Stores\n stateStore: StateStore\n sessionStore: SessionStore\n authorizationServerMetadataCache?: AuthorizationServerMetadataCache\n protectedResourceMetadataCache?: ProtectedResourceMetadataCache\n dpopNonceCache?: DpopNonceCache\n\n // Services\n runtimeImplementation: RuntimeImplementation\n fetch?: Fetch\n} & CreateIdentityResolverOptions &\n SessionGetterOptions\n\nexport type OAuthClientFetchMetadataOptions = {\n clientId: OAuthClientIdDiscoverable\n fetch?: Fetch\n signal?: AbortSignal\n}\n\nexport class OAuthClient {\n static async fetchMetadata({\n clientId,\n fetch = globalThis.fetch,\n signal,\n }: OAuthClientFetchMetadataOptions) {\n signal?.throwIfAborted()\n\n const request = new Request(clientId, {\n redirect: 'error',\n signal: signal,\n })\n const response = await fetch(request)\n\n if (response.status !== 200) {\n response.body?.cancel?.()\n throw new TypeError(`Failed to fetch client metadata: ${response.status}`)\n }\n\n // https://www.ietf.org/archive/id/draft-ietf-oauth-client-id-metadata-document-00.html#section-4.1\n const mime = response.headers.get('content-type')?.split(';')[0].trim()\n if (mime !== 'application/json') {\n response.body?.cancel?.()\n throw new TypeError(`Invalid client metadata content type: ${mime}`)\n }\n\n const json: unknown = await response.json()\n\n signal?.throwIfAborted()\n\n return oauthClientMetadataSchema.parse(json)\n }\n\n // Config\n readonly clientMetadata: ClientMetadata\n readonly responseMode: OAuthResponseMode\n readonly keyset?: Keyset\n\n // Services\n readonly runtime: Runtime\n readonly fetch: Fetch\n readonly oauthResolver: OAuthResolver\n readonly serverFactory: OAuthServerFactory\n\n // Stores\n protected readonly sessionGetter: SessionGetter\n protected readonly stateStore: StateStore\n\n constructor(options: OAuthClientOptions) {\n const {\n stateStore,\n sessionStore,\n\n dpopNonceCache = new SimpleStoreMemory({ ttl: 60e3, max: 100 }),\n authorizationServerMetadataCache = new SimpleStoreMemory({\n ttl: 60e3,\n max: 100,\n }),\n protectedResourceMetadataCache = new SimpleStoreMemory({\n ttl: 60e3,\n max: 100,\n }),\n\n responseMode,\n clientMetadata,\n runtimeImplementation,\n keyset,\n } = options\n\n this.keyset = keyset\n ? keyset instanceof Keyset\n ? keyset\n : new Keyset(keyset)\n : undefined\n this.clientMetadata = validateClientMetadata(clientMetadata, this.keyset)\n this.responseMode = responseMode\n\n this.runtime = new Runtime(runtimeImplementation)\n this.fetch = options.fetch ?? globalThis.fetch\n this.oauthResolver = new OAuthResolver(\n createIdentityResolver(options),\n new OAuthProtectedResourceMetadataResolver(\n protectedResourceMetadataCache,\n this.fetch,\n { allowHttpResource: options.allowHttp },\n ),\n new OAuthAuthorizationServerMetadataResolver(\n authorizationServerMetadataCache,\n this.fetch,\n { allowHttpIssuer: options.allowHttp },\n ),\n )\n this.serverFactory = new OAuthServerFactory(\n this.clientMetadata,\n this.runtime,\n this.oauthResolver,\n this.fetch,\n this.keyset,\n dpopNonceCache,\n )\n\n this.stateStore = stateStore\n this.sessionGetter = new SessionGetter(\n sessionStore,\n this.serverFactory,\n this.runtime,\n options,\n )\n }\n\n // Exposed as public API for convenience\n get identityResolver() {\n return this.oauthResolver.identityResolver\n }\n\n get jwks() {\n return this.keyset?.publicJwks ?? ({ keys: [] as const } as const)\n }\n\n async authorize(\n input: string,\n { signal, ...options }: AuthorizeOptions = {},\n ): Promise {\n const redirectUri =\n options?.redirect_uri ?? this.clientMetadata.redirect_uris[0]\n if (!this.clientMetadata.redirect_uris.includes(redirectUri)) {\n // The server will enforce this, but let's catch it early\n throw new TypeError('Invalid redirect_uri')\n }\n\n const { identityInfo, metadata } = await this.oauthResolver.resolve(input, {\n signal,\n })\n\n const pkce = await this.runtime.generatePKCE()\n const dpopKey = await this.runtime.generateKey(\n metadata.dpop_signing_alg_values_supported || [FALLBACK_ALG],\n )\n\n const authMethod = negotiateClientAuthMethod(\n metadata,\n this.clientMetadata,\n this.keyset,\n )\n const state = await this.runtime.generateNonce()\n\n await this.stateStore.set(state, {\n iss: metadata.issuer,\n dpopKey,\n authMethod,\n verifier: pkce.verifier,\n appState: options?.state,\n })\n\n const parameters: OAuthAuthorizationRequestParameters = {\n ...options,\n\n client_id: this.clientMetadata.client_id,\n redirect_uri: redirectUri,\n code_challenge: pkce.challenge,\n code_challenge_method: pkce.method,\n state,\n login_hint: identityInfo\n ? identityInfo.handle !== HANDLE_INVALID\n ? identityInfo.handle\n : identityInfo.did\n : undefined,\n response_mode: this.responseMode,\n response_type: 'code' as const,\n scope: options?.scope ?? this.clientMetadata.scope,\n }\n\n const authorizationUrl = new URL(metadata.authorization_endpoint)\n\n // Since the user will be redirected to the authorization_endpoint url using\n // a browser, we need to make sure that the url is valid.\n if (\n authorizationUrl.protocol !== 'https:' &&\n authorizationUrl.protocol !== 'http:'\n ) {\n throw new TypeError(\n `Invalid authorization endpoint protocol: ${authorizationUrl.protocol}`,\n )\n }\n\n if (metadata.pushed_authorization_request_endpoint) {\n const server = await this.serverFactory.fromMetadata(\n metadata,\n authMethod,\n dpopKey,\n )\n const parResponse = await server.request(\n 'pushed_authorization_request',\n parameters,\n )\n\n authorizationUrl.searchParams.set(\n 'client_id',\n this.clientMetadata.client_id,\n )\n authorizationUrl.searchParams.set('request_uri', parResponse.request_uri)\n return authorizationUrl\n } else if (metadata.require_pushed_authorization_requests) {\n throw new Error(\n 'Server requires pushed authorization requests (PAR) but no PAR endpoint is available',\n )\n } else {\n for (const [key, value] of Object.entries(parameters)) {\n if (value) authorizationUrl.searchParams.set(key, String(value))\n }\n\n // Length of the URL that will be sent to the server\n const urlLength =\n authorizationUrl.pathname.length + authorizationUrl.search.length\n if (urlLength < 2048) {\n return authorizationUrl\n } else if (!metadata.pushed_authorization_request_endpoint) {\n throw new Error('Login URL too long')\n }\n }\n\n throw new Error(\n 'Server does not support pushed authorization requests (PAR)',\n )\n }\n\n /**\n * This method allows the client to proactively revoke the request_uri it\n * created through PAR.\n */\n async abortRequest(authorizeUrl: URL) {\n const requestUri = authorizeUrl.searchParams.get('request_uri')\n if (!requestUri) return\n\n // @NOTE This is not implemented here because, 1) the request server should\n // invalidate the request_uri after some delay anyways, and 2) I am not sure\n // that the revocation endpoint is even supposed to support this (and I\n // don't want to spend the time checking now).\n\n // @TODO investigate actual necessity & feasibility of this feature\n }\n\n async callback(\n params: URLSearchParams,\n options: CallbackOptions = {},\n ): Promise<{\n session: OAuthSession\n state: string | null\n }> {\n const responseJwt = params.get('response')\n if (responseJwt != null) {\n // https://openid.net/specs/oauth-v2-jarm.html\n throw new OAuthCallbackError(params, 'JARM not supported')\n }\n\n const issuerParam = params.get('iss')\n const stateParam = params.get('state')\n const errorParam = params.get('error')\n const codeParam = params.get('code')\n\n if (!stateParam) {\n throw new OAuthCallbackError(params, 'Missing \"state\" parameter')\n }\n const stateData = await this.stateStore.get(stateParam)\n if (stateData) {\n // Prevent any kind of replay\n await this.stateStore.del(stateParam)\n } else {\n throw new OAuthCallbackError(\n params,\n `Unknown authorization session \"${stateParam}\"`,\n )\n }\n\n try {\n if (errorParam != null) {\n throw new OAuthCallbackError(params, undefined, stateData.appState)\n }\n\n if (!codeParam) {\n throw new OAuthCallbackError(\n params,\n 'Missing \"code\" query param',\n stateData.appState,\n )\n }\n\n const server = await this.serverFactory.fromIssuer(\n stateData.iss,\n stateData.authMethod,\n stateData.dpopKey,\n )\n\n if (issuerParam != null) {\n if (!server.issuer) {\n throw new OAuthCallbackError(\n params,\n 'Issuer not found in metadata',\n stateData.appState,\n )\n }\n if (server.issuer !== issuerParam) {\n throw new OAuthCallbackError(\n params,\n 'Issuer mismatch',\n stateData.appState,\n )\n }\n } else if (\n server.serverMetadata.authorization_response_iss_parameter_supported\n ) {\n throw new OAuthCallbackError(\n params,\n 'iss missing from the response',\n stateData.appState,\n )\n }\n\n const tokenSet = await server.exchangeCode(\n codeParam,\n stateData.verifier,\n options?.redirect_uri ?? server.clientMetadata.redirect_uris[0],\n )\n\n // We revoke any existing session first to avoid leaving orphaned sessions\n // on the AS.\n try {\n await this.revoke(tokenSet.sub)\n } catch {\n // No existing session, or failed to get it. This is fine.\n }\n\n try {\n await this.sessionGetter.setStored(tokenSet.sub, {\n dpopKey: stateData.dpopKey,\n authMethod: server.authMethod,\n tokenSet,\n })\n\n const session = this.createSession(server, tokenSet.sub)\n\n return { session, state: stateData.appState ?? null }\n } catch (err) {\n await server.revoke(tokenSet.refresh_token || tokenSet.access_token)\n\n throw err\n }\n } catch (err) {\n // Make sure, whatever the underlying error, that the appState is\n // available in the calling code\n throw OAuthCallbackError.from(err, params, stateData.appState)\n }\n }\n\n /**\n * Load a stored session. This will refresh the token only if needed (about to\n * expire) by default.\n *\n * @see {@link SessionGetter.restore}\n */\n async restore(\n sub: string,\n refresh: boolean | 'auto' = 'auto',\n ): Promise {\n // sub arg is lightly typed for convenience of library user\n assertAtprotoDid(sub)\n\n const { dpopKey, authMethod, tokenSet } =\n await this.sessionGetter.getSession(sub, refresh)\n\n try {\n const server = await this.serverFactory.fromIssuer(\n tokenSet.iss,\n authMethod,\n dpopKey,\n {\n noCache: refresh === true,\n allowStale: refresh === false,\n },\n )\n\n return this.createSession(server, sub)\n } catch (err) {\n if (err instanceof AuthMethodUnsatisfiableError) {\n await this.sessionGetter.delStored(sub, err)\n }\n\n throw err\n }\n }\n\n async revoke(sub: string) {\n // sub arg is lightly typed for convenience of library user\n assertAtprotoDid(sub)\n\n const res = await this.sessionGetter.getSession(sub, false).catch((err) => {\n if (isExpectedSessionError(err)) return null\n throw err\n })\n\n if (!res) return\n\n const { dpopKey, authMethod, tokenSet } = res\n\n // NOT using `;(await this.restore(sub, false)).signOut()` because we want\n // the tokens to be deleted even if it was not possible to fetch the issuer\n // data.\n try {\n const server = await this.serverFactory.fromIssuer(\n tokenSet.iss,\n authMethod,\n dpopKey,\n )\n await server.revoke(tokenSet.access_token)\n } finally {\n await this.sessionGetter.delStored(sub, new TokenRevokedError(sub))\n }\n }\n\n protected createSession(\n server: OAuthServerAgent,\n sub: AtprotoDid,\n ): OAuthSession {\n return new OAuthSession(server, sub, this.sessionGetter, this.fetch)\n }\n}\n","import 'core-js/es/symbol/dispose.js'\n\nimport { DBTransaction } from './db-transaction.js'\nimport type { DatabaseSchema } from './schema.js'\n\nexport class DB implements AsyncDisposable {\n static async open(\n dbName: string,\n migrations: ReadonlyArray<(db: IDBDatabase) => void>,\n txOptions?: IDBTransactionOptions,\n ) {\n const db = await new Promise((resolve, reject) => {\n const request = indexedDB.open(dbName, migrations.length)\n\n request.onerror = () => reject(request.error)\n request.onsuccess = () => resolve(request.result)\n request.onupgradeneeded = ({ oldVersion, newVersion }) => {\n const db = request.result\n try {\n for (\n let version = oldVersion;\n version < (newVersion ?? migrations.length);\n ++version\n ) {\n const migration = migrations[version]\n if (migration) migration(db)\n else throw new Error(`Missing migration for version ${version}`)\n }\n } catch (err) {\n db.close()\n reject(err)\n }\n }\n })\n\n return new DB(db, txOptions)\n }\n\n #db: null | IDBDatabase\n\n constructor(\n db: IDBDatabase,\n protected readonly txOptions?: IDBTransactionOptions,\n ) {\n this.#db = db\n\n const cleanup = () => {\n this.#db = null\n db.removeEventListener('versionchange', cleanup)\n db.removeEventListener('close', cleanup)\n db.close() // Can we call close on a \"closed\" database?\n }\n\n db.addEventListener('versionchange', cleanup)\n db.addEventListener('close', cleanup)\n }\n\n protected get db(): IDBDatabase {\n if (!this.#db) throw new Error('Database closed')\n return this.#db\n }\n\n get name() {\n return this.db.name\n }\n\n get objectStoreNames() {\n return this.db.objectStoreNames\n }\n\n get version() {\n return this.db.version\n }\n\n async transaction(\n storeNames: T,\n mode: IDBTransactionMode,\n run: (tx: DBTransaction>) => R | PromiseLike,\n ): Promise {\n // eslint-disable-next-line no-async-promise-executor\n return new Promise(async (resolve, reject) => {\n try {\n const tx = this.db.transaction(storeNames, mode, this.txOptions)\n let result: { done: false } | { done: true; value: R } = { done: false }\n\n tx.oncomplete = () => {\n if (result.done) resolve(result.value)\n else reject(new Error('Transaction completed without result'))\n }\n tx.onerror = () => reject(tx.error)\n tx.onabort = () => reject(tx.error || new Error('Transaction aborted'))\n\n try {\n const value = await run(new DBTransaction(tx))\n result = { done: true, value }\n tx.commit()\n } catch (err) {\n tx.abort()\n throw err\n }\n } catch (err) {\n reject(err)\n }\n })\n }\n\n close() {\n const { db } = this\n this.#db = null\n db.close()\n }\n\n async [Symbol.asyncDispose]() {\n if (this.#db) await this.close()\n }\n}\n","import 'core-js/es/symbol/dispose.js'\n\nimport { DBObjectStore } from './db-object-store.js'\nimport type { DatabaseSchema } from './schema.js'\n\nexport class DBTransaction<\n Schema extends DatabaseSchema,\n> implements Disposable {\n #tx: IDBTransaction | null\n\n constructor(tx: IDBTransaction) {\n this.#tx = tx\n\n const onAbort = () => {\n cleanup()\n }\n const onComplete = () => {\n cleanup()\n }\n const cleanup = () => {\n this.#tx = null\n tx.removeEventListener('abort', onAbort)\n tx.removeEventListener('complete', onComplete)\n }\n tx.addEventListener('abort', onAbort)\n tx.addEventListener('complete', onComplete)\n }\n\n protected get tx(): IDBTransaction {\n if (!this.#tx) throw new Error('Transaction already ended')\n return this.#tx\n }\n\n async abort() {\n const { tx } = this\n this.#tx = null\n tx.abort()\n }\n\n async commit() {\n const { tx } = this\n this.#tx = null\n tx.commit?.()\n }\n\n objectStore(name: T) {\n const store = this.tx.objectStore(name)\n return new DBObjectStore(store)\n }\n\n [Symbol.dispose](): void {\n if (this.#tx) this.commit()\n }\n}\n","export function handleRequest(\n request: IDBRequest,\n onSuccess: (result: T) => void,\n onError: (error: Error) => void,\n) {\n const cleanup = () => {\n request.removeEventListener('success', success)\n request.removeEventListener('error', error)\n }\n const success = () => {\n onSuccess(request.result)\n cleanup()\n }\n const error = () => {\n onError(request.error || new Error('Unknown error'))\n cleanup()\n }\n request.addEventListener('success', success)\n request.addEventListener('error', error)\n}\n\nexport function promisify(request: IDBRequest) {\n return new Promise((resolve, reject) => {\n handleRequest(request, resolve, reject)\n })\n}\n","import type { ObjectStoreSchema } from './schema.js'\nimport { promisify } from './util.js'\n\nexport class DBIndex {\n constructor(private idbIndex: IDBIndex) {}\n\n count(query?: IDBValidKey | IDBKeyRange) {\n return promisify(this.idbIndex.count(query))\n }\n\n get(query: IDBValidKey | IDBKeyRange) {\n return promisify(this.idbIndex.get(query))\n }\n\n getKey(query: IDBValidKey | IDBKeyRange) {\n return promisify(this.idbIndex.getKey(query))\n }\n\n getAll(query?: IDBValidKey | IDBKeyRange | null, count?: number) {\n return promisify(this.idbIndex.getAll(query, count))\n }\n\n getAllKeys(query?: IDBValidKey | IDBKeyRange | null, count?: number) {\n return promisify(this.idbIndex.getAllKeys(query, count))\n }\n\n deleteAll(query?: IDBValidKey | IDBKeyRange | null): Promise {\n return new Promise((resolve, reject) => {\n const result = this.idbIndex.openCursor(query)\n result.onsuccess = function (event) {\n const cursor = (event as any).target.result as IDBCursorWithValue\n if (cursor) {\n cursor.delete()\n cursor.continue()\n } else {\n resolve()\n }\n }\n result.onerror = function (event) {\n reject((event.target as any)?.error || new Error('Unexpected error'))\n }\n })\n }\n}\n","import { DBIndex } from './db-index.js'\nimport type { ObjectStoreSchema } from './schema.js'\nimport { promisify } from './util.js'\n\nexport class DBObjectStore {\n constructor(private idbObjStore: IDBObjectStore) {}\n\n get name() {\n return this.idbObjStore.name\n }\n\n index(name: string) {\n return new DBIndex(this.idbObjStore.index(name))\n }\n\n get(key: IDBValidKey | IDBKeyRange) {\n return promisify(this.idbObjStore.get(key))\n }\n\n getKey(query: IDBValidKey | IDBKeyRange) {\n return promisify(this.idbObjStore.getKey(query))\n }\n\n getAll(query?: IDBValidKey | IDBKeyRange | null, count?: number) {\n return promisify(this.idbObjStore.getAll(query, count))\n }\n\n getAllKeys(query?: IDBValidKey | IDBKeyRange | null, count?: number) {\n return promisify(this.idbObjStore.getAllKeys(query, count))\n }\n\n add(value: Schema, key?: IDBValidKey) {\n return promisify(this.idbObjStore.add(value, key))\n }\n\n put(value: Schema, key?: IDBValidKey) {\n return promisify(this.idbObjStore.put(value, key))\n }\n\n delete(key: IDBValidKey | IDBKeyRange) {\n return promisify(this.idbObjStore.delete(key))\n }\n\n clear() {\n return promisify(this.idbObjStore.clear())\n }\n}\n","import type { DidDocument } from '@atproto/did'\nimport type { Key } from '@atproto/jwk'\nimport { WebcryptoKey } from '@atproto/jwk-webcrypto'\nimport type { InternalStateData, Session } from '@atproto/oauth-client'\nimport type {\n OAuthAuthorizationServerMetadata,\n OAuthProtectedResourceMetadata,\n} from '@atproto/oauth-types'\nimport type { ResolvedHandle } from '@atproto-labs/handle-resolver'\nimport type { SimpleStore, Value } from '@atproto-labs/simple-store'\nimport { DB, type DBObjectStore } from './indexed-db/index.js'\nimport type { TupleUnion } from './util.js'\n\ntype Item = {\n value: V\n expiresAt?: string // ISO Date\n}\n\ntype EncodedKey = {\n keyId: string\n keyPair: CryptoKeyPair\n}\n\nfunction encodeKey(key: Key): EncodedKey {\n if (!(key instanceof WebcryptoKey) || !key.kid) {\n throw new Error('Invalid key object')\n }\n return {\n keyId: key.kid,\n keyPair: key.cryptoKeyPair,\n }\n}\n\nasync function decodeKey(encoded: EncodedKey): Promise {\n return WebcryptoKey.fromKeypair(encoded.keyPair, encoded.keyId)\n}\n\nexport type Schema = {\n state: Item & { dpopKey: EncodedKey }>\n session: Item & { dpopKey: EncodedKey }>\n didCache: Item\n dpopNonceCache: Item\n handleCache: Item\n authorizationServerMetadataCache: Item\n protectedResourceMetadataCache: Item\n}\n\nexport type DatabaseStore = SimpleStore\n\nconst STORES: TupleUnion = [\n 'state',\n 'session',\n\n 'didCache',\n 'dpopNonceCache',\n 'handleCache',\n 'authorizationServerMetadataCache',\n 'protectedResourceMetadataCache',\n]\n\nexport type BrowserOAuthDatabaseOptions = {\n name?: string\n durability?: 'strict' | 'relaxed'\n cleanupInterval?: number\n}\n\nexport class BrowserOAuthDatabase {\n #dbPromise: Promise>\n #cleanupInterval?: ReturnType\n\n constructor(options?: BrowserOAuthDatabaseOptions) {\n this.#dbPromise = DB.open(\n options?.name ?? '@atproto-oauth-client',\n [\n (db) => {\n for (const name of STORES) {\n const store = db.createObjectStore(name, { autoIncrement: true })\n store.createIndex('expiresAt', 'expiresAt', { unique: false })\n }\n },\n ],\n { durability: options?.durability ?? 'strict' },\n )\n\n this.#cleanupInterval = setInterval(() => {\n void this.cleanup()\n }, options?.cleanupInterval ?? 30e3)\n }\n\n protected async run(\n storeName: N,\n mode: 'readonly' | 'readwrite',\n fn: (s: DBObjectStore) => R | Promise,\n ): Promise {\n const db = await this.#dbPromise\n return await db.transaction([storeName], mode, (tx) =>\n fn(tx.objectStore(storeName)),\n )\n }\n\n protected createStore(\n name: N,\n {\n encode,\n decode,\n expiresAt,\n }: {\n encode: (value: V) => Schema[N]['value'] | PromiseLike\n decode: (encoded: Schema[N]['value']) => V | PromiseLike\n expiresAt: (value: V) => null | Date\n },\n ): DatabaseStore {\n return {\n get: async (key) => {\n // Find item in store\n const item = await this.run(name, 'readonly', (store) => store.get(key))\n\n // Not found\n if (item === undefined) return undefined\n\n // Too old (delete)\n if (item.expiresAt != null && new Date(item.expiresAt) < new Date()) {\n await this.run(name, 'readwrite', (store) => store.delete(key))\n return undefined\n }\n\n // Item found and valid. Decode\n return decode(item.value)\n },\n\n set: async (key, value) => {\n // Create encoded item record\n const item = {\n value: await encode(value),\n expiresAt: expiresAt(value)?.toISOString(),\n } as Schema[N]\n\n // Store item record\n await this.run(name, 'readwrite', (store) => store.put(item, key))\n },\n\n del: async (key) => {\n // Delete\n await this.run(name, 'readwrite', (store) => store.delete(key))\n },\n }\n }\n\n getSessionStore(): DatabaseStore {\n return this.createStore('session', {\n expiresAt: ({ tokenSet }) =>\n tokenSet.refresh_token || tokenSet.expires_at == null\n ? null\n : new Date(tokenSet.expires_at),\n encode: ({ dpopKey, ...session }) => ({\n ...session,\n dpopKey: encodeKey(dpopKey),\n }),\n decode: async ({ dpopKey, ...encoded }) => ({\n ...encoded,\n dpopKey: await decodeKey(dpopKey),\n }),\n })\n }\n\n getStateStore(): DatabaseStore {\n return this.createStore('state', {\n expiresAt: (_value) => new Date(Date.now() + 10 * 60e3),\n encode: ({ dpopKey, ...session }) => ({\n ...session,\n dpopKey: encodeKey(dpopKey),\n }),\n decode: async ({ dpopKey, ...encoded }) => ({\n ...encoded,\n dpopKey: await decodeKey(dpopKey),\n }),\n })\n }\n\n getDpopNonceCache(): DatabaseStore {\n return this.createStore('dpopNonceCache', {\n expiresAt: (_value) => new Date(Date.now() + 600e3),\n encode: (value) => value,\n decode: (encoded) => encoded,\n })\n }\n\n getDidCache(): DatabaseStore {\n return this.createStore('didCache', {\n expiresAt: (_value) => new Date(Date.now() + 60e3),\n encode: (value) => value,\n decode: (encoded) => encoded,\n })\n }\n\n getHandleCache(): DatabaseStore {\n return this.createStore('handleCache', {\n expiresAt: (_value) => new Date(Date.now() + 60e3),\n encode: (value) => value,\n decode: (encoded) => encoded,\n })\n }\n\n getAuthorizationServerMetadataCache():\n undefined | DatabaseStore {\n return this.createStore('authorizationServerMetadataCache', {\n expiresAt: (_value) => new Date(Date.now() + 60e3),\n encode: (value) => value,\n decode: (encoded) => encoded,\n })\n }\n\n getProtectedResourceMetadataCache():\n undefined | DatabaseStore {\n return this.createStore('protectedResourceMetadataCache', {\n expiresAt: (_value) => new Date(Date.now() + 60e3),\n encode: (value) => value,\n decode: (encoded) => encoded,\n })\n }\n\n async cleanup() {\n const db = await this.#dbPromise\n\n for (const name of STORES) {\n await db.transaction([name], 'readwrite', (tx) =>\n tx\n .objectStore(name)\n .index('expiresAt')\n .deleteAll(IDBKeyRange.upperBound(Date.now())),\n )\n }\n }\n\n async [Symbol.asyncDispose]() {\n clearInterval(this.#cleanupInterval)\n this.#cleanupInterval = undefined\n\n const dbPromise = this.#dbPromise\n this.#dbPromise = Promise.reject(new Error('Database has been disposed'))\n\n // Avoid \"unhandled promise rejection\"\n this.#dbPromise.catch(() => null)\n\n // Spec recommends not to throw errors in dispose\n const db = await dbPromise.catch(() => null)\n if (db) await db[Symbol.asyncDispose]()\n }\n}\n","import { WebcryptoKey } from '@atproto/jwk-webcrypto'\nimport type {\n DigestAlgorithm,\n Key,\n RuntimeImplementation,\n RuntimeLock,\n} from '@atproto/oauth-client'\n\n/**\n * @see {@link // https://developer.mozilla.org/en-US/docs/Web/API/LockManager/request}\n */\nconst nativeRequestLock: undefined | RuntimeLock =\n typeof navigator !== 'undefined' && navigator.locks?.request\n ? (name: string, fn: () => T | PromiseLike): Promise =>\n navigator.locks.request(name, { mode: 'exclusive' }, async () => fn())\n : undefined\n\nexport class BrowserRuntimeImplementation implements RuntimeImplementation {\n requestLock = nativeRequestLock\n\n constructor() {\n if (typeof crypto !== 'object' || !crypto?.subtle) {\n throw new Error(\n 'Crypto with CryptoSubtle is required. If running in a browser, make sure the current page is loaded over HTTPS.',\n )\n }\n\n if (!this.requestLock) {\n // There is no real need to polyfill this on older browsers. Indeed, the\n // oauth-client library will try and recover from concurrency issues when\n // refreshing tokens.\n console.warn(\n 'Locks API not available. You should consider using a more recent browser.',\n )\n }\n }\n\n async createKey(algs: string[]): Promise {\n return WebcryptoKey.generate(algs)\n }\n\n getRandomValues(byteLength: number): Uint8Array {\n return crypto.getRandomValues(new Uint8Array(byteLength))\n }\n\n async digest(\n data: Uint8Array,\n { name }: DigestAlgorithm,\n ): Promise {\n switch (name) {\n case 'sha256':\n case 'sha384':\n case 'sha512': {\n const buf = await crypto.subtle.digest(`SHA-${name.slice(3)}`, data)\n return new Uint8Array(buf)\n }\n default:\n throw new Error(`Unsupported digest algorithm: ${name}`)\n }\n }\n}\n","/**\n * Special error class destined to be thrown when the login process was\n * performed in a popup and should be continued in the parent/initiating window.\n */\nexport class LoginContinuedInParentWindowError extends Error {\n code = 'LOGIN_CONTINUED_IN_PARENT_WINDOW'\n constructor() {\n super('Login complete, please close the popup window.')\n }\n}\n","import { isLoopbackHost } from '@atproto/oauth-types'\n\nexport type Simplify = { [K in keyof T]: T[K] } & NonNullable\nexport type TupleUnion = {\n [S in U]: Exclude extends never\n ? [...R, S]\n : TupleUnion, [...R, S]>\n}[U]\n\n/**\n * @example\n * ```ts\n * const clientId = buildLoopbackClientId(window.location)\n * ```\n */\nexport function buildLoopbackClientId(\n location: {\n hostname: string\n pathname: string\n port: string\n },\n localhost = '127.0.0.1',\n): string {\n if (!isLoopbackHost(location.hostname)) {\n throw new TypeError(`Expected a loopback host, got ${location.hostname}`)\n }\n\n const redirectUri = `http://${location.hostname === 'localhost' ? localhost : location.hostname}${location.port && !location.port.startsWith(':') ? `:${location.port}` : location.port}${location.pathname}`\n\n return `http://localhost${\n location.pathname === '/' ? '' : location.pathname\n }?redirect_uri=${encodeURIComponent(redirectUri)}`\n}\n","import {\n type AuthorizeOptions,\n type ClientMetadata,\n type Fetch,\n OAuthCallbackError,\n OAuthClient,\n type OAuthClientOptions,\n type OAuthSession,\n type SessionGetterOptions,\n} from '@atproto/oauth-client'\nimport {\n type OAuthClientMetadataInput,\n type OAuthResponseMode,\n assertOAuthDiscoverableClientId,\n atprotoLoopbackClientMetadata,\n isOAuthClientIdLoopback,\n} from '@atproto/oauth-types'\nimport { BrowserOAuthDatabase } from './browser-oauth-database.js'\nimport { BrowserRuntimeImplementation } from './browser-runtime-implementation.js'\nimport { LoginContinuedInParentWindowError } from './errors.js'\nimport { type Simplify, buildLoopbackClientId } from './util.js'\n\nexport type BrowserOAuthClientOptions = Simplify<\n {\n clientMetadata?: Readonly\n responseMode?: Exclude\n fetch?: Fetch\n } & Omit<\n OAuthClientOptions,\n // Overridden by this lib\n | 'clientMetadata'\n | 'responseMode'\n | 'keyset'\n | 'fetch'\n // Provided by this lib\n | 'runtimeImplementation'\n | 'sessionStore'\n | 'stateStore'\n | 'didCache'\n | 'handleCache'\n | 'dpopNonceCache'\n | 'authorizationServerMetadataCache'\n | 'protectedResourceMetadataCache'\n >\n>\n\nconst NAMESPACE = `@@atproto/oauth-client-browser`\n\n//- Popup channel\n\nconst POPUP_CHANNEL_NAME = `${NAMESPACE}(popup-channel)`\nconst POPUP_STATE_PREFIX = `${NAMESPACE}(popup-state):`\n\ntype PopupChannelResultData = {\n key: string\n result: PromiseRejectedResult | PromiseFulfilledResult\n}\n\ntype PopupChannelAckData = {\n key: string\n ack: true\n}\n\ntype PopupChannelData = PopupChannelResultData | PopupChannelAckData\n\n//- State synchronization channel\n\ntype SyncChannelEventName = 'onSessionDeleted' | 'onSessionUpdated'\ntype SyncChannelMessage = {\n [K in SyncChannelEventName]: {\n name: K\n args: Parameters>\n }\n}[SyncChannelEventName]\n\nconst syncChannel = new BroadcastChannel(\n `${NAMESPACE}(synchronization-channel:2)`,\n)\n\nexport type BrowserOAuthClientLoadOptions = Simplify<\n {\n clientId: string\n signal?: AbortSignal\n } & Omit\n>\n\nconst runtimeImplementation = new BrowserRuntimeImplementation()\n\nexport class BrowserOAuthClient extends OAuthClient implements AsyncDisposable {\n static async load({ clientId, ...options }: BrowserOAuthClientLoadOptions) {\n if (clientId.startsWith('http:')) {\n const clientMetadata = atprotoLoopbackClientMetadata(clientId)\n return new BrowserOAuthClient({ clientMetadata, ...options })\n } else if (clientId.startsWith('https:')) {\n assertOAuthDiscoverableClientId(clientId)\n const clientMetadata = await OAuthClient.fetchMetadata({\n clientId,\n ...options,\n })\n return new BrowserOAuthClient({ ...options, clientMetadata })\n } else {\n throw new TypeError(`Invalid client id: ${clientId}`)\n }\n }\n\n private readonly ac = new AbortController()\n\n private readonly database: BrowserOAuthDatabase\n\n constructor({\n clientMetadata = atprotoLoopbackClientMetadata(\n buildLoopbackClientId(window.location),\n ),\n // \"fragment\" is a safer default as the query params will not be sent to the server\n responseMode = 'fragment',\n ...options\n }: BrowserOAuthClientOptions) {\n if (!globalThis.crypto?.subtle) {\n throw new Error('WebCrypto API is required')\n }\n\n if (!['query', 'fragment'].includes(responseMode)) {\n // Make sure \"form_post\" is not used as it is not supported in the browser\n throw new TypeError(`Invalid response mode: ${responseMode}`)\n }\n\n const database = new BrowserOAuthDatabase()\n\n super({\n ...options,\n\n clientMetadata,\n responseMode,\n keyset: undefined,\n\n runtimeImplementation,\n\n sessionStore: database.getSessionStore(),\n stateStore: database.getStateStore(),\n\n didCache: database.getDidCache(),\n handleCache: database.getHandleCache(),\n dpopNonceCache: database.getDpopNonceCache(),\n authorizationServerMetadataCache:\n database.getAuthorizationServerMetadataCache(),\n protectedResourceMetadataCache:\n database.getProtectedResourceMetadataCache(),\n\n onSessionDeleted: async (sub, cause) => {\n if (localStorage.getItem(`${NAMESPACE}(sub)`) === sub) {\n localStorage.removeItem(`${NAMESPACE}(sub)`)\n }\n\n syncChannel.postMessage({\n name: 'onSessionDeleted',\n args: [sub, cause],\n } satisfies SyncChannelMessage)\n\n return options.onSessionDeleted?.call(null, sub, cause)\n },\n\n onSessionUpdated: async (sub, session) => {\n syncChannel.postMessage({\n name: 'onSessionUpdated',\n args: [sub, session],\n } satisfies SyncChannelMessage)\n\n return options.onSessionUpdated?.call(null, sub, session)\n },\n })\n\n this.database = database\n\n const { signal } = this.ac\n\n // Trigger hooks when an event is emitted in another tab\n syncChannel.addEventListener(\n 'message',\n (event) => {\n if (event.source === window) return\n\n const { name, args } = event.data as SyncChannelMessage\n\n const hook = options[name]\n\n // @ts-expect-error TS has a hard time matching the args with the hook\n void hook?.(...args)\n },\n // Remove the listener when the client is disposed\n { signal },\n )\n }\n\n /**\n * This method will automatically restore any existing session, or attempt to\n * process login callback if the URL contains oauth parameters.\n *\n * Use {@link BrowserOAuthClient.initCallback} instead of this method if you\n * want to force a login callback. This can be esp. useful if you are using\n * this lib from a framework that has some kind of URL manipulation (like a\n * client side router).\n *\n * Use {@link BrowserOAuthClient.initRestore} instead of this method if you\n * want to only restore existing sessions, and bypass the automatic processing\n * of login callbacks.\n */\n async init(refresh?: boolean): Promise<\n // Session restored\n | { session: OAuthSession; state?: never }\n // Login callback processed\n | { session: OAuthSession; state: string | null }\n // No session or callback\n | undefined\n > {\n // If the URL currently contains oauth query parameters (\"state\" + \"code\" or\n // \"state\" + \"error\"), let's automatically process them.\n const params = this.readCallbackParams()\n if (params) {\n const redirectUri = this.findRedirectUrl()\n if (redirectUri) return this.initCallback(params, redirectUri)\n }\n\n return this.initRestore(refresh)\n }\n\n async initRestore(refresh?: boolean) {\n // @NOTE Fixing the location should not be needed from callback endpoints\n // since callback endpoint are required to use IP based URLs (for localhost)\n await fixLocation(this.clientMetadata)\n\n const sub = localStorage.getItem(`${NAMESPACE}(sub)`)\n if (sub) {\n try {\n const session = await this.restore(sub, refresh)\n return { session }\n } catch (err) {\n localStorage.removeItem(`${NAMESPACE}(sub)`)\n throw err\n }\n }\n }\n\n async restore(sub: string, refresh?: boolean): Promise {\n const session = await super.restore(sub, refresh)\n localStorage.setItem(`${NAMESPACE}(sub)`, session.sub)\n return session\n }\n\n async revoke(sub: string) {\n localStorage.removeItem(`${NAMESPACE}(sub)`)\n return super.revoke(sub)\n }\n\n async signIn(\n input: string,\n options?: AuthorizeOptions,\n ): Promise {\n if (options?.display === 'popup') {\n return this.signInPopup(input, options)\n } else {\n return this.signInRedirect(input, options)\n }\n }\n\n async signInRedirect(\n input: string,\n options?: AuthorizeOptions,\n ): Promise {\n const url = await this.authorize(input, options)\n\n window.location.href = url.href\n\n // back-forward cache\n return new Promise((resolve, reject) => {\n setTimeout(\n (err: Error) => {\n // Take the opportunity to proactively cancel the pending request\n this.abortRequest(url).then(\n () => reject(err),\n (reason) => reject(new AggregateError([err, reason])),\n )\n },\n 5e3,\n new Error('User navigated back'),\n )\n })\n }\n\n async signInPopup(\n input: string,\n options?: Omit & {\n popupName?: string\n popupFeatures?: string\n },\n ): Promise {\n const popupTarget = options?.popupName ?? '_blank'\n\n // Open new window asap to prevent popup busting by browsers\n const popupFeatures =\n options?.popupFeatures ?? 'width=600,height=600,menubar=no,toolbar=no'\n let popup: Window | null = window.open(\n 'about:blank',\n popupTarget,\n popupFeatures,\n )\n\n const stateKey = `${Math.random().toString(36).slice(2)}`\n\n const url = await this.authorize(input, {\n ...options,\n state: `${POPUP_STATE_PREFIX}${stateKey}`,\n display: options?.display ?? 'popup',\n })\n\n options?.signal?.throwIfAborted()\n\n if (popup) {\n popup.window.location.href = url.href\n } else {\n popup = window.open(url.href, popupTarget, popupFeatures)\n }\n\n popup?.focus()\n\n return new Promise((resolve, reject) => {\n const popupChannel = new BroadcastChannel(POPUP_CHANNEL_NAME)\n\n const cleanup = () => {\n clearTimeout(timeout)\n popupChannel.removeEventListener('message', onMessage)\n popupChannel.close()\n options?.signal?.removeEventListener('abort', cancel)\n popup?.close()\n }\n\n const cancel = () => {\n // @TODO Store fact that the request was cancelled, allowing any\n // callback (e.g. in the popup) to revoke the session or credentials.\n\n reject(new Error(options?.signal?.aborted ? 'Aborted' : 'Timeout'))\n cleanup()\n }\n\n options?.signal?.addEventListener('abort', cancel)\n\n const timeout = setTimeout(cancel, 5 * 60e3)\n\n const onMessage = async ({ data }: MessageEvent) => {\n if (data.key !== stateKey) return\n if (!('result' in data)) return\n\n // Send acknowledgment to popup window\n popupChannel.postMessage({ key: stateKey, ack: true })\n\n cleanup()\n\n const { result } = data\n if (result.status === 'fulfilled') {\n const sub = result.value\n try {\n options?.signal?.throwIfAborted()\n resolve(await this.restore(sub, false))\n } catch (err) {\n reject(err)\n void this.revoke(sub)\n }\n } else {\n const { message, params } = result.reason\n reject(new OAuthCallbackError(new URLSearchParams(params), message))\n }\n }\n\n popupChannel.addEventListener('message', onMessage)\n })\n }\n\n public findRedirectUrl() {\n for (const uri of this.clientMetadata.redirect_uris) {\n const url = new URL(uri)\n if (\n location.origin === url.origin &&\n location.pathname === url.pathname\n ) {\n return uri\n }\n }\n\n return undefined\n }\n\n public readCallbackParams(): URLSearchParams | null {\n const params =\n this.responseMode === 'fragment'\n ? new URLSearchParams(location.hash.slice(1))\n : new URLSearchParams(location.search)\n\n // Only if the current URL contains a valid oauth response params\n if (!params.has('state') || !(params.has('code') || params.has('error'))) {\n return null\n }\n\n return params\n }\n\n public async initCallback(\n params = this.readCallbackParams(),\n redirectUri = this.findRedirectUrl(),\n ): Promise<{\n session: OAuthSession\n state: string | null\n }> {\n if (!params) {\n throw new TypeError('No OAuth callback parameters found in the URL')\n }\n\n // Replace the current history entry without the params (this will prevent\n // the following code to run again if the user refreshes the page)\n if (this.responseMode === 'fragment') {\n history.replaceState(null, '', location.pathname + location.search)\n } else if (this.responseMode === 'query') {\n history.replaceState(null, '', location.pathname)\n }\n\n // Utility function to send the result of the popup to the parent window\n const sendPopupResult = (message: PopupChannelResultData) => {\n const popupChannel = new BroadcastChannel(POPUP_CHANNEL_NAME)\n\n return new Promise((resolve) => {\n const cleanup = (result: boolean) => {\n clearTimeout(timer)\n popupChannel.removeEventListener('message', onMessage)\n popupChannel.close()\n resolve(result)\n }\n\n const onMessage = ({ data }: MessageEvent) => {\n if ('ack' in data && message.key === data.key) cleanup(true)\n }\n\n popupChannel.addEventListener('message', onMessage)\n popupChannel.postMessage(message)\n // Receiving of \"ack\" should be very fast, giving it 500 ms anyway\n const timer = setTimeout(cleanup, 500, false)\n })\n }\n\n return this.callback(params, { redirect_uri: redirectUri })\n .then(async (result) => {\n if (result.state?.startsWith(POPUP_STATE_PREFIX)) {\n const receivedByParent = await sendPopupResult({\n key: result.state.slice(POPUP_STATE_PREFIX.length),\n result: {\n status: 'fulfilled',\n value: result.session.sub,\n },\n })\n\n // Revoke the credentials if the parent window was closed\n if (!receivedByParent) await result.session.signOut()\n\n throw new LoginContinuedInParentWindowError() // signInPopup\n }\n\n localStorage.setItem(`${NAMESPACE}(sub)`, result.session.sub)\n\n return result\n })\n .catch(async (err) => {\n if (\n err instanceof OAuthCallbackError &&\n err.state?.startsWith(POPUP_STATE_PREFIX)\n ) {\n await sendPopupResult({\n key: err.state.slice(POPUP_STATE_PREFIX.length),\n result: {\n status: 'rejected',\n reason: {\n message: err.message,\n params: Array.from(err.params.entries()),\n },\n },\n })\n\n throw new LoginContinuedInParentWindowError() // signInPopup\n }\n\n // Most probable cause at this point is that the \"state\" parameter is\n // invalid.\n throw err\n })\n .catch((err) => {\n if (err instanceof LoginContinuedInParentWindowError) {\n // parent will also try to close the popup\n window.close()\n }\n\n throw err\n })\n }\n\n async [Symbol.asyncDispose]() {\n try {\n this.ac.abort()\n } finally {\n await this.database[Symbol.asyncDispose]()\n }\n }\n\n async dispose() {\n await this[Symbol.asyncDispose]()\n }\n}\n\n/**\n * Since \"localhost\" is often used either in IP mode or in hostname mode,\n * and because the redirect uris must use the IP mode, we need to make sure\n * that the current location url is not using \"localhost\".\n *\n * This is required for the IndexedDB to work properly. Indeed, the IndexedDB\n * is shared by origin, so we must ensure to be on the same origin as the\n * redirect uris.\n */\nfunction fixLocation(clientMetadata: ClientMetadata) {\n if (!isOAuthClientIdLoopback(clientMetadata.client_id)) return\n if (window.location.hostname !== 'localhost') return\n\n const locationUrl = new URL(window.location.href)\n\n for (const uri of clientMetadata.redirect_uris) {\n const url = new URL(uri)\n if (\n (url.hostname === '127.0.0.1' || url.hostname === '[::1]') &&\n (!url.port || url.port === locationUrl.port) &&\n url.protocol === locationUrl.protocol &&\n url.pathname === locationUrl.pathname\n ) {\n url.port = locationUrl.port\n window.location.href = url.href\n\n // Prevent init() on the wrong origin\n throw new Error('Redirecting to loopback IP...')\n }\n }\n\n throw new Error(\n `Please use the loopback IP address instead of ${locationUrl}`,\n )\n}\n","{\n \"client_id\": \"https://diffuse.sh/latest/components/output/raw/atproto-space/oauth-client-metadata.json\",\n \"client_name\": \"Diffuse\",\n \"client_uri\": \"https://diffuse.sh\",\n \"redirect_uris\": [\"https://diffuse.sh/oauth/callback\"],\n \"scope\": \"atproto space:*?authority=self&skey=self&collection=*&action=read&action=create&action=update&action=delete&manage=create blob:application/octet-stream\",\n \"grant_types\": [\"authorization_code\", \"refresh_token\"],\n \"response_types\": [\"code\"],\n \"token_endpoint_auth_method\": \"none\",\n \"application_type\": \"web\",\n \"dpop_bound_access_tokens\": true\n}\n","import { BrowserOAuthClient } from \"@atproto/oauth-client-browser\";\n\nimport metadata from \"./oauth-client-metadata.json\" with {\n type: \"json\",\n};\n\n/**\n * @import {OAuthSession} from \"@atproto/oauth-client-browser\"\n */\n\nconst SCOPE = metadata.scope;\n\n// Local development uses a loopback client id so the redirect lands back on the\n// current origin (including the dev-server port). The loopback client id must\n// carry the redirect target in its query string and have no path; the scope is\n// passed later at sign-in. Otherwise prefer the per-component client id (e.g.\n// the cimd-service development client) provided via the environment, falling\n// back to the published client metadata.\nconst isLocalDev = location.origin.startsWith(\"http://127.0.0.1\");\n\nconst redirect_uri = location.origin + location.pathname + location.search;\n\nconst CLIENT_ID = isLocalDev\n ? `http://localhost/?redirect_uri=${encodeURIComponent(redirect_uri)}&scope=${\n encodeURIComponent(SCOPE)\n }`\n : /** @type {any} */ (import.meta).env?.ATPROTO_SPACE_CLIENT_ID ??\n metadata.client_id;\n\n/** @type {Promise | null} */\nlet clientPromise = null;\n\n/**\n * Lazily create the browser OAuth client, configured with the space-aware\n * client metadata. The client persists its session (DPoP keys, token set) in\n * IndexedDB keyed by `client_id`.\n */\nfunction client() {\n // `load` derives the client metadata (including the default scope) from the\n // published `client_id`, so no metadata is supplied here. A handle resolver\n // is required so the client can resolve handles to DIDs; it mirrors the URL\n // used by the other AT Protocol outputs.\n clientPromise ??= BrowserOAuthClient.load({\n clientId: CLIENT_ID,\n handleResolver: \"https://public.api.bsky.app\",\n });\n\n return clientPromise;\n}\n\n// LOGIN\n// =====\n\n/**\n * Initiate the OAuth authorization flow for a given handle.\n *\n * @param {string} handle\n * @returns {Promise}\n */\nexport function login(handle) {\n // Store the return path so the shared `/oauth/callback` page can send the\n // user back here (with the OAuth response fragment) once the authorization\n // server redirects. Without this the callback falls back to `/`, which\n // resolves to the latest version instead of the facet the user launched from.\n localStorage.setItem(\n \"oauth/callback/redirect_path\",\n location.pathname + location.search,\n );\n\n return client().then((c) => c.signIn(handle, { scope: SCOPE }));\n}\n\n// SESSION RESTORE / CALLBACK\n// ==========================\n\n/**\n * Attempt to restore an existing session or finalize an OAuth callback.\n *\n * @returns {Promise}\n */\nexport async function restoreOrFinalize() {\n const c = await client();\n\n // In production the PDS redirects back to the registered\n // `/oauth/callback` URI, and the shared callback page then forwards us here\n // (the facet loader) with the OAuth response preserved in the URL hash. That\n // forwarding changes `location.pathname`, so `init()`'s internal\n // `findRedirectUrl()` no longer matches the registered redirect URI and it\n // silently skips the callback. Detect the response ourselves and finalize it\n // directly; `initCallback` falls back to `clientMetadata.redirect_uris[0]`\n // for the token exchange, which is the same URI `authorize` used.\n const params = c.readCallbackParams();\n if (params) {\n const result = await c.initCallback(params);\n return result.session ?? null;\n }\n\n // No OAuth response in the URL: restore any previously stored session.\n const result = await c.init();\n return result?.session ?? null;\n}\n\n// LOGOUT\n// ======\n\n/**\n * Sign out and revoke the current session.\n *\n * @param {OAuthSession} session\n */\nexport async function logout(session) {\n await session.signOut();\n}\n"],"mappings":"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","names":["require_global_this","__commonJSMin","exports","module","check","__name","it","require_path","__commonJSMin","exports","module","globalThis","require_fails","__commonJSMin","exports","module","exec","require_function_bind_native","__commonJSMin","exports","module","fails","test","require_function_uncurry_this","__commonJSMin","exports","module","NATIVE_BIND","FunctionPrototype","call","uncurryThisWithBind","fn","require_is_null_or_undefined","__commonJSMin","exports","module","it","require_require_object_coercible","__commonJSMin","exports","module","isNullOrUndefined","$TypeError","it","require_to_object","__commonJSMin","exports","module","requireObjectCoercible","$Object","argument","require_has_own_property","__commonJSMin","exports","module","uncurryThis","toObject","hasOwnProperty","__name","it","key","require_is_pure","__commonJSMin","exports","module","require_define_global_property","__commonJSMin","exports","module","globalThis","defineProperty","key","value","require_shared_store","__commonJSMin","exports","module","IS_PURE","globalThis","defineGlobalProperty","SHARED","store","require_shared","__commonJSMin","exports","module","store","create","key","value","require_uid","__commonJSMin","exports","module","uncurryThis","id","postfix","toString","key","require_environment_user_agent","__commonJSMin","exports","module","globalThis","navigator","userAgent","require_environment_v8_version","__commonJSMin","exports","module","globalThis","userAgent","process","Deno","versions","v8","match","version","require_symbol_constructor_detection","__commonJSMin","exports","module","V8_VERSION","fails","globalThis","$String","symbol","require_use_symbol_as_uid","__commonJSMin","exports","module","NATIVE_SYMBOL","require_well_known_symbol","__commonJSMin","exports","module","globalThis","shared","hasOwn","uid","NATIVE_SYMBOL","USE_SYMBOL_AS_UID","Symbol","WellKnownSymbolsStore","createWellKnownSymbol","name","require_well_known_symbol_wrapped","__commonJSMin","exports","wellKnownSymbol","require_descriptors","__commonJSMin","exports","module","fails","__name","require_is_callable","__commonJSMin","exports","module","documentAll","argument","require_is_object","__commonJSMin","exports","module","isCallable","it","require_document_create_element","__commonJSMin","exports","module","globalThis","isObject","document","EXISTS","it","require_ie8_dom_define","__commonJSMin","exports","module","DESCRIPTORS","fails","createElement","__name","require_v8_prototype_define_bug","__commonJSMin","exports","module","DESCRIPTORS","fails","require_an_object","__commonJSMin","exports","module","isObject","$String","$TypeError","argument","require_function_call","__commonJSMin","exports","module","NATIVE_BIND","call","require_get_built_in","__commonJSMin","exports","module","globalThis","isCallable","aFunction","__name","argument","namespace","method","require_object_is_prototype_of","__commonJSMin","exports","module","uncurryThis","require_is_symbol","__commonJSMin","exports","module","getBuiltIn","isCallable","isPrototypeOf","USE_SYMBOL_AS_UID","$Object","it","$Symbol","require_try_to_string","__commonJSMin","exports","module","$String","argument","require_a_callable","__commonJSMin","exports","module","isCallable","tryToString","$TypeError","argument","require_get_method","__commonJSMin","exports","module","aCallable","isNullOrUndefined","V","P","func","require_ordinary_to_primitive","__commonJSMin","exports","module","call","isCallable","isObject","$TypeError","input","pref","fn","val","require_to_primitive","__commonJSMin","exports","module","call","isObject","isSymbol","getMethod","ordinaryToPrimitive","wellKnownSymbol","$TypeError","TO_PRIMITIVE","input","pref","exoticToPrim","result","require_to_property_key","__commonJSMin","exports","module","toPrimitive","isSymbol","argument","key","require_object_define_property","__commonJSMin","exports","DESCRIPTORS","IE8_DOM_DEFINE","V8_PROTOTYPE_DEFINE_BUG","anObject","toPropertyKey","$TypeError","$defineProperty","$getOwnPropertyDescriptor","ENUMERABLE","CONFIGURABLE","WRITABLE","__name","O","P","Attributes","current","require_well_known_symbol_define","__commonJSMin","exports","module","path","hasOwn","wrappedWellKnownSymbolModule","defineProperty","NAME","Symbol","require_object_property_is_enumerable","__commonJSMin","exports","$propertyIsEnumerable","getOwnPropertyDescriptor","NASHORN_BUG","__name","V","descriptor","require_create_property_descriptor","__commonJSMin","exports","module","bitmap","value","require_classof_raw","__commonJSMin","exports","module","uncurryThis","toString","stringSlice","it","require_indexed_object","__commonJSMin","exports","module","uncurryThis","fails","classof","$Object","split","it","require_to_indexed_object","__commonJSMin","exports","module","IndexedObject","requireObjectCoercible","it","require_object_get_own_property_descriptor","__commonJSMin","exports","DESCRIPTORS","call","propertyIsEnumerableModule","createPropertyDescriptor","toIndexedObject","toPropertyKey","hasOwn","IE8_DOM_DEFINE","$getOwnPropertyDescriptor","__name","O","P","require_es_symbol_async_dispose","__commonJSMin","globalThis","defineWellKnownSymbol","defineProperty","getOwnPropertyDescriptor","Symbol","descriptor","require_async_dispose","__commonJSMin","exports","module","WrappedWellKnownSymbolModule","require_es_symbol_dispose","__commonJSMin","globalThis","defineWellKnownSymbol","defineProperty","getOwnPropertyDescriptor","Symbol","descriptor","require_dispose","__commonJSMin","exports","module","WrappedWellKnownSymbolModule","import_async_dispose","import_dispose","external_exports","__export","BRAND","DIRTY","EMPTY_PATH","INVALID","NEVER","OK","ParseStatus","ZodType","ZodAny","ZodArray","ZodBigInt","ZodBoolean","ZodBranded","ZodCatch","ZodDate","ZodDefault","ZodDiscriminatedUnion","ZodEffects","ZodEnum","ZodError","ZodFirstPartyTypeKind","ZodFunction","ZodIntersection","ZodIssueCode","ZodLazy","ZodLiteral","ZodMap","ZodNaN","ZodNativeEnum","ZodNever","ZodNull","ZodNullable","ZodNumber","ZodObject","ZodOptional","ZodParsedType","ZodPipeline","ZodPromise","ZodReadonly","ZodRecord","ZodSet","ZodString","ZodSymbol","ZodTuple","ZodUndefined","ZodUnion","ZodUnknown","ZodVoid","addIssueToContext","anyType","arrayType","bigIntType","booleanType","coerce","custom","dateType","datetimeRegex","en_default","discriminatedUnionType","effectsType","enumType","functionType","getErrorMap","getParsedType","instanceOfType","intersectionType","isAborted","isAsync","isDirty","isValid","late","lazyType","literalType","makeIssue","mapType","nanType","nativeEnumType","neverType","nullType","nullableType","numberType","objectType","objectUtil","oboolean","onumber","optionalType","ostring","pipelineType","preprocessType","promiseType","quotelessJson","recordType","setType","setErrorMap","strictObjectType","stringType","symbolType","tupleType","undefinedType","unionType","unknownType","util","voidType","util","_","assertIs","_arg","__name","assertNever","_x","items","obj","item","validKeys","k","filtered","e","object","keys","key","arr","checker","val","joinValues","array","separator","value","objectUtil","first","second","ZodParsedType","getParsedType","data","ZodIssueCode","util","quotelessJson","__name","obj","ZodError","_ZodError","issues","sub","subs","actualProto","_mapper","mapper","issue","fieldErrors","processError","error","curr","i","el","value","formErrors","firstEl","errorMap","__name","issue","_ctx","message","ZodIssueCode","ZodParsedType","util","en_default","overrideErrorMap","en_default","setErrorMap","map","overrideErrorMap","__name","getErrorMap","makeIssue","__name","params","data","path","errorMaps","issueData","fullPath","fullIssue","errorMessage","maps","m","map","EMPTY_PATH","addIssueToContext","ctx","overrideMap","getErrorMap","issue","en_default","x","ParseStatus","_ParseStatus","status","results","arrayValue","s","INVALID","pairs","syncPairs","pair","key","value","finalObject","DIRTY","OK","isAborted","isDirty","isValid","isAsync","errorUtil","message","ParseInputLazyPath","__name","parent","value","path","key","handleResult","ctx","result","isValid","error","ZodError","processCreateParams","params","errorMap","invalid_type_error","required_error","description","iss","message","ZodType","input","getParsedType","ParseStatus","isAsync","data","err","maybeAsyncResult","check","getIssueProperties","val","setError","ZodIssueCode","refinementData","refinement","ZodEffects","ZodFirstPartyTypeKind","def","ZodOptional","ZodNullable","ZodArray","ZodPromise","option","ZodUnion","incoming","ZodIntersection","transform","defaultValueFunc","ZodDefault","ZodBranded","catchValueFunc","ZodCatch","This","target","ZodPipeline","ZodReadonly","cuidRegex","cuid2Regex","ulidRegex","uuidRegex","nanoidRegex","jwtRegex","durationRegex","emailRegex","_emojiRegex","emojiRegex","ipv4Regex","ipv4CidrRegex","ipv6Regex","ipv6CidrRegex","base64Regex","base64urlRegex","dateRegexSource","dateRegex","timeRegexSource","args","secondsRegexSource","secondsQuantifier","timeRegex","datetimeRegex","regex","opts","isValidIP","ip","version","isValidJWT","jwt","alg","header","base64","decoded","isValidCidr","ZodString","_ZodString","ZodParsedType","addIssueToContext","INVALID","status","tooBig","tooSmall","util","validation","errorUtil","options","minLength","maxLength","len","ch","min","max","floatSafeRemainder","step","valDecCount","stepDecCount","decCount","valInt","stepInt","ZodNumber","_ZodNumber","kind","inclusive","ZodBigInt","_ZodBigInt","ZodBoolean","OK","ZodDate","_ZodDate","minDate","maxDate","ZodSymbol","ZodUndefined","ZodNull","ZodAny","ZodUnknown","ZodNever","ZodVoid","_ZodArray","item","i","schema","deepPartialify","ZodObject","newShape","fieldSchema","ZodTuple","_ZodObject","shape","keys","shapeKeys","extraKeys","pairs","keyValidator","unknownKeys","catchall","syncPairs","pair","issue","defaultError","augmentation","merging","index","mask","newField","createZodEnum","handleResults","results","unionErrors","childCtx","dirty","issues","types","getDiscriminator","type","ZodLazy","ZodLiteral","ZodEnum","ZodNativeEnum","ZodDiscriminatedUnion","_ZodDiscriminatedUnion","discriminator","discriminatorValue","optionsMap","discriminatorValues","mergeValues","a","b","aType","bType","bKeys","sharedKeys","newObj","sharedValue","newArray","itemA","itemB","handleParsed","parsedLeft","parsedRight","isAborted","merged","isDirty","left","right","_ZodTuple","items","itemIndex","x","rest","schemas","ZodRecord","_ZodRecord","keyType","valueType","first","second","third","ZodMap","finalMap","ZodSet","_ZodSet","finalizeSet","elements","parsedSet","element","minSize","maxSize","size","ZodFunction","_ZodFunction","makeArgsIssue","makeIssue","getErrorMap","en_default","makeReturnsIssue","returns","fn","me","parsedArgs","e","parsedReturns","returnType","func","getter","values","_ZodEnum","expectedValues","enumValues","newDef","opt","nativeEnumValues","promisified","effect","checkCtx","arg","processed","DIRTY","executeRefinement","acc","inner","base","preprocess","ZodOptional","ZodType","__name","input","ZodParsedType","OK","type","params","ZodFirstPartyTypeKind","processCreateParams","ZodNullable","ZodDefault","ctx","data","ZodCatch","newCtx","result","isAsync","ZodError","ZodNaN","addIssueToContext","ZodIssueCode","INVALID","BRAND","ZodBranded","ZodPipeline","_ZodPipeline","status","inResult","DIRTY","a","b","ZodReadonly","freeze","isValid","cleanParams","p","custom","check","_params","fatal","ZodAny","r","_fatal","late","ZodObject","ZodFirstPartyTypeKind","instanceOfType","__name","cls","params","custom","data","stringType","ZodString","numberType","ZodNumber","nanType","ZodNaN","bigIntType","ZodBigInt","booleanType","ZodBoolean","dateType","ZodDate","symbolType","ZodSymbol","undefinedType","ZodUndefined","nullType","ZodNull","anyType","ZodAny","unknownType","ZodUnknown","neverType","ZodNever","voidType","ZodVoid","arrayType","ZodArray","objectType","ZodObject","strictObjectType","unionType","ZodUnion","discriminatedUnionType","ZodDiscriminatedUnion","intersectionType","ZodIntersection","tupleType","ZodTuple","recordType","ZodRecord","mapType","ZodMap","setType","ZodSet","functionType","ZodFunction","lazyType","ZodLazy","literalType","ZodLiteral","enumType","ZodEnum","nativeEnumType","ZodNativeEnum","promiseType","ZodPromise","effectsType","ZodEffects","optionalType","ZodOptional","nullableType","ZodNullable","preprocessType","pipelineType","ZodPipeline","ostring","onumber","oboolean","coerce","arg","NEVER","INVALID","ERR_JWKS_NO_MATCHING_KEY","ERR_JWK_INVALID","ERR_JWK_NOT_FOUND","ERR_JWT_INVALID","ERR_JWT_CREATE","ERR_JWT_VERIFY","JwkError","__name","message","code","options","JwtCreateError","_JwtCreateError","cause","JwtVerifyError","_JwtVerifyError","empty","equals","aa","bb","ii","__name","coerce","o","base","ALPHABET","name","BASE_MAP","j","i","x","xc","BASE","LEADER","FACTOR","iFACTOR","encode","source","zeroes","length","pbegin","pend","size","b58","carry","it1","it2","str","__name","decodeUnsafe","psz","b256","it3","it4","vch","decode","string","buffer","src","_brrp__multiformats_scope_baseX","base_x_default","Encoder","__name","name","prefix","baseEncode","bytes","Decoder","baseDecode","prefixCodePoint","text","decoder","or","ComposedDecoder","decoders","input","left","right","Codec","from","encode","decode","baseX","alphabet","base_x_default","coerce","string","alphabetIdx","bitsPerChar","end","out","bits","buffer","written","i","value","data","pad","mask","createAlphabetIdx","rfc4648","base64","rfc4648","base64pad","base64url","base64urlpad","isDefined","__name","i","preferredOrderCmp","order","a","b","aIdx","bIdx","matchesAny","value","v","cachedGetter","target","_context","decoder","parseB64uJson","input","inputBytes","base64url","json","jwtCharsRefinement","data","ctx","char","invalidChar","ZodIssueCode","segmentedStringRefinementFactory","count","minPartLength","minTotalLength","errorPrefix","currentStart","nextDot","isLastOccurrence","arr","PUBLIC_KEY_USAGE","publicKeyUsageSchema","external_exports","isPublicKeyUsage","usage","__name","isSigKeyUsage","v","isEncKeyUsage","PRIVATE_KEY_USAGE","privateKeyUsageSchema","isPrivateKeyUsage","KEY_USAGE","keyUsageSchema","jwkBaseSchema","ops","isLastOccurrence","jwkRsaKeySchema","jwkEcKeySchema","jwkEcSecp256k1KeySchema","jwkOkpKeySchema","jwkSymKeySchema","jwkSchema","k","isPublicJwk","isPrivateJwk","jwkPubSchema","jwkSchema","hasKid","isPublicJwk","k","isPublicKeyUsage","jwkPrivateSchema","isPrivateJwk","jwk","__name","hasSharedSecretJwk","hasPrivateSecretJwk","process","IS_NODE_RUNTIME","jwkAlgorithms","jwk","jwkSupportsEnc","jwkSupportsSig","crv","JwkError","__name","isEncKeyUsage","isSigKeyUsage","jwksSchema","external_exports","input","item","jwkSchema","res","jwksPubSchema","jwkPubSchema","signedJwtSchema","external_exports","jwtCharsRefinement","segmentedStringRefinementFactory","unsignedJwtSchema","external_exports","jwtCharsRefinement","segmentedStringRefinementFactory","jwtHeaderSchema","external_exports","htuSchema","value","ctx","url","jwtPayloadSchema","jwkPubSchema","unsafeDecodeJwt","jwt","headerEnc","payloadEnc","length","JwtVerifyError","ERR_JWT_INVALID","header","jwtHeaderSchema","parseB64uJson","payload","jwtPayloadSchema","__name","Key","__name","cachedGetter","__esDecorate","_get_isPrivate_decorators","obj","_metadata","_instanceExtraInitializers","_get_isSymetric_decorators","_get_publicJwk_decorators","_get_bareJwk_decorators","_get_algorithms_decorators","jwk","__runInitializers","isPrivateJwk","hasSharedSecretJwk","validated","jwkPubSchema","buildPublicKeyOps","PUBLIC_KEY_USAGE","kty","crv","e","n","x","y","jwkSchema","jwkAlgorithms","options","tolerance","now","exp","nbf","opts","a","isSigKeyUsage","isEncKeyUsage","isPublicKeyUsage","buildPublicKeyOps","keyUsages","publicOps","isPublicKeyUsage","__name","extractPrivateJwk","__name","key","extractPublicJwk","Keyset","__esDecorate","_get_signAlgorithms_decorators","obj","_metadata","_instanceExtraInitializers","_get_publicJwks_decorators","_get_privateJwks_decorators","iterable","preferredSigningAlgorithms","__runInitializers","keys","keyIds","JwkError","algorithms","alg","preferredOrderCmp","isDefined","kid","options","ERR_JWK_NOT_FOUND","usage","matchingKeys","isAllowedAlg","matchesAny","candidates","prefAlg","matchingKey","matchingAlgs","cachedGetter","sAlg","sKid","header","payload","protectedHeader","err","JwtCreateError","token","unsafeDecodeJwt","errors","JwtVerifyError","ERR_JWKS_NO_MATCHING_KEY","ERR_JWT_INVALID","webcrypto_default","isCryptoKey","__name","key","encoder","decoder","MAX_INT32","concat","buffers","size","acc","length","buf","i","buffer","__name","encodeBase64","__name","input","unencoded","encoder","CHUNK_SIZE","arr","i","encode","decodeBase64","encoded","binary","bytes","decode","decoder","errors_exports","__export","JOSEAlgNotAllowed","JOSEError","JOSENotSupported","JWEDecryptionFailed","JWEInvalid","JWKInvalid","JWKSInvalid","JWKSMultipleMatchingKeys","JWKSNoMatchingKey","JWKSTimeout","JWSInvalid","JWSSignatureVerificationFailed","JWTClaimValidationFailed","JWTExpired","JWTInvalid","JOSEError","__name","message","options","JWTClaimValidationFailed","payload","claim","reason","JWTExpired","JOSEAlgNotAllowed","JOSENotSupported","JWEDecryptionFailed","JWEInvalid","JWSInvalid","JWTInvalid","JWKInvalid","JWKSInvalid","JWKSNoMatchingKey","JWKSMultipleMatchingKeys","JWKSTimeout","JWSSignatureVerificationFailed","random_default","webcrypto_default","unusable","name","prop","__name","isAlgorithm","algorithm","getHashLength","hash","getNamedCurve","alg","checkUsage","key","usages","expected","msg","last","checkSigCryptoKey","message","msg","actual","types","last","__name","invalid_key_input_default","withAlg","alg","is_key_like_default","__name","key","isCryptoKey","types","isDisjoint","__name","headers","sources","acc","header","parameters","parameter","is_disjoint_default","isObjectLike","value","__name","isObject","input","proto","check_key_length_default","__name","alg","key","modulusLength","isJWK","key","isObject","__name","isPrivateJWK","isPublicJWK","isSecretJWK","subtleMapping","jwk","algorithm","keyUsages","JOSENotSupported","__name","parse","rest","keyData","webcrypto_default","jwk_to_key_default","exportKeyValue","__name","k","decode","privCache","pubCache","isKeyObject","key","importAndCache","cache","jwk","alg","freeze","cached","cryptoKey","jwk_to_key_default","normalizePublicKey","isJWK","normalizePrivateKey","normalize_key_default","findOid","__name","keyData","oid","from","i","sub","value","index","getNamedCurve","JOSENotSupported","genericImport","replace","keyFormat","pem","alg","options","algorithm","keyUsages","c","isPublic","namedCurve","webcrypto_default","fromPKCS8","importPKCS8","pkcs8","alg","options","fromPKCS8","__name","importJWK","jwk","isObject","decode","JOSENotSupported","jwk_to_key_default","tag","__name","key","jwkMatchesOp","alg","usage","symmetricTypeCheck","allowJwk","isJWK","isSecretJWK","is_key_like_default","withAlg","types","asymmetricTypeCheck","isPrivateJWK","isPublicJWK","checkKeyType","check_key_type_default","checkKeyTypeWithJwk","validateCrit","Err","recognizedDefault","recognizedOption","protectedHeader","joseHeader","input","recognized","parameter","JOSENotSupported","__name","validate_crit_default","validateAlgorithms","__name","option","algorithms","s","validate_algorithms_default","keyToJWK","__name","key","encode","isCryptoKey","invalid_key_input_default","types","ext","key_ops","alg","use","jwk","webcrypto_default","key_to_jwk_default","exportJWK","key","key_to_jwk_default","__name","subtleDsa","alg","algorithm","hash","JOSENotSupported","__name","getCryptoKey","alg","key","usage","normalize_key_default","isCryptoKey","checkSigCryptoKey","invalid_key_input_default","types","webcrypto_default","__name","verify","__name","alg","key","signature","data","cryptoKey","getCryptoKey","check_key_length_default","algorithm","subtleDsa","webcrypto_default","verify_default","flattenedVerify","jws","key","options","isObject","JWSInvalid","parsedProt","protectedHeader","decode","decoder","is_disjoint_default","joseHeader","extensions","validate_crit_default","b64","alg","algorithms","validate_algorithms_default","JOSEAlgNotAllowed","resolvedKey","checkKeyTypeWithJwk","isJWK","importJWK","data","concat","encoder","signature","verify_default","JWSSignatureVerificationFailed","payload","result","__name","compactVerify","jws","key","options","decoder","JWSInvalid","protectedHeader","payload","signature","length","verified","flattenedVerify","result","__name","epoch_default","__name","date","REGEX","secs_default","__name","str","matched","value","unit","numericDate","normalizeTyp","__name","value","checkAudiencePresence","audPayload","audOption","jwt_claims_set_default","protectedHeader","encodedPayload","options","payload","decoder","isObject","JWTInvalid","typ","JWTClaimValidationFailed","requiredClaims","issuer","subject","audience","maxTokenAge","presenceCheck","claim","tolerance","secs_default","currentDate","now","epoch_default","JWTExpired","age","max","jwtVerify","jwt","key","options","verified","compactVerify","JWTInvalid","result","jwt_claims_set_default","__name","sign","__name","alg","key","data","cryptoKey","getCryptoKey","check_key_length_default","signature","webcrypto_default","subtleDsa","sign_default","FlattenedSign","__name","payload","protectedHeader","unprotectedHeader","key","options","JWSInvalid","is_disjoint_default","joseHeader","extensions","validate_crit_default","b64","alg","checkKeyTypeWithJwk","encoder","encode","data","concat","signature","sign_default","jws","decoder","CompactSign","__name","payload","FlattenedSign","protectedHeader","key","options","jws","validateInput","label","input","__name","ProduceJWT","payload","isObject","issuer","subject","audience","jwtId","epoch_default","secs_default","SignJWT","ProduceJWT","__name","protectedHeader","key","options","sig","CompactSign","encoder","JWTInvalid","USER_AGENT","getModulusLengthOption","options","modulusLength","JOSENotSupported","__name","generateKeyPair","alg","algorithm","keyUsages","crv","webcrypto_default","generateKeyPair","alg","options","__name","either","a","b","__name","JOSEError","errors_exports","JoseKey","_JoseKey","Key","__name","alg","JwkError","importJWK","cause","header","payload","kid","JwtCreateError","keyObj","SignJWT","JOSEError","token","options","result","jwtVerify","headerParsed","jwtHeaderSchema","JwtVerifyError","payloadParsed","jwtPayloadSchema","allowedAlgos","errors","generateKeyPair","err","kp","input","keyLike","jwk","exportJWK","pem","importPKCS8","inputKid","either","isPrivateJwk","jwkSchema","fromSubtleAlgorithm","algorithm","hash","namedCurve","__name","isCryptoKeyPair","v","extractable","WebcryptoKey","_WebcryptoKey","JoseKey","__name","allowedAlgos","kid","options","keyPair","isCryptoKeyPair","cryptoKeyPair","alg","fromSubtleAlgorithm","jwk","jwkSchema","JwkError","import_dispose","ifNumber","__name","value","DidError","_DidError","__name","did","message","code","status","cause","ifNumber","InvalidDidError","DID_PREFIX","DID_PREFIX_LENGTH","assertDidMethod","input","start","end","InvalidDidError","c","i","__name","extractDidMethod","did","msidSep","DID_PREFIX_LENGTH","assertDidMsid","assertDid","length","DID_PREFIX","idSep","didSchema","external_exports","value","ctx","assertDid","err","isFragment","value","startIdx","endIdx","charCode","i","isHexDigit","__name","code","canParse","url","base","DID_PLC_PREFIX","DID_PLC_PREFIX_LENGTH","DID_PLC_LENGTH","isDidPlc","input","DID_PLC_LENGTH","DID_PLC_PREFIX","i","DID_PLC_PREFIX_LENGTH","isBase32Char","__name","assertDidPlc","input","InvalidDidError","DID_PLC_PREFIX","DID_PLC_LENGTH","i","DID_PLC_PREFIX_LENGTH","isBase32Char","__name","c","DID_WEB_PREFIX","isDidWeb","input","assertDidMsid","canParse","buildDidWebUrl","__name","assertDidWeb","input","InvalidDidError","DID_WEB_PREFIX","assertDidMsid","canParse","buildDidWebUrl","__name","didWebToUrl","did","cause","buildDidWebUrl","did","hostIdx","DID_WEB_PREFIX","pathIdx","host","path","__name","matchesIdentifier","did","id","candidate","__name","atprotoDidSchema","external_exports","isAtprotoDid","input","isDidPlc","isAtprotoDidWeb","__name","assertAtprotoDid","input","InvalidDidError","DID_PLC_PREFIX","assertDidPlc","DID_WEB_PREFIX","assertAtprotoDidWeb","__name","assertDidWeb","isDidWebWithPath","isDidWebWithHttpsPort","isAtprotoDidWeb","isDidWeb","did","isLocalhostDid","pathIdx","extractPdsUrl","document","service","isAtprotoPersonalDataServerService","DidError","__name","isAtprotoPersonalDataServerService","service","canParse","matchesIdentifier","__name","ATPROTO_VERIFICATION_METHOD_TYPES","rfc3968UriSchema","external_exports","didControllerSchema","didSchema","didRelativeUriSchema","value","fragmentIndex","isFragment","didVerificationMethodSchema","didServiceIdSchema","didServiceTypeSchema","didServiceEndpointSchema","didServiceSchema","verificationMethodReference","didDocumentSchema","data","didDocumentValidator","did","service","ctx","visited","i","current","serviceId","assert","condition","message","__name","returnTrue","__name","returnFalse","CachedGetter","#pending","#getter","#store","#options","getter","store","options","key","signal","context","allowStale","noCache","isStale","deleteOnError","allowStored","value","previousExecutionFlow","isFresh","currentExecutionFlow","storedValue","err","error","assert","_cause","logStoreError","__name","err","operation","swallowStoreErrors","store","onError","key","options","value","perf","warned","PROCESS","emitWarning","__name","msg","type","code","fn","AC","AS","_","warnACPolyfill","reason","printACPolyfillWarning","shouldWarn","isPosInt","__name","n","getUintArray","max","ZeroArray","size","Stack","_Stack","#constructing","HeapCls","s","LRUCache","_LRUCache","#max","#maxSize","#dispose","#disposeAfter","#fetchMethod","#memoMethod","#size","#calculatedSize","#keyMap","#keyList","#valList","#next","#prev","#head","#tail","#free","#disposed","#sizes","#starts","#ttls","#hasDispose","#hasFetchMethod","#hasDisposeAfter","c","p","#isBackgroundFetch","k","index","options","context","#backgroundFetch","#moveToTail","#indexes","#rindexes","#isStale","ttl","ttlResolution","ttlAutopurge","updateAgeOnGet","updateAgeOnHas","allowStale","dispose","disposeAfter","noDisposeOnSet","noUpdateTTL","maxSize","maxEntrySize","sizeCalculation","fetchMethod","memoMethod","noDeleteOnFetchRejection","noDeleteOnStaleGet","allowStaleOnFetchRejection","allowStaleOnFetchAbort","ignoreFetchAbort","UintArray","#initializeSizeTracking","#initializeTTLTracking","code","shouldWarn","warned","emitWarning","key","ttls","starts","#setItemTTL","start","perf","t","#delete","#updateItemAge","#statusTTL","status","cachedNow","getNow","age","sizes","#removeItemSize","#requireSize","v","#addItemSize","#evict","_i","_s","_st","_k","_v","i","#isValidIndex","fn","getOptions","value","thisp","deleted","entry","remain","arr","setOptions","oldVal","oldValue","dt","task","val","free","head","hasOptions","peekOptions","ac","AC","signal","fetchOpts","cb","updateCache","aborted","ignoreAbort","fetchFail","bf","eb","er","allowStaleAborted","noDelete","pcall","res","rej","fmp","b","fetchOptions","forceRefresh","stale","isStale","staleVal","memoOptions","vv","fetching","#connect","reason","#clear","pi","ni","knownSizes","roughSizeOfObject","value","objectList","stack","bytes","keys","i","key","val","__name","nullSymbol","toLruValue","__name","value","fromLruValue","SimpleStoreMemory","#cache","sizeCalculation","options","LRUCache","key","roughSizeOfObject","DEFAULT_TTL","DEFAULT_MAX_SIZE","DidCacheMemory","SimpleStoreMemory","__name","options","DidResolverCached","__name","resolver","cache","DidCacheMemory","onDidCacheError","CachedGetter","did","options","swallowStoreErrors","FetchError","__name","statusCode","message","options","toRequestTransformer","requestTransformer","input","init","asRequest","__name","ifString","__name","v","MaxBytesTransformStream","maxBytes","bytesRead","chunk","ctrl","cancelBody","body","onCancellationError","logCancellationError","__name","err","FetchRequestError","_FetchRequestError","FetchError","__name","request","statusCode","message","options","info","extractInfo","extractRootCause","cause","err","code","pipe","pipeline","pipeTwo","__name","first","second","args","TransformedResponse","__name","#response","response","transform","JSON_MIME","FetchResponseError","_FetchResponseError","FetchError","__name","response","statusCode","message","options","customMessage","extractResponseMessage","mimeType","extractMime","json","errorDescription","ifString","error","peekJson","maxSize","checkLength","clonedResponse","TransformedResponse","MaxBytesTransformStream","maxBytes","length","extractLength","contentLength","contentType","cancelBodyOnError","transformer","onCancellationError","logCancellationError","err","cancelBody","fetchOkProcessor","fetchOkTransformer","fetchTypeProcessor","expectedMime","contentTypeRequired","isExpected","mimeType","cancelBodyOnError","response","fetchResponseTypeChecker","__name","isExpectedMime","extractMime","FetchResponseError","fetchResponseJsonTransformer","json","cause","fetchJsonProcessor","JSON_MIME","pipe","fetchJsonValidatorProcessor","schema","params","jsonResponse","fetchJsonZodProcessor","bindFetch","fetch","context","toRequestTransformer","request","err","FetchRequestError","__name","DidResolverBase","__name","methods","did","options","method","extractDidMethod","resolver","DidError","document","err","FetchResponseError","status","FetchError","ZodError","fetchSuccessHandler","pipe","fetchOkProcessor","fetchJsonProcessor","fetchJsonZodProcessor","didDocumentValidator","DidPlcMethod","__name","options","bindFetch","did","assertDidPlc","url","fetchSuccessHandler","pipe","fetchOkProcessor","fetchJsonProcessor","fetchJsonZodProcessor","didDocumentValidator","DidWebMethod","__name","fetch","allowHttp","bindFetch","did","options","didDocumentUrl","buildDidWebDocumentUrl","DidError","url","didWebToUrl","DidResolverCommon","DidResolverBase","__name","options","DidPlcMethod","DidWebMethod","createDidResolver","options","didResolver","didCache","onDidCacheError","DidResolverCached","DidResolverCommon","__name","HandleResolverError","__name","isResolvedHandle","value","isAtprotoDid","__name","xrpcErrorSchema","external_exports","XrpcHandleResolver","__name","service","options","handle","url","response","payload","error","data","HandleResolverError","value","isResolvedHandle","CachedHandleResolver","__name","resolver","cache","SimpleStoreMemory","onHandleCacheError","CachedGetter","handle","options","swallowStoreErrors","createHandleResolver","options","handleResolver","handleCache","onHandleCacheError","CachedHandleResolver","XrpcHandleResolver","__name","CLIENT_ASSERTION_TYPE_JWT_BEARER","canParseUrl","urlStr","isHostnameIP","hostname","__name","isLoopbackHost","host","isLocalHostname","parts","tld","extractUrlPath","url","endOfProtocol","hashIdx","questionIdx","queryStrIdx","pathEnd","slashIdx","pathStart","__name","jsonObjectPreprocess","val","numberPreprocess","number","isSpaceSeparatedValue","__name","value","input","inputLength","valueLength","idx","idxEnd","dangerousUriSchema","external_exports","data","canParseUrl","loopbackUriSchema","value","ctx","ZodIssueCode","url","isLoopbackHost","httpsUriSchema","isHostnameIP","webUriSchema","result","privateUseUriSchema","dotIdx","colonIdx","urlDomain","isLocalHostname","DEFAULT_LOOPBACK_CLIENT_REDIRECT_URIS","OAUTH_SCOPE_REGEXP","isOAuthScope","__name","input","oauthScopeSchema","external_exports","ATPROTO_SCOPE_VALUE","isAtprotoOAuthScope","input","isOAuthScope","isSpaceSeparatedValue","__name","atprotoOAuthScopeSchema","external_exports","isAtprotoOAuthScope","DEFAULT_ATPROTO_OAUTH_SCOPE","ATPROTO_SCOPE_VALUE","oauthClientIdSchema","external_exports","loopbackRedirectURISchema","loopbackUriSchema","value","ctx","ZodIssueCode","oauthLoopbackClientRedirectUriSchema","oauthRedirectUriSchema","external_exports","result","httpsUriSchema","privateUseUriSchema","LOOPBACK_CLIENT_ID_ORIGIN","oauthClientIdLoopbackSchema","oauthClientIdSchema","input","ctx","result","safeParseOAuthLoopbackClientId","assertOAuthLoopbackClientId","parseOAuthLoopbackClientId","__name","isOAuthClientIdLoopback","parseOAuthLoopbackClientId","input","result","safeParseOAuthLoopbackClientId","__name","LOOPBACK_CLIENT_ID_ORIGIN","queryStringIdx","queryString","safeParseOAuthLoopbackClientIdQueryString","params","it","key","value","res","oauthScopeSchema","i","oauthLoopbackClientRedirectUriSchema","parseAtprotoLoopbackClientId","clientId","scope","DEFAULT_ATPROTO_OAUTH_SCOPE","redirect_uris","parseOAuthLoopbackClientId","isAtprotoOAuthScope","DEFAULT_LOOPBACK_CLIENT_REDIRECT_URIS","__name","atprotoLoopbackClientMetadata","clientId","params","parseAtprotoLoopbackClientId","buildMetadataInternal","__name","buildMetadataInternal","clientId","clientParams","__name","oauthAuthorizationDetailSchema","external_exports","dangerousUriSchema","oauthAuthorizationDetailsSchema","oauthTokenTypeSchema","external_exports","oauthTokenResponseSchema","external_exports","oauthTokenTypeSchema","signedJwtSchema","oauthAuthorizationDetailsSchema","atprotoOAuthTokenResponseSchema","oauthTokenResponseSchema","external_exports","atprotoDidSchema","atprotoOAuthScopeSchema","oauthAccessTokenSchema","external_exports","oauthAuthorizationCodeGrantTokenRequestSchema","external_exports","oauthRedirectUriSchema","oauthAuthorizationRequestJarSchema","external_exports","signedJwtSchema","unsignedJwtSchema","oauthCodeChallengeMethodSchema","external_exports","oauthPromptModeSchema","external_exports","oauthResponseModeSchema","external_exports","oauthResponseTypeSchema","external_exports","oidcClaimsParameterSchema","external_exports","oidcClaimsValueSchema","external_exports","oidcClaimsPropertiesSchema","oidcEntityTypeSchema","external_exports","oauthAuthorizationRequestParametersSchema","external_exports","oauthClientIdSchema","oauthRedirectUriSchema","oauthScopeSchema","oauthResponseTypeSchema","oauthCodeChallengeMethodSchema","oauthResponseModeSchema","numberPreprocess","jsonObjectPreprocess","oidcEntityTypeSchema","oidcClaimsParameterSchema","oidcClaimsPropertiesSchema","signedJwtSchema","oauthPromptModeSchema","oauthAuthorizationDetailsSchema","oauthAuthorizationRequestParSchema","external_exports","oauthAuthorizationRequestParametersSchema","oauthAuthorizationRequestJarSchema","oauthRequestUriSchema","external_exports","oauthAuthorizationRequestUriSchema","external_exports","oauthRequestUriSchema","oauthAuthorizationRequestQuerySchema","external_exports","oauthClientIdSchema","oauthAuthorizationRequestParametersSchema","oauthAuthorizationRequestJarSchema","oauthAuthorizationRequestUriSchema","oauthAuthorizationResponseErrorSchema","external_exports","oauthIssuerIdentifierSchema","webUriSchema","value","ctx","external_exports","url","canonicalValue","oauthAuthorizationServerMetadataSchema","external_exports","oauthIssuerIdentifierSchema","oauthCodeChallengeMethodSchema","webUriSchema","oauthPromptModeSchema","oauthAuthorizationServerMetadataValidator","data","ctx","oauthClientCredentialsGrantTokenRequestSchema","external_exports","oauthClientCredentialsJwtBearerSchema","external_exports","oauthClientIdSchema","CLIENT_ASSERTION_TYPE_JWT_BEARER","signedJwtSchema","oauthClientCredentialsSecretPostSchema","oauthClientCredentialsNoneSchema","oauthClientCredentialsSchema","oauthClientIdDiscoverableSchema","external_exports","oauthClientIdSchema","httpsUriSchema","value","ctx","url","isHostnameIP","extractUrlPath","conventionalOAuthClientIdSchema","oauthClientIdDiscoverableSchema","value","ctx","url","external_exports","assertOAuthDiscoverableClientId","value","oauthClientIdDiscoverableSchema","__name","oauthEndpointAuthMethod","external_exports","oauthGrantTypeSchema","external_exports","oauthClientMetadataSchema","external_exports","oauthRedirectUriSchema","oauthResponseTypeSchema","oauthGrantTypeSchema","oauthScopeSchema","oauthEndpointAuthMethod","webUriSchema","jwksPubSchema","oauthClientIdSchema","oauthParResponseSchema","external_exports","oauthPasswordGrantTokenRequestSchema","external_exports","oauthProtectedResourceMetadataSchema","external_exports","webUriSchema","url","oauthIssuerIdentifierSchema","oauthRefreshTokenSchema","external_exports","oauthRefreshTokenGrantTokenRequestSchema","external_exports","oauthRefreshTokenSchema","oauthTokenIdentificationSchema","external_exports","oauthAccessTokenSchema","oauthRefreshTokenSchema","oauthTokenRequestSchema","external_exports","oauthAuthorizationCodeGrantTokenRequestSchema","oauthRefreshTokenGrantTokenRequestSchema","oauthPasswordGrantTokenRequestSchema","oauthClientCredentialsGrantTokenRequestSchema","oidcAuthorizationResponseErrorSchema","external_exports","oidcUserinfoSchema","external_exports","locks","acquireLocalLock","name","resolveAcquire","next","resolveRelease","__name","requestLocalLock","fn","release","ifString","__name","v","contentMime","headers","timeoutSignal","ms","controller","timeoutError","message","combineSignals","signals","DisposableAbortController","onAbort","_event","reason","sig","err","OAuthAuthorizationServerMetadataResolver","CachedGetter","__name","cache","fetch","config","issuer","options","swallowStoreErrors","bindFetch","input","oauthIssuerIdentifierSchema","url","request","response","cancelBody","FetchResponseError","contentMime","metadata","oauthAuthorizationServerMetadataValidator","OAuthCallbackError","_OAuthCallbackError","__name","err","params","state","message","cause","HANDLE_INVALID","IdentityResolverError","__name","extractAtprotoHandle","document","h","__name","extractNormalizedHandle","handle","asNormalizedHandle","input","normalizeHandle","isValidHandle","AtprotoIdentityResolver","__name","didResolver","handleResolver","input","options","isAtprotoDid","did","document","handle","extractNormalizedHandle","resolvedDid","HANDLE_INVALID","asNormalizedHandle","IdentityResolverError","createIdentityResolver","options","didResolver","createDidResolver","handleResolver","createHandleResolver","AtprotoIdentityResolver","__name","FALLBACK_ALG","AuthMethodUnsatisfiableError","__name","TokenRevokedError","__name","sub","message","options","negotiateClientAuthMethod","serverMetadata","clientMetadata","keyset","method","methods","supportedMethods","alg","supportedAlgs","key","FALLBACK_ALG","__name","createClientCredentialsFactory","authMethod","runtime","AuthMethodUnsatisfiableError","CLIENT_ASSERTION_TYPE_JWT_BEARER","cause","OAuthProtectedResourceMetadataResolver","CachedGetter","__name","cache","fetch","config","origin","options","swallowStoreErrors","bindFetch","resource","protocol","url","request","response","cancelBody","FetchResponseError","contentMime","metadata","oauthProtectedResourceMetadataSchema","OAuthResolverError","_OAuthResolverError","__name","message","options","cause","validationReason","ZodError","fullMessage","OAuthResolver","__name","identityResolver","protectedResourceMetadataResolver","authorizationServerMetadataResolver","input","options","err","OAuthResolverError","result","oauthIssuerIdentifierSchema","identityInfo","pds","extractPdsUrl","metadata","cause","issuer","pdsUrl","rsMetadata","asMetadata","TokenRefreshError","__name","sub","message","options","subtle","ReadableStream","dpopFetchWrapper","key","supportedAlgs","nonces","sha256","subtleSha256","isAuthServer","fetch","alg","negotiateAlg","input","init","request","authorizationHeader","ath","origin","htm","htu","buildHtu","initNonce","initProof","buildProof","initResponse","nextNonce","isUseDpopNonceError","cancelBody","nextProof","nextRequest","retryRequest","retryNonce","__name","url","fragmentIndex","queryIndex","end","nonce","jwk","now","response","wwwAuth","peekJson","a","bytes","digest","digestBytes","base64url","OAuthResponseError","__name","response","payload","error","ifString","errorDescription","messageError","messageDesc","message","OAuthServerAgent","__name","authMethod","dpopKey","serverMetadata","clientMetadata","dpopNonces","oauthResolver","runtime","keyset","fetch","createClientCredentialsFactory","dpopFetchWrapper","bindFetch","v","token","code","codeVerifier","redirectUri","now","tokenResponse","err","tokenSet","TokenRefreshError","aud","sub","resolved","timeoutSignal","endpoint","payload","url","auth","response","json","wwwFormUrlEncode","fetchJsonProcessor","atprotoOAuthTokenResponseSchema","oauthParResponseSchema","OAuthResponseError","entryHasDefinedValue","stringifyEntryValue","entry","name","value","enc","OAuthServerFactory","__name","clientMetadata","runtime","resolver","fetch","keyset","dpopNonceCache","issuer","authMethod","dpopKey","options","serverMetadata","OAuthServerAgent","TokenInvalidError","__name","sub","message","options","ReadableStream","OAuthSession","__name","server","sub","sessionGetter","fetch","dpopFetchWrapper","bindFetch","v","refresh","tokenSet","expiresAt","TokenRevokedError","pathname","init","initialUrl","initialAuth","headers","initialResponse","isInvalidTokenResponse","tokenSetFresh","finalAuth","finalUrl","finalResponse","TokenInvalidError","response","wwwAuth","Runtime","__name","implementation","requestLock","requestLocalLock","algs","algsSorted","compareAlgos","text","bytes","digest","base64url","length","byteLength","verifier","jwk","components","extractJktComponents","data","get","field","value","a","b","prefix","aLen","bLen","isExpectedSessionError","err","TokenRefreshError","TokenRevokedError","TokenInvalidError","AuthMethodUnsatisfiableError","__name","SessionGetter","CachedGetter","#serverFactory","#runtime","#options","sessionStore","serverFactory","runtime","options","sub","signal","storedSession","msg","cause","dpopKey","authMethod","tokenSet","server","newTokenSet","OAuthResponseError","r","stored","session","errors","timeoutSignal","abortController","__addDisposableResource","env_1","combineSignals","refresh","clientMetadataSchema","oauthClientMetadataSchema","external_exports","oauthClientIdDiscoverableSchema","oauthClientIdLoopbackSchema","validateClientMetadata","input","keyset","metadata","clientMetadataSchema","assertOAuthLoopbackClientId","assertOAuthDiscoverableClientId","method","methodAlg","signingKeys","key","FALLBACK_ALG","k","__name","OAuthClient","__name","clientId","fetch","signal","request","response","mime","json","oauthClientMetadataSchema","options","stateStore","sessionStore","dpopNonceCache","SimpleStoreMemory","authorizationServerMetadataCache","protectedResourceMetadataCache","responseMode","clientMetadata","runtimeImplementation","keyset","Keyset","validateClientMetadata","Runtime","OAuthResolver","createIdentityResolver","OAuthProtectedResourceMetadataResolver","OAuthAuthorizationServerMetadataResolver","OAuthServerFactory","SessionGetter","input","redirectUri","identityInfo","metadata","pkce","dpopKey","FALLBACK_ALG","authMethod","negotiateClientAuthMethod","state","parameters","HANDLE_INVALID","authorizationUrl","parResponse","key","value","authorizeUrl","params","OAuthCallbackError","issuerParam","stateParam","errorParam","codeParam","stateData","server","tokenSet","err","sub","refresh","assertAtprotoDid","AuthMethodUnsatisfiableError","res","isExpectedSessionError","TokenRevokedError","OAuthSession","import_dispose","import_dispose","handleRequest","request","onSuccess","onError","cleanup","__name","success","error","promisify","resolve","reject","DBIndex","__name","idbIndex","query","promisify","count","resolve","reject","result","event","cursor","DBObjectStore","__name","idbObjStore","name","DBIndex","key","promisify","query","count","value","DBTransaction","__name","#tx","tx","onAbort","cleanup","onComplete","name","store","DBObjectStore","DB","_DB","__name","dbName","migrations","txOptions","db","resolve","reject","request","oldVersion","newVersion","version","migration","err","#db","cleanup","storeNames","mode","run","tx","result","DBTransaction","encodeKey","key","WebcryptoKey","__name","decodeKey","encoded","STORES","BrowserOAuthDatabase","#dbPromise","#cleanupInterval","options","DB","db","name","storeName","mode","fn","tx","encode","decode","expiresAt","item","store","value","tokenSet","dpopKey","session","_value","dbPromise","nativeRequestLock","name","fn","BrowserRuntimeImplementation","__name","algs","WebcryptoKey","byteLength","data","buf","LoginContinuedInParentWindowError","__name","buildLoopbackClientId","location","localhost","isLoopbackHost","redirectUri","__name","NAMESPACE","POPUP_CHANNEL_NAME","POPUP_STATE_PREFIX","syncChannel","runtimeImplementation","BrowserRuntimeImplementation","BrowserOAuthClient","_BrowserOAuthClient","OAuthClient","__name","clientId","options","clientMetadata","atprotoLoopbackClientMetadata","assertOAuthDiscoverableClientId","buildLoopbackClientId","responseMode","database","BrowserOAuthDatabase","sub","cause","session","signal","event","name","args","hook","refresh","params","redirectUri","fixLocation","err","input","url","resolve","reject","reason","popupTarget","popupFeatures","popup","stateKey","popupChannel","cleanup","timeout","onMessage","cancel","data","result","message","OAuthCallbackError","uri","sendPopupResult","timer","LoginContinuedInParentWindowError","isOAuthClientIdLoopback","locationUrl","oauth_client_metadata_default","SCOPE","oauth_client_metadata_default","isLocalDev","redirect_uri","CLIENT_ID","clientPromise","client","BrowserOAuthClient","__name","login","handle","c","restoreOrFinalize","params","logout","session"],"sourceRoot":"","file":"/chunk-A565T3Q3.js.map"} \ No newline at end of file diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-AHHIFJPO.js b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-AHHIFJPO.js similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-AHHIFJPO.js rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-AHHIFJPO.js diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-AHHIFJPO.js.br b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-AHHIFJPO.js.br similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-AHHIFJPO.js.br rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-AHHIFJPO.js.br diff --git a/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-AHHIFJPO.js.map b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-AHHIFJPO.js.map new file mode 100644 index 00000000..653e7260 --- /dev/null +++ b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-AHHIFJPO.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["https://jsr.io/@fry69/deep-diff/0.1.10/deep-diff.ts"],"sourcesContent":["/**\n * A modern TypeScript port of the legacy `deep-diff` package that computes\n * structural differences, applies patches, and reverses changes across nested\n * objects and arrays while preserving the original algorithm's quirks.\n *\n * @example\n * ```ts\n * import deepDiff from \"@fry69/deep-diff\";\n *\n * const left = { name: \"Ada\", tags: [\"math\", \"logic\"] };\n * const right = { name: \"Ada\", tags: [\"math\", \"computing\"] };\n *\n * const changes = deepDiff(left, right);\n * // => [{ kind: \"A\", path: [\"tags\"], index: 1, item: { kind: \"E\", rhs: \"computing\", lhs: \"logic\" } }]\n * ```\n *\n * @module deepDiff\n */\n// deno-lint-ignore-file no-explicit-any\n\n/**\n * Ordered list of keys and indices describing how to reach a nested value\n * within an object graph. Each entry represents a step in the traversal.\n */\nexport type Path = Array;\n\n/**\n * Discriminator shared by {@link Diff} variants.\n *\n * - `\"N\"` — a new value was added\n * - `\"E\"` — an existing value was edited\n * - `\"A\"` — an array slot changed\n * - `\"D\"` — a value was deleted\n */\nexport type Kind = \"N\" | \"E\" | \"A\" | \"D\";\n\n/**\n * Diff node representing a newly added value.\n *\n * @typeParam RHS - The type of the right-hand side value.\n */\nexport interface DiffNew {\n kind: \"N\";\n path?: Path;\n rhs: RHS;\n}\n\n/**\n * Diff node capturing a deletion from the left-hand structure.\n *\n * @typeParam LHS - The type of the removed value.\n */\nexport interface DiffDeleted {\n kind: \"D\";\n path?: Path;\n lhs: LHS;\n}\n\n/**\n * Diff node representing a change where a value was replaced.\n *\n * @typeParam LHS - Type of the original value.\n * @typeParam RHS - Type of the new value.\n */\nexport interface DiffEdit {\n kind: \"E\";\n path?: Path;\n lhs: LHS;\n rhs: RHS;\n}\n\n/**\n * Diff node describing a nested change inside an array.\n *\n * @typeParam LHS - Type of the previous item.\n * @typeParam RHS - Type of the new item.\n */\nexport interface DiffArray {\n kind: \"A\";\n path?: Path;\n index: number;\n item: Diff;\n}\n\n/**\n * Union of all change record shapes produced by {@link observableDiff} and\n * related helpers.\n *\n * @typeParam LHS - Type of the left-hand structure.\n * @typeParam RHS - Type of the right-hand structure.\n */\nexport type Diff =\n | DiffNew\n | DiffDeleted\n | DiffEdit\n | DiffArray;\n\n/**\n * Predicate-style filter invoked before traversing a key.\n *\n * @param path - Path accumulated for the parent node.\n * @param key - Candidate key or index about to be traversed.\n * @returns `true` to skip the key entirely.\n */\nexport type PreFilterFunction = (path: Path, key: any) => boolean;\n\n/**\n * Object-form prefilter with optional normalization step.\n *\n * @typeParam LHS - Type of the left-hand structure.\n * @typeParam RHS - Type of the right-hand structure.\n */\nexport interface PreFilterObject {\n /** Predicate-style skip function.\n * @param path - Path accumulated for the parent node.\n * @param key - Candidate key or index about to be traversed.\n */\n prefilter?: (path: Path, key: any) => boolean;\n /**\n * Optional hook that can return alternate values to compare before diffing\n * a specific key.\n *\n * @param currentPath - Path accumulated through the traversal.\n * @param key - Key or index currently being inspected.\n * @param lhs - Original value located at {@link currentPath}.\n * @param rhs - New value located at {@link currentPath}.\n * @returns A tuple of replacement values or `undefined` to use originals.\n */\n normalize?: (\n currentPath: Path,\n key: any,\n lhs: LHS,\n rhs: RHS,\n ) => [LHS, RHS] | undefined;\n}\n\n/**\n * Union of supported prefilter declarations accepted by diff helpers.\n */\nexport type PreFilter =\n | PreFilterFunction\n | PreFilterObject;\n\n/**\n * Array-like receiver that can collect diff results.\n *\n * @typeParam LHS - Type of the original structure.\n * @typeParam RHS - Type of the incoming structure.\n */\nexport interface Accumulator {\n /** Collects a diff entry emitted by the traversal. */\n push(diff: Diff): void;\n length: number;\n}\n\n/**\n * Callback invoked for each diff entry discovered by {@link observableDiff}.\n */\nexport type Observer = (diff: Diff) => void;\n\n/**\n * Optional predicate that decides whether a change should be applied.\n *\n * @param target - The mutable structure receiving modifications.\n * @param source - The reference structure used as the source of truth.\n * @param change - The proposed diff entry.\n * @returns `true` to allow the change, `false` to skip it.\n */\nexport type Filter = (\n target: LHS,\n source: RHS,\n change: Diff,\n) => boolean;\n\nconst validKinds: Kind[] = [\"N\", \"E\", \"A\", \"D\"];\n\n/* -------------------------\n Utility functions\n ------------------------- */\n\nfunction arrayRemove(arr: T[], from: number, to?: number): T[] {\n // Behavior preserved from original:\n // remove items from `from` to `to` (inclusive), or just at `from` if `to` undefined.\n const start = from < 0 ? arr.length + from : from;\n const endInclusive = typeof to === \"number\" ? to : from;\n const rest = arr.slice(endInclusive + 1);\n arr.length = start;\n arr.push(...rest);\n return arr;\n}\n\nfunction realTypeOf(subject: any): string {\n const type = typeof subject;\n if (type !== \"object\") {\n return type;\n }\n if (subject === Math) {\n return \"math\";\n } else if (subject === null) {\n return \"null\";\n } else if (Array.isArray(subject)) {\n return \"array\";\n } else if (Object.prototype.toString.call(subject) === \"[object Date]\") {\n return \"date\";\n } else if (\n typeof subject?.toString === \"function\" &&\n /^\\/.*\\//.test(subject.toString())\n ) {\n // legacy quirk: treat objects whose toString returns /.../ as regexp\n return \"regexp\";\n }\n return \"object\";\n}\n\n// Java's String.hashCode equivalent from original.\nfunction hashThisString(string: string): number {\n let hash = 0;\n if (string.length === 0) return hash;\n for (let i = 0; i < string.length; i++) {\n const char = string.charCodeAt(i);\n hash = (hash << 5) - hash + char;\n // Convert to 32bit int\n hash |= 0;\n }\n return hash;\n}\n\n/**\n * Computes an order-independent hash for objects, arrays, and primitives using\n * the legacy algorithm. Useful for comparing collections where element order is\n * insignificant.\n *\n * @param object - Value to hash.\n * @returns A deterministic integer hash.\n */\nexport function getOrderIndependentHash(object: any): number {\n let accum = 0;\n const type = realTypeOf(object);\n if (type === \"array\") {\n (object as any[]).forEach((item: any) => {\n accum += getOrderIndependentHash(item);\n });\n const arrayString = `[type: array, hash: ${accum}]`;\n return accum + hashThisString(arrayString);\n }\n if (type === \"object\") {\n for (const key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n const keyValueString = `[ type: object, key: ${key}, value hash: ${\n getOrderIndependentHash(\n object[key],\n )\n }]`;\n accum += hashThisString(keyValueString);\n }\n }\n return accum;\n }\n // primitives / other\n const stringToHash = `[ type: ${type} ; value: ${String(object)}]`;\n return accum + hashThisString(stringToHash);\n}\n\n/* -------------------------\n Diff factory helpers\n ------------------------- */\n\n/**\n * Creates a \"new\" diff record representing an added value.\n *\n * @param path - Optional path where the value resides.\n * @param rhs - The value that was introduced.\n */\nexport function makeDiffNew(\n path: Path | undefined,\n rhs: RHS,\n): DiffNew {\n const d: DiffNew = { kind: \"N\", rhs };\n if (path && path.length) d.path = path;\n return d;\n}\n/**\n * Creates a \"deleted\" diff record representing removal from the left-hand side.\n *\n * @param path - Optional path that identifies the removed value.\n * @param lhs - The value that was removed.\n */\nexport function makeDiffDeleted(\n path: Path | undefined,\n lhs: LHS,\n): DiffDeleted {\n const d: DiffDeleted = { kind: \"D\", lhs };\n if (path && path.length) d.path = path;\n return d;\n}\n/**\n * Creates an \"edit\" diff record capturing a replacement.\n *\n * @param path - Optional path to the mutated value.\n * @param lhs - The original value.\n * @param rhs - The replacement value.\n */\nexport function makeDiffEdit(\n path: Path | undefined,\n lhs: LHS,\n rhs: RHS,\n): DiffEdit {\n const d: DiffEdit = { kind: \"E\", lhs, rhs };\n if (path && path.length) d.path = path;\n return d;\n}\n/**\n * Creates an array diff record nesting another {@link Diff} entry.\n *\n * @param path - Optional path to the parent array.\n * @param index - Index within the array that changed.\n * @param item - The nested diff describing the array slot change.\n */\nexport function makeDiffArray(\n path: Path | undefined,\n index: number,\n item: Diff,\n): DiffArray {\n const d: DiffArray = { kind: \"A\", index, item };\n if (path && path.length) d.path = path;\n return d;\n}\n\n/* -------------------------\n Core recursive deep diff\n ------------------------- */\n\nfunction deepDiffInner(\n lhs: any,\n rhs: any,\n changes: Array>,\n prefilter?: PreFilter,\n path: Path = [],\n key?: any,\n stack: Array<{ lhs?: any; rhs?: any }> = [],\n orderIndependent = false,\n): void {\n const currentPath = path.slice(0);\n if (typeof key !== \"undefined\" && key !== null) {\n // prefilter handling (function or object with prefilter & normalize) - preserve original behavior\n if (prefilter) {\n if (typeof prefilter === \"function\") {\n if ((prefilter as PreFilterFunction)(currentPath, key)) {\n return;\n }\n } else {\n const pObj = prefilter as PreFilterObject;\n if (pObj.prefilter && pObj.prefilter(currentPath, key)) {\n return;\n }\n if (pObj.normalize) {\n const alt = pObj.normalize(currentPath, key, lhs, rhs);\n if (alt) {\n lhs = alt[0];\n rhs = alt[1];\n }\n }\n }\n }\n currentPath.push(key);\n }\n\n // regexes compared as strings in original\n if (realTypeOf(lhs) === \"regexp\" && realTypeOf(rhs) === \"regexp\") {\n lhs = lhs.toString();\n rhs = rhs.toString();\n }\n\n const ltype = typeof lhs;\n const rtype = typeof rhs;\n\n // legacy defined checks (uses property descriptor check from top of stack)\n const ldefined = ltype !== \"undefined\" ||\n (stack &&\n stack.length > 0 &&\n stack[stack.length - 1].lhs &&\n Object.getOwnPropertyDescriptor(\n stack[stack.length - 1].lhs,\n key as string | number,\n ));\n const rdefined = rtype !== \"undefined\" ||\n (stack &&\n stack.length > 0 &&\n stack[stack.length - 1].rhs &&\n Object.getOwnPropertyDescriptor(\n stack[stack.length - 1].rhs,\n key as string | number,\n ));\n\n if (!ldefined && rdefined) {\n changes.push(makeDiffNew(currentPath, rhs));\n } else if (!rdefined && ldefined) {\n changes.push(makeDiffDeleted(currentPath, lhs));\n } else if (realTypeOf(lhs) !== realTypeOf(rhs)) {\n changes.push(makeDiffEdit(currentPath, lhs, rhs));\n } else if (realTypeOf(lhs) === \"date\" && lhs - rhs !== 0) {\n // Date difference by numeric difference\n changes.push(makeDiffEdit(currentPath, lhs, rhs));\n } else if (ltype === \"object\" && lhs !== null && rhs !== null) {\n // cycle detection: check if lhs already in stack\n let other = false;\n for (let i = stack.length - 1; i > -1; --i) {\n if (stack[i].lhs === lhs) {\n other = true;\n break;\n }\n }\n if (!other) {\n stack.push({ lhs, rhs });\n if (Array.isArray(lhs)) {\n // order-independent mode sorts arrays in-place in original\n if (orderIndependent) {\n lhs.sort(\n (a: any, b: any) =>\n getOrderIndependentHash(a) - getOrderIndependentHash(b),\n );\n rhs.sort(\n (a: any, b: any) =>\n getOrderIndependentHash(a) - getOrderIndependentHash(b),\n );\n }\n\n let i = rhs.length - 1;\n let j = lhs.length - 1;\n\n while (i > j) {\n // RHS has extra elements -> New\n changes.push(\n makeDiffArray(currentPath, i, makeDiffNew(undefined, rhs[i--])),\n );\n }\n while (j > i) {\n // LHS has extra elements -> Deleted\n changes.push(\n makeDiffArray(currentPath, j, makeDiffDeleted(undefined, lhs[j--])),\n );\n }\n for (; i >= 0; --i) {\n deepDiffInner(\n lhs[i],\n rhs[i],\n changes,\n prefilter,\n currentPath,\n i,\n stack,\n orderIndependent,\n );\n }\n } else {\n const akeys = Object.keys(lhs);\n const pkeys = Object.keys(rhs);\n for (let i = 0; i < akeys.length; ++i) {\n const k = akeys[i];\n const otherIndex = pkeys.indexOf(k);\n if (otherIndex >= 0) {\n deepDiffInner(\n lhs[k],\n rhs[k],\n changes,\n prefilter,\n currentPath,\n k,\n stack,\n orderIndependent,\n );\n // null out matched key to prevent second-pass\n pkeys[otherIndex] = null as any;\n } else {\n deepDiffInner(\n lhs[k],\n undefined,\n changes,\n prefilter,\n currentPath,\n k,\n stack,\n orderIndependent,\n );\n }\n }\n for (let i = 0; i < pkeys.length; ++i) {\n const k = pkeys[i];\n if (k) {\n deepDiffInner(\n undefined,\n rhs[k],\n changes,\n prefilter,\n currentPath,\n k,\n stack,\n orderIndependent,\n );\n }\n }\n }\n // pop stack\n stack.length = stack.length - 1;\n } else if (lhs !== rhs) {\n // lhs contains a cycle here and it differs from rhs\n changes.push(makeDiffEdit(currentPath, lhs, rhs));\n }\n } else if (lhs !== rhs) {\n // primitive difference except NaN vs NaN is considered equal\n if (!(ltype === \"number\" && isNaN(lhs) && isNaN(rhs))) {\n changes.push(makeDiffEdit(currentPath, lhs, rhs));\n }\n }\n}\n\n/* -------------------------\n Observable and accumulate wrappers\n ------------------------- */\n\n/**\n * Produces a list of {@link Diff} entries describing how `lhs` differs from\n * `rhs`. Optionally calls an {@link Observer} for each change as it is\n * discovered.\n *\n * @typeParam LHS - Type of the baseline structure.\n * @typeParam RHS - Type of the structure to compare against.\n * @param lhs - Baseline value treated as the source of truth.\n * @param rhs - Value being compared to the baseline.\n * @param observer - Optional callback invoked for each change.\n * @param prefilter - Optional prefilter to skip or normalize keys.\n * @param orderIndependent - When `true`, array order differences are ignored.\n * @returns Array of diff entries capturing the changes.\n */\nexport function observableDiff(\n lhs: LHS,\n rhs: RHS,\n observer?: Observer,\n prefilter?: PreFilter,\n orderIndependent = false,\n): Array> {\n const changes: Array> = [];\n deepDiffInner(\n lhs,\n rhs,\n changes,\n prefilter,\n [],\n undefined,\n [],\n orderIndependent,\n );\n if (observer) {\n for (let i = 0; i < changes.length; ++i) {\n observer(changes[i]);\n }\n }\n return changes;\n}\n\n/**\n * Legacy accumulator-style API that either populates a provided accumulator or\n * returns the collected {@link Diff} entries.\n *\n * @typeParam LHS - Type of the baseline structure.\n * @typeParam RHS - Type of the structure to compare against.\n * @param lhs - Baseline value treated as the source of truth.\n * @param rhs - Value being compared to the baseline.\n * @param prefilter - Optional prefilter to skip or normalize keys.\n * @param accum - Optional accumulator that receives each diff entry.\n * @returns When `accum` is omitted, returns an array of {@link Diff}\n * entries or `undefined` when the structures are equivalent. When\n * `accum` is provided, the same accumulator instance is returned after\n * being populated.\n * @remarks The overloads mirror the classic CommonJS behaviour while enabling\n * TypeScript to infer an iterable array result when the accumulator is not\n * supplied.\n */\nexport function accumulateDiff(\n lhs: LHS,\n rhs: RHS,\n prefilter?: PreFilter,\n): Array> | undefined;\nexport function accumulateDiff(\n lhs: LHS,\n rhs: RHS,\n prefilter: PreFilter | undefined,\n accum: Accumulator,\n): Accumulator;\nexport function accumulateDiff(\n lhs: LHS,\n rhs: RHS,\n prefilter?: PreFilter,\n accum?: Accumulator,\n): Array> | Accumulator | undefined {\n const observer: Observer | undefined = accum\n ? (difference) => {\n if (difference) accum.push(difference);\n }\n : undefined;\n\n const changes = observableDiff(lhs, rhs, observer, prefilter);\n return accum ? accum : changes.length ? changes : undefined;\n}\n\n/**\n * Variant of {@link observableDiff} that reuses a provided array of changes and\n * treats arrays as order-independent.\n *\n * @typeParam LHS - Type of the baseline structure.\n * @typeParam RHS - Type of the structure to compare against.\n * @param lhs - Baseline value treated as the source of truth.\n * @param rhs - Value being compared to the baseline.\n * @param changes - Mutable array collecting diff entries.\n * @param prefilter - Optional prefilter to skip or normalize keys.\n * @param path - Internal traversal path (mostly for recursion).\n * @param key - Key or index currently being inspected.\n * @param stack - Shared stack used for cycle detection.\n */\nexport function orderIndependentDeepDiff(\n lhs: LHS,\n rhs: RHS,\n changes: Array>,\n prefilter?: PreFilter,\n path?: Path,\n key?: any,\n stack?: any[],\n): void {\n // Wrapper that sets orderIndependent = true for the internal recursion.\n deepDiffInner(\n lhs,\n rhs,\n changes,\n prefilter,\n path ?? [],\n key,\n stack ?? [],\n true,\n );\n}\n\n/**\n * Convenience wrapper around {@link observableDiff} that ignores element order\n * inside arrays.\n *\n * @typeParam LHS - Type of the baseline structure.\n * @typeParam RHS - Type of the structure to compare against.\n * @param lhs - Baseline value treated as the source of truth.\n * @param rhs - Value being compared to the baseline.\n * @param prefilter - Optional prefilter to skip or normalize keys.\n * @param accum - Optional accumulator that receives each diff entry.\n * @returns When `accum` is omitted, returns an array of {@link Diff}\n * entries or `undefined` when the structures are equivalent. When\n * `accum` is provided, the same accumulator instance is returned after\n * being populated.\n * @remarks Behaviour matches {@link accumulateDiff}, with the addition that\n * array ordering differences are suppressed.\n */\nexport function accumulateOrderIndependentDiff(\n lhs: LHS,\n rhs: RHS,\n prefilter?: PreFilter,\n): Array> | undefined;\nexport function accumulateOrderIndependentDiff(\n lhs: LHS,\n rhs: RHS,\n prefilter: PreFilter | undefined,\n accum: Accumulator,\n): Accumulator;\nexport function accumulateOrderIndependentDiff(\n lhs: LHS,\n rhs: RHS,\n prefilter?: PreFilter,\n accum?: Accumulator,\n): Array> | Accumulator | undefined {\n const observer: Observer | undefined = accum\n ? (difference) => {\n if (difference) accum.push(difference);\n }\n : undefined;\n const changes = observableDiff(lhs, rhs, observer, prefilter, true);\n return accum ? accum : changes.length ? changes : undefined;\n}\n\n/* -------------------------\n Apply / revert changes\n ------------------------- */\n\nfunction applyArrayChange(arr: any[], index: number, change: Diff) {\n // Behavior preserved from original\n if (change.path && change.path.length) {\n let it: any = arr[index];\n const u = change.path.length - 1;\n for (let i = 0; i < u; i++) {\n it = it[change.path[i]];\n }\n const lastKey = change.path[u];\n switch (change.kind) {\n case \"A\":\n applyArrayChange(\n it[change.path[u]],\n (change as DiffArray).index,\n (change as DiffArray).item,\n );\n break;\n case \"D\":\n delete it[lastKey];\n break;\n case \"E\":\n case \"N\": // - change.rhs exists on E and N\n it[lastKey] = (change as any).rhs;\n break;\n }\n } else {\n switch (change.kind) {\n case \"A\":\n applyArrayChange(\n arr[index],\n (change as DiffArray).index,\n (change as DiffArray).item,\n );\n break;\n case \"D\":\n arr = arrayRemove(arr, index);\n break;\n case \"E\":\n case \"N\": //\n arr[index] = (change as any).rhs;\n break;\n }\n }\n return arr;\n}\n\n/**\n * Applies a single {@link Diff} entry to a mutable target structure.\n *\n * @typeParam Target - Type of the structure being mutated.\n * @param target - Object or array receiving the change.\n * @param source - Either the source structure or the diff entry (legacy\n * overload).\n * @param change - Specific diff entry to apply. Optional when `source` already\n * contains a diff record.\n */\nexport function applyChange(\n target: Target,\n source: any,\n change?: Diff,\n): void {\n // Legacy allowed applyChange(target, change) by passing change as 'source' if change undefined and source.kind valid.\n if (\n typeof change === \"undefined\" &&\n source &&\n (validKinds as string[]).indexOf((source as any).kind) >= 0\n ) {\n change = source as Diff;\n }\n\n if (target && change && change.kind) {\n let it: any = target as any;\n let i = -1;\n const path = change.path ?? [];\n const last = path.length > 0 ? path.length - 1 : 0;\n while (++i < last) {\n if (typeof it[path[i]] === \"undefined\") {\n it[path[i]] =\n typeof path[i + 1] !== \"undefined\" && typeof path[i + 1] === \"number\"\n ? []\n : {};\n }\n it = it[path[i]];\n }\n\n switch (change.kind) {\n case \"A\":\n if (change.path && typeof it[change.path[i]] === \"undefined\") {\n it[change.path[i]] = [];\n }\n applyArrayChange(\n change.path ? it[change.path[i]] : it,\n (change as DiffArray).index,\n (change as DiffArray).item,\n );\n break;\n case \"D\":\n delete it[change.path ? change.path[i] : undefined];\n break;\n case \"E\":\n case \"N\": //\n it[change.path ? change.path[i] : undefined] = (change as any).rhs;\n break;\n }\n }\n}\n\nfunction revertArrayChange(arr: any[], index: number, change: Diff) {\n if (change.path && change.path.length) {\n let it: any = arr[index];\n const u = change.path.length - 1;\n for (let i = 0; i < u; i++) {\n it = it[change.path[i]];\n }\n const lastKey = change.path[u];\n switch (change.kind) {\n case \"A\":\n revertArrayChange(\n it[change.path[u]],\n (change as DiffArray).index,\n (change as DiffArray).item,\n );\n break;\n case \"D\":\n // restore deleted //\n it[lastKey] = (change as any).lhs;\n break;\n case \"E\": //\n it[lastKey] = (change as any).lhs;\n break;\n case \"N\":\n delete it[lastKey];\n break;\n }\n } else {\n switch (change.kind) {\n case \"A\":\n revertArrayChange(\n arr[index],\n (change as DiffArray).index,\n (change as DiffArray).item,\n );\n break;\n case \"D\": //\n arr[index] = (change as any).lhs;\n break;\n case \"E\": //\n arr[index] = (change as any).lhs;\n break;\n case \"N\":\n arr = arrayRemove(arr, index);\n break;\n }\n }\n return arr;\n}\n\n/**\n * Reverts a {@link Diff} entry that was previously applied to a target.\n *\n * @typeParam Target - Type of the structure being mutated.\n * @param target - Object or array receiving the reversal.\n * @param source - Original structure containing reference values.\n * @param change - Diff entry describing the prior mutation.\n */\nexport function revertChange(\n target: Target,\n source: any,\n change: Diff,\n): void {\n if (target && source && change && change.kind) {\n let it: any = target as any;\n const path = change.path ?? [];\n const u = path.length - 1;\n for (let i = 0; i < u; i++) {\n if (typeof it[path[i]] === \"undefined\") {\n it[path[i]] = {};\n }\n it = it[path[i]];\n }\n switch (change.kind) {\n case \"A\":\n revertArrayChange(\n it[change.path![u]],\n (change as DiffArray).index,\n (change as DiffArray).item,\n );\n break;\n case \"D\":\n // restore deleted\n it[change.path![u]] = (change as any).lhs;\n break;\n case \"E\":\n it[change.path![u]] = (change as any).lhs;\n break;\n case \"N\":\n delete it[change.path![u]];\n break;\n }\n }\n}\n\n/* -------------------------\n High-level applyDiff\n ------------------------- */\n\n/**\n * Computes and immediately applies differences from `source` onto `target`.\n *\n * @typeParam Target - Type of the structure being mutated.\n * @typeParam Source - Type of the structure providing new values.\n * @param target - Object or array receiving the changes.\n * @param source - Structure containing the desired end state.\n * @param filter - Optional predicate that decides which changes to apply.\n */\nexport function applyDiff(\n target: Target,\n source: Source,\n filter?: Filter,\n): void {\n if (target && source) {\n const onChange = (change: Diff) => {\n if (!filter || filter(target, source, change)) {\n applyChange(target, source, change);\n }\n };\n observableDiff(\n target as any,\n source as any,\n onChange as Observer,\n undefined,\n );\n }\n}\n\n/* -------------------------\n Exported function (default) which mirrors legacy accumulateDiff function object.\n We attach properties to the function object for the other helpers (diff/orderIndependentDiff etc).\n ------------------------- */\n\n/**\n * Callable interface for the default export that mimics the original\n * `deep-diff` function object, including attached helper utilities.\n *\n * @remarks The primary overload returns an array of {@link Diff} entries (or\n * `undefined`) when invoked with up to three arguments. Supplying the optional\n * accumulator parameter reuses and returns that accumulator for legacy API\n * compatibility.\n */\nexport interface DeepDiffMain {\n (lhs: LHS, rhs: RHS, prefilter?: PreFilter):\n | Array>\n | undefined;\n (\n lhs: LHS,\n rhs: RHS,\n prefilter?: PreFilter,\n acc?: Accumulator,\n ): Accumulator;\n // attached properties:\n diff: typeof accumulateDiff;\n orderIndependentDiff: typeof accumulateOrderIndependentDiff;\n observableDiff: typeof observableDiff;\n orderIndependentObservableDiff: typeof orderIndependentDeepDiff;\n orderIndepHash: typeof getOrderIndependentHash;\n applyDiff: typeof applyDiff;\n applyChange: typeof applyChange;\n revertChange: typeof revertChange;\n isConflict: () => boolean;\n DeepDiff?: any; // legacy alias\n}\n\n/**\n * Builds the callable default export while attaching helper utilities that\n * mirror the original CommonJS package API.\n */\nconst deepDiffMain = (function createMain(): any {\n const fn = function deepDiffWrapper(\n lhs: LHS,\n rhs: RHS,\n prefilter?: PreFilter,\n acc?: Accumulator,\n ): Array> | Accumulator | undefined {\n if (typeof acc !== \"undefined\") {\n return accumulateDiff(lhs, rhs, prefilter, acc);\n }\n return accumulateDiff(lhs, rhs, prefilter);\n };\n\n // Attach helpers as properties to mimic legacy module's API\n Object.defineProperties(fn, {\n diff: { value: accumulateDiff, enumerable: true },\n orderIndependentDiff: {\n value: accumulateOrderIndependentDiff,\n enumerable: true,\n },\n observableDiff: { value: observableDiff, enumerable: true },\n orderIndependentObservableDiff: {\n value: orderIndependentDeepDiff,\n enumerable: true,\n },\n orderIndepHash: { value: getOrderIndependentHash, enumerable: true },\n applyDiff: { value: applyDiff, enumerable: true },\n applyChange: { value: applyChange, enumerable: true },\n revertChange: { value: revertChange, enumerable: true },\n isConflict: {\n value: function () {\n // legacy checked for global $conflict variable\n // keep same behavior (uses globalThis)\n return typeof (globalThis as any).$conflict !== \"undefined\";\n },\n enumerable: true,\n },\n });\n\n // legacy alias DeepDiff\n (fn as any).DeepDiff = fn;\n\n return fn;\n})() as DeepDiffMain;\n\n// Named exports for convenience & modern usage\n/**\n * Legacy alias for {@link accumulateDiff} retained for backwards compatibility\n * with the CommonJS package API.\n */\nexport const diff: typeof accumulateDiff = accumulateDiff;\n\n/**\n * Legacy alias for {@link accumulateOrderIndependentDiff} that mirrors the\n * property exposed on the CommonJS function export.\n */\nexport const orderIndependentDiff: typeof accumulateOrderIndependentDiff =\n accumulateOrderIndependentDiff;\n\n/**\n * Legacy alias for {@link getOrderIndependentHash} kept to match the original\n * helper attachment.\n */\nexport const orderIndepHash: typeof getOrderIndependentHash =\n getOrderIndependentHash;\n\n/**\n * Legacy alias for {@link observableDiff} retaining the `observableDiffFn`\n * naming convention used by the original documentation.\n */\nexport const observableDiffFn: typeof observableDiff = observableDiff;\n\n/**\n * Legacy alias for {@link orderIndependentDeepDiff} that preserves the\n * `orderIndependentObservableDiff` helper name.\n */\nexport const orderIndependentObservableDiff: typeof orderIndependentDeepDiff =\n orderIndependentDeepDiff;\n\n/**\n * Primary entry point that behaves like the legacy `deep-diff` function object\n * while exposing helper APIs as properties.\n */\nexport default deepDiffMain as DeepDiffMain;\n"],"mappings":"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","names":["validKinds","arrayRemove","arr","from","to","start","endInclusive","rest","__name","realTypeOf","subject","type","hashThisString","string","hash","i","char","getOrderIndependentHash","object","accum","item","arrayString","key","keyValueString","stringToHash","makeDiffNew","path","rhs","d","makeDiffDeleted","lhs","makeDiffEdit","makeDiffArray","index","deepDiffInner","changes","prefilter","stack","orderIndependent","currentPath","pObj","alt","ltype","rtype","ldefined","rdefined","other","a","b","j","akeys","pkeys","k","otherIndex","observableDiff","observer","accumulateDiff","difference","orderIndependentDeepDiff","accumulateOrderIndependentDiff","applyArrayChange","change","it","u","lastKey","applyChange","target","source","last","revertArrayChange","revertChange","applyDiff","filter","deepDiffMain","fn","acc","deep_diff_default","deepDiffMain"],"sourceRoot":"","file":"/chunk-AHHIFJPO.js.map"} \ No newline at end of file diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-AJURW6FF.js b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-AJURW6FF.js similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-AJURW6FF.js rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-AJURW6FF.js diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-AJURW6FF.js.br b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-AJURW6FF.js.br similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-AJURW6FF.js.br rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-AJURW6FF.js.br diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-AJURW6FF.js.map b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-AJURW6FF.js.map similarity index 97% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-AJURW6FF.js.map rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-AJURW6FF.js.map index dcef3a9d..3ca58252 100644 --- a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-AJURW6FF.js.map +++ b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-AJURW6FF.js.map @@ -1 +1 @@ -{"version":3,"sources":["/components/orchestrator/auto-queue/element.js"],"sourcesContent":["import { BroadcastableDiffuseElement, defineElement, query } from \"~/common/element.js\";\n\n/**\n * @import {DiffuseElement} from \"~/common/element.js\";\n * @import {SignalReader} from \"~/common/signal.d.ts\";\n * @import {Track} from \"~/definitions/types.d.ts\"\n * @import RepeatShuffleEngine from \"~/components/engine/repeat-shuffle/element.js\"\n */\n\n////////////////////////////////////////////\n// ELEMENT\n////////////////////////////////////////////\n\n/**\n * Update the queue pool whenever tracks have been loaded,\n * or the tracks collection changes.\n */\nclass AutoTracksOrchestrator extends BroadcastableDiffuseElement {\n static NAME = \"diffuse/orchestrator/auto-queue\";\n\n // LIFECYCLE\n\n /**\n * @override\n */\n async connectedCallback() {\n // Broadcast if needed\n if (this.hasAttribute(\"group\")) {\n this.broadcast(this.identifier, {});\n }\n\n // Super\n super.connectedCallback();\n\n /** @type {import(\"~/components/engine/queue/element.js\").CLASS} */\n const queue = query(this, \"queue-engine-selector\");\n\n /** @type {RepeatShuffleEngine} */\n const repeatShuffle = query(this, \"repeat-shuffle-engine-selector\");\n\n /** @type {DiffuseElement & { tracks: SignalReader }} */\n const tracksElement = query(this, \"tracks-selector\");\n\n // When defined\n await customElements.whenDefined(queue.localName);\n await customElements.whenDefined(repeatShuffle.localName);\n await customElements.whenDefined(tracksElement.localName);\n\n // Watch tracks\n this.effect(() => {\n const tracks = tracksElement.tracks();\n\n this.isLeader().then(async (isLeader) => {\n if (!isLeader) return;\n queue.supply({ trackIds: tracks.map((t) => t.id) });\n });\n });\n\n // Automatically fill queue\n let lastShuffle = repeatShuffle.shuffle();\n let lastFingerprint = queue.supplyFingerprint();\n\n this.effect(() => {\n const trigger = queue.now();\n const fingerprint = queue.supplyFingerprint();\n const shuffled = repeatShuffle.shuffle();\n\n this.isLeader().then((isLeader) => {\n if (!isLeader) return;\n\n // Clear non-manual items from the queue\n // when 'shuffle' gets turned off or on;\n // or when queue supply changes.\n if (shuffled !== lastShuffle || fingerprint !== lastFingerprint) {\n lastShuffle = shuffled;\n lastFingerprint = fingerprint;\n queue.clear({ keepManual: true });\n }\n\n queue.fill({ amount: 10, shuffled: repeatShuffle.shuffle() });\n\n // Insert now-playing track if there's none\n if (!trigger) queue.shift();\n });\n });\n }\n}\n\nexport default AutoTracksOrchestrator;\n\n////////////////////////////////////////////\n// REGISTER\n////////////////////////////////////////////\n\nexport const CLASS = AutoTracksOrchestrator;\nexport const NAME = \"do-auto-queue\";\n\ndefineElement(NAME, CLASS);\n"],"mappings":"qGAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,WAAAE,EAAA,SAAAC,EAAA,YAAAC,IAiBA,IAAMC,EAAN,cAAqCC,CAA4B,CAjBjE,MAiBiE,CAAAC,EAAA,+BAC/D,OAAO,KAAO,kCAOd,MAAM,mBAAoB,CAEpB,KAAK,aAAa,OAAO,GAC3B,KAAK,UAAU,KAAK,WAAY,CAAC,CAAC,EAIpC,MAAM,kBAAkB,EAGxB,IAAMC,EAAQC,EAAM,KAAM,uBAAuB,EAG3CC,EAAgBD,EAAM,KAAM,gCAAgC,EAG5DE,EAAgBF,EAAM,KAAM,iBAAiB,EAGnD,MAAM,eAAe,YAAYD,EAAM,SAAS,EAChD,MAAM,eAAe,YAAYE,EAAc,SAAS,EACxD,MAAM,eAAe,YAAYC,EAAc,SAAS,EAGxD,KAAK,OAAO,IAAM,CAChB,IAAMC,EAASD,EAAc,OAAO,EAEpC,KAAK,SAAS,EAAE,KAAK,MAAOE,GAAa,CAClCA,GACLL,EAAM,OAAO,CAAE,SAAUI,EAAO,IAAKE,GAAMA,EAAE,EAAE,CAAE,CAAC,CACpD,CAAC,CACH,CAAC,EAGD,IAAIC,EAAcL,EAAc,QAAQ,EACpCM,EAAkBR,EAAM,kBAAkB,EAE9C,KAAK,OAAO,IAAM,CAChB,IAAMS,EAAUT,EAAM,IAAI,EACpBU,EAAcV,EAAM,kBAAkB,EACtCW,EAAWT,EAAc,QAAQ,EAEvC,KAAK,SAAS,EAAE,KAAMG,GAAa,CAC5BA,KAKDM,IAAaJ,GAAeG,IAAgBF,KAC9CD,EAAcI,EACdH,EAAkBE,EAClBV,EAAM,MAAM,CAAE,WAAY,EAAK,CAAC,GAGlCA,EAAM,KAAK,CAAE,OAAQ,GAAI,SAAUE,EAAc,QAAQ,CAAE,CAAC,EAGvDO,GAAST,EAAM,MAAM,EAC5B,CAAC,CACH,CAAC,CACH,CACF,EAEOY,EAAQf,EAMFgB,EAAQhB,EACRiB,EAAO,gBAEpBC,EAAcD,EAAMD,CAAK","names":["element_exports","__export","CLASS","NAME","element_default","AutoTracksOrchestrator","BroadcastableDiffuseElement","__name","queue","query","repeatShuffle","tracksElement","tracks","isLeader","t","lastShuffle","lastFingerprint","trigger","fingerprint","shuffled","element_default","CLASS","NAME","defineElement"],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse","file":"/chunk-AJURW6FF.js.map"} \ No newline at end of file +{"version":3,"sources":["/components/orchestrator/auto-queue/element.js"],"sourcesContent":["import { BroadcastableDiffuseElement, defineElement, query } from \"~/common/element.js\";\n\n/**\n * @import {DiffuseElement} from \"~/common/element.js\";\n * @import {SignalReader} from \"~/common/signal.d.ts\";\n * @import {Track} from \"~/definitions/types.d.ts\"\n * @import RepeatShuffleEngine from \"~/components/engine/repeat-shuffle/element.js\"\n */\n\n////////////////////////////////////////////\n// ELEMENT\n////////////////////////////////////////////\n\n/**\n * Update the queue pool whenever tracks have been loaded,\n * or the tracks collection changes.\n */\nclass AutoTracksOrchestrator extends BroadcastableDiffuseElement {\n static NAME = \"diffuse/orchestrator/auto-queue\";\n\n // LIFECYCLE\n\n /**\n * @override\n */\n async connectedCallback() {\n // Broadcast if needed\n if (this.hasAttribute(\"group\")) {\n this.broadcast(this.identifier, {});\n }\n\n // Super\n super.connectedCallback();\n\n /** @type {import(\"~/components/engine/queue/element.js\").CLASS} */\n const queue = query(this, \"queue-engine-selector\");\n\n /** @type {RepeatShuffleEngine} */\n const repeatShuffle = query(this, \"repeat-shuffle-engine-selector\");\n\n /** @type {DiffuseElement & { tracks: SignalReader }} */\n const tracksElement = query(this, \"tracks-selector\");\n\n // When defined\n await customElements.whenDefined(queue.localName);\n await customElements.whenDefined(repeatShuffle.localName);\n await customElements.whenDefined(tracksElement.localName);\n\n // Watch tracks\n this.effect(() => {\n const tracks = tracksElement.tracks();\n\n this.isLeader().then(async (isLeader) => {\n if (!isLeader) return;\n queue.supply({ trackIds: tracks.map((t) => t.id) });\n });\n });\n\n // Automatically fill queue\n let lastShuffle = repeatShuffle.shuffle();\n let lastFingerprint = queue.supplyFingerprint();\n\n this.effect(() => {\n const trigger = queue.now();\n const fingerprint = queue.supplyFingerprint();\n const shuffled = repeatShuffle.shuffle();\n\n this.isLeader().then((isLeader) => {\n if (!isLeader) return;\n\n // Clear non-manual items from the queue\n // when 'shuffle' gets turned off or on;\n // or when queue supply changes.\n if (shuffled !== lastShuffle || fingerprint !== lastFingerprint) {\n lastShuffle = shuffled;\n lastFingerprint = fingerprint;\n queue.clear({ keepManual: true });\n }\n\n queue.fill({ amount: 10, shuffled: repeatShuffle.shuffle() });\n\n // Insert now-playing track if there's none\n if (!trigger) queue.shift();\n });\n });\n }\n}\n\nexport default AutoTracksOrchestrator;\n\n////////////////////////////////////////////\n// REGISTER\n////////////////////////////////////////////\n\nexport const CLASS = AutoTracksOrchestrator;\nexport const NAME = \"do-auto-queue\";\n\ndefineElement(NAME, CLASS);\n"],"mappings":"qGAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,WAAAE,EAAA,SAAAC,EAAA,YAAAC,IAiBA,IAAMC,EAAN,cAAqCC,CAA4B,CAjBjE,MAiBiE,CAAAC,EAAA,+BAC/D,OAAO,KAAO,kCAOd,MAAM,mBAAoB,CAEpB,KAAK,aAAa,OAAO,GAC3B,KAAK,UAAU,KAAK,WAAY,CAAC,CAAC,EAIpC,MAAM,kBAAkB,EAGxB,IAAMC,EAAQC,EAAM,KAAM,uBAAuB,EAG3CC,EAAgBD,EAAM,KAAM,gCAAgC,EAG5DE,EAAgBF,EAAM,KAAM,iBAAiB,EAGnD,MAAM,eAAe,YAAYD,EAAM,SAAS,EAChD,MAAM,eAAe,YAAYE,EAAc,SAAS,EACxD,MAAM,eAAe,YAAYC,EAAc,SAAS,EAGxD,KAAK,OAAO,IAAM,CAChB,IAAMC,EAASD,EAAc,OAAO,EAEpC,KAAK,SAAS,EAAE,KAAK,MAAOE,GAAa,CAClCA,GACLL,EAAM,OAAO,CAAE,SAAUI,EAAO,IAAKE,GAAMA,EAAE,EAAE,CAAE,CAAC,CACpD,CAAC,CACH,CAAC,EAGD,IAAIC,EAAcL,EAAc,QAAQ,EACpCM,EAAkBR,EAAM,kBAAkB,EAE9C,KAAK,OAAO,IAAM,CAChB,IAAMS,EAAUT,EAAM,IAAI,EACpBU,EAAcV,EAAM,kBAAkB,EACtCW,EAAWT,EAAc,QAAQ,EAEvC,KAAK,SAAS,EAAE,KAAMG,GAAa,CAC5BA,KAKDM,IAAaJ,GAAeG,IAAgBF,KAC9CD,EAAcI,EACdH,EAAkBE,EAClBV,EAAM,MAAM,CAAE,WAAY,EAAK,CAAC,GAGlCA,EAAM,KAAK,CAAE,OAAQ,GAAI,SAAUE,EAAc,QAAQ,CAAE,CAAC,EAGvDO,GAAST,EAAM,MAAM,EAC5B,CAAC,CACH,CAAC,CACH,CACF,EAEOY,EAAQf,EAMFgB,EAAQhB,EACRiB,EAAO,gBAEpBC,EAAcD,EAAMD,CAAK","names":["element_exports","__export","CLASS","NAME","element_default","AutoTracksOrchestrator","BroadcastableDiffuseElement","__name","queue","query","repeatShuffle","tracksElement","tracks","isLeader","t","lastShuffle","lastFingerprint","trigger","fingerprint","shuffled","element_default","CLASS","NAME","defineElement"],"sourceRoot":"","file":"/chunk-AJURW6FF.js.map"} \ No newline at end of file diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-APV7W5BS.js b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-APV7W5BS.js similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-APV7W5BS.js rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-APV7W5BS.js diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-APV7W5BS.js.br b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-APV7W5BS.js.br similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-APV7W5BS.js.br rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-APV7W5BS.js.br diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-APV7W5BS.js.map b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-APV7W5BS.js.map similarity index 99% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-APV7W5BS.js.map rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-APV7W5BS.js.map index aae23ba6..0b052f32 100644 --- a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-APV7W5BS.js.map +++ b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-APV7W5BS.js.map @@ -1 +1 @@ -{"version":3,"sources":["/components/supplement/last.fm/element.js","/node_modules/.deno/@noble+hashes@2.4.0/node_modules/@noble/hashes/legacy.js"],"sourcesContent":["import { md5 } from \"@noble/hashes/legacy.js\";\nimport { bytesToHex, utf8ToBytes } from \"@noble/hashes/utils.js\";\n\nimport {\n BroadcastableDiffuseElement,\n defineElement,\n} from \"~/common/element.js\";\nimport { computed, signal } from \"~/common/signal.js\";\nimport { clearSession, readSession, saveSession } from \"../session.js\";\n\n/**\n * @import {Track} from \"~/definitions/types.d.ts\"\n * @import {ScrobbleElement} from \"@specs/components/supplement/types.d.ts\"\n */\n\n////////////////////////////////////////////\n// CONSTANTS\n////////////////////////////////////////////\n\nconst LASTFM_API_URL = \"https://ws.audioscrobbler.com/2.0/\";\nconst LASTFM_AUTH_URL = \"https://www.last.fm/api/auth/\";\nconst STORAGE_KEY = \"diffuse/supplement/last.fm/session\";\n\nconst DEFAULT_API_KEY = \"4f0fe85b67baef8bb7d008a8754a95e5\";\nconst DEFAULT_API_SECRET = \"0cec3ca0f58e04a5082f1131aba1e0d3\";\n\n////////////////////////////////////////////\n// ELEMENT\n////////////////////////////////////////////\n\n/**\n * @implements {ScrobbleElement}\n */\nclass LastFmScrobbler extends BroadcastableDiffuseElement {\n static NAME = \"diffuse/supplement/last.fm\";\n\n get #apiKey() {\n return this.getAttribute(\"api-key\") ?? DEFAULT_API_KEY;\n }\n\n get #apiSecret() {\n return this.getAttribute(\"api-secret\") ?? DEFAULT_API_SECRET;\n }\n\n // SIGNALS\n\n #handle = signal(/** @type {string | null} */ (null));\n #sessionKey = signal(/** @type {string | null} */ (null));\n #isAuthenticating = signal(false);\n\n // STATE\n\n handle = this.#handle.get;\n isAuthenticated = computed(() => this.#sessionKey.value !== null);\n isAuthenticating = this.#isAuthenticating.get;\n\n // LIFECYCLE\n\n /** @override */\n connectedCallback() {\n // Broadcast if needed\n if (this.hasAttribute(\"group\")) {\n const actions = this.broadcast(this.identifier, {\n nowPlaying: { strategy: \"leaderOnly\", fn: this.nowPlaying },\n scrobble: { strategy: \"leaderOnly\", fn: this.scrobble },\n\n setHandle: { strategy: \"replicate\", fn: this.#handle.set },\n setSession: { strategy: \"replicate\", fn: this.#sessionKey.set },\n });\n\n if (actions) {\n this.nowPlaying = actions.nowPlaying;\n this.scrobble = actions.scrobble;\n\n this.#handle.set = actions.setHandle;\n this.#sessionKey.set = actions.setSession;\n }\n }\n\n super.connectedCallback();\n\n this.#tryRestore();\n }\n\n async #tryRestore() {\n await this.whenConnected();\n\n // last.fm appends ?token=TOKEN to the callback URL after authorization.\n const urlParams = new URLSearchParams(location.search);\n const urlToken = urlParams.get(\"token\");\n\n if (urlToken) {\n urlParams.delete(\"token\");\n const newSearch = urlParams.toString();\n history.replaceState(\n null,\n \"\",\n location.pathname + (newSearch ? \"?\" + newSearch : \"\") + location.hash,\n );\n\n this.#isAuthenticating.set(true);\n\n try {\n const session = await this.#getSession(urlToken);\n await this.#setSession(session);\n } catch (err) {\n console.warn(\"last.fm: failed to exchange token for session\", err);\n } finally {\n this.#isAuthenticating.set(false);\n }\n\n return;\n }\n\n const stored = await readSession(this, STORAGE_KEY);\n\n if (stored) {\n try {\n const { key, name: handle } = JSON.parse(stored);\n if (await this.isLeader()) {\n this.#sessionKey.set(key);\n this.#handle.set(handle);\n } else {\n this.#sessionKey.value = key;\n this.#handle.value = handle;\n }\n } catch {\n await clearSession(this, STORAGE_KEY);\n }\n }\n }\n\n // AUTH\n\n /**\n * Initiate the last.fm auth flow.\n * Redirects the browser to the authorization page; last.fm appends ?token=TOKEN to the callback.\n */\n signIn() {\n const callbackUrl = location.origin + location.pathname + location.search;\n const authUrl = new URL(LASTFM_AUTH_URL);\n authUrl.searchParams.set(\"api_key\", this.#apiKey);\n authUrl.searchParams.set(\"cb\", callbackUrl);\n\n // Navigate the top-level frame so last.fm's X-Frame-Options doesn't block loading\n // when this element is used inside an iframe.\n (window.top ?? window).location.assign(authUrl.toString());\n }\n\n /**\n * Clear the stored session.\n */\n async signOut() {\n this.#sessionKey.set(null);\n this.#handle.set(null);\n await clearSession(this, STORAGE_KEY);\n }\n\n /** @param {{ key: string, name: string }} session */\n async #setSession({ key, name: handle }) {\n this.#sessionKey.set(key);\n this.#handle.set(handle);\n await saveSession(this, STORAGE_KEY, JSON.stringify({ key, name: handle }));\n }\n\n // SCROBBLE ACTIONS\n\n /**\n * @param {Track} track\n */\n async nowPlaying(track) {\n const tags = track.tags ?? {};\n /** @type {Record} */\n const params = {};\n\n if (tags.title) params.track = tags.title;\n if (tags.artist) params.artist = tags.artist;\n if (tags.album) params.album = tags.album;\n if (tags.albumartist) params.albumArtist = tags.albumartist;\n if (tags.track?.no != null) params.trackNumber = String(tags.track.no);\n if (track.stats?.duration != null) {\n params.duration = String(Math.round(track.stats.duration / 1000));\n }\n\n return this.#authenticatedCall(\"track.updateNowPlaying\", params);\n }\n\n /**\n * @param {Track} track\n * @param {number} startedAt Unix timestamp in milliseconds\n * @param {{ duration?: number }} [_options] duration in milliseconds\n */\n async scrobble(track, startedAt, _options) {\n const tags = track.tags ?? {};\n /** @type {Record} */\n const params = {\n timestamp: String(Math.floor(startedAt / 1000)),\n };\n\n if (tags.title) params.track = tags.title;\n if (tags.artist) params.artist = tags.artist;\n if (tags.album) params.album = tags.album;\n if (tags.albumartist) params.albumArtist = tags.albumartist;\n if (tags.track?.no != null) params.trackNumber = String(tags.track.no);\n if (track.stats?.duration != null) {\n params.duration = String(Math.round(track.stats.duration / 1000));\n }\n\n return this.#authenticatedCall(\"track.scrobble\", params);\n }\n\n // API\n\n /**\n * Sign a set of API parameters (excluding `format` and `callback`).\n *\n * @param {Record} params\n * @returns {string} MD5 hex digest\n */\n #sign(params) {\n const str = Object.keys(params)\n .sort()\n .map((k) => k + params[k])\n .join(\"\");\n return bytesToHex(md5(utf8ToBytes(str + this.#apiSecret)));\n }\n\n /**\n * @param {string} method\n * @param {Record} [params]\n * @returns {Promise}\n */\n async #call(method, params = {}) {\n const allParams = { ...params, api_key: this.#apiKey, method };\n const api_sig = this.#sign(allParams);\n const body = new URLSearchParams({ ...allParams, api_sig, format: \"json\" });\n\n const response = await fetch(LASTFM_API_URL, { method: \"POST\", body });\n const data = await response.json();\n\n if (data.error) {\n throw new Error(`last.fm error ${data.error}: ${data.message}`);\n }\n\n return data;\n }\n\n /**\n * @param {string} method\n * @param {Record} [params]\n * @returns {Promise}\n */\n async #authenticatedCall(method, params = {}) {\n const sk = this.#sessionKey.value;\n if (!sk) throw new Error(\"Not authenticated with last.fm\");\n return this.#call(method, { ...params, sk });\n }\n\n /**\n * @param {string} token\n * @returns {Promise<{ key: string, name: string }>}\n */\n async #getSession(token) {\n const data = await this.#call(\"auth.getSession\", { token });\n return data.session;\n }\n}\n\nexport default LastFmScrobbler;\n\n////////////////////////////////////////////\n// REGISTER\n////////////////////////////////////////////\n\nexport const CLASS = LastFmScrobbler;\nexport const NAME = \"ds-lastfm-scrobbler\";\n\ndefineElement(NAME, CLASS);\n","/**\n\nSHA1 (RFC 3174), MD5 (RFC 1321), and RIPEMD160 legacy, weak hash functions.\nRFC 2286 only covers HMAC-RIPEMD160 wrapper material and test vectors,\nnot the base RIPEMD-160 compression spec.\nDon't use them in a new protocol. What \"weak\" means:\n\n- Collisions can be made with 2^18 effort in MD5, 2^60 in SHA1, 2^80 in RIPEMD160.\n- No practical pre-image attacks (only theoretical, 2^123.4)\n- HMAC seems kinda ok: https://www.rfc-editor.org/rfc/rfc6151\n * @module\n */\nimport { Chi, HashMD, Maj } from \"./_md.js\";\nimport { clean, createHasher, rotl } from \"./utils.js\";\n/** Initial SHA-1 state from RFC 3174 §6.1. */\nconst SHA1_IV = /* @__PURE__ */ Uint32Array.from([\n 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0,\n]);\n// Reusable 80-word SHA-1 message schedule buffer.\nconst SHA1_W = /* @__PURE__ */ new Uint32Array(80);\n/** Internal SHA1 legacy hash class. */\nexport class _SHA1 extends HashMD {\n A = SHA1_IV[0] | 0;\n B = SHA1_IV[1] | 0;\n C = SHA1_IV[2] | 0;\n D = SHA1_IV[3] | 0;\n E = SHA1_IV[4] | 0;\n constructor() {\n super(64, 20, 8, false);\n }\n get() {\n const { A, B, C, D, E } = this;\n return [A, B, C, D, E];\n }\n set(A, B, C, D, E) {\n this.A = A | 0;\n this.B = B | 0;\n this.C = C | 0;\n this.D = D | 0;\n this.E = E | 0;\n }\n _cloneInto(to) {\n (to ||= new this.constructor()).set(...this.get());\n return this._cloneIntoMeta(to);\n }\n process(view, offset) {\n for (let i = 0; i < 16; i++, offset += 4)\n SHA1_W[i] = view.getUint32(offset, false);\n for (let i = 16; i < 80; i++)\n SHA1_W[i] = rotl(SHA1_W[i - 3] ^ SHA1_W[i - 8] ^ SHA1_W[i - 14] ^ SHA1_W[i - 16], 1);\n // Compression function main loop, 80 rounds\n let { A, B, C, D, E } = this;\n for (let i = 0; i < 80; i++) {\n let F, K;\n if (i < 20) {\n F = Chi(B, C, D);\n K = 0x5a827999;\n }\n else if (i < 40) {\n F = B ^ C ^ D;\n K = 0x6ed9eba1;\n }\n else if (i < 60) {\n F = Maj(B, C, D);\n K = 0x8f1bbcdc;\n }\n else {\n F = B ^ C ^ D;\n K = 0xca62c1d6;\n }\n const T = (rotl(A, 5) + F + E + K + SHA1_W[i]) | 0;\n E = D;\n D = C;\n C = rotl(B, 30);\n B = A;\n A = T;\n }\n // Add the compressed chunk to the current hash value\n A = (A + this.A) | 0;\n B = (B + this.B) | 0;\n C = (C + this.C) | 0;\n D = (D + this.D) | 0;\n E = (E + this.E) | 0;\n this.set(A, B, C, D, E);\n }\n roundClean() {\n clean(SHA1_W);\n }\n destroy() {\n // HashMD callers route post-destroy usability through `destroyed`; zeroizing alone still leaves\n // update()/digest() callable on reused instances.\n this.destroyed = true;\n this.set(0, 0, 0, 0, 0);\n clean(this.buffer);\n }\n}\n/**\n * SHA1 (RFC 3174) legacy hash function. It was cryptographically broken.\n * @param msg - message bytes to hash\n * @param opts - Reserved hash options.\n * @returns Digest bytes.\n * @example\n * Hash a message with SHA1.\n * ```ts\n * sha1(new Uint8Array([97, 98, 99]));\n * ```\n */\nexport const sha1 = /* @__PURE__ */ createHasher(() => new _SHA1());\n/** RFC 1321 `T[i]` uses `floor(2^32 * abs(sin(i)))`; this is the shared `2^32` scale factor. */\nconst p32 = /* @__PURE__ */ Math.pow(2, 32);\n/** RFC 1321 `T[1..64]` table. */\nconst K = /* @__PURE__ */ Array.from({ length: 64 }, (_, i) => Math.floor(p32 * Math.abs(Math.sin(i + 1))));\n/** MD5 initial state from RFC 1321, stored as 4 u32 words. */\nconst MD5_IV = /* @__PURE__ */ SHA1_IV.slice(0, 4);\n// Reusable 16-word MD5 message block buffer.\nconst MD5_W = /* @__PURE__ */ new Uint32Array(16);\n// RFC 1321 §3.4 per-round rotate amounts, flattened to 64 entries so the round loop\n// avoids allocating a 4-element array literal every round (measured ~5% of md5).\nconst MD5_SHIFTS = /* @__PURE__ */ (() => {\n const S = [\n [7, 12, 17, 22],\n [5, 9, 14, 20],\n [4, 11, 16, 23],\n [6, 10, 15, 21],\n ];\n return Uint8Array.from({ length: 64 }, (_, i) => S[Math.floor(i / 16)][i % 4]);\n})();\n/** Internal MD5 legacy hash class. */\nexport class _MD5 extends HashMD {\n A = MD5_IV[0] | 0;\n B = MD5_IV[1] | 0;\n C = MD5_IV[2] | 0;\n D = MD5_IV[3] | 0;\n constructor() {\n super(64, 16, 8, true);\n }\n get() {\n const { A, B, C, D } = this;\n return [A, B, C, D];\n }\n set(A, B, C, D) {\n this.A = A | 0;\n this.B = B | 0;\n this.C = C | 0;\n this.D = D | 0;\n }\n _cloneInto(to) {\n (to ||= new this.constructor()).set(...this.get());\n return this._cloneIntoMeta(to);\n }\n process(view, offset) {\n for (let i = 0; i < 16; i++, offset += 4)\n MD5_W[i] = view.getUint32(offset, true);\n // Compression function main loop, 64 rounds\n let { A, B, C, D } = this;\n for (let i = 0; i < 64; i++) {\n let F, g;\n if (i < 16) {\n F = Chi(B, C, D);\n g = i;\n }\n else if (i < 32) {\n // RFC 1321 round 2 uses G(B,C,D) = (B & D) | (C & ~D), which is `Chi(D, B, C)`.\n F = Chi(D, B, C);\n g = (5 * i + 1) % 16;\n }\n else if (i < 48) {\n F = B ^ C ^ D;\n g = (3 * i + 5) % 16;\n }\n else {\n F = C ^ (B | ~D);\n g = (7 * i) % 16;\n }\n F = F + A + K[i] + MD5_W[g];\n A = D;\n D = C;\n C = B;\n B = B + rotl(F, MD5_SHIFTS[i]);\n }\n // Add the compressed chunk to the current hash value\n A = (A + this.A) | 0;\n B = (B + this.B) | 0;\n C = (C + this.C) | 0;\n D = (D + this.D) | 0;\n this.set(A, B, C, D);\n }\n roundClean() {\n clean(MD5_W);\n }\n destroy() {\n // HashMD callers route post-destroy usability through `destroyed`; zeroizing alone still leaves\n // update()/digest() callable on reused instances.\n this.destroyed = true;\n this.set(0, 0, 0, 0);\n clean(this.buffer);\n }\n}\n/**\n * MD5 (RFC 1321) legacy hash function. It was cryptographically broken.\n * MD5 architecture is similar to SHA1, with some differences:\n * - Reduced output length: 16 bytes (128 bit) instead of 20\n * - 64 rounds, instead of 80\n * - Little-endian: could be faster, but will require more code\n * - Non-linear index selection: huge speed-up for unroll\n * - Per round constants: more memory accesses, additional speed-up for unroll\n * @param msg - message bytes to hash\n * @param opts - Reserved hash options.\n * @returns Digest bytes.\n * @example\n * Hash a message with MD5.\n * ```ts\n * md5(new Uint8Array([97, 98, 99]));\n * ```\n */\nexport const md5 = /* @__PURE__ */ createHasher(() => new _MD5());\n// RIPEMD-160\n// Permutation repeatedly applied to derive the later RIPEMD-160 message-order tables.\nconst Rho160 = /* @__PURE__ */ Uint8Array.from([\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n]);\nconst Id160 = /* @__PURE__ */ (() => Uint8Array.from(new Array(16).fill(0).map((_, i) => i)))();\nconst Pi160 = /* @__PURE__ */ (() => Id160.map((i) => (9 * i + 5) % 16))();\n// Five left/right message-word orderings for the RIPEMD-160 dual-lane rounds.\nconst idxLR = /* @__PURE__ */ (() => {\n const L = [Id160];\n const R = [Pi160];\n const res = [L, R];\n for (let i = 0; i < 4; i++)\n for (let j of res)\n j.push(j[i].map((k) => Rho160[k]));\n return res;\n})();\nconst idxL = /* @__PURE__ */ (() => idxLR[0])();\nconst idxR = /* @__PURE__ */ (() => idxLR[1])();\n// const [idxL, idxR] = idxLR;\n// Base per-group shift table before the left/right message-order permutations are applied.\nconst shifts160 = /* @__PURE__ */ [\n [11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8],\n [12, 13, 11, 15, 6, 9, 9, 7, 12, 15, 11, 13, 7, 8, 7, 7],\n [13, 15, 14, 11, 7, 7, 6, 8, 13, 14, 13, 12, 5, 5, 6, 9],\n [14, 11, 12, 14, 8, 6, 5, 5, 15, 12, 15, 14, 9, 9, 8, 6],\n [15, 12, 13, 13, 9, 5, 8, 6, 14, 11, 12, 11, 8, 6, 5, 5],\n].map((i) => Uint8Array.from(i));\nconst shiftsL160 = /* @__PURE__ */ idxL.map((idx, i) => idx.map((j) => shifts160[i][j]));\nconst shiftsR160 = /* @__PURE__ */ idxR.map((idx, i) => idx.map((j) => shifts160[i][j]));\n// Five left-lane additive constants for RIPEMD-160.\nconst Kl160 = /* @__PURE__ */ Uint32Array.from([\n 0x00000000, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e,\n]);\n// Five right-lane additive constants for RIPEMD-160.\nconst Kr160 = /* @__PURE__ */ Uint32Array.from([\n 0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0x00000000,\n]);\n// Called `f()` in the spec; valid `group` values are 0..4, and out-of-range\n// inputs currently fall through to the group-4 branch.\nfunction ripemd_f(group, x, y, z) {\n if (group === 0)\n return x ^ y ^ z;\n if (group === 1)\n return (x & y) | (~x & z);\n if (group === 2)\n return (x | ~y) ^ z;\n if (group === 3)\n return (x & z) | (y & ~z);\n return x ^ (y | ~z);\n}\n// Reusable 16-word RIPEMD-160 message block buffer.\nconst BUF_160 = /* @__PURE__ */ new Uint32Array(16);\n/**\n * Internal RIPEMD-160 legacy hash class.\n * RFC 2286 only adds HMAC-RIPEMD160 material, not the core hash specification.\n */\nexport class _RIPEMD160 extends HashMD {\n h0 = 0x67452301 | 0;\n h1 = 0xefcdab89 | 0;\n h2 = 0x98badcfe | 0;\n h3 = 0x10325476 | 0;\n h4 = 0xc3d2e1f0 | 0;\n constructor() {\n super(64, 20, 8, true);\n }\n get() {\n const { h0, h1, h2, h3, h4 } = this;\n return [h0, h1, h2, h3, h4];\n }\n set(h0, h1, h2, h3, h4) {\n this.h0 = h0 | 0;\n this.h1 = h1 | 0;\n this.h2 = h2 | 0;\n this.h3 = h3 | 0;\n this.h4 = h4 | 0;\n }\n _cloneInto(to) {\n (to ||= new this.constructor()).set(...this.get());\n return this._cloneIntoMeta(to);\n }\n process(view, offset) {\n for (let i = 0; i < 16; i++, offset += 4)\n BUF_160[i] = view.getUint32(offset, true);\n // prettier-ignore\n let al = this.h0 | 0, ar = al, bl = this.h1 | 0, br = bl, cl = this.h2 | 0, cr = cl, dl = this.h3 | 0, dr = dl, el = this.h4 | 0, er = el;\n // Instead of iterating 0 to 80, we split it into 5 groups\n // And use the groups in constants, functions, etc. Much simpler\n for (let group = 0; group < 5; group++) {\n const rGroup = 4 - group;\n const hbl = Kl160[group], hbr = Kr160[group]; // prettier-ignore\n const rl = idxL[group], rr = idxR[group]; // prettier-ignore\n const sl = shiftsL160[group], sr = shiftsR160[group]; // prettier-ignore\n for (let i = 0; i < 16; i++) {\n const tl = (rotl(al + ripemd_f(group, bl, cl, dl) + BUF_160[rl[i]] + hbl, sl[i]) + el) | 0;\n al = el, el = dl, dl = rotl(cl, 10) | 0, cl = bl, bl = tl; // prettier-ignore\n }\n // 2 loops are 10% faster\n for (let i = 0; i < 16; i++) {\n const tr = (rotl(ar + ripemd_f(rGroup, br, cr, dr) + BUF_160[rr[i]] + hbr, sr[i]) + er) | 0;\n ar = er, er = dr, dr = rotl(cr, 10) | 0, cr = br, br = tr; // prettier-ignore\n }\n }\n // Add the compressed chunk to the current hash value\n // Final recombination cross-adds the left/right lane accumulators into the next h0..h4 order.\n this.set((this.h1 + cl + dr) | 0, (this.h2 + dl + er) | 0, (this.h3 + el + ar) | 0, (this.h4 + al + br) | 0, (this.h0 + bl + cr) | 0);\n }\n roundClean() {\n clean(BUF_160);\n }\n destroy() {\n this.destroyed = true;\n clean(this.buffer);\n this.set(0, 0, 0, 0, 0);\n }\n}\n/**\n * RIPEMD-160 - a legacy hash function from 1990s.\n * RFC 2286 only covers HMAC-RIPEMD160 test material; the links below point\n * at the base RIPEMD-160 references.\n * * {@link https://homes.esat.kuleuven.be/~bosselae/ripemd160.html}\n * * {@link https://homes.esat.kuleuven.be/~bosselae/ripemd160/pdf/AB-9601/AB-9601.pdf}\n * @param msg - message bytes to hash\n * @param opts - Reserved hash options.\n * @returns Digest bytes.\n * @example\n * Hash a message with RIPEMD-160.\n * ```ts\n * ripemd160(new Uint8Array([97, 98, 99]));\n * ```\n */\nexport const ripemd160 = /* @__PURE__ */ createHasher(() => new _RIPEMD160());\n"],"mappings":"qRAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,WAAAE,EAAA,SAAAC,EAAA,YAAAC,ICeA,IAAMC,EAA0B,YAAY,KAAK,CAC7C,WAAY,WAAY,WAAY,UAAY,UACpD,CAAC,EA4FD,IAAMC,EAAsB,KAAK,IAAI,EAAG,EAAE,EAEpCC,EAAoB,MAAM,KAAK,CAAE,OAAQ,EAAG,EAAG,CAACC,EAAGC,IAAM,KAAK,MAAMH,EAAM,KAAK,IAAI,KAAK,IAAIG,EAAI,CAAC,CAAC,CAAC,CAAC,EAEpGC,EAAyBC,EAAQ,MAAM,EAAG,CAAC,EAE3CC,EAAwB,IAAI,YAAY,EAAE,EAG1CC,GAA8B,IAAM,CACtC,IAAMC,EAAI,CACN,CAAC,EAAG,GAAI,GAAI,EAAE,EACd,CAAC,EAAG,EAAG,GAAI,EAAE,EACb,CAAC,EAAG,GAAI,GAAI,EAAE,EACd,CAAC,EAAG,GAAI,GAAI,EAAE,CAClB,EACA,OAAO,WAAW,KAAK,CAAE,OAAQ,EAAG,EAAG,CAACN,EAAGC,IAAMK,EAAE,KAAK,MAAML,EAAI,EAAE,CAAC,EAAEA,EAAI,CAAC,CAAC,CACjF,GAAG,EAEUM,EAAN,cAAmBC,CAAO,CAhIjC,MAgIiC,CAAAC,EAAA,aAC7B,EAAIP,EAAO,CAAC,EAAI,EAChB,EAAIA,EAAO,CAAC,EAAI,EAChB,EAAIA,EAAO,CAAC,EAAI,EAChB,EAAIA,EAAO,CAAC,EAAI,EAChB,aAAc,CACV,MAAM,GAAI,GAAI,EAAG,EAAI,CACzB,CACA,KAAM,CACF,GAAM,CAAE,EAAAQ,EAAG,EAAAC,EAAG,EAAAC,EAAG,EAAAC,CAAE,EAAI,KACvB,MAAO,CAACH,EAAGC,EAAGC,EAAGC,CAAC,CACtB,CACA,IAAIH,EAAGC,EAAGC,EAAGC,EAAG,CACZ,KAAK,EAAIH,EAAI,EACb,KAAK,EAAIC,EAAI,EACb,KAAK,EAAIC,EAAI,EACb,KAAK,EAAIC,EAAI,CACjB,CACA,WAAWC,EAAI,CACX,OAACA,IAAO,IAAI,KAAK,aAAe,IAAI,GAAG,KAAK,IAAI,CAAC,EAC1C,KAAK,eAAeA,CAAE,CACjC,CACA,QAAQC,EAAMC,EAAQ,CAClB,QAASf,EAAI,EAAGA,EAAI,GAAIA,IAAKe,GAAU,EACnCZ,EAAMH,CAAC,EAAIc,EAAK,UAAUC,EAAQ,EAAI,EAE1C,GAAI,CAAE,EAAAN,EAAG,EAAAC,EAAG,EAAAC,EAAG,EAAAC,CAAE,EAAI,KACrB,QAASZ,EAAI,EAAGA,EAAI,GAAIA,IAAK,CACzB,IAAIgB,EAAGC,EACHjB,EAAI,IACJgB,EAAIE,EAAIR,EAAGC,EAAGC,CAAC,EACfK,EAAIjB,GAECA,EAAI,IAETgB,EAAIE,EAAIN,EAAGF,EAAGC,CAAC,EACfM,GAAK,EAAIjB,EAAI,GAAK,IAEbA,EAAI,IACTgB,EAAIN,EAAIC,EAAIC,EACZK,GAAK,EAAIjB,EAAI,GAAK,KAGlBgB,EAAIL,GAAKD,EAAI,CAACE,GACdK,EAAK,EAAIjB,EAAK,IAElBgB,EAAIA,EAAIP,EAAIX,EAAEE,CAAC,EAAIG,EAAMc,CAAC,EAC1BR,EAAIG,EACJA,EAAID,EACJA,EAAID,EACJA,EAAIA,EAAIS,EAAKH,EAAGZ,EAAWJ,CAAC,CAAC,CACjC,CAEAS,EAAKA,EAAI,KAAK,EAAK,EACnBC,EAAKA,EAAI,KAAK,EAAK,EACnBC,EAAKA,EAAI,KAAK,EAAK,EACnBC,EAAKA,EAAI,KAAK,EAAK,EACnB,KAAK,IAAIH,EAAGC,EAAGC,EAAGC,CAAC,CACvB,CACA,YAAa,CACTQ,EAAMjB,CAAK,CACf,CACA,SAAU,CAGN,KAAK,UAAY,GACjB,KAAK,IAAI,EAAG,EAAG,EAAG,CAAC,EACnBiB,EAAM,KAAK,MAAM,CACrB,CACJ,EAkBaC,EAAsBC,EAAa,IAAM,IAAIhB,CAAM,EDpMhE,IAAMiB,EAAiB,qCACjBC,EAAkB,gCAClBC,EAAc,qCAEdC,EAAkB,mCAClBC,EAAqB,mCASrBC,EAAN,cAA8BC,CAA4B,CAjC1D,MAiC0D,CAAAC,EAAA,wBACxD,OAAO,KAAO,6BAEd,GAAIC,IAAU,CACZ,OAAO,KAAK,aAAa,SAAS,GAAKL,CACzC,CAEA,GAAIM,IAAa,CACf,OAAO,KAAK,aAAa,YAAY,GAAKL,CAC5C,CAIAM,GAAUC,EAAqC,IAAK,EACpDC,GAAcD,EAAqC,IAAK,EACxDE,GAAoBF,EAAO,EAAK,EAIhC,OAAS,KAAKD,GAAQ,IACtB,gBAAkBI,EAAS,IAAM,KAAKF,GAAY,QAAU,IAAI,EAChE,iBAAmB,KAAKC,GAAkB,IAK1C,mBAAoB,CAElB,GAAI,KAAK,aAAa,OAAO,EAAG,CAC9B,IAAME,EAAU,KAAK,UAAU,KAAK,WAAY,CAC9C,WAAY,CAAE,SAAU,aAAc,GAAI,KAAK,UAAW,EAC1D,SAAU,CAAE,SAAU,aAAc,GAAI,KAAK,QAAS,EAEtD,UAAW,CAAE,SAAU,YAAa,GAAI,KAAKL,GAAQ,GAAI,EACzD,WAAY,CAAE,SAAU,YAAa,GAAI,KAAKE,GAAY,GAAI,CAChE,CAAC,EAEGG,IACF,KAAK,WAAaA,EAAQ,WAC1B,KAAK,SAAWA,EAAQ,SAExB,KAAKL,GAAQ,IAAMK,EAAQ,UAC3B,KAAKH,GAAY,IAAMG,EAAQ,WAEnC,CAEA,MAAM,kBAAkB,EAExB,KAAKC,GAAY,CACnB,CAEA,KAAMA,IAAc,CAClB,MAAM,KAAK,cAAc,EAGzB,IAAMC,EAAY,IAAI,gBAAgB,SAAS,MAAM,EAC/CC,EAAWD,EAAU,IAAI,OAAO,EAEtC,GAAIC,EAAU,CACZD,EAAU,OAAO,OAAO,EACxB,IAAME,EAAYF,EAAU,SAAS,EACrC,QAAQ,aACN,KACA,GACA,SAAS,UAAYE,EAAY,IAAMA,EAAY,IAAM,SAAS,IACpE,EAEA,KAAKN,GAAkB,IAAI,EAAI,EAE/B,GAAI,CACF,IAAMO,EAAU,MAAM,KAAKC,GAAYH,CAAQ,EAC/C,MAAM,KAAKI,GAAYF,CAAO,CAChC,OAASG,EAAK,CACZ,QAAQ,KAAK,gDAAiDA,CAAG,CACnE,QAAE,CACA,KAAKV,GAAkB,IAAI,EAAK,CAClC,CAEA,MACF,CAEA,IAAMW,EAAS,MAAMC,EAAY,KAAMvB,CAAW,EAElD,GAAIsB,EACF,GAAI,CACF,GAAM,CAAE,IAAAE,EAAK,KAAMC,CAAO,EAAI,KAAK,MAAMH,CAAM,EAC3C,MAAM,KAAK,SAAS,GACtB,KAAKZ,GAAY,IAAIc,CAAG,EACxB,KAAKhB,GAAQ,IAAIiB,CAAM,IAEvB,KAAKf,GAAY,MAAQc,EACzB,KAAKhB,GAAQ,MAAQiB,EAEzB,MAAQ,CACN,MAAMC,EAAa,KAAM1B,CAAW,CACtC,CAEJ,CAQA,QAAS,CACP,IAAM2B,EAAc,SAAS,OAAS,SAAS,SAAW,SAAS,OAC7DC,EAAU,IAAI,IAAI7B,CAAe,EACvC6B,EAAQ,aAAa,IAAI,UAAW,KAAKtB,EAAO,EAChDsB,EAAQ,aAAa,IAAI,KAAMD,CAAW,GAIzC,OAAO,KAAO,QAAQ,SAAS,OAAOC,EAAQ,SAAS,CAAC,CAC3D,CAKA,MAAM,SAAU,CACd,KAAKlB,GAAY,IAAI,IAAI,EACzB,KAAKF,GAAQ,IAAI,IAAI,EACrB,MAAMkB,EAAa,KAAM1B,CAAW,CACtC,CAGA,KAAMoB,GAAY,CAAE,IAAAI,EAAK,KAAMC,CAAO,EAAG,CACvC,KAAKf,GAAY,IAAIc,CAAG,EACxB,KAAKhB,GAAQ,IAAIiB,CAAM,EACvB,MAAMI,EAAY,KAAM7B,EAAa,KAAK,UAAU,CAAE,IAAAwB,EAAK,KAAMC,CAAO,CAAC,CAAC,CAC5E,CAOA,MAAM,WAAWK,EAAO,CACtB,IAAMC,EAAOD,EAAM,MAAQ,CAAC,EAEtBE,EAAS,CAAC,EAEhB,OAAID,EAAK,QAAOC,EAAO,MAAQD,EAAK,OAChCA,EAAK,SAAQC,EAAO,OAASD,EAAK,QAClCA,EAAK,QAAOC,EAAO,MAAQD,EAAK,OAChCA,EAAK,cAAaC,EAAO,YAAcD,EAAK,aAC5CA,EAAK,OAAO,IAAM,OAAMC,EAAO,YAAc,OAAOD,EAAK,MAAM,EAAE,GACjED,EAAM,OAAO,UAAY,OAC3BE,EAAO,SAAW,OAAO,KAAK,MAAMF,EAAM,MAAM,SAAW,GAAI,CAAC,GAG3D,KAAKG,GAAmB,yBAA0BD,CAAM,CACjE,CAOA,MAAM,SAASF,EAAOI,EAAWC,EAAU,CACzC,IAAMJ,EAAOD,EAAM,MAAQ,CAAC,EAEtBE,EAAS,CACb,UAAW,OAAO,KAAK,MAAME,EAAY,GAAI,CAAC,CAChD,EAEA,OAAIH,EAAK,QAAOC,EAAO,MAAQD,EAAK,OAChCA,EAAK,SAAQC,EAAO,OAASD,EAAK,QAClCA,EAAK,QAAOC,EAAO,MAAQD,EAAK,OAChCA,EAAK,cAAaC,EAAO,YAAcD,EAAK,aAC5CA,EAAK,OAAO,IAAM,OAAMC,EAAO,YAAc,OAAOD,EAAK,MAAM,EAAE,GACjED,EAAM,OAAO,UAAY,OAC3BE,EAAO,SAAW,OAAO,KAAK,MAAMF,EAAM,MAAM,SAAW,GAAI,CAAC,GAG3D,KAAKG,GAAmB,iBAAkBD,CAAM,CACzD,CAUAI,GAAMJ,EAAQ,CACZ,IAAMK,EAAM,OAAO,KAAKL,CAAM,EAC3B,KAAK,EACL,IAAKM,GAAMA,EAAIN,EAAOM,CAAC,CAAC,EACxB,KAAK,EAAE,EACV,OAAOC,EAAWC,EAAIC,EAAYJ,EAAM,KAAK9B,EAAU,CAAC,CAAC,CAC3D,CAOA,KAAMmC,GAAMC,EAAQX,EAAS,CAAC,EAAG,CAC/B,IAAMY,EAAY,CAAE,GAAGZ,EAAQ,QAAS,KAAK1B,GAAS,OAAAqC,CAAO,EACvDE,EAAU,KAAKT,GAAMQ,CAAS,EAC9BE,EAAO,IAAI,gBAAgB,CAAE,GAAGF,EAAW,QAAAC,EAAS,OAAQ,MAAO,CAAC,EAGpEE,EAAO,MADI,MAAM,MAAMjD,EAAgB,CAAE,OAAQ,OAAQ,KAAAgD,CAAK,CAAC,GACzC,KAAK,EAEjC,GAAIC,EAAK,MACP,MAAM,IAAI,MAAM,iBAAiBA,EAAK,KAAK,KAAKA,EAAK,OAAO,EAAE,EAGhE,OAAOA,CACT,CAOA,KAAMd,GAAmBU,EAAQX,EAAS,CAAC,EAAG,CAC5C,IAAMgB,EAAK,KAAKtC,GAAY,MAC5B,GAAI,CAACsC,EAAI,MAAM,IAAI,MAAM,gCAAgC,EACzD,OAAO,KAAKN,GAAMC,EAAQ,CAAE,GAAGX,EAAQ,GAAAgB,CAAG,CAAC,CAC7C,CAMA,KAAM7B,GAAY8B,EAAO,CAEvB,OADa,MAAM,KAAKP,GAAM,kBAAmB,CAAE,MAAAO,CAAM,CAAC,GAC9C,OACd,CACF,EAEOC,EAAQ/C,EAMFgD,EAAQhD,EACRiD,EAAO,sBAEpBC,EAAcD,EAAMD,CAAK","names":["element_exports","__export","CLASS","NAME","element_default","SHA1_IV","p32","K","_","i","MD5_IV","SHA1_IV","MD5_W","MD5_SHIFTS","S","_MD5","HashMD","__name","A","B","C","D","to","view","offset","F","g","Chi","rotl","clean","md5","createHasher","LASTFM_API_URL","LASTFM_AUTH_URL","STORAGE_KEY","DEFAULT_API_KEY","DEFAULT_API_SECRET","LastFmScrobbler","BroadcastableDiffuseElement","__name","#apiKey","#apiSecret","#handle","signal","#sessionKey","#isAuthenticating","computed","actions","#tryRestore","urlParams","urlToken","newSearch","session","#getSession","#setSession","err","stored","readSession","key","handle","clearSession","callbackUrl","authUrl","saveSession","track","tags","params","#authenticatedCall","startedAt","_options","#sign","str","k","bytesToHex","md5","utf8ToBytes","#call","method","allParams","api_sig","body","data","sk","token","element_default","CLASS","NAME","defineElement"],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse","file":"/chunk-APV7W5BS.js.map"} \ No newline at end of file +{"version":3,"sources":["/components/supplement/last.fm/element.js","/node_modules/.deno/@noble+hashes@2.4.0/node_modules/@noble/hashes/legacy.js"],"sourcesContent":["import { md5 } from \"@noble/hashes/legacy.js\";\nimport { bytesToHex, utf8ToBytes } from \"@noble/hashes/utils.js\";\n\nimport {\n BroadcastableDiffuseElement,\n defineElement,\n} from \"~/common/element.js\";\nimport { computed, signal } from \"~/common/signal.js\";\nimport { clearSession, readSession, saveSession } from \"../session.js\";\n\n/**\n * @import {Track} from \"~/definitions/types.d.ts\"\n * @import {ScrobbleElement} from \"@specs/components/supplement/types.d.ts\"\n */\n\n////////////////////////////////////////////\n// CONSTANTS\n////////////////////////////////////////////\n\nconst LASTFM_API_URL = \"https://ws.audioscrobbler.com/2.0/\";\nconst LASTFM_AUTH_URL = \"https://www.last.fm/api/auth/\";\nconst STORAGE_KEY = \"diffuse/supplement/last.fm/session\";\n\nconst DEFAULT_API_KEY = \"4f0fe85b67baef8bb7d008a8754a95e5\";\nconst DEFAULT_API_SECRET = \"0cec3ca0f58e04a5082f1131aba1e0d3\";\n\n////////////////////////////////////////////\n// ELEMENT\n////////////////////////////////////////////\n\n/**\n * @implements {ScrobbleElement}\n */\nclass LastFmScrobbler extends BroadcastableDiffuseElement {\n static NAME = \"diffuse/supplement/last.fm\";\n\n get #apiKey() {\n return this.getAttribute(\"api-key\") ?? DEFAULT_API_KEY;\n }\n\n get #apiSecret() {\n return this.getAttribute(\"api-secret\") ?? DEFAULT_API_SECRET;\n }\n\n // SIGNALS\n\n #handle = signal(/** @type {string | null} */ (null));\n #sessionKey = signal(/** @type {string | null} */ (null));\n #isAuthenticating = signal(false);\n\n // STATE\n\n handle = this.#handle.get;\n isAuthenticated = computed(() => this.#sessionKey.value !== null);\n isAuthenticating = this.#isAuthenticating.get;\n\n // LIFECYCLE\n\n /** @override */\n connectedCallback() {\n // Broadcast if needed\n if (this.hasAttribute(\"group\")) {\n const actions = this.broadcast(this.identifier, {\n nowPlaying: { strategy: \"leaderOnly\", fn: this.nowPlaying },\n scrobble: { strategy: \"leaderOnly\", fn: this.scrobble },\n\n setHandle: { strategy: \"replicate\", fn: this.#handle.set },\n setSession: { strategy: \"replicate\", fn: this.#sessionKey.set },\n });\n\n if (actions) {\n this.nowPlaying = actions.nowPlaying;\n this.scrobble = actions.scrobble;\n\n this.#handle.set = actions.setHandle;\n this.#sessionKey.set = actions.setSession;\n }\n }\n\n super.connectedCallback();\n\n this.#tryRestore();\n }\n\n async #tryRestore() {\n await this.whenConnected();\n\n // last.fm appends ?token=TOKEN to the callback URL after authorization.\n const urlParams = new URLSearchParams(location.search);\n const urlToken = urlParams.get(\"token\");\n\n if (urlToken) {\n urlParams.delete(\"token\");\n const newSearch = urlParams.toString();\n history.replaceState(\n null,\n \"\",\n location.pathname + (newSearch ? \"?\" + newSearch : \"\") + location.hash,\n );\n\n this.#isAuthenticating.set(true);\n\n try {\n const session = await this.#getSession(urlToken);\n await this.#setSession(session);\n } catch (err) {\n console.warn(\"last.fm: failed to exchange token for session\", err);\n } finally {\n this.#isAuthenticating.set(false);\n }\n\n return;\n }\n\n const stored = await readSession(this, STORAGE_KEY);\n\n if (stored) {\n try {\n const { key, name: handle } = JSON.parse(stored);\n if (await this.isLeader()) {\n this.#sessionKey.set(key);\n this.#handle.set(handle);\n } else {\n this.#sessionKey.value = key;\n this.#handle.value = handle;\n }\n } catch {\n await clearSession(this, STORAGE_KEY);\n }\n }\n }\n\n // AUTH\n\n /**\n * Initiate the last.fm auth flow.\n * Redirects the browser to the authorization page; last.fm appends ?token=TOKEN to the callback.\n */\n signIn() {\n const callbackUrl = location.origin + location.pathname + location.search;\n const authUrl = new URL(LASTFM_AUTH_URL);\n authUrl.searchParams.set(\"api_key\", this.#apiKey);\n authUrl.searchParams.set(\"cb\", callbackUrl);\n\n // Navigate the top-level frame so last.fm's X-Frame-Options doesn't block loading\n // when this element is used inside an iframe.\n (window.top ?? window).location.assign(authUrl.toString());\n }\n\n /**\n * Clear the stored session.\n */\n async signOut() {\n this.#sessionKey.set(null);\n this.#handle.set(null);\n await clearSession(this, STORAGE_KEY);\n }\n\n /** @param {{ key: string, name: string }} session */\n async #setSession({ key, name: handle }) {\n this.#sessionKey.set(key);\n this.#handle.set(handle);\n await saveSession(this, STORAGE_KEY, JSON.stringify({ key, name: handle }));\n }\n\n // SCROBBLE ACTIONS\n\n /**\n * @param {Track} track\n */\n async nowPlaying(track) {\n const tags = track.tags ?? {};\n /** @type {Record} */\n const params = {};\n\n if (tags.title) params.track = tags.title;\n if (tags.artist) params.artist = tags.artist;\n if (tags.album) params.album = tags.album;\n if (tags.albumartist) params.albumArtist = tags.albumartist;\n if (tags.track?.no != null) params.trackNumber = String(tags.track.no);\n if (track.stats?.duration != null) {\n params.duration = String(Math.round(track.stats.duration / 1000));\n }\n\n return this.#authenticatedCall(\"track.updateNowPlaying\", params);\n }\n\n /**\n * @param {Track} track\n * @param {number} startedAt Unix timestamp in milliseconds\n * @param {{ duration?: number }} [_options] duration in milliseconds\n */\n async scrobble(track, startedAt, _options) {\n const tags = track.tags ?? {};\n /** @type {Record} */\n const params = {\n timestamp: String(Math.floor(startedAt / 1000)),\n };\n\n if (tags.title) params.track = tags.title;\n if (tags.artist) params.artist = tags.artist;\n if (tags.album) params.album = tags.album;\n if (tags.albumartist) params.albumArtist = tags.albumartist;\n if (tags.track?.no != null) params.trackNumber = String(tags.track.no);\n if (track.stats?.duration != null) {\n params.duration = String(Math.round(track.stats.duration / 1000));\n }\n\n return this.#authenticatedCall(\"track.scrobble\", params);\n }\n\n // API\n\n /**\n * Sign a set of API parameters (excluding `format` and `callback`).\n *\n * @param {Record} params\n * @returns {string} MD5 hex digest\n */\n #sign(params) {\n const str = Object.keys(params)\n .sort()\n .map((k) => k + params[k])\n .join(\"\");\n return bytesToHex(md5(utf8ToBytes(str + this.#apiSecret)));\n }\n\n /**\n * @param {string} method\n * @param {Record} [params]\n * @returns {Promise}\n */\n async #call(method, params = {}) {\n const allParams = { ...params, api_key: this.#apiKey, method };\n const api_sig = this.#sign(allParams);\n const body = new URLSearchParams({ ...allParams, api_sig, format: \"json\" });\n\n const response = await fetch(LASTFM_API_URL, { method: \"POST\", body });\n const data = await response.json();\n\n if (data.error) {\n throw new Error(`last.fm error ${data.error}: ${data.message}`);\n }\n\n return data;\n }\n\n /**\n * @param {string} method\n * @param {Record} [params]\n * @returns {Promise}\n */\n async #authenticatedCall(method, params = {}) {\n const sk = this.#sessionKey.value;\n if (!sk) throw new Error(\"Not authenticated with last.fm\");\n return this.#call(method, { ...params, sk });\n }\n\n /**\n * @param {string} token\n * @returns {Promise<{ key: string, name: string }>}\n */\n async #getSession(token) {\n const data = await this.#call(\"auth.getSession\", { token });\n return data.session;\n }\n}\n\nexport default LastFmScrobbler;\n\n////////////////////////////////////////////\n// REGISTER\n////////////////////////////////////////////\n\nexport const CLASS = LastFmScrobbler;\nexport const NAME = \"ds-lastfm-scrobbler\";\n\ndefineElement(NAME, CLASS);\n","/**\n\nSHA1 (RFC 3174), MD5 (RFC 1321), and RIPEMD160 legacy, weak hash functions.\nRFC 2286 only covers HMAC-RIPEMD160 wrapper material and test vectors,\nnot the base RIPEMD-160 compression spec.\nDon't use them in a new protocol. What \"weak\" means:\n\n- Collisions can be made with 2^18 effort in MD5, 2^60 in SHA1, 2^80 in RIPEMD160.\n- No practical pre-image attacks (only theoretical, 2^123.4)\n- HMAC seems kinda ok: https://www.rfc-editor.org/rfc/rfc6151\n * @module\n */\nimport { Chi, HashMD, Maj } from \"./_md.js\";\nimport { clean, createHasher, rotl } from \"./utils.js\";\n/** Initial SHA-1 state from RFC 3174 §6.1. */\nconst SHA1_IV = /* @__PURE__ */ Uint32Array.from([\n 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0,\n]);\n// Reusable 80-word SHA-1 message schedule buffer.\nconst SHA1_W = /* @__PURE__ */ new Uint32Array(80);\n/** Internal SHA1 legacy hash class. */\nexport class _SHA1 extends HashMD {\n A = SHA1_IV[0] | 0;\n B = SHA1_IV[1] | 0;\n C = SHA1_IV[2] | 0;\n D = SHA1_IV[3] | 0;\n E = SHA1_IV[4] | 0;\n constructor() {\n super(64, 20, 8, false);\n }\n get() {\n const { A, B, C, D, E } = this;\n return [A, B, C, D, E];\n }\n set(A, B, C, D, E) {\n this.A = A | 0;\n this.B = B | 0;\n this.C = C | 0;\n this.D = D | 0;\n this.E = E | 0;\n }\n _cloneInto(to) {\n (to ||= new this.constructor()).set(...this.get());\n return this._cloneIntoMeta(to);\n }\n process(view, offset) {\n for (let i = 0; i < 16; i++, offset += 4)\n SHA1_W[i] = view.getUint32(offset, false);\n for (let i = 16; i < 80; i++)\n SHA1_W[i] = rotl(SHA1_W[i - 3] ^ SHA1_W[i - 8] ^ SHA1_W[i - 14] ^ SHA1_W[i - 16], 1);\n // Compression function main loop, 80 rounds\n let { A, B, C, D, E } = this;\n for (let i = 0; i < 80; i++) {\n let F, K;\n if (i < 20) {\n F = Chi(B, C, D);\n K = 0x5a827999;\n }\n else if (i < 40) {\n F = B ^ C ^ D;\n K = 0x6ed9eba1;\n }\n else if (i < 60) {\n F = Maj(B, C, D);\n K = 0x8f1bbcdc;\n }\n else {\n F = B ^ C ^ D;\n K = 0xca62c1d6;\n }\n const T = (rotl(A, 5) + F + E + K + SHA1_W[i]) | 0;\n E = D;\n D = C;\n C = rotl(B, 30);\n B = A;\n A = T;\n }\n // Add the compressed chunk to the current hash value\n A = (A + this.A) | 0;\n B = (B + this.B) | 0;\n C = (C + this.C) | 0;\n D = (D + this.D) | 0;\n E = (E + this.E) | 0;\n this.set(A, B, C, D, E);\n }\n roundClean() {\n clean(SHA1_W);\n }\n destroy() {\n // HashMD callers route post-destroy usability through `destroyed`; zeroizing alone still leaves\n // update()/digest() callable on reused instances.\n this.destroyed = true;\n this.set(0, 0, 0, 0, 0);\n clean(this.buffer);\n }\n}\n/**\n * SHA1 (RFC 3174) legacy hash function. It was cryptographically broken.\n * @param msg - message bytes to hash\n * @param opts - Reserved hash options.\n * @returns Digest bytes.\n * @example\n * Hash a message with SHA1.\n * ```ts\n * sha1(new Uint8Array([97, 98, 99]));\n * ```\n */\nexport const sha1 = /* @__PURE__ */ createHasher(() => new _SHA1());\n/** RFC 1321 `T[i]` uses `floor(2^32 * abs(sin(i)))`; this is the shared `2^32` scale factor. */\nconst p32 = /* @__PURE__ */ Math.pow(2, 32);\n/** RFC 1321 `T[1..64]` table. */\nconst K = /* @__PURE__ */ Array.from({ length: 64 }, (_, i) => Math.floor(p32 * Math.abs(Math.sin(i + 1))));\n/** MD5 initial state from RFC 1321, stored as 4 u32 words. */\nconst MD5_IV = /* @__PURE__ */ SHA1_IV.slice(0, 4);\n// Reusable 16-word MD5 message block buffer.\nconst MD5_W = /* @__PURE__ */ new Uint32Array(16);\n// RFC 1321 §3.4 per-round rotate amounts, flattened to 64 entries so the round loop\n// avoids allocating a 4-element array literal every round (measured ~5% of md5).\nconst MD5_SHIFTS = /* @__PURE__ */ (() => {\n const S = [\n [7, 12, 17, 22],\n [5, 9, 14, 20],\n [4, 11, 16, 23],\n [6, 10, 15, 21],\n ];\n return Uint8Array.from({ length: 64 }, (_, i) => S[Math.floor(i / 16)][i % 4]);\n})();\n/** Internal MD5 legacy hash class. */\nexport class _MD5 extends HashMD {\n A = MD5_IV[0] | 0;\n B = MD5_IV[1] | 0;\n C = MD5_IV[2] | 0;\n D = MD5_IV[3] | 0;\n constructor() {\n super(64, 16, 8, true);\n }\n get() {\n const { A, B, C, D } = this;\n return [A, B, C, D];\n }\n set(A, B, C, D) {\n this.A = A | 0;\n this.B = B | 0;\n this.C = C | 0;\n this.D = D | 0;\n }\n _cloneInto(to) {\n (to ||= new this.constructor()).set(...this.get());\n return this._cloneIntoMeta(to);\n }\n process(view, offset) {\n for (let i = 0; i < 16; i++, offset += 4)\n MD5_W[i] = view.getUint32(offset, true);\n // Compression function main loop, 64 rounds\n let { A, B, C, D } = this;\n for (let i = 0; i < 64; i++) {\n let F, g;\n if (i < 16) {\n F = Chi(B, C, D);\n g = i;\n }\n else if (i < 32) {\n // RFC 1321 round 2 uses G(B,C,D) = (B & D) | (C & ~D), which is `Chi(D, B, C)`.\n F = Chi(D, B, C);\n g = (5 * i + 1) % 16;\n }\n else if (i < 48) {\n F = B ^ C ^ D;\n g = (3 * i + 5) % 16;\n }\n else {\n F = C ^ (B | ~D);\n g = (7 * i) % 16;\n }\n F = F + A + K[i] + MD5_W[g];\n A = D;\n D = C;\n C = B;\n B = B + rotl(F, MD5_SHIFTS[i]);\n }\n // Add the compressed chunk to the current hash value\n A = (A + this.A) | 0;\n B = (B + this.B) | 0;\n C = (C + this.C) | 0;\n D = (D + this.D) | 0;\n this.set(A, B, C, D);\n }\n roundClean() {\n clean(MD5_W);\n }\n destroy() {\n // HashMD callers route post-destroy usability through `destroyed`; zeroizing alone still leaves\n // update()/digest() callable on reused instances.\n this.destroyed = true;\n this.set(0, 0, 0, 0);\n clean(this.buffer);\n }\n}\n/**\n * MD5 (RFC 1321) legacy hash function. It was cryptographically broken.\n * MD5 architecture is similar to SHA1, with some differences:\n * - Reduced output length: 16 bytes (128 bit) instead of 20\n * - 64 rounds, instead of 80\n * - Little-endian: could be faster, but will require more code\n * - Non-linear index selection: huge speed-up for unroll\n * - Per round constants: more memory accesses, additional speed-up for unroll\n * @param msg - message bytes to hash\n * @param opts - Reserved hash options.\n * @returns Digest bytes.\n * @example\n * Hash a message with MD5.\n * ```ts\n * md5(new Uint8Array([97, 98, 99]));\n * ```\n */\nexport const md5 = /* @__PURE__ */ createHasher(() => new _MD5());\n// RIPEMD-160\n// Permutation repeatedly applied to derive the later RIPEMD-160 message-order tables.\nconst Rho160 = /* @__PURE__ */ Uint8Array.from([\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n]);\nconst Id160 = /* @__PURE__ */ (() => Uint8Array.from(new Array(16).fill(0).map((_, i) => i)))();\nconst Pi160 = /* @__PURE__ */ (() => Id160.map((i) => (9 * i + 5) % 16))();\n// Five left/right message-word orderings for the RIPEMD-160 dual-lane rounds.\nconst idxLR = /* @__PURE__ */ (() => {\n const L = [Id160];\n const R = [Pi160];\n const res = [L, R];\n for (let i = 0; i < 4; i++)\n for (let j of res)\n j.push(j[i].map((k) => Rho160[k]));\n return res;\n})();\nconst idxL = /* @__PURE__ */ (() => idxLR[0])();\nconst idxR = /* @__PURE__ */ (() => idxLR[1])();\n// const [idxL, idxR] = idxLR;\n// Base per-group shift table before the left/right message-order permutations are applied.\nconst shifts160 = /* @__PURE__ */ [\n [11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8],\n [12, 13, 11, 15, 6, 9, 9, 7, 12, 15, 11, 13, 7, 8, 7, 7],\n [13, 15, 14, 11, 7, 7, 6, 8, 13, 14, 13, 12, 5, 5, 6, 9],\n [14, 11, 12, 14, 8, 6, 5, 5, 15, 12, 15, 14, 9, 9, 8, 6],\n [15, 12, 13, 13, 9, 5, 8, 6, 14, 11, 12, 11, 8, 6, 5, 5],\n].map((i) => Uint8Array.from(i));\nconst shiftsL160 = /* @__PURE__ */ idxL.map((idx, i) => idx.map((j) => shifts160[i][j]));\nconst shiftsR160 = /* @__PURE__ */ idxR.map((idx, i) => idx.map((j) => shifts160[i][j]));\n// Five left-lane additive constants for RIPEMD-160.\nconst Kl160 = /* @__PURE__ */ Uint32Array.from([\n 0x00000000, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e,\n]);\n// Five right-lane additive constants for RIPEMD-160.\nconst Kr160 = /* @__PURE__ */ Uint32Array.from([\n 0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0x00000000,\n]);\n// Called `f()` in the spec; valid `group` values are 0..4, and out-of-range\n// inputs currently fall through to the group-4 branch.\nfunction ripemd_f(group, x, y, z) {\n if (group === 0)\n return x ^ y ^ z;\n if (group === 1)\n return (x & y) | (~x & z);\n if (group === 2)\n return (x | ~y) ^ z;\n if (group === 3)\n return (x & z) | (y & ~z);\n return x ^ (y | ~z);\n}\n// Reusable 16-word RIPEMD-160 message block buffer.\nconst BUF_160 = /* @__PURE__ */ new Uint32Array(16);\n/**\n * Internal RIPEMD-160 legacy hash class.\n * RFC 2286 only adds HMAC-RIPEMD160 material, not the core hash specification.\n */\nexport class _RIPEMD160 extends HashMD {\n h0 = 0x67452301 | 0;\n h1 = 0xefcdab89 | 0;\n h2 = 0x98badcfe | 0;\n h3 = 0x10325476 | 0;\n h4 = 0xc3d2e1f0 | 0;\n constructor() {\n super(64, 20, 8, true);\n }\n get() {\n const { h0, h1, h2, h3, h4 } = this;\n return [h0, h1, h2, h3, h4];\n }\n set(h0, h1, h2, h3, h4) {\n this.h0 = h0 | 0;\n this.h1 = h1 | 0;\n this.h2 = h2 | 0;\n this.h3 = h3 | 0;\n this.h4 = h4 | 0;\n }\n _cloneInto(to) {\n (to ||= new this.constructor()).set(...this.get());\n return this._cloneIntoMeta(to);\n }\n process(view, offset) {\n for (let i = 0; i < 16; i++, offset += 4)\n BUF_160[i] = view.getUint32(offset, true);\n // prettier-ignore\n let al = this.h0 | 0, ar = al, bl = this.h1 | 0, br = bl, cl = this.h2 | 0, cr = cl, dl = this.h3 | 0, dr = dl, el = this.h4 | 0, er = el;\n // Instead of iterating 0 to 80, we split it into 5 groups\n // And use the groups in constants, functions, etc. Much simpler\n for (let group = 0; group < 5; group++) {\n const rGroup = 4 - group;\n const hbl = Kl160[group], hbr = Kr160[group]; // prettier-ignore\n const rl = idxL[group], rr = idxR[group]; // prettier-ignore\n const sl = shiftsL160[group], sr = shiftsR160[group]; // prettier-ignore\n for (let i = 0; i < 16; i++) {\n const tl = (rotl(al + ripemd_f(group, bl, cl, dl) + BUF_160[rl[i]] + hbl, sl[i]) + el) | 0;\n al = el, el = dl, dl = rotl(cl, 10) | 0, cl = bl, bl = tl; // prettier-ignore\n }\n // 2 loops are 10% faster\n for (let i = 0; i < 16; i++) {\n const tr = (rotl(ar + ripemd_f(rGroup, br, cr, dr) + BUF_160[rr[i]] + hbr, sr[i]) + er) | 0;\n ar = er, er = dr, dr = rotl(cr, 10) | 0, cr = br, br = tr; // prettier-ignore\n }\n }\n // Add the compressed chunk to the current hash value\n // Final recombination cross-adds the left/right lane accumulators into the next h0..h4 order.\n this.set((this.h1 + cl + dr) | 0, (this.h2 + dl + er) | 0, (this.h3 + el + ar) | 0, (this.h4 + al + br) | 0, (this.h0 + bl + cr) | 0);\n }\n roundClean() {\n clean(BUF_160);\n }\n destroy() {\n this.destroyed = true;\n clean(this.buffer);\n this.set(0, 0, 0, 0, 0);\n }\n}\n/**\n * RIPEMD-160 - a legacy hash function from 1990s.\n * RFC 2286 only covers HMAC-RIPEMD160 test material; the links below point\n * at the base RIPEMD-160 references.\n * * {@link https://homes.esat.kuleuven.be/~bosselae/ripemd160.html}\n * * {@link https://homes.esat.kuleuven.be/~bosselae/ripemd160/pdf/AB-9601/AB-9601.pdf}\n * @param msg - message bytes to hash\n * @param opts - Reserved hash options.\n * @returns Digest bytes.\n * @example\n * Hash a message with RIPEMD-160.\n * ```ts\n * ripemd160(new Uint8Array([97, 98, 99]));\n * ```\n */\nexport const ripemd160 = /* @__PURE__ */ createHasher(() => new _RIPEMD160());\n"],"mappings":"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","names":["element_exports","__export","CLASS","NAME","element_default","SHA1_IV","p32","K","_","i","MD5_IV","SHA1_IV","MD5_W","MD5_SHIFTS","S","_MD5","HashMD","__name","A","B","C","D","to","view","offset","F","g","Chi","rotl","clean","md5","createHasher","LASTFM_API_URL","LASTFM_AUTH_URL","STORAGE_KEY","DEFAULT_API_KEY","DEFAULT_API_SECRET","LastFmScrobbler","BroadcastableDiffuseElement","__name","#apiKey","#apiSecret","#handle","signal","#sessionKey","#isAuthenticating","computed","actions","#tryRestore","urlParams","urlToken","newSearch","session","#getSession","#setSession","err","stored","readSession","key","handle","clearSession","callbackUrl","authUrl","saveSession","track","tags","params","#authenticatedCall","startedAt","_options","#sign","str","k","bytesToHex","md5","utf8ToBytes","#call","method","allParams","api_sig","body","data","sk","token","element_default","CLASS","NAME","defineElement"],"sourceRoot":"","file":"/chunk-APV7W5BS.js.map"} \ No newline at end of file diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-B4RCZ6UO.js b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-B4RCZ6UO.js similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-B4RCZ6UO.js rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-B4RCZ6UO.js diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-B4RCZ6UO.js.br b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-B4RCZ6UO.js.br similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-B4RCZ6UO.js.br rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-B4RCZ6UO.js.br diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-B4RCZ6UO.js.map b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-B4RCZ6UO.js.map similarity index 94% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-B4RCZ6UO.js.map rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-B4RCZ6UO.js.map index 065959e7..3e3c4995 100644 --- a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-B4RCZ6UO.js.map +++ b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-B4RCZ6UO.js.map @@ -1 +1 @@ -{"version":3,"sources":["/components/metadata/audio-file/element.js"],"sourcesContent":["import { defineElement, DiffuseElement, query } from \"~/common/element.js\";\n\n/**\n * @import {ProxiedActions} from \"~/common/worker.d.ts\"\n * @import {InputElement} from \"@specs/components/input/types.d.ts\"\n * @import {Actions} from \"@specs/components/metadata/types.d.ts\"\n */\n\n////////////////////////////////////////////\n// ELEMENT\n////////////////////////////////////////////\n\n/**\n * @implements {ProxiedActions}\n */\nclass AudioFileMetadata extends DiffuseElement {\n static NAME = \"diffuse/metadata/audio-file\";\n static WORKER_URL = \"components/metadata/audio-file/worker.js\";\n\n constructor() {\n super();\n\n /** @type {ProxiedActions} */\n const p = this.workerProxy();\n\n this.patch = p.patch;\n }\n\n // LIFECYCLE\n\n /** @override */\n async connectedCallback() {\n super.connectedCallback();\n\n /** @type {InputElement} */\n this.input = query(this, \"input-selector\");\n\n await customElements.whenDefined(this.input.localName);\n }\n\n // WORKERS\n\n /**\n * @override\n */\n dependencies() {\n if (!this.input) throw new Error(\"Input element not defined yet\");\n return { input: this.input };\n }\n}\n\nexport default AudioFileMetadata;\n\n////////////////////////////////////////////\n// REGISTER\n////////////////////////////////////////////\n\nexport const CLASS = AudioFileMetadata;\nexport const NAME = \"dm-audio-file\";\n\ndefineElement(NAME, AudioFileMetadata);\n"],"mappings":"qGAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,WAAAE,EAAA,SAAAC,EAAA,YAAAC,IAeA,IAAMC,EAAN,cAAgCC,CAAe,CAf/C,MAe+C,CAAAC,EAAA,0BAC7C,OAAO,KAAO,8BACd,OAAO,WAAa,2CAEpB,aAAc,CACZ,MAAM,EAGN,IAAMC,EAAI,KAAK,YAAY,EAE3B,KAAK,MAAQA,EAAE,KACjB,CAKA,MAAM,mBAAoB,CACxB,MAAM,kBAAkB,EAGxB,KAAK,MAAQC,EAAM,KAAM,gBAAgB,EAEzC,MAAM,eAAe,YAAY,KAAK,MAAM,SAAS,CACvD,CAOA,cAAe,CACb,GAAI,CAAC,KAAK,MAAO,MAAM,IAAI,MAAM,+BAA+B,EAChE,MAAO,CAAE,MAAO,KAAK,KAAM,CAC7B,CACF,EAEOC,EAAQL,EAMFM,EAAQN,EACRO,EAAO,gBAEpBC,EAAcD,EAAMP,CAAiB","names":["element_exports","__export","CLASS","NAME","element_default","AudioFileMetadata","DiffuseElement","__name","p","query","element_default","CLASS","NAME","defineElement"],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse","file":"/chunk-B4RCZ6UO.js.map"} \ No newline at end of file +{"version":3,"sources":["/components/metadata/audio-file/element.js"],"sourcesContent":["import { defineElement, DiffuseElement, query } from \"~/common/element.js\";\n\n/**\n * @import {ProxiedActions} from \"~/common/worker.d.ts\"\n * @import {InputElement} from \"@specs/components/input/types.d.ts\"\n * @import {Actions} from \"@specs/components/metadata/types.d.ts\"\n */\n\n////////////////////////////////////////////\n// ELEMENT\n////////////////////////////////////////////\n\n/**\n * @implements {ProxiedActions}\n */\nclass AudioFileMetadata extends DiffuseElement {\n static NAME = \"diffuse/metadata/audio-file\";\n static WORKER_URL = \"components/metadata/audio-file/worker.js\";\n\n constructor() {\n super();\n\n /** @type {ProxiedActions} */\n const p = this.workerProxy();\n\n this.patch = p.patch;\n }\n\n // LIFECYCLE\n\n /** @override */\n async connectedCallback() {\n super.connectedCallback();\n\n /** @type {InputElement} */\n this.input = query(this, \"input-selector\");\n\n await customElements.whenDefined(this.input.localName);\n }\n\n // WORKERS\n\n /**\n * @override\n */\n dependencies() {\n if (!this.input) throw new Error(\"Input element not defined yet\");\n return { input: this.input };\n }\n}\n\nexport default AudioFileMetadata;\n\n////////////////////////////////////////////\n// REGISTER\n////////////////////////////////////////////\n\nexport const CLASS = AudioFileMetadata;\nexport const NAME = \"dm-audio-file\";\n\ndefineElement(NAME, AudioFileMetadata);\n"],"mappings":"qGAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,WAAAE,EAAA,SAAAC,EAAA,YAAAC,IAeA,IAAMC,EAAN,cAAgCC,CAAe,CAf/C,MAe+C,CAAAC,EAAA,0BAC7C,OAAO,KAAO,8BACd,OAAO,WAAa,2CAEpB,aAAc,CACZ,MAAM,EAGN,IAAMC,EAAI,KAAK,YAAY,EAE3B,KAAK,MAAQA,EAAE,KACjB,CAKA,MAAM,mBAAoB,CACxB,MAAM,kBAAkB,EAGxB,KAAK,MAAQC,EAAM,KAAM,gBAAgB,EAEzC,MAAM,eAAe,YAAY,KAAK,MAAM,SAAS,CACvD,CAOA,cAAe,CACb,GAAI,CAAC,KAAK,MAAO,MAAM,IAAI,MAAM,+BAA+B,EAChE,MAAO,CAAE,MAAO,KAAK,KAAM,CAC7B,CACF,EAEOC,EAAQL,EAMFM,EAAQN,EACRO,EAAO,gBAEpBC,EAAcD,EAAMP,CAAiB","names":["element_exports","__export","CLASS","NAME","element_default","AudioFileMetadata","DiffuseElement","__name","p","query","element_default","CLASS","NAME","defineElement"],"sourceRoot":"","file":"/chunk-B4RCZ6UO.js.map"} \ No newline at end of file diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-BF2A4D4Q.js b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-BF2A4D4Q.js similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-BF2A4D4Q.js rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-BF2A4D4Q.js diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-BF2A4D4Q.js.br b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-BF2A4D4Q.js.br similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-BF2A4D4Q.js.br rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-BF2A4D4Q.js.br diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-BF2A4D4Q.js.map b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-BF2A4D4Q.js.map similarity index 96% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-BF2A4D4Q.js.map rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-BF2A4D4Q.js.map index f46ee849..d5b68b9d 100644 --- a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-BF2A4D4Q.js.map +++ b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-BF2A4D4Q.js.map @@ -1 +1 @@ -{"version":3,"sources":["/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/id3v2/AbstractID3Parser.js"],"sourcesContent":["import { EndOfStreamError } from 'strtok3';\nimport initDebug from 'debug';\nimport { ID3v2Header } from './ID3v2Token.js';\nimport { ID3v2Parser } from './ID3v2Parser.js';\nimport { ID3v1Parser } from '../id3v1/ID3v1Parser.js';\nimport { BasicParser } from '../common/BasicParser.js';\nconst debug = initDebug('music-metadata:parser:ID3');\n/**\n * Abstract parser which tries take ID3v2 and ID3v1 headers.\n */\nexport class AbstractID3Parser extends BasicParser {\n constructor() {\n super(...arguments);\n this.id3parser = new ID3v2Parser();\n }\n static async startsWithID3v2Header(tokenizer) {\n return (await tokenizer.peekToken(ID3v2Header)).fileIdentifier === 'ID3';\n }\n async parse() {\n try {\n await this.parseID3v2();\n }\n catch (err) {\n if (err instanceof EndOfStreamError) {\n debug(\"End-of-stream\");\n }\n else {\n throw err;\n }\n }\n }\n finalize() {\n return;\n }\n async parseID3v2() {\n await this.tryReadId3v2Headers();\n debug('End of ID3v2 header, go to MPEG-parser: pos=%s', this.tokenizer.position);\n await this.postId3v2Parse();\n if (this.options.skipPostHeaders && this.metadata.hasAny()) {\n this.finalize();\n }\n else {\n const id3v1parser = new ID3v1Parser(this.metadata, this.tokenizer, this.options);\n await id3v1parser.parse();\n this.finalize();\n }\n }\n async tryReadId3v2Headers() {\n const id3Header = await this.tokenizer.peekToken(ID3v2Header);\n if (id3Header.fileIdentifier === 'ID3') {\n debug('Found ID3v2 header, pos=%s', this.tokenizer.position);\n await this.id3parser.parse(this.metadata, this.tokenizer, this.options);\n return this.tryReadId3v2Headers();\n }\n }\n}\n"],"mappings":"wNACA,IAAAA,EAAsB,OAKtB,IAAMC,KAAQ,EAAAC,SAAU,2BAA2B,EAItCC,EAAN,cAAgCC,CAAY,CAVnD,MAUmD,CAAAC,EAAA,0BAC/C,aAAc,CACV,MAAM,GAAG,SAAS,EAClB,KAAK,UAAY,IAAIC,CACzB,CACA,aAAa,sBAAsBC,EAAW,CAC1C,OAAQ,MAAMA,EAAU,UAAUC,CAAW,GAAG,iBAAmB,KACvE,CACA,MAAM,OAAQ,CACV,GAAI,CACA,MAAM,KAAK,WAAW,CAC1B,OACOC,EAAK,CACR,GAAIA,aAAeC,EACfT,EAAM,eAAe,MAGrB,OAAMQ,CAEd,CACJ,CACA,UAAW,CAEX,CACA,MAAM,YAAa,CACf,MAAM,KAAK,oBAAoB,EAC/BR,EAAM,iDAAkD,KAAK,UAAU,QAAQ,EAC/E,MAAM,KAAK,eAAe,EACtB,KAAK,QAAQ,iBAAmB,KAAK,SAAS,OAAO,EACrD,KAAK,SAAS,GAId,MADoB,IAAIU,EAAY,KAAK,SAAU,KAAK,UAAW,KAAK,OAAO,EAC7D,MAAM,EACxB,KAAK,SAAS,EAEtB,CACA,MAAM,qBAAsB,CAExB,IADkB,MAAM,KAAK,UAAU,UAAUH,CAAW,GAC9C,iBAAmB,MAC7B,OAAAP,EAAM,6BAA8B,KAAK,UAAU,QAAQ,EAC3D,MAAM,KAAK,UAAU,MAAM,KAAK,SAAU,KAAK,UAAW,KAAK,OAAO,EAC/D,KAAK,oBAAoB,CAExC,CACJ","names":["import_debug","debug","initDebug","AbstractID3Parser","BasicParser","__name","ID3v2Parser","tokenizer","ID3v2Header","err","EndOfStreamError","ID3v1Parser"],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse","file":"/chunk-BF2A4D4Q.js.map"} \ No newline at end of file +{"version":3,"sources":["/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/id3v2/AbstractID3Parser.js"],"sourcesContent":["import { EndOfStreamError } from 'strtok3';\nimport initDebug from 'debug';\nimport { ID3v2Header } from './ID3v2Token.js';\nimport { ID3v2Parser } from './ID3v2Parser.js';\nimport { ID3v1Parser } from '../id3v1/ID3v1Parser.js';\nimport { BasicParser } from '../common/BasicParser.js';\nconst debug = initDebug('music-metadata:parser:ID3');\n/**\n * Abstract parser which tries take ID3v2 and ID3v1 headers.\n */\nexport class AbstractID3Parser extends BasicParser {\n constructor() {\n super(...arguments);\n this.id3parser = new ID3v2Parser();\n }\n static async startsWithID3v2Header(tokenizer) {\n return (await tokenizer.peekToken(ID3v2Header)).fileIdentifier === 'ID3';\n }\n async parse() {\n try {\n await this.parseID3v2();\n }\n catch (err) {\n if (err instanceof EndOfStreamError) {\n debug(\"End-of-stream\");\n }\n else {\n throw err;\n }\n }\n }\n finalize() {\n return;\n }\n async parseID3v2() {\n await this.tryReadId3v2Headers();\n debug('End of ID3v2 header, go to MPEG-parser: pos=%s', this.tokenizer.position);\n await this.postId3v2Parse();\n if (this.options.skipPostHeaders && this.metadata.hasAny()) {\n this.finalize();\n }\n else {\n const id3v1parser = new ID3v1Parser(this.metadata, this.tokenizer, this.options);\n await id3v1parser.parse();\n this.finalize();\n }\n }\n async tryReadId3v2Headers() {\n const id3Header = await this.tokenizer.peekToken(ID3v2Header);\n if (id3Header.fileIdentifier === 'ID3') {\n debug('Found ID3v2 header, pos=%s', this.tokenizer.position);\n await this.id3parser.parse(this.metadata, this.tokenizer, this.options);\n return this.tryReadId3v2Headers();\n }\n }\n}\n"],"mappings":"wNACA,IAAAA,EAAsB,OAKtB,IAAMC,KAAQ,EAAAC,SAAU,2BAA2B,EAItCC,EAAN,cAAgCC,CAAY,CAVnD,MAUmD,CAAAC,EAAA,0BAC/C,aAAc,CACV,MAAM,GAAG,SAAS,EAClB,KAAK,UAAY,IAAIC,CACzB,CACA,aAAa,sBAAsBC,EAAW,CAC1C,OAAQ,MAAMA,EAAU,UAAUC,CAAW,GAAG,iBAAmB,KACvE,CACA,MAAM,OAAQ,CACV,GAAI,CACA,MAAM,KAAK,WAAW,CAC1B,OACOC,EAAK,CACR,GAAIA,aAAeC,EACfT,EAAM,eAAe,MAGrB,OAAMQ,CAEd,CACJ,CACA,UAAW,CAEX,CACA,MAAM,YAAa,CACf,MAAM,KAAK,oBAAoB,EAC/BR,EAAM,iDAAkD,KAAK,UAAU,QAAQ,EAC/E,MAAM,KAAK,eAAe,EACtB,KAAK,QAAQ,iBAAmB,KAAK,SAAS,OAAO,EACrD,KAAK,SAAS,GAId,MADoB,IAAIU,EAAY,KAAK,SAAU,KAAK,UAAW,KAAK,OAAO,EAC7D,MAAM,EACxB,KAAK,SAAS,EAEtB,CACA,MAAM,qBAAsB,CAExB,IADkB,MAAM,KAAK,UAAU,UAAUH,CAAW,GAC9C,iBAAmB,MAC7B,OAAAP,EAAM,6BAA8B,KAAK,UAAU,QAAQ,EAC3D,MAAM,KAAK,UAAU,MAAM,KAAK,SAAU,KAAK,UAAW,KAAK,OAAO,EAC/D,KAAK,oBAAoB,CAExC,CACJ","names":["import_debug","debug","initDebug","AbstractID3Parser","BasicParser","__name","ID3v2Parser","tokenizer","ID3v2Header","err","EndOfStreamError","ID3v1Parser"],"sourceRoot":"","file":"/chunk-BF2A4D4Q.js.map"} \ No newline at end of file diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-BG4L2JFO.js b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-BG4L2JFO.js similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-BG4L2JFO.js rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-BG4L2JFO.js diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-BG4L2JFO.js.br b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-BG4L2JFO.js.br similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-BG4L2JFO.js.br rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-BG4L2JFO.js.br diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-BG4L2JFO.js.map b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-BG4L2JFO.js.map similarity index 96% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-BG4L2JFO.js.map rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-BG4L2JFO.js.map index c075ccc1..05713e12 100644 --- a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-BG4L2JFO.js.map +++ b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-BG4L2JFO.js.map @@ -1 +1 @@ -{"version":3,"sources":["/components/input/s3/element.js"],"sourcesContent":["import { defineElement, DiffuseElement } from \"~/common/element.js\";\nimport { SCHEME } from \"./constants.js\";\nimport { bucketsFromTracks, buildURI } from \"./common.js\";\n\n/**\n * @import {InputActions, InputSchemeProvider} from \"@specs/components/input/types.d.ts\"\n * @import {ProxiedActions} from \"~/common/worker.d.ts\"\n * @import {Track} from \"~/definitions/types.d.ts\"\n * @import {Demo} from \"@specs/components/input/s3/types.d.ts\"\n */\n\n////////////////////////////////////////////\n// ELEMENT\n////////////////////////////////////////////\n\n/**\n * @implements {ProxiedActions}\n * @implements {InputSchemeProvider}\n */\nclass S3Input extends DiffuseElement {\n static NAME = \"diffuse/input/s3\";\n static WORKER_URL = \"components/input/s3/worker.js\";\n\n SCHEME = SCHEME;\n\n constructor() {\n super();\n\n /** @type {ProxiedActions Demo }>} */\n this.proxy = this.workerProxy();\n\n this.artwork = this.proxy.artwork;\n this.consult = this.proxy.consult;\n this.detach = this.proxy.detach;\n this.groupConsult = this.proxy.groupConsult;\n this.list = this.proxy.list;\n this.resolve = this.proxy.resolve;\n\n this.demo = this.proxy.demo;\n }\n\n // 🛠️\n\n /** @param {Track[]} tracks */\n sources(tracks) {\n return Object.values(bucketsFromTracks(tracks)).map((server) => {\n return {\n label: `${server.bucketName} (${server.host})`,\n uri: buildURI(server),\n };\n });\n }\n}\n\nexport default S3Input;\n\n////////////////////////////////////////////\n// REGISTER\n////////////////////////////////////////////\n\nexport const CLASS = S3Input;\nexport const NAME = \"di-s3\";\n\ndefineElement(NAME, CLASS);\n"],"mappings":"gLAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,WAAAE,EAAA,SAAAC,EAAA,YAAAC,IAmBA,IAAMC,EAAN,cAAsBC,CAAe,CAnBrC,MAmBqC,CAAAC,EAAA,gBACnC,OAAO,KAAO,mBACd,OAAO,WAAa,gCAEpB,OAASC,EAET,aAAc,CACZ,MAAM,EAGN,KAAK,MAAQ,KAAK,YAAY,EAE9B,KAAK,QAAU,KAAK,MAAM,QAC1B,KAAK,QAAU,KAAK,MAAM,QAC1B,KAAK,OAAS,KAAK,MAAM,OACzB,KAAK,aAAe,KAAK,MAAM,aAC/B,KAAK,KAAO,KAAK,MAAM,KACvB,KAAK,QAAU,KAAK,MAAM,QAE1B,KAAK,KAAO,KAAK,MAAM,IACzB,CAKA,QAAQC,EAAQ,CACd,OAAO,OAAO,OAAOC,EAAkBD,CAAM,CAAC,EAAE,IAAKE,IAC5C,CACL,MAAO,GAAGA,EAAO,UAAU,KAAKA,EAAO,IAAI,IAC3C,IAAKC,EAASD,CAAM,CACtB,EACD,CACH,CACF,EAEOE,EAAQR,EAMFS,EAAQT,EACRU,EAAO,QAEpBC,EAAcD,EAAMD,CAAK","names":["element_exports","__export","CLASS","NAME","element_default","S3Input","DiffuseElement","__name","SCHEME","tracks","bucketsFromTracks","server","buildURI","element_default","CLASS","NAME","defineElement"],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse","file":"/chunk-BG4L2JFO.js.map"} \ No newline at end of file +{"version":3,"sources":["/components/input/s3/element.js"],"sourcesContent":["import { defineElement, DiffuseElement } from \"~/common/element.js\";\nimport { SCHEME } from \"./constants.js\";\nimport { bucketsFromTracks, buildURI } from \"./common.js\";\n\n/**\n * @import {InputActions, InputSchemeProvider} from \"@specs/components/input/types.d.ts\"\n * @import {ProxiedActions} from \"~/common/worker.d.ts\"\n * @import {Track} from \"~/definitions/types.d.ts\"\n * @import {Demo} from \"@specs/components/input/s3/types.d.ts\"\n */\n\n////////////////////////////////////////////\n// ELEMENT\n////////////////////////////////////////////\n\n/**\n * @implements {ProxiedActions}\n * @implements {InputSchemeProvider}\n */\nclass S3Input extends DiffuseElement {\n static NAME = \"diffuse/input/s3\";\n static WORKER_URL = \"components/input/s3/worker.js\";\n\n SCHEME = SCHEME;\n\n constructor() {\n super();\n\n /** @type {ProxiedActions Demo }>} */\n this.proxy = this.workerProxy();\n\n this.artwork = this.proxy.artwork;\n this.consult = this.proxy.consult;\n this.detach = this.proxy.detach;\n this.groupConsult = this.proxy.groupConsult;\n this.list = this.proxy.list;\n this.resolve = this.proxy.resolve;\n\n this.demo = this.proxy.demo;\n }\n\n // 🛠️\n\n /** @param {Track[]} tracks */\n sources(tracks) {\n return Object.values(bucketsFromTracks(tracks)).map((server) => {\n return {\n label: `${server.bucketName} (${server.host})`,\n uri: buildURI(server),\n };\n });\n }\n}\n\nexport default S3Input;\n\n////////////////////////////////////////////\n// REGISTER\n////////////////////////////////////////////\n\nexport const CLASS = S3Input;\nexport const NAME = \"di-s3\";\n\ndefineElement(NAME, CLASS);\n"],"mappings":"gLAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,WAAAE,EAAA,SAAAC,EAAA,YAAAC,IAmBA,IAAMC,EAAN,cAAsBC,CAAe,CAnBrC,MAmBqC,CAAAC,EAAA,gBACnC,OAAO,KAAO,mBACd,OAAO,WAAa,gCAEpB,OAASC,EAET,aAAc,CACZ,MAAM,EAGN,KAAK,MAAQ,KAAK,YAAY,EAE9B,KAAK,QAAU,KAAK,MAAM,QAC1B,KAAK,QAAU,KAAK,MAAM,QAC1B,KAAK,OAAS,KAAK,MAAM,OACzB,KAAK,aAAe,KAAK,MAAM,aAC/B,KAAK,KAAO,KAAK,MAAM,KACvB,KAAK,QAAU,KAAK,MAAM,QAE1B,KAAK,KAAO,KAAK,MAAM,IACzB,CAKA,QAAQC,EAAQ,CACd,OAAO,OAAO,OAAOC,EAAkBD,CAAM,CAAC,EAAE,IAAKE,IAC5C,CACL,MAAO,GAAGA,EAAO,UAAU,KAAKA,EAAO,IAAI,IAC3C,IAAKC,EAASD,CAAM,CACtB,EACD,CACH,CACF,EAEOE,EAAQR,EAMFS,EAAQT,EACRU,EAAO,QAEpBC,EAAcD,EAAMD,CAAK","names":["element_exports","__export","CLASS","NAME","element_default","S3Input","DiffuseElement","__name","SCHEME","tracks","bucketsFromTracks","server","buildURI","element_default","CLASS","NAME","defineElement"],"sourceRoot":"","file":"/chunk-BG4L2JFO.js.map"} \ No newline at end of file diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-BNDDYKYA.js b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-BNDDYKYA.js similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-BNDDYKYA.js rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-BNDDYKYA.js diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-BNDDYKYA.js.br b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-BNDDYKYA.js.br similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-BNDDYKYA.js.br rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-BNDDYKYA.js.br diff --git a/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-BNDDYKYA.js.map b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-BNDDYKYA.js.map new file mode 100644 index 00000000..2f856a5e --- /dev/null +++ b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-BNDDYKYA.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["/node_modules/.deno/lit-html@3.3.3/node_modules/lit-html/src/directives/async-replace.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\nimport {ChildPart, noChange} from '../lit-html.js';\nimport {\n AsyncDirective,\n directive,\n DirectiveParameters,\n} from '../async-directive.js';\nimport {Pauser, PseudoWeakRef, forAwaitOf} from './private-async-helpers.js';\n\ntype Mapper = (v: T, index?: number) => unknown;\n\nexport class AsyncReplaceDirective extends AsyncDirective {\n private __value?: AsyncIterable;\n private __weakThis = new PseudoWeakRef(this);\n private __pauser = new Pauser();\n\n // @ts-expect-error value not used, but we want a nice parameter for docs\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n render(value: AsyncIterable, _mapper?: Mapper) {\n return noChange;\n }\n\n override update(\n _part: ChildPart,\n [value, mapper]: DirectiveParameters\n ) {\n // If our initial render occurs while disconnected, ensure that the pauser\n // and weakThis are in the disconnected state\n if (!this.isConnected) {\n this.disconnected();\n }\n // If we've already set up this particular iterable, we don't need\n // to do anything.\n if (value === this.__value) {\n return noChange;\n }\n this.__value = value;\n let i = 0;\n const {__weakThis: weakThis, __pauser: pauser} = this;\n // Note, the callback avoids closing over `this` so that the directive\n // can be gc'ed before the promise resolves; instead `this` is retrieved\n // from `weakThis`, which can break the hard reference in the closure when\n // the directive disconnects\n forAwaitOf(value, async (v: unknown) => {\n // The while loop here handles the case that the connection state\n // thrashes, causing the pauser to resume and then get re-paused\n while (pauser.get()) {\n await pauser.get();\n }\n // If the callback gets here and there is no `this`, it means that the\n // directive has been disconnected and garbage collected and we don't\n // need to do anything else\n const _this = weakThis.deref();\n if (_this !== undefined) {\n // Check to make sure that value is the still the current value of\n // the part, and if not bail because a new value owns this part\n if (_this.__value !== value) {\n return false;\n }\n\n // As a convenience, because functional-programming-style\n // transforms of iterables and async iterables requires a library,\n // we accept a mapper function. This is especially convenient for\n // rendering a template for each item.\n if (mapper !== undefined) {\n v = mapper(v, i);\n }\n\n _this.commitValue(v, i);\n i++;\n }\n return true;\n });\n return noChange;\n }\n\n // Override point for AsyncAppend to append rather than replace\n protected commitValue(value: unknown, _index: number) {\n this.setValue(value);\n }\n\n override disconnected() {\n this.__weakThis.disconnect();\n this.__pauser.pause();\n }\n\n override reconnected() {\n this.__weakThis.reconnect(this);\n this.__pauser.resume();\n }\n}\n\n/**\n * A directive that renders the items of an async iterable[1], replacing\n * previous values with new values, so that only one value is ever rendered\n * at a time. This directive may be used in any expression type.\n *\n * Async iterables are objects with a `[Symbol.asyncIterator]` method, which\n * returns an iterator who's `next()` method returns a Promise. When a new\n * value is available, the Promise resolves and the value is rendered to the\n * Part controlled by the directive. If another value other than this\n * directive has been set on the Part, the iterable will no longer be listened\n * to and new values won't be written to the Part.\n *\n * [1]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for-await...of\n *\n * @param value An async iterable\n * @param mapper An optional function that maps from (value, index) to another\n * value. Useful for generating templates for each item in the iterable.\n */\nexport const asyncReplace = directive(AsyncReplaceDirective);\n"],"mappings":"sNAgBM,IAAOA,EAAP,cAAqCC,CAAAA,OAAAA,CAAAA,EAAAA,UAA3C,aAAAC,CAAAA,MAAAA,GAAAA,SAAAA,EAEUC,KAAAC,KAAa,IAAIC,EAAcF,IAAAA,EAC/BA,KAAAG,KAAW,IAAIC,CA4EzB,CAxEE,OAAUC,EAAyBC,EAAAA,CACjC,OAAOC,CACT,CAES,OACPC,EAAAA,CACCH,EAAOI,CAAAA,EAAAA,CASR,GALKT,KAAKU,aACRV,KAAKW,aAAAA,EAIHN,IAAUL,KAAKY,KACjB,OAAOL,EAETP,KAAKY,KAAUP,EACf,IAAIQ,EAAI,EACR,CAAOZ,KAAYa,EAAUX,KAAUY,CAAAA,EAAUf,KAmCjD,OA9BAgB,EAAWX,EAAOY,MAAOC,GAAAA,CAGvB,KAAOH,EAAOI,IAAAA,GAAAA,MACNJ,EAAOI,IAAAA,EAKf,IAAMC,EAAQN,EAASO,MAAAA,EACvB,GAAID,IAAJ,OAAyB,CAGvB,GAAIA,EAAMR,OAAYP,EACpB,MAAA,GAOEI,IAPK,SAQPS,EAAIT,EAAOS,EAAGL,CAAAA,GAGhBO,EAAME,YAAYJ,EAAGL,CAAAA,EACrBA,GACF,CACA,MAAA,EAAO,CAAA,EAEFN,CACT,CAGU,YAAYF,EAAgBkB,EAAAA,CACpCvB,KAAKwB,SAASnB,CAAAA,CAChB,CAES,cAAAM,CACPX,KAAKC,KAAWwB,WAAAA,EAChBzB,KAAKG,KAASuB,MAAAA,CAChB,CAES,aAAAC,CACP3B,KAAKC,KAAW2B,UAAU5B,IAAAA,EAC1BA,KAAKG,KAAS0B,OAAAA,CAChB,CAAA,EAqBWC,EAAeC,EAAUlC,CAAAA","names":["AsyncReplaceDirective","AsyncDirective","constructor","this","__weakThis","PseudoWeakRef","__pauser","Pauser","value","_mapper","noChange","_part","mapper","isConnected","disconnected","__value","i","weakThis","pauser","forAwaitOf","async","v","get","_this","deref","commitValue","_index","setValue","disconnect","pause","reconnected","reconnect","resume","asyncReplace","directive"],"sourceRoot":"","file":"/chunk-BNDDYKYA.js.map"} \ No newline at end of file diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-BOVR37RD.js b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-BOVR37RD.js similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-BOVR37RD.js rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-BOVR37RD.js diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-BOVR37RD.js.br b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-BOVR37RD.js.br similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-BOVR37RD.js.br rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-BOVR37RD.js.br diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-BOVR37RD.js.map b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-BOVR37RD.js.map similarity index 99% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-BOVR37RD.js.map rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-BOVR37RD.js.map index 40f5a87c..2615d42b 100644 --- a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-BOVR37RD.js.map +++ b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-BOVR37RD.js.map @@ -1 +1 @@ -{"version":3,"sources":["/node_modules/.deno/@noble+ciphers@2.4.0/node_modules/@noble/ciphers/utils.js","/node_modules/.deno/@noble+ciphers@2.4.0/node_modules/@noble/ciphers/_arx.js","/node_modules/.deno/@noble+ciphers@2.4.0/node_modules/@noble/ciphers/_poly1305.js","/node_modules/.deno/@noble+ciphers@2.4.0/node_modules/@noble/ciphers/chacha.js","/components/transformer/output/refiner/passkey-encryption/passkey.js"],"sourcesContent":["/**\n * Utilities for hex, bytes, CSPRNG.\n * @module\n */\n/*! noble-ciphers - MIT License (c) 2023 Paul Miller (paulmillr.com) */\nexport function aarray(item, title, inner = () => { }) {\n if (!Array.isArray(item))\n throw new TypeError(`\"${title}\" expected array, got type=${typeof item}`);\n for (let i = 0; i < item.length; i++)\n inner(item[i], `${title}[${i}]`);\n return item;\n}\n/**\n * Checks if something is Uint8Array. Be careful: nodejs Buffer will return true.\n * @param a - Value to inspect.\n * @returns `true` when the value is a Uint8Array view, including Node's `Buffer`.\n * @example\n * Guards a value before treating it as raw key material.\n *\n * ```ts\n * isBytes(new Uint8Array());\n * ```\n */\nexport function isBytes(a) {\n // Plain `instanceof Uint8Array` is too strict for some Buffer / proxy /\n // cross-realm cases. The fallback still requires a real ArrayBuffer view\n // so plain JSON-deserialized `{ constructor: ... }`\n // spoofing is rejected, and `BYTES_PER_ELEMENT === 1` keeps the fallback on byte-oriented views.\n return (a instanceof Uint8Array ||\n (ArrayBuffer.isView(a) &&\n a.constructor.name === 'Uint8Array' &&\n 'BYTES_PER_ELEMENT' in a &&\n a.BYTES_PER_ELEMENT === 1));\n}\n// Shared error-message prefix builder. Only called on throw paths, so assert\n// success paths never pay for the string concatenation.\nconst atitle = (title) => (title ? `\"${title}\" ` : '');\n/**\n * Asserts something is boolean.\n * @param value - Value to validate.\n * @returns The validated boolean.\n * @throws On wrong argument types. {@link TypeError}\n * @example\n * Validates a boolean option before branching on it.\n *\n * ```ts\n * abool(true);\n * ```\n */\nexport function abool(value, title = '') {\n if (typeof value !== 'boolean')\n throw new TypeError(atitle(title) + 'expected boolean, got type=' + typeof value);\n return value;\n}\n/**\n * Asserts something is a non-negative safe integer.\n * @param n - Value to validate.\n * @returns The validated number.\n * @throws On wrong argument types. {@link TypeError}\n * @throws On wrong argument ranges or values. {@link RangeError}\n * @example\n * Validates a non-negative length or counter.\n *\n * ```ts\n * anumber(1);\n * ```\n */\nexport function anumber(n, title = '') {\n if (typeof n !== 'number')\n throw new TypeError(atitle(title) + 'expected number, got ' + typeof n);\n if (!Number.isSafeInteger(n) || n < 0)\n throw new RangeError(atitle(title) + 'expected integer >= 0, got ' + n);\n return n;\n}\n/**\n * Asserts something is Uint8Array.\n * @param value - Value to validate.\n * @param length - Expected byte length.\n * @param title - Optional label used in error messages.\n * @returns The validated byte array.\n * On Node, `Buffer` is accepted too because it is a Uint8Array view.\n * @throws On wrong argument types. {@link TypeError}\n * @throws On wrong argument lengths. {@link RangeError}\n * @example\n * Validates a fixed-length nonce or key buffer.\n *\n * ```ts\n * abytes(new Uint8Array([1, 2]), 2);\n * ```\n */\nexport function abytes(value, length, title = '') {\n // Success path first: this runs at the start of every update() / digestInto(), and the\n // common `abytes(data)` form must not pay for length handling it does not use.\n if (isBytes(value) && (length === undefined || value.length === length))\n return value;\n // Error path: recompute freely to build the exact message.\n if (length !== undefined)\n anumber(length, 'length');\n const bytes = isBytes(value);\n const ofLen = length !== undefined ? ` of length ${length}` : '';\n const got = bytes ? `length=${value.length}` : `type=${typeof value}`;\n const message = atitle(title) + 'expected Uint8Array' + ofLen + ', got ' + got;\n if (!bytes)\n throw new TypeError(message);\n throw new RangeError(message);\n}\nconst aobject = (value, label) => {\n if (value === null || typeof value !== 'object' || Array.isArray(value))\n throw new TypeError(label === 'object'\n ? 'expected valid options object'\n : `\"${label}\" expected object, got type=${typeof value}`);\n};\n/**\n * Asserts a hash- or MAC-like instance has not been destroyed or finished.\n * @param instance - Stateful instance to validate.\n * @param checkFinished - Whether to reject finished instances.\n * When `false`, only `destroyed` is checked.\n * @throws If the hash instance has already been destroyed or finalized. {@link Error}\n * @example\n * Guards against calling `update()` or `digest()` on a finished hash.\n *\n * ```ts\n * aexists({ destroyed: false, finished: false });\n * ```\n */\nexport function aexists(instance, checkFinished = true) {\n // Runs on every update()/digestInto(); the flags are library-owned booleans, so only their\n // truthiness is checked - re-validating their type per call was pure hot-path overhead.\n if (instance.destroyed)\n throw new Error('hash was destroyed');\n if (checkFinished && instance.finished)\n throw new Error('digest() was already called');\n}\n/**\n * Asserts output is a sufficiently-sized byte array.\n * @param out - Output buffer to validate.\n * @param instance - Hash-like instance providing `outputLen`.\n * This is the relaxed `digestInto()`-style contract: output must be at least `outputLen`,\n * unlike one-shot cipher helpers elsewhere in the repo that often require exact lengths.\n * @throws On wrong argument types. {@link TypeError}\n * @throws On wrong output buffer lengths. {@link RangeError}\n * @example\n * Verifies that a caller-provided output buffer is large enough.\n *\n * ```ts\n * aoutput(new Uint8Array(16), { outputLen: 16 });\n * ```\n */\nexport function aoutput(out, instance) {\n abytes(out, undefined, 'output');\n // `outputLen` is a library-owned readonly number; the negated comparison keeps failing fast\n // when it is missing/NaN (comparisons with undefined/NaN are false) without an anumber() call.\n const min = instance.outputLen;\n if (!(out.length >= min)) {\n throw new RangeError('\"output\" expected length >= ' + min);\n }\n}\n/**\n * Asserts output is a sufficiently-sized, 4-byte-aligned byte array.\n * {@link aoutput} plus an {@link isAligned32} check, for `digestInto()` paths\n * that write through zero-allocation `u32` word views.\n * @param out - Output buffer to validate.\n * @param instance - Hash-like instance providing `outputLen`.\n * @throws On wrong argument types. {@link TypeError}\n * @throws On wrong output buffer lengths. {@link RangeError}\n * @throws On wrong output buffer alignment. {@link Error}\n * @example\n * Verifies that a caller-provided output buffer is large enough and aligned.\n *\n * ```ts\n * aoutput32(new Uint8Array(16), { outputLen: 16 });\n * ```\n */\nexport function aoutput32(out, instance) {\n aoutput(out, instance);\n if (!isAligned32(out))\n throw new Error('invalid output, must be aligned');\n}\n/**\n * Casts a typed-array view to Uint8Array.\n * @param arr - Typed-array view to reinterpret.\n * @returns Uint8Array view over the same bytes.\n * @example\n * Views 32-bit words as raw bytes without copying.\n *\n * ```ts\n * u8(new Uint32Array([1]));\n * ```\n */\nexport function u8(arr) {\n return new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\n}\n/**\n * Casts a typed-array view to Uint32Array.\n * @param arr - Typed-array view to reinterpret.\n * @returns Uint32Array view over the same bytes. Callers are expected to provide a\n * 4-byte-aligned offset; trailing `1..3` bytes are silently dropped.\n * @example\n * Views a byte buffer as 32-bit words for block processing.\n *\n * ```ts\n * u32(new Uint8Array(4));\n * ```\n */\nexport function u32(arr) {\n return new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\n}\n/**\n * Zeroizes typed arrays in place.\n * Warning: JS provides no guarantees.\n * @param arrays - Arrays to wipe.\n * @example\n * Wipes a temporary key buffer after use.\n *\n * ```ts\n * const bytes = new Uint8Array([1]);\n * clean(bytes);\n * ```\n */\nexport function clean(...arrays) {\n for (let i = 0; i < arrays.length; i++) {\n arrays[i].fill(0);\n }\n}\n/**\n * Creates a DataView for byte-level manipulation.\n * @param arr - Typed-array view to wrap.\n * @returns DataView over the same bytes.\n * @example\n * Creates an endian-aware view for length encoding.\n *\n * ```ts\n * createView(new Uint8Array(4));\n * ```\n */\nexport function createView(arr) {\n return new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n}\n/**\n * Whether the current platform is little-endian.\n * Most are; some IBM systems are not.\n */\nexport const isLE = /* @__PURE__ */ (() => new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44)();\n/**\n * Reverses byte order of one 32-bit word.\n * @param word - Unsigned 32-bit word to swap.\n * @returns The same word with bytes reversed.\n * @example\n * Swaps a big-endian word into little-endian byte order.\n *\n * ```ts\n * byteSwap(0x11223344);\n * ```\n */\nexport function byteSwap(word) {\n return (((word << 24) & 0xff000000) |\n ((word << 8) & 0xff0000) |\n ((word >>> 8) & 0xff00) |\n ((word >>> 24) & 0xff));\n}\n/**\n * Normalizes one 32-bit word to the little-endian representation expected by cipher cores.\n * @param n - Unsigned 32-bit word to normalize.\n * @returns Little-endian normalized word on big-endian hosts, else the input word unchanged.\n * @example\n * Normalizes a host-endian word before passing it into an ARX/AES core.\n *\n * ```ts\n * swap8IfBE(0x11223344);\n * ```\n */\nexport const swap8IfBE = isLE\n ? (n) => n\n : (n) => byteSwap(n) >>> 0;\n/**\n * Byte-swaps every word of a Uint32Array in place.\n * @param arr - Uint32Array whose words should be swapped.\n * @returns The same array after in-place byte swapping.\n * @example\n * Swaps every 32-bit word in a word-view buffer.\n *\n * ```ts\n * byteSwap32(new Uint32Array([0x11223344]));\n * ```\n */\nexport function byteSwap32(arr) {\n for (let i = 0; i < arr.length; i++) {\n arr[i] = byteSwap(arr[i]);\n }\n return arr;\n}\n/**\n * Normalizes a Uint32Array view to the little-endian representation expected by cipher cores.\n * @param u - Word view to normalize in place.\n * @returns Little-endian normalized word view.\n * @example\n * Normalizes a word-view buffer before block processing.\n *\n * ```ts\n * swap32IfBE(new Uint32Array([0x11223344]));\n * ```\n */\nexport const swap32IfBE = isLE\n ? (u) => u\n : byteSwap32;\n// Built-in hex conversion:\n// {@link https://caniuse.com/mdn-javascript_builtins_uint8array_fromhex | caniuse entry}\nconst hasHexBuiltin = /* @__PURE__ */ (() => \n// @ts-ignore\ntypeof Uint8Array.from([]).toHex === 'function' && typeof Uint8Array.fromHex === 'function')();\n// Array where index 0xf0 (240) is mapped to string 'f0'\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, '0'));\n/**\n * Convert byte array to hex string. Uses built-in function, when available.\n * @param bytes - Bytes to encode.\n * @returns Lowercase hexadecimal string.\n * @throws On wrong argument types. {@link TypeError}\n * @example\n * Formats ciphertext bytes for logs or test vectors.\n *\n * ```ts\n * bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])); // 'cafe0123'\n * ```\n */\nexport function bytesToHex(bytes) {\n abytes(bytes);\n // @ts-ignore\n if (hasHexBuiltin)\n return bytes.toHex();\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n hex += hexes[bytes[i]];\n }\n return hex;\n}\n// Strict ASCII nibble parser: non-ASCII hex lookalikes are rejected as undefined.\n// ASCII codes: '0'..'9' = 48..57, 'A'..'F' = 65..70, 'a'..'f' = 97..102.\n// prettier-ignore\nfunction asciiToBase16(ch) {\n return ch >= 48 && ch <= 57 ? ch - 48 // '2' => 50-48\n : ch >= 65 && ch <= 70 ? ch - (65 - 10) // 'B' => 66-(65-10)\n : ch >= 97 && ch <= 102 ? ch - (97 - 10) // 'b' => 98-(97-10)\n : undefined;\n}\n/**\n * Convert hex string to byte array. Uses built-in function, when available.\n * @param hex - hexadecimal string to decode\n * @returns Decoded bytes.\n * @throws On wrong argument types. {@link TypeError}\n * @throws On wrong argument ranges or values. {@link RangeError}\n * @example\n * Decode lowercase hexadecimal into bytes.\n * ```ts\n * hexToBytes('cafe0123'); // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n * ```\n */\nexport function hexToBytes(hex) {\n if (typeof hex !== 'string')\n throw new TypeError('hex string expected, got ' + typeof hex);\n if (hasHexBuiltin) {\n try {\n return Uint8Array.fromHex(hex);\n }\n catch (error) {\n if (error instanceof SyntaxError)\n throw new RangeError(error.message);\n throw error;\n }\n }\n const hl = hex.length;\n const al = hl / 2;\n if (hl % 2)\n throw new RangeError('hex string expected, got unpadded hex of length ' + hl);\n const array = new Uint8Array(al);\n for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) {\n const n1 = asciiToBase16(hex.charCodeAt(hi)); // parse first char, multiply it by 16\n const n2 = asciiToBase16(hex.charCodeAt(hi + 1)); // parse second char\n if (n1 === undefined || n2 === undefined) {\n const char = hex[hi] + hex[hi + 1];\n throw new RangeError('hex string expected, got non-hex character \"' + char + '\" at index ' + hi);\n }\n array[ai] = n1 * 16 + n2; // example: 'A9' => 10*16 + 9\n }\n return array;\n}\nconst _0n = /* @__PURE__ */ BigInt(0);\n// Used in ff1, via bytesToNumberBE\n/**\n * Converts a big-endian hex string into bigint.\n * @param hex - Hexadecimal string without `0x`.\n * @returns Parsed bigint value. The empty string is treated as `0n`.\n * @throws On wrong argument types. {@link TypeError}\n * @example\n * Parses a big-endian field element or counter from hex.\n *\n * ```ts\n * hexToNumber('ff');\n * ```\n */\nexport function hexToNumber(hex) {\n if (typeof hex !== 'string')\n throw new TypeError('hex string expected, got ' + typeof hex);\n // Numeric parser, not byte-hex decoder: odd-length forms like 'f' are valid,\n // and malformed syntax follows BigInt's native error behavior.\n return hex === '' ? _0n : BigInt('0x' + hex); // Big Endian\n}\n// Used in ff1\n// BE: Big Endian, LE: Little Endian\n/**\n * Converts big-endian bytes into bigint.\n * @param bytes - Big-endian bytes.\n * @returns Parsed bigint value. Empty input is treated as `0n`.\n * @throws On invalid byte input passed to the internal hex conversion. {@link TypeError}\n * @example\n * Reads a big-endian integer from serialized bytes.\n *\n * ```ts\n * bytesToNumberBE(new Uint8Array([1, 0]));\n * ```\n */\nexport function bytesToNumberBE(bytes) {\n return hexToNumber(bytesToHex(bytes));\n}\n/**\n * Validates that a value is a non-negative bigint or safe integer.\n * @param n - Value to validate.\n * @returns The same validated value.\n * @throws On wrong argument ranges or values. {@link RangeError}\n */\nfunction abignumber(n) {\n if (typeof n === 'bigint') {\n if (!(_0n <= n))\n throw new RangeError('positive bigint expected, got ' + n);\n }\n else\n anumber(n);\n return n;\n}\n// Used in ff1\n/**\n * Converts a number into big-endian bytes of fixed length.\n * @param n - Number to encode.\n * @param len - Output length in bytes. Must be greater than zero.\n * @returns Big-endian bytes padded to `len`.\n * Negative values, `len = 0`, and values that do not fit are rejected before\n * downstream hex parsing.\n * @throws On wrong argument ranges or values. {@link RangeError}\n * @throws If a documented runtime validation or state check fails. {@link Error}\n * @example\n * Encodes a counter as fixed-width big-endian bytes.\n *\n * ```ts\n * numberToBytesBE(1, 2);\n * ```\n */\nexport function numberToBytesBE(n, len) {\n anumber(len);\n if (len === 0)\n throw new Error('zero output length is invalid');\n n = abignumber(n);\n const expectedLen = len * 2;\n const hex = n.toString(16);\n // Detect overflow before hex parsing so oversized values don't leak the shared odd-hex error.\n if (hex.length > expectedLen)\n throw new RangeError('number is too large');\n return hexToBytes(hex.padStart(expectedLen, '0'));\n}\n/**\n * Converts string to bytes using UTF8 encoding.\n * @param str - String to encode.\n * @returns UTF-8 bytes in a detached fresh Uint8Array copy.\n * @throws On wrong argument types. {@link TypeError}\n * @example\n * Encodes application text before encryption or MACing.\n *\n * ```ts\n * utf8ToBytes('abc'); // new Uint8Array([97, 98, 99])\n * ```\n */\nexport function utf8ToBytes(str) {\n if (typeof str !== 'string')\n throw new TypeError('string expected');\n return new Uint8Array(new TextEncoder().encode(str)); // {@link https://bugzil.la/1681809 | Firefox bug 1681809}\n}\n/**\n * Converts bytes to string using UTF8 encoding.\n * @param bytes - UTF-8 bytes.\n * @returns Decoded string. Input validation is delegated to `TextDecoder`, and malformed\n * UTF-8 is replacement-decoded instead of rejected.\n * @example\n * Decodes UTF-8 plaintext back into a string.\n *\n * ```ts\n * bytesToUtf8(new Uint8Array([97, 98, 99])); // 'abc'\n * ```\n */\nexport function bytesToUtf8(bytes) {\n return new TextDecoder().decode(bytes);\n}\n/**\n * Checks if two U8A use same underlying buffer and overlaps.\n * This is invalid and can corrupt data.\n * @param a - First byte view.\n * @param b - Second byte view.\n * @returns `true` when the views overlap in memory.\n * @example\n * Detects whether two slices alias the same backing buffer.\n *\n * ```ts\n * overlapBytes(new Uint8Array(4), new Uint8Array(4));\n * ```\n */\nexport function overlapBytes(a, b) {\n // Zero-length views cannot overwrite anything, even if their offset sits inside another range.\n if (!a.byteLength || !b.byteLength)\n return false;\n return (a.buffer === b.buffer && // best we can do, may fail with an obscure Proxy\n a.byteOffset < b.byteOffset + b.byteLength && // a starts before b end\n b.byteOffset < a.byteOffset + a.byteLength // b starts before a end\n );\n}\n/**\n * If input and output overlap and input starts before output, we will overwrite end of input before\n * we start processing it, so this is not supported by forward-processing ciphers.\n * @param input - Input bytes.\n * @param output - Output bytes.\n * @throws If the output view would overwrite unread input bytes. {@link Error}\n * @example\n * Rejects an in-place layout that would overwrite unread input bytes.\n *\n * ```ts\n * const buffer = new Uint8Array(8);\n * complexOverlapBytes(buffer.subarray(0, 4), buffer.subarray(2, 6));\n * ```\n */\nexport function complexOverlapBytes(input, output) {\n // This is very cursed. It works somehow, but I'm completely unsure,\n // reasoning about overlapping aligned windows is very hard.\n if (overlapBytes(input, output) && input.byteOffset < output.byteOffset)\n throw new Error('complex overlap of input and output is not supported');\n}\n/**\n * Copies several Uint8Arrays into one.\n * @param arrays - Byte arrays to concatenate.\n * @returns Combined byte array.\n * @throws On wrong argument types inside the byte-array list. {@link TypeError}\n * @example\n * Builds a `nonce || ciphertext` style buffer.\n *\n * ```ts\n * concatBytes(new Uint8Array([1]), new Uint8Array([2]));\n * ```\n */\nexport function concatBytes(...arrays) {\n let sum = 0;\n for (let i = 0; i < arrays.length; i++) {\n const a = arrays[i];\n abytes(a);\n sum += a.length;\n }\n const res = new Uint8Array(sum);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const a = arrays[i];\n res.set(a, pad);\n pad += a.length;\n }\n return res;\n}\n/**\n * Merges user options into defaults.\n * @param defaults - Default option values.\n * @param opts - User-provided overrides.\n * @returns Combined options object.\n * `defaults` is a library-owned mutable object; user-provided `opts` only need to be\n * object-shaped, since \"plain object\" checks reject valid proxy/cross-realm containers.\n * The merge mutates `defaults` in place and returns the same object, so direct callers\n * should pass a fresh defaults object unless they intentionally want shared state updated.\n * @throws If options are missing or not an object. {@link Error}\n * @example\n * Applies user overrides to the default cipher options.\n *\n * ```ts\n * checkOpts({ rounds: 20 }, { rounds: 8 });\n * ```\n */\nexport function checkOpts(defaults, opts) {\n aobject(defaults, 'defaults');\n aobject(opts, 'opts');\n // Mutates defaults by design. __proto__ follows Object.assign semantics here and can only\n // affect this local option object; callers already control this low-level options surface.\n const merged = Object.assign(defaults, opts);\n return merged;\n}\n/**\n * Compares two byte arrays in kinda constant time once lengths already match.\n * @param a - First byte array.\n * @param b - Second byte array.\n * @returns `true` when the arrays contain the same bytes. Different lengths still return early.\n * @example\n * Compares an expected authentication tag with the received one.\n *\n * ```ts\n * equalBytes(new Uint8Array([1]), new Uint8Array([1]));\n * ```\n */\nexport function equalBytes(a, b) {\n a = abytes(a);\n b = abytes(b);\n if (a.length !== b.length)\n return false;\n let diff = 0;\n for (let i = 0; i < a.length; i++)\n diff |= a[i] ^ b[i];\n return diff === 0;\n}\n/**\n * Wraps a keyed MAC constructor into a one-shot helper with `.create()`.\n * @param keyLen - Valid probe-key length used to read static metadata once.\n * The probe key is only used for `outputLen` / `blockLen`, so callers with several valid key sizes\n * can pass any representative size as long as those values stay fixed.\n * @param macCons - Keyed MAC constructor or factory.\n * @param fromMsg - Optional adapter that derives extra constructor args from the one-shot message.\n * @returns Callable MAC helper with `.create()`.\n */\nexport function wrapMacConstructor(keyLen, macCons, fromMsg) {\n const mac = macCons;\n const getArgs = (fromMsg || (() => []));\n const macC = (msg, key) => mac(key, ...getArgs(msg))\n .update(msg)\n .digest();\n const tmp = mac(new Uint8Array(keyLen), ...getArgs(new Uint8Array(0)));\n macC.outputLen = tmp.outputLen;\n macC.blockLen = tmp.blockLen;\n macC.create = (key, ...args) => mac(key, ...args);\n return macC;\n}\n/**\n * Wraps a cipher: validates args, ensures encrypt() can only be called once.\n * Used internally by the exported cipher constructors.\n * Output-buffer support is inferred from the wrapped `encrypt` / `decrypt`\n * arity (`fn.length === 2`), so wrapped output-capable methods must use a normal\n * second parameter, not a default/rest parameter. AAD support is explicit in\n * `params.withAAD`; optional AAD starts after the nonce slot when one is present.\n * @__NO_SIDE_EFFECTS__\n * @param params - Static cipher metadata. See {@link CipherParams}.\n * @param constructor - Cipher constructor.\n * @returns Wrapped constructor with validation.\n */\nexport const wrapCipher = (params, constructor) => {\n function wrappedCipher(key, ...args) {\n // Validate key\n abytes(key, undefined, 'key');\n // Validate nonce if nonceLength is present\n if (params.nonceLength !== undefined) {\n const nonce = args[0];\n abytes(nonce, params.varSizeNonce ? undefined : params.nonceLength, 'nonce');\n }\n // Keep tag length available for decrypt-size checks after constructor validation.\n const tagl = params.tagLength;\n const aadStart = params.nonceLength !== undefined ? 1 : 0;\n // No-AAD constructors otherwise silently ignore byte args meant as AAD.\n if (!params.withAAD) {\n for (let i = aadStart; i < args.length; i++)\n if (isBytes(args[i]))\n throw new Error('AAD not supported');\n }\n // Validate the first AAD slot early; rest-arg AAD constructors validate the tail themselves.\n if (params.withAAD && args[aadStart] !== undefined)\n abytes(args[aadStart], undefined, 'AAD');\n const cipher = constructor(key, ...args);\n const checkOutput = (fnLength, output) => {\n if (output !== undefined) {\n if (fnLength !== 2)\n throw new Error('cipher output not supported');\n abytes(output, undefined, 'output');\n }\n };\n // Create wrapped cipher with validation and single-use encryption\n let called = false;\n const wrCipher = {\n encrypt(data, output) {\n if (called)\n throw new Error('cannot encrypt() twice with same key + nonce');\n // Any encrypt attempt consumes the instance, even if validation rejects below.\n called = true;\n abytes(data, undefined, 'data');\n checkOutput(cipher.encrypt.length, output);\n return cipher.encrypt(data, output);\n },\n decrypt(data, output) {\n abytes(data, undefined, 'data');\n if (tagl && data.length < tagl)\n throw new Error('\"ciphertext\" expected length >= tagLength=' + tagl);\n checkOutput(cipher.decrypt.length, output);\n return cipher.decrypt(data, output);\n },\n };\n return wrCipher;\n }\n Object.assign(wrappedCipher, params);\n return wrappedCipher;\n};\n/**\n * By default, returns u8a of length.\n * When out is available, it checks it for validity and uses it.\n * @param expectedLength - Required output length.\n * @param out - Optional destination buffer.\n * @param onlyAligned - Whether `out` must be 4-byte aligned.\n * @returns Output buffer ready for writing.\n * @throws On wrong argument types. {@link TypeError}\n * @throws If the provided output buffer has the wrong size. {@link RangeError}\n * @throws If the provided output buffer has the wrong alignment. {@link Error}\n * @example\n * Reuses a caller-provided output buffer when lengths match.\n *\n * ```ts\n * getOutput(16, new Uint8Array(16));\n * ```\n */\nexport function getOutput(expectedLength, out, onlyAligned = true) {\n if (out === undefined)\n return new Uint8Array(expectedLength);\n // Keep Buffer/cross-realm Uint8Array support here instead of trusting a shape-compatible object.\n abytes(out, expectedLength, 'output');\n if (onlyAligned && !isAligned32(out))\n throw new Error('invalid output, must be aligned');\n return out;\n}\n/**\n * Encodes data and AAD lengths into a 16-byte buffer.\n * @param dataLength - Data length. Units are caller-defined: GCM passes bit\n * lengths, ChaCha20-Poly1305 passes byte lengths — the helper writes the raw values.\n * @param aadLength - AAD length, same unit convention as `dataLength`.\n * The serialized block is still `aadLength || dataLength`, matching GCM/Poly1305\n * conventions even though the helper parameter order is `(dataLength, aadLength)`.\n * @param isLE - Whether to encode lengths as little-endian.\n * @returns 16-byte length block.\n * @throws On wrong argument types passed to the endian validator. {@link TypeError}\n * @throws On wrong argument ranges or values. {@link RangeError}\n * @example\n * Builds the length block appended by GCM and Poly1305.\n *\n * ```ts\n * u64Lengths(16, 8, true);\n * ```\n */\nexport function u64Lengths(dataLength, aadLength, isLE) {\n // Reject coercible non-number lengths like '10' and true before BigInt(...) accepts them.\n anumber(dataLength);\n anumber(aadLength);\n abool(isLE);\n const num = new Uint8Array(16);\n const view = createView(num);\n view.setBigUint64(0, BigInt(aadLength), isLE);\n view.setBigUint64(8, BigInt(dataLength), isLE);\n return num;\n}\n/**\n * Checks whether a byte array is aligned to a 4-byte offset.\n * @param bytes - Byte array to inspect.\n * @returns `true` when the view is 4-byte aligned.\n * @example\n * Checks whether a buffer can be safely viewed as Uint32Array.\n *\n * ```ts\n * isAligned32(new Uint8Array(4));\n * ```\n */\nexport function isAligned32(bytes) {\n return bytes.byteOffset % 4 === 0;\n}\n/**\n * Copies bytes into a new Uint8Array.\n * @param bytes - Bytes to copy.\n * @returns Copied byte array.\n * @throws On wrong argument types. {@link TypeError}\n * @example\n * Copies input into an aligned Uint8Array before block processing.\n *\n * ```ts\n * copyBytes(new Uint8Array([1, 2]));\n * ```\n */\nexport function copyBytes(bytes) {\n // `Uint8Array.from(...)` would also accept arrays / other typed arrays. Keep this helper strict\n // because callers use it at byte-validation boundaries before mutating the detached copy.\n return Uint8Array.from(abytes(bytes));\n}\n/**\n * Cryptographically secure PRNG backed by `crypto.getRandomValues`.\n * @param bytesLength - number of random bytes to generate\n * @returns Random bytes.\n * The platform `getRandomValues()` implementation still defines any\n * single-call length cap, and this helper rejects oversize requests\n * with a stable library `RangeError` instead of host-specific errors.\n * @throws On wrong argument types. {@link TypeError}\n * @throws On wrong argument ranges or values. {@link RangeError}\n * @throws If the current runtime does not provide `crypto.getRandomValues`. {@link Error}\n * @example\n * Generate a fresh random key or nonce.\n * ```ts\n * const key = randomBytes(16);\n * ```\n */\nexport function randomBytes(bytesLength = 32) {\n // Match the repo's other length-taking helpers instead of relying on Uint8Array coercion.\n anumber(bytesLength, 'bytesLength');\n const cr = typeof globalThis === 'object' ? globalThis.crypto : null;\n if (typeof cr?.getRandomValues !== 'function')\n throw new Error('crypto.getRandomValues must be defined');\n // Web Cryptography API Level 2 §10.1.1:\n // if `byteLength > 65536`, throw `QuotaExceededError`.\n // Keep the guard explicit so callers can see the quota in code\n // instead of discovering it by reading the spec or host errors.\n // This wrapper surfaces the same quota as a stable library RangeError.\n if (bytesLength > 65536)\n throw new RangeError(`\"bytesLength\" expected <= 65536, got ${bytesLength}`);\n return cr.getRandomValues(new Uint8Array(bytesLength));\n}\n/**\n * Uses CSPRNG for nonce, nonce injected in ciphertext.\n * For `encrypt`, a `nonceBytes`-length buffer is fetched from CSPRNG and\n * prepended to encrypted ciphertext. For `decrypt`, first `nonceBytes` of ciphertext\n * are treated as nonce. The wrapper always allocates a fresh `nonce || ciphertext`\n * buffer on encrypt and intentionally does not support caller-provided destination buffers.\n * Too-short decrypt inputs are split into short/empty nonce views and then delegated\n * to the wrapped cipher instead of being rejected here first.\n *\n * NOTE: Under the same key, using random nonces (e.g. `managedNonce`) with AES-GCM and ChaCha\n * should be limited to `2**23` (8M) messages to get a collision chance of\n * `2**-50`. Stretching to `2**32` (4B) messages would raise that chance to\n * `2**-33`, still negligible but creeping up.\n * @param fn - Cipher constructor that expects a nonce.\n * @param randomBytes_ - Random-byte source used for nonce generation.\n * @returns Cipher constructor that prepends the nonce to ciphertext.\n * @throws On wrong argument types. {@link TypeError}\n * @throws On invalid nonce lengths observed at wrapper construction or use. {@link RangeError}\n * @example\n * Prepends a fresh random nonce to every ciphertext.\n *\n * ```ts\n * import { gcm } from '@noble/ciphers/aes.js';\n * import { managedNonce, randomBytes } from '@noble/ciphers/utils.js';\n * const wrapped = managedNonce(gcm);\n * const key = randomBytes(16);\n * const ciphertext = wrapped(key).encrypt(new Uint8Array([1, 2, 3]));\n * wrapped(key).decrypt(ciphertext);\n * ```\n */\nexport function managedNonce(fn, randomBytes_ = randomBytes) {\n if (typeof fn !== 'function')\n throw new TypeError('\"fn\" expected cipher constructor, got type=' + typeof fn);\n if (typeof randomBytes_ !== 'function')\n throw new TypeError('\"randomBytes_\" expected function, got type=' + typeof randomBytes_);\n const { nonceLength } = fn;\n anumber(nonceLength, 'fn.nonceLength');\n const addNonce = (nonce, ciphertext, plaintext) => {\n const out = concatBytes(nonce, ciphertext);\n // Wrapped ciphers may alias caller plaintext on encrypt(); never zero\n // caller-owned buffers here.\n if (!overlapBytes(plaintext, ciphertext))\n ciphertext.fill(0);\n return out;\n };\n // NOTE: we cannot support DST here, it would be mistake:\n // - we don't know how much dst length cipher requires\n // - nonce may unalign dst and break everything\n // - we create new u8a anyway (concatBytes)\n // - previously we passed all args to cipher, but that was mistake!\n const res = ((key, ...args) => ({\n encrypt(plaintext) {\n abytes(plaintext, undefined, 'data');\n const nonce = randomBytes_(nonceLength);\n const encrypted = fn(key, nonce, ...args).encrypt(plaintext);\n // @ts-ignore\n if (encrypted instanceof Promise)\n return encrypted.then((ct) => addNonce(nonce, ct, plaintext));\n return addNonce(nonce, encrypted, plaintext);\n },\n decrypt(ciphertext) {\n abytes(ciphertext, undefined, 'data');\n const nonce = ciphertext.subarray(0, nonceLength);\n const decrypted = ciphertext.subarray(nonceLength);\n return fn(key, nonce, ...args).decrypt(decrypted);\n },\n }));\n // Auto-nonce wrappers still preserve the wrapped payload geometry.\n if ('blockSize' in fn)\n res.blockSize = fn.blockSize;\n if ('tagLength' in fn)\n res.tagLength = fn.tagLength;\n if ('withAAD' in fn)\n res.withAAD = fn.withAAD;\n return res;\n}\n","/**\n * Basic utils for ARX (add-rotate-xor) salsa and chacha ciphers.\n\nRFC8439 requires multi-step cipher stream, where\nauthKey starts with counter: 0, actual msg with counter: 1.\n\nFor this, we need a way to re-use nonce / counter:\n\n const counter = new Uint8Array(4);\n chacha(..., counter, ...); // counter is now 1\n chacha(..., counter, ...); // counter is now 2\n\nThis is complicated:\n\n- 32-bit counters are enough, no need for 64-bit: max ArrayBuffer size in JS is 4GB\n- Original papers don't allow mutating counters\n- Counter overflow is undefined [^1]\n- Idea A: allow providing (nonce | counter) instead of just nonce, re-use it\n- Caveat: Cannot be re-used through all cases:\n- * chacha has (counter | nonce)\n- * xchacha has (nonce16 | counter | nonce16)\n- Idea B: separate nonce / counter and provide separate API for counter re-use\n- Caveat: there are different counter sizes depending on an algorithm.\n- salsa & chacha also differ in structures of key & sigma:\n salsa20: s[0] | k(4) | s[1] | nonce(2) | cnt(2) | s[2] | k(4) | s[3]\n chacha: s(4) | k(8) | cnt(1) | nonce(3)\n chacha20orig: s(4) | k(8) | cnt(2) | nonce(2)\n- Idea C: helper method such as `setSalsaState(key, nonce, sigma, data)`\n- Caveat: we can't re-use counter array\n\nxchacha uses the subkey and remaining 8 byte nonce with ChaCha20 as normal\n(prefixed by 4 NUL bytes, since RFC8439 specifies a 12-byte nonce).\nCounter overflow is undefined; see {@link https://mailarchive.ietf.org/arch/msg/cfrg/gsOnTJzcbgG6OqD8Sc0GO5aR_tU/ | the CFRG thread}.\nCurrent noble policy is strict non-wrap for the shared 32-bit counter path:\nexported ARX ciphers reject initial `0xffffffff` and stop before any implicit\nwrap back to zero.\nSee {@link https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-xchacha#appendix-A.2 | the XChaCha appendix} for the extended-nonce construction.\n\n * @module\n */\nimport { abool, abytes, anumber, checkOpts, clean, complexOverlapBytes, copyBytes, getOutput, isAligned32, isLE, randomBytes, swap32IfBE, u32, } from \"./utils.js\";\n// Replaces `TextEncoder` for ASCII literals, which is enough for sigma constants.\n// Non-ASCII input would not match UTF-8 `TextEncoder` output.\nconst encodeStr = (str) => Uint8Array.from(str.split(''), (c) => c.charCodeAt(0));\n// Raw `createCipher(...)` exports consume these native-endian `u32(...)` views directly.\n// Public `wrapCipher(...)` APIs reject non-little-endian platforms before reaching this path.\n// RFC 8439 §2.3 / RFC 7539 §2.3 only define the 256-bit-key constants; this 16-byte sigma is\n// kept for legacy allowShortKeys Salsa/ChaCha variants.\nconst sigma16_32 = /* @__PURE__ */ (() => swap32IfBE(u32(encodeStr('expand 16-byte k'))))();\n// RFC 8439 §2.3 / RFC 7539 §2.3 define words 0-3 as\n// `0x61707865 0x3320646e 0x79622d32 0x6b206574`, i.e. `expand 32-byte k`.\nconst sigma32_32 = /* @__PURE__ */ (() => swap32IfBE(u32(encodeStr('expand 32-byte k'))))();\n/**\n * Rotates a 32-bit word left.\n * @param a - Input word.\n * @param b - Rotation count in bits.\n * @returns Rotated 32-bit word.\n * @example\n * Moves the top byte of `0x12345678` into the low byte position.\n * ```ts\n * rotl(0x12345678, 8);\n * ```\n */\nexport function rotl(a, b) {\n return (a << b) | (a >>> (32 - b));\n}\n// Salsa and Chacha block length is always 512-bit\nconst BLOCK_LEN = 64;\n// RFC 8439 §2.2 / RFC 7539 §2.2: the ChaCha state has 16 32-bit words.\nconst BLOCK_LEN32 = 16;\n// Counter policy for the shared public `counter` argument:\n// - RFC/IETF ChaCha20 uses a 32-bit counter.\n// - OpenSSL/Node `chacha20` instead treat the full 16-byte IV as a 128-bit\n// counter state and carry into the next word.\n// - Raw `chacha20orig`, `salsa20`, `xsalsa20`, and `xchacha20` use 64-bit counters in libsodium\n// and libtomcrypt, while some libs (for example libtomcrypt's RFC/IETF path) reject the max\n// boundary instead of carrying.\n// - AEAD wrappers diverge too: libsodium `xchacha20poly1305` uses the IETF payload counter from\n// block 1, while `secretstream_xchacha20poly1305` is a different protocol with rekey/reset.\n// Noble intentionally throws instead of silently picking one wrap model for users. In the default\n// path, even a 32-bit boundary would take 2^32 blocks * 64 bytes = 256 GiB, which is practically\n// unreachable for normal JS callers; advanced users who pass `counter` explicitly can implement\n// whatever wider carry / wrap policy they need on top.\nconst MAX_COUNTER = /* @__PURE__ */ (() => 2 ** 32 - 1)();\nconst U32_EMPTY = /* @__PURE__ */ Uint32Array.of();\nfunction runCipher(core, sigma, key, nonce, data, output, counter, rounds) {\n const len = data.length;\n const block = new Uint8Array(BLOCK_LEN);\n const b32 = u32(block);\n // Make sure that buffers aligned to 4 bytes\n const isAligned = isLE && isAligned32(data) && isAligned32(output);\n const d32 = isAligned ? u32(data) : U32_EMPTY;\n const o32 = isAligned ? u32(output) : U32_EMPTY;\n // RFC 8439 §2.4.1 / RFC 7539 §2.4.1 allow XORing one keystream block at a time and\n // truncating the final partial block instead of materializing the whole keystream.\n if (!isLE) {\n for (let pos = 0; pos < len; counter++) {\n core(sigma, key, nonce, b32, counter, rounds);\n // RFC 8439 §2.4 / RFC 7539 §2.4 serialize keystream words in little-endian order.\n swap32IfBE(b32);\n if (counter >= MAX_COUNTER)\n throw new Error('arx: counter overflow');\n const take = Math.min(BLOCK_LEN, len - pos);\n for (let j = 0, posj; j < take; j++) {\n posj = pos + j;\n output[posj] = data[posj] ^ block[j];\n }\n pos += take;\n }\n return;\n }\n for (let pos = 0; pos < len; counter++) {\n core(sigma, key, nonce, b32, counter, rounds);\n // See MAX_COUNTER policy note above: never silently wrap the shared public counter.\n if (counter >= MAX_COUNTER)\n throw new Error('arx: counter overflow');\n const take = Math.min(BLOCK_LEN, len - pos);\n // aligned to 4 bytes\n if (isAligned && take === BLOCK_LEN) {\n const pos32 = pos / 4;\n if (pos % 4 !== 0)\n throw new Error('arx: invalid block position');\n for (let j = 0, posj; j < BLOCK_LEN32; j++) {\n posj = pos32 + j;\n o32[posj] = d32[posj] ^ b32[j];\n }\n pos += BLOCK_LEN;\n continue;\n }\n for (let j = 0, posj; j < take; j++) {\n posj = pos + j;\n output[posj] = data[posj] ^ block[j];\n }\n pos += take;\n }\n}\n/**\n * Creates an ARX stream cipher from a 32-bit core permutation.\n * Used internally to build the exported Salsa and ChaCha stream ciphers.\n * @param core - Core function that fills one keystream block.\n * @param opts - Cipher layout and nonce-extension options. See {@link CipherOpts}.\n * @returns Stream cipher function over byte arrays.\n * @throws If the core callback, key size, counter, or output sizing is invalid. {@link Error}\n */\nexport function createCipher(core, opts) {\n const { allowShortKeys, extendNonceFn, counterLength, counterRight, rounds } = checkOpts({ allowShortKeys: false, counterLength: 8, counterRight: false, rounds: 20 }, opts);\n if (typeof core !== 'function')\n throw new Error('core must be a function');\n anumber(counterLength);\n anumber(rounds);\n abool(counterRight);\n abool(allowShortKeys);\n return (key, nonce, data, output, counter = 0) => {\n abytes(key, undefined, 'key');\n abytes(nonce, undefined, 'nonce');\n abytes(data, undefined, 'data');\n const len = data.length;\n // Raw XorStream APIs return ciphertext/plaintext bytes directly, so caller-provided outputs\n // must match the logical result length exactly instead of returning an oversized workspace.\n const hasOutput = output !== undefined;\n output = getOutput(len, output, false);\n if (hasOutput)\n complexOverlapBytes(data, output);\n anumber(counter);\n // See MAX_COUNTER policy note above: reject advanced explicit-counter requests before any wrap.\n if (counter < 0 || counter >= MAX_COUNTER)\n throw new Error('arx: counter overflow');\n const toClean = [];\n // Key & sigma\n // key=16 -> sigma16, k=key|key\n // key=32 -> sigma32, k=key\n let l = key.length;\n let k;\n let sigma;\n if (l === 32) {\n // Copy caller keys too: big-endian normalization, extended-nonce subkey derivation, and\n // final clean(...) all mutate or wipe the temporary buffer in place.\n toClean.push((k = copyBytes(key)));\n sigma = sigma32_32;\n }\n else if (l === 16 && allowShortKeys) {\n k = new Uint8Array(32);\n k.set(key);\n k.set(key, 16);\n sigma = sigma16_32;\n toClean.push(k);\n }\n else {\n abytes(key, 32, 'arx key');\n throw new Error('invalid key size');\n // throw new Error(`\"arx key\" expected Uint8Array of length 32, got length=${l}`);\n }\n // Nonce\n // salsa20: 8 (8-byte counter)\n // chacha20orig: 8 (8-byte counter)\n // chacha20: 12 (4-byte counter)\n // xsalsa20: 24 (16 -> hsalsa, 8 -> old nonce)\n // xchacha20: 24 (16 -> hchacha, 8 -> old nonce)\n // Copy before taking u32(...) views on misaligned inputs, and on big-endian so later\n // swap32IfBE(...) never mutates caller nonce bytes in place.\n if (!isLE || !isAligned32(nonce))\n toClean.push((nonce = copyBytes(nonce)));\n let k32 = u32(k);\n // hsalsa & hchacha: handle extended nonce\n if (extendNonceFn) {\n if (nonce.length !== 24)\n throw new Error('arx: extended nonce must be 24 bytes');\n const n16 = nonce.subarray(0, 16);\n if (isLE)\n extendNonceFn(sigma, k32, u32(n16), k32);\n else {\n const sigmaRaw = swap32IfBE(Uint32Array.from(sigma));\n extendNonceFn(sigmaRaw, k32, u32(n16), k32);\n clean(sigmaRaw);\n swap32IfBE(k32);\n }\n nonce = nonce.subarray(16);\n }\n else if (!isLE)\n swap32IfBE(k32);\n // Handle nonce counter\n const nonceNcLen = 16 - counterLength;\n if (nonceNcLen !== nonce.length)\n throw new Error(`arx: nonce must be ${nonceNcLen} or 16 bytes`);\n // Normalize 64-bit-nonce layouts to the 12-byte core input: ChaCha/XChaCha prefix 4 zero\n // counter bytes, while Salsa/XSalsa append them after the nonce words.\n if (nonceNcLen !== 12) {\n const nc = new Uint8Array(12);\n nc.set(nonce, counterRight ? 0 : 12 - nonce.length);\n nonce = nc;\n toClean.push(nonce);\n }\n const n32 = swap32IfBE(u32(nonce));\n // Ensure temporary key/nonce copies are wiped even if the remaining\n // runtime guard in runCipher(...) throws on counter overflow.\n try {\n runCipher(core, sigma, k32, n32, data, output, counter, rounds);\n return output;\n }\n finally {\n clean(...toClean);\n }\n };\n}\n/** Internal class which wraps chacha20 or chacha8 to create CSPRNG. */\nexport class _XorStreamPRG {\n blockLen;\n keyLen;\n nonceLen;\n state;\n buf;\n key;\n nonce;\n pos;\n ctr;\n cipher;\n destroyed = false;\n constructor(cipher, blockLen, keyLen, nonceLen, seed) {\n this.cipher = cipher;\n this.blockLen = blockLen;\n this.keyLen = keyLen;\n this.nonceLen = nonceLen;\n this.state = new Uint8Array(this.keyLen + this.nonceLen);\n this.reseed(seed);\n this.ctr = 0;\n this.pos = this.blockLen;\n this.buf = new Uint8Array(this.blockLen);\n // Keep a single key||nonce backing buffer so reseed/addEntropy/clean update the live cipher\n // inputs in place through these subarray views.\n this.key = this.state.subarray(0, this.keyLen);\n this.nonce = this.state.subarray(this.keyLen);\n }\n reseed(seed) {\n abytes(seed, undefined, 'seed');\n if (!seed || seed.length === 0)\n throw new Error('entropy required');\n // Mix variable-length entropy cyclically across the whole key||nonce state, then restart the\n // keystream so buffered leftovers from the previous state are never reused.\n for (let i = 0; i < seed.length; i++)\n this.state[i % this.state.length] ^= seed[i];\n this.ctr = 0;\n this.pos = this.blockLen;\n }\n addEntropy(seed) {\n if (this.destroyed)\n throw new Error('cannot use destroyed PRG');\n // Reject empty entropy before re-keying, otherwise a throwing call would still advance state.\n abytes(seed, undefined, 'seed');\n if (seed.length === 0)\n throw new Error('entropy required');\n // Re-key from the current stream first, then mix external entropy into the fresh key||nonce\n // state through reseed() so stale buffered bytes are discarded.\n this.state.set(this.randomBytes(this.state.length));\n this.reseed(seed);\n }\n randomBytes(len) {\n if (this.destroyed)\n throw new Error('cannot use destroyed PRG');\n anumber(len);\n if (len === 0)\n return new Uint8Array(0);\n const avail = this.pos < this.blockLen ? this.blockLen - this.pos : 0;\n const blocks = Math.ceil(Math.max(0, len - avail) / this.blockLen);\n // Preflight overflow so failed reads don't partially consume keystream\n // and leave the PRG repeating blocks.\n if (blocks > 0 && this.ctr > MAX_COUNTER - blocks)\n throw new Error('arx: counter overflow');\n const out = new Uint8Array(len);\n let outPos = 0;\n // `out` starts zero-filled, and `buf.fill(0)` below does the same for leftovers: XOR-stream\n // ciphers then emit raw keystream bytes directly into those buffers.\n // Serve buffered leftovers first so split reads stay identical to one larger read.\n if (this.pos < this.blockLen) {\n const take = Math.min(len, this.blockLen - this.pos);\n out.set(this.buf.subarray(this.pos, this.pos + take), 0);\n this.pos += take;\n outPos += take;\n if (outPos === len)\n return out; // fast path\n }\n // Full blocks directly to out\n const full = Math.floor((len - outPos) / this.blockLen);\n if (full > 0) {\n const blockBytes = full * this.blockLen;\n const b = out.subarray(outPos, outPos + blockBytes);\n this.cipher(this.key, this.nonce, b, b, this.ctr);\n this.ctr += full;\n outPos += blockBytes;\n }\n // Save leftovers\n const left = len - outPos;\n if (left > 0) {\n this.buf.fill(0);\n // NOTE: cipher will handle overflow\n this.cipher(this.key, this.nonce, this.buf, this.buf, this.ctr++);\n out.set(this.buf.subarray(0, left), outPos);\n this.pos = left;\n }\n return out;\n }\n // Clone seeds the new instance from this stream, so the source PRG advances too.\n clone() {\n if (this.destroyed)\n throw new Error('cannot use destroyed PRG');\n return new _XorStreamPRG(this.cipher, this.blockLen, this.keyLen, this.nonceLen, this.randomBytes(this.state.length));\n }\n // Zeroes the current state, leftover buffer, and marks the instance destroyed.\n // The instance fails closed: any later randomBytes()/addEntropy()/clone() throws instead\n // of silently continuing from zero key||nonce state (which would yield predictable output).\n clean() {\n this.pos = 0;\n this.ctr = 0;\n this.buf.fill(0);\n this.state.fill(0);\n this.destroyed = true;\n }\n}\n/**\n * Creates a PRG constructor from a stream cipher.\n * @param cipher - Stream cipher used to fill output blocks.\n * @param blockLen - Keystream block length in bytes.\n * @param keyLen - Internal key length in bytes.\n * @param nonceLen - Internal nonce length in bytes.\n * @returns PRG factory for seeded concrete `_XorStreamPRG` instances.\n * @example\n * Builds a PRG from XChaCha20 and reads bytes from a randomly seeded instance.\n * ```ts\n * import { xchacha20 } from '@noble/ciphers/chacha.js';\n * import { createPRG } from '@noble/ciphers/_arx.js';\n * import { randomBytes } from '@noble/ciphers/utils.js';\n * const seed = randomBytes(32);\n * const init = createPRG(xchacha20, 64, 32, 24);\n * const prg = init(seed);\n * prg.randomBytes(8);\n * ```\n */\nexport const createPRG = (cipher, blockLen, keyLen, nonceLen) => {\n return ((seed = randomBytes(32)) => new _XorStreamPRG(cipher, blockLen, keyLen, nonceLen, seed));\n};\n","/**\n * Poly1305 ({@link https://cr.yp.to/mac/poly1305-20050329.pdf | PDF},\n * {@link https://en.wikipedia.org/wiki/Poly1305 | wiki})\n * is a fast and parallel secret-key message-authentication code suitable for\n * a wide variety of applications. It was standardized in\n * {@link https://www.rfc-editor.org/rfc/rfc8439 | RFC 8439} and is now used in TLS 1.3.\n *\n * Polynomial MACs are not perfect for every situation:\n * they lack Random Key Robustness: the MAC can be forged, and can't be used in PAKE schemes.\n * See {@link https://keymaterial.net/2020/09/07/invisible-salamanders-in-aes-gcm-siv/ | the invisible salamanders attack writeup}.\n * To combat invisible salamanders, `hash(key)` can be included in ciphertext,\n * however, this would violate ciphertext indistinguishability:\n * an attacker would know which key was used - so `HKDF(key, i)`\n * could be used instead.\n *\n * Check out the {@link https://cr.yp.to/mac.html | original website}.\n * Based on public-domain {@link https://github.com/floodyberry/poly1305-donna | poly1305-donna}.\n * @module\n */\n// prettier-ignore\nimport { abytes, aexists, aoutput, clean, copyBytes, wrapMacConstructor } from \"./utils.js\";\n// A simple-loop reference version (`poly1305_small`) lives in\n// `test/misc/micro-ciphers.ts`, provided for auditability.\n// Little-endian 2-byte load used by the Poly1305 limb decomposition.\nfunction u8to16(a, i) {\n return (a[i++] & 0xff) | ((a[i++] & 0xff) << 8);\n}\n/**\n * Incremental Poly1305 MAC state.\n * Prefer `poly1305()` for one-shot use.\n * @param key - 32-byte Poly1305 one-time key.\n * @example\n * Feeds one chunk into an incremental Poly1305 state with a fresh one-time key.\n *\n * ```ts\n * import { Poly1305 } from '@noble/ciphers/_poly1305.js';\n * import { randomBytes } from '@noble/ciphers/utils.js';\n * const key = randomBytes(32);\n * const mac = new Poly1305(key);\n * mac.update(new Uint8Array([1, 2, 3]));\n * mac.digest();\n * ```\n */\nexport class Poly1305 {\n blockLen = 16;\n outputLen = 16;\n buffer = new Uint8Array(16);\n r = new Uint16Array(10); // Allocating 1 array with .subarray() here is slower than 3\n h = new Uint16Array(10);\n pad = new Uint16Array(8);\n pos = 0;\n finished = false;\n destroyed = false;\n // Can be speed-up using BigUint64Array, at the cost of complexity\n constructor(key) {\n key = copyBytes(abytes(key, 32, 'key'));\n const t0 = u8to16(key, 0);\n const t1 = u8to16(key, 2);\n const t2 = u8to16(key, 4);\n const t3 = u8to16(key, 6);\n const t4 = u8to16(key, 8);\n const t5 = u8to16(key, 10);\n const t6 = u8to16(key, 12);\n const t7 = u8to16(key, 14);\n // RFC 8439 §2.5.1 / RFC 7539 §2.5.1 clamp r before multiplication.\n // These masks unpack that clamped value into 13-bit limbs, while pad\n // keeps the raw s half for finalize().\n // {@link https://github.com/floodyberry/poly1305-donna/blob/e6ad6e091d30d7f4ec2d4f978be1fcfcbce72781/poly1305-donna-16.h#L47 | poly1305-donna reference}\n this.r[0] = t0 & 0x1fff;\n this.r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n this.r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03;\n this.r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n this.r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff;\n this.r[5] = (t4 >>> 1) & 0x1ffe;\n this.r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n this.r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81;\n this.r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n this.r[9] = (t7 >>> 5) & 0x007f;\n for (let i = 0; i < 8; i++)\n this.pad[i] = u8to16(key, 16 + 2 * i);\n }\n process(data, offset, isLast = false) {\n // RFC 8439 §2.5 / §2.5.1 and RFC 7539 §2.5 / §2.5.1 add an extra high\n // bit to every full 16-byte block. The final partial block gets its\n // explicit `1` byte during digestInto(), so `hibit` stays zero there.\n const hibit = isLast ? 0 : 1 << 11;\n const { h, r } = this;\n const r0 = r[0];\n const r1 = r[1];\n const r2 = r[2];\n const r3 = r[3];\n const r4 = r[4];\n const r5 = r[5];\n const r6 = r[6];\n const r7 = r[7];\n const r8 = r[8];\n const r9 = r[9];\n const t0 = u8to16(data, offset + 0);\n const t1 = u8to16(data, offset + 2);\n const t2 = u8to16(data, offset + 4);\n const t3 = u8to16(data, offset + 6);\n const t4 = u8to16(data, offset + 8);\n const t5 = u8to16(data, offset + 10);\n const t6 = u8to16(data, offset + 12);\n const t7 = u8to16(data, offset + 14);\n let h0 = h[0] + (t0 & 0x1fff);\n let h1 = h[1] + (((t0 >>> 13) | (t1 << 3)) & 0x1fff);\n let h2 = h[2] + (((t1 >>> 10) | (t2 << 6)) & 0x1fff);\n let h3 = h[3] + (((t2 >>> 7) | (t3 << 9)) & 0x1fff);\n let h4 = h[4] + (((t3 >>> 4) | (t4 << 12)) & 0x1fff);\n let h5 = h[5] + ((t4 >>> 1) & 0x1fff);\n let h6 = h[6] + (((t4 >>> 14) | (t5 << 2)) & 0x1fff);\n let h7 = h[7] + (((t5 >>> 11) | (t6 << 5)) & 0x1fff);\n let h8 = h[8] + (((t6 >>> 8) | (t7 << 8)) & 0x1fff);\n let h9 = h[9] + ((t7 >>> 5) | hibit);\n let c = 0;\n let d0 = c + h0 * r0 + h1 * (5 * r9) + h2 * (5 * r8) + h3 * (5 * r7) + h4 * (5 * r6);\n c = d0 >>> 13;\n d0 &= 0x1fff;\n d0 += h5 * (5 * r5) + h6 * (5 * r4) + h7 * (5 * r3) + h8 * (5 * r2) + h9 * (5 * r1);\n c += d0 >>> 13;\n d0 &= 0x1fff;\n let d1 = c + h0 * r1 + h1 * r0 + h2 * (5 * r9) + h3 * (5 * r8) + h4 * (5 * r7);\n c = d1 >>> 13;\n d1 &= 0x1fff;\n d1 += h5 * (5 * r6) + h6 * (5 * r5) + h7 * (5 * r4) + h8 * (5 * r3) + h9 * (5 * r2);\n c += d1 >>> 13;\n d1 &= 0x1fff;\n let d2 = c + h0 * r2 + h1 * r1 + h2 * r0 + h3 * (5 * r9) + h4 * (5 * r8);\n c = d2 >>> 13;\n d2 &= 0x1fff;\n d2 += h5 * (5 * r7) + h6 * (5 * r6) + h7 * (5 * r5) + h8 * (5 * r4) + h9 * (5 * r3);\n c += d2 >>> 13;\n d2 &= 0x1fff;\n let d3 = c + h0 * r3 + h1 * r2 + h2 * r1 + h3 * r0 + h4 * (5 * r9);\n c = d3 >>> 13;\n d3 &= 0x1fff;\n d3 += h5 * (5 * r8) + h6 * (5 * r7) + h7 * (5 * r6) + h8 * (5 * r5) + h9 * (5 * r4);\n c += d3 >>> 13;\n d3 &= 0x1fff;\n let d4 = c + h0 * r4 + h1 * r3 + h2 * r2 + h3 * r1 + h4 * r0;\n c = d4 >>> 13;\n d4 &= 0x1fff;\n d4 += h5 * (5 * r9) + h6 * (5 * r8) + h7 * (5 * r7) + h8 * (5 * r6) + h9 * (5 * r5);\n c += d4 >>> 13;\n d4 &= 0x1fff;\n let d5 = c + h0 * r5 + h1 * r4 + h2 * r3 + h3 * r2 + h4 * r1;\n c = d5 >>> 13;\n d5 &= 0x1fff;\n d5 += h5 * r0 + h6 * (5 * r9) + h7 * (5 * r8) + h8 * (5 * r7) + h9 * (5 * r6);\n c += d5 >>> 13;\n d5 &= 0x1fff;\n let d6 = c + h0 * r6 + h1 * r5 + h2 * r4 + h3 * r3 + h4 * r2;\n c = d6 >>> 13;\n d6 &= 0x1fff;\n d6 += h5 * r1 + h6 * r0 + h7 * (5 * r9) + h8 * (5 * r8) + h9 * (5 * r7);\n c += d6 >>> 13;\n d6 &= 0x1fff;\n let d7 = c + h0 * r7 + h1 * r6 + h2 * r5 + h3 * r4 + h4 * r3;\n c = d7 >>> 13;\n d7 &= 0x1fff;\n d7 += h5 * r2 + h6 * r1 + h7 * r0 + h8 * (5 * r9) + h9 * (5 * r8);\n c += d7 >>> 13;\n d7 &= 0x1fff;\n let d8 = c + h0 * r8 + h1 * r7 + h2 * r6 + h3 * r5 + h4 * r4;\n c = d8 >>> 13;\n d8 &= 0x1fff;\n d8 += h5 * r3 + h6 * r2 + h7 * r1 + h8 * r0 + h9 * (5 * r9);\n c += d8 >>> 13;\n d8 &= 0x1fff;\n let d9 = c + h0 * r9 + h1 * r8 + h2 * r7 + h3 * r6 + h4 * r5;\n c = d9 >>> 13;\n d9 &= 0x1fff;\n d9 += h5 * r4 + h6 * r3 + h7 * r2 + h8 * r1 + h9 * r0;\n c += d9 >>> 13;\n d9 &= 0x1fff;\n c = ((c << 2) + c) | 0;\n c = (c + d0) | 0;\n d0 = c & 0x1fff;\n c = c >>> 13;\n d1 += c;\n h[0] = d0;\n h[1] = d1;\n h[2] = d2;\n h[3] = d3;\n h[4] = d4;\n h[5] = d5;\n h[6] = d6;\n h[7] = d7;\n h[8] = d8;\n h[9] = d9;\n }\n finalize() {\n const { h, pad } = this;\n const g = new Uint16Array(10);\n let c = h[1] >>> 13;\n h[1] &= 0x1fff;\n for (let i = 2; i < 10; i++) {\n h[i] += c;\n c = h[i] >>> 13;\n h[i] &= 0x1fff;\n }\n h[0] += c * 5;\n c = h[0] >>> 13;\n h[0] &= 0x1fff;\n h[1] += c;\n c = h[1] >>> 13;\n h[1] &= 0x1fff;\n h[2] += c;\n // RFC 8439 §2.5 / RFC 7539 §2.5 reduce modulo 2^130-5 before repacking\n // to 16-bit words and adding the raw s half.\n g[0] = h[0] + 5;\n c = g[0] >>> 13;\n g[0] &= 0x1fff;\n for (let i = 1; i < 10; i++) {\n g[i] = h[i] + c;\n c = g[i] >>> 13;\n g[i] &= 0x1fff;\n }\n g[9] -= 1 << 13;\n let mask = (c ^ 1) - 1;\n for (let i = 0; i < 10; i++)\n g[i] &= mask;\n mask = ~mask;\n for (let i = 0; i < 10; i++)\n h[i] = (h[i] & mask) | g[i];\n h[0] = (h[0] | (h[1] << 13)) & 0xffff;\n h[1] = ((h[1] >>> 3) | (h[2] << 10)) & 0xffff;\n h[2] = ((h[2] >>> 6) | (h[3] << 7)) & 0xffff;\n h[3] = ((h[3] >>> 9) | (h[4] << 4)) & 0xffff;\n h[4] = ((h[4] >>> 12) | (h[5] << 1) | (h[6] << 14)) & 0xffff;\n h[5] = ((h[6] >>> 2) | (h[7] << 11)) & 0xffff;\n h[6] = ((h[7] >>> 5) | (h[8] << 8)) & 0xffff;\n h[7] = ((h[8] >>> 8) | (h[9] << 5)) & 0xffff;\n let f = h[0] + pad[0];\n h[0] = f & 0xffff;\n for (let i = 1; i < 8; i++) {\n f = (((h[i] + pad[i]) | 0) + (f >>> 16)) | 0;\n h[i] = f & 0xffff;\n }\n clean(g);\n }\n update(data) {\n aexists(this);\n abytes(data);\n data = copyBytes(data);\n const { buffer, blockLen } = this;\n const len = data.length;\n for (let pos = 0; pos < len;) {\n const take = Math.min(blockLen - this.pos, len - pos);\n // Fast path: we have at least one block in input\n if (take === blockLen) {\n for (; blockLen <= len - pos; pos += blockLen)\n this.process(data, pos);\n continue;\n }\n buffer.set(data.subarray(pos, pos + take), this.pos);\n this.pos += take;\n pos += take;\n if (this.pos === blockLen) {\n this.process(buffer, 0, false);\n this.pos = 0;\n }\n }\n return this;\n }\n destroy() {\n // `aexists(this)` guards update/digest paths, so destroy must mark the instance unusable too.\n this.destroyed = true;\n clean(this.h, this.r, this.buffer, this.pad);\n }\n digestInto(out) {\n aexists(this);\n aoutput(out, this);\n this.finished = true;\n const { buffer, h } = this;\n let { pos } = this;\n if (pos) {\n // RFC 8439 §2.5 / RFC 7539 §2.5: the final short block appends a\n // single `0x01` byte and zero-fills the remaining bytes before the\n // last multiplication step.\n buffer[pos++] = 1;\n for (; pos < 16; pos++)\n buffer[pos] = 0;\n this.process(buffer, 0, true);\n }\n this.finalize();\n let opos = 0;\n for (let i = 0; i < 8; i++) {\n out[opos++] = h[i] >>> 0;\n out[opos++] = h[i] >>> 8;\n }\n }\n digest() {\n const { buffer, outputLen } = this;\n this.digestInto(buffer);\n // Copy out before destroy() zeroes the internal buffer.\n const res = buffer.slice(0, outputLen);\n this.destroy();\n return res;\n }\n}\n/**\n * Poly1305 MAC from RFC 8439.\n * @param msg - Message bytes to authenticate.\n * @param key - 32-byte Poly1305 one-time key.\n * @returns 16-byte authentication tag.\n * @example\n * Authenticates one message with a one-shot Poly1305 call and a fresh key.\n *\n * ```ts\n * import { poly1305 } from '@noble/ciphers/_poly1305.js';\n * import { randomBytes } from '@noble/ciphers/utils.js';\n * const key = randomBytes(32);\n * poly1305(new Uint8Array(), key);\n * ```\n */\nexport const poly1305 = /* @__PURE__ */ wrapMacConstructor(32, (key) => new Poly1305(key));\n","/**\n * ChaCha stream cipher, released\n * in 2008. Developed after Salsa20, ChaCha aims to increase diffusion per round.\n * It was standardized in\n * {@link https://www.rfc-editor.org/rfc/rfc8439 | RFC 8439} and\n * is now used in TLS 1.3.\n *\n * {@link https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-xchacha | XChaCha20}\n * extended-nonce variant is also provided. Similar to XSalsa, it's safe to use with\n * randomly-generated nonces.\n *\n * Check out\n * {@link http://cr.yp.to/chacha/chacha-20080128.pdf | PDF},\n * {@link https://en.wikipedia.org/wiki/Salsa20 | wiki}, and\n * {@link https://cr.yp.to/chacha.html | website}.\n *\n * @module\n */\nimport { createCipher, createPRG, rotl } from \"./_arx.js\";\nimport { poly1305 } from \"./_poly1305.js\";\nimport { abytes, clean, equalBytes, getOutput, isLE, swap32IfBE, u64Lengths, wrapCipher, } from \"./utils.js\";\n/**\n * ChaCha core function. Uses an unrolled loop (chachaCore, hchacha) - 4x\n * faster than a simple loop, but larger & harder to read. A simple-loop\n * reference version lives in `test/misc/micro-ciphers.ts`;\n * `test/arx.test.ts` keeps the two aligned.\n * The specific implementation is selected in `createCipher` below.\n */\n/** RFC 8439 §2.3 block core for `state = constants | key | counter | nonce`. */\n// prettier-ignore\nfunction chachaCore(s, k, n, out, cnt, rounds = 20) {\n let y00 = s[0], y01 = s[1], y02 = s[2], y03 = s[3], // \"expa\" \"nd 3\" \"2-by\" \"te k\"\n y04 = k[0], y05 = k[1], y06 = k[2], y07 = k[3], // Key Key Key Key\n y08 = k[4], y09 = k[5], y10 = k[6], y11 = k[7], // Key Key Key Key\n y12 = cnt, y13 = n[0], y14 = n[1], y15 = n[2]; // Counter Nonce Nonce Nonce\n // Save state to temporary variables\n let x00 = y00, x01 = y01, x02 = y02, x03 = y03, x04 = y04, x05 = y05, x06 = y06, x07 = y07, x08 = y08, x09 = y09, x10 = y10, x11 = y11, x12 = y12, x13 = y13, x14 = y14, x15 = y15;\n for (let r = 0; r < rounds; r += 2) {\n x00 = (x00 + x04) | 0;\n x12 = rotl(x12 ^ x00, 16);\n x08 = (x08 + x12) | 0;\n x04 = rotl(x04 ^ x08, 12);\n x00 = (x00 + x04) | 0;\n x12 = rotl(x12 ^ x00, 8);\n x08 = (x08 + x12) | 0;\n x04 = rotl(x04 ^ x08, 7);\n x01 = (x01 + x05) | 0;\n x13 = rotl(x13 ^ x01, 16);\n x09 = (x09 + x13) | 0;\n x05 = rotl(x05 ^ x09, 12);\n x01 = (x01 + x05) | 0;\n x13 = rotl(x13 ^ x01, 8);\n x09 = (x09 + x13) | 0;\n x05 = rotl(x05 ^ x09, 7);\n x02 = (x02 + x06) | 0;\n x14 = rotl(x14 ^ x02, 16);\n x10 = (x10 + x14) | 0;\n x06 = rotl(x06 ^ x10, 12);\n x02 = (x02 + x06) | 0;\n x14 = rotl(x14 ^ x02, 8);\n x10 = (x10 + x14) | 0;\n x06 = rotl(x06 ^ x10, 7);\n x03 = (x03 + x07) | 0;\n x15 = rotl(x15 ^ x03, 16);\n x11 = (x11 + x15) | 0;\n x07 = rotl(x07 ^ x11, 12);\n x03 = (x03 + x07) | 0;\n x15 = rotl(x15 ^ x03, 8);\n x11 = (x11 + x15) | 0;\n x07 = rotl(x07 ^ x11, 7);\n x00 = (x00 + x05) | 0;\n x15 = rotl(x15 ^ x00, 16);\n x10 = (x10 + x15) | 0;\n x05 = rotl(x05 ^ x10, 12);\n x00 = (x00 + x05) | 0;\n x15 = rotl(x15 ^ x00, 8);\n x10 = (x10 + x15) | 0;\n x05 = rotl(x05 ^ x10, 7);\n x01 = (x01 + x06) | 0;\n x12 = rotl(x12 ^ x01, 16);\n x11 = (x11 + x12) | 0;\n x06 = rotl(x06 ^ x11, 12);\n x01 = (x01 + x06) | 0;\n x12 = rotl(x12 ^ x01, 8);\n x11 = (x11 + x12) | 0;\n x06 = rotl(x06 ^ x11, 7);\n x02 = (x02 + x07) | 0;\n x13 = rotl(x13 ^ x02, 16);\n x08 = (x08 + x13) | 0;\n x07 = rotl(x07 ^ x08, 12);\n x02 = (x02 + x07) | 0;\n x13 = rotl(x13 ^ x02, 8);\n x08 = (x08 + x13) | 0;\n x07 = rotl(x07 ^ x08, 7);\n x03 = (x03 + x04) | 0;\n x14 = rotl(x14 ^ x03, 16);\n x09 = (x09 + x14) | 0;\n x04 = rotl(x04 ^ x09, 12);\n x03 = (x03 + x04) | 0;\n x14 = rotl(x14 ^ x03, 8);\n x09 = (x09 + x14) | 0;\n x04 = rotl(x04 ^ x09, 7);\n }\n // RFC 8439 §2.3 / §2.3.1: add the original state words back in state order.\n let oi = 0;\n out[oi++] = (y00 + x00) | 0;\n out[oi++] = (y01 + x01) | 0;\n out[oi++] = (y02 + x02) | 0;\n out[oi++] = (y03 + x03) | 0;\n out[oi++] = (y04 + x04) | 0;\n out[oi++] = (y05 + x05) | 0;\n out[oi++] = (y06 + x06) | 0;\n out[oi++] = (y07 + x07) | 0;\n out[oi++] = (y08 + x08) | 0;\n out[oi++] = (y09 + x09) | 0;\n out[oi++] = (y10 + x10) | 0;\n out[oi++] = (y11 + x11) | 0;\n out[oi++] = (y12 + x12) | 0;\n out[oi++] = (y13 + x13) | 0;\n out[oi++] = (y14 + x14) | 0;\n out[oi++] = (y15 + x15) | 0;\n}\n/**\n * hchacha hashes key and nonce into key' and nonce' for xchacha20.\n * Algorithmically identical to `hchacha_small` from `test/misc/micro-ciphers.ts`,\n * but this exported path normalizes word order on big-endian hosts.\n * Reuses `chachaCore` and subtracts its feed-forward, keeping the hot per-block\n * path untouched.\n * @param s - Sigma constants as 32-bit words.\n * @param k - Key words.\n * @param i - Nonce-prefix words.\n * @param out - Output buffer for the derived subkey.\n * @example\n * Derives the XChaCha subkey from sigma, key, and nonce-prefix words.\n *\n * ```ts\n * const sigma = new Uint32Array(4);\n * const key = new Uint32Array(8);\n * const nonce = new Uint32Array(4);\n * const out = new Uint32Array(8);\n * hchacha(sigma, key, nonce, out);\n * ```\n */\n// prettier-ignore\nexport function hchacha(s, k, i, out) {\n // Runs the shared chachaCore permutation, then subtracts the RFC 8439 feed-forward\n // it applies, recovering the raw permutation words hchacha needs.\n // LE hosts read the caller arrays in place (no copies); BE hosts get\n // byte-swapped scratch copies, wiped before returning.\n const s2 = isLE ? s : swap32IfBE(s.slice(0, 4));\n const k2 = isLE ? k : swap32IfBE(k.slice(0, 8));\n const i2 = isLE ? i : swap32IfBE(i.slice(0, 4));\n const t = new Uint32Array(16);\n chachaCore(s2, k2, i2.subarray(1), t, i2[0]);\n let oi = 0;\n out[oi++] = (t[0] - s2[0]) | 0;\n out[oi++] = (t[1] - s2[1]) | 0;\n out[oi++] = (t[2] - s2[2]) | 0;\n out[oi++] = (t[3] - s2[3]) | 0;\n out[oi++] = (t[12] - i2[0]) | 0;\n out[oi++] = (t[13] - i2[1]) | 0;\n out[oi++] = (t[14] - i2[2]) | 0;\n out[oi++] = (t[15] - i2[3]) | 0;\n swap32IfBE(out);\n if (!isLE)\n clean(s2, k2, i2);\n clean(t);\n}\n/**\n * Original, non-RFC chacha20 from DJB. 8-byte nonce, 8-byte counter.\n * The nonce/counter layout still reserves 8 counter bytes internally, but the shared public\n * `counter` argument follows noble's strict non-wrapping 32-bit policy. See `src/_arx.ts`\n * near `MAX_COUNTER` for the full counter-policy rationale.\n * @param key - 16-byte or 32-byte key.\n * @param nonce - 8-byte nonce.\n * @param data - Input bytes to xor with the keystream.\n * @param output - Optional destination buffer.\n * @param counter - Initial block counter.\n * @returns Encrypted or decrypted bytes.\n * @example\n * Encrypts bytes with the original 8-byte-nonce ChaCha variant and a fresh key/nonce.\n *\n * ```ts\n * import { chacha20orig } from '@noble/ciphers/chacha.js';\n * import { randomBytes } from '@noble/ciphers/utils.js';\n * const key = randomBytes(32);\n * const nonce = randomBytes(8);\n * chacha20orig(key, nonce, new Uint8Array(4));\n * ```\n */\nexport const chacha20orig = /* @__PURE__ */ createCipher(chachaCore, {\n counterRight: false,\n counterLength: 8,\n allowShortKeys: true,\n});\n/**\n * ChaCha stream cipher. Conforms to RFC 8439 (IETF, TLS). 12-byte nonce, 4-byte counter.\n * With smaller nonce, it's not safe to make it random (CSPRNG), due to collision chance.\n * @param key - 32-byte key.\n * @param nonce - 12-byte nonce.\n * @param data - Input bytes to xor with the keystream.\n * @param output - Optional destination buffer.\n * @param counter - Initial block counter.\n * @returns Encrypted or decrypted bytes.\n * @example\n * Encrypts bytes with the RFC 8439 ChaCha20 stream cipher and a fresh key/nonce.\n *\n * ```ts\n * import { chacha20 } from '@noble/ciphers/chacha.js';\n * import { randomBytes } from '@noble/ciphers/utils.js';\n * const key = randomBytes(32);\n * const nonce = randomBytes(12);\n * chacha20(key, nonce, new Uint8Array(4));\n * ```\n */\nexport const chacha20 = /* @__PURE__ */ createCipher(chachaCore, {\n counterRight: false,\n counterLength: 4,\n allowShortKeys: false,\n});\n/**\n * XChaCha eXtended-nonce ChaCha. With 24-byte nonce, it's safe to make it random (CSPRNG).\n * See {@link https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-xchacha | the IRTF draft}.\n * The nonce/counter layout still reserves 8 counter bytes internally, but the shared public\n * `counter` argument follows noble's strict non-wrapping 32-bit policy. See `src/_arx.ts`\n * near `MAX_COUNTER` for the full counter-policy rationale.\n * @param key - 32-byte key.\n * @param nonce - 24-byte extended nonce.\n * @param data - Input bytes to xor with the keystream.\n * @param output - Optional destination buffer.\n * @param counter - Initial block counter.\n * @returns Encrypted or decrypted bytes.\n * @example\n * Encrypts bytes with XChaCha20 using a fresh key and random 24-byte nonce.\n *\n * ```ts\n * import { xchacha20 } from '@noble/ciphers/chacha.js';\n * import { randomBytes } from '@noble/ciphers/utils.js';\n * const key = randomBytes(32);\n * const nonce = randomBytes(24);\n * xchacha20(key, nonce, new Uint8Array(4));\n * ```\n */\nexport const xchacha20 = /* @__PURE__ */ createCipher(chachaCore, {\n counterRight: false,\n counterLength: 8,\n extendNonceFn: hchacha,\n allowShortKeys: false,\n});\n/**\n * Reduced 8-round chacha, described in original paper.\n * @param key - 32-byte key.\n * @param nonce - 12-byte nonce.\n * @param data - Input bytes to xor with the keystream.\n * @param output - Optional destination buffer.\n * @param counter - Initial block counter.\n * @returns Encrypted or decrypted bytes.\n * @example\n * Uses the reduced 8-round variant for non-critical workloads with a fresh key/nonce.\n *\n * ```ts\n * import { chacha8 } from '@noble/ciphers/chacha.js';\n * import { randomBytes } from '@noble/ciphers/utils.js';\n * const key = randomBytes(32);\n * const nonce = randomBytes(12);\n * chacha8(key, nonce, new Uint8Array(4));\n * ```\n */\nexport const chacha8 = /* @__PURE__ */ createCipher(chachaCore, {\n counterRight: false,\n counterLength: 4,\n rounds: 8,\n});\n/**\n * Reduced 12-round chacha, described in original paper.\n * @param key - 32-byte key.\n * @param nonce - 12-byte nonce.\n * @param data - Input bytes to xor with the keystream.\n * @param output - Optional destination buffer.\n * @param counter - Initial block counter.\n * @returns Encrypted or decrypted bytes.\n * @example\n * Uses the reduced 12-round variant for non-critical workloads with a fresh key/nonce.\n *\n * ```ts\n * import { chacha12 } from '@noble/ciphers/chacha.js';\n * import { randomBytes } from '@noble/ciphers/utils.js';\n * const key = randomBytes(32);\n * const nonce = randomBytes(12);\n * chacha12(key, nonce, new Uint8Array(4));\n * ```\n */\nexport const chacha12 = /* @__PURE__ */ createCipher(chachaCore, {\n counterRight: false,\n counterLength: 4,\n rounds: 12,\n});\n// Test-only hook: exposes the unrolled production core so tests can compare it\n// with the simple/reference core from `test/misc/micro-ciphers.ts`.\nexport const __TESTS = /* @__PURE__ */ Object.freeze({ chachaCore });\n// RFC 8439 §2.8.1 pad16(x): shared zero block for AAD/ciphertext padding.\nconst ZEROS16 = /* @__PURE__ */ new Uint8Array(16);\n// RFC 8439 §2.8 / §2.8.1: aligned inputs add nothing, otherwise append 16-(len%16) zero bytes.\nconst updatePadded = (h, msg) => {\n h.update(msg);\n const leftover = msg.length % 16;\n if (leftover)\n h.update(ZEROS16.subarray(leftover));\n};\n// RFC 8439 §2.6.1 poly1305_key_gen returns `block[0..31]`, so AEAD key\n// generation only needs 32 zero bytes.\nconst ZEROS32 = /* @__PURE__ */ new Uint8Array(32);\nfunction computeTag(fn, key, nonce, ciphertext, AAD) {\n if (AAD !== undefined)\n abytes(AAD, undefined, 'AAD');\n // RFC 8439 §2.6 / §2.8: derive the Poly1305 one-time key from counter 0,\n // then MAC AAD || pad16(AAD) || ciphertext || pad16(ciphertext) || len(AAD) || len(ciphertext).\n const authKey = fn(key, nonce, ZEROS32);\n const lengths = u64Lengths(ciphertext.length, AAD ? AAD.length : 0, true);\n // Methods below can be replaced with\n // `return poly1305_computeTag_small(authKey, lengths, ciphertext, AAD)`\n // from `test/misc/micro-ciphers.ts`.\n const h = poly1305.create(authKey);\n if (AAD)\n updatePadded(h, AAD);\n updatePadded(h, ciphertext);\n h.update(lengths);\n const res = h.digest();\n clean(authKey, lengths);\n return res;\n}\n/**\n * AEAD algorithm from RFC 8439.\n * Salsa20 and chacha (RFC 8439) use poly1305 differently.\n * We could have composed them, but it's hard because of authKey:\n * In salsa20, authKey changes position in salsa stream.\n * In chacha, authKey can't be computed inside computeTag, it modifies the counter.\n */\nexport const _poly1305_aead = (xorStream) => (key, nonce, AAD) => {\n // This borrows caller key/nonce/AAD buffers by reference; mutating them after construction\n // changes future encrypt/decrypt results.\n const tagLength = 16;\n return {\n encrypt(plaintext, output) {\n const plength = plaintext.length;\n output = getOutput(plength + tagLength, output, false);\n output.set(plaintext);\n const oPlain = output.subarray(0, -tagLength);\n // RFC 8439 §2.8: payload encryption starts at counter 1 because counter 0 produced the OTK.\n xorStream(key, nonce, oPlain, oPlain, 1);\n const tag = computeTag(xorStream, key, nonce, oPlain, AAD);\n output.set(tag, plength); // append tag\n clean(tag);\n return output;\n },\n decrypt(ciphertext, output) {\n output = getOutput(ciphertext.length - tagLength, output, false);\n const data = ciphertext.subarray(0, -tagLength);\n const passedTag = ciphertext.subarray(-tagLength);\n const tag = computeTag(xorStream, key, nonce, data, AAD);\n // RFC 8439 §2.8 / §4: authenticate ciphertext before decrypting it, and compare tags with\n // the constant-time equalBytes() helper rather than decrypting speculative plaintext first.\n if (!equalBytes(passedTag, tag)) {\n clean(tag);\n throw new Error('invalid tag');\n }\n output.set(ciphertext.subarray(0, -tagLength));\n // Actual decryption\n xorStream(key, nonce, output, output, 1); // start stream with i=1\n clean(tag);\n return output;\n },\n };\n};\n/**\n * ChaCha20-Poly1305 from RFC 8439.\n *\n * Unsafe to use random nonces under the same key, due to collision chance.\n * Prefer XChaCha instead.\n * @param key - 32-byte key.\n * @param nonce - 12-byte nonce.\n * @param AAD - Additional authenticated data.\n * @returns AEAD cipher instance.\n * @example\n * Encrypts and authenticates plaintext with a fresh key and nonce.\n *\n * ```ts\n * import { chacha20poly1305 } from '@noble/ciphers/chacha.js';\n * import { randomBytes } from '@noble/ciphers/utils.js';\n * const key = randomBytes(32);\n * const nonce = randomBytes(12);\n * const aad = new TextEncoder().encode('session metadata');\n * const cipher = chacha20poly1305(key, nonce, aad);\n * cipher.encrypt(new Uint8Array([1, 2, 3]));\n * ```\n */\nexport const chacha20poly1305 = /* @__PURE__ */ wrapCipher({ blockSize: 64, nonceLength: 12, tagLength: 16, withAAD: true }, \n/* @__PURE__ */ _poly1305_aead(chacha20));\n/**\n * XChaCha20-Poly1305 extended-nonce chacha.\n *\n * Can be safely used with random nonces (CSPRNG).\n * See {@link https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-xchacha | the IRTF draft}.\n * @param key - 32-byte key.\n * @param nonce - 24-byte nonce.\n * @param AAD - Additional authenticated data.\n * @returns AEAD cipher instance.\n * @example\n * Encrypts and authenticates plaintext with a fresh key and random 24-byte nonce.\n *\n * ```ts\n * import { xchacha20poly1305 } from '@noble/ciphers/chacha.js';\n * import { randomBytes } from '@noble/ciphers/utils.js';\n * const key = randomBytes(32);\n * const nonce = randomBytes(24);\n * const aad = new TextEncoder().encode('session metadata');\n * const cipher = xchacha20poly1305(key, nonce, aad);\n * cipher.encrypt(new Uint8Array([1, 2, 3]));\n * ```\n */\nexport const xchacha20poly1305 = /* @__PURE__ */ wrapCipher({ blockSize: 64, nonceLength: 24, tagLength: 16, withAAD: true }, \n/* @__PURE__ */ _poly1305_aead(xchacha20));\n/**\n * Chacha20 CSPRNG (cryptographically secure pseudorandom number generator).\n * It's best to limit usage to non-production, non-critical cases: for example, test-only.\n * Compatible with libtomcrypt. It does not have a specification, so unclear how secure it is.\n * @param seed - Optional seed bytes mixed into the internal `key || nonce` state. When omitted,\n * only 32 random bytes are mixed into the 40-byte state.\n * @returns Seeded concrete `_XorStreamPRG` instance, including `clone()`.\n * @example\n * Seeds the test-only ChaCha20 DRBG from fresh entropy.\n *\n * ```ts\n * import { rngChacha20 } from '@noble/ciphers/chacha.js';\n * import { randomBytes } from '@noble/ciphers/utils.js';\n * const seed = randomBytes(32);\n * const prg = rngChacha20(seed);\n * prg.randomBytes(8);\n * ```\n */\nexport const rngChacha20 = /* @__PURE__ */ createPRG(chacha20orig, 64, 32, 8);\n/**\n * Chacha20/8 CSPRNG (cryptographically secure pseudorandom number generator).\n * It's best to limit usage to non-production, non-critical cases: for example, test-only.\n * Faster than `rngChacha20`.\n * @param seed - Optional seed bytes mixed into the internal `key || nonce` state. When omitted,\n * only 32 random bytes are mixed into the 44-byte state.\n * @returns Seeded concrete `_XorStreamPRG` instance, including `clone()`.\n * @example\n * Seeds the faster test-only ChaCha8 DRBG from fresh entropy.\n *\n * ```ts\n * import { rngChacha8 } from '@noble/ciphers/chacha.js';\n * import { randomBytes } from '@noble/ciphers/utils.js';\n * const seed = randomBytes(32);\n * const prg = rngChacha8(seed);\n * prg.randomBytes(8);\n * ```\n */\nexport const rngChacha8 = /* @__PURE__ */ createPRG(chacha8, 64, 32, 12);\n","import { xchacha20poly1305 } from \"@noble/ciphers/chacha.js\";\nimport { managedNonce } from \"@noble/ciphers/utils.js\";\n\nimport * as IDB from \"idb-keyval\";\nimport { base64url } from \"iso-base/rfc4648\";\nimport { utf8 } from \"iso-base/utf8\";\n\n////////////////////////////////////////////\n// CONSTANTS\n////////////////////////////////////////////\n\nconst IDB_PREFIX = \"diffuse/transformer/output/refiner/passkey-encryption\";\n\n/**\n * @param {string} namespace\n * @returns {{ credential: string, cipher: string }}\n */\nfunction idbKeys(namespace) {\n const prefix = namespace?.length ? `${IDB_PREFIX}/${namespace}` : IDB_PREFIX;\n return {\n credential: `${prefix}/passkey`,\n cipher: `${prefix}/passkey/cipher-key`,\n };\n}\n\n////////////////////////////////////////////\n// RELYING PARTY\n////////////////////////////////////////////\n\n/**\n * @returns {{ name: string, id: string }}\n */\nexport function relyingParty() {\n const id = document.location.hostname;\n return { name: id, id };\n}\n\n////////////////////////////////////////////\n// PASSKEY MANAGEMENT\n////////////////////////////////////////////\n\n/**\n * Register a new passkey with the PRF extension.\n *\n * @param {string} namespace\n * @returns {Promise<{ supported: true, credentialId: Uint8Array, prfSecond: ArrayBuffer } | { supported: false, reason: string }>}\n */\nexport async function createPasskey(namespace) {\n const rp = relyingParty();\n const challenge = crypto.getRandomValues(new Uint8Array(32));\n const userId = crypto.getRandomValues(new Uint8Array(16));\n\n /** @type {PublicKeyCredential | null} */\n let credential;\n\n try {\n credential = /** @type {PublicKeyCredential} */ (\n await navigator.credentials.create({\n publicKey: {\n challenge,\n rp,\n user: {\n id: userId,\n name: rp.id,\n displayName: \"Diffuse – \" + rp.id,\n },\n pubKeyCredParams: [\n { type: \"public-key\", alg: -7 },\n { type: \"public-key\", alg: -257 },\n ],\n attestation: \"none\",\n authenticatorSelection: {\n userVerification: \"required\",\n requireResidentKey: true,\n residentKey: \"required\",\n },\n extensions: {\n // @ts-ignore — PRF is not yet in the TS DOM types\n prf: {\n eval: {\n // @ts-ignore\n first: utf8.decode(rp.id + \"signing\"),\n // @ts-ignore\n second: utf8.decode(rp.id + \"encryption\"),\n },\n },\n },\n },\n })\n );\n } catch (err) {\n return {\n supported: false,\n reason: err instanceof Error ? err.message : String(err),\n };\n }\n\n if (!credential) {\n return { supported: false, reason: \"Credential creation returned null\" };\n }\n\n const extensions = credential.getClientExtensionResults();\n\n // @ts-ignore — PRF is not yet in the TS DOM types\n if (extensions.prf?.enabled !== true) {\n return {\n supported: false,\n reason: \"This authenticator does not support the WebAuthn PRF extension\",\n };\n }\n\n // @ts-ignore — PRF is not yet in the TS DOM types\n const prfSecond = extensions.prf?.results?.second;\n\n if (!prfSecond) {\n return {\n supported: false,\n reason: \"Authenticator did not return PRF results at registration time\",\n };\n }\n\n const credentialId = new Uint8Array(credential.rawId);\n await IDB.set(idbKeys(namespace).credential, {\n credentialId: Array.from(credentialId),\n });\n\n return {\n supported: true,\n credentialId,\n prfSecond: /** @type {ArrayBuffer} */ (prfSecond),\n };\n}\n\n/**\n * Authenticate with an existing passkey via discoverable-credential lookup\n * (no `allowCredentials`), so it works on a new device that has no stored\n * credential ID yet. Saves the credential ID to IDB and returns PRF material.\n *\n * @param {string} namespace\n * @returns {Promise<{ supported: true, credentialId: Uint8Array, prfSecond: ArrayBuffer } | { supported: false, reason: string }>}\n */\nexport async function adoptPasskeyPrfResult(namespace) {\n const rp = relyingParty();\n const challenge = crypto.getRandomValues(new Uint8Array(32));\n\n /** @type {PublicKeyCredential | null} */\n let assertion;\n\n try {\n assertion = /** @type {PublicKeyCredential} */ (\n await navigator.credentials.get({\n publicKey: {\n challenge,\n rpId: rp.id,\n userVerification: \"required\",\n extensions: {\n // @ts-ignore — PRF is not yet in the TS DOM types\n prf: {\n eval: {\n // @ts-ignore\n first: utf8.decode(rp.id + \"signing\"),\n // @ts-ignore\n second: utf8.decode(rp.id + \"encryption\"),\n },\n },\n },\n },\n })\n );\n } catch (err) {\n return {\n supported: false,\n reason: err instanceof Error ? err.message : String(err),\n };\n }\n\n if (!assertion) {\n return { supported: false, reason: \"Credential get returned null\" };\n }\n\n const extensions = assertion.getClientExtensionResults();\n\n // @ts-ignore — PRF is not yet in the TS DOM types\n const prfSecond = extensions.prf?.results?.second;\n\n if (!prfSecond) {\n return {\n supported: false,\n reason:\n \"This authenticator did not return PRF results — PRF extension may not be supported\",\n };\n }\n\n const credentialId = new Uint8Array(assertion.rawId);\n await IDB.set(idbKeys(namespace).credential, {\n credentialId: Array.from(credentialId),\n });\n\n return {\n supported: true,\n credentialId,\n prfSecond: /** @type {ArrayBuffer} */ (prfSecond),\n };\n}\n\n/**\n * Remove the stored passkey credential ID and cached cipher key from IDB.\n *\n * @param {string} namespace\n * @returns {Promise}\n */\nexport async function removeStoredPasskey(namespace) {\n const keys = idbKeys(namespace);\n await Promise.all([IDB.del(keys.credential), IDB.del(keys.cipher)]);\n}\n\n/**\n * Persist the derived cipher key to IDB so it survives page reloads.\n *\n * @param {string} namespace\n * @param {Uint8Array} key\n * @returns {Promise}\n */\nexport async function storeCipherKey(namespace, key) {\n await IDB.set(idbKeys(namespace).cipher, key);\n}\n\n/**\n * Retrieve the previously persisted cipher key from IDB.\n *\n * @param {string} namespace\n * @returns {Promise}\n */\nexport async function loadStoredCipherKey(namespace) {\n return IDB.get(idbKeys(namespace).cipher);\n}\n\n////////////////////////////////////////////\n// KEY DERIVATION\n////////////////////////////////////////////\n\n/**\n * Derive a 256-bit key from the PRF \"second\" output via HKDF.\n * Returns raw bytes suitable for use with XChaCha20-Poly1305.\n *\n * @param {ArrayBuffer} prfSecond\n * @returns {Promise}\n */\nexport async function deriveCipherKey(prfSecond) {\n const keyMaterial = await crypto.subtle.importKey(\n \"raw\",\n prfSecond,\n { name: \"HKDF\" },\n false,\n [\"deriveBits\"],\n );\n\n const bits = await crypto.subtle.deriveBits(\n {\n name: \"HKDF\",\n hash: \"SHA-256\",\n\n salt:\n /** @type {ArrayBuffer} */ (/** @type {unknown} */ (utf8.decode(\n \"diffuse-atproto-passkey-salt\",\n ))),\n\n info:\n /** @type {ArrayBuffer} */ (/** @type {unknown} */ (utf8.decode(\n \"diffuse-atproto-track-uri\",\n ))),\n },\n keyMaterial,\n 256,\n );\n\n return new Uint8Array(bits);\n}\n\n////////////////////////////////////////////\n// ENCRYPT / DECRYPT\n////////////////////////////////////////////\n\n/**\n * Detect whether a URI is encrypted by this module.\n *\n * @param {string} uri\n * @returns {boolean}\n */\nexport function isEncryptedUri(uri) {\n return uri.startsWith(\"encrypted://\");\n}\n\nconst xchacha = managedNonce(xchacha20poly1305);\n\n/**\n * Encrypt a plaintext URI with XChaCha20-Poly1305.\n * Returns a string of the form: `encrypted://`\n * The nonce is prepended automatically by `managedNonce`.\n *\n * @param {Uint8Array} key\n * @param {string} plaintext\n * @returns {string}\n */\nexport function encryptUri(key, plaintext) {\n const ciphertext = xchacha(key).encrypt(utf8.decode(plaintext));\n return \"encrypted://\" + base64url.encode(ciphertext);\n}\n\n/**\n * Decrypt an encrypted URI produced by `encryptUri`.\n *\n * @param {Uint8Array} key\n * @param {string} encryptedUri\n * @returns {string}\n */\nexport function decryptUri(key, encryptedUri) {\n const ciphertext = base64url.decode(encryptedUri.slice(12));\n return utf8.encode(xchacha(key).decrypt(ciphertext));\n}\n"],"mappings":"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","names":["isBytes","a","__name","atitle","title","abool","value","anumber","n","abytes","length","bytes","ofLen","got","message","aobject","label","aexists","instance","checkFinished","aoutput","out","min","u32","arr","__name","clean","arrays","i","createView","isLE","byteSwap","word","byteSwap32","arr","i","byteSwap","__name","swap32IfBE","isLE","u","overlapBytes","a","b","__name","complexOverlapBytes","input","output","concatBytes","arrays","sum","i","abytes","res","pad","checkOpts","defaults","opts","aobject","equalBytes","diff","wrapMacConstructor","keyLen","macCons","fromMsg","mac","getArgs","macC","msg","key","tmp","args","wrapCipher","params","constructor","wrappedCipher","nonce","tagl","aadStart","isBytes","cipher","checkOutput","fnLength","called","data","getOutput","expectedLength","out","onlyAligned","isAligned32","u64Lengths","dataLength","aadLength","isLE","anumber","abool","num","view","createView","bytes","copyBytes","randomBytes","bytesLength","cr","managedNonce","fn","randomBytes_","nonceLength","addNonce","ciphertext","plaintext","encrypted","ct","decrypted","encodeStr","__name","str","c","sigma16_32","swap32IfBE","u32","sigma32_32","rotl","a","b","BLOCK_LEN","BLOCK_LEN32","MAX_COUNTER","U32_EMPTY","runCipher","core","sigma","key","nonce","data","output","counter","rounds","len","block","b32","isAligned","isLE","isAligned32","d32","o32","pos","take","j","posj","pos32","createCipher","opts","allowShortKeys","extendNonceFn","counterLength","counterRight","checkOpts","anumber","abool","abytes","hasOutput","getOutput","complexOverlapBytes","toClean","l","k","copyBytes","k32","n16","sigmaRaw","clean","nonceNcLen","nc","n32","u8to16","a","i","__name","Poly1305","key","copyBytes","abytes","t0","t1","t2","t3","t4","t5","t6","t7","data","offset","isLast","hibit","h","r","r0","r1","r2","r3","r4","r5","r6","r7","r8","r9","h0","h1","h2","h3","h4","h5","h6","h7","h8","h9","c","d0","d1","d2","d3","d4","d5","d6","d7","d8","d9","pad","g","mask","f","clean","aexists","buffer","blockLen","len","pos","take","out","aoutput","opos","outputLen","res","poly1305","wrapMacConstructor","chachaCore","s","k","n","out","cnt","rounds","y00","y01","y02","y03","y04","y05","y06","y07","y08","y09","y10","y11","y12","y13","y14","y15","x00","x01","x02","x03","x04","x05","x06","x07","x08","x09","x10","x11","x12","x13","x14","x15","r","rotl","oi","__name","hchacha","s2","isLE","swap32IfBE","k2","i2","t","clean","xchacha20","createCipher","chachaCore","hchacha","ZEROS16","updatePadded","__name","h","msg","leftover","ZEROS32","computeTag","fn","key","nonce","ciphertext","AAD","abytes","authKey","lengths","u64Lengths","poly1305","res","clean","_poly1305_aead","xorStream","plaintext","output","plength","getOutput","oPlain","tag","data","passedTag","equalBytes","xchacha20poly1305","wrapCipher","_poly1305_aead","xchacha20","IDB_PREFIX","idbKeys","namespace","prefix","__name","relyingParty","id","createPasskey","rp","challenge","userId","credential","utf8","err","extensions","prfSecond","credentialId","set","adoptPasskeyPrfResult","assertion","removeStoredPasskey","keys","del","storeCipherKey","key","loadStoredCipherKey","get","deriveCipherKey","keyMaterial","bits","isEncryptedUri","uri","xchacha","managedNonce","xchacha20poly1305","encryptUri","plaintext","ciphertext","base64url","decryptUri","encryptedUri"],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse","file":"/chunk-BOVR37RD.js.map"} \ No newline at end of file +{"version":3,"sources":["/node_modules/.deno/@noble+ciphers@2.4.0/node_modules/@noble/ciphers/utils.js","/node_modules/.deno/@noble+ciphers@2.4.0/node_modules/@noble/ciphers/_arx.js","/node_modules/.deno/@noble+ciphers@2.4.0/node_modules/@noble/ciphers/_poly1305.js","/node_modules/.deno/@noble+ciphers@2.4.0/node_modules/@noble/ciphers/chacha.js","/components/transformer/output/refiner/passkey-encryption/passkey.js"],"sourcesContent":["/**\n * Utilities for hex, bytes, CSPRNG.\n * @module\n */\n/*! noble-ciphers - MIT License (c) 2023 Paul Miller (paulmillr.com) */\nexport function aarray(item, title, inner = () => { }) {\n if (!Array.isArray(item))\n throw new TypeError(`\"${title}\" expected array, got type=${typeof item}`);\n for (let i = 0; i < item.length; i++)\n inner(item[i], `${title}[${i}]`);\n return item;\n}\n/**\n * Checks if something is Uint8Array. Be careful: nodejs Buffer will return true.\n * @param a - Value to inspect.\n * @returns `true` when the value is a Uint8Array view, including Node's `Buffer`.\n * @example\n * Guards a value before treating it as raw key material.\n *\n * ```ts\n * isBytes(new Uint8Array());\n * ```\n */\nexport function isBytes(a) {\n // Plain `instanceof Uint8Array` is too strict for some Buffer / proxy /\n // cross-realm cases. The fallback still requires a real ArrayBuffer view\n // so plain JSON-deserialized `{ constructor: ... }`\n // spoofing is rejected, and `BYTES_PER_ELEMENT === 1` keeps the fallback on byte-oriented views.\n return (a instanceof Uint8Array ||\n (ArrayBuffer.isView(a) &&\n a.constructor.name === 'Uint8Array' &&\n 'BYTES_PER_ELEMENT' in a &&\n a.BYTES_PER_ELEMENT === 1));\n}\n// Shared error-message prefix builder. Only called on throw paths, so assert\n// success paths never pay for the string concatenation.\nconst atitle = (title) => (title ? `\"${title}\" ` : '');\n/**\n * Asserts something is boolean.\n * @param value - Value to validate.\n * @returns The validated boolean.\n * @throws On wrong argument types. {@link TypeError}\n * @example\n * Validates a boolean option before branching on it.\n *\n * ```ts\n * abool(true);\n * ```\n */\nexport function abool(value, title = '') {\n if (typeof value !== 'boolean')\n throw new TypeError(atitle(title) + 'expected boolean, got type=' + typeof value);\n return value;\n}\n/**\n * Asserts something is a non-negative safe integer.\n * @param n - Value to validate.\n * @returns The validated number.\n * @throws On wrong argument types. {@link TypeError}\n * @throws On wrong argument ranges or values. {@link RangeError}\n * @example\n * Validates a non-negative length or counter.\n *\n * ```ts\n * anumber(1);\n * ```\n */\nexport function anumber(n, title = '') {\n if (typeof n !== 'number')\n throw new TypeError(atitle(title) + 'expected number, got ' + typeof n);\n if (!Number.isSafeInteger(n) || n < 0)\n throw new RangeError(atitle(title) + 'expected integer >= 0, got ' + n);\n return n;\n}\n/**\n * Asserts something is Uint8Array.\n * @param value - Value to validate.\n * @param length - Expected byte length.\n * @param title - Optional label used in error messages.\n * @returns The validated byte array.\n * On Node, `Buffer` is accepted too because it is a Uint8Array view.\n * @throws On wrong argument types. {@link TypeError}\n * @throws On wrong argument lengths. {@link RangeError}\n * @example\n * Validates a fixed-length nonce or key buffer.\n *\n * ```ts\n * abytes(new Uint8Array([1, 2]), 2);\n * ```\n */\nexport function abytes(value, length, title = '') {\n // Success path first: this runs at the start of every update() / digestInto(), and the\n // common `abytes(data)` form must not pay for length handling it does not use.\n if (isBytes(value) && (length === undefined || value.length === length))\n return value;\n // Error path: recompute freely to build the exact message.\n if (length !== undefined)\n anumber(length, 'length');\n const bytes = isBytes(value);\n const ofLen = length !== undefined ? ` of length ${length}` : '';\n const got = bytes ? `length=${value.length}` : `type=${typeof value}`;\n const message = atitle(title) + 'expected Uint8Array' + ofLen + ', got ' + got;\n if (!bytes)\n throw new TypeError(message);\n throw new RangeError(message);\n}\nconst aobject = (value, label) => {\n if (value === null || typeof value !== 'object' || Array.isArray(value))\n throw new TypeError(label === 'object'\n ? 'expected valid options object'\n : `\"${label}\" expected object, got type=${typeof value}`);\n};\n/**\n * Asserts a hash- or MAC-like instance has not been destroyed or finished.\n * @param instance - Stateful instance to validate.\n * @param checkFinished - Whether to reject finished instances.\n * When `false`, only `destroyed` is checked.\n * @throws If the hash instance has already been destroyed or finalized. {@link Error}\n * @example\n * Guards against calling `update()` or `digest()` on a finished hash.\n *\n * ```ts\n * aexists({ destroyed: false, finished: false });\n * ```\n */\nexport function aexists(instance, checkFinished = true) {\n // Runs on every update()/digestInto(); the flags are library-owned booleans, so only their\n // truthiness is checked - re-validating their type per call was pure hot-path overhead.\n if (instance.destroyed)\n throw new Error('hash was destroyed');\n if (checkFinished && instance.finished)\n throw new Error('digest() was already called');\n}\n/**\n * Asserts output is a sufficiently-sized byte array.\n * @param out - Output buffer to validate.\n * @param instance - Hash-like instance providing `outputLen`.\n * This is the relaxed `digestInto()`-style contract: output must be at least `outputLen`,\n * unlike one-shot cipher helpers elsewhere in the repo that often require exact lengths.\n * @throws On wrong argument types. {@link TypeError}\n * @throws On wrong output buffer lengths. {@link RangeError}\n * @example\n * Verifies that a caller-provided output buffer is large enough.\n *\n * ```ts\n * aoutput(new Uint8Array(16), { outputLen: 16 });\n * ```\n */\nexport function aoutput(out, instance) {\n abytes(out, undefined, 'output');\n // `outputLen` is a library-owned readonly number; the negated comparison keeps failing fast\n // when it is missing/NaN (comparisons with undefined/NaN are false) without an anumber() call.\n const min = instance.outputLen;\n if (!(out.length >= min)) {\n throw new RangeError('\"output\" expected length >= ' + min);\n }\n}\n/**\n * Asserts output is a sufficiently-sized, 4-byte-aligned byte array.\n * {@link aoutput} plus an {@link isAligned32} check, for `digestInto()` paths\n * that write through zero-allocation `u32` word views.\n * @param out - Output buffer to validate.\n * @param instance - Hash-like instance providing `outputLen`.\n * @throws On wrong argument types. {@link TypeError}\n * @throws On wrong output buffer lengths. {@link RangeError}\n * @throws On wrong output buffer alignment. {@link Error}\n * @example\n * Verifies that a caller-provided output buffer is large enough and aligned.\n *\n * ```ts\n * aoutput32(new Uint8Array(16), { outputLen: 16 });\n * ```\n */\nexport function aoutput32(out, instance) {\n aoutput(out, instance);\n if (!isAligned32(out))\n throw new Error('invalid output, must be aligned');\n}\n/**\n * Casts a typed-array view to Uint8Array.\n * @param arr - Typed-array view to reinterpret.\n * @returns Uint8Array view over the same bytes.\n * @example\n * Views 32-bit words as raw bytes without copying.\n *\n * ```ts\n * u8(new Uint32Array([1]));\n * ```\n */\nexport function u8(arr) {\n return new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\n}\n/**\n * Casts a typed-array view to Uint32Array.\n * @param arr - Typed-array view to reinterpret.\n * @returns Uint32Array view over the same bytes. Callers are expected to provide a\n * 4-byte-aligned offset; trailing `1..3` bytes are silently dropped.\n * @example\n * Views a byte buffer as 32-bit words for block processing.\n *\n * ```ts\n * u32(new Uint8Array(4));\n * ```\n */\nexport function u32(arr) {\n return new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\n}\n/**\n * Zeroizes typed arrays in place.\n * Warning: JS provides no guarantees.\n * @param arrays - Arrays to wipe.\n * @example\n * Wipes a temporary key buffer after use.\n *\n * ```ts\n * const bytes = new Uint8Array([1]);\n * clean(bytes);\n * ```\n */\nexport function clean(...arrays) {\n for (let i = 0; i < arrays.length; i++) {\n arrays[i].fill(0);\n }\n}\n/**\n * Creates a DataView for byte-level manipulation.\n * @param arr - Typed-array view to wrap.\n * @returns DataView over the same bytes.\n * @example\n * Creates an endian-aware view for length encoding.\n *\n * ```ts\n * createView(new Uint8Array(4));\n * ```\n */\nexport function createView(arr) {\n return new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n}\n/**\n * Whether the current platform is little-endian.\n * Most are; some IBM systems are not.\n */\nexport const isLE = /* @__PURE__ */ (() => new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44)();\n/**\n * Reverses byte order of one 32-bit word.\n * @param word - Unsigned 32-bit word to swap.\n * @returns The same word with bytes reversed.\n * @example\n * Swaps a big-endian word into little-endian byte order.\n *\n * ```ts\n * byteSwap(0x11223344);\n * ```\n */\nexport function byteSwap(word) {\n return (((word << 24) & 0xff000000) |\n ((word << 8) & 0xff0000) |\n ((word >>> 8) & 0xff00) |\n ((word >>> 24) & 0xff));\n}\n/**\n * Normalizes one 32-bit word to the little-endian representation expected by cipher cores.\n * @param n - Unsigned 32-bit word to normalize.\n * @returns Little-endian normalized word on big-endian hosts, else the input word unchanged.\n * @example\n * Normalizes a host-endian word before passing it into an ARX/AES core.\n *\n * ```ts\n * swap8IfBE(0x11223344);\n * ```\n */\nexport const swap8IfBE = isLE\n ? (n) => n\n : (n) => byteSwap(n) >>> 0;\n/**\n * Byte-swaps every word of a Uint32Array in place.\n * @param arr - Uint32Array whose words should be swapped.\n * @returns The same array after in-place byte swapping.\n * @example\n * Swaps every 32-bit word in a word-view buffer.\n *\n * ```ts\n * byteSwap32(new Uint32Array([0x11223344]));\n * ```\n */\nexport function byteSwap32(arr) {\n for (let i = 0; i < arr.length; i++) {\n arr[i] = byteSwap(arr[i]);\n }\n return arr;\n}\n/**\n * Normalizes a Uint32Array view to the little-endian representation expected by cipher cores.\n * @param u - Word view to normalize in place.\n * @returns Little-endian normalized word view.\n * @example\n * Normalizes a word-view buffer before block processing.\n *\n * ```ts\n * swap32IfBE(new Uint32Array([0x11223344]));\n * ```\n */\nexport const swap32IfBE = isLE\n ? (u) => u\n : byteSwap32;\n// Built-in hex conversion:\n// {@link https://caniuse.com/mdn-javascript_builtins_uint8array_fromhex | caniuse entry}\nconst hasHexBuiltin = /* @__PURE__ */ (() => \n// @ts-ignore\ntypeof Uint8Array.from([]).toHex === 'function' && typeof Uint8Array.fromHex === 'function')();\n// Array where index 0xf0 (240) is mapped to string 'f0'\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, '0'));\n/**\n * Convert byte array to hex string. Uses built-in function, when available.\n * @param bytes - Bytes to encode.\n * @returns Lowercase hexadecimal string.\n * @throws On wrong argument types. {@link TypeError}\n * @example\n * Formats ciphertext bytes for logs or test vectors.\n *\n * ```ts\n * bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])); // 'cafe0123'\n * ```\n */\nexport function bytesToHex(bytes) {\n abytes(bytes);\n // @ts-ignore\n if (hasHexBuiltin)\n return bytes.toHex();\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n hex += hexes[bytes[i]];\n }\n return hex;\n}\n// Strict ASCII nibble parser: non-ASCII hex lookalikes are rejected as undefined.\n// ASCII codes: '0'..'9' = 48..57, 'A'..'F' = 65..70, 'a'..'f' = 97..102.\n// prettier-ignore\nfunction asciiToBase16(ch) {\n return ch >= 48 && ch <= 57 ? ch - 48 // '2' => 50-48\n : ch >= 65 && ch <= 70 ? ch - (65 - 10) // 'B' => 66-(65-10)\n : ch >= 97 && ch <= 102 ? ch - (97 - 10) // 'b' => 98-(97-10)\n : undefined;\n}\n/**\n * Convert hex string to byte array. Uses built-in function, when available.\n * @param hex - hexadecimal string to decode\n * @returns Decoded bytes.\n * @throws On wrong argument types. {@link TypeError}\n * @throws On wrong argument ranges or values. {@link RangeError}\n * @example\n * Decode lowercase hexadecimal into bytes.\n * ```ts\n * hexToBytes('cafe0123'); // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n * ```\n */\nexport function hexToBytes(hex) {\n if (typeof hex !== 'string')\n throw new TypeError('hex string expected, got ' + typeof hex);\n if (hasHexBuiltin) {\n try {\n return Uint8Array.fromHex(hex);\n }\n catch (error) {\n if (error instanceof SyntaxError)\n throw new RangeError(error.message);\n throw error;\n }\n }\n const hl = hex.length;\n const al = hl / 2;\n if (hl % 2)\n throw new RangeError('hex string expected, got unpadded hex of length ' + hl);\n const array = new Uint8Array(al);\n for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) {\n const n1 = asciiToBase16(hex.charCodeAt(hi)); // parse first char, multiply it by 16\n const n2 = asciiToBase16(hex.charCodeAt(hi + 1)); // parse second char\n if (n1 === undefined || n2 === undefined) {\n const char = hex[hi] + hex[hi + 1];\n throw new RangeError('hex string expected, got non-hex character \"' + char + '\" at index ' + hi);\n }\n array[ai] = n1 * 16 + n2; // example: 'A9' => 10*16 + 9\n }\n return array;\n}\nconst _0n = /* @__PURE__ */ BigInt(0);\n// Used in ff1, via bytesToNumberBE\n/**\n * Converts a big-endian hex string into bigint.\n * @param hex - Hexadecimal string without `0x`.\n * @returns Parsed bigint value. The empty string is treated as `0n`.\n * @throws On wrong argument types. {@link TypeError}\n * @example\n * Parses a big-endian field element or counter from hex.\n *\n * ```ts\n * hexToNumber('ff');\n * ```\n */\nexport function hexToNumber(hex) {\n if (typeof hex !== 'string')\n throw new TypeError('hex string expected, got ' + typeof hex);\n // Numeric parser, not byte-hex decoder: odd-length forms like 'f' are valid,\n // and malformed syntax follows BigInt's native error behavior.\n return hex === '' ? _0n : BigInt('0x' + hex); // Big Endian\n}\n// Used in ff1\n// BE: Big Endian, LE: Little Endian\n/**\n * Converts big-endian bytes into bigint.\n * @param bytes - Big-endian bytes.\n * @returns Parsed bigint value. Empty input is treated as `0n`.\n * @throws On invalid byte input passed to the internal hex conversion. {@link TypeError}\n * @example\n * Reads a big-endian integer from serialized bytes.\n *\n * ```ts\n * bytesToNumberBE(new Uint8Array([1, 0]));\n * ```\n */\nexport function bytesToNumberBE(bytes) {\n return hexToNumber(bytesToHex(bytes));\n}\n/**\n * Validates that a value is a non-negative bigint or safe integer.\n * @param n - Value to validate.\n * @returns The same validated value.\n * @throws On wrong argument ranges or values. {@link RangeError}\n */\nfunction abignumber(n) {\n if (typeof n === 'bigint') {\n if (!(_0n <= n))\n throw new RangeError('positive bigint expected, got ' + n);\n }\n else\n anumber(n);\n return n;\n}\n// Used in ff1\n/**\n * Converts a number into big-endian bytes of fixed length.\n * @param n - Number to encode.\n * @param len - Output length in bytes. Must be greater than zero.\n * @returns Big-endian bytes padded to `len`.\n * Negative values, `len = 0`, and values that do not fit are rejected before\n * downstream hex parsing.\n * @throws On wrong argument ranges or values. {@link RangeError}\n * @throws If a documented runtime validation or state check fails. {@link Error}\n * @example\n * Encodes a counter as fixed-width big-endian bytes.\n *\n * ```ts\n * numberToBytesBE(1, 2);\n * ```\n */\nexport function numberToBytesBE(n, len) {\n anumber(len);\n if (len === 0)\n throw new Error('zero output length is invalid');\n n = abignumber(n);\n const expectedLen = len * 2;\n const hex = n.toString(16);\n // Detect overflow before hex parsing so oversized values don't leak the shared odd-hex error.\n if (hex.length > expectedLen)\n throw new RangeError('number is too large');\n return hexToBytes(hex.padStart(expectedLen, '0'));\n}\n/**\n * Converts string to bytes using UTF8 encoding.\n * @param str - String to encode.\n * @returns UTF-8 bytes in a detached fresh Uint8Array copy.\n * @throws On wrong argument types. {@link TypeError}\n * @example\n * Encodes application text before encryption or MACing.\n *\n * ```ts\n * utf8ToBytes('abc'); // new Uint8Array([97, 98, 99])\n * ```\n */\nexport function utf8ToBytes(str) {\n if (typeof str !== 'string')\n throw new TypeError('string expected');\n return new Uint8Array(new TextEncoder().encode(str)); // {@link https://bugzil.la/1681809 | Firefox bug 1681809}\n}\n/**\n * Converts bytes to string using UTF8 encoding.\n * @param bytes - UTF-8 bytes.\n * @returns Decoded string. Input validation is delegated to `TextDecoder`, and malformed\n * UTF-8 is replacement-decoded instead of rejected.\n * @example\n * Decodes UTF-8 plaintext back into a string.\n *\n * ```ts\n * bytesToUtf8(new Uint8Array([97, 98, 99])); // 'abc'\n * ```\n */\nexport function bytesToUtf8(bytes) {\n return new TextDecoder().decode(bytes);\n}\n/**\n * Checks if two U8A use same underlying buffer and overlaps.\n * This is invalid and can corrupt data.\n * @param a - First byte view.\n * @param b - Second byte view.\n * @returns `true` when the views overlap in memory.\n * @example\n * Detects whether two slices alias the same backing buffer.\n *\n * ```ts\n * overlapBytes(new Uint8Array(4), new Uint8Array(4));\n * ```\n */\nexport function overlapBytes(a, b) {\n // Zero-length views cannot overwrite anything, even if their offset sits inside another range.\n if (!a.byteLength || !b.byteLength)\n return false;\n return (a.buffer === b.buffer && // best we can do, may fail with an obscure Proxy\n a.byteOffset < b.byteOffset + b.byteLength && // a starts before b end\n b.byteOffset < a.byteOffset + a.byteLength // b starts before a end\n );\n}\n/**\n * If input and output overlap and input starts before output, we will overwrite end of input before\n * we start processing it, so this is not supported by forward-processing ciphers.\n * @param input - Input bytes.\n * @param output - Output bytes.\n * @throws If the output view would overwrite unread input bytes. {@link Error}\n * @example\n * Rejects an in-place layout that would overwrite unread input bytes.\n *\n * ```ts\n * const buffer = new Uint8Array(8);\n * complexOverlapBytes(buffer.subarray(0, 4), buffer.subarray(2, 6));\n * ```\n */\nexport function complexOverlapBytes(input, output) {\n // This is very cursed. It works somehow, but I'm completely unsure,\n // reasoning about overlapping aligned windows is very hard.\n if (overlapBytes(input, output) && input.byteOffset < output.byteOffset)\n throw new Error('complex overlap of input and output is not supported');\n}\n/**\n * Copies several Uint8Arrays into one.\n * @param arrays - Byte arrays to concatenate.\n * @returns Combined byte array.\n * @throws On wrong argument types inside the byte-array list. {@link TypeError}\n * @example\n * Builds a `nonce || ciphertext` style buffer.\n *\n * ```ts\n * concatBytes(new Uint8Array([1]), new Uint8Array([2]));\n * ```\n */\nexport function concatBytes(...arrays) {\n let sum = 0;\n for (let i = 0; i < arrays.length; i++) {\n const a = arrays[i];\n abytes(a);\n sum += a.length;\n }\n const res = new Uint8Array(sum);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const a = arrays[i];\n res.set(a, pad);\n pad += a.length;\n }\n return res;\n}\n/**\n * Merges user options into defaults.\n * @param defaults - Default option values.\n * @param opts - User-provided overrides.\n * @returns Combined options object.\n * `defaults` is a library-owned mutable object; user-provided `opts` only need to be\n * object-shaped, since \"plain object\" checks reject valid proxy/cross-realm containers.\n * The merge mutates `defaults` in place and returns the same object, so direct callers\n * should pass a fresh defaults object unless they intentionally want shared state updated.\n * @throws If options are missing or not an object. {@link Error}\n * @example\n * Applies user overrides to the default cipher options.\n *\n * ```ts\n * checkOpts({ rounds: 20 }, { rounds: 8 });\n * ```\n */\nexport function checkOpts(defaults, opts) {\n aobject(defaults, 'defaults');\n aobject(opts, 'opts');\n // Mutates defaults by design. __proto__ follows Object.assign semantics here and can only\n // affect this local option object; callers already control this low-level options surface.\n const merged = Object.assign(defaults, opts);\n return merged;\n}\n/**\n * Compares two byte arrays in kinda constant time once lengths already match.\n * @param a - First byte array.\n * @param b - Second byte array.\n * @returns `true` when the arrays contain the same bytes. Different lengths still return early.\n * @example\n * Compares an expected authentication tag with the received one.\n *\n * ```ts\n * equalBytes(new Uint8Array([1]), new Uint8Array([1]));\n * ```\n */\nexport function equalBytes(a, b) {\n a = abytes(a);\n b = abytes(b);\n if (a.length !== b.length)\n return false;\n let diff = 0;\n for (let i = 0; i < a.length; i++)\n diff |= a[i] ^ b[i];\n return diff === 0;\n}\n/**\n * Wraps a keyed MAC constructor into a one-shot helper with `.create()`.\n * @param keyLen - Valid probe-key length used to read static metadata once.\n * The probe key is only used for `outputLen` / `blockLen`, so callers with several valid key sizes\n * can pass any representative size as long as those values stay fixed.\n * @param macCons - Keyed MAC constructor or factory.\n * @param fromMsg - Optional adapter that derives extra constructor args from the one-shot message.\n * @returns Callable MAC helper with `.create()`.\n */\nexport function wrapMacConstructor(keyLen, macCons, fromMsg) {\n const mac = macCons;\n const getArgs = (fromMsg || (() => []));\n const macC = (msg, key) => mac(key, ...getArgs(msg))\n .update(msg)\n .digest();\n const tmp = mac(new Uint8Array(keyLen), ...getArgs(new Uint8Array(0)));\n macC.outputLen = tmp.outputLen;\n macC.blockLen = tmp.blockLen;\n macC.create = (key, ...args) => mac(key, ...args);\n return macC;\n}\n/**\n * Wraps a cipher: validates args, ensures encrypt() can only be called once.\n * Used internally by the exported cipher constructors.\n * Output-buffer support is inferred from the wrapped `encrypt` / `decrypt`\n * arity (`fn.length === 2`), so wrapped output-capable methods must use a normal\n * second parameter, not a default/rest parameter. AAD support is explicit in\n * `params.withAAD`; optional AAD starts after the nonce slot when one is present.\n * @__NO_SIDE_EFFECTS__\n * @param params - Static cipher metadata. See {@link CipherParams}.\n * @param constructor - Cipher constructor.\n * @returns Wrapped constructor with validation.\n */\nexport const wrapCipher = (params, constructor) => {\n function wrappedCipher(key, ...args) {\n // Validate key\n abytes(key, undefined, 'key');\n // Validate nonce if nonceLength is present\n if (params.nonceLength !== undefined) {\n const nonce = args[0];\n abytes(nonce, params.varSizeNonce ? undefined : params.nonceLength, 'nonce');\n }\n // Keep tag length available for decrypt-size checks after constructor validation.\n const tagl = params.tagLength;\n const aadStart = params.nonceLength !== undefined ? 1 : 0;\n // No-AAD constructors otherwise silently ignore byte args meant as AAD.\n if (!params.withAAD) {\n for (let i = aadStart; i < args.length; i++)\n if (isBytes(args[i]))\n throw new Error('AAD not supported');\n }\n // Validate the first AAD slot early; rest-arg AAD constructors validate the tail themselves.\n if (params.withAAD && args[aadStart] !== undefined)\n abytes(args[aadStart], undefined, 'AAD');\n const cipher = constructor(key, ...args);\n const checkOutput = (fnLength, output) => {\n if (output !== undefined) {\n if (fnLength !== 2)\n throw new Error('cipher output not supported');\n abytes(output, undefined, 'output');\n }\n };\n // Create wrapped cipher with validation and single-use encryption\n let called = false;\n const wrCipher = {\n encrypt(data, output) {\n if (called)\n throw new Error('cannot encrypt() twice with same key + nonce');\n // Any encrypt attempt consumes the instance, even if validation rejects below.\n called = true;\n abytes(data, undefined, 'data');\n checkOutput(cipher.encrypt.length, output);\n return cipher.encrypt(data, output);\n },\n decrypt(data, output) {\n abytes(data, undefined, 'data');\n if (tagl && data.length < tagl)\n throw new Error('\"ciphertext\" expected length >= tagLength=' + tagl);\n checkOutput(cipher.decrypt.length, output);\n return cipher.decrypt(data, output);\n },\n };\n return wrCipher;\n }\n Object.assign(wrappedCipher, params);\n return wrappedCipher;\n};\n/**\n * By default, returns u8a of length.\n * When out is available, it checks it for validity and uses it.\n * @param expectedLength - Required output length.\n * @param out - Optional destination buffer.\n * @param onlyAligned - Whether `out` must be 4-byte aligned.\n * @returns Output buffer ready for writing.\n * @throws On wrong argument types. {@link TypeError}\n * @throws If the provided output buffer has the wrong size. {@link RangeError}\n * @throws If the provided output buffer has the wrong alignment. {@link Error}\n * @example\n * Reuses a caller-provided output buffer when lengths match.\n *\n * ```ts\n * getOutput(16, new Uint8Array(16));\n * ```\n */\nexport function getOutput(expectedLength, out, onlyAligned = true) {\n if (out === undefined)\n return new Uint8Array(expectedLength);\n // Keep Buffer/cross-realm Uint8Array support here instead of trusting a shape-compatible object.\n abytes(out, expectedLength, 'output');\n if (onlyAligned && !isAligned32(out))\n throw new Error('invalid output, must be aligned');\n return out;\n}\n/**\n * Encodes data and AAD lengths into a 16-byte buffer.\n * @param dataLength - Data length. Units are caller-defined: GCM passes bit\n * lengths, ChaCha20-Poly1305 passes byte lengths — the helper writes the raw values.\n * @param aadLength - AAD length, same unit convention as `dataLength`.\n * The serialized block is still `aadLength || dataLength`, matching GCM/Poly1305\n * conventions even though the helper parameter order is `(dataLength, aadLength)`.\n * @param isLE - Whether to encode lengths as little-endian.\n * @returns 16-byte length block.\n * @throws On wrong argument types passed to the endian validator. {@link TypeError}\n * @throws On wrong argument ranges or values. {@link RangeError}\n * @example\n * Builds the length block appended by GCM and Poly1305.\n *\n * ```ts\n * u64Lengths(16, 8, true);\n * ```\n */\nexport function u64Lengths(dataLength, aadLength, isLE) {\n // Reject coercible non-number lengths like '10' and true before BigInt(...) accepts them.\n anumber(dataLength);\n anumber(aadLength);\n abool(isLE);\n const num = new Uint8Array(16);\n const view = createView(num);\n view.setBigUint64(0, BigInt(aadLength), isLE);\n view.setBigUint64(8, BigInt(dataLength), isLE);\n return num;\n}\n/**\n * Checks whether a byte array is aligned to a 4-byte offset.\n * @param bytes - Byte array to inspect.\n * @returns `true` when the view is 4-byte aligned.\n * @example\n * Checks whether a buffer can be safely viewed as Uint32Array.\n *\n * ```ts\n * isAligned32(new Uint8Array(4));\n * ```\n */\nexport function isAligned32(bytes) {\n return bytes.byteOffset % 4 === 0;\n}\n/**\n * Copies bytes into a new Uint8Array.\n * @param bytes - Bytes to copy.\n * @returns Copied byte array.\n * @throws On wrong argument types. {@link TypeError}\n * @example\n * Copies input into an aligned Uint8Array before block processing.\n *\n * ```ts\n * copyBytes(new Uint8Array([1, 2]));\n * ```\n */\nexport function copyBytes(bytes) {\n // `Uint8Array.from(...)` would also accept arrays / other typed arrays. Keep this helper strict\n // because callers use it at byte-validation boundaries before mutating the detached copy.\n return Uint8Array.from(abytes(bytes));\n}\n/**\n * Cryptographically secure PRNG backed by `crypto.getRandomValues`.\n * @param bytesLength - number of random bytes to generate\n * @returns Random bytes.\n * The platform `getRandomValues()` implementation still defines any\n * single-call length cap, and this helper rejects oversize requests\n * with a stable library `RangeError` instead of host-specific errors.\n * @throws On wrong argument types. {@link TypeError}\n * @throws On wrong argument ranges or values. {@link RangeError}\n * @throws If the current runtime does not provide `crypto.getRandomValues`. {@link Error}\n * @example\n * Generate a fresh random key or nonce.\n * ```ts\n * const key = randomBytes(16);\n * ```\n */\nexport function randomBytes(bytesLength = 32) {\n // Match the repo's other length-taking helpers instead of relying on Uint8Array coercion.\n anumber(bytesLength, 'bytesLength');\n const cr = typeof globalThis === 'object' ? globalThis.crypto : null;\n if (typeof cr?.getRandomValues !== 'function')\n throw new Error('crypto.getRandomValues must be defined');\n // Web Cryptography API Level 2 §10.1.1:\n // if `byteLength > 65536`, throw `QuotaExceededError`.\n // Keep the guard explicit so callers can see the quota in code\n // instead of discovering it by reading the spec or host errors.\n // This wrapper surfaces the same quota as a stable library RangeError.\n if (bytesLength > 65536)\n throw new RangeError(`\"bytesLength\" expected <= 65536, got ${bytesLength}`);\n return cr.getRandomValues(new Uint8Array(bytesLength));\n}\n/**\n * Uses CSPRNG for nonce, nonce injected in ciphertext.\n * For `encrypt`, a `nonceBytes`-length buffer is fetched from CSPRNG and\n * prepended to encrypted ciphertext. For `decrypt`, first `nonceBytes` of ciphertext\n * are treated as nonce. The wrapper always allocates a fresh `nonce || ciphertext`\n * buffer on encrypt and intentionally does not support caller-provided destination buffers.\n * Too-short decrypt inputs are split into short/empty nonce views and then delegated\n * to the wrapped cipher instead of being rejected here first.\n *\n * NOTE: Under the same key, using random nonces (e.g. `managedNonce`) with AES-GCM and ChaCha\n * should be limited to `2**23` (8M) messages to get a collision chance of\n * `2**-50`. Stretching to `2**32` (4B) messages would raise that chance to\n * `2**-33`, still negligible but creeping up.\n * @param fn - Cipher constructor that expects a nonce.\n * @param randomBytes_ - Random-byte source used for nonce generation.\n * @returns Cipher constructor that prepends the nonce to ciphertext.\n * @throws On wrong argument types. {@link TypeError}\n * @throws On invalid nonce lengths observed at wrapper construction or use. {@link RangeError}\n * @example\n * Prepends a fresh random nonce to every ciphertext.\n *\n * ```ts\n * import { gcm } from '@noble/ciphers/aes.js';\n * import { managedNonce, randomBytes } from '@noble/ciphers/utils.js';\n * const wrapped = managedNonce(gcm);\n * const key = randomBytes(16);\n * const ciphertext = wrapped(key).encrypt(new Uint8Array([1, 2, 3]));\n * wrapped(key).decrypt(ciphertext);\n * ```\n */\nexport function managedNonce(fn, randomBytes_ = randomBytes) {\n if (typeof fn !== 'function')\n throw new TypeError('\"fn\" expected cipher constructor, got type=' + typeof fn);\n if (typeof randomBytes_ !== 'function')\n throw new TypeError('\"randomBytes_\" expected function, got type=' + typeof randomBytes_);\n const { nonceLength } = fn;\n anumber(nonceLength, 'fn.nonceLength');\n const addNonce = (nonce, ciphertext, plaintext) => {\n const out = concatBytes(nonce, ciphertext);\n // Wrapped ciphers may alias caller plaintext on encrypt(); never zero\n // caller-owned buffers here.\n if (!overlapBytes(plaintext, ciphertext))\n ciphertext.fill(0);\n return out;\n };\n // NOTE: we cannot support DST here, it would be mistake:\n // - we don't know how much dst length cipher requires\n // - nonce may unalign dst and break everything\n // - we create new u8a anyway (concatBytes)\n // - previously we passed all args to cipher, but that was mistake!\n const res = ((key, ...args) => ({\n encrypt(plaintext) {\n abytes(plaintext, undefined, 'data');\n const nonce = randomBytes_(nonceLength);\n const encrypted = fn(key, nonce, ...args).encrypt(plaintext);\n // @ts-ignore\n if (encrypted instanceof Promise)\n return encrypted.then((ct) => addNonce(nonce, ct, plaintext));\n return addNonce(nonce, encrypted, plaintext);\n },\n decrypt(ciphertext) {\n abytes(ciphertext, undefined, 'data');\n const nonce = ciphertext.subarray(0, nonceLength);\n const decrypted = ciphertext.subarray(nonceLength);\n return fn(key, nonce, ...args).decrypt(decrypted);\n },\n }));\n // Auto-nonce wrappers still preserve the wrapped payload geometry.\n if ('blockSize' in fn)\n res.blockSize = fn.blockSize;\n if ('tagLength' in fn)\n res.tagLength = fn.tagLength;\n if ('withAAD' in fn)\n res.withAAD = fn.withAAD;\n return res;\n}\n","/**\n * Basic utils for ARX (add-rotate-xor) salsa and chacha ciphers.\n\nRFC8439 requires multi-step cipher stream, where\nauthKey starts with counter: 0, actual msg with counter: 1.\n\nFor this, we need a way to re-use nonce / counter:\n\n const counter = new Uint8Array(4);\n chacha(..., counter, ...); // counter is now 1\n chacha(..., counter, ...); // counter is now 2\n\nThis is complicated:\n\n- 32-bit counters are enough, no need for 64-bit: max ArrayBuffer size in JS is 4GB\n- Original papers don't allow mutating counters\n- Counter overflow is undefined [^1]\n- Idea A: allow providing (nonce | counter) instead of just nonce, re-use it\n- Caveat: Cannot be re-used through all cases:\n- * chacha has (counter | nonce)\n- * xchacha has (nonce16 | counter | nonce16)\n- Idea B: separate nonce / counter and provide separate API for counter re-use\n- Caveat: there are different counter sizes depending on an algorithm.\n- salsa & chacha also differ in structures of key & sigma:\n salsa20: s[0] | k(4) | s[1] | nonce(2) | cnt(2) | s[2] | k(4) | s[3]\n chacha: s(4) | k(8) | cnt(1) | nonce(3)\n chacha20orig: s(4) | k(8) | cnt(2) | nonce(2)\n- Idea C: helper method such as `setSalsaState(key, nonce, sigma, data)`\n- Caveat: we can't re-use counter array\n\nxchacha uses the subkey and remaining 8 byte nonce with ChaCha20 as normal\n(prefixed by 4 NUL bytes, since RFC8439 specifies a 12-byte nonce).\nCounter overflow is undefined; see {@link https://mailarchive.ietf.org/arch/msg/cfrg/gsOnTJzcbgG6OqD8Sc0GO5aR_tU/ | the CFRG thread}.\nCurrent noble policy is strict non-wrap for the shared 32-bit counter path:\nexported ARX ciphers reject initial `0xffffffff` and stop before any implicit\nwrap back to zero.\nSee {@link https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-xchacha#appendix-A.2 | the XChaCha appendix} for the extended-nonce construction.\n\n * @module\n */\nimport { abool, abytes, anumber, checkOpts, clean, complexOverlapBytes, copyBytes, getOutput, isAligned32, isLE, randomBytes, swap32IfBE, u32, } from \"./utils.js\";\n// Replaces `TextEncoder` for ASCII literals, which is enough for sigma constants.\n// Non-ASCII input would not match UTF-8 `TextEncoder` output.\nconst encodeStr = (str) => Uint8Array.from(str.split(''), (c) => c.charCodeAt(0));\n// Raw `createCipher(...)` exports consume these native-endian `u32(...)` views directly.\n// Public `wrapCipher(...)` APIs reject non-little-endian platforms before reaching this path.\n// RFC 8439 §2.3 / RFC 7539 §2.3 only define the 256-bit-key constants; this 16-byte sigma is\n// kept for legacy allowShortKeys Salsa/ChaCha variants.\nconst sigma16_32 = /* @__PURE__ */ (() => swap32IfBE(u32(encodeStr('expand 16-byte k'))))();\n// RFC 8439 §2.3 / RFC 7539 §2.3 define words 0-3 as\n// `0x61707865 0x3320646e 0x79622d32 0x6b206574`, i.e. `expand 32-byte k`.\nconst sigma32_32 = /* @__PURE__ */ (() => swap32IfBE(u32(encodeStr('expand 32-byte k'))))();\n/**\n * Rotates a 32-bit word left.\n * @param a - Input word.\n * @param b - Rotation count in bits.\n * @returns Rotated 32-bit word.\n * @example\n * Moves the top byte of `0x12345678` into the low byte position.\n * ```ts\n * rotl(0x12345678, 8);\n * ```\n */\nexport function rotl(a, b) {\n return (a << b) | (a >>> (32 - b));\n}\n// Salsa and Chacha block length is always 512-bit\nconst BLOCK_LEN = 64;\n// RFC 8439 §2.2 / RFC 7539 §2.2: the ChaCha state has 16 32-bit words.\nconst BLOCK_LEN32 = 16;\n// Counter policy for the shared public `counter` argument:\n// - RFC/IETF ChaCha20 uses a 32-bit counter.\n// - OpenSSL/Node `chacha20` instead treat the full 16-byte IV as a 128-bit\n// counter state and carry into the next word.\n// - Raw `chacha20orig`, `salsa20`, `xsalsa20`, and `xchacha20` use 64-bit counters in libsodium\n// and libtomcrypt, while some libs (for example libtomcrypt's RFC/IETF path) reject the max\n// boundary instead of carrying.\n// - AEAD wrappers diverge too: libsodium `xchacha20poly1305` uses the IETF payload counter from\n// block 1, while `secretstream_xchacha20poly1305` is a different protocol with rekey/reset.\n// Noble intentionally throws instead of silently picking one wrap model for users. In the default\n// path, even a 32-bit boundary would take 2^32 blocks * 64 bytes = 256 GiB, which is practically\n// unreachable for normal JS callers; advanced users who pass `counter` explicitly can implement\n// whatever wider carry / wrap policy they need on top.\nconst MAX_COUNTER = /* @__PURE__ */ (() => 2 ** 32 - 1)();\nconst U32_EMPTY = /* @__PURE__ */ Uint32Array.of();\nfunction runCipher(core, sigma, key, nonce, data, output, counter, rounds) {\n const len = data.length;\n const block = new Uint8Array(BLOCK_LEN);\n const b32 = u32(block);\n // Make sure that buffers aligned to 4 bytes\n const isAligned = isLE && isAligned32(data) && isAligned32(output);\n const d32 = isAligned ? u32(data) : U32_EMPTY;\n const o32 = isAligned ? u32(output) : U32_EMPTY;\n // RFC 8439 §2.4.1 / RFC 7539 §2.4.1 allow XORing one keystream block at a time and\n // truncating the final partial block instead of materializing the whole keystream.\n if (!isLE) {\n for (let pos = 0; pos < len; counter++) {\n core(sigma, key, nonce, b32, counter, rounds);\n // RFC 8439 §2.4 / RFC 7539 §2.4 serialize keystream words in little-endian order.\n swap32IfBE(b32);\n if (counter >= MAX_COUNTER)\n throw new Error('arx: counter overflow');\n const take = Math.min(BLOCK_LEN, len - pos);\n for (let j = 0, posj; j < take; j++) {\n posj = pos + j;\n output[posj] = data[posj] ^ block[j];\n }\n pos += take;\n }\n return;\n }\n for (let pos = 0; pos < len; counter++) {\n core(sigma, key, nonce, b32, counter, rounds);\n // See MAX_COUNTER policy note above: never silently wrap the shared public counter.\n if (counter >= MAX_COUNTER)\n throw new Error('arx: counter overflow');\n const take = Math.min(BLOCK_LEN, len - pos);\n // aligned to 4 bytes\n if (isAligned && take === BLOCK_LEN) {\n const pos32 = pos / 4;\n if (pos % 4 !== 0)\n throw new Error('arx: invalid block position');\n for (let j = 0, posj; j < BLOCK_LEN32; j++) {\n posj = pos32 + j;\n o32[posj] = d32[posj] ^ b32[j];\n }\n pos += BLOCK_LEN;\n continue;\n }\n for (let j = 0, posj; j < take; j++) {\n posj = pos + j;\n output[posj] = data[posj] ^ block[j];\n }\n pos += take;\n }\n}\n/**\n * Creates an ARX stream cipher from a 32-bit core permutation.\n * Used internally to build the exported Salsa and ChaCha stream ciphers.\n * @param core - Core function that fills one keystream block.\n * @param opts - Cipher layout and nonce-extension options. See {@link CipherOpts}.\n * @returns Stream cipher function over byte arrays.\n * @throws If the core callback, key size, counter, or output sizing is invalid. {@link Error}\n */\nexport function createCipher(core, opts) {\n const { allowShortKeys, extendNonceFn, counterLength, counterRight, rounds } = checkOpts({ allowShortKeys: false, counterLength: 8, counterRight: false, rounds: 20 }, opts);\n if (typeof core !== 'function')\n throw new Error('core must be a function');\n anumber(counterLength);\n anumber(rounds);\n abool(counterRight);\n abool(allowShortKeys);\n return (key, nonce, data, output, counter = 0) => {\n abytes(key, undefined, 'key');\n abytes(nonce, undefined, 'nonce');\n abytes(data, undefined, 'data');\n const len = data.length;\n // Raw XorStream APIs return ciphertext/plaintext bytes directly, so caller-provided outputs\n // must match the logical result length exactly instead of returning an oversized workspace.\n const hasOutput = output !== undefined;\n output = getOutput(len, output, false);\n if (hasOutput)\n complexOverlapBytes(data, output);\n anumber(counter);\n // See MAX_COUNTER policy note above: reject advanced explicit-counter requests before any wrap.\n if (counter < 0 || counter >= MAX_COUNTER)\n throw new Error('arx: counter overflow');\n const toClean = [];\n // Key & sigma\n // key=16 -> sigma16, k=key|key\n // key=32 -> sigma32, k=key\n let l = key.length;\n let k;\n let sigma;\n if (l === 32) {\n // Copy caller keys too: big-endian normalization, extended-nonce subkey derivation, and\n // final clean(...) all mutate or wipe the temporary buffer in place.\n toClean.push((k = copyBytes(key)));\n sigma = sigma32_32;\n }\n else if (l === 16 && allowShortKeys) {\n k = new Uint8Array(32);\n k.set(key);\n k.set(key, 16);\n sigma = sigma16_32;\n toClean.push(k);\n }\n else {\n abytes(key, 32, 'arx key');\n throw new Error('invalid key size');\n // throw new Error(`\"arx key\" expected Uint8Array of length 32, got length=${l}`);\n }\n // Nonce\n // salsa20: 8 (8-byte counter)\n // chacha20orig: 8 (8-byte counter)\n // chacha20: 12 (4-byte counter)\n // xsalsa20: 24 (16 -> hsalsa, 8 -> old nonce)\n // xchacha20: 24 (16 -> hchacha, 8 -> old nonce)\n // Copy before taking u32(...) views on misaligned inputs, and on big-endian so later\n // swap32IfBE(...) never mutates caller nonce bytes in place.\n if (!isLE || !isAligned32(nonce))\n toClean.push((nonce = copyBytes(nonce)));\n let k32 = u32(k);\n // hsalsa & hchacha: handle extended nonce\n if (extendNonceFn) {\n if (nonce.length !== 24)\n throw new Error('arx: extended nonce must be 24 bytes');\n const n16 = nonce.subarray(0, 16);\n if (isLE)\n extendNonceFn(sigma, k32, u32(n16), k32);\n else {\n const sigmaRaw = swap32IfBE(Uint32Array.from(sigma));\n extendNonceFn(sigmaRaw, k32, u32(n16), k32);\n clean(sigmaRaw);\n swap32IfBE(k32);\n }\n nonce = nonce.subarray(16);\n }\n else if (!isLE)\n swap32IfBE(k32);\n // Handle nonce counter\n const nonceNcLen = 16 - counterLength;\n if (nonceNcLen !== nonce.length)\n throw new Error(`arx: nonce must be ${nonceNcLen} or 16 bytes`);\n // Normalize 64-bit-nonce layouts to the 12-byte core input: ChaCha/XChaCha prefix 4 zero\n // counter bytes, while Salsa/XSalsa append them after the nonce words.\n if (nonceNcLen !== 12) {\n const nc = new Uint8Array(12);\n nc.set(nonce, counterRight ? 0 : 12 - nonce.length);\n nonce = nc;\n toClean.push(nonce);\n }\n const n32 = swap32IfBE(u32(nonce));\n // Ensure temporary key/nonce copies are wiped even if the remaining\n // runtime guard in runCipher(...) throws on counter overflow.\n try {\n runCipher(core, sigma, k32, n32, data, output, counter, rounds);\n return output;\n }\n finally {\n clean(...toClean);\n }\n };\n}\n/** Internal class which wraps chacha20 or chacha8 to create CSPRNG. */\nexport class _XorStreamPRG {\n blockLen;\n keyLen;\n nonceLen;\n state;\n buf;\n key;\n nonce;\n pos;\n ctr;\n cipher;\n destroyed = false;\n constructor(cipher, blockLen, keyLen, nonceLen, seed) {\n this.cipher = cipher;\n this.blockLen = blockLen;\n this.keyLen = keyLen;\n this.nonceLen = nonceLen;\n this.state = new Uint8Array(this.keyLen + this.nonceLen);\n this.reseed(seed);\n this.ctr = 0;\n this.pos = this.blockLen;\n this.buf = new Uint8Array(this.blockLen);\n // Keep a single key||nonce backing buffer so reseed/addEntropy/clean update the live cipher\n // inputs in place through these subarray views.\n this.key = this.state.subarray(0, this.keyLen);\n this.nonce = this.state.subarray(this.keyLen);\n }\n reseed(seed) {\n abytes(seed, undefined, 'seed');\n if (!seed || seed.length === 0)\n throw new Error('entropy required');\n // Mix variable-length entropy cyclically across the whole key||nonce state, then restart the\n // keystream so buffered leftovers from the previous state are never reused.\n for (let i = 0; i < seed.length; i++)\n this.state[i % this.state.length] ^= seed[i];\n this.ctr = 0;\n this.pos = this.blockLen;\n }\n addEntropy(seed) {\n if (this.destroyed)\n throw new Error('cannot use destroyed PRG');\n // Reject empty entropy before re-keying, otherwise a throwing call would still advance state.\n abytes(seed, undefined, 'seed');\n if (seed.length === 0)\n throw new Error('entropy required');\n // Re-key from the current stream first, then mix external entropy into the fresh key||nonce\n // state through reseed() so stale buffered bytes are discarded.\n this.state.set(this.randomBytes(this.state.length));\n this.reseed(seed);\n }\n randomBytes(len) {\n if (this.destroyed)\n throw new Error('cannot use destroyed PRG');\n anumber(len);\n if (len === 0)\n return new Uint8Array(0);\n const avail = this.pos < this.blockLen ? this.blockLen - this.pos : 0;\n const blocks = Math.ceil(Math.max(0, len - avail) / this.blockLen);\n // Preflight overflow so failed reads don't partially consume keystream\n // and leave the PRG repeating blocks.\n if (blocks > 0 && this.ctr > MAX_COUNTER - blocks)\n throw new Error('arx: counter overflow');\n const out = new Uint8Array(len);\n let outPos = 0;\n // `out` starts zero-filled, and `buf.fill(0)` below does the same for leftovers: XOR-stream\n // ciphers then emit raw keystream bytes directly into those buffers.\n // Serve buffered leftovers first so split reads stay identical to one larger read.\n if (this.pos < this.blockLen) {\n const take = Math.min(len, this.blockLen - this.pos);\n out.set(this.buf.subarray(this.pos, this.pos + take), 0);\n this.pos += take;\n outPos += take;\n if (outPos === len)\n return out; // fast path\n }\n // Full blocks directly to out\n const full = Math.floor((len - outPos) / this.blockLen);\n if (full > 0) {\n const blockBytes = full * this.blockLen;\n const b = out.subarray(outPos, outPos + blockBytes);\n this.cipher(this.key, this.nonce, b, b, this.ctr);\n this.ctr += full;\n outPos += blockBytes;\n }\n // Save leftovers\n const left = len - outPos;\n if (left > 0) {\n this.buf.fill(0);\n // NOTE: cipher will handle overflow\n this.cipher(this.key, this.nonce, this.buf, this.buf, this.ctr++);\n out.set(this.buf.subarray(0, left), outPos);\n this.pos = left;\n }\n return out;\n }\n // Clone seeds the new instance from this stream, so the source PRG advances too.\n clone() {\n if (this.destroyed)\n throw new Error('cannot use destroyed PRG');\n return new _XorStreamPRG(this.cipher, this.blockLen, this.keyLen, this.nonceLen, this.randomBytes(this.state.length));\n }\n // Zeroes the current state, leftover buffer, and marks the instance destroyed.\n // The instance fails closed: any later randomBytes()/addEntropy()/clone() throws instead\n // of silently continuing from zero key||nonce state (which would yield predictable output).\n clean() {\n this.pos = 0;\n this.ctr = 0;\n this.buf.fill(0);\n this.state.fill(0);\n this.destroyed = true;\n }\n}\n/**\n * Creates a PRG constructor from a stream cipher.\n * @param cipher - Stream cipher used to fill output blocks.\n * @param blockLen - Keystream block length in bytes.\n * @param keyLen - Internal key length in bytes.\n * @param nonceLen - Internal nonce length in bytes.\n * @returns PRG factory for seeded concrete `_XorStreamPRG` instances.\n * @example\n * Builds a PRG from XChaCha20 and reads bytes from a randomly seeded instance.\n * ```ts\n * import { xchacha20 } from '@noble/ciphers/chacha.js';\n * import { createPRG } from '@noble/ciphers/_arx.js';\n * import { randomBytes } from '@noble/ciphers/utils.js';\n * const seed = randomBytes(32);\n * const init = createPRG(xchacha20, 64, 32, 24);\n * const prg = init(seed);\n * prg.randomBytes(8);\n * ```\n */\nexport const createPRG = (cipher, blockLen, keyLen, nonceLen) => {\n return ((seed = randomBytes(32)) => new _XorStreamPRG(cipher, blockLen, keyLen, nonceLen, seed));\n};\n","/**\n * Poly1305 ({@link https://cr.yp.to/mac/poly1305-20050329.pdf | PDF},\n * {@link https://en.wikipedia.org/wiki/Poly1305 | wiki})\n * is a fast and parallel secret-key message-authentication code suitable for\n * a wide variety of applications. It was standardized in\n * {@link https://www.rfc-editor.org/rfc/rfc8439 | RFC 8439} and is now used in TLS 1.3.\n *\n * Polynomial MACs are not perfect for every situation:\n * they lack Random Key Robustness: the MAC can be forged, and can't be used in PAKE schemes.\n * See {@link https://keymaterial.net/2020/09/07/invisible-salamanders-in-aes-gcm-siv/ | the invisible salamanders attack writeup}.\n * To combat invisible salamanders, `hash(key)` can be included in ciphertext,\n * however, this would violate ciphertext indistinguishability:\n * an attacker would know which key was used - so `HKDF(key, i)`\n * could be used instead.\n *\n * Check out the {@link https://cr.yp.to/mac.html | original website}.\n * Based on public-domain {@link https://github.com/floodyberry/poly1305-donna | poly1305-donna}.\n * @module\n */\n// prettier-ignore\nimport { abytes, aexists, aoutput, clean, copyBytes, wrapMacConstructor } from \"./utils.js\";\n// A simple-loop reference version (`poly1305_small`) lives in\n// `test/misc/micro-ciphers.ts`, provided for auditability.\n// Little-endian 2-byte load used by the Poly1305 limb decomposition.\nfunction u8to16(a, i) {\n return (a[i++] & 0xff) | ((a[i++] & 0xff) << 8);\n}\n/**\n * Incremental Poly1305 MAC state.\n * Prefer `poly1305()` for one-shot use.\n * @param key - 32-byte Poly1305 one-time key.\n * @example\n * Feeds one chunk into an incremental Poly1305 state with a fresh one-time key.\n *\n * ```ts\n * import { Poly1305 } from '@noble/ciphers/_poly1305.js';\n * import { randomBytes } from '@noble/ciphers/utils.js';\n * const key = randomBytes(32);\n * const mac = new Poly1305(key);\n * mac.update(new Uint8Array([1, 2, 3]));\n * mac.digest();\n * ```\n */\nexport class Poly1305 {\n blockLen = 16;\n outputLen = 16;\n buffer = new Uint8Array(16);\n r = new Uint16Array(10); // Allocating 1 array with .subarray() here is slower than 3\n h = new Uint16Array(10);\n pad = new Uint16Array(8);\n pos = 0;\n finished = false;\n destroyed = false;\n // Can be speed-up using BigUint64Array, at the cost of complexity\n constructor(key) {\n key = copyBytes(abytes(key, 32, 'key'));\n const t0 = u8to16(key, 0);\n const t1 = u8to16(key, 2);\n const t2 = u8to16(key, 4);\n const t3 = u8to16(key, 6);\n const t4 = u8to16(key, 8);\n const t5 = u8to16(key, 10);\n const t6 = u8to16(key, 12);\n const t7 = u8to16(key, 14);\n // RFC 8439 §2.5.1 / RFC 7539 §2.5.1 clamp r before multiplication.\n // These masks unpack that clamped value into 13-bit limbs, while pad\n // keeps the raw s half for finalize().\n // {@link https://github.com/floodyberry/poly1305-donna/blob/e6ad6e091d30d7f4ec2d4f978be1fcfcbce72781/poly1305-donna-16.h#L47 | poly1305-donna reference}\n this.r[0] = t0 & 0x1fff;\n this.r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n this.r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03;\n this.r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n this.r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff;\n this.r[5] = (t4 >>> 1) & 0x1ffe;\n this.r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n this.r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81;\n this.r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n this.r[9] = (t7 >>> 5) & 0x007f;\n for (let i = 0; i < 8; i++)\n this.pad[i] = u8to16(key, 16 + 2 * i);\n }\n process(data, offset, isLast = false) {\n // RFC 8439 §2.5 / §2.5.1 and RFC 7539 §2.5 / §2.5.1 add an extra high\n // bit to every full 16-byte block. The final partial block gets its\n // explicit `1` byte during digestInto(), so `hibit` stays zero there.\n const hibit = isLast ? 0 : 1 << 11;\n const { h, r } = this;\n const r0 = r[0];\n const r1 = r[1];\n const r2 = r[2];\n const r3 = r[3];\n const r4 = r[4];\n const r5 = r[5];\n const r6 = r[6];\n const r7 = r[7];\n const r8 = r[8];\n const r9 = r[9];\n const t0 = u8to16(data, offset + 0);\n const t1 = u8to16(data, offset + 2);\n const t2 = u8to16(data, offset + 4);\n const t3 = u8to16(data, offset + 6);\n const t4 = u8to16(data, offset + 8);\n const t5 = u8to16(data, offset + 10);\n const t6 = u8to16(data, offset + 12);\n const t7 = u8to16(data, offset + 14);\n let h0 = h[0] + (t0 & 0x1fff);\n let h1 = h[1] + (((t0 >>> 13) | (t1 << 3)) & 0x1fff);\n let h2 = h[2] + (((t1 >>> 10) | (t2 << 6)) & 0x1fff);\n let h3 = h[3] + (((t2 >>> 7) | (t3 << 9)) & 0x1fff);\n let h4 = h[4] + (((t3 >>> 4) | (t4 << 12)) & 0x1fff);\n let h5 = h[5] + ((t4 >>> 1) & 0x1fff);\n let h6 = h[6] + (((t4 >>> 14) | (t5 << 2)) & 0x1fff);\n let h7 = h[7] + (((t5 >>> 11) | (t6 << 5)) & 0x1fff);\n let h8 = h[8] + (((t6 >>> 8) | (t7 << 8)) & 0x1fff);\n let h9 = h[9] + ((t7 >>> 5) | hibit);\n let c = 0;\n let d0 = c + h0 * r0 + h1 * (5 * r9) + h2 * (5 * r8) + h3 * (5 * r7) + h4 * (5 * r6);\n c = d0 >>> 13;\n d0 &= 0x1fff;\n d0 += h5 * (5 * r5) + h6 * (5 * r4) + h7 * (5 * r3) + h8 * (5 * r2) + h9 * (5 * r1);\n c += d0 >>> 13;\n d0 &= 0x1fff;\n let d1 = c + h0 * r1 + h1 * r0 + h2 * (5 * r9) + h3 * (5 * r8) + h4 * (5 * r7);\n c = d1 >>> 13;\n d1 &= 0x1fff;\n d1 += h5 * (5 * r6) + h6 * (5 * r5) + h7 * (5 * r4) + h8 * (5 * r3) + h9 * (5 * r2);\n c += d1 >>> 13;\n d1 &= 0x1fff;\n let d2 = c + h0 * r2 + h1 * r1 + h2 * r0 + h3 * (5 * r9) + h4 * (5 * r8);\n c = d2 >>> 13;\n d2 &= 0x1fff;\n d2 += h5 * (5 * r7) + h6 * (5 * r6) + h7 * (5 * r5) + h8 * (5 * r4) + h9 * (5 * r3);\n c += d2 >>> 13;\n d2 &= 0x1fff;\n let d3 = c + h0 * r3 + h1 * r2 + h2 * r1 + h3 * r0 + h4 * (5 * r9);\n c = d3 >>> 13;\n d3 &= 0x1fff;\n d3 += h5 * (5 * r8) + h6 * (5 * r7) + h7 * (5 * r6) + h8 * (5 * r5) + h9 * (5 * r4);\n c += d3 >>> 13;\n d3 &= 0x1fff;\n let d4 = c + h0 * r4 + h1 * r3 + h2 * r2 + h3 * r1 + h4 * r0;\n c = d4 >>> 13;\n d4 &= 0x1fff;\n d4 += h5 * (5 * r9) + h6 * (5 * r8) + h7 * (5 * r7) + h8 * (5 * r6) + h9 * (5 * r5);\n c += d4 >>> 13;\n d4 &= 0x1fff;\n let d5 = c + h0 * r5 + h1 * r4 + h2 * r3 + h3 * r2 + h4 * r1;\n c = d5 >>> 13;\n d5 &= 0x1fff;\n d5 += h5 * r0 + h6 * (5 * r9) + h7 * (5 * r8) + h8 * (5 * r7) + h9 * (5 * r6);\n c += d5 >>> 13;\n d5 &= 0x1fff;\n let d6 = c + h0 * r6 + h1 * r5 + h2 * r4 + h3 * r3 + h4 * r2;\n c = d6 >>> 13;\n d6 &= 0x1fff;\n d6 += h5 * r1 + h6 * r0 + h7 * (5 * r9) + h8 * (5 * r8) + h9 * (5 * r7);\n c += d6 >>> 13;\n d6 &= 0x1fff;\n let d7 = c + h0 * r7 + h1 * r6 + h2 * r5 + h3 * r4 + h4 * r3;\n c = d7 >>> 13;\n d7 &= 0x1fff;\n d7 += h5 * r2 + h6 * r1 + h7 * r0 + h8 * (5 * r9) + h9 * (5 * r8);\n c += d7 >>> 13;\n d7 &= 0x1fff;\n let d8 = c + h0 * r8 + h1 * r7 + h2 * r6 + h3 * r5 + h4 * r4;\n c = d8 >>> 13;\n d8 &= 0x1fff;\n d8 += h5 * r3 + h6 * r2 + h7 * r1 + h8 * r0 + h9 * (5 * r9);\n c += d8 >>> 13;\n d8 &= 0x1fff;\n let d9 = c + h0 * r9 + h1 * r8 + h2 * r7 + h3 * r6 + h4 * r5;\n c = d9 >>> 13;\n d9 &= 0x1fff;\n d9 += h5 * r4 + h6 * r3 + h7 * r2 + h8 * r1 + h9 * r0;\n c += d9 >>> 13;\n d9 &= 0x1fff;\n c = ((c << 2) + c) | 0;\n c = (c + d0) | 0;\n d0 = c & 0x1fff;\n c = c >>> 13;\n d1 += c;\n h[0] = d0;\n h[1] = d1;\n h[2] = d2;\n h[3] = d3;\n h[4] = d4;\n h[5] = d5;\n h[6] = d6;\n h[7] = d7;\n h[8] = d8;\n h[9] = d9;\n }\n finalize() {\n const { h, pad } = this;\n const g = new Uint16Array(10);\n let c = h[1] >>> 13;\n h[1] &= 0x1fff;\n for (let i = 2; i < 10; i++) {\n h[i] += c;\n c = h[i] >>> 13;\n h[i] &= 0x1fff;\n }\n h[0] += c * 5;\n c = h[0] >>> 13;\n h[0] &= 0x1fff;\n h[1] += c;\n c = h[1] >>> 13;\n h[1] &= 0x1fff;\n h[2] += c;\n // RFC 8439 §2.5 / RFC 7539 §2.5 reduce modulo 2^130-5 before repacking\n // to 16-bit words and adding the raw s half.\n g[0] = h[0] + 5;\n c = g[0] >>> 13;\n g[0] &= 0x1fff;\n for (let i = 1; i < 10; i++) {\n g[i] = h[i] + c;\n c = g[i] >>> 13;\n g[i] &= 0x1fff;\n }\n g[9] -= 1 << 13;\n let mask = (c ^ 1) - 1;\n for (let i = 0; i < 10; i++)\n g[i] &= mask;\n mask = ~mask;\n for (let i = 0; i < 10; i++)\n h[i] = (h[i] & mask) | g[i];\n h[0] = (h[0] | (h[1] << 13)) & 0xffff;\n h[1] = ((h[1] >>> 3) | (h[2] << 10)) & 0xffff;\n h[2] = ((h[2] >>> 6) | (h[3] << 7)) & 0xffff;\n h[3] = ((h[3] >>> 9) | (h[4] << 4)) & 0xffff;\n h[4] = ((h[4] >>> 12) | (h[5] << 1) | (h[6] << 14)) & 0xffff;\n h[5] = ((h[6] >>> 2) | (h[7] << 11)) & 0xffff;\n h[6] = ((h[7] >>> 5) | (h[8] << 8)) & 0xffff;\n h[7] = ((h[8] >>> 8) | (h[9] << 5)) & 0xffff;\n let f = h[0] + pad[0];\n h[0] = f & 0xffff;\n for (let i = 1; i < 8; i++) {\n f = (((h[i] + pad[i]) | 0) + (f >>> 16)) | 0;\n h[i] = f & 0xffff;\n }\n clean(g);\n }\n update(data) {\n aexists(this);\n abytes(data);\n data = copyBytes(data);\n const { buffer, blockLen } = this;\n const len = data.length;\n for (let pos = 0; pos < len;) {\n const take = Math.min(blockLen - this.pos, len - pos);\n // Fast path: we have at least one block in input\n if (take === blockLen) {\n for (; blockLen <= len - pos; pos += blockLen)\n this.process(data, pos);\n continue;\n }\n buffer.set(data.subarray(pos, pos + take), this.pos);\n this.pos += take;\n pos += take;\n if (this.pos === blockLen) {\n this.process(buffer, 0, false);\n this.pos = 0;\n }\n }\n return this;\n }\n destroy() {\n // `aexists(this)` guards update/digest paths, so destroy must mark the instance unusable too.\n this.destroyed = true;\n clean(this.h, this.r, this.buffer, this.pad);\n }\n digestInto(out) {\n aexists(this);\n aoutput(out, this);\n this.finished = true;\n const { buffer, h } = this;\n let { pos } = this;\n if (pos) {\n // RFC 8439 §2.5 / RFC 7539 §2.5: the final short block appends a\n // single `0x01` byte and zero-fills the remaining bytes before the\n // last multiplication step.\n buffer[pos++] = 1;\n for (; pos < 16; pos++)\n buffer[pos] = 0;\n this.process(buffer, 0, true);\n }\n this.finalize();\n let opos = 0;\n for (let i = 0; i < 8; i++) {\n out[opos++] = h[i] >>> 0;\n out[opos++] = h[i] >>> 8;\n }\n }\n digest() {\n const { buffer, outputLen } = this;\n this.digestInto(buffer);\n // Copy out before destroy() zeroes the internal buffer.\n const res = buffer.slice(0, outputLen);\n this.destroy();\n return res;\n }\n}\n/**\n * Poly1305 MAC from RFC 8439.\n * @param msg - Message bytes to authenticate.\n * @param key - 32-byte Poly1305 one-time key.\n * @returns 16-byte authentication tag.\n * @example\n * Authenticates one message with a one-shot Poly1305 call and a fresh key.\n *\n * ```ts\n * import { poly1305 } from '@noble/ciphers/_poly1305.js';\n * import { randomBytes } from '@noble/ciphers/utils.js';\n * const key = randomBytes(32);\n * poly1305(new Uint8Array(), key);\n * ```\n */\nexport const poly1305 = /* @__PURE__ */ wrapMacConstructor(32, (key) => new Poly1305(key));\n","/**\n * ChaCha stream cipher, released\n * in 2008. Developed after Salsa20, ChaCha aims to increase diffusion per round.\n * It was standardized in\n * {@link https://www.rfc-editor.org/rfc/rfc8439 | RFC 8439} and\n * is now used in TLS 1.3.\n *\n * {@link https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-xchacha | XChaCha20}\n * extended-nonce variant is also provided. Similar to XSalsa, it's safe to use with\n * randomly-generated nonces.\n *\n * Check out\n * {@link http://cr.yp.to/chacha/chacha-20080128.pdf | PDF},\n * {@link https://en.wikipedia.org/wiki/Salsa20 | wiki}, and\n * {@link https://cr.yp.to/chacha.html | website}.\n *\n * @module\n */\nimport { createCipher, createPRG, rotl } from \"./_arx.js\";\nimport { poly1305 } from \"./_poly1305.js\";\nimport { abytes, clean, equalBytes, getOutput, isLE, swap32IfBE, u64Lengths, wrapCipher, } from \"./utils.js\";\n/**\n * ChaCha core function. Uses an unrolled loop (chachaCore, hchacha) - 4x\n * faster than a simple loop, but larger & harder to read. A simple-loop\n * reference version lives in `test/misc/micro-ciphers.ts`;\n * `test/arx.test.ts` keeps the two aligned.\n * The specific implementation is selected in `createCipher` below.\n */\n/** RFC 8439 §2.3 block core for `state = constants | key | counter | nonce`. */\n// prettier-ignore\nfunction chachaCore(s, k, n, out, cnt, rounds = 20) {\n let y00 = s[0], y01 = s[1], y02 = s[2], y03 = s[3], // \"expa\" \"nd 3\" \"2-by\" \"te k\"\n y04 = k[0], y05 = k[1], y06 = k[2], y07 = k[3], // Key Key Key Key\n y08 = k[4], y09 = k[5], y10 = k[6], y11 = k[7], // Key Key Key Key\n y12 = cnt, y13 = n[0], y14 = n[1], y15 = n[2]; // Counter Nonce Nonce Nonce\n // Save state to temporary variables\n let x00 = y00, x01 = y01, x02 = y02, x03 = y03, x04 = y04, x05 = y05, x06 = y06, x07 = y07, x08 = y08, x09 = y09, x10 = y10, x11 = y11, x12 = y12, x13 = y13, x14 = y14, x15 = y15;\n for (let r = 0; r < rounds; r += 2) {\n x00 = (x00 + x04) | 0;\n x12 = rotl(x12 ^ x00, 16);\n x08 = (x08 + x12) | 0;\n x04 = rotl(x04 ^ x08, 12);\n x00 = (x00 + x04) | 0;\n x12 = rotl(x12 ^ x00, 8);\n x08 = (x08 + x12) | 0;\n x04 = rotl(x04 ^ x08, 7);\n x01 = (x01 + x05) | 0;\n x13 = rotl(x13 ^ x01, 16);\n x09 = (x09 + x13) | 0;\n x05 = rotl(x05 ^ x09, 12);\n x01 = (x01 + x05) | 0;\n x13 = rotl(x13 ^ x01, 8);\n x09 = (x09 + x13) | 0;\n x05 = rotl(x05 ^ x09, 7);\n x02 = (x02 + x06) | 0;\n x14 = rotl(x14 ^ x02, 16);\n x10 = (x10 + x14) | 0;\n x06 = rotl(x06 ^ x10, 12);\n x02 = (x02 + x06) | 0;\n x14 = rotl(x14 ^ x02, 8);\n x10 = (x10 + x14) | 0;\n x06 = rotl(x06 ^ x10, 7);\n x03 = (x03 + x07) | 0;\n x15 = rotl(x15 ^ x03, 16);\n x11 = (x11 + x15) | 0;\n x07 = rotl(x07 ^ x11, 12);\n x03 = (x03 + x07) | 0;\n x15 = rotl(x15 ^ x03, 8);\n x11 = (x11 + x15) | 0;\n x07 = rotl(x07 ^ x11, 7);\n x00 = (x00 + x05) | 0;\n x15 = rotl(x15 ^ x00, 16);\n x10 = (x10 + x15) | 0;\n x05 = rotl(x05 ^ x10, 12);\n x00 = (x00 + x05) | 0;\n x15 = rotl(x15 ^ x00, 8);\n x10 = (x10 + x15) | 0;\n x05 = rotl(x05 ^ x10, 7);\n x01 = (x01 + x06) | 0;\n x12 = rotl(x12 ^ x01, 16);\n x11 = (x11 + x12) | 0;\n x06 = rotl(x06 ^ x11, 12);\n x01 = (x01 + x06) | 0;\n x12 = rotl(x12 ^ x01, 8);\n x11 = (x11 + x12) | 0;\n x06 = rotl(x06 ^ x11, 7);\n x02 = (x02 + x07) | 0;\n x13 = rotl(x13 ^ x02, 16);\n x08 = (x08 + x13) | 0;\n x07 = rotl(x07 ^ x08, 12);\n x02 = (x02 + x07) | 0;\n x13 = rotl(x13 ^ x02, 8);\n x08 = (x08 + x13) | 0;\n x07 = rotl(x07 ^ x08, 7);\n x03 = (x03 + x04) | 0;\n x14 = rotl(x14 ^ x03, 16);\n x09 = (x09 + x14) | 0;\n x04 = rotl(x04 ^ x09, 12);\n x03 = (x03 + x04) | 0;\n x14 = rotl(x14 ^ x03, 8);\n x09 = (x09 + x14) | 0;\n x04 = rotl(x04 ^ x09, 7);\n }\n // RFC 8439 §2.3 / §2.3.1: add the original state words back in state order.\n let oi = 0;\n out[oi++] = (y00 + x00) | 0;\n out[oi++] = (y01 + x01) | 0;\n out[oi++] = (y02 + x02) | 0;\n out[oi++] = (y03 + x03) | 0;\n out[oi++] = (y04 + x04) | 0;\n out[oi++] = (y05 + x05) | 0;\n out[oi++] = (y06 + x06) | 0;\n out[oi++] = (y07 + x07) | 0;\n out[oi++] = (y08 + x08) | 0;\n out[oi++] = (y09 + x09) | 0;\n out[oi++] = (y10 + x10) | 0;\n out[oi++] = (y11 + x11) | 0;\n out[oi++] = (y12 + x12) | 0;\n out[oi++] = (y13 + x13) | 0;\n out[oi++] = (y14 + x14) | 0;\n out[oi++] = (y15 + x15) | 0;\n}\n/**\n * hchacha hashes key and nonce into key' and nonce' for xchacha20.\n * Algorithmically identical to `hchacha_small` from `test/misc/micro-ciphers.ts`,\n * but this exported path normalizes word order on big-endian hosts.\n * Reuses `chachaCore` and subtracts its feed-forward, keeping the hot per-block\n * path untouched.\n * @param s - Sigma constants as 32-bit words.\n * @param k - Key words.\n * @param i - Nonce-prefix words.\n * @param out - Output buffer for the derived subkey.\n * @example\n * Derives the XChaCha subkey from sigma, key, and nonce-prefix words.\n *\n * ```ts\n * const sigma = new Uint32Array(4);\n * const key = new Uint32Array(8);\n * const nonce = new Uint32Array(4);\n * const out = new Uint32Array(8);\n * hchacha(sigma, key, nonce, out);\n * ```\n */\n// prettier-ignore\nexport function hchacha(s, k, i, out) {\n // Runs the shared chachaCore permutation, then subtracts the RFC 8439 feed-forward\n // it applies, recovering the raw permutation words hchacha needs.\n // LE hosts read the caller arrays in place (no copies); BE hosts get\n // byte-swapped scratch copies, wiped before returning.\n const s2 = isLE ? s : swap32IfBE(s.slice(0, 4));\n const k2 = isLE ? k : swap32IfBE(k.slice(0, 8));\n const i2 = isLE ? i : swap32IfBE(i.slice(0, 4));\n const t = new Uint32Array(16);\n chachaCore(s2, k2, i2.subarray(1), t, i2[0]);\n let oi = 0;\n out[oi++] = (t[0] - s2[0]) | 0;\n out[oi++] = (t[1] - s2[1]) | 0;\n out[oi++] = (t[2] - s2[2]) | 0;\n out[oi++] = (t[3] - s2[3]) | 0;\n out[oi++] = (t[12] - i2[0]) | 0;\n out[oi++] = (t[13] - i2[1]) | 0;\n out[oi++] = (t[14] - i2[2]) | 0;\n out[oi++] = (t[15] - i2[3]) | 0;\n swap32IfBE(out);\n if (!isLE)\n clean(s2, k2, i2);\n clean(t);\n}\n/**\n * Original, non-RFC chacha20 from DJB. 8-byte nonce, 8-byte counter.\n * The nonce/counter layout still reserves 8 counter bytes internally, but the shared public\n * `counter` argument follows noble's strict non-wrapping 32-bit policy. See `src/_arx.ts`\n * near `MAX_COUNTER` for the full counter-policy rationale.\n * @param key - 16-byte or 32-byte key.\n * @param nonce - 8-byte nonce.\n * @param data - Input bytes to xor with the keystream.\n * @param output - Optional destination buffer.\n * @param counter - Initial block counter.\n * @returns Encrypted or decrypted bytes.\n * @example\n * Encrypts bytes with the original 8-byte-nonce ChaCha variant and a fresh key/nonce.\n *\n * ```ts\n * import { chacha20orig } from '@noble/ciphers/chacha.js';\n * import { randomBytes } from '@noble/ciphers/utils.js';\n * const key = randomBytes(32);\n * const nonce = randomBytes(8);\n * chacha20orig(key, nonce, new Uint8Array(4));\n * ```\n */\nexport const chacha20orig = /* @__PURE__ */ createCipher(chachaCore, {\n counterRight: false,\n counterLength: 8,\n allowShortKeys: true,\n});\n/**\n * ChaCha stream cipher. Conforms to RFC 8439 (IETF, TLS). 12-byte nonce, 4-byte counter.\n * With smaller nonce, it's not safe to make it random (CSPRNG), due to collision chance.\n * @param key - 32-byte key.\n * @param nonce - 12-byte nonce.\n * @param data - Input bytes to xor with the keystream.\n * @param output - Optional destination buffer.\n * @param counter - Initial block counter.\n * @returns Encrypted or decrypted bytes.\n * @example\n * Encrypts bytes with the RFC 8439 ChaCha20 stream cipher and a fresh key/nonce.\n *\n * ```ts\n * import { chacha20 } from '@noble/ciphers/chacha.js';\n * import { randomBytes } from '@noble/ciphers/utils.js';\n * const key = randomBytes(32);\n * const nonce = randomBytes(12);\n * chacha20(key, nonce, new Uint8Array(4));\n * ```\n */\nexport const chacha20 = /* @__PURE__ */ createCipher(chachaCore, {\n counterRight: false,\n counterLength: 4,\n allowShortKeys: false,\n});\n/**\n * XChaCha eXtended-nonce ChaCha. With 24-byte nonce, it's safe to make it random (CSPRNG).\n * See {@link https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-xchacha | the IRTF draft}.\n * The nonce/counter layout still reserves 8 counter bytes internally, but the shared public\n * `counter` argument follows noble's strict non-wrapping 32-bit policy. See `src/_arx.ts`\n * near `MAX_COUNTER` for the full counter-policy rationale.\n * @param key - 32-byte key.\n * @param nonce - 24-byte extended nonce.\n * @param data - Input bytes to xor with the keystream.\n * @param output - Optional destination buffer.\n * @param counter - Initial block counter.\n * @returns Encrypted or decrypted bytes.\n * @example\n * Encrypts bytes with XChaCha20 using a fresh key and random 24-byte nonce.\n *\n * ```ts\n * import { xchacha20 } from '@noble/ciphers/chacha.js';\n * import { randomBytes } from '@noble/ciphers/utils.js';\n * const key = randomBytes(32);\n * const nonce = randomBytes(24);\n * xchacha20(key, nonce, new Uint8Array(4));\n * ```\n */\nexport const xchacha20 = /* @__PURE__ */ createCipher(chachaCore, {\n counterRight: false,\n counterLength: 8,\n extendNonceFn: hchacha,\n allowShortKeys: false,\n});\n/**\n * Reduced 8-round chacha, described in original paper.\n * @param key - 32-byte key.\n * @param nonce - 12-byte nonce.\n * @param data - Input bytes to xor with the keystream.\n * @param output - Optional destination buffer.\n * @param counter - Initial block counter.\n * @returns Encrypted or decrypted bytes.\n * @example\n * Uses the reduced 8-round variant for non-critical workloads with a fresh key/nonce.\n *\n * ```ts\n * import { chacha8 } from '@noble/ciphers/chacha.js';\n * import { randomBytes } from '@noble/ciphers/utils.js';\n * const key = randomBytes(32);\n * const nonce = randomBytes(12);\n * chacha8(key, nonce, new Uint8Array(4));\n * ```\n */\nexport const chacha8 = /* @__PURE__ */ createCipher(chachaCore, {\n counterRight: false,\n counterLength: 4,\n rounds: 8,\n});\n/**\n * Reduced 12-round chacha, described in original paper.\n * @param key - 32-byte key.\n * @param nonce - 12-byte nonce.\n * @param data - Input bytes to xor with the keystream.\n * @param output - Optional destination buffer.\n * @param counter - Initial block counter.\n * @returns Encrypted or decrypted bytes.\n * @example\n * Uses the reduced 12-round variant for non-critical workloads with a fresh key/nonce.\n *\n * ```ts\n * import { chacha12 } from '@noble/ciphers/chacha.js';\n * import { randomBytes } from '@noble/ciphers/utils.js';\n * const key = randomBytes(32);\n * const nonce = randomBytes(12);\n * chacha12(key, nonce, new Uint8Array(4));\n * ```\n */\nexport const chacha12 = /* @__PURE__ */ createCipher(chachaCore, {\n counterRight: false,\n counterLength: 4,\n rounds: 12,\n});\n// Test-only hook: exposes the unrolled production core so tests can compare it\n// with the simple/reference core from `test/misc/micro-ciphers.ts`.\nexport const __TESTS = /* @__PURE__ */ Object.freeze({ chachaCore });\n// RFC 8439 §2.8.1 pad16(x): shared zero block for AAD/ciphertext padding.\nconst ZEROS16 = /* @__PURE__ */ new Uint8Array(16);\n// RFC 8439 §2.8 / §2.8.1: aligned inputs add nothing, otherwise append 16-(len%16) zero bytes.\nconst updatePadded = (h, msg) => {\n h.update(msg);\n const leftover = msg.length % 16;\n if (leftover)\n h.update(ZEROS16.subarray(leftover));\n};\n// RFC 8439 §2.6.1 poly1305_key_gen returns `block[0..31]`, so AEAD key\n// generation only needs 32 zero bytes.\nconst ZEROS32 = /* @__PURE__ */ new Uint8Array(32);\nfunction computeTag(fn, key, nonce, ciphertext, AAD) {\n if (AAD !== undefined)\n abytes(AAD, undefined, 'AAD');\n // RFC 8439 §2.6 / §2.8: derive the Poly1305 one-time key from counter 0,\n // then MAC AAD || pad16(AAD) || ciphertext || pad16(ciphertext) || len(AAD) || len(ciphertext).\n const authKey = fn(key, nonce, ZEROS32);\n const lengths = u64Lengths(ciphertext.length, AAD ? AAD.length : 0, true);\n // Methods below can be replaced with\n // `return poly1305_computeTag_small(authKey, lengths, ciphertext, AAD)`\n // from `test/misc/micro-ciphers.ts`.\n const h = poly1305.create(authKey);\n if (AAD)\n updatePadded(h, AAD);\n updatePadded(h, ciphertext);\n h.update(lengths);\n const res = h.digest();\n clean(authKey, lengths);\n return res;\n}\n/**\n * AEAD algorithm from RFC 8439.\n * Salsa20 and chacha (RFC 8439) use poly1305 differently.\n * We could have composed them, but it's hard because of authKey:\n * In salsa20, authKey changes position in salsa stream.\n * In chacha, authKey can't be computed inside computeTag, it modifies the counter.\n */\nexport const _poly1305_aead = (xorStream) => (key, nonce, AAD) => {\n // This borrows caller key/nonce/AAD buffers by reference; mutating them after construction\n // changes future encrypt/decrypt results.\n const tagLength = 16;\n return {\n encrypt(plaintext, output) {\n const plength = plaintext.length;\n output = getOutput(plength + tagLength, output, false);\n output.set(plaintext);\n const oPlain = output.subarray(0, -tagLength);\n // RFC 8439 §2.8: payload encryption starts at counter 1 because counter 0 produced the OTK.\n xorStream(key, nonce, oPlain, oPlain, 1);\n const tag = computeTag(xorStream, key, nonce, oPlain, AAD);\n output.set(tag, plength); // append tag\n clean(tag);\n return output;\n },\n decrypt(ciphertext, output) {\n output = getOutput(ciphertext.length - tagLength, output, false);\n const data = ciphertext.subarray(0, -tagLength);\n const passedTag = ciphertext.subarray(-tagLength);\n const tag = computeTag(xorStream, key, nonce, data, AAD);\n // RFC 8439 §2.8 / §4: authenticate ciphertext before decrypting it, and compare tags with\n // the constant-time equalBytes() helper rather than decrypting speculative plaintext first.\n if (!equalBytes(passedTag, tag)) {\n clean(tag);\n throw new Error('invalid tag');\n }\n output.set(ciphertext.subarray(0, -tagLength));\n // Actual decryption\n xorStream(key, nonce, output, output, 1); // start stream with i=1\n clean(tag);\n return output;\n },\n };\n};\n/**\n * ChaCha20-Poly1305 from RFC 8439.\n *\n * Unsafe to use random nonces under the same key, due to collision chance.\n * Prefer XChaCha instead.\n * @param key - 32-byte key.\n * @param nonce - 12-byte nonce.\n * @param AAD - Additional authenticated data.\n * @returns AEAD cipher instance.\n * @example\n * Encrypts and authenticates plaintext with a fresh key and nonce.\n *\n * ```ts\n * import { chacha20poly1305 } from '@noble/ciphers/chacha.js';\n * import { randomBytes } from '@noble/ciphers/utils.js';\n * const key = randomBytes(32);\n * const nonce = randomBytes(12);\n * const aad = new TextEncoder().encode('session metadata');\n * const cipher = chacha20poly1305(key, nonce, aad);\n * cipher.encrypt(new Uint8Array([1, 2, 3]));\n * ```\n */\nexport const chacha20poly1305 = /* @__PURE__ */ wrapCipher({ blockSize: 64, nonceLength: 12, tagLength: 16, withAAD: true }, \n/* @__PURE__ */ _poly1305_aead(chacha20));\n/**\n * XChaCha20-Poly1305 extended-nonce chacha.\n *\n * Can be safely used with random nonces (CSPRNG).\n * See {@link https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-xchacha | the IRTF draft}.\n * @param key - 32-byte key.\n * @param nonce - 24-byte nonce.\n * @param AAD - Additional authenticated data.\n * @returns AEAD cipher instance.\n * @example\n * Encrypts and authenticates plaintext with a fresh key and random 24-byte nonce.\n *\n * ```ts\n * import { xchacha20poly1305 } from '@noble/ciphers/chacha.js';\n * import { randomBytes } from '@noble/ciphers/utils.js';\n * const key = randomBytes(32);\n * const nonce = randomBytes(24);\n * const aad = new TextEncoder().encode('session metadata');\n * const cipher = xchacha20poly1305(key, nonce, aad);\n * cipher.encrypt(new Uint8Array([1, 2, 3]));\n * ```\n */\nexport const xchacha20poly1305 = /* @__PURE__ */ wrapCipher({ blockSize: 64, nonceLength: 24, tagLength: 16, withAAD: true }, \n/* @__PURE__ */ _poly1305_aead(xchacha20));\n/**\n * Chacha20 CSPRNG (cryptographically secure pseudorandom number generator).\n * It's best to limit usage to non-production, non-critical cases: for example, test-only.\n * Compatible with libtomcrypt. It does not have a specification, so unclear how secure it is.\n * @param seed - Optional seed bytes mixed into the internal `key || nonce` state. When omitted,\n * only 32 random bytes are mixed into the 40-byte state.\n * @returns Seeded concrete `_XorStreamPRG` instance, including `clone()`.\n * @example\n * Seeds the test-only ChaCha20 DRBG from fresh entropy.\n *\n * ```ts\n * import { rngChacha20 } from '@noble/ciphers/chacha.js';\n * import { randomBytes } from '@noble/ciphers/utils.js';\n * const seed = randomBytes(32);\n * const prg = rngChacha20(seed);\n * prg.randomBytes(8);\n * ```\n */\nexport const rngChacha20 = /* @__PURE__ */ createPRG(chacha20orig, 64, 32, 8);\n/**\n * Chacha20/8 CSPRNG (cryptographically secure pseudorandom number generator).\n * It's best to limit usage to non-production, non-critical cases: for example, test-only.\n * Faster than `rngChacha20`.\n * @param seed - Optional seed bytes mixed into the internal `key || nonce` state. When omitted,\n * only 32 random bytes are mixed into the 44-byte state.\n * @returns Seeded concrete `_XorStreamPRG` instance, including `clone()`.\n * @example\n * Seeds the faster test-only ChaCha8 DRBG from fresh entropy.\n *\n * ```ts\n * import { rngChacha8 } from '@noble/ciphers/chacha.js';\n * import { randomBytes } from '@noble/ciphers/utils.js';\n * const seed = randomBytes(32);\n * const prg = rngChacha8(seed);\n * prg.randomBytes(8);\n * ```\n */\nexport const rngChacha8 = /* @__PURE__ */ createPRG(chacha8, 64, 32, 12);\n","import { xchacha20poly1305 } from \"@noble/ciphers/chacha.js\";\nimport { managedNonce } from \"@noble/ciphers/utils.js\";\n\nimport * as IDB from \"idb-keyval\";\nimport { base64url } from \"iso-base/rfc4648\";\nimport { utf8 } from \"iso-base/utf8\";\n\n////////////////////////////////////////////\n// CONSTANTS\n////////////////////////////////////////////\n\nconst IDB_PREFIX = \"diffuse/transformer/output/refiner/passkey-encryption\";\n\n/**\n * @param {string} namespace\n * @returns {{ credential: string, cipher: string }}\n */\nfunction idbKeys(namespace) {\n const prefix = namespace?.length ? `${IDB_PREFIX}/${namespace}` : IDB_PREFIX;\n return {\n credential: `${prefix}/passkey`,\n cipher: `${prefix}/passkey/cipher-key`,\n };\n}\n\n////////////////////////////////////////////\n// RELYING PARTY\n////////////////////////////////////////////\n\n/**\n * @returns {{ name: string, id: string }}\n */\nexport function relyingParty() {\n const id = document.location.hostname;\n return { name: id, id };\n}\n\n////////////////////////////////////////////\n// PASSKEY MANAGEMENT\n////////////////////////////////////////////\n\n/**\n * Register a new passkey with the PRF extension.\n *\n * @param {string} namespace\n * @returns {Promise<{ supported: true, credentialId: Uint8Array, prfSecond: ArrayBuffer } | { supported: false, reason: string }>}\n */\nexport async function createPasskey(namespace) {\n const rp = relyingParty();\n const challenge = crypto.getRandomValues(new Uint8Array(32));\n const userId = crypto.getRandomValues(new Uint8Array(16));\n\n /** @type {PublicKeyCredential | null} */\n let credential;\n\n try {\n credential = /** @type {PublicKeyCredential} */ (\n await navigator.credentials.create({\n publicKey: {\n challenge,\n rp,\n user: {\n id: userId,\n name: rp.id,\n displayName: \"Diffuse – \" + rp.id,\n },\n pubKeyCredParams: [\n { type: \"public-key\", alg: -7 },\n { type: \"public-key\", alg: -257 },\n ],\n attestation: \"none\",\n authenticatorSelection: {\n userVerification: \"required\",\n requireResidentKey: true,\n residentKey: \"required\",\n },\n extensions: {\n // @ts-ignore — PRF is not yet in the TS DOM types\n prf: {\n eval: {\n // @ts-ignore\n first: utf8.decode(rp.id + \"signing\"),\n // @ts-ignore\n second: utf8.decode(rp.id + \"encryption\"),\n },\n },\n },\n },\n })\n );\n } catch (err) {\n return {\n supported: false,\n reason: err instanceof Error ? err.message : String(err),\n };\n }\n\n if (!credential) {\n return { supported: false, reason: \"Credential creation returned null\" };\n }\n\n const extensions = credential.getClientExtensionResults();\n\n // @ts-ignore — PRF is not yet in the TS DOM types\n if (extensions.prf?.enabled !== true) {\n return {\n supported: false,\n reason: \"This authenticator does not support the WebAuthn PRF extension\",\n };\n }\n\n // @ts-ignore — PRF is not yet in the TS DOM types\n const prfSecond = extensions.prf?.results?.second;\n\n if (!prfSecond) {\n return {\n supported: false,\n reason: \"Authenticator did not return PRF results at registration time\",\n };\n }\n\n const credentialId = new Uint8Array(credential.rawId);\n await IDB.set(idbKeys(namespace).credential, {\n credentialId: Array.from(credentialId),\n });\n\n return {\n supported: true,\n credentialId,\n prfSecond: /** @type {ArrayBuffer} */ (prfSecond),\n };\n}\n\n/**\n * Authenticate with an existing passkey via discoverable-credential lookup\n * (no `allowCredentials`), so it works on a new device that has no stored\n * credential ID yet. Saves the credential ID to IDB and returns PRF material.\n *\n * @param {string} namespace\n * @returns {Promise<{ supported: true, credentialId: Uint8Array, prfSecond: ArrayBuffer } | { supported: false, reason: string }>}\n */\nexport async function adoptPasskeyPrfResult(namespace) {\n const rp = relyingParty();\n const challenge = crypto.getRandomValues(new Uint8Array(32));\n\n /** @type {PublicKeyCredential | null} */\n let assertion;\n\n try {\n assertion = /** @type {PublicKeyCredential} */ (\n await navigator.credentials.get({\n publicKey: {\n challenge,\n rpId: rp.id,\n userVerification: \"required\",\n extensions: {\n // @ts-ignore — PRF is not yet in the TS DOM types\n prf: {\n eval: {\n // @ts-ignore\n first: utf8.decode(rp.id + \"signing\"),\n // @ts-ignore\n second: utf8.decode(rp.id + \"encryption\"),\n },\n },\n },\n },\n })\n );\n } catch (err) {\n return {\n supported: false,\n reason: err instanceof Error ? err.message : String(err),\n };\n }\n\n if (!assertion) {\n return { supported: false, reason: \"Credential get returned null\" };\n }\n\n const extensions = assertion.getClientExtensionResults();\n\n // @ts-ignore — PRF is not yet in the TS DOM types\n const prfSecond = extensions.prf?.results?.second;\n\n if (!prfSecond) {\n return {\n supported: false,\n reason:\n \"This authenticator did not return PRF results — PRF extension may not be supported\",\n };\n }\n\n const credentialId = new Uint8Array(assertion.rawId);\n await IDB.set(idbKeys(namespace).credential, {\n credentialId: Array.from(credentialId),\n });\n\n return {\n supported: true,\n credentialId,\n prfSecond: /** @type {ArrayBuffer} */ (prfSecond),\n };\n}\n\n/**\n * Remove the stored passkey credential ID and cached cipher key from IDB.\n *\n * @param {string} namespace\n * @returns {Promise}\n */\nexport async function removeStoredPasskey(namespace) {\n const keys = idbKeys(namespace);\n await Promise.all([IDB.del(keys.credential), IDB.del(keys.cipher)]);\n}\n\n/**\n * Persist the derived cipher key to IDB so it survives page reloads.\n *\n * @param {string} namespace\n * @param {Uint8Array} key\n * @returns {Promise}\n */\nexport async function storeCipherKey(namespace, key) {\n await IDB.set(idbKeys(namespace).cipher, key);\n}\n\n/**\n * Retrieve the previously persisted cipher key from IDB.\n *\n * @param {string} namespace\n * @returns {Promise}\n */\nexport async function loadStoredCipherKey(namespace) {\n return IDB.get(idbKeys(namespace).cipher);\n}\n\n////////////////////////////////////////////\n// KEY DERIVATION\n////////////////////////////////////////////\n\n/**\n * Derive a 256-bit key from the PRF \"second\" output via HKDF.\n * Returns raw bytes suitable for use with XChaCha20-Poly1305.\n *\n * @param {ArrayBuffer} prfSecond\n * @returns {Promise}\n */\nexport async function deriveCipherKey(prfSecond) {\n const keyMaterial = await crypto.subtle.importKey(\n \"raw\",\n prfSecond,\n { name: \"HKDF\" },\n false,\n [\"deriveBits\"],\n );\n\n const bits = await crypto.subtle.deriveBits(\n {\n name: \"HKDF\",\n hash: \"SHA-256\",\n\n salt:\n /** @type {ArrayBuffer} */ (/** @type {unknown} */ (utf8.decode(\n \"diffuse-atproto-passkey-salt\",\n ))),\n\n info:\n /** @type {ArrayBuffer} */ (/** @type {unknown} */ (utf8.decode(\n \"diffuse-atproto-track-uri\",\n ))),\n },\n keyMaterial,\n 256,\n );\n\n return new Uint8Array(bits);\n}\n\n////////////////////////////////////////////\n// ENCRYPT / DECRYPT\n////////////////////////////////////////////\n\n/**\n * Detect whether a URI is encrypted by this module.\n *\n * @param {string} uri\n * @returns {boolean}\n */\nexport function isEncryptedUri(uri) {\n return uri.startsWith(\"encrypted://\");\n}\n\nconst xchacha = managedNonce(xchacha20poly1305);\n\n/**\n * Encrypt a plaintext URI with XChaCha20-Poly1305.\n * Returns a string of the form: `encrypted://`\n * The nonce is prepended automatically by `managedNonce`.\n *\n * @param {Uint8Array} key\n * @param {string} plaintext\n * @returns {string}\n */\nexport function encryptUri(key, plaintext) {\n const ciphertext = xchacha(key).encrypt(utf8.decode(plaintext));\n return \"encrypted://\" + base64url.encode(ciphertext);\n}\n\n/**\n * Decrypt an encrypted URI produced by `encryptUri`.\n *\n * @param {Uint8Array} key\n * @param {string} encryptedUri\n * @returns {string}\n */\nexport function decryptUri(key, encryptedUri) {\n const ciphertext = base64url.decode(encryptedUri.slice(12));\n return utf8.encode(xchacha(key).decrypt(ciphertext));\n}\n"],"mappings":"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","names":["isBytes","a","__name","atitle","title","abool","value","anumber","n","abytes","length","bytes","ofLen","got","message","aobject","label","aexists","instance","checkFinished","aoutput","out","min","u32","arr","__name","clean","arrays","i","createView","isLE","byteSwap","word","byteSwap32","arr","i","byteSwap","__name","swap32IfBE","isLE","u","overlapBytes","a","b","__name","complexOverlapBytes","input","output","concatBytes","arrays","sum","i","abytes","res","pad","checkOpts","defaults","opts","aobject","equalBytes","diff","wrapMacConstructor","keyLen","macCons","fromMsg","mac","getArgs","macC","msg","key","tmp","args","wrapCipher","params","constructor","wrappedCipher","nonce","tagl","aadStart","isBytes","cipher","checkOutput","fnLength","called","data","getOutput","expectedLength","out","onlyAligned","isAligned32","u64Lengths","dataLength","aadLength","isLE","anumber","abool","num","view","createView","bytes","copyBytes","randomBytes","bytesLength","cr","managedNonce","fn","randomBytes_","nonceLength","addNonce","ciphertext","plaintext","encrypted","ct","decrypted","encodeStr","__name","str","c","sigma16_32","swap32IfBE","u32","sigma32_32","rotl","a","b","BLOCK_LEN","BLOCK_LEN32","MAX_COUNTER","U32_EMPTY","runCipher","core","sigma","key","nonce","data","output","counter","rounds","len","block","b32","isAligned","isLE","isAligned32","d32","o32","pos","take","j","posj","pos32","createCipher","opts","allowShortKeys","extendNonceFn","counterLength","counterRight","checkOpts","anumber","abool","abytes","hasOutput","getOutput","complexOverlapBytes","toClean","l","k","copyBytes","k32","n16","sigmaRaw","clean","nonceNcLen","nc","n32","u8to16","a","i","__name","Poly1305","key","copyBytes","abytes","t0","t1","t2","t3","t4","t5","t6","t7","data","offset","isLast","hibit","h","r","r0","r1","r2","r3","r4","r5","r6","r7","r8","r9","h0","h1","h2","h3","h4","h5","h6","h7","h8","h9","c","d0","d1","d2","d3","d4","d5","d6","d7","d8","d9","pad","g","mask","f","clean","aexists","buffer","blockLen","len","pos","take","out","aoutput","opos","outputLen","res","poly1305","wrapMacConstructor","chachaCore","s","k","n","out","cnt","rounds","y00","y01","y02","y03","y04","y05","y06","y07","y08","y09","y10","y11","y12","y13","y14","y15","x00","x01","x02","x03","x04","x05","x06","x07","x08","x09","x10","x11","x12","x13","x14","x15","r","rotl","oi","__name","hchacha","s2","isLE","swap32IfBE","k2","i2","t","clean","xchacha20","createCipher","chachaCore","hchacha","ZEROS16","updatePadded","__name","h","msg","leftover","ZEROS32","computeTag","fn","key","nonce","ciphertext","AAD","abytes","authKey","lengths","u64Lengths","poly1305","res","clean","_poly1305_aead","xorStream","plaintext","output","plength","getOutput","oPlain","tag","data","passedTag","equalBytes","xchacha20poly1305","wrapCipher","_poly1305_aead","xchacha20","IDB_PREFIX","idbKeys","namespace","prefix","__name","relyingParty","id","createPasskey","rp","challenge","userId","credential","utf8","err","extensions","prfSecond","credentialId","set","adoptPasskeyPrfResult","assertion","removeStoredPasskey","keys","del","storeCipherKey","key","loadStoredCipherKey","get","deriveCipherKey","keyMaterial","bits","isEncryptedUri","uri","xchacha","managedNonce","xchacha20poly1305","encryptUri","plaintext","ciphertext","base64url","decryptUri","encryptedUri"],"sourceRoot":"","file":"/chunk-BOVR37RD.js.map"} \ No newline at end of file diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-BR5FNG6K.js b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-BR5FNG6K.js similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-BR5FNG6K.js rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-BR5FNG6K.js diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-BR5FNG6K.js.br b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-BR5FNG6K.js.br similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-BR5FNG6K.js.br rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-BR5FNG6K.js.br diff --git a/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-BR5FNG6K.js.map b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-BR5FNG6K.js.map new file mode 100644 index 00000000..bd7347a6 --- /dev/null +++ b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-BR5FNG6K.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["/components/orchestrator/sources/constants.js"],"sourcesContent":["export const DISABLED_KEY = \"sh.diffuse.input.disabled.uris\";\n"],"mappings":"AAAO,IAAMA,EAAe","names":["DISABLED_KEY"],"sourceRoot":"","file":"/chunk-BR5FNG6K.js.map"} \ No newline at end of file diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-SB4RVSLI.js b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-BVWJMJYM.js similarity index 99% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-SB4RVSLI.js rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-BVWJMJYM.js index 9546d7f0..f801a2cb 100644 --- a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-SB4RVSLI.js +++ b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-BVWJMJYM.js @@ -1,4 +1,4 @@ -import{d as Fs}from"./chunk-RJOCTTDA.js";import{b as Eh}from"./chunk-ZGMMU2IC.js";import{a as jh}from"./chunk-4ZM3UVIB.js";import{d as Mh}from"./chunk-FERJFL6F.js";import{j as Ah,p as Rh}from"./chunk-34YH6DD7.js";import{b as Us}from"./chunk-CT5QLUQL.js";import{c as Xh}from"./chunk-VQAZGKWE.js";import{o as Gs}from"./chunk-XILA3E7E.js";import{a as c}from"./chunk-75KFZLU6.js";var Ks=[],Lh=[];(()=>{let n="lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2,2,,4,z,,u,r,2j,b,1m,9,9,,o,4,,9,,3,,5,17,3,1n,9,16,o,,x,1i,3,,i,,7,a,2,t,3,1k,,,7,2,2,2,3,9,,a,2,q,,2,3,1k,,,5,4,2,2,3,3,,u,2,3,,b,3,1k,,,8,,3,,3,k,2,m,6,,3,1k,,,7,2,2,2,3,7,3,a,2,u,,1n,5,3,3,,4,9,,14,5,1j,,,7,,3,,4,7,2,b,2,t,3,1k,,,7,,3,,4,7,2,b,2,f,,c,4,1j,2,,7,,3,,4,9,,a,2,t,3,1y,,4,6,,,,8,i,2,1p,,,8,c,8,2q,,,a,b,7,21,2,r,,,,,,4,2,1d,k,,2,5,b,,10,9,,2u,b,,6,n,4,4,3,g,4,d,,,3,6,,f,,jj,3,qa,4,s,3,t,2,u,2,1s,w,9,,19,3,,,39,2,y,,3a,c,4,c,63,5,1l,a,,,,,2,o,2,,1c,1a,2,c,k,5,1b,h,12,9,c,3,u,d,1k,e,1c,k,48,3,,l,4,,6,,2,3,5i,1s,ek,,5f,x,2da,3,3x,,2o,w,fe,6,2x,2,n9w,4,,a,w,2,28,2,7k,,3,,4,,n,5,4,,2b,2,1e,i,q,i,d,,12,8,p,d,18,4,1b,e,10,,1v,e,c,,8,2,1a,,1f,,,3,2,2,5,2,,,15,5,5,2,6k,8,,2,fn4,,kh,g,g,g,a6,2,gt,,6a,,45,5,1ae,3,,2,5,4,14,3,4,,4l,2,fx,4,1t,5,8t,2,25,6,1y,b,1d,4,3e,3,1h,f,15,,2,2,a,4,19,b,7,,1p,3,10,e,g,2,18,,c,3,1c,e,8,4,,2,2k,c,6,,2,,4d,c,l,4,1j,2,,7,2,2,2,3,9,,a,2,2,7,3,5,1v,9,,,2,,,4,,5,,,e,2,2a,i,n,,29,k,6j,7,2,9,r,2,2a,h,2y,d,2t,3,2,a,74,f,6t,6,,2,2,4,,,,2,3x,7,2,7,3,,s,a,14,7,,4,8,,9,b,1a,g,5i,8,5j,8,,8,2a,m,,e,3e,6,3,,,2,,7,,,1u,5,,2,,5,9n,4,9,2,,,1c,7,3,5,n,,44l,,6,f,8ug,i,1xc,5,1n,7,t4,,,1j,7,4,29,,b,2,f57,2,3mp,1a,2,n,f2,5,3,6,8,8,2,7,u,4,44,3,1iz,1j,4,1e,8,,e,,m,5,,f,11s,7,,h,2,7,,2,,5,2s,,4g,7,af,,1p,4,e4,4,72,2,6r,,2,,7,2,5,,d6,7,31,7,240,5".split(",").map(e=>e?parseInt(e,36):1);for(let e=0,t=0;e>1;if(n=Lh[i])e=i+1;else return!0;if(e==t)return!1}}c(Yp,"isExtendingChar");function Yh(n){return n>=127462&&n<=127487}c(Yh,"isRegionalIndicator");var zh=8205;function Wh(n,e,t=!0,i=!0){return(t?Dh:zp)(n,e,i)}c(Wh,"findClusterBreak");function Dh(n,e,t){if(e==n.length)return e;e&&Vh(n.charCodeAt(e))&&qh(n.charCodeAt(e-1))&&e--;let i=Hs(n,e);for(e+=_h(i);e=0&&Yh(Hs(n,o));)s++,o-=2;if(s%2==0)break;e+=2}else break}return e}c(Dh,"nextClusterBreak");function zp(n,e,t){for(;e>1;){let i=Dh(n,e-2,t);if(i=56320&&n<57344}c(Vh,"surrogateLow");function qh(n){return n>=55296&&n<56320}c(qh,"surrogateHigh");function _h(n){return n<65536?1:2}c(_h,"codePointSize");var z=class n{static{c(this,"Text")}lineAt(e){if(e<0||e>this.length)throw new RangeError(`Invalid position ${e} in document of length ${this.length}`);return this.lineInner(e,!1,1,0)}line(e){if(e<1||e>this.lines)throw new RangeError(`Invalid line number ${e} in ${this.lines}-line document`);return this.lineInner(e,!0,1,0)}replace(e,t,i){[e,t]=$i(this,e,t);let r=[];return this.decompose(0,e,r,2),i.length&&i.decompose(0,i.length,r,3),this.decompose(t,this.length,r,1),Qi.from(r,this.length-(t-e)+i.length)}append(e){return this.replace(this.length,this.length,e)}slice(e,t=this.length){[e,t]=$i(this,e,t);let i=[];return this.decompose(e,t,i,0),Qi.from(i,t-e)}eq(e){if(e==this)return!0;if(e.length!=this.length||e.lines!=this.lines)return!1;let t=this.scanIdentical(e,1),i=this.length-this.scanIdentical(e,-1),r=new Ht(this),s=new Ht(e);for(let o=t,l=t;;){if(r.next(o),s.next(o),o=0,r.lineBreak!=s.lineBreak||r.done!=s.done||r.value!=s.value)return!1;if(l+=r.value.length,r.done||l>=i)return!0}}iter(e=1){return new Ht(this,e)}iterRange(e,t=this.length){return new lr(this,e,t)}iterLines(e,t){let i;if(e==null)i=this.iter();else{t==null&&(t=this.lines+1);let r=this.line(e).from;i=this.iterRange(r,Math.max(r,t==this.lines+1?this.length:t<=1?0:this.line(t-1).to))}return new ar(i)}toString(){return this.sliceString(0)}toJSON(){let e=[];return this.flatten(e),e}constructor(){}static of(e){if(e.length==0)throw new RangeError("A document must have at least one line");return e.length==1&&!e[0]?n.empty:e.length<=32?new Ae(e):Qi.from(Ae.split(e,[]))}},Ae=class n extends z{static{c(this,"TextLeaf")}constructor(e,t=_p(e)){super(),this.text=e,this.length=t}get lines(){return this.text.length}get children(){return null}lineInner(e,t,i,r){for(let s=0;;s++){let o=this.text[s],l=r+o.length;if((t?i:l)>=e)return new eo(r,l,i,o);r=l+1,i++}}decompose(e,t,i,r){let s=e<=0&&t>=this.length?this:new n(Bh(this.text,e,t),Math.min(t,this.length)-Math.max(0,e));if(r&1){let o=i.pop(),l=or(s.text,o.text.slice(),0,s.length);if(l.length<=32)i.push(new n(l,o.length+s.length));else{let a=l.length>>1;i.push(new n(l.slice(0,a)),new n(l.slice(a)))}}else i.push(s)}replace(e,t,i){if(!(i instanceof n))return super.replace(e,t,i);[e,t]=$i(this,e,t);let r=or(this.text,or(i.text,Bh(this.text,0,e)),t),s=this.length+i.length-(t-e);return r.length<=32?new n(r,s):Qi.from(n.split(r,[]),s)}sliceString(e,t=this.length,i=` +import{d as Fs}from"./chunk-53ELVNFW.js";import{b as Eh}from"./chunk-ZGMMU2IC.js";import{a as jh}from"./chunk-64SCJ6UI.js";import{d as Mh}from"./chunk-FERJFL6F.js";import{j as Ah,p as Rh}from"./chunk-34YH6DD7.js";import{b as Us}from"./chunk-CT5QLUQL.js";import{c as Xh}from"./chunk-VQAZGKWE.js";import{o as Gs}from"./chunk-XILA3E7E.js";import{a as c}from"./chunk-75KFZLU6.js";var Ks=[],Lh=[];(()=>{let n="lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2,2,,4,z,,u,r,2j,b,1m,9,9,,o,4,,9,,3,,5,17,3,1n,9,16,o,,x,1i,3,,i,,7,a,2,t,3,1k,,,7,2,2,2,3,9,,a,2,q,,2,3,1k,,,5,4,2,2,3,3,,u,2,3,,b,3,1k,,,8,,3,,3,k,2,m,6,,3,1k,,,7,2,2,2,3,7,3,a,2,u,,1n,5,3,3,,4,9,,14,5,1j,,,7,,3,,4,7,2,b,2,t,3,1k,,,7,,3,,4,7,2,b,2,f,,c,4,1j,2,,7,,3,,4,9,,a,2,t,3,1y,,4,6,,,,8,i,2,1p,,,8,c,8,2q,,,a,b,7,21,2,r,,,,,,4,2,1d,k,,2,5,b,,10,9,,2u,b,,6,n,4,4,3,g,4,d,,,3,6,,f,,jj,3,qa,4,s,3,t,2,u,2,1s,w,9,,19,3,,,39,2,y,,3a,c,4,c,63,5,1l,a,,,,,2,o,2,,1c,1a,2,c,k,5,1b,h,12,9,c,3,u,d,1k,e,1c,k,48,3,,l,4,,6,,2,3,5i,1s,ek,,5f,x,2da,3,3x,,2o,w,fe,6,2x,2,n9w,4,,a,w,2,28,2,7k,,3,,4,,n,5,4,,2b,2,1e,i,q,i,d,,12,8,p,d,18,4,1b,e,10,,1v,e,c,,8,2,1a,,1f,,,3,2,2,5,2,,,15,5,5,2,6k,8,,2,fn4,,kh,g,g,g,a6,2,gt,,6a,,45,5,1ae,3,,2,5,4,14,3,4,,4l,2,fx,4,1t,5,8t,2,25,6,1y,b,1d,4,3e,3,1h,f,15,,2,2,a,4,19,b,7,,1p,3,10,e,g,2,18,,c,3,1c,e,8,4,,2,2k,c,6,,2,,4d,c,l,4,1j,2,,7,2,2,2,3,9,,a,2,2,7,3,5,1v,9,,,2,,,4,,5,,,e,2,2a,i,n,,29,k,6j,7,2,9,r,2,2a,h,2y,d,2t,3,2,a,74,f,6t,6,,2,2,4,,,,2,3x,7,2,7,3,,s,a,14,7,,4,8,,9,b,1a,g,5i,8,5j,8,,8,2a,m,,e,3e,6,3,,,2,,7,,,1u,5,,2,,5,9n,4,9,2,,,1c,7,3,5,n,,44l,,6,f,8ug,i,1xc,5,1n,7,t4,,,1j,7,4,29,,b,2,f57,2,3mp,1a,2,n,f2,5,3,6,8,8,2,7,u,4,44,3,1iz,1j,4,1e,8,,e,,m,5,,f,11s,7,,h,2,7,,2,,5,2s,,4g,7,af,,1p,4,e4,4,72,2,6r,,2,,7,2,5,,d6,7,31,7,240,5".split(",").map(e=>e?parseInt(e,36):1);for(let e=0,t=0;e>1;if(n=Lh[i])e=i+1;else return!0;if(e==t)return!1}}c(Yp,"isExtendingChar");function Yh(n){return n>=127462&&n<=127487}c(Yh,"isRegionalIndicator");var zh=8205;function Wh(n,e,t=!0,i=!0){return(t?Dh:zp)(n,e,i)}c(Wh,"findClusterBreak");function Dh(n,e,t){if(e==n.length)return e;e&&Vh(n.charCodeAt(e))&&qh(n.charCodeAt(e-1))&&e--;let i=Hs(n,e);for(e+=_h(i);e=0&&Yh(Hs(n,o));)s++,o-=2;if(s%2==0)break;e+=2}else break}return e}c(Dh,"nextClusterBreak");function zp(n,e,t){for(;e>1;){let i=Dh(n,e-2,t);if(i=56320&&n<57344}c(Vh,"surrogateLow");function qh(n){return n>=55296&&n<56320}c(qh,"surrogateHigh");function _h(n){return n<65536?1:2}c(_h,"codePointSize");var z=class n{static{c(this,"Text")}lineAt(e){if(e<0||e>this.length)throw new RangeError(`Invalid position ${e} in document of length ${this.length}`);return this.lineInner(e,!1,1,0)}line(e){if(e<1||e>this.lines)throw new RangeError(`Invalid line number ${e} in ${this.lines}-line document`);return this.lineInner(e,!0,1,0)}replace(e,t,i){[e,t]=$i(this,e,t);let r=[];return this.decompose(0,e,r,2),i.length&&i.decompose(0,i.length,r,3),this.decompose(t,this.length,r,1),Qi.from(r,this.length-(t-e)+i.length)}append(e){return this.replace(this.length,this.length,e)}slice(e,t=this.length){[e,t]=$i(this,e,t);let i=[];return this.decompose(e,t,i,0),Qi.from(i,t-e)}eq(e){if(e==this)return!0;if(e.length!=this.length||e.lines!=this.lines)return!1;let t=this.scanIdentical(e,1),i=this.length-this.scanIdentical(e,-1),r=new Ht(this),s=new Ht(e);for(let o=t,l=t;;){if(r.next(o),s.next(o),o=0,r.lineBreak!=s.lineBreak||r.done!=s.done||r.value!=s.value)return!1;if(l+=r.value.length,r.done||l>=i)return!0}}iter(e=1){return new Ht(this,e)}iterRange(e,t=this.length){return new lr(this,e,t)}iterLines(e,t){let i;if(e==null)i=this.iter();else{t==null&&(t=this.lines+1);let r=this.line(e).from;i=this.iterRange(r,Math.max(r,t==this.lines+1?this.length:t<=1?0:this.line(t-1).to))}return new ar(i)}toString(){return this.sliceString(0)}toJSON(){let e=[];return this.flatten(e),e}constructor(){}static of(e){if(e.length==0)throw new RangeError("A document must have at least one line");return e.length==1&&!e[0]?n.empty:e.length<=32?new Ae(e):Qi.from(Ae.split(e,[]))}},Ae=class n extends z{static{c(this,"TextLeaf")}constructor(e,t=_p(e)){super(),this.text=e,this.length=t}get lines(){return this.text.length}get children(){return null}lineInner(e,t,i,r){for(let s=0;;s++){let o=this.text[s],l=r+o.length;if((t?i:l)>=e)return new eo(r,l,i,o);r=l+1,i++}}decompose(e,t,i,r){let s=e<=0&&t>=this.length?this:new n(Bh(this.text,e,t),Math.min(t,this.length)-Math.max(0,e));if(r&1){let o=i.pop(),l=or(s.text,o.text.slice(),0,s.length);if(l.length<=32)i.push(new n(l,o.length+s.length));else{let a=l.length>>1;i.push(new n(l.slice(0,a)),new n(l.slice(a)))}}else i.push(s)}replace(e,t,i){if(!(i instanceof n))return super.replace(e,t,i);[e,t]=$i(this,e,t);let r=or(this.text,or(i.text,Bh(this.text,0,e)),t),s=this.length+i.length-(t-e);return r.length<=32?new n(r,s):Qi.from(n.split(r,[]),s)}sliceString(e,t=this.length,i=` `){[e,t]=$i(this,e,t);let r="";for(let s=0,o=0;s<=t&&oe&&o&&(r+=i),es&&(r+=l.slice(Math.max(0,e-s),t-s)),s=a+1}return r}flatten(e){for(let t of this.text)e.push(t)}scanIdentical(){return 0}static split(e,t){let i=[],r=-1;for(let s of e)i.push(s),r+=s.length+1,i.length==32&&(t.push(new n(i,r)),i=[],r=-1);return r>-1&&t.push(new n(i,r)),t}},Qi=class n extends z{static{c(this,"TextNode")}constructor(e,t){super(),this.children=e,this.length=t,this.lines=0;for(let i of e)this.lines+=i.lines}lineInner(e,t,i,r){for(let s=0;;s++){let o=this.children[s],l=r+o.length,a=i+o.lines-1;if((t?a:l)>=e)return o.lineInner(e,t,i,r);r=l+1,i=a+1}}decompose(e,t,i,r){for(let s=0,o=0;o<=t&&s=o){let h=r&((o<=e?1:0)|(a>=t?2:0));o>=e&&a<=t&&!h?i.push(l):l.decompose(e-o,t-o,i,h)}o=a+1}}replace(e,t,i){if([e,t]=$i(this,e,t),i.lines=s&&t<=l){let a=o.replace(e-s,t-s,i),h=this.lines-o.lines+a.lines;if(a.lines>4&&a.lines>h>>6){let f=this.children.slice();return f[r]=a,new n(f,this.length-(t-e)+i.length)}return super.replace(s,l,a)}s=l+1}return super.replace(e,t,i)}sliceString(e,t=this.length,i=` `){[e,t]=$i(this,e,t);let r="";for(let s=0,o=0;se&&s&&(r+=i),eo&&(r+=l.sliceString(e-o,t-o,i)),o=a+1}return r}flatten(e){for(let t of this.children)t.flatten(e)}scanIdentical(e,t){if(!(e instanceof n))return 0;let i=0,[r,s,o,l]=t>0?[0,0,this.children.length,e.children.length]:[this.children.length-1,e.children.length-1,-1,-1];for(;;r+=t,s+=t){if(r==o||s==l)return i;let a=this.children[r],h=e.children[s];if(a!=h)return i+a.scanIdentical(h,t);i+=a.length+1}}static from(e,t=e.reduce((i,r)=>i+r.length+1,-1)){let i=0;for(let O of e)i+=O.lines;if(i<32){let O=[];for(let p of e)p.flatten(O);return new Ae(O,t)}let r=Math.max(32,i>>5),s=r<<1,o=r>>1,l=[],a=0,h=-1,f=[];function u(O){let p;if(O.lines>s&&O instanceof n)for(let m of O.children)u(m);else O.lines>o&&(a>o||!a)?(d(),l.push(O)):O instanceof Ae&&a&&(p=f[f.length-1])instanceof Ae&&O.lines+p.lines<=32?(a+=O.lines,h+=O.length+1,f[f.length-1]=new Ae(p.text.concat(O.text),p.length+1+O.length)):(a+O.lines>r&&d(),a+=O.lines,h+=O.length+1,f.push(O))}c(u,"add");function d(){a!=0&&(l.push(f.length==1?f[0]:n.from(f,h)),h=-1,a=f.length=0)}c(d,"flush");for(let O of e)u(O);return d(),l.length==1?l[0]:new n(l,t)}};z.empty=new Ae([""],0);function _p(n){let e=-1;for(let t of n)e+=t.length+1;return e}c(_p,"textLength");function or(n,e,t=0,i=1e9){for(let r=0,s=0,o=!0;s=t&&(a>i&&(l=l.slice(0,i-r)),r0?1:(e instanceof Ae?e.text.length:e.children.length)<<1]}nextInner(e,t){for(this.done=this.lineBreak=!1;;){let i=this.nodes.length-1,r=this.nodes[i],s=this.offsets[i],o=s>>1,l=r instanceof Ae?r.text.length:r.children.length;if(o==(t>0?l:0)){if(i==0)return this.done=!0,this.value="",this;t>0&&this.offsets[i-1]++,this.nodes.pop(),this.offsets.pop()}else if((s&1)==(t>0?0:1)){if(this.offsets[i]+=t,e==0)return this.lineBreak=!0,this.value=` `,this;e--}else if(r instanceof Ae){let a=r.text[o+(t<0?-1:0)];if(this.offsets[i]+=t,a.length>Math.max(0,e))return this.value=e==0?a:t>0?a.slice(e):a.slice(0,a.length-e),this;e-=a.length}else{let a=r.children[o+(t<0?-1:0)];e>a.length?(e-=a.length,this.offsets[i]+=t):(t<0&&this.offsets[i]--,this.nodes.push(a),this.offsets.push(t>0?1:(a instanceof Ae?a.text.length:a.children.length)<<1))}}}next(e=0){return e<0&&(this.nextInner(-e,-this.dir),e=this.value.length),this.nextInner(e,this.dir)}},lr=class{static{c(this,"PartialTextCursor")}constructor(e,t,i){this.value="",this.done=!1,this.cursor=new Ht(e,t>i?-1:1),this.pos=t>i?e.length:0,this.from=Math.min(t,i),this.to=Math.max(t,i)}nextInner(e,t){if(t<0?this.pos<=this.from:this.pos>=this.to)return this.value="",this.done=!0,this;e+=Math.max(0,t<0?this.pos-this.to:this.from-this.pos);let i=t<0?this.pos-this.from:this.to-this.pos;e>i&&(e=i),i-=e;let{value:r}=this.cursor.next(e);return this.pos+=(r.length+e)*t,this.value=r.length<=i?r:t<0?r.slice(r.length-i):r.slice(0,i),this.done=!this.value,this}next(e=0){return e<0?e=Math.max(e,this.from-this.pos):e>0&&(e=Math.min(e,this.to-this.pos)),this.nextInner(e,this.cursor.dir)}get lineBreak(){return this.cursor.lineBreak&&this.value!=""}},ar=class{static{c(this,"LineCursor")}constructor(e){this.inner=e,this.afterBreak=!0,this.value="",this.done=!1}next(e=0){let{done:t,lineBreak:i,value:r}=this.inner.next(e);return t&&this.afterBreak?(this.value="",this.afterBreak=!1):t?(this.done=!0,this.value=""):i?this.afterBreak?this.value="":(this.afterBreak=!0,this.next()):(this.value=r,this.afterBreak=!1),this}get lineBreak(){return!1}};typeof Symbol<"u"&&(z.prototype[Symbol.iterator]=function(){return this.iter()},Ht.prototype[Symbol.iterator]=lr.prototype[Symbol.iterator]=ar.prototype[Symbol.iterator]=function(){return this});var eo=class{static{c(this,"Line")}constructor(e,t,i,r){this.from=e,this.to=t,this.number=i,this.text=r}get length(){return this.to-this.from}};function $i(n,e,t){return e=Math.max(0,Math.min(n.length,e)),[e,Math.max(e,Math.min(n.length,t))]}c($i,"clip");function se(n,e,t=!0,i=!0){return Wh(n,e,t,i)}c(se,"findClusterBreak");function Lp(n){return n>=56320&&n<57344}c(Lp,"surrogateLow");function Wp(n){return n>=55296&&n<56320}c(Wp,"surrogateHigh");function ue(n,e){let t=n.charCodeAt(e);if(!Wp(t)||e+1==n.length)return t;let i=n.charCodeAt(e+1);return Lp(i)?(t-55296<<10)+(i-56320)+65536:t}c(ue,"codePointAt");function un(n){return n<=65535?String.fromCharCode(n):(n-=65536,String.fromCharCode((n>>10)+55296,(n&1023)+56320))}c(un,"fromCodePoint");function Re(n){return n<65536?1:2}c(Re,"codePointSize");var to=/\r\n?|\n/,ae=(function(n){return n[n.Simple=0]="Simple",n[n.TrackDel=1]="TrackDel",n[n.TrackBefore=2]="TrackBefore",n[n.TrackAfter=3]="TrackAfter",n})(ae||(ae={})),Ot=class n{static{c(this,"ChangeDesc")}constructor(e){this.sections=e}get length(){let e=0;for(let t=0;te)return s+(e-r);s+=l}else{if(i!=ae.Simple&&h>=e&&(i==ae.TrackDel&&re||i==ae.TrackBefore&&re))return null;if(h>e||h==e&&t<0&&!l)return e==r||t<0?s:s+a;s+=a}r=h}if(e>r)throw new RangeError(`Position ${e} is out of range for changeset of length ${r}`);return s}touchesRange(e,t=e){for(let i=0,r=0;i=0&&r<=t&&l>=e)return rt?"cover":!0;r=l}return!1}toString(){let e="";for(let t=0;t=0?":"+r:"")}return e}toJSON(){return this.sections}static fromJSON(e){if(!Array.isArray(e)||e.length%2||e.some(t=>typeof t!="number"))throw new RangeError("Invalid JSON representation of ChangeDesc");return new n(e)}static create(e){return new n(e)}},be=class n extends Ot{static{c(this,"ChangeSet")}constructor(e,t){super(e),this.inserted=t}apply(e){if(this.length!=e.length)throw new RangeError("Applying change set to a document with the wrong length");return io(this,(t,i,r,s,o)=>e=e.replace(r,r+(i-t),o),!1),e}mapDesc(e,t=!1){return no(this,e,t,!0)}invert(e){let t=this.sections.slice(),i=[];for(let r=0,s=0;r=0){t[r]=l,t[r+1]=o;let a=r>>1;for(;i.length0&&$t(i,t,s.text),s.forward(f),l+=f}let h=e[o++];for(;l>1].toJSON()))}return e}static of(e,t,i){let r=[],s=[],o=0,l=null;function a(f=!1){if(!f&&!r.length)return;od||u<0||d>t)throw new RangeError(`Invalid change range ${u} to ${d} (in doc of length ${t})`);let p=O?typeof O=="string"?z.of(O.split(i||to)):O:z.empty,m=p.length;if(u==d&&m==0)return;uo&&me(r,u-o,-1),me(r,d-u,m),$t(s,r,p),o=d}}return c(h,"process"),h(e),a(!l),l}static empty(e){return new n(e?[e,-1]:[],[])}static fromJSON(e){if(!Array.isArray(e))throw new RangeError("Invalid JSON representation of ChangeSet");let t=[],i=[];for(let r=0;rl&&typeof o!="string"))throw new RangeError("Invalid JSON representation of ChangeSet");if(s.length==1)t.push(s[0],0);else{for(;i.length=0&&t<=0&&t==n[r+1]?n[r]+=e:r>=0&&e==0&&n[r]==0?n[r+1]+=t:i?(n[r]+=e,n[r+1]+=t):n.push(e,t)}c(me,"addSection");function $t(n,e,t){if(t.length==0)return;let i=e.length-2>>1;if(i>1])),!(t||o==n.sections.length||n.sections[o+1]<0);)l=n.sections[o++],a=n.sections[o++];e(r,h,s,f,u),r=h,s=f}}}c(io,"iterChanges");function no(n,e,t,i=!1){let r=[],s=i?[]:null,o=new Kt(n),l=new Kt(e);for(let a=-1;;){if(o.done&&l.len||l.done&&o.len)throw new Error("Mismatched change set lengths");if(o.ins==-1&&l.ins==-1){let h=Math.min(o.len,l.len);me(r,h,-1),o.forward(h),l.forward(h)}else if(l.ins>=0&&(o.ins<0||a==o.i||o.off==0&&(l.len=0&&a=0){let h=0,f=o.len;for(;f;)if(l.ins==-1){let u=Math.min(f,l.len);h+=u,f-=u,l.forward(u)}else if(l.ins==0&&l.lena||o.ins>=0&&o.len>a)&&(l||i.length>h),s.forward2(a),o.forward(a)}}}}c(Fh,"composeSets");var Kt=class{static{c(this,"SectionIter")}constructor(e){this.set=e,this.i=0,this.next()}next(){let{sections:e}=this.set;this.i>1;return t>=e.length?z.empty:e[t]}textBit(e){let{inserted:t}=this.set,i=this.i-2>>1;return i>=t.length&&!e?z.empty:t[i].slice(this.off,e==null?void 0:this.off+e)}forward(e){e==this.len?this.next():(this.len-=e,this.off+=e)}forward2(e){this.ins==-1?this.forward(e):e==this.ins?this.next():(this.ins-=e,this.off+=e)}},Gt=class n{static{c(this,"SelectionRange")}constructor(e,t,i,r){this.from=e,this.to=t,this.flags=i,this.goalColumn=r}get anchor(){return this.flags&32?this.to:this.from}get head(){return this.flags&32?this.from:this.to}get empty(){return this.from==this.to}get assoc(){return this.flags&8?-1:this.flags&16?1:0}get undirectional(){return(this.flags&64)>0}get bidiLevel(){let e=this.flags&7;return e==7?null:e}map(e,t=-1){let i,r;return this.empty?i=r=e.mapPos(this.from,t):(i=e.mapPos(this.from,1),r=e.mapPos(this.to,-1)),i==this.from&&r==this.to?this:new n(i,r,this.flags,this.goalColumn)}extend(e,t=e,i=0){if(e<=this.anchor&&t>=this.anchor)return b.range(e,t,void 0,void 0,i);let r=Math.abs(e-this.anchor)>Math.abs(t-this.anchor)?e:t;return b.range(this.anchor,r,void 0,void 0,i)}eq(e,t=!1){return this.anchor==e.anchor&&this.head==e.head&&this.goalColumn==e.goalColumn&&(!t||!this.empty||this.assoc==e.assoc)}toJSON(){return{anchor:this.anchor,head:this.head}}static fromJSON(e){if(!e||typeof e.anchor!="number"||typeof e.head!="number")throw new RangeError("Invalid JSON representation for SelectionRange");return b.range(e.anchor,e.head)}static create(e,t,i,r){return new n(e,t,i,r)}},b=class n{static{c(this,"EditorSelection")}constructor(e,t){this.ranges=e,this.mainIndex=t}map(e,t=-1){return e.empty?this:n.create(this.ranges.map(i=>i.map(e,t)),this.mainIndex)}eq(e,t=!1){if(this.ranges.length!=e.ranges.length||this.mainIndex!=e.mainIndex)return!1;for(let i=0;ie.toJSON()),main:this.mainIndex}}static fromJSON(e){if(!e||!Array.isArray(e.ranges)||typeof e.main!="number"||e.main>=e.ranges.length)throw new RangeError("Invalid JSON representation for EditorSelection");return new n(e.ranges.map(t=>Gt.fromJSON(t)),e.main)}static single(e,t=e){return new n([n.range(e,t)],0)}static create(e,t=0){if(e.length==0)throw new RangeError("A selection needs at least one range");for(let i=0,r=0;rr.from-s.from),t=e.indexOf(i);for(let r=1;rs.head?n.range(a,l):n.range(l,a))}}return new n(e,t)}};function Hh(n,e){for(let t of n.ranges)if(t.to>e)throw new RangeError("Selection points outside of document")}c(Hh,"checkSelection");var Oo=0,P=class n{static{c(this,"Facet")}constructor(e,t,i,r,s){this.combine=e,this.compareInput=t,this.compare=i,this.isStatic=r,this.id=Oo++,this.default=e([]),this.extensions=typeof s=="function"?s(this):s}get reader(){return this}static define(e={}){return new n(e.combine||(t=>t),e.compareInput||((t,i)=>t===i),e.compare||(e.combine?(t,i)=>t===i:po),!!e.static,e.enables)}of(e){return new wi([],this,0,e)}compute(e,t){if(this.isStatic)throw new Error("Can't compute a static facet");return new wi(e,this,1,t)}computeN(e,t){if(this.isStatic)throw new Error("Can't compute a static facet");return new wi(e,this,2,t)}from(e,t){return t||(t=c(i=>i,"get")),this.compute([e],i=>t(i.field(e)))}};function po(n,e){return n==e||n.length==e.length&&n.every((t,i)=>t===e[i])}c(po,"sameArray");var wi=class{static{c(this,"FacetProvider")}constructor(e,t,i,r){this.dependencies=e,this.facet=t,this.type=i,this.value=r,this.id=Oo++}dynamicSlot(e){var t;let i=this.value,r=this.facet.compareInput,s=this.id,o=e[s]>>1,l=this.type==2,a=!1,h=!1,f=[];for(let u of this.dependencies)u=="doc"?a=!0:u=="selection"?h=!0:(((t=e[u.id])!==null&&t!==void 0?t:1)&1)==0&&f.push(e[u.id]);return{create(u){return u.values[o]=i(u),1},update(u,d){if(a&&d.docChanged||h&&(d.docChanged||d.selection)||ro(u,f)){let O=i(u);if(l?!Ih(O,u.values[o],r):!r(O,u.values[o]))return u.values[o]=O,1}return 0},reconfigure:c((u,d)=>{let O,p=d.config.address[s];if(p!=null){let m=ur(d,p);if(this.dependencies.every(g=>g instanceof P?d.facet(g)===u.facet(g):g instanceof re?d.field(g,!1)==u.field(g,!1):!0)||(l?Ih(O=i(u),m,r):r(O=i(u),m)))return u.values[o]=m,0}else O=i(u);return u.values[o]=O,1},"reconfigure")}}get extension(){return this}};function Ih(n,e,t){if(n.length!=e.length)return!1;for(let i=0;in[a.id]),r=t.map(a=>a.type),s=i.filter(a=>!(a&1)),o=n[e.id]>>1;function l(a){let h=[];for(let f=0;fi===r),e);return e.provide&&(t.provides=e.provide(t)),t}create(e){let t=e.facet(nr).find(i=>i.field==this);return(t?.create||this.createF)(e)}slot(e){let t=e[this.id]>>1;return{create:c(i=>(i.values[t]=this.create(i),1),"create"),update:c((i,r)=>{let s=i.values[t],o=this.updateF(s,r);return this.compareF(s,o)?0:(i.values[t]=o,1)},"update"),reconfigure:c((i,r)=>{let s=i.facet(nr),o=r.facet(nr),l;return(l=s.find(a=>a.field==this))&&l!=o.find(a=>a.field==this)?(i.values[t]=l.create(i),1):r.config.address[this.id]!=null?(i.values[t]=r.field(this),0):(i.values[t]=this.create(i),1)},"reconfigure")}}init(e){return[this,nr.of({field:this,create:e})]}get extension(){return this}},Ut={lowest:4,low:3,default:2,high:1,highest:0};function ln(n){return e=>new hr(e,n)}c(ln,"prec");var qe={highest:ln(Ut.highest),high:ln(Ut.high),default:ln(Ut.default),low:ln(Ut.low),lowest:ln(Ut.lowest)},hr=class{static{c(this,"PrecExtension")}constructor(e,t){this.inner=e,this.prec=t}get extension(){return this}},cr=class n{static{c(this,"Compartment")}of(e){return new hn(this,e)}reconfigure(e){return n.reconfigure.of({compartment:this,extension:e})}get(e){return e.config.compartments.get(this)}},hn=class{static{c(this,"CompartmentInstance")}constructor(e,t){this.compartment=e,this.inner=t}get extension(){return this}},fr=class n{static{c(this,"Configuration")}constructor(e,t,i,r,s,o){for(this.base=e,this.compartments=t,this.dynamicSlots=i,this.address=r,this.staticValues=s,this.facets=o,this.statusTemplate=[];this.statusTemplate.length>1]}static resolve(e,t,i){let r=[],s=Object.create(null),o=new Map;for(let d of Vp(e,t,o))d instanceof re?r.push(d):(s[d.facet.id]||(s[d.facet.id]=[])).push(d);let l=Object.create(null),a=[],h=[];for(let d of r)l[d.id]=h.length<<1,h.push(O=>d.slot(O));let f=i?.config.facets;for(let d in s){let O=s[d],p=O[0].facet,m=f&&f[d]||[];if(O.every(g=>g.type==0))if(l[p.id]=a.length<<1|1,po(m,O))a.push(i.facet(p));else{let g=p.combine(O.map(y=>y.value));a.push(i&&p.compare(g,i.facet(p))?i.facet(p):g)}else{for(let g of O)g.type==0?(l[g.id]=a.length<<1|1,a.push(g.value)):(l[g.id]=h.length<<1,h.push(y=>g.dynamicSlot(y)));l[p.id]=h.length<<1,h.push(g=>Dp(g,p,O))}}let u=h.map(d=>d(l));return new n(e,o,u,l,a,s)}};function Vp(n,e,t){let i=[[],[],[],[],[]],r=new Map;function s(o,l){let a=r.get(o);if(a!=null){if(a<=l)return;let h=i[a].indexOf(o);h>-1&&i[a].splice(h,1),o instanceof hn&&t.delete(o.compartment)}if(r.set(o,l),Array.isArray(o))for(let h of o)s(h,l);else if(o instanceof hn){if(t.has(o.compartment))throw new RangeError("Duplicate use of compartment in extensions");let h=e.get(o.compartment)||o.inner;t.set(o.compartment,h),s(h,l)}else if(o instanceof hr)s(o.inner,o.prec);else if(o instanceof re)i[l].push(o),o.provides&&s(o.provides,l);else if(o instanceof wi)i[l].push(o),o.facet.extensions&&s(o.facet.extensions,Ut.default);else{let h=o.extension;if(!h)throw new Error(`Unrecognized extension value in extension set (${o}).`);if(h==o)throw new Error(`Unrecognized extension value in extension set (${o}). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks.`);s(h,l)}}return c(s,"inner"),s(n,Ut.default),i.reduce((o,l)=>o.concat(l))}c(Vp,"flatten");function an(n,e){if(e&1)return 2;let t=e>>1,i=n.status[t];if(i==4)throw new Error("Cyclic dependency between fields and/or facets");if(i&2)return i;n.status[t]=4;let r=n.computeSlot(n,n.config.dynamicSlots[t]);return n.status[t]=2|r}c(an,"ensureAddr");function ur(n,e){return e&1?n.config.staticValues[e>>1]:n.values[e>>1]}c(ur,"getAddr");var Kh=P.define(),so=P.define({combine:c(n=>n.some(e=>e),"combine"),static:!0}),Jh=P.define({combine:c(n=>n.length?n[0]:void 0,"combine"),static:!0}),ec=P.define(),tc=P.define(),ic=P.define(),nc=P.define({combine:c(n=>n.length?n[0]:!1,"combine")}),ve=class{static{c(this,"Annotation")}constructor(e,t){this.type=e,this.value=t}static define(){return new oo}},oo=class{static{c(this,"AnnotationType")}of(e){return new ve(this,e)}},lo=class{static{c(this,"StateEffectType")}constructor(e){this.map=e}of(e){return new R(this,e)}},R=class n{static{c(this,"StateEffect")}constructor(e,t){this.type=e,this.value=t}map(e){let t=this.type.map(this.value,e);return t===void 0?void 0:t==this.value?this:new n(this.type,t)}is(e){return this.type==e}static define(e={}){return new lo(e.map||(t=>t))}static mapEffects(e,t){if(!e.length)return e;let i=[];for(let r of e){let s=r.map(t);s&&i.push(s)}return i}};R.reconfigure=R.define();R.appendConfig=R.define();var oe=class n{static{c(this,"Transaction")}constructor(e,t,i,r,s,o){this.startState=e,this.changes=t,this.selection=i,this.effects=r,this.annotations=s,this.scrollIntoView=o,this._doc=null,this._state=null,i&&Hh(i,t.newLength),s.some(l=>l.type==n.time)||(this.annotations=s.concat(n.time.of(Date.now())))}static create(e,t,i,r,s,o){return new n(e,t,i,r,s,o)}get newDoc(){return this._doc||(this._doc=this.changes.apply(this.startState.doc))}get newSelection(){return this.selection||this.startState.selection.map(this.changes)}get state(){return this._state||this.startState.applyTransaction(this),this._state}annotation(e){for(let t of this.annotations)if(t.type==e)return t.value}get docChanged(){return!this.changes.empty}get reconfigured(){return this.startState.config!=this.state.config}isUserEvent(e){let t=this.annotation(n.userEvent);return!!(t&&(t==e||t.length>e.length&&t.slice(0,e.length)==e&&t[e.length]=="."))}};oe.time=ve.define();oe.userEvent=ve.define();oe.addToHistory=ve.define();oe.remote=ve.define();function qp(n,e){let t=[];for(let i=0,r=0;;){let s,o;if(i=n[i]))s=n[i++],o=n[i++];else if(r=0;r--){let s=i[r](n);s instanceof oe?n=s:Array.isArray(s)&&s.length==1&&s[0]instanceof oe?n=s[0]:n=sc(e,ki(s),!1)}return n}c(Bp,"filterTransaction");function Ip(n){let e=n.startState,t=e.facet(ic),i=n;for(let r=t.length-1;r>=0;r--){let s=t[r](n);s&&Object.keys(s).length&&(i=rc(i,ao(e,s,n.changes.newLength),!0))}return i==n?n:oe.create(e,n.changes,n.selection,i.effects,i.annotations,i.scrollIntoView)}c(Ip,"extendTransaction");var Np=[];function ki(n){return n==null?Np:Array.isArray(n)?n:[n]}c(ki,"asArray");var G=(function(n){return n[n.Word=0]="Word",n[n.Space=1]="Space",n[n.Other=2]="Other",n})(G||(G={})),Gp=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/,ho;try{ho=new RegExp("[\\p{Alphabetic}\\p{Number}_]","u")}catch{}function Up(n){if(ho)return ho.test(n);for(let e=0;e"\x80"&&(t.toUpperCase()!=t.toLowerCase()||Gp.test(t)))return!0}return!1}c(Up,"hasWordChar");function Fp(n){return e=>{if(!/\S/.test(e))return G.Space;if(Up(e))return G.Word;for(let t=0;t-1)return G.Word;return G.Other}}c(Fp,"makeCategorizer");var F=class n{static{c(this,"EditorState")}constructor(e,t,i,r,s,o){this.config=e,this.doc=t,this.selection=i,this.values=r,this.status=e.statusTemplate.slice(),this.computeSlot=s,o&&(o._state=this);for(let l=0;lr.set(h,a)),t=null),r.set(l.value.compartment,l.value.extension)):l.is(R.reconfigure)?(t=null,i=l.value):l.is(R.appendConfig)&&(t=null,i=ki(i).concat(l.value));let s;t?s=e.startState.values.slice():(t=fr.resolve(i,r,this),s=new n(t,this.doc,this.selection,t.dynamicSlots.map(()=>null),(a,h)=>h.reconfigure(a,this),null).values);let o=e.startState.facet(so)?e.newSelection:e.newSelection.asSingle();new n(t,e.newDoc,o,s,(l,a)=>a.update(l,e),e)}replaceSelection(e){return typeof e=="string"&&(e=this.toText(e)),this.changeByRange(t=>({changes:{from:t.from,to:t.to,insert:e},range:b.cursor(t.from+e.length)}))}changeByRange(e){let t=this.selection,i=e(t.ranges[0]),r=this.changes(i.changes),s=[i.range],o=ki(i.effects);for(let l=1;lo.spec.fromJSON(l,a)))}}return n.create({doc:e.doc,selection:b.fromJSON(e.selection),extensions:t.extensions?r.concat([t.extensions]):r})}static create(e={}){let t=fr.resolve(e.extensions||[],new Map),i=e.doc instanceof z?e.doc:z.of((e.doc||"").split(t.staticFacet(n.lineSeparator)||to)),r=e.selection?e.selection instanceof b?e.selection:b.single(e.selection.anchor,e.selection.head):b.single(0);return Hh(r,i.length),t.staticFacet(so)||(r=r.asSingle()),new n(t,i,r,t.dynamicSlots.map(()=>null),(s,o)=>o.create(s),null)}get tabSize(){return this.facet(n.tabSize)}get lineBreak(){return this.facet(n.lineSeparator)||` @@ -151,4 +151,4 @@ function setup(audio) { `,document.body.appendChild(n),n.querySelector("#add-file-cancel")?.addEventListener("click",()=>{n.close()}),n.querySelector("#add-file-form")?.addEventListener("submit",t=>{t.preventDefault();let i=n?.querySelector("#add-file-path"),r=new Set(D.map(o=>o.path)),s=i?.value.trim()??"";s.startsWith("/")||(s=`/${s}`),!(!s||s==="/"||Ep(s)||r.has(s))&&(D.push({path:s,content:""}),n.close(),Bt=!0,Th(D.length-1))}));let e=n.querySelector("#add-file-path");e&&(e.value=""),n.showModal(),e?.focus()}c(Ix,"addFile");function Nx(n){if(n===0||n>=D.length)return;let e=kt.value;e&&(D[N].content=e.state.doc.toString(),D.splice(n,1),n<=N&&(N=Math.max(0,N-1)),Bt=!0,on(D[N].content),It())}c(Nx,"removeFile");function It(){let n=document.getElementById("editor-tabs");if(!n)return;n.textContent="";let e=document.createElement("button");e.type="button",e.className="editor-tab editor-tab--add",e.title="Add file",e.innerHTML='',e.addEventListener("click",Ix);let t=c(()=>{let i=document.querySelector("#html-input-container .cm-gutters");if(!i)return;let r=i.getBoundingClientRect().width;r>0?e.style.width=`${r}px`:requestAnimationFrame(t)},"sizeAddButton");t(),n.append(e),D.forEach((i,r)=>{try{let s=document.createElement("div");s.role="button",s.tabIndex=0,s.className="editor-tab"+(r===N?" is-active":""),s.title=i.path,s.addEventListener("click",()=>Th(r)),s.addEventListener("keydown",l=>{(l.key==="Enter"||l.key===" ")&&(l.preventDefault(),Th(r))});let o=document.createElement("span");if(o.textContent=Vx(i.path),o.title="Double-click to rename",o.addEventListener("dblclick",l=>{l.stopPropagation();let a=document.createElement("input");a.type="text",a.value=i.path,a.className="editor-tab__rename editor-tab__rename--inline",o.replaceWith(a),a.focus(),a.select();let h=c(()=>{f||(f=!0,Bx(r,a.value),a.isConnected&&a.remove(),It())},"commit"),f=!1;a.addEventListener("keydown",u=>{u.key==="Enter"?(u.preventDefault(),h()):u.key==="Escape"&&(f=!0,a.isConnected&&a.remove(),It())}),a.addEventListener("blur",h)}),s.append(o),r!==0){let l=document.createElement("button");l.type="button",l.className="editor-tab__close",l.title="Remove file",l.innerHTML='',l.addEventListener("click",a=>{a.stopPropagation(),Nx(r)}),s.append(l)}n.append(s)}catch(s){console.error("editor: failed to build tab",i.path,s)}})}c(It,"renderTabs");async function Gx(n){let e=await Mh(n),t=e?.resources,i=e?.blocks,r;t&&Object.keys(t).length&&i?(r=[...Ah(t,i).entries()].map(([o,l])=>({path:o,content:Lx.decode(l.bytes)})),r.length||(r=[{path:"/",content:e.html}])):r=[{path:"/",content:e?.html??""}],D=r,N=0,D.sort((s,o)=>s.path==="/"?-1:o.path==="/"?1:s.path.localeCompare(o.path)),N=D.findIndex(s=>s.path==="/"),N<0&&(N=0),kt.value?.dispatch({effects:R.reconfigure.of([...tr,yi(D[N].path)])}),on(D[N].content),It()}c(Gx,"loadFacetFiles");function jp(n){D=(n==="prelude"?Wx:Mp).map(t=>({...t})),N=D.findIndex(t=>t.path==="/"),N<0&&(N=0),kt.value?.dispatch({effects:R.reconfigure.of([...tr,yi(D[N].path)])}),on(D[N].content),Bt=!1,It()}c(jp,"applyDefaultTemplateForKind");function Ux(n){Si.value=null;let e=document.querySelector("#kind-input");e&&(e.value=n),jp(n),globalThis.scrollTo({top:0})}c(Ux,"loadDefaultExample");function wk(){let n=document.body.querySelector("#html-input-container");if(!n)throw new Error("Editor container not found");let e=document.createElement("div");e.id="editor-tabs",e.className="editor-tabs",n.before(e);let t=new v({parent:n,doc:"",extensions:[...tr,yi("/")]});return kt.value=t,D=Mp.map(i=>({...i})),N=0,Bt=!1,on(D[0].content),It(),t}c(wk,"renderEditor");var Fx=c(n=>async e=>{e.preventDefault();let t=document.querySelector("#name-input"),i=document.querySelector("#description-input"),r=document.querySelector("#kind-input");D[N].content=n.state.doc.toString();let s={};for(let u of D)s[u.path]=u.content;let o=Rh(s),l=t?.value??"nameless",a=i?.value??"",h=r?.value??"interactive",f=Si.value?{...Si.value,blocks:o.blocks,description:a,kind:h,name:l,resources:o.resources}:{$type:"sh.diffuse.output.facet",id:Xh(),blocks:o.blocks,description:a,kind:h,name:l,resources:o.resources};switch(Si.value=f,e.submitter.name){case"save":await Fs(f);break;case"save+open":await Fs(f),globalThis.open(`./l/?id=${f.id}`,"blank");break}},"onBuildSubmit");async function Ch(n){let e={...n},t=document.querySelector("#name-input"),i=document.querySelector("#description-input"),r=document.querySelector("#kind-input");if(!t)return;let s=new URL(location.href),o=s.searchParams.get("id");o&&e.id!==o&&(s.searchParams.delete("id"),history.replaceState(null,"",s)),document.querySelector("#code")?.scrollIntoView(),sn(!0),await Gx(e),sn(!1),Si.value=e,t.value=e.name,r&&(r.value=e.kind??"interactive"),i&&(i.value=e.description??"")}c(Ch,"editFacet");function kk(){let n=kt.value;if(!n)return;document.querySelector("#code-form")?.addEventListener("submit",Fx(n));let e=document.querySelector("#kind-input");e?.addEventListener("change",()=>{Si.value||Bt||jp(e?.value??"interactive")});let t=document.querySelector("#import-button"),i=document.querySelector("#import-input");t?.addEventListener("click",()=>i?.click()),i?.addEventListener("change",async r=>{let s=r.target.files?.[0];if(!s)return;let o=await s.text();D[N].content=o,Bt=!0,on(o)})}c(kk,"handleBuildFormSubmit");var Rp=!1;function $k(){Rp||(Rp=!0,document.body.addEventListener("click",async n=>{let e=n.target,t=e.getAttribute("rel");if(!t)return;let i=e.closest("li");if(!i)return;if(t==="edit"&&i.dataset.kind&&!i.dataset.uri){Ux(i.dataset.kind);return}let r=i.getAttribute("data-uri");if(!r)return;let s=i.getAttribute("data-name");if(!s)return;let o=i.getAttribute("data-kind")??void 0;if(t==="edit"){sn(!0);let l=await Us({kind:o,name:s,uri:r},{fetchHTML:!0});sn(!1),Ch(l),globalThis.scrollTo({top:0})}}))}c($k,"listenForExamplesEdit");async function vk(){let n=new URLSearchParams(location.search),e=n.get("id"),t=n.get("uri");Si.value=null,sn(!0);try{if(e){let i=await jh(),s=(await Eh(i.facets)).find(o=>o.id===e);s&&await Ch(s)}else if(t){let i=await Us({uri:t,name:n.get("name")??"",kind:n.get("kind")??void 0,description:n.get("description")??void 0},{fetchHTML:!0});await Ch(i)}}finally{sn(!1)}}c(vk,"editFacetFromURL");export{Dx as a,Qk as b,wk as c,kk as d,$k as e,vk as f}; -//# sourceMappingURL=./chunk-SB4RVSLI.js.map \ No newline at end of file +//# sourceMappingURL=./chunk-BVWJMJYM.js.map \ No newline at end of file diff --git a/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-BVWJMJYM.js.br b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-BVWJMJYM.js.br new file mode 100644 index 0000000000000000000000000000000000000000..1ff5b002da98e032b828ba347c6084a5d35a243f GIT binary patch literal 192328 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 {\n // Compressed representation of the Grapheme_Cluster_Break=Extend\n // information from\n // http://www.unicode.org/Public/17.0.0/ucd/auxiliary/GraphemeBreakProperty.txt.\n // Each pair of elements represents a range, as an offet from the\n // previous range and a length. Numbers are in base-36, with the empty\n // string being a shorthand for 1. See bin/build-extenders.js.\n let numbers = \"lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2,2,,4,z,,u,r,2j,b,1m,9,9,,o,4,,9,,3,,5,17,3,1n,9,16,o,,x,1i,3,,i,,7,a,2,t,3,1k,,,7,2,2,2,3,9,,a,2,q,,2,3,1k,,,5,4,2,2,3,3,,u,2,3,,b,3,1k,,,8,,3,,3,k,2,m,6,,3,1k,,,7,2,2,2,3,7,3,a,2,u,,1n,5,3,3,,4,9,,14,5,1j,,,7,,3,,4,7,2,b,2,t,3,1k,,,7,,3,,4,7,2,b,2,f,,c,4,1j,2,,7,,3,,4,9,,a,2,t,3,1y,,4,6,,,,8,i,2,1p,,,8,c,8,2q,,,a,b,7,21,2,r,,,,,,4,2,1d,k,,2,5,b,,10,9,,2u,b,,6,n,4,4,3,g,4,d,,,3,6,,f,,jj,3,qa,4,s,3,t,2,u,2,1s,w,9,,19,3,,,39,2,y,,3a,c,4,c,63,5,1l,a,,,,,2,o,2,,1c,1a,2,c,k,5,1b,h,12,9,c,3,u,d,1k,e,1c,k,48,3,,l,4,,6,,2,3,5i,1s,ek,,5f,x,2da,3,3x,,2o,w,fe,6,2x,2,n9w,4,,a,w,2,28,2,7k,,3,,4,,n,5,4,,2b,2,1e,i,q,i,d,,12,8,p,d,18,4,1b,e,10,,1v,e,c,,8,2,1a,,1f,,,3,2,2,5,2,,,15,5,5,2,6k,8,,2,fn4,,kh,g,g,g,a6,2,gt,,6a,,45,5,1ae,3,,2,5,4,14,3,4,,4l,2,fx,4,1t,5,8t,2,25,6,1y,b,1d,4,3e,3,1h,f,15,,2,2,a,4,19,b,7,,1p,3,10,e,g,2,18,,c,3,1c,e,8,4,,2,2k,c,6,,2,,4d,c,l,4,1j,2,,7,2,2,2,3,9,,a,2,2,7,3,5,1v,9,,,2,,,4,,5,,,e,2,2a,i,n,,29,k,6j,7,2,9,r,2,2a,h,2y,d,2t,3,2,a,74,f,6t,6,,2,2,4,,,,2,3x,7,2,7,3,,s,a,14,7,,4,8,,9,b,1a,g,5i,8,5j,8,,8,2a,m,,e,3e,6,3,,,2,,7,,,1u,5,,2,,5,9n,4,9,2,,,1c,7,3,5,n,,44l,,6,f,8ug,i,1xc,5,1n,7,t4,,,1j,7,4,29,,b,2,f57,2,3mp,1a,2,n,f2,5,3,6,8,8,2,7,u,4,44,3,1iz,1j,4,1e,8,,e,,m,5,,f,11s,7,,h,2,7,,2,,5,2s,,4g,7,af,,1p,4,e4,4,72,2,6r,,2,,7,2,5,,d6,7,31,7,240,5\".split(\",\").map(s => s ? parseInt(s, 36) : 1)\n for (let i = 0, n = 0; i < numbers.length; i++)\n (i % 2 ? rangeTo : rangeFrom).push(n = n + numbers[i])\n})()\n\nexport function isExtendingChar(code) {\n if (code < 768) return false\n for (let from = 0, to = rangeFrom.length;;) {\n let mid = (from + to) >> 1\n if (code < rangeFrom[mid]) to = mid\n else if (code >= rangeTo[mid]) from = mid + 1\n else return true\n if (from == to) return false\n }\n}\n\nfunction isRegionalIndicator(code) {\n return code >= 0x1F1E6 && code <= 0x1F1FF\n}\n\nfunction check(code) {\n for (let i = 0; i < rangeFrom.length; i++) {\n if (rangeTo[i] > code) return rangeFrom[i] <= code\n }\n return false\n}\n\nconst ZWJ = 0x200d\n\nexport function findClusterBreak(str, pos, forward = true, includeExtending = true) {\n return (forward ? nextClusterBreak : prevClusterBreak)(str, pos, includeExtending)\n}\n\nfunction nextClusterBreak(str, pos, includeExtending) {\n if (pos == str.length) return pos\n // If pos is in the middle of a surrogate pair, move to its start\n if (pos && surrogateLow(str.charCodeAt(pos)) && surrogateHigh(str.charCodeAt(pos - 1))) pos--\n let prev = codePointAt(str, pos)\n pos += codePointSize(prev)\n while (pos < str.length) {\n let next = codePointAt(str, pos)\n if (prev == ZWJ || next == ZWJ || includeExtending && isExtendingChar(next)) {\n pos += codePointSize(next)\n prev = next\n } else if (isRegionalIndicator(next)) {\n let countBefore = 0, i = pos - 2\n while (i >= 0 && isRegionalIndicator(codePointAt(str, i))) { countBefore++; i -= 2 }\n if (countBefore % 2 == 0) break\n else pos += 2\n } else {\n break\n }\n }\n return pos\n}\n\nfunction prevClusterBreak(str, pos, includeExtending) {\n while (pos > 1) {\n let found = nextClusterBreak(str, pos - 2, includeExtending)\n if (found < pos) return found\n pos--\n }\n return 0\n}\n\nfunction codePointAt(str, pos) {\n let code0 = str.charCodeAt(pos)\n if (!surrogateHigh(code0) || pos + 1 == str.length) return code0\n let code1 = str.charCodeAt(pos + 1)\n if (!surrogateLow(code1)) return code0\n return ((code0 - 0xd800) << 10) + (code1 - 0xdc00) + 0x10000\n}\n\nfunction surrogateLow(ch) { return ch >= 0xDC00 && ch < 0xE000 }\nfunction surrogateHigh(ch) { return ch >= 0xD800 && ch < 0xDC00 }\nfunction codePointSize(code) { return code < 0x10000 ? 1 : 2 }\n","import { findClusterBreak as findClusterBreak$1 } from '@marijn/find-cluster-break';\n\n/**\nThe data structure for documents. @nonabstract\n*/\nclass Text {\n /**\n Get the line description around the given position.\n */\n lineAt(pos) {\n if (pos < 0 || pos > this.length)\n throw new RangeError(`Invalid position ${pos} in document of length ${this.length}`);\n return this.lineInner(pos, false, 1, 0);\n }\n /**\n Get the description for the given (1-based) line number.\n */\n line(n) {\n if (n < 1 || n > this.lines)\n throw new RangeError(`Invalid line number ${n} in ${this.lines}-line document`);\n return this.lineInner(n, true, 1, 0);\n }\n /**\n Replace a range of the text with the given content.\n */\n replace(from, to, text) {\n [from, to] = clip(this, from, to);\n let parts = [];\n this.decompose(0, from, parts, 2 /* Open.To */);\n if (text.length)\n text.decompose(0, text.length, parts, 1 /* Open.From */ | 2 /* Open.To */);\n this.decompose(to, this.length, parts, 1 /* Open.From */);\n return TextNode.from(parts, this.length - (to - from) + text.length);\n }\n /**\n Append another document to this one.\n */\n append(other) {\n return this.replace(this.length, this.length, other);\n }\n /**\n Retrieve the text between the given points.\n */\n slice(from, to = this.length) {\n [from, to] = clip(this, from, to);\n let parts = [];\n this.decompose(from, to, parts, 0);\n return TextNode.from(parts, to - from);\n }\n /**\n Test whether this text is equal to another instance.\n */\n eq(other) {\n if (other == this)\n return true;\n if (other.length != this.length || other.lines != this.lines)\n return false;\n let start = this.scanIdentical(other, 1), end = this.length - this.scanIdentical(other, -1);\n let a = new RawTextCursor(this), b = new RawTextCursor(other);\n for (let skip = start, pos = start;;) {\n a.next(skip);\n b.next(skip);\n skip = 0;\n if (a.lineBreak != b.lineBreak || a.done != b.done || a.value != b.value)\n return false;\n pos += a.value.length;\n if (a.done || pos >= end)\n return true;\n }\n }\n /**\n Iterate over the text. When `dir` is `-1`, iteration happens\n from end to start. This will return lines and the breaks between\n them as separate strings.\n */\n iter(dir = 1) { return new RawTextCursor(this, dir); }\n /**\n Iterate over a range of the text. When `from` > `to`, the\n iterator will run in reverse.\n */\n iterRange(from, to = this.length) { return new PartialTextCursor(this, from, to); }\n /**\n Return a cursor that iterates over the given range of lines,\n _without_ returning the line breaks between, and yielding empty\n strings for empty lines.\n \n When `from` and `to` are given, they should be 1-based line numbers.\n */\n iterLines(from, to) {\n let inner;\n if (from == null) {\n inner = this.iter();\n }\n else {\n if (to == null)\n to = this.lines + 1;\n let start = this.line(from).from;\n inner = this.iterRange(start, Math.max(start, to == this.lines + 1 ? this.length : to <= 1 ? 0 : this.line(to - 1).to));\n }\n return new LineCursor(inner);\n }\n /**\n Return the document as a string, using newline characters to\n separate lines.\n */\n toString() { return this.sliceString(0); }\n /**\n Convert the document to an array of lines (which can be\n deserialized again via [`Text.of`](https://codemirror.net/6/docs/ref/#state.Text^of)).\n */\n toJSON() {\n let lines = [];\n this.flatten(lines);\n return lines;\n }\n /**\n @internal\n */\n constructor() { }\n /**\n Create a `Text` instance for the given array of lines.\n */\n static of(text) {\n if (text.length == 0)\n throw new RangeError(\"A document must have at least one line\");\n if (text.length == 1 && !text[0])\n return Text.empty;\n return text.length <= 32 /* Tree.Branch */ ? new TextLeaf(text) : TextNode.from(TextLeaf.split(text, []));\n }\n}\n// Leaves store an array of line strings. There are always line breaks\n// between these strings. Leaves are limited in size and have to be\n// contained in TextNode instances for bigger documents.\nclass TextLeaf extends Text {\n constructor(text, length = textLength(text)) {\n super();\n this.text = text;\n this.length = length;\n }\n get lines() { return this.text.length; }\n get children() { return null; }\n lineInner(target, isLine, line, offset) {\n for (let i = 0;; i++) {\n let string = this.text[i], end = offset + string.length;\n if ((isLine ? line : end) >= target)\n return new Line(offset, end, line, string);\n offset = end + 1;\n line++;\n }\n }\n decompose(from, to, target, open) {\n let text = from <= 0 && to >= this.length ? this\n : new TextLeaf(sliceText(this.text, from, to), Math.min(to, this.length) - Math.max(0, from));\n if (open & 1 /* Open.From */) {\n let prev = target.pop();\n let joined = appendText(text.text, prev.text.slice(), 0, text.length);\n if (joined.length <= 32 /* Tree.Branch */) {\n target.push(new TextLeaf(joined, prev.length + text.length));\n }\n else {\n let mid = joined.length >> 1;\n target.push(new TextLeaf(joined.slice(0, mid)), new TextLeaf(joined.slice(mid)));\n }\n }\n else {\n target.push(text);\n }\n }\n replace(from, to, text) {\n if (!(text instanceof TextLeaf))\n return super.replace(from, to, text);\n [from, to] = clip(this, from, to);\n let lines = appendText(this.text, appendText(text.text, sliceText(this.text, 0, from)), to);\n let newLen = this.length + text.length - (to - from);\n if (lines.length <= 32 /* Tree.Branch */)\n return new TextLeaf(lines, newLen);\n return TextNode.from(TextLeaf.split(lines, []), newLen);\n }\n sliceString(from, to = this.length, lineSep = \"\\n\") {\n [from, to] = clip(this, from, to);\n let result = \"\";\n for (let pos = 0, i = 0; pos <= to && i < this.text.length; i++) {\n let line = this.text[i], end = pos + line.length;\n if (pos > from && i)\n result += lineSep;\n if (from < end && to > pos)\n result += line.slice(Math.max(0, from - pos), to - pos);\n pos = end + 1;\n }\n return result;\n }\n flatten(target) {\n for (let line of this.text)\n target.push(line);\n }\n scanIdentical() { return 0; }\n static split(text, target) {\n let part = [], len = -1;\n for (let line of text) {\n part.push(line);\n len += line.length + 1;\n if (part.length == 32 /* Tree.Branch */) {\n target.push(new TextLeaf(part, len));\n part = [];\n len = -1;\n }\n }\n if (len > -1)\n target.push(new TextLeaf(part, len));\n return target;\n }\n}\n// Nodes provide the tree structure of the `Text` type. They store a\n// number of other nodes or leaves, taking care to balance themselves\n// on changes. There are implied line breaks _between_ the children of\n// a node (but not before the first or after the last child).\nclass TextNode extends Text {\n constructor(children, length) {\n super();\n this.children = children;\n this.length = length;\n this.lines = 0;\n for (let child of children)\n this.lines += child.lines;\n }\n lineInner(target, isLine, line, offset) {\n for (let i = 0;; i++) {\n let child = this.children[i], end = offset + child.length, endLine = line + child.lines - 1;\n if ((isLine ? endLine : end) >= target)\n return child.lineInner(target, isLine, line, offset);\n offset = end + 1;\n line = endLine + 1;\n }\n }\n decompose(from, to, target, open) {\n for (let i = 0, pos = 0; pos <= to && i < this.children.length; i++) {\n let child = this.children[i], end = pos + child.length;\n if (from <= end && to >= pos) {\n let childOpen = open & ((pos <= from ? 1 /* Open.From */ : 0) | (end >= to ? 2 /* Open.To */ : 0));\n if (pos >= from && end <= to && !childOpen)\n target.push(child);\n else\n child.decompose(from - pos, to - pos, target, childOpen);\n }\n pos = end + 1;\n }\n }\n replace(from, to, text) {\n [from, to] = clip(this, from, to);\n if (text.lines < this.lines)\n for (let i = 0, pos = 0; i < this.children.length; i++) {\n let child = this.children[i], end = pos + child.length;\n // Fast path: if the change only affects one child and the\n // child's size remains in the acceptable range, only update\n // that child\n if (from >= pos && to <= end) {\n let updated = child.replace(from - pos, to - pos, text);\n let totalLines = this.lines - child.lines + updated.lines;\n if (updated.lines < (totalLines >> (5 /* Tree.BranchShift */ - 1)) &&\n updated.lines > (totalLines >> (5 /* Tree.BranchShift */ + 1))) {\n let copy = this.children.slice();\n copy[i] = updated;\n return new TextNode(copy, this.length - (to - from) + text.length);\n }\n return super.replace(pos, end, updated);\n }\n pos = end + 1;\n }\n return super.replace(from, to, text);\n }\n sliceString(from, to = this.length, lineSep = \"\\n\") {\n [from, to] = clip(this, from, to);\n let result = \"\";\n for (let i = 0, pos = 0; i < this.children.length && pos <= to; i++) {\n let child = this.children[i], end = pos + child.length;\n if (pos > from && i)\n result += lineSep;\n if (from < end && to > pos)\n result += child.sliceString(from - pos, to - pos, lineSep);\n pos = end + 1;\n }\n return result;\n }\n flatten(target) {\n for (let child of this.children)\n child.flatten(target);\n }\n scanIdentical(other, dir) {\n if (!(other instanceof TextNode))\n return 0;\n let length = 0;\n let [iA, iB, eA, eB] = dir > 0 ? [0, 0, this.children.length, other.children.length]\n : [this.children.length - 1, other.children.length - 1, -1, -1];\n for (;; iA += dir, iB += dir) {\n if (iA == eA || iB == eB)\n return length;\n let chA = this.children[iA], chB = other.children[iB];\n if (chA != chB)\n return length + chA.scanIdentical(chB, dir);\n length += chA.length + 1;\n }\n }\n static from(children, length = children.reduce((l, ch) => l + ch.length + 1, -1)) {\n let lines = 0;\n for (let ch of children)\n lines += ch.lines;\n if (lines < 32 /* Tree.Branch */) {\n let flat = [];\n for (let ch of children)\n ch.flatten(flat);\n return new TextLeaf(flat, length);\n }\n let chunk = Math.max(32 /* Tree.Branch */, lines >> 5 /* Tree.BranchShift */), maxChunk = chunk << 1, minChunk = chunk >> 1;\n let chunked = [], currentLines = 0, currentLen = -1, currentChunk = [];\n function add(child) {\n let last;\n if (child.lines > maxChunk && child instanceof TextNode) {\n for (let node of child.children)\n add(node);\n }\n else if (child.lines > minChunk && (currentLines > minChunk || !currentLines)) {\n flush();\n chunked.push(child);\n }\n else if (child instanceof TextLeaf && currentLines &&\n (last = currentChunk[currentChunk.length - 1]) instanceof TextLeaf &&\n child.lines + last.lines <= 32 /* Tree.Branch */) {\n currentLines += child.lines;\n currentLen += child.length + 1;\n currentChunk[currentChunk.length - 1] = new TextLeaf(last.text.concat(child.text), last.length + 1 + child.length);\n }\n else {\n if (currentLines + child.lines > chunk)\n flush();\n currentLines += child.lines;\n currentLen += child.length + 1;\n currentChunk.push(child);\n }\n }\n function flush() {\n if (currentLines == 0)\n return;\n chunked.push(currentChunk.length == 1 ? currentChunk[0] : TextNode.from(currentChunk, currentLen));\n currentLen = -1;\n currentLines = currentChunk.length = 0;\n }\n for (let child of children)\n add(child);\n flush();\n return chunked.length == 1 ? chunked[0] : new TextNode(chunked, length);\n }\n}\nText.empty = /*@__PURE__*/new TextLeaf([\"\"], 0);\nfunction textLength(text) {\n let length = -1;\n for (let line of text)\n length += line.length + 1;\n return length;\n}\nfunction appendText(text, target, from = 0, to = 1e9) {\n for (let pos = 0, i = 0, first = true; i < text.length && pos <= to; i++) {\n let line = text[i], end = pos + line.length;\n if (end >= from) {\n if (end > to)\n line = line.slice(0, to - pos);\n if (pos < from)\n line = line.slice(from - pos);\n if (first) {\n target[target.length - 1] += line;\n first = false;\n }\n else\n target.push(line);\n }\n pos = end + 1;\n }\n return target;\n}\nfunction sliceText(text, from, to) {\n return appendText(text, [\"\"], from, to);\n}\nclass RawTextCursor {\n constructor(text, dir = 1) {\n this.dir = dir;\n this.done = false;\n this.lineBreak = false;\n this.value = \"\";\n this.nodes = [text];\n this.offsets = [dir > 0 ? 1 : (text instanceof TextLeaf ? text.text.length : text.children.length) << 1];\n }\n nextInner(skip, dir) {\n this.done = this.lineBreak = false;\n for (;;) {\n let last = this.nodes.length - 1;\n let top = this.nodes[last], offsetValue = this.offsets[last], offset = offsetValue >> 1;\n let size = top instanceof TextLeaf ? top.text.length : top.children.length;\n if (offset == (dir > 0 ? size : 0)) {\n if (last == 0) {\n this.done = true;\n this.value = \"\";\n return this;\n }\n if (dir > 0)\n this.offsets[last - 1]++;\n this.nodes.pop();\n this.offsets.pop();\n }\n else if ((offsetValue & 1) == (dir > 0 ? 0 : 1)) {\n this.offsets[last] += dir;\n if (skip == 0) {\n this.lineBreak = true;\n this.value = \"\\n\";\n return this;\n }\n skip--;\n }\n else if (top instanceof TextLeaf) {\n // Move to the next string\n let next = top.text[offset + (dir < 0 ? -1 : 0)];\n this.offsets[last] += dir;\n if (next.length > Math.max(0, skip)) {\n this.value = skip == 0 ? next : dir > 0 ? next.slice(skip) : next.slice(0, next.length - skip);\n return this;\n }\n skip -= next.length;\n }\n else {\n let next = top.children[offset + (dir < 0 ? -1 : 0)];\n if (skip > next.length) {\n skip -= next.length;\n this.offsets[last] += dir;\n }\n else {\n if (dir < 0)\n this.offsets[last]--;\n this.nodes.push(next);\n this.offsets.push(dir > 0 ? 1 : (next instanceof TextLeaf ? next.text.length : next.children.length) << 1);\n }\n }\n }\n }\n next(skip = 0) {\n if (skip < 0) {\n this.nextInner(-skip, (-this.dir));\n skip = this.value.length;\n }\n return this.nextInner(skip, this.dir);\n }\n}\nclass PartialTextCursor {\n constructor(text, start, end) {\n this.value = \"\";\n this.done = false;\n this.cursor = new RawTextCursor(text, start > end ? -1 : 1);\n this.pos = start > end ? text.length : 0;\n this.from = Math.min(start, end);\n this.to = Math.max(start, end);\n }\n nextInner(skip, dir) {\n if (dir < 0 ? this.pos <= this.from : this.pos >= this.to) {\n this.value = \"\";\n this.done = true;\n return this;\n }\n skip += Math.max(0, dir < 0 ? this.pos - this.to : this.from - this.pos);\n let limit = dir < 0 ? this.pos - this.from : this.to - this.pos;\n if (skip > limit)\n skip = limit;\n limit -= skip;\n let { value } = this.cursor.next(skip);\n this.pos += (value.length + skip) * dir;\n this.value = value.length <= limit ? value : dir < 0 ? value.slice(value.length - limit) : value.slice(0, limit);\n this.done = !this.value;\n return this;\n }\n next(skip = 0) {\n if (skip < 0)\n skip = Math.max(skip, this.from - this.pos);\n else if (skip > 0)\n skip = Math.min(skip, this.to - this.pos);\n return this.nextInner(skip, this.cursor.dir);\n }\n get lineBreak() { return this.cursor.lineBreak && this.value != \"\"; }\n}\nclass LineCursor {\n constructor(inner) {\n this.inner = inner;\n this.afterBreak = true;\n this.value = \"\";\n this.done = false;\n }\n next(skip = 0) {\n let { done, lineBreak, value } = this.inner.next(skip);\n if (done && this.afterBreak) {\n this.value = \"\";\n this.afterBreak = false;\n }\n else if (done) {\n this.done = true;\n this.value = \"\";\n }\n else if (lineBreak) {\n if (this.afterBreak) {\n this.value = \"\";\n }\n else {\n this.afterBreak = true;\n this.next();\n }\n }\n else {\n this.value = value;\n this.afterBreak = false;\n }\n return this;\n }\n get lineBreak() { return false; }\n}\nif (typeof Symbol != \"undefined\") {\n Text.prototype[Symbol.iterator] = function () { return this.iter(); };\n RawTextCursor.prototype[Symbol.iterator] = PartialTextCursor.prototype[Symbol.iterator] =\n LineCursor.prototype[Symbol.iterator] = function () { return this; };\n}\n/**\nThis type describes a line in the document. It is created\non-demand when lines are [queried](https://codemirror.net/6/docs/ref/#state.Text.lineAt).\n*/\nclass Line {\n /**\n @internal\n */\n constructor(\n /**\n The position of the start of the line.\n */\n from, \n /**\n The position at the end of the line (_before_ the line break,\n or at the end of document for the last line).\n */\n to, \n /**\n This line's line number (1-based).\n */\n number, \n /**\n The line's content.\n */\n text) {\n this.from = from;\n this.to = to;\n this.number = number;\n this.text = text;\n }\n /**\n The length of the line (not including any line break after it).\n */\n get length() { return this.to - this.from; }\n}\nfunction clip(text, from, to) {\n from = Math.max(0, Math.min(text.length, from));\n return [from, Math.max(from, Math.min(text.length, to))];\n}\n\n/**\nReturns a next grapheme cluster break _after_ (not equal to)\n`pos`, if `forward` is true, or before otherwise. Returns `pos`\nitself if no further cluster break is available in the string.\nMoves across surrogate pairs, extending characters (when\n`includeExtending` is true), characters joined with zero-width\njoiners, and flag emoji.\n*/\nfunction findClusterBreak(str, pos, forward = true, includeExtending = true) {\n return findClusterBreak$1(str, pos, forward, includeExtending);\n}\nfunction surrogateLow(ch) { return ch >= 0xDC00 && ch < 0xE000; }\nfunction surrogateHigh(ch) { return ch >= 0xD800 && ch < 0xDC00; }\n/**\nFind the code point at the given position in a string (like the\n[`codePointAt`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/codePointAt)\nstring method).\n*/\nfunction codePointAt(str, pos) {\n let code0 = str.charCodeAt(pos);\n if (!surrogateHigh(code0) || pos + 1 == str.length)\n return code0;\n let code1 = str.charCodeAt(pos + 1);\n if (!surrogateLow(code1))\n return code0;\n return ((code0 - 0xd800) << 10) + (code1 - 0xdc00) + 0x10000;\n}\n/**\nGiven a Unicode codepoint, return the JavaScript string that\nrespresents it (like\n[`String.fromCodePoint`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/fromCodePoint)).\n*/\nfunction fromCodePoint(code) {\n if (code <= 0xffff)\n return String.fromCharCode(code);\n code -= 0x10000;\n return String.fromCharCode((code >> 10) + 0xd800, (code & 1023) + 0xdc00);\n}\n/**\nThe amount of positions a character takes up in a JavaScript string.\n*/\nfunction codePointSize(code) { return code < 0x10000 ? 1 : 2; }\n\nconst DefaultSplit = /\\r\\n?|\\n/;\n/**\nDistinguishes different ways in which positions can be mapped.\n*/\nvar MapMode = /*@__PURE__*/(function (MapMode) {\n /**\n Map a position to a valid new position, even when its context\n was deleted.\n */\n MapMode[MapMode[\"Simple\"] = 0] = \"Simple\";\n /**\n Return null if deletion happens across the position.\n */\n MapMode[MapMode[\"TrackDel\"] = 1] = \"TrackDel\";\n /**\n Return null if the character _before_ the position is deleted.\n */\n MapMode[MapMode[\"TrackBefore\"] = 2] = \"TrackBefore\";\n /**\n Return null if the character _after_ the position is deleted.\n */\n MapMode[MapMode[\"TrackAfter\"] = 3] = \"TrackAfter\";\nreturn MapMode})(MapMode || (MapMode = {}));\n/**\nA change description is a variant of [change set](https://codemirror.net/6/docs/ref/#state.ChangeSet)\nthat doesn't store the inserted text. As such, it can't be\napplied, but is cheaper to store and manipulate.\n*/\nclass ChangeDesc {\n // Sections are encoded as pairs of integers. The first is the\n // length in the current document, and the second is -1 for\n // unaffected sections, and the length of the replacement content\n // otherwise. So an insertion would be (0, n>0), a deletion (n>0,\n // 0), and a replacement two positive numbers.\n /**\n @internal\n */\n constructor(\n /**\n @internal\n */\n sections) {\n this.sections = sections;\n }\n /**\n The length of the document before the change.\n */\n get length() {\n let result = 0;\n for (let i = 0; i < this.sections.length; i += 2)\n result += this.sections[i];\n return result;\n }\n /**\n The length of the document after the change.\n */\n get newLength() {\n let result = 0;\n for (let i = 0; i < this.sections.length; i += 2) {\n let ins = this.sections[i + 1];\n result += ins < 0 ? this.sections[i] : ins;\n }\n return result;\n }\n /**\n False when there are actual changes in this set.\n */\n get empty() { return this.sections.length == 0 || this.sections.length == 2 && this.sections[1] < 0; }\n /**\n Iterate over the unchanged parts left by these changes. `posA`\n provides the position of the range in the old document, `posB`\n the new position in the changed document.\n */\n iterGaps(f) {\n for (let i = 0, posA = 0, posB = 0; i < this.sections.length;) {\n let len = this.sections[i++], ins = this.sections[i++];\n if (ins < 0) {\n f(posA, posB, len);\n posB += len;\n }\n else {\n posB += ins;\n }\n posA += len;\n }\n }\n /**\n Iterate over the ranges changed by these changes. (See\n [`ChangeSet.iterChanges`](https://codemirror.net/6/docs/ref/#state.ChangeSet.iterChanges) for a\n variant that also provides you with the inserted text.)\n `fromA`/`toA` provides the extent of the change in the starting\n document, `fromB`/`toB` the extent of the replacement in the\n changed document.\n \n When `individual` is true, adjacent changes (which are kept\n separate for [position mapping](https://codemirror.net/6/docs/ref/#state.ChangeDesc.mapPos)) are\n reported separately.\n */\n iterChangedRanges(f, individual = false) {\n iterChanges(this, f, individual);\n }\n /**\n Get a description of the inverted form of these changes.\n */\n get invertedDesc() {\n let sections = [];\n for (let i = 0; i < this.sections.length;) {\n let len = this.sections[i++], ins = this.sections[i++];\n if (ins < 0)\n sections.push(len, ins);\n else\n sections.push(ins, len);\n }\n return new ChangeDesc(sections);\n }\n /**\n Compute the combined effect of applying another set of changes\n after this one. The length of the document after this set should\n match the length before `other`.\n */\n composeDesc(other) { return this.empty ? other : other.empty ? this : composeSets(this, other); }\n /**\n Map this description, which should start with the same document\n as `other`, over another set of changes, so that it can be\n applied after it. When `before` is true, map as if the changes\n in `this` happened before the ones in `other`.\n */\n mapDesc(other, before = false) { return other.empty ? this : mapSet(this, other, before); }\n mapPos(pos, assoc = -1, mode = MapMode.Simple) {\n let posA = 0, posB = 0;\n for (let i = 0; i < this.sections.length;) {\n let len = this.sections[i++], ins = this.sections[i++], endA = posA + len;\n if (ins < 0) {\n if (endA > pos)\n return posB + (pos - posA);\n posB += len;\n }\n else {\n if (mode != MapMode.Simple && endA >= pos &&\n (mode == MapMode.TrackDel && posA < pos && endA > pos ||\n mode == MapMode.TrackBefore && posA < pos ||\n mode == MapMode.TrackAfter && endA > pos))\n return null;\n if (endA > pos || endA == pos && assoc < 0 && !len)\n return pos == posA || assoc < 0 ? posB : posB + ins;\n posB += ins;\n }\n posA = endA;\n }\n if (pos > posA)\n throw new RangeError(`Position ${pos} is out of range for changeset of length ${posA}`);\n return posB;\n }\n /**\n Check whether these changes touch a given range. When one of the\n changes entirely covers the range, the string `\"cover\"` is\n returned.\n */\n touchesRange(from, to = from) {\n for (let i = 0, pos = 0; i < this.sections.length && pos <= to;) {\n let len = this.sections[i++], ins = this.sections[i++], end = pos + len;\n if (ins >= 0 && pos <= to && end >= from)\n return pos < from && end > to ? \"cover\" : true;\n pos = end;\n }\n return false;\n }\n /**\n @internal\n */\n toString() {\n let result = \"\";\n for (let i = 0; i < this.sections.length;) {\n let len = this.sections[i++], ins = this.sections[i++];\n result += (result ? \" \" : \"\") + len + (ins >= 0 ? \":\" + ins : \"\");\n }\n return result;\n }\n /**\n Serialize this change desc to a JSON-representable value.\n */\n toJSON() { return this.sections; }\n /**\n Create a change desc from its JSON representation (as produced\n by [`toJSON`](https://codemirror.net/6/docs/ref/#state.ChangeDesc.toJSON).\n */\n static fromJSON(json) {\n if (!Array.isArray(json) || json.length % 2 || json.some(a => typeof a != \"number\"))\n throw new RangeError(\"Invalid JSON representation of ChangeDesc\");\n return new ChangeDesc(json);\n }\n /**\n @internal\n */\n static create(sections) { return new ChangeDesc(sections); }\n}\n/**\nA change set represents a group of modifications to a document. It\nstores the document length, and can only be applied to documents\nwith exactly that length.\n*/\nclass ChangeSet extends ChangeDesc {\n constructor(sections, \n /**\n @internal\n */\n inserted) {\n super(sections);\n this.inserted = inserted;\n }\n /**\n Apply the changes to a document, returning the modified\n document.\n */\n apply(doc) {\n if (this.length != doc.length)\n throw new RangeError(\"Applying change set to a document with the wrong length\");\n iterChanges(this, (fromA, toA, fromB, _toB, text) => doc = doc.replace(fromB, fromB + (toA - fromA), text), false);\n return doc;\n }\n mapDesc(other, before = false) { return mapSet(this, other, before, true); }\n /**\n Given the document as it existed _before_ the changes, return a\n change set that represents the inverse of this set, which could\n be used to go from the document created by the changes back to\n the document as it existed before the changes.\n */\n invert(doc) {\n let sections = this.sections.slice(), inserted = [];\n for (let i = 0, pos = 0; i < sections.length; i += 2) {\n let len = sections[i], ins = sections[i + 1];\n if (ins >= 0) {\n sections[i] = ins;\n sections[i + 1] = len;\n let index = i >> 1;\n while (inserted.length < index)\n inserted.push(Text.empty);\n inserted.push(len ? doc.slice(pos, pos + len) : Text.empty);\n }\n pos += len;\n }\n return new ChangeSet(sections, inserted);\n }\n /**\n Combine two subsequent change sets into a single set. `other`\n must start in the document produced by `this`. If `this` goes\n `docA` → `docB` and `other` represents `docB` → `docC`, the\n returned value will represent the change `docA` → `docC`.\n */\n compose(other) { return this.empty ? other : other.empty ? this : composeSets(this, other, true); }\n /**\n Given another change set starting in the same document, maps this\n change set over the other, producing a new change set that can be\n applied to the document produced by applying `other`. When\n `before` is `true`, order changes as if `this` comes before\n `other`, otherwise (the default) treat `other` as coming first.\n \n Given two changes `A` and `B`, `A.compose(B.map(A))` and\n `B.compose(A.map(B, true))` will produce the same document. This\n provides a basic form of [operational\n transformation](https://en.wikipedia.org/wiki/Operational_transformation),\n and can be used for collaborative editing.\n */\n map(other, before = false) { return other.empty ? this : mapSet(this, other, before, true); }\n /**\n Iterate over the changed ranges in the document, calling `f` for\n each, with the range in the original document (`fromA`-`toA`)\n and the range that replaces it in the new document\n (`fromB`-`toB`).\n \n When `individual` is true, adjacent changes are reported\n separately.\n */\n iterChanges(f, individual = false) {\n iterChanges(this, f, individual);\n }\n /**\n Get a [change description](https://codemirror.net/6/docs/ref/#state.ChangeDesc) for this change\n set.\n */\n get desc() { return ChangeDesc.create(this.sections); }\n /**\n @internal\n */\n filter(ranges) {\n let resultSections = [], resultInserted = [], filteredSections = [];\n let iter = new SectionIter(this);\n done: for (let i = 0, pos = 0;;) {\n let next = i == ranges.length ? 1e9 : ranges[i++];\n while (pos < next || pos == next && iter.len == 0) {\n if (iter.done)\n break done;\n let len = Math.min(iter.len, next - pos);\n addSection(filteredSections, len, -1);\n let ins = iter.ins == -1 ? -1 : iter.off == 0 ? iter.ins : 0;\n addSection(resultSections, len, ins);\n if (ins > 0)\n addInsert(resultInserted, resultSections, iter.text);\n iter.forward(len);\n pos += len;\n }\n let end = ranges[i++];\n while (pos < end) {\n if (iter.done)\n break done;\n let len = Math.min(iter.len, end - pos);\n addSection(resultSections, len, -1);\n addSection(filteredSections, len, iter.ins == -1 ? -1 : iter.off == 0 ? iter.ins : 0);\n iter.forward(len);\n pos += len;\n }\n }\n return { changes: new ChangeSet(resultSections, resultInserted),\n filtered: ChangeDesc.create(filteredSections) };\n }\n /**\n Serialize this change set to a JSON-representable value.\n */\n toJSON() {\n let parts = [];\n for (let i = 0; i < this.sections.length; i += 2) {\n let len = this.sections[i], ins = this.sections[i + 1];\n if (ins < 0)\n parts.push(len);\n else if (ins == 0)\n parts.push([len]);\n else\n parts.push([len].concat(this.inserted[i >> 1].toJSON()));\n }\n return parts;\n }\n /**\n Create a change set for the given changes, for a document of the\n given length, using `lineSep` as line separator.\n */\n static of(changes, length, lineSep) {\n let sections = [], inserted = [], pos = 0;\n let total = null;\n function flush(force = false) {\n if (!force && !sections.length)\n return;\n if (pos < length)\n addSection(sections, length - pos, -1);\n let set = new ChangeSet(sections, inserted);\n total = total ? total.compose(set.map(total)) : set;\n sections = [];\n inserted = [];\n pos = 0;\n }\n function process(spec) {\n if (Array.isArray(spec)) {\n for (let sub of spec)\n process(sub);\n }\n else if (spec instanceof ChangeSet) {\n if (spec.length != length)\n throw new RangeError(`Mismatched change set length (got ${spec.length}, expected ${length})`);\n flush();\n total = total ? total.compose(spec.map(total)) : spec;\n }\n else {\n let { from, to = from, insert } = spec;\n if (from > to || from < 0 || to > length)\n throw new RangeError(`Invalid change range ${from} to ${to} (in doc of length ${length})`);\n let insText = !insert ? Text.empty : typeof insert == \"string\" ? Text.of(insert.split(lineSep || DefaultSplit)) : insert;\n let insLen = insText.length;\n if (from == to && insLen == 0)\n return;\n if (from < pos)\n flush();\n if (from > pos)\n addSection(sections, from - pos, -1);\n addSection(sections, to - from, insLen);\n addInsert(inserted, sections, insText);\n pos = to;\n }\n }\n process(changes);\n flush(!total);\n return total;\n }\n /**\n Create an empty changeset of the given length.\n */\n static empty(length) {\n return new ChangeSet(length ? [length, -1] : [], []);\n }\n /**\n Create a changeset from its JSON representation (as produced by\n [`toJSON`](https://codemirror.net/6/docs/ref/#state.ChangeSet.toJSON).\n */\n static fromJSON(json) {\n if (!Array.isArray(json))\n throw new RangeError(\"Invalid JSON representation of ChangeSet\");\n let sections = [], inserted = [];\n for (let i = 0; i < json.length; i++) {\n let part = json[i];\n if (typeof part == \"number\") {\n sections.push(part, -1);\n }\n else if (!Array.isArray(part) || typeof part[0] != \"number\" || part.some((e, i) => i && typeof e != \"string\")) {\n throw new RangeError(\"Invalid JSON representation of ChangeSet\");\n }\n else if (part.length == 1) {\n sections.push(part[0], 0);\n }\n else {\n while (inserted.length < i)\n inserted.push(Text.empty);\n inserted[i] = Text.of(part.slice(1));\n sections.push(part[0], inserted[i].length);\n }\n }\n return new ChangeSet(sections, inserted);\n }\n /**\n @internal\n */\n static createSet(sections, inserted) {\n return new ChangeSet(sections, inserted);\n }\n}\nfunction addSection(sections, len, ins, forceJoin = false) {\n if (len == 0 && ins <= 0)\n return;\n let last = sections.length - 2;\n if (last >= 0 && ins <= 0 && ins == sections[last + 1])\n sections[last] += len;\n else if (last >= 0 && len == 0 && sections[last] == 0)\n sections[last + 1] += ins;\n else if (forceJoin) {\n sections[last] += len;\n sections[last + 1] += ins;\n }\n else\n sections.push(len, ins);\n}\nfunction addInsert(values, sections, value) {\n if (value.length == 0)\n return;\n let index = (sections.length - 2) >> 1;\n if (index < values.length) {\n values[values.length - 1] = values[values.length - 1].append(value);\n }\n else {\n while (values.length < index)\n values.push(Text.empty);\n values.push(value);\n }\n}\nfunction iterChanges(desc, f, individual) {\n let inserted = desc.inserted;\n for (let posA = 0, posB = 0, i = 0; i < desc.sections.length;) {\n let len = desc.sections[i++], ins = desc.sections[i++];\n if (ins < 0) {\n posA += len;\n posB += len;\n }\n else {\n let endA = posA, endB = posB, text = Text.empty;\n for (;;) {\n endA += len;\n endB += ins;\n if (ins && inserted)\n text = text.append(inserted[(i - 2) >> 1]);\n if (individual || i == desc.sections.length || desc.sections[i + 1] < 0)\n break;\n len = desc.sections[i++];\n ins = desc.sections[i++];\n }\n f(posA, endA, posB, endB, text);\n posA = endA;\n posB = endB;\n }\n }\n}\nfunction mapSet(setA, setB, before, mkSet = false) {\n // Produce a copy of setA that applies to the document after setB\n // has been applied (assuming both start at the same document).\n let sections = [], insert = mkSet ? [] : null;\n let a = new SectionIter(setA), b = new SectionIter(setB);\n // Iterate over both sets in parallel. inserted tracks, for changes\n // in A that have to be processed piece-by-piece, whether their\n // content has been inserted already, and refers to the section\n // index.\n for (let inserted = -1;;) {\n if (a.done && b.len || b.done && a.len) {\n throw new Error(\"Mismatched change set lengths\");\n }\n else if (a.ins == -1 && b.ins == -1) {\n // Move across ranges skipped by both sets.\n let len = Math.min(a.len, b.len);\n addSection(sections, len, -1);\n a.forward(len);\n b.forward(len);\n }\n else if (b.ins >= 0 && (a.ins < 0 || inserted == a.i || a.off == 0 && (b.len < a.len || b.len == a.len && !before))) {\n // If there's a change in B that comes before the next change in\n // A (ordered by start pos, then len, then before flag), skip\n // that (and process any changes in A it covers).\n let len = b.len;\n addSection(sections, b.ins, -1);\n while (len) {\n let piece = Math.min(a.len, len);\n if (a.ins >= 0 && inserted < a.i && a.len <= piece) {\n addSection(sections, 0, a.ins);\n if (insert)\n addInsert(insert, sections, a.text);\n inserted = a.i;\n }\n a.forward(piece);\n len -= piece;\n }\n b.next();\n }\n else if (a.ins >= 0) {\n // Process the part of a change in A up to the start of the next\n // non-deletion change in B (if overlapping).\n let len = 0, left = a.len;\n while (left) {\n if (b.ins == -1) {\n let piece = Math.min(left, b.len);\n len += piece;\n left -= piece;\n b.forward(piece);\n }\n else if (b.ins == 0 && b.len < left) {\n left -= b.len;\n b.next();\n }\n else {\n break;\n }\n }\n addSection(sections, len, inserted < a.i ? a.ins : 0);\n if (insert && inserted < a.i)\n addInsert(insert, sections, a.text);\n inserted = a.i;\n a.forward(a.len - left);\n }\n else if (a.done && b.done) {\n return insert ? ChangeSet.createSet(sections, insert) : ChangeDesc.create(sections);\n }\n else {\n throw new Error(\"Mismatched change set lengths\");\n }\n }\n}\nfunction composeSets(setA, setB, mkSet = false) {\n let sections = [];\n let insert = mkSet ? [] : null;\n let a = new SectionIter(setA), b = new SectionIter(setB);\n for (let open = false;;) {\n if (a.done && b.done) {\n return insert ? ChangeSet.createSet(sections, insert) : ChangeDesc.create(sections);\n }\n else if (a.ins == 0) { // Deletion in A\n addSection(sections, a.len, 0, open);\n a.next();\n }\n else if (b.len == 0 && !b.done) { // Insertion in B\n addSection(sections, 0, b.ins, open);\n if (insert)\n addInsert(insert, sections, b.text);\n b.next();\n }\n else if (a.done || b.done) {\n throw new Error(\"Mismatched change set lengths\");\n }\n else {\n let len = Math.min(a.len2, b.len), sectionLen = sections.length;\n if (a.ins == -1) {\n let insB = b.ins == -1 ? -1 : b.off ? 0 : b.ins;\n addSection(sections, len, insB, open);\n if (insert && insB)\n addInsert(insert, sections, b.text);\n }\n else if (b.ins == -1) {\n addSection(sections, a.off ? 0 : a.len, len, open);\n if (insert)\n addInsert(insert, sections, a.textBit(len));\n }\n else {\n addSection(sections, a.off ? 0 : a.len, b.off ? 0 : b.ins, open);\n if (insert && !b.off)\n addInsert(insert, sections, b.text);\n }\n open = (a.ins > len || b.ins >= 0 && b.len > len) && (open || sections.length > sectionLen);\n a.forward2(len);\n b.forward(len);\n }\n }\n}\nclass SectionIter {\n constructor(set) {\n this.set = set;\n this.i = 0;\n this.next();\n }\n next() {\n let { sections } = this.set;\n if (this.i < sections.length) {\n this.len = sections[this.i++];\n this.ins = sections[this.i++];\n }\n else {\n this.len = 0;\n this.ins = -2;\n }\n this.off = 0;\n }\n get done() { return this.ins == -2; }\n get len2() { return this.ins < 0 ? this.len : this.ins; }\n get text() {\n let { inserted } = this.set, index = (this.i - 2) >> 1;\n return index >= inserted.length ? Text.empty : inserted[index];\n }\n textBit(len) {\n let { inserted } = this.set, index = (this.i - 2) >> 1;\n return index >= inserted.length && !len ? Text.empty\n : inserted[index].slice(this.off, len == null ? undefined : this.off + len);\n }\n forward(len) {\n if (len == this.len)\n this.next();\n else {\n this.len -= len;\n this.off += len;\n }\n }\n forward2(len) {\n if (this.ins == -1)\n this.forward(len);\n else if (len == this.ins)\n this.next();\n else {\n this.ins -= len;\n this.off += len;\n }\n }\n}\n\n/**\nA single selection range. When\n[`allowMultipleSelections`](https://codemirror.net/6/docs/ref/#state.EditorState^allowMultipleSelections)\nis enabled, a [selection](https://codemirror.net/6/docs/ref/#state.EditorSelection) may hold\nmultiple ranges. By default, selections hold exactly one range.\n*/\nclass SelectionRange {\n constructor(\n /**\n The lower boundary of the range.\n */\n from, \n /**\n The upper boundary of the range.\n */\n to, flags, \n /**\n The goal column (stored vertical offset) associated with a\n cursor. This is used to preserve the vertical position when\n [moving](https://codemirror.net/6/docs/ref/#view.EditorView.moveVertically) across\n lines of different length.\n */\n goalColumn) {\n this.from = from;\n this.to = to;\n this.flags = flags;\n this.goalColumn = goalColumn;\n }\n /**\n The anchor of the range—the side that doesn't move when you\n extend it.\n */\n get anchor() { return this.flags & 32 /* RangeFlag.Inverted */ ? this.to : this.from; }\n /**\n The head of the range, which is moved when the range is\n [extended](https://codemirror.net/6/docs/ref/#state.SelectionRange.extend).\n */\n get head() { return this.flags & 32 /* RangeFlag.Inverted */ ? this.from : this.to; }\n /**\n True when `anchor` and `head` are at the same position.\n */\n get empty() { return this.from == this.to; }\n /**\n If this is a cursor that is explicitly associated with the\n character on one of its sides, this returns the side. -1 means\n the character before its position, 1 the character after, and 0\n means no association.\n */\n get assoc() { return this.flags & 8 /* RangeFlag.AssocBefore */ ? -1 : this.flags & 16 /* RangeFlag.AssocAfter */ ? 1 : 0; }\n /**\n A flag that, when set, makes some selection-extending commands\n treat the range's head and anchor as exchangeable, so that for\n example Shift-ArrowUp will make the lower side of the selection\n the anchor, even if that was the head before. Used to implement\n MacOS-style undirectional selections.\n */\n get undirectional() {\n return (this.flags & 64 /* RangeFlag.Undirectional */) > 0;\n }\n /**\n The bidirectional text level associated with this cursor, if\n any.\n */\n get bidiLevel() {\n let level = this.flags & 7 /* RangeFlag.BidiLevelMask */;\n return level == 7 ? null : level;\n }\n /**\n Map this range through a change, producing a valid range in the\n updated document.\n */\n map(change, assoc = -1) {\n let from, to;\n if (this.empty) {\n from = to = change.mapPos(this.from, assoc);\n }\n else {\n from = change.mapPos(this.from, 1);\n to = change.mapPos(this.to, -1);\n }\n return from == this.from && to == this.to ? this : new SelectionRange(from, to, this.flags, this.goalColumn);\n }\n /**\n Extend this range to cover at least `from` to `to`.\n */\n extend(from, to = from, assoc = 0) {\n if (from <= this.anchor && to >= this.anchor)\n return EditorSelection.range(from, to, undefined, undefined, assoc);\n let head = Math.abs(from - this.anchor) > Math.abs(to - this.anchor) ? from : to;\n return EditorSelection.range(this.anchor, head, undefined, undefined, assoc);\n }\n /**\n Compare this range to another range.\n */\n eq(other, includeAssoc = false) {\n return this.anchor == other.anchor && this.head == other.head && this.goalColumn == other.goalColumn &&\n (!includeAssoc || !this.empty || this.assoc == other.assoc);\n }\n /**\n Return a JSON-serializable object representing the range.\n */\n toJSON() { return { anchor: this.anchor, head: this.head }; }\n /**\n Convert a JSON representation of a range to a `SelectionRange`\n instance.\n */\n static fromJSON(json) {\n if (!json || typeof json.anchor != \"number\" || typeof json.head != \"number\")\n throw new RangeError(\"Invalid JSON representation for SelectionRange\");\n return EditorSelection.range(json.anchor, json.head);\n }\n /**\n @internal\n */\n static create(from, to, flags, goalColumn) {\n return new SelectionRange(from, to, flags, goalColumn);\n }\n}\n/**\nAn editor selection holds one or more selection ranges.\n*/\nclass EditorSelection {\n constructor(\n /**\n The ranges in the selection, sorted by position. Ranges cannot\n overlap (but they may touch, if they aren't empty).\n */\n ranges, \n /**\n The index of the _main_ range in the selection (which is\n usually the range that was added last).\n */\n mainIndex) {\n this.ranges = ranges;\n this.mainIndex = mainIndex;\n }\n /**\n Map a selection through a change. Used to adjust the selection\n position for changes.\n */\n map(change, assoc = -1) {\n if (change.empty)\n return this;\n return EditorSelection.create(this.ranges.map(r => r.map(change, assoc)), this.mainIndex);\n }\n /**\n Compare this selection to another selection. By default, ranges\n are compared only by position. When `includeAssoc` is true,\n cursor ranges must also have the same\n [`assoc`](https://codemirror.net/6/docs/ref/#state.SelectionRange.assoc) value.\n */\n eq(other, includeAssoc = false) {\n if (this.ranges.length != other.ranges.length ||\n this.mainIndex != other.mainIndex)\n return false;\n for (let i = 0; i < this.ranges.length; i++)\n if (!this.ranges[i].eq(other.ranges[i], includeAssoc))\n return false;\n return true;\n }\n /**\n Get the primary selection range. Usually, you should make sure\n your code applies to _all_ ranges, by using methods like\n [`changeByRange`](https://codemirror.net/6/docs/ref/#state.EditorState.changeByRange).\n */\n get main() { return this.ranges[this.mainIndex]; }\n /**\n Make sure the selection only has one range. Returns a selection\n holding only the main range from this selection.\n */\n asSingle() {\n return this.ranges.length == 1 ? this : new EditorSelection([this.main], 0);\n }\n /**\n Extend this selection with an extra range.\n */\n addRange(range, main = true) {\n return EditorSelection.create([range].concat(this.ranges), main ? 0 : this.mainIndex + 1);\n }\n /**\n Replace a given range with another range, and then normalize the\n selection to merge and sort ranges if necessary.\n */\n replaceRange(range, which = this.mainIndex) {\n let ranges = this.ranges.slice();\n ranges[which] = range;\n return EditorSelection.create(ranges, this.mainIndex);\n }\n /**\n Convert this selection to an object that can be serialized to\n JSON.\n */\n toJSON() {\n return { ranges: this.ranges.map(r => r.toJSON()), main: this.mainIndex };\n }\n /**\n Create a selection from a JSON representation.\n */\n static fromJSON(json) {\n if (!json || !Array.isArray(json.ranges) || typeof json.main != \"number\" || json.main >= json.ranges.length)\n throw new RangeError(\"Invalid JSON representation for EditorSelection\");\n return new EditorSelection(json.ranges.map((r) => SelectionRange.fromJSON(r)), json.main);\n }\n /**\n Create a selection holding a single range.\n */\n static single(anchor, head = anchor) {\n return new EditorSelection([EditorSelection.range(anchor, head)], 0);\n }\n /**\n Sort and merge the given set of ranges, creating a valid\n selection.\n */\n static create(ranges, mainIndex = 0) {\n if (ranges.length == 0)\n throw new RangeError(\"A selection needs at least one range\");\n for (let pos = 0, i = 0; i < ranges.length; i++) {\n let range = ranges[i];\n if (range.empty ? range.from <= pos : range.from < pos)\n return EditorSelection.normalized(ranges.slice(), mainIndex);\n pos = range.to;\n }\n return new EditorSelection(ranges, mainIndex);\n }\n /**\n Create a cursor selection range at the given position. You can\n safely ignore the optional arguments in most situations.\n */\n static cursor(pos, assoc = 0, bidiLevel, goalColumn) {\n return SelectionRange.create(pos, pos, (assoc == 0 ? 0 : assoc < 0 ? 8 /* RangeFlag.AssocBefore */ : 16 /* RangeFlag.AssocAfter */) |\n (bidiLevel == null ? 7 : Math.min(6, bidiLevel)), goalColumn);\n }\n /**\n Create a selection range.\n */\n static range(anchor, head, goalColumn, bidiLevel, assoc) {\n let flags = bidiLevel == null ? 7 : Math.min(6, bidiLevel);\n if (!assoc && anchor != head)\n assoc = head < anchor ? 1 : -1;\n if (assoc)\n flags |= assoc < 0 ? 8 /* RangeFlag.AssocBefore */ : 16 /* RangeFlag.AssocAfter */;\n return head < anchor ? SelectionRange.create(head, anchor, flags | 32 /* RangeFlag.Inverted */, goalColumn)\n : SelectionRange.create(anchor, head, flags, goalColumn);\n }\n /**\n Create an [undirectional](https://codemirror.net/6/docs/ref/#state.SelectionRange.undirectional)\n selection range.\n */\n static undirectionalRange(from, to) {\n return SelectionRange.create(from, to, 64 /* RangeFlag.Undirectional */, undefined);\n }\n /**\n @internal\n */\n static normalized(ranges, mainIndex = 0) {\n let main = ranges[mainIndex];\n ranges.sort((a, b) => a.from - b.from);\n mainIndex = ranges.indexOf(main);\n for (let i = 1; i < ranges.length; i++) {\n let range = ranges[i], prev = ranges[i - 1];\n if (range.empty ? range.from <= prev.to : range.from < prev.to) {\n let from = prev.from, to = Math.max(range.to, prev.to);\n if (i <= mainIndex)\n mainIndex--;\n ranges.splice(--i, 2, range.anchor > range.head ? EditorSelection.range(to, from) : EditorSelection.range(from, to));\n }\n }\n return new EditorSelection(ranges, mainIndex);\n }\n}\nfunction checkSelection(selection, docLength) {\n for (let range of selection.ranges)\n if (range.to > docLength)\n throw new RangeError(\"Selection points outside of document\");\n}\n\nlet nextID = 0;\n/**\nA facet is a labeled value that is associated with an editor\nstate. It takes inputs from any number of extensions, and combines\nthose into a single output value.\n\nExamples of uses of facets are the [tab\nsize](https://codemirror.net/6/docs/ref/#state.EditorState^tabSize), [editor\nattributes](https://codemirror.net/6/docs/ref/#view.EditorView^editorAttributes), and [update\nlisteners](https://codemirror.net/6/docs/ref/#view.EditorView^updateListener).\n\nNote that `Facet` instances can be used anywhere where\n[`FacetReader`](https://codemirror.net/6/docs/ref/#state.FacetReader) is expected.\n*/\nclass Facet {\n constructor(\n /**\n @internal\n */\n combine, \n /**\n @internal\n */\n compareInput, \n /**\n @internal\n */\n compare, isStatic, enables) {\n this.combine = combine;\n this.compareInput = compareInput;\n this.compare = compare;\n this.isStatic = isStatic;\n /**\n @internal\n */\n this.id = nextID++;\n this.default = combine([]);\n this.extensions = typeof enables == \"function\" ? enables(this) : enables;\n }\n /**\n Returns a facet reader for this facet, which can be used to\n [read](https://codemirror.net/6/docs/ref/#state.EditorState.facet) it but not to define values for it.\n */\n get reader() { return this; }\n /**\n Define a new facet.\n */\n static define(config = {}) {\n return new Facet(config.combine || ((a) => a), config.compareInput || ((a, b) => a === b), config.compare || (!config.combine ? sameArray : (a, b) => a === b), !!config.static, config.enables);\n }\n /**\n Returns an extension that adds the given value to this facet.\n */\n of(value) {\n return new FacetProvider([], this, 0 /* Provider.Static */, value);\n }\n /**\n Create an extension that computes a value for the facet from a\n state. You must take care to declare the parts of the state that\n this value depends on, since your function is only called again\n for a new state when one of those parts changed.\n \n In cases where your value depends only on a single field, you'll\n want to use the [`from`](https://codemirror.net/6/docs/ref/#state.Facet.from) method instead.\n */\n compute(deps, get) {\n if (this.isStatic)\n throw new Error(\"Can't compute a static facet\");\n return new FacetProvider(deps, this, 1 /* Provider.Single */, get);\n }\n /**\n Create an extension that computes zero or more values for this\n facet from a state.\n */\n computeN(deps, get) {\n if (this.isStatic)\n throw new Error(\"Can't compute a static facet\");\n return new FacetProvider(deps, this, 2 /* Provider.Multi */, get);\n }\n from(field, get) {\n if (!get)\n get = x => x;\n return this.compute([field], state => get(state.field(field)));\n }\n}\nfunction sameArray(a, b) {\n return a == b || a.length == b.length && a.every((e, i) => e === b[i]);\n}\nclass FacetProvider {\n constructor(dependencies, facet, type, value) {\n this.dependencies = dependencies;\n this.facet = facet;\n this.type = type;\n this.value = value;\n this.id = nextID++;\n }\n dynamicSlot(addresses) {\n var _a;\n let getter = this.value;\n let compare = this.facet.compareInput;\n let id = this.id, idx = addresses[id] >> 1, multi = this.type == 2 /* Provider.Multi */;\n let depDoc = false, depSel = false, depAddrs = [];\n for (let dep of this.dependencies) {\n if (dep == \"doc\")\n depDoc = true;\n else if (dep == \"selection\")\n depSel = true;\n else if ((((_a = addresses[dep.id]) !== null && _a !== void 0 ? _a : 1) & 1) == 0)\n depAddrs.push(addresses[dep.id]);\n }\n return {\n create(state) {\n state.values[idx] = getter(state);\n return 1 /* SlotStatus.Changed */;\n },\n update(state, tr) {\n if ((depDoc && tr.docChanged) || (depSel && (tr.docChanged || tr.selection)) || ensureAll(state, depAddrs)) {\n let newVal = getter(state);\n if (multi ? !compareArray(newVal, state.values[idx], compare) : !compare(newVal, state.values[idx])) {\n state.values[idx] = newVal;\n return 1 /* SlotStatus.Changed */;\n }\n }\n return 0;\n },\n reconfigure: (state, oldState) => {\n let newVal, oldAddr = oldState.config.address[id];\n if (oldAddr != null) {\n let oldVal = getAddr(oldState, oldAddr);\n if (this.dependencies.every(dep => {\n return dep instanceof Facet ? oldState.facet(dep) === state.facet(dep) :\n dep instanceof StateField ? oldState.field(dep, false) == state.field(dep, false) : true;\n }) || (multi ? compareArray(newVal = getter(state), oldVal, compare) : compare(newVal = getter(state), oldVal))) {\n state.values[idx] = oldVal;\n return 0;\n }\n }\n else {\n newVal = getter(state);\n }\n state.values[idx] = newVal;\n return 1 /* SlotStatus.Changed */;\n }\n };\n }\n get extension() { return this; }\n}\nfunction compareArray(a, b, compare) {\n if (a.length != b.length)\n return false;\n for (let i = 0; i < a.length; i++)\n if (!compare(a[i], b[i]))\n return false;\n return true;\n}\nfunction ensureAll(state, addrs) {\n let changed = false;\n for (let addr of addrs)\n if (ensureAddr(state, addr) & 1 /* SlotStatus.Changed */)\n changed = true;\n return changed;\n}\nfunction dynamicFacetSlot(addresses, facet, providers) {\n let providerAddrs = providers.map(p => addresses[p.id]);\n let providerTypes = providers.map(p => p.type);\n let dynamic = providerAddrs.filter(p => !(p & 1));\n let idx = addresses[facet.id] >> 1;\n function get(state) {\n let values = [];\n for (let i = 0; i < providerAddrs.length; i++) {\n let value = getAddr(state, providerAddrs[i]);\n if (providerTypes[i] == 2 /* Provider.Multi */)\n for (let val of value)\n values.push(val);\n else\n values.push(value);\n }\n return facet.combine(values);\n }\n return {\n create(state) {\n for (let addr of providerAddrs)\n ensureAddr(state, addr);\n state.values[idx] = get(state);\n return 1 /* SlotStatus.Changed */;\n },\n update(state, tr) {\n if (!ensureAll(state, dynamic))\n return 0;\n let value = get(state);\n if (facet.compare(value, state.values[idx]))\n return 0;\n state.values[idx] = value;\n return 1 /* SlotStatus.Changed */;\n },\n reconfigure(state, oldState) {\n let depChanged = ensureAll(state, providerAddrs);\n let oldProviders = oldState.config.facets[facet.id], oldValue = oldState.facet(facet);\n if (oldProviders && !depChanged && sameArray(providers, oldProviders)) {\n state.values[idx] = oldValue;\n return 0;\n }\n let value = get(state);\n if (facet.compare(value, oldValue)) {\n state.values[idx] = oldValue;\n return 0;\n }\n state.values[idx] = value;\n return 1 /* SlotStatus.Changed */;\n }\n };\n}\nconst initField = /*@__PURE__*/Facet.define({ static: true });\n/**\nFields can store additional information in an editor state, and\nkeep it in sync with the rest of the state.\n*/\nclass StateField {\n constructor(\n /**\n @internal\n */\n id, createF, updateF, compareF, \n /**\n @internal\n */\n spec) {\n this.id = id;\n this.createF = createF;\n this.updateF = updateF;\n this.compareF = compareF;\n this.spec = spec;\n /**\n @internal\n */\n this.provides = undefined;\n }\n /**\n Define a state field.\n */\n static define(config) {\n let field = new StateField(nextID++, config.create, config.update, config.compare || ((a, b) => a === b), config);\n if (config.provide)\n field.provides = config.provide(field);\n return field;\n }\n create(state) {\n let init = state.facet(initField).find(i => i.field == this);\n return ((init === null || init === void 0 ? void 0 : init.create) || this.createF)(state);\n }\n /**\n @internal\n */\n slot(addresses) {\n let idx = addresses[this.id] >> 1;\n return {\n create: (state) => {\n state.values[idx] = this.create(state);\n return 1 /* SlotStatus.Changed */;\n },\n update: (state, tr) => {\n let oldVal = state.values[idx];\n let value = this.updateF(oldVal, tr);\n if (this.compareF(oldVal, value))\n return 0;\n state.values[idx] = value;\n return 1 /* SlotStatus.Changed */;\n },\n reconfigure: (state, oldState) => {\n let init = state.facet(initField), oldInit = oldState.facet(initField), reInit;\n if ((reInit = init.find(i => i.field == this)) && reInit != oldInit.find(i => i.field == this)) {\n state.values[idx] = reInit.create(state);\n return 1 /* SlotStatus.Changed */;\n }\n if (oldState.config.address[this.id] != null) {\n state.values[idx] = oldState.field(this);\n return 0;\n }\n state.values[idx] = this.create(state);\n return 1 /* SlotStatus.Changed */;\n }\n };\n }\n /**\n Returns an extension that enables this field and overrides the\n way it is initialized. Can be useful when you need to provide a\n non-default starting value for the field.\n */\n init(create) {\n return [this, initField.of({ field: this, create })];\n }\n /**\n State field instances can be used as\n [`Extension`](https://codemirror.net/6/docs/ref/#state.Extension) values to enable the field in a\n given state.\n */\n get extension() { return this; }\n}\nconst Prec_ = { lowest: 4, low: 3, default: 2, high: 1, highest: 0 };\nfunction prec(value) {\n return (ext) => new PrecExtension(ext, value);\n}\n/**\nBy default extensions are registered in the order they are found\nin the flattened form of nested array that was provided.\nIndividual extension values can be assigned a precedence to\noverride this. Extensions that do not have a precedence set get\nthe precedence of the nearest parent with a precedence, or\n[`default`](https://codemirror.net/6/docs/ref/#state.Prec.default) if there is no such parent. The\nfinal ordering of extensions is determined by first sorting by\nprecedence and then by order within each precedence.\n*/\nconst Prec = {\n /**\n The highest precedence level, for extensions that should end up\n near the start of the precedence ordering.\n */\n highest: /*@__PURE__*/prec(Prec_.highest),\n /**\n A higher-than-default precedence, for extensions that should\n come before those with default precedence.\n */\n high: /*@__PURE__*/prec(Prec_.high),\n /**\n The default precedence, which is also used for extensions\n without an explicit precedence.\n */\n default: /*@__PURE__*/prec(Prec_.default),\n /**\n A lower-than-default precedence.\n */\n low: /*@__PURE__*/prec(Prec_.low),\n /**\n The lowest precedence level. Meant for things that should end up\n near the end of the extension order.\n */\n lowest: /*@__PURE__*/prec(Prec_.lowest)\n};\nclass PrecExtension {\n constructor(inner, prec) {\n this.inner = inner;\n this.prec = prec;\n }\n get extension() { return this; }\n}\n/**\nExtension compartments can be used to make a configuration\ndynamic. By [wrapping](https://codemirror.net/6/docs/ref/#state.Compartment.of) part of your\nconfiguration in a compartment, you can later\n[replace](https://codemirror.net/6/docs/ref/#state.Compartment.reconfigure) that part through a\ntransaction.\n*/\nclass Compartment {\n /**\n Create an instance of this compartment to add to your [state\n configuration](https://codemirror.net/6/docs/ref/#state.EditorStateConfig.extensions).\n */\n of(ext) { return new CompartmentInstance(this, ext); }\n /**\n Create an [effect](https://codemirror.net/6/docs/ref/#state.TransactionSpec.effects) that\n reconfigures this compartment.\n */\n reconfigure(content) {\n return Compartment.reconfigure.of({ compartment: this, extension: content });\n }\n /**\n Get the current content of the compartment in the state, or\n `undefined` if it isn't present.\n */\n get(state) {\n return state.config.compartments.get(this);\n }\n}\nclass CompartmentInstance {\n constructor(compartment, inner) {\n this.compartment = compartment;\n this.inner = inner;\n }\n get extension() { return this; }\n}\nclass Configuration {\n constructor(base, compartments, dynamicSlots, address, staticValues, facets) {\n this.base = base;\n this.compartments = compartments;\n this.dynamicSlots = dynamicSlots;\n this.address = address;\n this.staticValues = staticValues;\n this.facets = facets;\n this.statusTemplate = [];\n while (this.statusTemplate.length < dynamicSlots.length)\n this.statusTemplate.push(0 /* SlotStatus.Unresolved */);\n }\n staticFacet(facet) {\n let addr = this.address[facet.id];\n return addr == null ? facet.default : this.staticValues[addr >> 1];\n }\n static resolve(base, compartments, oldState) {\n let fields = [];\n let facets = Object.create(null);\n let newCompartments = new Map();\n for (let ext of flatten(base, compartments, newCompartments)) {\n if (ext instanceof StateField)\n fields.push(ext);\n else\n (facets[ext.facet.id] || (facets[ext.facet.id] = [])).push(ext);\n }\n let address = Object.create(null);\n let staticValues = [];\n let dynamicSlots = [];\n for (let field of fields) {\n address[field.id] = dynamicSlots.length << 1;\n dynamicSlots.push(a => field.slot(a));\n }\n let oldFacets = oldState === null || oldState === void 0 ? void 0 : oldState.config.facets;\n for (let id in facets) {\n let providers = facets[id], facet = providers[0].facet;\n let oldProviders = oldFacets && oldFacets[id] || [];\n if (providers.every(p => p.type == 0 /* Provider.Static */)) {\n address[facet.id] = (staticValues.length << 1) | 1;\n if (sameArray(oldProviders, providers)) {\n staticValues.push(oldState.facet(facet));\n }\n else {\n let value = facet.combine(providers.map(p => p.value));\n staticValues.push(oldState && facet.compare(value, oldState.facet(facet)) ? oldState.facet(facet) : value);\n }\n }\n else {\n for (let p of providers) {\n if (p.type == 0 /* Provider.Static */) {\n address[p.id] = (staticValues.length << 1) | 1;\n staticValues.push(p.value);\n }\n else {\n address[p.id] = dynamicSlots.length << 1;\n dynamicSlots.push(a => p.dynamicSlot(a));\n }\n }\n address[facet.id] = dynamicSlots.length << 1;\n dynamicSlots.push(a => dynamicFacetSlot(a, facet, providers));\n }\n }\n let dynamic = dynamicSlots.map(f => f(address));\n return new Configuration(base, newCompartments, dynamic, address, staticValues, facets);\n }\n}\nfunction flatten(extension, compartments, newCompartments) {\n let result = [[], [], [], [], []];\n let seen = new Map();\n function inner(ext, prec) {\n let known = seen.get(ext);\n if (known != null) {\n if (known <= prec)\n return;\n let found = result[known].indexOf(ext);\n if (found > -1)\n result[known].splice(found, 1);\n if (ext instanceof CompartmentInstance)\n newCompartments.delete(ext.compartment);\n }\n seen.set(ext, prec);\n if (Array.isArray(ext)) {\n for (let e of ext)\n inner(e, prec);\n }\n else if (ext instanceof CompartmentInstance) {\n if (newCompartments.has(ext.compartment))\n throw new RangeError(`Duplicate use of compartment in extensions`);\n let content = compartments.get(ext.compartment) || ext.inner;\n newCompartments.set(ext.compartment, content);\n inner(content, prec);\n }\n else if (ext instanceof PrecExtension) {\n inner(ext.inner, ext.prec);\n }\n else if (ext instanceof StateField) {\n result[prec].push(ext);\n if (ext.provides)\n inner(ext.provides, prec);\n }\n else if (ext instanceof FacetProvider) {\n result[prec].push(ext);\n if (ext.facet.extensions)\n inner(ext.facet.extensions, Prec_.default);\n }\n else {\n let content = ext.extension;\n if (!content)\n throw new Error(`Unrecognized extension value in extension set (${ext}).`);\n if (content == ext)\n throw new Error(`Unrecognized extension value in extension set (${ext}). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks.`);\n inner(content, prec);\n }\n }\n inner(extension, Prec_.default);\n return result.reduce((a, b) => a.concat(b));\n}\nfunction ensureAddr(state, addr) {\n if (addr & 1)\n return 2 /* SlotStatus.Computed */;\n let idx = addr >> 1;\n let status = state.status[idx];\n if (status == 4 /* SlotStatus.Computing */)\n throw new Error(\"Cyclic dependency between fields and/or facets\");\n if (status & 2 /* SlotStatus.Computed */)\n return status;\n state.status[idx] = 4 /* SlotStatus.Computing */;\n let changed = state.computeSlot(state, state.config.dynamicSlots[idx]);\n return state.status[idx] = 2 /* SlotStatus.Computed */ | changed;\n}\nfunction getAddr(state, addr) {\n return addr & 1 ? state.config.staticValues[addr >> 1] : state.values[addr >> 1];\n}\n\nconst languageData = /*@__PURE__*/Facet.define();\nconst allowMultipleSelections = /*@__PURE__*/Facet.define({\n combine: values => values.some(v => v),\n static: true\n});\nconst lineSeparator = /*@__PURE__*/Facet.define({\n combine: values => values.length ? values[0] : undefined,\n static: true\n});\nconst changeFilter = /*@__PURE__*/Facet.define();\nconst transactionFilter = /*@__PURE__*/Facet.define();\nconst transactionExtender = /*@__PURE__*/Facet.define();\nconst readOnly = /*@__PURE__*/Facet.define({\n combine: values => values.length ? values[0] : false\n});\n\n/**\nAnnotations are tagged values that are used to add metadata to\ntransactions in an extensible way. They should be used to model\nthings that effect the entire transaction (such as its [time\nstamp](https://codemirror.net/6/docs/ref/#state.Transaction^time) or information about its\n[origin](https://codemirror.net/6/docs/ref/#state.Transaction^userEvent)). For effects that happen\n_alongside_ the other changes made by the transaction, [state\neffects](https://codemirror.net/6/docs/ref/#state.StateEffect) are more appropriate.\n*/\nclass Annotation {\n /**\n @internal\n */\n constructor(\n /**\n The annotation type.\n */\n type, \n /**\n The value of this annotation.\n */\n value) {\n this.type = type;\n this.value = value;\n }\n /**\n Define a new type of annotation.\n */\n static define() { return new AnnotationType(); }\n}\n/**\nMarker that identifies a type of [annotation](https://codemirror.net/6/docs/ref/#state.Annotation).\n*/\nclass AnnotationType {\n /**\n Create an instance of this annotation.\n */\n of(value) { return new Annotation(this, value); }\n}\n/**\nRepresentation of a type of state effect. Defined with\n[`StateEffect.define`](https://codemirror.net/6/docs/ref/#state.StateEffect^define).\n*/\nclass StateEffectType {\n /**\n @internal\n */\n constructor(\n // The `any` types in these function types are there to work\n // around TypeScript issue #37631, where the type guard on\n // `StateEffect.is` mysteriously stops working when these properly\n // have type `Value`.\n /**\n @internal\n */\n map) {\n this.map = map;\n }\n /**\n Create a [state effect](https://codemirror.net/6/docs/ref/#state.StateEffect) instance of this\n type.\n */\n of(value) { return new StateEffect(this, value); }\n}\n/**\nState effects can be used to represent additional effects\nassociated with a [transaction](https://codemirror.net/6/docs/ref/#state.Transaction.effects). They\nare often useful to model changes to custom [state\nfields](https://codemirror.net/6/docs/ref/#state.StateField), when those changes aren't implicit in\ndocument or selection changes.\n*/\nclass StateEffect {\n /**\n @internal\n */\n constructor(\n /**\n @internal\n */\n type, \n /**\n The value of this effect.\n */\n value) {\n this.type = type;\n this.value = value;\n }\n /**\n Map this effect through a position mapping. Will return\n `undefined` when that ends up deleting the effect.\n */\n map(mapping) {\n let mapped = this.type.map(this.value, mapping);\n return mapped === undefined ? undefined : mapped == this.value ? this : new StateEffect(this.type, mapped);\n }\n /**\n Tells you whether this effect object is of a given\n [type](https://codemirror.net/6/docs/ref/#state.StateEffectType).\n */\n is(type) { return this.type == type; }\n /**\n Define a new effect type. The type parameter indicates the type\n of values that his effect holds. It should be a type that\n doesn't include `undefined`, since that is used in\n [mapping](https://codemirror.net/6/docs/ref/#state.StateEffect.map) to indicate that an effect is\n removed.\n */\n static define(spec = {}) {\n return new StateEffectType(spec.map || (v => v));\n }\n /**\n Map an array of effects through a change set.\n */\n static mapEffects(effects, mapping) {\n if (!effects.length)\n return effects;\n let result = [];\n for (let effect of effects) {\n let mapped = effect.map(mapping);\n if (mapped)\n result.push(mapped);\n }\n return result;\n }\n}\n/**\nThis effect can be used to reconfigure the root extensions of\nthe editor. Doing this will discard any extensions\n[appended](https://codemirror.net/6/docs/ref/#state.StateEffect^appendConfig), but does not reset\nthe content of [reconfigured](https://codemirror.net/6/docs/ref/#state.Compartment.reconfigure)\ncompartments.\n*/\nStateEffect.reconfigure = /*@__PURE__*/StateEffect.define();\n/**\nAppend extensions to the top-level configuration of the editor.\n*/\nStateEffect.appendConfig = /*@__PURE__*/StateEffect.define();\n/**\nChanges to the editor state are grouped into transactions.\nTypically, a user action creates a single transaction, which may\ncontain any number of document changes, may change the selection,\nor have other effects. Create a transaction by calling\n[`EditorState.update`](https://codemirror.net/6/docs/ref/#state.EditorState.update), or immediately\ndispatch one by calling\n[`EditorView.dispatch`](https://codemirror.net/6/docs/ref/#view.EditorView.dispatch).\n*/\nclass Transaction {\n constructor(\n /**\n The state from which the transaction starts.\n */\n startState, \n /**\n The document changes made by this transaction.\n */\n changes, \n /**\n The selection set by this transaction, or undefined if it\n doesn't explicitly set a selection.\n */\n selection, \n /**\n The effects added to the transaction.\n */\n effects, \n /**\n @internal\n */\n annotations, \n /**\n Whether the selection should be scrolled into view after this\n transaction is dispatched.\n */\n scrollIntoView) {\n this.startState = startState;\n this.changes = changes;\n this.selection = selection;\n this.effects = effects;\n this.annotations = annotations;\n this.scrollIntoView = scrollIntoView;\n /**\n @internal\n */\n this._doc = null;\n /**\n @internal\n */\n this._state = null;\n if (selection)\n checkSelection(selection, changes.newLength);\n if (!annotations.some((a) => a.type == Transaction.time))\n this.annotations = annotations.concat(Transaction.time.of(Date.now()));\n }\n /**\n @internal\n */\n static create(startState, changes, selection, effects, annotations, scrollIntoView) {\n return new Transaction(startState, changes, selection, effects, annotations, scrollIntoView);\n }\n /**\n The new document produced by the transaction. Contrary to\n [`.state`](https://codemirror.net/6/docs/ref/#state.Transaction.state)`.doc`, accessing this won't\n force the entire new state to be computed right away, so it is\n recommended that [transaction\n filters](https://codemirror.net/6/docs/ref/#state.EditorState^transactionFilter) use this getter\n when they need to look at the new document.\n */\n get newDoc() {\n return this._doc || (this._doc = this.changes.apply(this.startState.doc));\n }\n /**\n The new selection produced by the transaction. If\n [`this.selection`](https://codemirror.net/6/docs/ref/#state.Transaction.selection) is undefined,\n this will [map](https://codemirror.net/6/docs/ref/#state.EditorSelection.map) the start state's\n current selection through the changes made by the transaction.\n */\n get newSelection() {\n return this.selection || this.startState.selection.map(this.changes);\n }\n /**\n The new state created by the transaction. Computed on demand\n (but retained for subsequent access), so it is recommended not to\n access it in [transaction\n filters](https://codemirror.net/6/docs/ref/#state.EditorState^transactionFilter) when possible.\n */\n get state() {\n if (!this._state)\n this.startState.applyTransaction(this);\n return this._state;\n }\n /**\n Get the value of the given annotation type, if any.\n */\n annotation(type) {\n for (let ann of this.annotations)\n if (ann.type == type)\n return ann.value;\n return undefined;\n }\n /**\n Indicates whether the transaction changed the document.\n */\n get docChanged() { return !this.changes.empty; }\n /**\n Indicates whether this transaction reconfigures the state\n (through a [configuration compartment](https://codemirror.net/6/docs/ref/#state.Compartment) or\n with a top-level configuration\n [effect](https://codemirror.net/6/docs/ref/#state.StateEffect^reconfigure).\n */\n get reconfigured() { return this.startState.config != this.state.config; }\n /**\n Returns true if the transaction has a [user\n event](https://codemirror.net/6/docs/ref/#state.Transaction^userEvent) annotation that is equal to\n or more specific than `event`. For example, if the transaction\n has `\"select.pointer\"` as user event, `\"select\"` and\n `\"select.pointer\"` will match it.\n */\n isUserEvent(event) {\n let e = this.annotation(Transaction.userEvent);\n return !!(e && (e == event || e.length > event.length && e.slice(0, event.length) == event && e[event.length] == \".\"));\n }\n}\n/**\nAnnotation used to store transaction timestamps. Automatically\nadded to every transaction, holding `Date.now()`.\n*/\nTransaction.time = /*@__PURE__*/Annotation.define();\n/**\nAnnotation used to associate a transaction with a user interface\nevent. Holds a string identifying the event, using a\ndot-separated format to support attaching more specific\ninformation. The events used by the core libraries are:\n\n - `\"input\"` when content is entered\n - `\"input.type\"` for typed input\n - `\"input.type.compose\"` for composition\n - `\"input.paste\"` for pasted input\n - `\"input.drop\"` when adding content with drag-and-drop\n - `\"input.complete\"` when autocompleting\n - `\"delete\"` when the user deletes content\n - `\"delete.selection\"` when deleting the selection\n - `\"delete.forward\"` when deleting forward from the selection\n - `\"delete.backward\"` when deleting backward from the selection\n - `\"delete.cut\"` when cutting to the clipboard\n - `\"move\"` when content is moved\n - `\"move.drop\"` when content is moved within the editor through drag-and-drop\n - `\"select\"` when explicitly changing the selection\n - `\"select.pointer\"` when selecting with a mouse or other pointing device\n - `\"undo\"` and `\"redo\"` for history actions\n\nUse [`isUserEvent`](https://codemirror.net/6/docs/ref/#state.Transaction.isUserEvent) to check\nwhether the annotation matches a given event.\n*/\nTransaction.userEvent = /*@__PURE__*/Annotation.define();\n/**\nAnnotation indicating whether a transaction should be added to\nthe undo history or not.\n*/\nTransaction.addToHistory = /*@__PURE__*/Annotation.define();\n/**\nAnnotation indicating (when present and true) that a transaction\nrepresents a change made by some other actor, not the user. This\nis used, for example, to tag other people's changes in\ncollaborative editing.\n*/\nTransaction.remote = /*@__PURE__*/Annotation.define();\nfunction joinRanges(a, b) {\n let result = [];\n for (let iA = 0, iB = 0;;) {\n let from, to;\n if (iA < a.length && (iB == b.length || b[iB] >= a[iA])) {\n from = a[iA++];\n to = a[iA++];\n }\n else if (iB < b.length) {\n from = b[iB++];\n to = b[iB++];\n }\n else\n return result;\n if (!result.length || result[result.length - 1] < from)\n result.push(from, to);\n else if (result[result.length - 1] < to)\n result[result.length - 1] = to;\n }\n}\nfunction mergeTransaction(a, b, sequential) {\n var _a;\n let mapForA, mapForB, changes;\n if (sequential) {\n mapForA = b.changes;\n mapForB = ChangeSet.empty(b.changes.length);\n changes = a.changes.compose(b.changes);\n }\n else {\n mapForA = b.changes.map(a.changes);\n mapForB = a.changes.mapDesc(b.changes, true);\n changes = a.changes.compose(mapForA);\n }\n return {\n changes,\n selection: b.selection ? b.selection.map(mapForB) : (_a = a.selection) === null || _a === void 0 ? void 0 : _a.map(mapForA),\n effects: StateEffect.mapEffects(a.effects, mapForA).concat(StateEffect.mapEffects(b.effects, mapForB)),\n annotations: a.annotations.length ? a.annotations.concat(b.annotations) : b.annotations,\n scrollIntoView: a.scrollIntoView || b.scrollIntoView\n };\n}\nfunction resolveTransactionInner(state, spec, docSize) {\n let sel = spec.selection, annotations = asArray(spec.annotations);\n if (spec.userEvent)\n annotations = annotations.concat(Transaction.userEvent.of(spec.userEvent));\n return {\n changes: spec.changes instanceof ChangeSet ? spec.changes\n : ChangeSet.of(spec.changes || [], docSize, state.facet(lineSeparator)),\n selection: sel && (sel instanceof EditorSelection ? sel : EditorSelection.single(sel.anchor, sel.head)),\n effects: asArray(spec.effects),\n annotations,\n scrollIntoView: !!spec.scrollIntoView\n };\n}\nfunction resolveTransaction(state, specs, filter) {\n let s = resolveTransactionInner(state, specs.length ? specs[0] : {}, state.doc.length);\n if (specs.length && specs[0].filter === false)\n filter = false;\n for (let i = 1; i < specs.length; i++) {\n if (specs[i].filter === false)\n filter = false;\n let seq = !!specs[i].sequential;\n s = mergeTransaction(s, resolveTransactionInner(state, specs[i], seq ? s.changes.newLength : state.doc.length), seq);\n }\n let tr = Transaction.create(state, s.changes, s.selection, s.effects, s.annotations, s.scrollIntoView);\n return extendTransaction(filter ? filterTransaction(tr) : tr);\n}\n// Finish a transaction by applying filters if necessary.\nfunction filterTransaction(tr) {\n let state = tr.startState;\n // Change filters\n let result = true;\n for (let filter of state.facet(changeFilter)) {\n let value = filter(tr);\n if (value === false) {\n result = false;\n break;\n }\n if (Array.isArray(value))\n result = result === true ? value : joinRanges(result, value);\n }\n if (result !== true) {\n let changes, back;\n if (result === false) {\n back = tr.changes.invertedDesc;\n changes = ChangeSet.empty(state.doc.length);\n }\n else {\n let filtered = tr.changes.filter(result);\n changes = filtered.changes;\n back = filtered.filtered.mapDesc(filtered.changes).invertedDesc;\n }\n tr = Transaction.create(state, changes, tr.selection && tr.selection.map(back), StateEffect.mapEffects(tr.effects, back), tr.annotations, tr.scrollIntoView);\n }\n // Transaction filters\n let filters = state.facet(transactionFilter);\n for (let i = filters.length - 1; i >= 0; i--) {\n let filtered = filters[i](tr);\n if (filtered instanceof Transaction)\n tr = filtered;\n else if (Array.isArray(filtered) && filtered.length == 1 && filtered[0] instanceof Transaction)\n tr = filtered[0];\n else\n tr = resolveTransaction(state, asArray(filtered), false);\n }\n return tr;\n}\nfunction extendTransaction(tr) {\n let state = tr.startState, extenders = state.facet(transactionExtender), spec = tr;\n for (let i = extenders.length - 1; i >= 0; i--) {\n let extension = extenders[i](tr);\n if (extension && Object.keys(extension).length)\n spec = mergeTransaction(spec, resolveTransactionInner(state, extension, tr.changes.newLength), true);\n }\n return spec == tr ? tr : Transaction.create(state, tr.changes, tr.selection, spec.effects, spec.annotations, spec.scrollIntoView);\n}\nconst none = [];\nfunction asArray(value) {\n return value == null ? none : Array.isArray(value) ? value : [value];\n}\n\n/**\nThe categories produced by a [character\ncategorizer](https://codemirror.net/6/docs/ref/#state.EditorState.charCategorizer). These are used\ndo things like selecting by word.\n*/\nvar CharCategory = /*@__PURE__*/(function (CharCategory) {\n /**\n Word characters.\n */\n CharCategory[CharCategory[\"Word\"] = 0] = \"Word\";\n /**\n Whitespace.\n */\n CharCategory[CharCategory[\"Space\"] = 1] = \"Space\";\n /**\n Anything else.\n */\n CharCategory[CharCategory[\"Other\"] = 2] = \"Other\";\nreturn CharCategory})(CharCategory || (CharCategory = {}));\nconst nonASCIISingleCaseWordChar = /[\\u00df\\u0587\\u0590-\\u05f4\\u0600-\\u06ff\\u3040-\\u309f\\u30a0-\\u30ff\\u3400-\\u4db5\\u4e00-\\u9fcc\\uac00-\\ud7af]/;\nlet wordChar;\ntry {\n wordChar = /*@__PURE__*/new RegExp(\"[\\\\p{Alphabetic}\\\\p{Number}_]\", \"u\");\n}\ncatch (_) { }\nfunction hasWordChar(str) {\n if (wordChar)\n return wordChar.test(str);\n for (let i = 0; i < str.length; i++) {\n let ch = str[i];\n if (/\\w/.test(ch) || ch > \"\\x80\" && (ch.toUpperCase() != ch.toLowerCase() || nonASCIISingleCaseWordChar.test(ch)))\n return true;\n }\n return false;\n}\nfunction makeCategorizer(wordChars) {\n return (char) => {\n if (!/\\S/.test(char))\n return CharCategory.Space;\n if (hasWordChar(char))\n return CharCategory.Word;\n for (let i = 0; i < wordChars.length; i++)\n if (char.indexOf(wordChars[i]) > -1)\n return CharCategory.Word;\n return CharCategory.Other;\n };\n}\n\n/**\nThe editor state class is a persistent (immutable) data structure.\nTo update a state, you [create](https://codemirror.net/6/docs/ref/#state.EditorState.update) a\n[transaction](https://codemirror.net/6/docs/ref/#state.Transaction), which produces a _new_ state\ninstance, without modifying the original object.\n\nAs such, _never_ mutate properties of a state directly. That'll\njust break things.\n*/\nclass EditorState {\n constructor(\n /**\n @internal\n */\n config, \n /**\n The current document.\n */\n doc, \n /**\n The current selection.\n */\n selection, \n /**\n @internal\n */\n values, computeSlot, tr) {\n this.config = config;\n this.doc = doc;\n this.selection = selection;\n this.values = values;\n this.status = config.statusTemplate.slice();\n this.computeSlot = computeSlot;\n // Fill in the computed state immediately, so that further queries\n // for it made during the update return this state\n if (tr)\n tr._state = this;\n for (let i = 0; i < this.config.dynamicSlots.length; i++)\n ensureAddr(this, i << 1);\n this.computeSlot = null;\n }\n field(field, require = true) {\n let addr = this.config.address[field.id];\n if (addr == null) {\n if (require)\n throw new RangeError(\"Field is not present in this state\");\n return undefined;\n }\n ensureAddr(this, addr);\n return getAddr(this, addr);\n }\n /**\n Create a [transaction](https://codemirror.net/6/docs/ref/#state.Transaction) that updates this\n state. Any number of [transaction specs](https://codemirror.net/6/docs/ref/#state.TransactionSpec)\n can be passed. Unless\n [`sequential`](https://codemirror.net/6/docs/ref/#state.TransactionSpec.sequential) is set, the\n [changes](https://codemirror.net/6/docs/ref/#state.TransactionSpec.changes) (if any) of each spec\n are assumed to start in the _current_ document (not the document\n produced by previous specs), and its\n [selection](https://codemirror.net/6/docs/ref/#state.TransactionSpec.selection) and\n [effects](https://codemirror.net/6/docs/ref/#state.TransactionSpec.effects) are assumed to refer\n to the document created by its _own_ changes. The resulting\n transaction contains the combined effect of all the different\n specs. For [selection](https://codemirror.net/6/docs/ref/#state.TransactionSpec.selection), later\n specs take precedence over earlier ones.\n */\n update(...specs) {\n return resolveTransaction(this, specs, true);\n }\n /**\n @internal\n */\n applyTransaction(tr) {\n let conf = this.config, { base, compartments } = conf;\n for (let effect of tr.effects) {\n if (effect.is(Compartment.reconfigure)) {\n if (conf) {\n compartments = new Map;\n conf.compartments.forEach((val, key) => compartments.set(key, val));\n conf = null;\n }\n compartments.set(effect.value.compartment, effect.value.extension);\n }\n else if (effect.is(StateEffect.reconfigure)) {\n conf = null;\n base = effect.value;\n }\n else if (effect.is(StateEffect.appendConfig)) {\n conf = null;\n base = asArray(base).concat(effect.value);\n }\n }\n let startValues;\n if (!conf) {\n conf = Configuration.resolve(base, compartments, this);\n let intermediateState = new EditorState(conf, this.doc, this.selection, conf.dynamicSlots.map(() => null), (state, slot) => slot.reconfigure(state, this), null);\n startValues = intermediateState.values;\n }\n else {\n startValues = tr.startState.values.slice();\n }\n let selection = tr.startState.facet(allowMultipleSelections) ? tr.newSelection : tr.newSelection.asSingle();\n new EditorState(conf, tr.newDoc, selection, startValues, (state, slot) => slot.update(state, tr), tr);\n }\n /**\n Create a [transaction spec](https://codemirror.net/6/docs/ref/#state.TransactionSpec) that\n replaces every selection range with the given content.\n */\n replaceSelection(text) {\n if (typeof text == \"string\")\n text = this.toText(text);\n return this.changeByRange(range => ({ changes: { from: range.from, to: range.to, insert: text },\n range: EditorSelection.cursor(range.from + text.length) }));\n }\n /**\n Create a set of changes and a new selection by running the given\n function for each range in the active selection. The function\n can return an optional set of changes (in the coordinate space\n of the start document), plus an updated range (in the coordinate\n space of the document produced by the call's own changes). This\n method will merge all the changes and ranges into a single\n changeset and selection, and return it as a [transaction\n spec](https://codemirror.net/6/docs/ref/#state.TransactionSpec), which can be passed to\n [`update`](https://codemirror.net/6/docs/ref/#state.EditorState.update).\n */\n changeByRange(f) {\n let sel = this.selection;\n let result1 = f(sel.ranges[0]);\n let changes = this.changes(result1.changes), ranges = [result1.range];\n let effects = asArray(result1.effects);\n for (let i = 1; i < sel.ranges.length; i++) {\n let result = f(sel.ranges[i]);\n let newChanges = this.changes(result.changes), newMapped = newChanges.map(changes);\n for (let j = 0; j < i; j++)\n ranges[j] = ranges[j].map(newMapped);\n let mapBy = changes.mapDesc(newChanges, true);\n ranges.push(result.range.map(mapBy));\n changes = changes.compose(newMapped);\n effects = StateEffect.mapEffects(effects, newMapped).concat(StateEffect.mapEffects(asArray(result.effects), mapBy));\n }\n return {\n changes,\n selection: EditorSelection.create(ranges, sel.mainIndex),\n effects\n };\n }\n /**\n Create a [change set](https://codemirror.net/6/docs/ref/#state.ChangeSet) from the given change\n description, taking the state's document length and line\n separator into account.\n */\n changes(spec = []) {\n if (spec instanceof ChangeSet)\n return spec;\n return ChangeSet.of(spec, this.doc.length, this.facet(EditorState.lineSeparator));\n }\n /**\n Using the state's [line\n separator](https://codemirror.net/6/docs/ref/#state.EditorState^lineSeparator), create a\n [`Text`](https://codemirror.net/6/docs/ref/#state.Text) instance from the given string.\n */\n toText(string) {\n return Text.of(string.split(this.facet(EditorState.lineSeparator) || DefaultSplit));\n }\n /**\n Return the given range of the document as a string.\n */\n sliceDoc(from = 0, to = this.doc.length) {\n return this.doc.sliceString(from, to, this.lineBreak);\n }\n /**\n Get the value of a state [facet](https://codemirror.net/6/docs/ref/#state.Facet).\n */\n facet(facet) {\n let addr = this.config.address[facet.id];\n if (addr == null)\n return facet.default;\n ensureAddr(this, addr);\n return getAddr(this, addr);\n }\n /**\n Convert this state to a JSON-serializable object. When custom\n fields should be serialized, you can pass them in as an object\n mapping property names (in the resulting object, which should\n not use `doc` or `selection`) to fields.\n */\n toJSON(fields) {\n let result = {\n doc: this.sliceDoc(),\n selection: this.selection.toJSON()\n };\n if (fields)\n for (let prop in fields) {\n let value = fields[prop];\n if (value instanceof StateField && this.config.address[value.id] != null)\n result[prop] = value.spec.toJSON(this.field(fields[prop]), this);\n }\n return result;\n }\n /**\n Deserialize a state from its JSON representation. When custom\n fields should be deserialized, pass the same object you passed\n to [`toJSON`](https://codemirror.net/6/docs/ref/#state.EditorState.toJSON) when serializing as\n third argument.\n */\n static fromJSON(json, config = {}, fields) {\n if (!json || typeof json.doc != \"string\")\n throw new RangeError(\"Invalid JSON representation for EditorState\");\n let fieldInit = [];\n if (fields)\n for (let prop in fields) {\n if (Object.prototype.hasOwnProperty.call(json, prop)) {\n let field = fields[prop], value = json[prop];\n fieldInit.push(field.init(state => field.spec.fromJSON(value, state)));\n }\n }\n return EditorState.create({\n doc: json.doc,\n selection: EditorSelection.fromJSON(json.selection),\n extensions: config.extensions ? fieldInit.concat([config.extensions]) : fieldInit\n });\n }\n /**\n Create a new state. You'll usually only need this when\n initializing an editor—updated states are created by applying\n transactions.\n */\n static create(config = {}) {\n let configuration = Configuration.resolve(config.extensions || [], new Map);\n let doc = config.doc instanceof Text ? config.doc\n : Text.of((config.doc || \"\").split(configuration.staticFacet(EditorState.lineSeparator) || DefaultSplit));\n let selection = !config.selection ? EditorSelection.single(0)\n : config.selection instanceof EditorSelection ? config.selection\n : EditorSelection.single(config.selection.anchor, config.selection.head);\n checkSelection(selection, doc.length);\n if (!configuration.staticFacet(allowMultipleSelections))\n selection = selection.asSingle();\n return new EditorState(configuration, doc, selection, configuration.dynamicSlots.map(() => null), (state, slot) => slot.create(state), null);\n }\n /**\n The size (in columns) of a tab in the document, determined by\n the [`tabSize`](https://codemirror.net/6/docs/ref/#state.EditorState^tabSize) facet.\n */\n get tabSize() { return this.facet(EditorState.tabSize); }\n /**\n Get the proper [line-break](https://codemirror.net/6/docs/ref/#state.EditorState^lineSeparator)\n string for this state.\n */\n get lineBreak() { return this.facet(EditorState.lineSeparator) || \"\\n\"; }\n /**\n Returns true when the editor is\n [configured](https://codemirror.net/6/docs/ref/#state.EditorState^readOnly) to be read-only.\n */\n get readOnly() { return this.facet(readOnly); }\n /**\n Look up a translation for the given phrase (via the\n [`phrases`](https://codemirror.net/6/docs/ref/#state.EditorState^phrases) facet), or return the\n original string if no translation is found.\n \n If additional arguments are passed, they will be inserted in\n place of markers like `$1` (for the first value) and `$2`, etc.\n A single `$` is equivalent to `$1`, and `$$` will produce a\n literal dollar sign.\n */\n phrase(phrase, ...insert) {\n for (let map of this.facet(EditorState.phrases))\n if (Object.prototype.hasOwnProperty.call(map, phrase)) {\n phrase = map[phrase];\n break;\n }\n if (insert.length)\n phrase = phrase.replace(/\\$(\\$|\\d*)/g, (m, i) => {\n if (i == \"$\")\n return \"$\";\n let n = +(i || 1);\n return !n || n > insert.length ? m : insert[n - 1];\n });\n return phrase;\n }\n /**\n Find the values for a given language data field, provided by the\n the [`languageData`](https://codemirror.net/6/docs/ref/#state.EditorState^languageData) facet.\n \n Examples of language data fields are...\n \n - [`\"commentTokens\"`](https://codemirror.net/6/docs/ref/#commands.CommentTokens) for specifying\n comment syntax.\n - [`\"autocomplete\"`](https://codemirror.net/6/docs/ref/#autocomplete.autocompletion^config.override)\n for providing language-specific completion sources.\n - [`\"wordChars\"`](https://codemirror.net/6/docs/ref/#state.EditorState.charCategorizer) for adding\n characters that should be considered part of words in this\n language.\n - [`\"closeBrackets\"`](https://codemirror.net/6/docs/ref/#autocomplete.CloseBracketConfig) controls\n bracket closing behavior.\n */\n languageDataAt(name, pos, side = -1) {\n let values = [];\n for (let provider of this.facet(languageData)) {\n for (let result of provider(this, pos, side)) {\n if (Object.prototype.hasOwnProperty.call(result, name))\n values.push(result[name]);\n }\n }\n return values;\n }\n /**\n Return a function that can categorize strings (expected to\n represent a single [grapheme cluster](https://codemirror.net/6/docs/ref/#state.findClusterBreak))\n into one of:\n \n - Word (contains an alphanumeric character or a character\n explicitly listed in the local language's `\"wordChars\"`\n language data, which should be a string)\n - Space (contains only whitespace)\n - Other (anything else)\n */\n charCategorizer(at) {\n let chars = this.languageDataAt(\"wordChars\", at);\n return makeCategorizer(chars.length ? chars[0] : \"\");\n }\n /**\n Find the word at the given position, meaning the range\n containing all [word](https://codemirror.net/6/docs/ref/#state.CharCategory.Word) characters\n around it. If no word characters are adjacent to the position,\n this returns null.\n */\n wordAt(pos) {\n let { text, from, length } = this.doc.lineAt(pos);\n let cat = this.charCategorizer(pos);\n let start = pos - from, end = pos - from;\n while (start > 0) {\n let prev = findClusterBreak(text, start, false);\n if (cat(text.slice(prev, start)) != CharCategory.Word)\n break;\n start = prev;\n }\n while (end < length) {\n let next = findClusterBreak(text, end);\n if (cat(text.slice(end, next)) != CharCategory.Word)\n break;\n end = next;\n }\n return start == end ? null : EditorSelection.range(start + from, end + from);\n }\n}\n/**\nA facet that, when enabled, causes the editor to allow multiple\nranges to be selected. Be careful though, because by default the\neditor relies on the native DOM selection, which cannot handle\nmultiple selections. An extension like\n[`drawSelection`](https://codemirror.net/6/docs/ref/#view.drawSelection) can be used to make\nsecondary selections visible to the user.\n*/\nEditorState.allowMultipleSelections = allowMultipleSelections;\n/**\nConfigures the tab size to use in this state. The first\n(highest-precedence) value of the facet is used. If no value is\ngiven, this defaults to 4.\n*/\nEditorState.tabSize = /*@__PURE__*/Facet.define({\n combine: values => values.length ? values[0] : 4\n});\n/**\nThe line separator to use. By default, any of `\"\\n\"`, `\"\\r\\n\"`\nand `\"\\r\"` is treated as a separator when splitting lines, and\nlines are joined with `\"\\n\"`.\n\nWhen you configure a value here, only that precise separator\nwill be used, allowing you to round-trip documents through the\neditor without normalizing line separators.\n*/\nEditorState.lineSeparator = lineSeparator;\n/**\nThis facet controls the value of the\n[`readOnly`](https://codemirror.net/6/docs/ref/#state.EditorState.readOnly) getter, which is\nconsulted by commands and extensions that implement editing\nfunctionality to determine whether they should apply. It\ndefaults to false, but when its highest-precedence value is\n`true`, such functionality disables itself.\n\nNot to be confused with\n[`EditorView.editable`](https://codemirror.net/6/docs/ref/#view.EditorView^editable), which\ncontrols whether the editor's DOM is set to be editable (and\nthus focusable).\n*/\nEditorState.readOnly = readOnly;\n/**\nRegisters translation phrases. The\n[`phrase`](https://codemirror.net/6/docs/ref/#state.EditorState.phrase) method will look through\nall objects registered with this facet to find translations for\nits argument.\n*/\nEditorState.phrases = /*@__PURE__*/Facet.define({\n compare(a, b) {\n let kA = Object.keys(a), kB = Object.keys(b);\n return kA.length == kB.length && kA.every(k => a[k] == b[k]);\n }\n});\n/**\nA facet used to register [language\ndata](https://codemirror.net/6/docs/ref/#state.EditorState.languageDataAt) providers.\n*/\nEditorState.languageData = languageData;\n/**\nFacet used to register change filters, which are called for each\ntransaction (unless explicitly\n[disabled](https://codemirror.net/6/docs/ref/#state.TransactionSpec.filter)), and can suppress\npart of the transaction's changes.\n\nSuch a function can return `true` to indicate that it doesn't\nwant to do anything, `false` to completely stop the changes in\nthe transaction, or a set of ranges in which changes should be\nsuppressed. Such ranges are represented as an array of numbers,\nwith each pair of two numbers indicating the start and end of a\nrange. So for example `[10, 20, 100, 110]` suppresses changes\nbetween 10 and 20, and between 100 and 110.\n*/\nEditorState.changeFilter = changeFilter;\n/**\nFacet used to register a hook that gets a chance to update or\nreplace transaction specs before they are applied. This will\nonly be applied for transactions that don't have\n[`filter`](https://codemirror.net/6/docs/ref/#state.TransactionSpec.filter) set to `false`. You\ncan either return a single transaction spec (possibly the input\ntransaction), or an array of specs (which will be combined in\nthe same way as the arguments to\n[`EditorState.update`](https://codemirror.net/6/docs/ref/#state.EditorState.update)).\n\nWhen possible, it is recommended to avoid accessing\n[`Transaction.state`](https://codemirror.net/6/docs/ref/#state.Transaction.state) in a filter,\nsince it will force creation of a state that will then be\ndiscarded again, if the transaction is actually filtered.\n\n(This functionality should be used with care. Indiscriminately\nmodifying transaction is likely to break something or degrade\nthe user experience.)\n*/\nEditorState.transactionFilter = transactionFilter;\n/**\nThis is a more limited form of\n[`transactionFilter`](https://codemirror.net/6/docs/ref/#state.EditorState^transactionFilter),\nwhich can only add\n[annotations](https://codemirror.net/6/docs/ref/#state.TransactionSpec.annotations) and\n[effects](https://codemirror.net/6/docs/ref/#state.TransactionSpec.effects). _But_, this type\nof filter runs even if the transaction has disabled regular\n[filtering](https://codemirror.net/6/docs/ref/#state.TransactionSpec.filter), making it suitable\nfor effects that don't need to touch the changes or selection,\nbut do want to process every transaction.\n\nExtenders run _after_ filters, when both are present.\n*/\nEditorState.transactionExtender = transactionExtender;\nCompartment.reconfigure = /*@__PURE__*/StateEffect.define();\n\n/**\nUtility function for combining behaviors to fill in a config\nobject from an array of provided configs. `defaults` should hold\ndefault values for all optional fields in `Config`.\n\nThe function will, by default, error\nwhen a field gets two values that aren't `===`-equal, but you can\nprovide combine functions per field to do something else.\n*/\nfunction combineConfig(configs, defaults, // Should hold only the optional properties of Config, but I haven't managed to express that\ncombine = {}) {\n let result = {};\n for (let config of configs)\n for (let key of Object.keys(config)) {\n let value = config[key], current = result[key];\n if (current === undefined)\n result[key] = value;\n else if (current === value || value === undefined) ; // No conflict\n else if (Object.hasOwnProperty.call(combine, key))\n result[key] = combine[key](current, value);\n else\n throw new Error(\"Config merge conflict for field \" + key);\n }\n for (let key in defaults)\n if (result[key] === undefined)\n result[key] = defaults[key];\n return result;\n}\n\n/**\nEach range is associated with a value, which must inherit from\nthis class.\n*/\nclass RangeValue {\n /**\n Compare this value with another value. Used when comparing\n rangesets. The default implementation compares by identity.\n Unless you are only creating a fixed number of unique instances\n of your value type, it is a good idea to implement this\n properly.\n */\n eq(other) { return this == other; }\n /**\n Create a [range](https://codemirror.net/6/docs/ref/#state.Range) with this value.\n */\n range(from, to = from) { return Range.create(from, to, this); }\n}\nRangeValue.prototype.startSide = RangeValue.prototype.endSide = 0;\nRangeValue.prototype.point = false;\nRangeValue.prototype.mapMode = MapMode.TrackDel;\nfunction cmpVal(a, b) {\n return a == b || a.constructor == b.constructor && a.eq(b);\n}\n/**\nA range associates a value with a range of positions.\n*/\nclass Range {\n constructor(\n /**\n The range's start position.\n */\n from, \n /**\n Its end position.\n */\n to, \n /**\n The value associated with this range.\n */\n value) {\n this.from = from;\n this.to = to;\n this.value = value;\n }\n /**\n @internal\n */\n static create(from, to, value) {\n return new Range(from, to, value);\n }\n}\nfunction cmpRange(a, b) {\n return a.from - b.from || a.value.startSide - b.value.startSide;\n}\nclass Chunk {\n constructor(from, to, value, \n // Chunks are marked with the largest point that occurs\n // in them (or -1 for no points), so that scans that are\n // only interested in points (such as the\n // heightmap-related logic) can skip range-only chunks.\n maxPoint) {\n this.from = from;\n this.to = to;\n this.value = value;\n this.maxPoint = maxPoint;\n }\n get length() { return last(this.to); }\n // Find the index of the given position and side. Use the ranges'\n // `from` pos when `end == false`, `to` when `end == true`.\n findIndex(pos, side, end, startAt = 0) {\n let arr = end ? this.to : this.from;\n for (let lo = startAt, hi = arr.length;;) {\n if (lo == hi)\n return lo;\n let mid = (lo + hi) >> 1;\n let diff = arr[mid] - pos || (end ? this.value[mid].endSide : this.value[mid].startSide) - side;\n if (mid == lo)\n return diff >= 0 ? lo : hi;\n if (diff >= 0)\n hi = mid;\n else\n lo = mid + 1;\n }\n }\n between(offset, from, to, f) {\n for (let i = this.findIndex(from, -1000000000 /* C.Far */, true), e = this.findIndex(to, 1000000000 /* C.Far */, false, i); i < e; i++)\n if (f(this.from[i] + offset, this.to[i] + offset, this.value[i]) === false)\n return false;\n }\n map(offset, changes, basePos, baseSide, spill) {\n let value = [], from = [], to = [], newPos = -1, maxPoint = -1;\n iter: for (let i = 0; i < this.value.length; i++) {\n let val = this.value[i], curFrom = this.from[i] + offset, curTo = this.to[i] + offset, newFrom, newTo;\n if (curFrom == curTo) {\n let mapped = changes.mapPos(curFrom, val.startSide, val.mapMode);\n if (mapped == null)\n continue;\n newFrom = newTo = mapped;\n if (val.startSide != val.endSide) {\n newTo = changes.mapPos(curFrom, val.endSide);\n if (newTo < newFrom)\n continue;\n }\n }\n else {\n newFrom = changes.mapPos(curFrom, val.startSide);\n newTo = changes.mapPos(curTo, val.endSide);\n if (newFrom > newTo || newFrom == newTo && val.startSide > 0 && val.endSide <= 0)\n continue;\n }\n if ((newTo - newFrom || val.endSide - val.startSide) < 0)\n continue;\n if (newPos < 0)\n newPos = newFrom;\n if (val.point)\n maxPoint = Math.max(maxPoint, newTo - newFrom);\n if ((newFrom - basePos || val.startSide - baseSide) >= 0) {\n value.push(val);\n from.push(newFrom - newPos);\n to.push(newTo - newPos);\n basePos = newTo;\n baseSide = val.endSide;\n }\n else {\n if (newFrom == newTo) { // Try to reorder points to fit in here\n for (let i = value.length; i > 0; i--) {\n if ((newFrom - (to[i - 1] + newPos) || val.startSide - value[i - 1].endSide) >= 0) {\n value.splice(i, 0, val);\n from.splice(i, 0, newFrom - newPos);\n to.splice(i, 0, newTo - newPos);\n continue iter;\n }\n if ((newFrom - (from[i - 1] + newPos) || val.endSide - value[i - 1].startSide) > 0)\n break;\n }\n }\n // Otherwise, spill into a new layer\n spill(newFrom, newTo, val);\n }\n }\n return { mapped: value.length ? new Chunk(from, to, value, maxPoint) : null, pos: newPos };\n }\n}\n/**\nA range set stores a collection of [ranges](https://codemirror.net/6/docs/ref/#state.Range) in a\nway that makes them efficient to [map](https://codemirror.net/6/docs/ref/#state.RangeSet.map) and\n[update](https://codemirror.net/6/docs/ref/#state.RangeSet.update). This is an immutable data\nstructure.\n*/\nclass RangeSet {\n constructor(\n /**\n @internal\n */\n chunkPos, \n /**\n @internal\n */\n chunk, \n /**\n @internal\n */\n nextLayer, \n /**\n @internal\n */\n maxPoint) {\n this.chunkPos = chunkPos;\n this.chunk = chunk;\n this.nextLayer = nextLayer;\n this.maxPoint = maxPoint;\n }\n /**\n @internal\n */\n static create(chunkPos, chunk, nextLayer, maxPoint) {\n return new RangeSet(chunkPos, chunk, nextLayer, maxPoint);\n }\n /**\n @internal\n */\n get length() {\n let last = this.chunk.length - 1;\n return last < 0 ? 0 : Math.max(this.chunkEnd(last), this.nextLayer.length);\n }\n /**\n The number of ranges in the set.\n */\n get size() {\n if (this.isEmpty)\n return 0;\n let size = this.nextLayer.size;\n for (let chunk of this.chunk)\n size += chunk.value.length;\n return size;\n }\n /**\n @internal\n */\n chunkEnd(index) {\n return this.chunkPos[index] + this.chunk[index].length;\n }\n /**\n Update the range set, optionally adding new ranges or filtering\n out existing ones.\n \n (Note: The type parameter is just there as a kludge to work\n around TypeScript variance issues that prevented `RangeSet`\n from being a subtype of `RangeSet` when `X` is a subtype of\n `Y`.)\n */\n update(updateSpec) {\n let { add = [], sort = false, filterFrom = 0, filterTo = this.length } = updateSpec;\n let filter = updateSpec.filter;\n if (add.length == 0 && !filter)\n return this;\n if (sort)\n add = add.slice().sort(cmpRange);\n if (this.isEmpty)\n return add.length ? RangeSet.of(add) : this;\n let cur = new LayerCursor(this, null, -1).goto(0), i = 0, spill = [];\n let builder = new RangeSetBuilder();\n while (cur.value || i < add.length) {\n if (i < add.length && (cur.from - add[i].from || cur.startSide - add[i].value.startSide) >= 0) {\n let range = add[i++];\n if (!builder.addInner(range.from, range.to, range.value, false))\n spill.push(range);\n }\n else if (cur.rangeIndex == 1 && cur.chunkIndex < this.chunk.length &&\n (i == add.length || this.chunkEnd(cur.chunkIndex) < add[i].from) &&\n (!filter || filterFrom > this.chunkEnd(cur.chunkIndex) || filterTo < this.chunkPos[cur.chunkIndex]) &&\n builder.addChunk(this.chunkPos[cur.chunkIndex], this.chunk[cur.chunkIndex])) {\n cur.nextChunk();\n }\n else {\n if (!filter || filterFrom > cur.to || filterTo < cur.from || filter(cur.from, cur.to, cur.value)) {\n if (!builder.addInner(cur.from, cur.to, cur.value, false))\n spill.push(Range.create(cur.from, cur.to, cur.value));\n }\n cur.next();\n }\n }\n return builder.finishInner(this.nextLayer.isEmpty && !spill.length ? RangeSet.empty\n : this.nextLayer.update({ add: spill, filter, filterFrom, filterTo }));\n }\n /**\n Map this range set through a set of changes, return the new set.\n */\n map(changes) {\n if (changes.empty || this.isEmpty)\n return this;\n let chunks = [], chunkPos = [], maxPoint = -1;\n let spilled;\n let spill = (from, to, value) => {\n if (!spilled)\n spilled = new RangeSetBuilder();\n spilled.addRange(from, to, value, false);\n };\n for (let i = 0; i < this.chunk.length; i++) {\n let start = this.chunkPos[i], chunk = this.chunk[i];\n let touch = changes.touchesRange(start, start + chunk.length);\n if (touch === false) {\n maxPoint = Math.max(maxPoint, chunk.maxPoint);\n chunks.push(chunk);\n chunkPos.push(changes.mapPos(start));\n }\n else if (touch === true) {\n let [prevPos, prevSide] = !chunks.length ? [-1, -1]\n : [last(chunkPos) + last(chunks).length, last(last(chunks).value).endSide];\n let { mapped, pos } = chunk.map(start, changes, prevPos, prevSide, spill);\n if (mapped) {\n maxPoint = Math.max(maxPoint, mapped.maxPoint);\n chunks.push(mapped);\n chunkPos.push(pos);\n }\n }\n }\n let next = this.nextLayer.map(changes);\n if (spilled)\n next = spilled.finishInner(next);\n return chunks.length == 0 ? next : new RangeSet(chunkPos, chunks, next || RangeSet.empty, maxPoint);\n }\n /**\n Iterate over the ranges that touch the region `from` to `to`,\n calling `f` for each. There is no guarantee that the ranges will\n be reported in any specific order. When the callback returns\n `false`, iteration stops.\n */\n between(from, to, f) {\n if (this.isEmpty)\n return;\n for (let i = 0; i < this.chunk.length; i++) {\n let start = this.chunkPos[i], chunk = this.chunk[i];\n if (to >= start && from <= start + chunk.length &&\n chunk.between(start, from - start, to - start, f) === false)\n return;\n }\n this.nextLayer.between(from, to, f);\n }\n /**\n Iterate over the ranges in this set, in order, including all\n ranges that end at or after `from`.\n */\n iter(from = 0) {\n return HeapCursor.from([this]).goto(from);\n }\n /**\n @internal\n */\n get isEmpty() { return this.nextLayer == this; }\n /**\n Iterate over the ranges in a collection of sets, in order,\n starting from `from`.\n */\n static iter(sets, from = 0) {\n return HeapCursor.from(sets).goto(from);\n }\n /**\n Iterate over two groups of sets, calling methods on `comparator`\n to notify it of possible differences.\n */\n static compare(oldSets, newSets, \n /**\n This indicates how the underlying data changed between these\n ranges, and is needed to synchronize the iteration.\n */\n textDiff, comparator, \n /**\n Can be used to ignore all non-point ranges, and points below\n the given size. When -1, all ranges are compared.\n */\n minPointSize = -1) {\n let a = oldSets.filter(set => set.maxPoint > 0 || !set.isEmpty && set.maxPoint >= minPointSize);\n let b = newSets.filter(set => set.maxPoint > 0 || !set.isEmpty && set.maxPoint >= minPointSize);\n let sharedChunks = findSharedChunks(a, b, textDiff);\n let sideA = new SpanCursor(a, sharedChunks, minPointSize);\n let sideB = new SpanCursor(b, sharedChunks, minPointSize);\n textDiff.iterGaps((fromA, fromB, length) => compare(sideA, fromA, sideB, fromB, length, comparator));\n if (textDiff.empty && textDiff.length == 0)\n compare(sideA, 0, sideB, 0, 0, comparator);\n }\n /**\n Compare the contents of two groups of range sets, returning true\n if they are equivalent in the given range.\n */\n static eq(oldSets, newSets, from = 0, to) {\n if (to == null)\n to = 1000000000 /* C.Far */ - 1;\n let a = oldSets.filter(set => !set.isEmpty && newSets.indexOf(set) < 0);\n let b = newSets.filter(set => !set.isEmpty && oldSets.indexOf(set) < 0);\n if (a.length != b.length)\n return false;\n if (!a.length)\n return true;\n let sharedChunks = findSharedChunks(a, b);\n let sideA = new SpanCursor(a, sharedChunks, 0).goto(from), sideB = new SpanCursor(b, sharedChunks, 0).goto(from);\n for (;;) {\n if (sideA.to != sideB.to ||\n !sameValues(sideA.active, sideB.active) ||\n sideA.point && (!sideB.point || !cmpVal(sideA.point, sideB.point)))\n return false;\n if (sideA.to > to)\n return true;\n sideA.next();\n sideB.next();\n }\n }\n /**\n Iterate over a group of range sets at the same time, notifying\n the iterator about the ranges covering every given piece of\n content. Returns the open count (see\n [`SpanIterator.span`](https://codemirror.net/6/docs/ref/#state.SpanIterator.span)) at the end\n of the iteration.\n */\n static spans(sets, from, to, iterator, \n /**\n When given and greater than -1, only points of at least this\n size are taken into account.\n */\n minPointSize = -1) {\n let cursor = new SpanCursor(sets, null, minPointSize).goto(from), pos = from;\n let openRanges = cursor.openStart;\n for (;;) {\n let curTo = Math.min(cursor.to, to);\n if (cursor.point) {\n let active = cursor.activeForPoint(cursor.to);\n let openCount = cursor.pointFrom < from ? active.length + 1\n : cursor.point.startSide < 0 ? active.length\n : Math.min(active.length, openRanges);\n iterator.point(pos, curTo, cursor.point, active, openCount, cursor.pointRank);\n openRanges = Math.min(cursor.openEnd(curTo), active.length);\n }\n else if (curTo > pos) {\n iterator.span(pos, curTo, cursor.active, openRanges);\n openRanges = cursor.openEnd(curTo);\n }\n if (cursor.to > to)\n return openRanges + (cursor.point && cursor.to > to ? 1 : 0);\n pos = cursor.to;\n cursor.next();\n }\n }\n /**\n Create a range set for the given range or array of ranges. By\n default, this expects the ranges to be _sorted_ (by start\n position and, if two start at the same position,\n `value.startSide`). You can pass `true` as second argument to\n cause the method to sort them.\n */\n static of(ranges, sort = false) {\n let build = new RangeSetBuilder();\n for (let range of ranges instanceof Range ? [ranges] : sort ? lazySort(ranges) : ranges)\n build.add(range.from, range.to, range.value);\n return build.finish();\n }\n /**\n Join an array of range sets into a single set.\n */\n static join(sets) {\n if (!sets.length)\n return RangeSet.empty;\n let result = last(sets);\n for (let i = sets.length - 2; i >= 0; i--) {\n for (let layer = sets[i]; layer != RangeSet.empty; layer = layer.nextLayer)\n result = new RangeSet(layer.chunkPos, layer.chunk, result, Math.max(layer.maxPoint, result.maxPoint));\n }\n return result;\n }\n}\n/**\nThe empty set of ranges.\n*/\nRangeSet.empty = /*@__PURE__*/new RangeSet([], [], null, -1);\nfunction last(arr) { return arr[arr.length - 1]; }\nfunction lazySort(ranges) {\n if (ranges.length > 1)\n for (let prev = ranges[0], i = 1; i < ranges.length; i++) {\n let cur = ranges[i];\n if (cmpRange(prev, cur) > 0)\n return ranges.slice().sort(cmpRange);\n prev = cur;\n }\n return ranges;\n}\nRangeSet.empty.nextLayer = RangeSet.empty;\n/**\nA range set builder is a data structure that helps build up a\n[range set](https://codemirror.net/6/docs/ref/#state.RangeSet) directly, without first allocating\nan array of [`Range`](https://codemirror.net/6/docs/ref/#state.Range) objects.\n*/\nclass RangeSetBuilder {\n finishChunk(newArrays) {\n this.chunks.push(new Chunk(this.from, this.to, this.value, this.maxPoint));\n this.chunkPos.push(this.chunkStart);\n this.chunkStart = -1;\n this.setMaxPoint = Math.max(this.setMaxPoint, this.maxPoint);\n this.maxPoint = -1;\n if (newArrays) {\n this.from = [];\n this.to = [];\n this.value = [];\n }\n }\n /**\n Create an empty builder.\n */\n constructor() {\n this.chunks = [];\n this.chunkPos = [];\n this.chunkStart = -1;\n this.last = null;\n this.lastFrom = -1000000000 /* C.Far */;\n this.lastTo = -1000000000 /* C.Far */;\n this.from = [];\n this.to = [];\n this.value = [];\n this.maxPoint = -1;\n this.setMaxPoint = -1;\n this.nextLayer = null;\n }\n /**\n Add a range. Ranges should be added in sorted (by `from` and\n `value.startSide`) order.\n */\n add(from, to, value) { this.addRange(from, to, value, true); }\n /**\n @internal\n */\n addRange(from, to, value, strict) {\n if (!this.addInner(from, to, value, strict))\n (this.nextLayer || (this.nextLayer = new RangeSetBuilder)).addRange(from, to, value, strict);\n }\n /**\n @internal\n */\n addInner(from, to, value, strict) {\n let diff = from - this.lastTo || value.startSide - this.last.endSide;\n if (strict && diff <= 0 && (from - this.lastFrom || value.startSide - this.last.startSide) < 0)\n throw new Error(\"Ranges must be added sorted by `from` position and `startSide`\");\n if (diff < 0)\n return false;\n if (this.from.length == 250 /* C.ChunkSize */)\n this.finishChunk(true);\n if (this.chunkStart < 0)\n this.chunkStart = from;\n this.from.push(from - this.chunkStart);\n this.to.push(to - this.chunkStart);\n this.last = value;\n this.lastFrom = from;\n this.lastTo = to;\n this.value.push(value);\n if (value.point)\n this.maxPoint = Math.max(this.maxPoint, to - from);\n return true;\n }\n /**\n @internal\n */\n addChunk(from, chunk) {\n if ((from - this.lastTo || chunk.value[0].startSide - this.last.endSide) < 0)\n return false;\n if (this.from.length)\n this.finishChunk(true);\n this.setMaxPoint = Math.max(this.setMaxPoint, chunk.maxPoint);\n this.chunks.push(chunk);\n this.chunkPos.push(from);\n let last = chunk.value.length - 1;\n this.last = chunk.value[last];\n this.lastFrom = chunk.from[last] + from;\n this.lastTo = chunk.to[last] + from;\n return true;\n }\n /**\n Finish the range set. Returns the new set. The builder can't be\n used anymore after this has been called.\n */\n finish() { return this.finishInner(RangeSet.empty); }\n /**\n @internal\n */\n finishInner(next) {\n if (this.from.length)\n this.finishChunk(false);\n if (this.chunks.length == 0)\n return next;\n let result = RangeSet.create(this.chunkPos, this.chunks, this.nextLayer ? this.nextLayer.finishInner(next) : next, this.setMaxPoint);\n this.from = null; // Make sure further `add` calls produce errors\n return result;\n }\n}\nfunction findSharedChunks(a, b, textDiff) {\n let inA = new Map();\n for (let set of a)\n for (let i = 0; i < set.chunk.length; i++)\n if (set.chunk[i].maxPoint <= 0)\n inA.set(set.chunk[i], set.chunkPos[i]);\n let shared = new Set();\n for (let set of b)\n for (let i = 0; i < set.chunk.length; i++) {\n let known = inA.get(set.chunk[i]);\n if (known != null && (textDiff ? textDiff.mapPos(known) : known) == set.chunkPos[i] &&\n !(textDiff === null || textDiff === void 0 ? void 0 : textDiff.touchesRange(known, known + set.chunk[i].length)))\n shared.add(set.chunk[i]);\n }\n return shared;\n}\nclass LayerCursor {\n constructor(layer, skip, minPoint, rank = 0) {\n this.layer = layer;\n this.skip = skip;\n this.minPoint = minPoint;\n this.rank = rank;\n }\n get startSide() { return this.value ? this.value.startSide : 0; }\n get endSide() { return this.value ? this.value.endSide : 0; }\n goto(pos, side = -1000000000 /* C.Far */) {\n this.chunkIndex = this.rangeIndex = 0;\n this.gotoInner(pos, side, false);\n return this;\n }\n gotoInner(pos, side, forward) {\n while (this.chunkIndex < this.layer.chunk.length) {\n let next = this.layer.chunk[this.chunkIndex];\n if (!(this.skip && this.skip.has(next) ||\n this.layer.chunkEnd(this.chunkIndex) < pos ||\n next.maxPoint < this.minPoint))\n break;\n this.chunkIndex++;\n forward = false;\n }\n if (this.chunkIndex < this.layer.chunk.length) {\n let rangeIndex = this.layer.chunk[this.chunkIndex].findIndex(pos - this.layer.chunkPos[this.chunkIndex], side, true);\n if (!forward || this.rangeIndex < rangeIndex)\n this.setRangeIndex(rangeIndex);\n }\n this.next();\n }\n forward(pos, side) {\n if ((this.to - pos || this.endSide - side) < 0)\n this.gotoInner(pos, side, true);\n }\n next() {\n for (;;) {\n if (this.chunkIndex == this.layer.chunk.length) {\n this.from = this.to = 1000000000 /* C.Far */;\n this.value = null;\n break;\n }\n else {\n let chunkPos = this.layer.chunkPos[this.chunkIndex], chunk = this.layer.chunk[this.chunkIndex];\n let from = chunkPos + chunk.from[this.rangeIndex];\n this.from = from;\n this.to = chunkPos + chunk.to[this.rangeIndex];\n this.value = chunk.value[this.rangeIndex];\n this.setRangeIndex(this.rangeIndex + 1);\n if (this.minPoint < 0 || this.value.point && this.to - this.from >= this.minPoint)\n break;\n }\n }\n }\n setRangeIndex(index) {\n if (index == this.layer.chunk[this.chunkIndex].value.length) {\n this.chunkIndex++;\n if (this.skip) {\n while (this.chunkIndex < this.layer.chunk.length && this.skip.has(this.layer.chunk[this.chunkIndex]))\n this.chunkIndex++;\n }\n this.rangeIndex = 0;\n }\n else {\n this.rangeIndex = index;\n }\n }\n nextChunk() {\n this.chunkIndex++;\n this.rangeIndex = 0;\n this.next();\n }\n compare(other) {\n return this.from - other.from || this.startSide - other.startSide || this.rank - other.rank ||\n this.to - other.to || this.endSide - other.endSide;\n }\n}\nclass HeapCursor {\n constructor(heap) {\n this.heap = heap;\n }\n static from(sets, skip = null, minPoint = -1) {\n let heap = [];\n for (let i = 0; i < sets.length; i++) {\n for (let cur = sets[i]; !cur.isEmpty; cur = cur.nextLayer) {\n if (cur.maxPoint >= minPoint)\n heap.push(new LayerCursor(cur, skip, minPoint, i));\n }\n }\n return heap.length == 1 ? heap[0] : new HeapCursor(heap);\n }\n get startSide() { return this.value ? this.value.startSide : 0; }\n goto(pos, side = -1000000000 /* C.Far */) {\n for (let cur of this.heap)\n cur.goto(pos, side);\n for (let i = this.heap.length >> 1; i >= 0; i--)\n heapBubble(this.heap, i);\n this.next();\n return this;\n }\n forward(pos, side) {\n for (let cur of this.heap)\n cur.forward(pos, side);\n for (let i = this.heap.length >> 1; i >= 0; i--)\n heapBubble(this.heap, i);\n if ((this.to - pos || this.value.endSide - side) < 0)\n this.next();\n }\n next() {\n if (this.heap.length == 0) {\n this.from = this.to = 1000000000 /* C.Far */;\n this.value = null;\n this.rank = -1;\n }\n else {\n let top = this.heap[0];\n this.from = top.from;\n this.to = top.to;\n this.value = top.value;\n this.rank = top.rank;\n if (top.value)\n top.next();\n heapBubble(this.heap, 0);\n }\n }\n}\nfunction heapBubble(heap, index) {\n for (let cur = heap[index];;) {\n let childIndex = (index << 1) + 1;\n if (childIndex >= heap.length)\n break;\n let child = heap[childIndex];\n if (childIndex + 1 < heap.length && child.compare(heap[childIndex + 1]) >= 0) {\n child = heap[childIndex + 1];\n childIndex++;\n }\n if (cur.compare(child) < 0)\n break;\n heap[childIndex] = cur;\n heap[index] = child;\n index = childIndex;\n }\n}\nclass SpanCursor {\n constructor(sets, skip, minPoint) {\n this.minPoint = minPoint;\n this.active = [];\n this.activeTo = [];\n this.activeRank = [];\n this.minActive = -1;\n // A currently active point range, if any\n this.point = null;\n this.pointFrom = 0;\n this.pointRank = 0;\n this.to = -1000000000 /* C.Far */;\n this.endSide = 0;\n // The amount of open active ranges at the start of the iterator.\n // Not including points.\n this.openStart = -1;\n this.cursor = HeapCursor.from(sets, skip, minPoint);\n }\n goto(pos, side = -1000000000 /* C.Far */) {\n this.cursor.goto(pos, side);\n this.active.length = this.activeTo.length = this.activeRank.length = 0;\n this.minActive = -1;\n this.to = pos;\n this.endSide = side;\n this.openStart = -1;\n this.next();\n return this;\n }\n forward(pos, side) {\n while (this.minActive > -1 && (this.activeTo[this.minActive] - pos || this.active[this.minActive].endSide - side) < 0)\n this.removeActive(this.minActive);\n this.cursor.forward(pos, side);\n }\n removeActive(index) {\n remove(this.active, index);\n remove(this.activeTo, index);\n remove(this.activeRank, index);\n this.minActive = findMinIndex(this.active, this.activeTo);\n }\n addActive(trackOpen) {\n let i = 0, { value, to, rank } = this.cursor;\n // Organize active marks by rank first, then by size\n while (i < this.activeRank.length && (rank - this.activeRank[i] || to - this.activeTo[i]) > 0)\n i++;\n insert(this.active, i, value);\n insert(this.activeTo, i, to);\n insert(this.activeRank, i, rank);\n if (trackOpen)\n insert(trackOpen, i, this.cursor.from);\n this.minActive = findMinIndex(this.active, this.activeTo);\n }\n // After calling this, if `this.point` != null, the next range is a\n // point. Otherwise, it's a regular range, covered by `this.active`.\n next() {\n let from = this.to, wasPoint = this.point;\n this.point = null;\n let trackOpen = this.openStart < 0 ? [] : null;\n for (;;) {\n let a = this.minActive;\n if (a > -1 && (this.activeTo[a] - this.cursor.from || this.active[a].endSide - this.cursor.startSide) < 0) {\n if (this.activeTo[a] > from) {\n this.to = this.activeTo[a];\n this.endSide = this.active[a].endSide;\n break;\n }\n this.removeActive(a);\n if (trackOpen)\n remove(trackOpen, a);\n }\n else if (!this.cursor.value) {\n this.to = this.endSide = 1000000000 /* C.Far */;\n break;\n }\n else if (this.cursor.from > from) {\n this.to = this.cursor.from;\n this.endSide = this.cursor.startSide;\n break;\n }\n else {\n let nextVal = this.cursor.value;\n if (!nextVal.point) { // Opening a range\n this.addActive(trackOpen);\n this.cursor.next();\n }\n else if (wasPoint && this.cursor.to == this.to && this.cursor.from < this.cursor.to) {\n // Ignore any non-empty points that end precisely at the end of the prev point\n this.cursor.next();\n }\n else { // New point\n this.point = nextVal;\n this.pointFrom = this.cursor.from;\n this.pointRank = this.cursor.rank;\n this.to = this.cursor.to;\n this.endSide = nextVal.endSide;\n this.cursor.next();\n this.forward(this.to, this.endSide);\n break;\n }\n }\n }\n if (trackOpen) {\n this.openStart = 0;\n for (let i = trackOpen.length - 1; i >= 0 && trackOpen[i] < from; i--)\n this.openStart++;\n }\n }\n activeForPoint(to) {\n if (!this.active.length)\n return this.active;\n let active = [];\n for (let i = this.active.length - 1; i >= 0; i--) {\n if (this.activeRank[i] < this.pointRank)\n break;\n if (this.activeTo[i] > to || this.activeTo[i] == to && this.active[i].endSide >= this.point.endSide)\n active.push(this.active[i]);\n }\n return active.reverse();\n }\n openEnd(to) {\n let open = 0;\n for (let i = this.activeTo.length - 1; i >= 0 && this.activeTo[i] > to; i--)\n open++;\n return open;\n }\n}\nfunction compare(a, startA, b, startB, length, comparator) {\n a.goto(startA);\n b.goto(startB);\n let endB = startB + length;\n let pos = startB, dPos = startB - startA;\n let bounds = !!comparator.boundChange;\n for (let boundChange = false;;) {\n let dEnd = (a.to + dPos) - b.to, diff = dEnd || a.endSide - b.endSide;\n let end = diff < 0 ? a.to + dPos : b.to, clipEnd = Math.min(end, endB);\n let point = a.point || b.point;\n if (point) {\n if (!(a.point && b.point && cmpVal(a.point, b.point) &&\n sameValues(a.activeForPoint(a.to), b.activeForPoint(b.to))))\n comparator.comparePoint(pos, clipEnd, a.point, b.point);\n boundChange = false;\n }\n else {\n if (boundChange)\n comparator.boundChange(pos);\n if (clipEnd > pos && !sameValues(a.active, b.active))\n comparator.compareRange(pos, clipEnd, a.active, b.active);\n if (bounds && clipEnd < endB && (dEnd || a.openEnd(end) != b.openEnd(end)))\n boundChange = true;\n }\n if (end > endB)\n break;\n pos = end;\n if (diff <= 0)\n a.next();\n if (diff >= 0)\n b.next();\n }\n}\nfunction sameValues(a, b) {\n if (a.length != b.length)\n return false;\n for (let i = 0; i < a.length; i++)\n if (a[i] != b[i] && !cmpVal(a[i], b[i]))\n return false;\n return true;\n}\nfunction remove(array, index) {\n for (let i = index, e = array.length - 1; i < e; i++)\n array[i] = array[i + 1];\n array.pop();\n}\nfunction insert(array, index, value) {\n for (let i = array.length - 1; i >= index; i--)\n array[i + 1] = array[i];\n array[index] = value;\n}\nfunction findMinIndex(value, array) {\n let found = -1, foundPos = 1000000000 /* C.Far */;\n for (let i = 0; i < array.length; i++)\n if ((array[i] - foundPos || value[i].endSide - value[found].endSide) < 0) {\n found = i;\n foundPos = array[i];\n }\n return found;\n}\n\n/**\nCount the column position at the given offset into the string,\ntaking extending characters and tab size into account.\n*/\nfunction countColumn(string, tabSize, to = string.length) {\n let n = 0;\n for (let i = 0; i < to && i < string.length;) {\n if (string.charCodeAt(i) == 9) {\n n += tabSize - (n % tabSize);\n i++;\n }\n else {\n n++;\n i = findClusterBreak(string, i);\n }\n }\n return n;\n}\n/**\nFind the offset that corresponds to the given column position in a\nstring, taking extending characters and tab size into account. By\ndefault, the string length is returned when it is too short to\nreach the column. Pass `strict` true to make it return -1 in that\nsituation.\n*/\nfunction findColumn(string, col, tabSize, strict) {\n for (let i = 0, n = 0;;) {\n if (n >= col)\n return i;\n if (i == string.length)\n break;\n n += string.charCodeAt(i) == 9 ? tabSize - (n % tabSize) : 1;\n i = findClusterBreak(string, i);\n }\n return strict === true ? -1 : string.length;\n}\n\nexport { Annotation, AnnotationType, ChangeDesc, ChangeSet, CharCategory, Compartment, EditorSelection, EditorState, Facet, Line, MapMode, Prec, Range, RangeSet, RangeSetBuilder, RangeValue, SelectionRange, StateEffect, StateEffectType, StateField, Text, Transaction, codePointAt, codePointSize, combineConfig, countColumn, findClusterBreak, findColumn, fromCodePoint };\n","const C = \"\\u037c\"\nconst COUNT = typeof Symbol == \"undefined\" ? \"__\" + C : Symbol.for(C)\nconst SET = typeof Symbol == \"undefined\" ? \"__styleSet\" + Math.floor(Math.random() * 1e8) : Symbol(\"styleSet\")\nconst top = typeof globalThis != \"undefined\" ? globalThis : typeof window != \"undefined\" ? window : {}\n\n// :: - Style modules encapsulate a set of CSS rules defined from\n// JavaScript. Their definitions are only available in a given DOM\n// root after it has been _mounted_ there with `StyleModule.mount`.\n//\n// Style modules should be created once and stored somewhere, as\n// opposed to re-creating them every time you need them. The amount of\n// CSS rules generated for a given DOM root is bounded by the amount\n// of style modules that were used. So to avoid leaking rules, don't\n// create these dynamically, but treat them as one-time allocations.\nexport class StyleModule {\n // :: (Object\n\n

\n\n\n `.trim() }, {\n path: \"/example.js\",\n content: `\nimport foundation from \"~/common/foundation.js\"; // This is also a relative URL, \"~/\" equals \"./\" (see importmap in html)\nimport { effect } from \"~/common/signal.js\";\n\n// Set document title\nfoundation.setup({ title: \"Example\" });\n\n// Show what's currently playing\nconst output = await foundation.orchestrator.output();\nconst queue = await foundation.engine.queue();\n\neffect(() => {\n const now = queue.now();\n const tracks = output.tracks.collection();\n const currentlyPlaying = now && tracks.state === \"loaded\"\n ? tracks.data.find((t) => t.id === now.id)\n : undefined;\n\n const el = foundation.container().querySelector(\"#placeholder\");\n\n if (currentlyPlaying) {\n el.innerHTML = (\n (currentlyPlaying?.tags?.artist ?? \"Unknown artist\") + \" - \" +\n (currentlyPlaying?.tags?.title ?? \"Unknown title\")\n );\n el.classList.remove(\"is-faded\");\n } else if (tracks.state === \"loading\") {\n el.innerHTML = \"Loading ...\";\n el.classList.add(\"is-faded\");\n } else {\n el.innerHTML = \"😶‍🌫️\";\n el.classList.add(\"is-faded\");\n }\n});\n\n// Indicate interface is loaded and ready to use\n// (this hides the default loading animation)\nfoundation.ready();\n `.trim(),\n}, {\n path: \"/example.css\",\n content: `\n#placeholder {\n align-items: center;\n display: flex;\n font-style: italic;\n height: 100dvh;\n justify-content: center;\n}\n\n.is-faded {\n opacity: 0.4;\n}\n `.trim(),\n}];\n\nconst DEFAULT_PRELUDE = [{ path: \"/\", content: `\n\n `.trim() }, {\n path: \"/example.js\",\n content: `\nimport foundation from \"~/common/foundation.js\";\nimport { effect } from \"~/common/signal.js\";\n\neffect(() => {\n // When an interface includes the audio engine in addition to this feature facet, call 'setup'\n const audio = foundation.signals.engine.audio();\n if (audio) setup(audio);\n});\n\nconst STORAGE_KEY = \"example/resume\";\nconst RESTORED = new WeakMap();\n\n/**\n * Remember the active track's position and restore it the next time it plays.\n */\nfunction setup(audio) {\n const saved = JSON.parse(localStorage.getItem(STORAGE_KEY) ?? \"{}\");\n\n effect(() => {\n const item = audio.items().find((i) => !i.isPreload);\n const st = item && audio.state(item.id);\n if (!st) return;\n\n // Restore once, when the active track is ready to play.\n if (st.loadingState() === \"loaded\" && !RESTORED.has(item)) {\n RESTORED.set(item, true);\n const seconds = saved[item.id];\n if (seconds > 5) audio.seek({ audioId: item.id, currentTime: seconds });\n }\n\n // Persist progress; forget finished tracks so they restart next time.\n const duration = st.duration();\n if (duration > 0) {\n if (st.currentTime() < 0.98 * duration) {\n saved[item.id] = st.currentTime();\n } else {\n delete saved[item.id];\n }\n\n localStorage.setItem(STORAGE_KEY, JSON.stringify(saved));\n }\n });\n}\n `.trim(),\n}];\n\n/**\n * The built-in examples shown on the Create page. Each one corresponds to a\n * default template in this file (DEFAULT_INTERFACE / DEFAULT_PRELUDE) that the\n * editor can start from when clicked.\n */\nexport const DEFAULT_EXAMPLES = [\n {\n title: \"Interface starter template\",\n kind: \"interactive\",\n desc: \"The default interactive facet example. It shows what's currently playing, or a placeholder if nothing's in the queue yet.\",\n },\n {\n title: \"Feature starter template\",\n kind: \"prelude\",\n desc: \"The default feature facet example. Shows how to watch for the creation of a particular foundation element and then do something when that happens.\",\n },\n];\n\n/**\n * Renders the built-in default examples into the `#examples-list` container on\n * the Create page.\n */\nexport function renderDefaultExamples() {\n const container = /** @type {HTMLElement | null} */ (\n document.getElementById(\"examples-list\")\n );\n if (!container) return;\n\n const ul = document.createElement(\"ul\");\n for (const example of DEFAULT_EXAMPLES) {\n const li = document.createElement(\"li\");\n li.setAttribute(\"data-kind\", example.kind);\n li.style.marginTop = \"var(--space-md)\";\n\n const head = document.createElement(\"div\");\n head.style.cssText =\n \"display: flex; gap: var(--space-xs); justify-content: space-between;\";\n\n const title = document.createElement(\"span\");\n title.textContent = example.title;\n\n const edit = document.createElement(\"button\");\n edit.className = \"button--tiny button--bg-accent\";\n edit.setAttribute(\"rel\", \"edit\");\n edit.innerHTML =\n ' Edit';\n\n head.append(title, edit);\n\n const desc = document.createElement(\"div\");\n desc.className = \"list-description\";\n desc.textContent = example.desc;\n\n li.append(head, desc);\n ul.appendChild(li);\n }\n container.replaceChildren(ul);\n}\n\n/**\n * @param {string} path\n */\nfunction basename(path) {\n if (path === \"/\") return \"index.html\";\n const trimmed = path.replace(/\\/+$/, \"\");\n const idx = trimmed.lastIndexOf(\"/\");\n return idx >= 0 ? trimmed.slice(idx + 1) : trimmed;\n}\n\n/**\n * Is this path reserved as the tile's index document (`index.html`), which the\n * `/` root tab already represents? Such paths cannot be created or renamed to.\n *\n * @param {string} path\n * @returns {boolean}\n */\nfunction isReservedIndexPath(path) {\n return /^\\/?index\\.html?$/i.test(path.trim());\n}\n\n/**\n * @param {string} path\n */\nfunction languageForPath(path) {\n if (path === \"/\" || /\\.html?$/i.test(path)) return langHtml();\n if (/\\.css$/i.test(path)) return langCss();\n // js, mjs, json, etc.\n return langJs();\n}\n\n/**\n * The base extensions shared by every tab.\n */\nconst markEditedExtension = EditorView.updateListener.of((update) => {\n // A user-typed change marks the template as edited, but never a programmatic\n // `setEditorContent` swap. Kept in `baseExtensions` so it survives every\n // `StateEffect.reconfigure` (when switching tabs or the facet kind).\n if (update.docChanged && !isProgrammaticSet) startedEditing = true;\n});\nconst baseExtensions = [basicSetup, autocompletion(), markEditedExtension];\n\n/** @returns {string} */\nfunction currentContent() {\n return $editor.value?.state.doc.toString() ?? \"\";\n}\n\n/** @param {string} content */\nfunction setEditorContent(content) {\n isProgrammaticSet = true;\n $editor.value?.dispatch({\n changes: { from: 0, to: $editor.value.state.doc.length, insert: content },\n });\n isProgrammaticSet = false;\n}\n\n/**\n * Persists the active tab's current doc into `files`, then switches to `index`.\n *\n * @param {number} index\n */\nfunction activateTab(index) {\n const editor = $editor.value;\n if (!editor) return;\n if (index < 0 || index >= files.length) return;\n if (index === activeIndex) return;\n\n files[activeIndex].content = editor.state.doc.toString();\n activeIndex = index;\n\n // Swap language extension + content for the new tab.\n editor.dispatch({\n effects: StateEffect.reconfigure.of([\n ...baseExtensions,\n languageForPath(files[activeIndex].path),\n ]),\n });\n setEditorContent(files[activeIndex].content);\n\n renderTabs();\n}\n\n/**\n * Renames the file at `index` to `newPath`, adjusting the editor's language\n * if the extension changes. The `/` index cannot be renamed.\n *\n * @param {number} index\n * @param {string} newPath\n */\nfunction renameFile(index, newPath) {\n if (index === 0) return;\n const trimmed = newPath.trim();\n if (!trimmed) return;\n const path = trimmed.startsWith(\"/\") ? trimmed : `/${trimmed}`;\n if (path === files[index].path) return;\n if (isReservedIndexPath(path)) return;\n if (files.some((f, i) => i !== index && f.path === path)) return;\n\n const langChanged = languageForPath(path) !== languageForPath(files[index].path);\n const renamedPath = path;\n files[index].path = path;\n startedEditing = true;\n\n // Keep `/` first, then alphabetical, and track the renamed file.\n files.sort((a, b) => (a.path === \"/\" ? -1 : b.path === \"/\" ? 1 : a.path.localeCompare(b.path)));\n activeIndex = files.findIndex((f) => f.path === renamedPath);\n if (activeIndex < 0) activeIndex = 0;\n\n if (langChanged) {\n $editor.value?.dispatch({\n effects: StateEffect.reconfigure.of([\n ...baseExtensions,\n languageForPath(files[activeIndex].path),\n ]),\n });\n }\n renderTabs();\n}\n\n/**\n * Adds a new file to the tile. Opens a modal dialog (styled like other facet\n * dialogs) where the file path, e.g. /style.css, can be entered.\n */\nfunction addFile() {\n let dialog = /** @type {HTMLDialogElement | null} */ (\n document.getElementById(\"add-file-dialog\")\n );\n\n if (!dialog) {\n dialog = /** @type {HTMLDialogElement} */ (\n document.createElement(\"dialog\")\n );\n dialog.id = \"add-file-dialog\";\n dialog.style.cssText =\n \"padding: 0; position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); margin: 0;\";\n dialog.innerHTML = `\n
\n
\n Add a file to the tile\n
\n
\n

\n Path of the new file, e.g. /style.css. The language is\n chosen from the extension.\n

\n
\n \n \n
\n
\n
\n \n \n
\n
\n `;\n document.body.appendChild(dialog);\n\n dialog.querySelector(\"#add-file-cancel\")?.addEventListener(\"click\", () => {\n /** @type {HTMLDialogElement} */ (dialog).close();\n });\n\n dialog.querySelector(\"#add-file-form\")?.addEventListener(\"submit\", (e) => {\n e.preventDefault();\n const input = /** @type {HTMLInputElement | null} */ (\n dialog?.querySelector(\"#add-file-path\")\n );\n const existing = new Set(files.map((f) => f.path));\n let path = input?.value.trim() ?? \"\";\n if (!path.startsWith(\"/\")) path = `/${path}`;\n if (!path || path === \"/\" || isReservedIndexPath(path) || existing.has(path)) return;\n files.push({ path, content: \"\" });\n /** @type {HTMLDialogElement} */ (dialog).close();\n startedEditing = true;\n activateTab(files.length - 1);\n });\n }\n\n const pathInput = /** @type {HTMLInputElement | null} */ (\n dialog.querySelector(\"#add-file-path\")\n );\n if (pathInput) pathInput.value = \"\";\n\n dialog.showModal();\n pathInput?.focus();\n}\n\n/**\n * Removes the tab at `index`. The `/` (index) tab cannot be removed.\n *\n * @param {number} index\n */\nfunction removeFile(index) {\n if (index === 0 || index >= files.length) return;\n const editor = $editor.value;\n if (!editor) return;\n files[activeIndex].content = editor.state.doc.toString();\n files.splice(index, 1);\n if (index <= activeIndex) activeIndex = Math.max(0, activeIndex - 1);\n startedEditing = true;\n setEditorContent(files[activeIndex].content);\n renderTabs();\n}\n\n/**\n * Renders the tab bar (#editor-tabs) from the current `files`.\n */\nfunction renderTabs() {\n const tabsEl = document.getElementById(\"editor-tabs\");\n if (!tabsEl) return;\n\n tabsEl.textContent = \"\";\n\n // Add button first, left of the file tabs, sized to match the editor gutter.\n const add = document.createElement(\"button\");\n add.type = \"button\";\n add.className = \"editor-tab editor-tab--add\";\n add.title = \"Add file\";\n add.innerHTML = '';\n add.addEventListener(\"click\", addFile);\n /**\n * Sizes the add button to the editor gutter width. If the gutter isn't laid\n * out yet (width is 0), re-measure on the next animation frame until it is.\n */\n const sizeAddButton = () => {\n const gutter = /** @type {Element | null} */ (\n document.querySelector(\"#html-input-container .cm-gutters\")\n );\n if (!gutter) return;\n const width = gutter.getBoundingClientRect().width;\n if (width > 0) {\n add.style.width = `${width}px`;\n } else {\n requestAnimationFrame(sizeAddButton);\n }\n };\n sizeAddButton();\n tabsEl.append(add);\n\n files.forEach((file, index) => {\n try {\n const tab = document.createElement(\"div\");\n tab.role = \"button\";\n tab.tabIndex = 0;\n tab.className = \"editor-tab\" + (index === activeIndex ? \" is-active\" : \"\");\n tab.title = file.path;\n tab.addEventListener(\"click\", () => activateTab(index));\n tab.addEventListener(\"keydown\", (e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n activateTab(index);\n }\n });\n\n const label = document.createElement(\"span\");\n label.textContent = basename(file.path);\n label.title = \"Double-click to rename\";\n label.addEventListener(\"dblclick\", (e) => {\n e.stopPropagation();\n const input = document.createElement(\"input\");\n input.type = \"text\";\n input.value = file.path;\n input.className = \"editor-tab__rename editor-tab__rename--inline\";\n label.replaceWith(input);\n input.focus();\n input.select();\n\n const commit = () => {\n if (done) return;\n done = true;\n renameFile(index, input.value);\n if (input.isConnected) input.remove();\n renderTabs();\n };\n let done = false;\n input.addEventListener(\"keydown\", (e) => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n commit();\n } else if (e.key === \"Escape\") {\n done = true;\n if (input.isConnected) input.remove();\n renderTabs();\n }\n });\n input.addEventListener(\"blur\", commit);\n });\n tab.append(label);\n\n if (index !== 0) {\n const close = document.createElement(\"button\");\n close.type = \"button\";\n close.className = \"editor-tab__close\";\n close.title = \"Remove file\";\n close.innerHTML = '';\n close.addEventListener(\"click\", (e) => {\n e.stopPropagation();\n removeFile(index);\n });\n tab.append(close);\n }\n\n tabsEl.append(tab);\n } catch (err) {\n console.error(\"editor: failed to build tab\", file.path, err);\n }\n });\n}\n\n/**\n * Loads a facet's files into the editor tabs. Inline tiles (with a `resources`\n * map + `blocks`) load every resource into its own tab; otherwise the `/` index\n * (resolved via `resolveFacetHTML`) is shown as a single tab.\n *\n * @param {Facet} facet\n */\nasync function loadFacetFiles(facet) {\n // Resolve the facet's tile (inline `resources`+`blocks`, or a `.tile` CAR\n // referenced by `uri`), then load every absolute resource into its own tab.\n const tile = await resolveFacetTile(facet);\n const resources = tile?.resources;\n const blocks = tile?.blocks;\n\n let loaded;\n if (resources && Object.keys(resources).length && blocks) {\n const entries = tileResourceEntries(resources, blocks);\n loaded = [...entries.entries()].map(([path, entry]) => ({\n path,\n content: fileDecoder.decode(entry.bytes),\n }));\n if (!loaded.length) loaded = [{ path: \"/\", content: tile.html }];\n } else {\n loaded = [{ path: \"/\", content: tile?.html ?? \"\" }];\n }\n files = loaded;\n\n activeIndex = 0;\n // Ensure the `/` index is first.\n files.sort((a, b) => (a.path === \"/\" ? -1 : b.path === \"/\" ? 1 : a.path.localeCompare(b.path)));\n activeIndex = files.findIndex((f) => f.path === \"/\");\n if (activeIndex < 0) activeIndex = 0;\n\n $editor.value?.dispatch({\n effects: StateEffect.reconfigure.of([\n ...baseExtensions,\n languageForPath(files[activeIndex].path),\n ]),\n });\n setEditorContent(files[activeIndex].content);\n renderTabs();\n}\n\n/**\n * Replaces the new-facet editor's tabs with the default template for `kind`.\n * Only called when creating a brand-new facet that hasn't been edited yet.\n *\n * @param {\"interactive\" | \"prelude\"} kind\n */\nfunction applyDefaultTemplateForKind(kind) {\n const defaults = kind === \"prelude\" ? DEFAULT_PRELUDE : DEFAULT_INTERFACE;\n files = defaults.map((f) => ({ ...f }));\n activeIndex = files.findIndex((f) => f.path === \"/\");\n if (activeIndex < 0) activeIndex = 0;\n\n $editor.value?.dispatch({\n effects: StateEffect.reconfigure.of([\n ...baseExtensions,\n languageForPath(files[activeIndex].path),\n ]),\n });\n setEditorContent(files[activeIndex].content);\n startedEditing = false;\n renderTabs();\n}\n\n/**\n * Loads a built-in default template (interactive or prelude) into the editor\n * as a brand-new facet, e.g. when a default example is clicked.\n *\n * @param {\"interactive\" | \"prelude\"} kind\n */\nfunction loadDefaultExample(kind) {\n $editingFacet.value = null;\n const kindEl = /** @type {HTMLSelectElement | null} */ (\n document.querySelector(\"#kind-input\")\n );\n if (kindEl) kindEl.value = kind;\n applyDefaultTemplateForKind(kind);\n globalThis.scrollTo({ top: 0 });\n}\n\nexport function renderEditor() {\n // Code editor\n const editorContainer = document.body.querySelector(\"#html-input-container\");\n if (!editorContainer) throw new Error(\"Editor container not found\");\n\n // Tab bar rendered just above the editor.\n const tabsEl = document.createElement(\"div\");\n tabsEl.id = \"editor-tabs\";\n tabsEl.className = \"editor-tabs\";\n editorContainer.before(tabsEl);\n\n const editor = new EditorView({\n parent: editorContainer,\n doc: \"\",\n extensions: [...baseExtensions, languageForPath(\"/\")],\n });\n\n $editor.value = editor;\n\n files = DEFAULT_INTERFACE.map((f) => ({ ...f }));\n activeIndex = 0;\n startedEditing = false;\n setEditorContent(files[0].content);\n renderTabs();\n return editor;\n}\n\n////////////////////////////////////////////\n// FORM\n////////////////////////////////////////////\n\n/**\n * @param {EditorView} editor\n */\nconst onBuildSubmit = (editor) =>\n/**\n * @param {Event} event\n */\nasync (event) => {\n event.preventDefault();\n\n const nameEl = /** @type {HTMLInputElement | null} */ (document.querySelector(\n \"#name-input\",\n ));\n\n const descriptionEl = /** @type {HTMLTextAreaElement | null} */ (\n document.querySelector(\"#description-input\")\n );\n\n const kindEl = /** @type {HTMLSelectElement | null} */ (\n document.querySelector(\"#kind-input\")\n );\n\n // Persist the active tab's current doc before collecting files.\n files[activeIndex].content = editor.state.doc.toString();\n\n /** @type {Record} */\n const fileMap = {};\n for (const file of files) fileMap[file.path] = file.content;\n const tile = tileFromFiles(fileMap);\n\n const name = nameEl?.value ?? \"nameless\";\n const description = descriptionEl?.value ?? \"\";\n const kind =\n /** @type {\"interactive\" | \"prelude\"} */ (kindEl?.value ?? \"interactive\");\n\n /** @type {Facet} */\n const facet = $editingFacet.value\n ? {\n ...$editingFacet.value,\n blocks: tile.blocks,\n description,\n kind,\n name,\n resources: tile.resources,\n }\n : {\n $type: \"sh.diffuse.output.facet\",\n id: TID.now(),\n blocks: tile.blocks,\n description,\n kind,\n name,\n resources: tile.resources,\n };\n\n $editingFacet.value = facet;\n\n switch (/** @type {any} */ (event).submitter.name) {\n case \"save\":\n await saveFacet(facet);\n break;\n case \"save+open\":\n await saveFacet(facet);\n globalThis.open(`./l/?id=${facet.id}`, \"blank\");\n break;\n }\n};\n\n/**\n * @param {Facet} ogFacet\n */\nasync function editFacet(ogFacet) {\n const facet = { ...ogFacet };\n const nameEl = /** @type {HTMLInputElement | null} */ (document.querySelector(\n \"#name-input\",\n ));\n\n const descriptionEl = /** @type {HTMLTextAreaElement | null} */ (\n document.querySelector(\"#description-input\")\n );\n\n const kindEl = /** @type {HTMLSelectElement | null} */ (\n document.querySelector(\"#kind-input\")\n );\n\n if (!nameEl) return;\n\n // Reset url — remove `id` param if not matching the facet\n const url = new URL(location.href);\n const id = url.searchParams.get(\"id\");\n\n if (id && facet.id !== id) {\n url.searchParams.delete(\"id\");\n history.replaceState(null, \"\", url);\n }\n\n // Scroll to builder\n document.querySelector(\"#code\")?.scrollIntoView();\n\n // Load the facet's files into the editor tabs. `loadFacetFiles` handles\n // inline tiles (each resource becomes a tab) and plain HTML/URI facets (a\n // single index tab).\n setEditorLoading(true);\n await loadFacetFiles(facet);\n setEditorLoading(false);\n\n $editingFacet.value = facet;\n nameEl.value = facet.name;\n\n if (kindEl) {\n kindEl.value = facet.kind ?? \"interactive\";\n }\n\n if (descriptionEl) {\n descriptionEl.value = facet.description ?? \"\";\n }\n}\n\nexport function handleBuildFormSubmit() {\n const editor = $editor.value;\n if (!editor) return;\n\n document.querySelector(\"#code-form\")?.addEventListener(\n \"submit\",\n onBuildSubmit(editor),\n );\n\n const kindEl = /** @type {HTMLSelectElement | null} */ (\n document.querySelector(\"#kind-input\")\n );\n // When creating a brand-new facet, switching the kind swaps in that kind's\n // default template — but only if the user hasn't started editing yet, and\n // never while editing an existing facet.\n kindEl?.addEventListener(\"change\", () => {\n if ($editingFacet.value) return;\n if (startedEditing) return;\n applyDefaultTemplateForKind(\n /** @type {\"interactive\" | \"prelude\"} */ (kindEl?.value ?? \"interactive\"),\n );\n });\n\n const importBtn = document.querySelector(\"#import-button\");\n const importInput = document.querySelector(\"#import-input\");\n\n importBtn?.addEventListener(\"click\", () => /** @type {HTMLElement} */ (importInput)?.click());\n\n importInput?.addEventListener(\"change\", async (event) => {\n const file = /** @type {HTMLInputElement} */ (event.target).files?.[0];\n if (!file) return;\n\n const content = await file.text();\n files[activeIndex].content = content;\n startedEditing = true;\n setEditorContent(content);\n });\n}\n\n////////////////////////////////////////////\n// EDIT EXAMPLES\n////////////////////////////////////////////\n\nlet isListening = false;\n\nexport function listenForExamplesEdit() {\n if (isListening) return;\n isListening = true;\n\n document.body.addEventListener(\n \"click\",\n /**\n * @param {MouseEvent} event\n */\n async (event) => {\n const target = /** @type {HTMLElement} */ (event.target);\n const rel = target.getAttribute(\"rel\");\n if (!rel) return;\n\n const li = target.closest(\"li\");\n if (!li) return;\n\n // Built-in default template example — no source URI, just load the\n // matching default from this page into the editor.\n if (rel === \"edit\" && li.dataset.kind && !li.dataset.uri) {\n loadDefaultExample(\n /** @type {\"interactive\" | \"prelude\"} */ (li.dataset.kind),\n );\n return;\n }\n\n const uri = li.getAttribute(\"data-uri\");\n if (!uri) return;\n\n const name = li.getAttribute(\"data-name\");\n if (!name) return;\n\n const kind = li.getAttribute(\"data-kind\") ?? undefined;\n\n if (rel === \"edit\") {\n setEditorLoading(true);\n const facet = await facetFromURI({ kind, name, uri }, {\n fetchHTML: true,\n });\n setEditorLoading(false);\n editFacet(facet);\n globalThis.scrollTo({ top: 0 });\n }\n },\n );\n}\n\n////////////////////////////////////////////\n// EDIT FACET FROM URL\n////////////////////////////////////////////\n\nexport async function editFacetFromURL() {\n const params = new URLSearchParams(location.search);\n const idParam = params.get(\"id\");\n const uriParam = params.get(\"uri\");\n\n // Reset editing state; if we're loading a specific facet, editFacet() will\n // set it again. Without this, $editingFacet persists across SPA navigations\n // and a subsequent \"save\" will reuse the stale id, silently overwriting the\n // previously edited facet instead of creating a new entry.\n $editingFacet.value = null;\n\n setEditorLoading(true);\n try {\n if (idParam) {\n const out = await output();\n const col = await Output.data(out.facets);\n const facet = col.find((f) => f.id === idParam);\n if (facet) await editFacet(facet);\n } else if (uriParam) {\n const facet = await facetFromURI({\n uri: uriParam,\n name: params.get(\"name\") ?? \"\",\n kind: /** @type {any} */ (params.get(\"kind\") ?? undefined),\n description: params.get(\"description\") ?? undefined,\n }, { fetchHTML: true });\n await editFacet(facet);\n }\n } finally {\n setEditorLoading(false);\n }\n}\n"],"mappings":"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","names":["rangeFrom","rangeTo","numbers","s","i","n","isExtendingChar","code","from","to","mid","__name","isRegionalIndicator","ZWJ","findClusterBreak","str","pos","forward","includeExtending","nextClusterBreak","prevClusterBreak","__name","surrogateLow","surrogateHigh","prev","codePointAt","codePointSize","next","isExtendingChar","isRegionalIndicator","countBefore","i","found","code0","code1","ch","code","Text","_Text","__name","pos","n","from","to","text","clip","parts","TextNode","other","start","end","a","RawTextCursor","b","skip","dir","PartialTextCursor","inner","LineCursor","lines","TextLeaf","_TextLeaf","length","textLength","target","isLine","line","offset","i","string","Line","open","sliceText","prev","joined","appendText","mid","newLen","lineSep","result","part","len","_TextNode","children","child","endLine","childOpen","updated","totalLines","copy","iA","iB","eA","eB","chA","chB","l","ch","flat","chunk","maxChunk","minChunk","chunked","currentLines","currentLen","currentChunk","add","last","node","flush","first","top","offsetValue","size","next","limit","value","done","lineBreak","number","findClusterBreak","str","forward","includeExtending","surrogateLow","surrogateHigh","codePointAt","code0","code1","fromCodePoint","code","codePointSize","DefaultSplit","MapMode","ChangeDesc","_ChangeDesc","sections","ins","f","posA","posB","individual","iterChanges","composeSets","before","mapSet","assoc","mode","endA","json","ChangeSet","_ChangeSet","inserted","doc","fromA","toA","fromB","_toB","index","ranges","resultSections","resultInserted","filteredSections","iter","SectionIter","addSection","addInsert","changes","total","force","set","process","spec","sub","insert","insText","insLen","e","forceJoin","values","desc","endB","setA","setB","mkSet","piece","left","sectionLen","insB","SelectionRange","_SelectionRange","flags","goalColumn","level","change","EditorSelection","head","includeAssoc","_EditorSelection","mainIndex","r","range","main","which","anchor","bidiLevel","checkSelection","selection","docLength","nextID","Facet","_Facet","combine","compareInput","compare","isStatic","enables","config","sameArray","FacetProvider","deps","get","field","x","state","dependencies","facet","type","addresses","_a","getter","id","idx","multi","depDoc","depSel","depAddrs","dep","tr","ensureAll","newVal","compareArray","oldState","oldAddr","oldVal","getAddr","StateField","addrs","changed","addr","ensureAddr","dynamicFacetSlot","providers","providerAddrs","p","providerTypes","dynamic","val","depChanged","oldProviders","oldValue","initField","_StateField","createF","updateF","compareF","init","oldInit","reInit","create","Prec_","prec","ext","PrecExtension","Prec","Compartment","_Compartment","CompartmentInstance","content","compartment","Configuration","_Configuration","base","compartments","dynamicSlots","address","staticValues","facets","fields","newCompartments","flatten","oldFacets","extension","seen","known","found","status","languageData","allowMultipleSelections","v","lineSeparator","changeFilter","transactionFilter","transactionExtender","readOnly","Annotation","AnnotationType","StateEffectType","map","StateEffect","_StateEffect","mapping","mapped","effects","effect","Transaction","_Transaction","startState","annotations","scrollIntoView","ann","event","joinRanges","mergeTransaction","sequential","mapForA","mapForB","resolveTransactionInner","docSize","sel","asArray","resolveTransaction","specs","filter","s","seq","extendTransaction","filterTransaction","back","filtered","filters","extenders","none","CharCategory","nonASCIISingleCaseWordChar","wordChar","hasWordChar","makeCategorizer","wordChars","char","EditorState","_EditorState","computeSlot","require","conf","key","startValues","slot","result1","newChanges","newMapped","j","mapBy","prop","fieldInit","configuration","phrase","m","name","side","provider","at","chars","cat","kA","kB","k","combineConfig","configs","defaults","current","RangeValue","Range","cmpVal","_Range","cmpRange","Chunk","_Chunk","maxPoint","startAt","arr","lo","hi","diff","basePos","baseSide","spill","newPos","curFrom","curTo","newFrom","newTo","RangeSet","_RangeSet","chunkPos","nextLayer","updateSpec","sort","filterFrom","filterTo","cur","LayerCursor","builder","RangeSetBuilder","chunks","spilled","touch","prevPos","prevSide","HeapCursor","sets","oldSets","newSets","textDiff","comparator","minPointSize","sharedChunks","findSharedChunks","sideA","SpanCursor","sideB","sameValues","iterator","cursor","openRanges","active","openCount","build","lazySort","layer","_RangeSetBuilder","newArrays","strict","inA","shared","minPoint","rank","rangeIndex","_HeapCursor","heap","heapBubble","childIndex","remove","findMinIndex","trackOpen","wasPoint","nextVal","startA","startB","dPos","bounds","boundChange","dEnd","clipEnd","array","foundPos","countColumn","tabSize","findColumn","col","COUNT","SET","top","StyleModule","__name","spec","options","finish","splitSelector","selector","render","selectors","target","isKeyframes","local","isAt","keyframes","prop","value","part","sel","a","b","l","id","root","modules","set","nonce","StyleSet","adoptedSet","doc","win","adopted","sheet","pos","j","i","mod","index","k","text","base","shift","mac","ie","i","code","keyName","event","ignoreKey","name","__name","crelt","elt","i","next","name","value","add","__name","child","nav","doc","ie_edge","ie_upto10","ie_11up","ie","gecko","chrome","webkit","safari","ios","browser","combineAttrs","source","target","name","__name","noAttrs","attrsEq","a","b","ignore","keysA","keysB","key","setAttrs","dom","attrs","i","value","updateAttrs","prev","changed","getAttrs","attr","WidgetType","widget","view","from","other","event","pos","side","BlockType","Decoration","RangeValue","startSide","endSide","spec","MarkDecoration","block","PointDecoration","start","end","getInclusive","LineDecoration","of","sort","RangeSet","_MarkDecoration","to","_LineDecoration","MapMode","_PointDecoration","isReplace","widgetsEq","addRange","ranges","margin","last","BlockWrapper","_BlockWrapper","tagName","attributes","rank","getSelection","root","contains","node","hasSelection","selection","clientRectsFor","textRange","isEquivalentPosition","off","targetNode","targetOff","scanFor","domIndex","index","isBlockElement","dir","maxOffset","parent","flattenRect","rect","toLeft","left","right","x","windowRect","win","vp","getScale","elt","scaleX","scaleY","scrollRectIntoView","y","xMargin","yMargin","ltr","cur","stop","bounding","top","moveX","moveY","rectHeight","boundingHeight","movedX","movedY","scrollableParents","getX","DOMSelectionState","domSel","range","anchorNode","focusNode","anchorOffset","focusOffset","getScrollStack","stack","restoreScrollStack","vert","preventScrollSupported","focusPreventScroll","scratchRange","dispatchKey","code","mods","options","down","up","getRoot","atElementStart","offset","isScrolledToBottom","textNodeBefore","startNode","startOffset","textNodeAfter","DOMPos","_DOMPos","precise","Direction","LTR","RTL","dec","str","result","LowTypes","ArabicTypes","Brackets","BracketStack","p","l","r","charType","ch","BidiRE","BidiSpan","level","forward","order","assoc","maybe","span","isolatesEq","iA","iB","types","computeCharTypes","line","rFrom","rTo","isolates","outerType","iI","prevType","prevStrong","type","replace","j","processBracketPairs","oppositeType","sI","context","br","sJ","flags","embed","processNeutrals","beforeL","afterL","jI","fromJ","emitSpans","baseLevel","ourType","iCh","sameDir","isNum","next","recurse","localLevel","iScan","run","iso","upto","dirSwap","computeSectionOrder","computeOrder","direction","trivialOrder","length","movedOver","moveVisually","_a","startIndex","spanI","spanEnd","nextI","nextIndex","findClusterBreak","nextSpan","EditorSelection","autoDirection","text","clickAddsSelectionRange","Facet","dragMovesSelection$1","mouseSelectionStyle","exceptionSink","updateListener","inputHandler","focusChangeEffect","clipboardInputFilter","clipboardOutputFilter","perLineTextDirection","values","nativeSelectionHidden","scrollHandler","ScrollTarget","_ScrollTarget","isSnapshot","changes","state","scrollIntoView","StateEffect","t","setEditContextFormatting","logException","exception","handler","editable","nextPluginID","viewPlugin","plugins","ViewPlugin","_ViewPlugin","id","create","domEventHandlers","domEventObservers","buildExtensions","arg","eventHandlers","eventObservers","provide","deco","plugin","ext","decorations","pluginInst","cls","PluginInstance","update","e","editorAttributes","contentAttributes","blockWrappers","outerDecorations","atomicRanges","bidiIsolatedRanges","getIsolatedRanges","sets","fromDoc","toDoc","active","open","add","scrollMargins","getScrollMargins","bottom","m","styleModule","ChangedRange","_ChangedRange","fromA","toA","fromB","toB","set","me","diff","dI","rI","nextD","nextR","ViewUpdate","_ViewUpdate","transactions","ChangeSet","tr","changedRanges","noChildren","Tile","track","tile","child","rtl","after","DocTile","CompositeTile","tracking","rm$1","f","BlockWrapperTile","before","beforeOff","afterOff","_BlockWrapperTile","wrapper","LineTile","_LineTile","keepAttrs","forCoords","scan","onSameLine","found","fallbackRect","saw","rects","posA","posB","MarkTile","_MarkTile","mark","TextTile","_TextTile","flatten","WidgetTile","_WidgetTile","custom","fromBack","Text","WidgetBufferTile","img","TilePointer","dist","walker","beforeBreak","parents","brk","len","take","OpenWrapper","TileBuilder","cache","marks","openStart","composition","freeNode","head","nw","oldTile","noSpace","lineBaseAttrs","hasContent","BreakWidget","wrap","TextStream","maxLen","lineBreak","done","chars","buckets","TileCache","bucket","test","widgets","pass","TileUpdate","old","disallowBlockEffectsFor","compositionContext","skipA","incStart","incEnd","activeMarks","getMarks","openMarks","pendingLineAttrs","markCount","openEnd","NullWidget","widgetFlags","addLineDeco","requireText","ptr","tag","DocView","readCompositionAt","touchesComposition","findCompositionRange","prevDeco","prevWrappers","decoDiff","findChangedDeco","blockDiff","findChangedWrappers","observer","builder","destroyDropped","gaps","BlockGapWidget","effect","mustRead","fromPointer","activeElt","focused","selectionNotFocus","force","main","anchor","betweenUneditable","dummy","inUneditable","rawSel","nextTo","nextToUneditable","sel","cursor","lineStart","newRange","bias","beforeBad","afterBad","viewport","contentWidth","isWider","widest","spaceAbove","measureBounds","childRect","height","width","lineMeasure","totalWidth","textHeight","lineHeight","charWidth","vs","allDeco","d","dynamicOuter","outerDeco","dynamic","v","ref","margins","targetRect","offsetWidth","offsetHeight","reused","findCompositionNode","headPos","textBefore","textAfter","textNode","tileAfter","tileBefore","inv","DecorationComparator$1","comp","WrapperComparator","inside","touched","groupAt","categorize","linePos","cat","posAtCoordsImprecise","contentRect","into","content","findColumn","blockAt","best","moveToLineBoundary","includeWrap","coords","editorRect","moveByChar","by","spans","check","char","byGroup","nextCat","CharCategory","moveVertically","distance","startPos","goal","startY","startCoords","docTop","resolvedGoal","halfText","posAtCoords","posCoords","mid","skipAtomicRanges","atoms","moved","skipAtomsForSelection","updated","skipAtoms","oldPos","newPos","PosAssoc","scanY","yOffset","halfLine","InlineCoordsScan","baseDir","positions","getRects","recursed","lo","hi","seen","bidi","above","below","closestI","closestDx","closestRect","search","adjust","dx","LineBreakPlaceholder","DOMReader","points","EditorState","oldLen","nextTile","isEmptyToEnd","point","re","nextBreak","breakSize","fromView","isAtEnd","w","override","DOMPoint","DOMChange","typeOver","iHead","iAnchor","curSel","domBoundsAround","selPoints","selectionPoints","reader","selectionFromPoints","offFrom","offTo","fromI","fromStart","toI","toEnd","prevEnd","applyDOMChange","domChange","change","newSel","lastKey","preferredPos","preferredSide","cmp","selEnd","findDiff","sameSelPos","applyDOMChangeInner","userEvent","defaultTr","defaultInsert","applyDefaultInsert","h","startState","inAtomic","mainSel","replaced","compositionRange","dLen","rangeChanges","selOff","minLen","move","base","InputState","origin","firefoxCopyCutHack","eventBelongsToEditor","handlers","computeHandlers","passive","exists","modifierCodes","PendingKeys","EmacsyPendingKeys","iosVirtualKeyboardOpen","mouseSelection","bindHandler","record","observers","dragScrollMargin","dragScrollSpeed","MouseSelection","startEvent","style","mustSelect","addsSelectionRange","isInPrimarySelection","getClickType","sx","sy","facet","dragMovesSelection","brokenClipboardAPI","capturePaste","doPaste","textFilter","filter","input","byLine","lastLinewiseCopy","lastLine","insert","iState","touch","makeStyle","basicMouseSelection","mustFocus","mouseSel","rangeForClick","visual","BadMouseDetail","lastMouseDown","lastMouseDownCount","lastMouseDownTime","lastTime","startSel","extend","multiple","removed","startRange","removeRangeAround","inputState","dropText","direct","dropPos","draggedContent","del","ins","files","read","finishFile","s","data","captureCopy","copiedRange","linewise","isFocusChange","Annotation","focusChangeTransaction","focus","effects","getEffect","updateForFocusChange","_b","pending","startViewHeight","appliedFirefoxHack","wrappingWhiteSpace","heightChangeFlag","clearHeightChangeFlag","HeightOracle","lineWrapping","lines","whiteSpace","lineHeights","newHeight","lineLength","knownHeights","MeasuredHeights","heights","BlockInfo","_BlockInfo","_content","QueryType","Epsilon","HeightMap","_HeightMap","_from","_to","nodes","oldDoc","oracle","NodeBuilder","HeightMapText","split","HeightMapBranch","val","SpaceDeco","HeightMapBlock","_oracle","_value","_type","measured","_force","_HeightMapText","HeightMapGap","_HeightMapGap","firstLine","perLine","perChar","totalPerLine","guess","lineTop","linesAbove","first","singleHeight","rightTop","rightOffset","subQuery","rightStart","mergeGaps","rebalance","around","relevantWidgetHeight","_NodeBuilder","breaks","gap","heightRelevantDecoChanges","DecorationComparator","visiblePixelRange","paddingTop","parentRect","inWindow","fullPixelRange","LineGap","size","displaySize","gA","gB","viewState","wrapping","LineGapWidget","vertical","ViewState","IdScaler","guessWrapping","staticDeco","viewports","Viewport","scaler","BigScaler","scaleBlock","scrollTarget","contentChanges","heightChanges","prevHeight","scrollAnchor","viewportChange","refresh","domRect","measureContent","paddingBottom","scrollParent","scrollOffset","pixelViewport","dTop","dBottom","inView","marginTop","map","visibleTop","visibleBottom","viewHeight","topPos","mapped","current","mayMeasure","halfMargin","doubleMargin","addGap","structure","avoid","find","checkLine","lineStructure","viewFrom","viewTo","marginHeight","bot","targetFrac","findFraction","spaceFrac","findPosition","marginWidth","horizOffset","pxLeft","pxRight","fraction","stateDeco","total","ratio","counted","array","outer","_BigScaler","heightMap","vpHeight","domBase","obj","n","bTop","bBottom","theme","strs","darkTheme","baseThemeID","StyleModule","baseLightID","baseDarkID","lightDarkIDs","buildTheme","scopes","baseTheme$1","observeOptions","useCharData","DOMObserver","mutations","mut","EditContextManager","entries","g","wasChanged","safariSelectionRangeHack","local","keyCode","flush","records","readSelection","handled","rec","childBefore","findChild","childAfter","_c","curTile","buildSelectionRangeFromRange","curAnchor","deletes","newLen","format","lineStyle","thickness","drifted","abort","_fromB","_toB","reverted","contextPos","clipLen","c","editorPos","EditorView","_EditorView","config","dispatch","trs","Transaction","redrawn","attrsChanged","focusFlag","dispatchFocus","pendingKey","CachedOrder","listener","newState","hadFocus","prevSpecs","specs","newPlugins","scroll","scrollAnchorPos","scrollAnchorHeight","scrollScale","measuring","BadMeasure","editorAttrs","attrsFromFacet","contentAttrs","changedContent","changedEditor","div","nonce","request","known","initial","MaxBidiLine","entry","_d","scrollTop","scrollLeft","prefix","Prec","inputs","_CachedOrder","fresh","lastDir","sources","currentPlatform","normalizeKeyName","platform","parts","alt","ctrl","shift","meta","mod","modifiers","handleKeyEvents","runHandlers","getKeymap","keymap","Keymaps","bindings","buildKeymap","runScopeHandlers","scope","storedPrefix","PrefixTimeout","bound","isPrefix","checkPrefix","is","command","preventDefault","stopPropagation","scopeObj","k","ourObj","full","binding","any","currentKeyEvent","keyName","charCode","codePointAt","isChar","codePointSize","prevented","ran","runFor","cmd","baseName","shiftName","RectangleMarker","_RectangleMarker","className","getBase","rectanglesForRange","wrappedLine","lineElt","leftSide","rightSide","startBlock","endBlock","visualStart","visualEnd","pieces","drawForLine","drawForWidget","between","piece","horizontal","addSpan","fromOpen","toOpen","fromCoords","toCoords","endPos","docLine","spanFrom","spanTo","sameMarker","LayerView","layer","layerOrder","markers","oldI","marker","selectionConfig","configs","combineConfig","drawSelection","cursorLayer","selectionLayer","hideNativeSelection","configChanged","update","selectionConfig","__name","cursorLayer","layer","view","state","conf","cursors","prim","browser","className","cursor","EditorSelection","piece","RectangleMarker","dom","tr","confChange","setBlinkRate","selectionLayer","markers","main","ranges","marker","selectionBg","hideNativeSelection","Prec","EditorView","setDropCursorPos","StateEffect","pos","mapping","dropCursorPos","StateField","e","drawDropCursor","ViewPlugin","_a","cursorPos","rect","outer","scaleX","scaleY","event","dropCursor","iterMatches","doc","re","from","to","f","m","matchRanges","maxLength","visible","result","MatchDecorator","config","regexp","decoration","decorate","boundary","match","add","deco","_view","build","RangeSetBuilder","changeFrom","changeTo","_f","_t","updateFrom","updateTo","r","fromLine","toLine","start","end","UnicodeRegexpSupport","Specials","Names","_supportsTabSize","supportsTabSize","styles","specialCharConfig","Facet","configs","combineConfig","highlightSpecialChars","specialCharPlugin","_plugin","Decoration","code","codePointAt","line","size","col","countColumn","TabWidget","SpecialCharWidget","v","DefaultPlaceholder","placeholder$1","WidgetType","options","other","ph","desc","custom","span","width","highlightActiveLine","activeLineHighlighter","__name","lineDeco","Decoration","ViewPlugin","view","update","lastLineStart","deco","r","line","v","MaxOff","rectangleFor","state","a","b","startLine","endLine","ranges","startOff","endOff","i","line","EditorSelection","startCol","endCol","start","findColumn","end","__name","absoluteColumn","view","x","ref","getPos","event","offset","off","col","countColumn","rectangleSelectionStyle","startSel","update","newStart","newLine","_extend","multiple","cur","rectangularSelection","options","filter","e","EditorView","keys","showCrosshair","crosshairCursor","code","getter","plugin","ViewPlugin","isDown","_a","Outside","TooltipViewManager","facet","createTooltipView","removeTooltipView","t","prev","above","input","tooltips","tooltipViews","newAbove","tip","known","other","tooltipView","val","windowSpace","view","docElt","__name","tooltipConfig","Facet","values","_a","_b","_c","browser","conf","knownHeight","tooltipPlugin","ViewPlugin","config","TooltipViewManager","showTooltip","p","entries","tooltip","update","updated","shouldMeasure","newConfig","t","prev","tooltipView","before","arrow","Outside","scaleX","scaleY","makeAbsolute","dom","rect","visible","margins","getScrollMargins","i","tv","measured","space","others","tView","pos","size","arrowHeight","width","height","offset","noOffset","ltr","Direction","left","above","spaceVert","top","right","r","setLeftStyle","arrowLeft","elt","value","current","baseTheme","EditorView","showHoverTooltip","inputs","a","HoverTooltipHost","_HoverTooltipHost","hostedView","name","given","showHoverTooltipHost","state","tooltips","hoverPlugin","HoverPlugin","source","field","locked","setHover","hoverTime","hovered","lastMove","tile","side","posCoords","bidi","s","rtl","open","done","pending","result","e","logException","plugin","index","event","active","isInTooltip","end","isOverRange","watch","tooltipMargin","bottom","arrowRect","from","to","x","y","margin","docBottom","hoverTooltip","options","StateEffect","hoverState","StateField","tr","lock","v","mapped","newPos","MapMode","copy","effect","closeHoverTooltipEffect","f","activateHover","plugins","found","getTooltip","closeHoverTooltipEffect","StateEffect","panelConfig","Facet","configs","topContainer","bottomContainer","c","getPanel","view","panel","plugin","panelPlugin","index","__name","ViewPlugin","showPanel","s","spec","conf","panelConfig","PanelGroup","p","update","input","specs","x","panels","top","bottom","mount","known","EditorView","value","container","parent","curDOM","rm","cls","node","next","Facet","showDialog","config","resolve","promise","r","panelCtor","createDialog","dialogField","openDialogEffect","StateEffect","close","closeDialogEffect","form","f","getDialog","className","dialogs","open","StateField","tr","e","d","state","result","content","done","crelt","forms","i","event","focus","GutterMarker","RangeValue","other","dom","MapMode","gutterLineClass","gutterWidgetClass","defaults","RangeSet","activeGutters","gutter","gutters","unfixGutters","values","gutterView","SingleGutterView","vpA","vpB","vpOverlap","min","detach","after","lineClasses","classSet","contexts","UpdateContext","line","first","b","BlockType","advanceCursor","cx","prev","cur","change","g","before","Direction","asArray","val","cursor","collect","pos","viewport","height","block","markers","above","newElt","GutterElement","extraMarkers","localMarkers","forLine","marker","last","prop","target","y","rect","prevMarkers","updated","vp","elt","sameMarkers","domPos","iNew","iOld","skipTo","matched","c","a","lineNumberMarkers","lineNumberWidgetMarker","lineNumberConfig","combineConfig","exists","add","NumberMarker","number","formatNumber","lineNumberGutter","others","m","widget","maxLineNumber","spacer","max","lineNumbers","lines","activeLineGutterMarker","activeLineGutterHighlighter","marks","range","linePos","highlightActiveLineGutter","nextPropID","Range","__name","from","to","NodeProp","config","match","NodeType","type","result","str","value","MountedTree","tree","overlay","parser","bracketed","noProps","_NodeType","name","props","id","flags","spec","src","prop","group","map","direct","node","groups","i","found","NodeSet","_NodeSet","types","newTypes","newProps","source","add","CachedNode","CachedInnerNode","IterMode","Tree","_Tree","children","positions","length","mounted","ch","mode","TreeCursor","pos","side","scope","cursor","TreeNode","resolveNode","stackIterator","enter","leave","anon","c","entered","balanceRange","data","buildTree","FlatBufferCursor","_FlatBufferCursor","buffer","index","TreeBuffer","_TreeBuffer","set","endIndex","startIndex","dir","pick","checkSide","startI","endI","b","copy","len","j","overlays","_a","parent","scan","inner","BaseNode","before","after","getChildren","context","matchNodeContext","last","_TreeNode","_tree","_parent","e","next","start","BufferNode","BufferContext","hasChild","rPos","enterBracketed","val","cur","p","_BufferNode","parentStart","iterStack","heads","picked","newHeads","StackIterator","layers","mount","root","n","d","child","cache","depth","mustLeave","nodeSet","maxBufferLength","reused","minRepeatType","contextHash","lookAhead","takeNode","minPos","inRepeat","end","size","lookAheadAtStart","contextAtStart","startPos","findBufferSize","endPos","copyToBuffer","localChildren","localPositions","localInRepeat","lastGroup","lastEnd","makeRepeatLeaf","takeFlatNode","make","makeBalanced","makeTree","nodes","nodeCount","stopAt","lastI","lookAheadProp","base","pair","maxSize","fork","skip","minStart","nodeSize","localSkipped","nodeStart","bufferStart","nodeSizeCache","balanceType","mkTop","mkTree","total","maxChild","divide","offset","groupFrom","groupStart","groupSize","nextSize","only","NodeWeakMap","TreeFragment","_TreeFragment","openStart","openEnd","fragments","partial","f","changes","minGap","fI","nextF","cI","off","nextC","nextPos","cut","fFrom","fTo","Parser","input","ranges","StringInput","parse","done","string","parseMixed","nest","MixedParse","InnerParse","target","checkRanges","r","ActiveOverlay","predicate","mounts","prev","stoppedInner","fragmentCursor","FragmentCursor","covered","isCovered","range","m","checkCover","materialize","oldMounts","punchRanges","enterFragments","sliceBuf","buf","stack","newStack","split","innerOffset","stackPos","targetI","StructureCursor","first","frag","outer","current","gapFrom","gapTo","findCoverChanges","a","iA","iB","inA","inB","nextA","nextB","nextTagID","Tag","_Tag","__name","name","set","base","modified","mod","nameOrParent","parent","tag","t","Modifier","a","b","nextModifierID","_Modifier","mods","exists","sameArray","m","configs","powerSet","config","x","array","sets","i","j","e","styleTags","spec","byName","prop","tags","part","pieces","mode","rest","pos","next","last","inner","rule","Rule","ruleNodeProp","NodeProp","cur","root","take","copy","context","other","tagHighlighter","options","map","style","scope","all","cls","sub","tagClass","highlightTags","highlighters","result","highlighter","value","highlightTree","tree","putStyle","from","to","builder","HighlightBuilder","HighlightBuilder","__name","at","highlighters","span","cls","to","cursor","from","inheritedClass","type","start","end","h","rule","getStyleTags","Rule","tagCls","highlightTags","mounted","NodeProp","inner","innerHighlighters","hasChild","i","pos","next","nextPos","rangeFrom","rangeTo","node","ruleNodeProp","t","Tag","comment","name","typeName","propertyName","literal","string","number","content","heading","keyword","operator","punctuation","bracket","meta","tags","val","classHighlighter","tagHighlighter","_a","languageDataProp","NodeProp","defineLanguageFacet","baseData","Facet","values","__name","sublanguageProp","Language","data","parser","extraExtensions","name","EditorState","syntaxTree","language","state","pos","side","top","topNodeAt","base","sub","innerNode","sublang","lang","result","explore","tree","from","mount","r","size","i","ch","Tree","StateEffect","topLang","node","IterMode","LRLanguage","_LRLanguage","spec","type","options","field","DocInput","__name","doc","pos","from","to","stringStart","currentContext","ParseContext","_ParseContext","parser","state","fragments","tree","treeLen","viewport","skipped","scheduleOn","Tree","until","upto","_a","endTime","done","TreeFragment","f","prev","r","cutFragments","changes","newState","ranges","fromA","toA","fromB","toB","startLen","Parser","input","cx","NodeType","frags","LanguageState","_LanguageState","context","tr","newCx","vpTo","parseState","language","Language","StateField","value","e","requestIdle","callback","timeout","idle","isInputPending","parseWorker","ViewPlugin","view","update","field","deadline","now","viewportFirst","err","logException","Facet","languages","EditorView","lang","LanguageSupport","support","indentService","Facet","indentUnit","__name","values","unit","e","getIndentUnit","state","indentString","cols","result","ts","ch","i","getIndentation","context","pos","EditorState","IndentContext","service","tree","syntaxTree","syntaxIndentation","IndentContext","__name","state","options","getIndentUnit","pos","bias","line","simulateBreak","simulateDoubleBreak","text","from","result","override","countColumn","overriden","indentNodeProp","NodeProp","syntaxIndentation","cx","ast","stack","inner","add","cur","i","indentFor","strategy","indentStrategy","TreeIndentContext","ignoreClosed","tree","first","close","last","closed","delimitedStrategy","topIndent","_TreeIndentContext","base","context","node","atBreak","isParent","parent","of","bracketedAligned","openToken","sim","openLine","lineEnd","next","space","delimitedIndent","closing","align","units","closedAt","after","aligned","flatIndent","continuedIndent","except","matchExcept","DontIndentBeyond","indentOnInput","EditorState","tr","rules","doc","head","lineStart","r","changes","indent","getIndentation","norm","indentString","foldService","Facet","foldNodeProp","foldInside","syntaxFolding","start","end","syntaxTree","found","iter","prop","isUnfinished","value","ch","foldable","service","mapRange","range","mapping","to","foldEffect","StateEffect","unfoldEffect","selectedLines","view","lines","l","foldState","StateField","Decoration","folded","fromA","toA","clearTouchedFolds","rangesToFold","e","foldExists","preparePlaceholder","foldConfig","decorations","PreparedFoldWidget","foldWidget","f","EditorView","ranges","touched","a","b","findFold","state","from","to","_a","found","foldState","__name","foldExists","folded","a","b","maybeEnable","other","StateEffect","codeFolding","foldCode","view","line","selectedLines","range","foldable","foldEffect","announceFold","unfoldCode","effects","unfoldEffect","fold","lineFrom","lineTo","EditorView","foldAll","pos","unfoldAll","field","foldKeymap","foldCode","unfoldCode","foldAll","unfoldAll","defaultConfig","foldConfig","Facet","values","combineConfig","codeFolding","config","result","foldState","baseTheme$1","__name","widgetToDOM","view","prepared","state","conf","onclick","event","line","folded","findFold","unfoldEffect","element","foldWidget","Decoration","WidgetType","PreparedFoldWidget","value","other","foldGutterDefaults","FoldMarker","GutterMarker","open","span","foldGutter","fullConfig","canFold","canUnfold","markers","ViewPlugin","update","language","syntaxTree","builder","RangeSetBuilder","mark","foldable","domEventHandlers","gutter","_a","RangeSet","range","foldEffect","EditorView","HighlightStyle","_HighlightStyle","specs","options","modSpec","def","spec","cls","StyleModule","all","scopeOpt","Language","type","languageDataProp","tagHighlighter","style","highlighterFacet","fallbackHighlighter","getHighlighters","main","syntaxHighlighting","highlighter","ext","treeHighlighter","themeType","TreeHighlighter","__name","view","syntaxTree","getHighlighters","update","tree","highlighters","styleChange","viewport","decoratedToMapped","Decoration","builder","RangeSetBuilder","from","to","highlightTree","style","treeHighlighter","Prec","ViewPlugin","v","defaultHighlightStyle","HighlightStyle","tags","baseTheme","EditorView","DefaultScanDist","DefaultBrackets","bracketMatchingConfig","Facet","configs","combineConfig","defaultRenderMatch","matchingMark","nonmatchingMark","match","decorations","mark","bracketDeco","state","config","range","matchBrackets","bracketMatcher","bracketMatchingUnique","bracketMatching","bracketMatchingHandle","NodeProp","matchingNodes","node","dir","brackets","byProp","index","findHandle","hasHandle","pos","maxScanDistance","cur","matches","handle","matchMarkedBrackets","matchPlainBrackets","_state","_pos","token","matching","parent","firstToken","depth","cursor","endHandle","tokenType","startCh","bracket","startToken","iter","distance","text","basePos","end","found","noTokens","typeArray","NodeType","warned","byTag","defaultTable","legacyName","name","createTokenType","noTokens","warnForPart","part","msg","warned","__name","createTokenType","extra","tagStr","tags$1","name","found","value","tags","tag","key","t","known","byTag","type","NodeType","typeArray","styleTags","marks","Decoration","Direction","toggleComment","__name","target","state","line","config","getConfig","toggleLineComment","toggleBlockCommentByLine","command","f","option","dispatch","tr","changeLineComment","toggleBlockComment","command","changeBlockComment","toggleBlockCommentByLine","command","o","s","changeBlockComment","selectedLineRanges","getConfig","state","pos","data","__name","SearchMargin","findBlockComment","open","close","from","to","textBefore","textAfter","spaceBefore","spaceAfter","beforeOff","startText","endText","startSpace","endSpace","endOff","ranges","r","fromLine","toLine","last","option","tokens","c","comments","i","range","changes","comment","token","changeLineComment","lines","prevLine","startI","minIndent","line","indent","empty","l","single","changeSet","fromHistory","Annotation","isolateHistory","invertedEffects","Facet","historyConfig","configs","combineConfig","_t","isAdjacent","a","b","tr","adj","historyField_","StateField","HistoryState","config","fromHist","item","HistEvent","other","updateBranch","addSelection","isolate","Transaction","event","time","userEvent","value","json","history","EditorView","view","undo","redo","cmd","side","selection","state","dispatch","historyState","historyField_","tr","__name","undo","redo","undoSelection","redoSelection","HistEvent","_HistEvent","__name","changes","effects","mapped","startSelection","selectionsAfter","after","_a","_b","_c","s","json","ChangeSet","ChangeDesc","EditorSelection","tr","selection","none","invert","invertedEffects","result","selections","updateBranch","branch","to","maxLen","newEvent","start","newBranch","isAdjacent","a","b","ranges","f","t","_f","_t","i","from","eqSelectionShape","r","conc","MaxSelectionsPerEvent","addSelection","lastEvent","sels","popSelection","last","addMappingToBranch","mapping","length","event","mapEvent","extraSelections","mappedChanges","before","fullMapping","StateEffect","joinableUserEvent","HistoryState","_HistoryState","done","undone","prevTime","prevUserEvent","time","userEvent","config","newGroupDelay","side","state","onlySelection","fromHistory","rest","historyKeymap","undo","redo","undoSelection","redoSelection","updateSel","sel","by","setSel","moveSel","dispatch","how","rangeEnd","range","forward","cursorByChar","view","ltrAtCursor","Direction","cursorCharLeft","cursorCharRight","cursorByGroup","view","forward","moveSel","range","rangeEnd","__name","cursorGroupLeft","ltrAtCursor","cursorGroupRight","segmenter","interestingNode","state","node","bracketProp","len","__name","moveBySyntax","start","forward","pos","syntaxTree","NodeProp","at","next","bracket","match","newPos","matchBrackets","EditorSelection","cursorSyntaxLeft","view","moveSel","range","ltrAtCursor","cursorSyntaxRight","cursorByLine","rangeEnd","moved","cursorLineUp","cursorLineDown","pageInfo","selfScroll","marginTop","marginBottom","height","source","EditorView","margins","cursorByPage","page","selection","updateSel","effect","startPos","scrollRect","scrollTop","scrollBottom","setSel","cursorPageUp","cursorPageDown","moveByLineBoundary","line","space","cursorLineBoundaryForward","cursorLineBoundaryBackward","cursorLineBoundaryLeft","cursorLineBoundaryRight","cursorLineStart","cursorLineEnd","toMatchingBracket","dispatch","extend","found","matching","head","cursorMatchingBracket","extendSel","target","forward","how","selection","updateSel","range","EditorSelection","head","setSel","__name","selectByChar","view","selectCharLeft","ltrAtCursor","selectCharRight","selectByGroup","view","forward","extendSel","range","__name","selectGroupLeft","ltrAtCursor","selectGroupRight","selectSyntaxLeft","__name","view","forward","ltrAtCursor","extendSel","range","moveBySyntax","selectSyntaxRight","selectByLine","selectLineUp","selectLineDown","selectByPage","pageInfo","selectPageUp","selectPageDown","selectLineBoundaryForward","moveByLineBoundary","selectLineBoundaryBackward","selectLineBoundaryLeft","selectLineBoundaryRight","selectLineStart","EditorSelection","selectLineEnd","cursorDocStart","state","dispatch","setSel","cursorDocEnd","selectDocStart","selectDocEnd","selectAll","selectLine","ranges","selectedLineBlocks","from","to","selectParentSyntax","selection","updateSel","tree","syntaxTree","stack","stackBefore","cur","node","addCursorVertically","sel","line","next","r","addCursorAbove","addCursorBelow","simplifySelection","deleteBy","target","by","event","changes","towards","skipAtomic","EditorView","pos","f","deleteByChar","byIndentUnit","before","targetPos","col","countColumn","drop","getIndentUnit","i","findClusterBreak","deleteCharBackward","deleteCharForward","__name","view","deleteByChar","deleteByGroup","target","forward","deleteBy","range","pos","state","line","categorize","cat","next","findClusterBreak","nextChar","nextCat","deleteGroupBackward","deleteGroupForward","deleteToLineEnd","__name","view","deleteBy","range","lineEnd","deleteLineBoundaryBackward","__name","view","deleteBy","range","lineStart","deleteLineBoundaryForward","splitLine","__name","state","dispatch","changes","range","Text","EditorSelection","transposeChars","pos","line","from","findClusterBreak","to","selectedLineBlocks","blocks","upto","startLine","endLine","prev","moveLine","forward","ranges","block","nextLine","size","r","moveLineUp","moveLineDown","copyLine","changeSet","copyLineUp","copyLineDown","deleteLine","view","selection","updateSel","dist","isBetweenBrackets","state","pos","context","syntaxTree","before","after","closedBy","NodeProp","__name","insertNewlineAndIndent","newlineAndIndent","insertBlankLine","atEof","dispatch","changes","range","from","to","line","explode","cx","IndentContext","indent","getIndentation","countColumn","insert","indentString","Text","EditorSelection","changeBySelectedLine","f","atLine","changeSet","indentSelection","updated","start","found","cur","norm","indentMore","indentUnit","indentLess","space","col","keep","getIndentUnit","toggleTabFocusMode","view","emacsStyleKeymap","cursorCharLeft","selectCharLeft","cursorCharRight","selectCharRight","cursorLineUp","selectLineUp","cursorLineDown","selectLineDown","cursorLineStart","selectLineStart","cursorLineEnd","selectLineEnd","deleteCharForward","deleteCharBackward","deleteToLineEnd","deleteGroupBackward","splitLine","transposeChars","cursorPageDown","standardKeymap","cursorGroupLeft","selectGroupLeft","cursorLineBoundaryLeft","selectLineBoundaryLeft","cursorGroupRight","selectGroupRight","cursorLineBoundaryRight","selectLineBoundaryRight","cursorDocStart","selectDocStart","cursorPageUp","selectPageUp","cursorDocEnd","selectDocEnd","selectPageDown","cursorLineBoundaryBackward","selectLineBoundaryBackward","cursorLineBoundaryForward","selectLineBoundaryForward","insertNewlineAndIndent","selectAll","deleteGroupForward","deleteLineBoundaryBackward","deleteLineBoundaryForward","b","defaultKeymap","cursorSyntaxLeft","selectSyntaxLeft","cursorSyntaxRight","selectSyntaxRight","moveLineUp","copyLineUp","moveLineDown","copyLineDown","addCursorAbove","addCursorBelow","simplifySelection","insertBlankLine","selectLine","selectParentSyntax","indentLess","indentMore","indentSelection","deleteLine","cursorMatchingBracket","toggleComment","toggleBlockComment","toggleTabFocusMode","basicNormalize","x","SearchCursor","__name","text","query","from","to","normalize","test","codePointAt","next","str","fromCodePoint","start","codePointSize","norm","i","pos","posPrecise","code","match","end","endPrecise","partial","keep","empty","baseFlags","RegExpCursor","options","MultilineRegExpCursor","startLine","toCharEnd","skip","off","flattened","FlattenedDoc","_FlattenedDoc","doc","cached","flat","cachedFrom","validRegExp","source","line","gotoLine","view","open","getDialog","field","state","close","result","showDialog","form","sign","ln","cl","percent","col","pc","docLine","selection","EditorSelection","EditorView","defaultHighlightOptions","highlightConfig","Facet","combineConfig","a","b","highlightSelectionMatches","ext","defaultTheme","matchHighlighter","matchDeco","Decoration","mainMatchDeco","insideWordBoundaries","check","CharCategory","insideWord","ViewPlugin","update","conf","sel","range","word","len","deco","part","cursor","v","selectWord","dispatch","newSel","findNextOccurrence","main","ranges","fullWord","cycled","r","selectNextOccurrence","searchedText","searchConfigFacet","configs","SearchPanel","SearchQuery","__name","config","validRegExp","text","_","ch","other","RegExpQuery","StringQuery","state","from","to","st","EditorState","regexpCursor","stringCursor","QueryType","spec","wrapStringTest","test","inner","buffer","bufferPos","match","stringWordTest","SearchCursor","x","doc","categorizer","buf","bufPos","charBefore","CharCategory","charAfter","curFrom","curTo","cursor","end","pos","start","range","found","_result","limit","ranges","add","wrapRegexpTest","regexpWordTest","RegExpCursor","str","index","findClusterBreak","_from","_to","size","result","m","l","n","setSearchQuery","StateEffect","togglePanel","searchState","StateField","SearchState","defaultQuery","value","tr","effect","createSearchPanel","f","showPanel","val","SearchState","__name","query","panel","matchMark","Decoration","selectedMatchMark","searchHighlighter","ViewPlugin","view","searchState","update","state","builder","RangeSetBuilder","i","ranges","l","from","to","selected","r","v","searchCommand","f","openSearchPanel","findNext","next","selection","EditorSelection","config","searchConfigFacet","announceMatch","selectSearchInput","findPrevious","prev","selectMatches","selectSelectionMatches","dispatch","sel","main","cur","SearchCursor","replaceNext","match","changes","replacement","effects","EditorView","changeSet","replaceAll","precise","announceText","createSearchPanel","defaultQuery","fallback","_a","_b","_c","_d","_e","selText","SearchQuery","getSearchInput","getPanel","input","searchInput","setSearchQuery","togglePanel","StateEffect","searchExtensions","closeSearchPanel","searchKeymap","gotoLine","selectNextOccurrence","SearchPanel","crelt","phrase","button","name","onclick","content","e","runScopeHandlers","tr","effect","AnnounceMargin","Break","line","lineEnd","start","end","text","baseTheme","Prec","CompletionContext","__name","state","pos","explicit","view","types","token","syntaxTree","expr","line","start","str","found","ensureAnchor","type","listener","options","toSet","chars","flat","words","prefixMatch","first","rest","label","i","source","completeFromList","list","o","validFor","match","context","ifNotIn","nodes","source","context","pos","syntaxTree","__name","Option","completion","match","score","cur","state","ensureAnchor","expr","start","_a","addStart","addEnd","pickedCompletion","Annotation","insertCompletionText","text","from","to","main","fromOff","toOff","range","lines","EditorSelection","SourceCache","asSource","known","completeFromList","startCompletionEffect","StateEffect","closeCompletionEffect","FuzzyMatcher","pattern","p","char","codePointAt","size","codePointSize","part","upper","matched","word","chars","folded","any","precise","byWord","first","firstSize","direct","len","anyTo","i","e","next","preciseTo","byWordTo","byWordFolded","adjacentTo","adjacentStart","adjacentEnd","hasLower","wordAdjacent","prevType","ch","type","fromCodePoint","positions","result","StrictMatcher","completionConfig","Facet","configs","combineConfig","defaultPositionInfo","a","b","c","joinClass","view","list","option","info","space","tooltip","rtl","Direction","left","narrow","side","offset","maxWidth","spaceLeft","spaceRight","infoWidth","infoHeight","spaceBelow","scaleY","scaleX","setSelectedEffect","optionContent","config","content","icon","cls","_s","_v","labelElt","label","off","j","span","detailElt","rangeAroundSelected","total","selected","max","CompletionTooltip","stateField","applyCompletion","cState","options","dom","move","id","update","prevState","disabled","open","newSel","infoResult","obj","logException","wrap","destroy","set","opt","scrollIntoView","sel","listRect","infoRect","selRect","docElt","ul","curSection","section","name","header","li","node","completionTooltip","container","element","parent","self","sortOptions","active","sections","dynamicSectionScore","addOption","s","conf","getMatch","matcher","sectionOrder","cmp","prev","compare","CompletionDialog","_CompletionDialog","attrs","timestamp","makeAttrs","didSetActive","selectedValue","createTooltip","changes","CompletionState","_CompletionState","none","tr","ActiveSource","didSet","setActiveEffect","sameResults","effect","baseAttrs","noAttrs","iA","iB","endA","endB","getUpdateType","typing","_ActiveSource","explicit","value","ActiveResult","_ActiveResult","limit","checkValid","CompletionContext","mapping","validFor","sources","completionState","StateField","f","showTooltip","val","EditorView","apply","moveCompletionSelection","forward","by","step","getTooltip","length","acceptCompletion","startCompletion","closeCompletion","RunningQuery","MaxUpdateCount","MinAbortTime","completionPlugin","ViewPlugin","doesReset","query","handler","delay","q","r","pending","err","updated","current","event","dialog","windows","commitCharacters","Prec","field","commitChars","baseTheme","FieldPos","line","FieldRange","_FieldRange","MapMode","Snippet","_Snippet","fieldPositions","lineStart","lineObj","baseIndent","indent","tabs","indentUnit","ranges","template","fields","m","seq","rawName","found","snip","_","brace","index","fieldMarker","Decoration","WidgetType","fieldRange","ActiveSnippet","_ActiveSnippet","mapped","setActive","moveToField","snippetState","fieldSelection","snippet","editor","spec","Text","Transaction","effects","addSnippetKeymap","snippetPointerHandler","moveField","dir","dispatch","last","clearSnippet","nextSnippetField","prevSnippetField","defaultSnippetKeymap","nextSnippetField","prevSnippetField","clearSnippet","snippetKeymap","Facet","maps","addSnippetKeymap","Prec","keymap","state","snippetCompletion","template","completion","snippet","__name","snippetPointerHandler","EditorView","event","view","active","snippetState","pos","match","r","fieldSelection","setActive","ActiveSnippet","defaults","closeBracketEffect","StateEffect","value","mapping","mapped","MapMode","closedBracket","RangeValue","bracketState","StateField","RangeSet","tr","line","__name","from","effect","closeBrackets","inputHandler","definedClosing","closing","ch","i","fromCodePoint","config","state","pos","android","EditorView","view","to","insert","sel","codePointSize","codePointAt","insertBracket","deleteBracketPair","dispatch","tokens","dont","changes","range","before","prevChar","token","nextChar","EditorSelection","closeBracketsKeymap","bracket","conf","tok","closed","handleSame","handleOpen","closedBracketAt","handleClose","found","doc","next","prev","open","close","closeBefore","_open","allowTriple","stringPrefixes","start","nodeStart","content","canStartStringAt","CharCategory","probablyInString","tree","syntaxTree","quoteToken","prefixes","node","maxPrefix","m","p","quotePos","first","parent","charCat","prefix","autocompletion","commitCharacters","completionState","completionConfig","completionPlugin","completionKeymapExt","baseTheme","completionKeymap","startCompletion","closeCompletion","moveCompletionSelection","acceptCompletion","Prec","keymap","SelectedDiagnostic","__name","from","to","diagnostic","LintState","_LintState","diagnostics","panel","selected","state","diagnosticFilter","lintConfig","sorted","a","b","deco","RangeSetBuilder","active","pos","scan","scanPos","docLen","i","next","p","d","widget","behind","check","sev","maxSeverity","Decoration","DiagnosticWidget","markClass","c","set","findDiagnostic","after","found","spec","hideTooltip","tr","tooltip","result","line","e","setDiagnosticsEffect","maybeEnableLint","effects","lintState","StateEffect","lintExtensions","setDiagnosticsEffect","StateEffect","togglePanel","movePanelSelection","lintState","StateField","LintState","Decoration","value","tr","mapped","selected","panel","selPos","findDiagnostic","lintConfig","effect","LintPanel","__name","f","showPanel","val","EditorView","s","activeMark","Decoration","lintTooltip","view","pos","side","diagnostics","lintState","found","start","end","from","to","spec","diagnosticFilter","lintConfig","diagnosticsTooltip","__name","crelt","d","renderDiagnostic","openLintPanel","field","maybeEnableLint","togglePanel","panel","getPanel","LintPanel","closeLintPanel","nextDiagnostic","sel","next","findDiagnostic","activateHover","lintHover","tr","lintKeymap","openLintPanel","nextDiagnostic","lintConfig","Facet","input","i","x","combineConfig","__name","combineFilter","a","b","u","t","y","d","s","assignKeys","actions","assigned","name","ch","c","__name","renderDiagnostic","view","diagnostic","inPanel","_a","keys","crelt","action","i","fired","click","e","found","findDiagnostic","lintState","keyIndex","nameElt","markClass","DiagnosticWidget","WidgetType","sev","other","PanelItem","LintPanel","_LintPanel","onkeydown","event","closeLintPanel","onclick","selected","diagnostics","needsSync","newSelectedItem","seen","_start","_end","spec","item","j","sel","panel","scaleY","domPos","rm","prev","selectedIndex","field","selection","movePanelSelection","svg","content","attrs","underline","color","baseTheme","EditorView","severityWeight","maxSeverity","weight","d","w","lintHover","hoverTooltip","lintTooltip","hideTooltip","lintExtensions","lintState","EditorView","state","selected","panel","Decoration","activeMark","baseTheme","basicSetup","lineNumbers","highlightActiveLineGutter","highlightSpecialChars","history","foldGutter","drawSelection","dropCursor","EditorState","indentOnInput","syntaxHighlighting","defaultHighlightStyle","bracketMatching","closeBrackets","autocompletion","rectangularSelection","crosshairCursor","highlightActiveLine","highlightSelectionMatches","keymap","closeBracketsKeymap","defaultKeymap","searchKeymap","historyKeymap","foldKeymap","completionKeymap","lintKeymap","Stack","_Stack","__name","p","stack","state","reducePos","pos","score","buffer","bufferBase","curContext","lookAhead","parent","_","i","cx","StackContext","start","action","_a","depth","type","parser","lookaheadRecord","dPrec","base","size","count","baseStateID","term","end","mustSink","top","index","mustMove","scan","nextState","skipped","next","nextStart","nextEnd","value","off","isNode","sim","SimulatedStack","nextStates","best","s","v","result","reduce","target","backup","seen","explore","rDepth","found","other","dialectID","last","context","newCx","tracker","goto","StackBufferCursor","_StackBufferCursor","decodeArray","input","Type","array","out","stop","digit","CachedToken","nullToken","InputStream","ranges","offset","assoc","range","idx","resolved","token","endOffset","endPos","chunk","chunkPos","nextChunk","n","from","to","TokenGroup","data","id","readToken","LocalTokenGroup","precTable","elseToken","atEof","nextPos","ExternalTokenizer","options","group","precOffset","groupMask","dialect","accEnd","overrides","low","high","mid","findOffset","prev","tableData","tableOffset","iPrev","verbose","stackIDs","cutAt","tree","side","cursor","IterMode","FragmentCursor","fragments","nodeSet","fr","Tree","NodeProp","TokenCache","stream","actionIndex","main","tokenizers","mask","tokenizer","startIndex","set","pair","Parse","stacks","newStacks","stopped","stoppedTokens","tok","finished","findFinished","maxRemaining","a","b","outer","j","split","strictCx","cxHash","cached","match","inner","defaultReduce","actions","localStack","pushStackDedup","tokens","restarted","tokenEnd","force","forceBase","insert","Dialect","source","flags","disabled","x","ContextTracker","spec","LRParser","_LRParser","Parser","nodeNames","topTerms","r","nodeProps","setProp","nodeID","prop","propSpec","NodeSet","name","NodeType","tokenArray","getSpecializer","parse","w","loose","table","groupTag","terminal","slot","flag","deflt","config","copy","info","t","prec","values","part","descendantOp","Unit","identifier","callee","VariableName","queryIdentifier","queryVariableName","QueryCallee","space","colon","parenL","underscore","bracketL","dash","period","hash","percent","ampersand","backslash","newline","asterisk","isAlpha","ch","__name","isDigit","isHex","identifierTokens","id","varName","input","stack","inside","dashes","i","next","identifiers","ExternalTokenizer","queryIdentifiers","descendant","unitToken","cssHighlighting","styleTags","tags","spec_callee","spec_queryIdentifier","spec_QueryCallee","spec_AtKeyword","spec_identifier","parser","LRParser","LocalTokenGroup","value","_properties","properties","style","names","seen","prop","ch","name","__name","pseudoClasses","values","tags","atRules","label","identifier","variable","isVarArg","node","doc","_a","callee","VariablesByNode","NodeWeakMap","declSelector","astTop","cur","variableNames","isVariable","known","result","cursor","IterMode","option","defineCSSCompletionSource","context","state","pos","syntaxTree","isDash","parent","above","before","cssCompletionSource","cssLanguage","LRLanguage","parser","indentNodeProp","continuedIndent","foldNodeProp","foldInside","css","LanguageSupport","scriptText","StartCloseScriptTag","styleText","StartCloseStyleTag","textareaText","StartCloseTextareaTag","EndTag","SelfClosingEndTag","StartTag","StartScriptTag","StartStyleTag","StartTextareaTag","StartSelfClosingTag","StartCloseTag","NoMatchStartCloseTag","MismatchedStartCloseTag","missingCloseTag","IncompleteTag","IncompleteCloseTag","commentContent$1","Element","TagName","Attribute","AttributeName","AttributeValue","UnquotedAttributeValue","ScriptText","StyleText","TextareaText","OpenTag","CloseTag","Dialect_noMatch","Dialect_selfClosing","selfClosers","implicitlyClosed","closeOnOpen","nameChar","ch","__name","cachedName","cachedInput","cachedPos","tagNameAfter","input","offset","pos","next","name","question","bang","lessThan","greaterThan","slash","dash","ElementContext","parent","startTagTerms","elementContext","ContextTracker","context","term","stack","node","type","tagStart","ExternalTokenizer","close","cx","commentContent","dashes","i","inForeignElement","endTag","selfClosing","contentTokenizer","tag","textToken","endToken","lastState","state","matchedLen","scriptTokens","styleTokens","textareaTokens","htmlHighlighting","styleTags","tags","parser","LRParser","getAttrs","openTag","attrs","att","value","findTagName","tagNameNode","maybeNest","configureNesting","attributes","script","style","textarea","other","attr","parseMixed","id","n","open","tagName","to","nameNode","matches","from","last","noSemi","noSemiType","incdec","incdecPrefix","questionDot","JSXStartTag","insertSemi","spaces","newline","LineComment","BlockComment","Dialect_jsx","space","braceR","semicolon","slash","star","plus","minus","lt","comma","question","dot","bracketL","trackNewline","ContextTracker","context","term","insertSemicolon","ExternalTokenizer","input","stack","next","noSemicolon","after","noSemicolonType","operatorToken","mayPostfix","identifierChar","ch","start","__name","jsx","back","jsHighlight","styleTags","tags","spec_identifier","spec_word","spec_LessThan","parser","LRParser","LocalTokenGroup","value","snippets","snippetCompletion","typescriptSnippets","cache","NodeWeakMap","ScopeNodes","defID","type","node","def","id","__name","functionContext","gatherCompletions","getScope","doc","cached","completions","top","name","IterMode","gather","c","Identifier","dontComplete","localCompletionSource","context","inner","syntaxTree","isWord","options","pos","javascriptLanguage","LRLanguage","parser","indentNodeProp","continuedIndent","flatIndent","__name","context","after","closed","isCase","delimitedIndent","cx","foldNodeProp","foldInside","tree","open","close","_a","name","jsxSublanguage","node","defineLanguageFacet","typescriptLanguage","jsxLanguage","sublanguageProp","tsxLanguage","kwCompletion","keywords","typescriptKeywords","javascript","config","lang","completions","typescriptSnippets","snippets","LanguageSupport","ifNotIn","dontComplete","completeFromList","localCompletionSource","autoCloseTags","findOpenTag","elementName","doc","max","ch","android","EditorView","view","from","to","text","defaultInsert","base","state","closeTags","range","head","around","syntaxTree","empty","insert","EditorSelection","openTag","Targets","Charsets","Methods","Encs","Bool","S","Tags","GlobalAttrs","eventAttributes","a","Schema","__name","extraTags","extraAttrs","elementName","doc","tree","max","tag","name","findParentElement","skip","allowedChildren","schema","parentInfo","openTags","open","parent","tagName","identifier","completeTag","state","from","to","end","i","completeCloseTag","completeStartTag","pos","options","level","completeAttrName","elt","info","localAttrs","names","attrName","completeAttrValue","_a","nameNode","token","attrs","base","quoteStart","quoteEnd","value","htmlCompletionFor","context","syntaxTree","around","scan","before","last","htmlCompletionSourceWith","config","extraTags","extraAttrs","schema","Schema","context","htmlCompletionFor","__name","jsonParser","javascriptLanguage","defaultNesting","attrs","typescriptLanguage","jsxLanguage","tsxLanguage","cssLanguage","defaultAttrs","eventAttributes","name","htmlPlain","LRLanguage","parser","indentNodeProp","after","endElt","close","cur","last","foldNodeProp","node","first","bracketMatchingHandle","htmlLanguage","configureNesting","html","dialect","wrap","lang","LanguageSupport","autoCloseTags","javascript","css","selfClosers","isClosed","doc","elt","_a","next","elementName","EditorView","view","from","to","text","insertTransaction","base","state","closeTags","range","didType","head","syntaxTree","tag","insert","EditorSelection","$editor","signal","$editingFacet","files","activeIndex","startedEditing","isProgrammaticSet","fileDecoder","LOADING_EL_ID","setEditorLoading","loading","container","el","__name","DEFAULT_INTERFACE","DEFAULT_PRELUDE","DEFAULT_EXAMPLES","renderDefaultExamples","ul","example","li","head","title","edit","desc","basename","path","trimmed","idx","isReservedIndexPath","languageForPath","html","css","javascript","markEditedExtension","EditorView","update","baseExtensions","basicSetup","autocompletion","setEditorContent","content","isProgrammaticSet","$editor","__name","activateTab","index","editor","files","activeIndex","StateEffect","baseExtensions","languageForPath","renderTabs","renameFile","newPath","trimmed","path","isReservedIndexPath","f","i","langChanged","renamedPath","startedEditing","a","b","addFile","dialog","e","input","existing","pathInput","removeFile","tabsEl","add","sizeAddButton","gutter","width","file","tab","label","basename","commit","done","close","err","loadFacetFiles","facet","tile","resolveFacetTile","resources","blocks","loaded","tileResourceEntries","entry","fileDecoder","applyDefaultTemplateForKind","kind","DEFAULT_PRELUDE","DEFAULT_INTERFACE","loadDefaultExample","$editingFacet","kindEl","renderEditor","editorContainer","EditorView","onBuildSubmit","event","nameEl","descriptionEl","fileMap","tileFromFiles","name","description","now","saveFacet","editFacet","ogFacet","url","id","setEditorLoading","handleBuildFormSubmit","importBtn","importInput","isListening","listenForExamplesEdit","target","rel","li","uri","facetFromURI","editFacetFromURL","params","idParam","uriParam","out","output","data"],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse","file":"/chunk-SB4RVSLI.js.map"} \ No newline at end of file +{"version":3,"sources":["/node_modules/.deno/@marijn+find-cluster-break@1.0.4/node_modules/@marijn/find-cluster-break/src/index.js","/node_modules/.deno/@codemirror+state@6.7.4/node_modules/@codemirror/state/dist/index.js","/node_modules/.deno/style-mod@4.1.3/node_modules/style-mod/src/style-mod.js","/node_modules/.deno/w3c-keyname@2.2.8/node_modules/w3c-keyname/index.js","/node_modules/.deno/crelt@1.0.7/node_modules/crelt/index.js","/node_modules/.deno/@codemirror+view@6.43.11/node_modules/@codemirror/view/dist/index.js","/node_modules/.deno/@lezer+common@1.5.2/node_modules/@lezer/common/dist/index.js","/node_modules/.deno/@lezer+highlight@1.2.3/node_modules/@lezer/highlight/dist/index.js","/node_modules/.deno/@codemirror+language@6.12.4/node_modules/@codemirror/language/dist/index.js","/node_modules/.deno/@codemirror+commands@6.11.0/node_modules/@codemirror/commands/dist/index.js","/node_modules/.deno/@codemirror+search@6.7.2/node_modules/@codemirror/search/dist/index.js","/node_modules/.deno/@codemirror+autocomplete@6.20.3/node_modules/@codemirror/autocomplete/dist/index.js","/node_modules/.deno/@codemirror+lint@6.9.7/node_modules/@codemirror/lint/dist/index.js","/node_modules/.deno/codemirror@6.0.2/node_modules/codemirror/dist/index.js","/node_modules/.deno/@lezer+lr@1.4.10/node_modules/@lezer/lr/dist/index.js","/node_modules/.deno/@lezer+css@1.3.6/node_modules/@lezer/css/dist/index.js","/node_modules/.deno/@codemirror+lang-css@6.3.1/node_modules/@codemirror/lang-css/dist/index.js","/node_modules/.deno/@lezer+html@1.3.13/node_modules/@lezer/html/dist/index.js","/node_modules/.deno/@lezer+javascript@1.5.4/node_modules/@lezer/javascript/dist/index.js","/node_modules/.deno/@codemirror+lang-javascript@6.2.5/node_modules/@codemirror/lang-javascript/dist/index.js","/node_modules/.deno/@codemirror+lang-html@6.4.12/node_modules/@codemirror/lang-html/dist/index.js","/common/pages/code.js"],"sourcesContent":["// These are filled with ranges (rangeFrom[i] up to but not including\n// rangeTo[i]) of code points that count as extending characters.\nlet rangeFrom = [], rangeTo = []\n\n;(() => {\n // Compressed representation of the Grapheme_Cluster_Break=Extend\n // information from\n // http://www.unicode.org/Public/17.0.0/ucd/auxiliary/GraphemeBreakProperty.txt.\n // Each pair of elements represents a range, as an offet from the\n // previous range and a length. Numbers are in base-36, with the empty\n // string being a shorthand for 1. See bin/build-extenders.js.\n let numbers = \"lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2,2,,4,z,,u,r,2j,b,1m,9,9,,o,4,,9,,3,,5,17,3,1n,9,16,o,,x,1i,3,,i,,7,a,2,t,3,1k,,,7,2,2,2,3,9,,a,2,q,,2,3,1k,,,5,4,2,2,3,3,,u,2,3,,b,3,1k,,,8,,3,,3,k,2,m,6,,3,1k,,,7,2,2,2,3,7,3,a,2,u,,1n,5,3,3,,4,9,,14,5,1j,,,7,,3,,4,7,2,b,2,t,3,1k,,,7,,3,,4,7,2,b,2,f,,c,4,1j,2,,7,,3,,4,9,,a,2,t,3,1y,,4,6,,,,8,i,2,1p,,,8,c,8,2q,,,a,b,7,21,2,r,,,,,,4,2,1d,k,,2,5,b,,10,9,,2u,b,,6,n,4,4,3,g,4,d,,,3,6,,f,,jj,3,qa,4,s,3,t,2,u,2,1s,w,9,,19,3,,,39,2,y,,3a,c,4,c,63,5,1l,a,,,,,2,o,2,,1c,1a,2,c,k,5,1b,h,12,9,c,3,u,d,1k,e,1c,k,48,3,,l,4,,6,,2,3,5i,1s,ek,,5f,x,2da,3,3x,,2o,w,fe,6,2x,2,n9w,4,,a,w,2,28,2,7k,,3,,4,,n,5,4,,2b,2,1e,i,q,i,d,,12,8,p,d,18,4,1b,e,10,,1v,e,c,,8,2,1a,,1f,,,3,2,2,5,2,,,15,5,5,2,6k,8,,2,fn4,,kh,g,g,g,a6,2,gt,,6a,,45,5,1ae,3,,2,5,4,14,3,4,,4l,2,fx,4,1t,5,8t,2,25,6,1y,b,1d,4,3e,3,1h,f,15,,2,2,a,4,19,b,7,,1p,3,10,e,g,2,18,,c,3,1c,e,8,4,,2,2k,c,6,,2,,4d,c,l,4,1j,2,,7,2,2,2,3,9,,a,2,2,7,3,5,1v,9,,,2,,,4,,5,,,e,2,2a,i,n,,29,k,6j,7,2,9,r,2,2a,h,2y,d,2t,3,2,a,74,f,6t,6,,2,2,4,,,,2,3x,7,2,7,3,,s,a,14,7,,4,8,,9,b,1a,g,5i,8,5j,8,,8,2a,m,,e,3e,6,3,,,2,,7,,,1u,5,,2,,5,9n,4,9,2,,,1c,7,3,5,n,,44l,,6,f,8ug,i,1xc,5,1n,7,t4,,,1j,7,4,29,,b,2,f57,2,3mp,1a,2,n,f2,5,3,6,8,8,2,7,u,4,44,3,1iz,1j,4,1e,8,,e,,m,5,,f,11s,7,,h,2,7,,2,,5,2s,,4g,7,af,,1p,4,e4,4,72,2,6r,,2,,7,2,5,,d6,7,31,7,240,5\".split(\",\").map(s => s ? parseInt(s, 36) : 1)\n for (let i = 0, n = 0; i < numbers.length; i++)\n (i % 2 ? rangeTo : rangeFrom).push(n = n + numbers[i])\n})()\n\nexport function isExtendingChar(code) {\n if (code < 768) return false\n for (let from = 0, to = rangeFrom.length;;) {\n let mid = (from + to) >> 1\n if (code < rangeFrom[mid]) to = mid\n else if (code >= rangeTo[mid]) from = mid + 1\n else return true\n if (from == to) return false\n }\n}\n\nfunction isRegionalIndicator(code) {\n return code >= 0x1F1E6 && code <= 0x1F1FF\n}\n\nfunction check(code) {\n for (let i = 0; i < rangeFrom.length; i++) {\n if (rangeTo[i] > code) return rangeFrom[i] <= code\n }\n return false\n}\n\nconst ZWJ = 0x200d\n\nexport function findClusterBreak(str, pos, forward = true, includeExtending = true) {\n return (forward ? nextClusterBreak : prevClusterBreak)(str, pos, includeExtending)\n}\n\nfunction nextClusterBreak(str, pos, includeExtending) {\n if (pos == str.length) return pos\n // If pos is in the middle of a surrogate pair, move to its start\n if (pos && surrogateLow(str.charCodeAt(pos)) && surrogateHigh(str.charCodeAt(pos - 1))) pos--\n let prev = codePointAt(str, pos)\n pos += codePointSize(prev)\n while (pos < str.length) {\n let next = codePointAt(str, pos)\n if (prev == ZWJ || next == ZWJ || includeExtending && isExtendingChar(next)) {\n pos += codePointSize(next)\n prev = next\n } else if (isRegionalIndicator(next)) {\n let countBefore = 0, i = pos - 2\n while (i >= 0 && isRegionalIndicator(codePointAt(str, i))) { countBefore++; i -= 2 }\n if (countBefore % 2 == 0) break\n else pos += 2\n } else {\n break\n }\n }\n return pos\n}\n\nfunction prevClusterBreak(str, pos, includeExtending) {\n while (pos > 1) {\n let found = nextClusterBreak(str, pos - 2, includeExtending)\n if (found < pos) return found\n pos--\n }\n return 0\n}\n\nfunction codePointAt(str, pos) {\n let code0 = str.charCodeAt(pos)\n if (!surrogateHigh(code0) || pos + 1 == str.length) return code0\n let code1 = str.charCodeAt(pos + 1)\n if (!surrogateLow(code1)) return code0\n return ((code0 - 0xd800) << 10) + (code1 - 0xdc00) + 0x10000\n}\n\nfunction surrogateLow(ch) { return ch >= 0xDC00 && ch < 0xE000 }\nfunction surrogateHigh(ch) { return ch >= 0xD800 && ch < 0xDC00 }\nfunction codePointSize(code) { return code < 0x10000 ? 1 : 2 }\n","import { findClusterBreak as findClusterBreak$1 } from '@marijn/find-cluster-break';\n\n/**\nThe data structure for documents. @nonabstract\n*/\nclass Text {\n /**\n Get the line description around the given position.\n */\n lineAt(pos) {\n if (pos < 0 || pos > this.length)\n throw new RangeError(`Invalid position ${pos} in document of length ${this.length}`);\n return this.lineInner(pos, false, 1, 0);\n }\n /**\n Get the description for the given (1-based) line number.\n */\n line(n) {\n if (n < 1 || n > this.lines)\n throw new RangeError(`Invalid line number ${n} in ${this.lines}-line document`);\n return this.lineInner(n, true, 1, 0);\n }\n /**\n Replace a range of the text with the given content.\n */\n replace(from, to, text) {\n [from, to] = clip(this, from, to);\n let parts = [];\n this.decompose(0, from, parts, 2 /* Open.To */);\n if (text.length)\n text.decompose(0, text.length, parts, 1 /* Open.From */ | 2 /* Open.To */);\n this.decompose(to, this.length, parts, 1 /* Open.From */);\n return TextNode.from(parts, this.length - (to - from) + text.length);\n }\n /**\n Append another document to this one.\n */\n append(other) {\n return this.replace(this.length, this.length, other);\n }\n /**\n Retrieve the text between the given points.\n */\n slice(from, to = this.length) {\n [from, to] = clip(this, from, to);\n let parts = [];\n this.decompose(from, to, parts, 0);\n return TextNode.from(parts, to - from);\n }\n /**\n Test whether this text is equal to another instance.\n */\n eq(other) {\n if (other == this)\n return true;\n if (other.length != this.length || other.lines != this.lines)\n return false;\n let start = this.scanIdentical(other, 1), end = this.length - this.scanIdentical(other, -1);\n let a = new RawTextCursor(this), b = new RawTextCursor(other);\n for (let skip = start, pos = start;;) {\n a.next(skip);\n b.next(skip);\n skip = 0;\n if (a.lineBreak != b.lineBreak || a.done != b.done || a.value != b.value)\n return false;\n pos += a.value.length;\n if (a.done || pos >= end)\n return true;\n }\n }\n /**\n Iterate over the text. When `dir` is `-1`, iteration happens\n from end to start. This will return lines and the breaks between\n them as separate strings.\n */\n iter(dir = 1) { return new RawTextCursor(this, dir); }\n /**\n Iterate over a range of the text. When `from` > `to`, the\n iterator will run in reverse.\n */\n iterRange(from, to = this.length) { return new PartialTextCursor(this, from, to); }\n /**\n Return a cursor that iterates over the given range of lines,\n _without_ returning the line breaks between, and yielding empty\n strings for empty lines.\n \n When `from` and `to` are given, they should be 1-based line numbers.\n */\n iterLines(from, to) {\n let inner;\n if (from == null) {\n inner = this.iter();\n }\n else {\n if (to == null)\n to = this.lines + 1;\n let start = this.line(from).from;\n inner = this.iterRange(start, Math.max(start, to == this.lines + 1 ? this.length : to <= 1 ? 0 : this.line(to - 1).to));\n }\n return new LineCursor(inner);\n }\n /**\n Return the document as a string, using newline characters to\n separate lines.\n */\n toString() { return this.sliceString(0); }\n /**\n Convert the document to an array of lines (which can be\n deserialized again via [`Text.of`](https://codemirror.net/6/docs/ref/#state.Text^of)).\n */\n toJSON() {\n let lines = [];\n this.flatten(lines);\n return lines;\n }\n /**\n @internal\n */\n constructor() { }\n /**\n Create a `Text` instance for the given array of lines.\n */\n static of(text) {\n if (text.length == 0)\n throw new RangeError(\"A document must have at least one line\");\n if (text.length == 1 && !text[0])\n return Text.empty;\n return text.length <= 32 /* Tree.Branch */ ? new TextLeaf(text) : TextNode.from(TextLeaf.split(text, []));\n }\n}\n// Leaves store an array of line strings. There are always line breaks\n// between these strings. Leaves are limited in size and have to be\n// contained in TextNode instances for bigger documents.\nclass TextLeaf extends Text {\n constructor(text, length = textLength(text)) {\n super();\n this.text = text;\n this.length = length;\n }\n get lines() { return this.text.length; }\n get children() { return null; }\n lineInner(target, isLine, line, offset) {\n for (let i = 0;; i++) {\n let string = this.text[i], end = offset + string.length;\n if ((isLine ? line : end) >= target)\n return new Line(offset, end, line, string);\n offset = end + 1;\n line++;\n }\n }\n decompose(from, to, target, open) {\n let text = from <= 0 && to >= this.length ? this\n : new TextLeaf(sliceText(this.text, from, to), Math.min(to, this.length) - Math.max(0, from));\n if (open & 1 /* Open.From */) {\n let prev = target.pop();\n let joined = appendText(text.text, prev.text.slice(), 0, text.length);\n if (joined.length <= 32 /* Tree.Branch */) {\n target.push(new TextLeaf(joined, prev.length + text.length));\n }\n else {\n let mid = joined.length >> 1;\n target.push(new TextLeaf(joined.slice(0, mid)), new TextLeaf(joined.slice(mid)));\n }\n }\n else {\n target.push(text);\n }\n }\n replace(from, to, text) {\n if (!(text instanceof TextLeaf))\n return super.replace(from, to, text);\n [from, to] = clip(this, from, to);\n let lines = appendText(this.text, appendText(text.text, sliceText(this.text, 0, from)), to);\n let newLen = this.length + text.length - (to - from);\n if (lines.length <= 32 /* Tree.Branch */)\n return new TextLeaf(lines, newLen);\n return TextNode.from(TextLeaf.split(lines, []), newLen);\n }\n sliceString(from, to = this.length, lineSep = \"\\n\") {\n [from, to] = clip(this, from, to);\n let result = \"\";\n for (let pos = 0, i = 0; pos <= to && i < this.text.length; i++) {\n let line = this.text[i], end = pos + line.length;\n if (pos > from && i)\n result += lineSep;\n if (from < end && to > pos)\n result += line.slice(Math.max(0, from - pos), to - pos);\n pos = end + 1;\n }\n return result;\n }\n flatten(target) {\n for (let line of this.text)\n target.push(line);\n }\n scanIdentical() { return 0; }\n static split(text, target) {\n let part = [], len = -1;\n for (let line of text) {\n part.push(line);\n len += line.length + 1;\n if (part.length == 32 /* Tree.Branch */) {\n target.push(new TextLeaf(part, len));\n part = [];\n len = -1;\n }\n }\n if (len > -1)\n target.push(new TextLeaf(part, len));\n return target;\n }\n}\n// Nodes provide the tree structure of the `Text` type. They store a\n// number of other nodes or leaves, taking care to balance themselves\n// on changes. There are implied line breaks _between_ the children of\n// a node (but not before the first or after the last child).\nclass TextNode extends Text {\n constructor(children, length) {\n super();\n this.children = children;\n this.length = length;\n this.lines = 0;\n for (let child of children)\n this.lines += child.lines;\n }\n lineInner(target, isLine, line, offset) {\n for (let i = 0;; i++) {\n let child = this.children[i], end = offset + child.length, endLine = line + child.lines - 1;\n if ((isLine ? endLine : end) >= target)\n return child.lineInner(target, isLine, line, offset);\n offset = end + 1;\n line = endLine + 1;\n }\n }\n decompose(from, to, target, open) {\n for (let i = 0, pos = 0; pos <= to && i < this.children.length; i++) {\n let child = this.children[i], end = pos + child.length;\n if (from <= end && to >= pos) {\n let childOpen = open & ((pos <= from ? 1 /* Open.From */ : 0) | (end >= to ? 2 /* Open.To */ : 0));\n if (pos >= from && end <= to && !childOpen)\n target.push(child);\n else\n child.decompose(from - pos, to - pos, target, childOpen);\n }\n pos = end + 1;\n }\n }\n replace(from, to, text) {\n [from, to] = clip(this, from, to);\n if (text.lines < this.lines)\n for (let i = 0, pos = 0; i < this.children.length; i++) {\n let child = this.children[i], end = pos + child.length;\n // Fast path: if the change only affects one child and the\n // child's size remains in the acceptable range, only update\n // that child\n if (from >= pos && to <= end) {\n let updated = child.replace(from - pos, to - pos, text);\n let totalLines = this.lines - child.lines + updated.lines;\n if (updated.lines < (totalLines >> (5 /* Tree.BranchShift */ - 1)) &&\n updated.lines > (totalLines >> (5 /* Tree.BranchShift */ + 1))) {\n let copy = this.children.slice();\n copy[i] = updated;\n return new TextNode(copy, this.length - (to - from) + text.length);\n }\n return super.replace(pos, end, updated);\n }\n pos = end + 1;\n }\n return super.replace(from, to, text);\n }\n sliceString(from, to = this.length, lineSep = \"\\n\") {\n [from, to] = clip(this, from, to);\n let result = \"\";\n for (let i = 0, pos = 0; i < this.children.length && pos <= to; i++) {\n let child = this.children[i], end = pos + child.length;\n if (pos > from && i)\n result += lineSep;\n if (from < end && to > pos)\n result += child.sliceString(from - pos, to - pos, lineSep);\n pos = end + 1;\n }\n return result;\n }\n flatten(target) {\n for (let child of this.children)\n child.flatten(target);\n }\n scanIdentical(other, dir) {\n if (!(other instanceof TextNode))\n return 0;\n let length = 0;\n let [iA, iB, eA, eB] = dir > 0 ? [0, 0, this.children.length, other.children.length]\n : [this.children.length - 1, other.children.length - 1, -1, -1];\n for (;; iA += dir, iB += dir) {\n if (iA == eA || iB == eB)\n return length;\n let chA = this.children[iA], chB = other.children[iB];\n if (chA != chB)\n return length + chA.scanIdentical(chB, dir);\n length += chA.length + 1;\n }\n }\n static from(children, length = children.reduce((l, ch) => l + ch.length + 1, -1)) {\n let lines = 0;\n for (let ch of children)\n lines += ch.lines;\n if (lines < 32 /* Tree.Branch */) {\n let flat = [];\n for (let ch of children)\n ch.flatten(flat);\n return new TextLeaf(flat, length);\n }\n let chunk = Math.max(32 /* Tree.Branch */, lines >> 5 /* Tree.BranchShift */), maxChunk = chunk << 1, minChunk = chunk >> 1;\n let chunked = [], currentLines = 0, currentLen = -1, currentChunk = [];\n function add(child) {\n let last;\n if (child.lines > maxChunk && child instanceof TextNode) {\n for (let node of child.children)\n add(node);\n }\n else if (child.lines > minChunk && (currentLines > minChunk || !currentLines)) {\n flush();\n chunked.push(child);\n }\n else if (child instanceof TextLeaf && currentLines &&\n (last = currentChunk[currentChunk.length - 1]) instanceof TextLeaf &&\n child.lines + last.lines <= 32 /* Tree.Branch */) {\n currentLines += child.lines;\n currentLen += child.length + 1;\n currentChunk[currentChunk.length - 1] = new TextLeaf(last.text.concat(child.text), last.length + 1 + child.length);\n }\n else {\n if (currentLines + child.lines > chunk)\n flush();\n currentLines += child.lines;\n currentLen += child.length + 1;\n currentChunk.push(child);\n }\n }\n function flush() {\n if (currentLines == 0)\n return;\n chunked.push(currentChunk.length == 1 ? currentChunk[0] : TextNode.from(currentChunk, currentLen));\n currentLen = -1;\n currentLines = currentChunk.length = 0;\n }\n for (let child of children)\n add(child);\n flush();\n return chunked.length == 1 ? chunked[0] : new TextNode(chunked, length);\n }\n}\nText.empty = /*@__PURE__*/new TextLeaf([\"\"], 0);\nfunction textLength(text) {\n let length = -1;\n for (let line of text)\n length += line.length + 1;\n return length;\n}\nfunction appendText(text, target, from = 0, to = 1e9) {\n for (let pos = 0, i = 0, first = true; i < text.length && pos <= to; i++) {\n let line = text[i], end = pos + line.length;\n if (end >= from) {\n if (end > to)\n line = line.slice(0, to - pos);\n if (pos < from)\n line = line.slice(from - pos);\n if (first) {\n target[target.length - 1] += line;\n first = false;\n }\n else\n target.push(line);\n }\n pos = end + 1;\n }\n return target;\n}\nfunction sliceText(text, from, to) {\n return appendText(text, [\"\"], from, to);\n}\nclass RawTextCursor {\n constructor(text, dir = 1) {\n this.dir = dir;\n this.done = false;\n this.lineBreak = false;\n this.value = \"\";\n this.nodes = [text];\n this.offsets = [dir > 0 ? 1 : (text instanceof TextLeaf ? text.text.length : text.children.length) << 1];\n }\n nextInner(skip, dir) {\n this.done = this.lineBreak = false;\n for (;;) {\n let last = this.nodes.length - 1;\n let top = this.nodes[last], offsetValue = this.offsets[last], offset = offsetValue >> 1;\n let size = top instanceof TextLeaf ? top.text.length : top.children.length;\n if (offset == (dir > 0 ? size : 0)) {\n if (last == 0) {\n this.done = true;\n this.value = \"\";\n return this;\n }\n if (dir > 0)\n this.offsets[last - 1]++;\n this.nodes.pop();\n this.offsets.pop();\n }\n else if ((offsetValue & 1) == (dir > 0 ? 0 : 1)) {\n this.offsets[last] += dir;\n if (skip == 0) {\n this.lineBreak = true;\n this.value = \"\\n\";\n return this;\n }\n skip--;\n }\n else if (top instanceof TextLeaf) {\n // Move to the next string\n let next = top.text[offset + (dir < 0 ? -1 : 0)];\n this.offsets[last] += dir;\n if (next.length > Math.max(0, skip)) {\n this.value = skip == 0 ? next : dir > 0 ? next.slice(skip) : next.slice(0, next.length - skip);\n return this;\n }\n skip -= next.length;\n }\n else {\n let next = top.children[offset + (dir < 0 ? -1 : 0)];\n if (skip > next.length) {\n skip -= next.length;\n this.offsets[last] += dir;\n }\n else {\n if (dir < 0)\n this.offsets[last]--;\n this.nodes.push(next);\n this.offsets.push(dir > 0 ? 1 : (next instanceof TextLeaf ? next.text.length : next.children.length) << 1);\n }\n }\n }\n }\n next(skip = 0) {\n if (skip < 0) {\n this.nextInner(-skip, (-this.dir));\n skip = this.value.length;\n }\n return this.nextInner(skip, this.dir);\n }\n}\nclass PartialTextCursor {\n constructor(text, start, end) {\n this.value = \"\";\n this.done = false;\n this.cursor = new RawTextCursor(text, start > end ? -1 : 1);\n this.pos = start > end ? text.length : 0;\n this.from = Math.min(start, end);\n this.to = Math.max(start, end);\n }\n nextInner(skip, dir) {\n if (dir < 0 ? this.pos <= this.from : this.pos >= this.to) {\n this.value = \"\";\n this.done = true;\n return this;\n }\n skip += Math.max(0, dir < 0 ? this.pos - this.to : this.from - this.pos);\n let limit = dir < 0 ? this.pos - this.from : this.to - this.pos;\n if (skip > limit)\n skip = limit;\n limit -= skip;\n let { value } = this.cursor.next(skip);\n this.pos += (value.length + skip) * dir;\n this.value = value.length <= limit ? value : dir < 0 ? value.slice(value.length - limit) : value.slice(0, limit);\n this.done = !this.value;\n return this;\n }\n next(skip = 0) {\n if (skip < 0)\n skip = Math.max(skip, this.from - this.pos);\n else if (skip > 0)\n skip = Math.min(skip, this.to - this.pos);\n return this.nextInner(skip, this.cursor.dir);\n }\n get lineBreak() { return this.cursor.lineBreak && this.value != \"\"; }\n}\nclass LineCursor {\n constructor(inner) {\n this.inner = inner;\n this.afterBreak = true;\n this.value = \"\";\n this.done = false;\n }\n next(skip = 0) {\n let { done, lineBreak, value } = this.inner.next(skip);\n if (done && this.afterBreak) {\n this.value = \"\";\n this.afterBreak = false;\n }\n else if (done) {\n this.done = true;\n this.value = \"\";\n }\n else if (lineBreak) {\n if (this.afterBreak) {\n this.value = \"\";\n }\n else {\n this.afterBreak = true;\n this.next();\n }\n }\n else {\n this.value = value;\n this.afterBreak = false;\n }\n return this;\n }\n get lineBreak() { return false; }\n}\nif (typeof Symbol != \"undefined\") {\n Text.prototype[Symbol.iterator] = function () { return this.iter(); };\n RawTextCursor.prototype[Symbol.iterator] = PartialTextCursor.prototype[Symbol.iterator] =\n LineCursor.prototype[Symbol.iterator] = function () { return this; };\n}\n/**\nThis type describes a line in the document. It is created\non-demand when lines are [queried](https://codemirror.net/6/docs/ref/#state.Text.lineAt).\n*/\nclass Line {\n /**\n @internal\n */\n constructor(\n /**\n The position of the start of the line.\n */\n from, \n /**\n The position at the end of the line (_before_ the line break,\n or at the end of document for the last line).\n */\n to, \n /**\n This line's line number (1-based).\n */\n number, \n /**\n The line's content.\n */\n text) {\n this.from = from;\n this.to = to;\n this.number = number;\n this.text = text;\n }\n /**\n The length of the line (not including any line break after it).\n */\n get length() { return this.to - this.from; }\n}\nfunction clip(text, from, to) {\n from = Math.max(0, Math.min(text.length, from));\n return [from, Math.max(from, Math.min(text.length, to))];\n}\n\n/**\nReturns a next grapheme cluster break _after_ (not equal to)\n`pos`, if `forward` is true, or before otherwise. Returns `pos`\nitself if no further cluster break is available in the string.\nMoves across surrogate pairs, extending characters (when\n`includeExtending` is true), characters joined with zero-width\njoiners, and flag emoji.\n*/\nfunction findClusterBreak(str, pos, forward = true, includeExtending = true) {\n return findClusterBreak$1(str, pos, forward, includeExtending);\n}\nfunction surrogateLow(ch) { return ch >= 0xDC00 && ch < 0xE000; }\nfunction surrogateHigh(ch) { return ch >= 0xD800 && ch < 0xDC00; }\n/**\nFind the code point at the given position in a string (like the\n[`codePointAt`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/codePointAt)\nstring method).\n*/\nfunction codePointAt(str, pos) {\n let code0 = str.charCodeAt(pos);\n if (!surrogateHigh(code0) || pos + 1 == str.length)\n return code0;\n let code1 = str.charCodeAt(pos + 1);\n if (!surrogateLow(code1))\n return code0;\n return ((code0 - 0xd800) << 10) + (code1 - 0xdc00) + 0x10000;\n}\n/**\nGiven a Unicode codepoint, return the JavaScript string that\nrespresents it (like\n[`String.fromCodePoint`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/fromCodePoint)).\n*/\nfunction fromCodePoint(code) {\n if (code <= 0xffff)\n return String.fromCharCode(code);\n code -= 0x10000;\n return String.fromCharCode((code >> 10) + 0xd800, (code & 1023) + 0xdc00);\n}\n/**\nThe amount of positions a character takes up in a JavaScript string.\n*/\nfunction codePointSize(code) { return code < 0x10000 ? 1 : 2; }\n\nconst DefaultSplit = /\\r\\n?|\\n/;\n/**\nDistinguishes different ways in which positions can be mapped.\n*/\nvar MapMode = /*@__PURE__*/(function (MapMode) {\n /**\n Map a position to a valid new position, even when its context\n was deleted.\n */\n MapMode[MapMode[\"Simple\"] = 0] = \"Simple\";\n /**\n Return null if deletion happens across the position.\n */\n MapMode[MapMode[\"TrackDel\"] = 1] = \"TrackDel\";\n /**\n Return null if the character _before_ the position is deleted.\n */\n MapMode[MapMode[\"TrackBefore\"] = 2] = \"TrackBefore\";\n /**\n Return null if the character _after_ the position is deleted.\n */\n MapMode[MapMode[\"TrackAfter\"] = 3] = \"TrackAfter\";\nreturn MapMode})(MapMode || (MapMode = {}));\n/**\nA change description is a variant of [change set](https://codemirror.net/6/docs/ref/#state.ChangeSet)\nthat doesn't store the inserted text. As such, it can't be\napplied, but is cheaper to store and manipulate.\n*/\nclass ChangeDesc {\n // Sections are encoded as pairs of integers. The first is the\n // length in the current document, and the second is -1 for\n // unaffected sections, and the length of the replacement content\n // otherwise. So an insertion would be (0, n>0), a deletion (n>0,\n // 0), and a replacement two positive numbers.\n /**\n @internal\n */\n constructor(\n /**\n @internal\n */\n sections) {\n this.sections = sections;\n }\n /**\n The length of the document before the change.\n */\n get length() {\n let result = 0;\n for (let i = 0; i < this.sections.length; i += 2)\n result += this.sections[i];\n return result;\n }\n /**\n The length of the document after the change.\n */\n get newLength() {\n let result = 0;\n for (let i = 0; i < this.sections.length; i += 2) {\n let ins = this.sections[i + 1];\n result += ins < 0 ? this.sections[i] : ins;\n }\n return result;\n }\n /**\n False when there are actual changes in this set.\n */\n get empty() { return this.sections.length == 0 || this.sections.length == 2 && this.sections[1] < 0; }\n /**\n Iterate over the unchanged parts left by these changes. `posA`\n provides the position of the range in the old document, `posB`\n the new position in the changed document.\n */\n iterGaps(f) {\n for (let i = 0, posA = 0, posB = 0; i < this.sections.length;) {\n let len = this.sections[i++], ins = this.sections[i++];\n if (ins < 0) {\n f(posA, posB, len);\n posB += len;\n }\n else {\n posB += ins;\n }\n posA += len;\n }\n }\n /**\n Iterate over the ranges changed by these changes. (See\n [`ChangeSet.iterChanges`](https://codemirror.net/6/docs/ref/#state.ChangeSet.iterChanges) for a\n variant that also provides you with the inserted text.)\n `fromA`/`toA` provides the extent of the change in the starting\n document, `fromB`/`toB` the extent of the replacement in the\n changed document.\n \n When `individual` is true, adjacent changes (which are kept\n separate for [position mapping](https://codemirror.net/6/docs/ref/#state.ChangeDesc.mapPos)) are\n reported separately.\n */\n iterChangedRanges(f, individual = false) {\n iterChanges(this, f, individual);\n }\n /**\n Get a description of the inverted form of these changes.\n */\n get invertedDesc() {\n let sections = [];\n for (let i = 0; i < this.sections.length;) {\n let len = this.sections[i++], ins = this.sections[i++];\n if (ins < 0)\n sections.push(len, ins);\n else\n sections.push(ins, len);\n }\n return new ChangeDesc(sections);\n }\n /**\n Compute the combined effect of applying another set of changes\n after this one. The length of the document after this set should\n match the length before `other`.\n */\n composeDesc(other) { return this.empty ? other : other.empty ? this : composeSets(this, other); }\n /**\n Map this description, which should start with the same document\n as `other`, over another set of changes, so that it can be\n applied after it. When `before` is true, map as if the changes\n in `this` happened before the ones in `other`.\n */\n mapDesc(other, before = false) { return other.empty ? this : mapSet(this, other, before); }\n mapPos(pos, assoc = -1, mode = MapMode.Simple) {\n let posA = 0, posB = 0;\n for (let i = 0; i < this.sections.length;) {\n let len = this.sections[i++], ins = this.sections[i++], endA = posA + len;\n if (ins < 0) {\n if (endA > pos)\n return posB + (pos - posA);\n posB += len;\n }\n else {\n if (mode != MapMode.Simple && endA >= pos &&\n (mode == MapMode.TrackDel && posA < pos && endA > pos ||\n mode == MapMode.TrackBefore && posA < pos ||\n mode == MapMode.TrackAfter && endA > pos))\n return null;\n if (endA > pos || endA == pos && assoc < 0 && !len)\n return pos == posA || assoc < 0 ? posB : posB + ins;\n posB += ins;\n }\n posA = endA;\n }\n if (pos > posA)\n throw new RangeError(`Position ${pos} is out of range for changeset of length ${posA}`);\n return posB;\n }\n /**\n Check whether these changes touch a given range. When one of the\n changes entirely covers the range, the string `\"cover\"` is\n returned.\n */\n touchesRange(from, to = from) {\n for (let i = 0, pos = 0; i < this.sections.length && pos <= to;) {\n let len = this.sections[i++], ins = this.sections[i++], end = pos + len;\n if (ins >= 0 && pos <= to && end >= from)\n return pos < from && end > to ? \"cover\" : true;\n pos = end;\n }\n return false;\n }\n /**\n @internal\n */\n toString() {\n let result = \"\";\n for (let i = 0; i < this.sections.length;) {\n let len = this.sections[i++], ins = this.sections[i++];\n result += (result ? \" \" : \"\") + len + (ins >= 0 ? \":\" + ins : \"\");\n }\n return result;\n }\n /**\n Serialize this change desc to a JSON-representable value.\n */\n toJSON() { return this.sections; }\n /**\n Create a change desc from its JSON representation (as produced\n by [`toJSON`](https://codemirror.net/6/docs/ref/#state.ChangeDesc.toJSON).\n */\n static fromJSON(json) {\n if (!Array.isArray(json) || json.length % 2 || json.some(a => typeof a != \"number\"))\n throw new RangeError(\"Invalid JSON representation of ChangeDesc\");\n return new ChangeDesc(json);\n }\n /**\n @internal\n */\n static create(sections) { return new ChangeDesc(sections); }\n}\n/**\nA change set represents a group of modifications to a document. It\nstores the document length, and can only be applied to documents\nwith exactly that length.\n*/\nclass ChangeSet extends ChangeDesc {\n constructor(sections, \n /**\n @internal\n */\n inserted) {\n super(sections);\n this.inserted = inserted;\n }\n /**\n Apply the changes to a document, returning the modified\n document.\n */\n apply(doc) {\n if (this.length != doc.length)\n throw new RangeError(\"Applying change set to a document with the wrong length\");\n iterChanges(this, (fromA, toA, fromB, _toB, text) => doc = doc.replace(fromB, fromB + (toA - fromA), text), false);\n return doc;\n }\n mapDesc(other, before = false) { return mapSet(this, other, before, true); }\n /**\n Given the document as it existed _before_ the changes, return a\n change set that represents the inverse of this set, which could\n be used to go from the document created by the changes back to\n the document as it existed before the changes.\n */\n invert(doc) {\n let sections = this.sections.slice(), inserted = [];\n for (let i = 0, pos = 0; i < sections.length; i += 2) {\n let len = sections[i], ins = sections[i + 1];\n if (ins >= 0) {\n sections[i] = ins;\n sections[i + 1] = len;\n let index = i >> 1;\n while (inserted.length < index)\n inserted.push(Text.empty);\n inserted.push(len ? doc.slice(pos, pos + len) : Text.empty);\n }\n pos += len;\n }\n return new ChangeSet(sections, inserted);\n }\n /**\n Combine two subsequent change sets into a single set. `other`\n must start in the document produced by `this`. If `this` goes\n `docA` → `docB` and `other` represents `docB` → `docC`, the\n returned value will represent the change `docA` → `docC`.\n */\n compose(other) { return this.empty ? other : other.empty ? this : composeSets(this, other, true); }\n /**\n Given another change set starting in the same document, maps this\n change set over the other, producing a new change set that can be\n applied to the document produced by applying `other`. When\n `before` is `true`, order changes as if `this` comes before\n `other`, otherwise (the default) treat `other` as coming first.\n \n Given two changes `A` and `B`, `A.compose(B.map(A))` and\n `B.compose(A.map(B, true))` will produce the same document. This\n provides a basic form of [operational\n transformation](https://en.wikipedia.org/wiki/Operational_transformation),\n and can be used for collaborative editing.\n */\n map(other, before = false) { return other.empty ? this : mapSet(this, other, before, true); }\n /**\n Iterate over the changed ranges in the document, calling `f` for\n each, with the range in the original document (`fromA`-`toA`)\n and the range that replaces it in the new document\n (`fromB`-`toB`).\n \n When `individual` is true, adjacent changes are reported\n separately.\n */\n iterChanges(f, individual = false) {\n iterChanges(this, f, individual);\n }\n /**\n Get a [change description](https://codemirror.net/6/docs/ref/#state.ChangeDesc) for this change\n set.\n */\n get desc() { return ChangeDesc.create(this.sections); }\n /**\n @internal\n */\n filter(ranges) {\n let resultSections = [], resultInserted = [], filteredSections = [];\n let iter = new SectionIter(this);\n done: for (let i = 0, pos = 0;;) {\n let next = i == ranges.length ? 1e9 : ranges[i++];\n while (pos < next || pos == next && iter.len == 0) {\n if (iter.done)\n break done;\n let len = Math.min(iter.len, next - pos);\n addSection(filteredSections, len, -1);\n let ins = iter.ins == -1 ? -1 : iter.off == 0 ? iter.ins : 0;\n addSection(resultSections, len, ins);\n if (ins > 0)\n addInsert(resultInserted, resultSections, iter.text);\n iter.forward(len);\n pos += len;\n }\n let end = ranges[i++];\n while (pos < end) {\n if (iter.done)\n break done;\n let len = Math.min(iter.len, end - pos);\n addSection(resultSections, len, -1);\n addSection(filteredSections, len, iter.ins == -1 ? -1 : iter.off == 0 ? iter.ins : 0);\n iter.forward(len);\n pos += len;\n }\n }\n return { changes: new ChangeSet(resultSections, resultInserted),\n filtered: ChangeDesc.create(filteredSections) };\n }\n /**\n Serialize this change set to a JSON-representable value.\n */\n toJSON() {\n let parts = [];\n for (let i = 0; i < this.sections.length; i += 2) {\n let len = this.sections[i], ins = this.sections[i + 1];\n if (ins < 0)\n parts.push(len);\n else if (ins == 0)\n parts.push([len]);\n else\n parts.push([len].concat(this.inserted[i >> 1].toJSON()));\n }\n return parts;\n }\n /**\n Create a change set for the given changes, for a document of the\n given length, using `lineSep` as line separator.\n */\n static of(changes, length, lineSep) {\n let sections = [], inserted = [], pos = 0;\n let total = null;\n function flush(force = false) {\n if (!force && !sections.length)\n return;\n if (pos < length)\n addSection(sections, length - pos, -1);\n let set = new ChangeSet(sections, inserted);\n total = total ? total.compose(set.map(total)) : set;\n sections = [];\n inserted = [];\n pos = 0;\n }\n function process(spec) {\n if (Array.isArray(spec)) {\n for (let sub of spec)\n process(sub);\n }\n else if (spec instanceof ChangeSet) {\n if (spec.length != length)\n throw new RangeError(`Mismatched change set length (got ${spec.length}, expected ${length})`);\n flush();\n total = total ? total.compose(spec.map(total)) : spec;\n }\n else {\n let { from, to = from, insert } = spec;\n if (from > to || from < 0 || to > length)\n throw new RangeError(`Invalid change range ${from} to ${to} (in doc of length ${length})`);\n let insText = !insert ? Text.empty : typeof insert == \"string\" ? Text.of(insert.split(lineSep || DefaultSplit)) : insert;\n let insLen = insText.length;\n if (from == to && insLen == 0)\n return;\n if (from < pos)\n flush();\n if (from > pos)\n addSection(sections, from - pos, -1);\n addSection(sections, to - from, insLen);\n addInsert(inserted, sections, insText);\n pos = to;\n }\n }\n process(changes);\n flush(!total);\n return total;\n }\n /**\n Create an empty changeset of the given length.\n */\n static empty(length) {\n return new ChangeSet(length ? [length, -1] : [], []);\n }\n /**\n Create a changeset from its JSON representation (as produced by\n [`toJSON`](https://codemirror.net/6/docs/ref/#state.ChangeSet.toJSON).\n */\n static fromJSON(json) {\n if (!Array.isArray(json))\n throw new RangeError(\"Invalid JSON representation of ChangeSet\");\n let sections = [], inserted = [];\n for (let i = 0; i < json.length; i++) {\n let part = json[i];\n if (typeof part == \"number\") {\n sections.push(part, -1);\n }\n else if (!Array.isArray(part) || typeof part[0] != \"number\" || part.some((e, i) => i && typeof e != \"string\")) {\n throw new RangeError(\"Invalid JSON representation of ChangeSet\");\n }\n else if (part.length == 1) {\n sections.push(part[0], 0);\n }\n else {\n while (inserted.length < i)\n inserted.push(Text.empty);\n inserted[i] = Text.of(part.slice(1));\n sections.push(part[0], inserted[i].length);\n }\n }\n return new ChangeSet(sections, inserted);\n }\n /**\n @internal\n */\n static createSet(sections, inserted) {\n return new ChangeSet(sections, inserted);\n }\n}\nfunction addSection(sections, len, ins, forceJoin = false) {\n if (len == 0 && ins <= 0)\n return;\n let last = sections.length - 2;\n if (last >= 0 && ins <= 0 && ins == sections[last + 1])\n sections[last] += len;\n else if (last >= 0 && len == 0 && sections[last] == 0)\n sections[last + 1] += ins;\n else if (forceJoin) {\n sections[last] += len;\n sections[last + 1] += ins;\n }\n else\n sections.push(len, ins);\n}\nfunction addInsert(values, sections, value) {\n if (value.length == 0)\n return;\n let index = (sections.length - 2) >> 1;\n if (index < values.length) {\n values[values.length - 1] = values[values.length - 1].append(value);\n }\n else {\n while (values.length < index)\n values.push(Text.empty);\n values.push(value);\n }\n}\nfunction iterChanges(desc, f, individual) {\n let inserted = desc.inserted;\n for (let posA = 0, posB = 0, i = 0; i < desc.sections.length;) {\n let len = desc.sections[i++], ins = desc.sections[i++];\n if (ins < 0) {\n posA += len;\n posB += len;\n }\n else {\n let endA = posA, endB = posB, text = Text.empty;\n for (;;) {\n endA += len;\n endB += ins;\n if (ins && inserted)\n text = text.append(inserted[(i - 2) >> 1]);\n if (individual || i == desc.sections.length || desc.sections[i + 1] < 0)\n break;\n len = desc.sections[i++];\n ins = desc.sections[i++];\n }\n f(posA, endA, posB, endB, text);\n posA = endA;\n posB = endB;\n }\n }\n}\nfunction mapSet(setA, setB, before, mkSet = false) {\n // Produce a copy of setA that applies to the document after setB\n // has been applied (assuming both start at the same document).\n let sections = [], insert = mkSet ? [] : null;\n let a = new SectionIter(setA), b = new SectionIter(setB);\n // Iterate over both sets in parallel. inserted tracks, for changes\n // in A that have to be processed piece-by-piece, whether their\n // content has been inserted already, and refers to the section\n // index.\n for (let inserted = -1;;) {\n if (a.done && b.len || b.done && a.len) {\n throw new Error(\"Mismatched change set lengths\");\n }\n else if (a.ins == -1 && b.ins == -1) {\n // Move across ranges skipped by both sets.\n let len = Math.min(a.len, b.len);\n addSection(sections, len, -1);\n a.forward(len);\n b.forward(len);\n }\n else if (b.ins >= 0 && (a.ins < 0 || inserted == a.i || a.off == 0 && (b.len < a.len || b.len == a.len && !before))) {\n // If there's a change in B that comes before the next change in\n // A (ordered by start pos, then len, then before flag), skip\n // that (and process any changes in A it covers).\n let len = b.len;\n addSection(sections, b.ins, -1);\n while (len) {\n let piece = Math.min(a.len, len);\n if (a.ins >= 0 && inserted < a.i && a.len <= piece) {\n addSection(sections, 0, a.ins);\n if (insert)\n addInsert(insert, sections, a.text);\n inserted = a.i;\n }\n a.forward(piece);\n len -= piece;\n }\n b.next();\n }\n else if (a.ins >= 0) {\n // Process the part of a change in A up to the start of the next\n // non-deletion change in B (if overlapping).\n let len = 0, left = a.len;\n while (left) {\n if (b.ins == -1) {\n let piece = Math.min(left, b.len);\n len += piece;\n left -= piece;\n b.forward(piece);\n }\n else if (b.ins == 0 && b.len < left) {\n left -= b.len;\n b.next();\n }\n else {\n break;\n }\n }\n addSection(sections, len, inserted < a.i ? a.ins : 0);\n if (insert && inserted < a.i)\n addInsert(insert, sections, a.text);\n inserted = a.i;\n a.forward(a.len - left);\n }\n else if (a.done && b.done) {\n return insert ? ChangeSet.createSet(sections, insert) : ChangeDesc.create(sections);\n }\n else {\n throw new Error(\"Mismatched change set lengths\");\n }\n }\n}\nfunction composeSets(setA, setB, mkSet = false) {\n let sections = [];\n let insert = mkSet ? [] : null;\n let a = new SectionIter(setA), b = new SectionIter(setB);\n for (let open = false;;) {\n if (a.done && b.done) {\n return insert ? ChangeSet.createSet(sections, insert) : ChangeDesc.create(sections);\n }\n else if (a.ins == 0) { // Deletion in A\n addSection(sections, a.len, 0, open);\n a.next();\n }\n else if (b.len == 0 && !b.done) { // Insertion in B\n addSection(sections, 0, b.ins, open);\n if (insert)\n addInsert(insert, sections, b.text);\n b.next();\n }\n else if (a.done || b.done) {\n throw new Error(\"Mismatched change set lengths\");\n }\n else {\n let len = Math.min(a.len2, b.len), sectionLen = sections.length;\n if (a.ins == -1) {\n let insB = b.ins == -1 ? -1 : b.off ? 0 : b.ins;\n addSection(sections, len, insB, open);\n if (insert && insB)\n addInsert(insert, sections, b.text);\n }\n else if (b.ins == -1) {\n addSection(sections, a.off ? 0 : a.len, len, open);\n if (insert)\n addInsert(insert, sections, a.textBit(len));\n }\n else {\n addSection(sections, a.off ? 0 : a.len, b.off ? 0 : b.ins, open);\n if (insert && !b.off)\n addInsert(insert, sections, b.text);\n }\n open = (a.ins > len || b.ins >= 0 && b.len > len) && (open || sections.length > sectionLen);\n a.forward2(len);\n b.forward(len);\n }\n }\n}\nclass SectionIter {\n constructor(set) {\n this.set = set;\n this.i = 0;\n this.next();\n }\n next() {\n let { sections } = this.set;\n if (this.i < sections.length) {\n this.len = sections[this.i++];\n this.ins = sections[this.i++];\n }\n else {\n this.len = 0;\n this.ins = -2;\n }\n this.off = 0;\n }\n get done() { return this.ins == -2; }\n get len2() { return this.ins < 0 ? this.len : this.ins; }\n get text() {\n let { inserted } = this.set, index = (this.i - 2) >> 1;\n return index >= inserted.length ? Text.empty : inserted[index];\n }\n textBit(len) {\n let { inserted } = this.set, index = (this.i - 2) >> 1;\n return index >= inserted.length && !len ? Text.empty\n : inserted[index].slice(this.off, len == null ? undefined : this.off + len);\n }\n forward(len) {\n if (len == this.len)\n this.next();\n else {\n this.len -= len;\n this.off += len;\n }\n }\n forward2(len) {\n if (this.ins == -1)\n this.forward(len);\n else if (len == this.ins)\n this.next();\n else {\n this.ins -= len;\n this.off += len;\n }\n }\n}\n\n/**\nA single selection range. When\n[`allowMultipleSelections`](https://codemirror.net/6/docs/ref/#state.EditorState^allowMultipleSelections)\nis enabled, a [selection](https://codemirror.net/6/docs/ref/#state.EditorSelection) may hold\nmultiple ranges. By default, selections hold exactly one range.\n*/\nclass SelectionRange {\n constructor(\n /**\n The lower boundary of the range.\n */\n from, \n /**\n The upper boundary of the range.\n */\n to, flags, \n /**\n The goal column (stored vertical offset) associated with a\n cursor. This is used to preserve the vertical position when\n [moving](https://codemirror.net/6/docs/ref/#view.EditorView.moveVertically) across\n lines of different length.\n */\n goalColumn) {\n this.from = from;\n this.to = to;\n this.flags = flags;\n this.goalColumn = goalColumn;\n }\n /**\n The anchor of the range—the side that doesn't move when you\n extend it.\n */\n get anchor() { return this.flags & 32 /* RangeFlag.Inverted */ ? this.to : this.from; }\n /**\n The head of the range, which is moved when the range is\n [extended](https://codemirror.net/6/docs/ref/#state.SelectionRange.extend).\n */\n get head() { return this.flags & 32 /* RangeFlag.Inverted */ ? this.from : this.to; }\n /**\n True when `anchor` and `head` are at the same position.\n */\n get empty() { return this.from == this.to; }\n /**\n If this is a cursor that is explicitly associated with the\n character on one of its sides, this returns the side. -1 means\n the character before its position, 1 the character after, and 0\n means no association.\n */\n get assoc() { return this.flags & 8 /* RangeFlag.AssocBefore */ ? -1 : this.flags & 16 /* RangeFlag.AssocAfter */ ? 1 : 0; }\n /**\n A flag that, when set, makes some selection-extending commands\n treat the range's head and anchor as exchangeable, so that for\n example Shift-ArrowUp will make the lower side of the selection\n the anchor, even if that was the head before. Used to implement\n MacOS-style undirectional selections.\n */\n get undirectional() {\n return (this.flags & 64 /* RangeFlag.Undirectional */) > 0;\n }\n /**\n The bidirectional text level associated with this cursor, if\n any.\n */\n get bidiLevel() {\n let level = this.flags & 7 /* RangeFlag.BidiLevelMask */;\n return level == 7 ? null : level;\n }\n /**\n Map this range through a change, producing a valid range in the\n updated document.\n */\n map(change, assoc = -1) {\n let from, to;\n if (this.empty) {\n from = to = change.mapPos(this.from, assoc);\n }\n else {\n from = change.mapPos(this.from, 1);\n to = change.mapPos(this.to, -1);\n }\n return from == this.from && to == this.to ? this : new SelectionRange(from, to, this.flags, this.goalColumn);\n }\n /**\n Extend this range to cover at least `from` to `to`.\n */\n extend(from, to = from, assoc = 0) {\n if (from <= this.anchor && to >= this.anchor)\n return EditorSelection.range(from, to, undefined, undefined, assoc);\n let head = Math.abs(from - this.anchor) > Math.abs(to - this.anchor) ? from : to;\n return EditorSelection.range(this.anchor, head, undefined, undefined, assoc);\n }\n /**\n Compare this range to another range.\n */\n eq(other, includeAssoc = false) {\n return this.anchor == other.anchor && this.head == other.head && this.goalColumn == other.goalColumn &&\n (!includeAssoc || !this.empty || this.assoc == other.assoc);\n }\n /**\n Return a JSON-serializable object representing the range.\n */\n toJSON() { return { anchor: this.anchor, head: this.head }; }\n /**\n Convert a JSON representation of a range to a `SelectionRange`\n instance.\n */\n static fromJSON(json) {\n if (!json || typeof json.anchor != \"number\" || typeof json.head != \"number\")\n throw new RangeError(\"Invalid JSON representation for SelectionRange\");\n return EditorSelection.range(json.anchor, json.head);\n }\n /**\n @internal\n */\n static create(from, to, flags, goalColumn) {\n return new SelectionRange(from, to, flags, goalColumn);\n }\n}\n/**\nAn editor selection holds one or more selection ranges.\n*/\nclass EditorSelection {\n constructor(\n /**\n The ranges in the selection, sorted by position. Ranges cannot\n overlap (but they may touch, if they aren't empty).\n */\n ranges, \n /**\n The index of the _main_ range in the selection (which is\n usually the range that was added last).\n */\n mainIndex) {\n this.ranges = ranges;\n this.mainIndex = mainIndex;\n }\n /**\n Map a selection through a change. Used to adjust the selection\n position for changes.\n */\n map(change, assoc = -1) {\n if (change.empty)\n return this;\n return EditorSelection.create(this.ranges.map(r => r.map(change, assoc)), this.mainIndex);\n }\n /**\n Compare this selection to another selection. By default, ranges\n are compared only by position. When `includeAssoc` is true,\n cursor ranges must also have the same\n [`assoc`](https://codemirror.net/6/docs/ref/#state.SelectionRange.assoc) value.\n */\n eq(other, includeAssoc = false) {\n if (this.ranges.length != other.ranges.length ||\n this.mainIndex != other.mainIndex)\n return false;\n for (let i = 0; i < this.ranges.length; i++)\n if (!this.ranges[i].eq(other.ranges[i], includeAssoc))\n return false;\n return true;\n }\n /**\n Get the primary selection range. Usually, you should make sure\n your code applies to _all_ ranges, by using methods like\n [`changeByRange`](https://codemirror.net/6/docs/ref/#state.EditorState.changeByRange).\n */\n get main() { return this.ranges[this.mainIndex]; }\n /**\n Make sure the selection only has one range. Returns a selection\n holding only the main range from this selection.\n */\n asSingle() {\n return this.ranges.length == 1 ? this : new EditorSelection([this.main], 0);\n }\n /**\n Extend this selection with an extra range.\n */\n addRange(range, main = true) {\n return EditorSelection.create([range].concat(this.ranges), main ? 0 : this.mainIndex + 1);\n }\n /**\n Replace a given range with another range, and then normalize the\n selection to merge and sort ranges if necessary.\n */\n replaceRange(range, which = this.mainIndex) {\n let ranges = this.ranges.slice();\n ranges[which] = range;\n return EditorSelection.create(ranges, this.mainIndex);\n }\n /**\n Convert this selection to an object that can be serialized to\n JSON.\n */\n toJSON() {\n return { ranges: this.ranges.map(r => r.toJSON()), main: this.mainIndex };\n }\n /**\n Create a selection from a JSON representation.\n */\n static fromJSON(json) {\n if (!json || !Array.isArray(json.ranges) || typeof json.main != \"number\" || json.main >= json.ranges.length)\n throw new RangeError(\"Invalid JSON representation for EditorSelection\");\n return new EditorSelection(json.ranges.map((r) => SelectionRange.fromJSON(r)), json.main);\n }\n /**\n Create a selection holding a single range.\n */\n static single(anchor, head = anchor) {\n return new EditorSelection([EditorSelection.range(anchor, head)], 0);\n }\n /**\n Sort and merge the given set of ranges, creating a valid\n selection.\n */\n static create(ranges, mainIndex = 0) {\n if (ranges.length == 0)\n throw new RangeError(\"A selection needs at least one range\");\n for (let pos = 0, i = 0; i < ranges.length; i++) {\n let range = ranges[i];\n if (range.empty ? range.from <= pos : range.from < pos)\n return EditorSelection.normalized(ranges.slice(), mainIndex);\n pos = range.to;\n }\n return new EditorSelection(ranges, mainIndex);\n }\n /**\n Create a cursor selection range at the given position. You can\n safely ignore the optional arguments in most situations.\n */\n static cursor(pos, assoc = 0, bidiLevel, goalColumn) {\n return SelectionRange.create(pos, pos, (assoc == 0 ? 0 : assoc < 0 ? 8 /* RangeFlag.AssocBefore */ : 16 /* RangeFlag.AssocAfter */) |\n (bidiLevel == null ? 7 : Math.min(6, bidiLevel)), goalColumn);\n }\n /**\n Create a selection range.\n */\n static range(anchor, head, goalColumn, bidiLevel, assoc) {\n let flags = bidiLevel == null ? 7 : Math.min(6, bidiLevel);\n if (!assoc && anchor != head)\n assoc = head < anchor ? 1 : -1;\n if (assoc)\n flags |= assoc < 0 ? 8 /* RangeFlag.AssocBefore */ : 16 /* RangeFlag.AssocAfter */;\n return head < anchor ? SelectionRange.create(head, anchor, flags | 32 /* RangeFlag.Inverted */, goalColumn)\n : SelectionRange.create(anchor, head, flags, goalColumn);\n }\n /**\n Create an [undirectional](https://codemirror.net/6/docs/ref/#state.SelectionRange.undirectional)\n selection range.\n */\n static undirectionalRange(from, to) {\n return SelectionRange.create(from, to, 64 /* RangeFlag.Undirectional */, undefined);\n }\n /**\n @internal\n */\n static normalized(ranges, mainIndex = 0) {\n let main = ranges[mainIndex];\n ranges.sort((a, b) => a.from - b.from);\n mainIndex = ranges.indexOf(main);\n for (let i = 1; i < ranges.length; i++) {\n let range = ranges[i], prev = ranges[i - 1];\n if (range.empty ? range.from <= prev.to : range.from < prev.to) {\n let from = prev.from, to = Math.max(range.to, prev.to);\n if (i <= mainIndex)\n mainIndex--;\n ranges.splice(--i, 2, range.anchor > range.head ? EditorSelection.range(to, from) : EditorSelection.range(from, to));\n }\n }\n return new EditorSelection(ranges, mainIndex);\n }\n}\nfunction checkSelection(selection, docLength) {\n for (let range of selection.ranges)\n if (range.to > docLength)\n throw new RangeError(\"Selection points outside of document\");\n}\n\nlet nextID = 0;\n/**\nA facet is a labeled value that is associated with an editor\nstate. It takes inputs from any number of extensions, and combines\nthose into a single output value.\n\nExamples of uses of facets are the [tab\nsize](https://codemirror.net/6/docs/ref/#state.EditorState^tabSize), [editor\nattributes](https://codemirror.net/6/docs/ref/#view.EditorView^editorAttributes), and [update\nlisteners](https://codemirror.net/6/docs/ref/#view.EditorView^updateListener).\n\nNote that `Facet` instances can be used anywhere where\n[`FacetReader`](https://codemirror.net/6/docs/ref/#state.FacetReader) is expected.\n*/\nclass Facet {\n constructor(\n /**\n @internal\n */\n combine, \n /**\n @internal\n */\n compareInput, \n /**\n @internal\n */\n compare, isStatic, enables) {\n this.combine = combine;\n this.compareInput = compareInput;\n this.compare = compare;\n this.isStatic = isStatic;\n /**\n @internal\n */\n this.id = nextID++;\n this.default = combine([]);\n this.extensions = typeof enables == \"function\" ? enables(this) : enables;\n }\n /**\n Returns a facet reader for this facet, which can be used to\n [read](https://codemirror.net/6/docs/ref/#state.EditorState.facet) it but not to define values for it.\n */\n get reader() { return this; }\n /**\n Define a new facet.\n */\n static define(config = {}) {\n return new Facet(config.combine || ((a) => a), config.compareInput || ((a, b) => a === b), config.compare || (!config.combine ? sameArray : (a, b) => a === b), !!config.static, config.enables);\n }\n /**\n Returns an extension that adds the given value to this facet.\n */\n of(value) {\n return new FacetProvider([], this, 0 /* Provider.Static */, value);\n }\n /**\n Create an extension that computes a value for the facet from a\n state. You must take care to declare the parts of the state that\n this value depends on, since your function is only called again\n for a new state when one of those parts changed.\n \n In cases where your value depends only on a single field, you'll\n want to use the [`from`](https://codemirror.net/6/docs/ref/#state.Facet.from) method instead.\n */\n compute(deps, get) {\n if (this.isStatic)\n throw new Error(\"Can't compute a static facet\");\n return new FacetProvider(deps, this, 1 /* Provider.Single */, get);\n }\n /**\n Create an extension that computes zero or more values for this\n facet from a state.\n */\n computeN(deps, get) {\n if (this.isStatic)\n throw new Error(\"Can't compute a static facet\");\n return new FacetProvider(deps, this, 2 /* Provider.Multi */, get);\n }\n from(field, get) {\n if (!get)\n get = x => x;\n return this.compute([field], state => get(state.field(field)));\n }\n}\nfunction sameArray(a, b) {\n return a == b || a.length == b.length && a.every((e, i) => e === b[i]);\n}\nclass FacetProvider {\n constructor(dependencies, facet, type, value) {\n this.dependencies = dependencies;\n this.facet = facet;\n this.type = type;\n this.value = value;\n this.id = nextID++;\n }\n dynamicSlot(addresses) {\n var _a;\n let getter = this.value;\n let compare = this.facet.compareInput;\n let id = this.id, idx = addresses[id] >> 1, multi = this.type == 2 /* Provider.Multi */;\n let depDoc = false, depSel = false, depAddrs = [];\n for (let dep of this.dependencies) {\n if (dep == \"doc\")\n depDoc = true;\n else if (dep == \"selection\")\n depSel = true;\n else if ((((_a = addresses[dep.id]) !== null && _a !== void 0 ? _a : 1) & 1) == 0)\n depAddrs.push(addresses[dep.id]);\n }\n return {\n create(state) {\n state.values[idx] = getter(state);\n return 1 /* SlotStatus.Changed */;\n },\n update(state, tr) {\n if ((depDoc && tr.docChanged) || (depSel && (tr.docChanged || tr.selection)) || ensureAll(state, depAddrs)) {\n let newVal = getter(state);\n if (multi ? !compareArray(newVal, state.values[idx], compare) : !compare(newVal, state.values[idx])) {\n state.values[idx] = newVal;\n return 1 /* SlotStatus.Changed */;\n }\n }\n return 0;\n },\n reconfigure: (state, oldState) => {\n let newVal, oldAddr = oldState.config.address[id];\n if (oldAddr != null) {\n let oldVal = getAddr(oldState, oldAddr);\n if (this.dependencies.every(dep => {\n return dep instanceof Facet ? oldState.facet(dep) === state.facet(dep) :\n dep instanceof StateField ? oldState.field(dep, false) == state.field(dep, false) : true;\n }) || (multi ? compareArray(newVal = getter(state), oldVal, compare) : compare(newVal = getter(state), oldVal))) {\n state.values[idx] = oldVal;\n return 0;\n }\n }\n else {\n newVal = getter(state);\n }\n state.values[idx] = newVal;\n return 1 /* SlotStatus.Changed */;\n }\n };\n }\n get extension() { return this; }\n}\nfunction compareArray(a, b, compare) {\n if (a.length != b.length)\n return false;\n for (let i = 0; i < a.length; i++)\n if (!compare(a[i], b[i]))\n return false;\n return true;\n}\nfunction ensureAll(state, addrs) {\n let changed = false;\n for (let addr of addrs)\n if (ensureAddr(state, addr) & 1 /* SlotStatus.Changed */)\n changed = true;\n return changed;\n}\nfunction dynamicFacetSlot(addresses, facet, providers) {\n let providerAddrs = providers.map(p => addresses[p.id]);\n let providerTypes = providers.map(p => p.type);\n let dynamic = providerAddrs.filter(p => !(p & 1));\n let idx = addresses[facet.id] >> 1;\n function get(state) {\n let values = [];\n for (let i = 0; i < providerAddrs.length; i++) {\n let value = getAddr(state, providerAddrs[i]);\n if (providerTypes[i] == 2 /* Provider.Multi */)\n for (let val of value)\n values.push(val);\n else\n values.push(value);\n }\n return facet.combine(values);\n }\n return {\n create(state) {\n for (let addr of providerAddrs)\n ensureAddr(state, addr);\n state.values[idx] = get(state);\n return 1 /* SlotStatus.Changed */;\n },\n update(state, tr) {\n if (!ensureAll(state, dynamic))\n return 0;\n let value = get(state);\n if (facet.compare(value, state.values[idx]))\n return 0;\n state.values[idx] = value;\n return 1 /* SlotStatus.Changed */;\n },\n reconfigure(state, oldState) {\n let depChanged = ensureAll(state, providerAddrs);\n let oldProviders = oldState.config.facets[facet.id], oldValue = oldState.facet(facet);\n if (oldProviders && !depChanged && sameArray(providers, oldProviders)) {\n state.values[idx] = oldValue;\n return 0;\n }\n let value = get(state);\n if (facet.compare(value, oldValue)) {\n state.values[idx] = oldValue;\n return 0;\n }\n state.values[idx] = value;\n return 1 /* SlotStatus.Changed */;\n }\n };\n}\nconst initField = /*@__PURE__*/Facet.define({ static: true });\n/**\nFields can store additional information in an editor state, and\nkeep it in sync with the rest of the state.\n*/\nclass StateField {\n constructor(\n /**\n @internal\n */\n id, createF, updateF, compareF, \n /**\n @internal\n */\n spec) {\n this.id = id;\n this.createF = createF;\n this.updateF = updateF;\n this.compareF = compareF;\n this.spec = spec;\n /**\n @internal\n */\n this.provides = undefined;\n }\n /**\n Define a state field.\n */\n static define(config) {\n let field = new StateField(nextID++, config.create, config.update, config.compare || ((a, b) => a === b), config);\n if (config.provide)\n field.provides = config.provide(field);\n return field;\n }\n create(state) {\n let init = state.facet(initField).find(i => i.field == this);\n return ((init === null || init === void 0 ? void 0 : init.create) || this.createF)(state);\n }\n /**\n @internal\n */\n slot(addresses) {\n let idx = addresses[this.id] >> 1;\n return {\n create: (state) => {\n state.values[idx] = this.create(state);\n return 1 /* SlotStatus.Changed */;\n },\n update: (state, tr) => {\n let oldVal = state.values[idx];\n let value = this.updateF(oldVal, tr);\n if (this.compareF(oldVal, value))\n return 0;\n state.values[idx] = value;\n return 1 /* SlotStatus.Changed */;\n },\n reconfigure: (state, oldState) => {\n let init = state.facet(initField), oldInit = oldState.facet(initField), reInit;\n if ((reInit = init.find(i => i.field == this)) && reInit != oldInit.find(i => i.field == this)) {\n state.values[idx] = reInit.create(state);\n return 1 /* SlotStatus.Changed */;\n }\n if (oldState.config.address[this.id] != null) {\n state.values[idx] = oldState.field(this);\n return 0;\n }\n state.values[idx] = this.create(state);\n return 1 /* SlotStatus.Changed */;\n }\n };\n }\n /**\n Returns an extension that enables this field and overrides the\n way it is initialized. Can be useful when you need to provide a\n non-default starting value for the field.\n */\n init(create) {\n return [this, initField.of({ field: this, create })];\n }\n /**\n State field instances can be used as\n [`Extension`](https://codemirror.net/6/docs/ref/#state.Extension) values to enable the field in a\n given state.\n */\n get extension() { return this; }\n}\nconst Prec_ = { lowest: 4, low: 3, default: 2, high: 1, highest: 0 };\nfunction prec(value) {\n return (ext) => new PrecExtension(ext, value);\n}\n/**\nBy default extensions are registered in the order they are found\nin the flattened form of nested array that was provided.\nIndividual extension values can be assigned a precedence to\noverride this. Extensions that do not have a precedence set get\nthe precedence of the nearest parent with a precedence, or\n[`default`](https://codemirror.net/6/docs/ref/#state.Prec.default) if there is no such parent. The\nfinal ordering of extensions is determined by first sorting by\nprecedence and then by order within each precedence.\n*/\nconst Prec = {\n /**\n The highest precedence level, for extensions that should end up\n near the start of the precedence ordering.\n */\n highest: /*@__PURE__*/prec(Prec_.highest),\n /**\n A higher-than-default precedence, for extensions that should\n come before those with default precedence.\n */\n high: /*@__PURE__*/prec(Prec_.high),\n /**\n The default precedence, which is also used for extensions\n without an explicit precedence.\n */\n default: /*@__PURE__*/prec(Prec_.default),\n /**\n A lower-than-default precedence.\n */\n low: /*@__PURE__*/prec(Prec_.low),\n /**\n The lowest precedence level. Meant for things that should end up\n near the end of the extension order.\n */\n lowest: /*@__PURE__*/prec(Prec_.lowest)\n};\nclass PrecExtension {\n constructor(inner, prec) {\n this.inner = inner;\n this.prec = prec;\n }\n get extension() { return this; }\n}\n/**\nExtension compartments can be used to make a configuration\ndynamic. By [wrapping](https://codemirror.net/6/docs/ref/#state.Compartment.of) part of your\nconfiguration in a compartment, you can later\n[replace](https://codemirror.net/6/docs/ref/#state.Compartment.reconfigure) that part through a\ntransaction.\n*/\nclass Compartment {\n /**\n Create an instance of this compartment to add to your [state\n configuration](https://codemirror.net/6/docs/ref/#state.EditorStateConfig.extensions).\n */\n of(ext) { return new CompartmentInstance(this, ext); }\n /**\n Create an [effect](https://codemirror.net/6/docs/ref/#state.TransactionSpec.effects) that\n reconfigures this compartment.\n */\n reconfigure(content) {\n return Compartment.reconfigure.of({ compartment: this, extension: content });\n }\n /**\n Get the current content of the compartment in the state, or\n `undefined` if it isn't present.\n */\n get(state) {\n return state.config.compartments.get(this);\n }\n}\nclass CompartmentInstance {\n constructor(compartment, inner) {\n this.compartment = compartment;\n this.inner = inner;\n }\n get extension() { return this; }\n}\nclass Configuration {\n constructor(base, compartments, dynamicSlots, address, staticValues, facets) {\n this.base = base;\n this.compartments = compartments;\n this.dynamicSlots = dynamicSlots;\n this.address = address;\n this.staticValues = staticValues;\n this.facets = facets;\n this.statusTemplate = [];\n while (this.statusTemplate.length < dynamicSlots.length)\n this.statusTemplate.push(0 /* SlotStatus.Unresolved */);\n }\n staticFacet(facet) {\n let addr = this.address[facet.id];\n return addr == null ? facet.default : this.staticValues[addr >> 1];\n }\n static resolve(base, compartments, oldState) {\n let fields = [];\n let facets = Object.create(null);\n let newCompartments = new Map();\n for (let ext of flatten(base, compartments, newCompartments)) {\n if (ext instanceof StateField)\n fields.push(ext);\n else\n (facets[ext.facet.id] || (facets[ext.facet.id] = [])).push(ext);\n }\n let address = Object.create(null);\n let staticValues = [];\n let dynamicSlots = [];\n for (let field of fields) {\n address[field.id] = dynamicSlots.length << 1;\n dynamicSlots.push(a => field.slot(a));\n }\n let oldFacets = oldState === null || oldState === void 0 ? void 0 : oldState.config.facets;\n for (let id in facets) {\n let providers = facets[id], facet = providers[0].facet;\n let oldProviders = oldFacets && oldFacets[id] || [];\n if (providers.every(p => p.type == 0 /* Provider.Static */)) {\n address[facet.id] = (staticValues.length << 1) | 1;\n if (sameArray(oldProviders, providers)) {\n staticValues.push(oldState.facet(facet));\n }\n else {\n let value = facet.combine(providers.map(p => p.value));\n staticValues.push(oldState && facet.compare(value, oldState.facet(facet)) ? oldState.facet(facet) : value);\n }\n }\n else {\n for (let p of providers) {\n if (p.type == 0 /* Provider.Static */) {\n address[p.id] = (staticValues.length << 1) | 1;\n staticValues.push(p.value);\n }\n else {\n address[p.id] = dynamicSlots.length << 1;\n dynamicSlots.push(a => p.dynamicSlot(a));\n }\n }\n address[facet.id] = dynamicSlots.length << 1;\n dynamicSlots.push(a => dynamicFacetSlot(a, facet, providers));\n }\n }\n let dynamic = dynamicSlots.map(f => f(address));\n return new Configuration(base, newCompartments, dynamic, address, staticValues, facets);\n }\n}\nfunction flatten(extension, compartments, newCompartments) {\n let result = [[], [], [], [], []];\n let seen = new Map();\n function inner(ext, prec) {\n let known = seen.get(ext);\n if (known != null) {\n if (known <= prec)\n return;\n let found = result[known].indexOf(ext);\n if (found > -1)\n result[known].splice(found, 1);\n if (ext instanceof CompartmentInstance)\n newCompartments.delete(ext.compartment);\n }\n seen.set(ext, prec);\n if (Array.isArray(ext)) {\n for (let e of ext)\n inner(e, prec);\n }\n else if (ext instanceof CompartmentInstance) {\n if (newCompartments.has(ext.compartment))\n throw new RangeError(`Duplicate use of compartment in extensions`);\n let content = compartments.get(ext.compartment) || ext.inner;\n newCompartments.set(ext.compartment, content);\n inner(content, prec);\n }\n else if (ext instanceof PrecExtension) {\n inner(ext.inner, ext.prec);\n }\n else if (ext instanceof StateField) {\n result[prec].push(ext);\n if (ext.provides)\n inner(ext.provides, prec);\n }\n else if (ext instanceof FacetProvider) {\n result[prec].push(ext);\n if (ext.facet.extensions)\n inner(ext.facet.extensions, Prec_.default);\n }\n else {\n let content = ext.extension;\n if (!content)\n throw new Error(`Unrecognized extension value in extension set (${ext}).`);\n if (content == ext)\n throw new Error(`Unrecognized extension value in extension set (${ext}). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks.`);\n inner(content, prec);\n }\n }\n inner(extension, Prec_.default);\n return result.reduce((a, b) => a.concat(b));\n}\nfunction ensureAddr(state, addr) {\n if (addr & 1)\n return 2 /* SlotStatus.Computed */;\n let idx = addr >> 1;\n let status = state.status[idx];\n if (status == 4 /* SlotStatus.Computing */)\n throw new Error(\"Cyclic dependency between fields and/or facets\");\n if (status & 2 /* SlotStatus.Computed */)\n return status;\n state.status[idx] = 4 /* SlotStatus.Computing */;\n let changed = state.computeSlot(state, state.config.dynamicSlots[idx]);\n return state.status[idx] = 2 /* SlotStatus.Computed */ | changed;\n}\nfunction getAddr(state, addr) {\n return addr & 1 ? state.config.staticValues[addr >> 1] : state.values[addr >> 1];\n}\n\nconst languageData = /*@__PURE__*/Facet.define();\nconst allowMultipleSelections = /*@__PURE__*/Facet.define({\n combine: values => values.some(v => v),\n static: true\n});\nconst lineSeparator = /*@__PURE__*/Facet.define({\n combine: values => values.length ? values[0] : undefined,\n static: true\n});\nconst changeFilter = /*@__PURE__*/Facet.define();\nconst transactionFilter = /*@__PURE__*/Facet.define();\nconst transactionExtender = /*@__PURE__*/Facet.define();\nconst readOnly = /*@__PURE__*/Facet.define({\n combine: values => values.length ? values[0] : false\n});\n\n/**\nAnnotations are tagged values that are used to add metadata to\ntransactions in an extensible way. They should be used to model\nthings that effect the entire transaction (such as its [time\nstamp](https://codemirror.net/6/docs/ref/#state.Transaction^time) or information about its\n[origin](https://codemirror.net/6/docs/ref/#state.Transaction^userEvent)). For effects that happen\n_alongside_ the other changes made by the transaction, [state\neffects](https://codemirror.net/6/docs/ref/#state.StateEffect) are more appropriate.\n*/\nclass Annotation {\n /**\n @internal\n */\n constructor(\n /**\n The annotation type.\n */\n type, \n /**\n The value of this annotation.\n */\n value) {\n this.type = type;\n this.value = value;\n }\n /**\n Define a new type of annotation.\n */\n static define() { return new AnnotationType(); }\n}\n/**\nMarker that identifies a type of [annotation](https://codemirror.net/6/docs/ref/#state.Annotation).\n*/\nclass AnnotationType {\n /**\n Create an instance of this annotation.\n */\n of(value) { return new Annotation(this, value); }\n}\n/**\nRepresentation of a type of state effect. Defined with\n[`StateEffect.define`](https://codemirror.net/6/docs/ref/#state.StateEffect^define).\n*/\nclass StateEffectType {\n /**\n @internal\n */\n constructor(\n // The `any` types in these function types are there to work\n // around TypeScript issue #37631, where the type guard on\n // `StateEffect.is` mysteriously stops working when these properly\n // have type `Value`.\n /**\n @internal\n */\n map) {\n this.map = map;\n }\n /**\n Create a [state effect](https://codemirror.net/6/docs/ref/#state.StateEffect) instance of this\n type.\n */\n of(value) { return new StateEffect(this, value); }\n}\n/**\nState effects can be used to represent additional effects\nassociated with a [transaction](https://codemirror.net/6/docs/ref/#state.Transaction.effects). They\nare often useful to model changes to custom [state\nfields](https://codemirror.net/6/docs/ref/#state.StateField), when those changes aren't implicit in\ndocument or selection changes.\n*/\nclass StateEffect {\n /**\n @internal\n */\n constructor(\n /**\n @internal\n */\n type, \n /**\n The value of this effect.\n */\n value) {\n this.type = type;\n this.value = value;\n }\n /**\n Map this effect through a position mapping. Will return\n `undefined` when that ends up deleting the effect.\n */\n map(mapping) {\n let mapped = this.type.map(this.value, mapping);\n return mapped === undefined ? undefined : mapped == this.value ? this : new StateEffect(this.type, mapped);\n }\n /**\n Tells you whether this effect object is of a given\n [type](https://codemirror.net/6/docs/ref/#state.StateEffectType).\n */\n is(type) { return this.type == type; }\n /**\n Define a new effect type. The type parameter indicates the type\n of values that his effect holds. It should be a type that\n doesn't include `undefined`, since that is used in\n [mapping](https://codemirror.net/6/docs/ref/#state.StateEffect.map) to indicate that an effect is\n removed.\n */\n static define(spec = {}) {\n return new StateEffectType(spec.map || (v => v));\n }\n /**\n Map an array of effects through a change set.\n */\n static mapEffects(effects, mapping) {\n if (!effects.length)\n return effects;\n let result = [];\n for (let effect of effects) {\n let mapped = effect.map(mapping);\n if (mapped)\n result.push(mapped);\n }\n return result;\n }\n}\n/**\nThis effect can be used to reconfigure the root extensions of\nthe editor. Doing this will discard any extensions\n[appended](https://codemirror.net/6/docs/ref/#state.StateEffect^appendConfig), but does not reset\nthe content of [reconfigured](https://codemirror.net/6/docs/ref/#state.Compartment.reconfigure)\ncompartments.\n*/\nStateEffect.reconfigure = /*@__PURE__*/StateEffect.define();\n/**\nAppend extensions to the top-level configuration of the editor.\n*/\nStateEffect.appendConfig = /*@__PURE__*/StateEffect.define();\n/**\nChanges to the editor state are grouped into transactions.\nTypically, a user action creates a single transaction, which may\ncontain any number of document changes, may change the selection,\nor have other effects. Create a transaction by calling\n[`EditorState.update`](https://codemirror.net/6/docs/ref/#state.EditorState.update), or immediately\ndispatch one by calling\n[`EditorView.dispatch`](https://codemirror.net/6/docs/ref/#view.EditorView.dispatch).\n*/\nclass Transaction {\n constructor(\n /**\n The state from which the transaction starts.\n */\n startState, \n /**\n The document changes made by this transaction.\n */\n changes, \n /**\n The selection set by this transaction, or undefined if it\n doesn't explicitly set a selection.\n */\n selection, \n /**\n The effects added to the transaction.\n */\n effects, \n /**\n @internal\n */\n annotations, \n /**\n Whether the selection should be scrolled into view after this\n transaction is dispatched.\n */\n scrollIntoView) {\n this.startState = startState;\n this.changes = changes;\n this.selection = selection;\n this.effects = effects;\n this.annotations = annotations;\n this.scrollIntoView = scrollIntoView;\n /**\n @internal\n */\n this._doc = null;\n /**\n @internal\n */\n this._state = null;\n if (selection)\n checkSelection(selection, changes.newLength);\n if (!annotations.some((a) => a.type == Transaction.time))\n this.annotations = annotations.concat(Transaction.time.of(Date.now()));\n }\n /**\n @internal\n */\n static create(startState, changes, selection, effects, annotations, scrollIntoView) {\n return new Transaction(startState, changes, selection, effects, annotations, scrollIntoView);\n }\n /**\n The new document produced by the transaction. Contrary to\n [`.state`](https://codemirror.net/6/docs/ref/#state.Transaction.state)`.doc`, accessing this won't\n force the entire new state to be computed right away, so it is\n recommended that [transaction\n filters](https://codemirror.net/6/docs/ref/#state.EditorState^transactionFilter) use this getter\n when they need to look at the new document.\n */\n get newDoc() {\n return this._doc || (this._doc = this.changes.apply(this.startState.doc));\n }\n /**\n The new selection produced by the transaction. If\n [`this.selection`](https://codemirror.net/6/docs/ref/#state.Transaction.selection) is undefined,\n this will [map](https://codemirror.net/6/docs/ref/#state.EditorSelection.map) the start state's\n current selection through the changes made by the transaction.\n */\n get newSelection() {\n return this.selection || this.startState.selection.map(this.changes);\n }\n /**\n The new state created by the transaction. Computed on demand\n (but retained for subsequent access), so it is recommended not to\n access it in [transaction\n filters](https://codemirror.net/6/docs/ref/#state.EditorState^transactionFilter) when possible.\n */\n get state() {\n if (!this._state)\n this.startState.applyTransaction(this);\n return this._state;\n }\n /**\n Get the value of the given annotation type, if any.\n */\n annotation(type) {\n for (let ann of this.annotations)\n if (ann.type == type)\n return ann.value;\n return undefined;\n }\n /**\n Indicates whether the transaction changed the document.\n */\n get docChanged() { return !this.changes.empty; }\n /**\n Indicates whether this transaction reconfigures the state\n (through a [configuration compartment](https://codemirror.net/6/docs/ref/#state.Compartment) or\n with a top-level configuration\n [effect](https://codemirror.net/6/docs/ref/#state.StateEffect^reconfigure).\n */\n get reconfigured() { return this.startState.config != this.state.config; }\n /**\n Returns true if the transaction has a [user\n event](https://codemirror.net/6/docs/ref/#state.Transaction^userEvent) annotation that is equal to\n or more specific than `event`. For example, if the transaction\n has `\"select.pointer\"` as user event, `\"select\"` and\n `\"select.pointer\"` will match it.\n */\n isUserEvent(event) {\n let e = this.annotation(Transaction.userEvent);\n return !!(e && (e == event || e.length > event.length && e.slice(0, event.length) == event && e[event.length] == \".\"));\n }\n}\n/**\nAnnotation used to store transaction timestamps. Automatically\nadded to every transaction, holding `Date.now()`.\n*/\nTransaction.time = /*@__PURE__*/Annotation.define();\n/**\nAnnotation used to associate a transaction with a user interface\nevent. Holds a string identifying the event, using a\ndot-separated format to support attaching more specific\ninformation. The events used by the core libraries are:\n\n - `\"input\"` when content is entered\n - `\"input.type\"` for typed input\n - `\"input.type.compose\"` for composition\n - `\"input.paste\"` for pasted input\n - `\"input.drop\"` when adding content with drag-and-drop\n - `\"input.complete\"` when autocompleting\n - `\"delete\"` when the user deletes content\n - `\"delete.selection\"` when deleting the selection\n - `\"delete.forward\"` when deleting forward from the selection\n - `\"delete.backward\"` when deleting backward from the selection\n - `\"delete.cut\"` when cutting to the clipboard\n - `\"move\"` when content is moved\n - `\"move.drop\"` when content is moved within the editor through drag-and-drop\n - `\"select\"` when explicitly changing the selection\n - `\"select.pointer\"` when selecting with a mouse or other pointing device\n - `\"undo\"` and `\"redo\"` for history actions\n\nUse [`isUserEvent`](https://codemirror.net/6/docs/ref/#state.Transaction.isUserEvent) to check\nwhether the annotation matches a given event.\n*/\nTransaction.userEvent = /*@__PURE__*/Annotation.define();\n/**\nAnnotation indicating whether a transaction should be added to\nthe undo history or not.\n*/\nTransaction.addToHistory = /*@__PURE__*/Annotation.define();\n/**\nAnnotation indicating (when present and true) that a transaction\nrepresents a change made by some other actor, not the user. This\nis used, for example, to tag other people's changes in\ncollaborative editing.\n*/\nTransaction.remote = /*@__PURE__*/Annotation.define();\nfunction joinRanges(a, b) {\n let result = [];\n for (let iA = 0, iB = 0;;) {\n let from, to;\n if (iA < a.length && (iB == b.length || b[iB] >= a[iA])) {\n from = a[iA++];\n to = a[iA++];\n }\n else if (iB < b.length) {\n from = b[iB++];\n to = b[iB++];\n }\n else\n return result;\n if (!result.length || result[result.length - 1] < from)\n result.push(from, to);\n else if (result[result.length - 1] < to)\n result[result.length - 1] = to;\n }\n}\nfunction mergeTransaction(a, b, sequential) {\n var _a;\n let mapForA, mapForB, changes;\n if (sequential) {\n mapForA = b.changes;\n mapForB = ChangeSet.empty(b.changes.length);\n changes = a.changes.compose(b.changes);\n }\n else {\n mapForA = b.changes.map(a.changes);\n mapForB = a.changes.mapDesc(b.changes, true);\n changes = a.changes.compose(mapForA);\n }\n return {\n changes,\n selection: b.selection ? b.selection.map(mapForB) : (_a = a.selection) === null || _a === void 0 ? void 0 : _a.map(mapForA),\n effects: StateEffect.mapEffects(a.effects, mapForA).concat(StateEffect.mapEffects(b.effects, mapForB)),\n annotations: a.annotations.length ? a.annotations.concat(b.annotations) : b.annotations,\n scrollIntoView: a.scrollIntoView || b.scrollIntoView\n };\n}\nfunction resolveTransactionInner(state, spec, docSize) {\n let sel = spec.selection, annotations = asArray(spec.annotations);\n if (spec.userEvent)\n annotations = annotations.concat(Transaction.userEvent.of(spec.userEvent));\n return {\n changes: spec.changes instanceof ChangeSet ? spec.changes\n : ChangeSet.of(spec.changes || [], docSize, state.facet(lineSeparator)),\n selection: sel && (sel instanceof EditorSelection ? sel : EditorSelection.single(sel.anchor, sel.head)),\n effects: asArray(spec.effects),\n annotations,\n scrollIntoView: !!spec.scrollIntoView\n };\n}\nfunction resolveTransaction(state, specs, filter) {\n let s = resolveTransactionInner(state, specs.length ? specs[0] : {}, state.doc.length);\n if (specs.length && specs[0].filter === false)\n filter = false;\n for (let i = 1; i < specs.length; i++) {\n if (specs[i].filter === false)\n filter = false;\n let seq = !!specs[i].sequential;\n s = mergeTransaction(s, resolveTransactionInner(state, specs[i], seq ? s.changes.newLength : state.doc.length), seq);\n }\n let tr = Transaction.create(state, s.changes, s.selection, s.effects, s.annotations, s.scrollIntoView);\n return extendTransaction(filter ? filterTransaction(tr) : tr);\n}\n// Finish a transaction by applying filters if necessary.\nfunction filterTransaction(tr) {\n let state = tr.startState;\n // Change filters\n let result = true;\n for (let filter of state.facet(changeFilter)) {\n let value = filter(tr);\n if (value === false) {\n result = false;\n break;\n }\n if (Array.isArray(value))\n result = result === true ? value : joinRanges(result, value);\n }\n if (result !== true) {\n let changes, back;\n if (result === false) {\n back = tr.changes.invertedDesc;\n changes = ChangeSet.empty(state.doc.length);\n }\n else {\n let filtered = tr.changes.filter(result);\n changes = filtered.changes;\n back = filtered.filtered.mapDesc(filtered.changes).invertedDesc;\n }\n tr = Transaction.create(state, changes, tr.selection && tr.selection.map(back), StateEffect.mapEffects(tr.effects, back), tr.annotations, tr.scrollIntoView);\n }\n // Transaction filters\n let filters = state.facet(transactionFilter);\n for (let i = filters.length - 1; i >= 0; i--) {\n let filtered = filters[i](tr);\n if (filtered instanceof Transaction)\n tr = filtered;\n else if (Array.isArray(filtered) && filtered.length == 1 && filtered[0] instanceof Transaction)\n tr = filtered[0];\n else\n tr = resolveTransaction(state, asArray(filtered), false);\n }\n return tr;\n}\nfunction extendTransaction(tr) {\n let state = tr.startState, extenders = state.facet(transactionExtender), spec = tr;\n for (let i = extenders.length - 1; i >= 0; i--) {\n let extension = extenders[i](tr);\n if (extension && Object.keys(extension).length)\n spec = mergeTransaction(spec, resolveTransactionInner(state, extension, tr.changes.newLength), true);\n }\n return spec == tr ? tr : Transaction.create(state, tr.changes, tr.selection, spec.effects, spec.annotations, spec.scrollIntoView);\n}\nconst none = [];\nfunction asArray(value) {\n return value == null ? none : Array.isArray(value) ? value : [value];\n}\n\n/**\nThe categories produced by a [character\ncategorizer](https://codemirror.net/6/docs/ref/#state.EditorState.charCategorizer). These are used\ndo things like selecting by word.\n*/\nvar CharCategory = /*@__PURE__*/(function (CharCategory) {\n /**\n Word characters.\n */\n CharCategory[CharCategory[\"Word\"] = 0] = \"Word\";\n /**\n Whitespace.\n */\n CharCategory[CharCategory[\"Space\"] = 1] = \"Space\";\n /**\n Anything else.\n */\n CharCategory[CharCategory[\"Other\"] = 2] = \"Other\";\nreturn CharCategory})(CharCategory || (CharCategory = {}));\nconst nonASCIISingleCaseWordChar = /[\\u00df\\u0587\\u0590-\\u05f4\\u0600-\\u06ff\\u3040-\\u309f\\u30a0-\\u30ff\\u3400-\\u4db5\\u4e00-\\u9fcc\\uac00-\\ud7af]/;\nlet wordChar;\ntry {\n wordChar = /*@__PURE__*/new RegExp(\"[\\\\p{Alphabetic}\\\\p{Number}_]\", \"u\");\n}\ncatch (_) { }\nfunction hasWordChar(str) {\n if (wordChar)\n return wordChar.test(str);\n for (let i = 0; i < str.length; i++) {\n let ch = str[i];\n if (/\\w/.test(ch) || ch > \"\\x80\" && (ch.toUpperCase() != ch.toLowerCase() || nonASCIISingleCaseWordChar.test(ch)))\n return true;\n }\n return false;\n}\nfunction makeCategorizer(wordChars) {\n return (char) => {\n if (!/\\S/.test(char))\n return CharCategory.Space;\n if (hasWordChar(char))\n return CharCategory.Word;\n for (let i = 0; i < wordChars.length; i++)\n if (char.indexOf(wordChars[i]) > -1)\n return CharCategory.Word;\n return CharCategory.Other;\n };\n}\n\n/**\nThe editor state class is a persistent (immutable) data structure.\nTo update a state, you [create](https://codemirror.net/6/docs/ref/#state.EditorState.update) a\n[transaction](https://codemirror.net/6/docs/ref/#state.Transaction), which produces a _new_ state\ninstance, without modifying the original object.\n\nAs such, _never_ mutate properties of a state directly. That'll\njust break things.\n*/\nclass EditorState {\n constructor(\n /**\n @internal\n */\n config, \n /**\n The current document.\n */\n doc, \n /**\n The current selection.\n */\n selection, \n /**\n @internal\n */\n values, computeSlot, tr) {\n this.config = config;\n this.doc = doc;\n this.selection = selection;\n this.values = values;\n this.status = config.statusTemplate.slice();\n this.computeSlot = computeSlot;\n // Fill in the computed state immediately, so that further queries\n // for it made during the update return this state\n if (tr)\n tr._state = this;\n for (let i = 0; i < this.config.dynamicSlots.length; i++)\n ensureAddr(this, i << 1);\n this.computeSlot = null;\n }\n field(field, require = true) {\n let addr = this.config.address[field.id];\n if (addr == null) {\n if (require)\n throw new RangeError(\"Field is not present in this state\");\n return undefined;\n }\n ensureAddr(this, addr);\n return getAddr(this, addr);\n }\n /**\n Create a [transaction](https://codemirror.net/6/docs/ref/#state.Transaction) that updates this\n state. Any number of [transaction specs](https://codemirror.net/6/docs/ref/#state.TransactionSpec)\n can be passed. Unless\n [`sequential`](https://codemirror.net/6/docs/ref/#state.TransactionSpec.sequential) is set, the\n [changes](https://codemirror.net/6/docs/ref/#state.TransactionSpec.changes) (if any) of each spec\n are assumed to start in the _current_ document (not the document\n produced by previous specs), and its\n [selection](https://codemirror.net/6/docs/ref/#state.TransactionSpec.selection) and\n [effects](https://codemirror.net/6/docs/ref/#state.TransactionSpec.effects) are assumed to refer\n to the document created by its _own_ changes. The resulting\n transaction contains the combined effect of all the different\n specs. For [selection](https://codemirror.net/6/docs/ref/#state.TransactionSpec.selection), later\n specs take precedence over earlier ones.\n */\n update(...specs) {\n return resolveTransaction(this, specs, true);\n }\n /**\n @internal\n */\n applyTransaction(tr) {\n let conf = this.config, { base, compartments } = conf;\n for (let effect of tr.effects) {\n if (effect.is(Compartment.reconfigure)) {\n if (conf) {\n compartments = new Map;\n conf.compartments.forEach((val, key) => compartments.set(key, val));\n conf = null;\n }\n compartments.set(effect.value.compartment, effect.value.extension);\n }\n else if (effect.is(StateEffect.reconfigure)) {\n conf = null;\n base = effect.value;\n }\n else if (effect.is(StateEffect.appendConfig)) {\n conf = null;\n base = asArray(base).concat(effect.value);\n }\n }\n let startValues;\n if (!conf) {\n conf = Configuration.resolve(base, compartments, this);\n let intermediateState = new EditorState(conf, this.doc, this.selection, conf.dynamicSlots.map(() => null), (state, slot) => slot.reconfigure(state, this), null);\n startValues = intermediateState.values;\n }\n else {\n startValues = tr.startState.values.slice();\n }\n let selection = tr.startState.facet(allowMultipleSelections) ? tr.newSelection : tr.newSelection.asSingle();\n new EditorState(conf, tr.newDoc, selection, startValues, (state, slot) => slot.update(state, tr), tr);\n }\n /**\n Create a [transaction spec](https://codemirror.net/6/docs/ref/#state.TransactionSpec) that\n replaces every selection range with the given content.\n */\n replaceSelection(text) {\n if (typeof text == \"string\")\n text = this.toText(text);\n return this.changeByRange(range => ({ changes: { from: range.from, to: range.to, insert: text },\n range: EditorSelection.cursor(range.from + text.length) }));\n }\n /**\n Create a set of changes and a new selection by running the given\n function for each range in the active selection. The function\n can return an optional set of changes (in the coordinate space\n of the start document), plus an updated range (in the coordinate\n space of the document produced by the call's own changes). This\n method will merge all the changes and ranges into a single\n changeset and selection, and return it as a [transaction\n spec](https://codemirror.net/6/docs/ref/#state.TransactionSpec), which can be passed to\n [`update`](https://codemirror.net/6/docs/ref/#state.EditorState.update).\n */\n changeByRange(f) {\n let sel = this.selection;\n let result1 = f(sel.ranges[0]);\n let changes = this.changes(result1.changes), ranges = [result1.range];\n let effects = asArray(result1.effects);\n for (let i = 1; i < sel.ranges.length; i++) {\n let result = f(sel.ranges[i]);\n let newChanges = this.changes(result.changes), newMapped = newChanges.map(changes);\n for (let j = 0; j < i; j++)\n ranges[j] = ranges[j].map(newMapped);\n let mapBy = changes.mapDesc(newChanges, true);\n ranges.push(result.range.map(mapBy));\n changes = changes.compose(newMapped);\n effects = StateEffect.mapEffects(effects, newMapped).concat(StateEffect.mapEffects(asArray(result.effects), mapBy));\n }\n return {\n changes,\n selection: EditorSelection.create(ranges, sel.mainIndex),\n effects\n };\n }\n /**\n Create a [change set](https://codemirror.net/6/docs/ref/#state.ChangeSet) from the given change\n description, taking the state's document length and line\n separator into account.\n */\n changes(spec = []) {\n if (spec instanceof ChangeSet)\n return spec;\n return ChangeSet.of(spec, this.doc.length, this.facet(EditorState.lineSeparator));\n }\n /**\n Using the state's [line\n separator](https://codemirror.net/6/docs/ref/#state.EditorState^lineSeparator), create a\n [`Text`](https://codemirror.net/6/docs/ref/#state.Text) instance from the given string.\n */\n toText(string) {\n return Text.of(string.split(this.facet(EditorState.lineSeparator) || DefaultSplit));\n }\n /**\n Return the given range of the document as a string.\n */\n sliceDoc(from = 0, to = this.doc.length) {\n return this.doc.sliceString(from, to, this.lineBreak);\n }\n /**\n Get the value of a state [facet](https://codemirror.net/6/docs/ref/#state.Facet).\n */\n facet(facet) {\n let addr = this.config.address[facet.id];\n if (addr == null)\n return facet.default;\n ensureAddr(this, addr);\n return getAddr(this, addr);\n }\n /**\n Convert this state to a JSON-serializable object. When custom\n fields should be serialized, you can pass them in as an object\n mapping property names (in the resulting object, which should\n not use `doc` or `selection`) to fields.\n */\n toJSON(fields) {\n let result = {\n doc: this.sliceDoc(),\n selection: this.selection.toJSON()\n };\n if (fields)\n for (let prop in fields) {\n let value = fields[prop];\n if (value instanceof StateField && this.config.address[value.id] != null)\n result[prop] = value.spec.toJSON(this.field(fields[prop]), this);\n }\n return result;\n }\n /**\n Deserialize a state from its JSON representation. When custom\n fields should be deserialized, pass the same object you passed\n to [`toJSON`](https://codemirror.net/6/docs/ref/#state.EditorState.toJSON) when serializing as\n third argument.\n */\n static fromJSON(json, config = {}, fields) {\n if (!json || typeof json.doc != \"string\")\n throw new RangeError(\"Invalid JSON representation for EditorState\");\n let fieldInit = [];\n if (fields)\n for (let prop in fields) {\n if (Object.prototype.hasOwnProperty.call(json, prop)) {\n let field = fields[prop], value = json[prop];\n fieldInit.push(field.init(state => field.spec.fromJSON(value, state)));\n }\n }\n return EditorState.create({\n doc: json.doc,\n selection: EditorSelection.fromJSON(json.selection),\n extensions: config.extensions ? fieldInit.concat([config.extensions]) : fieldInit\n });\n }\n /**\n Create a new state. You'll usually only need this when\n initializing an editor—updated states are created by applying\n transactions.\n */\n static create(config = {}) {\n let configuration = Configuration.resolve(config.extensions || [], new Map);\n let doc = config.doc instanceof Text ? config.doc\n : Text.of((config.doc || \"\").split(configuration.staticFacet(EditorState.lineSeparator) || DefaultSplit));\n let selection = !config.selection ? EditorSelection.single(0)\n : config.selection instanceof EditorSelection ? config.selection\n : EditorSelection.single(config.selection.anchor, config.selection.head);\n checkSelection(selection, doc.length);\n if (!configuration.staticFacet(allowMultipleSelections))\n selection = selection.asSingle();\n return new EditorState(configuration, doc, selection, configuration.dynamicSlots.map(() => null), (state, slot) => slot.create(state), null);\n }\n /**\n The size (in columns) of a tab in the document, determined by\n the [`tabSize`](https://codemirror.net/6/docs/ref/#state.EditorState^tabSize) facet.\n */\n get tabSize() { return this.facet(EditorState.tabSize); }\n /**\n Get the proper [line-break](https://codemirror.net/6/docs/ref/#state.EditorState^lineSeparator)\n string for this state.\n */\n get lineBreak() { return this.facet(EditorState.lineSeparator) || \"\\n\"; }\n /**\n Returns true when the editor is\n [configured](https://codemirror.net/6/docs/ref/#state.EditorState^readOnly) to be read-only.\n */\n get readOnly() { return this.facet(readOnly); }\n /**\n Look up a translation for the given phrase (via the\n [`phrases`](https://codemirror.net/6/docs/ref/#state.EditorState^phrases) facet), or return the\n original string if no translation is found.\n \n If additional arguments are passed, they will be inserted in\n place of markers like `$1` (for the first value) and `$2`, etc.\n A single `$` is equivalent to `$1`, and `$$` will produce a\n literal dollar sign.\n */\n phrase(phrase, ...insert) {\n for (let map of this.facet(EditorState.phrases))\n if (Object.prototype.hasOwnProperty.call(map, phrase)) {\n phrase = map[phrase];\n break;\n }\n if (insert.length)\n phrase = phrase.replace(/\\$(\\$|\\d*)/g, (m, i) => {\n if (i == \"$\")\n return \"$\";\n let n = +(i || 1);\n return !n || n > insert.length ? m : insert[n - 1];\n });\n return phrase;\n }\n /**\n Find the values for a given language data field, provided by the\n the [`languageData`](https://codemirror.net/6/docs/ref/#state.EditorState^languageData) facet.\n \n Examples of language data fields are...\n \n - [`\"commentTokens\"`](https://codemirror.net/6/docs/ref/#commands.CommentTokens) for specifying\n comment syntax.\n - [`\"autocomplete\"`](https://codemirror.net/6/docs/ref/#autocomplete.autocompletion^config.override)\n for providing language-specific completion sources.\n - [`\"wordChars\"`](https://codemirror.net/6/docs/ref/#state.EditorState.charCategorizer) for adding\n characters that should be considered part of words in this\n language.\n - [`\"closeBrackets\"`](https://codemirror.net/6/docs/ref/#autocomplete.CloseBracketConfig) controls\n bracket closing behavior.\n */\n languageDataAt(name, pos, side = -1) {\n let values = [];\n for (let provider of this.facet(languageData)) {\n for (let result of provider(this, pos, side)) {\n if (Object.prototype.hasOwnProperty.call(result, name))\n values.push(result[name]);\n }\n }\n return values;\n }\n /**\n Return a function that can categorize strings (expected to\n represent a single [grapheme cluster](https://codemirror.net/6/docs/ref/#state.findClusterBreak))\n into one of:\n \n - Word (contains an alphanumeric character or a character\n explicitly listed in the local language's `\"wordChars\"`\n language data, which should be a string)\n - Space (contains only whitespace)\n - Other (anything else)\n */\n charCategorizer(at) {\n let chars = this.languageDataAt(\"wordChars\", at);\n return makeCategorizer(chars.length ? chars[0] : \"\");\n }\n /**\n Find the word at the given position, meaning the range\n containing all [word](https://codemirror.net/6/docs/ref/#state.CharCategory.Word) characters\n around it. If no word characters are adjacent to the position,\n this returns null.\n */\n wordAt(pos) {\n let { text, from, length } = this.doc.lineAt(pos);\n let cat = this.charCategorizer(pos);\n let start = pos - from, end = pos - from;\n while (start > 0) {\n let prev = findClusterBreak(text, start, false);\n if (cat(text.slice(prev, start)) != CharCategory.Word)\n break;\n start = prev;\n }\n while (end < length) {\n let next = findClusterBreak(text, end);\n if (cat(text.slice(end, next)) != CharCategory.Word)\n break;\n end = next;\n }\n return start == end ? null : EditorSelection.range(start + from, end + from);\n }\n}\n/**\nA facet that, when enabled, causes the editor to allow multiple\nranges to be selected. Be careful though, because by default the\neditor relies on the native DOM selection, which cannot handle\nmultiple selections. An extension like\n[`drawSelection`](https://codemirror.net/6/docs/ref/#view.drawSelection) can be used to make\nsecondary selections visible to the user.\n*/\nEditorState.allowMultipleSelections = allowMultipleSelections;\n/**\nConfigures the tab size to use in this state. The first\n(highest-precedence) value of the facet is used. If no value is\ngiven, this defaults to 4.\n*/\nEditorState.tabSize = /*@__PURE__*/Facet.define({\n combine: values => values.length ? values[0] : 4\n});\n/**\nThe line separator to use. By default, any of `\"\\n\"`, `\"\\r\\n\"`\nand `\"\\r\"` is treated as a separator when splitting lines, and\nlines are joined with `\"\\n\"`.\n\nWhen you configure a value here, only that precise separator\nwill be used, allowing you to round-trip documents through the\neditor without normalizing line separators.\n*/\nEditorState.lineSeparator = lineSeparator;\n/**\nThis facet controls the value of the\n[`readOnly`](https://codemirror.net/6/docs/ref/#state.EditorState.readOnly) getter, which is\nconsulted by commands and extensions that implement editing\nfunctionality to determine whether they should apply. It\ndefaults to false, but when its highest-precedence value is\n`true`, such functionality disables itself.\n\nNot to be confused with\n[`EditorView.editable`](https://codemirror.net/6/docs/ref/#view.EditorView^editable), which\ncontrols whether the editor's DOM is set to be editable (and\nthus focusable).\n*/\nEditorState.readOnly = readOnly;\n/**\nRegisters translation phrases. The\n[`phrase`](https://codemirror.net/6/docs/ref/#state.EditorState.phrase) method will look through\nall objects registered with this facet to find translations for\nits argument.\n*/\nEditorState.phrases = /*@__PURE__*/Facet.define({\n compare(a, b) {\n let kA = Object.keys(a), kB = Object.keys(b);\n return kA.length == kB.length && kA.every(k => a[k] == b[k]);\n }\n});\n/**\nA facet used to register [language\ndata](https://codemirror.net/6/docs/ref/#state.EditorState.languageDataAt) providers.\n*/\nEditorState.languageData = languageData;\n/**\nFacet used to register change filters, which are called for each\ntransaction (unless explicitly\n[disabled](https://codemirror.net/6/docs/ref/#state.TransactionSpec.filter)), and can suppress\npart of the transaction's changes.\n\nSuch a function can return `true` to indicate that it doesn't\nwant to do anything, `false` to completely stop the changes in\nthe transaction, or a set of ranges in which changes should be\nsuppressed. Such ranges are represented as an array of numbers,\nwith each pair of two numbers indicating the start and end of a\nrange. So for example `[10, 20, 100, 110]` suppresses changes\nbetween 10 and 20, and between 100 and 110.\n*/\nEditorState.changeFilter = changeFilter;\n/**\nFacet used to register a hook that gets a chance to update or\nreplace transaction specs before they are applied. This will\nonly be applied for transactions that don't have\n[`filter`](https://codemirror.net/6/docs/ref/#state.TransactionSpec.filter) set to `false`. You\ncan either return a single transaction spec (possibly the input\ntransaction), or an array of specs (which will be combined in\nthe same way as the arguments to\n[`EditorState.update`](https://codemirror.net/6/docs/ref/#state.EditorState.update)).\n\nWhen possible, it is recommended to avoid accessing\n[`Transaction.state`](https://codemirror.net/6/docs/ref/#state.Transaction.state) in a filter,\nsince it will force creation of a state that will then be\ndiscarded again, if the transaction is actually filtered.\n\n(This functionality should be used with care. Indiscriminately\nmodifying transaction is likely to break something or degrade\nthe user experience.)\n*/\nEditorState.transactionFilter = transactionFilter;\n/**\nThis is a more limited form of\n[`transactionFilter`](https://codemirror.net/6/docs/ref/#state.EditorState^transactionFilter),\nwhich can only add\n[annotations](https://codemirror.net/6/docs/ref/#state.TransactionSpec.annotations) and\n[effects](https://codemirror.net/6/docs/ref/#state.TransactionSpec.effects). _But_, this type\nof filter runs even if the transaction has disabled regular\n[filtering](https://codemirror.net/6/docs/ref/#state.TransactionSpec.filter), making it suitable\nfor effects that don't need to touch the changes or selection,\nbut do want to process every transaction.\n\nExtenders run _after_ filters, when both are present.\n*/\nEditorState.transactionExtender = transactionExtender;\nCompartment.reconfigure = /*@__PURE__*/StateEffect.define();\n\n/**\nUtility function for combining behaviors to fill in a config\nobject from an array of provided configs. `defaults` should hold\ndefault values for all optional fields in `Config`.\n\nThe function will, by default, error\nwhen a field gets two values that aren't `===`-equal, but you can\nprovide combine functions per field to do something else.\n*/\nfunction combineConfig(configs, defaults, // Should hold only the optional properties of Config, but I haven't managed to express that\ncombine = {}) {\n let result = {};\n for (let config of configs)\n for (let key of Object.keys(config)) {\n let value = config[key], current = result[key];\n if (current === undefined)\n result[key] = value;\n else if (current === value || value === undefined) ; // No conflict\n else if (Object.hasOwnProperty.call(combine, key))\n result[key] = combine[key](current, value);\n else\n throw new Error(\"Config merge conflict for field \" + key);\n }\n for (let key in defaults)\n if (result[key] === undefined)\n result[key] = defaults[key];\n return result;\n}\n\n/**\nEach range is associated with a value, which must inherit from\nthis class.\n*/\nclass RangeValue {\n /**\n Compare this value with another value. Used when comparing\n rangesets. The default implementation compares by identity.\n Unless you are only creating a fixed number of unique instances\n of your value type, it is a good idea to implement this\n properly.\n */\n eq(other) { return this == other; }\n /**\n Create a [range](https://codemirror.net/6/docs/ref/#state.Range) with this value.\n */\n range(from, to = from) { return Range.create(from, to, this); }\n}\nRangeValue.prototype.startSide = RangeValue.prototype.endSide = 0;\nRangeValue.prototype.point = false;\nRangeValue.prototype.mapMode = MapMode.TrackDel;\nfunction cmpVal(a, b) {\n return a == b || a.constructor == b.constructor && a.eq(b);\n}\n/**\nA range associates a value with a range of positions.\n*/\nclass Range {\n constructor(\n /**\n The range's start position.\n */\n from, \n /**\n Its end position.\n */\n to, \n /**\n The value associated with this range.\n */\n value) {\n this.from = from;\n this.to = to;\n this.value = value;\n }\n /**\n @internal\n */\n static create(from, to, value) {\n return new Range(from, to, value);\n }\n}\nfunction cmpRange(a, b) {\n return a.from - b.from || a.value.startSide - b.value.startSide;\n}\nclass Chunk {\n constructor(from, to, value, \n // Chunks are marked with the largest point that occurs\n // in them (or -1 for no points), so that scans that are\n // only interested in points (such as the\n // heightmap-related logic) can skip range-only chunks.\n maxPoint) {\n this.from = from;\n this.to = to;\n this.value = value;\n this.maxPoint = maxPoint;\n }\n get length() { return last(this.to); }\n // Find the index of the given position and side. Use the ranges'\n // `from` pos when `end == false`, `to` when `end == true`.\n findIndex(pos, side, end, startAt = 0) {\n let arr = end ? this.to : this.from;\n for (let lo = startAt, hi = arr.length;;) {\n if (lo == hi)\n return lo;\n let mid = (lo + hi) >> 1;\n let diff = arr[mid] - pos || (end ? this.value[mid].endSide : this.value[mid].startSide) - side;\n if (mid == lo)\n return diff >= 0 ? lo : hi;\n if (diff >= 0)\n hi = mid;\n else\n lo = mid + 1;\n }\n }\n between(offset, from, to, f) {\n for (let i = this.findIndex(from, -1000000000 /* C.Far */, true), e = this.findIndex(to, 1000000000 /* C.Far */, false, i); i < e; i++)\n if (f(this.from[i] + offset, this.to[i] + offset, this.value[i]) === false)\n return false;\n }\n map(offset, changes, basePos, baseSide, spill) {\n let value = [], from = [], to = [], newPos = -1, maxPoint = -1;\n iter: for (let i = 0; i < this.value.length; i++) {\n let val = this.value[i], curFrom = this.from[i] + offset, curTo = this.to[i] + offset, newFrom, newTo;\n if (curFrom == curTo) {\n let mapped = changes.mapPos(curFrom, val.startSide, val.mapMode);\n if (mapped == null)\n continue;\n newFrom = newTo = mapped;\n if (val.startSide != val.endSide) {\n newTo = changes.mapPos(curFrom, val.endSide);\n if (newTo < newFrom)\n continue;\n }\n }\n else {\n newFrom = changes.mapPos(curFrom, val.startSide);\n newTo = changes.mapPos(curTo, val.endSide);\n if (newFrom > newTo || newFrom == newTo && val.startSide > 0 && val.endSide <= 0)\n continue;\n }\n if ((newTo - newFrom || val.endSide - val.startSide) < 0)\n continue;\n if (newPos < 0)\n newPos = newFrom;\n if (val.point)\n maxPoint = Math.max(maxPoint, newTo - newFrom);\n if ((newFrom - basePos || val.startSide - baseSide) >= 0) {\n value.push(val);\n from.push(newFrom - newPos);\n to.push(newTo - newPos);\n basePos = newTo;\n baseSide = val.endSide;\n }\n else {\n if (newFrom == newTo) { // Try to reorder points to fit in here\n for (let i = value.length; i > 0; i--) {\n if ((newFrom - (to[i - 1] + newPos) || val.startSide - value[i - 1].endSide) >= 0) {\n value.splice(i, 0, val);\n from.splice(i, 0, newFrom - newPos);\n to.splice(i, 0, newTo - newPos);\n continue iter;\n }\n if ((newFrom - (from[i - 1] + newPos) || val.endSide - value[i - 1].startSide) > 0)\n break;\n }\n }\n // Otherwise, spill into a new layer\n spill(newFrom, newTo, val);\n }\n }\n return { mapped: value.length ? new Chunk(from, to, value, maxPoint) : null, pos: newPos };\n }\n}\n/**\nA range set stores a collection of [ranges](https://codemirror.net/6/docs/ref/#state.Range) in a\nway that makes them efficient to [map](https://codemirror.net/6/docs/ref/#state.RangeSet.map) and\n[update](https://codemirror.net/6/docs/ref/#state.RangeSet.update). This is an immutable data\nstructure.\n*/\nclass RangeSet {\n constructor(\n /**\n @internal\n */\n chunkPos, \n /**\n @internal\n */\n chunk, \n /**\n @internal\n */\n nextLayer, \n /**\n @internal\n */\n maxPoint) {\n this.chunkPos = chunkPos;\n this.chunk = chunk;\n this.nextLayer = nextLayer;\n this.maxPoint = maxPoint;\n }\n /**\n @internal\n */\n static create(chunkPos, chunk, nextLayer, maxPoint) {\n return new RangeSet(chunkPos, chunk, nextLayer, maxPoint);\n }\n /**\n @internal\n */\n get length() {\n let last = this.chunk.length - 1;\n return last < 0 ? 0 : Math.max(this.chunkEnd(last), this.nextLayer.length);\n }\n /**\n The number of ranges in the set.\n */\n get size() {\n if (this.isEmpty)\n return 0;\n let size = this.nextLayer.size;\n for (let chunk of this.chunk)\n size += chunk.value.length;\n return size;\n }\n /**\n @internal\n */\n chunkEnd(index) {\n return this.chunkPos[index] + this.chunk[index].length;\n }\n /**\n Update the range set, optionally adding new ranges or filtering\n out existing ones.\n \n (Note: The type parameter is just there as a kludge to work\n around TypeScript variance issues that prevented `RangeSet`\n from being a subtype of `RangeSet` when `X` is a subtype of\n `Y`.)\n */\n update(updateSpec) {\n let { add = [], sort = false, filterFrom = 0, filterTo = this.length } = updateSpec;\n let filter = updateSpec.filter;\n if (add.length == 0 && !filter)\n return this;\n if (sort)\n add = add.slice().sort(cmpRange);\n if (this.isEmpty)\n return add.length ? RangeSet.of(add) : this;\n let cur = new LayerCursor(this, null, -1).goto(0), i = 0, spill = [];\n let builder = new RangeSetBuilder();\n while (cur.value || i < add.length) {\n if (i < add.length && (cur.from - add[i].from || cur.startSide - add[i].value.startSide) >= 0) {\n let range = add[i++];\n if (!builder.addInner(range.from, range.to, range.value, false))\n spill.push(range);\n }\n else if (cur.rangeIndex == 1 && cur.chunkIndex < this.chunk.length &&\n (i == add.length || this.chunkEnd(cur.chunkIndex) < add[i].from) &&\n (!filter || filterFrom > this.chunkEnd(cur.chunkIndex) || filterTo < this.chunkPos[cur.chunkIndex]) &&\n builder.addChunk(this.chunkPos[cur.chunkIndex], this.chunk[cur.chunkIndex])) {\n cur.nextChunk();\n }\n else {\n if (!filter || filterFrom > cur.to || filterTo < cur.from || filter(cur.from, cur.to, cur.value)) {\n if (!builder.addInner(cur.from, cur.to, cur.value, false))\n spill.push(Range.create(cur.from, cur.to, cur.value));\n }\n cur.next();\n }\n }\n return builder.finishInner(this.nextLayer.isEmpty && !spill.length ? RangeSet.empty\n : this.nextLayer.update({ add: spill, filter, filterFrom, filterTo }));\n }\n /**\n Map this range set through a set of changes, return the new set.\n */\n map(changes) {\n if (changes.empty || this.isEmpty)\n return this;\n let chunks = [], chunkPos = [], maxPoint = -1;\n let spilled;\n let spill = (from, to, value) => {\n if (!spilled)\n spilled = new RangeSetBuilder();\n spilled.addRange(from, to, value, false);\n };\n for (let i = 0; i < this.chunk.length; i++) {\n let start = this.chunkPos[i], chunk = this.chunk[i];\n let touch = changes.touchesRange(start, start + chunk.length);\n if (touch === false) {\n maxPoint = Math.max(maxPoint, chunk.maxPoint);\n chunks.push(chunk);\n chunkPos.push(changes.mapPos(start));\n }\n else if (touch === true) {\n let [prevPos, prevSide] = !chunks.length ? [-1, -1]\n : [last(chunkPos) + last(chunks).length, last(last(chunks).value).endSide];\n let { mapped, pos } = chunk.map(start, changes, prevPos, prevSide, spill);\n if (mapped) {\n maxPoint = Math.max(maxPoint, mapped.maxPoint);\n chunks.push(mapped);\n chunkPos.push(pos);\n }\n }\n }\n let next = this.nextLayer.map(changes);\n if (spilled)\n next = spilled.finishInner(next);\n return chunks.length == 0 ? next : new RangeSet(chunkPos, chunks, next || RangeSet.empty, maxPoint);\n }\n /**\n Iterate over the ranges that touch the region `from` to `to`,\n calling `f` for each. There is no guarantee that the ranges will\n be reported in any specific order. When the callback returns\n `false`, iteration stops.\n */\n between(from, to, f) {\n if (this.isEmpty)\n return;\n for (let i = 0; i < this.chunk.length; i++) {\n let start = this.chunkPos[i], chunk = this.chunk[i];\n if (to >= start && from <= start + chunk.length &&\n chunk.between(start, from - start, to - start, f) === false)\n return;\n }\n this.nextLayer.between(from, to, f);\n }\n /**\n Iterate over the ranges in this set, in order, including all\n ranges that end at or after `from`.\n */\n iter(from = 0) {\n return HeapCursor.from([this]).goto(from);\n }\n /**\n @internal\n */\n get isEmpty() { return this.nextLayer == this; }\n /**\n Iterate over the ranges in a collection of sets, in order,\n starting from `from`.\n */\n static iter(sets, from = 0) {\n return HeapCursor.from(sets).goto(from);\n }\n /**\n Iterate over two groups of sets, calling methods on `comparator`\n to notify it of possible differences.\n */\n static compare(oldSets, newSets, \n /**\n This indicates how the underlying data changed between these\n ranges, and is needed to synchronize the iteration.\n */\n textDiff, comparator, \n /**\n Can be used to ignore all non-point ranges, and points below\n the given size. When -1, all ranges are compared.\n */\n minPointSize = -1) {\n let a = oldSets.filter(set => set.maxPoint > 0 || !set.isEmpty && set.maxPoint >= minPointSize);\n let b = newSets.filter(set => set.maxPoint > 0 || !set.isEmpty && set.maxPoint >= minPointSize);\n let sharedChunks = findSharedChunks(a, b, textDiff);\n let sideA = new SpanCursor(a, sharedChunks, minPointSize);\n let sideB = new SpanCursor(b, sharedChunks, minPointSize);\n textDiff.iterGaps((fromA, fromB, length) => compare(sideA, fromA, sideB, fromB, length, comparator));\n if (textDiff.empty && textDiff.length == 0)\n compare(sideA, 0, sideB, 0, 0, comparator);\n }\n /**\n Compare the contents of two groups of range sets, returning true\n if they are equivalent in the given range.\n */\n static eq(oldSets, newSets, from = 0, to) {\n if (to == null)\n to = 1000000000 /* C.Far */ - 1;\n let a = oldSets.filter(set => !set.isEmpty && newSets.indexOf(set) < 0);\n let b = newSets.filter(set => !set.isEmpty && oldSets.indexOf(set) < 0);\n if (a.length != b.length)\n return false;\n if (!a.length)\n return true;\n let sharedChunks = findSharedChunks(a, b);\n let sideA = new SpanCursor(a, sharedChunks, 0).goto(from), sideB = new SpanCursor(b, sharedChunks, 0).goto(from);\n for (;;) {\n if (sideA.to != sideB.to ||\n !sameValues(sideA.active, sideB.active) ||\n sideA.point && (!sideB.point || !cmpVal(sideA.point, sideB.point)))\n return false;\n if (sideA.to > to)\n return true;\n sideA.next();\n sideB.next();\n }\n }\n /**\n Iterate over a group of range sets at the same time, notifying\n the iterator about the ranges covering every given piece of\n content. Returns the open count (see\n [`SpanIterator.span`](https://codemirror.net/6/docs/ref/#state.SpanIterator.span)) at the end\n of the iteration.\n */\n static spans(sets, from, to, iterator, \n /**\n When given and greater than -1, only points of at least this\n size are taken into account.\n */\n minPointSize = -1) {\n let cursor = new SpanCursor(sets, null, minPointSize).goto(from), pos = from;\n let openRanges = cursor.openStart;\n for (;;) {\n let curTo = Math.min(cursor.to, to);\n if (cursor.point) {\n let active = cursor.activeForPoint(cursor.to);\n let openCount = cursor.pointFrom < from ? active.length + 1\n : cursor.point.startSide < 0 ? active.length\n : Math.min(active.length, openRanges);\n iterator.point(pos, curTo, cursor.point, active, openCount, cursor.pointRank);\n openRanges = Math.min(cursor.openEnd(curTo), active.length);\n }\n else if (curTo > pos) {\n iterator.span(pos, curTo, cursor.active, openRanges);\n openRanges = cursor.openEnd(curTo);\n }\n if (cursor.to > to)\n return openRanges + (cursor.point && cursor.to > to ? 1 : 0);\n pos = cursor.to;\n cursor.next();\n }\n }\n /**\n Create a range set for the given range or array of ranges. By\n default, this expects the ranges to be _sorted_ (by start\n position and, if two start at the same position,\n `value.startSide`). You can pass `true` as second argument to\n cause the method to sort them.\n */\n static of(ranges, sort = false) {\n let build = new RangeSetBuilder();\n for (let range of ranges instanceof Range ? [ranges] : sort ? lazySort(ranges) : ranges)\n build.add(range.from, range.to, range.value);\n return build.finish();\n }\n /**\n Join an array of range sets into a single set.\n */\n static join(sets) {\n if (!sets.length)\n return RangeSet.empty;\n let result = last(sets);\n for (let i = sets.length - 2; i >= 0; i--) {\n for (let layer = sets[i]; layer != RangeSet.empty; layer = layer.nextLayer)\n result = new RangeSet(layer.chunkPos, layer.chunk, result, Math.max(layer.maxPoint, result.maxPoint));\n }\n return result;\n }\n}\n/**\nThe empty set of ranges.\n*/\nRangeSet.empty = /*@__PURE__*/new RangeSet([], [], null, -1);\nfunction last(arr) { return arr[arr.length - 1]; }\nfunction lazySort(ranges) {\n if (ranges.length > 1)\n for (let prev = ranges[0], i = 1; i < ranges.length; i++) {\n let cur = ranges[i];\n if (cmpRange(prev, cur) > 0)\n return ranges.slice().sort(cmpRange);\n prev = cur;\n }\n return ranges;\n}\nRangeSet.empty.nextLayer = RangeSet.empty;\n/**\nA range set builder is a data structure that helps build up a\n[range set](https://codemirror.net/6/docs/ref/#state.RangeSet) directly, without first allocating\nan array of [`Range`](https://codemirror.net/6/docs/ref/#state.Range) objects.\n*/\nclass RangeSetBuilder {\n finishChunk(newArrays) {\n this.chunks.push(new Chunk(this.from, this.to, this.value, this.maxPoint));\n this.chunkPos.push(this.chunkStart);\n this.chunkStart = -1;\n this.setMaxPoint = Math.max(this.setMaxPoint, this.maxPoint);\n this.maxPoint = -1;\n if (newArrays) {\n this.from = [];\n this.to = [];\n this.value = [];\n }\n }\n /**\n Create an empty builder.\n */\n constructor() {\n this.chunks = [];\n this.chunkPos = [];\n this.chunkStart = -1;\n this.last = null;\n this.lastFrom = -1000000000 /* C.Far */;\n this.lastTo = -1000000000 /* C.Far */;\n this.from = [];\n this.to = [];\n this.value = [];\n this.maxPoint = -1;\n this.setMaxPoint = -1;\n this.nextLayer = null;\n }\n /**\n Add a range. Ranges should be added in sorted (by `from` and\n `value.startSide`) order.\n */\n add(from, to, value) { this.addRange(from, to, value, true); }\n /**\n @internal\n */\n addRange(from, to, value, strict) {\n if (!this.addInner(from, to, value, strict))\n (this.nextLayer || (this.nextLayer = new RangeSetBuilder)).addRange(from, to, value, strict);\n }\n /**\n @internal\n */\n addInner(from, to, value, strict) {\n let diff = from - this.lastTo || value.startSide - this.last.endSide;\n if (strict && diff <= 0 && (from - this.lastFrom || value.startSide - this.last.startSide) < 0)\n throw new Error(\"Ranges must be added sorted by `from` position and `startSide`\");\n if (diff < 0)\n return false;\n if (this.from.length == 250 /* C.ChunkSize */)\n this.finishChunk(true);\n if (this.chunkStart < 0)\n this.chunkStart = from;\n this.from.push(from - this.chunkStart);\n this.to.push(to - this.chunkStart);\n this.last = value;\n this.lastFrom = from;\n this.lastTo = to;\n this.value.push(value);\n if (value.point)\n this.maxPoint = Math.max(this.maxPoint, to - from);\n return true;\n }\n /**\n @internal\n */\n addChunk(from, chunk) {\n if ((from - this.lastTo || chunk.value[0].startSide - this.last.endSide) < 0)\n return false;\n if (this.from.length)\n this.finishChunk(true);\n this.setMaxPoint = Math.max(this.setMaxPoint, chunk.maxPoint);\n this.chunks.push(chunk);\n this.chunkPos.push(from);\n let last = chunk.value.length - 1;\n this.last = chunk.value[last];\n this.lastFrom = chunk.from[last] + from;\n this.lastTo = chunk.to[last] + from;\n return true;\n }\n /**\n Finish the range set. Returns the new set. The builder can't be\n used anymore after this has been called.\n */\n finish() { return this.finishInner(RangeSet.empty); }\n /**\n @internal\n */\n finishInner(next) {\n if (this.from.length)\n this.finishChunk(false);\n if (this.chunks.length == 0)\n return next;\n let result = RangeSet.create(this.chunkPos, this.chunks, this.nextLayer ? this.nextLayer.finishInner(next) : next, this.setMaxPoint);\n this.from = null; // Make sure further `add` calls produce errors\n return result;\n }\n}\nfunction findSharedChunks(a, b, textDiff) {\n let inA = new Map();\n for (let set of a)\n for (let i = 0; i < set.chunk.length; i++)\n if (set.chunk[i].maxPoint <= 0)\n inA.set(set.chunk[i], set.chunkPos[i]);\n let shared = new Set();\n for (let set of b)\n for (let i = 0; i < set.chunk.length; i++) {\n let known = inA.get(set.chunk[i]);\n if (known != null && (textDiff ? textDiff.mapPos(known) : known) == set.chunkPos[i] &&\n !(textDiff === null || textDiff === void 0 ? void 0 : textDiff.touchesRange(known, known + set.chunk[i].length)))\n shared.add(set.chunk[i]);\n }\n return shared;\n}\nclass LayerCursor {\n constructor(layer, skip, minPoint, rank = 0) {\n this.layer = layer;\n this.skip = skip;\n this.minPoint = minPoint;\n this.rank = rank;\n }\n get startSide() { return this.value ? this.value.startSide : 0; }\n get endSide() { return this.value ? this.value.endSide : 0; }\n goto(pos, side = -1000000000 /* C.Far */) {\n this.chunkIndex = this.rangeIndex = 0;\n this.gotoInner(pos, side, false);\n return this;\n }\n gotoInner(pos, side, forward) {\n while (this.chunkIndex < this.layer.chunk.length) {\n let next = this.layer.chunk[this.chunkIndex];\n if (!(this.skip && this.skip.has(next) ||\n this.layer.chunkEnd(this.chunkIndex) < pos ||\n next.maxPoint < this.minPoint))\n break;\n this.chunkIndex++;\n forward = false;\n }\n if (this.chunkIndex < this.layer.chunk.length) {\n let rangeIndex = this.layer.chunk[this.chunkIndex].findIndex(pos - this.layer.chunkPos[this.chunkIndex], side, true);\n if (!forward || this.rangeIndex < rangeIndex)\n this.setRangeIndex(rangeIndex);\n }\n this.next();\n }\n forward(pos, side) {\n if ((this.to - pos || this.endSide - side) < 0)\n this.gotoInner(pos, side, true);\n }\n next() {\n for (;;) {\n if (this.chunkIndex == this.layer.chunk.length) {\n this.from = this.to = 1000000000 /* C.Far */;\n this.value = null;\n break;\n }\n else {\n let chunkPos = this.layer.chunkPos[this.chunkIndex], chunk = this.layer.chunk[this.chunkIndex];\n let from = chunkPos + chunk.from[this.rangeIndex];\n this.from = from;\n this.to = chunkPos + chunk.to[this.rangeIndex];\n this.value = chunk.value[this.rangeIndex];\n this.setRangeIndex(this.rangeIndex + 1);\n if (this.minPoint < 0 || this.value.point && this.to - this.from >= this.minPoint)\n break;\n }\n }\n }\n setRangeIndex(index) {\n if (index == this.layer.chunk[this.chunkIndex].value.length) {\n this.chunkIndex++;\n if (this.skip) {\n while (this.chunkIndex < this.layer.chunk.length && this.skip.has(this.layer.chunk[this.chunkIndex]))\n this.chunkIndex++;\n }\n this.rangeIndex = 0;\n }\n else {\n this.rangeIndex = index;\n }\n }\n nextChunk() {\n this.chunkIndex++;\n this.rangeIndex = 0;\n this.next();\n }\n compare(other) {\n return this.from - other.from || this.startSide - other.startSide || this.rank - other.rank ||\n this.to - other.to || this.endSide - other.endSide;\n }\n}\nclass HeapCursor {\n constructor(heap) {\n this.heap = heap;\n }\n static from(sets, skip = null, minPoint = -1) {\n let heap = [];\n for (let i = 0; i < sets.length; i++) {\n for (let cur = sets[i]; !cur.isEmpty; cur = cur.nextLayer) {\n if (cur.maxPoint >= minPoint)\n heap.push(new LayerCursor(cur, skip, minPoint, i));\n }\n }\n return heap.length == 1 ? heap[0] : new HeapCursor(heap);\n }\n get startSide() { return this.value ? this.value.startSide : 0; }\n goto(pos, side = -1000000000 /* C.Far */) {\n for (let cur of this.heap)\n cur.goto(pos, side);\n for (let i = this.heap.length >> 1; i >= 0; i--)\n heapBubble(this.heap, i);\n this.next();\n return this;\n }\n forward(pos, side) {\n for (let cur of this.heap)\n cur.forward(pos, side);\n for (let i = this.heap.length >> 1; i >= 0; i--)\n heapBubble(this.heap, i);\n if ((this.to - pos || this.value.endSide - side) < 0)\n this.next();\n }\n next() {\n if (this.heap.length == 0) {\n this.from = this.to = 1000000000 /* C.Far */;\n this.value = null;\n this.rank = -1;\n }\n else {\n let top = this.heap[0];\n this.from = top.from;\n this.to = top.to;\n this.value = top.value;\n this.rank = top.rank;\n if (top.value)\n top.next();\n heapBubble(this.heap, 0);\n }\n }\n}\nfunction heapBubble(heap, index) {\n for (let cur = heap[index];;) {\n let childIndex = (index << 1) + 1;\n if (childIndex >= heap.length)\n break;\n let child = heap[childIndex];\n if (childIndex + 1 < heap.length && child.compare(heap[childIndex + 1]) >= 0) {\n child = heap[childIndex + 1];\n childIndex++;\n }\n if (cur.compare(child) < 0)\n break;\n heap[childIndex] = cur;\n heap[index] = child;\n index = childIndex;\n }\n}\nclass SpanCursor {\n constructor(sets, skip, minPoint) {\n this.minPoint = minPoint;\n this.active = [];\n this.activeTo = [];\n this.activeRank = [];\n this.minActive = -1;\n // A currently active point range, if any\n this.point = null;\n this.pointFrom = 0;\n this.pointRank = 0;\n this.to = -1000000000 /* C.Far */;\n this.endSide = 0;\n // The amount of open active ranges at the start of the iterator.\n // Not including points.\n this.openStart = -1;\n this.cursor = HeapCursor.from(sets, skip, minPoint);\n }\n goto(pos, side = -1000000000 /* C.Far */) {\n this.cursor.goto(pos, side);\n this.active.length = this.activeTo.length = this.activeRank.length = 0;\n this.minActive = -1;\n this.to = pos;\n this.endSide = side;\n this.openStart = -1;\n this.next();\n return this;\n }\n forward(pos, side) {\n while (this.minActive > -1 && (this.activeTo[this.minActive] - pos || this.active[this.minActive].endSide - side) < 0)\n this.removeActive(this.minActive);\n this.cursor.forward(pos, side);\n }\n removeActive(index) {\n remove(this.active, index);\n remove(this.activeTo, index);\n remove(this.activeRank, index);\n this.minActive = findMinIndex(this.active, this.activeTo);\n }\n addActive(trackOpen) {\n let i = 0, { value, to, rank } = this.cursor;\n // Organize active marks by rank first, then by size\n while (i < this.activeRank.length && (rank - this.activeRank[i] || to - this.activeTo[i]) > 0)\n i++;\n insert(this.active, i, value);\n insert(this.activeTo, i, to);\n insert(this.activeRank, i, rank);\n if (trackOpen)\n insert(trackOpen, i, this.cursor.from);\n this.minActive = findMinIndex(this.active, this.activeTo);\n }\n // After calling this, if `this.point` != null, the next range is a\n // point. Otherwise, it's a regular range, covered by `this.active`.\n next() {\n let from = this.to, wasPoint = this.point;\n this.point = null;\n let trackOpen = this.openStart < 0 ? [] : null;\n for (;;) {\n let a = this.minActive;\n if (a > -1 && (this.activeTo[a] - this.cursor.from || this.active[a].endSide - this.cursor.startSide) < 0) {\n if (this.activeTo[a] > from) {\n this.to = this.activeTo[a];\n this.endSide = this.active[a].endSide;\n break;\n }\n this.removeActive(a);\n if (trackOpen)\n remove(trackOpen, a);\n }\n else if (!this.cursor.value) {\n this.to = this.endSide = 1000000000 /* C.Far */;\n break;\n }\n else if (this.cursor.from > from) {\n this.to = this.cursor.from;\n this.endSide = this.cursor.startSide;\n break;\n }\n else {\n let nextVal = this.cursor.value;\n if (!nextVal.point) { // Opening a range\n this.addActive(trackOpen);\n this.cursor.next();\n }\n else if (wasPoint && this.cursor.to == this.to && this.cursor.from < this.cursor.to) {\n // Ignore any non-empty points that end precisely at the end of the prev point\n this.cursor.next();\n }\n else { // New point\n this.point = nextVal;\n this.pointFrom = this.cursor.from;\n this.pointRank = this.cursor.rank;\n this.to = this.cursor.to;\n this.endSide = nextVal.endSide;\n this.cursor.next();\n this.forward(this.to, this.endSide);\n break;\n }\n }\n }\n if (trackOpen) {\n this.openStart = 0;\n for (let i = trackOpen.length - 1; i >= 0 && trackOpen[i] < from; i--)\n this.openStart++;\n }\n }\n activeForPoint(to) {\n if (!this.active.length)\n return this.active;\n let active = [];\n for (let i = this.active.length - 1; i >= 0; i--) {\n if (this.activeRank[i] < this.pointRank)\n break;\n if (this.activeTo[i] > to || this.activeTo[i] == to && this.active[i].endSide >= this.point.endSide)\n active.push(this.active[i]);\n }\n return active.reverse();\n }\n openEnd(to) {\n let open = 0;\n for (let i = this.activeTo.length - 1; i >= 0 && this.activeTo[i] > to; i--)\n open++;\n return open;\n }\n}\nfunction compare(a, startA, b, startB, length, comparator) {\n a.goto(startA);\n b.goto(startB);\n let endB = startB + length;\n let pos = startB, dPos = startB - startA;\n let bounds = !!comparator.boundChange;\n for (let boundChange = false;;) {\n let dEnd = (a.to + dPos) - b.to, diff = dEnd || a.endSide - b.endSide;\n let end = diff < 0 ? a.to + dPos : b.to, clipEnd = Math.min(end, endB);\n let point = a.point || b.point;\n if (point) {\n if (!(a.point && b.point && cmpVal(a.point, b.point) &&\n sameValues(a.activeForPoint(a.to), b.activeForPoint(b.to))))\n comparator.comparePoint(pos, clipEnd, a.point, b.point);\n boundChange = false;\n }\n else {\n if (boundChange)\n comparator.boundChange(pos);\n if (clipEnd > pos && !sameValues(a.active, b.active))\n comparator.compareRange(pos, clipEnd, a.active, b.active);\n if (bounds && clipEnd < endB && (dEnd || a.openEnd(end) != b.openEnd(end)))\n boundChange = true;\n }\n if (end > endB)\n break;\n pos = end;\n if (diff <= 0)\n a.next();\n if (diff >= 0)\n b.next();\n }\n}\nfunction sameValues(a, b) {\n if (a.length != b.length)\n return false;\n for (let i = 0; i < a.length; i++)\n if (a[i] != b[i] && !cmpVal(a[i], b[i]))\n return false;\n return true;\n}\nfunction remove(array, index) {\n for (let i = index, e = array.length - 1; i < e; i++)\n array[i] = array[i + 1];\n array.pop();\n}\nfunction insert(array, index, value) {\n for (let i = array.length - 1; i >= index; i--)\n array[i + 1] = array[i];\n array[index] = value;\n}\nfunction findMinIndex(value, array) {\n let found = -1, foundPos = 1000000000 /* C.Far */;\n for (let i = 0; i < array.length; i++)\n if ((array[i] - foundPos || value[i].endSide - value[found].endSide) < 0) {\n found = i;\n foundPos = array[i];\n }\n return found;\n}\n\n/**\nCount the column position at the given offset into the string,\ntaking extending characters and tab size into account.\n*/\nfunction countColumn(string, tabSize, to = string.length) {\n let n = 0;\n for (let i = 0; i < to && i < string.length;) {\n if (string.charCodeAt(i) == 9) {\n n += tabSize - (n % tabSize);\n i++;\n }\n else {\n n++;\n i = findClusterBreak(string, i);\n }\n }\n return n;\n}\n/**\nFind the offset that corresponds to the given column position in a\nstring, taking extending characters and tab size into account. By\ndefault, the string length is returned when it is too short to\nreach the column. Pass `strict` true to make it return -1 in that\nsituation.\n*/\nfunction findColumn(string, col, tabSize, strict) {\n for (let i = 0, n = 0;;) {\n if (n >= col)\n return i;\n if (i == string.length)\n break;\n n += string.charCodeAt(i) == 9 ? tabSize - (n % tabSize) : 1;\n i = findClusterBreak(string, i);\n }\n return strict === true ? -1 : string.length;\n}\n\nexport { Annotation, AnnotationType, ChangeDesc, ChangeSet, CharCategory, Compartment, EditorSelection, EditorState, Facet, Line, MapMode, Prec, Range, RangeSet, RangeSetBuilder, RangeValue, SelectionRange, StateEffect, StateEffectType, StateField, Text, Transaction, codePointAt, codePointSize, combineConfig, countColumn, findClusterBreak, findColumn, fromCodePoint };\n","const C = \"\\u037c\"\nconst COUNT = typeof Symbol == \"undefined\" ? \"__\" + C : Symbol.for(C)\nconst SET = typeof Symbol == \"undefined\" ? \"__styleSet\" + Math.floor(Math.random() * 1e8) : Symbol(\"styleSet\")\nconst top = typeof globalThis != \"undefined\" ? globalThis : typeof window != \"undefined\" ? window : {}\n\n// :: - Style modules encapsulate a set of CSS rules defined from\n// JavaScript. Their definitions are only available in a given DOM\n// root after it has been _mounted_ there with `StyleModule.mount`.\n//\n// Style modules should be created once and stored somewhere, as\n// opposed to re-creating them every time you need them. The amount of\n// CSS rules generated for a given DOM root is bounded by the amount\n// of style modules that were used. So to avoid leaking rules, don't\n// create these dynamically, but treat them as one-time allocations.\nexport class StyleModule {\n // :: (Object\n\n
\n\n\n `.trim() }, {\n path: \"/example.js\",\n content: `\nimport foundation from \"~/common/foundation.js\"; // This is also a relative URL, \"~/\" equals \"./\" (see importmap in html)\nimport { effect } from \"~/common/signal.js\";\n\n// Set document title\nfoundation.setup({ title: \"Example\" });\n\n// Show what's currently playing\nconst output = await foundation.orchestrator.output();\nconst queue = await foundation.engine.queue();\n\neffect(() => {\n const now = queue.now();\n const tracks = output.tracks.collection();\n const currentlyPlaying = now && tracks.state === \"loaded\"\n ? tracks.data.find((t) => t.id === now.id)\n : undefined;\n\n const el = foundation.container().querySelector(\"#placeholder\");\n\n if (currentlyPlaying) {\n el.innerHTML = (\n (currentlyPlaying?.tags?.artist ?? \"Unknown artist\") + \" - \" +\n (currentlyPlaying?.tags?.title ?? \"Unknown title\")\n );\n el.classList.remove(\"is-faded\");\n } else if (tracks.state === \"loading\") {\n el.innerHTML = \"Loading ...\";\n el.classList.add(\"is-faded\");\n } else {\n el.innerHTML = \"😶‍🌫️\";\n el.classList.add(\"is-faded\");\n }\n});\n\n// Indicate interface is loaded and ready to use\n// (this hides the default loading animation)\nfoundation.ready();\n `.trim(),\n}, {\n path: \"/example.css\",\n content: `\n#placeholder {\n align-items: center;\n display: flex;\n font-style: italic;\n height: 100dvh;\n justify-content: center;\n}\n\n.is-faded {\n opacity: 0.4;\n}\n `.trim(),\n}];\n\nconst DEFAULT_PRELUDE = [{ path: \"/\", content: `\n\n `.trim() }, {\n path: \"/example.js\",\n content: `\nimport foundation from \"~/common/foundation.js\";\nimport { effect } from \"~/common/signal.js\";\n\neffect(() => {\n // When an interface includes the audio engine in addition to this feature facet, call 'setup'\n const audio = foundation.signals.engine.audio();\n if (audio) setup(audio);\n});\n\nconst STORAGE_KEY = \"example/resume\";\nconst RESTORED = new WeakMap();\n\n/**\n * Remember the active track's position and restore it the next time it plays.\n */\nfunction setup(audio) {\n const saved = JSON.parse(localStorage.getItem(STORAGE_KEY) ?? \"{}\");\n\n effect(() => {\n const item = audio.items().find((i) => !i.isPreload);\n const st = item && audio.state(item.id);\n if (!st) return;\n\n // Restore once, when the active track is ready to play.\n if (st.loadingState() === \"loaded\" && !RESTORED.has(item)) {\n RESTORED.set(item, true);\n const seconds = saved[item.id];\n if (seconds > 5) audio.seek({ audioId: item.id, currentTime: seconds });\n }\n\n // Persist progress; forget finished tracks so they restart next time.\n const duration = st.duration();\n if (duration > 0) {\n if (st.currentTime() < 0.98 * duration) {\n saved[item.id] = st.currentTime();\n } else {\n delete saved[item.id];\n }\n\n localStorage.setItem(STORAGE_KEY, JSON.stringify(saved));\n }\n });\n}\n `.trim(),\n}];\n\n/**\n * The built-in examples shown on the Create page. Each one corresponds to a\n * default template in this file (DEFAULT_INTERFACE / DEFAULT_PRELUDE) that the\n * editor can start from when clicked.\n */\nexport const DEFAULT_EXAMPLES = [\n {\n title: \"Interface starter template\",\n kind: \"interactive\",\n desc: \"The default interactive facet example. It shows what's currently playing, or a placeholder if nothing's in the queue yet.\",\n },\n {\n title: \"Feature starter template\",\n kind: \"prelude\",\n desc: \"The default feature facet example. Shows how to watch for the creation of a particular foundation element and then do something when that happens.\",\n },\n];\n\n/**\n * Renders the built-in default examples into the `#examples-list` container on\n * the Create page.\n */\nexport function renderDefaultExamples() {\n const container = /** @type {HTMLElement | null} */ (\n document.getElementById(\"examples-list\")\n );\n if (!container) return;\n\n const ul = document.createElement(\"ul\");\n for (const example of DEFAULT_EXAMPLES) {\n const li = document.createElement(\"li\");\n li.setAttribute(\"data-kind\", example.kind);\n li.style.marginTop = \"var(--space-md)\";\n\n const head = document.createElement(\"div\");\n head.style.cssText =\n \"display: flex; gap: var(--space-xs); justify-content: space-between;\";\n\n const title = document.createElement(\"span\");\n title.textContent = example.title;\n\n const edit = document.createElement(\"button\");\n edit.className = \"button--tiny button--bg-accent\";\n edit.setAttribute(\"rel\", \"edit\");\n edit.innerHTML =\n ' Edit';\n\n head.append(title, edit);\n\n const desc = document.createElement(\"div\");\n desc.className = \"list-description\";\n desc.textContent = example.desc;\n\n li.append(head, desc);\n ul.appendChild(li);\n }\n container.replaceChildren(ul);\n}\n\n/**\n * @param {string} path\n */\nfunction basename(path) {\n if (path === \"/\") return \"index.html\";\n const trimmed = path.replace(/\\/+$/, \"\");\n const idx = trimmed.lastIndexOf(\"/\");\n return idx >= 0 ? trimmed.slice(idx + 1) : trimmed;\n}\n\n/**\n * Is this path reserved as the tile's index document (`index.html`), which the\n * `/` root tab already represents? Such paths cannot be created or renamed to.\n *\n * @param {string} path\n * @returns {boolean}\n */\nfunction isReservedIndexPath(path) {\n return /^\\/?index\\.html?$/i.test(path.trim());\n}\n\n/**\n * @param {string} path\n */\nfunction languageForPath(path) {\n if (path === \"/\" || /\\.html?$/i.test(path)) return langHtml();\n if (/\\.css$/i.test(path)) return langCss();\n // js, mjs, json, etc.\n return langJs();\n}\n\n/**\n * The base extensions shared by every tab.\n */\nconst markEditedExtension = EditorView.updateListener.of((update) => {\n // A user-typed change marks the template as edited, but never a programmatic\n // `setEditorContent` swap. Kept in `baseExtensions` so it survives every\n // `StateEffect.reconfigure` (when switching tabs or the facet kind).\n if (update.docChanged && !isProgrammaticSet) startedEditing = true;\n});\nconst baseExtensions = [basicSetup, autocompletion(), markEditedExtension];\n\n/** @returns {string} */\nfunction currentContent() {\n return $editor.value?.state.doc.toString() ?? \"\";\n}\n\n/** @param {string} content */\nfunction setEditorContent(content) {\n isProgrammaticSet = true;\n $editor.value?.dispatch({\n changes: { from: 0, to: $editor.value.state.doc.length, insert: content },\n });\n isProgrammaticSet = false;\n}\n\n/**\n * Persists the active tab's current doc into `files`, then switches to `index`.\n *\n * @param {number} index\n */\nfunction activateTab(index) {\n const editor = $editor.value;\n if (!editor) return;\n if (index < 0 || index >= files.length) return;\n if (index === activeIndex) return;\n\n files[activeIndex].content = editor.state.doc.toString();\n activeIndex = index;\n\n // Swap language extension + content for the new tab.\n editor.dispatch({\n effects: StateEffect.reconfigure.of([\n ...baseExtensions,\n languageForPath(files[activeIndex].path),\n ]),\n });\n setEditorContent(files[activeIndex].content);\n\n renderTabs();\n}\n\n/**\n * Renames the file at `index` to `newPath`, adjusting the editor's language\n * if the extension changes. The `/` index cannot be renamed.\n *\n * @param {number} index\n * @param {string} newPath\n */\nfunction renameFile(index, newPath) {\n if (index === 0) return;\n const trimmed = newPath.trim();\n if (!trimmed) return;\n const path = trimmed.startsWith(\"/\") ? trimmed : `/${trimmed}`;\n if (path === files[index].path) return;\n if (isReservedIndexPath(path)) return;\n if (files.some((f, i) => i !== index && f.path === path)) return;\n\n const langChanged = languageForPath(path) !== languageForPath(files[index].path);\n const renamedPath = path;\n files[index].path = path;\n startedEditing = true;\n\n // Keep `/` first, then alphabetical, and track the renamed file.\n files.sort((a, b) => (a.path === \"/\" ? -1 : b.path === \"/\" ? 1 : a.path.localeCompare(b.path)));\n activeIndex = files.findIndex((f) => f.path === renamedPath);\n if (activeIndex < 0) activeIndex = 0;\n\n if (langChanged) {\n $editor.value?.dispatch({\n effects: StateEffect.reconfigure.of([\n ...baseExtensions,\n languageForPath(files[activeIndex].path),\n ]),\n });\n }\n renderTabs();\n}\n\n/**\n * Adds a new file to the tile. Opens a modal dialog (styled like other facet\n * dialogs) where the file path, e.g. /style.css, can be entered.\n */\nfunction addFile() {\n let dialog = /** @type {HTMLDialogElement | null} */ (\n document.getElementById(\"add-file-dialog\")\n );\n\n if (!dialog) {\n dialog = /** @type {HTMLDialogElement} */ (\n document.createElement(\"dialog\")\n );\n dialog.id = \"add-file-dialog\";\n dialog.style.cssText =\n \"padding: 0; position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); margin: 0;\";\n dialog.innerHTML = `\n
\n
\n Add a file to the tile\n
\n
\n

\n Path of the new file, e.g. /style.css. The language is\n chosen from the extension.\n

\n
\n \n \n
\n
\n
\n \n \n
\n
\n `;\n document.body.appendChild(dialog);\n\n dialog.querySelector(\"#add-file-cancel\")?.addEventListener(\"click\", () => {\n /** @type {HTMLDialogElement} */ (dialog).close();\n });\n\n dialog.querySelector(\"#add-file-form\")?.addEventListener(\"submit\", (e) => {\n e.preventDefault();\n const input = /** @type {HTMLInputElement | null} */ (\n dialog?.querySelector(\"#add-file-path\")\n );\n const existing = new Set(files.map((f) => f.path));\n let path = input?.value.trim() ?? \"\";\n if (!path.startsWith(\"/\")) path = `/${path}`;\n if (!path || path === \"/\" || isReservedIndexPath(path) || existing.has(path)) return;\n files.push({ path, content: \"\" });\n /** @type {HTMLDialogElement} */ (dialog).close();\n startedEditing = true;\n activateTab(files.length - 1);\n });\n }\n\n const pathInput = /** @type {HTMLInputElement | null} */ (\n dialog.querySelector(\"#add-file-path\")\n );\n if (pathInput) pathInput.value = \"\";\n\n dialog.showModal();\n pathInput?.focus();\n}\n\n/**\n * Removes the tab at `index`. The `/` (index) tab cannot be removed.\n *\n * @param {number} index\n */\nfunction removeFile(index) {\n if (index === 0 || index >= files.length) return;\n const editor = $editor.value;\n if (!editor) return;\n files[activeIndex].content = editor.state.doc.toString();\n files.splice(index, 1);\n if (index <= activeIndex) activeIndex = Math.max(0, activeIndex - 1);\n startedEditing = true;\n setEditorContent(files[activeIndex].content);\n renderTabs();\n}\n\n/**\n * Renders the tab bar (#editor-tabs) from the current `files`.\n */\nfunction renderTabs() {\n const tabsEl = document.getElementById(\"editor-tabs\");\n if (!tabsEl) return;\n\n tabsEl.textContent = \"\";\n\n // Add button first, left of the file tabs, sized to match the editor gutter.\n const add = document.createElement(\"button\");\n add.type = \"button\";\n add.className = \"editor-tab editor-tab--add\";\n add.title = \"Add file\";\n add.innerHTML = '';\n add.addEventListener(\"click\", addFile);\n /**\n * Sizes the add button to the editor gutter width. If the gutter isn't laid\n * out yet (width is 0), re-measure on the next animation frame until it is.\n */\n const sizeAddButton = () => {\n const gutter = /** @type {Element | null} */ (\n document.querySelector(\"#html-input-container .cm-gutters\")\n );\n if (!gutter) return;\n const width = gutter.getBoundingClientRect().width;\n if (width > 0) {\n add.style.width = `${width}px`;\n } else {\n requestAnimationFrame(sizeAddButton);\n }\n };\n sizeAddButton();\n tabsEl.append(add);\n\n files.forEach((file, index) => {\n try {\n const tab = document.createElement(\"div\");\n tab.role = \"button\";\n tab.tabIndex = 0;\n tab.className = \"editor-tab\" + (index === activeIndex ? \" is-active\" : \"\");\n tab.title = file.path;\n tab.addEventListener(\"click\", () => activateTab(index));\n tab.addEventListener(\"keydown\", (e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n activateTab(index);\n }\n });\n\n const label = document.createElement(\"span\");\n label.textContent = basename(file.path);\n label.title = \"Double-click to rename\";\n label.addEventListener(\"dblclick\", (e) => {\n e.stopPropagation();\n const input = document.createElement(\"input\");\n input.type = \"text\";\n input.value = file.path;\n input.className = \"editor-tab__rename editor-tab__rename--inline\";\n label.replaceWith(input);\n input.focus();\n input.select();\n\n const commit = () => {\n if (done) return;\n done = true;\n renameFile(index, input.value);\n if (input.isConnected) input.remove();\n renderTabs();\n };\n let done = false;\n input.addEventListener(\"keydown\", (e) => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n commit();\n } else if (e.key === \"Escape\") {\n done = true;\n if (input.isConnected) input.remove();\n renderTabs();\n }\n });\n input.addEventListener(\"blur\", commit);\n });\n tab.append(label);\n\n if (index !== 0) {\n const close = document.createElement(\"button\");\n close.type = \"button\";\n close.className = \"editor-tab__close\";\n close.title = \"Remove file\";\n close.innerHTML = '';\n close.addEventListener(\"click\", (e) => {\n e.stopPropagation();\n removeFile(index);\n });\n tab.append(close);\n }\n\n tabsEl.append(tab);\n } catch (err) {\n console.error(\"editor: failed to build tab\", file.path, err);\n }\n });\n}\n\n/**\n * Loads a facet's files into the editor tabs. Inline tiles (with a `resources`\n * map + `blocks`) load every resource into its own tab; otherwise the `/` index\n * (resolved via `resolveFacetHTML`) is shown as a single tab.\n *\n * @param {Facet} facet\n */\nasync function loadFacetFiles(facet) {\n // Resolve the facet's tile (inline `resources`+`blocks`, or a `.tile` CAR\n // referenced by `uri`), then load every absolute resource into its own tab.\n const tile = await resolveFacetTile(facet);\n const resources = tile?.resources;\n const blocks = tile?.blocks;\n\n let loaded;\n if (resources && Object.keys(resources).length && blocks) {\n const entries = tileResourceEntries(resources, blocks);\n loaded = [...entries.entries()].map(([path, entry]) => ({\n path,\n content: fileDecoder.decode(entry.bytes),\n }));\n if (!loaded.length) loaded = [{ path: \"/\", content: tile.html }];\n } else {\n loaded = [{ path: \"/\", content: tile?.html ?? \"\" }];\n }\n files = loaded;\n\n activeIndex = 0;\n // Ensure the `/` index is first.\n files.sort((a, b) => (a.path === \"/\" ? -1 : b.path === \"/\" ? 1 : a.path.localeCompare(b.path)));\n activeIndex = files.findIndex((f) => f.path === \"/\");\n if (activeIndex < 0) activeIndex = 0;\n\n $editor.value?.dispatch({\n effects: StateEffect.reconfigure.of([\n ...baseExtensions,\n languageForPath(files[activeIndex].path),\n ]),\n });\n setEditorContent(files[activeIndex].content);\n renderTabs();\n}\n\n/**\n * Replaces the new-facet editor's tabs with the default template for `kind`.\n * Only called when creating a brand-new facet that hasn't been edited yet.\n *\n * @param {\"interactive\" | \"prelude\"} kind\n */\nfunction applyDefaultTemplateForKind(kind) {\n const defaults = kind === \"prelude\" ? DEFAULT_PRELUDE : DEFAULT_INTERFACE;\n files = defaults.map((f) => ({ ...f }));\n activeIndex = files.findIndex((f) => f.path === \"/\");\n if (activeIndex < 0) activeIndex = 0;\n\n $editor.value?.dispatch({\n effects: StateEffect.reconfigure.of([\n ...baseExtensions,\n languageForPath(files[activeIndex].path),\n ]),\n });\n setEditorContent(files[activeIndex].content);\n startedEditing = false;\n renderTabs();\n}\n\n/**\n * Loads a built-in default template (interactive or prelude) into the editor\n * as a brand-new facet, e.g. when a default example is clicked.\n *\n * @param {\"interactive\" | \"prelude\"} kind\n */\nfunction loadDefaultExample(kind) {\n $editingFacet.value = null;\n const kindEl = /** @type {HTMLSelectElement | null} */ (\n document.querySelector(\"#kind-input\")\n );\n if (kindEl) kindEl.value = kind;\n applyDefaultTemplateForKind(kind);\n globalThis.scrollTo({ top: 0 });\n}\n\nexport function renderEditor() {\n // Code editor\n const editorContainer = document.body.querySelector(\"#html-input-container\");\n if (!editorContainer) throw new Error(\"Editor container not found\");\n\n // Tab bar rendered just above the editor.\n const tabsEl = document.createElement(\"div\");\n tabsEl.id = \"editor-tabs\";\n tabsEl.className = \"editor-tabs\";\n editorContainer.before(tabsEl);\n\n const editor = new EditorView({\n parent: editorContainer,\n doc: \"\",\n extensions: [...baseExtensions, languageForPath(\"/\")],\n });\n\n $editor.value = editor;\n\n files = DEFAULT_INTERFACE.map((f) => ({ ...f }));\n activeIndex = 0;\n startedEditing = false;\n setEditorContent(files[0].content);\n renderTabs();\n return editor;\n}\n\n////////////////////////////////////////////\n// FORM\n////////////////////////////////////////////\n\n/**\n * @param {EditorView} editor\n */\nconst onBuildSubmit = (editor) =>\n/**\n * @param {Event} event\n */\nasync (event) => {\n event.preventDefault();\n\n const nameEl = /** @type {HTMLInputElement | null} */ (document.querySelector(\n \"#name-input\",\n ));\n\n const descriptionEl = /** @type {HTMLTextAreaElement | null} */ (\n document.querySelector(\"#description-input\")\n );\n\n const kindEl = /** @type {HTMLSelectElement | null} */ (\n document.querySelector(\"#kind-input\")\n );\n\n // Persist the active tab's current doc before collecting files.\n files[activeIndex].content = editor.state.doc.toString();\n\n /** @type {Record} */\n const fileMap = {};\n for (const file of files) fileMap[file.path] = file.content;\n const tile = tileFromFiles(fileMap);\n\n const name = nameEl?.value ?? \"nameless\";\n const description = descriptionEl?.value ?? \"\";\n const kind =\n /** @type {\"interactive\" | \"prelude\"} */ (kindEl?.value ?? \"interactive\");\n\n /** @type {Facet} */\n const facet = $editingFacet.value\n ? {\n ...$editingFacet.value,\n blocks: tile.blocks,\n description,\n kind,\n name,\n resources: tile.resources,\n }\n : {\n $type: \"sh.diffuse.output.facet\",\n id: TID.now(),\n blocks: tile.blocks,\n description,\n kind,\n name,\n resources: tile.resources,\n };\n\n $editingFacet.value = facet;\n\n switch (/** @type {any} */ (event).submitter.name) {\n case \"save\":\n await saveFacet(facet);\n break;\n case \"save+open\":\n await saveFacet(facet);\n globalThis.open(`./l/?id=${facet.id}`, \"blank\");\n break;\n }\n};\n\n/**\n * @param {Facet} ogFacet\n */\nasync function editFacet(ogFacet) {\n const facet = { ...ogFacet };\n const nameEl = /** @type {HTMLInputElement | null} */ (document.querySelector(\n \"#name-input\",\n ));\n\n const descriptionEl = /** @type {HTMLTextAreaElement | null} */ (\n document.querySelector(\"#description-input\")\n );\n\n const kindEl = /** @type {HTMLSelectElement | null} */ (\n document.querySelector(\"#kind-input\")\n );\n\n if (!nameEl) return;\n\n // Reset url — remove `id` param if not matching the facet\n const url = new URL(location.href);\n const id = url.searchParams.get(\"id\");\n\n if (id && facet.id !== id) {\n url.searchParams.delete(\"id\");\n history.replaceState(null, \"\", url);\n }\n\n // Scroll to builder\n document.querySelector(\"#code\")?.scrollIntoView();\n\n // Load the facet's files into the editor tabs. `loadFacetFiles` handles\n // inline tiles (each resource becomes a tab) and plain HTML/URI facets (a\n // single index tab).\n setEditorLoading(true);\n await loadFacetFiles(facet);\n setEditorLoading(false);\n\n $editingFacet.value = facet;\n nameEl.value = facet.name;\n\n if (kindEl) {\n kindEl.value = facet.kind ?? \"interactive\";\n }\n\n if (descriptionEl) {\n descriptionEl.value = facet.description ?? \"\";\n }\n}\n\nexport function handleBuildFormSubmit() {\n const editor = $editor.value;\n if (!editor) return;\n\n document.querySelector(\"#code-form\")?.addEventListener(\n \"submit\",\n onBuildSubmit(editor),\n );\n\n const kindEl = /** @type {HTMLSelectElement | null} */ (\n document.querySelector(\"#kind-input\")\n );\n // When creating a brand-new facet, switching the kind swaps in that kind's\n // default template — but only if the user hasn't started editing yet, and\n // never while editing an existing facet.\n kindEl?.addEventListener(\"change\", () => {\n if ($editingFacet.value) return;\n if (startedEditing) return;\n applyDefaultTemplateForKind(\n /** @type {\"interactive\" | \"prelude\"} */ (kindEl?.value ?? \"interactive\"),\n );\n });\n\n const importBtn = document.querySelector(\"#import-button\");\n const importInput = document.querySelector(\"#import-input\");\n\n importBtn?.addEventListener(\"click\", () => /** @type {HTMLElement} */ (importInput)?.click());\n\n importInput?.addEventListener(\"change\", async (event) => {\n const file = /** @type {HTMLInputElement} */ (event.target).files?.[0];\n if (!file) return;\n\n const content = await file.text();\n files[activeIndex].content = content;\n startedEditing = true;\n setEditorContent(content);\n });\n}\n\n////////////////////////////////////////////\n// EDIT EXAMPLES\n////////////////////////////////////////////\n\nlet isListening = false;\n\nexport function listenForExamplesEdit() {\n if (isListening) return;\n isListening = true;\n\n document.body.addEventListener(\n \"click\",\n /**\n * @param {MouseEvent} event\n */\n async (event) => {\n const target = /** @type {HTMLElement} */ (event.target);\n const rel = target.getAttribute(\"rel\");\n if (!rel) return;\n\n const li = target.closest(\"li\");\n if (!li) return;\n\n // Built-in default template example — no source URI, just load the\n // matching default from this page into the editor.\n if (rel === \"edit\" && li.dataset.kind && !li.dataset.uri) {\n loadDefaultExample(\n /** @type {\"interactive\" | \"prelude\"} */ (li.dataset.kind),\n );\n return;\n }\n\n const uri = li.getAttribute(\"data-uri\");\n if (!uri) return;\n\n const name = li.getAttribute(\"data-name\");\n if (!name) return;\n\n const kind = li.getAttribute(\"data-kind\") ?? undefined;\n\n if (rel === \"edit\") {\n setEditorLoading(true);\n const facet = await facetFromURI({ kind, name, uri }, {\n fetchHTML: true,\n });\n setEditorLoading(false);\n editFacet(facet);\n globalThis.scrollTo({ top: 0 });\n }\n },\n );\n}\n\n////////////////////////////////////////////\n// EDIT FACET FROM URL\n////////////////////////////////////////////\n\nexport async function editFacetFromURL() {\n const params = new URLSearchParams(location.search);\n const idParam = params.get(\"id\");\n const uriParam = params.get(\"uri\");\n\n // Reset editing state; if we're loading a specific facet, editFacet() will\n // set it again. Without this, $editingFacet persists across SPA navigations\n // and a subsequent \"save\" will reuse the stale id, silently overwriting the\n // previously edited facet instead of creating a new entry.\n $editingFacet.value = null;\n\n setEditorLoading(true);\n try {\n if (idParam) {\n const out = await output();\n const col = await Output.data(out.facets);\n const facet = col.find((f) => f.id === idParam);\n if (facet) await editFacet(facet);\n } else if (uriParam) {\n const facet = await facetFromURI({\n uri: uriParam,\n name: params.get(\"name\") ?? \"\",\n kind: /** @type {any} */ (params.get(\"kind\") ?? undefined),\n description: params.get(\"description\") ?? undefined,\n }, { fetchHTML: true });\n await editFacet(facet);\n }\n } finally {\n setEditorLoading(false);\n }\n}\n"],"mappings":"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","names":["rangeFrom","rangeTo","numbers","s","i","n","isExtendingChar","code","from","to","mid","__name","isRegionalIndicator","ZWJ","findClusterBreak","str","pos","forward","includeExtending","nextClusterBreak","prevClusterBreak","__name","surrogateLow","surrogateHigh","prev","codePointAt","codePointSize","next","isExtendingChar","isRegionalIndicator","countBefore","i","found","code0","code1","ch","code","Text","_Text","__name","pos","n","from","to","text","clip","parts","TextNode","other","start","end","a","RawTextCursor","b","skip","dir","PartialTextCursor","inner","LineCursor","lines","TextLeaf","_TextLeaf","length","textLength","target","isLine","line","offset","i","string","Line","open","sliceText","prev","joined","appendText","mid","newLen","lineSep","result","part","len","_TextNode","children","child","endLine","childOpen","updated","totalLines","copy","iA","iB","eA","eB","chA","chB","l","ch","flat","chunk","maxChunk","minChunk","chunked","currentLines","currentLen","currentChunk","add","last","node","flush","first","top","offsetValue","size","next","limit","value","done","lineBreak","number","findClusterBreak","str","forward","includeExtending","surrogateLow","surrogateHigh","codePointAt","code0","code1","fromCodePoint","code","codePointSize","DefaultSplit","MapMode","ChangeDesc","_ChangeDesc","sections","ins","f","posA","posB","individual","iterChanges","composeSets","before","mapSet","assoc","mode","endA","json","ChangeSet","_ChangeSet","inserted","doc","fromA","toA","fromB","_toB","index","ranges","resultSections","resultInserted","filteredSections","iter","SectionIter","addSection","addInsert","changes","total","force","set","process","spec","sub","insert","insText","insLen","e","forceJoin","values","desc","endB","setA","setB","mkSet","piece","left","sectionLen","insB","SelectionRange","_SelectionRange","flags","goalColumn","level","change","EditorSelection","head","includeAssoc","_EditorSelection","mainIndex","r","range","main","which","anchor","bidiLevel","checkSelection","selection","docLength","nextID","Facet","_Facet","combine","compareInput","compare","isStatic","enables","config","sameArray","FacetProvider","deps","get","field","x","state","dependencies","facet","type","addresses","_a","getter","id","idx","multi","depDoc","depSel","depAddrs","dep","tr","ensureAll","newVal","compareArray","oldState","oldAddr","oldVal","getAddr","StateField","addrs","changed","addr","ensureAddr","dynamicFacetSlot","providers","providerAddrs","p","providerTypes","dynamic","val","depChanged","oldProviders","oldValue","initField","_StateField","createF","updateF","compareF","init","oldInit","reInit","create","Prec_","prec","ext","PrecExtension","Prec","Compartment","_Compartment","CompartmentInstance","content","compartment","Configuration","_Configuration","base","compartments","dynamicSlots","address","staticValues","facets","fields","newCompartments","flatten","oldFacets","extension","seen","known","found","status","languageData","allowMultipleSelections","v","lineSeparator","changeFilter","transactionFilter","transactionExtender","readOnly","Annotation","AnnotationType","StateEffectType","map","StateEffect","_StateEffect","mapping","mapped","effects","effect","Transaction","_Transaction","startState","annotations","scrollIntoView","ann","event","joinRanges","mergeTransaction","sequential","mapForA","mapForB","resolveTransactionInner","docSize","sel","asArray","resolveTransaction","specs","filter","s","seq","extendTransaction","filterTransaction","back","filtered","filters","extenders","none","CharCategory","nonASCIISingleCaseWordChar","wordChar","hasWordChar","makeCategorizer","wordChars","char","EditorState","_EditorState","computeSlot","require","conf","key","startValues","slot","result1","newChanges","newMapped","j","mapBy","prop","fieldInit","configuration","phrase","m","name","side","provider","at","chars","cat","kA","kB","k","combineConfig","configs","defaults","current","RangeValue","Range","cmpVal","_Range","cmpRange","Chunk","_Chunk","maxPoint","startAt","arr","lo","hi","diff","basePos","baseSide","spill","newPos","curFrom","curTo","newFrom","newTo","RangeSet","_RangeSet","chunkPos","nextLayer","updateSpec","sort","filterFrom","filterTo","cur","LayerCursor","builder","RangeSetBuilder","chunks","spilled","touch","prevPos","prevSide","HeapCursor","sets","oldSets","newSets","textDiff","comparator","minPointSize","sharedChunks","findSharedChunks","sideA","SpanCursor","sideB","sameValues","iterator","cursor","openRanges","active","openCount","build","lazySort","layer","_RangeSetBuilder","newArrays","strict","inA","shared","minPoint","rank","rangeIndex","_HeapCursor","heap","heapBubble","childIndex","remove","findMinIndex","trackOpen","wasPoint","nextVal","startA","startB","dPos","bounds","boundChange","dEnd","clipEnd","array","foundPos","countColumn","tabSize","findColumn","col","COUNT","SET","top","StyleModule","__name","spec","options","finish","splitSelector","selector","render","selectors","target","isKeyframes","local","isAt","keyframes","prop","value","part","sel","a","b","l","id","root","modules","set","nonce","StyleSet","adoptedSet","doc","win","adopted","sheet","pos","j","i","mod","index","k","text","base","shift","mac","ie","i","code","keyName","event","ignoreKey","name","__name","crelt","elt","i","next","name","value","add","__name","child","nav","doc","ie_edge","ie_upto10","ie_11up","ie","gecko","chrome","webkit","safari","ios","browser","combineAttrs","source","target","name","__name","noAttrs","attrsEq","a","b","ignore","keysA","keysB","key","setAttrs","dom","attrs","i","value","updateAttrs","prev","changed","getAttrs","attr","WidgetType","widget","view","from","other","event","pos","side","BlockType","Decoration","RangeValue","startSide","endSide","spec","MarkDecoration","block","PointDecoration","start","end","getInclusive","LineDecoration","of","sort","RangeSet","_MarkDecoration","to","_LineDecoration","MapMode","_PointDecoration","isReplace","widgetsEq","addRange","ranges","margin","last","BlockWrapper","_BlockWrapper","tagName","attributes","rank","getSelection","root","contains","node","hasSelection","selection","clientRectsFor","textRange","isEquivalentPosition","off","targetNode","targetOff","scanFor","domIndex","index","isBlockElement","dir","maxOffset","parent","flattenRect","rect","toLeft","left","right","x","windowRect","win","vp","getScale","elt","scaleX","scaleY","scrollRectIntoView","y","xMargin","yMargin","ltr","cur","stop","bounding","top","moveX","moveY","rectHeight","boundingHeight","movedX","movedY","scrollableParents","getX","DOMSelectionState","domSel","range","anchorNode","focusNode","anchorOffset","focusOffset","getScrollStack","stack","restoreScrollStack","vert","preventScrollSupported","focusPreventScroll","scratchRange","dispatchKey","code","mods","options","down","up","getRoot","atElementStart","offset","isScrolledToBottom","textNodeBefore","startNode","startOffset","textNodeAfter","DOMPos","_DOMPos","precise","Direction","LTR","RTL","dec","str","result","LowTypes","ArabicTypes","Brackets","BracketStack","p","l","r","charType","ch","BidiRE","BidiSpan","level","forward","order","assoc","maybe","span","isolatesEq","iA","iB","types","computeCharTypes","line","rFrom","rTo","isolates","outerType","iI","prevType","prevStrong","type","replace","j","processBracketPairs","oppositeType","sI","context","br","sJ","flags","embed","processNeutrals","beforeL","afterL","jI","fromJ","emitSpans","baseLevel","ourType","iCh","sameDir","isNum","next","recurse","localLevel","iScan","run","iso","upto","dirSwap","computeSectionOrder","computeOrder","direction","trivialOrder","length","movedOver","moveVisually","_a","startIndex","spanI","spanEnd","nextI","nextIndex","findClusterBreak","nextSpan","EditorSelection","autoDirection","text","clickAddsSelectionRange","Facet","dragMovesSelection$1","mouseSelectionStyle","exceptionSink","updateListener","inputHandler","focusChangeEffect","clipboardInputFilter","clipboardOutputFilter","perLineTextDirection","values","nativeSelectionHidden","scrollHandler","ScrollTarget","_ScrollTarget","isSnapshot","changes","state","scrollIntoView","StateEffect","t","setEditContextFormatting","logException","exception","handler","editable","nextPluginID","viewPlugin","plugins","ViewPlugin","_ViewPlugin","id","create","domEventHandlers","domEventObservers","buildExtensions","arg","eventHandlers","eventObservers","provide","deco","plugin","ext","decorations","pluginInst","cls","PluginInstance","update","e","editorAttributes","contentAttributes","blockWrappers","outerDecorations","atomicRanges","bidiIsolatedRanges","getIsolatedRanges","sets","fromDoc","toDoc","active","open","add","scrollMargins","getScrollMargins","bottom","m","styleModule","ChangedRange","_ChangedRange","fromA","toA","fromB","toB","set","me","diff","dI","rI","nextD","nextR","ViewUpdate","_ViewUpdate","transactions","ChangeSet","tr","changedRanges","noChildren","Tile","track","tile","child","rtl","after","DocTile","CompositeTile","tracking","rm$1","f","BlockWrapperTile","before","beforeOff","afterOff","_BlockWrapperTile","wrapper","LineTile","_LineTile","keepAttrs","forCoords","scan","onSameLine","found","fallbackRect","saw","rects","posA","posB","MarkTile","_MarkTile","mark","TextTile","_TextTile","flatten","WidgetTile","_WidgetTile","custom","fromBack","Text","WidgetBufferTile","img","TilePointer","dist","walker","beforeBreak","parents","brk","len","take","OpenWrapper","TileBuilder","cache","marks","openStart","composition","freeNode","head","nw","oldTile","noSpace","lineBaseAttrs","hasContent","BreakWidget","wrap","TextStream","maxLen","lineBreak","done","chars","buckets","TileCache","bucket","test","widgets","pass","TileUpdate","old","disallowBlockEffectsFor","compositionContext","skipA","incStart","incEnd","activeMarks","getMarks","openMarks","pendingLineAttrs","markCount","openEnd","NullWidget","widgetFlags","addLineDeco","requireText","ptr","tag","DocView","readCompositionAt","touchesComposition","findCompositionRange","prevDeco","prevWrappers","decoDiff","findChangedDeco","blockDiff","findChangedWrappers","observer","builder","destroyDropped","gaps","BlockGapWidget","effect","mustRead","fromPointer","activeElt","focused","selectionNotFocus","force","main","anchor","betweenUneditable","dummy","inUneditable","rawSel","nextTo","nextToUneditable","sel","cursor","lineStart","newRange","bias","beforeBad","afterBad","viewport","contentWidth","isWider","widest","spaceAbove","measureBounds","childRect","height","width","lineMeasure","totalWidth","textHeight","lineHeight","charWidth","vs","allDeco","d","dynamicOuter","outerDeco","dynamic","v","ref","margins","targetRect","offsetWidth","offsetHeight","reused","findCompositionNode","headPos","textBefore","textAfter","textNode","tileAfter","tileBefore","inv","DecorationComparator$1","comp","WrapperComparator","inside","touched","groupAt","categorize","linePos","cat","posAtCoordsImprecise","contentRect","into","content","findColumn","blockAt","best","moveToLineBoundary","includeWrap","coords","editorRect","moveByChar","by","spans","check","char","byGroup","nextCat","CharCategory","moveVertically","distance","startPos","goal","startY","startCoords","docTop","resolvedGoal","halfText","posAtCoords","posCoords","mid","skipAtomicRanges","atoms","moved","skipAtomsForSelection","updated","skipAtoms","oldPos","newPos","PosAssoc","scanY","yOffset","halfLine","InlineCoordsScan","baseDir","positions","getRects","recursed","lo","hi","seen","bidi","above","below","closestI","closestDx","closestRect","search","adjust","dx","LineBreakPlaceholder","DOMReader","points","EditorState","oldLen","nextTile","isEmptyToEnd","point","re","nextBreak","breakSize","fromView","isAtEnd","w","override","DOMPoint","DOMChange","typeOver","iHead","iAnchor","curSel","domBoundsAround","selPoints","selectionPoints","reader","selectionFromPoints","offFrom","offTo","fromI","fromStart","toI","toEnd","prevEnd","applyDOMChange","domChange","change","newSel","lastKey","preferredPos","preferredSide","cmp","selEnd","findDiff","sameSelPos","applyDOMChangeInner","userEvent","defaultTr","defaultInsert","applyDefaultInsert","h","startState","inAtomic","mainSel","replaced","compositionRange","dLen","rangeChanges","selOff","minLen","move","base","InputState","origin","firefoxCopyCutHack","eventBelongsToEditor","handlers","computeHandlers","passive","exists","modifierCodes","PendingKeys","EmacsyPendingKeys","iosVirtualKeyboardOpen","mouseSelection","bindHandler","record","observers","dragScrollMargin","dragScrollSpeed","MouseSelection","startEvent","style","mustSelect","addsSelectionRange","isInPrimarySelection","getClickType","sx","sy","facet","dragMovesSelection","brokenClipboardAPI","capturePaste","doPaste","textFilter","filter","input","byLine","lastLinewiseCopy","lastLine","insert","iState","touch","makeStyle","basicMouseSelection","mustFocus","mouseSel","rangeForClick","visual","BadMouseDetail","lastMouseDown","lastMouseDownCount","lastMouseDownTime","lastTime","startSel","extend","multiple","removed","startRange","removeRangeAround","inputState","dropText","direct","dropPos","draggedContent","del","ins","files","read","finishFile","s","data","captureCopy","copiedRange","linewise","isFocusChange","Annotation","focusChangeTransaction","focus","effects","getEffect","updateForFocusChange","_b","pending","startViewHeight","appliedFirefoxHack","wrappingWhiteSpace","heightChangeFlag","clearHeightChangeFlag","HeightOracle","lineWrapping","lines","whiteSpace","lineHeights","newHeight","lineLength","knownHeights","MeasuredHeights","heights","BlockInfo","_BlockInfo","_content","QueryType","Epsilon","HeightMap","_HeightMap","_from","_to","nodes","oldDoc","oracle","NodeBuilder","HeightMapText","split","HeightMapBranch","val","SpaceDeco","HeightMapBlock","_oracle","_value","_type","measured","_force","_HeightMapText","HeightMapGap","_HeightMapGap","firstLine","perLine","perChar","totalPerLine","guess","lineTop","linesAbove","first","singleHeight","rightTop","rightOffset","subQuery","rightStart","mergeGaps","rebalance","around","relevantWidgetHeight","_NodeBuilder","breaks","gap","heightRelevantDecoChanges","DecorationComparator","visiblePixelRange","paddingTop","parentRect","inWindow","fullPixelRange","LineGap","size","displaySize","gA","gB","viewState","wrapping","LineGapWidget","vertical","ViewState","IdScaler","guessWrapping","staticDeco","viewports","Viewport","scaler","BigScaler","scaleBlock","scrollTarget","contentChanges","heightChanges","prevHeight","scrollAnchor","viewportChange","refresh","domRect","measureContent","paddingBottom","scrollParent","scrollOffset","pixelViewport","dTop","dBottom","inView","marginTop","map","visibleTop","visibleBottom","viewHeight","topPos","mapped","current","mayMeasure","halfMargin","doubleMargin","addGap","structure","avoid","find","checkLine","lineStructure","viewFrom","viewTo","marginHeight","bot","targetFrac","findFraction","spaceFrac","findPosition","marginWidth","horizOffset","pxLeft","pxRight","fraction","stateDeco","total","ratio","counted","array","outer","_BigScaler","heightMap","vpHeight","domBase","obj","n","bTop","bBottom","theme","strs","darkTheme","baseThemeID","StyleModule","baseLightID","baseDarkID","lightDarkIDs","buildTheme","scopes","baseTheme$1","observeOptions","useCharData","DOMObserver","mutations","mut","EditContextManager","entries","g","wasChanged","safariSelectionRangeHack","local","keyCode","flush","records","readSelection","handled","rec","childBefore","findChild","childAfter","_c","curTile","buildSelectionRangeFromRange","curAnchor","deletes","newLen","format","lineStyle","thickness","drifted","abort","_fromB","_toB","reverted","contextPos","clipLen","c","editorPos","EditorView","_EditorView","config","dispatch","trs","Transaction","redrawn","attrsChanged","focusFlag","dispatchFocus","pendingKey","CachedOrder","listener","newState","hadFocus","prevSpecs","specs","newPlugins","scroll","scrollAnchorPos","scrollAnchorHeight","scrollScale","measuring","BadMeasure","editorAttrs","attrsFromFacet","contentAttrs","changedContent","changedEditor","div","nonce","request","known","initial","MaxBidiLine","entry","_d","scrollTop","scrollLeft","prefix","Prec","inputs","_CachedOrder","fresh","lastDir","sources","currentPlatform","normalizeKeyName","platform","parts","alt","ctrl","shift","meta","mod","modifiers","handleKeyEvents","runHandlers","getKeymap","keymap","Keymaps","bindings","buildKeymap","runScopeHandlers","scope","storedPrefix","PrefixTimeout","bound","isPrefix","checkPrefix","is","command","preventDefault","stopPropagation","scopeObj","k","ourObj","full","binding","any","currentKeyEvent","keyName","charCode","codePointAt","isChar","codePointSize","prevented","ran","runFor","cmd","baseName","shiftName","RectangleMarker","_RectangleMarker","className","getBase","rectanglesForRange","wrappedLine","lineElt","leftSide","rightSide","startBlock","endBlock","visualStart","visualEnd","pieces","drawForLine","drawForWidget","between","piece","horizontal","addSpan","fromOpen","toOpen","fromCoords","toCoords","endPos","docLine","spanFrom","spanTo","sameMarker","LayerView","layer","layerOrder","markers","oldI","marker","selectionConfig","configs","combineConfig","drawSelection","cursorLayer","selectionLayer","hideNativeSelection","configChanged","update","selectionConfig","__name","cursorLayer","layer","view","state","conf","cursors","prim","browser","className","cursor","EditorSelection","piece","RectangleMarker","dom","tr","confChange","setBlinkRate","selectionLayer","markers","main","ranges","marker","selectionBg","hideNativeSelection","Prec","EditorView","setDropCursorPos","StateEffect","pos","mapping","dropCursorPos","StateField","e","drawDropCursor","ViewPlugin","_a","cursorPos","rect","outer","scaleX","scaleY","event","dropCursor","iterMatches","doc","re","from","to","f","m","matchRanges","maxLength","visible","result","MatchDecorator","config","regexp","decoration","decorate","boundary","match","add","deco","_view","build","RangeSetBuilder","changeFrom","changeTo","_f","_t","updateFrom","updateTo","r","fromLine","toLine","start","end","UnicodeRegexpSupport","Specials","Names","_supportsTabSize","supportsTabSize","styles","specialCharConfig","Facet","configs","combineConfig","highlightSpecialChars","specialCharPlugin","_plugin","Decoration","code","codePointAt","line","size","col","countColumn","TabWidget","SpecialCharWidget","v","DefaultPlaceholder","placeholder$1","WidgetType","options","other","ph","desc","custom","span","width","highlightActiveLine","activeLineHighlighter","__name","lineDeco","Decoration","ViewPlugin","view","update","lastLineStart","deco","r","line","v","MaxOff","rectangleFor","state","a","b","startLine","endLine","ranges","startOff","endOff","i","line","EditorSelection","startCol","endCol","start","findColumn","end","__name","absoluteColumn","view","x","ref","getPos","event","offset","off","col","countColumn","rectangleSelectionStyle","startSel","update","newStart","newLine","_extend","multiple","cur","rectangularSelection","options","filter","e","EditorView","keys","showCrosshair","crosshairCursor","code","getter","plugin","ViewPlugin","isDown","_a","Outside","TooltipViewManager","facet","createTooltipView","removeTooltipView","t","prev","above","input","tooltips","tooltipViews","newAbove","tip","known","other","tooltipView","val","windowSpace","view","docElt","__name","tooltipConfig","Facet","values","_a","_b","_c","browser","conf","knownHeight","tooltipPlugin","ViewPlugin","config","TooltipViewManager","showTooltip","p","entries","tooltip","update","updated","shouldMeasure","newConfig","t","prev","tooltipView","before","arrow","Outside","scaleX","scaleY","makeAbsolute","dom","rect","visible","margins","getScrollMargins","i","tv","measured","space","others","tView","pos","size","arrowHeight","width","height","offset","noOffset","ltr","Direction","left","above","spaceVert","top","right","r","setLeftStyle","arrowLeft","elt","value","current","baseTheme","EditorView","showHoverTooltip","inputs","a","HoverTooltipHost","_HoverTooltipHost","hostedView","name","given","showHoverTooltipHost","state","tooltips","hoverPlugin","HoverPlugin","source","field","locked","setHover","hoverTime","hovered","lastMove","tile","side","posCoords","bidi","s","rtl","open","done","pending","result","e","logException","plugin","index","event","active","isInTooltip","end","isOverRange","watch","tooltipMargin","bottom","arrowRect","from","to","x","y","margin","docBottom","hoverTooltip","options","StateEffect","hoverState","StateField","tr","lock","v","mapped","newPos","MapMode","copy","effect","closeHoverTooltipEffect","f","activateHover","plugins","found","getTooltip","closeHoverTooltipEffect","StateEffect","panelConfig","Facet","configs","topContainer","bottomContainer","c","getPanel","view","panel","plugin","panelPlugin","index","__name","ViewPlugin","showPanel","s","spec","conf","panelConfig","PanelGroup","p","update","input","specs","x","panels","top","bottom","mount","known","EditorView","value","container","parent","curDOM","rm","cls","node","next","Facet","showDialog","config","resolve","promise","r","panelCtor","createDialog","dialogField","openDialogEffect","StateEffect","close","closeDialogEffect","form","f","getDialog","className","dialogs","open","StateField","tr","e","d","state","result","content","done","crelt","forms","i","event","focus","GutterMarker","RangeValue","other","dom","MapMode","gutterLineClass","gutterWidgetClass","defaults","RangeSet","activeGutters","gutter","gutters","unfixGutters","values","gutterView","SingleGutterView","vpA","vpB","vpOverlap","min","detach","after","lineClasses","classSet","contexts","UpdateContext","line","first","b","BlockType","advanceCursor","cx","prev","cur","change","g","before","Direction","asArray","val","cursor","collect","pos","viewport","height","block","markers","above","newElt","GutterElement","extraMarkers","localMarkers","forLine","marker","last","prop","target","y","rect","prevMarkers","updated","vp","elt","sameMarkers","domPos","iNew","iOld","skipTo","matched","c","a","lineNumberMarkers","lineNumberWidgetMarker","lineNumberConfig","combineConfig","exists","add","NumberMarker","number","formatNumber","lineNumberGutter","others","m","widget","maxLineNumber","spacer","max","lineNumbers","lines","activeLineGutterMarker","activeLineGutterHighlighter","marks","range","linePos","highlightActiveLineGutter","nextPropID","Range","__name","from","to","NodeProp","config","match","NodeType","type","result","str","value","MountedTree","tree","overlay","parser","bracketed","noProps","_NodeType","name","props","id","flags","spec","src","prop","group","map","direct","node","groups","i","found","NodeSet","_NodeSet","types","newTypes","newProps","source","add","CachedNode","CachedInnerNode","IterMode","Tree","_Tree","children","positions","length","mounted","ch","mode","TreeCursor","pos","side","scope","cursor","TreeNode","resolveNode","stackIterator","enter","leave","anon","c","entered","balanceRange","data","buildTree","FlatBufferCursor","_FlatBufferCursor","buffer","index","TreeBuffer","_TreeBuffer","set","endIndex","startIndex","dir","pick","checkSide","startI","endI","b","copy","len","j","overlays","_a","parent","scan","inner","BaseNode","before","after","getChildren","context","matchNodeContext","last","_TreeNode","_tree","_parent","e","next","start","BufferNode","BufferContext","hasChild","rPos","enterBracketed","val","cur","p","_BufferNode","parentStart","iterStack","heads","picked","newHeads","StackIterator","layers","mount","root","n","d","child","cache","depth","mustLeave","nodeSet","maxBufferLength","reused","minRepeatType","contextHash","lookAhead","takeNode","minPos","inRepeat","end","size","lookAheadAtStart","contextAtStart","startPos","findBufferSize","endPos","copyToBuffer","localChildren","localPositions","localInRepeat","lastGroup","lastEnd","makeRepeatLeaf","takeFlatNode","make","makeBalanced","makeTree","nodes","nodeCount","stopAt","lastI","lookAheadProp","base","pair","maxSize","fork","skip","minStart","nodeSize","localSkipped","nodeStart","bufferStart","nodeSizeCache","balanceType","mkTop","mkTree","total","maxChild","divide","offset","groupFrom","groupStart","groupSize","nextSize","only","NodeWeakMap","TreeFragment","_TreeFragment","openStart","openEnd","fragments","partial","f","changes","minGap","fI","nextF","cI","off","nextC","nextPos","cut","fFrom","fTo","Parser","input","ranges","StringInput","parse","done","string","parseMixed","nest","MixedParse","InnerParse","target","checkRanges","r","ActiveOverlay","predicate","mounts","prev","stoppedInner","fragmentCursor","FragmentCursor","covered","isCovered","range","m","checkCover","materialize","oldMounts","punchRanges","enterFragments","sliceBuf","buf","stack","newStack","split","innerOffset","stackPos","targetI","StructureCursor","first","frag","outer","current","gapFrom","gapTo","findCoverChanges","a","iA","iB","inA","inB","nextA","nextB","nextTagID","Tag","_Tag","__name","name","set","base","modified","mod","nameOrParent","parent","tag","t","Modifier","a","b","nextModifierID","_Modifier","mods","exists","sameArray","m","configs","powerSet","config","x","array","sets","i","j","e","styleTags","spec","byName","prop","tags","part","pieces","mode","rest","pos","next","last","inner","rule","Rule","ruleNodeProp","NodeProp","cur","root","take","copy","context","other","tagHighlighter","options","map","style","scope","all","cls","sub","tagClass","highlightTags","highlighters","result","highlighter","value","highlightTree","tree","putStyle","from","to","builder","HighlightBuilder","HighlightBuilder","__name","at","highlighters","span","cls","to","cursor","from","inheritedClass","type","start","end","h","rule","getStyleTags","Rule","tagCls","highlightTags","mounted","NodeProp","inner","innerHighlighters","hasChild","i","pos","next","nextPos","rangeFrom","rangeTo","node","ruleNodeProp","t","Tag","comment","name","typeName","propertyName","literal","string","number","content","heading","keyword","operator","punctuation","bracket","meta","tags","val","classHighlighter","tagHighlighter","_a","languageDataProp","NodeProp","defineLanguageFacet","baseData","Facet","values","__name","sublanguageProp","Language","data","parser","extraExtensions","name","EditorState","syntaxTree","language","state","pos","side","top","topNodeAt","base","sub","innerNode","sublang","lang","result","explore","tree","from","mount","r","size","i","ch","Tree","StateEffect","topLang","node","IterMode","LRLanguage","_LRLanguage","spec","type","options","field","DocInput","__name","doc","pos","from","to","stringStart","currentContext","ParseContext","_ParseContext","parser","state","fragments","tree","treeLen","viewport","skipped","scheduleOn","Tree","until","upto","_a","endTime","done","TreeFragment","f","prev","r","cutFragments","changes","newState","ranges","fromA","toA","fromB","toB","startLen","Parser","input","cx","NodeType","frags","LanguageState","_LanguageState","context","tr","newCx","vpTo","parseState","language","Language","StateField","value","e","requestIdle","callback","timeout","idle","isInputPending","parseWorker","ViewPlugin","view","update","field","deadline","now","viewportFirst","err","logException","Facet","languages","EditorView","lang","LanguageSupport","support","indentService","Facet","indentUnit","__name","values","unit","e","getIndentUnit","state","indentString","cols","result","ts","ch","i","getIndentation","context","pos","EditorState","IndentContext","service","tree","syntaxTree","syntaxIndentation","IndentContext","__name","state","options","getIndentUnit","pos","bias","line","simulateBreak","simulateDoubleBreak","text","from","result","override","countColumn","overriden","indentNodeProp","NodeProp","syntaxIndentation","cx","ast","stack","inner","add","cur","i","indentFor","strategy","indentStrategy","TreeIndentContext","ignoreClosed","tree","first","close","last","closed","delimitedStrategy","topIndent","_TreeIndentContext","base","context","node","atBreak","isParent","parent","of","bracketedAligned","openToken","sim","openLine","lineEnd","next","space","delimitedIndent","closing","align","units","closedAt","after","aligned","flatIndent","continuedIndent","except","matchExcept","DontIndentBeyond","indentOnInput","EditorState","tr","rules","doc","head","lineStart","r","changes","indent","getIndentation","norm","indentString","foldService","Facet","foldNodeProp","foldInside","syntaxFolding","start","end","syntaxTree","found","iter","prop","isUnfinished","value","ch","foldable","service","mapRange","range","mapping","to","foldEffect","StateEffect","unfoldEffect","selectedLines","view","lines","l","foldState","StateField","Decoration","folded","fromA","toA","clearTouchedFolds","rangesToFold","e","foldExists","preparePlaceholder","foldConfig","decorations","PreparedFoldWidget","foldWidget","f","EditorView","ranges","touched","a","b","findFold","state","from","to","_a","found","foldState","__name","foldExists","folded","a","b","maybeEnable","other","StateEffect","codeFolding","foldCode","view","line","selectedLines","range","foldable","foldEffect","announceFold","unfoldCode","effects","unfoldEffect","fold","lineFrom","lineTo","EditorView","foldAll","pos","unfoldAll","field","foldKeymap","foldCode","unfoldCode","foldAll","unfoldAll","defaultConfig","foldConfig","Facet","values","combineConfig","codeFolding","config","result","foldState","baseTheme$1","__name","widgetToDOM","view","prepared","state","conf","onclick","event","line","folded","findFold","unfoldEffect","element","foldWidget","Decoration","WidgetType","PreparedFoldWidget","value","other","foldGutterDefaults","FoldMarker","GutterMarker","open","span","foldGutter","fullConfig","canFold","canUnfold","markers","ViewPlugin","update","language","syntaxTree","builder","RangeSetBuilder","mark","foldable","domEventHandlers","gutter","_a","RangeSet","range","foldEffect","EditorView","HighlightStyle","_HighlightStyle","specs","options","modSpec","def","spec","cls","StyleModule","all","scopeOpt","Language","type","languageDataProp","tagHighlighter","style","highlighterFacet","fallbackHighlighter","getHighlighters","main","syntaxHighlighting","highlighter","ext","treeHighlighter","themeType","TreeHighlighter","__name","view","syntaxTree","getHighlighters","update","tree","highlighters","styleChange","viewport","decoratedToMapped","Decoration","builder","RangeSetBuilder","from","to","highlightTree","style","treeHighlighter","Prec","ViewPlugin","v","defaultHighlightStyle","HighlightStyle","tags","baseTheme","EditorView","DefaultScanDist","DefaultBrackets","bracketMatchingConfig","Facet","configs","combineConfig","defaultRenderMatch","matchingMark","nonmatchingMark","match","decorations","mark","bracketDeco","state","config","range","matchBrackets","bracketMatcher","bracketMatchingUnique","bracketMatching","bracketMatchingHandle","NodeProp","matchingNodes","node","dir","brackets","byProp","index","findHandle","hasHandle","pos","maxScanDistance","cur","matches","handle","matchMarkedBrackets","matchPlainBrackets","_state","_pos","token","matching","parent","firstToken","depth","cursor","endHandle","tokenType","startCh","bracket","startToken","iter","distance","text","basePos","end","found","noTokens","typeArray","NodeType","warned","byTag","defaultTable","legacyName","name","createTokenType","noTokens","warnForPart","part","msg","warned","__name","createTokenType","extra","tagStr","tags$1","name","found","value","tags","tag","key","t","known","byTag","type","NodeType","typeArray","styleTags","marks","Decoration","Direction","toggleComment","__name","target","state","line","config","getConfig","toggleLineComment","toggleBlockCommentByLine","command","f","option","dispatch","tr","changeLineComment","toggleBlockComment","command","changeBlockComment","toggleBlockCommentByLine","command","o","s","changeBlockComment","selectedLineRanges","getConfig","state","pos","data","__name","SearchMargin","findBlockComment","open","close","from","to","textBefore","textAfter","spaceBefore","spaceAfter","beforeOff","startText","endText","startSpace","endSpace","endOff","ranges","r","fromLine","toLine","last","option","tokens","c","comments","i","range","changes","comment","token","changeLineComment","lines","prevLine","startI","minIndent","line","indent","empty","l","single","changeSet","fromHistory","Annotation","isolateHistory","invertedEffects","Facet","historyConfig","configs","combineConfig","_t","isAdjacent","a","b","tr","adj","historyField_","StateField","HistoryState","config","fromHist","item","HistEvent","other","updateBranch","addSelection","isolate","Transaction","event","time","userEvent","value","json","history","EditorView","view","undo","redo","cmd","side","selection","state","dispatch","historyState","historyField_","tr","__name","undo","redo","undoSelection","redoSelection","HistEvent","_HistEvent","__name","changes","effects","mapped","startSelection","selectionsAfter","after","_a","_b","_c","s","json","ChangeSet","ChangeDesc","EditorSelection","tr","selection","none","invert","invertedEffects","result","selections","updateBranch","branch","to","maxLen","newEvent","start","newBranch","isAdjacent","a","b","ranges","f","t","_f","_t","i","from","eqSelectionShape","r","conc","MaxSelectionsPerEvent","addSelection","lastEvent","sels","popSelection","last","addMappingToBranch","mapping","length","event","mapEvent","extraSelections","mappedChanges","before","fullMapping","StateEffect","joinableUserEvent","HistoryState","_HistoryState","done","undone","prevTime","prevUserEvent","time","userEvent","config","newGroupDelay","side","state","onlySelection","fromHistory","rest","historyKeymap","undo","redo","undoSelection","redoSelection","updateSel","sel","by","setSel","moveSel","dispatch","how","rangeEnd","range","forward","cursorByChar","view","ltrAtCursor","Direction","cursorCharLeft","cursorCharRight","cursorByGroup","view","forward","moveSel","range","rangeEnd","__name","cursorGroupLeft","ltrAtCursor","cursorGroupRight","segmenter","interestingNode","state","node","bracketProp","len","__name","moveBySyntax","start","forward","pos","syntaxTree","NodeProp","at","next","bracket","match","newPos","matchBrackets","EditorSelection","cursorSyntaxLeft","view","moveSel","range","ltrAtCursor","cursorSyntaxRight","cursorByLine","rangeEnd","moved","cursorLineUp","cursorLineDown","pageInfo","selfScroll","marginTop","marginBottom","height","source","EditorView","margins","cursorByPage","page","selection","updateSel","effect","startPos","scrollRect","scrollTop","scrollBottom","setSel","cursorPageUp","cursorPageDown","moveByLineBoundary","line","space","cursorLineBoundaryForward","cursorLineBoundaryBackward","cursorLineBoundaryLeft","cursorLineBoundaryRight","cursorLineStart","cursorLineEnd","toMatchingBracket","dispatch","extend","found","matching","head","cursorMatchingBracket","extendSel","target","forward","how","selection","updateSel","range","EditorSelection","head","setSel","__name","selectByChar","view","selectCharLeft","ltrAtCursor","selectCharRight","selectByGroup","view","forward","extendSel","range","__name","selectGroupLeft","ltrAtCursor","selectGroupRight","selectSyntaxLeft","__name","view","forward","ltrAtCursor","extendSel","range","moveBySyntax","selectSyntaxRight","selectByLine","selectLineUp","selectLineDown","selectByPage","pageInfo","selectPageUp","selectPageDown","selectLineBoundaryForward","moveByLineBoundary","selectLineBoundaryBackward","selectLineBoundaryLeft","selectLineBoundaryRight","selectLineStart","EditorSelection","selectLineEnd","cursorDocStart","state","dispatch","setSel","cursorDocEnd","selectDocStart","selectDocEnd","selectAll","selectLine","ranges","selectedLineBlocks","from","to","selectParentSyntax","selection","updateSel","tree","syntaxTree","stack","stackBefore","cur","node","addCursorVertically","sel","line","next","r","addCursorAbove","addCursorBelow","simplifySelection","deleteBy","target","by","event","changes","towards","skipAtomic","EditorView","pos","f","deleteByChar","byIndentUnit","before","targetPos","col","countColumn","drop","getIndentUnit","i","findClusterBreak","deleteCharBackward","deleteCharForward","__name","view","deleteByChar","deleteByGroup","target","forward","deleteBy","range","pos","state","line","categorize","cat","next","findClusterBreak","nextChar","nextCat","deleteGroupBackward","deleteGroupForward","deleteToLineEnd","__name","view","deleteBy","range","lineEnd","deleteLineBoundaryBackward","__name","view","deleteBy","range","lineStart","deleteLineBoundaryForward","splitLine","__name","state","dispatch","changes","range","Text","EditorSelection","transposeChars","pos","line","from","findClusterBreak","to","selectedLineBlocks","blocks","upto","startLine","endLine","prev","moveLine","forward","ranges","block","nextLine","size","r","moveLineUp","moveLineDown","copyLine","changeSet","copyLineUp","copyLineDown","deleteLine","view","selection","updateSel","dist","isBetweenBrackets","state","pos","context","syntaxTree","before","after","closedBy","NodeProp","__name","insertNewlineAndIndent","newlineAndIndent","insertBlankLine","atEof","dispatch","changes","range","from","to","line","explode","cx","IndentContext","indent","getIndentation","countColumn","insert","indentString","Text","EditorSelection","changeBySelectedLine","f","atLine","changeSet","indentSelection","updated","start","found","cur","norm","indentMore","indentUnit","indentLess","space","col","keep","getIndentUnit","toggleTabFocusMode","view","emacsStyleKeymap","cursorCharLeft","selectCharLeft","cursorCharRight","selectCharRight","cursorLineUp","selectLineUp","cursorLineDown","selectLineDown","cursorLineStart","selectLineStart","cursorLineEnd","selectLineEnd","deleteCharForward","deleteCharBackward","deleteToLineEnd","deleteGroupBackward","splitLine","transposeChars","cursorPageDown","standardKeymap","cursorGroupLeft","selectGroupLeft","cursorLineBoundaryLeft","selectLineBoundaryLeft","cursorGroupRight","selectGroupRight","cursorLineBoundaryRight","selectLineBoundaryRight","cursorDocStart","selectDocStart","cursorPageUp","selectPageUp","cursorDocEnd","selectDocEnd","selectPageDown","cursorLineBoundaryBackward","selectLineBoundaryBackward","cursorLineBoundaryForward","selectLineBoundaryForward","insertNewlineAndIndent","selectAll","deleteGroupForward","deleteLineBoundaryBackward","deleteLineBoundaryForward","b","defaultKeymap","cursorSyntaxLeft","selectSyntaxLeft","cursorSyntaxRight","selectSyntaxRight","moveLineUp","copyLineUp","moveLineDown","copyLineDown","addCursorAbove","addCursorBelow","simplifySelection","insertBlankLine","selectLine","selectParentSyntax","indentLess","indentMore","indentSelection","deleteLine","cursorMatchingBracket","toggleComment","toggleBlockComment","toggleTabFocusMode","basicNormalize","x","SearchCursor","__name","text","query","from","to","normalize","test","codePointAt","next","str","fromCodePoint","start","codePointSize","norm","i","pos","posPrecise","code","match","end","endPrecise","partial","keep","empty","baseFlags","RegExpCursor","options","MultilineRegExpCursor","startLine","toCharEnd","skip","off","flattened","FlattenedDoc","_FlattenedDoc","doc","cached","flat","cachedFrom","validRegExp","source","line","gotoLine","view","open","getDialog","field","state","close","result","showDialog","form","sign","ln","cl","percent","col","pc","docLine","selection","EditorSelection","EditorView","defaultHighlightOptions","highlightConfig","Facet","combineConfig","a","b","highlightSelectionMatches","ext","defaultTheme","matchHighlighter","matchDeco","Decoration","mainMatchDeco","insideWordBoundaries","check","CharCategory","insideWord","ViewPlugin","update","conf","sel","range","word","len","deco","part","cursor","v","selectWord","dispatch","newSel","findNextOccurrence","main","ranges","fullWord","cycled","r","selectNextOccurrence","searchedText","searchConfigFacet","configs","SearchPanel","SearchQuery","__name","config","validRegExp","text","_","ch","other","RegExpQuery","StringQuery","state","from","to","st","EditorState","regexpCursor","stringCursor","QueryType","spec","wrapStringTest","test","inner","buffer","bufferPos","match","stringWordTest","SearchCursor","x","doc","categorizer","buf","bufPos","charBefore","CharCategory","charAfter","curFrom","curTo","cursor","end","pos","start","range","found","_result","limit","ranges","add","wrapRegexpTest","regexpWordTest","RegExpCursor","str","index","findClusterBreak","_from","_to","size","result","m","l","n","setSearchQuery","StateEffect","togglePanel","searchState","StateField","SearchState","defaultQuery","value","tr","effect","createSearchPanel","f","showPanel","val","SearchState","__name","query","panel","matchMark","Decoration","selectedMatchMark","searchHighlighter","ViewPlugin","view","searchState","update","state","builder","RangeSetBuilder","i","ranges","l","from","to","selected","r","v","searchCommand","f","openSearchPanel","findNext","next","selection","EditorSelection","config","searchConfigFacet","announceMatch","selectSearchInput","findPrevious","prev","selectMatches","selectSelectionMatches","dispatch","sel","main","cur","SearchCursor","replaceNext","match","changes","replacement","effects","EditorView","changeSet","replaceAll","precise","announceText","createSearchPanel","defaultQuery","fallback","_a","_b","_c","_d","_e","selText","SearchQuery","getSearchInput","getPanel","input","searchInput","setSearchQuery","togglePanel","StateEffect","searchExtensions","closeSearchPanel","searchKeymap","gotoLine","selectNextOccurrence","SearchPanel","crelt","phrase","button","name","onclick","content","e","runScopeHandlers","tr","effect","AnnounceMargin","Break","line","lineEnd","start","end","text","baseTheme","Prec","CompletionContext","__name","state","pos","explicit","view","types","token","syntaxTree","expr","line","start","str","found","ensureAnchor","type","listener","options","toSet","chars","flat","words","prefixMatch","first","rest","label","i","source","completeFromList","list","o","validFor","match","context","ifNotIn","nodes","source","context","pos","syntaxTree","__name","Option","completion","match","score","cur","state","ensureAnchor","expr","start","_a","addStart","addEnd","pickedCompletion","Annotation","insertCompletionText","text","from","to","main","fromOff","toOff","range","lines","EditorSelection","SourceCache","asSource","known","completeFromList","startCompletionEffect","StateEffect","closeCompletionEffect","FuzzyMatcher","pattern","p","char","codePointAt","size","codePointSize","part","upper","matched","word","chars","folded","any","precise","byWord","first","firstSize","direct","len","anyTo","i","e","next","preciseTo","byWordTo","byWordFolded","adjacentTo","adjacentStart","adjacentEnd","hasLower","wordAdjacent","prevType","ch","type","fromCodePoint","positions","result","StrictMatcher","completionConfig","Facet","configs","combineConfig","defaultPositionInfo","a","b","c","joinClass","view","list","option","info","space","tooltip","rtl","Direction","left","narrow","side","offset","maxWidth","spaceLeft","spaceRight","infoWidth","infoHeight","spaceBelow","scaleY","scaleX","setSelectedEffect","optionContent","config","content","icon","cls","_s","_v","labelElt","label","off","j","span","detailElt","rangeAroundSelected","total","selected","max","CompletionTooltip","stateField","applyCompletion","cState","options","dom","move","id","update","prevState","disabled","open","newSel","infoResult","obj","logException","wrap","destroy","set","opt","scrollIntoView","sel","listRect","infoRect","selRect","docElt","ul","curSection","section","name","header","li","node","completionTooltip","container","element","parent","self","sortOptions","active","sections","dynamicSectionScore","addOption","s","conf","getMatch","matcher","sectionOrder","cmp","prev","compare","CompletionDialog","_CompletionDialog","attrs","timestamp","makeAttrs","didSetActive","selectedValue","createTooltip","changes","CompletionState","_CompletionState","none","tr","ActiveSource","didSet","setActiveEffect","sameResults","effect","baseAttrs","noAttrs","iA","iB","endA","endB","getUpdateType","typing","_ActiveSource","explicit","value","ActiveResult","_ActiveResult","limit","checkValid","CompletionContext","mapping","validFor","sources","completionState","StateField","f","showTooltip","val","EditorView","apply","moveCompletionSelection","forward","by","step","getTooltip","length","acceptCompletion","startCompletion","closeCompletion","RunningQuery","MaxUpdateCount","MinAbortTime","completionPlugin","ViewPlugin","doesReset","query","handler","delay","q","r","pending","err","updated","current","event","dialog","windows","commitCharacters","Prec","field","commitChars","baseTheme","FieldPos","line","FieldRange","_FieldRange","MapMode","Snippet","_Snippet","fieldPositions","lineStart","lineObj","baseIndent","indent","tabs","indentUnit","ranges","template","fields","m","seq","rawName","found","snip","_","brace","index","fieldMarker","Decoration","WidgetType","fieldRange","ActiveSnippet","_ActiveSnippet","mapped","setActive","moveToField","snippetState","fieldSelection","snippet","editor","spec","Text","Transaction","effects","addSnippetKeymap","snippetPointerHandler","moveField","dir","dispatch","last","clearSnippet","nextSnippetField","prevSnippetField","defaultSnippetKeymap","nextSnippetField","prevSnippetField","clearSnippet","snippetKeymap","Facet","maps","addSnippetKeymap","Prec","keymap","state","snippetCompletion","template","completion","snippet","__name","snippetPointerHandler","EditorView","event","view","active","snippetState","pos","match","r","fieldSelection","setActive","ActiveSnippet","defaults","closeBracketEffect","StateEffect","value","mapping","mapped","MapMode","closedBracket","RangeValue","bracketState","StateField","RangeSet","tr","line","__name","from","effect","closeBrackets","inputHandler","definedClosing","closing","ch","i","fromCodePoint","config","state","pos","android","EditorView","view","to","insert","sel","codePointSize","codePointAt","insertBracket","deleteBracketPair","dispatch","tokens","dont","changes","range","before","prevChar","token","nextChar","EditorSelection","closeBracketsKeymap","bracket","conf","tok","closed","handleSame","handleOpen","closedBracketAt","handleClose","found","doc","next","prev","open","close","closeBefore","_open","allowTriple","stringPrefixes","start","nodeStart","content","canStartStringAt","CharCategory","probablyInString","tree","syntaxTree","quoteToken","prefixes","node","maxPrefix","m","p","quotePos","first","parent","charCat","prefix","autocompletion","commitCharacters","completionState","completionConfig","completionPlugin","completionKeymapExt","baseTheme","completionKeymap","startCompletion","closeCompletion","moveCompletionSelection","acceptCompletion","Prec","keymap","SelectedDiagnostic","__name","from","to","diagnostic","LintState","_LintState","diagnostics","panel","selected","state","diagnosticFilter","lintConfig","sorted","a","b","deco","RangeSetBuilder","active","pos","scan","scanPos","docLen","i","next","p","d","widget","behind","check","sev","maxSeverity","Decoration","DiagnosticWidget","markClass","c","set","findDiagnostic","after","found","spec","hideTooltip","tr","tooltip","result","line","e","setDiagnosticsEffect","maybeEnableLint","effects","lintState","StateEffect","lintExtensions","setDiagnosticsEffect","StateEffect","togglePanel","movePanelSelection","lintState","StateField","LintState","Decoration","value","tr","mapped","selected","panel","selPos","findDiagnostic","lintConfig","effect","LintPanel","__name","f","showPanel","val","EditorView","s","activeMark","Decoration","lintTooltip","view","pos","side","diagnostics","lintState","found","start","end","from","to","spec","diagnosticFilter","lintConfig","diagnosticsTooltip","__name","crelt","d","renderDiagnostic","openLintPanel","field","maybeEnableLint","togglePanel","panel","getPanel","LintPanel","closeLintPanel","nextDiagnostic","sel","next","findDiagnostic","activateHover","lintHover","tr","lintKeymap","openLintPanel","nextDiagnostic","lintConfig","Facet","input","i","x","combineConfig","__name","combineFilter","a","b","u","t","y","d","s","assignKeys","actions","assigned","name","ch","c","__name","renderDiagnostic","view","diagnostic","inPanel","_a","keys","crelt","action","i","fired","click","e","found","findDiagnostic","lintState","keyIndex","nameElt","markClass","DiagnosticWidget","WidgetType","sev","other","PanelItem","LintPanel","_LintPanel","onkeydown","event","closeLintPanel","onclick","selected","diagnostics","needsSync","newSelectedItem","seen","_start","_end","spec","item","j","sel","panel","scaleY","domPos","rm","prev","selectedIndex","field","selection","movePanelSelection","svg","content","attrs","underline","color","baseTheme","EditorView","severityWeight","maxSeverity","weight","d","w","lintHover","hoverTooltip","lintTooltip","hideTooltip","lintExtensions","lintState","EditorView","state","selected","panel","Decoration","activeMark","baseTheme","basicSetup","lineNumbers","highlightActiveLineGutter","highlightSpecialChars","history","foldGutter","drawSelection","dropCursor","EditorState","indentOnInput","syntaxHighlighting","defaultHighlightStyle","bracketMatching","closeBrackets","autocompletion","rectangularSelection","crosshairCursor","highlightActiveLine","highlightSelectionMatches","keymap","closeBracketsKeymap","defaultKeymap","searchKeymap","historyKeymap","foldKeymap","completionKeymap","lintKeymap","Stack","_Stack","__name","p","stack","state","reducePos","pos","score","buffer","bufferBase","curContext","lookAhead","parent","_","i","cx","StackContext","start","action","_a","depth","type","parser","lookaheadRecord","dPrec","base","size","count","baseStateID","term","end","mustSink","top","index","mustMove","scan","nextState","skipped","next","nextStart","nextEnd","value","off","isNode","sim","SimulatedStack","nextStates","best","s","v","result","reduce","target","backup","seen","explore","rDepth","found","other","dialectID","last","context","newCx","tracker","goto","StackBufferCursor","_StackBufferCursor","decodeArray","input","Type","array","out","stop","digit","CachedToken","nullToken","InputStream","ranges","offset","assoc","range","idx","resolved","token","endOffset","endPos","chunk","chunkPos","nextChunk","n","from","to","TokenGroup","data","id","readToken","LocalTokenGroup","precTable","elseToken","atEof","nextPos","ExternalTokenizer","options","group","precOffset","groupMask","dialect","accEnd","overrides","low","high","mid","findOffset","prev","tableData","tableOffset","iPrev","verbose","stackIDs","cutAt","tree","side","cursor","IterMode","FragmentCursor","fragments","nodeSet","fr","Tree","NodeProp","TokenCache","stream","actionIndex","main","tokenizers","mask","tokenizer","startIndex","set","pair","Parse","stacks","newStacks","stopped","stoppedTokens","tok","finished","findFinished","maxRemaining","a","b","outer","j","split","strictCx","cxHash","cached","match","inner","defaultReduce","actions","localStack","pushStackDedup","tokens","restarted","tokenEnd","force","forceBase","insert","Dialect","source","flags","disabled","x","ContextTracker","spec","LRParser","_LRParser","Parser","nodeNames","topTerms","r","nodeProps","setProp","nodeID","prop","propSpec","NodeSet","name","NodeType","tokenArray","getSpecializer","parse","w","loose","table","groupTag","terminal","slot","flag","deflt","config","copy","info","t","prec","values","part","descendantOp","Unit","identifier","callee","VariableName","queryIdentifier","queryVariableName","QueryCallee","space","colon","parenL","underscore","bracketL","dash","period","hash","percent","ampersand","backslash","newline","asterisk","isAlpha","ch","__name","isDigit","isHex","identifierTokens","id","varName","input","stack","inside","dashes","i","next","identifiers","ExternalTokenizer","queryIdentifiers","descendant","unitToken","cssHighlighting","styleTags","tags","spec_callee","spec_queryIdentifier","spec_QueryCallee","spec_AtKeyword","spec_identifier","parser","LRParser","LocalTokenGroup","value","_properties","properties","style","names","seen","prop","ch","name","__name","pseudoClasses","values","tags","atRules","label","identifier","variable","isVarArg","node","doc","_a","callee","VariablesByNode","NodeWeakMap","declSelector","astTop","cur","variableNames","isVariable","known","result","cursor","IterMode","option","defineCSSCompletionSource","context","state","pos","syntaxTree","isDash","parent","above","before","cssCompletionSource","cssLanguage","LRLanguage","parser","indentNodeProp","continuedIndent","foldNodeProp","foldInside","css","LanguageSupport","scriptText","StartCloseScriptTag","styleText","StartCloseStyleTag","textareaText","StartCloseTextareaTag","EndTag","SelfClosingEndTag","StartTag","StartScriptTag","StartStyleTag","StartTextareaTag","StartSelfClosingTag","StartCloseTag","NoMatchStartCloseTag","MismatchedStartCloseTag","missingCloseTag","IncompleteTag","IncompleteCloseTag","commentContent$1","Element","TagName","Attribute","AttributeName","AttributeValue","UnquotedAttributeValue","ScriptText","StyleText","TextareaText","OpenTag","CloseTag","Dialect_noMatch","Dialect_selfClosing","selfClosers","implicitlyClosed","closeOnOpen","nameChar","ch","__name","cachedName","cachedInput","cachedPos","tagNameAfter","input","offset","pos","next","name","question","bang","lessThan","greaterThan","slash","dash","ElementContext","parent","startTagTerms","elementContext","ContextTracker","context","term","stack","node","type","tagStart","ExternalTokenizer","close","cx","commentContent","dashes","i","inForeignElement","endTag","selfClosing","contentTokenizer","tag","textToken","endToken","lastState","state","matchedLen","scriptTokens","styleTokens","textareaTokens","htmlHighlighting","styleTags","tags","parser","LRParser","getAttrs","openTag","attrs","att","value","findTagName","tagNameNode","maybeNest","configureNesting","attributes","script","style","textarea","other","attr","parseMixed","id","n","open","tagName","to","nameNode","matches","from","last","noSemi","noSemiType","incdec","incdecPrefix","questionDot","JSXStartTag","insertSemi","spaces","newline","LineComment","BlockComment","Dialect_jsx","space","braceR","semicolon","slash","star","plus","minus","lt","comma","question","dot","bracketL","trackNewline","ContextTracker","context","term","insertSemicolon","ExternalTokenizer","input","stack","next","noSemicolon","after","noSemicolonType","operatorToken","mayPostfix","identifierChar","ch","start","__name","jsx","back","jsHighlight","styleTags","tags","spec_identifier","spec_word","spec_LessThan","parser","LRParser","LocalTokenGroup","value","snippets","snippetCompletion","typescriptSnippets","cache","NodeWeakMap","ScopeNodes","defID","type","node","def","id","__name","functionContext","gatherCompletions","getScope","doc","cached","completions","top","name","IterMode","gather","c","Identifier","dontComplete","localCompletionSource","context","inner","syntaxTree","isWord","options","pos","javascriptLanguage","LRLanguage","parser","indentNodeProp","continuedIndent","flatIndent","__name","context","after","closed","isCase","delimitedIndent","cx","foldNodeProp","foldInside","tree","open","close","_a","name","jsxSublanguage","node","defineLanguageFacet","typescriptLanguage","jsxLanguage","sublanguageProp","tsxLanguage","kwCompletion","keywords","typescriptKeywords","javascript","config","lang","completions","typescriptSnippets","snippets","LanguageSupport","ifNotIn","dontComplete","completeFromList","localCompletionSource","autoCloseTags","findOpenTag","elementName","doc","max","ch","android","EditorView","view","from","to","text","defaultInsert","base","state","closeTags","range","head","around","syntaxTree","empty","insert","EditorSelection","openTag","Targets","Charsets","Methods","Encs","Bool","S","Tags","GlobalAttrs","eventAttributes","a","Schema","__name","extraTags","extraAttrs","elementName","doc","tree","max","tag","name","findParentElement","skip","allowedChildren","schema","parentInfo","openTags","open","parent","tagName","identifier","completeTag","state","from","to","end","i","completeCloseTag","completeStartTag","pos","options","level","completeAttrName","elt","info","localAttrs","names","attrName","completeAttrValue","_a","nameNode","token","attrs","base","quoteStart","quoteEnd","value","htmlCompletionFor","context","syntaxTree","around","scan","before","last","htmlCompletionSourceWith","config","extraTags","extraAttrs","schema","Schema","context","htmlCompletionFor","__name","jsonParser","javascriptLanguage","defaultNesting","attrs","typescriptLanguage","jsxLanguage","tsxLanguage","cssLanguage","defaultAttrs","eventAttributes","name","htmlPlain","LRLanguage","parser","indentNodeProp","after","endElt","close","cur","last","foldNodeProp","node","first","bracketMatchingHandle","htmlLanguage","configureNesting","html","dialect","wrap","lang","LanguageSupport","autoCloseTags","javascript","css","selfClosers","isClosed","doc","elt","_a","next","elementName","EditorView","view","from","to","text","insertTransaction","base","state","closeTags","range","didType","head","syntaxTree","tag","insert","EditorSelection","$editor","signal","$editingFacet","files","activeIndex","startedEditing","isProgrammaticSet","fileDecoder","LOADING_EL_ID","setEditorLoading","loading","container","el","__name","DEFAULT_INTERFACE","DEFAULT_PRELUDE","DEFAULT_EXAMPLES","renderDefaultExamples","ul","example","li","head","title","edit","desc","basename","path","trimmed","idx","isReservedIndexPath","languageForPath","html","css","javascript","markEditedExtension","EditorView","update","baseExtensions","basicSetup","autocompletion","setEditorContent","content","isProgrammaticSet","$editor","__name","activateTab","index","editor","files","activeIndex","StateEffect","baseExtensions","languageForPath","renderTabs","renameFile","newPath","trimmed","path","isReservedIndexPath","f","i","langChanged","renamedPath","startedEditing","a","b","addFile","dialog","e","input","existing","pathInput","removeFile","tabsEl","add","sizeAddButton","gutter","width","file","tab","label","basename","commit","done","close","err","loadFacetFiles","facet","tile","resolveFacetTile","resources","blocks","loaded","tileResourceEntries","entry","fileDecoder","applyDefaultTemplateForKind","kind","DEFAULT_PRELUDE","DEFAULT_INTERFACE","loadDefaultExample","$editingFacet","kindEl","renderEditor","editorContainer","EditorView","onBuildSubmit","event","nameEl","descriptionEl","fileMap","tileFromFiles","name","description","now","saveFacet","editFacet","ogFacet","url","id","setEditorLoading","handleBuildFormSubmit","importBtn","importInput","isListening","listenForExamplesEdit","target","rel","li","uri","facetFromURI","editFacetFromURL","params","idParam","uriParam","out","output","data"],"sourceRoot":"","file":"/chunk-BVWJMJYM.js.map"} \ No newline at end of file diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-C5GF5WSP.js b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-C5GF5WSP.js similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-C5GF5WSP.js rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-C5GF5WSP.js diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-C5GF5WSP.js.br b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-C5GF5WSP.js.br similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-C5GF5WSP.js.br rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-C5GF5WSP.js.br diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-C5GF5WSP.js.map b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-C5GF5WSP.js.map similarity index 97% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-C5GF5WSP.js.map rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-C5GF5WSP.js.map index 31fb7721..dd6b6d9c 100644 --- a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-C5GF5WSP.js.map +++ b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-C5GF5WSP.js.map @@ -1 +1 @@ -{"version":3,"sources":["/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/id3v2/ID3v2Token.js"],"sourcesContent":["import * as Token from 'token-types';\nimport * as util from '../common/Util.js';\n/**\n * The picture type according to the ID3v2 APIC frame\n * Ref: http://id3.org/id3v2.3.0#Attached_picture\n */\nexport const AttachedPictureType = {\n 0: 'Other',\n 1: \"32x32 pixels 'file icon' (PNG only)\",\n 2: 'Other file icon',\n 3: 'Cover (front)',\n 4: 'Cover (back)',\n 5: 'Leaflet page',\n 6: 'Media (e.g. label side of CD)',\n 7: 'Lead artist/lead performer/soloist',\n 8: 'Artist/performer',\n 9: 'Conductor',\n 10: 'Band/Orchestra',\n 11: 'Composer',\n 12: 'Lyricist/text writer',\n 13: 'Recording Location',\n 14: 'During recording',\n 15: 'During performance',\n 16: 'Movie/video screen capture',\n 17: 'A bright coloured fish',\n 18: 'Illustration',\n 19: 'Band/artist logotype',\n 20: 'Publisher/Studio logotype'\n};\n/**\n * https://id3.org/id3v2.3.0#Synchronised_lyrics.2Ftext\n */\nexport const LyricsContentType = {\n other: 0,\n lyrics: 1,\n text: 2,\n movement_part: 3,\n events: 4,\n chord: 5,\n trivia_pop: 6,\n};\nexport const TimestampFormat = {\n notSynchronized: 0,\n mpegFrameNumber: 1,\n milliseconds: 2\n};\n/**\n * 28 bits (representing up to 256MB) integer, the msb is 0 to avoid 'false syncsignals'.\n * 4 * %0xxxxxxx\n */\nexport const UINT32SYNCSAFE = {\n get: (buf, off) => {\n return buf[off + 3] & 0x7f | ((buf[off + 2]) << 7) |\n ((buf[off + 1]) << 14) | ((buf[off]) << 21);\n },\n len: 4\n};\n/**\n * ID3v2 header\n * Ref: http://id3.org/id3v2.3.0#ID3v2_header\n * ToDo\n */\nexport const ID3v2Header = {\n len: 10,\n get: (buf, off) => {\n return {\n // ID3v2/file identifier \"ID3\"\n fileIdentifier: new Token.StringType(3, 'ascii').get(buf, off),\n // ID3v2 versionIndex\n version: {\n major: Token.INT8.get(buf, off + 3),\n revision: Token.INT8.get(buf, off + 4)\n },\n // ID3v2 flags\n flags: {\n // Unsynchronisation\n unsynchronisation: util.getBit(buf, off + 5, 7),\n // Extended header\n isExtendedHeader: util.getBit(buf, off + 5, 6),\n // Experimental indicator\n expIndicator: util.getBit(buf, off + 5, 5),\n footer: util.getBit(buf, off + 5, 4)\n },\n size: UINT32SYNCSAFE.get(buf, off + 6)\n };\n }\n};\nexport const ExtendedHeader = {\n len: 10,\n get: (buf, off) => {\n return {\n // Extended header size\n size: Token.UINT32_BE.get(buf, off),\n // Extended Flags\n extendedFlags: Token.UINT16_BE.get(buf, off + 4),\n // Size of padding\n sizeOfPadding: Token.UINT32_BE.get(buf, off + 6),\n // CRC data present\n crcDataPresent: util.getBit(buf, off + 4, 31)\n };\n }\n};\nexport const TextEncodingToken = {\n len: 1,\n get: (uint8Array, off) => {\n switch (uint8Array[off]) {\n case 0x00:\n return { encoding: 'latin1' }; // binary\n case 0x01:\n return { encoding: 'utf-16le', bom: true };\n case 0x02:\n return { encoding: 'utf-16be', bom: false };\n case 0x03:\n return { encoding: 'utf8', bom: false };\n default:\n return { encoding: 'utf8', bom: false };\n }\n }\n};\n/**\n * Used to read first portion of `SYLT` frame\n */\nexport const TextHeader = {\n len: 4,\n get: (uint8Array, off) => {\n return {\n encoding: TextEncodingToken.get(uint8Array, off),\n language: new Token.StringType(3, 'latin1').get(uint8Array, off + 1)\n };\n }\n};\n/**\n * Used to read first portion of `SYLT` frame\n */\nexport const SyncTextHeader = {\n len: 6,\n get: (uint8Array, off) => {\n const text = TextHeader.get(uint8Array, off);\n return {\n encoding: text.encoding,\n language: text.language,\n timeStampFormat: Token.UINT8.get(uint8Array, off + 4),\n contentType: Token.UINT8.get(uint8Array, off + 5)\n };\n }\n};\n"],"mappings":"oJAMO,IAAMA,EAAsB,CAC/B,EAAG,QACH,EAAG,sCACH,EAAG,kBACH,EAAG,gBACH,EAAG,eACH,EAAG,eACH,EAAG,gCACH,EAAG,qCACH,EAAG,mBACH,EAAG,YACH,GAAI,iBACJ,GAAI,WACJ,GAAI,uBACJ,GAAI,qBACJ,GAAI,mBACJ,GAAI,qBACJ,GAAI,6BACJ,GAAI,yBACJ,GAAI,eACJ,GAAI,uBACJ,GAAI,2BACR,EAIaC,EAAoB,CAC7B,MAAO,EACP,OAAQ,EACR,KAAM,EACN,cAAe,EACf,OAAQ,EACR,MAAO,EACP,WAAY,CAChB,EACaC,EAAkB,CAC3B,gBAAiB,EACjB,gBAAiB,EACjB,aAAc,CAClB,EAKaC,EAAiB,CAC1B,IAAKC,EAAA,CAACC,EAAKC,IACAD,EAAIC,EAAM,CAAC,EAAI,IAASD,EAAIC,EAAM,CAAC,GAAM,EAC1CD,EAAIC,EAAM,CAAC,GAAM,GAAQD,EAAIC,CAAG,GAAM,GAF3C,OAIL,IAAK,CACT,EAMaC,EAAc,CACvB,IAAK,GACL,IAAKH,EAAA,CAACC,EAAKC,KACA,CAEH,eAAgB,IAAUE,EAAW,EAAG,OAAO,EAAE,IAAIH,EAAKC,CAAG,EAE7D,QAAS,CACL,MAAaG,EAAK,IAAIJ,EAAKC,EAAM,CAAC,EAClC,SAAgBG,EAAK,IAAIJ,EAAKC,EAAM,CAAC,CACzC,EAEA,MAAO,CAEH,kBAAwBI,EAAOL,EAAKC,EAAM,EAAG,CAAC,EAE9C,iBAAuBI,EAAOL,EAAKC,EAAM,EAAG,CAAC,EAE7C,aAAmBI,EAAOL,EAAKC,EAAM,EAAG,CAAC,EACzC,OAAaI,EAAOL,EAAKC,EAAM,EAAG,CAAC,CACvC,EACA,KAAMH,EAAe,IAAIE,EAAKC,EAAM,CAAC,CACzC,GApBC,MAsBT,EACaK,EAAiB,CAC1B,IAAK,GACL,IAAKP,EAAA,CAACC,EAAKC,KACA,CAEH,KAAYM,EAAU,IAAIP,EAAKC,CAAG,EAElC,cAAqBO,EAAU,IAAIR,EAAKC,EAAM,CAAC,EAE/C,cAAqBM,EAAU,IAAIP,EAAKC,EAAM,CAAC,EAE/C,eAAqBI,EAAOL,EAAKC,EAAM,EAAG,EAAE,CAChD,GAVC,MAYT,EACaQ,EAAoB,CAC7B,IAAK,EACL,IAAKV,EAAA,CAACW,EAAYT,IAAQ,CACtB,OAAQS,EAAWT,CAAG,EAAG,CACrB,IAAK,GACD,MAAO,CAAE,SAAU,QAAS,EAChC,IAAK,GACD,MAAO,CAAE,SAAU,WAAY,IAAK,EAAK,EAC7C,IAAK,GACD,MAAO,CAAE,SAAU,WAAY,IAAK,EAAM,EAC9C,IAAK,GACD,MAAO,CAAE,SAAU,OAAQ,IAAK,EAAM,EAC1C,QACI,MAAO,CAAE,SAAU,OAAQ,IAAK,EAAM,CAC9C,CACJ,EAbK,MAcT,EAIaU,EAAa,CACtB,IAAK,EACL,IAAKZ,EAAA,CAACW,EAAYT,KACP,CACH,SAAUQ,EAAkB,IAAIC,EAAYT,CAAG,EAC/C,SAAU,IAAUE,EAAW,EAAG,QAAQ,EAAE,IAAIO,EAAYT,EAAM,CAAC,CACvE,GAJC,MAMT,EAIaW,EAAiB,CAC1B,IAAK,EACL,IAAKb,EAAA,CAACW,EAAYT,IAAQ,CACtB,IAAMY,EAAOF,EAAW,IAAID,EAAYT,CAAG,EAC3C,MAAO,CACH,SAAUY,EAAK,SACf,SAAUA,EAAK,SACf,gBAAuBC,EAAM,IAAIJ,EAAYT,EAAM,CAAC,EACpD,YAAmBa,EAAM,IAAIJ,EAAYT,EAAM,CAAC,CACpD,CACJ,EARK,MAST","names":["AttachedPictureType","LyricsContentType","TimestampFormat","UINT32SYNCSAFE","__name","buf","off","ID3v2Header","StringType","INT8","getBit","ExtendedHeader","UINT32_BE","UINT16_BE","TextEncodingToken","uint8Array","TextHeader","SyncTextHeader","text","UINT8"],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse","file":"/chunk-C5GF5WSP.js.map"} \ No newline at end of file +{"version":3,"sources":["/node_modules/.deno/music-metadata@11.15.0/node_modules/music-metadata/lib/id3v2/ID3v2Token.js"],"sourcesContent":["import * as Token from 'token-types';\nimport * as util from '../common/Util.js';\n/**\n * The picture type according to the ID3v2 APIC frame\n * Ref: http://id3.org/id3v2.3.0#Attached_picture\n */\nexport const AttachedPictureType = {\n 0: 'Other',\n 1: \"32x32 pixels 'file icon' (PNG only)\",\n 2: 'Other file icon',\n 3: 'Cover (front)',\n 4: 'Cover (back)',\n 5: 'Leaflet page',\n 6: 'Media (e.g. label side of CD)',\n 7: 'Lead artist/lead performer/soloist',\n 8: 'Artist/performer',\n 9: 'Conductor',\n 10: 'Band/Orchestra',\n 11: 'Composer',\n 12: 'Lyricist/text writer',\n 13: 'Recording Location',\n 14: 'During recording',\n 15: 'During performance',\n 16: 'Movie/video screen capture',\n 17: 'A bright coloured fish',\n 18: 'Illustration',\n 19: 'Band/artist logotype',\n 20: 'Publisher/Studio logotype'\n};\n/**\n * https://id3.org/id3v2.3.0#Synchronised_lyrics.2Ftext\n */\nexport const LyricsContentType = {\n other: 0,\n lyrics: 1,\n text: 2,\n movement_part: 3,\n events: 4,\n chord: 5,\n trivia_pop: 6,\n};\nexport const TimestampFormat = {\n notSynchronized: 0,\n mpegFrameNumber: 1,\n milliseconds: 2\n};\n/**\n * 28 bits (representing up to 256MB) integer, the msb is 0 to avoid 'false syncsignals'.\n * 4 * %0xxxxxxx\n */\nexport const UINT32SYNCSAFE = {\n get: (buf, off) => {\n return buf[off + 3] & 0x7f | ((buf[off + 2]) << 7) |\n ((buf[off + 1]) << 14) | ((buf[off]) << 21);\n },\n len: 4\n};\n/**\n * ID3v2 header\n * Ref: http://id3.org/id3v2.3.0#ID3v2_header\n * ToDo\n */\nexport const ID3v2Header = {\n len: 10,\n get: (buf, off) => {\n return {\n // ID3v2/file identifier \"ID3\"\n fileIdentifier: new Token.StringType(3, 'ascii').get(buf, off),\n // ID3v2 versionIndex\n version: {\n major: Token.INT8.get(buf, off + 3),\n revision: Token.INT8.get(buf, off + 4)\n },\n // ID3v2 flags\n flags: {\n // Unsynchronisation\n unsynchronisation: util.getBit(buf, off + 5, 7),\n // Extended header\n isExtendedHeader: util.getBit(buf, off + 5, 6),\n // Experimental indicator\n expIndicator: util.getBit(buf, off + 5, 5),\n footer: util.getBit(buf, off + 5, 4)\n },\n size: UINT32SYNCSAFE.get(buf, off + 6)\n };\n }\n};\nexport const ExtendedHeader = {\n len: 10,\n get: (buf, off) => {\n return {\n // Extended header size\n size: Token.UINT32_BE.get(buf, off),\n // Extended Flags\n extendedFlags: Token.UINT16_BE.get(buf, off + 4),\n // Size of padding\n sizeOfPadding: Token.UINT32_BE.get(buf, off + 6),\n // CRC data present\n crcDataPresent: util.getBit(buf, off + 4, 31)\n };\n }\n};\nexport const TextEncodingToken = {\n len: 1,\n get: (uint8Array, off) => {\n switch (uint8Array[off]) {\n case 0x00:\n return { encoding: 'latin1' }; // binary\n case 0x01:\n return { encoding: 'utf-16le', bom: true };\n case 0x02:\n return { encoding: 'utf-16be', bom: false };\n case 0x03:\n return { encoding: 'utf8', bom: false };\n default:\n return { encoding: 'utf8', bom: false };\n }\n }\n};\n/**\n * Used to read first portion of `SYLT` frame\n */\nexport const TextHeader = {\n len: 4,\n get: (uint8Array, off) => {\n return {\n encoding: TextEncodingToken.get(uint8Array, off),\n language: new Token.StringType(3, 'latin1').get(uint8Array, off + 1)\n };\n }\n};\n/**\n * Used to read first portion of `SYLT` frame\n */\nexport const SyncTextHeader = {\n len: 6,\n get: (uint8Array, off) => {\n const text = TextHeader.get(uint8Array, off);\n return {\n encoding: text.encoding,\n language: text.language,\n timeStampFormat: Token.UINT8.get(uint8Array, off + 4),\n contentType: Token.UINT8.get(uint8Array, off + 5)\n };\n }\n};\n"],"mappings":"oJAMO,IAAMA,EAAsB,CAC/B,EAAG,QACH,EAAG,sCACH,EAAG,kBACH,EAAG,gBACH,EAAG,eACH,EAAG,eACH,EAAG,gCACH,EAAG,qCACH,EAAG,mBACH,EAAG,YACH,GAAI,iBACJ,GAAI,WACJ,GAAI,uBACJ,GAAI,qBACJ,GAAI,mBACJ,GAAI,qBACJ,GAAI,6BACJ,GAAI,yBACJ,GAAI,eACJ,GAAI,uBACJ,GAAI,2BACR,EAIaC,EAAoB,CAC7B,MAAO,EACP,OAAQ,EACR,KAAM,EACN,cAAe,EACf,OAAQ,EACR,MAAO,EACP,WAAY,CAChB,EACaC,EAAkB,CAC3B,gBAAiB,EACjB,gBAAiB,EACjB,aAAc,CAClB,EAKaC,EAAiB,CAC1B,IAAKC,EAAA,CAACC,EAAKC,IACAD,EAAIC,EAAM,CAAC,EAAI,IAASD,EAAIC,EAAM,CAAC,GAAM,EAC1CD,EAAIC,EAAM,CAAC,GAAM,GAAQD,EAAIC,CAAG,GAAM,GAF3C,OAIL,IAAK,CACT,EAMaC,EAAc,CACvB,IAAK,GACL,IAAKH,EAAA,CAACC,EAAKC,KACA,CAEH,eAAgB,IAAUE,EAAW,EAAG,OAAO,EAAE,IAAIH,EAAKC,CAAG,EAE7D,QAAS,CACL,MAAaG,EAAK,IAAIJ,EAAKC,EAAM,CAAC,EAClC,SAAgBG,EAAK,IAAIJ,EAAKC,EAAM,CAAC,CACzC,EAEA,MAAO,CAEH,kBAAwBI,EAAOL,EAAKC,EAAM,EAAG,CAAC,EAE9C,iBAAuBI,EAAOL,EAAKC,EAAM,EAAG,CAAC,EAE7C,aAAmBI,EAAOL,EAAKC,EAAM,EAAG,CAAC,EACzC,OAAaI,EAAOL,EAAKC,EAAM,EAAG,CAAC,CACvC,EACA,KAAMH,EAAe,IAAIE,EAAKC,EAAM,CAAC,CACzC,GApBC,MAsBT,EACaK,EAAiB,CAC1B,IAAK,GACL,IAAKP,EAAA,CAACC,EAAKC,KACA,CAEH,KAAYM,EAAU,IAAIP,EAAKC,CAAG,EAElC,cAAqBO,EAAU,IAAIR,EAAKC,EAAM,CAAC,EAE/C,cAAqBM,EAAU,IAAIP,EAAKC,EAAM,CAAC,EAE/C,eAAqBI,EAAOL,EAAKC,EAAM,EAAG,EAAE,CAChD,GAVC,MAYT,EACaQ,EAAoB,CAC7B,IAAK,EACL,IAAKV,EAAA,CAACW,EAAYT,IAAQ,CACtB,OAAQS,EAAWT,CAAG,EAAG,CACrB,IAAK,GACD,MAAO,CAAE,SAAU,QAAS,EAChC,IAAK,GACD,MAAO,CAAE,SAAU,WAAY,IAAK,EAAK,EAC7C,IAAK,GACD,MAAO,CAAE,SAAU,WAAY,IAAK,EAAM,EAC9C,IAAK,GACD,MAAO,CAAE,SAAU,OAAQ,IAAK,EAAM,EAC1C,QACI,MAAO,CAAE,SAAU,OAAQ,IAAK,EAAM,CAC9C,CACJ,EAbK,MAcT,EAIaU,EAAa,CACtB,IAAK,EACL,IAAKZ,EAAA,CAACW,EAAYT,KACP,CACH,SAAUQ,EAAkB,IAAIC,EAAYT,CAAG,EAC/C,SAAU,IAAUE,EAAW,EAAG,QAAQ,EAAE,IAAIO,EAAYT,EAAM,CAAC,CACvE,GAJC,MAMT,EAIaW,EAAiB,CAC1B,IAAK,EACL,IAAKb,EAAA,CAACW,EAAYT,IAAQ,CACtB,IAAMY,EAAOF,EAAW,IAAID,EAAYT,CAAG,EAC3C,MAAO,CACH,SAAUY,EAAK,SACf,SAAUA,EAAK,SACf,gBAAuBC,EAAM,IAAIJ,EAAYT,EAAM,CAAC,EACpD,YAAmBa,EAAM,IAAIJ,EAAYT,EAAM,CAAC,CACpD,CACJ,EARK,MAST","names":["AttachedPictureType","LyricsContentType","TimestampFormat","UINT32SYNCSAFE","__name","buf","off","ID3v2Header","StringType","INT8","getBit","ExtendedHeader","UINT32_BE","UINT16_BE","TextEncodingToken","uint8Array","TextHeader","SyncTextHeader","text","UINT8"],"sourceRoot":"","file":"/chunk-C5GF5WSP.js.map"} \ No newline at end of file diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-CFWLGXGD.js b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-CFWLGXGD.js similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-CFWLGXGD.js rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-CFWLGXGD.js diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-CFWLGXGD.js.br b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-CFWLGXGD.js.br similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-CFWLGXGD.js.br rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-CFWLGXGD.js.br diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-CFWLGXGD.js.map b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-CFWLGXGD.js.map similarity index 92% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-CFWLGXGD.js.map rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-CFWLGXGD.js.map index 686e30ac..5cb57083 100644 --- a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-CFWLGXGD.js.map +++ b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-CFWLGXGD.js.map @@ -1 +1 @@ -{"version":3,"sources":["/common/facets/prelude.js"],"sourcesContent":["/**\n * @import {Facet} from \"~/definitions/types.d.ts\"\n */\n\nimport { linkTileResources, resolveFacetTile } from \"../loader.js\";\n\n/**\n * @param {Facet[]} facets\n * @param {HTMLElement} [container]\n */\nexport async function insertPreludes(facets, container) {\n container ??= document.body;\n\n const range = document.createRange();\n range.selectNode(container);\n\n const preludes = facets\n .filter((f) => f.kind === \"prelude\" && f.enabled !== false)\n .sort((a, b) => a.name.localeCompare(b.name));\n\n for (const prelude of preludes) {\n const tile = await resolveFacetTile(prelude);\n if (!tile?.html) continue;\n\n const fragment = range.createContextualFragment(tile.html);\n // Always run linking: it rewrites tile resources to Blob URLs and makes any\n // relative URLs absolute against the Diffuse build root. If linking fails,\n // still inject the prelude rather than skipping it.\n try {\n linkTileResources(fragment, tile.resources, tile.blocks);\n } catch (err) {\n console.error(\"Failed to link prelude resources\", err);\n }\n container.append(fragment);\n }\n}\n"],"mappings":"uFAUA,eAAsBA,EAAeC,EAAQC,EAAW,CACtDA,IAAc,SAAS,KAEvB,IAAMC,EAAQ,SAAS,YAAY,EACnCA,EAAM,WAAWD,CAAS,EAE1B,IAAME,EAAWH,EACd,OAAQI,GAAMA,EAAE,OAAS,WAAaA,EAAE,UAAY,EAAK,EACzD,KAAK,CAACC,EAAGC,IAAMD,EAAE,KAAK,cAAcC,EAAE,IAAI,CAAC,EAE9C,QAAWC,KAAWJ,EAAU,CAC9B,IAAMK,EAAO,MAAMC,EAAiBF,CAAO,EAC3C,GAAI,CAACC,GAAM,KAAM,SAEjB,IAAME,EAAWR,EAAM,yBAAyBM,EAAK,IAAI,EAIzD,GAAI,CACFG,EAAkBD,EAAUF,EAAK,UAAWA,EAAK,MAAM,CACzD,OAASI,EAAK,CACZ,QAAQ,MAAM,mCAAoCA,CAAG,CACvD,CACAX,EAAU,OAAOS,CAAQ,CAC3B,CACF,CAzBsBG,EAAAd,EAAA","names":["insertPreludes","facets","container","range","preludes","f","a","b","prelude","tile","resolveFacetTile","fragment","linkTileResources","err","__name"],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse","file":"/chunk-CFWLGXGD.js.map"} \ No newline at end of file +{"version":3,"sources":["/common/facets/prelude.js"],"sourcesContent":["/**\n * @import {Facet} from \"~/definitions/types.d.ts\"\n */\n\nimport { linkTileResources, resolveFacetTile } from \"../loader.js\";\n\n/**\n * @param {Facet[]} facets\n * @param {HTMLElement} [container]\n */\nexport async function insertPreludes(facets, container) {\n container ??= document.body;\n\n const range = document.createRange();\n range.selectNode(container);\n\n const preludes = facets\n .filter((f) => f.kind === \"prelude\" && f.enabled !== false)\n .sort((a, b) => a.name.localeCompare(b.name));\n\n for (const prelude of preludes) {\n const tile = await resolveFacetTile(prelude);\n if (!tile?.html) continue;\n\n const fragment = range.createContextualFragment(tile.html);\n // Always run linking: it rewrites tile resources to Blob URLs and makes any\n // relative URLs absolute against the Diffuse build root. If linking fails,\n // still inject the prelude rather than skipping it.\n try {\n linkTileResources(fragment, tile.resources, tile.blocks);\n } catch (err) {\n console.error(\"Failed to link prelude resources\", err);\n }\n container.append(fragment);\n }\n}\n"],"mappings":"uFAUA,eAAsBA,EAAeC,EAAQC,EAAW,CACtDA,IAAc,SAAS,KAEvB,IAAMC,EAAQ,SAAS,YAAY,EACnCA,EAAM,WAAWD,CAAS,EAE1B,IAAME,EAAWH,EACd,OAAQI,GAAMA,EAAE,OAAS,WAAaA,EAAE,UAAY,EAAK,EACzD,KAAK,CAACC,EAAGC,IAAMD,EAAE,KAAK,cAAcC,EAAE,IAAI,CAAC,EAE9C,QAAWC,KAAWJ,EAAU,CAC9B,IAAMK,EAAO,MAAMC,EAAiBF,CAAO,EAC3C,GAAI,CAACC,GAAM,KAAM,SAEjB,IAAME,EAAWR,EAAM,yBAAyBM,EAAK,IAAI,EAIzD,GAAI,CACFG,EAAkBD,EAAUF,EAAK,UAAWA,EAAK,MAAM,CACzD,OAASI,EAAK,CACZ,QAAQ,MAAM,mCAAoCA,CAAG,CACvD,CACAX,EAAU,OAAOS,CAAQ,CAC3B,CACF,CAzBsBG,EAAAd,EAAA","names":["insertPreludes","facets","container","range","preludes","f","a","b","prelude","tile","resolveFacetTile","fragment","linkTileResources","err","__name"],"sourceRoot":"","file":"/chunk-CFWLGXGD.js.map"} \ No newline at end of file diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-CR6GBUUD.js b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-CR6GBUUD.js similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-CR6GBUUD.js rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-CR6GBUUD.js diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-CR6GBUUD.js.br b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-CR6GBUUD.js.br similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-CR6GBUUD.js.br rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-CR6GBUUD.js.br diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-CR6GBUUD.js.map b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-CR6GBUUD.js.map similarity index 97% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-CR6GBUUD.js.map rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-CR6GBUUD.js.map index 71548cde..4432ebe1 100644 --- a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-CR6GBUUD.js.map +++ b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-CR6GBUUD.js.map @@ -1 +1 @@ -{"version":3,"sources":["/common/lens-registry.js"],"sourcesContent":["/**\n * Lens registry: authored lens documents that migrate diffuse data from one\n * lexicon NSID to another.\n *\n * Lens documents are deliberately authored (per schema change) and schema\n * independent: each is an object carrying `id`, `source`, `target`, and `steps`,\n * which `@panproto/core`'s `compileLensDocument` accepts. A build's bundled\n * registry resolves an `(sourceNsid, targetNsid)` transition to a lens document.\n * When a payload's `$schemaHistory` embeds its own lens for a segment the reader\n * doesn't know, the embedded document takes precedence for that segment (so old\n * apps can read newer data).\n *\n * In keeping with atproto's lexicon model, the NSID is the schema identity, so\n * `source`/`target` are NSIDs. Compatible evolution keeps the same NSID (new\n * optional fields, no lens needed); breaking changes use a NEW NSID and an\n * authored lens from the old NSID to the new one.\n */\n\n/**\n * A lens document that maps one lexicon NSID to another.\n *\n * @typedef {{\n * id: string;\n * source: string;\n * target: string;\n * steps: unknown[];\n * }} LensDocument\n */\n\n/** @type {Map} */\nconst registry = new Map();\n\n/**\n * Register an authored lens document.\n *\n * @param {LensDocument} doc\n *\n * @example Registers and looks up a lens by its transition\n * ```js\n * import { register, resolve } from \"~/common/lens-registry.js\";\n *\n * register({ id: \"track-v1-to-v2\", source: \"sh.diffuse.output.track\", target: \"sh.diffuse.output.track2\", steps: [] });\n * const doc = resolve(\"sh.diffuse.output.track\", \"sh.diffuse.output.track2\");\n * if (doc?.id !== \"track-v1-to-v2\") throw new Error(\"expected registered lens\");\n * ```\n */\nexport function register(doc) {\n registry.set(key(doc.source, doc.target), doc);\n}\n\n/**\n * Resolve a lens document for a transition. The bundled registry is consulted\n * first; then the `history` supplied with the payload (embedded lenses), which\n * lets an older app traverse segments it doesn't have in its own registry.\n *\n * @param {string} from - The source lexicon NSID\n * @param {string} to - The target lexicon NSID\n * @param {{ history?: import(\"./self-describing.js\").HistoryEntry[] }} [options]\n * @returns {LensDocument | null}\n *\n * @example Finds a bundled-registry lens before any embedded one\n * ```js\n * import { register, resolve } from \"~/common/lens-registry.js\";\n *\n * register({ id: \"a-to-b\", source: \"s\", target: \"t\", steps: [] });\n * const doc = resolve(\"s\", \"t\");\n * if (!doc) throw new Error(\"expected a lens\");\n * ```\n *\n * @example Falls back to an embedded lens for a segment not in the registry\n * ```js\n * import { resolve } from \"~/common/lens-registry.js\";\n *\n * const embedded = { id: \"old-segment\", source: \"s\", target: \"t\", steps: [{ rename_field: { old: \"a\", new: \"b\" } }] };\n * const doc = resolve(\"s\", \"t\", {\n * history: [{\n * from: \"s\", to: \"t\", lens: embedded, complement: null,\n * }],\n * });\n * if (doc?.id !== \"old-segment\") throw new Error(\"expected embedded lens\");\n * ```\n */\nexport function resolve(from, to, options = {}) {\n const bundled = registry.get(key(from, to));\n if (bundled) return bundled;\n\n const entry = options.history?.find(\n (h) => h.from === from && h.to === to,\n );\n return entry?.lens ?? null;\n}\n\n/**\n * @param {string} source\n * @param {string} target\n */\nfunction key(source, target) {\n return `${source}@${target}`;\n}"],"mappings":"wCA8BA,IAAMA,EAAW,IAAI,IAgBd,SAASC,EAASC,EAAK,CAC5BF,EAAS,IAAIG,EAAID,EAAI,OAAQA,EAAI,MAAM,EAAGA,CAAG,CAC/C,CAFgBE,EAAAH,EAAA,YAoCT,SAASI,EAAQC,EAAMC,EAAIC,EAAU,CAAC,EAAG,CAC9C,IAAMC,EAAUT,EAAS,IAAIG,EAAIG,EAAMC,CAAE,CAAC,EAC1C,OAAIE,IAEUD,EAAQ,SAAS,KAC5BE,GAAMA,EAAE,OAASJ,GAAQI,EAAE,KAAOH,CACrC,GACc,MAAQ,KACxB,CARgBH,EAAAC,EAAA,WAchB,SAASF,EAAIQ,EAAQC,EAAQ,CAC3B,MAAO,GAAGD,CAAM,IAAIC,CAAM,EAC5B,CAFSR,EAAAD,EAAA","names":["registry","register","doc","key","__name","resolve","from","to","options","bundled","h","source","target"],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse","file":"/chunk-CR6GBUUD.js.map"} \ No newline at end of file +{"version":3,"sources":["/common/lens-registry.js"],"sourcesContent":["/**\n * Lens registry: authored lens documents that migrate diffuse data from one\n * lexicon NSID to another.\n *\n * Lens documents are deliberately authored (per schema change) and schema\n * independent: each is an object carrying `id`, `source`, `target`, and `steps`,\n * which `@panproto/core`'s `compileLensDocument` accepts. A build's bundled\n * registry resolves an `(sourceNsid, targetNsid)` transition to a lens document.\n * When a payload's `$schemaHistory` embeds its own lens for a segment the reader\n * doesn't know, the embedded document takes precedence for that segment (so old\n * apps can read newer data).\n *\n * In keeping with atproto's lexicon model, the NSID is the schema identity, so\n * `source`/`target` are NSIDs. Compatible evolution keeps the same NSID (new\n * optional fields, no lens needed); breaking changes use a NEW NSID and an\n * authored lens from the old NSID to the new one.\n */\n\n/**\n * A lens document that maps one lexicon NSID to another.\n *\n * @typedef {{\n * id: string;\n * source: string;\n * target: string;\n * steps: unknown[];\n * }} LensDocument\n */\n\n/** @type {Map} */\nconst registry = new Map();\n\n/**\n * Register an authored lens document.\n *\n * @param {LensDocument} doc\n *\n * @example Registers and looks up a lens by its transition\n * ```js\n * import { register, resolve } from \"~/common/lens-registry.js\";\n *\n * register({ id: \"track-v1-to-v2\", source: \"sh.diffuse.output.track\", target: \"sh.diffuse.output.track2\", steps: [] });\n * const doc = resolve(\"sh.diffuse.output.track\", \"sh.diffuse.output.track2\");\n * if (doc?.id !== \"track-v1-to-v2\") throw new Error(\"expected registered lens\");\n * ```\n */\nexport function register(doc) {\n registry.set(key(doc.source, doc.target), doc);\n}\n\n/**\n * Resolve a lens document for a transition. The bundled registry is consulted\n * first; then the `history` supplied with the payload (embedded lenses), which\n * lets an older app traverse segments it doesn't have in its own registry.\n *\n * @param {string} from - The source lexicon NSID\n * @param {string} to - The target lexicon NSID\n * @param {{ history?: import(\"./self-describing.js\").HistoryEntry[] }} [options]\n * @returns {LensDocument | null}\n *\n * @example Finds a bundled-registry lens before any embedded one\n * ```js\n * import { register, resolve } from \"~/common/lens-registry.js\";\n *\n * register({ id: \"a-to-b\", source: \"s\", target: \"t\", steps: [] });\n * const doc = resolve(\"s\", \"t\");\n * if (!doc) throw new Error(\"expected a lens\");\n * ```\n *\n * @example Falls back to an embedded lens for a segment not in the registry\n * ```js\n * import { resolve } from \"~/common/lens-registry.js\";\n *\n * const embedded = { id: \"old-segment\", source: \"s\", target: \"t\", steps: [{ rename_field: { old: \"a\", new: \"b\" } }] };\n * const doc = resolve(\"s\", \"t\", {\n * history: [{\n * from: \"s\", to: \"t\", lens: embedded, complement: null,\n * }],\n * });\n * if (doc?.id !== \"old-segment\") throw new Error(\"expected embedded lens\");\n * ```\n */\nexport function resolve(from, to, options = {}) {\n const bundled = registry.get(key(from, to));\n if (bundled) return bundled;\n\n const entry = options.history?.find(\n (h) => h.from === from && h.to === to,\n );\n return entry?.lens ?? null;\n}\n\n/**\n * @param {string} source\n * @param {string} target\n */\nfunction key(source, target) {\n return `${source}@${target}`;\n}"],"mappings":"wCA8BA,IAAMA,EAAW,IAAI,IAgBd,SAASC,EAASC,EAAK,CAC5BF,EAAS,IAAIG,EAAID,EAAI,OAAQA,EAAI,MAAM,EAAGA,CAAG,CAC/C,CAFgBE,EAAAH,EAAA,YAoCT,SAASI,EAAQC,EAAMC,EAAIC,EAAU,CAAC,EAAG,CAC9C,IAAMC,EAAUT,EAAS,IAAIG,EAAIG,EAAMC,CAAE,CAAC,EAC1C,OAAIE,IAEUD,EAAQ,SAAS,KAC5BE,GAAMA,EAAE,OAASJ,GAAQI,EAAE,KAAOH,CACrC,GACc,MAAQ,KACxB,CARgBH,EAAAC,EAAA,WAchB,SAASF,EAAIQ,EAAQC,EAAQ,CAC3B,MAAO,GAAGD,CAAM,IAAIC,CAAM,EAC5B,CAFSR,EAAAD,EAAA","names":["registry","register","doc","key","__name","resolve","from","to","options","bundled","h","source","target"],"sourceRoot":"","file":"/chunk-CR6GBUUD.js.map"} \ No newline at end of file diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-CRTHWCT3.js b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-CRTHWCT3.js similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-CRTHWCT3.js rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-CRTHWCT3.js diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-CRTHWCT3.js.br b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-CRTHWCT3.js.br similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-CRTHWCT3.js.br rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-CRTHWCT3.js.br diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-CRTHWCT3.js.map b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-CRTHWCT3.js.map similarity index 96% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-CRTHWCT3.js.map rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-CRTHWCT3.js.map index 4cf7963c..8583aee1 100644 --- a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-CRTHWCT3.js.map +++ b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-CRTHWCT3.js.map @@ -1 +1 @@ -{"version":3,"sources":["/components/orchestrator/controller/element.js"],"sourcesContent":["import { defineElement, DiffuseElement, query, whenElementsDefined } from \"~/common/element.js\";\nimport { computed, signal } from \"~/common/signal.js\";\n\n/**\n * @import {OutputElement} from \"@specs/components/output/types.d.ts\"\n * @import AudioEngine from \"~/components/engine/audio/element.js\"\n * @import QueueEngine from \"~/components/engine/queue/element.js\"\n */\n\n////////////////////////////////////////////\n// ELEMENT\n////////////////////////////////////////////\n\n/**\n * Provides commonly used computed signals derived from the audio engine,\n * queue engine, and output — so theme elements don't need to re-implement them.\n */\nclass ControllerOrchestrator extends DiffuseElement {\n static NAME = \"diffuse/orchestrator/controller\";\n\n // SIGNALS - DEPENDENCIES\n\n $audio = signal(/** @type {AudioEngine | undefined} */ (undefined));\n $output = signal(/** @type {OutputElement | undefined} */ (undefined));\n $queue = signal(/** @type {QueueEngine | undefined} */ (undefined));\n\n // SIGNALS - COMPUTED\n\n audio = computed(() => {\n const curr = this.$queue.value?.now();\n return curr ? this.$audio.value?.state(curr.id) : undefined;\n });\n\n currentTrack = computed(() => {\n const item = this.$queue.value?.now();\n if (!item) return undefined;\n const col = this.$output.value?.tracks.collection();\n if (!col || col.state !== \"loaded\") return undefined;\n return col.data.find((t) => t.id === item.id);\n });\n\n isPlaying = computed(() => {\n return this.$audio.value?.isPlaying();\n });\n\n // LIFECYCLE\n\n /**\n * @override\n */\n connectedCallback() {\n super.connectedCallback();\n\n /** @type {AudioEngine} */\n const audio = query(this, \"audio-engine-selector\");\n\n /** @type {OutputElement} */\n const output = query(this, \"output-selector\");\n\n /** @type {QueueEngine} */\n const queue = query(this, \"queue-engine-selector\");\n\n whenElementsDefined({ audio, output, queue }).then(() => {\n this.$audio.value = audio;\n this.$output.value = output;\n this.$queue.value = queue;\n });\n }\n}\n\nexport default ControllerOrchestrator;\n\n////////////////////////////////////////////\n// REGISTER\n////////////////////////////////////////////\n\nexport const CLASS = ControllerOrchestrator;\nexport const NAME = \"do-controller\";\n\ndefineElement(NAME, CLASS);\n"],"mappings":"2JAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,WAAAE,EAAA,SAAAC,EAAA,YAAAC,IAiBA,IAAMC,EAAN,cAAqCC,CAAe,CAjBpD,MAiBoD,CAAAC,EAAA,+BAClD,OAAO,KAAO,kCAId,OAASC,EAA+C,MAAU,EAClE,QAAUA,EAAiD,MAAU,EACrE,OAASA,EAA+C,MAAU,EAIlE,MAAQC,EAAS,IAAM,CACrB,IAAMC,EAAO,KAAK,OAAO,OAAO,IAAI,EACpC,OAAOA,EAAO,KAAK,OAAO,OAAO,MAAMA,EAAK,EAAE,EAAI,MACpD,CAAC,EAED,aAAeD,EAAS,IAAM,CAC5B,IAAME,EAAO,KAAK,OAAO,OAAO,IAAI,EACpC,GAAI,CAACA,EAAM,OACX,IAAMC,EAAM,KAAK,QAAQ,OAAO,OAAO,WAAW,EAClD,GAAI,GAACA,GAAOA,EAAI,QAAU,UAC1B,OAAOA,EAAI,KAAK,KAAMC,GAAMA,EAAE,KAAOF,EAAK,EAAE,CAC9C,CAAC,EAED,UAAYF,EAAS,IACZ,KAAK,OAAO,OAAO,UAAU,CACrC,EAOD,mBAAoB,CAClB,MAAM,kBAAkB,EAGxB,IAAMK,EAAQC,EAAM,KAAM,uBAAuB,EAG3CC,EAASD,EAAM,KAAM,iBAAiB,EAGtCE,EAAQF,EAAM,KAAM,uBAAuB,EAEjDG,EAAoB,CAAE,MAAAJ,EAAO,OAAAE,EAAQ,MAAAC,CAAM,CAAC,EAAE,KAAK,IAAM,CACvD,KAAK,OAAO,MAAQH,EACpB,KAAK,QAAQ,MAAQE,EACrB,KAAK,OAAO,MAAQC,CACtB,CAAC,CACH,CACF,EAEOE,EAAQd,EAMFe,EAAQf,EACRgB,EAAO,gBAEpBC,EAAcD,EAAMD,CAAK","names":["element_exports","__export","CLASS","NAME","element_default","ControllerOrchestrator","DiffuseElement","__name","signal","computed","curr","item","col","t","audio","query","output","queue","whenElementsDefined","element_default","CLASS","NAME","defineElement"],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse","file":"/chunk-CRTHWCT3.js.map"} \ No newline at end of file +{"version":3,"sources":["/components/orchestrator/controller/element.js"],"sourcesContent":["import { defineElement, DiffuseElement, query, whenElementsDefined } from \"~/common/element.js\";\nimport { computed, signal } from \"~/common/signal.js\";\n\n/**\n * @import {OutputElement} from \"@specs/components/output/types.d.ts\"\n * @import AudioEngine from \"~/components/engine/audio/element.js\"\n * @import QueueEngine from \"~/components/engine/queue/element.js\"\n */\n\n////////////////////////////////////////////\n// ELEMENT\n////////////////////////////////////////////\n\n/**\n * Provides commonly used computed signals derived from the audio engine,\n * queue engine, and output — so theme elements don't need to re-implement them.\n */\nclass ControllerOrchestrator extends DiffuseElement {\n static NAME = \"diffuse/orchestrator/controller\";\n\n // SIGNALS - DEPENDENCIES\n\n $audio = signal(/** @type {AudioEngine | undefined} */ (undefined));\n $output = signal(/** @type {OutputElement | undefined} */ (undefined));\n $queue = signal(/** @type {QueueEngine | undefined} */ (undefined));\n\n // SIGNALS - COMPUTED\n\n audio = computed(() => {\n const curr = this.$queue.value?.now();\n return curr ? this.$audio.value?.state(curr.id) : undefined;\n });\n\n currentTrack = computed(() => {\n const item = this.$queue.value?.now();\n if (!item) return undefined;\n const col = this.$output.value?.tracks.collection();\n if (!col || col.state !== \"loaded\") return undefined;\n return col.data.find((t) => t.id === item.id);\n });\n\n isPlaying = computed(() => {\n return this.$audio.value?.isPlaying();\n });\n\n // LIFECYCLE\n\n /**\n * @override\n */\n connectedCallback() {\n super.connectedCallback();\n\n /** @type {AudioEngine} */\n const audio = query(this, \"audio-engine-selector\");\n\n /** @type {OutputElement} */\n const output = query(this, \"output-selector\");\n\n /** @type {QueueEngine} */\n const queue = query(this, \"queue-engine-selector\");\n\n whenElementsDefined({ audio, output, queue }).then(() => {\n this.$audio.value = audio;\n this.$output.value = output;\n this.$queue.value = queue;\n });\n }\n}\n\nexport default ControllerOrchestrator;\n\n////////////////////////////////////////////\n// REGISTER\n////////////////////////////////////////////\n\nexport const CLASS = ControllerOrchestrator;\nexport const NAME = \"do-controller\";\n\ndefineElement(NAME, CLASS);\n"],"mappings":"2JAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,WAAAE,EAAA,SAAAC,EAAA,YAAAC,IAiBA,IAAMC,EAAN,cAAqCC,CAAe,CAjBpD,MAiBoD,CAAAC,EAAA,+BAClD,OAAO,KAAO,kCAId,OAASC,EAA+C,MAAU,EAClE,QAAUA,EAAiD,MAAU,EACrE,OAASA,EAA+C,MAAU,EAIlE,MAAQC,EAAS,IAAM,CACrB,IAAMC,EAAO,KAAK,OAAO,OAAO,IAAI,EACpC,OAAOA,EAAO,KAAK,OAAO,OAAO,MAAMA,EAAK,EAAE,EAAI,MACpD,CAAC,EAED,aAAeD,EAAS,IAAM,CAC5B,IAAME,EAAO,KAAK,OAAO,OAAO,IAAI,EACpC,GAAI,CAACA,EAAM,OACX,IAAMC,EAAM,KAAK,QAAQ,OAAO,OAAO,WAAW,EAClD,GAAI,GAACA,GAAOA,EAAI,QAAU,UAC1B,OAAOA,EAAI,KAAK,KAAMC,GAAMA,EAAE,KAAOF,EAAK,EAAE,CAC9C,CAAC,EAED,UAAYF,EAAS,IACZ,KAAK,OAAO,OAAO,UAAU,CACrC,EAOD,mBAAoB,CAClB,MAAM,kBAAkB,EAGxB,IAAMK,EAAQC,EAAM,KAAM,uBAAuB,EAG3CC,EAASD,EAAM,KAAM,iBAAiB,EAGtCE,EAAQF,EAAM,KAAM,uBAAuB,EAEjDG,EAAoB,CAAE,MAAAJ,EAAO,OAAAE,EAAQ,MAAAC,CAAM,CAAC,EAAE,KAAK,IAAM,CACvD,KAAK,OAAO,MAAQH,EACpB,KAAK,QAAQ,MAAQE,EACrB,KAAK,OAAO,MAAQC,CACtB,CAAC,CACH,CACF,EAEOE,EAAQd,EAMFe,EAAQf,EACRgB,EAAO,gBAEpBC,EAAcD,EAAMD,CAAK","names":["element_exports","__export","CLASS","NAME","element_default","ControllerOrchestrator","DiffuseElement","__name","signal","computed","curr","item","col","t","audio","query","output","queue","whenElementsDefined","element_default","CLASS","NAME","defineElement"],"sourceRoot":"","file":"/chunk-CRTHWCT3.js.map"} \ No newline at end of file diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-CT5QLUQL.js b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-CT5QLUQL.js similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-CT5QLUQL.js rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-CT5QLUQL.js diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-CT5QLUQL.js.br b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-CT5QLUQL.js.br similarity index 100% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-CT5QLUQL.js.br rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-CT5QLUQL.js.br diff --git a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-CT5QLUQL.js.map b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-CT5QLUQL.js.map similarity index 98% rename from artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-CT5QLUQL.js.map rename to artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-CT5QLUQL.js.map index dac0cde4..268d58af 100644 --- a/artifacts/bafybeicnhc46abtoqdtcsrdx7muqejpq3wheewtohmqwzksv3f6q5vzyfa/chunk-CT5QLUQL.js.map +++ b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-CT5QLUQL.js.map @@ -1 +1 @@ -{"version":3,"sources":["/common/facets/utils.js"],"sourcesContent":["import * as TID from \"@atcute/tid\";\nimport { xxh32r } from \"xxh32/dist/raw.js\";\n\nimport { STARTING_SET_DISABLED, TYPE } from \"./constants.js\";\n\nimport facetsData from \"~/_data/facets.json\" with { type: \"json\" };\n\n// A single, fixed creation timestamp (today's date) shared by all starting\n// set / base facets. It's a constant string (not computed at runtime), so\n// seeded facets keep an identical timestamp across calls, devices and days\n// — if it changed, the dasl-sync merge would see a perpetually-newer copy and\n// never converge. Using UTC midnight keeps the value timezone-independent. Any\n// real edit writes a strictly-newer `updatedAt`, so it always wins.\nconst SEED_TIMESTAMP = \"2026-08-23T00:00:00.000Z\";\n\n/**\n * @import {Facet} from \"~/definitions/types.d.ts\"\n */\n\n/**\n * Builds facet objects from the bundled catalogue for the given URIs.\n * Available offline — no output needs to be reachable.\n *\n * @param {readonly string[]} uris\n * @returns {Facet[]}\n *\n * @example Builds a facet for each known URI, skipping unknown ones\n * ```js\n * import { buildFacets } from \"~/common/facets/utils.js\";\n * import { PRELUDE_BASE } from \"~/common/facets/constants.js\";\n *\n * const facets = buildFacets([...PRELUDE_BASE, \"facets/does/not/exist.html\"]);\n * if (facets.length !== PRELUDE_BASE.length) throw new Error(\"should skip unknown URIs\");\n * if (!facets.every((f) => f.kind === \"prelude\")) throw new Error(\"base preludes should be preludes\");\n * if (facets.some((f) => !f.id)) throw new Error(\"every facet needs an id\");\n * ```\n */\n\nexport function buildFacets(uris) {\n return facetsData.flatMap((facet) => {\n if (!uris.includes(facet.url)) return [];\n\n return [{\n $type: TYPE,\n id: uriToRkey(\"diffuse://\" + facet.url),\n createdAt: SEED_TIMESTAMP,\n description: facet.desc,\n enabled: STARTING_SET_DISABLED.includes(facet.url) ? false : true,\n kind: facet.kind === \"prelude\" ? \"prelude\" : \"interactive\",\n name: facet.title,\n tags: facet.tags?.length ? facet.tags : undefined,\n updatedAt: SEED_TIMESTAMP,\n uri: \"diffuse://\" + facet.url,\n }];\n });\n}\n\n/**\n * @param {{ description?: string; kind: string | undefined; name: string; tags?: string[]; uri: string }} _args\n * @param {{ fetchHTML: boolean }} options\n *\n * @example Creates a facet with correct $type, name, uri, id, and timestamps\n * ```js\n * import { facetFromURI } from \"~/common/facets/utils.js\";\n *\n * const facet = await facetFromURI({ name: \"My Facet\", uri: \"facets/test/index.html\", kind: undefined, description: undefined }, { fetchHTML: false });\n *\n * if (facet.$type !== \"sh.diffuse.output.facet\") throw new Error(\"$type should be sh.diffuse.output.facet\");\n * if (facet.name !== \"My Facet\") throw new Error(\"name should be preserved\");\n * if (facet.uri !== \"facets/test/index.html\") throw new Error(\"uri should be preserved\");\n * if (typeof facet.id !== \"string\" || facet.id.length === 0) throw new Error(\"id should be a non-empty string\");\n * if (!facet.createdAt) throw new Error(\"createdAt should be set\");\n * if (facet.createdAt !== facet.updatedAt) throw new Error(\"createdAt and updatedAt should match\");\n * if (new Date(facet.createdAt).toISOString() !== facet.createdAt) throw new Error(\"createdAt should be a valid ISO string\");\n * ```\n *\n * @example fetchHTML false leaves content fields undefined; kind is validated\n * ```js\n * import { facetFromURI } from \"~/common/facets/utils.js\";\n *\n * const base = { name: \"Test\", uri: \"test.html\", description: undefined };\n *\n * const noHtml = await facetFromURI({ ...base, kind: undefined }, { fetchHTML: false });\n * if (noHtml.uri !== \"test.html\") throw new Error(\"uri should be preserved\");\n * if (noHtml.resources !== undefined) throw new Error(\"resources should be undefined when fetchHTML is false\");\n * if (noHtml.blocks !== undefined) throw new Error(\"blocks should be undefined when fetchHTML is false\");\n *\n * const prelude = await facetFromURI({ ...base, kind: \"prelude\" }, { fetchHTML: false });\n * if (prelude.kind !== \"prelude\") throw new Error(\"prelude kind should be preserved\");\n *\n * const interactive = await facetFromURI({ ...base, kind: \"interactive\" }, { fetchHTML: false });\n * if (interactive.kind !== \"interactive\") throw new Error(\"interactive kind should be preserved\");\n *\n * const unknown = await facetFromURI({ ...base, kind: \"unknown\" }, { fetchHTML: false });\n * if (unknown.kind !== undefined) throw new Error(\"unrecognised kind should be set to undefined\");\n * ```\n *\n * @example Generates unique ids across calls\n * ```js\n * import { facetFromURI } from \"~/common/facets/utils.js\";\n *\n * const a = await facetFromURI({ name: \"A\", uri: \"a.html\", kind: undefined, description: undefined }, { fetchHTML: false });\n * const b = await facetFromURI({ name: \"B\", uri: \"b.html\", kind: undefined, description: undefined }, { fetchHTML: false });\n * if (a.id === b.id) throw new Error(\"ids should be unique across calls\");\n * ```\n */\nexport async function facetFromURI(\n { description, kind, name, tags, uri },\n { fetchHTML },\n) {\n const timestamp = new Date().toISOString();\n\n /** @type {Facet} */\n const facet = {\n $type: \"sh.diffuse.output.facet\",\n createdAt: timestamp,\n id: TID.now(),\n description,\n name,\n kind: kind === \"interactive\" || kind === \"prelude\" ? kind : undefined,\n tags: tags?.length ? tags : undefined,\n updatedAt: timestamp,\n uri,\n };\n\n return facet;\n}\n\n/** @param {string} uri */\nfunction uriToRkey(uri) {\n return xxh32r(new TextEncoder().encode(uri)).toString(16).padStart(8, \"0\");\n}\n"],"mappings":"0MAaA,IAAMA,EAAiB,2BAyBhB,SAASC,EAAYC,EAAM,CAChC,OAAOC,EAAW,QAASC,GACpBF,EAAK,SAASE,EAAM,GAAG,EAErB,CAAC,CACN,MAAOC,EACP,GAAIC,EAAU,aAAeF,EAAM,GAAG,EACtC,UAAWJ,EACX,YAAaI,EAAM,KACnB,QAAS,CAAAG,EAAsB,SAASH,EAAM,GAAG,EACjD,KAAMA,EAAM,OAAS,UAAY,UAAY,cAC7C,KAAMA,EAAM,MACZ,KAAMA,EAAM,MAAM,OAASA,EAAM,KAAO,OACxC,UAAWJ,EACX,IAAK,aAAeI,EAAM,GAC5B,CAAC,EAbqC,CAAC,CAcxC,CACH,CAjBgBI,EAAAP,EAAA,eAoEhB,eAAsBQ,EACpB,CAAE,YAAAC,EAAa,KAAAC,EAAM,KAAAC,EAAM,KAAAC,EAAM,IAAAC,CAAI,EACrC,CAAE,UAAAC,CAAU,EACZ,CACA,IAAMC,EAAY,IAAI,KAAK,EAAE,YAAY,EAezC,MAZc,CACZ,MAAO,0BACP,UAAWA,EACX,GAAQC,EAAI,EACZ,YAAAP,EACA,KAAAE,EACA,KAAMD,IAAS,eAAiBA,IAAS,UAAYA,EAAO,OAC5D,KAAME,GAAM,OAASA,EAAO,OAC5B,UAAWG,EACX,IAAAF,CACF,CAGF,CApBsBN,EAAAC,EAAA,gBAuBtB,SAASH,EAAUQ,EAAK,CACtB,OAAOI,EAAO,IAAI,YAAY,EAAE,OAAOJ,CAAG,CAAC,EAAE,SAAS,EAAE,EAAE,SAAS,EAAG,GAAG,CAC3E,CAFSN,EAAAF,EAAA","names":["SEED_TIMESTAMP","buildFacets","uris","facets_default","facet","TYPE","uriToRkey","STARTING_SET_DISABLED","__name","facetFromURI","description","kind","name","tags","uri","fetchHTML","timestamp","now","xxh32r"],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse","file":"/chunk-CT5QLUQL.js.map"} \ No newline at end of file +{"version":3,"sources":["/common/facets/utils.js"],"sourcesContent":["import * as TID from \"@atcute/tid\";\nimport { xxh32r } from \"xxh32/dist/raw.js\";\n\nimport { STARTING_SET_DISABLED, TYPE } from \"./constants.js\";\n\nimport facetsData from \"~/_data/facets.json\" with { type: \"json\" };\n\n// A single, fixed creation timestamp (today's date) shared by all starting\n// set / base facets. It's a constant string (not computed at runtime), so\n// seeded facets keep an identical timestamp across calls, devices and days\n// — if it changed, the dasl-sync merge would see a perpetually-newer copy and\n// never converge. Using UTC midnight keeps the value timezone-independent. Any\n// real edit writes a strictly-newer `updatedAt`, so it always wins.\nconst SEED_TIMESTAMP = \"2026-08-23T00:00:00.000Z\";\n\n/**\n * @import {Facet} from \"~/definitions/types.d.ts\"\n */\n\n/**\n * Builds facet objects from the bundled catalogue for the given URIs.\n * Available offline — no output needs to be reachable.\n *\n * @param {readonly string[]} uris\n * @returns {Facet[]}\n *\n * @example Builds a facet for each known URI, skipping unknown ones\n * ```js\n * import { buildFacets } from \"~/common/facets/utils.js\";\n * import { PRELUDE_BASE } from \"~/common/facets/constants.js\";\n *\n * const facets = buildFacets([...PRELUDE_BASE, \"facets/does/not/exist.html\"]);\n * if (facets.length !== PRELUDE_BASE.length) throw new Error(\"should skip unknown URIs\");\n * if (!facets.every((f) => f.kind === \"prelude\")) throw new Error(\"base preludes should be preludes\");\n * if (facets.some((f) => !f.id)) throw new Error(\"every facet needs an id\");\n * ```\n */\n\nexport function buildFacets(uris) {\n return facetsData.flatMap((facet) => {\n if (!uris.includes(facet.url)) return [];\n\n return [{\n $type: TYPE,\n id: uriToRkey(\"diffuse://\" + facet.url),\n createdAt: SEED_TIMESTAMP,\n description: facet.desc,\n enabled: STARTING_SET_DISABLED.includes(facet.url) ? false : true,\n kind: facet.kind === \"prelude\" ? \"prelude\" : \"interactive\",\n name: facet.title,\n tags: facet.tags?.length ? facet.tags : undefined,\n updatedAt: SEED_TIMESTAMP,\n uri: \"diffuse://\" + facet.url,\n }];\n });\n}\n\n/**\n * @param {{ description?: string; kind: string | undefined; name: string; tags?: string[]; uri: string }} _args\n * @param {{ fetchHTML: boolean }} options\n *\n * @example Creates a facet with correct $type, name, uri, id, and timestamps\n * ```js\n * import { facetFromURI } from \"~/common/facets/utils.js\";\n *\n * const facet = await facetFromURI({ name: \"My Facet\", uri: \"facets/test/index.html\", kind: undefined, description: undefined }, { fetchHTML: false });\n *\n * if (facet.$type !== \"sh.diffuse.output.facet\") throw new Error(\"$type should be sh.diffuse.output.facet\");\n * if (facet.name !== \"My Facet\") throw new Error(\"name should be preserved\");\n * if (facet.uri !== \"facets/test/index.html\") throw new Error(\"uri should be preserved\");\n * if (typeof facet.id !== \"string\" || facet.id.length === 0) throw new Error(\"id should be a non-empty string\");\n * if (!facet.createdAt) throw new Error(\"createdAt should be set\");\n * if (facet.createdAt !== facet.updatedAt) throw new Error(\"createdAt and updatedAt should match\");\n * if (new Date(facet.createdAt).toISOString() !== facet.createdAt) throw new Error(\"createdAt should be a valid ISO string\");\n * ```\n *\n * @example fetchHTML false leaves content fields undefined; kind is validated\n * ```js\n * import { facetFromURI } from \"~/common/facets/utils.js\";\n *\n * const base = { name: \"Test\", uri: \"test.html\", description: undefined };\n *\n * const noHtml = await facetFromURI({ ...base, kind: undefined }, { fetchHTML: false });\n * if (noHtml.uri !== \"test.html\") throw new Error(\"uri should be preserved\");\n * if (noHtml.resources !== undefined) throw new Error(\"resources should be undefined when fetchHTML is false\");\n * if (noHtml.blocks !== undefined) throw new Error(\"blocks should be undefined when fetchHTML is false\");\n *\n * const prelude = await facetFromURI({ ...base, kind: \"prelude\" }, { fetchHTML: false });\n * if (prelude.kind !== \"prelude\") throw new Error(\"prelude kind should be preserved\");\n *\n * const interactive = await facetFromURI({ ...base, kind: \"interactive\" }, { fetchHTML: false });\n * if (interactive.kind !== \"interactive\") throw new Error(\"interactive kind should be preserved\");\n *\n * const unknown = await facetFromURI({ ...base, kind: \"unknown\" }, { fetchHTML: false });\n * if (unknown.kind !== undefined) throw new Error(\"unrecognised kind should be set to undefined\");\n * ```\n *\n * @example Generates unique ids across calls\n * ```js\n * import { facetFromURI } from \"~/common/facets/utils.js\";\n *\n * const a = await facetFromURI({ name: \"A\", uri: \"a.html\", kind: undefined, description: undefined }, { fetchHTML: false });\n * const b = await facetFromURI({ name: \"B\", uri: \"b.html\", kind: undefined, description: undefined }, { fetchHTML: false });\n * if (a.id === b.id) throw new Error(\"ids should be unique across calls\");\n * ```\n */\nexport async function facetFromURI(\n { description, kind, name, tags, uri },\n { fetchHTML },\n) {\n const timestamp = new Date().toISOString();\n\n /** @type {Facet} */\n const facet = {\n $type: \"sh.diffuse.output.facet\",\n createdAt: timestamp,\n id: TID.now(),\n description,\n name,\n kind: kind === \"interactive\" || kind === \"prelude\" ? kind : undefined,\n tags: tags?.length ? tags : undefined,\n updatedAt: timestamp,\n uri,\n };\n\n return facet;\n}\n\n/** @param {string} uri */\nfunction uriToRkey(uri) {\n return xxh32r(new TextEncoder().encode(uri)).toString(16).padStart(8, \"0\");\n}\n"],"mappings":"0MAaA,IAAMA,EAAiB,2BAyBhB,SAASC,EAAYC,EAAM,CAChC,OAAOC,EAAW,QAASC,GACpBF,EAAK,SAASE,EAAM,GAAG,EAErB,CAAC,CACN,MAAOC,EACP,GAAIC,EAAU,aAAeF,EAAM,GAAG,EACtC,UAAWJ,EACX,YAAaI,EAAM,KACnB,QAAS,CAAAG,EAAsB,SAASH,EAAM,GAAG,EACjD,KAAMA,EAAM,OAAS,UAAY,UAAY,cAC7C,KAAMA,EAAM,MACZ,KAAMA,EAAM,MAAM,OAASA,EAAM,KAAO,OACxC,UAAWJ,EACX,IAAK,aAAeI,EAAM,GAC5B,CAAC,EAbqC,CAAC,CAcxC,CACH,CAjBgBI,EAAAP,EAAA,eAoEhB,eAAsBQ,EACpB,CAAE,YAAAC,EAAa,KAAAC,EAAM,KAAAC,EAAM,KAAAC,EAAM,IAAAC,CAAI,EACrC,CAAE,UAAAC,CAAU,EACZ,CACA,IAAMC,EAAY,IAAI,KAAK,EAAE,YAAY,EAezC,MAZc,CACZ,MAAO,0BACP,UAAWA,EACX,GAAQC,EAAI,EACZ,YAAAP,EACA,KAAAE,EACA,KAAMD,IAAS,eAAiBA,IAAS,UAAYA,EAAO,OAC5D,KAAME,GAAM,OAASA,EAAO,OAC5B,UAAWG,EACX,IAAAF,CACF,CAGF,CApBsBN,EAAAC,EAAA,gBAuBtB,SAASH,EAAUQ,EAAK,CACtB,OAAOI,EAAO,IAAI,YAAY,EAAE,OAAOJ,CAAG,CAAC,EAAE,SAAS,EAAE,EAAE,SAAS,EAAG,GAAG,CAC3E,CAFSN,EAAAF,EAAA","names":["SEED_TIMESTAMP","buildFacets","uris","facets_default","facet","TYPE","uriToRkey","STARTING_SET_DISABLED","__name","facetFromURI","description","kind","name","tags","uri","fetchHTML","timestamp","now","xxh32r"],"sourceRoot":"","file":"/chunk-CT5QLUQL.js.map"} \ No newline at end of file diff --git a/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-DMM3VA35.js b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-DMM3VA35.js new file mode 100644 index 00000000..a8245007 --- /dev/null +++ b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-DMM3VA35.js @@ -0,0 +1,28 @@ +import{a as O}from"./chunk-76OIFD3C.js";import{c as k,e as I}from"./chunk-GDRRV4MN.js";import{e as v}from"./chunk-HCA2HGAZ.js";import{j as $,o as m,p as w}from"./chunk-XILA3E7E.js";import{a as u,c as q}from"./chunk-75KFZLU6.js";var B={};q(B,{AudioEngineItem:()=>A,CLASS:()=>Y,NAME:()=>x,NAME_ITEM:()=>j,default:()=>J});var M=/iPhone|iPad|iPod/.test(navigator.userAgent)||navigator.platform==="MacIntel"&&navigator.maxTouchPoints>1,_=Symbol("routeAudio"),R=Symbol("unrouteAudio"),W=500,U=3e4,H=3e3,E=class extends k{static{u(this,"AudioEngine")}static NAME="diffuse/engine/audio";constructor(){super(),this.state=this.state.bind(this)}#t=new Map;#i=new Map;#a=new AbortController;#e=void 0;#n=void 0;#o=new Map;#s=m([]);#r=m(.75);items=this.#s.get;volume=this.#r.get;isPlaying=$(()=>{let t=this.items()?.[0];if(!t)return!1;let e=this.state(t.id);return e?e.isPlaying()||e.hasEnded()||e.duration()>0&&e.currentTime()===e.duration():!1});connectedCallback(){if(this.#a=new AbortController,this.hasAttribute("group")){let i=this.broadcast(this.identifier,{adjustVolume:{strategy:"replicate",fn:this.adjustVolume},pause:{strategy:"leaderOnly",fn:this.pause},play:{strategy:"leaderOnly",fn:this.play},seek:{strategy:"leaderOnly",fn:this.seek},supply:{strategy:"replicate",fn:this.supply},items:{strategy:"leaderOnly",fn:this.items}});if(!i)return;this.adjustVolume=i.adjustVolume,this.pause=i.pause,this.play=i.play,this.seek=i.seek,this.supply=i.supply,this.broadcastingStatus().then(async s=>{s.leader||(this.#s.value=await i.items())})}super.connectedCallback();let t=`${this.constructor.prototype.constructor.NAME}/${this.group}/volume`,e=localStorage.getItem(t);if(e!=null&&this.#r.set(parseFloat(e)),this.effect(()=>{this.#n&&(this.#n.gain.value=this.#r.value),Array.from(this.querySelectorAll("de-audio-item")).forEach(i=>{let s=i;if(s.hasAttribute("preload"))return;let a=s.querySelector("audio");a&&!this.#o.has(a)&&(a.volume=this.#r.value)}),localStorage.setItem(t,this.#r.value.toString())}),M){let i=u(()=>{document.hidden||this.items().forEach(s=>{if(s.isPreload)return;let a=this.#d(s.id);if(!a?.intendsToPlay)return;let l=a.audio;l.paused&&(l.readyState>=2?this.play({audioId:s.id}):(l.load(),l.addEventListener("canplay",()=>{a.intendsToPlay&&this.play({audioId:s.id})},{once:!0})))})},"onVisible");this.effect(()=>(document.addEventListener("visibilitychange",i),()=>document.removeEventListener("visibilitychange",i)))}this.broadcasted&&this.effect(async()=>{let i=await this.broadcastingStatus();w(()=>{i.leader&&i.initialLeader===!1&&(console.log("\u{1F9D9} Leadership acquired"),this.items().forEach(s=>{let a=this.#d(s.id);if(!a||(a.removeAttribute("initial-progress"),!a.audio))return;let l=a.$state.currentTime.value,n=u(()=>{this.seek({audioId:s.id,currentTime:l}),a.$state.isPlaying.value&&this.play({audioId:s.id})},"canPlay");a.audio.addEventListener("canplay",n,{once:!0}),a.audio.readyState===0?a.audio.load():n()}))})})}disconnectedCallback(){this.#a.abort();for(let t of this.#t.values())URL.revokeObjectURL(t);this.#t.clear();for(let t of this.#i.values())t.cancel().catch(()=>{});this.#i.clear(),this.querySelectorAll("de-audio-item").forEach(t=>{let e=t,i;try{i=e.audio}catch{return}i.pause(),i.removeAttribute("src"),e.querySelectorAll("source").forEach(s=>s.removeAttribute("src")),i.load()}),super.disconnectedCallback()}adjustVolume(t){t.audioId?this.#u(t.audioId,e=>{e.volume=t.volume}):this.#r.value=t.volume}pause({audioId:t}){this.#u(t,(e,i)=>{i.cancelMediaRetry(),e.pause(),i.intendsToPlay=!1,i.$state.isPlaying.set(!1)})}play({audioId:t,volume:e}){this.#h(),this.#u(t,(i,s)=>{let a=this.#o.has(i);if(i.volume=e??(a?1:this.volume()),i.muted=!1,i.error&&i.load(),!i.isConnected)return;let l=i.play()||Promise.resolve();s.intendsToPlay=!0,M&&document.hidden||s.$state.isPlaying.set(!0),l.catch(n=>{if(!i.isConnected||n?.name==="AbortError"||s.autoRetrying)return;console.error("Couldn't play audio automatically. Please resume playback manually.",n),i.error||(s.intendsToPlay=!1),s.$state.isPlaying.set(!1)})})}reload(t){this.#u(t.audioId,(e,i)=>{(e.readyState===0||e.error?.code===2)&&(e.load(),t.progress!==void 0&&i.setAttribute("initial-progress",JSON.stringify(t.progress)),t.play&&this.play({audioId:t.audioId,volume:e.volume}))})}seek({audioId:t,currentTime:e,percentage:i}){this.#u(t,(s,a)=>{e!=null?s.currentTime=e:i!=null&&!isNaN(s.duration)&&s.duration!==1/0&&(s.currentTime=i*s.duration),(a.intendsToPlay||a.$state.isPlaying.get())&&(a.intendsToPlay=!0,a.$state.loadingState.set("loading"),a.armLoadWatchdog())})}supply(t){let e=new Map(this.#s.value.map(r=>[r.id,r]));for(let r of t.audio)"stream"in r&&!e.has(r.id)&&!this.#i.has(r.id)&&(this.#i.set(r.id,r.stream),this.#l(r.id,r.stream,r.mimeType??"",r.seek,r.duration,this.#a.signal));let i=new Set(t.audio.map(r=>r.id));for(let[r,o]of this.#t)i.has(r)||(URL.revokeObjectURL(o),this.#t.delete(r));for(let r of this.#i.keys())i.has(r)||this.#i.delete(r);let s=t.audio.map(r=>{let o="stream"in r?this.#t.get(r.id):r.url;if(!o&&"stream"in r&&this.#i.has(r.id))throw new Error("Stream did not produce a media source url");return o=o??"",{id:r.id,isPreload:r.isPreload,mimeType:r.mimeType,progress:r.progress,track:r.track,url:o}}),a=s.some(r=>!e.has(r.id)),l=s.some(r=>e.get(r.id)?.isPreload!==r.isPreload),n=s.some(r=>e.get(r.id)?.url!==r.url);if((a||l||n)&&(this.#s.value=s),n&&!a)for(let r of s)e.has(r.id)&&e.get(r.id)?.url!==r.url&&this.#u(r.id,o=>{o.removeAttribute("src"),(o.readyState===0||o.error)&&o.load()});t.play&&this.play(t.play)}async#l(t,e,i,s,a,l){let n=globalThis,r=n.MediaSource??n.ManagedMediaSource;if(!r||!i||!r.isTypeSupported(i)){this.#i.delete(t),e.cancel().catch(()=>{}),Promise.resolve().then(()=>{this.#d(t)?.$state.loadingState.set({error:{code:4}})});return}let o=new r,p=URL.createObjectURL(o);if(this.#t.set(t,p),this.#i.delete(t),await Promise.resolve(),!this.#t.has(t)){URL.revokeObjectURL(p);return}let y=this.#d(t);if(!y){URL.revokeObjectURL(p),this.#t.delete(t);return}if(y.audio.src=p,await new Promise(d=>{let f=u(()=>{S(),d(void 0)},"onOpen"),g=u(()=>{S(),d(void 0)},"onAbort"),S=u(()=>{o.removeEventListener("sourceopen",f),l?.removeEventListener("abort",g)},"cleanup");o.addEventListener("sourceopen",f,{once:!0}),l?.addEventListener("abort",g,{once:!0})}),!this.#t.has(t)){URL.revokeObjectURL(p),this.#t.delete(t);return}let b=e.getReader(),L=!1,C=0,N=u(()=>{if(!s)return;let d=y.audio,f=d.currentTime;for(let g=0;g{})},"onSeeking");y.audio.addEventListener("seeking",N);try{a!==void 0&&(o.duration=a);let d=o.addSourceBuffer(i);for(;;){if(!this.#t.has(t)){await b.cancel();break}let f,g;try{({done:f,value:g}=await b.read())}catch{f=!0}if(!this.#t.has(t))break;if(L){L=!1,d.updating&&await T(d);let D=T(d);if(d.remove(0,1/0),!await D)throw new Error("SourceBuffer remove failed");if(!s)throw new Error("seekFn is undefined");b=(await s(C)).getReader();continue}if(f){o.readyState==="open"&&o.endOfStream();break}d.updating&&await T(d);let S=T(d);if(d.appendBuffer(g),!await S)throw new Error("SourceBuffer append failed")}}catch(d){console.error("[audio engine] Stream error:",d),o.readyState==="open"&&o.endOfStream("decode"),this.#t.get(t)===p&&y.$state.loadingState.set({error:{code:3}})}finally{y.audio.removeEventListener("seeking",N)}}render({html:t}){let e=this.items(),i=e,s=e.map(n=>n.id);this.querySelectorAll("de-audio-item").forEach(n=>{if(s.includes(n.id))return;let r=n.querySelector("audio");r&&(this[R](r),r.pause(),r.removeAttribute("src"),r.querySelectorAll("source").forEach(o=>o.removeAttribute("src")),r.load())});let a=this.group,l=i.map(n=>{let r=n.progress===void 0?"0":JSON.stringify(n.progress);return O(n.id,t` + + + + `)});return t` +
+ ${l} +
+ `}_state(t){return $(()=>{let e=this.#s.value,i=this.#d(t)?.state;return i?{...i}:void 0})}state(t){return this._state(t)()}#d(t){let e=this.querySelector(`de-audio-item[id="${t}"]:not([preload])`)??this.querySelector(`de-audio-item[id="${t}"]`);if(e)return e}#u(t,e){let i=this.#d(t);i&&e(i.audio,i)}get webAudio(){return this.#c(),{context:this.#e,input:this.#n,destination:this.#e.destination}}#c(){if(this.#e)return;let t=globalThis.AudioContext??globalThis.webkitAudioContext;if(!t)return;let e=new t,i=e.createGain();i.connect(e.destination),this.#e=e,this.#n=i,i.gain.value=this.#r.value;let s=u(()=>{e.state!=="running"&&e.resume().catch(()=>{})},"unlock");["touchstart","touchend","mousedown","keydown"].forEach(a=>{document.addEventListener(a,s,{passive:!0})}),e.addEventListener("statechange",()=>{e.state==="suspended"&&!document.hidden&&e.resume().catch(()=>{})}),document.addEventListener("visibilitychange",s)}[_](t){if(this.#o.has(t)||(this.#c(),!this.#e||!this.#n))return;let e;try{e=this.#e.createMediaElementSource(t)}catch{t.volume=this.#r.value,console.warn("Failed to route audio element through the Web Audio graph; falling back to element-level volume.",t);return}e.connect(this.#n),this.#o.set(t,e),t.volume=1}[R](t){let e=this.#o.get(t);e&&(e.disconnect(),this.#o.delete(t))}#h(){this.#e?.resume().catch(()=>{})}},J=E,A=class extends k{static{u(this,"AudioEngineItem")}static NAME="diffuse/engine/audio/item";static observedAttributes=["preload"];#t=void 0;#i=0;#a=void 0;#e=0;constructor(){super(),this.intendsToPlay=!1,this.autoRetrying=!1,this.$state={currentTime:m(0),duration:m(0),hasEnded:m(!1),isPlaying:m(!1),isPreload:m(this.hasAttribute("preload")),loadingState:m("initialisation"),progress:$(()=>{let t=this.$state.currentTime.value,e=this.$state.duration.value;return!e||isNaN(e)||e===1/0?0:t/e})}}attributeChangedCallback(t,e,i){super.attributeChangedCallback(t,e,i),t==="preload"&&(this.$state.isPreload.set(i!==null),i===null&&this.#s())}async connectedCallback(){let t=this.audio;if(t.addEventListener("canplay",this.canplayEvent),t.addEventListener("durationchange",this.durationchangeEvent),t.addEventListener("ended",this.endedEvent),t.addEventListener("error",this.errorEvent),t.addEventListener("pause",this.pauseEvent),t.addEventListener("play",this.playEvent),t.addEventListener("playing",this.playingEvent),t.addEventListener("suspend",this.suspendEvent),t.addEventListener("timeupdate",this.timeupdateEvent),t.addEventListener("progress",this.progressEvent),t.addEventListener("waiting",this.waitingEvent),this.hasAttribute("preload")||(this.$state.loadingState.set("loading"),this.#s()),this.hasAttribute("group")){let e=this.broadcast(this.identifier,{getCurrentTime:{strategy:"leaderOnly",fn:this.$state.currentTime.get},getDuration:{strategy:"leaderOnly",fn:this.$state.duration.get},getHasEnded:{strategy:"leaderOnly",fn:this.$state.hasEnded.get},getIsPlaying:{strategy:"leaderOnly",fn:this.$state.isPlaying.get},getIsPreload:{strategy:"leaderOnly",fn:this.$state.isPreload.get},getLoadingState:{strategy:"leaderOnly",fn:this.$state.loadingState.get},setCurrentTime:{strategy:"replicate",fn:this.$state.currentTime.set},setDuration:{strategy:"replicate",fn:this.$state.duration.set},setHasEnded:{strategy:"replicate",fn:this.$state.hasEnded.set},setIsPlaying:{strategy:"replicate",fn:this.$state.isPlaying.set},setIsPreload:{strategy:"replicate",fn:this.$state.isPreload.set},setLoadingState:{strategy:"replicate",fn:this.$state.loadingState.set}},{assumeLeadership:(await this.engine?.broadcastingStatus())?.leader});e&&(this.$state.currentTime.set=e.setCurrentTime,this.$state.duration.set=e.setDuration,this.$state.hasEnded.set=e.setHasEnded,this.$state.isPlaying.set=e.setIsPlaying,this.$state.isPreload.set=e.setIsPreload,this.$state.loadingState.set=e.setLoadingState,w(async()=>{this.$state.currentTime.value=await e.getCurrentTime(),this.$state.duration.value=await e.getDuration(),this.$state.hasEnded.value=await e.getHasEnded(),this.$state.isPlaying.value=await e.getIsPlaying(),this.$state.isPreload.value=await e.getIsPreload(),this.$state.loadingState.value=await e.getLoadingState()}))}super.connectedCallback(),this.engine?.[_](this.audio)}disconnectedCallback(){this.cancelMediaRetry(),this.#r(),super.disconnectedCallback()}get state(){return{id:this.id,mimeType:this.getAttribute("mime-type")??void 0,url:this.getAttribute("url")??"",currentTime:this.$state.currentTime.get,duration:this.$state.duration.get,hasEnded:this.$state.hasEnded.get,isPlaying:this.$state.isPlaying.get,isPreload:this.$state.isPreload.get,loadingState:this.$state.loadingState.get,progress:this.$state.progress}}get audio(){let t=this.querySelector("audio");if(t)return t;throw new Error("Cannot find child audio element")}get engine(){let t=this.closest("de-audio");return t||null}#n(){if(this.#t!==void 0||!this.isConnected)return;this.autoRetrying=!0;let t=Math.min(W*2**this.#i,U);this.#i+=1,this.#t=setTimeout(()=>{this.#t=void 0,this.#o()},t)}#o(){if(!this.isConnected)return;let t;try{t=this.audio}catch{return}t.error&&(!isNaN(t.duration)&&t.duration>0&&t.duration!==1/0&&this.setAttribute("initial-progress",JSON.stringify(t.currentTime/t.duration)),this.$state.loadingState.set("loading"),t.load(),this.#s(),this.engine?.play({audioId:this.id}))}cancelMediaRetry(){this.#t!==void 0&&(clearTimeout(this.#t),this.#t=void 0),this.#i=0,this.autoRetrying=!1}armLoadWatchdog(){this.#s()}canplayEvent(t){let e=t.target,i=h(e);if(i?.hasAttribute("initial-progress")&&e.duration&&!isNaN(e.duration)){let s=JSON.parse(i.getAttribute("initial-progress")??"0");s!==0&&!isNaN(e.duration)&&e.duration!==1/0&&(e.currentTime=e.duration*s),i.removeAttribute("initial-progress")}i&&(i.#e=0,i.#r()),P(t)}durationchangeEvent(t){let e=t.target;isNaN(e.duration)||h(e)?.$state.duration.set(e.duration)}endedEvent(t){let e=t.target;e.currentTime=0;let i=h(e);i&&(i.intendsToPlay=!1),i?.$state.hasEnded.set(!0)}errorEvent(t){let e=t.target,i=e.error?.code||0,s=h(e);s&&i!==1&&(s.$state.loadingState.set({error:{code:i}}),!s.hasAttribute("preload")&&(e.src.startsWith("blob:")||i!==2&&i!==4||s.#i===0&&!s.intendsToPlay&&!s.$state.isPlaying.get()||s.#n()))}pauseEvent(t){let e=t.target,i=h(e);i?.cancelMediaRetry(),i&&(i.#e=0,i.#r()),i?.$state.isPlaying.set(!1)}playEvent(t){let e=t.target,i=h(e);i?.$state.hasEnded.set(!1),i?.$state.isPlaying.set(!0),e.readyState>=2&&P(t)}playingEvent(t){let e=t.target,i=h(e);i&&(i.intendsToPlay=!1,i.autoRetrying=!1,i.#i=0,i.#e=0,i.#r()),i?.$state.isPlaying.set(!0),P(t)}suspendEvent(t){P(t)}timeupdateEvent(t){let e=t.target,i=h(e);i&&(!e.paused&&!e.seeking&&i.$state.loadingState.get()!=="loaded"&&i.$state.loadingState.set("loaded"),!(isNaN(e.duration)||e.duration===0)&&i.$state.currentTime.set(e.currentTime))}progressEvent(t){let e=h(t.target);e&&(e.#e=0,e.#s())}#s(){if(this.#a!==void 0||!this.isConnected)return;let t=Math.min(H*2**this.#e,U);this.#a=setTimeout(()=>{this.#a=void 0,this.#l()},t)}#r(){this.#a!==void 0&&(clearTimeout(this.#a),this.#a=void 0)}#l(){if(!this.isConnected)return;let t;try{t=this.audio}catch{return}if(!this.hasAttribute("preload")&&!t.src.startsWith("blob:")&&!document.hidden&&!(this.autoRetrying&&t.error)){if(!t.error&&t.readyState>=2){this.#e=0;return}if(!t.error){if(t.buffered.length>0&&t.buffered.end(t.buffered.length-1)>t.currentTime+5){this.#e=0;return}if(!this.intendsToPlay&&!this.$state.isPlaying.get()){this.#s();return}this.#e+=1,!isNaN(t.duration)&&t.duration>0&&t.duration!==1/0&&this.setAttribute("initial-progress",JSON.stringify(t.currentTime/t.duration)),this.$state.loadingState.set("loading"),t.load(),this.intendsToPlay&&this.engine?.play({audioId:this.id}),this.#s()}}}waitingEvent(t){V(t);let e=t.target;if(e.seeking)return;let i=h(e);if(!i||i.hasAttribute("preload")||(i.#s(),e.networkState!==HTMLMediaElement.NETWORK_IDLE))return;let s=!isNaN(e.duration)&&e.duration>0&&e.duration!==1/0?e.currentTime/e.duration:0;s>0&&i.setAttribute("initial-progress",JSON.stringify(s)),!(e.buffered.length>0)&&(e.load(),e.addEventListener("canplay",()=>{(i.$state.isPlaying.get()||i.intendsToPlay)&&i.engine?.play({audioId:i.id})},{once:!0}))}};function h(c){let t=c.closest("de-audio-item");return t||null}u(h,"engineItem");function P(c){let t=c.target;h(t)?.$state.loadingState.set("loaded")}u(P,"finishedLoading");function V(c){let t=c.target;if(t.readyState<4){let e=h(t);if(e?.hasAttribute("preload"))return;e?.$state.loadingState.set("loading")}}u(V,"initiateLoading");function T(c){return new Promise(t=>{let e=u(()=>{s(),t(!0)},"onEnd"),i=u(()=>{s(),t(!1)},"onError"),s=u(()=>{c.removeEventListener("updateend",e),c.removeEventListener("updateerror",i)},"cleanup");c.addEventListener("updateend",e),c.addEventListener("updateerror",i)})}u(T,"waitForUpdateEnd");var Y=E,x="de-audio",j="de-audio-item";I(x,E);I(j,A);export{J as a,A as b,Y as c,x as d,j as e,B as f}; + +//# sourceMappingURL=./chunk-DMM3VA35.js.map \ No newline at end of file diff --git a/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-DMM3VA35.js.br b/artifacts/bafybeiaztlyng736zsecsmhtbl42kbrwocr3xmn6anvorai3hd4h2rd33y/chunk-DMM3VA35.js.br new file mode 100644 index 0000000000000000000000000000000000000000..d04ea66db9e06a6b405cdb369ffca5f03b088e12 GIT binary patch literal 5260 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 nodes are created on every track change. On iOS we\n * therefore render a single