{
  "version": 3,
  "sources": ["../../../../node_modules/ieee754/index.js", "../../../../node_modules/strtok3/lib/stream/Errors.js", "../../../../node_modules/strtok3/lib/stream/Deferred.js", "../../../../node_modules/strtok3/lib/stream/AbstractStreamReader.js", "../../../../node_modules/strtok3/lib/stream/StreamReader.js", "../../../../node_modules/strtok3/lib/stream/WebStreamReader.js", "../../../../node_modules/strtok3/lib/stream/WebStreamByobReader.js", "../../../../node_modules/strtok3/lib/stream/WebStreamDefaultReader.js", "../../../../node_modules/strtok3/lib/stream/WebStreamReaderFactory.js", "../../../../node_modules/strtok3/lib/stream/index.js", "../../../../node_modules/strtok3/lib/AbstractTokenizer.js", "../../../../node_modules/strtok3/lib/ReadStreamTokenizer.js", "../../../../node_modules/strtok3/lib/BufferTokenizer.js", "../../../../node_modules/strtok3/lib/BlobTokenizer.js", "../../../../node_modules/strtok3/lib/core.js", "../../../../node_modules/ms/index.js", "../../../../node_modules/debug/src/common.js", "../../../../node_modules/debug/src/browser.js", "../../../../node_modules/has-flag/index.js", "../../../../node_modules/supports-color/index.js", "../../../../node_modules/debug/src/node.js", "../../../../node_modules/debug/src/index.js", "../../../../node_modules/strtok3/lib/FileTokenizer.js", "../../../../node_modules/strtok3/lib/index.js", "../../../../node_modules/mime-db/db.json", "../../../../node_modules/mime-db/index.js", "../../../../node_modules/mime-types/mimeScore.js", "../../../../node_modules/mime-types/index.js", "../../../../node_modules/eventemitter3/index.js", "../../../../node_modules/rfdc/index.js", "../../../../node_modules/environment/index.js", "../../../../node_modules/ansi-escapes/base.js", "../../../../node_modules/ansi-escapes/index.js", "../../../../node_modules/mimic-function/index.js", "../../../../node_modules/onetime/index.js", "../../../../node_modules/signal-exit/src/signals.ts", "../../../../node_modules/signal-exit/src/index.ts", "../../../../node_modules/restore-cursor/index.js", "../../../../node_modules/cli-cursor/index.js", "../../../../node_modules/ansi-regex/index.js", "../../../../node_modules/strip-ansi/index.js", "../../../../node_modules/get-east-asian-width/lookup-data.js", "../../../../node_modules/get-east-asian-width/utilities.js", "../../../../node_modules/get-east-asian-width/lookup.js", "../../../../node_modules/get-east-asian-width/index.js", "../../../../node_modules/emoji-regex/index.js", "../../../../node_modules/string-width/index.js", "../../../../node_modules/wrap-ansi/node_modules/ansi-styles/index.js", "../../../../node_modules/wrap-ansi/index.js", "../../../../node_modules/slice-ansi/node_modules/ansi-styles/index.js", "../../../../node_modules/is-fullwidth-code-point/index.js", "../../../../node_modules/slice-ansi/index.js", "../../../../node_modules/log-update/index.js", "../../../../node_modules/cli-truncate/node_modules/ansi-styles/index.js", "../../../../node_modules/cli-truncate/node_modules/slice-ansi/tokenize-ansi.js", "../../../../node_modules/cli-truncate/node_modules/slice-ansi/index.js", "../../../../node_modules/cli-truncate/node_modules/string-width/index.js", "../../../../node_modules/cli-truncate/index.js", "../../../../node_modules/listr2/node_modules/string-width/index.js", "../../../../node_modules/listr2/node_modules/ansi-styles/index.js", "../../../../node_modules/listr2/node_modules/wrap-ansi/index.js", "../../src/commands/build.ts", "../../src/commands/deploy.ts", "../../src/constants/deploy.constants.ts", "../../src/constants/storage.constants.ts", "../../src/utils/cmd.utils.ts", "../../src/utils/cmd.windows.utils.ts", "../../src/services/deploy.hook.services.ts", "../../src/services/deploy.prepare.services.ts", "../../../../node_modules/token-types/lib/index.js", "../../../../node_modules/@borewit/text-codec/lib/index.js", "../../../../node_modules/file-type/source/index.js", "../../../../node_modules/@tokenizer/inflate/lib/ZipHandler.js", "../../../../node_modules/@tokenizer/inflate/lib/ZipToken.js", "../../../../node_modules/@tokenizer/inflate/lib/GzipHandler.js", "../../../../node_modules/uint8array-extras/index.js", "../../../../node_modules/file-type/source/tokens.js", "../../../../node_modules/file-type/source/supported.js", "../../../../node_modules/file-type/source/parser.js", "../../../../node_modules/file-type/source/detectors/zip.js", "../../../../node_modules/file-type/source/detectors/ebml.js", "../../../../node_modules/file-type/source/detectors/png.js", "../../../../node_modules/file-type/source/detectors/asf.js", "../../../../node_modules/brace-expansion/node_modules/balanced-match/src/index.ts", "../../../../node_modules/brace-expansion/src/index.ts", "../../node_modules/minimatch/src/assert-valid-pattern.ts", "../../node_modules/minimatch/src/brace-expressions.ts", "../../node_modules/minimatch/src/unescape.ts", "../../node_modules/minimatch/src/ast.ts", "../../node_modules/minimatch/src/escape.ts", "../../node_modules/minimatch/src/index.ts", "../../src/utils/assets.utils.ts", "../../src/utils/compress.utils.ts", "../../src/utils/deploy.utils.ts", "../../src/utils/fs.utils.ts", "../../src/services/proposals.services.ts", "../../src/utils/format.utils.ts", "../../../../node_modules/eventemitter3/index.mjs", "../../../../node_modules/listr2/dist/index.mjs", "../../src/services/upload/upload.batch.services.ts", "../../src/services/upload/_upload.services.ts", "../../src/utils/upload.utils.ts", "../../src/services/upload/upload.individual.services.ts", "../../src/services/upload.services.ts", "../../src/services/deploy.proposal.services.ts", "../../src/commands/generate.ts", "../../src/commands/prune.ts", "../../src/services/prune.prepare.services.ts", "../../src/utils/prune.utils.ts", "../../src/services/prune.services.ts", "../../src/commands/publish.ts", "../../src/utils/args.utils.ts", "../../src/utils/download.utils.ts", "../../src/utils/pkg.utils.ts", "../../src/utils/prompt.utils.ts"],
  "sourcesContent": ["/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n  var e, m\n  var eLen = (nBytes * 8) - mLen - 1\n  var eMax = (1 << eLen) - 1\n  var eBias = eMax >> 1\n  var nBits = -7\n  var i = isLE ? (nBytes - 1) : 0\n  var d = isLE ? -1 : 1\n  var s = buffer[offset + i]\n\n  i += d\n\n  e = s & ((1 << (-nBits)) - 1)\n  s >>= (-nBits)\n  nBits += eLen\n  for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n  m = e & ((1 << (-nBits)) - 1)\n  e >>= (-nBits)\n  nBits += mLen\n  for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n  if (e === 0) {\n    e = 1 - eBias\n  } else if (e === eMax) {\n    return m ? NaN : ((s ? -1 : 1) * Infinity)\n  } else {\n    m = m + Math.pow(2, mLen)\n    e = e - eBias\n  }\n  return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n  var e, m, c\n  var eLen = (nBytes * 8) - mLen - 1\n  var eMax = (1 << eLen) - 1\n  var eBias = eMax >> 1\n  var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n  var i = isLE ? 0 : (nBytes - 1)\n  var d = isLE ? 1 : -1\n  var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n  value = Math.abs(value)\n\n  if (isNaN(value) || value === Infinity) {\n    m = isNaN(value) ? 1 : 0\n    e = eMax\n  } else {\n    e = Math.floor(Math.log(value) / Math.LN2)\n    if (value * (c = Math.pow(2, -e)) < 1) {\n      e--\n      c *= 2\n    }\n    if (e + eBias >= 1) {\n      value += rt / c\n    } else {\n      value += rt * Math.pow(2, 1 - eBias)\n    }\n    if (value * c >= 2) {\n      e++\n      c /= 2\n    }\n\n    if (e + eBias >= eMax) {\n      m = 0\n      e = eMax\n    } else if (e + eBias >= 1) {\n      m = ((value * c) - 1) * Math.pow(2, mLen)\n      e = e + eBias\n    } else {\n      m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n      e = 0\n    }\n  }\n\n  for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n  e = (e << mLen) | m\n  eLen += mLen\n  for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n  buffer[offset + i - d] |= s * 128\n}\n", "export const defaultMessages = 'End-Of-Stream';\n/**\n * Thrown on read operation of the end of file or stream has been reached\n */\nexport class EndOfStreamError extends Error {\n    constructor() {\n        super(defaultMessages);\n        this.name = \"EndOfStreamError\";\n    }\n}\nexport class AbortError extends Error {\n    constructor(message = \"The operation was aborted\") {\n        super(message);\n        this.name = \"AbortError\";\n    }\n}\n", "export class Deferred {\n    constructor() {\n        this.resolve = () => null;\n        this.reject = () => null;\n        this.promise = new Promise((resolve, reject) => {\n            this.reject = reject;\n            this.resolve = resolve;\n        });\n    }\n}\n", "import { EndOfStreamError, AbortError } from \"./Errors.js\";\nexport class AbstractStreamReader {\n    constructor() {\n        this.endOfStream = false;\n        this.interrupted = false;\n        /**\n         * Store peeked data\n         * @type {Array}\n         */\n        this.peekQueue = [];\n    }\n    async peek(uint8Array, mayBeLess = false) {\n        const bytesRead = await this.read(uint8Array, mayBeLess);\n        this.peekQueue.push(uint8Array.subarray(0, bytesRead)); // Put read data back to peek buffer\n        return bytesRead;\n    }\n    async read(buffer, mayBeLess = false) {\n        if (buffer.length === 0) {\n            return 0;\n        }\n        let bytesRead = this.readFromPeekBuffer(buffer);\n        if (!this.endOfStream) {\n            bytesRead += await this.readRemainderFromStream(buffer.subarray(bytesRead), mayBeLess);\n        }\n        if (bytesRead === 0 && !mayBeLess) {\n            throw new EndOfStreamError();\n        }\n        return bytesRead;\n    }\n    /**\n     * Read chunk from stream\n     * @param buffer - Target Uint8Array (or Buffer) to store data read from stream in\n     * @returns Number of bytes read\n     */\n    readFromPeekBuffer(buffer) {\n        let remaining = buffer.length;\n        let bytesRead = 0;\n        // consume peeked data first\n        while (this.peekQueue.length > 0 && remaining > 0) {\n            const peekData = this.peekQueue.pop(); // Front of queue\n            if (!peekData)\n                throw new Error('peekData should be defined');\n            const lenCopy = Math.min(peekData.length, remaining);\n            buffer.set(peekData.subarray(0, lenCopy), bytesRead);\n            bytesRead += lenCopy;\n            remaining -= lenCopy;\n            if (lenCopy < peekData.length) {\n                // remainder back to queue\n                this.peekQueue.push(peekData.subarray(lenCopy));\n            }\n        }\n        return bytesRead;\n    }\n    async readRemainderFromStream(buffer, mayBeLess) {\n        let bytesRead = 0;\n        // Continue reading from stream if required\n        while (bytesRead < buffer.length && !this.endOfStream) {\n            if (this.interrupted) {\n                throw new AbortError();\n            }\n            const chunkLen = await this.readFromStream(buffer.subarray(bytesRead), mayBeLess);\n            if (chunkLen === 0)\n                break;\n            bytesRead += chunkLen;\n        }\n        if (!mayBeLess && bytesRead < buffer.length) {\n            throw new EndOfStreamError();\n        }\n        return bytesRead;\n    }\n}\n", "import { AbortError, } from './Errors.js';\nimport { Deferred } from './Deferred.js';\nimport { AbstractStreamReader } from \"./AbstractStreamReader.js\";\n/**\n * Node.js Readable Stream Reader\n * Ref: https://nodejs.org/api/stream.html#readable-streams\n */\nexport class StreamReader extends AbstractStreamReader {\n    constructor(s) {\n        super();\n        this.s = s;\n        /**\n         * Deferred used for postponed read request (as not data is yet available to read)\n         */\n        this.deferred = null;\n        if (!s.read || !s.once) {\n            throw new Error('Expected an instance of stream.Readable');\n        }\n        this.s.once('end', () => {\n            this.endOfStream = true;\n            if (this.deferred) {\n                this.deferred.resolve(0);\n            }\n        });\n        this.s.once('error', err => this.reject(err));\n        this.s.once('close', () => this.abort());\n    }\n    /**\n     * Read chunk from stream\n     * @param buffer Target Uint8Array (or Buffer) to store data read from stream in\n     * @param mayBeLess - If true, may fill the buffer partially\n     * @returns Number of bytes read\n     */\n    async readFromStream(buffer, mayBeLess) {\n        if (buffer.length === 0)\n            return 0;\n        const readBuffer = this.s.read(buffer.length);\n        if (readBuffer) {\n            buffer.set(readBuffer);\n            return readBuffer.length;\n        }\n        const request = {\n            buffer,\n            mayBeLess,\n            deferred: new Deferred()\n        };\n        this.deferred = request.deferred;\n        this.s.once('readable', () => {\n            this.readDeferred(request);\n        });\n        return request.deferred.promise;\n    }\n    /**\n     * Process deferred read request\n     * @param request Deferred read request\n     */\n    readDeferred(request) {\n        const readBuffer = this.s.read(request.buffer.length);\n        if (readBuffer) {\n            request.buffer.set(readBuffer);\n            request.deferred.resolve(readBuffer.length);\n            this.deferred = null;\n        }\n        else {\n            this.s.once('readable', () => {\n                this.readDeferred(request);\n            });\n        }\n    }\n    reject(err) {\n        this.interrupted = true;\n        if (this.deferred) {\n            this.deferred.reject(err);\n            this.deferred = null;\n        }\n    }\n    async abort() {\n        this.reject(new AbortError());\n    }\n    async close() {\n        return this.abort();\n    }\n}\n", "import { AbstractStreamReader } from \"./AbstractStreamReader.js\";\nexport class WebStreamReader extends AbstractStreamReader {\n    constructor(reader) {\n        super();\n        this.reader = reader;\n    }\n    async abort() {\n        return this.close();\n    }\n    async close() {\n        this.reader.releaseLock();\n    }\n}\n", "import { WebStreamReader } from './WebStreamReader.js';\n/**\n * Read from a WebStream using a BYOB reader\n * Reference: https://nodejs.org/api/webstreams.html#class-readablestreambyobreader\n */\nexport class WebStreamByobReader extends WebStreamReader {\n    /**\n     * Read from stream\n     * @param buffer - Target Uint8Array (or Buffer) to store data read from stream in\n     * @param mayBeLess - If true, may fill the buffer partially\n     * @protected Bytes read\n     */\n    async readFromStream(buffer, mayBeLess) {\n        if (buffer.length === 0)\n            return 0;\n        // @ts-expect-error\n        const result = await this.reader.read(new Uint8Array(buffer.length), { min: mayBeLess ? undefined : buffer.length });\n        if (result.done) {\n            this.endOfStream = result.done;\n        }\n        if (result.value) {\n            buffer.set(result.value);\n            return result.value.length;\n        }\n        return 0;\n    }\n}\n", "import { EndOfStreamError } from './Errors.js';\nimport { AbstractStreamReader } from \"./AbstractStreamReader.js\";\nexport class WebStreamDefaultReader extends AbstractStreamReader {\n    constructor(reader) {\n        super();\n        this.reader = reader;\n        this.buffer = null; // Internal buffer to store excess data\n    }\n    /**\n     * Copy chunk to target, and store the remainder in this.buffer\n     */\n    writeChunk(target, chunk) {\n        const written = Math.min(chunk.length, target.length);\n        target.set(chunk.subarray(0, written));\n        // Adjust the remainder of the buffer\n        if (written < chunk.length) {\n            this.buffer = chunk.subarray(written);\n        }\n        else {\n            this.buffer = null;\n        }\n        return written;\n    }\n    /**\n     * Read from stream\n     * @param buffer - Target Uint8Array (or Buffer) to store data read from stream in\n     * @param mayBeLess - If true, may fill the buffer partially\n     * @protected Bytes read\n     */\n    async readFromStream(buffer, mayBeLess) {\n        if (buffer.length === 0)\n            return 0;\n        let totalBytesRead = 0;\n        // Serve from the internal buffer first\n        if (this.buffer) {\n            totalBytesRead += this.writeChunk(buffer, this.buffer);\n        }\n        // Continue reading from the stream if more data is needed\n        while (totalBytesRead < buffer.length && !this.endOfStream) {\n            const result = await this.reader.read();\n            if (result.done) {\n                this.endOfStream = true;\n                break;\n            }\n            if (result.value) {\n                totalBytesRead += this.writeChunk(buffer.subarray(totalBytesRead), result.value);\n            }\n        }\n        if (!mayBeLess && totalBytesRead === 0 && this.endOfStream) {\n            throw new EndOfStreamError();\n        }\n        return totalBytesRead;\n    }\n    abort() {\n        this.interrupted = true;\n        return this.reader.cancel();\n    }\n    async close() {\n        await this.abort();\n        this.reader.releaseLock();\n    }\n}\n", "import { WebStreamByobReader } from './WebStreamByobReader.js';\nimport { WebStreamDefaultReader } from './WebStreamDefaultReader.js';\nexport function makeWebStreamReader(stream) {\n    try {\n        const reader = stream.getReader({ mode: \"byob\" });\n        if (reader instanceof ReadableStreamDefaultReader) {\n            // Fallback to default reader in case `mode: byob` is ignored\n            return new WebStreamDefaultReader(reader);\n        }\n        return new WebStreamByobReader(reader);\n    }\n    catch (error) {\n        if (error instanceof TypeError) {\n            // Fallback to default reader in case `mode: byob` rejected by a `TypeError`\n            return new WebStreamDefaultReader(stream.getReader());\n        }\n        throw error;\n    }\n}\n", "export { AbortError, EndOfStreamError } from './Errors.js';\nexport { StreamReader } from './StreamReader.js';\nexport { WebStreamByobReader } from './WebStreamByobReader.js';\nexport { WebStreamDefaultReader } from './WebStreamDefaultReader.js';\nexport { makeWebStreamReader } from './WebStreamReaderFactory.js';\n", "import { EndOfStreamError } from './stream/index.js';\n/**\n * Core tokenizer\n */\nexport class AbstractTokenizer {\n    /**\n     * Constructor\n     * @param options Tokenizer options\n     * @protected\n     */\n    constructor(options) {\n        this.numBuffer = new Uint8Array(8);\n        /**\n         * Tokenizer-stream position\n         */\n        this.position = 0;\n        this.onClose = options?.onClose;\n        if (options?.abortSignal) {\n            options.abortSignal.addEventListener('abort', () => {\n                this.abort();\n            });\n        }\n    }\n    /**\n     * Read a token from the tokenizer-stream\n     * @param token - The token to read\n     * @param position - If provided, the desired position in the tokenizer-stream\n     * @returns Promise with token data\n     */\n    async readToken(token, position = this.position) {\n        const uint8Array = new Uint8Array(token.len);\n        const len = await this.readBuffer(uint8Array, { position });\n        if (len < token.len)\n            throw new EndOfStreamError();\n        return token.get(uint8Array, 0);\n    }\n    /**\n     * Peek a token from the tokenizer-stream.\n     * @param token - Token to peek from the tokenizer-stream.\n     * @param position - Offset where to begin reading within the file. If position is null, data will be read from the current file position.\n     * @returns Promise with token data\n     */\n    async peekToken(token, position = this.position) {\n        const uint8Array = new Uint8Array(token.len);\n        const len = await this.peekBuffer(uint8Array, { position });\n        if (len < token.len)\n            throw new EndOfStreamError();\n        return token.get(uint8Array, 0);\n    }\n    /**\n     * Read a numeric token from the stream\n     * @param token - Numeric token\n     * @returns Promise with number\n     */\n    async readNumber(token) {\n        const len = await this.readBuffer(this.numBuffer, { length: token.len });\n        if (len < token.len)\n            throw new EndOfStreamError();\n        return token.get(this.numBuffer, 0);\n    }\n    /**\n     * Read a numeric token from the stream\n     * @param token - Numeric token\n     * @returns Promise with number\n     */\n    async peekNumber(token) {\n        const len = await this.peekBuffer(this.numBuffer, { length: token.len });\n        if (len < token.len)\n            throw new EndOfStreamError();\n        return token.get(this.numBuffer, 0);\n    }\n    /**\n     * Ignore number of bytes, advances the pointer in under tokenizer-stream.\n     * @param length - Number of bytes to ignore.  Must be \u2265 0.\n     * @return resolves the number of bytes ignored, equals length if this available, otherwise the number of bytes available\n     */\n    async ignore(length) {\n        if (length < 0) {\n            throw new RangeError('ignore length must be \u2265 0 bytes');\n        }\n        if (this.fileInfo.size !== undefined) {\n            const bytesLeft = this.fileInfo.size - this.position;\n            if (length > bytesLeft) {\n                this.position += bytesLeft;\n                return bytesLeft;\n            }\n        }\n        this.position += length;\n        return length;\n    }\n    async close() {\n        await this.abort();\n        await this.onClose?.();\n    }\n    normalizeOptions(uint8Array, options) {\n        if (!this.supportsRandomAccess() && options && options.position !== undefined && options.position < this.position) {\n            throw new Error('`options.position` must be equal or greater than `tokenizer.position`');\n        }\n        return {\n            ...{\n                mayBeLess: false,\n                offset: 0,\n                length: uint8Array.length,\n                position: this.position\n            }, ...options\n        };\n    }\n    abort() {\n        return Promise.resolve(); // Ignore abort signal\n    }\n}\n", "import { AbstractTokenizer } from './AbstractTokenizer.js';\nimport { EndOfStreamError } from './stream/index.js';\nconst maxBufferSize = 256000;\nexport class ReadStreamTokenizer extends AbstractTokenizer {\n    /**\n     * Constructor\n     * @param streamReader stream-reader to read from\n     * @param options Tokenizer options\n     */\n    constructor(streamReader, options) {\n        super(options);\n        this.streamReader = streamReader;\n        this.fileInfo = options?.fileInfo ?? {};\n    }\n    /**\n     * Read buffer from tokenizer\n     * @param uint8Array - Target Uint8Array to fill with data read from the tokenizer-stream\n     * @param options - Read behaviour options\n     * @returns Promise with number of bytes read\n     */\n    async readBuffer(uint8Array, options) {\n        const normOptions = this.normalizeOptions(uint8Array, options);\n        const skipBytes = normOptions.position - this.position;\n        if (skipBytes > 0) {\n            await this.ignore(skipBytes);\n            return this.readBuffer(uint8Array, options);\n        }\n        if (skipBytes < 0) {\n            throw new Error('`options.position` must be equal or greater than `tokenizer.position`');\n        }\n        if (normOptions.length === 0) {\n            return 0;\n        }\n        const bytesRead = await this.streamReader.read(uint8Array.subarray(0, normOptions.length), normOptions.mayBeLess);\n        this.position += bytesRead;\n        if ((!options || !options.mayBeLess) && bytesRead < normOptions.length) {\n            throw new EndOfStreamError();\n        }\n        return bytesRead;\n    }\n    /**\n     * Peek (read ahead) buffer from tokenizer\n     * @param uint8Array - Uint8Array (or Buffer) to write data to\n     * @param options - Read behaviour options\n     * @returns Promise with number of bytes peeked\n     */\n    async peekBuffer(uint8Array, options) {\n        const normOptions = this.normalizeOptions(uint8Array, options);\n        let bytesRead = 0;\n        if (normOptions.position) {\n            const skipBytes = normOptions.position - this.position;\n            if (skipBytes > 0) {\n                const skipBuffer = new Uint8Array(normOptions.length + skipBytes);\n                bytesRead = await this.peekBuffer(skipBuffer, { mayBeLess: normOptions.mayBeLess });\n                uint8Array.set(skipBuffer.subarray(skipBytes));\n                return bytesRead - skipBytes;\n            }\n            if (skipBytes < 0) {\n                throw new Error('Cannot peek from a negative offset in a stream');\n            }\n        }\n        if (normOptions.length > 0) {\n            try {\n                bytesRead = await this.streamReader.peek(uint8Array.subarray(0, normOptions.length), normOptions.mayBeLess);\n            }\n            catch (err) {\n                if (options?.mayBeLess && err instanceof EndOfStreamError) {\n                    return 0;\n                }\n                throw err;\n            }\n            if ((!normOptions.mayBeLess) && bytesRead < normOptions.length) {\n                throw new EndOfStreamError();\n            }\n        }\n        return bytesRead;\n    }\n    /**\n     * @param length Number of bytes to ignore. Must be \u2265 0.\n     */\n    async ignore(length) {\n        if (length < 0) {\n            throw new RangeError('ignore length must be \u2265 0 bytes');\n        }\n        const bufSize = Math.min(maxBufferSize, length);\n        const buf = new Uint8Array(bufSize);\n        let totBytesRead = 0;\n        while (totBytesRead < length) {\n            const remaining = length - totBytesRead;\n            const bytesRead = await this.readBuffer(buf, { length: Math.min(bufSize, remaining) });\n            if (bytesRead < 0) {\n                return bytesRead;\n            }\n            totBytesRead += bytesRead;\n        }\n        return totBytesRead;\n    }\n    abort() {\n        return this.streamReader.abort();\n    }\n    async close() {\n        return this.streamReader.close();\n    }\n    supportsRandomAccess() {\n        return false;\n    }\n}\n", "import { EndOfStreamError } from './stream/index.js';\nimport { AbstractTokenizer } from './AbstractTokenizer.js';\nexport class BufferTokenizer extends AbstractTokenizer {\n    /**\n     * Construct BufferTokenizer\n     * @param uint8Array - Uint8Array to tokenize\n     * @param options Tokenizer options\n     */\n    constructor(uint8Array, options) {\n        super(options);\n        this.uint8Array = uint8Array;\n        this.fileInfo = { ...options?.fileInfo ?? {}, ...{ size: uint8Array.length } };\n    }\n    /**\n     * Read buffer from tokenizer\n     * @param uint8Array - Uint8Array to tokenize\n     * @param options - Read behaviour options\n     * @returns {Promise<number>}\n     */\n    async readBuffer(uint8Array, options) {\n        if (options?.position) {\n            this.position = options.position;\n        }\n        const bytesRead = await this.peekBuffer(uint8Array, options);\n        this.position += bytesRead;\n        return bytesRead;\n    }\n    /**\n     * Peek (read ahead) buffer from tokenizer\n     * @param uint8Array\n     * @param options - Read behaviour options\n     * @returns {Promise<number>}\n     */\n    async peekBuffer(uint8Array, options) {\n        const normOptions = this.normalizeOptions(uint8Array, options);\n        const bytes2read = Math.min(this.uint8Array.length - normOptions.position, normOptions.length);\n        if ((!normOptions.mayBeLess) && bytes2read < normOptions.length) {\n            throw new EndOfStreamError();\n        }\n        uint8Array.set(this.uint8Array.subarray(normOptions.position, normOptions.position + bytes2read));\n        return bytes2read;\n    }\n    close() {\n        return super.close();\n    }\n    supportsRandomAccess() {\n        return true;\n    }\n    setPosition(position) {\n        this.position = position;\n    }\n}\n", "import { EndOfStreamError } from './stream/index.js';\nimport { AbstractTokenizer } from './AbstractTokenizer.js';\nexport class BlobTokenizer extends AbstractTokenizer {\n    /**\n     * Construct BufferTokenizer\n     * @param blob - Uint8Array to tokenize\n     * @param options Tokenizer options\n     */\n    constructor(blob, options) {\n        super(options);\n        this.blob = blob;\n        this.fileInfo = { ...options?.fileInfo ?? {}, ...{ size: blob.size, mimeType: blob.type } };\n    }\n    /**\n     * Read buffer from tokenizer\n     * @param uint8Array - Uint8Array to tokenize\n     * @param options - Read behaviour options\n     * @returns {Promise<number>}\n     */\n    async readBuffer(uint8Array, options) {\n        if (options?.position) {\n            this.position = options.position;\n        }\n        const bytesRead = await this.peekBuffer(uint8Array, options);\n        this.position += bytesRead;\n        return bytesRead;\n    }\n    /**\n     * Peek (read ahead) buffer from tokenizer\n     * @param buffer\n     * @param options - Read behaviour options\n     * @returns {Promise<number>}\n     */\n    async peekBuffer(buffer, options) {\n        const normOptions = this.normalizeOptions(buffer, options);\n        const bytes2read = Math.min(this.blob.size - normOptions.position, normOptions.length);\n        if ((!normOptions.mayBeLess) && bytes2read < normOptions.length) {\n            throw new EndOfStreamError();\n        }\n        const arrayBuffer = await this.blob.slice(normOptions.position, normOptions.position + bytes2read).arrayBuffer();\n        buffer.set(new Uint8Array(arrayBuffer));\n        return bytes2read;\n    }\n    close() {\n        return super.close();\n    }\n    supportsRandomAccess() {\n        return true;\n    }\n    setPosition(position) {\n        this.position = position;\n    }\n}\n", "import { StreamReader, makeWebStreamReader } from './stream/index.js';\nimport { ReadStreamTokenizer } from './ReadStreamTokenizer.js';\nimport { BufferTokenizer } from './BufferTokenizer.js';\nimport { BlobTokenizer } from './BlobTokenizer.js';\nexport { EndOfStreamError, AbortError } from './stream/index.js';\nexport { AbstractTokenizer } from './AbstractTokenizer.js';\n/**\n * Construct ReadStreamTokenizer from given Stream.\n * Will set fileSize, if provided given Stream has set the .path property/\n * @param stream - Read from Node.js Stream.Readable\n * @param options - Tokenizer options\n * @returns ReadStreamTokenizer\n */\nexport function fromStream(stream, options) {\n    const streamReader = new StreamReader(stream);\n    const _options = options ?? {};\n    const chainedClose = _options.onClose;\n    _options.onClose = async () => {\n        await streamReader.close();\n        if (chainedClose) {\n            return chainedClose();\n        }\n    };\n    return new ReadStreamTokenizer(streamReader, _options);\n}\n/**\n * Construct ReadStreamTokenizer from given ReadableStream (WebStream API).\n * Will set fileSize, if provided given Stream has set the .path property/\n * @param webStream - Read from Node.js Stream.Readable (must be a byte stream)\n * @param options - Tokenizer options\n * @returns ReadStreamTokenizer\n */\nexport function fromWebStream(webStream, options) {\n    const webStreamReader = makeWebStreamReader(webStream);\n    const _options = options ?? {};\n    const chainedClose = _options.onClose;\n    _options.onClose = async () => {\n        await webStreamReader.close();\n        if (chainedClose) {\n            return chainedClose();\n        }\n    };\n    return new ReadStreamTokenizer(webStreamReader, _options);\n}\n/**\n * Construct ReadStreamTokenizer from given Buffer.\n * @param uint8Array - Uint8Array to tokenize\n * @param options - Tokenizer options\n * @returns BufferTokenizer\n */\nexport function fromBuffer(uint8Array, options) {\n    return new BufferTokenizer(uint8Array, options);\n}\n/**\n * Construct ReadStreamTokenizer from given Blob.\n * @param blob - Uint8Array to tokenize\n * @param options - Tokenizer options\n * @returns BufferTokenizer\n */\nexport function fromBlob(blob, options) {\n    return new BlobTokenizer(blob, options);\n}\n", "/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n *  - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function (val, options) {\n  options = options || {};\n  var type = typeof val;\n  if (type === 'string' && val.length > 0) {\n    return parse(val);\n  } else if (type === 'number' && isFinite(val)) {\n    return options.long ? fmtLong(val) : fmtShort(val);\n  }\n  throw new Error(\n    'val is not a non-empty string or a valid number. val=' +\n      JSON.stringify(val)\n  );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n  str = String(str);\n  if (str.length > 100) {\n    return;\n  }\n  var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n    str\n  );\n  if (!match) {\n    return;\n  }\n  var n = parseFloat(match[1]);\n  var type = (match[2] || 'ms').toLowerCase();\n  switch (type) {\n    case 'years':\n    case 'year':\n    case 'yrs':\n    case 'yr':\n    case 'y':\n      return n * y;\n    case 'weeks':\n    case 'week':\n    case 'w':\n      return n * w;\n    case 'days':\n    case 'day':\n    case 'd':\n      return n * d;\n    case 'hours':\n    case 'hour':\n    case 'hrs':\n    case 'hr':\n    case 'h':\n      return n * h;\n    case 'minutes':\n    case 'minute':\n    case 'mins':\n    case 'min':\n    case 'm':\n      return n * m;\n    case 'seconds':\n    case 'second':\n    case 'secs':\n    case 'sec':\n    case 's':\n      return n * s;\n    case 'milliseconds':\n    case 'millisecond':\n    case 'msecs':\n    case 'msec':\n    case 'ms':\n      return n;\n    default:\n      return undefined;\n  }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n  var msAbs = Math.abs(ms);\n  if (msAbs >= d) {\n    return Math.round(ms / d) + 'd';\n  }\n  if (msAbs >= h) {\n    return Math.round(ms / h) + 'h';\n  }\n  if (msAbs >= m) {\n    return Math.round(ms / m) + 'm';\n  }\n  if (msAbs >= s) {\n    return Math.round(ms / s) + 's';\n  }\n  return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n  var msAbs = Math.abs(ms);\n  if (msAbs >= d) {\n    return plural(ms, msAbs, d, 'day');\n  }\n  if (msAbs >= h) {\n    return plural(ms, msAbs, h, 'hour');\n  }\n  if (msAbs >= m) {\n    return plural(ms, msAbs, m, 'minute');\n  }\n  if (msAbs >= s) {\n    return plural(ms, msAbs, s, 'second');\n  }\n  return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n  var isPlural = msAbs >= n * 1.5;\n  return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n", "\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\t\tlet namespacesCache;\n\t\tlet enabledCache;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => {\n\t\t\t\tif (enableOverride !== null) {\n\t\t\t\t\treturn enableOverride;\n\t\t\t\t}\n\t\t\t\tif (namespacesCache !== createDebug.namespaces) {\n\t\t\t\t\tnamespacesCache = createDebug.namespaces;\n\t\t\t\t\tenabledCache = createDebug.enabled(namespace);\n\t\t\t\t}\n\n\t\t\t\treturn enabledCache;\n\t\t\t},\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\t\tcreateDebug.namespaces = namespaces;\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '')\n\t\t\t.trim()\n\t\t\t.replace(/\\s+/g, ',')\n\t\t\t.split(',')\n\t\t\t.filter(Boolean);\n\n\t\tfor (const ns of split) {\n\t\t\tif (ns[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(ns.slice(1));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(ns);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Checks if the given string matches a namespace template, honoring\n\t * asterisks as wildcards.\n\t *\n\t * @param {String} search\n\t * @param {String} template\n\t * @return {Boolean}\n\t */\n\tfunction matchesTemplate(search, template) {\n\t\tlet searchIndex = 0;\n\t\tlet templateIndex = 0;\n\t\tlet starIndex = -1;\n\t\tlet matchIndex = 0;\n\n\t\twhile (searchIndex < search.length) {\n\t\t\tif (templateIndex < template.length && (template[templateIndex] === search[searchIndex] || template[templateIndex] === '*')) {\n\t\t\t\t// Match character or proceed with wildcard\n\t\t\t\tif (template[templateIndex] === '*') {\n\t\t\t\t\tstarIndex = templateIndex;\n\t\t\t\t\tmatchIndex = searchIndex;\n\t\t\t\t\ttemplateIndex++; // Skip the '*'\n\t\t\t\t} else {\n\t\t\t\t\tsearchIndex++;\n\t\t\t\t\ttemplateIndex++;\n\t\t\t\t}\n\t\t\t} else if (starIndex !== -1) { // eslint-disable-line no-negated-condition\n\t\t\t\t// Backtrack to the last '*' and try to match more characters\n\t\t\t\ttemplateIndex = starIndex + 1;\n\t\t\t\tmatchIndex++;\n\t\t\t\tsearchIndex = matchIndex;\n\t\t\t} else {\n\t\t\t\treturn false; // No match\n\t\t\t}\n\t\t}\n\n\t\t// Handle trailing '*' in template\n\t\twhile (templateIndex < template.length && template[templateIndex] === '*') {\n\t\t\ttemplateIndex++;\n\t\t}\n\n\t\treturn templateIndex === template.length;\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names,\n\t\t\t...createDebug.skips.map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tfor (const skip of createDebug.skips) {\n\t\t\tif (matchesTemplate(name, skip)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (const ns of createDebug.names) {\n\t\t\tif (matchesTemplate(name, ns)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n", "/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\tlet m;\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\t// eslint-disable-next-line no-return-assign\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && (m = navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/)) && parseInt(m[1], 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug') || exports.storage.getItem('DEBUG') ;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n", "'use strict';\n\nmodule.exports = (flag, argv = process.argv) => {\n\tconst prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');\n\tconst position = argv.indexOf(prefix + flag);\n\tconst terminatorPosition = argv.indexOf('--');\n\treturn position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);\n};\n", "'use strict';\nconst os = require('os');\nconst tty = require('tty');\nconst hasFlag = require('has-flag');\n\nconst {env} = process;\n\nlet forceColor;\nif (hasFlag('no-color') ||\n\thasFlag('no-colors') ||\n\thasFlag('color=false') ||\n\thasFlag('color=never')) {\n\tforceColor = 0;\n} else if (hasFlag('color') ||\n\thasFlag('colors') ||\n\thasFlag('color=true') ||\n\thasFlag('color=always')) {\n\tforceColor = 1;\n}\n\nif ('FORCE_COLOR' in env) {\n\tif (env.FORCE_COLOR === 'true') {\n\t\tforceColor = 1;\n\t} else if (env.FORCE_COLOR === 'false') {\n\t\tforceColor = 0;\n\t} else {\n\t\tforceColor = env.FORCE_COLOR.length === 0 ? 1 : Math.min(parseInt(env.FORCE_COLOR, 10), 3);\n\t}\n}\n\nfunction translateLevel(level) {\n\tif (level === 0) {\n\t\treturn false;\n\t}\n\n\treturn {\n\t\tlevel,\n\t\thasBasic: true,\n\t\thas256: level >= 2,\n\t\thas16m: level >= 3\n\t};\n}\n\nfunction supportsColor(haveStream, streamIsTTY) {\n\tif (forceColor === 0) {\n\t\treturn 0;\n\t}\n\n\tif (hasFlag('color=16m') ||\n\t\thasFlag('color=full') ||\n\t\thasFlag('color=truecolor')) {\n\t\treturn 3;\n\t}\n\n\tif (hasFlag('color=256')) {\n\t\treturn 2;\n\t}\n\n\tif (haveStream && !streamIsTTY && forceColor === undefined) {\n\t\treturn 0;\n\t}\n\n\tconst min = forceColor || 0;\n\n\tif (env.TERM === 'dumb') {\n\t\treturn min;\n\t}\n\n\tif (process.platform === 'win32') {\n\t\t// Windows 10 build 10586 is the first Windows release that supports 256 colors.\n\t\t// Windows 10 build 14931 is the first release that supports 16m/TrueColor.\n\t\tconst osRelease = os.release().split('.');\n\t\tif (\n\t\t\tNumber(osRelease[0]) >= 10 &&\n\t\t\tNumber(osRelease[2]) >= 10586\n\t\t) {\n\t\t\treturn Number(osRelease[2]) >= 14931 ? 3 : 2;\n\t\t}\n\n\t\treturn 1;\n\t}\n\n\tif ('CI' in env) {\n\t\tif (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI', 'GITHUB_ACTIONS', 'BUILDKITE'].some(sign => sign in env) || env.CI_NAME === 'codeship') {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn min;\n\t}\n\n\tif ('TEAMCITY_VERSION' in env) {\n\t\treturn /^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;\n\t}\n\n\tif (env.COLORTERM === 'truecolor') {\n\t\treturn 3;\n\t}\n\n\tif ('TERM_PROGRAM' in env) {\n\t\tconst version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);\n\n\t\tswitch (env.TERM_PROGRAM) {\n\t\t\tcase 'iTerm.app':\n\t\t\t\treturn version >= 3 ? 3 : 2;\n\t\t\tcase 'Apple_Terminal':\n\t\t\t\treturn 2;\n\t\t\t// No default\n\t\t}\n\t}\n\n\tif (/-256(color)?$/i.test(env.TERM)) {\n\t\treturn 2;\n\t}\n\n\tif (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {\n\t\treturn 1;\n\t}\n\n\tif ('COLORTERM' in env) {\n\t\treturn 1;\n\t}\n\n\treturn min;\n}\n\nfunction getSupportLevel(stream) {\n\tconst level = supportsColor(stream, stream && stream.isTTY);\n\treturn translateLevel(level);\n}\n\nmodule.exports = {\n\tsupportsColor: getSupportLevel,\n\tstdout: translateLevel(supportsColor(true, tty.isatty(1))),\n\tstderr: translateLevel(supportsColor(true, tty.isatty(2)))\n};\n", "/**\n * Module dependencies.\n */\n\nconst tty = require('tty');\nconst util = require('util');\n\n/**\n * This is the Node.js implementation of `debug()`.\n */\n\nexports.init = init;\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.destroy = util.deprecate(\n\t() => {},\n\t'Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'\n);\n\n/**\n * Colors.\n */\n\nexports.colors = [6, 2, 3, 4, 5, 1];\n\ntry {\n\t// Optional dependency (as in, doesn't need to be installed, NOT like optionalDependencies in package.json)\n\t// eslint-disable-next-line import/no-extraneous-dependencies\n\tconst supportsColor = require('supports-color');\n\n\tif (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) {\n\t\texports.colors = [\n\t\t\t20,\n\t\t\t21,\n\t\t\t26,\n\t\t\t27,\n\t\t\t32,\n\t\t\t33,\n\t\t\t38,\n\t\t\t39,\n\t\t\t40,\n\t\t\t41,\n\t\t\t42,\n\t\t\t43,\n\t\t\t44,\n\t\t\t45,\n\t\t\t56,\n\t\t\t57,\n\t\t\t62,\n\t\t\t63,\n\t\t\t68,\n\t\t\t69,\n\t\t\t74,\n\t\t\t75,\n\t\t\t76,\n\t\t\t77,\n\t\t\t78,\n\t\t\t79,\n\t\t\t80,\n\t\t\t81,\n\t\t\t92,\n\t\t\t93,\n\t\t\t98,\n\t\t\t99,\n\t\t\t112,\n\t\t\t113,\n\t\t\t128,\n\t\t\t129,\n\t\t\t134,\n\t\t\t135,\n\t\t\t148,\n\t\t\t149,\n\t\t\t160,\n\t\t\t161,\n\t\t\t162,\n\t\t\t163,\n\t\t\t164,\n\t\t\t165,\n\t\t\t166,\n\t\t\t167,\n\t\t\t168,\n\t\t\t169,\n\t\t\t170,\n\t\t\t171,\n\t\t\t172,\n\t\t\t173,\n\t\t\t178,\n\t\t\t179,\n\t\t\t184,\n\t\t\t185,\n\t\t\t196,\n\t\t\t197,\n\t\t\t198,\n\t\t\t199,\n\t\t\t200,\n\t\t\t201,\n\t\t\t202,\n\t\t\t203,\n\t\t\t204,\n\t\t\t205,\n\t\t\t206,\n\t\t\t207,\n\t\t\t208,\n\t\t\t209,\n\t\t\t214,\n\t\t\t215,\n\t\t\t220,\n\t\t\t221\n\t\t];\n\t}\n} catch (error) {\n\t// Swallow - we only care if `supports-color` is available; it doesn't have to be.\n}\n\n/**\n * Build up the default `inspectOpts` object from the environment variables.\n *\n *   $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js\n */\n\nexports.inspectOpts = Object.keys(process.env).filter(key => {\n\treturn /^debug_/i.test(key);\n}).reduce((obj, key) => {\n\t// Camel-case\n\tconst prop = key\n\t\t.substring(6)\n\t\t.toLowerCase()\n\t\t.replace(/_([a-z])/g, (_, k) => {\n\t\t\treturn k.toUpperCase();\n\t\t});\n\n\t// Coerce string value into JS value\n\tlet val = process.env[key];\n\tif (/^(yes|on|true|enabled)$/i.test(val)) {\n\t\tval = true;\n\t} else if (/^(no|off|false|disabled)$/i.test(val)) {\n\t\tval = false;\n\t} else if (val === 'null') {\n\t\tval = null;\n\t} else {\n\t\tval = Number(val);\n\t}\n\n\tobj[prop] = val;\n\treturn obj;\n}, {});\n\n/**\n * Is stdout a TTY? Colored output is enabled when `true`.\n */\n\nfunction useColors() {\n\treturn 'colors' in exports.inspectOpts ?\n\t\tBoolean(exports.inspectOpts.colors) :\n\t\ttty.isatty(process.stderr.fd);\n}\n\n/**\n * Adds ANSI color escape codes if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\tconst {namespace: name, useColors} = this;\n\n\tif (useColors) {\n\t\tconst c = this.color;\n\t\tconst colorCode = '\\u001B[3' + (c < 8 ? c : '8;5;' + c);\n\t\tconst prefix = `  ${colorCode};1m${name} \\u001B[0m`;\n\n\t\targs[0] = prefix + args[0].split('\\n').join('\\n' + prefix);\n\t\targs.push(colorCode + 'm+' + module.exports.humanize(this.diff) + '\\u001B[0m');\n\t} else {\n\t\targs[0] = getDate() + name + ' ' + args[0];\n\t}\n}\n\nfunction getDate() {\n\tif (exports.inspectOpts.hideDate) {\n\t\treturn '';\n\t}\n\treturn new Date().toISOString() + ' ';\n}\n\n/**\n * Invokes `util.formatWithOptions()` with the specified arguments and writes to stderr.\n */\n\nfunction log(...args) {\n\treturn process.stderr.write(util.formatWithOptions(exports.inspectOpts, ...args) + '\\n');\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\tif (namespaces) {\n\t\tprocess.env.DEBUG = namespaces;\n\t} else {\n\t\t// If you set a process.env field to null or undefined, it gets cast to the\n\t\t// string 'null' or 'undefined'. Just delete instead.\n\t\tdelete process.env.DEBUG;\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n\treturn process.env.DEBUG;\n}\n\n/**\n * Init logic for `debug` instances.\n *\n * Create a new `inspectOpts` object in case `useColors` is set\n * differently for a particular `debug` instance.\n */\n\nfunction init(debug) {\n\tdebug.inspectOpts = {};\n\n\tconst keys = Object.keys(exports.inspectOpts);\n\tfor (let i = 0; i < keys.length; i++) {\n\t\tdebug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]];\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %o to `util.inspect()`, all on a single line.\n */\n\nformatters.o = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts)\n\t\t.split('\\n')\n\t\t.map(str => str.trim())\n\t\t.join(' ');\n};\n\n/**\n * Map %O to `util.inspect()`, allowing multiple lines if needed.\n */\n\nformatters.O = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts);\n};\n", "/**\n * Detect Electron renderer / nwjs process, which is node, but we should\n * treat as a browser.\n */\n\nif (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) {\n\tmodule.exports = require('./browser.js');\n} else {\n\tmodule.exports = require('./node.js');\n}\n", "import { AbstractTokenizer } from './AbstractTokenizer.js';\nimport { EndOfStreamError } from './stream/index.js';\nimport { open as fsOpen } from 'node:fs/promises';\nexport class FileTokenizer extends AbstractTokenizer {\n    /**\n     * Create tokenizer from provided file path\n     * @param sourceFilePath File path\n     */\n    static async fromFile(sourceFilePath) {\n        const fileHandle = await fsOpen(sourceFilePath, 'r');\n        const stat = await fileHandle.stat();\n        return new FileTokenizer(fileHandle, { fileInfo: { path: sourceFilePath, size: stat.size } });\n    }\n    constructor(fileHandle, options) {\n        super(options);\n        this.fileHandle = fileHandle;\n        this.fileInfo = options.fileInfo;\n    }\n    /**\n     * Read buffer from file\n     * @param uint8Array - Uint8Array to write result to\n     * @param options - Read behaviour options\n     * @returns Promise number of bytes read\n     */\n    async readBuffer(uint8Array, options) {\n        const normOptions = this.normalizeOptions(uint8Array, options);\n        this.position = normOptions.position;\n        if (normOptions.length === 0)\n            return 0;\n        const res = await this.fileHandle.read(uint8Array, 0, normOptions.length, normOptions.position);\n        this.position += res.bytesRead;\n        if (res.bytesRead < normOptions.length && (!options || !options.mayBeLess)) {\n            throw new EndOfStreamError();\n        }\n        return res.bytesRead;\n    }\n    /**\n     * Peek buffer from file\n     * @param uint8Array - Uint8Array (or Buffer) to write data to\n     * @param options - Read behaviour options\n     * @returns Promise number of bytes read\n     */\n    async peekBuffer(uint8Array, options) {\n        const normOptions = this.normalizeOptions(uint8Array, options);\n        const res = await this.fileHandle.read(uint8Array, 0, normOptions.length, normOptions.position);\n        if ((!normOptions.mayBeLess) && res.bytesRead < normOptions.length) {\n            throw new EndOfStreamError();\n        }\n        return res.bytesRead;\n    }\n    async close() {\n        await this.fileHandle.close();\n        return super.close();\n    }\n    setPosition(position) {\n        this.position = position;\n    }\n    supportsRandomAccess() {\n        return true;\n    }\n}\n", "import { stat as fsStat } from 'node:fs/promises';\nimport { fromStream as coreFromStream } from './core.js';\nimport { FileTokenizer } from \"./FileTokenizer.js\";\nexport { FileTokenizer } from './FileTokenizer.js';\nexport * from './core.js';\n/**\n * Construct ReadStreamTokenizer from given Stream.\n * Will set fileSize, if provided given Stream has set the .path property.\n * @param stream - Node.js Stream.Readable\n * @param options - Pass additional file information to the tokenizer\n * @returns Tokenizer\n */\nexport async function fromStream(stream, options) {\n    const rst = coreFromStream(stream, options);\n    if (stream.path) {\n        const stat = await fsStat(stream.path);\n        rst.fileInfo.path = stream.path;\n        rst.fileInfo.size = stat.size;\n    }\n    return rst;\n}\nexport const fromFile = FileTokenizer.fromFile;\n", "{\n  \"application/1d-interleaved-parityfec\": {\n    \"source\": \"iana\"\n  },\n  \"application/3gpdash-qoe-report+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/3gpp-ims+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/3gpphal+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/3gpphalforms+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/a2l\": {\n    \"source\": \"iana\"\n  },\n  \"application/ace+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/ace+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/ace-groupcomm+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/ace-trl+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/activemessage\": {\n    \"source\": \"iana\"\n  },\n  \"application/activity+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/aif+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/aif+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-cdni+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-cdnifilter+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-costmap+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-costmapfilter+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-directory+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-endpointcost+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-endpointcostparams+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-endpointprop+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-endpointpropparams+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-error+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-networkmap+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-networkmapfilter+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-propmap+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-propmapparams+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-tips+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-tipsparams+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-updatestreamcontrol+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-updatestreamparams+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/aml\": {\n    \"source\": \"iana\"\n  },\n  \"application/andrew-inset\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ez\"]\n  },\n  \"application/appinstaller\": {\n    \"compressible\": false,\n    \"extensions\": [\"appinstaller\"]\n  },\n  \"application/applefile\": {\n    \"source\": \"iana\"\n  },\n  \"application/applixware\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"aw\"]\n  },\n  \"application/appx\": {\n    \"compressible\": false,\n    \"extensions\": [\"appx\"]\n  },\n  \"application/appxbundle\": {\n    \"compressible\": false,\n    \"extensions\": [\"appxbundle\"]\n  },\n  \"application/at+jwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/atf\": {\n    \"source\": \"iana\"\n  },\n  \"application/atfx\": {\n    \"source\": \"iana\"\n  },\n  \"application/atom+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"atom\"]\n  },\n  \"application/atomcat+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"atomcat\"]\n  },\n  \"application/atomdeleted+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"atomdeleted\"]\n  },\n  \"application/atomicmail\": {\n    \"source\": \"iana\"\n  },\n  \"application/atomsvc+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"atomsvc\"]\n  },\n  \"application/atsc-dwd+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"dwd\"]\n  },\n  \"application/atsc-dynamic-event-message\": {\n    \"source\": \"iana\"\n  },\n  \"application/atsc-held+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"held\"]\n  },\n  \"application/atsc-rdt+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/atsc-rsat+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"rsat\"]\n  },\n  \"application/atxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/auth-policy+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/automationml-aml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"aml\"]\n  },\n  \"application/automationml-amlx+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"amlx\"]\n  },\n  \"application/bacnet-xdd+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/batch-smtp\": {\n    \"source\": \"iana\"\n  },\n  \"application/bdoc\": {\n    \"compressible\": false,\n    \"extensions\": [\"bdoc\"]\n  },\n  \"application/beep+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/bufr\": {\n    \"source\": \"iana\"\n  },\n  \"application/c2pa\": {\n    \"source\": \"iana\"\n  },\n  \"application/calendar+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/calendar+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xcs\"]\n  },\n  \"application/call-completion\": {\n    \"source\": \"iana\"\n  },\n  \"application/cals-1840\": {\n    \"source\": \"iana\"\n  },\n  \"application/captive+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/cbor-seq\": {\n    \"source\": \"iana\"\n  },\n  \"application/cccex\": {\n    \"source\": \"iana\"\n  },\n  \"application/ccmp+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/ccxml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"ccxml\"]\n  },\n  \"application/cda+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/cdfx+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"cdfx\"]\n  },\n  \"application/cdmi-capability\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cdmia\"]\n  },\n  \"application/cdmi-container\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cdmic\"]\n  },\n  \"application/cdmi-domain\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cdmid\"]\n  },\n  \"application/cdmi-object\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cdmio\"]\n  },\n  \"application/cdmi-queue\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cdmiq\"]\n  },\n  \"application/cdni\": {\n    \"source\": \"iana\"\n  },\n  \"application/ce+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/cea\": {\n    \"source\": \"iana\"\n  },\n  \"application/cea-2018+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/cellml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/cfw\": {\n    \"source\": \"iana\"\n  },\n  \"application/cid-edhoc+cbor-seq\": {\n    \"source\": \"iana\"\n  },\n  \"application/city+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/city+json-seq\": {\n    \"source\": \"iana\"\n  },\n  \"application/clr\": {\n    \"source\": \"iana\"\n  },\n  \"application/clue+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/clue_info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/cms\": {\n    \"source\": \"iana\"\n  },\n  \"application/cnrp+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/coap-eap\": {\n    \"source\": \"iana\"\n  },\n  \"application/coap-group+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/coap-payload\": {\n    \"source\": \"iana\"\n  },\n  \"application/commonground\": {\n    \"source\": \"iana\"\n  },\n  \"application/concise-problem-details+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/conference-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/cose\": {\n    \"source\": \"iana\"\n  },\n  \"application/cose-key\": {\n    \"source\": \"iana\"\n  },\n  \"application/cose-key-set\": {\n    \"source\": \"iana\"\n  },\n  \"application/cose-x509\": {\n    \"source\": \"iana\"\n  },\n  \"application/cpl+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"cpl\"]\n  },\n  \"application/csrattrs\": {\n    \"source\": \"iana\"\n  },\n  \"application/csta+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/cstadata+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/csvm+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/cu-seeme\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"cu\"]\n  },\n  \"application/cwl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cwl\"]\n  },\n  \"application/cwl+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/cwl+yaml\": {\n    \"source\": \"iana\"\n  },\n  \"application/cwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/cybercash\": {\n    \"source\": \"iana\"\n  },\n  \"application/dart\": {\n    \"compressible\": true\n  },\n  \"application/dash+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"mpd\"]\n  },\n  \"application/dash-patch+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"mpp\"]\n  },\n  \"application/dashdelta\": {\n    \"source\": \"iana\"\n  },\n  \"application/davmount+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"davmount\"]\n  },\n  \"application/dca-rft\": {\n    \"source\": \"iana\"\n  },\n  \"application/dcd\": {\n    \"source\": \"iana\"\n  },\n  \"application/dec-dx\": {\n    \"source\": \"iana\"\n  },\n  \"application/dialog-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/dicom\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dcm\"]\n  },\n  \"application/dicom+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/dicom+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/dii\": {\n    \"source\": \"iana\"\n  },\n  \"application/dit\": {\n    \"source\": \"iana\"\n  },\n  \"application/dns\": {\n    \"source\": \"iana\"\n  },\n  \"application/dns+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/dns-message\": {\n    \"source\": \"iana\"\n  },\n  \"application/docbook+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"dbk\"]\n  },\n  \"application/dots+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/dpop+jwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/dskpp+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/dssc+der\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dssc\"]\n  },\n  \"application/dssc+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xdssc\"]\n  },\n  \"application/dvcs\": {\n    \"source\": \"iana\"\n  },\n  \"application/eat+cwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/eat+jwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/eat-bun+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/eat-bun+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/eat-ucs+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/eat-ucs+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/ecmascript\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"ecma\"]\n  },\n  \"application/edhoc+cbor-seq\": {\n    \"source\": \"iana\"\n  },\n  \"application/edi-consent\": {\n    \"source\": \"iana\"\n  },\n  \"application/edi-x12\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/edifact\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/efi\": {\n    \"source\": \"iana\"\n  },\n  \"application/elm+json\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/elm+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/emergencycalldata.cap+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/emergencycalldata.comment+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/emergencycalldata.control+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/emergencycalldata.deviceinfo+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/emergencycalldata.ecall.msd\": {\n    \"source\": \"iana\"\n  },\n  \"application/emergencycalldata.legacyesn+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/emergencycalldata.providerinfo+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/emergencycalldata.serviceinfo+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/emergencycalldata.subscriberinfo+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/emergencycalldata.veds+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/emma+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"emma\"]\n  },\n  \"application/emotionml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"emotionml\"]\n  },\n  \"application/encaprtp\": {\n    \"source\": \"iana\"\n  },\n  \"application/entity-statement+jwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/epp+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/epub+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"epub\"]\n  },\n  \"application/eshop\": {\n    \"source\": \"iana\"\n  },\n  \"application/exi\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"exi\"]\n  },\n  \"application/expect-ct-report+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/express\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"exp\"]\n  },\n  \"application/fastinfoset\": {\n    \"source\": \"iana\"\n  },\n  \"application/fastsoap\": {\n    \"source\": \"iana\"\n  },\n  \"application/fdf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fdf\"]\n  },\n  \"application/fdt+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"fdt\"]\n  },\n  \"application/fhir+json\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/fhir+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/fido.trusted-apps+json\": {\n    \"compressible\": true\n  },\n  \"application/fits\": {\n    \"source\": \"iana\"\n  },\n  \"application/flexfec\": {\n    \"source\": \"iana\"\n  },\n  \"application/font-sfnt\": {\n    \"source\": \"iana\"\n  },\n  \"application/font-tdpfr\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pfr\"]\n  },\n  \"application/font-woff\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/framework-attributes+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/geo+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"geojson\"]\n  },\n  \"application/geo+json-seq\": {\n    \"source\": \"iana\"\n  },\n  \"application/geopackage+sqlite3\": {\n    \"source\": \"iana\"\n  },\n  \"application/geopose+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/geoxacml+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/geoxacml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/gltf-buffer\": {\n    \"source\": \"iana\"\n  },\n  \"application/gml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"gml\"]\n  },\n  \"application/gnap-binding-jws\": {\n    \"source\": \"iana\"\n  },\n  \"application/gnap-binding-jwsd\": {\n    \"source\": \"iana\"\n  },\n  \"application/gnap-binding-rotation-jws\": {\n    \"source\": \"iana\"\n  },\n  \"application/gnap-binding-rotation-jwsd\": {\n    \"source\": \"iana\"\n  },\n  \"application/gpx+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"gpx\"]\n  },\n  \"application/grib\": {\n    \"source\": \"iana\"\n  },\n  \"application/gxf\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"gxf\"]\n  },\n  \"application/gzip\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"gz\"]\n  },\n  \"application/h224\": {\n    \"source\": \"iana\"\n  },\n  \"application/held+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/hjson\": {\n    \"extensions\": [\"hjson\"]\n  },\n  \"application/hl7v2+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/http\": {\n    \"source\": \"iana\"\n  },\n  \"application/hyperstudio\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"stk\"]\n  },\n  \"application/ibe-key-request+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/ibe-pkg-reply+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/ibe-pp-data\": {\n    \"source\": \"iana\"\n  },\n  \"application/iges\": {\n    \"source\": \"iana\"\n  },\n  \"application/im-iscomposing+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/index\": {\n    \"source\": \"iana\"\n  },\n  \"application/index.cmd\": {\n    \"source\": \"iana\"\n  },\n  \"application/index.obj\": {\n    \"source\": \"iana\"\n  },\n  \"application/index.response\": {\n    \"source\": \"iana\"\n  },\n  \"application/index.vnd\": {\n    \"source\": \"iana\"\n  },\n  \"application/inkml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"ink\",\"inkml\"]\n  },\n  \"application/iotp\": {\n    \"source\": \"iana\"\n  },\n  \"application/ipfix\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ipfix\"]\n  },\n  \"application/ipp\": {\n    \"source\": \"iana\"\n  },\n  \"application/isup\": {\n    \"source\": \"iana\"\n  },\n  \"application/its+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"its\"]\n  },\n  \"application/java-archive\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"jar\",\"war\",\"ear\"]\n  },\n  \"application/java-serialized-object\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"ser\"]\n  },\n  \"application/java-vm\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"class\"]\n  },\n  \"application/javascript\": {\n    \"source\": \"apache\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true,\n    \"extensions\": [\"js\"]\n  },\n  \"application/jf2feed+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/jose\": {\n    \"source\": \"iana\"\n  },\n  \"application/jose+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/jrd+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/jscalendar+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/jscontact+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/json\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true,\n    \"extensions\": [\"json\",\"map\"]\n  },\n  \"application/json-patch+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/json-seq\": {\n    \"source\": \"iana\"\n  },\n  \"application/json5\": {\n    \"extensions\": [\"json5\"]\n  },\n  \"application/jsonml+json\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"jsonml\"]\n  },\n  \"application/jsonpath\": {\n    \"source\": \"iana\"\n  },\n  \"application/jwk+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/jwk-set+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/jwk-set+jwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/jwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/kpml-request+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/kpml-response+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/ld+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"jsonld\"]\n  },\n  \"application/lgr+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"lgr\"]\n  },\n  \"application/link-format\": {\n    \"source\": \"iana\"\n  },\n  \"application/linkset\": {\n    \"source\": \"iana\"\n  },\n  \"application/linkset+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/load-control+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/logout+jwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/lost+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"lostxml\"]\n  },\n  \"application/lostsync+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/lpf+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/lxf\": {\n    \"source\": \"iana\"\n  },\n  \"application/mac-binhex40\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"hqx\"]\n  },\n  \"application/mac-compactpro\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"cpt\"]\n  },\n  \"application/macwriteii\": {\n    \"source\": \"iana\"\n  },\n  \"application/mads+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"mads\"]\n  },\n  \"application/manifest+json\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true,\n    \"extensions\": [\"webmanifest\"]\n  },\n  \"application/marc\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mrc\"]\n  },\n  \"application/marcxml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"mrcx\"]\n  },\n  \"application/mathematica\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ma\",\"nb\",\"mb\"]\n  },\n  \"application/mathml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"mathml\"]\n  },\n  \"application/mathml-content+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mathml-presentation+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mbms-associated-procedure-description+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mbms-deregister+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mbms-envelope+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mbms-msk+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mbms-msk-response+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mbms-protection-description+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mbms-reception-report+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mbms-register+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mbms-register-response+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mbms-schedule+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mbms-user-service-description+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mbox\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mbox\"]\n  },\n  \"application/media-policy-dataset+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"mpf\"]\n  },\n  \"application/media_control+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mediaservercontrol+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"mscml\"]\n  },\n  \"application/merge-patch+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/metalink+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"metalink\"]\n  },\n  \"application/metalink4+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"meta4\"]\n  },\n  \"application/mets+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"mets\"]\n  },\n  \"application/mf4\": {\n    \"source\": \"iana\"\n  },\n  \"application/mikey\": {\n    \"source\": \"iana\"\n  },\n  \"application/mipc\": {\n    \"source\": \"iana\"\n  },\n  \"application/missing-blocks+cbor-seq\": {\n    \"source\": \"iana\"\n  },\n  \"application/mmt-aei+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"maei\"]\n  },\n  \"application/mmt-usd+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"musd\"]\n  },\n  \"application/mods+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"mods\"]\n  },\n  \"application/moss-keys\": {\n    \"source\": \"iana\"\n  },\n  \"application/moss-signature\": {\n    \"source\": \"iana\"\n  },\n  \"application/mosskey-data\": {\n    \"source\": \"iana\"\n  },\n  \"application/mosskey-request\": {\n    \"source\": \"iana\"\n  },\n  \"application/mp21\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"m21\",\"mp21\"]\n  },\n  \"application/mp4\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mp4\",\"mpg4\",\"mp4s\",\"m4p\"]\n  },\n  \"application/mpeg4-generic\": {\n    \"source\": \"iana\"\n  },\n  \"application/mpeg4-iod\": {\n    \"source\": \"iana\"\n  },\n  \"application/mpeg4-iod-xmt\": {\n    \"source\": \"iana\"\n  },\n  \"application/mrb-consumer+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mrb-publish+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/msc-ivr+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/msc-mixer+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/msix\": {\n    \"compressible\": false,\n    \"extensions\": [\"msix\"]\n  },\n  \"application/msixbundle\": {\n    \"compressible\": false,\n    \"extensions\": [\"msixbundle\"]\n  },\n  \"application/msword\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"doc\",\"dot\"]\n  },\n  \"application/mud+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/multipart-core\": {\n    \"source\": \"iana\"\n  },\n  \"application/mxf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mxf\"]\n  },\n  \"application/n-quads\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"nq\"]\n  },\n  \"application/n-triples\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"nt\"]\n  },\n  \"application/nasdata\": {\n    \"source\": \"iana\"\n  },\n  \"application/news-checkgroups\": {\n    \"source\": \"iana\",\n    \"charset\": \"US-ASCII\"\n  },\n  \"application/news-groupinfo\": {\n    \"source\": \"iana\",\n    \"charset\": \"US-ASCII\"\n  },\n  \"application/news-transmission\": {\n    \"source\": \"iana\"\n  },\n  \"application/nlsml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/node\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cjs\"]\n  },\n  \"application/nss\": {\n    \"source\": \"iana\"\n  },\n  \"application/oauth-authz-req+jwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/oblivious-dns-message\": {\n    \"source\": \"iana\"\n  },\n  \"application/ocsp-request\": {\n    \"source\": \"iana\"\n  },\n  \"application/ocsp-response\": {\n    \"source\": \"iana\"\n  },\n  \"application/octet-stream\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"bin\",\"dms\",\"lrf\",\"mar\",\"so\",\"dist\",\"distz\",\"pkg\",\"bpk\",\"dump\",\"elc\",\"deploy\",\"exe\",\"dll\",\"deb\",\"dmg\",\"iso\",\"img\",\"msi\",\"msp\",\"msm\",\"buffer\"]\n  },\n  \"application/oda\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"oda\"]\n  },\n  \"application/odm+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/odx\": {\n    \"source\": \"iana\"\n  },\n  \"application/oebps-package+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"opf\"]\n  },\n  \"application/ogg\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"ogx\"]\n  },\n  \"application/ohttp-keys\": {\n    \"source\": \"iana\"\n  },\n  \"application/omdoc+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"omdoc\"]\n  },\n  \"application/onenote\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"onetoc\",\"onetoc2\",\"onetmp\",\"onepkg\",\"one\",\"onea\"]\n  },\n  \"application/opc-nodeset+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/oscore\": {\n    \"source\": \"iana\"\n  },\n  \"application/oxps\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"oxps\"]\n  },\n  \"application/p21\": {\n    \"source\": \"iana\"\n  },\n  \"application/p21+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/p2p-overlay+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"relo\"]\n  },\n  \"application/parityfec\": {\n    \"source\": \"iana\"\n  },\n  \"application/passport\": {\n    \"source\": \"iana\"\n  },\n  \"application/patch-ops-error+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xer\"]\n  },\n  \"application/pdf\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"pdf\"]\n  },\n  \"application/pdx\": {\n    \"source\": \"iana\"\n  },\n  \"application/pem-certificate-chain\": {\n    \"source\": \"iana\"\n  },\n  \"application/pgp-encrypted\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"pgp\"]\n  },\n  \"application/pgp-keys\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"asc\"]\n  },\n  \"application/pgp-signature\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sig\",\"asc\"]\n  },\n  \"application/pics-rules\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"prf\"]\n  },\n  \"application/pidf+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/pidf-diff+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/pkcs10\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"p10\"]\n  },\n  \"application/pkcs12\": {\n    \"source\": \"iana\"\n  },\n  \"application/pkcs7-mime\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"p7m\",\"p7c\"]\n  },\n  \"application/pkcs7-signature\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"p7s\"]\n  },\n  \"application/pkcs8\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"p8\"]\n  },\n  \"application/pkcs8-encrypted\": {\n    \"source\": \"iana\"\n  },\n  \"application/pkix-attr-cert\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ac\"]\n  },\n  \"application/pkix-cert\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cer\"]\n  },\n  \"application/pkix-crl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"crl\"]\n  },\n  \"application/pkix-pkipath\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pkipath\"]\n  },\n  \"application/pkixcmp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pki\"]\n  },\n  \"application/pls+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"pls\"]\n  },\n  \"application/poc-settings+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/postscript\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"ai\",\"eps\",\"ps\"]\n  },\n  \"application/ppsp-tracker+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/private-token-issuer-directory\": {\n    \"source\": \"iana\"\n  },\n  \"application/private-token-request\": {\n    \"source\": \"iana\"\n  },\n  \"application/private-token-response\": {\n    \"source\": \"iana\"\n  },\n  \"application/problem+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/problem+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/provenance+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"provx\"]\n  },\n  \"application/provided-claims+jwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/prs.alvestrand.titrax-sheet\": {\n    \"source\": \"iana\"\n  },\n  \"application/prs.cww\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cww\"]\n  },\n  \"application/prs.cyn\": {\n    \"source\": \"iana\",\n    \"charset\": \"7-BIT\"\n  },\n  \"application/prs.hpub+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/prs.implied-document+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/prs.implied-executable\": {\n    \"source\": \"iana\"\n  },\n  \"application/prs.implied-object+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/prs.implied-object+json-seq\": {\n    \"source\": \"iana\"\n  },\n  \"application/prs.implied-object+yaml\": {\n    \"source\": \"iana\"\n  },\n  \"application/prs.implied-structure\": {\n    \"source\": \"iana\"\n  },\n  \"application/prs.mayfile\": {\n    \"source\": \"iana\"\n  },\n  \"application/prs.nprend\": {\n    \"source\": \"iana\"\n  },\n  \"application/prs.plucker\": {\n    \"source\": \"iana\"\n  },\n  \"application/prs.rdf-xml-crypt\": {\n    \"source\": \"iana\"\n  },\n  \"application/prs.vcfbzip2\": {\n    \"source\": \"iana\"\n  },\n  \"application/prs.xsf+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xsf\"]\n  },\n  \"application/pskc+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"pskcxml\"]\n  },\n  \"application/pvd+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/qsig\": {\n    \"source\": \"iana\"\n  },\n  \"application/raml+yaml\": {\n    \"compressible\": true,\n    \"extensions\": [\"raml\"]\n  },\n  \"application/raptorfec\": {\n    \"source\": \"iana\"\n  },\n  \"application/rdap+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/rdf+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"rdf\",\"owl\"]\n  },\n  \"application/reginfo+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"rif\"]\n  },\n  \"application/relax-ng-compact-syntax\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"rnc\"]\n  },\n  \"application/remote-printing\": {\n    \"source\": \"apache\"\n  },\n  \"application/reputon+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/resolve-response+jwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/resource-lists+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"rl\"]\n  },\n  \"application/resource-lists-diff+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"rld\"]\n  },\n  \"application/rfc+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/riscos\": {\n    \"source\": \"iana\"\n  },\n  \"application/rlmi+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/rls-services+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"rs\"]\n  },\n  \"application/route-apd+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"rapd\"]\n  },\n  \"application/route-s-tsid+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"sls\"]\n  },\n  \"application/route-usd+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"rusd\"]\n  },\n  \"application/rpki-checklist\": {\n    \"source\": \"iana\"\n  },\n  \"application/rpki-ghostbusters\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gbr\"]\n  },\n  \"application/rpki-manifest\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mft\"]\n  },\n  \"application/rpki-publication\": {\n    \"source\": \"iana\"\n  },\n  \"application/rpki-roa\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"roa\"]\n  },\n  \"application/rpki-signed-tal\": {\n    \"source\": \"iana\"\n  },\n  \"application/rpki-updown\": {\n    \"source\": \"iana\"\n  },\n  \"application/rsd+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"rsd\"]\n  },\n  \"application/rss+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"rss\"]\n  },\n  \"application/rtf\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"rtf\"]\n  },\n  \"application/rtploopback\": {\n    \"source\": \"iana\"\n  },\n  \"application/rtx\": {\n    \"source\": \"iana\"\n  },\n  \"application/samlassertion+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/samlmetadata+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/sarif+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/sarif-external-properties+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/sbe\": {\n    \"source\": \"iana\"\n  },\n  \"application/sbml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"sbml\"]\n  },\n  \"application/scaip+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/scim+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/scvp-cv-request\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"scq\"]\n  },\n  \"application/scvp-cv-response\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"scs\"]\n  },\n  \"application/scvp-vp-request\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"spq\"]\n  },\n  \"application/scvp-vp-response\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"spp\"]\n  },\n  \"application/sdp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sdp\"]\n  },\n  \"application/secevent+jwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/senml+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/senml+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/senml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"senmlx\"]\n  },\n  \"application/senml-etch+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/senml-etch+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/senml-exi\": {\n    \"source\": \"iana\"\n  },\n  \"application/sensml+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/sensml+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/sensml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"sensmlx\"]\n  },\n  \"application/sensml-exi\": {\n    \"source\": \"iana\"\n  },\n  \"application/sep+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/sep-exi\": {\n    \"source\": \"iana\"\n  },\n  \"application/session-info\": {\n    \"source\": \"iana\"\n  },\n  \"application/set-payment\": {\n    \"source\": \"iana\"\n  },\n  \"application/set-payment-initiation\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"setpay\"]\n  },\n  \"application/set-registration\": {\n    \"source\": \"iana\"\n  },\n  \"application/set-registration-initiation\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"setreg\"]\n  },\n  \"application/sgml\": {\n    \"source\": \"iana\"\n  },\n  \"application/sgml-open-catalog\": {\n    \"source\": \"iana\"\n  },\n  \"application/shf+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"shf\"]\n  },\n  \"application/sieve\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"siv\",\"sieve\"]\n  },\n  \"application/simple-filter+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/simple-message-summary\": {\n    \"source\": \"iana\"\n  },\n  \"application/simplesymbolcontainer\": {\n    \"source\": \"iana\"\n  },\n  \"application/sipc\": {\n    \"source\": \"iana\"\n  },\n  \"application/slate\": {\n    \"source\": \"iana\"\n  },\n  \"application/smil\": {\n    \"source\": \"apache\"\n  },\n  \"application/smil+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"smi\",\"smil\"]\n  },\n  \"application/smpte336m\": {\n    \"source\": \"iana\"\n  },\n  \"application/soap+fastinfoset\": {\n    \"source\": \"iana\"\n  },\n  \"application/soap+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/sparql-query\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"rq\"]\n  },\n  \"application/sparql-results+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"srx\"]\n  },\n  \"application/spdx+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/spirits-event+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/sql\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sql\"]\n  },\n  \"application/srgs\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gram\"]\n  },\n  \"application/srgs+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"grxml\"]\n  },\n  \"application/sru+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"sru\"]\n  },\n  \"application/ssdl+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"ssdl\"]\n  },\n  \"application/sslkeylogfile\": {\n    \"source\": \"iana\"\n  },\n  \"application/ssml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"ssml\"]\n  },\n  \"application/st2110-41\": {\n    \"source\": \"iana\"\n  },\n  \"application/stix+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/stratum\": {\n    \"source\": \"iana\"\n  },\n  \"application/swid+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/swid+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"swidtag\"]\n  },\n  \"application/tamp-apex-update\": {\n    \"source\": \"iana\"\n  },\n  \"application/tamp-apex-update-confirm\": {\n    \"source\": \"iana\"\n  },\n  \"application/tamp-community-update\": {\n    \"source\": \"iana\"\n  },\n  \"application/tamp-community-update-confirm\": {\n    \"source\": \"iana\"\n  },\n  \"application/tamp-error\": {\n    \"source\": \"iana\"\n  },\n  \"application/tamp-sequence-adjust\": {\n    \"source\": \"iana\"\n  },\n  \"application/tamp-sequence-adjust-confirm\": {\n    \"source\": \"iana\"\n  },\n  \"application/tamp-status-query\": {\n    \"source\": \"iana\"\n  },\n  \"application/tamp-status-response\": {\n    \"source\": \"iana\"\n  },\n  \"application/tamp-update\": {\n    \"source\": \"iana\"\n  },\n  \"application/tamp-update-confirm\": {\n    \"source\": \"iana\"\n  },\n  \"application/tar\": {\n    \"compressible\": true\n  },\n  \"application/taxii+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/td+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/tei+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"tei\",\"teicorpus\"]\n  },\n  \"application/tetra_isi\": {\n    \"source\": \"iana\"\n  },\n  \"application/thraud+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"tfi\"]\n  },\n  \"application/timestamp-query\": {\n    \"source\": \"iana\"\n  },\n  \"application/timestamp-reply\": {\n    \"source\": \"iana\"\n  },\n  \"application/timestamped-data\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"tsd\"]\n  },\n  \"application/tlsrpt+gzip\": {\n    \"source\": \"iana\"\n  },\n  \"application/tlsrpt+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/tm+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/tnauthlist\": {\n    \"source\": \"iana\"\n  },\n  \"application/toc+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/token-introspection+jwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/toml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"toml\"]\n  },\n  \"application/trickle-ice-sdpfrag\": {\n    \"source\": \"iana\"\n  },\n  \"application/trig\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"trig\"]\n  },\n  \"application/trust-chain+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/trust-mark+jwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/trust-mark-delegation+jwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/ttml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"ttml\"]\n  },\n  \"application/tve-trigger\": {\n    \"source\": \"iana\"\n  },\n  \"application/tzif\": {\n    \"source\": \"iana\"\n  },\n  \"application/tzif-leap\": {\n    \"source\": \"iana\"\n  },\n  \"application/ubjson\": {\n    \"compressible\": false,\n    \"extensions\": [\"ubj\"]\n  },\n  \"application/uccs+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/ujcs+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/ulpfec\": {\n    \"source\": \"iana\"\n  },\n  \"application/urc-grpsheet+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/urc-ressheet+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"rsheet\"]\n  },\n  \"application/urc-targetdesc+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"td\"]\n  },\n  \"application/urc-uisocketdesc+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vc\": {\n    \"source\": \"iana\"\n  },\n  \"application/vc+cose\": {\n    \"source\": \"iana\"\n  },\n  \"application/vc+jwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/vcard+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vcard+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vemmi\": {\n    \"source\": \"iana\"\n  },\n  \"application/vividence.scriptfile\": {\n    \"source\": \"apache\"\n  },\n  \"application/vnd.1000minds.decision-model+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"1km\"]\n  },\n  \"application/vnd.1ob\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp-prose+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp-prose-pc3a+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp-prose-pc3ach+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp-prose-pc3ch+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp-prose-pc8+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp-v2x-local-service-information\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.5gnas\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.5gsa2x\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.5gsa2x-local-service-information\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.5gsv2x\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.5gsv2x-local-service-information\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.access-transfer-events+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.bsf+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.crs+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.current-location-discovery+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.gmop+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.gtpc\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.interworking-data\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.lpp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.mc-signalling-ear\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.mcdata-affiliation-command+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcdata-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcdata-msgstore-ctrl-request+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcdata-payload\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.mcdata-regroup+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcdata-service-config+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcdata-signalling\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.mcdata-ue-config+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcdata-user-profile+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcptt-affiliation-command+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcptt-floor-request+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcptt-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcptt-location-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcptt-mbms-usage-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcptt-regroup+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcptt-service-config+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcptt-signed+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcptt-ue-config+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcptt-ue-init-config+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcptt-user-profile+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcvideo-affiliation-command+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcvideo-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcvideo-location-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcvideo-mbms-usage-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcvideo-regroup+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcvideo-service-config+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcvideo-transmission-request+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcvideo-ue-config+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcvideo-user-profile+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mid-call+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.ngap\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.pfcp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.pic-bw-large\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"plb\"]\n  },\n  \"application/vnd.3gpp.pic-bw-small\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"psb\"]\n  },\n  \"application/vnd.3gpp.pic-bw-var\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pvb\"]\n  },\n  \"application/vnd.3gpp.pinapp-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.s1ap\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.seal-group-doc+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.seal-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.seal-location-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.seal-mbms-usage-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.seal-network-qos-management-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.seal-ue-config-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.seal-unicast-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.seal-user-profile-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.sms\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.sms+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.srvcc-ext+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.srvcc-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.state-and-event-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.ussd+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.v2x\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.vae-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp2.bcmcsinfo+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp2.sms\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp2.tcap\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"tcap\"]\n  },\n  \"application/vnd.3lightssoftware.imagescal\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3m.post-it-notes\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pwn\"]\n  },\n  \"application/vnd.accpac.simply.aso\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"aso\"]\n  },\n  \"application/vnd.accpac.simply.imp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"imp\"]\n  },\n  \"application/vnd.acm.addressxfer+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.acm.chatbot+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.acucobol\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"acu\"]\n  },\n  \"application/vnd.acucorp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"atc\",\"acutc\"]\n  },\n  \"application/vnd.adobe.air-application-installer-package+zip\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"air\"]\n  },\n  \"application/vnd.adobe.flash.movie\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.adobe.formscentral.fcdt\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fcdt\"]\n  },\n  \"application/vnd.adobe.fxp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fxp\",\"fxpl\"]\n  },\n  \"application/vnd.adobe.partial-upload\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.adobe.xdp+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xdp\"]\n  },\n  \"application/vnd.adobe.xfdf\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"xfdf\"]\n  },\n  \"application/vnd.aether.imp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.afplinedata\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.afplinedata-pagedef\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.cmoca-cmresource\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.foca-charset\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.foca-codedfont\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.foca-codepage\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.modca\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.modca-cmtable\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.modca-formdef\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.modca-mediummap\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.modca-objectcontainer\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.modca-overlay\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.modca-pagesegment\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.age\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"age\"]\n  },\n  \"application/vnd.ah-barcode\": {\n    \"source\": \"apache\"\n  },\n  \"application/vnd.ahead.space\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ahead\"]\n  },\n  \"application/vnd.airzip.filesecure.azf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"azf\"]\n  },\n  \"application/vnd.airzip.filesecure.azs\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"azs\"]\n  },\n  \"application/vnd.amadeus+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.amazon.ebook\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"azw\"]\n  },\n  \"application/vnd.amazon.mobi8-ebook\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.americandynamics.acc\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"acc\"]\n  },\n  \"application/vnd.amiga.ami\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ami\"]\n  },\n  \"application/vnd.amundsen.maze+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.android.ota\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.android.package-archive\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"apk\"]\n  },\n  \"application/vnd.anki\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.anser-web-certificate-issue-initiation\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cii\"]\n  },\n  \"application/vnd.anser-web-funds-transfer-initiation\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"fti\"]\n  },\n  \"application/vnd.antix.game-component\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"atx\"]\n  },\n  \"application/vnd.apache.arrow.file\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.apache.arrow.stream\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.apache.parquet\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.apache.thrift.binary\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.apache.thrift.compact\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.apache.thrift.json\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.apexlang\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.api+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.aplextor.warrp+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.apothekende.reservation+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.apple.installer+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"mpkg\"]\n  },\n  \"application/vnd.apple.keynote\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"key\"]\n  },\n  \"application/vnd.apple.mpegurl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"m3u8\"]\n  },\n  \"application/vnd.apple.numbers\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"numbers\"]\n  },\n  \"application/vnd.apple.pages\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pages\"]\n  },\n  \"application/vnd.apple.pkpass\": {\n    \"compressible\": false,\n    \"extensions\": [\"pkpass\"]\n  },\n  \"application/vnd.arastra.swi\": {\n    \"source\": \"apache\"\n  },\n  \"application/vnd.aristanetworks.swi\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"swi\"]\n  },\n  \"application/vnd.artisan+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.artsquare\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.astraea-software.iota\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"iota\"]\n  },\n  \"application/vnd.audiograph\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"aep\"]\n  },\n  \"application/vnd.autodesk.fbx\": {\n    \"extensions\": [\"fbx\"]\n  },\n  \"application/vnd.autopackage\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.avalon+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.avistar+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.balsamiq.bmml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"bmml\"]\n  },\n  \"application/vnd.balsamiq.bmpr\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.banana-accounting\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.bbf.usp.error\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.bbf.usp.msg\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.bbf.usp.msg+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.bekitzur-stech+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.belightsoft.lhzd+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.belightsoft.lhzl+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.bint.med-content\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.biopax.rdf+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.blink-idb-value-wrapper\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.blueice.multipass\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mpm\"]\n  },\n  \"application/vnd.bluetooth.ep.oob\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.bluetooth.le.oob\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.bmi\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"bmi\"]\n  },\n  \"application/vnd.bpf\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.bpf3\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.businessobjects\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"rep\"]\n  },\n  \"application/vnd.byu.uapi+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.bzip3\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.c3voc.schedule+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.cab-jscript\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.canon-cpdl\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.canon-lips\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.capasystems-pg+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.cendio.thinlinc.clientconf\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.century-systems.tcp_stream\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.chemdraw+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"cdxml\"]\n  },\n  \"application/vnd.chess-pgn\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.chipnuts.karaoke-mmd\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mmd\"]\n  },\n  \"application/vnd.ciedi\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.cinderella\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cdy\"]\n  },\n  \"application/vnd.cirpack.isdn-ext\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.citationstyles.style+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"csl\"]\n  },\n  \"application/vnd.claymore\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cla\"]\n  },\n  \"application/vnd.cloanto.rp9\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"rp9\"]\n  },\n  \"application/vnd.clonk.c4group\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"c4g\",\"c4d\",\"c4f\",\"c4p\",\"c4u\"]\n  },\n  \"application/vnd.cluetrust.cartomobile-config\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"c11amc\"]\n  },\n  \"application/vnd.cluetrust.cartomobile-config-pkg\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"c11amz\"]\n  },\n  \"application/vnd.cncf.helm.chart.content.v1.tar+gzip\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.cncf.helm.chart.provenance.v1.prov\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.cncf.helm.config.v1+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.coffeescript\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.collabio.xodocuments.document\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.collabio.xodocuments.document-template\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.collabio.xodocuments.presentation\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.collabio.xodocuments.presentation-template\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.collabio.xodocuments.spreadsheet\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.collabio.xodocuments.spreadsheet-template\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.collection+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.collection.doc+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.collection.next+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.comicbook+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.comicbook-rar\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.commerce-battelle\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.commonspace\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"csp\"]\n  },\n  \"application/vnd.contact.cmsg\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cdbcmsg\"]\n  },\n  \"application/vnd.coreos.ignition+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.cosmocaller\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cmc\"]\n  },\n  \"application/vnd.crick.clicker\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"clkx\"]\n  },\n  \"application/vnd.crick.clicker.keyboard\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"clkk\"]\n  },\n  \"application/vnd.crick.clicker.palette\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"clkp\"]\n  },\n  \"application/vnd.crick.clicker.template\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"clkt\"]\n  },\n  \"application/vnd.crick.clicker.wordbank\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"clkw\"]\n  },\n  \"application/vnd.criticaltools.wbs+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"wbs\"]\n  },\n  \"application/vnd.cryptii.pipe+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.crypto-shade-file\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.cryptomator.encrypted\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.cryptomator.vault\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ctc-posml\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pml\"]\n  },\n  \"application/vnd.ctct.ws+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.cups-pdf\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.cups-postscript\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.cups-ppd\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ppd\"]\n  },\n  \"application/vnd.cups-raster\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.cups-raw\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.curl\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.curl.car\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"car\"]\n  },\n  \"application/vnd.curl.pcurl\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"pcurl\"]\n  },\n  \"application/vnd.cyan.dean.root+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.cybank\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.cyclonedx+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.cyclonedx+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.d2l.coursepackage1p0+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.d3m-dataset\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.d3m-problem\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dart\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"dart\"]\n  },\n  \"application/vnd.data-vision.rdz\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"rdz\"]\n  },\n  \"application/vnd.datalog\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.datapackage+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.dataresource+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.dbf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dbf\"]\n  },\n  \"application/vnd.dcmp+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"dcmp\"]\n  },\n  \"application/vnd.debian.binary-package\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dece.data\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"uvf\",\"uvvf\",\"uvd\",\"uvvd\"]\n  },\n  \"application/vnd.dece.ttml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"uvt\",\"uvvt\"]\n  },\n  \"application/vnd.dece.unspecified\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"uvx\",\"uvvx\"]\n  },\n  \"application/vnd.dece.zip\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"uvz\",\"uvvz\"]\n  },\n  \"application/vnd.denovo.fcselayout-link\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fe_launch\"]\n  },\n  \"application/vnd.desmume.movie\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dir-bi.plate-dl-nosuffix\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dm.delegation+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.dna\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dna\"]\n  },\n  \"application/vnd.document+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.dolby.mlp\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"mlp\"]\n  },\n  \"application/vnd.dolby.mobile.1\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dolby.mobile.2\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.doremir.scorecloud-binary-document\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dpgraph\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dpg\"]\n  },\n  \"application/vnd.dreamfactory\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dfac\"]\n  },\n  \"application/vnd.drive+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ds-keypoint\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"kpxx\"]\n  },\n  \"application/vnd.dtg.local\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dtg.local.flash\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dtg.local.html\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dvb.ait\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ait\"]\n  },\n  \"application/vnd.dvb.dvbisl+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.dvb.dvbj\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dvb.esgcontainer\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dvb.ipdcdftnotifaccess\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dvb.ipdcesgaccess\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dvb.ipdcesgaccess2\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dvb.ipdcesgpdd\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dvb.ipdcroaming\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dvb.iptv.alfec-base\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dvb.iptv.alfec-enhancement\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dvb.notif-aggregate-root+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.dvb.notif-container+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.dvb.notif-generic+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.dvb.notif-ia-msglist+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.dvb.notif-ia-registration-request+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.dvb.notif-ia-registration-response+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.dvb.notif-init+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.dvb.pfr\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dvb.service\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"svc\"]\n  },\n  \"application/vnd.dxr\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dynageo\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"geo\"]\n  },\n  \"application/vnd.dzr\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.easykaraoke.cdgdownload\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ecdis-update\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ecip.rlp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.eclipse.ditto+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ecowin.chart\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mag\"]\n  },\n  \"application/vnd.ecowin.filerequest\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ecowin.fileupdate\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ecowin.series\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ecowin.seriesrequest\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ecowin.seriesupdate\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.efi.img\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.efi.iso\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.eln+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.emclient.accessrequest+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.enliven\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"nml\"]\n  },\n  \"application/vnd.enphase.envoy\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.eprints.data+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.epson.esf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"esf\"]\n  },\n  \"application/vnd.epson.msf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"msf\"]\n  },\n  \"application/vnd.epson.quickanime\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"qam\"]\n  },\n  \"application/vnd.epson.salt\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"slt\"]\n  },\n  \"application/vnd.epson.ssf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ssf\"]\n  },\n  \"application/vnd.ericsson.quickcall\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.erofs\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.espass-espass+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.eszigno3+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"es3\",\"et3\"]\n  },\n  \"application/vnd.etsi.aoc+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.asic-e+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.etsi.asic-s+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.etsi.cug+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.iptvcommand+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.iptvdiscovery+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.iptvprofile+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.iptvsad-bc+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.iptvsad-cod+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.iptvsad-npvr+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.iptvservice+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.iptvsync+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.iptvueprofile+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.mcid+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.mheg5\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.etsi.overload-control-policy-dataset+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.pstn+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.sci+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.simservs+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.timestamp-token\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.etsi.tsl+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.tsl.der\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.eu.kasparian.car+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.eudora.data\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.evolv.ecig.profile\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.evolv.ecig.settings\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.evolv.ecig.theme\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.exstream-empower+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.exstream-package\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ezpix-album\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ez2\"]\n  },\n  \"application/vnd.ezpix-package\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ez3\"]\n  },\n  \"application/vnd.f-secure.mobile\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.familysearch.gedcom+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.fastcopy-disk-image\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.fdf\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"fdf\"]\n  },\n  \"application/vnd.fdsn.mseed\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mseed\"]\n  },\n  \"application/vnd.fdsn.seed\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"seed\",\"dataless\"]\n  },\n  \"application/vnd.fdsn.stationxml+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"XML-BASED\",\n    \"compressible\": true\n  },\n  \"application/vnd.ffsns\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ficlab.flb+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.filmit.zfc\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.fints\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.firemonkeys.cloudcell\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.flographit\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gph\"]\n  },\n  \"application/vnd.fluxtime.clip\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ftc\"]\n  },\n  \"application/vnd.font-fontforge-sfd\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.framemaker\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fm\",\"frame\",\"maker\",\"book\"]\n  },\n  \"application/vnd.freelog.comic\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.frogans.fnc\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"fnc\"]\n  },\n  \"application/vnd.frogans.ltf\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"ltf\"]\n  },\n  \"application/vnd.fsc.weblaunch\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fsc\"]\n  },\n  \"application/vnd.fujifilm.fb.docuworks\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.fujifilm.fb.docuworks.binder\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.fujifilm.fb.docuworks.container\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.fujifilm.fb.jfi+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.fujitsu.oasys\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"oas\"]\n  },\n  \"application/vnd.fujitsu.oasys2\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"oa2\"]\n  },\n  \"application/vnd.fujitsu.oasys3\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"oa3\"]\n  },\n  \"application/vnd.fujitsu.oasysgp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fg5\"]\n  },\n  \"application/vnd.fujitsu.oasysprs\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"bh2\"]\n  },\n  \"application/vnd.fujixerox.art-ex\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.fujixerox.art4\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.fujixerox.ddd\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ddd\"]\n  },\n  \"application/vnd.fujixerox.docuworks\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xdw\"]\n  },\n  \"application/vnd.fujixerox.docuworks.binder\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xbd\"]\n  },\n  \"application/vnd.fujixerox.docuworks.container\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.fujixerox.hbpl\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.fut-misnet\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.futoin+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.futoin+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.fuzzysheet\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fzs\"]\n  },\n  \"application/vnd.ga4gh.passport+jwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.genomatix.tuxedo\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"txd\"]\n  },\n  \"application/vnd.genozip\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.gentics.grd+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.gentoo.catmetadata+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.gentoo.ebuild\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.gentoo.eclass\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.gentoo.gpkg\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.gentoo.manifest\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.gentoo.pkgmetadata+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.gentoo.xpak\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.geo+json\": {\n    \"source\": \"apache\",\n    \"compressible\": true\n  },\n  \"application/vnd.geocube+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true\n  },\n  \"application/vnd.geogebra.file\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ggb\"]\n  },\n  \"application/vnd.geogebra.pinboard\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.geogebra.slides\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ggs\"]\n  },\n  \"application/vnd.geogebra.tool\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ggt\"]\n  },\n  \"application/vnd.geometry-explorer\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gex\",\"gre\"]\n  },\n  \"application/vnd.geonext\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gxt\"]\n  },\n  \"application/vnd.geoplan\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"g2w\"]\n  },\n  \"application/vnd.geospace\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"g3w\"]\n  },\n  \"application/vnd.gerber\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.globalplatform.card-content-mgt\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.globalplatform.card-content-mgt-response\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.gmx\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gmx\"]\n  },\n  \"application/vnd.gnu.taler.exchange+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.gnu.taler.merchant+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.google-apps.audio\": {},\n  \"application/vnd.google-apps.document\": {\n    \"compressible\": false,\n    \"extensions\": [\"gdoc\"]\n  },\n  \"application/vnd.google-apps.drawing\": {\n    \"compressible\": false,\n    \"extensions\": [\"gdraw\"]\n  },\n  \"application/vnd.google-apps.drive-sdk\": {\n    \"compressible\": false\n  },\n  \"application/vnd.google-apps.file\": {},\n  \"application/vnd.google-apps.folder\": {\n    \"compressible\": false\n  },\n  \"application/vnd.google-apps.form\": {\n    \"compressible\": false,\n    \"extensions\": [\"gform\"]\n  },\n  \"application/vnd.google-apps.fusiontable\": {},\n  \"application/vnd.google-apps.jam\": {\n    \"compressible\": false,\n    \"extensions\": [\"gjam\"]\n  },\n  \"application/vnd.google-apps.mail-layout\": {},\n  \"application/vnd.google-apps.map\": {\n    \"compressible\": false,\n    \"extensions\": [\"gmap\"]\n  },\n  \"application/vnd.google-apps.photo\": {},\n  \"application/vnd.google-apps.presentation\": {\n    \"compressible\": false,\n    \"extensions\": [\"gslides\"]\n  },\n  \"application/vnd.google-apps.script\": {\n    \"compressible\": false,\n    \"extensions\": [\"gscript\"]\n  },\n  \"application/vnd.google-apps.shortcut\": {},\n  \"application/vnd.google-apps.site\": {\n    \"compressible\": false,\n    \"extensions\": [\"gsite\"]\n  },\n  \"application/vnd.google-apps.spreadsheet\": {\n    \"compressible\": false,\n    \"extensions\": [\"gsheet\"]\n  },\n  \"application/vnd.google-apps.unknown\": {},\n  \"application/vnd.google-apps.video\": {},\n  \"application/vnd.google-earth.kml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"kml\"]\n  },\n  \"application/vnd.google-earth.kmz\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"kmz\"]\n  },\n  \"application/vnd.gov.sk.e-form+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true\n  },\n  \"application/vnd.gov.sk.e-form+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.gov.sk.xmldatacontainer+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xdcf\"]\n  },\n  \"application/vnd.gpxsee.map+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.grafeq\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gqf\",\"gqs\"]\n  },\n  \"application/vnd.gridmp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.groove-account\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gac\"]\n  },\n  \"application/vnd.groove-help\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ghf\"]\n  },\n  \"application/vnd.groove-identity-message\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gim\"]\n  },\n  \"application/vnd.groove-injector\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"grv\"]\n  },\n  \"application/vnd.groove-tool-message\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gtm\"]\n  },\n  \"application/vnd.groove-tool-template\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"tpl\"]\n  },\n  \"application/vnd.groove-vcard\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"vcg\"]\n  },\n  \"application/vnd.hal+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.hal+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"hal\"]\n  },\n  \"application/vnd.handheld-entertainment+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"zmm\"]\n  },\n  \"application/vnd.hbci\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"hbci\"]\n  },\n  \"application/vnd.hc+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.hcl-bireports\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.hdt\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.heroku+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.hhe.lesson-player\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"les\"]\n  },\n  \"application/vnd.hp-hpgl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"hpgl\"]\n  },\n  \"application/vnd.hp-hpid\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"hpid\"]\n  },\n  \"application/vnd.hp-hps\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"hps\"]\n  },\n  \"application/vnd.hp-jlyt\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jlt\"]\n  },\n  \"application/vnd.hp-pcl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pcl\"]\n  },\n  \"application/vnd.hp-pclxl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pclxl\"]\n  },\n  \"application/vnd.hsl\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.httphone\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.hydrostatix.sof-data\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sfd-hdstx\"]\n  },\n  \"application/vnd.hyper+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.hyper-item+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.hyperdrive+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.hzn-3d-crossword\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ibm.afplinedata\": {\n    \"source\": \"apache\"\n  },\n  \"application/vnd.ibm.electronic-media\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ibm.minipay\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mpy\"]\n  },\n  \"application/vnd.ibm.modcap\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"afp\",\"listafp\",\"list3820\"]\n  },\n  \"application/vnd.ibm.rights-management\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"irm\"]\n  },\n  \"application/vnd.ibm.secure-container\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sc\"]\n  },\n  \"application/vnd.iccprofile\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"icc\",\"icm\"]\n  },\n  \"application/vnd.ieee.1905\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.igloader\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"igl\"]\n  },\n  \"application/vnd.imagemeter.folder+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.imagemeter.image+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.immervision-ivp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ivp\"]\n  },\n  \"application/vnd.immervision-ivu\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ivu\"]\n  },\n  \"application/vnd.ims.imsccv1p1\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ims.imsccv1p2\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ims.imsccv1p3\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ims.lis.v2.result+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ims.lti.v2.toolconsumerprofile+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ims.lti.v2.toolproxy+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ims.lti.v2.toolproxy.id+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ims.lti.v2.toolsettings+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ims.lti.v2.toolsettings.simple+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.informedcontrol.rms+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.informix-visionary\": {\n    \"source\": \"apache\"\n  },\n  \"application/vnd.infotech.project\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.infotech.project+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.innopath.wamp.notification\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.insors.igm\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"igm\"]\n  },\n  \"application/vnd.intercon.formnet\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xpw\",\"xpx\"]\n  },\n  \"application/vnd.intergeo\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"i2g\"]\n  },\n  \"application/vnd.intertrust.digibox\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.intertrust.nncp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.intu.qbo\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"qbo\"]\n  },\n  \"application/vnd.intu.qfx\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"qfx\"]\n  },\n  \"application/vnd.ipfs.ipns-record\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ipld.car\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ipld.dag-cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ipld.dag-json\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ipld.raw\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.iptc.g2.catalogitem+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.iptc.g2.conceptitem+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.iptc.g2.knowledgeitem+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.iptc.g2.newsitem+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.iptc.g2.newsmessage+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.iptc.g2.packageitem+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.iptc.g2.planningitem+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ipunplugged.rcprofile\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"rcprofile\"]\n  },\n  \"application/vnd.irepository.package+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"irp\"]\n  },\n  \"application/vnd.is-xpr\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xpr\"]\n  },\n  \"application/vnd.isac.fcs\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fcs\"]\n  },\n  \"application/vnd.iso11783-10+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.jam\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jam\"]\n  },\n  \"application/vnd.japannet-directory-service\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.japannet-jpnstore-wakeup\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.japannet-payment-wakeup\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.japannet-registration\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.japannet-registration-wakeup\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.japannet-setstore-wakeup\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.japannet-verification\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.japannet-verification-wakeup\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.jcp.javame.midlet-rms\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"rms\"]\n  },\n  \"application/vnd.jisp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jisp\"]\n  },\n  \"application/vnd.joost.joda-archive\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"joda\"]\n  },\n  \"application/vnd.jsk.isdn-ngn\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.kahootz\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ktz\",\"ktr\"]\n  },\n  \"application/vnd.kde.karbon\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"karbon\"]\n  },\n  \"application/vnd.kde.kchart\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"chrt\"]\n  },\n  \"application/vnd.kde.kformula\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"kfo\"]\n  },\n  \"application/vnd.kde.kivio\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"flw\"]\n  },\n  \"application/vnd.kde.kontour\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"kon\"]\n  },\n  \"application/vnd.kde.kpresenter\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"kpr\",\"kpt\"]\n  },\n  \"application/vnd.kde.kspread\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ksp\"]\n  },\n  \"application/vnd.kde.kword\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"kwd\",\"kwt\"]\n  },\n  \"application/vnd.kdl\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.kenameaapp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"htke\"]\n  },\n  \"application/vnd.keyman.kmp+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.keyman.kmx\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.kidspiration\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"kia\"]\n  },\n  \"application/vnd.kinar\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"kne\",\"knp\"]\n  },\n  \"application/vnd.koan\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"skp\",\"skd\",\"skt\",\"skm\"]\n  },\n  \"application/vnd.kodak-descriptor\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sse\"]\n  },\n  \"application/vnd.las\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.las.las+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.las.las+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"lasxml\"]\n  },\n  \"application/vnd.laszip\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ldev.productlicensing\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.leap+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.liberty-request+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.llamagraphics.life-balance.desktop\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"lbd\"]\n  },\n  \"application/vnd.llamagraphics.life-balance.exchange+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"lbe\"]\n  },\n  \"application/vnd.logipipe.circuit+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.loom\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.lotus-1-2-3\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"123\"]\n  },\n  \"application/vnd.lotus-approach\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"apr\"]\n  },\n  \"application/vnd.lotus-freelance\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pre\"]\n  },\n  \"application/vnd.lotus-notes\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"nsf\"]\n  },\n  \"application/vnd.lotus-organizer\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"org\"]\n  },\n  \"application/vnd.lotus-screencam\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"scm\"]\n  },\n  \"application/vnd.lotus-wordpro\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"lwp\"]\n  },\n  \"application/vnd.macports.portpkg\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"portpkg\"]\n  },\n  \"application/vnd.mapbox-vector-tile\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mvt\"]\n  },\n  \"application/vnd.marlin.drm.actiontoken+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.marlin.drm.conftoken+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.marlin.drm.license+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.marlin.drm.mdcf\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.mason+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.maxar.archive.3tz+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.maxmind.maxmind-db\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.mcd\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mcd\"]\n  },\n  \"application/vnd.mdl\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.mdl-mbsdf\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.medcalcdata\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mc1\"]\n  },\n  \"application/vnd.mediastation.cdkey\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cdkey\"]\n  },\n  \"application/vnd.medicalholodeck.recordxr\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.meridian-slingshot\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.mermaid\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.mfer\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mwf\"]\n  },\n  \"application/vnd.mfmp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mfm\"]\n  },\n  \"application/vnd.micro+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.micrografx.flo\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"flo\"]\n  },\n  \"application/vnd.micrografx.igx\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"igx\"]\n  },\n  \"application/vnd.microsoft.portable-executable\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.microsoft.windows.thumbnail-cache\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.miele+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.mif\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mif\"]\n  },\n  \"application/vnd.minisoft-hp3000-save\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.mitsubishi.misty-guard.trustweb\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.mobius.daf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"daf\"]\n  },\n  \"application/vnd.mobius.dis\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dis\"]\n  },\n  \"application/vnd.mobius.mbk\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mbk\"]\n  },\n  \"application/vnd.mobius.mqy\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mqy\"]\n  },\n  \"application/vnd.mobius.msl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"msl\"]\n  },\n  \"application/vnd.mobius.plc\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"plc\"]\n  },\n  \"application/vnd.mobius.txf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"txf\"]\n  },\n  \"application/vnd.modl\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.mophun.application\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mpn\"]\n  },\n  \"application/vnd.mophun.certificate\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mpc\"]\n  },\n  \"application/vnd.motorola.flexsuite\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.motorola.flexsuite.adsi\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.motorola.flexsuite.fis\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.motorola.flexsuite.gotap\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.motorola.flexsuite.kmr\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.motorola.flexsuite.ttc\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.motorola.flexsuite.wem\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.motorola.iprm\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.mozilla.xul+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xul\"]\n  },\n  \"application/vnd.ms-3mfdocument\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ms-artgalry\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cil\"]\n  },\n  \"application/vnd.ms-asf\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ms-cab-compressed\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cab\"]\n  },\n  \"application/vnd.ms-color.iccprofile\": {\n    \"source\": \"apache\"\n  },\n  \"application/vnd.ms-excel\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"xls\",\"xlm\",\"xla\",\"xlc\",\"xlt\",\"xlw\"]\n  },\n  \"application/vnd.ms-excel.addin.macroenabled.12\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xlam\"]\n  },\n  \"application/vnd.ms-excel.sheet.binary.macroenabled.12\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xlsb\"]\n  },\n  \"application/vnd.ms-excel.sheet.macroenabled.12\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xlsm\"]\n  },\n  \"application/vnd.ms-excel.template.macroenabled.12\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xltm\"]\n  },\n  \"application/vnd.ms-fontobject\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"eot\"]\n  },\n  \"application/vnd.ms-htmlhelp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"chm\"]\n  },\n  \"application/vnd.ms-ims\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ims\"]\n  },\n  \"application/vnd.ms-lrm\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"lrm\"]\n  },\n  \"application/vnd.ms-office.activex+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ms-officetheme\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"thmx\"]\n  },\n  \"application/vnd.ms-opentype\": {\n    \"source\": \"apache\",\n    \"compressible\": true\n  },\n  \"application/vnd.ms-outlook\": {\n    \"compressible\": false,\n    \"extensions\": [\"msg\"]\n  },\n  \"application/vnd.ms-package.obfuscated-opentype\": {\n    \"source\": \"apache\"\n  },\n  \"application/vnd.ms-pki.seccat\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"cat\"]\n  },\n  \"application/vnd.ms-pki.stl\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"stl\"]\n  },\n  \"application/vnd.ms-playready.initiator+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ms-powerpoint\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"ppt\",\"pps\",\"pot\"]\n  },\n  \"application/vnd.ms-powerpoint.addin.macroenabled.12\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ppam\"]\n  },\n  \"application/vnd.ms-powerpoint.presentation.macroenabled.12\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pptm\"]\n  },\n  \"application/vnd.ms-powerpoint.slide.macroenabled.12\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sldm\"]\n  },\n  \"application/vnd.ms-powerpoint.slideshow.macroenabled.12\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ppsm\"]\n  },\n  \"application/vnd.ms-powerpoint.template.macroenabled.12\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"potm\"]\n  },\n  \"application/vnd.ms-printdevicecapabilities+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ms-printing.printticket+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true\n  },\n  \"application/vnd.ms-printschematicket+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ms-project\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mpp\",\"mpt\"]\n  },\n  \"application/vnd.ms-tnef\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ms-visio.viewer\": {\n    \"extensions\": [\"vdx\"]\n  },\n  \"application/vnd.ms-windows.devicepairing\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ms-windows.nwprinting.oob\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ms-windows.printerpairing\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ms-windows.wsd.oob\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ms-wmdrm.lic-chlg-req\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ms-wmdrm.lic-resp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ms-wmdrm.meter-chlg-req\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ms-wmdrm.meter-resp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ms-word.document.macroenabled.12\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"docm\"]\n  },\n  \"application/vnd.ms-word.template.macroenabled.12\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dotm\"]\n  },\n  \"application/vnd.ms-works\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wps\",\"wks\",\"wcm\",\"wdb\"]\n  },\n  \"application/vnd.ms-wpl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wpl\"]\n  },\n  \"application/vnd.ms-xpsdocument\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"xps\"]\n  },\n  \"application/vnd.msa-disk-image\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.mseq\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mseq\"]\n  },\n  \"application/vnd.msgpack\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.msign\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.multiad.creator\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.multiad.creator.cif\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.music-niff\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.musician\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mus\"]\n  },\n  \"application/vnd.muvee.style\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"msty\"]\n  },\n  \"application/vnd.mynfc\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"taglet\"]\n  },\n  \"application/vnd.nacamar.ybrid+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.nato.bindingdataobject+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.nato.bindingdataobject+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.nato.bindingdataobject+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"bdo\"]\n  },\n  \"application/vnd.nato.openxmlformats-package.iepd+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.ncd.control\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ncd.reference\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.nearst.inv+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.nebumind.line\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.nervana\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.netfpx\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.neurolanguage.nlu\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"nlu\"]\n  },\n  \"application/vnd.nimn\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.nintendo.nitro.rom\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.nintendo.snes.rom\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.nitf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ntf\",\"nitf\"]\n  },\n  \"application/vnd.noblenet-directory\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"nnd\"]\n  },\n  \"application/vnd.noblenet-sealer\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"nns\"]\n  },\n  \"application/vnd.noblenet-web\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"nnw\"]\n  },\n  \"application/vnd.nokia.catalogs\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.nokia.conml+wbxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.nokia.conml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.nokia.iptv.config+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.nokia.isds-radio-presets\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.nokia.landmark+wbxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.nokia.landmark+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.nokia.landmarkcollection+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.nokia.n-gage.ac+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"ac\"]\n  },\n  \"application/vnd.nokia.n-gage.data\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ngdat\"]\n  },\n  \"application/vnd.nokia.n-gage.symbian.install\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"n-gage\"]\n  },\n  \"application/vnd.nokia.ncd\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.nokia.pcd+wbxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.nokia.pcd+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.nokia.radio-preset\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"rpst\"]\n  },\n  \"application/vnd.nokia.radio-presets\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"rpss\"]\n  },\n  \"application/vnd.novadigm.edm\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"edm\"]\n  },\n  \"application/vnd.novadigm.edx\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"edx\"]\n  },\n  \"application/vnd.novadigm.ext\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ext\"]\n  },\n  \"application/vnd.ntt-local.content-share\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ntt-local.file-transfer\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ntt-local.ogw_remote-access\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ntt-local.sip-ta_remote\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ntt-local.sip-ta_tcp_stream\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oai.workflows\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oai.workflows+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oai.workflows+yaml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oasis.opendocument.base\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oasis.opendocument.chart\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"odc\"]\n  },\n  \"application/vnd.oasis.opendocument.chart-template\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"otc\"]\n  },\n  \"application/vnd.oasis.opendocument.database\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"odb\"]\n  },\n  \"application/vnd.oasis.opendocument.formula\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"odf\"]\n  },\n  \"application/vnd.oasis.opendocument.formula-template\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"odft\"]\n  },\n  \"application/vnd.oasis.opendocument.graphics\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"odg\"]\n  },\n  \"application/vnd.oasis.opendocument.graphics-template\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"otg\"]\n  },\n  \"application/vnd.oasis.opendocument.image\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"odi\"]\n  },\n  \"application/vnd.oasis.opendocument.image-template\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"oti\"]\n  },\n  \"application/vnd.oasis.opendocument.presentation\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"odp\"]\n  },\n  \"application/vnd.oasis.opendocument.presentation-template\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"otp\"]\n  },\n  \"application/vnd.oasis.opendocument.spreadsheet\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"ods\"]\n  },\n  \"application/vnd.oasis.opendocument.spreadsheet-template\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ots\"]\n  },\n  \"application/vnd.oasis.opendocument.text\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"odt\"]\n  },\n  \"application/vnd.oasis.opendocument.text-master\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"odm\"]\n  },\n  \"application/vnd.oasis.opendocument.text-master-template\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oasis.opendocument.text-template\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ott\"]\n  },\n  \"application/vnd.oasis.opendocument.text-web\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"oth\"]\n  },\n  \"application/vnd.obn\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ocf+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oci.image.manifest.v1+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oftn.l10n+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oipf.contentaccessdownload+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oipf.contentaccessstreaming+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oipf.cspg-hexbinary\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oipf.dae.svg+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oipf.dae.xhtml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oipf.mippvcontrolmessage+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oipf.pae.gem\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oipf.spdiscovery+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oipf.spdlist+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oipf.ueprofile+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oipf.userprofile+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.olpc-sugar\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xo\"]\n  },\n  \"application/vnd.oma-scws-config\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma-scws-http-request\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma-scws-http-response\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma.bcast.associated-procedure-parameter+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.bcast.drm-trigger+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.bcast.imd+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.bcast.ltkm\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma.bcast.notification+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.bcast.provisioningtrigger\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma.bcast.sgboot\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma.bcast.sgdd+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.bcast.sgdu\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma.bcast.simple-symbol-container\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma.bcast.smartcard-trigger+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.bcast.sprov+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.bcast.stkm\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma.cab-address-book+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.cab-feature-handler+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.cab-pcc+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.cab-subs-invite+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.cab-user-prefs+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.dcd\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma.dcdc\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma.dd2+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"dd2\"]\n  },\n  \"application/vnd.oma.drm.risd+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.group-usage-list+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.lwm2m+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma.lwm2m+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.lwm2m+tlv\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma.pal+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.poc.detailed-progress-report+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.poc.final-report+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.poc.groups+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.poc.invocation-descriptor+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.poc.optimized-progress-report+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.push\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma.scidm.messages+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.xcap-directory+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.omads-email+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/vnd.omads-file+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/vnd.omads-folder+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/vnd.omaloc-supl-init\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.onepager\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.onepagertamp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.onepagertamx\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.onepagertat\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.onepagertatp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.onepagertatx\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.onvif.metadata\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.openblox.game+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"obgx\"]\n  },\n  \"application/vnd.openblox.game-binary\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.openeye.oeb\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.openofficeorg.extension\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"oxt\"]\n  },\n  \"application/vnd.openstreetmap.data+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"osm\"]\n  },\n  \"application/vnd.opentimestamps.ots\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.openvpi.dspx+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.custom-properties+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.customxmlproperties+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.drawing+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.drawingml.chart+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.extended-properties+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.comments+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.presentation\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"pptx\"]\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.presprops+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.slide\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sldx\"]\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.slide+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.slideshow\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ppsx\"]\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.tags+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.template\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"potx\"]\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.template.main+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"xlsx\"]\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.template\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xltx\"]\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.theme+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.themeoverride+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.vmldrawing\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"docx\"]\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.template\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dotx\"]\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-package.core-properties+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-package.relationships+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oracle.resource+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.orange.indata\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.osa.netdeploy\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.osgeo.mapguide.package\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mgp\"]\n  },\n  \"application/vnd.osgi.bundle\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.osgi.dp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dp\"]\n  },\n  \"application/vnd.osgi.subsystem\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"esa\"]\n  },\n  \"application/vnd.otps.ct-kip+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oxli.countgraph\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.pagerduty+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.palm\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pdb\",\"pqa\",\"oprc\"]\n  },\n  \"application/vnd.panoply\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.paos.xml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.patentdive\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.patientecommsdoc\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.pawaafile\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"paw\"]\n  },\n  \"application/vnd.pcos\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.pg.format\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"str\"]\n  },\n  \"application/vnd.pg.osasli\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ei6\"]\n  },\n  \"application/vnd.piaccess.application-licence\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.picsel\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"efif\"]\n  },\n  \"application/vnd.pmi.widget\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wg\"]\n  },\n  \"application/vnd.poc.group-advertisement+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.pocketlearn\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"plf\"]\n  },\n  \"application/vnd.powerbuilder6\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pbd\"]\n  },\n  \"application/vnd.powerbuilder6-s\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.powerbuilder7\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.powerbuilder7-s\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.powerbuilder75\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.powerbuilder75-s\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.preminet\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.previewsystems.box\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"box\"]\n  },\n  \"application/vnd.procrate.brushset\": {\n    \"extensions\": [\"brushset\"]\n  },\n  \"application/vnd.procreate.brush\": {\n    \"extensions\": [\"brush\"]\n  },\n  \"application/vnd.procreate.dream\": {\n    \"extensions\": [\"drm\"]\n  },\n  \"application/vnd.proteus.magazine\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mgz\"]\n  },\n  \"application/vnd.psfs\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.pt.mundusmundi\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.publishare-delta-tree\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"qps\"]\n  },\n  \"application/vnd.pvi.ptid1\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ptid\"]\n  },\n  \"application/vnd.pwg-multiplexed\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.pwg-xhtml-print+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xhtm\"]\n  },\n  \"application/vnd.qualcomm.brew-app-res\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.quarantainenet\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.quark.quarkxpress\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"qxd\",\"qxt\",\"qwd\",\"qwt\",\"qxl\",\"qxb\"]\n  },\n  \"application/vnd.quobject-quoxdocument\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.radisys.moml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-audit+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-audit-conf+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-audit-conn+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-audit-dialog+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-audit-stream+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-conf+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-dialog+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-dialog-base+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-dialog-fax-detect+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-dialog-fax-sendrecv+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-dialog-group+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-dialog-speech+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-dialog-transform+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.rainstor.data\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.rapid\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.rar\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"rar\"]\n  },\n  \"application/vnd.realvnc.bed\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"bed\"]\n  },\n  \"application/vnd.recordare.musicxml\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mxl\"]\n  },\n  \"application/vnd.recordare.musicxml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"musicxml\"]\n  },\n  \"application/vnd.relpipe\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.renlearn.rlprint\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.resilient.logic\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.restful+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.rig.cryptonote\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cryptonote\"]\n  },\n  \"application/vnd.rim.cod\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"cod\"]\n  },\n  \"application/vnd.rn-realmedia\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"rm\"]\n  },\n  \"application/vnd.rn-realmedia-vbr\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"rmvb\"]\n  },\n  \"application/vnd.route66.link66+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"link66\"]\n  },\n  \"application/vnd.rs-274x\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ruckus.download\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.s3sms\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sailingtracker.track\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"st\"]\n  },\n  \"application/vnd.sar\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sbm.cid\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sbm.mid2\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.scribus\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sealed.3df\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sealed.csf\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sealed.doc\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sealed.eml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sealed.mht\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sealed.net\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sealed.ppt\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sealed.tiff\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sealed.xls\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sealedmedia.softseal.html\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sealedmedia.softseal.pdf\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.seemail\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"see\"]\n  },\n  \"application/vnd.seis+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.sema\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sema\"]\n  },\n  \"application/vnd.semd\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"semd\"]\n  },\n  \"application/vnd.semf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"semf\"]\n  },\n  \"application/vnd.shade-save-file\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.shana.informed.formdata\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ifm\"]\n  },\n  \"application/vnd.shana.informed.formtemplate\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"itp\"]\n  },\n  \"application/vnd.shana.informed.interchange\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"iif\"]\n  },\n  \"application/vnd.shana.informed.package\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ipk\"]\n  },\n  \"application/vnd.shootproof+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.shopkick+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.shp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.shx\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sigrok.session\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.simtech-mindmapper\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"twd\",\"twds\"]\n  },\n  \"application/vnd.siren+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.sketchometry\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.smaf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mmf\"]\n  },\n  \"application/vnd.smart.notebook\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.smart.teacher\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"teacher\"]\n  },\n  \"application/vnd.smintio.portals.archive\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.snesdev-page-table\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.software602.filler.form+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"fo\"]\n  },\n  \"application/vnd.software602.filler.form-xml-zip\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.solent.sdkm+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"sdkm\",\"sdkd\"]\n  },\n  \"application/vnd.spotfire.dxp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dxp\"]\n  },\n  \"application/vnd.spotfire.sfs\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sfs\"]\n  },\n  \"application/vnd.sqlite3\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sss-cod\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sss-dtf\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sss-ntf\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.stardivision.calc\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sdc\"]\n  },\n  \"application/vnd.stardivision.draw\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sda\"]\n  },\n  \"application/vnd.stardivision.impress\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sdd\"]\n  },\n  \"application/vnd.stardivision.math\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"smf\"]\n  },\n  \"application/vnd.stardivision.writer\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sdw\",\"vor\"]\n  },\n  \"application/vnd.stardivision.writer-global\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sgl\"]\n  },\n  \"application/vnd.stepmania.package\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"smzip\"]\n  },\n  \"application/vnd.stepmania.stepchart\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sm\"]\n  },\n  \"application/vnd.street-stream\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sun.wadl+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"wadl\"]\n  },\n  \"application/vnd.sun.xml.calc\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sxc\"]\n  },\n  \"application/vnd.sun.xml.calc.template\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"stc\"]\n  },\n  \"application/vnd.sun.xml.draw\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sxd\"]\n  },\n  \"application/vnd.sun.xml.draw.template\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"std\"]\n  },\n  \"application/vnd.sun.xml.impress\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sxi\"]\n  },\n  \"application/vnd.sun.xml.impress.template\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sti\"]\n  },\n  \"application/vnd.sun.xml.math\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sxm\"]\n  },\n  \"application/vnd.sun.xml.writer\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sxw\"]\n  },\n  \"application/vnd.sun.xml.writer.global\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sxg\"]\n  },\n  \"application/vnd.sun.xml.writer.template\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"stw\"]\n  },\n  \"application/vnd.sus-calendar\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sus\",\"susp\"]\n  },\n  \"application/vnd.svd\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"svd\"]\n  },\n  \"application/vnd.swiftview-ics\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sybyl.mol2\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sycle+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.syft+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.symbian.install\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sis\",\"sisx\"]\n  },\n  \"application/vnd.syncml+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true,\n    \"extensions\": [\"xsm\"]\n  },\n  \"application/vnd.syncml.dm+wbxml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"extensions\": [\"bdm\"]\n  },\n  \"application/vnd.syncml.dm+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true,\n    \"extensions\": [\"xdm\"]\n  },\n  \"application/vnd.syncml.dm.notification\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.syncml.dmddf+wbxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.syncml.dmddf+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true,\n    \"extensions\": [\"ddf\"]\n  },\n  \"application/vnd.syncml.dmtnds+wbxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.syncml.dmtnds+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/vnd.syncml.ds.notification\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.tableschema+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.tao.intent-module-archive\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"tao\"]\n  },\n  \"application/vnd.tcpdump.pcap\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pcap\",\"cap\",\"dmp\"]\n  },\n  \"application/vnd.think-cell.ppttc+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.tmd.mediaflex.api+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.tml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.tmobile-livetv\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"tmo\"]\n  },\n  \"application/vnd.tri.onesource\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.trid.tpt\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"tpt\"]\n  },\n  \"application/vnd.triscape.mxs\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mxs\"]\n  },\n  \"application/vnd.trueapp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"tra\"]\n  },\n  \"application/vnd.truedoc\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ubisoft.webplayer\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ufdl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ufd\",\"ufdl\"]\n  },\n  \"application/vnd.uic.osdm+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.uiq.theme\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"utz\"]\n  },\n  \"application/vnd.umajin\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"umj\"]\n  },\n  \"application/vnd.unity\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"unityweb\"]\n  },\n  \"application/vnd.uoml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"uoml\",\"uo\"]\n  },\n  \"application/vnd.uplanet.alert\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uplanet.alert-wbxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uplanet.bearer-choice\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uplanet.bearer-choice-wbxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uplanet.cacheop\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uplanet.cacheop-wbxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uplanet.channel\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uplanet.channel-wbxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uplanet.list\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uplanet.list-wbxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uplanet.listcmd\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uplanet.listcmd-wbxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uplanet.signal\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uri-map\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.valve.source.material\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.vcx\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"vcx\"]\n  },\n  \"application/vnd.vd-study\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.vectorworks\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.vel+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.veraison.tsm-report+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.veraison.tsm-report+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.verimatrix.vcas\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.veritone.aion+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.veryant.thin\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ves.encrypted\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.vidsoft.vidconference\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.visio\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"vsd\",\"vst\",\"vss\",\"vsw\",\"vsdx\",\"vtx\"]\n  },\n  \"application/vnd.visionary\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"vis\"]\n  },\n  \"application/vnd.vividence.scriptfile\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.vocalshaper.vsp4\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.vsf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"vsf\"]\n  },\n  \"application/vnd.wap.sic\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.wap.slc\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.wap.wbxml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"extensions\": [\"wbxml\"]\n  },\n  \"application/vnd.wap.wmlc\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wmlc\"]\n  },\n  \"application/vnd.wap.wmlscriptc\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wmlsc\"]\n  },\n  \"application/vnd.wasmflow.wafl\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.webturbo\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wtb\"]\n  },\n  \"application/vnd.wfa.dpp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.wfa.p2p\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.wfa.wsc\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.windows.devicepairing\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.wmc\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.wmf.bootstrap\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.wolfram.mathematica\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.wolfram.mathematica.package\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.wolfram.player\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"nbp\"]\n  },\n  \"application/vnd.wordlift\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.wordperfect\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wpd\"]\n  },\n  \"application/vnd.wqd\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wqd\"]\n  },\n  \"application/vnd.wrq-hp3000-labelled\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.wt.stf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"stf\"]\n  },\n  \"application/vnd.wv.csp+wbxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.wv.csp+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.wv.ssp+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.xacml+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.xara\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xar\"]\n  },\n  \"application/vnd.xarin.cpj\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.xecrets-encrypted\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.xfdl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xfdl\"]\n  },\n  \"application/vnd.xfdl.webform\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.xmi+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.xmpie.cpkg\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.xmpie.dpkg\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.xmpie.plan\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.xmpie.ppkg\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.xmpie.xlim\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.yamaha.hv-dic\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"hvd\"]\n  },\n  \"application/vnd.yamaha.hv-script\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"hvs\"]\n  },\n  \"application/vnd.yamaha.hv-voice\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"hvp\"]\n  },\n  \"application/vnd.yamaha.openscoreformat\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"osf\"]\n  },\n  \"application/vnd.yamaha.openscoreformat.osfpvg+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"osfpvg\"]\n  },\n  \"application/vnd.yamaha.remote-setup\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.yamaha.smaf-audio\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"saf\"]\n  },\n  \"application/vnd.yamaha.smaf-phrase\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"spf\"]\n  },\n  \"application/vnd.yamaha.through-ngn\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.yamaha.tunnel-udpencap\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.yaoweme\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.yellowriver-custom-menu\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cmp\"]\n  },\n  \"application/vnd.zul\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"zir\",\"zirz\"]\n  },\n  \"application/vnd.zzazz.deck+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"zaz\"]\n  },\n  \"application/voicexml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"vxml\"]\n  },\n  \"application/voucher-cms+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/voucher-jws+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vp+cose\": {\n    \"source\": \"iana\"\n  },\n  \"application/vp+jwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/vq-rtcpxr\": {\n    \"source\": \"iana\"\n  },\n  \"application/wasm\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"wasm\"]\n  },\n  \"application/watcherinfo+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"wif\"]\n  },\n  \"application/webpush-options+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/whoispp-query\": {\n    \"source\": \"iana\"\n  },\n  \"application/whoispp-response\": {\n    \"source\": \"iana\"\n  },\n  \"application/widget\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wgt\"]\n  },\n  \"application/winhlp\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"hlp\"]\n  },\n  \"application/wita\": {\n    \"source\": \"iana\"\n  },\n  \"application/wordperfect5.1\": {\n    \"source\": \"iana\"\n  },\n  \"application/wsdl+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"wsdl\"]\n  },\n  \"application/wspolicy+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"wspolicy\"]\n  },\n  \"application/x-7z-compressed\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"7z\"]\n  },\n  \"application/x-abiword\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"abw\"]\n  },\n  \"application/x-ace-compressed\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"ace\"]\n  },\n  \"application/x-amf\": {\n    \"source\": \"apache\"\n  },\n  \"application/x-apple-diskimage\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"dmg\"]\n  },\n  \"application/x-arj\": {\n    \"compressible\": false,\n    \"extensions\": [\"arj\"]\n  },\n  \"application/x-authorware-bin\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"aab\",\"x32\",\"u32\",\"vox\"]\n  },\n  \"application/x-authorware-map\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"aam\"]\n  },\n  \"application/x-authorware-seg\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"aas\"]\n  },\n  \"application/x-bcpio\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"bcpio\"]\n  },\n  \"application/x-bdoc\": {\n    \"compressible\": false,\n    \"extensions\": [\"bdoc\"]\n  },\n  \"application/x-bittorrent\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"torrent\"]\n  },\n  \"application/x-blender\": {\n    \"extensions\": [\"blend\"]\n  },\n  \"application/x-blorb\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"blb\",\"blorb\"]\n  },\n  \"application/x-bzip\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"bz\"]\n  },\n  \"application/x-bzip2\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"bz2\",\"boz\"]\n  },\n  \"application/x-cbr\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"cbr\",\"cba\",\"cbt\",\"cbz\",\"cb7\"]\n  },\n  \"application/x-cdlink\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"vcd\"]\n  },\n  \"application/x-cfs-compressed\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"cfs\"]\n  },\n  \"application/x-chat\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"chat\"]\n  },\n  \"application/x-chess-pgn\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"pgn\"]\n  },\n  \"application/x-chrome-extension\": {\n    \"extensions\": [\"crx\"]\n  },\n  \"application/x-cocoa\": {\n    \"source\": \"nginx\",\n    \"extensions\": [\"cco\"]\n  },\n  \"application/x-compress\": {\n    \"source\": \"apache\"\n  },\n  \"application/x-compressed\": {\n    \"extensions\": [\"rar\"]\n  },\n  \"application/x-conference\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"nsc\"]\n  },\n  \"application/x-cpio\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"cpio\"]\n  },\n  \"application/x-csh\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"csh\"]\n  },\n  \"application/x-deb\": {\n    \"compressible\": false\n  },\n  \"application/x-debian-package\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"deb\",\"udeb\"]\n  },\n  \"application/x-dgc-compressed\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"dgc\"]\n  },\n  \"application/x-director\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"dir\",\"dcr\",\"dxr\",\"cst\",\"cct\",\"cxt\",\"w3d\",\"fgd\",\"swa\"]\n  },\n  \"application/x-doom\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"wad\"]\n  },\n  \"application/x-dtbncx+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"ncx\"]\n  },\n  \"application/x-dtbook+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"dtb\"]\n  },\n  \"application/x-dtbresource+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"res\"]\n  },\n  \"application/x-dvi\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"dvi\"]\n  },\n  \"application/x-envoy\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"evy\"]\n  },\n  \"application/x-eva\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"eva\"]\n  },\n  \"application/x-font-bdf\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"bdf\"]\n  },\n  \"application/x-font-dos\": {\n    \"source\": \"apache\"\n  },\n  \"application/x-font-framemaker\": {\n    \"source\": \"apache\"\n  },\n  \"application/x-font-ghostscript\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"gsf\"]\n  },\n  \"application/x-font-libgrx\": {\n    \"source\": \"apache\"\n  },\n  \"application/x-font-linux-psf\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"psf\"]\n  },\n  \"application/x-font-pcf\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"pcf\"]\n  },\n  \"application/x-font-snf\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"snf\"]\n  },\n  \"application/x-font-speedo\": {\n    \"source\": \"apache\"\n  },\n  \"application/x-font-sunos-news\": {\n    \"source\": \"apache\"\n  },\n  \"application/x-font-type1\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"pfa\",\"pfb\",\"pfm\",\"afm\"]\n  },\n  \"application/x-font-vfont\": {\n    \"source\": \"apache\"\n  },\n  \"application/x-freearc\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"arc\"]\n  },\n  \"application/x-futuresplash\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"spl\"]\n  },\n  \"application/x-gca-compressed\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"gca\"]\n  },\n  \"application/x-glulx\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"ulx\"]\n  },\n  \"application/x-gnumeric\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"gnumeric\"]\n  },\n  \"application/x-gramps-xml\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"gramps\"]\n  },\n  \"application/x-gtar\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"gtar\"]\n  },\n  \"application/x-gzip\": {\n    \"source\": \"apache\"\n  },\n  \"application/x-hdf\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"hdf\"]\n  },\n  \"application/x-httpd-php\": {\n    \"compressible\": true,\n    \"extensions\": [\"php\"]\n  },\n  \"application/x-install-instructions\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"install\"]\n  },\n  \"application/x-ipynb+json\": {\n    \"compressible\": true,\n    \"extensions\": [\"ipynb\"]\n  },\n  \"application/x-iso9660-image\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"iso\"]\n  },\n  \"application/x-iwork-keynote-sffkey\": {\n    \"extensions\": [\"key\"]\n  },\n  \"application/x-iwork-numbers-sffnumbers\": {\n    \"extensions\": [\"numbers\"]\n  },\n  \"application/x-iwork-pages-sffpages\": {\n    \"extensions\": [\"pages\"]\n  },\n  \"application/x-java-archive-diff\": {\n    \"source\": \"nginx\",\n    \"extensions\": [\"jardiff\"]\n  },\n  \"application/x-java-jnlp-file\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"jnlp\"]\n  },\n  \"application/x-javascript\": {\n    \"compressible\": true\n  },\n  \"application/x-keepass2\": {\n    \"extensions\": [\"kdbx\"]\n  },\n  \"application/x-latex\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"latex\"]\n  },\n  \"application/x-lua-bytecode\": {\n    \"extensions\": [\"luac\"]\n  },\n  \"application/x-lzh-compressed\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"lzh\",\"lha\"]\n  },\n  \"application/x-makeself\": {\n    \"source\": \"nginx\",\n    \"extensions\": [\"run\"]\n  },\n  \"application/x-mie\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"mie\"]\n  },\n  \"application/x-mobipocket-ebook\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"prc\",\"mobi\"]\n  },\n  \"application/x-mpegurl\": {\n    \"compressible\": false\n  },\n  \"application/x-ms-application\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"application\"]\n  },\n  \"application/x-ms-shortcut\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"lnk\"]\n  },\n  \"application/x-ms-wmd\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"wmd\"]\n  },\n  \"application/x-ms-wmz\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"wmz\"]\n  },\n  \"application/x-ms-xbap\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"xbap\"]\n  },\n  \"application/x-msaccess\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"mdb\"]\n  },\n  \"application/x-msbinder\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"obd\"]\n  },\n  \"application/x-mscardfile\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"crd\"]\n  },\n  \"application/x-msclip\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"clp\"]\n  },\n  \"application/x-msdos-program\": {\n    \"extensions\": [\"exe\"]\n  },\n  \"application/x-msdownload\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"exe\",\"dll\",\"com\",\"bat\",\"msi\"]\n  },\n  \"application/x-msmediaview\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"mvb\",\"m13\",\"m14\"]\n  },\n  \"application/x-msmetafile\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"wmf\",\"wmz\",\"emf\",\"emz\"]\n  },\n  \"application/x-msmoney\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"mny\"]\n  },\n  \"application/x-mspublisher\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"pub\"]\n  },\n  \"application/x-msschedule\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"scd\"]\n  },\n  \"application/x-msterminal\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"trm\"]\n  },\n  \"application/x-mswrite\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"wri\"]\n  },\n  \"application/x-netcdf\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"nc\",\"cdf\"]\n  },\n  \"application/x-ns-proxy-autoconfig\": {\n    \"compressible\": true,\n    \"extensions\": [\"pac\"]\n  },\n  \"application/x-nzb\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"nzb\"]\n  },\n  \"application/x-perl\": {\n    \"source\": \"nginx\",\n    \"extensions\": [\"pl\",\"pm\"]\n  },\n  \"application/x-pilot\": {\n    \"source\": \"nginx\",\n    \"extensions\": [\"prc\",\"pdb\"]\n  },\n  \"application/x-pkcs12\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"p12\",\"pfx\"]\n  },\n  \"application/x-pkcs7-certificates\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"p7b\",\"spc\"]\n  },\n  \"application/x-pkcs7-certreqresp\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"p7r\"]\n  },\n  \"application/x-pki-message\": {\n    \"source\": \"iana\"\n  },\n  \"application/x-rar-compressed\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"rar\"]\n  },\n  \"application/x-redhat-package-manager\": {\n    \"source\": \"nginx\",\n    \"extensions\": [\"rpm\"]\n  },\n  \"application/x-research-info-systems\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"ris\"]\n  },\n  \"application/x-sea\": {\n    \"source\": \"nginx\",\n    \"extensions\": [\"sea\"]\n  },\n  \"application/x-sh\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"sh\"]\n  },\n  \"application/x-shar\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"shar\"]\n  },\n  \"application/x-shockwave-flash\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"swf\"]\n  },\n  \"application/x-silverlight-app\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"xap\"]\n  },\n  \"application/x-sql\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sql\"]\n  },\n  \"application/x-stuffit\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"sit\"]\n  },\n  \"application/x-stuffitx\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sitx\"]\n  },\n  \"application/x-subrip\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"srt\"]\n  },\n  \"application/x-sv4cpio\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sv4cpio\"]\n  },\n  \"application/x-sv4crc\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sv4crc\"]\n  },\n  \"application/x-t3vm-image\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"t3\"]\n  },\n  \"application/x-tads\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"gam\"]\n  },\n  \"application/x-tar\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"tar\"]\n  },\n  \"application/x-tcl\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"tcl\",\"tk\"]\n  },\n  \"application/x-tex\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"tex\"]\n  },\n  \"application/x-tex-tfm\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"tfm\"]\n  },\n  \"application/x-texinfo\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"texinfo\",\"texi\"]\n  },\n  \"application/x-tgif\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"obj\"]\n  },\n  \"application/x-ustar\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"ustar\"]\n  },\n  \"application/x-virtualbox-hdd\": {\n    \"compressible\": true,\n    \"extensions\": [\"hdd\"]\n  },\n  \"application/x-virtualbox-ova\": {\n    \"compressible\": true,\n    \"extensions\": [\"ova\"]\n  },\n  \"application/x-virtualbox-ovf\": {\n    \"compressible\": true,\n    \"extensions\": [\"ovf\"]\n  },\n  \"application/x-virtualbox-vbox\": {\n    \"compressible\": true,\n    \"extensions\": [\"vbox\"]\n  },\n  \"application/x-virtualbox-vbox-extpack\": {\n    \"compressible\": false,\n    \"extensions\": [\"vbox-extpack\"]\n  },\n  \"application/x-virtualbox-vdi\": {\n    \"compressible\": true,\n    \"extensions\": [\"vdi\"]\n  },\n  \"application/x-virtualbox-vhd\": {\n    \"compressible\": true,\n    \"extensions\": [\"vhd\"]\n  },\n  \"application/x-virtualbox-vmdk\": {\n    \"compressible\": true,\n    \"extensions\": [\"vmdk\"]\n  },\n  \"application/x-wais-source\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"src\"]\n  },\n  \"application/x-web-app-manifest+json\": {\n    \"compressible\": true,\n    \"extensions\": [\"webapp\"]\n  },\n  \"application/x-www-form-urlencoded\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/x-x509-ca-cert\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"der\",\"crt\",\"pem\"]\n  },\n  \"application/x-x509-ca-ra-cert\": {\n    \"source\": \"iana\"\n  },\n  \"application/x-x509-next-ca-cert\": {\n    \"source\": \"iana\"\n  },\n  \"application/x-xfig\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"fig\"]\n  },\n  \"application/x-xliff+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"xlf\"]\n  },\n  \"application/x-xpinstall\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"xpi\"]\n  },\n  \"application/x-xz\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"xz\"]\n  },\n  \"application/x-zip-compressed\": {\n    \"extensions\": [\"zip\"]\n  },\n  \"application/x-zmachine\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"z1\",\"z2\",\"z3\",\"z4\",\"z5\",\"z6\",\"z7\",\"z8\"]\n  },\n  \"application/x400-bp\": {\n    \"source\": \"iana\"\n  },\n  \"application/xacml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/xaml+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"xaml\"]\n  },\n  \"application/xcap-att+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xav\"]\n  },\n  \"application/xcap-caps+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xca\"]\n  },\n  \"application/xcap-diff+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xdf\"]\n  },\n  \"application/xcap-el+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xel\"]\n  },\n  \"application/xcap-error+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/xcap-ns+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xns\"]\n  },\n  \"application/xcon-conference-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/xcon-conference-info-diff+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/xenc+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xenc\"]\n  },\n  \"application/xfdf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xfdf\"]\n  },\n  \"application/xhtml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xhtml\",\"xht\"]\n  },\n  \"application/xhtml-voice+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true\n  },\n  \"application/xliff+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xlf\"]\n  },\n  \"application/xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xml\",\"xsl\",\"xsd\",\"rng\"]\n  },\n  \"application/xml-dtd\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"dtd\"]\n  },\n  \"application/xml-external-parsed-entity\": {\n    \"source\": \"iana\"\n  },\n  \"application/xml-patch+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/xmpp+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/xop+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xop\"]\n  },\n  \"application/xproc+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"xpl\"]\n  },\n  \"application/xslt+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xsl\",\"xslt\"]\n  },\n  \"application/xspf+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"xspf\"]\n  },\n  \"application/xv+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"mxml\",\"xhvml\",\"xvml\",\"xvm\"]\n  },\n  \"application/yaml\": {\n    \"source\": \"iana\"\n  },\n  \"application/yang\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"yang\"]\n  },\n  \"application/yang-data+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/yang-data+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/yang-data+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/yang-patch+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/yang-patch+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/yang-sid+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/yin+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"yin\"]\n  },\n  \"application/zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"zip\"]\n  },\n  \"application/zip+dotlottie\": {\n    \"extensions\": [\"lottie\"]\n  },\n  \"application/zlib\": {\n    \"source\": \"iana\"\n  },\n  \"application/zstd\": {\n    \"source\": \"iana\"\n  },\n  \"audio/1d-interleaved-parityfec\": {\n    \"source\": \"iana\"\n  },\n  \"audio/32kadpcm\": {\n    \"source\": \"iana\"\n  },\n  \"audio/3gpp\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"3gpp\"]\n  },\n  \"audio/3gpp2\": {\n    \"source\": \"iana\"\n  },\n  \"audio/aac\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"adts\",\"aac\"]\n  },\n  \"audio/ac3\": {\n    \"source\": \"iana\"\n  },\n  \"audio/adpcm\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"adp\"]\n  },\n  \"audio/amr\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"amr\"]\n  },\n  \"audio/amr-wb\": {\n    \"source\": \"iana\"\n  },\n  \"audio/amr-wb+\": {\n    \"source\": \"iana\"\n  },\n  \"audio/aptx\": {\n    \"source\": \"iana\"\n  },\n  \"audio/asc\": {\n    \"source\": \"iana\"\n  },\n  \"audio/atrac-advanced-lossless\": {\n    \"source\": \"iana\"\n  },\n  \"audio/atrac-x\": {\n    \"source\": \"iana\"\n  },\n  \"audio/atrac3\": {\n    \"source\": \"iana\"\n  },\n  \"audio/basic\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"au\",\"snd\"]\n  },\n  \"audio/bv16\": {\n    \"source\": \"iana\"\n  },\n  \"audio/bv32\": {\n    \"source\": \"iana\"\n  },\n  \"audio/clearmode\": {\n    \"source\": \"iana\"\n  },\n  \"audio/cn\": {\n    \"source\": \"iana\"\n  },\n  \"audio/dat12\": {\n    \"source\": \"iana\"\n  },\n  \"audio/dls\": {\n    \"source\": \"iana\"\n  },\n  \"audio/dsr-es201108\": {\n    \"source\": \"iana\"\n  },\n  \"audio/dsr-es202050\": {\n    \"source\": \"iana\"\n  },\n  \"audio/dsr-es202211\": {\n    \"source\": \"iana\"\n  },\n  \"audio/dsr-es202212\": {\n    \"source\": \"iana\"\n  },\n  \"audio/dv\": {\n    \"source\": \"iana\"\n  },\n  \"audio/dvi4\": {\n    \"source\": \"iana\"\n  },\n  \"audio/eac3\": {\n    \"source\": \"iana\"\n  },\n  \"audio/encaprtp\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrc\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrc-qcp\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrc0\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrc1\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrcb\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrcb0\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrcb1\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrcnw\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrcnw0\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrcnw1\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrcwb\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrcwb0\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrcwb1\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evs\": {\n    \"source\": \"iana\"\n  },\n  \"audio/flac\": {\n    \"source\": \"iana\"\n  },\n  \"audio/flexfec\": {\n    \"source\": \"iana\"\n  },\n  \"audio/fwdred\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g711-0\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g719\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g722\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g7221\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g723\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g726-16\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g726-24\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g726-32\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g726-40\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g728\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g729\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g7291\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g729d\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g729e\": {\n    \"source\": \"iana\"\n  },\n  \"audio/gsm\": {\n    \"source\": \"iana\"\n  },\n  \"audio/gsm-efr\": {\n    \"source\": \"iana\"\n  },\n  \"audio/gsm-hr-08\": {\n    \"source\": \"iana\"\n  },\n  \"audio/ilbc\": {\n    \"source\": \"iana\"\n  },\n  \"audio/ip-mr_v2.5\": {\n    \"source\": \"iana\"\n  },\n  \"audio/isac\": {\n    \"source\": \"apache\"\n  },\n  \"audio/l16\": {\n    \"source\": \"iana\"\n  },\n  \"audio/l20\": {\n    \"source\": \"iana\"\n  },\n  \"audio/l24\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"audio/l8\": {\n    \"source\": \"iana\"\n  },\n  \"audio/lpc\": {\n    \"source\": \"iana\"\n  },\n  \"audio/matroska\": {\n    \"source\": \"iana\"\n  },\n  \"audio/melp\": {\n    \"source\": \"iana\"\n  },\n  \"audio/melp1200\": {\n    \"source\": \"iana\"\n  },\n  \"audio/melp2400\": {\n    \"source\": \"iana\"\n  },\n  \"audio/melp600\": {\n    \"source\": \"iana\"\n  },\n  \"audio/mhas\": {\n    \"source\": \"iana\"\n  },\n  \"audio/midi\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"mid\",\"midi\",\"kar\",\"rmi\"]\n  },\n  \"audio/midi-clip\": {\n    \"source\": \"iana\"\n  },\n  \"audio/mobile-xmf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mxmf\"]\n  },\n  \"audio/mp3\": {\n    \"compressible\": false,\n    \"extensions\": [\"mp3\"]\n  },\n  \"audio/mp4\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"m4a\",\"mp4a\",\"m4b\"]\n  },\n  \"audio/mp4a-latm\": {\n    \"source\": \"iana\"\n  },\n  \"audio/mpa\": {\n    \"source\": \"iana\"\n  },\n  \"audio/mpa-robust\": {\n    \"source\": \"iana\"\n  },\n  \"audio/mpeg\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"mpga\",\"mp2\",\"mp2a\",\"mp3\",\"m2a\",\"m3a\"]\n  },\n  \"audio/mpeg4-generic\": {\n    \"source\": \"iana\"\n  },\n  \"audio/musepack\": {\n    \"source\": \"apache\"\n  },\n  \"audio/ogg\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"oga\",\"ogg\",\"spx\",\"opus\"]\n  },\n  \"audio/opus\": {\n    \"source\": \"iana\"\n  },\n  \"audio/parityfec\": {\n    \"source\": \"iana\"\n  },\n  \"audio/pcma\": {\n    \"source\": \"iana\"\n  },\n  \"audio/pcma-wb\": {\n    \"source\": \"iana\"\n  },\n  \"audio/pcmu\": {\n    \"source\": \"iana\"\n  },\n  \"audio/pcmu-wb\": {\n    \"source\": \"iana\"\n  },\n  \"audio/prs.sid\": {\n    \"source\": \"iana\"\n  },\n  \"audio/qcelp\": {\n    \"source\": \"iana\"\n  },\n  \"audio/raptorfec\": {\n    \"source\": \"iana\"\n  },\n  \"audio/red\": {\n    \"source\": \"iana\"\n  },\n  \"audio/rtp-enc-aescm128\": {\n    \"source\": \"iana\"\n  },\n  \"audio/rtp-midi\": {\n    \"source\": \"iana\"\n  },\n  \"audio/rtploopback\": {\n    \"source\": \"iana\"\n  },\n  \"audio/rtx\": {\n    \"source\": \"iana\"\n  },\n  \"audio/s3m\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"s3m\"]\n  },\n  \"audio/scip\": {\n    \"source\": \"iana\"\n  },\n  \"audio/silk\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sil\"]\n  },\n  \"audio/smv\": {\n    \"source\": \"iana\"\n  },\n  \"audio/smv-qcp\": {\n    \"source\": \"iana\"\n  },\n  \"audio/smv0\": {\n    \"source\": \"iana\"\n  },\n  \"audio/sofa\": {\n    \"source\": \"iana\"\n  },\n  \"audio/sp-midi\": {\n    \"source\": \"iana\"\n  },\n  \"audio/speex\": {\n    \"source\": \"iana\"\n  },\n  \"audio/t140c\": {\n    \"source\": \"iana\"\n  },\n  \"audio/t38\": {\n    \"source\": \"iana\"\n  },\n  \"audio/telephone-event\": {\n    \"source\": \"iana\"\n  },\n  \"audio/tetra_acelp\": {\n    \"source\": \"iana\"\n  },\n  \"audio/tetra_acelp_bb\": {\n    \"source\": \"iana\"\n  },\n  \"audio/tone\": {\n    \"source\": \"iana\"\n  },\n  \"audio/tsvcis\": {\n    \"source\": \"iana\"\n  },\n  \"audio/uemclip\": {\n    \"source\": \"iana\"\n  },\n  \"audio/ulpfec\": {\n    \"source\": \"iana\"\n  },\n  \"audio/usac\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vdvi\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vmr-wb\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.3gpp.iufp\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.4sb\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.audiokoz\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.celp\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.cisco.nse\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.cmles.radio-events\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.cns.anp1\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.cns.inf1\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.dece.audio\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"uva\",\"uvva\"]\n  },\n  \"audio/vnd.digital-winds\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"eol\"]\n  },\n  \"audio/vnd.dlna.adts\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.dolby.heaac.1\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.dolby.heaac.2\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.dolby.mlp\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.dolby.mps\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.dolby.pl2\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.dolby.pl2x\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.dolby.pl2z\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.dolby.pulse.1\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.dra\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dra\"]\n  },\n  \"audio/vnd.dts\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dts\"]\n  },\n  \"audio/vnd.dts.hd\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dtshd\"]\n  },\n  \"audio/vnd.dts.uhd\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.dvb.file\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.everad.plj\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.hns.audio\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.lucent.voice\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"lvp\"]\n  },\n  \"audio/vnd.ms-playready.media.pya\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pya\"]\n  },\n  \"audio/vnd.nokia.mobile-xmf\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.nortel.vbk\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.nuera.ecelp4800\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ecelp4800\"]\n  },\n  \"audio/vnd.nuera.ecelp7470\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ecelp7470\"]\n  },\n  \"audio/vnd.nuera.ecelp9600\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ecelp9600\"]\n  },\n  \"audio/vnd.octel.sbc\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.presonus.multitrack\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.qcelp\": {\n    \"source\": \"apache\"\n  },\n  \"audio/vnd.rhetorex.32kadpcm\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.rip\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"rip\"]\n  },\n  \"audio/vnd.rn-realaudio\": {\n    \"compressible\": false\n  },\n  \"audio/vnd.sealedmedia.softseal.mpeg\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.vmx.cvsd\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.wave\": {\n    \"compressible\": false\n  },\n  \"audio/vorbis\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"audio/vorbis-config\": {\n    \"source\": \"iana\"\n  },\n  \"audio/wav\": {\n    \"compressible\": false,\n    \"extensions\": [\"wav\"]\n  },\n  \"audio/wave\": {\n    \"compressible\": false,\n    \"extensions\": [\"wav\"]\n  },\n  \"audio/webm\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"weba\"]\n  },\n  \"audio/x-aac\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"aac\"]\n  },\n  \"audio/x-aiff\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"aif\",\"aiff\",\"aifc\"]\n  },\n  \"audio/x-caf\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"caf\"]\n  },\n  \"audio/x-flac\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"flac\"]\n  },\n  \"audio/x-m4a\": {\n    \"source\": \"nginx\",\n    \"extensions\": [\"m4a\"]\n  },\n  \"audio/x-matroska\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"mka\"]\n  },\n  \"audio/x-mpegurl\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"m3u\"]\n  },\n  \"audio/x-ms-wax\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"wax\"]\n  },\n  \"audio/x-ms-wma\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"wma\"]\n  },\n  \"audio/x-pn-realaudio\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"ram\",\"ra\"]\n  },\n  \"audio/x-pn-realaudio-plugin\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"rmp\"]\n  },\n  \"audio/x-realaudio\": {\n    \"source\": \"nginx\",\n    \"extensions\": [\"ra\"]\n  },\n  \"audio/x-tta\": {\n    \"source\": \"apache\"\n  },\n  \"audio/x-wav\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"wav\"]\n  },\n  \"audio/xm\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"xm\"]\n  },\n  \"chemical/x-cdx\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"cdx\"]\n  },\n  \"chemical/x-cif\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"cif\"]\n  },\n  \"chemical/x-cmdf\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"cmdf\"]\n  },\n  \"chemical/x-cml\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"cml\"]\n  },\n  \"chemical/x-csml\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"csml\"]\n  },\n  \"chemical/x-pdb\": {\n    \"source\": \"apache\"\n  },\n  \"chemical/x-xyz\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"xyz\"]\n  },\n  \"font/collection\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ttc\"]\n  },\n  \"font/otf\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"otf\"]\n  },\n  \"font/sfnt\": {\n    \"source\": \"iana\"\n  },\n  \"font/ttf\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"ttf\"]\n  },\n  \"font/woff\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"woff\"]\n  },\n  \"font/woff2\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"woff2\"]\n  },\n  \"image/aces\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"exr\"]\n  },\n  \"image/apng\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"apng\"]\n  },\n  \"image/avci\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"avci\"]\n  },\n  \"image/avcs\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"avcs\"]\n  },\n  \"image/avif\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"avif\"]\n  },\n  \"image/bmp\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"bmp\",\"dib\"]\n  },\n  \"image/cgm\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cgm\"]\n  },\n  \"image/dicom-rle\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"drle\"]\n  },\n  \"image/dpx\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dpx\"]\n  },\n  \"image/emf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"emf\"]\n  },\n  \"image/fits\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fits\"]\n  },\n  \"image/g3fax\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"g3\"]\n  },\n  \"image/gif\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"gif\"]\n  },\n  \"image/heic\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"heic\"]\n  },\n  \"image/heic-sequence\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"heics\"]\n  },\n  \"image/heif\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"heif\"]\n  },\n  \"image/heif-sequence\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"heifs\"]\n  },\n  \"image/hej2k\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"hej2\"]\n  },\n  \"image/ief\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ief\"]\n  },\n  \"image/j2c\": {\n    \"source\": \"iana\"\n  },\n  \"image/jaii\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jaii\"]\n  },\n  \"image/jais\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jais\"]\n  },\n  \"image/jls\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jls\"]\n  },\n  \"image/jp2\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"jp2\",\"jpg2\"]\n  },\n  \"image/jpeg\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"jpg\",\"jpeg\",\"jpe\"]\n  },\n  \"image/jph\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jph\"]\n  },\n  \"image/jphc\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jhc\"]\n  },\n  \"image/jpm\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"jpm\",\"jpgm\"]\n  },\n  \"image/jpx\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"jpx\",\"jpf\"]\n  },\n  \"image/jxl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jxl\"]\n  },\n  \"image/jxr\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jxr\"]\n  },\n  \"image/jxra\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jxra\"]\n  },\n  \"image/jxrs\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jxrs\"]\n  },\n  \"image/jxs\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jxs\"]\n  },\n  \"image/jxsc\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jxsc\"]\n  },\n  \"image/jxsi\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jxsi\"]\n  },\n  \"image/jxss\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jxss\"]\n  },\n  \"image/ktx\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ktx\"]\n  },\n  \"image/ktx2\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ktx2\"]\n  },\n  \"image/naplps\": {\n    \"source\": \"iana\"\n  },\n  \"image/pjpeg\": {\n    \"compressible\": false,\n    \"extensions\": [\"jfif\"]\n  },\n  \"image/png\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"png\"]\n  },\n  \"image/prs.btif\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"btif\",\"btf\"]\n  },\n  \"image/prs.pti\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pti\"]\n  },\n  \"image/pwg-raster\": {\n    \"source\": \"iana\"\n  },\n  \"image/sgi\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sgi\"]\n  },\n  \"image/svg+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"svg\",\"svgz\"]\n  },\n  \"image/t38\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"t38\"]\n  },\n  \"image/tiff\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"tif\",\"tiff\"]\n  },\n  \"image/tiff-fx\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"tfx\"]\n  },\n  \"image/vnd.adobe.photoshop\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"psd\"]\n  },\n  \"image/vnd.airzip.accelerator.azv\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"azv\"]\n  },\n  \"image/vnd.clip\": {\n    \"source\": \"iana\"\n  },\n  \"image/vnd.cns.inf2\": {\n    \"source\": \"iana\"\n  },\n  \"image/vnd.dece.graphic\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"uvi\",\"uvvi\",\"uvg\",\"uvvg\"]\n  },\n  \"image/vnd.djvu\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"djvu\",\"djv\"]\n  },\n  \"image/vnd.dvb.subtitle\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sub\"]\n  },\n  \"image/vnd.dwg\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dwg\"]\n  },\n  \"image/vnd.dxf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dxf\"]\n  },\n  \"image/vnd.fastbidsheet\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fbs\"]\n  },\n  \"image/vnd.fpx\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fpx\"]\n  },\n  \"image/vnd.fst\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fst\"]\n  },\n  \"image/vnd.fujixerox.edmics-mmr\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mmr\"]\n  },\n  \"image/vnd.fujixerox.edmics-rlc\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"rlc\"]\n  },\n  \"image/vnd.globalgraphics.pgb\": {\n    \"source\": \"iana\"\n  },\n  \"image/vnd.microsoft.icon\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"ico\"]\n  },\n  \"image/vnd.mix\": {\n    \"source\": \"iana\"\n  },\n  \"image/vnd.mozilla.apng\": {\n    \"source\": \"iana\"\n  },\n  \"image/vnd.ms-dds\": {\n    \"compressible\": true,\n    \"extensions\": [\"dds\"]\n  },\n  \"image/vnd.ms-modi\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mdi\"]\n  },\n  \"image/vnd.ms-photo\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"wdp\"]\n  },\n  \"image/vnd.net-fpx\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"npx\"]\n  },\n  \"image/vnd.pco.b16\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"b16\"]\n  },\n  \"image/vnd.radiance\": {\n    \"source\": \"iana\"\n  },\n  \"image/vnd.sealed.png\": {\n    \"source\": \"iana\"\n  },\n  \"image/vnd.sealedmedia.softseal.gif\": {\n    \"source\": \"iana\"\n  },\n  \"image/vnd.sealedmedia.softseal.jpg\": {\n    \"source\": \"iana\"\n  },\n  \"image/vnd.svf\": {\n    \"source\": \"iana\"\n  },\n  \"image/vnd.tencent.tap\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"tap\"]\n  },\n  \"image/vnd.valve.source.texture\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"vtf\"]\n  },\n  \"image/vnd.wap.wbmp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wbmp\"]\n  },\n  \"image/vnd.xiff\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xif\"]\n  },\n  \"image/vnd.zbrush.pcx\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pcx\"]\n  },\n  \"image/webp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"webp\"]\n  },\n  \"image/wmf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wmf\"]\n  },\n  \"image/x-3ds\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"3ds\"]\n  },\n  \"image/x-adobe-dng\": {\n    \"extensions\": [\"dng\"]\n  },\n  \"image/x-cmu-raster\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"ras\"]\n  },\n  \"image/x-cmx\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"cmx\"]\n  },\n  \"image/x-emf\": {\n    \"source\": \"iana\"\n  },\n  \"image/x-freehand\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"fh\",\"fhc\",\"fh4\",\"fh5\",\"fh7\"]\n  },\n  \"image/x-icon\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"ico\"]\n  },\n  \"image/x-jng\": {\n    \"source\": \"nginx\",\n    \"extensions\": [\"jng\"]\n  },\n  \"image/x-mrsid-image\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sid\"]\n  },\n  \"image/x-ms-bmp\": {\n    \"source\": \"nginx\",\n    \"compressible\": true,\n    \"extensions\": [\"bmp\"]\n  },\n  \"image/x-pcx\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"pcx\"]\n  },\n  \"image/x-pict\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"pic\",\"pct\"]\n  },\n  \"image/x-portable-anymap\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"pnm\"]\n  },\n  \"image/x-portable-bitmap\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"pbm\"]\n  },\n  \"image/x-portable-graymap\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"pgm\"]\n  },\n  \"image/x-portable-pixmap\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"ppm\"]\n  },\n  \"image/x-rgb\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"rgb\"]\n  },\n  \"image/x-tga\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"tga\"]\n  },\n  \"image/x-wmf\": {\n    \"source\": \"iana\"\n  },\n  \"image/x-xbitmap\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"xbm\"]\n  },\n  \"image/x-xcf\": {\n    \"compressible\": false\n  },\n  \"image/x-xpixmap\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"xpm\"]\n  },\n  \"image/x-xwindowdump\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"xwd\"]\n  },\n  \"message/bhttp\": {\n    \"source\": \"iana\"\n  },\n  \"message/cpim\": {\n    \"source\": \"iana\"\n  },\n  \"message/delivery-status\": {\n    \"source\": \"iana\"\n  },\n  \"message/disposition-notification\": {\n    \"source\": \"iana\",\n    \"extensions\": [\n      \"disposition-notification\"\n    ]\n  },\n  \"message/external-body\": {\n    \"source\": \"iana\"\n  },\n  \"message/feedback-report\": {\n    \"source\": \"iana\"\n  },\n  \"message/global\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"u8msg\"]\n  },\n  \"message/global-delivery-status\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"u8dsn\"]\n  },\n  \"message/global-disposition-notification\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"u8mdn\"]\n  },\n  \"message/global-headers\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"u8hdr\"]\n  },\n  \"message/http\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"message/imdn+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"message/mls\": {\n    \"source\": \"iana\"\n  },\n  \"message/news\": {\n    \"source\": \"apache\"\n  },\n  \"message/ohttp-req\": {\n    \"source\": \"iana\"\n  },\n  \"message/ohttp-res\": {\n    \"source\": \"iana\"\n  },\n  \"message/partial\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"message/rfc822\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"eml\",\"mime\",\"mht\",\"mhtml\"]\n  },\n  \"message/s-http\": {\n    \"source\": \"apache\"\n  },\n  \"message/sip\": {\n    \"source\": \"iana\"\n  },\n  \"message/sipfrag\": {\n    \"source\": \"iana\"\n  },\n  \"message/tracking-status\": {\n    \"source\": \"iana\"\n  },\n  \"message/vnd.si.simp\": {\n    \"source\": \"apache\"\n  },\n  \"message/vnd.wfa.wsc\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wsc\"]\n  },\n  \"model/3mf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"3mf\"]\n  },\n  \"model/e57\": {\n    \"source\": \"iana\"\n  },\n  \"model/gltf+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"gltf\"]\n  },\n  \"model/gltf-binary\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"glb\"]\n  },\n  \"model/iges\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"igs\",\"iges\"]\n  },\n  \"model/jt\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jt\"]\n  },\n  \"model/mesh\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"msh\",\"mesh\",\"silo\"]\n  },\n  \"model/mtl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mtl\"]\n  },\n  \"model/obj\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"obj\"]\n  },\n  \"model/prc\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"prc\"]\n  },\n  \"model/step\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"step\",\"stp\",\"stpnc\",\"p21\",\"210\"]\n  },\n  \"model/step+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"stpx\"]\n  },\n  \"model/step+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"stpz\"]\n  },\n  \"model/step-xml+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"stpxz\"]\n  },\n  \"model/stl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"stl\"]\n  },\n  \"model/u3d\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"u3d\"]\n  },\n  \"model/vnd.bary\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"bary\"]\n  },\n  \"model/vnd.cld\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cld\"]\n  },\n  \"model/vnd.collada+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"dae\"]\n  },\n  \"model/vnd.dwf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dwf\"]\n  },\n  \"model/vnd.flatland.3dml\": {\n    \"source\": \"iana\"\n  },\n  \"model/vnd.gdl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gdl\"]\n  },\n  \"model/vnd.gs-gdl\": {\n    \"source\": \"apache\"\n  },\n  \"model/vnd.gs.gdl\": {\n    \"source\": \"iana\"\n  },\n  \"model/vnd.gtw\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gtw\"]\n  },\n  \"model/vnd.moml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"model/vnd.mts\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mts\"]\n  },\n  \"model/vnd.opengex\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ogex\"]\n  },\n  \"model/vnd.parasolid.transmit.binary\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"x_b\"]\n  },\n  \"model/vnd.parasolid.transmit.text\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"x_t\"]\n  },\n  \"model/vnd.pytha.pyox\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pyo\",\"pyox\"]\n  },\n  \"model/vnd.rosette.annotated-data-model\": {\n    \"source\": \"iana\"\n  },\n  \"model/vnd.sap.vds\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"vds\"]\n  },\n  \"model/vnd.usda\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"usda\"]\n  },\n  \"model/vnd.usdz+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"usdz\"]\n  },\n  \"model/vnd.valve.source.compiled-map\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"bsp\"]\n  },\n  \"model/vnd.vtu\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"vtu\"]\n  },\n  \"model/vrml\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"wrl\",\"vrml\"]\n  },\n  \"model/x3d+binary\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"x3db\",\"x3dbz\"]\n  },\n  \"model/x3d+fastinfoset\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"x3db\"]\n  },\n  \"model/x3d+vrml\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"x3dv\",\"x3dvz\"]\n  },\n  \"model/x3d+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"x3d\",\"x3dz\"]\n  },\n  \"model/x3d-vrml\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"x3dv\"]\n  },\n  \"multipart/alternative\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"multipart/appledouble\": {\n    \"source\": \"iana\"\n  },\n  \"multipart/byteranges\": {\n    \"source\": \"iana\"\n  },\n  \"multipart/digest\": {\n    \"source\": \"iana\"\n  },\n  \"multipart/encrypted\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"multipart/form-data\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"multipart/header-set\": {\n    \"source\": \"iana\"\n  },\n  \"multipart/mixed\": {\n    \"source\": \"iana\"\n  },\n  \"multipart/multilingual\": {\n    \"source\": \"iana\"\n  },\n  \"multipart/parallel\": {\n    \"source\": \"iana\"\n  },\n  \"multipart/related\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"multipart/report\": {\n    \"source\": \"iana\"\n  },\n  \"multipart/signed\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"multipart/vnd.bint.med-plus\": {\n    \"source\": \"iana\"\n  },\n  \"multipart/voice-message\": {\n    \"source\": \"iana\"\n  },\n  \"multipart/x-mixed-replace\": {\n    \"source\": \"iana\"\n  },\n  \"text/1d-interleaved-parityfec\": {\n    \"source\": \"iana\"\n  },\n  \"text/cache-manifest\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"appcache\",\"manifest\"]\n  },\n  \"text/calendar\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ics\",\"ifb\"]\n  },\n  \"text/calender\": {\n    \"compressible\": true\n  },\n  \"text/cmd\": {\n    \"compressible\": true\n  },\n  \"text/coffeescript\": {\n    \"extensions\": [\"coffee\",\"litcoffee\"]\n  },\n  \"text/cql\": {\n    \"source\": \"iana\"\n  },\n  \"text/cql-expression\": {\n    \"source\": \"iana\"\n  },\n  \"text/cql-identifier\": {\n    \"source\": \"iana\"\n  },\n  \"text/css\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true,\n    \"extensions\": [\"css\"]\n  },\n  \"text/csv\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"csv\"]\n  },\n  \"text/csv-schema\": {\n    \"source\": \"iana\"\n  },\n  \"text/directory\": {\n    \"source\": \"iana\"\n  },\n  \"text/dns\": {\n    \"source\": \"iana\"\n  },\n  \"text/ecmascript\": {\n    \"source\": \"apache\"\n  },\n  \"text/encaprtp\": {\n    \"source\": \"iana\"\n  },\n  \"text/enriched\": {\n    \"source\": \"iana\"\n  },\n  \"text/fhirpath\": {\n    \"source\": \"iana\"\n  },\n  \"text/flexfec\": {\n    \"source\": \"iana\"\n  },\n  \"text/fwdred\": {\n    \"source\": \"iana\"\n  },\n  \"text/gff3\": {\n    \"source\": \"iana\"\n  },\n  \"text/grammar-ref-list\": {\n    \"source\": \"iana\"\n  },\n  \"text/hl7v2\": {\n    \"source\": \"iana\"\n  },\n  \"text/html\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"html\",\"htm\",\"shtml\"]\n  },\n  \"text/jade\": {\n    \"extensions\": [\"jade\"]\n  },\n  \"text/javascript\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true,\n    \"extensions\": [\"js\",\"mjs\"]\n  },\n  \"text/jcr-cnd\": {\n    \"source\": \"iana\"\n  },\n  \"text/jsx\": {\n    \"compressible\": true,\n    \"extensions\": [\"jsx\"]\n  },\n  \"text/less\": {\n    \"compressible\": true,\n    \"extensions\": [\"less\"]\n  },\n  \"text/markdown\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"md\",\"markdown\"]\n  },\n  \"text/mathml\": {\n    \"source\": \"nginx\",\n    \"extensions\": [\"mml\"]\n  },\n  \"text/mdx\": {\n    \"compressible\": true,\n    \"extensions\": [\"mdx\"]\n  },\n  \"text/mizar\": {\n    \"source\": \"iana\"\n  },\n  \"text/n3\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true,\n    \"extensions\": [\"n3\"]\n  },\n  \"text/parameters\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\"\n  },\n  \"text/parityfec\": {\n    \"source\": \"iana\"\n  },\n  \"text/plain\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"txt\",\"text\",\"conf\",\"def\",\"list\",\"log\",\"in\",\"ini\"]\n  },\n  \"text/provenance-notation\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\"\n  },\n  \"text/prs.fallenstein.rst\": {\n    \"source\": \"iana\"\n  },\n  \"text/prs.lines.tag\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dsc\"]\n  },\n  \"text/prs.prop.logic\": {\n    \"source\": \"iana\"\n  },\n  \"text/prs.texi\": {\n    \"source\": \"iana\"\n  },\n  \"text/raptorfec\": {\n    \"source\": \"iana\"\n  },\n  \"text/red\": {\n    \"source\": \"iana\"\n  },\n  \"text/rfc822-headers\": {\n    \"source\": \"iana\"\n  },\n  \"text/richtext\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"rtx\"]\n  },\n  \"text/rtf\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"rtf\"]\n  },\n  \"text/rtp-enc-aescm128\": {\n    \"source\": \"iana\"\n  },\n  \"text/rtploopback\": {\n    \"source\": \"iana\"\n  },\n  \"text/rtx\": {\n    \"source\": \"iana\"\n  },\n  \"text/sgml\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sgml\",\"sgm\"]\n  },\n  \"text/shaclc\": {\n    \"source\": \"iana\"\n  },\n  \"text/shex\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"shex\"]\n  },\n  \"text/slim\": {\n    \"extensions\": [\"slim\",\"slm\"]\n  },\n  \"text/spdx\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"spdx\"]\n  },\n  \"text/strings\": {\n    \"source\": \"iana\"\n  },\n  \"text/stylus\": {\n    \"extensions\": [\"stylus\",\"styl\"]\n  },\n  \"text/t140\": {\n    \"source\": \"iana\"\n  },\n  \"text/tab-separated-values\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"tsv\"]\n  },\n  \"text/troff\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"t\",\"tr\",\"roff\",\"man\",\"me\",\"ms\"]\n  },\n  \"text/turtle\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"extensions\": [\"ttl\"]\n  },\n  \"text/ulpfec\": {\n    \"source\": \"iana\"\n  },\n  \"text/uri-list\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"uri\",\"uris\",\"urls\"]\n  },\n  \"text/vcard\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"vcard\"]\n  },\n  \"text/vnd.a\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.abc\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.ascii-art\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.curl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"curl\"]\n  },\n  \"text/vnd.curl.dcurl\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"dcurl\"]\n  },\n  \"text/vnd.curl.mcurl\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"mcurl\"]\n  },\n  \"text/vnd.curl.scurl\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"scurl\"]\n  },\n  \"text/vnd.debian.copyright\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\"\n  },\n  \"text/vnd.dmclientscript\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.dvb.subtitle\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sub\"]\n  },\n  \"text/vnd.esmertec.theme-descriptor\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\"\n  },\n  \"text/vnd.exchangeable\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.familysearch.gedcom\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ged\"]\n  },\n  \"text/vnd.ficlab.flt\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.fly\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fly\"]\n  },\n  \"text/vnd.fmi.flexstor\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"flx\"]\n  },\n  \"text/vnd.gml\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.graphviz\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gv\"]\n  },\n  \"text/vnd.hans\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.hgl\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.in3d.3dml\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"3dml\"]\n  },\n  \"text/vnd.in3d.spot\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"spot\"]\n  },\n  \"text/vnd.iptc.newsml\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.iptc.nitf\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.latex-z\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.motorola.reflex\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.ms-mediapackage\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.net2phone.commcenter.command\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.radisys.msml-basic-layout\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.senx.warpscript\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.si.uricatalogue\": {\n    \"source\": \"apache\"\n  },\n  \"text/vnd.sosi\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.sun.j2me.app-descriptor\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"extensions\": [\"jad\"]\n  },\n  \"text/vnd.trolltech.linguist\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\"\n  },\n  \"text/vnd.vcf\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.wap.si\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.wap.sl\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.wap.wml\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wml\"]\n  },\n  \"text/vnd.wap.wmlscript\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wmls\"]\n  },\n  \"text/vnd.zoo.kcl\": {\n    \"source\": \"iana\"\n  },\n  \"text/vtt\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true,\n    \"extensions\": [\"vtt\"]\n  },\n  \"text/wgsl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wgsl\"]\n  },\n  \"text/x-asm\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"s\",\"asm\"]\n  },\n  \"text/x-c\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"c\",\"cc\",\"cxx\",\"cpp\",\"h\",\"hh\",\"dic\"]\n  },\n  \"text/x-component\": {\n    \"source\": \"nginx\",\n    \"extensions\": [\"htc\"]\n  },\n  \"text/x-fortran\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"f\",\"for\",\"f77\",\"f90\"]\n  },\n  \"text/x-gwt-rpc\": {\n    \"compressible\": true\n  },\n  \"text/x-handlebars-template\": {\n    \"extensions\": [\"hbs\"]\n  },\n  \"text/x-java-source\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"java\"]\n  },\n  \"text/x-jquery-tmpl\": {\n    \"compressible\": true\n  },\n  \"text/x-lua\": {\n    \"extensions\": [\"lua\"]\n  },\n  \"text/x-markdown\": {\n    \"compressible\": true,\n    \"extensions\": [\"mkd\"]\n  },\n  \"text/x-nfo\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"nfo\"]\n  },\n  \"text/x-opml\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"opml\"]\n  },\n  \"text/x-org\": {\n    \"compressible\": true,\n    \"extensions\": [\"org\"]\n  },\n  \"text/x-pascal\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"p\",\"pas\"]\n  },\n  \"text/x-processing\": {\n    \"compressible\": true,\n    \"extensions\": [\"pde\"]\n  },\n  \"text/x-sass\": {\n    \"extensions\": [\"sass\"]\n  },\n  \"text/x-scss\": {\n    \"extensions\": [\"scss\"]\n  },\n  \"text/x-setext\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"etx\"]\n  },\n  \"text/x-sfv\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sfv\"]\n  },\n  \"text/x-suse-ymp\": {\n    \"compressible\": true,\n    \"extensions\": [\"ymp\"]\n  },\n  \"text/x-uuencode\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"uu\"]\n  },\n  \"text/x-vcalendar\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"vcs\"]\n  },\n  \"text/x-vcard\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"vcf\"]\n  },\n  \"text/xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xml\"]\n  },\n  \"text/xml-external-parsed-entity\": {\n    \"source\": \"iana\"\n  },\n  \"text/yaml\": {\n    \"compressible\": true,\n    \"extensions\": [\"yaml\",\"yml\"]\n  },\n  \"video/1d-interleaved-parityfec\": {\n    \"source\": \"iana\"\n  },\n  \"video/3gpp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"3gp\",\"3gpp\"]\n  },\n  \"video/3gpp-tt\": {\n    \"source\": \"iana\"\n  },\n  \"video/3gpp2\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"3g2\"]\n  },\n  \"video/av1\": {\n    \"source\": \"iana\"\n  },\n  \"video/bmpeg\": {\n    \"source\": \"iana\"\n  },\n  \"video/bt656\": {\n    \"source\": \"iana\"\n  },\n  \"video/celb\": {\n    \"source\": \"iana\"\n  },\n  \"video/dv\": {\n    \"source\": \"iana\"\n  },\n  \"video/encaprtp\": {\n    \"source\": \"iana\"\n  },\n  \"video/evc\": {\n    \"source\": \"iana\"\n  },\n  \"video/ffv1\": {\n    \"source\": \"iana\"\n  },\n  \"video/flexfec\": {\n    \"source\": \"iana\"\n  },\n  \"video/h261\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"h261\"]\n  },\n  \"video/h263\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"h263\"]\n  },\n  \"video/h263-1998\": {\n    \"source\": \"iana\"\n  },\n  \"video/h263-2000\": {\n    \"source\": \"iana\"\n  },\n  \"video/h264\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"h264\"]\n  },\n  \"video/h264-rcdo\": {\n    \"source\": \"iana\"\n  },\n  \"video/h264-svc\": {\n    \"source\": \"iana\"\n  },\n  \"video/h265\": {\n    \"source\": \"iana\"\n  },\n  \"video/h266\": {\n    \"source\": \"iana\"\n  },\n  \"video/iso.segment\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"m4s\"]\n  },\n  \"video/jpeg\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jpgv\"]\n  },\n  \"video/jpeg2000\": {\n    \"source\": \"iana\"\n  },\n  \"video/jpm\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"jpm\",\"jpgm\"]\n  },\n  \"video/jxsv\": {\n    \"source\": \"iana\"\n  },\n  \"video/lottie+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"video/matroska\": {\n    \"source\": \"iana\"\n  },\n  \"video/matroska-3d\": {\n    \"source\": \"iana\"\n  },\n  \"video/mj2\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mj2\",\"mjp2\"]\n  },\n  \"video/mp1s\": {\n    \"source\": \"iana\"\n  },\n  \"video/mp2p\": {\n    \"source\": \"iana\"\n  },\n  \"video/mp2t\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ts\",\"m2t\",\"m2ts\",\"mts\"]\n  },\n  \"video/mp4\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"mp4\",\"mp4v\",\"mpg4\"]\n  },\n  \"video/mp4v-es\": {\n    \"source\": \"iana\"\n  },\n  \"video/mpeg\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"mpeg\",\"mpg\",\"mpe\",\"m1v\",\"m2v\"]\n  },\n  \"video/mpeg4-generic\": {\n    \"source\": \"iana\"\n  },\n  \"video/mpv\": {\n    \"source\": \"iana\"\n  },\n  \"video/nv\": {\n    \"source\": \"iana\"\n  },\n  \"video/ogg\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"ogv\"]\n  },\n  \"video/parityfec\": {\n    \"source\": \"iana\"\n  },\n  \"video/pointer\": {\n    \"source\": \"iana\"\n  },\n  \"video/quicktime\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"qt\",\"mov\"]\n  },\n  \"video/raptorfec\": {\n    \"source\": \"iana\"\n  },\n  \"video/raw\": {\n    \"source\": \"iana\"\n  },\n  \"video/rtp-enc-aescm128\": {\n    \"source\": \"iana\"\n  },\n  \"video/rtploopback\": {\n    \"source\": \"iana\"\n  },\n  \"video/rtx\": {\n    \"source\": \"iana\"\n  },\n  \"video/scip\": {\n    \"source\": \"iana\"\n  },\n  \"video/smpte291\": {\n    \"source\": \"iana\"\n  },\n  \"video/smpte292m\": {\n    \"source\": \"iana\"\n  },\n  \"video/ulpfec\": {\n    \"source\": \"iana\"\n  },\n  \"video/vc1\": {\n    \"source\": \"iana\"\n  },\n  \"video/vc2\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.cctv\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.dece.hd\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"uvh\",\"uvvh\"]\n  },\n  \"video/vnd.dece.mobile\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"uvm\",\"uvvm\"]\n  },\n  \"video/vnd.dece.mp4\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.dece.pd\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"uvp\",\"uvvp\"]\n  },\n  \"video/vnd.dece.sd\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"uvs\",\"uvvs\"]\n  },\n  \"video/vnd.dece.video\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"uvv\",\"uvvv\"]\n  },\n  \"video/vnd.directv.mpeg\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.directv.mpeg-tts\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.dlna.mpeg-tts\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.dvb.file\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dvb\"]\n  },\n  \"video/vnd.fvt\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fvt\"]\n  },\n  \"video/vnd.hns.video\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.iptvforum.1dparityfec-1010\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.iptvforum.1dparityfec-2005\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.iptvforum.2dparityfec-1010\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.iptvforum.2dparityfec-2005\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.iptvforum.ttsavc\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.iptvforum.ttsmpeg2\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.motorola.video\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.motorola.videop\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.mpegurl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mxu\",\"m4u\"]\n  },\n  \"video/vnd.ms-playready.media.pyv\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pyv\"]\n  },\n  \"video/vnd.nokia.interleaved-multimedia\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.nokia.mp4vr\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.nokia.videovoip\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.objectvideo\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.planar\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.radgamettools.bink\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.radgamettools.smacker\": {\n    \"source\": \"apache\"\n  },\n  \"video/vnd.sealed.mpeg1\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.sealed.mpeg4\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.sealed.swf\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.sealedmedia.softseal.mov\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.uvvu.mp4\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"uvu\",\"uvvu\"]\n  },\n  \"video/vnd.vivo\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"viv\"]\n  },\n  \"video/vnd.youtube.yt\": {\n    \"source\": \"iana\"\n  },\n  \"video/vp8\": {\n    \"source\": \"iana\"\n  },\n  \"video/vp9\": {\n    \"source\": \"iana\"\n  },\n  \"video/webm\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"webm\"]\n  },\n  \"video/x-f4v\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"f4v\"]\n  },\n  \"video/x-fli\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"fli\"]\n  },\n  \"video/x-flv\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"flv\"]\n  },\n  \"video/x-m4v\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"m4v\"]\n  },\n  \"video/x-matroska\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"mkv\",\"mk3d\",\"mks\"]\n  },\n  \"video/x-mng\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"mng\"]\n  },\n  \"video/x-ms-asf\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"asf\",\"asx\"]\n  },\n  \"video/x-ms-vob\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"vob\"]\n  },\n  \"video/x-ms-wm\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"wm\"]\n  },\n  \"video/x-ms-wmv\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"wmv\"]\n  },\n  \"video/x-ms-wmx\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"wmx\"]\n  },\n  \"video/x-ms-wvx\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"wvx\"]\n  },\n  \"video/x-msvideo\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"avi\"]\n  },\n  \"video/x-sgi-movie\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"movie\"]\n  },\n  \"video/x-smv\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"smv\"]\n  },\n  \"x-conference/x-cooltalk\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"ice\"]\n  },\n  \"x-shader/x-fragment\": {\n    \"compressible\": true\n  },\n  \"x-shader/x-vertex\": {\n    \"compressible\": true\n  }\n}\n", "/*!\n * mime-db\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2015-2022 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n/**\n * Module exports.\n */\n\nmodule.exports = require('./db.json')\n", "// 'mime-score' back-ported to CommonJS\n\n// Score RFC facets (see https://tools.ietf.org/html/rfc6838#section-3)\nvar FACET_SCORES = {\n  'prs.': 100,\n  'x-': 200,\n  'x.': 300,\n  'vnd.': 400,\n  default: 900\n}\n\n// Score mime source (Logic originally from `jshttp/mime-types` module)\nvar SOURCE_SCORES = {\n  nginx: 10,\n  apache: 20,\n  iana: 40,\n  default: 30 // definitions added by `jshttp/mime-db` project?\n}\n\nvar TYPE_SCORES = {\n  // prefer application/xml over text/xml\n  // prefer application/rtf over text/rtf\n  application: 1,\n\n  // prefer font/woff over application/font-woff\n  font: 2,\n\n  // prefer video/mp4 over audio/mp4 over application/mp4\n  // See https://www.rfc-editor.org/rfc/rfc4337.html#section-2\n  audio: 2,\n  video: 3,\n\n  default: 0\n}\n\n/**\n * Get each component of the score for a mime type.  The sum of these is the\n * total score.  The higher the score, the more \"official\" the type.\n */\nmodule.exports = function mimeScore (mimeType, source = 'default') {\n  if (mimeType === 'application/octet-stream') {\n    return 0\n  }\n\n  const [type, subtype] = mimeType.split('/')\n\n  const facet = subtype.replace(/(\\.|x-).*/, '$1')\n\n  const facetScore = FACET_SCORES[facet] || FACET_SCORES.default\n  const sourceScore = SOURCE_SCORES[source] || SOURCE_SCORES.default\n  const typeScore = TYPE_SCORES[type] || TYPE_SCORES.default\n\n  // All else being equal prefer shorter types\n  const lengthScore = 1 - mimeType.length / 100\n\n  return facetScore + sourceScore + typeScore + lengthScore\n}\n", "/*!\n * mime-types\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar db = require('mime-db')\nvar extname = require('path').extname\nvar mimeScore = require('./mimeScore')\n\n/**\n * Module variables.\n * @private\n */\n\nvar EXTRACT_TYPE_REGEXP = /^\\s*([^;\\s]*)(?:;|\\s|$)/\nvar TEXT_TYPE_REGEXP = /^text\\//i\n\n/**\n * Module exports.\n * @public\n */\n\nexports.charset = charset\nexports.charsets = { lookup: charset }\nexports.contentType = contentType\nexports.extension = extension\nexports.extensions = Object.create(null)\nexports.lookup = lookup\nexports.types = Object.create(null)\nexports._extensionConflicts = []\n\n// Populate the extensions/types maps\npopulateMaps(exports.extensions, exports.types)\n\n/**\n * Get the default charset for a MIME type.\n *\n * @param {string} type\n * @return {false|string}\n */\n\nfunction charset (type) {\n  if (!type || typeof type !== 'string') {\n    return false\n  }\n\n  // TODO: use media-typer\n  var match = EXTRACT_TYPE_REGEXP.exec(type)\n  var mime = match && db[match[1].toLowerCase()]\n\n  if (mime && mime.charset) {\n    return mime.charset\n  }\n\n  // default text/* to utf-8\n  if (match && TEXT_TYPE_REGEXP.test(match[1])) {\n    return 'UTF-8'\n  }\n\n  return false\n}\n\n/**\n * Create a full Content-Type header given a MIME type or extension.\n *\n * @param {string} str\n * @return {false|string}\n */\n\nfunction contentType (str) {\n  // TODO: should this even be in this module?\n  if (!str || typeof str !== 'string') {\n    return false\n  }\n\n  var mime = str.indexOf('/') === -1 ? exports.lookup(str) : str\n\n  if (!mime) {\n    return false\n  }\n\n  // TODO: use content-type or other module\n  if (mime.indexOf('charset') === -1) {\n    var charset = exports.charset(mime)\n    if (charset) mime += '; charset=' + charset.toLowerCase()\n  }\n\n  return mime\n}\n\n/**\n * Get the default extension for a MIME type.\n *\n * @param {string} type\n * @return {false|string}\n */\n\nfunction extension (type) {\n  if (!type || typeof type !== 'string') {\n    return false\n  }\n\n  // TODO: use media-typer\n  var match = EXTRACT_TYPE_REGEXP.exec(type)\n\n  // get extensions\n  var exts = match && exports.extensions[match[1].toLowerCase()]\n\n  if (!exts || !exts.length) {\n    return false\n  }\n\n  return exts[0]\n}\n\n/**\n * Lookup the MIME type for a file path/extension.\n *\n * @param {string} path\n * @return {false|string}\n */\n\nfunction lookup (path) {\n  if (!path || typeof path !== 'string') {\n    return false\n  }\n\n  // get the extension (\"ext\" or \".ext\" or full path)\n  var extension = extname('x.' + path)\n    .toLowerCase()\n    .slice(1)\n\n  if (!extension) {\n    return false\n  }\n\n  return exports.types[extension] || false\n}\n\n/**\n * Populate the extensions and types maps.\n * @private\n */\n\nfunction populateMaps (extensions, types) {\n  Object.keys(db).forEach(function forEachMimeType (type) {\n    var mime = db[type]\n    var exts = mime.extensions\n\n    if (!exts || !exts.length) {\n      return\n    }\n\n    // mime -> extensions\n    extensions[type] = exts\n\n    // extension -> mime\n    for (var i = 0; i < exts.length; i++) {\n      var extension = exts[i]\n      types[extension] = _preferredType(extension, types[extension], type)\n\n      // DELETE (eventually): Capture extension->type maps that change as a\n      // result of switching to mime-score.  This is just to help make reviewing\n      // PR #119 easier, and can be removed once that PR is approved.\n      const legacyType = _preferredTypeLegacy(\n        extension,\n        types[extension],\n        type\n      )\n      if (legacyType !== types[extension]) {\n        exports._extensionConflicts.push([extension, legacyType, types[extension]])\n      }\n    }\n  })\n}\n\n// Resolve type conflict using mime-score\nfunction _preferredType (ext, type0, type1) {\n  var score0 = type0 ? mimeScore(type0, db[type0].source) : 0\n  var score1 = type1 ? mimeScore(type1, db[type1].source) : 0\n\n  return score0 > score1 ? type0 : type1\n}\n\n// Resolve type conflict using pre-mime-score logic\nfunction _preferredTypeLegacy (ext, type0, type1) {\n  var SOURCE_RANK = ['nginx', 'apache', undefined, 'iana']\n\n  var score0 = type0 ? SOURCE_RANK.indexOf(db[type0].source) : 0\n  var score1 = type1 ? SOURCE_RANK.indexOf(db[type1].source) : 0\n\n  if (\n    exports.types[extension] !== 'application/octet-stream' &&\n    (score0 > score1 ||\n      (score0 === score1 &&\n        exports.types[extension]?.slice(0, 12) === 'application/'))\n  ) {\n    return type0\n  }\n\n  return score0 > score1 ? type0 : type1\n}\n", "'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n  , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n  Events.prototype = Object.create(null);\n\n  //\n  // This hack is needed because the `__proto__` property is still inherited in\n  // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n  //\n  if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n  this.fn = fn;\n  this.context = context;\n  this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n  if (typeof fn !== 'function') {\n    throw new TypeError('The listener must be a function');\n  }\n\n  var listener = new EE(fn, context || emitter, once)\n    , evt = prefix ? prefix + event : event;\n\n  if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n  else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n  else emitter._events[evt] = [emitter._events[evt], listener];\n\n  return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n  if (--emitter._eventsCount === 0) emitter._events = new Events();\n  else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n  this._events = new Events();\n  this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n  var names = []\n    , events\n    , name;\n\n  if (this._eventsCount === 0) return names;\n\n  for (name in (events = this._events)) {\n    if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n  }\n\n  if (Object.getOwnPropertySymbols) {\n    return names.concat(Object.getOwnPropertySymbols(events));\n  }\n\n  return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n  var evt = prefix ? prefix + event : event\n    , handlers = this._events[evt];\n\n  if (!handlers) return [];\n  if (handlers.fn) return [handlers.fn];\n\n  for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n    ee[i] = handlers[i].fn;\n  }\n\n  return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n  var evt = prefix ? prefix + event : event\n    , listeners = this._events[evt];\n\n  if (!listeners) return 0;\n  if (listeners.fn) return 1;\n  return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n  var evt = prefix ? prefix + event : event;\n\n  if (!this._events[evt]) return false;\n\n  var listeners = this._events[evt]\n    , len = arguments.length\n    , args\n    , i;\n\n  if (listeners.fn) {\n    if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n    switch (len) {\n      case 1: return listeners.fn.call(listeners.context), true;\n      case 2: return listeners.fn.call(listeners.context, a1), true;\n      case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n      case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n      case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n      case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n    }\n\n    for (i = 1, args = new Array(len -1); i < len; i++) {\n      args[i - 1] = arguments[i];\n    }\n\n    listeners.fn.apply(listeners.context, args);\n  } else {\n    var length = listeners.length\n      , j;\n\n    for (i = 0; i < length; i++) {\n      if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n      switch (len) {\n        case 1: listeners[i].fn.call(listeners[i].context); break;\n        case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n        case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n        case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n        default:\n          if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n            args[j - 1] = arguments[j];\n          }\n\n          listeners[i].fn.apply(listeners[i].context, args);\n      }\n    }\n  }\n\n  return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n  return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n  return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n  var evt = prefix ? prefix + event : event;\n\n  if (!this._events[evt]) return this;\n  if (!fn) {\n    clearEvent(this, evt);\n    return this;\n  }\n\n  var listeners = this._events[evt];\n\n  if (listeners.fn) {\n    if (\n      listeners.fn === fn &&\n      (!once || listeners.once) &&\n      (!context || listeners.context === context)\n    ) {\n      clearEvent(this, evt);\n    }\n  } else {\n    for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n      if (\n        listeners[i].fn !== fn ||\n        (once && !listeners[i].once) ||\n        (context && listeners[i].context !== context)\n      ) {\n        events.push(listeners[i]);\n      }\n    }\n\n    //\n    // Reset the array, or remove it completely if we have no more listeners.\n    //\n    if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n    else clearEvent(this, evt);\n  }\n\n  return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n  var evt;\n\n  if (event) {\n    evt = prefix ? prefix + event : event;\n    if (this._events[evt]) clearEvent(this, evt);\n  } else {\n    this._events = new Events();\n    this._eventsCount = 0;\n  }\n\n  return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n  module.exports = EventEmitter;\n}\n", "'use strict'\nmodule.exports = rfdc\n\nfunction copyBuffer (cur) {\n  if (cur instanceof Buffer) {\n    return Buffer.from(cur)\n  }\n\n  return new cur.constructor(cur.buffer.slice(), cur.byteOffset, cur.length)\n}\n\nfunction rfdc (opts) {\n  opts = opts || {}\n  if (opts.circles) return rfdcCircles(opts)\n\n  const constructorHandlers = new Map()\n  constructorHandlers.set(Date, (o) => new Date(o))\n  constructorHandlers.set(Map, (o, fn) => new Map(cloneArray(Array.from(o), fn)))\n  constructorHandlers.set(Set, (o, fn) => new Set(cloneArray(Array.from(o), fn)))\n  if (opts.constructorHandlers) {\n    for (const handler of opts.constructorHandlers) {\n      constructorHandlers.set(handler[0], handler[1])\n    }\n  }\n\n  let handler = null\n\n  return opts.proto ? cloneProto : clone\n\n  function cloneArray (a, fn) {\n    const keys = Object.keys(a)\n    const a2 = new Array(keys.length)\n    for (let i = 0; i < keys.length; i++) {\n      const k = keys[i]\n      const cur = a[k]\n      if (typeof cur !== 'object' || cur === null) {\n        a2[k] = cur\n      } else if (cur.constructor !== Object && (handler = constructorHandlers.get(cur.constructor))) {\n        a2[k] = handler(cur, fn)\n      } else if (ArrayBuffer.isView(cur)) {\n        a2[k] = copyBuffer(cur)\n      } else {\n        a2[k] = fn(cur)\n      }\n    }\n    return a2\n  }\n\n  function clone (o) {\n    if (typeof o !== 'object' || o === null) return o\n    if (Array.isArray(o)) return cloneArray(o, clone)\n    if (o.constructor !== Object && (handler = constructorHandlers.get(o.constructor))) {\n      return handler(o, clone)\n    }\n    const o2 = {}\n    for (const k in o) {\n      if (Object.hasOwnProperty.call(o, k) === false) continue\n      const cur = o[k]\n      if (typeof cur !== 'object' || cur === null) {\n        o2[k] = cur\n      } else if (cur.constructor !== Object && (handler = constructorHandlers.get(cur.constructor))) {\n        o2[k] = handler(cur, clone)\n      } else if (ArrayBuffer.isView(cur)) {\n        o2[k] = copyBuffer(cur)\n      } else {\n        o2[k] = clone(cur)\n      }\n    }\n    return o2\n  }\n\n  function cloneProto (o) {\n    if (typeof o !== 'object' || o === null) return o\n    if (Array.isArray(o)) return cloneArray(o, cloneProto)\n    if (o.constructor !== Object && (handler = constructorHandlers.get(o.constructor))) {\n      return handler(o, cloneProto)\n    }\n    const o2 = {}\n    for (const k in o) {\n      const cur = o[k]\n      if (typeof cur !== 'object' || cur === null) {\n        o2[k] = cur\n      } else if (cur.constructor !== Object && (handler = constructorHandlers.get(cur.constructor))) {\n        o2[k] = handler(cur, cloneProto)\n      } else if (ArrayBuffer.isView(cur)) {\n        o2[k] = copyBuffer(cur)\n      } else {\n        o2[k] = cloneProto(cur)\n      }\n    }\n    return o2\n  }\n}\n\nfunction rfdcCircles (opts) {\n  const refs = []\n  const refsNew = []\n\n  const constructorHandlers = new Map()\n  constructorHandlers.set(Date, (o) => new Date(o))\n  constructorHandlers.set(Map, (o, fn) => new Map(cloneArray(Array.from(o), fn)))\n  constructorHandlers.set(Set, (o, fn) => new Set(cloneArray(Array.from(o), fn)))\n  if (opts.constructorHandlers) {\n    for (const handler of opts.constructorHandlers) {\n      constructorHandlers.set(handler[0], handler[1])\n    }\n  }\n\n  let handler = null\n  return opts.proto ? cloneProto : clone\n\n  function cloneArray (a, fn) {\n    const keys = Object.keys(a)\n    const a2 = new Array(keys.length)\n    for (let i = 0; i < keys.length; i++) {\n      const k = keys[i]\n      const cur = a[k]\n      if (typeof cur !== 'object' || cur === null) {\n        a2[k] = cur\n      } else if (cur.constructor !== Object && (handler = constructorHandlers.get(cur.constructor))) {\n        a2[k] = handler(cur, fn)\n      } else if (ArrayBuffer.isView(cur)) {\n        a2[k] = copyBuffer(cur)\n      } else {\n        const index = refs.indexOf(cur)\n        if (index !== -1) {\n          a2[k] = refsNew[index]\n        } else {\n          a2[k] = fn(cur)\n        }\n      }\n    }\n    return a2\n  }\n\n  function clone (o) {\n    if (typeof o !== 'object' || o === null) return o\n    if (Array.isArray(o)) return cloneArray(o, clone)\n    if (o.constructor !== Object && (handler = constructorHandlers.get(o.constructor))) {\n      return handler(o, clone)\n    }\n    const o2 = {}\n    refs.push(o)\n    refsNew.push(o2)\n    for (const k in o) {\n      if (Object.hasOwnProperty.call(o, k) === false) continue\n      const cur = o[k]\n      if (typeof cur !== 'object' || cur === null) {\n        o2[k] = cur\n      } else if (cur.constructor !== Object && (handler = constructorHandlers.get(cur.constructor))) {\n        o2[k] = handler(cur, clone)\n      } else if (ArrayBuffer.isView(cur)) {\n        o2[k] = copyBuffer(cur)\n      } else {\n        const i = refs.indexOf(cur)\n        if (i !== -1) {\n          o2[k] = refsNew[i]\n        } else {\n          o2[k] = clone(cur)\n        }\n      }\n    }\n    refs.pop()\n    refsNew.pop()\n    return o2\n  }\n\n  function cloneProto (o) {\n    if (typeof o !== 'object' || o === null) return o\n    if (Array.isArray(o)) return cloneArray(o, cloneProto)\n    if (o.constructor !== Object && (handler = constructorHandlers.get(o.constructor))) {\n      return handler(o, cloneProto)\n    }\n    const o2 = {}\n    refs.push(o)\n    refsNew.push(o2)\n    for (const k in o) {\n      const cur = o[k]\n      if (typeof cur !== 'object' || cur === null) {\n        o2[k] = cur\n      } else if (cur.constructor !== Object && (handler = constructorHandlers.get(cur.constructor))) {\n        o2[k] = handler(cur, cloneProto)\n      } else if (ArrayBuffer.isView(cur)) {\n        o2[k] = copyBuffer(cur)\n      } else {\n        const i = refs.indexOf(cur)\n        if (i !== -1) {\n          o2[k] = refsNew[i]\n        } else {\n          o2[k] = cloneProto(cur)\n        }\n      }\n    }\n    refs.pop()\n    refsNew.pop()\n    return o2\n  }\n}\n", "/* globals WorkerGlobalScope, DedicatedWorkerGlobalScope, SharedWorkerGlobalScope, ServiceWorkerGlobalScope */\n\nexport const isBrowser = globalThis.window?.document !== undefined;\n\nexport const isNode = globalThis.process?.versions?.node !== undefined;\n\nexport const isBun = globalThis.process?.versions?.bun !== undefined;\n\nexport const isDeno = globalThis.Deno?.version?.deno !== undefined;\n\nexport const isElectron = globalThis.process?.versions?.electron !== undefined;\n\nexport const isJsDom = globalThis.navigator?.userAgent?.includes('jsdom') === true;\n\nexport const isWebWorker = typeof WorkerGlobalScope !== 'undefined' && globalThis instanceof WorkerGlobalScope;\n\nexport const isDedicatedWorker = typeof DedicatedWorkerGlobalScope !== 'undefined' && globalThis instanceof DedicatedWorkerGlobalScope;\n\nexport const isSharedWorker = typeof SharedWorkerGlobalScope !== 'undefined' && globalThis instanceof SharedWorkerGlobalScope;\n\nexport const isServiceWorker = typeof ServiceWorkerGlobalScope !== 'undefined' && globalThis instanceof ServiceWorkerGlobalScope;\n\n// Note: I'm intentionally not DRYing up the other variables to keep them \"lazy\".\nconst platform = globalThis.navigator?.userAgentData?.platform;\n\nexport const isMacOs = platform === 'macOS'\n\t|| globalThis.navigator?.platform === 'MacIntel' // Even on Apple silicon Macs.\n\t|| globalThis.navigator?.userAgent?.includes(' Mac ') === true\n\t|| globalThis.process?.platform === 'darwin';\n\nexport const isWindows = platform === 'Windows'\n\t|| globalThis.navigator?.platform === 'Win32'\n\t|| globalThis.process?.platform === 'win32';\n\nexport const isLinux = platform === 'Linux'\n\t|| globalThis.navigator?.platform?.startsWith('Linux') === true\n\t|| globalThis.navigator?.userAgent?.includes(' Linux ') === true\n\t|| globalThis.process?.platform === 'linux';\n\nexport const isIos = platform === 'iOS'\n\t|| (globalThis.navigator?.platform === 'MacIntel' && globalThis.navigator?.maxTouchPoints > 1)\n\t|| /iPad|iPhone|iPod/.test(globalThis.navigator?.platform);\n\nexport const isAndroid = platform === 'Android'\n\t|| globalThis.navigator?.platform === 'Android'\n\t|| globalThis.navigator?.userAgent?.includes(' Android ') === true\n\t|| globalThis.process?.platform === 'android';\n", "import process from 'node:process';\nimport {isBrowser} from 'environment';\n\nconst ESC = '\\u001B[';\nconst OSC = '\\u001B]';\nconst BEL = '\\u0007';\nconst SEP = ';';\n\nconst isTerminalApp = !isBrowser && process.env.TERM_PROGRAM === 'Apple_Terminal';\nconst isWindows = !isBrowser && process.platform === 'win32';\n\nconst cwdFunction = isBrowser ? () => {\n\tthrow new Error('`process.cwd()` only works in Node.js, not the browser.');\n} : process.cwd;\n\nexport const cursorTo = (x, y) => {\n\tif (typeof x !== 'number') {\n\t\tthrow new TypeError('The `x` argument is required');\n\t}\n\n\tif (typeof y !== 'number') {\n\t\treturn ESC + (x + 1) + 'G';\n\t}\n\n\treturn ESC + (y + 1) + SEP + (x + 1) + 'H';\n};\n\nexport const cursorMove = (x, y) => {\n\tif (typeof x !== 'number') {\n\t\tthrow new TypeError('The `x` argument is required');\n\t}\n\n\tlet returnValue = '';\n\n\tif (x < 0) {\n\t\treturnValue += ESC + (-x) + 'D';\n\t} else if (x > 0) {\n\t\treturnValue += ESC + x + 'C';\n\t}\n\n\tif (y < 0) {\n\t\treturnValue += ESC + (-y) + 'A';\n\t} else if (y > 0) {\n\t\treturnValue += ESC + y + 'B';\n\t}\n\n\treturn returnValue;\n};\n\nexport const cursorUp = (count = 1) => ESC + count + 'A';\nexport const cursorDown = (count = 1) => ESC + count + 'B';\nexport const cursorForward = (count = 1) => ESC + count + 'C';\nexport const cursorBackward = (count = 1) => ESC + count + 'D';\n\nexport const cursorLeft = ESC + 'G';\nexport const cursorSavePosition = isTerminalApp ? '\\u001B7' : ESC + 's';\nexport const cursorRestorePosition = isTerminalApp ? '\\u001B8' : ESC + 'u';\nexport const cursorGetPosition = ESC + '6n';\nexport const cursorNextLine = ESC + 'E';\nexport const cursorPrevLine = ESC + 'F';\nexport const cursorHide = ESC + '?25l';\nexport const cursorShow = ESC + '?25h';\n\nexport const eraseLines = count => {\n\tlet clear = '';\n\n\tfor (let i = 0; i < count; i++) {\n\t\tclear += eraseLine + (i < count - 1 ? cursorUp() : '');\n\t}\n\n\tif (count) {\n\t\tclear += cursorLeft;\n\t}\n\n\treturn clear;\n};\n\nexport const eraseEndLine = ESC + 'K';\nexport const eraseStartLine = ESC + '1K';\nexport const eraseLine = ESC + '2K';\nexport const eraseDown = ESC + 'J';\nexport const eraseUp = ESC + '1J';\nexport const eraseScreen = ESC + '2J';\nexport const scrollUp = ESC + 'S';\nexport const scrollDown = ESC + 'T';\n\nexport const clearScreen = '\\u001Bc';\n\nexport const clearTerminal = isWindows\n\t? `${eraseScreen}${ESC}0f`\n\t// 1. Erases the screen (Only done in case `2` is not supported)\n\t// 2. Erases the whole screen including scrollback buffer\n\t// 3. Moves cursor to the top-left position\n\t// More info: https://www.real-world-systems.com/docs/ANSIcode.html\n\t:\t`${eraseScreen}${ESC}3J${ESC}H`;\n\nexport const enterAlternativeScreen = ESC + '?1049h';\nexport const exitAlternativeScreen = ESC + '?1049l';\n\nexport const beep = BEL;\n\nexport const link = (text, url) => [\n\tOSC,\n\t'8',\n\tSEP,\n\tSEP,\n\turl,\n\tBEL,\n\ttext,\n\tOSC,\n\t'8',\n\tSEP,\n\tSEP,\n\tBEL,\n].join('');\n\nexport const image = (data, options = {}) => {\n\tlet returnValue = `${OSC}1337;File=inline=1`;\n\n\tif (options.width) {\n\t\treturnValue += `;width=${options.width}`;\n\t}\n\n\tif (options.height) {\n\t\treturnValue += `;height=${options.height}`;\n\t}\n\n\tif (options.preserveAspectRatio === false) {\n\t\treturnValue += ';preserveAspectRatio=0';\n\t}\n\n\treturn returnValue + ':' + Buffer.from(data).toString('base64') + BEL;\n};\n\nexport const iTerm = {\n\tsetCwd: (cwd = cwdFunction()) => `${OSC}50;CurrentDir=${cwd}${BEL}`,\n\n\tannotation(message, options = {}) {\n\t\tlet returnValue = `${OSC}1337;`;\n\n\t\tconst hasX = options.x !== undefined;\n\t\tconst hasY = options.y !== undefined;\n\t\tif ((hasX || hasY) && !(hasX && hasY && options.length !== undefined)) {\n\t\t\tthrow new Error('`x`, `y` and `length` must be defined when `x` or `y` is defined');\n\t\t}\n\n\t\tmessage = message.replaceAll('|', '');\n\n\t\treturnValue += options.isHidden ? 'AddHiddenAnnotation=' : 'AddAnnotation=';\n\n\t\tif (options.length > 0) {\n\t\t\treturnValue += (\n\t\t\t\thasX\n\t\t\t\t\t? [message, options.length, options.x, options.y]\n\t\t\t\t\t: [options.length, message]\n\t\t\t).join('|');\n\t\t} else {\n\t\t\treturnValue += message;\n\t\t}\n\n\t\treturn returnValue + BEL;\n\t},\n};\n", "export * from './base.js';\nexport * as default from './base.js';\n", "const copyProperty = (to, from, property, ignoreNonConfigurable) => {\n\t// `Function#length` should reflect the parameters of `to` not `from` since we keep its body.\n\t// `Function#prototype` is non-writable and non-configurable so can never be modified.\n\tif (property === 'length' || property === 'prototype') {\n\t\treturn;\n\t}\n\n\t// `Function#arguments` and `Function#caller` should not be copied. They were reported to be present in `Reflect.ownKeys` for some devices in React Native (#41), so we explicitly ignore them here.\n\tif (property === 'arguments' || property === 'caller') {\n\t\treturn;\n\t}\n\n\tconst toDescriptor = Object.getOwnPropertyDescriptor(to, property);\n\tconst fromDescriptor = Object.getOwnPropertyDescriptor(from, property);\n\n\tif (!canCopyProperty(toDescriptor, fromDescriptor) && ignoreNonConfigurable) {\n\t\treturn;\n\t}\n\n\tObject.defineProperty(to, property, fromDescriptor);\n};\n\n// `Object.defineProperty()` throws if the property exists, is not configurable and either:\n// - one its descriptors is changed\n// - it is non-writable and its value is changed\nconst canCopyProperty = function (toDescriptor, fromDescriptor) {\n\treturn toDescriptor === undefined || toDescriptor.configurable || (\n\t\ttoDescriptor.writable === fromDescriptor.writable\n\t\t&& toDescriptor.enumerable === fromDescriptor.enumerable\n\t\t&& toDescriptor.configurable === fromDescriptor.configurable\n\t\t&& (toDescriptor.writable || toDescriptor.value === fromDescriptor.value)\n\t);\n};\n\nconst changePrototype = (to, from) => {\n\tconst fromPrototype = Object.getPrototypeOf(from);\n\tif (fromPrototype === Object.getPrototypeOf(to)) {\n\t\treturn;\n\t}\n\n\tObject.setPrototypeOf(to, fromPrototype);\n};\n\nconst wrappedToString = (withName, fromBody) => `/* Wrapped ${withName}*/\\n${fromBody}`;\n\nconst toStringDescriptor = Object.getOwnPropertyDescriptor(Function.prototype, 'toString');\nconst toStringName = Object.getOwnPropertyDescriptor(Function.prototype.toString, 'name');\n\n// We call `from.toString()` early (not lazily) to ensure `from` can be garbage collected.\n// We use `bind()` instead of a closure for the same reason.\n// Calling `from.toString()` early also allows caching it in case `to.toString()` is called several times.\nconst changeToString = (to, from, name) => {\n\tconst withName = name === '' ? '' : `with ${name.trim()}() `;\n\tconst newToString = wrappedToString.bind(null, withName, from.toString());\n\t// Ensure `to.toString.toString` is non-enumerable and has the same `same`\n\tObject.defineProperty(newToString, 'name', toStringName);\n\tconst {writable, enumerable, configurable} = toStringDescriptor; // We destructue to avoid a potential `get` descriptor.\n\tObject.defineProperty(to, 'toString', {value: newToString, writable, enumerable, configurable});\n};\n\nexport default function mimicFunction(to, from, {ignoreNonConfigurable = false} = {}) {\n\tconst {name} = to;\n\n\tfor (const property of Reflect.ownKeys(from)) {\n\t\tcopyProperty(to, from, property, ignoreNonConfigurable);\n\t}\n\n\tchangePrototype(to, from);\n\tchangeToString(to, from, name);\n\n\treturn to;\n}\n", "import mimicFunction from 'mimic-function';\n\nconst calledFunctions = new WeakMap();\n\nconst onetime = (function_, options = {}) => {\n\tif (typeof function_ !== 'function') {\n\t\tthrow new TypeError('Expected a function');\n\t}\n\n\tlet returnValue;\n\tlet callCount = 0;\n\tconst functionName = function_.displayName || function_.name || '<anonymous>';\n\n\tconst onetime = function (...arguments_) {\n\t\tcalledFunctions.set(onetime, ++callCount);\n\n\t\tif (callCount === 1) {\n\t\t\treturnValue = function_.apply(this, arguments_);\n\t\t\tfunction_ = undefined;\n\t\t} else if (options.throw === true) {\n\t\t\tthrow new Error(`Function \\`${functionName}\\` can only be called once`);\n\t\t}\n\n\t\treturn returnValue;\n\t};\n\n\tmimicFunction(onetime, function_);\n\tcalledFunctions.set(onetime, callCount);\n\n\treturn onetime;\n};\n\nonetime.callCount = function_ => {\n\tif (!calledFunctions.has(function_)) {\n\t\tthrow new Error(`The given function \\`${function_.name}\\` is not wrapped by the \\`onetime\\` package`);\n\t}\n\n\treturn calledFunctions.get(function_);\n};\n\nexport default onetime;\n", "/**\n * This is not the set of all possible signals.\n *\n * It IS, however, the set of all signals that trigger\n * an exit on either Linux or BSD systems.  Linux is a\n * superset of the signal names supported on BSD, and\n * the unknown signals just fail to register, so we can\n * catch that easily enough.\n *\n * Windows signals are a different set, since there are\n * signals that terminate Windows processes, but don't\n * terminate (or don't even exist) on Posix systems.\n *\n * Don't bother with SIGKILL.  It's uncatchable, which\n * means that we can't fire any callbacks anyway.\n *\n * If a user does happen to register a handler on a non-\n * fatal signal like SIGWINCH or something, and then\n * exit, it'll end up firing `process.emit('exit')`, so\n * the handler will be fired anyway.\n *\n * SIGBUS, SIGFPE, SIGSEGV and SIGILL, when not raised\n * artificially, inherently leave the process in a\n * state from which it is not safe to try and enter JS\n * listeners.\n */\nexport const signals: NodeJS.Signals[] = []\nsignals.push('SIGHUP', 'SIGINT', 'SIGTERM')\n\nif (process.platform !== 'win32') {\n  signals.push(\n    'SIGALRM',\n    'SIGABRT',\n    'SIGVTALRM',\n    'SIGXCPU',\n    'SIGXFSZ',\n    'SIGUSR2',\n    'SIGTRAP',\n    'SIGSYS',\n    'SIGQUIT',\n    'SIGIOT'\n    // should detect profiler and enable/disable accordingly.\n    // see #21\n    // 'SIGPROF'\n  )\n}\n\nif (process.platform === 'linux') {\n  signals.push('SIGIO', 'SIGPOLL', 'SIGPWR', 'SIGSTKFLT')\n}\n", "// Note: since nyc uses this module to output coverage, any lines\n// that are in the direct sync flow of nyc's outputCoverage are\n// ignored, since we can never get coverage for them.\n// grab a reference to node's real process object right away\nimport { signals } from './signals.js'\nexport { signals }\n\n// just a loosened process type so we can do some evil things\ntype ProcessRE = NodeJS.Process & {\n  reallyExit: (code?: number | undefined | null) => any\n  emit: (ev: string, ...a: any[]) => any\n}\n\nconst processOk = (process: any): process is ProcessRE =>\n  !!process &&\n  typeof process === 'object' &&\n  typeof process.removeListener === 'function' &&\n  typeof process.emit === 'function' &&\n  typeof process.reallyExit === 'function' &&\n  typeof process.listeners === 'function' &&\n  typeof process.kill === 'function' &&\n  typeof process.pid === 'number' &&\n  typeof process.on === 'function'\n\nconst kExitEmitter = Symbol.for('signal-exit emitter')\nconst global: typeof globalThis & { [kExitEmitter]?: Emitter } = globalThis\nconst ObjectDefineProperty = Object.defineProperty.bind(Object)\n\n/**\n * A function that takes an exit code and signal as arguments\n *\n * In the case of signal exits *only*, a return value of true\n * will indicate that the signal is being handled, and we should\n * not synthetically exit with the signal we received. Regardless\n * of the handler return value, the handler is unloaded when an\n * otherwise fatal signal is received, so you get exactly 1 shot\n * at it, unless you add another onExit handler at that point.\n *\n * In the case of numeric code exits, we may already have committed\n * to exiting the process, for example via a fatal exception or\n * unhandled promise rejection, so it is impossible to stop safely.\n */\nexport type Handler = (\n  code: number | null | undefined,\n  signal: NodeJS.Signals | null\n) => true | void\ntype ExitEvent = 'afterExit' | 'exit'\ntype Emitted = { [k in ExitEvent]: boolean }\ntype Listeners = { [k in ExitEvent]: Handler[] }\n\n// teeny special purpose ee\nclass Emitter {\n  emitted: Emitted = {\n    afterExit: false,\n    exit: false,\n  }\n\n  listeners: Listeners = {\n    afterExit: [],\n    exit: [],\n  }\n\n  count: number = 0\n  id: number = Math.random()\n\n  constructor() {\n    if (global[kExitEmitter]) {\n      return global[kExitEmitter]\n    }\n    ObjectDefineProperty(global, kExitEmitter, {\n      value: this,\n      writable: false,\n      enumerable: false,\n      configurable: false,\n    })\n  }\n\n  on(ev: ExitEvent, fn: Handler) {\n    this.listeners[ev].push(fn)\n  }\n\n  removeListener(ev: ExitEvent, fn: Handler) {\n    const list = this.listeners[ev]\n    const i = list.indexOf(fn)\n    /* c8 ignore start */\n    if (i === -1) {\n      return\n    }\n    /* c8 ignore stop */\n    if (i === 0 && list.length === 1) {\n      list.length = 0\n    } else {\n      list.splice(i, 1)\n    }\n  }\n\n  emit(\n    ev: ExitEvent,\n    code: number | null | undefined,\n    signal: NodeJS.Signals | null\n  ): boolean {\n    if (this.emitted[ev]) {\n      return false\n    }\n    this.emitted[ev] = true\n    let ret: boolean = false\n    for (const fn of this.listeners[ev]) {\n      ret = fn(code, signal) === true || ret\n    }\n    if (ev === 'exit') {\n      ret = this.emit('afterExit', code, signal) || ret\n    }\n    return ret\n  }\n}\n\nabstract class SignalExitBase {\n  abstract onExit(cb: Handler, opts?: { alwaysLast?: boolean }): () => void\n  abstract load(): void\n  abstract unload(): void\n}\n\nconst signalExitWrap = <T extends SignalExitBase>(handler: T) => {\n  return {\n    onExit(cb: Handler, opts?: { alwaysLast?: boolean }) {\n      return handler.onExit(cb, opts)\n    },\n    load() {\n      return handler.load()\n    },\n    unload() {\n      return handler.unload()\n    },\n  }\n}\n\nclass SignalExitFallback extends SignalExitBase {\n  onExit() {\n    return () => {}\n  }\n  load() {}\n  unload() {}\n}\n\nclass SignalExit extends SignalExitBase {\n  // \"SIGHUP\" throws an `ENOSYS` error on Windows,\n  // so use a supported signal instead\n  /* c8 ignore start */\n  #hupSig = process.platform === 'win32' ? 'SIGINT' : 'SIGHUP'\n  /* c8 ignore stop */\n  #emitter = new Emitter()\n  #process: ProcessRE\n  #originalProcessEmit: ProcessRE['emit']\n  #originalProcessReallyExit: ProcessRE['reallyExit']\n\n  #sigListeners: { [k in NodeJS.Signals]?: () => void } = {}\n  #loaded: boolean = false\n\n  constructor(process: ProcessRE) {\n    super()\n    this.#process = process\n    // { <signal>: <listener fn>, ... }\n    this.#sigListeners = {}\n    for (const sig of signals) {\n      this.#sigListeners[sig] = () => {\n        // If there are no other listeners, an exit is coming!\n        // Simplest way: remove us and then re-send the signal.\n        // We know that this will kill the process, so we can\n        // safely emit now.\n        const listeners = this.#process.listeners(sig)\n        let { count } = this.#emitter\n        // This is a workaround for the fact that signal-exit v3 and signal\n        // exit v4 are not aware of each other, and each will attempt to let\n        // the other handle it, so neither of them do. To correct this, we\n        // detect if we're the only handler *except* for previous versions\n        // of signal-exit, and increment by the count of listeners it has\n        // created.\n        /* c8 ignore start */\n        const p = process as unknown as {\n          __signal_exit_emitter__?: { count: number }\n        }\n        if (\n          typeof p.__signal_exit_emitter__ === 'object' &&\n          typeof p.__signal_exit_emitter__.count === 'number'\n        ) {\n          count += p.__signal_exit_emitter__.count\n        }\n        /* c8 ignore stop */\n        if (listeners.length === count) {\n          this.unload()\n          const ret = this.#emitter.emit('exit', null, sig)\n          /* c8 ignore start */\n          const s = sig === 'SIGHUP' ? this.#hupSig : sig\n          if (!ret) process.kill(process.pid, s)\n          /* c8 ignore stop */\n        }\n      }\n    }\n\n    this.#originalProcessReallyExit = process.reallyExit\n    this.#originalProcessEmit = process.emit\n  }\n\n  onExit(cb: Handler, opts?: { alwaysLast?: boolean }) {\n    /* c8 ignore start */\n    if (!processOk(this.#process)) {\n      return () => {}\n    }\n    /* c8 ignore stop */\n\n    if (this.#loaded === false) {\n      this.load()\n    }\n\n    const ev = opts?.alwaysLast ? 'afterExit' : 'exit'\n    this.#emitter.on(ev, cb)\n    return () => {\n      this.#emitter.removeListener(ev, cb)\n      if (\n        this.#emitter.listeners['exit'].length === 0 &&\n        this.#emitter.listeners['afterExit'].length === 0\n      ) {\n        this.unload()\n      }\n    }\n  }\n\n  load() {\n    if (this.#loaded) {\n      return\n    }\n    this.#loaded = true\n\n    // This is the number of onSignalExit's that are in play.\n    // It's important so that we can count the correct number of\n    // listeners on signals, and don't wait for the other one to\n    // handle it instead of us.\n    this.#emitter.count += 1\n\n    for (const sig of signals) {\n      try {\n        const fn = this.#sigListeners[sig]\n        if (fn) this.#process.on(sig, fn)\n      } catch (_) {}\n    }\n\n    this.#process.emit = (ev: string, ...a: any[]) => {\n      return this.#processEmit(ev, ...a)\n    }\n    this.#process.reallyExit = (code?: number | null | undefined) => {\n      return this.#processReallyExit(code)\n    }\n  }\n\n  unload() {\n    if (!this.#loaded) {\n      return\n    }\n    this.#loaded = false\n\n    signals.forEach(sig => {\n      const listener = this.#sigListeners[sig]\n      /* c8 ignore start */\n      if (!listener) {\n        throw new Error('Listener not defined for signal: ' + sig)\n      }\n      /* c8 ignore stop */\n      try {\n        this.#process.removeListener(sig, listener)\n        /* c8 ignore start */\n      } catch (_) {}\n      /* c8 ignore stop */\n    })\n    this.#process.emit = this.#originalProcessEmit\n    this.#process.reallyExit = this.#originalProcessReallyExit\n    this.#emitter.count -= 1\n  }\n\n  #processReallyExit(code?: number | null | undefined) {\n    /* c8 ignore start */\n    if (!processOk(this.#process)) {\n      return 0\n    }\n    this.#process.exitCode = code || 0\n    /* c8 ignore stop */\n\n    this.#emitter.emit('exit', this.#process.exitCode, null)\n    return this.#originalProcessReallyExit.call(\n      this.#process,\n      this.#process.exitCode\n    )\n  }\n\n  #processEmit(ev: string, ...args: any[]): any {\n    const og = this.#originalProcessEmit\n    if (ev === 'exit' && processOk(this.#process)) {\n      if (typeof args[0] === 'number') {\n        this.#process.exitCode = args[0]\n        /* c8 ignore start */\n      }\n      /* c8 ignore start */\n      const ret = og.call(this.#process, ev, ...args)\n      /* c8 ignore start */\n      this.#emitter.emit('exit', this.#process.exitCode, null)\n      /* c8 ignore stop */\n      return ret\n    } else {\n      return og.call(this.#process, ev, ...args)\n    }\n  }\n}\n\nconst process = globalThis.process\n// wrap so that we call the method on the actual handler, without\n// exporting it directly.\nexport const {\n  /**\n   * Called when the process is exiting, whether via signal, explicit\n   * exit, or running out of stuff to do.\n   *\n   * If the global process object is not suitable for instrumentation,\n   * then this will be a no-op.\n   *\n   * Returns a function that may be used to unload signal-exit.\n   */\n  onExit,\n\n  /**\n   * Load the listeners.  Likely you never need to call this, unless\n   * doing a rather deep integration with signal-exit functionality.\n   * Mostly exposed for the benefit of testing.\n   *\n   * @internal\n   */\n  load,\n\n  /**\n   * Unload the listeners.  Likely you never need to call this, unless\n   * doing a rather deep integration with signal-exit functionality.\n   * Mostly exposed for the benefit of testing.\n   *\n   * @internal\n   */\n  unload,\n} = signalExitWrap(\n  processOk(process) ? new SignalExit(process) : new SignalExitFallback()\n)\n", "import process from 'node:process';\nimport onetime from 'onetime';\nimport {onExit} from 'signal-exit';\n\nconst terminal = process.stderr.isTTY\n\t? process.stderr\n\t: (process.stdout.isTTY ? process.stdout : undefined);\n\nconst restoreCursor = terminal ? onetime(() => {\n\tonExit(() => {\n\t\tterminal.write('\\u001B[?25h');\n\t}, {alwaysLast: true});\n}) : () => {};\n\nexport default restoreCursor;\n", "import process from 'node:process';\nimport restoreCursor from 'restore-cursor';\n\nlet isHidden = false;\n\nconst cliCursor = {};\n\ncliCursor.show = (writableStream = process.stderr) => {\n\tif (!writableStream.isTTY) {\n\t\treturn;\n\t}\n\n\tisHidden = false;\n\twritableStream.write('\\u001B[?25h');\n};\n\ncliCursor.hide = (writableStream = process.stderr) => {\n\tif (!writableStream.isTTY) {\n\t\treturn;\n\t}\n\n\trestoreCursor();\n\tisHidden = true;\n\twritableStream.write('\\u001B[?25l');\n};\n\ncliCursor.toggle = (force, writableStream) => {\n\tif (force !== undefined) {\n\t\tisHidden = force;\n\t}\n\n\tif (isHidden) {\n\t\tcliCursor.show(writableStream);\n\t} else {\n\t\tcliCursor.hide(writableStream);\n\t}\n};\n\nexport default cliCursor;\n", "export default function ansiRegex({onlyFirst = false} = {}) {\n\t// Valid string terminator sequences are BEL, ESC\\, and 0x9c\n\tconst ST = '(?:\\\\u0007|\\\\u001B\\\\u005C|\\\\u009C)';\n\tconst pattern = [\n\t\t`[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]+)*|[a-zA-Z\\\\d]+(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?${ST})`,\n\t\t'(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-nq-uy=><~]))',\n\t].join('|');\n\n\treturn new RegExp(pattern, onlyFirst ? undefined : 'g');\n}\n", "import ansiRegex from 'ansi-regex';\n\nconst regex = ansiRegex();\n\nexport default function stripAnsi(string) {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError(`Expected a \\`string\\`, got \\`${typeof string}\\``);\n\t}\n\n\t// Even though the regex is global, we don't need to reset the `.lastIndex`\n\t// because unlike `.exec()` and `.test()`, `.replace()` does it automatically\n\t// and doing it manually has a performance penalty.\n\treturn string.replace(regex, '');\n}\n", "// Generated by scripts/build.js\n\n// prettier-ignore\nconst ambiguousRanges = [161, 161, 164, 164, 167, 168, 170, 170, 173, 174, 176, 180, 182, 186, 188, 191, 198, 198, 208, 208, 215, 216, 222, 225, 230, 230, 232, 234, 236, 237, 240, 240, 242, 243, 247, 250, 252, 252, 254, 254, 257, 257, 273, 273, 275, 275, 283, 283, 294, 295, 299, 299, 305, 307, 312, 312, 319, 322, 324, 324, 328, 331, 333, 333, 338, 339, 358, 359, 363, 363, 462, 462, 464, 464, 466, 466, 468, 468, 470, 470, 472, 472, 474, 474, 476, 476, 593, 593, 609, 609, 708, 708, 711, 711, 713, 715, 717, 717, 720, 720, 728, 731, 733, 733, 735, 735, 768, 879, 913, 929, 931, 937, 945, 961, 963, 969, 1025, 1025, 1040, 1103, 1105, 1105, 8208, 8208, 8211, 8214, 8216, 8217, 8220, 8221, 8224, 8226, 8228, 8231, 8240, 8240, 8242, 8243, 8245, 8245, 8251, 8251, 8254, 8254, 8308, 8308, 8319, 8319, 8321, 8324, 8364, 8364, 8451, 8451, 8453, 8453, 8457, 8457, 8467, 8467, 8470, 8470, 8481, 8482, 8486, 8486, 8491, 8491, 8531, 8532, 8539, 8542, 8544, 8555, 8560, 8569, 8585, 8585, 8592, 8601, 8632, 8633, 8658, 8658, 8660, 8660, 8679, 8679, 8704, 8704, 8706, 8707, 8711, 8712, 8715, 8715, 8719, 8719, 8721, 8721, 8725, 8725, 8730, 8730, 8733, 8736, 8739, 8739, 8741, 8741, 8743, 8748, 8750, 8750, 8756, 8759, 8764, 8765, 8776, 8776, 8780, 8780, 8786, 8786, 8800, 8801, 8804, 8807, 8810, 8811, 8814, 8815, 8834, 8835, 8838, 8839, 8853, 8853, 8857, 8857, 8869, 8869, 8895, 8895, 8978, 8978, 9312, 9449, 9451, 9547, 9552, 9587, 9600, 9615, 9618, 9621, 9632, 9633, 9635, 9641, 9650, 9651, 9654, 9655, 9660, 9661, 9664, 9665, 9670, 9672, 9675, 9675, 9678, 9681, 9698, 9701, 9711, 9711, 9733, 9734, 9737, 9737, 9742, 9743, 9756, 9756, 9758, 9758, 9792, 9792, 9794, 9794, 9824, 9825, 9827, 9829, 9831, 9834, 9836, 9837, 9839, 9839, 9886, 9887, 9919, 9919, 9926, 9933, 9935, 9939, 9941, 9953, 9955, 9955, 9960, 9961, 9963, 9969, 9972, 9972, 9974, 9977, 9979, 9980, 9982, 9983, 10045, 10045, 10102, 10111, 11094, 11097, 12872, 12879, 57344, 63743, 65024, 65039, 65533, 65533, 127232, 127242, 127248, 127277, 127280, 127337, 127344, 127373, 127375, 127376, 127387, 127404, 917760, 917999, 983040, 1048573, 1048576, 1114109];\n\n// prettier-ignore\nconst fullwidthRanges = [12288, 12288, 65281, 65376, 65504, 65510];\n\n// prettier-ignore\nconst halfwidthRanges = [8361, 8361, 65377, 65470, 65474, 65479, 65482, 65487, 65490, 65495, 65498, 65500, 65512, 65518];\n\n// prettier-ignore\nconst narrowRanges = [32, 126, 162, 163, 165, 166, 172, 172, 175, 175, 10214, 10221, 10629, 10630];\n\n// prettier-ignore\nconst wideRanges = [4352, 4447, 8986, 8987, 9001, 9002, 9193, 9196, 9200, 9200, 9203, 9203, 9725, 9726, 9748, 9749, 9776, 9783, 9800, 9811, 9855, 9855, 9866, 9871, 9875, 9875, 9889, 9889, 9898, 9899, 9917, 9918, 9924, 9925, 9934, 9934, 9940, 9940, 9962, 9962, 9970, 9971, 9973, 9973, 9978, 9978, 9981, 9981, 9989, 9989, 9994, 9995, 10024, 10024, 10060, 10060, 10062, 10062, 10067, 10069, 10071, 10071, 10133, 10135, 10160, 10160, 10175, 10175, 11035, 11036, 11088, 11088, 11093, 11093, 11904, 11929, 11931, 12019, 12032, 12245, 12272, 12287, 12289, 12350, 12353, 12438, 12441, 12543, 12549, 12591, 12593, 12686, 12688, 12773, 12783, 12830, 12832, 12871, 12880, 42124, 42128, 42182, 43360, 43388, 44032, 55203, 63744, 64255, 65040, 65049, 65072, 65106, 65108, 65126, 65128, 65131, 94176, 94180, 94192, 94198, 94208, 101589, 101631, 101662, 101760, 101874, 110576, 110579, 110581, 110587, 110589, 110590, 110592, 110882, 110898, 110898, 110928, 110930, 110933, 110933, 110948, 110951, 110960, 111355, 119552, 119638, 119648, 119670, 126980, 126980, 127183, 127183, 127374, 127374, 127377, 127386, 127488, 127490, 127504, 127547, 127552, 127560, 127568, 127569, 127584, 127589, 127744, 127776, 127789, 127797, 127799, 127868, 127870, 127891, 127904, 127946, 127951, 127955, 127968, 127984, 127988, 127988, 127992, 128062, 128064, 128064, 128066, 128252, 128255, 128317, 128331, 128334, 128336, 128359, 128378, 128378, 128405, 128406, 128420, 128420, 128507, 128591, 128640, 128709, 128716, 128716, 128720, 128722, 128725, 128728, 128732, 128735, 128747, 128748, 128756, 128764, 128992, 129003, 129008, 129008, 129292, 129338, 129340, 129349, 129351, 129535, 129648, 129660, 129664, 129674, 129678, 129734, 129736, 129736, 129741, 129756, 129759, 129770, 129775, 129784, 131072, 196605, 196608, 262141];\n\nexport {ambiguousRanges, fullwidthRanges, halfwidthRanges, narrowRanges, wideRanges};\n", "/**\nBinary search on a sorted flat array of [start, end] pairs.\n\n@param {number[]} ranges - Flat array of inclusive [start, end] range pairs, e.g. [0, 5, 10, 20].\n@param {number} codePoint - The value to search for.\n@returns {boolean} Whether the value falls within any of the ranges.\n*/\nexport const isInRange = (ranges, codePoint) => {\n\tlet low = 0;\n\tlet high = Math.floor(ranges.length / 2) - 1;\n\twhile (low <= high) {\n\t\tconst mid = Math.floor((low + high) / 2);\n\t\tconst i = mid * 2;\n\t\tif (codePoint < ranges[i]) {\n\t\t\thigh = mid - 1;\n\t\t} else if (codePoint > ranges[i + 1]) {\n\t\t\tlow = mid + 1;\n\t\t} else {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n};\n", "import {\n\tambiguousRanges,\n\tfullwidthRanges,\n\thalfwidthRanges,\n\tnarrowRanges,\n\twideRanges,\n} from './lookup-data.js';\nimport {isInRange} from './utilities.js';\n\nconst minimumAmbiguousCodePoint = ambiguousRanges[0];\nconst maximumAmbiguousCodePoint = ambiguousRanges.at(-1);\nconst minimumFullWidthCodePoint = fullwidthRanges[0];\nconst maximumFullWidthCodePoint = fullwidthRanges.at(-1);\nconst minimumHalfWidthCodePoint = halfwidthRanges[0];\nconst maximumHalfWidthCodePoint = halfwidthRanges.at(-1);\nconst minimumNarrowCodePoint = narrowRanges[0];\nconst maximumNarrowCodePoint = narrowRanges.at(-1);\nconst minimumWideCodePoint = wideRanges[0];\nconst maximumWideCodePoint = wideRanges.at(-1);\n\nconst commonCjkCodePoint = 0x4E_00;\nconst [wideFastPathStart, wideFastPathEnd] = findWideFastPathRange(wideRanges);\n\n// Use a hot-path range so common `isWide` calls can skip binary search.\n// The range containing U+4E00 covers common CJK ideographs;\n// fallback to the largest range for resilience to Unicode table changes.\nfunction findWideFastPathRange(ranges) {\n\tlet fastPathStart = ranges[0];\n\tlet fastPathEnd = ranges[1];\n\n\tfor (let index = 0; index < ranges.length; index += 2) {\n\t\tconst start = ranges[index];\n\t\tconst end = ranges[index + 1];\n\n\t\tif (\n\t\t\tcommonCjkCodePoint >= start\n\t\t\t&& commonCjkCodePoint <= end\n\t\t) {\n\t\t\treturn [start, end];\n\t\t}\n\n\t\tif ((end - start) > (fastPathEnd - fastPathStart)) {\n\t\t\tfastPathStart = start;\n\t\t\tfastPathEnd = end;\n\t\t}\n\t}\n\n\treturn [fastPathStart, fastPathEnd];\n}\n\nexport const isAmbiguous = codePoint => {\n\tif (\n\t\tcodePoint < minimumAmbiguousCodePoint\n\t\t|| codePoint > maximumAmbiguousCodePoint\n\t) {\n\t\treturn false;\n\t}\n\n\treturn isInRange(ambiguousRanges, codePoint);\n};\n\nexport const isFullWidth = codePoint => {\n\tif (\n\t\tcodePoint < minimumFullWidthCodePoint\n\t\t|| codePoint > maximumFullWidthCodePoint\n\t) {\n\t\treturn false;\n\t}\n\n\treturn isInRange(fullwidthRanges, codePoint);\n};\n\nconst isHalfWidth = codePoint => {\n\tif (\n\t\tcodePoint < minimumHalfWidthCodePoint\n\t\t|| codePoint > maximumHalfWidthCodePoint\n\t) {\n\t\treturn false;\n\t}\n\n\treturn isInRange(halfwidthRanges, codePoint);\n};\n\nconst isNarrow = codePoint => {\n\tif (\n\t\tcodePoint < minimumNarrowCodePoint\n\t\t|| codePoint > maximumNarrowCodePoint\n\t) {\n\t\treturn false;\n\t}\n\n\treturn isInRange(narrowRanges, codePoint);\n};\n\nexport const isWide = codePoint => {\n\tif (\n\t\tcodePoint >= wideFastPathStart\n\t\t&& codePoint <= wideFastPathEnd\n\t) {\n\t\treturn true;\n\t}\n\n\tif (\n\t\tcodePoint < minimumWideCodePoint\n\t\t|| codePoint > maximumWideCodePoint\n\t) {\n\t\treturn false;\n\t}\n\n\treturn isInRange(wideRanges, codePoint);\n};\n\nexport function getCategory(codePoint) {\n\tif (isAmbiguous(codePoint)) {\n\t\treturn 'ambiguous';\n\t}\n\n\tif (isFullWidth(codePoint)) {\n\t\treturn 'fullwidth';\n\t}\n\n\tif (isHalfWidth(codePoint)) {\n\t\treturn 'halfwidth';\n\t}\n\n\tif (isNarrow(codePoint)) {\n\t\treturn 'narrow';\n\t}\n\n\tif (isWide(codePoint)) {\n\t\treturn 'wide';\n\t}\n\n\treturn 'neutral';\n}\n", "import {getCategory, isAmbiguous, isFullWidth, isWide} from './lookup.js';\n\nfunction validate(codePoint) {\n\tif (!Number.isSafeInteger(codePoint)) {\n\t\tthrow new TypeError(`Expected a code point, got \\`${typeof codePoint}\\`.`);\n\t}\n}\n\nexport function eastAsianWidthType(codePoint) {\n\tvalidate(codePoint);\n\n\treturn getCategory(codePoint);\n}\n\nexport function eastAsianWidth(codePoint, {ambiguousAsWide = false} = {}) {\n\tvalidate(codePoint);\n\n\tif (\n\t\tisFullWidth(codePoint)\n\t\t|| isWide(codePoint)\n\t\t|| (ambiguousAsWide && isAmbiguous(codePoint))\n\t) {\n\t\treturn 2;\n\t}\n\n\treturn 1;\n}\n\n// Private exports for https://github.com/sindresorhus/is-fullwidth-code-point\nexport {isFullWidth as _isFullWidth, isWide as _isWide} from './lookup.js';\n", "module.exports = () => {\n\t// https://mths.be/emoji\n\treturn /[#*0-9]\\uFE0F?\\u20E3|[\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u231A\\u231B\\u2328\\u23CF\\u23ED-\\u23EF\\u23F1\\u23F2\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB\\u25FC\\u25FE\\u2600-\\u2604\\u260E\\u2611\\u2614\\u2615\\u2618\\u2620\\u2622\\u2623\\u2626\\u262A\\u262E\\u262F\\u2638-\\u263A\\u2640\\u2642\\u2648-\\u2653\\u265F\\u2660\\u2663\\u2665\\u2666\\u2668\\u267B\\u267E\\u267F\\u2692\\u2694-\\u2697\\u2699\\u269B\\u269C\\u26A0\\u26A7\\u26AA\\u26B0\\u26B1\\u26BD\\u26BE\\u26C4\\u26C8\\u26CF\\u26D1\\u26E9\\u26F0-\\u26F5\\u26F7\\u26F8\\u26FA\\u2702\\u2708\\u2709\\u270F\\u2712\\u2714\\u2716\\u271D\\u2721\\u2733\\u2734\\u2744\\u2747\\u2757\\u2763\\u27A1\\u2934\\u2935\\u2B05-\\u2B07\\u2B1B\\u2B1C\\u2B55\\u3030\\u303D\\u3297\\u3299]\\uFE0F?|[\\u261D\\u270C\\u270D](?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?|[\\u270A\\u270B](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\u23E9-\\u23EC\\u23F0\\u23F3\\u25FD\\u2693\\u26A1\\u26AB\\u26C5\\u26CE\\u26D4\\u26EA\\u26FD\\u2705\\u2728\\u274C\\u274E\\u2753-\\u2755\\u2795-\\u2797\\u27B0\\u27BF\\u2B50]|\\u26D3\\uFE0F?(?:\\u200D\\uD83D\\uDCA5)?|\\u26F9(?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|\\u2764\\uFE0F?(?:\\u200D(?:\\uD83D\\uDD25|\\uD83E\\uDE79))?|\\uD83C(?:[\\uDC04\\uDD70\\uDD71\\uDD7E\\uDD7F\\uDE02\\uDE37\\uDF21\\uDF24-\\uDF2C\\uDF36\\uDF7D\\uDF96\\uDF97\\uDF99-\\uDF9B\\uDF9E\\uDF9F\\uDFCD\\uDFCE\\uDFD4-\\uDFDF\\uDFF5\\uDFF7]\\uFE0F?|[\\uDF85\\uDFC2\\uDFC7](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDFC4\\uDFCA](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDFCB\\uDFCC](?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDCCF\\uDD8E\\uDD91-\\uDD9A\\uDE01\\uDE1A\\uDE2F\\uDE32-\\uDE36\\uDE38-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF20\\uDF2D-\\uDF35\\uDF37-\\uDF43\\uDF45-\\uDF4A\\uDF4C-\\uDF7C\\uDF7E-\\uDF84\\uDF86-\\uDF93\\uDFA0-\\uDFC1\\uDFC5\\uDFC6\\uDFC8\\uDFC9\\uDFCF-\\uDFD3\\uDFE0-\\uDFF0\\uDFF8-\\uDFFF]|\\uDDE6\\uD83C[\\uDDE8-\\uDDEC\\uDDEE\\uDDF1\\uDDF2\\uDDF4\\uDDF6-\\uDDFA\\uDDFC\\uDDFD\\uDDFF]|\\uDDE7\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEF\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9\\uDDFB\\uDDFC\\uDDFE\\uDDFF]|\\uDDE8\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDEE\\uDDF0-\\uDDF7\\uDDFA-\\uDDFF]|\\uDDE9\\uD83C[\\uDDEA\\uDDEC\\uDDEF\\uDDF0\\uDDF2\\uDDF4\\uDDFF]|\\uDDEA\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDED\\uDDF7-\\uDDFA]|\\uDDEB\\uD83C[\\uDDEE-\\uDDF0\\uDDF2\\uDDF4\\uDDF7]|\\uDDEC\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEE\\uDDF1-\\uDDF3\\uDDF5-\\uDDFA\\uDDFC\\uDDFE]|\\uDDED\\uD83C[\\uDDF0\\uDDF2\\uDDF3\\uDDF7\\uDDF9\\uDDFA]|\\uDDEE\\uD83C[\\uDDE8-\\uDDEA\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9]|\\uDDEF\\uD83C[\\uDDEA\\uDDF2\\uDDF4\\uDDF5]|\\uDDF0\\uD83C[\\uDDEA\\uDDEC-\\uDDEE\\uDDF2\\uDDF3\\uDDF5\\uDDF7\\uDDFC\\uDDFE\\uDDFF]|\\uDDF1\\uD83C[\\uDDE6-\\uDDE8\\uDDEE\\uDDF0\\uDDF7-\\uDDFB\\uDDFE]|\\uDDF2\\uD83C[\\uDDE6\\uDDE8-\\uDDED\\uDDF0-\\uDDFF]|\\uDDF3\\uD83C[\\uDDE6\\uDDE8\\uDDEA-\\uDDEC\\uDDEE\\uDDF1\\uDDF4\\uDDF5\\uDDF7\\uDDFA\\uDDFF]|\\uDDF4\\uD83C\\uDDF2|\\uDDF5\\uD83C[\\uDDE6\\uDDEA-\\uDDED\\uDDF0-\\uDDF3\\uDDF7-\\uDDF9\\uDDFC\\uDDFE]|\\uDDF6\\uD83C\\uDDE6|\\uDDF7\\uD83C[\\uDDEA\\uDDF4\\uDDF8\\uDDFA\\uDDFC]|\\uDDF8\\uD83C[\\uDDE6-\\uDDEA\\uDDEC-\\uDDF4\\uDDF7-\\uDDF9\\uDDFB\\uDDFD-\\uDDFF]|\\uDDF9\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDED\\uDDEF-\\uDDF4\\uDDF7\\uDDF9\\uDDFB\\uDDFC\\uDDFF]|\\uDDFA\\uD83C[\\uDDE6\\uDDEC\\uDDF2\\uDDF3\\uDDF8\\uDDFE\\uDDFF]|\\uDDFB\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDEE\\uDDF3\\uDDFA]|\\uDDFC\\uD83C[\\uDDEB\\uDDF8]|\\uDDFD\\uD83C\\uDDF0|\\uDDFE\\uD83C[\\uDDEA\\uDDF9]|\\uDDFF\\uD83C[\\uDDE6\\uDDF2\\uDDFC]|\\uDF44(?:\\u200D\\uD83D\\uDFEB)?|\\uDF4B(?:\\u200D\\uD83D\\uDFE9)?|\\uDFC3(?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D(?:[\\u2640\\u2642]\\uFE0F?(?:\\u200D\\u27A1\\uFE0F?)?|\\u27A1\\uFE0F?))?|\\uDFF3\\uFE0F?(?:\\u200D(?:\\u26A7\\uFE0F?|\\uD83C\\uDF08))?|\\uDFF4(?:\\u200D\\u2620\\uFE0F?|\\uDB40\\uDC67\\uDB40\\uDC62\\uDB40(?:\\uDC65\\uDB40\\uDC6E\\uDB40\\uDC67|\\uDC73\\uDB40\\uDC63\\uDB40\\uDC74|\\uDC77\\uDB40\\uDC6C\\uDB40\\uDC73)\\uDB40\\uDC7F)?)|\\uD83D(?:[\\uDC3F\\uDCFD\\uDD49\\uDD4A\\uDD6F\\uDD70\\uDD73\\uDD76-\\uDD79\\uDD87\\uDD8A-\\uDD8D\\uDDA5\\uDDA8\\uDDB1\\uDDB2\\uDDBC\\uDDC2-\\uDDC4\\uDDD1-\\uDDD3\\uDDDC-\\uDDDE\\uDDE1\\uDDE3\\uDDE8\\uDDEF\\uDDF3\\uDDFA\\uDECB\\uDECD-\\uDECF\\uDEE0-\\uDEE5\\uDEE9\\uDEF0\\uDEF3]\\uFE0F?|[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66\\uDC67\\uDC6B-\\uDC6D\\uDC72\\uDC74-\\uDC76\\uDC78\\uDC7C\\uDC83\\uDC85\\uDC8F\\uDC91\\uDCAA\\uDD7A\\uDD95\\uDD96\\uDE4C\\uDE4F\\uDEC0\\uDECC](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDC6E\\uDC70\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4\\uDEB5](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDD74\\uDD90](?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?|[\\uDC00-\\uDC07\\uDC09-\\uDC14\\uDC16-\\uDC25\\uDC27-\\uDC3A\\uDC3C-\\uDC3E\\uDC40\\uDC44\\uDC45\\uDC51-\\uDC65\\uDC6A\\uDC79-\\uDC7B\\uDC7D-\\uDC80\\uDC84\\uDC88-\\uDC8E\\uDC90\\uDC92-\\uDCA9\\uDCAB-\\uDCFC\\uDCFF-\\uDD3D\\uDD4B-\\uDD4E\\uDD50-\\uDD67\\uDDA4\\uDDFB-\\uDE2D\\uDE2F-\\uDE34\\uDE37-\\uDE41\\uDE43\\uDE44\\uDE48-\\uDE4A\\uDE80-\\uDEA2\\uDEA4-\\uDEB3\\uDEB7-\\uDEBF\\uDEC1-\\uDEC5\\uDED0-\\uDED2\\uDED5-\\uDED7\\uDEDC-\\uDEDF\\uDEEB\\uDEEC\\uDEF4-\\uDEFC\\uDFE0-\\uDFEB\\uDFF0]|\\uDC08(?:\\u200D\\u2B1B)?|\\uDC15(?:\\u200D\\uD83E\\uDDBA)?|\\uDC26(?:\\u200D(?:\\u2B1B|\\uD83D\\uDD25))?|\\uDC3B(?:\\u200D\\u2744\\uFE0F?)?|\\uDC41\\uFE0F?(?:\\u200D\\uD83D\\uDDE8\\uFE0F?)?|\\uDC68(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDC68\\uDC69]\\u200D\\uD83D(?:\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?)|[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?)|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]))|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFC-\\uDFFF])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB-\\uDFFE])))?))?|\\uDC69(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?[\\uDC68\\uDC69]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?|\\uDC69\\u200D\\uD83D(?:\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?))|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]))|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFC-\\uDFFF])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB-\\uDFFE])))?))?|\\uDC6F(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|\\uDD75(?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|\\uDE2E(?:\\u200D\\uD83D\\uDCA8)?|\\uDE35(?:\\u200D\\uD83D\\uDCAB)?|\\uDE36(?:\\u200D\\uD83C\\uDF2B\\uFE0F?)?|\\uDE42(?:\\u200D[\\u2194\\u2195]\\uFE0F?)?|\\uDEB6(?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D(?:[\\u2640\\u2642]\\uFE0F?(?:\\u200D\\u27A1\\uFE0F?)?|\\u27A1\\uFE0F?))?)|\\uD83E(?:[\\uDD0C\\uDD0F\\uDD18-\\uDD1F\\uDD30-\\uDD34\\uDD36\\uDD77\\uDDB5\\uDDB6\\uDDBB\\uDDD2\\uDDD3\\uDDD5\\uDEC3-\\uDEC5\\uDEF0\\uDEF2-\\uDEF8](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD\\uDDCF\\uDDD4\\uDDD6-\\uDDDD](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDDDE\\uDDDF](?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDD0D\\uDD0E\\uDD10-\\uDD17\\uDD20-\\uDD25\\uDD27-\\uDD2F\\uDD3A\\uDD3F-\\uDD45\\uDD47-\\uDD76\\uDD78-\\uDDB4\\uDDB7\\uDDBA\\uDDBC-\\uDDCC\\uDDD0\\uDDE0-\\uDDFF\\uDE70-\\uDE7C\\uDE80-\\uDE89\\uDE8F-\\uDEC2\\uDEC6\\uDECE-\\uDEDC\\uDEDF-\\uDEE9]|\\uDD3C(?:\\u200D[\\u2640\\u2642]\\uFE0F?|\\uD83C[\\uDFFB-\\uDFFF])?|\\uDDCE(?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D(?:[\\u2640\\u2642]\\uFE0F?(?:\\u200D\\u27A1\\uFE0F?)?|\\u27A1\\uFE0F?))?|\\uDDD1(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83E\\uDDD1|\\uDDD1\\u200D\\uD83E\\uDDD2(?:\\u200D\\uD83E\\uDDD2)?|\\uDDD2(?:\\u200D\\uD83E\\uDDD2)?))|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFC-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFD-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFD\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFE]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?))?|\\uDEF1(?:\\uD83C(?:\\uDFFB(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFC-\\uDFFF])?|\\uDFFC(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])?|\\uDFFD(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])?|\\uDFFE(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])?|\\uDFFF(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB-\\uDFFE])?))?)/g;\n};\n", "import stripAnsi from 'strip-ansi';\nimport {eastAsianWidth} from 'get-east-asian-width';\nimport emojiRegex from 'emoji-regex';\n\nconst segmenter = new Intl.Segmenter();\n\nconst defaultIgnorableCodePointRegex = /^\\p{Default_Ignorable_Code_Point}$/u;\n\nexport default function stringWidth(string, options = {}) {\n\tif (typeof string !== 'string' || string.length === 0) {\n\t\treturn 0;\n\t}\n\n\tconst {\n\t\tambiguousIsNarrow = true,\n\t\tcountAnsiEscapeCodes = false,\n\t} = options;\n\n\tif (!countAnsiEscapeCodes) {\n\t\tstring = stripAnsi(string);\n\t}\n\n\tif (string.length === 0) {\n\t\treturn 0;\n\t}\n\n\tlet width = 0;\n\tconst eastAsianWidthOptions = {ambiguousAsWide: !ambiguousIsNarrow};\n\n\tfor (const {segment: character} of segmenter.segment(string)) {\n\t\tconst codePoint = character.codePointAt(0);\n\n\t\t// Ignore control characters\n\t\tif (codePoint <= 0x1F || (codePoint >= 0x7F && codePoint <= 0x9F)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Ignore zero-width characters\n\t\tif (\n\t\t\t(codePoint >= 0x20_0B && codePoint <= 0x20_0F) // Zero-width space, non-joiner, joiner, left-to-right mark, right-to-left mark\n\t\t\t|| codePoint === 0xFE_FF // Zero-width no-break space\n\t\t) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Ignore combining characters\n\t\tif (\n\t\t\t(codePoint >= 0x3_00 && codePoint <= 0x3_6F) // Combining diacritical marks\n\t\t\t|| (codePoint >= 0x1A_B0 && codePoint <= 0x1A_FF) // Combining diacritical marks extended\n\t\t\t|| (codePoint >= 0x1D_C0 && codePoint <= 0x1D_FF) // Combining diacritical marks supplement\n\t\t\t|| (codePoint >= 0x20_D0 && codePoint <= 0x20_FF) // Combining diacritical marks for symbols\n\t\t\t|| (codePoint >= 0xFE_20 && codePoint <= 0xFE_2F) // Combining half marks\n\t\t) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Ignore surrogate pairs\n\t\tif (codePoint >= 0xD8_00 && codePoint <= 0xDF_FF) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Ignore variation selectors\n\t\tif (codePoint >= 0xFE_00 && codePoint <= 0xFE_0F) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// This covers some of the above cases, but we still keep them for performance reasons.\n\t\tif (defaultIgnorableCodePointRegex.test(character)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// TODO: Use `/\\p{RGI_Emoji}/v` when targeting Node.js 20.\n\t\tif (emojiRegex().test(character)) {\n\t\t\twidth += 2;\n\t\t\tcontinue;\n\t\t}\n\n\t\twidth += eastAsianWidth(codePoint, eastAsianWidthOptions);\n\t}\n\n\treturn width;\n}\n", "const ANSI_BACKGROUND_OFFSET = 10;\n\nconst wrapAnsi16 = (offset = 0) => code => `\\u001B[${code + offset}m`;\n\nconst wrapAnsi256 = (offset = 0) => code => `\\u001B[${38 + offset};5;${code}m`;\n\nconst wrapAnsi16m = (offset = 0) => (red, green, blue) => `\\u001B[${38 + offset};2;${red};${green};${blue}m`;\n\nconst styles = {\n\tmodifier: {\n\t\treset: [0, 0],\n\t\t// 21 isn't widely supported and 22 does the same thing\n\t\tbold: [1, 22],\n\t\tdim: [2, 22],\n\t\titalic: [3, 23],\n\t\tunderline: [4, 24],\n\t\toverline: [53, 55],\n\t\tinverse: [7, 27],\n\t\thidden: [8, 28],\n\t\tstrikethrough: [9, 29],\n\t},\n\tcolor: {\n\t\tblack: [30, 39],\n\t\tred: [31, 39],\n\t\tgreen: [32, 39],\n\t\tyellow: [33, 39],\n\t\tblue: [34, 39],\n\t\tmagenta: [35, 39],\n\t\tcyan: [36, 39],\n\t\twhite: [37, 39],\n\n\t\t// Bright color\n\t\tblackBright: [90, 39],\n\t\tgray: [90, 39], // Alias of `blackBright`\n\t\tgrey: [90, 39], // Alias of `blackBright`\n\t\tredBright: [91, 39],\n\t\tgreenBright: [92, 39],\n\t\tyellowBright: [93, 39],\n\t\tblueBright: [94, 39],\n\t\tmagentaBright: [95, 39],\n\t\tcyanBright: [96, 39],\n\t\twhiteBright: [97, 39],\n\t},\n\tbgColor: {\n\t\tbgBlack: [40, 49],\n\t\tbgRed: [41, 49],\n\t\tbgGreen: [42, 49],\n\t\tbgYellow: [43, 49],\n\t\tbgBlue: [44, 49],\n\t\tbgMagenta: [45, 49],\n\t\tbgCyan: [46, 49],\n\t\tbgWhite: [47, 49],\n\n\t\t// Bright color\n\t\tbgBlackBright: [100, 49],\n\t\tbgGray: [100, 49], // Alias of `bgBlackBright`\n\t\tbgGrey: [100, 49], // Alias of `bgBlackBright`\n\t\tbgRedBright: [101, 49],\n\t\tbgGreenBright: [102, 49],\n\t\tbgYellowBright: [103, 49],\n\t\tbgBlueBright: [104, 49],\n\t\tbgMagentaBright: [105, 49],\n\t\tbgCyanBright: [106, 49],\n\t\tbgWhiteBright: [107, 49],\n\t},\n};\n\nexport const modifierNames = Object.keys(styles.modifier);\nexport const foregroundColorNames = Object.keys(styles.color);\nexport const backgroundColorNames = Object.keys(styles.bgColor);\nexport const colorNames = [...foregroundColorNames, ...backgroundColorNames];\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\n\tfor (const [groupName, group] of Object.entries(styles)) {\n\t\tfor (const [styleName, style] of Object.entries(group)) {\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`,\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false,\n\t\t});\n\t}\n\n\tObject.defineProperty(styles, 'codes', {\n\t\tvalue: codes,\n\t\tenumerable: false,\n\t});\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tstyles.color.ansi = wrapAnsi16();\n\tstyles.color.ansi256 = wrapAnsi256();\n\tstyles.color.ansi16m = wrapAnsi16m();\n\tstyles.bgColor.ansi = wrapAnsi16(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi256 = wrapAnsi256(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi16m = wrapAnsi16m(ANSI_BACKGROUND_OFFSET);\n\n\t// From https://github.com/Qix-/color-convert/blob/3f0e0d4e92e235796ccb17f6e85c72094a651f49/conversions.js\n\tObject.defineProperties(styles, {\n\t\trgbToAnsi256: {\n\t\t\tvalue: (red, green, blue) => {\n\t\t\t\t// We use the extended greyscale palette here, with the exception of\n\t\t\t\t// black and white. normal palette only has 4 greyscale shades.\n\t\t\t\tif (red === green && green === blue) {\n\t\t\t\t\tif (red < 8) {\n\t\t\t\t\t\treturn 16;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (red > 248) {\n\t\t\t\t\t\treturn 231;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Math.round(((red - 8) / 247) * 24) + 232;\n\t\t\t\t}\n\n\t\t\t\treturn 16\n\t\t\t\t\t+ (36 * Math.round(red / 255 * 5))\n\t\t\t\t\t+ (6 * Math.round(green / 255 * 5))\n\t\t\t\t\t+ Math.round(blue / 255 * 5);\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToRgb: {\n\t\t\tvalue: hex => {\n\t\t\t\tconst matches = /[a-f\\d]{6}|[a-f\\d]{3}/i.exec(hex.toString(16));\n\t\t\t\tif (!matches) {\n\t\t\t\t\treturn [0, 0, 0];\n\t\t\t\t}\n\n\t\t\t\tlet [colorString] = matches;\n\n\t\t\t\tif (colorString.length === 3) {\n\t\t\t\t\tcolorString = [...colorString].map(character => character + character).join('');\n\t\t\t\t}\n\n\t\t\t\tconst integer = Number.parseInt(colorString, 16);\n\n\t\t\t\treturn [\n\t\t\t\t\t/* eslint-disable no-bitwise */\n\t\t\t\t\t(integer >> 16) & 0xFF,\n\t\t\t\t\t(integer >> 8) & 0xFF,\n\t\t\t\t\tinteger & 0xFF,\n\t\t\t\t\t/* eslint-enable no-bitwise */\n\t\t\t\t];\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToAnsi256: {\n\t\t\tvalue: hex => styles.rgbToAnsi256(...styles.hexToRgb(hex)),\n\t\t\tenumerable: false,\n\t\t},\n\t\tansi256ToAnsi: {\n\t\t\tvalue: code => {\n\t\t\t\tif (code < 8) {\n\t\t\t\t\treturn 30 + code;\n\t\t\t\t}\n\n\t\t\t\tif (code < 16) {\n\t\t\t\t\treturn 90 + (code - 8);\n\t\t\t\t}\n\n\t\t\t\tlet red;\n\t\t\t\tlet green;\n\t\t\t\tlet blue;\n\n\t\t\t\tif (code >= 232) {\n\t\t\t\t\tred = (((code - 232) * 10) + 8) / 255;\n\t\t\t\t\tgreen = red;\n\t\t\t\t\tblue = red;\n\t\t\t\t} else {\n\t\t\t\t\tcode -= 16;\n\n\t\t\t\t\tconst remainder = code % 36;\n\n\t\t\t\t\tred = Math.floor(code / 36) / 5;\n\t\t\t\t\tgreen = Math.floor(remainder / 6) / 5;\n\t\t\t\t\tblue = (remainder % 6) / 5;\n\t\t\t\t}\n\n\t\t\t\tconst value = Math.max(red, green, blue) * 2;\n\n\t\t\t\tif (value === 0) {\n\t\t\t\t\treturn 30;\n\t\t\t\t}\n\n\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\tlet result = 30 + ((Math.round(blue) << 2) | (Math.round(green) << 1) | Math.round(red));\n\n\t\t\t\tif (value === 2) {\n\t\t\t\t\tresult += 60;\n\t\t\t\t}\n\n\t\t\t\treturn result;\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\trgbToAnsi: {\n\t\t\tvalue: (red, green, blue) => styles.ansi256ToAnsi(styles.rgbToAnsi256(red, green, blue)),\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToAnsi: {\n\t\t\tvalue: hex => styles.ansi256ToAnsi(styles.hexToAnsi256(hex)),\n\t\t\tenumerable: false,\n\t\t},\n\t});\n\n\treturn styles;\n}\n\nconst ansiStyles = assembleStyles();\n\nexport default ansiStyles;\n", "import stringWidth from 'string-width';\nimport stripAnsi from 'strip-ansi';\nimport ansiStyles from 'ansi-styles';\n\nconst ESCAPES = new Set([\n\t'\\u001B',\n\t'\\u009B',\n]);\n\nconst END_CODE = 39;\nconst ANSI_ESCAPE_BELL = '\\u0007';\nconst ANSI_CSI = '[';\nconst ANSI_OSC = ']';\nconst ANSI_SGR_TERMINATOR = 'm';\nconst ANSI_ESCAPE_LINK = `${ANSI_OSC}8;;`;\n\nconst wrapAnsiCode = code => `${ESCAPES.values().next().value}${ANSI_CSI}${code}${ANSI_SGR_TERMINATOR}`;\nconst wrapAnsiHyperlink = url => `${ESCAPES.values().next().value}${ANSI_ESCAPE_LINK}${url}${ANSI_ESCAPE_BELL}`;\n\n// Calculate the length of words split on ' ', ignoring\n// the extra characters added by ansi escape codes\nconst wordLengths = string => string.split(' ').map(character => stringWidth(character));\n\n// Wrap a long word across multiple rows\n// Ansi escape codes do not count towards length\nconst wrapWord = (rows, word, columns) => {\n\tconst characters = [...word];\n\n\tlet isInsideEscape = false;\n\tlet isInsideLinkEscape = false;\n\tlet visible = stringWidth(stripAnsi(rows.at(-1)));\n\n\tfor (const [index, character] of characters.entries()) {\n\t\tconst characterLength = stringWidth(character);\n\n\t\tif (visible + characterLength <= columns) {\n\t\t\trows[rows.length - 1] += character;\n\t\t} else {\n\t\t\trows.push(character);\n\t\t\tvisible = 0;\n\t\t}\n\n\t\tif (ESCAPES.has(character)) {\n\t\t\tisInsideEscape = true;\n\n\t\t\tconst ansiEscapeLinkCandidate = characters.slice(index + 1, index + 1 + ANSI_ESCAPE_LINK.length).join('');\n\t\t\tisInsideLinkEscape = ansiEscapeLinkCandidate === ANSI_ESCAPE_LINK;\n\t\t}\n\n\t\tif (isInsideEscape) {\n\t\t\tif (isInsideLinkEscape) {\n\t\t\t\tif (character === ANSI_ESCAPE_BELL) {\n\t\t\t\t\tisInsideEscape = false;\n\t\t\t\t\tisInsideLinkEscape = false;\n\t\t\t\t}\n\t\t\t} else if (character === ANSI_SGR_TERMINATOR) {\n\t\t\t\tisInsideEscape = false;\n\t\t\t}\n\n\t\t\tcontinue;\n\t\t}\n\n\t\tvisible += characterLength;\n\n\t\tif (visible === columns && index < characters.length - 1) {\n\t\t\trows.push('');\n\t\t\tvisible = 0;\n\t\t}\n\t}\n\n\t// It's possible that the last row we copy over is only\n\t// ansi escape characters, handle this edge-case\n\tif (!visible && rows.at(-1).length > 0 && rows.length > 1) {\n\t\trows[rows.length - 2] += rows.pop();\n\t}\n};\n\n// Trims spaces from a string ignoring invisible sequences\nconst stringVisibleTrimSpacesRight = string => {\n\tconst words = string.split(' ');\n\tlet last = words.length;\n\n\twhile (last > 0) {\n\t\tif (stringWidth(words[last - 1]) > 0) {\n\t\t\tbreak;\n\t\t}\n\n\t\tlast--;\n\t}\n\n\tif (last === words.length) {\n\t\treturn string;\n\t}\n\n\treturn words.slice(0, last).join(' ') + words.slice(last).join('');\n};\n\n// The wrap-ansi module can be invoked in either 'hard' or 'soft' wrap mode.\n//\n// 'hard' will never allow a string to take up more than columns characters.\n//\n// 'soft' allows long words to expand past the column length.\nconst exec = (string, columns, options = {}) => {\n\tif (options.trim !== false && string.trim() === '') {\n\t\treturn '';\n\t}\n\n\tlet returnValue = '';\n\tlet escapeCode;\n\tlet escapeUrl;\n\n\tconst lengths = wordLengths(string);\n\tlet rows = [''];\n\n\tfor (const [index, word] of string.split(' ').entries()) {\n\t\tif (options.trim !== false) {\n\t\t\trows[rows.length - 1] = rows.at(-1).trimStart();\n\t\t}\n\n\t\tlet rowLength = stringWidth(rows.at(-1));\n\n\t\tif (index !== 0) {\n\t\t\tif (rowLength >= columns && (options.wordWrap === false || options.trim === false)) {\n\t\t\t\t// If we start with a new word but the current row length equals the length of the columns, add a new row\n\t\t\t\trows.push('');\n\t\t\t\trowLength = 0;\n\t\t\t}\n\n\t\t\tif (rowLength > 0 || options.trim === false) {\n\t\t\t\trows[rows.length - 1] += ' ';\n\t\t\t\trowLength++;\n\t\t\t}\n\t\t}\n\n\t\t// In 'hard' wrap mode, the length of a line is never allowed to extend past 'columns'\n\t\tif (options.hard && lengths[index] > columns) {\n\t\t\tconst remainingColumns = (columns - rowLength);\n\t\t\tconst breaksStartingThisLine = 1 + Math.floor((lengths[index] - remainingColumns - 1) / columns);\n\t\t\tconst breaksStartingNextLine = Math.floor((lengths[index] - 1) / columns);\n\t\t\tif (breaksStartingNextLine < breaksStartingThisLine) {\n\t\t\t\trows.push('');\n\t\t\t}\n\n\t\t\twrapWord(rows, word, columns);\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (rowLength + lengths[index] > columns && rowLength > 0 && lengths[index] > 0) {\n\t\t\tif (options.wordWrap === false && rowLength < columns) {\n\t\t\t\twrapWord(rows, word, columns);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\trows.push('');\n\t\t}\n\n\t\tif (rowLength + lengths[index] > columns && options.wordWrap === false) {\n\t\t\twrapWord(rows, word, columns);\n\t\t\tcontinue;\n\t\t}\n\n\t\trows[rows.length - 1] += word;\n\t}\n\n\tif (options.trim !== false) {\n\t\trows = rows.map(row => stringVisibleTrimSpacesRight(row));\n\t}\n\n\tconst preString = rows.join('\\n');\n\tconst pre = [...preString];\n\n\t// We need to keep a separate index as `String#slice()` works on Unicode code units, while `pre` is an array of codepoints.\n\tlet preStringIndex = 0;\n\n\tfor (const [index, character] of pre.entries()) {\n\t\treturnValue += character;\n\n\t\tif (ESCAPES.has(character)) {\n\t\t\tconst {groups} = new RegExp(`(?:\\\\${ANSI_CSI}(?<code>\\\\d+)m|\\\\${ANSI_ESCAPE_LINK}(?<uri>.*)${ANSI_ESCAPE_BELL})`).exec(preString.slice(preStringIndex)) || {groups: {}};\n\t\t\tif (groups.code !== undefined) {\n\t\t\t\tconst code = Number.parseFloat(groups.code);\n\t\t\t\tescapeCode = code === END_CODE ? undefined : code;\n\t\t\t} else if (groups.uri !== undefined) {\n\t\t\t\tescapeUrl = groups.uri.length === 0 ? undefined : groups.uri;\n\t\t\t}\n\t\t}\n\n\t\tconst code = ansiStyles.codes.get(Number(escapeCode));\n\n\t\tif (pre[index + 1] === '\\n') {\n\t\t\tif (escapeUrl) {\n\t\t\t\treturnValue += wrapAnsiHyperlink('');\n\t\t\t}\n\n\t\t\tif (escapeCode && code) {\n\t\t\t\treturnValue += wrapAnsiCode(code);\n\t\t\t}\n\t\t} else if (character === '\\n') {\n\t\t\tif (escapeCode && code) {\n\t\t\t\treturnValue += wrapAnsiCode(escapeCode);\n\t\t\t}\n\n\t\t\tif (escapeUrl) {\n\t\t\t\treturnValue += wrapAnsiHyperlink(escapeUrl);\n\t\t\t}\n\t\t}\n\n\t\tpreStringIndex += character.length;\n\t}\n\n\treturn returnValue;\n};\n\n// For each newline, invoke the method separately\nexport default function wrapAnsi(string, columns, options) {\n\treturn String(string)\n\t\t.normalize()\n\t\t.replaceAll('\\r\\n', '\\n')\n\t\t.split('\\n')\n\t\t.map(line => exec(line, columns, options))\n\t\t.join('\\n');\n}\n", "const ANSI_BACKGROUND_OFFSET = 10;\n\nconst wrapAnsi16 = (offset = 0) => code => `\\u001B[${code + offset}m`;\n\nconst wrapAnsi256 = (offset = 0) => code => `\\u001B[${38 + offset};5;${code}m`;\n\nconst wrapAnsi16m = (offset = 0) => (red, green, blue) => `\\u001B[${38 + offset};2;${red};${green};${blue}m`;\n\nconst styles = {\n\tmodifier: {\n\t\treset: [0, 0],\n\t\t// 21 isn't widely supported and 22 does the same thing\n\t\tbold: [1, 22],\n\t\tdim: [2, 22],\n\t\titalic: [3, 23],\n\t\tunderline: [4, 24],\n\t\toverline: [53, 55],\n\t\tinverse: [7, 27],\n\t\thidden: [8, 28],\n\t\tstrikethrough: [9, 29],\n\t},\n\tcolor: {\n\t\tblack: [30, 39],\n\t\tred: [31, 39],\n\t\tgreen: [32, 39],\n\t\tyellow: [33, 39],\n\t\tblue: [34, 39],\n\t\tmagenta: [35, 39],\n\t\tcyan: [36, 39],\n\t\twhite: [37, 39],\n\n\t\t// Bright color\n\t\tblackBright: [90, 39],\n\t\tgray: [90, 39], // Alias of `blackBright`\n\t\tgrey: [90, 39], // Alias of `blackBright`\n\t\tredBright: [91, 39],\n\t\tgreenBright: [92, 39],\n\t\tyellowBright: [93, 39],\n\t\tblueBright: [94, 39],\n\t\tmagentaBright: [95, 39],\n\t\tcyanBright: [96, 39],\n\t\twhiteBright: [97, 39],\n\t},\n\tbgColor: {\n\t\tbgBlack: [40, 49],\n\t\tbgRed: [41, 49],\n\t\tbgGreen: [42, 49],\n\t\tbgYellow: [43, 49],\n\t\tbgBlue: [44, 49],\n\t\tbgMagenta: [45, 49],\n\t\tbgCyan: [46, 49],\n\t\tbgWhite: [47, 49],\n\n\t\t// Bright color\n\t\tbgBlackBright: [100, 49],\n\t\tbgGray: [100, 49], // Alias of `bgBlackBright`\n\t\tbgGrey: [100, 49], // Alias of `bgBlackBright`\n\t\tbgRedBright: [101, 49],\n\t\tbgGreenBright: [102, 49],\n\t\tbgYellowBright: [103, 49],\n\t\tbgBlueBright: [104, 49],\n\t\tbgMagentaBright: [105, 49],\n\t\tbgCyanBright: [106, 49],\n\t\tbgWhiteBright: [107, 49],\n\t},\n};\n\nexport const modifierNames = Object.keys(styles.modifier);\nexport const foregroundColorNames = Object.keys(styles.color);\nexport const backgroundColorNames = Object.keys(styles.bgColor);\nexport const colorNames = [...foregroundColorNames, ...backgroundColorNames];\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\n\tfor (const [groupName, group] of Object.entries(styles)) {\n\t\tfor (const [styleName, style] of Object.entries(group)) {\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`,\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false,\n\t\t});\n\t}\n\n\tObject.defineProperty(styles, 'codes', {\n\t\tvalue: codes,\n\t\tenumerable: false,\n\t});\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tstyles.color.ansi = wrapAnsi16();\n\tstyles.color.ansi256 = wrapAnsi256();\n\tstyles.color.ansi16m = wrapAnsi16m();\n\tstyles.bgColor.ansi = wrapAnsi16(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi256 = wrapAnsi256(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi16m = wrapAnsi16m(ANSI_BACKGROUND_OFFSET);\n\n\t// From https://github.com/Qix-/color-convert/blob/3f0e0d4e92e235796ccb17f6e85c72094a651f49/conversions.js\n\tObject.defineProperties(styles, {\n\t\trgbToAnsi256: {\n\t\t\tvalue(red, green, blue) {\n\t\t\t\t// We use the extended greyscale palette here, with the exception of\n\t\t\t\t// black and white. normal palette only has 4 greyscale shades.\n\t\t\t\tif (red === green && green === blue) {\n\t\t\t\t\tif (red < 8) {\n\t\t\t\t\t\treturn 16;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (red > 248) {\n\t\t\t\t\t\treturn 231;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Math.round(((red - 8) / 247) * 24) + 232;\n\t\t\t\t}\n\n\t\t\t\treturn 16\n\t\t\t\t\t+ (36 * Math.round(red / 255 * 5))\n\t\t\t\t\t+ (6 * Math.round(green / 255 * 5))\n\t\t\t\t\t+ Math.round(blue / 255 * 5);\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToRgb: {\n\t\t\tvalue(hex) {\n\t\t\t\tconst matches = /[a-f\\d]{6}|[a-f\\d]{3}/i.exec(hex.toString(16));\n\t\t\t\tif (!matches) {\n\t\t\t\t\treturn [0, 0, 0];\n\t\t\t\t}\n\n\t\t\t\tlet [colorString] = matches;\n\n\t\t\t\tif (colorString.length === 3) {\n\t\t\t\t\tcolorString = [...colorString].map(character => character + character).join('');\n\t\t\t\t}\n\n\t\t\t\tconst integer = Number.parseInt(colorString, 16);\n\n\t\t\t\treturn [\n\t\t\t\t\t/* eslint-disable no-bitwise */\n\t\t\t\t\t(integer >> 16) & 0xFF,\n\t\t\t\t\t(integer >> 8) & 0xFF,\n\t\t\t\t\tinteger & 0xFF,\n\t\t\t\t\t/* eslint-enable no-bitwise */\n\t\t\t\t];\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToAnsi256: {\n\t\t\tvalue: hex => styles.rgbToAnsi256(...styles.hexToRgb(hex)),\n\t\t\tenumerable: false,\n\t\t},\n\t\tansi256ToAnsi: {\n\t\t\tvalue(code) {\n\t\t\t\tif (code < 8) {\n\t\t\t\t\treturn 30 + code;\n\t\t\t\t}\n\n\t\t\t\tif (code < 16) {\n\t\t\t\t\treturn 90 + (code - 8);\n\t\t\t\t}\n\n\t\t\t\tlet red;\n\t\t\t\tlet green;\n\t\t\t\tlet blue;\n\n\t\t\t\tif (code >= 232) {\n\t\t\t\t\tred = (((code - 232) * 10) + 8) / 255;\n\t\t\t\t\tgreen = red;\n\t\t\t\t\tblue = red;\n\t\t\t\t} else {\n\t\t\t\t\tcode -= 16;\n\n\t\t\t\t\tconst remainder = code % 36;\n\n\t\t\t\t\tred = Math.floor(code / 36) / 5;\n\t\t\t\t\tgreen = Math.floor(remainder / 6) / 5;\n\t\t\t\t\tblue = (remainder % 6) / 5;\n\t\t\t\t}\n\n\t\t\t\tconst value = Math.max(red, green, blue) * 2;\n\n\t\t\t\tif (value === 0) {\n\t\t\t\t\treturn 30;\n\t\t\t\t}\n\n\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\tlet result = 30 + ((Math.round(blue) << 2) | (Math.round(green) << 1) | Math.round(red));\n\n\t\t\t\tif (value === 2) {\n\t\t\t\t\tresult += 60;\n\t\t\t\t}\n\n\t\t\t\treturn result;\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\trgbToAnsi: {\n\t\t\tvalue: (red, green, blue) => styles.ansi256ToAnsi(styles.rgbToAnsi256(red, green, blue)),\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToAnsi: {\n\t\t\tvalue: hex => styles.ansi256ToAnsi(styles.hexToAnsi256(hex)),\n\t\t\tenumerable: false,\n\t\t},\n\t});\n\n\treturn styles;\n}\n\nconst ansiStyles = assembleStyles();\n\nexport default ansiStyles;\n", "import {\n\t_isFullWidth as isFullWidth,\n\t_isWide as isWide,\n} from 'get-east-asian-width';\n\nexport default function isFullwidthCodePoint(codePoint) {\n\tif (!Number.isInteger(codePoint)) {\n\t\treturn false;\n\t}\n\n\treturn isFullWidth(codePoint) || isWide(codePoint);\n}\n", "import ansiStyles from 'ansi-styles';\nimport isFullwidthCodePoint from 'is-fullwidth-code-point';\n\n// \\x1b and \\x9b\nconst ESCAPES = new Set([27, 155]);\n\nconst CODE_POINT_0 = '0'.codePointAt(0);\nconst CODE_POINT_9 = '9'.codePointAt(0);\n\nconst MAX_ANSI_SEQUENCE_LENGTH = 19;\n\nconst endCodesSet = new Set();\nconst endCodesMap = new Map();\nfor (const [start, end] of ansiStyles.codes) {\n\tendCodesSet.add(ansiStyles.color.ansi(end));\n\tendCodesMap.set(ansiStyles.color.ansi(start), ansiStyles.color.ansi(end));\n}\n\nfunction getEndCode(code) {\n\tif (endCodesSet.has(code)) {\n\t\treturn code;\n\t}\n\n\tif (endCodesMap.has(code)) {\n\t\treturn endCodesMap.get(code);\n\t}\n\n\tcode = code.slice(2);\n\tif (code.includes(';')) {\n\t\tcode = code[0] + '0';\n\t}\n\n\tconst returnValue = ansiStyles.codes.get(Number.parseInt(code, 10));\n\tif (returnValue) {\n\t\treturn ansiStyles.color.ansi(returnValue);\n\t}\n\n\treturn ansiStyles.reset.open;\n}\n\nfunction findNumberIndex(string) {\n\tfor (let index = 0; index < string.length; index++) {\n\t\tconst codePoint = string.codePointAt(index);\n\t\tif (codePoint >= CODE_POINT_0 && codePoint <= CODE_POINT_9) {\n\t\t\treturn index;\n\t\t}\n\t}\n\n\treturn -1;\n}\n\nfunction parseAnsiCode(string, offset) {\n\tstring = string.slice(offset, offset + MAX_ANSI_SEQUENCE_LENGTH);\n\tconst startIndex = findNumberIndex(string);\n\tif (startIndex !== -1) {\n\t\tlet endIndex = string.indexOf('m', startIndex);\n\t\tif (endIndex === -1) {\n\t\t\tendIndex = string.length;\n\t\t}\n\n\t\treturn string.slice(0, endIndex + 1);\n\t}\n}\n\nfunction tokenize(string, endCharacter = Number.POSITIVE_INFINITY) {\n\tconst returnValue = [];\n\n\tlet index = 0;\n\tlet visibleCount = 0;\n\twhile (index < string.length) {\n\t\tconst codePoint = string.codePointAt(index);\n\n\t\tif (ESCAPES.has(codePoint)) {\n\t\t\tconst code = parseAnsiCode(string, index);\n\t\t\tif (code) {\n\t\t\t\treturnValue.push({\n\t\t\t\t\ttype: 'ansi',\n\t\t\t\t\tcode,\n\t\t\t\t\tendCode: getEndCode(code),\n\t\t\t\t});\n\t\t\t\tindex += code.length;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\n\t\tconst isFullWidth = isFullwidthCodePoint(codePoint);\n\t\tconst character = String.fromCodePoint(codePoint);\n\n\t\treturnValue.push({\n\t\t\ttype: 'character',\n\t\t\tvalue: character,\n\t\t\tisFullWidth,\n\t\t});\n\n\t\tindex += character.length;\n\t\tvisibleCount += isFullWidth ? 2 : character.length;\n\n\t\tif (visibleCount >= endCharacter) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn returnValue;\n}\n\nfunction reduceAnsiCodes(codes) {\n\tlet returnValue = [];\n\n\tfor (const code of codes) {\n\t\tif (code.code === ansiStyles.reset.open) {\n\t\t\t// Reset code, disable all codes\n\t\t\treturnValue = [];\n\t\t} else if (endCodesSet.has(code.code)) {\n\t\t\t// This is an end code, disable all matching start codes\n\t\t\treturnValue = returnValue.filter(returnValueCode => returnValueCode.endCode !== code.code);\n\t\t} else {\n\t\t\t// This is a start code. Disable all styles this \"overrides\", then enable it\n\t\t\treturnValue = returnValue.filter(returnValueCode => returnValueCode.endCode !== code.endCode);\n\t\t\treturnValue.push(code);\n\t\t}\n\t}\n\n\treturn returnValue;\n}\n\nfunction undoAnsiCodes(codes) {\n\tconst reduced = reduceAnsiCodes(codes);\n\tconst endCodes = reduced.map(({endCode}) => endCode);\n\treturn endCodes.reverse().join('');\n}\n\nexport default function sliceAnsi(string, start, end) {\n\tconst tokens = tokenize(string, end);\n\tlet activeCodes = [];\n\tlet position = 0;\n\tlet returnValue = '';\n\tlet include = false;\n\n\tfor (const token of tokens) {\n\t\tif (end !== undefined && position >= end) {\n\t\t\tbreak;\n\t\t}\n\n\t\tif (token.type === 'ansi') {\n\t\t\tactiveCodes.push(token);\n\t\t\tif (include) {\n\t\t\t\treturnValue += token.code;\n\t\t\t}\n\t\t} else {\n\t\t\t// Character\n\t\t\tif (!include && position >= start) {\n\t\t\t\tinclude = true;\n\t\t\t\t// Simplify active codes\n\t\t\t\tactiveCodes = reduceAnsiCodes(activeCodes);\n\t\t\t\treturnValue = activeCodes.map(({code}) => code).join('');\n\t\t\t}\n\n\t\t\tif (include) {\n\t\t\t\treturnValue += token.value;\n\t\t\t}\n\n\t\t\tposition += token.isFullWidth ? 2 : token.value.length;\n\t\t}\n\t}\n\n\t// Disable active codes at the end\n\treturnValue += undoAnsiCodes(activeCodes);\n\treturn returnValue;\n}\n", "import process from 'node:process';\nimport ansiEscapes from 'ansi-escapes';\nimport cliCursor from 'cli-cursor';\nimport wrapAnsi from 'wrap-ansi';\nimport sliceAnsi from 'slice-ansi';\nimport stripAnsi from 'strip-ansi';\n\nconst defaultTerminalHeight = 24;\n\nconst getWidth = ({columns = 80}) => columns;\n\nconst fitToTerminalHeight = (stream, text) => {\n\tconst terminalHeight = stream.rows ?? defaultTerminalHeight;\n\tconst lines = text.split('\\n');\n\tconst toRemove = Math.max(0, lines.length - terminalHeight);\n\treturn toRemove ? sliceAnsi(text, stripAnsi(lines.slice(0, toRemove).join('\\n')).length + 1) : text;\n};\n\nexport function createLogUpdate(stream, {showCursor = false} = {}) {\n\tlet previousLineCount = 0;\n\tlet previousWidth = getWidth(stream);\n\tlet previousOutput = '';\n\n\tconst reset = () => {\n\t\tpreviousOutput = '';\n\t\tpreviousWidth = getWidth(stream);\n\t\tpreviousLineCount = 0;\n\t};\n\n\tconst render = (...arguments_) => {\n\t\tif (!showCursor) {\n\t\t\tcliCursor.hide();\n\t\t}\n\n\t\tlet output = fitToTerminalHeight(stream, arguments_.join(' ') + '\\n');\n\t\tconst width = getWidth(stream);\n\n\t\tif (output === previousOutput && previousWidth === width) {\n\t\t\treturn;\n\t\t}\n\n\t\tpreviousOutput = output;\n\t\tpreviousWidth = width;\n\t\toutput = wrapAnsi(output, width, {trim: false, hard: true, wordWrap: false});\n\n\t\tstream.write(ansiEscapes.eraseLines(previousLineCount) + output);\n\t\tpreviousLineCount = output.split('\\n').length;\n\t};\n\n\trender.clear = () => {\n\t\tstream.write(ansiEscapes.eraseLines(previousLineCount));\n\t\treset();\n\t};\n\n\trender.done = () => {\n\t\treset();\n\t\tif (!showCursor) {\n\t\t\tcliCursor.show();\n\t\t}\n\t};\n\n\treturn render;\n}\n\nconst logUpdate = createLogUpdate(process.stdout);\nexport default logUpdate;\n\nexport const logUpdateStderr = createLogUpdate(process.stderr);\n", "const ANSI_BACKGROUND_OFFSET = 10;\n\nconst wrapAnsi16 = (offset = 0) => code => `\\u001B[${code + offset}m`;\n\nconst wrapAnsi256 = (offset = 0) => code => `\\u001B[${38 + offset};5;${code}m`;\n\nconst wrapAnsi16m = (offset = 0) => (red, green, blue) => `\\u001B[${38 + offset};2;${red};${green};${blue}m`;\n\nconst styles = {\n\tmodifier: {\n\t\treset: [0, 0],\n\t\t// 21 isn't widely supported and 22 does the same thing\n\t\tbold: [1, 22],\n\t\tdim: [2, 22],\n\t\titalic: [3, 23],\n\t\tunderline: [4, 24],\n\t\toverline: [53, 55],\n\t\tinverse: [7, 27],\n\t\thidden: [8, 28],\n\t\tstrikethrough: [9, 29],\n\t},\n\tcolor: {\n\t\tblack: [30, 39],\n\t\tred: [31, 39],\n\t\tgreen: [32, 39],\n\t\tyellow: [33, 39],\n\t\tblue: [34, 39],\n\t\tmagenta: [35, 39],\n\t\tcyan: [36, 39],\n\t\twhite: [37, 39],\n\n\t\t// Bright color\n\t\tblackBright: [90, 39],\n\t\tgray: [90, 39], // Alias of `blackBright`\n\t\tgrey: [90, 39], // Alias of `blackBright`\n\t\tredBright: [91, 39],\n\t\tgreenBright: [92, 39],\n\t\tyellowBright: [93, 39],\n\t\tblueBright: [94, 39],\n\t\tmagentaBright: [95, 39],\n\t\tcyanBright: [96, 39],\n\t\twhiteBright: [97, 39],\n\t},\n\tbgColor: {\n\t\tbgBlack: [40, 49],\n\t\tbgRed: [41, 49],\n\t\tbgGreen: [42, 49],\n\t\tbgYellow: [43, 49],\n\t\tbgBlue: [44, 49],\n\t\tbgMagenta: [45, 49],\n\t\tbgCyan: [46, 49],\n\t\tbgWhite: [47, 49],\n\n\t\t// Bright color\n\t\tbgBlackBright: [100, 49],\n\t\tbgGray: [100, 49], // Alias of `bgBlackBright`\n\t\tbgGrey: [100, 49], // Alias of `bgBlackBright`\n\t\tbgRedBright: [101, 49],\n\t\tbgGreenBright: [102, 49],\n\t\tbgYellowBright: [103, 49],\n\t\tbgBlueBright: [104, 49],\n\t\tbgMagentaBright: [105, 49],\n\t\tbgCyanBright: [106, 49],\n\t\tbgWhiteBright: [107, 49],\n\t},\n};\n\nexport const modifierNames = Object.keys(styles.modifier);\nexport const foregroundColorNames = Object.keys(styles.color);\nexport const backgroundColorNames = Object.keys(styles.bgColor);\nexport const colorNames = [...foregroundColorNames, ...backgroundColorNames];\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\n\tfor (const [groupName, group] of Object.entries(styles)) {\n\t\tfor (const [styleName, style] of Object.entries(group)) {\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`,\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false,\n\t\t});\n\t}\n\n\tObject.defineProperty(styles, 'codes', {\n\t\tvalue: codes,\n\t\tenumerable: false,\n\t});\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tstyles.color.ansi = wrapAnsi16();\n\tstyles.color.ansi256 = wrapAnsi256();\n\tstyles.color.ansi16m = wrapAnsi16m();\n\tstyles.bgColor.ansi = wrapAnsi16(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi256 = wrapAnsi256(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi16m = wrapAnsi16m(ANSI_BACKGROUND_OFFSET);\n\n\t// From https://github.com/Qix-/color-convert/blob/3f0e0d4e92e235796ccb17f6e85c72094a651f49/conversions.js\n\tObject.defineProperties(styles, {\n\t\trgbToAnsi256: {\n\t\t\tvalue(red, green, blue) {\n\t\t\t\t// We use the extended greyscale palette here, with the exception of\n\t\t\t\t// black and white. normal palette only has 4 greyscale shades.\n\t\t\t\tif (red === green && green === blue) {\n\t\t\t\t\tif (red < 8) {\n\t\t\t\t\t\treturn 16;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (red > 248) {\n\t\t\t\t\t\treturn 231;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Math.round(((red - 8) / 247) * 24) + 232;\n\t\t\t\t}\n\n\t\t\t\treturn 16\n\t\t\t\t\t+ (36 * Math.round(red / 255 * 5))\n\t\t\t\t\t+ (6 * Math.round(green / 255 * 5))\n\t\t\t\t\t+ Math.round(blue / 255 * 5);\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToRgb: {\n\t\t\tvalue(hex) {\n\t\t\t\tconst matches = /[a-f\\d]{6}|[a-f\\d]{3}/i.exec(hex.toString(16));\n\t\t\t\tif (!matches) {\n\t\t\t\t\treturn [0, 0, 0];\n\t\t\t\t}\n\n\t\t\t\tlet [colorString] = matches;\n\n\t\t\t\tif (colorString.length === 3) {\n\t\t\t\t\tcolorString = [...colorString].map(character => character + character).join('');\n\t\t\t\t}\n\n\t\t\t\tconst integer = Number.parseInt(colorString, 16);\n\n\t\t\t\treturn [\n\t\t\t\t\t/* eslint-disable no-bitwise */\n\t\t\t\t\t(integer >> 16) & 0xFF,\n\t\t\t\t\t(integer >> 8) & 0xFF,\n\t\t\t\t\tinteger & 0xFF,\n\t\t\t\t\t/* eslint-enable no-bitwise */\n\t\t\t\t];\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToAnsi256: {\n\t\t\tvalue: hex => styles.rgbToAnsi256(...styles.hexToRgb(hex)),\n\t\t\tenumerable: false,\n\t\t},\n\t\tansi256ToAnsi: {\n\t\t\tvalue(code) {\n\t\t\t\tif (code < 8) {\n\t\t\t\t\treturn 30 + code;\n\t\t\t\t}\n\n\t\t\t\tif (code < 16) {\n\t\t\t\t\treturn 90 + (code - 8);\n\t\t\t\t}\n\n\t\t\t\tlet red;\n\t\t\t\tlet green;\n\t\t\t\tlet blue;\n\n\t\t\t\tif (code >= 232) {\n\t\t\t\t\tred = (((code - 232) * 10) + 8) / 255;\n\t\t\t\t\tgreen = red;\n\t\t\t\t\tblue = red;\n\t\t\t\t} else {\n\t\t\t\t\tcode -= 16;\n\n\t\t\t\t\tconst remainder = code % 36;\n\n\t\t\t\t\tred = Math.floor(code / 36) / 5;\n\t\t\t\t\tgreen = Math.floor(remainder / 6) / 5;\n\t\t\t\t\tblue = (remainder % 6) / 5;\n\t\t\t\t}\n\n\t\t\t\tconst value = Math.max(red, green, blue) * 2;\n\n\t\t\t\tif (value === 0) {\n\t\t\t\t\treturn 30;\n\t\t\t\t}\n\n\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\tlet result = 30 + ((Math.round(blue) << 2) | (Math.round(green) << 1) | Math.round(red));\n\n\t\t\t\tif (value === 2) {\n\t\t\t\t\tresult += 60;\n\t\t\t\t}\n\n\t\t\t\treturn result;\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\trgbToAnsi: {\n\t\t\tvalue: (red, green, blue) => styles.ansi256ToAnsi(styles.rgbToAnsi256(red, green, blue)),\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToAnsi: {\n\t\t\tvalue: hex => styles.ansi256ToAnsi(styles.hexToAnsi256(hex)),\n\t\t\tenumerable: false,\n\t\t},\n\t});\n\n\treturn styles;\n}\n\nconst ansiStyles = assembleStyles();\n\nexport default ansiStyles;\n", "import ansiStyles from 'ansi-styles';\nimport isFullwidthCodePoint from 'is-fullwidth-code-point';\n\nconst ESCAPE_CODE_POINT = 27;\nconst C1_DCS_CODE_POINT = 144;\nconst C1_SOS_CODE_POINT = 152;\nconst C1_CSI_CODE_POINT = 155;\nconst C1_ST_CODE_POINT = 156;\nconst C1_OSC_CODE_POINT = 157;\nconst C1_PM_CODE_POINT = 158;\nconst C1_APC_CODE_POINT = 159;\nconst ESCAPES = new Set([\n\tESCAPE_CODE_POINT,\n\tC1_DCS_CODE_POINT,\n\tC1_SOS_CODE_POINT,\n\tC1_CSI_CODE_POINT,\n\tC1_ST_CODE_POINT,\n\tC1_OSC_CODE_POINT,\n\tC1_PM_CODE_POINT,\n\tC1_APC_CODE_POINT,\n]);\n\nconst ESCAPE = '\\u001B';\nconst ANSI_BELL = '\\u0007';\nconst ANSI_CSI = '[';\nconst ANSI_OSC = ']';\nconst ANSI_DCS = 'P';\nconst ANSI_SOS = 'X';\nconst ANSI_PM = '^';\nconst ANSI_APC = '_';\nconst ANSI_SGR_TERMINATOR = 'm';\nconst ANSI_OSC_TERMINATOR = '\\\\';\nconst ANSI_STRING_TERMINATOR = `${ESCAPE}${ANSI_OSC_TERMINATOR}`;\nconst C1_OSC = '\\u009D';\nconst C1_STRING_TERMINATOR = '\\u009C';\nconst ANSI_HYPERLINK_ESC_PREFIX = `${ESCAPE}${ANSI_OSC}8;`;\nconst ANSI_HYPERLINK_C1_PREFIX = `${C1_OSC}8;`;\nconst ANSI_HYPERLINK_ESC_CLOSE = `${ANSI_HYPERLINK_ESC_PREFIX};`;\nconst ANSI_HYPERLINK_C1_CLOSE = `${ANSI_HYPERLINK_C1_PREFIX};`;\n\nconst CODE_POINT_0 = '0'.codePointAt(0);\nconst CODE_POINT_9 = '9'.codePointAt(0);\nconst CODE_POINT_SEMICOLON = ';'.codePointAt(0);\nconst CODE_POINT_COLON = ':'.codePointAt(0);\n// ECMA-48 CSI format: parameter bytes 0x30-0x3F, intermediates 0x20-0x2F, final 0x40-0x7E.\nconst CODE_POINT_CSI_PARAMETER_START = '0'.codePointAt(0);\nconst CODE_POINT_CSI_PARAMETER_END = '?'.codePointAt(0);\nconst CODE_POINT_CSI_INTERMEDIATE_START = ' '.codePointAt(0);\nconst CODE_POINT_CSI_INTERMEDIATE_END = '/'.codePointAt(0);\nconst CODE_POINT_CSI_FINAL_START = '@'.codePointAt(0);\nconst CODE_POINT_CSI_FINAL_END = '~'.codePointAt(0);\nconst REGIONAL_INDICATOR_SYMBOL_LETTER_A = 127_462;\nconst REGIONAL_INDICATOR_SYMBOL_LETTER_Z = 127_487;\nconst SGR_RESET_CODE = 0;\nconst SGR_EXTENDED_FOREGROUND_CODE = 38;\nconst SGR_DEFAULT_FOREGROUND_CODE = 39;\nconst SGR_EXTENDED_BACKGROUND_CODE = 48;\nconst SGR_DEFAULT_BACKGROUND_CODE = 49;\nconst SGR_COLOR_TYPE_ANSI_256 = 5;\nconst SGR_COLOR_TYPE_TRUECOLOR = 2;\nconst SGR_ANSI_256_FRAGMENT_LENGTH = 3;\nconst SGR_TRUECOLOR_FRAGMENT_LENGTH = 5;\nconst SGR_ANSI_256_LAST_PARAMETER_OFFSET = 2;\nconst SGR_TRUECOLOR_LAST_PARAMETER_OFFSET = 4;\nconst VARIATION_SELECTOR_16_CODE_POINT = 65_039;\nconst COMBINING_ENCLOSING_KEYCAP_CODE_POINT = 8419;\nconst EMOJI_PRESENTATION_GRAPHEME_REGEX = /\\p{Emoji_Presentation}/u;\nconst GRAPHEME_SEGMENTER = new Intl.Segmenter(undefined, {granularity: 'grapheme'});\n\nconst endCodeNumbers = new Set();\nfor (const [, end] of ansiStyles.codes) {\n\tendCodeNumbers.add(end);\n}\n\nfunction isSgrParameterCharacter(codePoint) {\n\treturn (\n\t\t(codePoint >= CODE_POINT_0 && codePoint <= CODE_POINT_9)\n\t\t|| codePoint === CODE_POINT_SEMICOLON\n\t\t|| codePoint === CODE_POINT_COLON\n\t);\n}\n\nfunction isCsiParameterCharacter(codePoint) {\n\treturn codePoint >= CODE_POINT_CSI_PARAMETER_START && codePoint <= CODE_POINT_CSI_PARAMETER_END;\n}\n\nfunction isCsiIntermediateCharacter(codePoint) {\n\treturn codePoint >= CODE_POINT_CSI_INTERMEDIATE_START && codePoint <= CODE_POINT_CSI_INTERMEDIATE_END;\n}\n\nfunction isCsiFinalCharacter(codePoint) {\n\treturn codePoint >= CODE_POINT_CSI_FINAL_START && codePoint <= CODE_POINT_CSI_FINAL_END;\n}\n\nfunction isRegionalIndicatorCodePoint(codePoint) {\n\treturn codePoint >= REGIONAL_INDICATOR_SYMBOL_LETTER_A && codePoint <= REGIONAL_INDICATOR_SYMBOL_LETTER_Z;\n}\n\nfunction createControlParseResult(code, endIndex) {\n\treturn {\n\t\ttoken: {\n\t\t\ttype: 'control',\n\t\t\tcode,\n\t\t},\n\t\tendIndex,\n\t};\n}\n\nfunction isEmojiStyleGrapheme(grapheme) {\n\tif (EMOJI_PRESENTATION_GRAPHEME_REGEX.test(grapheme)) {\n\t\treturn true;\n\t}\n\n\tfor (const character of grapheme) {\n\t\tconst codePoint = character.codePointAt(0);\n\t\tif (\n\t\t\tcodePoint === VARIATION_SELECTOR_16_CODE_POINT\n\t\t\t|| codePoint === COMBINING_ENCLOSING_KEYCAP_CODE_POINT\n\t\t) {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n}\n\nfunction getGraphemeWidth(grapheme) {\n\tlet regionalIndicatorCount = 0;\n\tfor (const character of grapheme) {\n\t\tconst codePoint = character.codePointAt(0);\n\t\tif (isFullwidthCodePoint(codePoint)) {\n\t\t\treturn 2;\n\t\t}\n\n\t\tif (isRegionalIndicatorCodePoint(codePoint)) {\n\t\t\tregionalIndicatorCount++;\n\t\t}\n\t}\n\n\tif (regionalIndicatorCount >= 1) {\n\t\treturn 2;\n\t}\n\n\tif (isEmojiStyleGrapheme(grapheme)) {\n\t\treturn 2;\n\t}\n\n\treturn 1;\n}\n\nfunction getSgrPrefix(code) {\n\tif (code.startsWith('\\u009B')) {\n\t\treturn '\\u009B';\n\t}\n\n\treturn `${ESCAPE}${ANSI_CSI}`;\n}\n\nfunction createSgrCode(prefix, values) {\n\treturn `${prefix}${values.join(';')}${ANSI_SGR_TERMINATOR}`;\n}\n\nfunction getSgrFragments(code) {\n\tconst fragments = [];\n\tconst sgrPrefix = getSgrPrefix(code);\n\tlet parameterString;\n\n\tif (code.startsWith(`${ESCAPE}${ANSI_CSI}`)) {\n\t\tparameterString = code.slice(2, -1);\n\t} else if (code.startsWith('\\u009B')) {\n\t\tparameterString = code.slice(1, -1);\n\t} else {\n\t\treturn fragments;\n\t}\n\n\tconst rawCodes = parameterString.length === 0 ? [String(SGR_RESET_CODE)] : parameterString.split(';');\n\tlet index = 0;\n\twhile (index < rawCodes.length) {\n\t\tconst codeNumber = Number.parseInt(rawCodes[index], 10);\n\t\tif (Number.isNaN(codeNumber)) {\n\t\t\tindex++;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (codeNumber === SGR_RESET_CODE) {\n\t\t\tfragments.push({type: 'reset'});\n\t\t\tindex++;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (codeNumber === SGR_EXTENDED_FOREGROUND_CODE || codeNumber === SGR_EXTENDED_BACKGROUND_CODE) {\n\t\t\tconst colorType = Number.parseInt(rawCodes[index + 1], 10);\n\t\t\tif (colorType === SGR_COLOR_TYPE_ANSI_256 && index + SGR_ANSI_256_LAST_PARAMETER_OFFSET < rawCodes.length) {\n\t\t\t\tconst openCode = createSgrCode(sgrPrefix, rawCodes.slice(index, index + SGR_ANSI_256_FRAGMENT_LENGTH));\n\t\t\t\tfragments.push({\n\t\t\t\t\ttype: 'start',\n\t\t\t\t\tcode: openCode,\n\t\t\t\t\tendCode: ansiStyles.color.ansi(codeNumber === SGR_EXTENDED_FOREGROUND_CODE ? SGR_DEFAULT_FOREGROUND_CODE : SGR_DEFAULT_BACKGROUND_CODE),\n\t\t\t\t});\n\t\t\t\tindex += SGR_ANSI_256_FRAGMENT_LENGTH;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (colorType === SGR_COLOR_TYPE_TRUECOLOR && index + SGR_TRUECOLOR_LAST_PARAMETER_OFFSET < rawCodes.length) {\n\t\t\t\tconst openCode = createSgrCode(sgrPrefix, rawCodes.slice(index, index + SGR_TRUECOLOR_FRAGMENT_LENGTH));\n\t\t\t\tfragments.push({\n\t\t\t\t\ttype: 'start',\n\t\t\t\t\tcode: openCode,\n\t\t\t\t\tendCode: ansiStyles.color.ansi(codeNumber === SGR_EXTENDED_FOREGROUND_CODE ? SGR_DEFAULT_FOREGROUND_CODE : SGR_DEFAULT_BACKGROUND_CODE),\n\t\t\t\t});\n\t\t\t\tindex += SGR_TRUECOLOR_FRAGMENT_LENGTH;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst openCode = createSgrCode(sgrPrefix, [rawCodes[index]]);\n\t\t\tfragments.push({\n\t\t\t\ttype: 'start',\n\t\t\t\tcode: openCode,\n\t\t\t\tendCode: ansiStyles.color.ansi(codeNumber === SGR_EXTENDED_FOREGROUND_CODE ? SGR_DEFAULT_FOREGROUND_CODE : SGR_DEFAULT_BACKGROUND_CODE),\n\t\t\t});\n\t\t\tindex++;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (endCodeNumbers.has(codeNumber)) {\n\t\t\tfragments.push({\n\t\t\t\ttype: 'end',\n\t\t\t\tendCode: ansiStyles.color.ansi(codeNumber),\n\t\t\t});\n\t\t\tindex++;\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst mappedEndCode = ansiStyles.codes.get(codeNumber);\n\t\tif (mappedEndCode !== undefined) {\n\t\t\tconst openCode = createSgrCode(sgrPrefix, [rawCodes[index]]);\n\t\t\tfragments.push({\n\t\t\t\ttype: 'start',\n\t\t\t\tcode: openCode,\n\t\t\t\tendCode: ansiStyles.color.ansi(mappedEndCode),\n\t\t\t});\n\t\t\tindex++;\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst openCode = createSgrCode(sgrPrefix, [rawCodes[index]]);\n\t\tfragments.push({\n\t\t\ttype: 'start',\n\t\t\tcode: openCode,\n\t\t\tendCode: ansiStyles.reset.open,\n\t\t});\n\t\tindex++;\n\t}\n\n\tif (fragments.length === 0) {\n\t\tfragments.push({type: 'reset'});\n\t}\n\n\treturn fragments;\n}\n\nfunction parseCsiCode(string, index) {\n\tconst escapeCodePoint = string.codePointAt(index);\n\tlet sequenceStartIndex;\n\n\tif (escapeCodePoint === ESCAPE_CODE_POINT) {\n\t\tif (string[index + 1] !== ANSI_CSI) {\n\t\t\treturn;\n\t\t}\n\n\t\tsequenceStartIndex = index + 2;\n\t} else if (escapeCodePoint === C1_CSI_CODE_POINT) {\n\t\tsequenceStartIndex = index + 1;\n\t} else {\n\t\treturn;\n\t}\n\n\tlet hasCanonicalSgrParameters = true;\n\tfor (let sequenceIndex = sequenceStartIndex; sequenceIndex < string.length; sequenceIndex++) {\n\t\tconst codePoint = string.codePointAt(sequenceIndex);\n\n\t\tif (isCsiFinalCharacter(codePoint)) {\n\t\t\tconst code = string.slice(index, sequenceIndex + 1);\n\t\t\tif (string[sequenceIndex] !== ANSI_SGR_TERMINATOR || !hasCanonicalSgrParameters) {\n\t\t\t\treturn createControlParseResult(code, sequenceIndex + 1);\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\ttoken: {\n\t\t\t\t\ttype: 'sgr',\n\t\t\t\t\tcode,\n\t\t\t\t\tfragments: getSgrFragments(code),\n\t\t\t\t},\n\t\t\t\tendIndex: sequenceIndex + 1,\n\t\t\t};\n\t\t}\n\n\t\tif (isCsiParameterCharacter(codePoint)) {\n\t\t\tif (!isSgrParameterCharacter(codePoint)) {\n\t\t\t\thasCanonicalSgrParameters = false;\n\t\t\t}\n\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (isCsiIntermediateCharacter(codePoint)) {\n\t\t\thasCanonicalSgrParameters = false;\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst endIndex = sequenceIndex;\n\t\treturn createControlParseResult(string.slice(index, endIndex), endIndex);\n\t}\n\n\treturn createControlParseResult(string.slice(index), string.length);\n}\n\nfunction parseHyperlinkCode(string, index) {\n\tlet hyperlinkPrefix;\n\tlet hyperlinkClose;\n\tconst codePoint = string.codePointAt(index);\n\n\tif (\n\t\tcodePoint === ESCAPE_CODE_POINT\n\t\t&& string.startsWith(ANSI_HYPERLINK_ESC_PREFIX, index)\n\t) {\n\t\thyperlinkPrefix = ANSI_HYPERLINK_ESC_PREFIX;\n\t\thyperlinkClose = ANSI_HYPERLINK_ESC_CLOSE;\n\t} else if (\n\t\tcodePoint === C1_OSC_CODE_POINT\n\t\t&& string.startsWith(ANSI_HYPERLINK_C1_PREFIX, index)\n\t) {\n\t\thyperlinkPrefix = ANSI_HYPERLINK_C1_PREFIX;\n\t\thyperlinkClose = ANSI_HYPERLINK_C1_CLOSE;\n\t} else {\n\t\treturn;\n\t}\n\n\tconst uriStart = string.indexOf(';', index + hyperlinkPrefix.length);\n\tif (uriStart === -1) {\n\t\treturn createControlParseResult(string.slice(index), string.length);\n\t}\n\n\tfor (let sequenceIndex = uriStart + 1; sequenceIndex < string.length; sequenceIndex++) {\n\t\tconst character = string[sequenceIndex];\n\n\t\tif (character === ANSI_BELL) {\n\t\t\tconst code = string.slice(index, sequenceIndex + 1);\n\t\t\tconst action = sequenceIndex === uriStart + 1 ? 'close' : 'open';\n\t\t\treturn {\n\t\t\t\ttoken: {\n\t\t\t\t\ttype: 'hyperlink',\n\t\t\t\t\tcode,\n\t\t\t\t\taction,\n\t\t\t\t\tclosePrefix: hyperlinkClose,\n\t\t\t\t\tterminator: ANSI_BELL,\n\t\t\t\t},\n\t\t\t\tendIndex: sequenceIndex + 1,\n\t\t\t};\n\t\t}\n\n\t\tif (\n\t\t\tcharacter === ESCAPE\n\t\t\t&& string[sequenceIndex + 1] === ANSI_OSC_TERMINATOR\n\t\t) {\n\t\t\tconst code = string.slice(index, sequenceIndex + 2);\n\t\t\tconst action = sequenceIndex === uriStart + 1 ? 'close' : 'open';\n\t\t\treturn {\n\t\t\t\ttoken: {\n\t\t\t\t\ttype: 'hyperlink',\n\t\t\t\t\tcode,\n\t\t\t\t\taction,\n\t\t\t\t\tclosePrefix: hyperlinkClose,\n\t\t\t\t\tterminator: ANSI_STRING_TERMINATOR,\n\t\t\t\t},\n\t\t\t\tendIndex: sequenceIndex + 2,\n\t\t\t};\n\t\t}\n\n\t\tif (character === C1_STRING_TERMINATOR) {\n\t\t\tconst code = string.slice(index, sequenceIndex + 1);\n\t\t\tconst action = sequenceIndex === uriStart + 1 ? 'close' : 'open';\n\t\t\treturn {\n\t\t\t\ttoken: {\n\t\t\t\t\ttype: 'hyperlink',\n\t\t\t\t\tcode,\n\t\t\t\t\taction,\n\t\t\t\t\tclosePrefix: hyperlinkClose,\n\t\t\t\t\tterminator: C1_STRING_TERMINATOR,\n\t\t\t\t},\n\t\t\t\tendIndex: sequenceIndex + 1,\n\t\t\t};\n\t\t}\n\t}\n\n\treturn createControlParseResult(string.slice(index), string.length);\n}\n\nfunction parseControlStringCode(string, index) {\n\tconst codePoint = string.codePointAt(index);\n\tlet sequenceStartIndex;\n\tlet supportsBellTerminator = false;\n\n\tswitch (codePoint) {\n\t\tcase ESCAPE_CODE_POINT: {\n\t\t\tconst command = string[index + 1];\n\t\t\tswitch (command) {\n\t\t\t\tcase ANSI_OSC: {\n\t\t\t\t\t// OSC accepts ST (ECMA-48) and BEL (xterm compatibility extension).\n\t\t\t\t\tsequenceStartIndex = index + 2;\n\t\t\t\t\tsupportsBellTerminator = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tcase ANSI_DCS:\n\t\t\t\tcase ANSI_SOS:\n\t\t\t\tcase ANSI_PM:\n\t\t\t\tcase ANSI_APC: {\n\t\t\t\t\tsequenceStartIndex = index + 2;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tcase ANSI_OSC_TERMINATOR: {\n\t\t\t\t\treturn createControlParseResult(ANSI_STRING_TERMINATOR, index + 2);\n\t\t\t\t}\n\n\t\t\t\tdefault: {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase C1_OSC_CODE_POINT: {\n\t\t\tsequenceStartIndex = index + 1;\n\t\t\tsupportsBellTerminator = true;\n\t\t\tbreak;\n\t\t}\n\n\t\tcase C1_DCS_CODE_POINT:\n\t\tcase C1_SOS_CODE_POINT:\n\t\tcase C1_PM_CODE_POINT:\n\t\tcase C1_APC_CODE_POINT: {\n\t\t\tsequenceStartIndex = index + 1;\n\t\t\tbreak;\n\t\t}\n\n\t\tcase C1_ST_CODE_POINT: {\n\t\t\treturn createControlParseResult(C1_STRING_TERMINATOR, index + 1);\n\t\t}\n\n\t\tdefault: {\n\t\t\treturn;\n\t\t}\n\t}\n\n\tfor (let sequenceIndex = sequenceStartIndex; sequenceIndex < string.length; sequenceIndex++) {\n\t\tif (supportsBellTerminator && string[sequenceIndex] === ANSI_BELL) {\n\t\t\treturn createControlParseResult(string.slice(index, sequenceIndex + 1), sequenceIndex + 1);\n\t\t}\n\n\t\tif (\n\t\t\tstring[sequenceIndex] === ESCAPE\n\t\t\t&& string[sequenceIndex + 1] === ANSI_OSC_TERMINATOR\n\t\t) {\n\t\t\treturn createControlParseResult(string.slice(index, sequenceIndex + 2), sequenceIndex + 2);\n\t\t}\n\n\t\tif (string[sequenceIndex] === C1_STRING_TERMINATOR) {\n\t\t\treturn createControlParseResult(string.slice(index, sequenceIndex + 1), sequenceIndex + 1);\n\t\t}\n\t}\n\n\treturn createControlParseResult(string.slice(index), string.length);\n}\n\nfunction parseAnsiCode(string, index) {\n\tconst codePoint = string.codePointAt(index);\n\tif (codePoint === ESCAPE_CODE_POINT || codePoint === C1_OSC_CODE_POINT) {\n\t\tconst hyperlinkCode = parseHyperlinkCode(string, index);\n\t\tif (hyperlinkCode) {\n\t\t\treturn hyperlinkCode;\n\t\t}\n\t}\n\n\tconst controlStringCode = parseControlStringCode(string, index);\n\tif (controlStringCode) {\n\t\treturn controlStringCode;\n\t}\n\n\treturn parseCsiCode(string, index);\n}\n\nfunction appendTrailingAnsiTokens(string, index, tokens) {\n\twhile (index < string.length) {\n\t\tconst nextCodePoint = string.codePointAt(index);\n\t\tif (!ESCAPES.has(nextCodePoint)) {\n\t\t\tbreak;\n\t\t}\n\n\t\tconst escapeCode = parseAnsiCode(string, index);\n\t\tif (!escapeCode) {\n\t\t\tbreak;\n\t\t}\n\n\t\ttokens.push(escapeCode.token);\n\t\tindex = escapeCode.endIndex;\n\t}\n\n\treturn index;\n}\n\nfunction parseCharacterTokenWithRawSegmentation(string, index, graphemeSegments) {\n\tconst segment = graphemeSegments.containing(index);\n\tif (!segment || segment.index !== index) {\n\t\treturn;\n\t}\n\n\treturn {\n\t\ttoken: {\n\t\t\ttype: 'character',\n\t\t\t// Intentionally preserve UAX29 behavior (GB3): CRLF is one grapheme cluster.\n\t\t\tvalue: segment.segment,\n\t\t\tvisibleWidth: getGraphemeWidth(segment.segment),\n\t\t\tisGraphemeContinuation: false,\n\t\t},\n\t\tendIndex: index + segment.segment.length,\n\t};\n}\n\nfunction collectVisibleCharacters(string) {\n\tconst visibleCharacters = [];\n\tlet index = 0;\n\n\twhile (index < string.length) {\n\t\tconst codePoint = string.codePointAt(index);\n\t\tif (ESCAPES.has(codePoint)) {\n\t\t\tconst code = parseAnsiCode(string, index);\n\t\t\tif (code) {\n\t\t\t\tindex = code.endIndex;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\n\t\tconst value = String.fromCodePoint(codePoint);\n\t\tvisibleCharacters.push({\n\t\t\tvalue,\n\t\t\tvisibleWidth: 1,\n\t\t\tisGraphemeContinuation: false,\n\t\t});\n\t\tindex += value.length;\n\t}\n\n\treturn visibleCharacters;\n}\n\nfunction applyGraphemeMetadata(visibleCharacters) {\n\tif (visibleCharacters.length === 0) {\n\t\treturn;\n\t}\n\n\tconst visibleString = visibleCharacters.map(({value}) => value).join('');\n\tconst scalarOffsets = [];\n\tlet scalarOffset = 0;\n\n\tfor (const visibleCharacter of visibleCharacters) {\n\t\tscalarOffsets.push(scalarOffset);\n\t\tscalarOffset += visibleCharacter.value.length;\n\t}\n\n\tlet scalarIndex = 0;\n\tfor (const segment of GRAPHEME_SEGMENTER.segment(visibleString)) {\n\t\twhile (\n\t\t\tscalarIndex < visibleCharacters.length\n\t\t\t&& scalarOffsets[scalarIndex] < segment.index\n\t\t) {\n\t\t\tscalarIndex++;\n\t\t}\n\n\t\tlet graphemeIndex = scalarIndex;\n\t\tlet isFirstInGrapheme = true;\n\t\twhile (\n\t\t\tgraphemeIndex < visibleCharacters.length\n\t\t\t&& scalarOffsets[graphemeIndex] < segment.index + segment.segment.length\n\t\t) {\n\t\t\tvisibleCharacters[graphemeIndex].visibleWidth = isFirstInGrapheme ? getGraphemeWidth(segment.segment) : 0;\n\t\t\tvisibleCharacters[graphemeIndex].isGraphemeContinuation = !isFirstInGrapheme;\n\t\t\tisFirstInGrapheme = false;\n\t\t\tgraphemeIndex++;\n\t\t}\n\n\t\tscalarIndex = graphemeIndex;\n\t}\n}\n\nfunction tokenizeAnsiWithVisibleSegmentation(string, {endCharacter = Number.POSITIVE_INFINITY} = {}) {\n\tconst tokens = [];\n\tconst visibleCharacters = collectVisibleCharacters(string);\n\tapplyGraphemeMetadata(visibleCharacters);\n\n\tlet index = 0;\n\tlet visibleCharacterIndex = 0;\n\tlet visibleCount = 0;\n\twhile (index < string.length) {\n\t\tconst codePoint = string.codePointAt(index);\n\n\t\tif (ESCAPES.has(codePoint)) {\n\t\t\tconst code = parseAnsiCode(string, index);\n\t\t\tif (code) {\n\t\t\t\ttokens.push(code.token);\n\t\t\t\tindex = code.endIndex;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\n\t\tconst value = String.fromCodePoint(codePoint);\n\t\tconst visibleCharacter = visibleCharacters[visibleCharacterIndex];\n\t\tlet visibleWidth = isFullwidthCodePoint(codePoint) ? 2 : value.length;\n\t\tif (visibleCharacter) {\n\t\t\tvisibleWidth = visibleCharacter.visibleWidth;\n\t\t}\n\n\t\tconst token = {\n\t\t\ttype: 'character',\n\t\t\tvalue,\n\t\t\tvisibleWidth,\n\t\t\tisGraphemeContinuation: visibleCharacter ? visibleCharacter.isGraphemeContinuation : false,\n\t\t};\n\n\t\ttokens.push(token);\n\t\tindex += value.length;\n\t\tvisibleCharacterIndex++;\n\t\tvisibleCount += token.visibleWidth;\n\n\t\tif (visibleCount >= endCharacter) {\n\t\t\tconst nextVisibleCharacter = visibleCharacters[visibleCharacterIndex];\n\t\t\tif (\n\t\t\t\t!nextVisibleCharacter\n\t\t\t\t|| !nextVisibleCharacter.isGraphemeContinuation\n\t\t\t) {\n\t\t\t\tindex = appendTrailingAnsiTokens(string, index, tokens);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn tokens;\n}\n\nfunction areValuesInSameGrapheme(leftValue, rightValue) {\n\tconst pair = `${leftValue}${rightValue}`;\n\tconst splitIndex = leftValue.length;\n\n\tfor (const segment of GRAPHEME_SEGMENTER.segment(pair)) {\n\t\tif (segment.index === splitIndex) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (segment.index > splitIndex) {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn true;\n}\n\nfunction hasAnsiSplitContinuationAhead(string, startIndex, previousVisibleValue, graphemeSegments) {\n\tif (!previousVisibleValue) {\n\t\treturn false;\n\t}\n\n\tlet index = startIndex;\n\tlet hasAnsiCode = false;\n\twhile (index < string.length) {\n\t\tconst codePoint = string.codePointAt(index);\n\t\tif (ESCAPES.has(codePoint)) {\n\t\t\tconst code = parseAnsiCode(string, index);\n\t\t\tif (code) {\n\t\t\t\thasAnsiCode = true;\n\t\t\t\tindex = code.endIndex;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\n\t\tif (!hasAnsiCode) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst characterToken = parseCharacterTokenWithRawSegmentation(string, index, graphemeSegments);\n\t\tif (!characterToken) {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn areValuesInSameGrapheme(previousVisibleValue, characterToken.token.value);\n\t}\n\n\treturn false;\n}\n\nexport default function tokenizeAnsi(string, {endCharacter = Number.POSITIVE_INFINITY} = {}) {\n\tconst tokens = [];\n\tconst graphemeSegments = GRAPHEME_SEGMENTER.segment(string);\n\n\tlet index = 0;\n\tlet visibleCount = 0;\n\tlet previousVisibleValue;\n\tlet hasAnsiSinceLastVisible = false;\n\twhile (index < string.length) {\n\t\tconst codePoint = string.codePointAt(index);\n\n\t\tif (ESCAPES.has(codePoint)) {\n\t\t\tconst code = parseAnsiCode(string, index);\n\t\t\tif (code) {\n\t\t\t\ttokens.push(code.token);\n\t\t\t\tindex = code.endIndex;\n\t\t\t\thasAnsiSinceLastVisible = true;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\n\t\tconst characterToken = parseCharacterTokenWithRawSegmentation(string, index, graphemeSegments);\n\t\tif (!characterToken) {\n\t\t\treturn tokenizeAnsiWithVisibleSegmentation(string, {endCharacter});\n\t\t}\n\n\t\tif (\n\t\t\thasAnsiSinceLastVisible\n\t\t\t&& previousVisibleValue\n\t\t\t&& areValuesInSameGrapheme(previousVisibleValue, characterToken.token.value)\n\t\t) {\n\t\t\treturn tokenizeAnsiWithVisibleSegmentation(string, {endCharacter});\n\t\t}\n\n\t\ttokens.push(characterToken.token);\n\t\tindex = characterToken.endIndex;\n\t\tvisibleCount += characterToken.token.visibleWidth;\n\t\thasAnsiSinceLastVisible = false;\n\t\tpreviousVisibleValue = characterToken.token.value;\n\n\t\tif (visibleCount >= endCharacter) {\n\t\t\tif (hasAnsiSplitContinuationAhead(string, index, previousVisibleValue, graphemeSegments)) {\n\t\t\t\treturn tokenizeAnsiWithVisibleSegmentation(string, {endCharacter});\n\t\t\t}\n\n\t\t\tindex = appendTrailingAnsiTokens(string, index, tokens);\n\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn tokens;\n}\n", "import tokenizeAnsi from './tokenize-ansi.js';\n\nfunction applySgrFragments(activeStyles, fragments) {\n\tfor (const fragment of fragments) {\n\t\tswitch (fragment.type) {\n\t\t\tcase 'reset': {\n\t\t\t\tactiveStyles.clear();\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase 'end': {\n\t\t\t\tactiveStyles.delete(fragment.endCode);\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase 'start': {\n\t\t\t\tactiveStyles.delete(fragment.endCode);\n\t\t\t\tactiveStyles.set(fragment.endCode, fragment.code);\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tdefault: {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn activeStyles;\n}\n\nfunction undoAnsiCodes(activeStyles) {\n\treturn [...activeStyles.keys()].reverse().join('');\n}\n\nfunction closeHyperlink(hyperlinkToken) {\n\treturn `${hyperlinkToken.closePrefix}${hyperlinkToken.terminator}`;\n}\n\nfunction shouldIncludeSgrAfterEnd(token, activeStyles) {\n\tlet hasStartFragment = false;\n\tlet hasClosingEffect = false;\n\n\tfor (const fragment of token.fragments) {\n\t\tif (fragment.type === 'start') {\n\t\t\thasStartFragment = true;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (fragment.type === 'reset' && activeStyles.size > 0) {\n\t\t\thasClosingEffect = true;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (fragment.type === 'end' && activeStyles.has(fragment.endCode)) {\n\t\t\thasClosingEffect = true;\n\t\t}\n\t}\n\n\treturn hasClosingEffect && !hasStartFragment;\n}\n\nfunction applySgrToken({token, isPastEnd, activeStyles, returnValue, include, activeHyperlink, position}) {\n\tif (isPastEnd && !shouldIncludeSgrAfterEnd(token, activeStyles)) {\n\t\treturn {\n\t\t\tactiveStyles,\n\t\t\tactiveHyperlink,\n\t\t\tposition,\n\t\t\treturnValue,\n\t\t\tinclude,\n\t\t};\n\t}\n\n\tactiveStyles = applySgrFragments(activeStyles, token.fragments);\n\tif (include) {\n\t\treturnValue += token.code;\n\t}\n\n\treturn {\n\t\tactiveStyles,\n\t\tactiveHyperlink,\n\t\tposition,\n\t\treturnValue,\n\t\tinclude,\n\t};\n}\n\nfunction applyHyperlinkToken({token, isPastEnd, activeStyles, activeHyperlink, position, returnValue, include}) {\n\tif (\n\t\tisPastEnd\n\t\t&& (\n\t\t\ttoken.action !== 'close'\n\t\t\t|| !activeHyperlink\n\t\t)\n\t) {\n\t\treturn {\n\t\t\tactiveStyles,\n\t\t\tactiveHyperlink,\n\t\t\tposition,\n\t\t\treturnValue,\n\t\t\tinclude,\n\t\t};\n\t}\n\n\tif (token.action === 'open') {\n\t\tactiveHyperlink = token;\n\t} else if (token.action === 'close') {\n\t\tactiveHyperlink = undefined;\n\t}\n\n\tif (include) {\n\t\treturnValue += token.code;\n\t}\n\n\treturn {\n\t\tactiveStyles,\n\t\tactiveHyperlink,\n\t\tposition,\n\t\treturnValue,\n\t\tinclude,\n\t};\n}\n\nfunction applyControlToken({token, isPastEnd, activeStyles, activeHyperlink, position, returnValue, include}) {\n\tif (!isPastEnd && include) {\n\t\treturnValue += token.code;\n\t}\n\n\treturn {\n\t\tactiveStyles,\n\t\tactiveHyperlink,\n\t\tposition,\n\t\treturnValue,\n\t\tinclude,\n\t};\n}\n\nfunction applyCharacterToken({token, start, activeStyles, activeHyperlink, position, returnValue, include}) {\n\tif (\n\t\t!include\n\t\t&& position >= start\n\t\t&& !token.isGraphemeContinuation\n\t) {\n\t\tinclude = true;\n\t\treturnValue = [...activeStyles.values()].join('');\n\t\tif (activeHyperlink) {\n\t\t\treturnValue += activeHyperlink.code;\n\t\t}\n\t}\n\n\tif (include) {\n\t\treturnValue += token.value;\n\t}\n\n\tposition += token.visibleWidth;\n\treturn {\n\t\tactiveStyles,\n\t\tactiveHyperlink,\n\t\tposition,\n\t\treturnValue,\n\t\tinclude,\n\t};\n}\n\nconst tokenHandlers = {\n\tsgr: applySgrToken,\n\thyperlink: applyHyperlinkToken,\n\tcontrol: applyControlToken,\n\tcharacter: applyCharacterToken,\n};\n\nfunction applyToken(parameters) {\n\tconst tokenHandler = tokenHandlers[parameters.token.type];\n\tif (!tokenHandler) {\n\t\tconst {\n\t\t\tactiveStyles,\n\t\t\tactiveHyperlink,\n\t\t\tposition,\n\t\t\treturnValue,\n\t\t\tinclude,\n\t\t} = parameters;\n\n\t\treturn {\n\t\t\tactiveStyles,\n\t\t\tactiveHyperlink,\n\t\t\tposition,\n\t\t\treturnValue,\n\t\t\tinclude,\n\t\t};\n\t}\n\n\treturn tokenHandler(parameters);\n}\n\nfunction createHasContinuationAheadMap(tokens) {\n\tconst hasContinuationAhead = Array.from({length: tokens.length}, () => false);\n\tlet nextCharacterIsContinuation = false;\n\n\tfor (let tokenIndex = tokens.length - 1; tokenIndex >= 0; tokenIndex--) {\n\t\tconst token = tokens[tokenIndex];\n\t\thasContinuationAhead[tokenIndex] = nextCharacterIsContinuation;\n\t\tif (token.type === 'character') {\n\t\t\tnextCharacterIsContinuation = Boolean(token.isGraphemeContinuation);\n\t\t}\n\t}\n\n\treturn hasContinuationAhead;\n}\n\nexport default function sliceAnsi(string, start, end) {\n\tconst tokens = tokenizeAnsi(string, {endCharacter: end});\n\tconst hasContinuationAhead = createHasContinuationAheadMap(tokens);\n\tlet activeStyles = new Map();\n\tlet activeHyperlink;\n\tlet position = 0;\n\tlet returnValue = '';\n\tlet include = false;\n\n\tfor (const [tokenIndex, token] of tokens.entries()) {\n\t\tlet isPastEnd = end !== undefined && position >= end;\n\t\tif (\n\t\t\tisPastEnd\n\t\t\t&& token.type !== 'character'\n\t\t\t&& hasContinuationAhead[tokenIndex]\n\t\t) {\n\t\t\tisPastEnd = false;\n\t\t}\n\n\t\tif (\n\t\t\tisPastEnd\n\t\t\t&& token.type === 'character'\n\t\t\t&& !token.isGraphemeContinuation\n\t\t) {\n\t\t\tbreak;\n\t\t}\n\n\t\t({activeStyles, activeHyperlink, position, returnValue, include} = applyToken({\n\t\t\ttoken,\n\t\t\tisPastEnd,\n\t\t\tstart,\n\t\t\tactiveStyles,\n\t\t\tactiveHyperlink,\n\t\t\tposition,\n\t\t\treturnValue,\n\t\t\tinclude,\n\t\t}));\n\t}\n\n\tif (!include) {\n\t\treturn '';\n\t}\n\n\tif (activeHyperlink) {\n\t\treturnValue += closeHyperlink(activeHyperlink);\n\t}\n\n\t// Disable active codes at the end\n\treturnValue += undoAnsiCodes(activeStyles);\n\n\treturn returnValue;\n}\n", "import stripAnsi from 'strip-ansi';\nimport {eastAsianWidth} from 'get-east-asian-width';\n\n/**\nLogic:\n- Segment graphemes to match how terminals render clusters.\n- Width rules:\n\t1. Skip non-printing clusters (Default_Ignorable, Control, pure Mark, lone Surrogates). Tabs are ignored by design.\n\t2. RGI emoji clusters (\\p{RGI_Emoji}) are double-width.\n\t3. Minimally-qualified/unqualified emoji clusters (ZWJ sequences with 2+ Extended_Pictographic, or keycap sequences) are double-width.\n\t4. Otherwise use East Asian Width of the cluster's first visible code point, and add widths for trailing Halfwidth/Fullwidth Forms within the same cluster (e.g., dakuten/handakuten/prolonged sound mark).\n*/\n\nconst segmenter = new Intl.Segmenter();\n\n// Whole-cluster zero-width\nconst zeroWidthClusterRegex = /^(?:\\p{Default_Ignorable_Code_Point}|\\p{Control}|\\p{Format}|\\p{Mark}|\\p{Surrogate})+$/v;\n\n// Pick the base scalar if the cluster starts with Prepend/Format/Marks\nconst leadingNonPrintingRegex = /^[\\p{Default_Ignorable_Code_Point}\\p{Control}\\p{Format}\\p{Mark}\\p{Surrogate}]+/v;\n\n// RGI emoji sequences\nconst rgiEmojiRegex = /^\\p{RGI_Emoji}$/v;\n\n// Detect minimally-qualified/unqualified emoji sequences (missing VS16 but still render as double-width)\nconst unqualifiedKeycapRegex = /^[\\d#*]\\u20E3$/;\nconst extendedPictographicRegex = /\\p{Extended_Pictographic}/gu;\n\nfunction isDoubleWidthNonRgiEmojiSequence(segment) {\n\t// Real emoji clusters are < 30 chars; guard against pathological input\n\tif (segment.length > 50) {\n\t\treturn false;\n\t}\n\n\tif (unqualifiedKeycapRegex.test(segment)) {\n\t\treturn true;\n\t}\n\n\t// ZWJ sequences with 2+ Extended_Pictographic\n\tif (segment.includes('\\u200D')) {\n\t\tconst pictographics = segment.match(extendedPictographicRegex);\n\t\treturn pictographics !== null && pictographics.length >= 2;\n\t}\n\n\treturn false;\n}\n\nfunction baseVisible(segment) {\n\treturn segment.replace(leadingNonPrintingRegex, '');\n}\n\nfunction isZeroWidthCluster(segment) {\n\treturn zeroWidthClusterRegex.test(segment);\n}\n\nfunction trailingHalfwidthWidth(segment, eastAsianWidthOptions) {\n\tlet extra = 0;\n\tif (segment.length > 1) {\n\t\tfor (const char of segment.slice(1)) {\n\t\t\tif (char >= '\\uFF00' && char <= '\\uFFEF') {\n\t\t\t\textra += eastAsianWidth(char.codePointAt(0), eastAsianWidthOptions);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn extra;\n}\n\nexport default function stringWidth(input, options = {}) {\n\tif (typeof input !== 'string' || input.length === 0) {\n\t\treturn 0;\n\t}\n\n\tconst {\n\t\tambiguousIsNarrow = true,\n\t\tcountAnsiEscapeCodes = false,\n\t} = options;\n\n\tlet string = input;\n\n\t// Avoid calling stripAnsi when there are no ANSI escape sequences (ESC = 0x1B, CSI = 0x9B)\n\tif (!countAnsiEscapeCodes && (string.includes('\\u001B') || string.includes('\\u009B'))) {\n\t\tstring = stripAnsi(string);\n\t}\n\n\tif (string.length === 0) {\n\t\treturn 0;\n\t}\n\n\t// Fast path: printable ASCII (0x20\u20130x7E) needs no segmenter, regex, or EAW lookup \u2014 width equals length.\n\tif (/^[\\u0020-\\u007E]*$/.test(string)) {\n\t\treturn string.length;\n\t}\n\n\tlet width = 0;\n\tconst eastAsianWidthOptions = {ambiguousAsWide: !ambiguousIsNarrow};\n\n\tfor (const {segment} of segmenter.segment(string)) {\n\t\t// Zero-width / non-printing clusters\n\t\tif (isZeroWidthCluster(segment)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Emoji width logic\n\t\tif (rgiEmojiRegex.test(segment) || isDoubleWidthNonRgiEmojiSequence(segment)) {\n\t\t\twidth += 2;\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Everything else: EAW of the cluster\u2019s first visible scalar\n\t\tconst codePoint = baseVisible(segment).codePointAt(0);\n\t\twidth += eastAsianWidth(codePoint, eastAsianWidthOptions);\n\n\t\t// Add width for trailing Halfwidth and Fullwidth Forms (e.g., \uFF9E, \uFF9F, \uFF70)\n\t\twidth += trailingHalfwidthWidth(segment, eastAsianWidthOptions);\n\t}\n\n\treturn width;\n}\n", "import sliceAnsi from 'slice-ansi';\nimport stringWidth from 'string-width';\n\nfunction getIndexOfNearestSpace(string, wantedIndex, shouldSearchRight) {\n\tif (string.charAt(wantedIndex) === ' ') {\n\t\treturn wantedIndex;\n\t}\n\n\tconst direction = shouldSearchRight ? 1 : -1;\n\n\tfor (let index = 0; index <= 3; index++) {\n\t\tconst finalIndex = wantedIndex + (index * direction);\n\t\tif (string.charAt(finalIndex) === ' ') {\n\t\t\treturn finalIndex;\n\t\t}\n\t}\n\n\treturn wantedIndex;\n}\n\nexport default function cliTruncate(text, columns, options = {}) {\n\tconst {\n\t\tposition = 'end',\n\t\tspace = false,\n\t\tpreferTruncationOnSpace = false,\n\t} = options;\n\n\tlet {truncationCharacter = '\u2026'} = options;\n\n\tif (typeof text !== 'string') {\n\t\tthrow new TypeError(`Expected \\`input\\` to be a string, got ${typeof text}`);\n\t}\n\n\tif (typeof columns !== 'number') {\n\t\tthrow new TypeError(`Expected \\`columns\\` to be a number, got ${typeof columns}`);\n\t}\n\n\tif (columns < 1) {\n\t\treturn '';\n\t}\n\n\tconst length = stringWidth(text);\n\n\tif (length <= columns) {\n\t\treturn text;\n\t}\n\n\tif (columns === 1) {\n\t\treturn truncationCharacter;\n\t}\n\n\t// ANSI escape sequence constants\n\tconst ANSI = {\n\t\tESC: 27,\n\t\tLEFT_BRACKET: 91,\n\t\tLETTER_M: 109,\n\t};\n\n\tconst isSgrParameter = code => (code >= 48 && code <= 57) || code === 59; // 0-9 or ;\n\n\tfunction leadingSgrSpanEndIndex(string) {\n\t\tlet index = 0;\n\t\twhile (index + 2 < string.length && string.codePointAt(index) === ANSI.ESC && string.codePointAt(index + 1) === ANSI.LEFT_BRACKET) {\n\t\t\tlet j = index + 2;\n\t\t\twhile (j < string.length && isSgrParameter(string.codePointAt(j))) {\n\t\t\t\tj++;\n\t\t\t}\n\n\t\t\tif (j < string.length && string.codePointAt(j) === ANSI.LETTER_M) {\n\t\t\t\tindex = j + 1;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tbreak;\n\t\t}\n\n\t\treturn index;\n\t}\n\n\tfunction trailingSgrSpanStartIndex(string) {\n\t\tlet start = string.length;\n\t\twhile (start > 1 && string.codePointAt(start - 1) === ANSI.LETTER_M) {\n\t\t\tlet j = start - 2;\n\t\t\twhile (j >= 0 && isSgrParameter(string.codePointAt(j))) {\n\t\t\t\tj--;\n\t\t\t}\n\n\t\t\tif (j >= 1 && string.codePointAt(j - 1) === ANSI.ESC && string.codePointAt(j) === ANSI.LEFT_BRACKET) {\n\t\t\t\tstart = j - 1;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tbreak;\n\t\t}\n\n\t\treturn start;\n\t}\n\n\tfunction appendWithInheritedStyleFromEnd(visible, suffix) {\n\t\tconst start = trailingSgrSpanStartIndex(visible);\n\t\tif (start === visible.length) {\n\t\t\treturn visible + suffix;\n\t\t}\n\n\t\treturn visible.slice(0, start) + suffix + visible.slice(start);\n\t}\n\n\tfunction prependWithInheritedStyleFromStart(prefix, visible) {\n\t\tconst end = leadingSgrSpanEndIndex(visible);\n\t\tif (end === 0) {\n\t\t\treturn prefix + visible;\n\t\t}\n\n\t\treturn visible.slice(0, end) + prefix + visible.slice(end);\n\t}\n\n\tif (position === 'start') {\n\t\tif (preferTruncationOnSpace) {\n\t\t\tconst nearestSpace = getIndexOfNearestSpace(text, length - columns + 1, true);\n\t\t\tconst right = sliceAnsi(text, nearestSpace, length).trim();\n\t\t\treturn prependWithInheritedStyleFromStart(truncationCharacter, right);\n\t\t}\n\n\t\tif (space) {\n\t\t\ttruncationCharacter += ' ';\n\t\t}\n\n\t\tconst right = sliceAnsi(text, length - columns + stringWidth(truncationCharacter), length);\n\t\treturn prependWithInheritedStyleFromStart(truncationCharacter, right);\n\t}\n\n\tif (position === 'middle') {\n\t\tif (space) {\n\t\t\ttruncationCharacter = ` ${truncationCharacter} `;\n\t\t}\n\n\t\tconst half = Math.floor(columns / 2);\n\n\t\tif (preferTruncationOnSpace) {\n\t\t\tconst spaceNearFirstBreakPoint = getIndexOfNearestSpace(text, half);\n\t\t\tconst spaceNearSecondBreakPoint = getIndexOfNearestSpace(text, length - (columns - half) + 1, true);\n\t\t\treturn sliceAnsi(text, 0, spaceNearFirstBreakPoint) + truncationCharacter + sliceAnsi(text, spaceNearSecondBreakPoint, length).trim();\n\t\t}\n\n\t\treturn (\n\t\t\tsliceAnsi(text, 0, half)\n\t\t\t+ truncationCharacter\n\t\t\t+ sliceAnsi(text, length - (columns - half) + stringWidth(truncationCharacter), length)\n\t\t);\n\t}\n\n\tif (position === 'end') {\n\t\tif (preferTruncationOnSpace) {\n\t\t\tconst nearestSpace = getIndexOfNearestSpace(text, columns - 1);\n\t\t\tconst left = sliceAnsi(text, 0, nearestSpace);\n\t\t\treturn appendWithInheritedStyleFromEnd(left, truncationCharacter);\n\t\t}\n\n\t\tif (space) {\n\t\t\ttruncationCharacter = ` ${truncationCharacter}`;\n\t\t}\n\n\t\tconst left = sliceAnsi(text, 0, columns - stringWidth(truncationCharacter));\n\t\treturn appendWithInheritedStyleFromEnd(left, truncationCharacter);\n\t}\n\n\tthrow new Error(`Expected \\`options.position\\` to be either \\`start\\`, \\`middle\\` or \\`end\\`, got ${position}`);\n}\n", "import stripAnsi from 'strip-ansi';\nimport {eastAsianWidth} from 'get-east-asian-width';\n\n/**\nLogic:\n- Segment graphemes to match how terminals render clusters.\n- Width rules:\n\t1. Skip non-printing clusters (Default_Ignorable, Control, pure Mark, lone Surrogates). Tabs are ignored by design.\n\t2. RGI emoji clusters (\\p{RGI_Emoji}) are double-width.\n\t3. Minimally-qualified/unqualified emoji clusters (ZWJ sequences with 2+ Extended_Pictographic, or keycap sequences) are double-width.\n\t4. Otherwise use East Asian Width of the cluster's first visible code point, and add widths for trailing Halfwidth/Fullwidth Forms within the same cluster (e.g., dakuten/handakuten/prolonged sound mark).\n*/\n\nconst segmenter = new Intl.Segmenter();\n\n// Whole-cluster zero-width\nconst zeroWidthClusterRegex = /^(?:\\p{Default_Ignorable_Code_Point}|\\p{Control}|\\p{Format}|\\p{Mark}|\\p{Surrogate})+$/v;\n\n// Pick the base scalar if the cluster starts with Prepend/Format/Marks\nconst leadingNonPrintingRegex = /^[\\p{Default_Ignorable_Code_Point}\\p{Control}\\p{Format}\\p{Mark}\\p{Surrogate}]+/v;\n\n// RGI emoji sequences\nconst rgiEmojiRegex = /^\\p{RGI_Emoji}$/v;\n\n// Detect minimally-qualified/unqualified emoji sequences (missing VS16 but still render as double-width)\nconst unqualifiedKeycapRegex = /^[\\d#*]\\u20E3$/;\nconst extendedPictographicRegex = /\\p{Extended_Pictographic}/gu;\n\nfunction isDoubleWidthNonRgiEmojiSequence(segment) {\n\t// Real emoji clusters are < 30 chars; guard against pathological input\n\tif (segment.length > 50) {\n\t\treturn false;\n\t}\n\n\tif (unqualifiedKeycapRegex.test(segment)) {\n\t\treturn true;\n\t}\n\n\t// ZWJ sequences with 2+ Extended_Pictographic\n\tif (segment.includes('\\u200D')) {\n\t\tconst pictographics = segment.match(extendedPictographicRegex);\n\t\treturn pictographics !== null && pictographics.length >= 2;\n\t}\n\n\treturn false;\n}\n\nfunction baseVisible(segment) {\n\treturn segment.replace(leadingNonPrintingRegex, '');\n}\n\nfunction isZeroWidthCluster(segment) {\n\treturn zeroWidthClusterRegex.test(segment);\n}\n\nfunction trailingHalfwidthWidth(segment, eastAsianWidthOptions) {\n\tlet extra = 0;\n\tif (segment.length > 1) {\n\t\tfor (const char of segment.slice(1)) {\n\t\t\tif (char >= '\\uFF00' && char <= '\\uFFEF') {\n\t\t\t\textra += eastAsianWidth(char.codePointAt(0), eastAsianWidthOptions);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn extra;\n}\n\nexport default function stringWidth(input, options = {}) {\n\tif (typeof input !== 'string' || input.length === 0) {\n\t\treturn 0;\n\t}\n\n\tconst {\n\t\tambiguousIsNarrow = true,\n\t\tcountAnsiEscapeCodes = false,\n\t} = options;\n\n\tlet string = input;\n\n\t// Avoid calling stripAnsi when there are no ANSI escape sequences (ESC = 0x1B, CSI = 0x9B)\n\tif (!countAnsiEscapeCodes && (string.includes('\\u001B') || string.includes('\\u009B'))) {\n\t\tstring = stripAnsi(string);\n\t}\n\n\tif (string.length === 0) {\n\t\treturn 0;\n\t}\n\n\t// Fast path: printable ASCII (0x20\u20130x7E) needs no segmenter, regex, or EAW lookup \u2014 width equals length.\n\tif (/^[\\u0020-\\u007E]*$/.test(string)) {\n\t\treturn string.length;\n\t}\n\n\tlet width = 0;\n\tconst eastAsianWidthOptions = {ambiguousAsWide: !ambiguousIsNarrow};\n\n\tfor (const {segment} of segmenter.segment(string)) {\n\t\t// Zero-width / non-printing clusters\n\t\tif (isZeroWidthCluster(segment)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Emoji width logic\n\t\tif (rgiEmojiRegex.test(segment) || isDoubleWidthNonRgiEmojiSequence(segment)) {\n\t\t\twidth += 2;\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Everything else: EAW of the cluster\u2019s first visible scalar\n\t\tconst codePoint = baseVisible(segment).codePointAt(0);\n\t\twidth += eastAsianWidth(codePoint, eastAsianWidthOptions);\n\n\t\t// Add width for trailing Halfwidth and Fullwidth Forms (e.g., \uFF9E, \uFF9F, \uFF70)\n\t\twidth += trailingHalfwidthWidth(segment, eastAsianWidthOptions);\n\t}\n\n\treturn width;\n}\n", "const ANSI_BACKGROUND_OFFSET = 10;\n\nconst wrapAnsi16 = (offset = 0) => code => `\\u001B[${code + offset}m`;\n\nconst wrapAnsi256 = (offset = 0) => code => `\\u001B[${38 + offset};5;${code}m`;\n\nconst wrapAnsi16m = (offset = 0) => (red, green, blue) => `\\u001B[${38 + offset};2;${red};${green};${blue}m`;\n\nconst styles = {\n\tmodifier: {\n\t\treset: [0, 0],\n\t\t// 21 isn't widely supported and 22 does the same thing\n\t\tbold: [1, 22],\n\t\tdim: [2, 22],\n\t\titalic: [3, 23],\n\t\tunderline: [4, 24],\n\t\toverline: [53, 55],\n\t\tinverse: [7, 27],\n\t\thidden: [8, 28],\n\t\tstrikethrough: [9, 29],\n\t},\n\tcolor: {\n\t\tblack: [30, 39],\n\t\tred: [31, 39],\n\t\tgreen: [32, 39],\n\t\tyellow: [33, 39],\n\t\tblue: [34, 39],\n\t\tmagenta: [35, 39],\n\t\tcyan: [36, 39],\n\t\twhite: [37, 39],\n\n\t\t// Bright color\n\t\tblackBright: [90, 39],\n\t\tgray: [90, 39], // Alias of `blackBright`\n\t\tgrey: [90, 39], // Alias of `blackBright`\n\t\tredBright: [91, 39],\n\t\tgreenBright: [92, 39],\n\t\tyellowBright: [93, 39],\n\t\tblueBright: [94, 39],\n\t\tmagentaBright: [95, 39],\n\t\tcyanBright: [96, 39],\n\t\twhiteBright: [97, 39],\n\t},\n\tbgColor: {\n\t\tbgBlack: [40, 49],\n\t\tbgRed: [41, 49],\n\t\tbgGreen: [42, 49],\n\t\tbgYellow: [43, 49],\n\t\tbgBlue: [44, 49],\n\t\tbgMagenta: [45, 49],\n\t\tbgCyan: [46, 49],\n\t\tbgWhite: [47, 49],\n\n\t\t// Bright color\n\t\tbgBlackBright: [100, 49],\n\t\tbgGray: [100, 49], // Alias of `bgBlackBright`\n\t\tbgGrey: [100, 49], // Alias of `bgBlackBright`\n\t\tbgRedBright: [101, 49],\n\t\tbgGreenBright: [102, 49],\n\t\tbgYellowBright: [103, 49],\n\t\tbgBlueBright: [104, 49],\n\t\tbgMagentaBright: [105, 49],\n\t\tbgCyanBright: [106, 49],\n\t\tbgWhiteBright: [107, 49],\n\t},\n};\n\nexport const modifierNames = Object.keys(styles.modifier);\nexport const foregroundColorNames = Object.keys(styles.color);\nexport const backgroundColorNames = Object.keys(styles.bgColor);\nexport const colorNames = [...foregroundColorNames, ...backgroundColorNames];\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\n\tfor (const [groupName, group] of Object.entries(styles)) {\n\t\tfor (const [styleName, style] of Object.entries(group)) {\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`,\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false,\n\t\t});\n\t}\n\n\tObject.defineProperty(styles, 'codes', {\n\t\tvalue: codes,\n\t\tenumerable: false,\n\t});\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tstyles.color.ansi = wrapAnsi16();\n\tstyles.color.ansi256 = wrapAnsi256();\n\tstyles.color.ansi16m = wrapAnsi16m();\n\tstyles.bgColor.ansi = wrapAnsi16(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi256 = wrapAnsi256(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi16m = wrapAnsi16m(ANSI_BACKGROUND_OFFSET);\n\n\t// From https://github.com/Qix-/color-convert/blob/3f0e0d4e92e235796ccb17f6e85c72094a651f49/conversions.js\n\tObject.defineProperties(styles, {\n\t\trgbToAnsi256: {\n\t\t\tvalue(red, green, blue) {\n\t\t\t\t// We use the extended greyscale palette here, with the exception of\n\t\t\t\t// black and white. normal palette only has 4 greyscale shades.\n\t\t\t\tif (red === green && green === blue) {\n\t\t\t\t\tif (red < 8) {\n\t\t\t\t\t\treturn 16;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (red > 248) {\n\t\t\t\t\t\treturn 231;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Math.round(((red - 8) / 247) * 24) + 232;\n\t\t\t\t}\n\n\t\t\t\treturn 16\n\t\t\t\t\t+ (36 * Math.round(red / 255 * 5))\n\t\t\t\t\t+ (6 * Math.round(green / 255 * 5))\n\t\t\t\t\t+ Math.round(blue / 255 * 5);\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToRgb: {\n\t\t\tvalue(hex) {\n\t\t\t\tconst matches = /[a-f\\d]{6}|[a-f\\d]{3}/i.exec(hex.toString(16));\n\t\t\t\tif (!matches) {\n\t\t\t\t\treturn [0, 0, 0];\n\t\t\t\t}\n\n\t\t\t\tlet [colorString] = matches;\n\n\t\t\t\tif (colorString.length === 3) {\n\t\t\t\t\tcolorString = [...colorString].map(character => character + character).join('');\n\t\t\t\t}\n\n\t\t\t\tconst integer = Number.parseInt(colorString, 16);\n\n\t\t\t\treturn [\n\t\t\t\t\t/* eslint-disable no-bitwise */\n\t\t\t\t\t(integer >> 16) & 0xFF,\n\t\t\t\t\t(integer >> 8) & 0xFF,\n\t\t\t\t\tinteger & 0xFF,\n\t\t\t\t\t/* eslint-enable no-bitwise */\n\t\t\t\t];\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToAnsi256: {\n\t\t\tvalue: hex => styles.rgbToAnsi256(...styles.hexToRgb(hex)),\n\t\t\tenumerable: false,\n\t\t},\n\t\tansi256ToAnsi: {\n\t\t\tvalue(code) {\n\t\t\t\tif (code < 8) {\n\t\t\t\t\treturn 30 + code;\n\t\t\t\t}\n\n\t\t\t\tif (code < 16) {\n\t\t\t\t\treturn 90 + (code - 8);\n\t\t\t\t}\n\n\t\t\t\tlet red;\n\t\t\t\tlet green;\n\t\t\t\tlet blue;\n\n\t\t\t\tif (code >= 232) {\n\t\t\t\t\tred = (((code - 232) * 10) + 8) / 255;\n\t\t\t\t\tgreen = red;\n\t\t\t\t\tblue = red;\n\t\t\t\t} else {\n\t\t\t\t\tcode -= 16;\n\n\t\t\t\t\tconst remainder = code % 36;\n\n\t\t\t\t\tred = Math.floor(code / 36) / 5;\n\t\t\t\t\tgreen = Math.floor(remainder / 6) / 5;\n\t\t\t\t\tblue = (remainder % 6) / 5;\n\t\t\t\t}\n\n\t\t\t\tconst value = Math.max(red, green, blue) * 2;\n\n\t\t\t\tif (value === 0) {\n\t\t\t\t\treturn 30;\n\t\t\t\t}\n\n\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\tlet result = 30 + ((Math.round(blue) << 2) | (Math.round(green) << 1) | Math.round(red));\n\n\t\t\t\tif (value === 2) {\n\t\t\t\t\tresult += 60;\n\t\t\t\t}\n\n\t\t\t\treturn result;\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\trgbToAnsi: {\n\t\t\tvalue: (red, green, blue) => styles.ansi256ToAnsi(styles.rgbToAnsi256(red, green, blue)),\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToAnsi: {\n\t\t\tvalue: hex => styles.ansi256ToAnsi(styles.hexToAnsi256(hex)),\n\t\t\tenumerable: false,\n\t\t},\n\t});\n\n\treturn styles;\n}\n\nconst ansiStyles = assembleStyles();\n\nexport default ansiStyles;\n", "import stringWidth from 'string-width';\nimport stripAnsi from 'strip-ansi';\nimport ansiStyles from 'ansi-styles';\n\nconst ANSI_ESCAPE = '\\u001B';\nconst ANSI_ESCAPE_CSI = '\\u009B';\nconst ESCAPES = new Set([\n\tANSI_ESCAPE,\n\tANSI_ESCAPE_CSI,\n]);\n\nconst ANSI_ESCAPE_BELL = '\\u0007';\nconst ANSI_CSI = '[';\nconst ANSI_OSC = ']';\nconst ANSI_SGR_TERMINATOR = 'm';\nconst ANSI_SGR_RESET = 0;\nconst ANSI_SGR_RESET_FOREGROUND = 39;\nconst ANSI_SGR_RESET_BACKGROUND = 49;\nconst ANSI_SGR_RESET_UNDERLINE_COLOR = 59;\nconst ANSI_SGR_FOREGROUND_EXTENDED = 38;\nconst ANSI_SGR_BACKGROUND_EXTENDED = 48;\nconst ANSI_SGR_UNDERLINE_COLOR_EXTENDED = 58;\nconst ANSI_SGR_COLOR_MODE_256 = 5;\nconst ANSI_SGR_COLOR_MODE_RGB = 2;\nconst ANSI_ESCAPE_LINK = `${ANSI_OSC}8;;`;\nconst ANSI_ESCAPE_REGEX = new RegExp(`^\\\\u001B(?:\\\\${ANSI_CSI}(?<sgr>[0-9;]*)${ANSI_SGR_TERMINATOR}|${ANSI_ESCAPE_LINK}(?<uri>[^\\\\u0007\\\\u001B]*)(?:\\\\u0007|\\\\u001B\\\\\\\\))`);\nconst ANSI_ESCAPE_CSI_REGEX = new RegExp(`^\\\\u009B(?<sgr>[0-9;]*)${ANSI_SGR_TERMINATOR}`);\nconst ANSI_SGR_MODIFIER_CLOSE_CODES = new Set(ansiStyles.codes.values());\nANSI_SGR_MODIFIER_CLOSE_CODES.delete(ANSI_SGR_RESET);\n\nconst segmenter = new Intl.Segmenter();\nconst getGraphemes = string => Array.from(segmenter.segment(string), ({segment}) => segment);\nconst TAB_SIZE = 8;\n\nconst wrapAnsiCode = code => `${ANSI_ESCAPE}${ANSI_CSI}${code}${ANSI_SGR_TERMINATOR}`;\nconst wrapAnsiHyperlink = url => `${ANSI_ESCAPE}${ANSI_ESCAPE_LINK}${url}${ANSI_ESCAPE_BELL}`;\n\nconst getSgrTokens = sgrParameters => {\n\tconst codes = sgrParameters.split(';').map(sgrParameter => sgrParameter === '' ? ANSI_SGR_RESET : Number.parseInt(sgrParameter, 10));\n\tconst sgrTokens = [];\n\n\tfor (let index = 0; index < codes.length; index++) {\n\t\tconst code = codes[index];\n\n\t\tif (!Number.isFinite(code)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (\n\t\t\t(\n\t\t\t\tcode === ANSI_SGR_FOREGROUND_EXTENDED\n\t\t\t\t|| code === ANSI_SGR_BACKGROUND_EXTENDED\n\t\t\t\t|| code === ANSI_SGR_UNDERLINE_COLOR_EXTENDED\n\t\t\t)\n\t\t) {\n\t\t\tif (index + 1 >= codes.length) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tconst mode = codes[index + 1];\n\n\t\t\tif (mode === ANSI_SGR_COLOR_MODE_256 && Number.isFinite(codes[index + 2])) {\n\t\t\t\tsgrTokens.push([code, mode, codes[index + 2]]);\n\t\t\t\tindex += 2;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst red = codes[index + 2];\n\t\t\tconst green = codes[index + 3];\n\t\t\tconst blue = codes[index + 4];\n\t\t\tif (\n\t\t\t\tmode === ANSI_SGR_COLOR_MODE_RGB\n\t\t\t\t&& Number.isFinite(red)\n\t\t\t\t&& Number.isFinite(green)\n\t\t\t\t&& Number.isFinite(blue)\n\t\t\t) {\n\t\t\t\tsgrTokens.push([code, mode, red, green, blue]);\n\t\t\t\tindex += 4;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tbreak;\n\t\t}\n\n\t\tsgrTokens.push([code]);\n\t}\n\n\treturn sgrTokens;\n};\n\nconst removeActiveStyle = (activeStyles, family) => {\n\tconst activeStyleIndex = activeStyles.findIndex(activeStyle => activeStyle.family === family);\n\n\tif (activeStyleIndex !== -1) {\n\t\tactiveStyles.splice(activeStyleIndex, 1);\n\t}\n};\n\nconst upsertActiveStyle = (activeStyles, nextActiveStyle) => {\n\tremoveActiveStyle(activeStyles, nextActiveStyle.family);\n\tactiveStyles.push(nextActiveStyle);\n};\n\nconst removeModifierStylesByClose = (activeStyles, closeCode) => {\n\tfor (let index = activeStyles.length - 1; index >= 0; index--) {\n\t\tconst activeStyle = activeStyles[index];\n\t\tif (activeStyle.family.startsWith('modifier-') && activeStyle.close === closeCode) {\n\t\t\tactiveStyles.splice(index, 1);\n\t\t}\n\t}\n};\n\nconst getColorStyle = (code, sgrToken) => {\n\tif ((code >= 30 && code <= 37) || (code >= 90 && code <= 97) || (code === ANSI_SGR_FOREGROUND_EXTENDED && sgrToken.length > 1)) {\n\t\treturn {\n\t\t\tfamily: 'foreground',\n\t\t\topen: sgrToken.join(';'),\n\t\t\tclose: ANSI_SGR_RESET_FOREGROUND,\n\t\t};\n\t}\n\n\tif ((code >= 40 && code <= 47) || (code >= 100 && code <= 107) || (code === ANSI_SGR_BACKGROUND_EXTENDED && sgrToken.length > 1)) {\n\t\treturn {\n\t\t\tfamily: 'background',\n\t\t\topen: sgrToken.join(';'),\n\t\t\tclose: ANSI_SGR_RESET_BACKGROUND,\n\t\t};\n\t}\n\n\tif (code === ANSI_SGR_UNDERLINE_COLOR_EXTENDED && sgrToken.length > 1) {\n\t\treturn {\n\t\t\tfamily: 'underlineColor',\n\t\t\topen: sgrToken.join(';'),\n\t\t\tclose: ANSI_SGR_RESET_UNDERLINE_COLOR,\n\t\t};\n\t}\n};\n\nconst applySgrResetCode = (code, activeStyles) => {\n\tif (code === ANSI_SGR_RESET) {\n\t\tactiveStyles.length = 0;\n\t\treturn true;\n\t}\n\n\tif (code === ANSI_SGR_RESET_FOREGROUND) {\n\t\tremoveActiveStyle(activeStyles, 'foreground');\n\t\treturn true;\n\t}\n\n\tif (code === ANSI_SGR_RESET_BACKGROUND) {\n\t\tremoveActiveStyle(activeStyles, 'background');\n\t\treturn true;\n\t}\n\n\tif (code === ANSI_SGR_RESET_UNDERLINE_COLOR) {\n\t\tremoveActiveStyle(activeStyles, 'underlineColor');\n\t\treturn true;\n\t}\n\n\tif (ANSI_SGR_MODIFIER_CLOSE_CODES.has(code)) {\n\t\tremoveModifierStylesByClose(activeStyles, code);\n\t\treturn true;\n\t}\n\n\treturn false;\n};\n\nconst applySgrToken = (sgrToken, activeStyles) => {\n\tconst [code] = sgrToken;\n\n\tif (applySgrResetCode(code, activeStyles)) {\n\t\treturn;\n\t}\n\n\tconst colorStyle = getColorStyle(code, sgrToken);\n\tif (colorStyle) {\n\t\tupsertActiveStyle(activeStyles, colorStyle);\n\t\treturn;\n\t}\n\n\tconst close = ansiStyles.codes.get(code);\n\tif (close !== undefined && close !== ANSI_SGR_RESET) {\n\t\tupsertActiveStyle(activeStyles, {\n\t\t\tfamily: `modifier-${code}`,\n\t\t\topen: sgrToken.join(';'),\n\t\t\tclose,\n\t\t});\n\t}\n};\n\nconst applySgrParameters = (sgrParameters, activeStyles) => {\n\tfor (const sgrToken of getSgrTokens(sgrParameters)) {\n\t\tapplySgrToken(sgrToken, activeStyles);\n\t}\n};\n\nconst applySgrResets = (sgrParameters, activeStyles) => {\n\tfor (const sgrToken of getSgrTokens(sgrParameters)) {\n\t\tconst [code] = sgrToken;\n\t\tapplySgrResetCode(code, activeStyles);\n\t}\n};\n\nconst applyLeadingSgrResets = (string, activeStyles) => {\n\tlet remainder = string;\n\n\twhile (remainder.length > 0) {\n\t\tif (remainder.startsWith(ANSI_ESCAPE) && remainder[1] !== '\\\\') {\n\t\t\tconst match = ANSI_ESCAPE_REGEX.exec(remainder);\n\t\t\tif (!match) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif (match.groups.sgr !== undefined) {\n\t\t\t\tapplySgrResets(match.groups.sgr, activeStyles);\n\t\t\t}\n\n\t\t\tremainder = remainder.slice(match[0].length);\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (remainder.startsWith(ANSI_ESCAPE_CSI)) {\n\t\t\tconst match = ANSI_ESCAPE_CSI_REGEX.exec(remainder);\n\t\t\tif (!match || match.groups.sgr === undefined) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tapplySgrResets(match.groups.sgr, activeStyles);\n\t\t\tremainder = remainder.slice(match[0].length);\n\t\t\tcontinue;\n\t\t}\n\n\t\tbreak;\n\t}\n};\n\nconst getClosingSgrSequence = activeStyles => [...activeStyles].reverse().map(activeStyle => wrapAnsiCode(activeStyle.close)).join('');\nconst getOpeningSgrSequence = activeStyles => activeStyles.map(activeStyle => wrapAnsiCode(activeStyle.open)).join('');\n\n// Calculate the length of words split on ' ', ignoring\n// the extra characters added by ANSI escape codes\nconst wordLengths = string => string.split(' ').map(word => stringWidth(word));\n\n// Wrap a long word across multiple rows\n// ANSI escape codes do not count towards length\nconst wrapWord = (rows, word, columns) => {\n\tconst characters = getGraphemes(word);\n\n\tlet isInsideEscape = false;\n\tlet isInsideLinkEscape = false;\n\tlet visible = stringWidth(stripAnsi(rows.at(-1)));\n\n\tfor (const [index, character] of characters.entries()) {\n\t\tconst characterLength = stringWidth(character);\n\n\t\tif (visible + characterLength <= columns) {\n\t\t\trows[rows.length - 1] += character;\n\t\t} else {\n\t\t\trows.push(character);\n\t\t\tvisible = 0;\n\t\t}\n\n\t\tif (ESCAPES.has(character) && !(isInsideLinkEscape && character === ANSI_ESCAPE && characters[index + 1] === '\\\\')) {\n\t\t\tisInsideEscape = true;\n\n\t\t\tconst ansiEscapeLinkCandidate = characters.slice(index + 1, index + 1 + ANSI_ESCAPE_LINK.length).join('');\n\t\t\tisInsideLinkEscape = ansiEscapeLinkCandidate === ANSI_ESCAPE_LINK;\n\t\t}\n\n\t\tif (isInsideEscape) {\n\t\t\tif (isInsideLinkEscape) {\n\t\t\t\tif (\n\t\t\t\t\tcharacter === ANSI_ESCAPE_BELL\n\t\t\t\t\t|| (character === '\\\\' && index > 0 && characters[index - 1] === ANSI_ESCAPE) // ST terminator (ESC \\)\n\t\t\t\t) {\n\t\t\t\t\tisInsideEscape = false;\n\t\t\t\t\tisInsideLinkEscape = false;\n\t\t\t\t}\n\t\t\t} else if (character === ANSI_SGR_TERMINATOR) {\n\t\t\t\tisInsideEscape = false;\n\t\t\t}\n\n\t\t\tcontinue;\n\t\t}\n\n\t\tvisible += characterLength;\n\n\t\tif (visible === columns && index < characters.length - 1) {\n\t\t\trows.push('');\n\t\t\tvisible = 0;\n\t\t}\n\t}\n\n\t// It's possible that the last row we copy over is only\n\t// ANSI escape characters, handle this edge-case\n\tif (!visible && rows.at(-1).length > 0 && rows.length > 1) {\n\t\trows[rows.length - 2] += rows.pop();\n\t}\n};\n\n// Trims spaces from a string ignoring invisible sequences\nconst stringVisibleTrimSpacesRight = string => {\n\tconst words = string.split(' ');\n\tlet last = words.length;\n\n\twhile (last > 0) {\n\t\tif (stringWidth(words[last - 1]) > 0) {\n\t\t\tbreak;\n\t\t}\n\n\t\tlast--;\n\t}\n\n\tif (last === words.length) {\n\t\treturn string;\n\t}\n\n\treturn words.slice(0, last).join(' ') + words.slice(last).join('');\n};\n\nconst expandTabs = line => {\n\tif (!line.includes('\\t')) {\n\t\treturn line;\n\t}\n\n\tconst segments = line.split('\\t');\n\tlet visible = 0;\n\tlet expandedLine = '';\n\n\tfor (const [index, segment] of segments.entries()) {\n\t\texpandedLine += segment;\n\t\tvisible += stringWidth(segment);\n\n\t\tif (index < segments.length - 1) {\n\t\t\tconst spaces = TAB_SIZE - (visible % TAB_SIZE);\n\t\t\texpandedLine += ' '.repeat(spaces);\n\t\t\tvisible += spaces;\n\t\t}\n\t}\n\n\treturn expandedLine;\n};\n\n// The wrap-ansi module can be invoked in either 'hard' or 'soft' wrap mode.\n//\n// 'hard' will never allow a string to take up more than columns characters.\n//\n// 'soft' allows long words to expand past the column length.\nconst exec = (string, columns, options = {}) => {\n\tif (options.trim !== false && string.trim() === '') {\n\t\treturn '';\n\t}\n\n\tlet returnValue = '';\n\tlet escapeUrl;\n\tconst activeStyles = [];\n\n\tconst lengths = wordLengths(string);\n\tlet rows = [''];\n\n\tfor (const [index, word] of string.split(' ').entries()) {\n\t\tif (options.trim !== false) {\n\t\t\trows[rows.length - 1] = rows.at(-1).trimStart();\n\t\t}\n\n\t\tlet rowLength = stringWidth(rows.at(-1));\n\n\t\tif (index !== 0) {\n\t\t\tif (rowLength >= columns && (options.wordWrap === false || options.trim === false)) {\n\t\t\t\t// If we start with a new word but the current row length equals the length of the columns, add a new row\n\t\t\t\trows.push('');\n\t\t\t\trowLength = 0;\n\t\t\t}\n\n\t\t\tif (rowLength > 0 || options.trim === false) {\n\t\t\t\trows[rows.length - 1] += ' ';\n\t\t\t\trowLength++;\n\t\t\t}\n\t\t}\n\n\t\t// In 'hard' wrap mode, the length of a line is never allowed to extend past 'columns'\n\t\tif (options.hard && options.wordWrap !== false && lengths[index] > columns) {\n\t\t\tconst remainingColumns = columns - rowLength;\n\t\t\tconst breaksStartingThisLine = 1 + Math.floor((lengths[index] - remainingColumns - 1) / columns);\n\t\t\tconst breaksStartingNextLine = Math.floor((lengths[index] - 1) / columns);\n\t\t\tif (breaksStartingNextLine < breaksStartingThisLine) {\n\t\t\t\trows.push('');\n\t\t\t}\n\n\t\t\twrapWord(rows, word, columns);\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (rowLength + lengths[index] > columns && rowLength > 0 && lengths[index] > 0) {\n\t\t\tif (options.wordWrap === false && rowLength < columns) {\n\t\t\t\twrapWord(rows, word, columns);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\trows.push('');\n\t\t}\n\n\t\tif (rowLength + lengths[index] > columns && options.wordWrap === false) {\n\t\t\twrapWord(rows, word, columns);\n\t\t\tcontinue;\n\t\t}\n\n\t\trows[rows.length - 1] += word;\n\t}\n\n\tif (options.trim !== false) {\n\t\trows = rows.map(row => stringVisibleTrimSpacesRight(row));\n\t}\n\n\tconst preString = rows.join('\\n');\n\tconst pre = getGraphemes(preString);\n\n\t// We need to keep a separate index as `String#slice()` works on Unicode code units, while `pre` is an array of grapheme clusters.\n\tlet preStringIndex = 0;\n\n\tfor (const [index, character] of pre.entries()) {\n\t\treturnValue += character;\n\n\t\tif (character === ANSI_ESCAPE && pre[index + 1] !== '\\\\') {\n\t\t\tconst {groups} = ANSI_ESCAPE_REGEX.exec(preString.slice(preStringIndex)) || {groups: {}};\n\t\t\tif (groups.sgr !== undefined) {\n\t\t\t\tapplySgrParameters(groups.sgr, activeStyles);\n\t\t\t} else if (groups.uri !== undefined) {\n\t\t\t\tescapeUrl = groups.uri.length === 0 ? undefined : groups.uri;\n\t\t\t}\n\t\t} else if (character === ANSI_ESCAPE_CSI) {\n\t\t\tconst {groups} = ANSI_ESCAPE_CSI_REGEX.exec(preString.slice(preStringIndex)) || {groups: {}};\n\t\t\tif (groups.sgr !== undefined) {\n\t\t\t\tapplySgrParameters(groups.sgr, activeStyles);\n\t\t\t}\n\t\t}\n\n\t\tif (pre[index + 1] === '\\n') {\n\t\t\tif (escapeUrl) {\n\t\t\t\treturnValue += wrapAnsiHyperlink('');\n\t\t\t}\n\n\t\t\treturnValue += getClosingSgrSequence(activeStyles);\n\t\t} else if (character === '\\n') {\n\t\t\tconst openingStyles = [...activeStyles];\n\t\t\tapplyLeadingSgrResets(preString.slice(preStringIndex + 1), openingStyles);\n\t\t\treturnValue += getOpeningSgrSequence(openingStyles);\n\n\t\t\tif (escapeUrl) {\n\t\t\t\treturnValue += wrapAnsiHyperlink(escapeUrl);\n\t\t\t}\n\t\t}\n\n\t\tpreStringIndex += character.length;\n\t}\n\n\treturn returnValue;\n};\n\n// For each newline, invoke the method separately\nexport default function wrapAnsi(string, columns, options) {\n\treturn String(string)\n\t\t.normalize()\n\t\t.replaceAll('\\r\\n', '\\n')\n\t\t.split('\\n')\n\t\t.map(line => exec(expandTabs(line), columns, options))\n\t\t.join('\\n');\n}\n", "import {nonNullish} from '@junobuild/utils';\nimport type {Message, Metafile, OutputFile} from 'esbuild';\nimport {rm} from 'node:fs/promises';\n\n/**\n * Builds the serverless functions using `esbuild`.\n *\n * This feature:\n * - Ensures `esbuild` is available.\n * - Deletes the existing output file if it exists.\n * - Builds the input file with optimizations: minification, tree-shaking, etc.\n * - Returns the esbuild `metafile`, version, and any build errors or warnings.\n *\n * @param {Object} options - Build configuration.\n * @param {string} options.infile - The path to the input file to be bundled.\n * @param {string} options.outfile - The path where the output bundle should be written.\n * @param {Object<string, string>} [options.banner] - Optional banner to prepend to the generated file.\n *\n * @returns {Promise<{\n *   metafile: Metafile,\n *   errors: Message[],\n *   warnings: Message[],\n *   version: string\n * }>} An object containing the esbuild metafile, build errors/warnings, and the version of esbuild used.\n *\n * @throws Will exit the process if `esbuild` is not installed.\n */\nexport const buildFunctions = async ({\n  infile,\n  banner\n}: {\n  infile: string;\n  banner?: {[type: string]: string};\n}): Promise<EsbuildResult> =>\n  await esbuild({\n    infile,\n    platform: 'browser',\n    treeShaking: true,\n    define: {\n      self: 'globalThis'\n    },\n    banner\n  });\n\n/**\n * Builds a script using `esbuild` for `juno run`.\n *\n * This feature:\n * - Ensures `esbuild` is available.\n * - Builds the input file for Node with optimizations: minification, tree-shaking, etc.\n * - Returns the esbuild output files, `metafile`, version, and any build errors or warnings.\n *\n * @param {Object} options - Build configuration.\n * @param {string} options.infile - The path to the input file to be bundled.\n *\n * @returns {Promise<{\n *   metafile: Metafile,\n *   errors: Message[],\n *   warnings: Message[],\n *   version: string,\n *   outputFiles: OutputFile[] | undefined;\n * }>} An object containing the esbuild outputFiles, metafile, build errors/warnings, and the version of esbuild used.\n *\n * @throws Will exit the process if `esbuild` is not installed.\n */\nexport const buildScript = async ({infile}: {infile: string}): Promise<EsbuildResult> =>\n  await esbuild({\n    infile,\n    platform: 'node',\n    treeShaking: false,\n    banner: {\n      js: `import { createRequire as topLevelCreateRequire } from 'node:module';\nimport { resolve } from 'node:path';\nconst require = topLevelCreateRequire(resolve(process.cwd(), '.juno-pseudo-require-anchor.mjs'));`\n    },\n    define: {\n      'import.meta.url': JSON.stringify('file:///virtual/juno-pseudo-module.js')\n    }\n  });\n\nexport interface EsbuildResult {\n  metafile: Metafile;\n  errors: Message[];\n  warnings: Message[];\n  version: string;\n  outputFiles: OutputFile[] | undefined;\n}\n\nconst esbuild = async ({\n  infile,\n  outfile,\n  banner,\n  platform,\n  define,\n  treeShaking\n}: {\n  infile: string;\n  outfile?: string;\n  banner?: {[type: string]: string};\n  platform: 'browser' | 'node';\n  define?: {[key: string]: string};\n  treeShaking: boolean;\n}): Promise<EsbuildResult> => {\n  const {build, version} = await importEsbuildAndExitOnError();\n\n  if (nonNullish(outfile)) {\n    await rm(outfile, {force: true});\n  }\n\n  const {metafile, errors, warnings, outputFiles} = await build({\n    entryPoints: [infile],\n    outfile,\n    write: nonNullish(outfile),\n    bundle: true,\n    minify: true,\n    treeShaking,\n    format: 'esm',\n    platform,\n    supported: {\n      'top-level-await': false,\n      'inline-script': false\n    },\n    external: ['esbuild'],\n    define,\n    metafile: true,\n    banner\n  });\n\n  return {metafile, errors, warnings, outputFiles, version};\n};\n\n// eslint-disable-next-line @typescript-eslint/consistent-type-imports\nconst importEsbuildAndExitOnError = (): Promise<typeof import('esbuild')> => {\n  try {\n    return import('esbuild');\n  } catch (_err: unknown) {\n    console.error(\n      `Esbuild is required to build your functions. Please install it by running: npm i esbuild`\n    );\n    process.exit(1);\n  }\n};\n", "import {nonNullish, toNullable} from '@junobuild/utils';\nimport ora from 'ora';\nimport {UPLOAD_DEFAULT_BATCH_SIZE} from '../constants/deploy.constants';\nimport {COLLECTION_DAPP} from '../constants/storage.constants';\nimport {executeHooks} from '../services/deploy.hook.services';\nimport {prepareDeploy as prepareDeployServices} from '../services/deploy.prepare.services';\nimport {deployAndProposeChanges} from '../services/deploy.proposal.services';\nimport {uploadFiles} from '../services/upload.services';\nimport type {DeployConfig} from '../types/config';\nimport type {\n  DeployParams,\n  DeployResult,\n  DeployResultWithProposal,\n  FileAndPaths,\n  FileDetails,\n  FilePaths,\n  UploadFilesWithProposal,\n  UploadFileWithProposal,\n  UploadIndividually,\n  UploadWithBatch\n} from '../types/deploy';\nimport type {ProposeChangesParams} from '../types/proposal';\nimport type {UploadFilesParams} from '../types/upload';\nimport {fullPath} from '../utils/assets.utils';\n\n/**\n * Executes all configured pre-deploy hooks defined in the Juno configuration.\n *\n * This function is typically run before uploading or deploying any assets to\n * perform validations, code generation, or other preparatory tasks.\n *\n * @param {Object} options - The function parameters.\n * @param {DeployConfig} options.config - The configuration object containing hook definitions.\n * @returns {Promise<void>} Resolves once all predeploy hooks have been executed.\n */\nexport const preDeploy = async ({config: {predeploy}}: {config: DeployConfig}) => {\n  await executeHooks(predeploy);\n};\n\n/**\n * Executes all configured post-deploy hooks defined in the Juno configuration.\n *\n * This function is typically run after a successful deployment to perform cleanup,\n * logging, or integration tasks (e.g., sending Slack notifications).\n *\n * @param {Object} options - The function parameters.\n * @param {DeployConfig} options.config - The full configuration object containing hook definitions.\n * @returns {Promise<void>} Resolves once all postdeploy hooks have been executed.\n */\nexport const postDeploy = async ({config: {postdeploy}}: {config: DeployConfig}) => {\n  await executeHooks(postdeploy);\n};\n\n/**\n * Prepares and uploads dapp assets to a satellite.\n *\n * Steps:\n * 1) Resolve source files to upload.\n * 2) Ensure enough memory is available (via internal checks).\n * 3) Upload files using the provided upload function:\n *    - `UploadWithBatch`: one init+commit for all files (batched).\n *    - `UploadIndividually`: init+commit per file (unbatched).\n *\n * Notes:\n * - Chunk uploading logic is identical in both modes; only init/commit differ.\n * - If no files are detected (e.g. unchanged), the deploy is skipped.\n *\n * @param {Object} options\n * @param {DeployParams} options.params - Deployment parameters (paths, config, etc.).\n * @param {UploadIndividually | UploadWithBatch} options.upload - Upload strategy function.\n *   Pass a function that either uploads files **with batch** (single init/commit)\n *   or **individually** (per-file init/commit).\n * @returns {Promise<DeployResult>}\n *   - `{ result: 'skipped' }` when there are no files to upload.\n *   - `{ result: 'deployed', files }` when the upload completes.\n */\nexport const deploy = async ({\n  params,\n  upload\n}: {\n  params: DeployParams;\n  upload: UploadIndividually | UploadWithBatch;\n}): Promise<DeployResult> => {\n  const prepareResult = await prepareDeploy(params);\n\n  if (prepareResult.result === 'skipped') {\n    return {result: 'skipped'};\n  }\n\n  const {files, sourceAbsolutePath} = prepareResult;\n\n  const sourceFiles = prepareSourceFiles({files, sourceAbsolutePath});\n\n  const source: Omit<UploadFilesParams, 'collection'> = {\n    files: sourceFiles,\n    sourceAbsolutePath,\n    batchSize: params.uploadBatchSize ?? UPLOAD_DEFAULT_BATCH_SIZE\n  };\n\n  await uploadFiles({\n    ...source,\n    collection: COLLECTION_DAPP,\n    upload\n  });\n\n  console.log(`\\n\uD83D\uDE80 Deploy complete!`);\n\n  return {result: 'deployed', files};\n};\n\n/**\n * Prepares and uploads assets through a proposal workflow.\n *\n * Steps:\n * 1) Prepare the list of files to upload.\n * 2) If no files are found, skip.\n * 3) Upload using the selected strategy (batched or per-file).\n * 4) Submit a proposal for the asset upgrade and, if `autoCommit` is true, apply it.\n *\n * Notes:\n * - Chunk uploading is the same across strategies; only init/commit batching differs.\n * - Set `clearAssets` to remove existing assets before upload (proposal field).\n *\n * @param {Object} options\n * @param {Object} options.deploy\n * @param {DeployParams} options.deploy.params - Deployment parameters.\n * @param {UploadIndividually<UploadFileWithProposal> | UploadWithBatch<UploadFilesWithProposal>} options.deploy.upload\n *   Upload strategy function used *within the proposal flow*.\n * @param {Object} options.proposal\n * @param {CdnParameters} options.proposal.cdn - Governance/CDN params.\n * @param {boolean} options.proposal.autoCommit - Apply the proposal automatically after submission.\n * @param {boolean} [options.proposal.clearAssets] - Clear existing assets before upload.\n *\n * @returns {Promise<DeployResultWithProposal>}\n *   - `{ result: 'skipped' }` when there are no files.\n *   - `{ result: 'submitted', files, proposalId }` when proposed but not applied.\n *   - `{ result: 'deployed', files, proposalId }` when proposed and auto-applied.\n */\nexport const deployWithProposal = async ({\n  deploy: {params, upload},\n  proposal: {clearAssets, ...restProposal}\n}: {\n  deploy: {\n    params: DeployParams;\n    upload: UploadIndividually<UploadFileWithProposal> | UploadWithBatch<UploadFilesWithProposal>;\n  };\n  proposal: Pick<ProposeChangesParams, 'cdn' | 'autoCommit'> & {clearAssets?: boolean};\n}): Promise<DeployResultWithProposal> => {\n  const prepareResult = await prepareDeploy(params);\n\n  if (prepareResult.result === 'skipped') {\n    return {result: 'skipped'};\n  }\n\n  const {sourceAbsolutePath} = prepareResult;\n\n  const sourceFiles = prepareSourceFiles(prepareResult);\n\n  const result = await deployAndProposeChanges({\n    deploy: {\n      upload,\n      files: sourceFiles,\n      sourceAbsolutePath,\n      collection: COLLECTION_DAPP,\n      batchSize: params.uploadBatchSize ?? UPLOAD_DEFAULT_BATCH_SIZE\n    },\n    proposal: {\n      ...restProposal,\n      proposalType: {\n        AssetsUpgrade: {\n          clear_existing_assets: toNullable(clearAssets)\n        }\n      }\n    }\n  });\n\n  if (result.result === 'deployed') {\n    console.log(`\\n\uD83D\uDE80 Deploy complete!`);\n  }\n\n  return result;\n};\n\nconst prepareDeploy = async ({\n  assertMemory,\n  ...rest\n}: Omit<DeployParams, 'uploadFn'>): Promise<\n  {result: 'skipped'} | {result: 'to-deploy'; files: FileDetails[]; sourceAbsolutePath: string}\n> => {\n  const spinner = ora('Preparing deploy...').start();\n\n  try {\n    const {files: sourceFiles, sourceAbsolutePath} = await prepareDeployServices(rest);\n\n    if (sourceFiles.length === 0) {\n      spinner.stop();\n\n      console.log('');\n      console.log('\u26A0\uFE0F  No file changes detected. Upload skipped.');\n\n      return {result: 'skipped'};\n    }\n\n    if (nonNullish(assertMemory)) {\n      spinner.text = 'Asserting memory...';\n    }\n\n    await assertMemory?.();\n\n    spinner.stop();\n\n    return {\n      result: 'to-deploy',\n      files: sourceFiles,\n      sourceAbsolutePath\n    };\n  } catch (err: unknown) {\n    spinner.stop();\n    throw err;\n  }\n};\n\nconst prepareSourceFiles = ({\n  files,\n  sourceAbsolutePath\n}: {\n  files: FileDetails[];\n  sourceAbsolutePath: string;\n}): FileAndPaths[] => {\n  const filePaths = (file: FileDetails): FilePaths => {\n    const filePath = file.alternateFile ?? file.file;\n\n    return {\n      fullPath: fullPath({file: filePath, sourceAbsolutePath}),\n      filePath\n    };\n  };\n\n  return files.map((file) => ({file, paths: filePaths(file)}));\n};\n", "import type {Precompress} from '@junobuild/config';\n\nexport const DEPLOY_DEFAULT_SOURCE = 'build';\nexport const DEPLOY_DEFAULT_IGNORE = [];\nexport const DEPLOY_DEFAULT_ENCODING = [];\nexport const DEPLOY_DEFAULT_PRECOMPRESS: Required<Precompress> = {\n  pattern: '**/*.+(css|js|mjs|html)',\n  mode: 'both',\n  algorithm: 'gzip'\n};\n\nexport const IGNORE_OS_FILES = ['.ds_store', 'thumbs.db'];\nexport const UPLOAD_DEFAULT_BATCH_SIZE = 50;\n", "export const COLLECTION_DAPP = '#dapp';\nexport const COLLECTION_CDN_RELEASES = '#_juno/releases';\n", "import {nonNullish} from '@junobuild/utils';\nimport {\n  spawn as spawnCommand,\n  type ChildProcess,\n  type ChildProcessWithoutNullStreams\n} from 'child_process';\nimport {applyForceShell} from './cmd.windows.utils';\n\nexport const spawn = async ({\n  command,\n  cwd,\n  args,\n  env,\n  stdout,\n  silentOut = false,\n  silentErrors = false\n}: {\n  command: string;\n  cwd?: string;\n  args?: readonly string[];\n  env?: NodeJS.ProcessEnv;\n  stdout?: (output: string) => void;\n  silentOut?: boolean;\n  silentErrors?: boolean;\n}): Promise<number | null> =>\n  // eslint-disable-next-line no-async-promise-executor\n  await new Promise<number | null>(async (resolve, reject) => {\n    const [escapedCommand, escapedArgs, options] = await applyForceShell(command, args ?? [], {\n      ...(nonNullish(cwd) && {cwd}),\n      ...(nonNullish(env) && {env})\n    });\n\n    const process: ChildProcessWithoutNullStreams = spawnCommand(\n      escapedCommand,\n      escapedArgs,\n      options\n    );\n\n    process.stdout.on('data', (data) => {\n      if (nonNullish(stdout)) {\n        stdout(`${data}`);\n        return;\n      }\n\n      if (silentOut) {\n        return;\n      }\n\n      console.log(`${data}`);\n    });\n    process.stderr.on('data', (data) => {\n      if (silentErrors) {\n        return;\n      }\n\n      reject(new Error(`${data}`));\n    });\n\n    process.on('close', (code) => {\n      resolve(code);\n    });\n    process.on('error', (err) => {\n      reject(err);\n    });\n  });\n\nexport const execute = async ({\n  command,\n  args,\n  env\n}: {\n  command: string;\n  args?: readonly string[];\n  env?: NodeJS.ProcessEnv;\n}): Promise<number | null> =>\n  // eslint-disable-next-line no-async-promise-executor\n  await new Promise<number | null>(async (resolve) => {\n    const [escapedCommand, escapedArgs, options] = await applyForceShell(command, args ?? [], {\n      stdio: 'inherit',\n      ...(nonNullish(env) && {env})\n    });\n\n    const childProcess: ChildProcess = spawnCommand(escapedCommand, escapedArgs ?? [], options);\n\n    childProcess.on('close', (code) => {\n      if (code === 0) {\n        resolve(code);\n        return;\n      }\n\n      // The child process encountered an error and exited abnormally. Since the child-process passes the error output to the terminal, we also close the CLI process without bubbling up and displaying any specific error.\n      process.exit(1);\n    });\n  });\n", "import {nonNullish} from '@junobuild/utils';\nimport type {SpawnOptions} from 'child_process';\nimport {stat} from 'node:fs/promises';\nimport path from 'node:path';\nimport process from 'node:process';\nimport {URL} from 'node:url';\n\n/**\n * This code is adapted from `nano-spawn`.\n * Source: https://github.com/sindresorhus/nano-spawn\n *\n * It includes logic to ensure proper command execution across platforms,\n * particularly handling shell requirements on Windows.\n *\n * If updating, consider checking for upstream changes in `nano-spawn`.\n */\n\n// When setting `shell: true` under-the-hood, we must manually escape the file and arguments.\n// This ensures arguments are properly split, and prevents command injection.\n// eslint-disable-next-line local-rules/prefer-object-params\nexport const applyForceShell = async <Options extends SpawnOptions>(\n  file: string,\n  commandArguments: readonly string[],\n  options: Options\n): Promise<[string, readonly string[], Options]> =>\n  (await shouldForceShell(file, options))\n    ? [\n        escapeFile(file),\n        commandArguments.map((argument) => escapeArgument(argument)),\n        {...options, shell: true}\n      ]\n    : [file, commandArguments, options];\n\n// On Windows, running most executable files (except *.exe and *.com) requires using a shell.\n// This includes *.cmd and *.bat, which itself includes Node modules binaries.\n// We detect this situation and automatically:\n//  - Set the `shell: true` option\n//  - Escape shell-specific characters\n// eslint-disable-next-line local-rules/prefer-object-params\nconst shouldForceShell = async <Options extends SpawnOptions>(\n  file: string,\n  {shell, cwd, env = process.env}: Options\n): Promise<boolean> => process.platform === 'win32' && !shell && !(await isExe(file, cwd, env));\n\n// Detect whether the executable file is a *.exe or *.com file.\n// Windows allows omitting file extensions (present in the `PATHEXT` environment variable).\n// Therefore we must use the `PATH` environment variable and make `stat` calls to check this.\n// Environment variables are case-insensitive on Windows, so we check both `PATH` and `Path`.\n// eslint-disable-next-line local-rules/prefer-object-params\nconst isExe = async (\n  file: string,\n  cwd: string | URL | undefined,\n  {Path = '', PATH = Path}: NodeJS.ProcessEnv\n): Promise<boolean> =>\n  // If the *.exe or *.com file extension was not omitted.\n  // Windows common file systems are case-insensitive.\n  exeExtensions.some((extension) => file.toLowerCase().endsWith(extension)) ||\n  // Use returned assignment to keep code small\n  (EXE_MEMO[`${file}\\0${cwd}\\0${PATH}`] ??= await mIsExe(file, cwd, PATH));\n\n// Memoize the following function, for performance\nconst EXE_MEMO = {};\n\n// eslint-disable-next-line local-rules/prefer-object-params\nconst mIsExe = async (\n  file: string,\n  cwd: string | URL | undefined,\n  PATH: string\n): Promise<boolean> => {\n  const parts = PATH\n    // `PATH` is ;-separated on Windows\n    .split(path.delimiter)\n    // `PATH` allows leading/trailing ; on Windows\n    .filter(Boolean)\n    // `PATH` parts can be double quoted on Windows\n    .map((part) => part.replace(/^\"(.*)\"$/, '$1'));\n\n  // For performance, parallelize and stop iteration as soon as an *.exe of *.com file is found\n  try {\n    await Promise.all(\n      exeExtensions\n        .flatMap((extension) =>\n          [cwd, ...parts]\n            .filter(nonNullish)\n            .map(\n              (part) =>\n                `${path.resolve(part instanceof URL ? part.toString() : part, file)}${extension}`\n            )\n        )\n        .map(async (possibleFile) => {\n          try {\n            await stat(possibleFile);\n          } catch {\n            return;\n          }\n\n          throw 0;\n        })\n    );\n  } catch {\n    return true;\n  }\n\n  return false;\n};\n\n// Other file extensions require using a shell\nconst exeExtensions = ['.exe', '.com'];\n\n// `cmd.exe` escaping for arguments.\n// Taken from https://github.com/moxystudio/node-cross-spawn\nconst escapeArgument = (argument) =>\n  escapeFile(\n    escapeFile(`\"${argument.replaceAll(/(\\\\*)\"/g, '$1$1\\\\\"').replace(/(\\\\*)$/, '$1$1')}\"`)\n  );\n\n// `cmd.exe` escaping for file and arguments.\nconst escapeFile = (file: string): string => file.replaceAll(/([()\\][%!^\"`<>&|;, *?])/g, '^$1');\n", "import {execute} from '../utils/cmd.utils';\n\nexport const executeHooks = async (hooks?: string[]) => {\n  for (const hook of hooks ?? []) {\n    const [cmd, ...args] = hook.split(' ');\n    await execute({command: cmd, args});\n  }\n};\n", "import type {EncodingType} from '@junobuild/config';\nimport type {Asset} from '@junobuild/storage';\nimport {isNullish, nonNullish} from '@junobuild/utils';\nimport crypto from 'crypto';\nimport {fileTypeFromFile} from 'file-type';\nimport mime from 'mime-types';\nimport {minimatch} from 'minimatch';\nimport {readFile} from 'node:fs/promises';\nimport {extname, join} from 'node:path';\nimport {\n  DEPLOY_DEFAULT_ENCODING,\n  DEPLOY_DEFAULT_IGNORE,\n  DEPLOY_DEFAULT_PRECOMPRESS,\n  DEPLOY_DEFAULT_SOURCE\n} from '../constants/deploy.constants';\nimport type {ListAssets} from '../types/assets';\nimport type {DeployConfig} from '../types/config';\nimport type {FileDetails, FileExtension, PrepareDeployOptions} from '../types/deploy';\nimport {fullPath} from '../utils/assets.utils';\nimport {compressFiles} from '../utils/compress.utils';\nimport {listSourceFilesForDeploy} from '../utils/deploy.utils';\n\nexport const prepareDeploy = async ({\n  config,\n  listAssets,\n  assertSourceDirExists,\n  includeAllFiles\n}: {\n  config: DeployConfig;\n  listAssets: ListAssets;\n} & PrepareDeployOptions): Promise<{\n  files: FileDetails[];\n  sourceAbsolutePath: string;\n}> => {\n  const {\n    source = DEPLOY_DEFAULT_SOURCE,\n    ignore = DEPLOY_DEFAULT_IGNORE,\n    encoding = DEPLOY_DEFAULT_ENCODING,\n    precompress = DEPLOY_DEFAULT_PRECOMPRESS\n  } = config;\n\n  const sourceAbsolutePath = join(process.cwd(), source);\n\n  assertSourceDirExists?.(sourceAbsolutePath);\n\n  const files = await prepareFiles({\n    sourceAbsolutePath,\n    ignore,\n    encoding,\n    precompress,\n    listAssets,\n    includeAllFiles\n  });\n\n  return {\n    files,\n    sourceAbsolutePath\n  };\n};\n\nconst filterFilesToUpload = async ({\n  files,\n  sourceAbsolutePath,\n  listAssets\n}: {\n  files: FileDetails[];\n  sourceAbsolutePath: string;\n  listAssets: ListAssets;\n}): Promise<FileDetails[]> => {\n  const existingAssets = await listAssets({});\n\n  const promises = files.map(\n    async (file: FileDetails) => await fileNeedUpload({file, sourceAbsolutePath, existingAssets})\n  );\n  const results: Array<{file: FileDetails; upload: boolean}> = await Promise.all(promises);\n\n  return results.filter(({upload}) => upload).map(({file}) => file);\n};\n\nconst computeSha256 = async (file: string): Promise<string> => {\n  const buffer = await readFile(file);\n  return crypto.createHash('sha256').update(buffer).digest('base64');\n};\n\nconst fileNeedUpload = async ({\n  file,\n  existingAssets,\n  sourceAbsolutePath\n}: {\n  file: FileDetails;\n  existingAssets: Asset[];\n  sourceAbsolutePath: string;\n}): Promise<{\n  file: FileDetails;\n  upload: boolean;\n}> => {\n  const effectiveFilePath = file.alternateFile ?? file.file;\n\n  // Is it a new file?\n  const asset = existingAssets.find(\n    ({fullPath: f}) => f === fullPath({file: effectiveFilePath, sourceAbsolutePath})\n  );\n\n  if (isNullish(asset)) {\n    return {file, upload: true};\n  }\n\n  const {encoding, file: fileToUpload} = file;\n\n  const sha256 = await computeSha256(fileToUpload);\n\n  // Previously or originally, comparing the SHA-256 hash of Gzip and Brotli files between Node.js and Rust was unreliable.\n  // This was most likely because some third-party tools generate Gzip data without `--no-name`,\n  // embedding the file's modified timestamp and causing hash mismatches.\n  //\n  // Nowadays, the recommended way to compress files is by using the CLI, which produces reproducible output\n  // thanks to Node.js >= v20.\n  //\n  // In addition, some files are binary and have no meaningful uncompressed \"identity\" form\n  // (for example, woff2 fonts).\n  //\n  // For this reason, we always compare the hash of the actual file being uploaded -\n  // whether compressed or not - together with its encoding, or fall back to identity when needed.\n\n  return {\n    file,\n    upload: sha256 !== asset.encodings[encoding ?? 'identity']?.sha256\n  };\n};\n\nconst prepareFiles = async ({\n  sourceAbsolutePath,\n  ignore,\n  encoding,\n  precompress,\n  listAssets,\n  includeAllFiles\n}: {\n  sourceAbsolutePath: string;\n} & {listAssets: ListAssets} & Pick<PrepareDeployOptions, 'includeAllFiles'> &\n  Required<Pick<DeployConfig, 'ignore' | 'encoding' | 'precompress'>>): Promise<FileDetails[]> => {\n  const sourceFiles = listSourceFilesForDeploy({sourceAbsolutePath, ignore});\n\n  const allCompressedFiles = await compressFiles({sourceFiles, precompress});\n  const compressedFiles = allCompressedFiles.filter(\n    ({compressed}) => !sourceFiles.includes(compressed)\n  );\n\n  const uncompressedFiles = sourceFiles.filter(\n    (source) =>\n      compressedFiles.find(({source: sourceCompressed}) => sourceCompressed === source) ===\n      undefined\n  );\n\n  // TODO: brotli and zlib naive\n  const mapEncodingType = ({\n    file,\n    ext\n  }: {\n    file: string;\n    ext: FileExtension | undefined;\n  }): EncodingType | undefined => {\n    const customEncoding = encoding.find(([pattern, _]) => minimatch(file, pattern));\n\n    if (nonNullish(customEncoding)) {\n      const [_, encodingType] = customEncoding;\n      return encodingType;\n    }\n\n    if (ext === 'Z') {\n      return 'compress';\n    }\n\n    if (ext === 'gz') {\n      return 'gzip';\n    }\n\n    if (extname(file).toLowerCase() === '.br') {\n      return 'br';\n    }\n\n    if (extname(file).toLowerCase() === '.zlib') {\n      return 'deflate';\n    }\n\n    return undefined;\n  };\n\n  const mapFiles = async ({\n    file,\n    alternateFile\n  }: Pick<FileDetails, 'file' | 'alternateFile'>): Promise<FileDetails> => {\n    const fileType = await fileTypeFromFile(file);\n    const encodingType = mapEncodingType({file, ext: fileType?.ext});\n\n    // For some reason the library 'file-type' does not always map the mime type correctly\n    const mimeType = mime.lookup(alternateFile ?? file);\n\n    return {\n      file,\n      alternateFile,\n      mime: typeof mimeType === 'string' ? mimeType : undefined,\n      encoding: encodingType\n    };\n  };\n\n  const uncompressedFilesDetails = await Promise.all(\n    uncompressedFiles.map(async (file) => await mapFiles({file}))\n  );\n\n  const mapBothFiles = async ({\n    source,\n    compressed\n  }: {\n    source: string;\n    compressed: string;\n  }): Promise<FileDetails[]> => {\n    const mapCompressedFile = async () => await mapFiles({file: compressed, alternateFile: source});\n    const mapSourceFile = async () => await mapFiles({file: source});\n\n    return await Promise.all([mapCompressedFile(), mapSourceFile()]);\n  };\n\n  const mapReplaceFile = async ({\n    compressed,\n    source\n  }: {\n    source: string;\n    compressed: string;\n  }): Promise<FileDetails> => {\n    const mapCompressedFile = async () => await mapFiles({file: compressed, alternateFile: source});\n    return await mapCompressedFile();\n  };\n\n  const bothCompressedFilesDetails = await Promise.all(\n    compressedFiles\n      .filter(({mode}) => mode === 'both')\n      .map(async ({source, compressed}) => await mapBothFiles({source, compressed}))\n  );\n\n  const replaceCompressedFilesDetails = await Promise.all(\n    compressedFiles\n      .filter(({mode}) => mode === 'replace')\n      .map(async ({source, compressed}) => await mapReplaceFile({source, compressed}))\n  );\n\n  // Note: The CLI does not currently check for duplicate source files across patterns.\n  // For example, if a developer defines overlapping patterns in both \"replace\" and \"both\" modes\n  // that reference the same file, it may appear multiple times in the list.\n  // In this case, the last uploaded compressed version takes precedence, and both the source\n  // and compressed files may still be uploaded.\n  // In the future, we may add assertions to prevent this scenario. For now, responsibility\n  // is left to developers using multiple pre-compression strategies \u2014 which is likely rare.\n  const files = [\n    ...replaceCompressedFilesDetails,\n    ...bothCompressedFilesDetails.flatMap((files) => files),\n    ...uncompressedFilesDetails\n  ];\n\n  // juno deploy with proposals using clear\n  if (includeAllFiles === true) {\n    return files;\n  }\n\n  return await filterFilesToUpload({\n    files,\n    sourceAbsolutePath,\n    listAssets\n  });\n};\n", "import * as ieee754 from 'ieee754';\nimport { textDecode } from \"@borewit/text-codec\";\n// Primitive types\nfunction dv(array) {\n    return new DataView(array.buffer, array.byteOffset);\n}\n/*\n * 8-bit unsigned integer\n */\nexport const UINT8 = {\n    len: 1,\n    get(array, offset) {\n        return dv(array).getUint8(offset);\n    },\n    put(array, offset, value) {\n        dv(array).setUint8(offset, value);\n        return offset + 1;\n    }\n};\n/**\n * 16-bit unsigned integer, Little Endian byte order\n */\nexport const UINT16_LE = {\n    len: 2,\n    get(array, offset) {\n        return dv(array).getUint16(offset, true);\n    },\n    put(array, offset, value) {\n        dv(array).setUint16(offset, value, true);\n        return offset + 2;\n    }\n};\n/**\n * 16-bit unsigned integer, Big Endian byte order\n */\nexport const UINT16_BE = {\n    len: 2,\n    get(array, offset) {\n        return dv(array).getUint16(offset);\n    },\n    put(array, offset, value) {\n        dv(array).setUint16(offset, value);\n        return offset + 2;\n    }\n};\n/**\n * 24-bit unsigned integer, Little Endian byte order\n */\nexport const UINT24_LE = {\n    len: 3,\n    get(array, offset) {\n        const dataView = dv(array);\n        return dataView.getUint8(offset) + (dataView.getUint16(offset + 1, true) << 8);\n    },\n    put(array, offset, value) {\n        const dataView = dv(array);\n        dataView.setUint8(offset, value & 0xff);\n        dataView.setUint16(offset + 1, value >> 8, true);\n        return offset + 3;\n    }\n};\n/**\n * 24-bit unsigned integer, Big Endian byte order\n */\nexport const UINT24_BE = {\n    len: 3,\n    get(array, offset) {\n        const dataView = dv(array);\n        return (dataView.getUint16(offset) << 8) + dataView.getUint8(offset + 2);\n    },\n    put(array, offset, value) {\n        const dataView = dv(array);\n        dataView.setUint16(offset, value >> 8);\n        dataView.setUint8(offset + 2, value & 0xff);\n        return offset + 3;\n    }\n};\n/**\n * 32-bit unsigned integer, Little Endian byte order\n */\nexport const UINT32_LE = {\n    len: 4,\n    get(array, offset) {\n        return dv(array).getUint32(offset, true);\n    },\n    put(array, offset, value) {\n        dv(array).setUint32(offset, value, true);\n        return offset + 4;\n    }\n};\n/**\n * 32-bit unsigned integer, Big Endian byte order\n */\nexport const UINT32_BE = {\n    len: 4,\n    get(array, offset) {\n        return dv(array).getUint32(offset);\n    },\n    put(array, offset, value) {\n        dv(array).setUint32(offset, value);\n        return offset + 4;\n    }\n};\n/**\n * 8-bit signed integer\n */\nexport const INT8 = {\n    len: 1,\n    get(array, offset) {\n        return dv(array).getInt8(offset);\n    },\n    put(array, offset, value) {\n        dv(array).setInt8(offset, value);\n        return offset + 1;\n    }\n};\n/**\n * 16-bit signed integer, Big Endian byte order\n */\nexport const INT16_BE = {\n    len: 2,\n    get(array, offset) {\n        return dv(array).getInt16(offset);\n    },\n    put(array, offset, value) {\n        dv(array).setInt16(offset, value);\n        return offset + 2;\n    }\n};\n/**\n * 16-bit signed integer, Little Endian byte order\n */\nexport const INT16_LE = {\n    len: 2,\n    get(array, offset) {\n        return dv(array).getInt16(offset, true);\n    },\n    put(array, offset, value) {\n        dv(array).setInt16(offset, value, true);\n        return offset + 2;\n    }\n};\n/**\n * 24-bit signed integer, Little Endian byte order\n */\nexport const INT24_LE = {\n    len: 3,\n    get(array, offset) {\n        const unsigned = UINT24_LE.get(array, offset);\n        return unsigned > 0x7fffff ? unsigned - 0x1000000 : unsigned;\n    },\n    put(array, offset, value) {\n        const dataView = dv(array);\n        dataView.setUint8(offset, value & 0xff);\n        dataView.setUint16(offset + 1, value >> 8, true);\n        return offset + 3;\n    }\n};\n/**\n * 24-bit signed integer, Big Endian byte order\n */\nexport const INT24_BE = {\n    len: 3,\n    get(array, offset) {\n        const unsigned = UINT24_BE.get(array, offset);\n        return unsigned > 0x7fffff ? unsigned - 0x1000000 : unsigned;\n    },\n    put(array, offset, value) {\n        const dataView = dv(array);\n        dataView.setUint16(offset, value >> 8);\n        dataView.setUint8(offset + 2, value & 0xff);\n        return offset + 3;\n    }\n};\n/**\n * 32-bit signed integer, Big Endian byte order\n */\nexport const INT32_BE = {\n    len: 4,\n    get(array, offset) {\n        return dv(array).getInt32(offset);\n    },\n    put(array, offset, value) {\n        dv(array).setInt32(offset, value);\n        return offset + 4;\n    }\n};\n/**\n * 32-bit signed integer, Big Endian byte order\n */\nexport const INT32_LE = {\n    len: 4,\n    get(array, offset) {\n        return dv(array).getInt32(offset, true);\n    },\n    put(array, offset, value) {\n        dv(array).setInt32(offset, value, true);\n        return offset + 4;\n    }\n};\n/**\n * 64-bit unsigned integer, Little Endian byte order\n */\nexport const UINT64_LE = {\n    len: 8,\n    get(array, offset) {\n        return dv(array).getBigUint64(offset, true);\n    },\n    put(array, offset, value) {\n        dv(array).setBigUint64(offset, value, true);\n        return offset + 8;\n    }\n};\n/**\n * 64-bit signed integer, Little Endian byte order\n */\nexport const INT64_LE = {\n    len: 8,\n    get(array, offset) {\n        return dv(array).getBigInt64(offset, true);\n    },\n    put(array, offset, value) {\n        dv(array).setBigInt64(offset, value, true);\n        return offset + 8;\n    }\n};\n/**\n * 64-bit unsigned integer, Big Endian byte order\n */\nexport const UINT64_BE = {\n    len: 8,\n    get(array, offset) {\n        return dv(array).getBigUint64(offset);\n    },\n    put(array, offset, value) {\n        dv(array).setBigUint64(offset, value);\n        return offset + 8;\n    }\n};\n/**\n * 64-bit signed integer, Big Endian byte order\n */\nexport const INT64_BE = {\n    len: 8,\n    get(array, offset) {\n        return dv(array).getBigInt64(offset);\n    },\n    put(array, offset, value) {\n        dv(array).setBigInt64(offset, value);\n        return offset + 8;\n    }\n};\n/**\n * IEEE 754 16-bit (half precision) float, big endian\n */\nexport const Float16_BE = {\n    len: 2,\n    get(dataView, offset) {\n        return ieee754.read(dataView, offset, false, 10, this.len);\n    },\n    put(dataView, offset, value) {\n        ieee754.write(dataView, value, offset, false, 10, this.len);\n        return offset + this.len;\n    }\n};\n/**\n * IEEE 754 16-bit (half precision) float, little endian\n */\nexport const Float16_LE = {\n    len: 2,\n    get(array, offset) {\n        return ieee754.read(array, offset, true, 10, this.len);\n    },\n    put(array, offset, value) {\n        ieee754.write(array, value, offset, true, 10, this.len);\n        return offset + this.len;\n    }\n};\n/**\n * IEEE 754 32-bit (single precision) float, big endian\n */\nexport const Float32_BE = {\n    len: 4,\n    get(array, offset) {\n        return dv(array).getFloat32(offset);\n    },\n    put(array, offset, value) {\n        dv(array).setFloat32(offset, value);\n        return offset + 4;\n    }\n};\n/**\n * IEEE 754 32-bit (single precision) float, little endian\n */\nexport const Float32_LE = {\n    len: 4,\n    get(array, offset) {\n        return dv(array).getFloat32(offset, true);\n    },\n    put(array, offset, value) {\n        dv(array).setFloat32(offset, value, true);\n        return offset + 4;\n    }\n};\n/**\n * IEEE 754 64-bit (double precision) float, big endian\n */\nexport const Float64_BE = {\n    len: 8,\n    get(array, offset) {\n        return dv(array).getFloat64(offset);\n    },\n    put(array, offset, value) {\n        dv(array).setFloat64(offset, value);\n        return offset + 8;\n    }\n};\n/**\n * IEEE 754 64-bit (double precision) float, little endian\n */\nexport const Float64_LE = {\n    len: 8,\n    get(array, offset) {\n        return dv(array).getFloat64(offset, true);\n    },\n    put(array, offset, value) {\n        dv(array).setFloat64(offset, value, true);\n        return offset + 8;\n    }\n};\n/**\n * IEEE 754 80-bit (extended precision) float, big endian\n */\nexport const Float80_BE = {\n    len: 10,\n    get(array, offset) {\n        return ieee754.read(array, offset, false, 63, this.len);\n    },\n    put(array, offset, value) {\n        ieee754.write(array, value, offset, false, 63, this.len);\n        return offset + this.len;\n    }\n};\n/**\n * IEEE 754 80-bit (extended precision) float, little endian\n */\nexport const Float80_LE = {\n    len: 10,\n    get(array, offset) {\n        return ieee754.read(array, offset, true, 63, this.len);\n    },\n    put(array, offset, value) {\n        ieee754.write(array, value, offset, true, 63, this.len);\n        return offset + this.len;\n    }\n};\n/**\n * Ignore a given number of bytes\n */\nexport class IgnoreType {\n    /**\n     * @param len number of bytes to ignore\n     */\n    constructor(len) {\n        this.len = len;\n    }\n    // ToDo: don't read, but skip data\n    get(_array, _off) {\n    }\n}\nexport class Uint8ArrayType {\n    constructor(len) {\n        this.len = len;\n    }\n    get(array, offset) {\n        return array.subarray(offset, offset + this.len);\n    }\n}\n/**\n * Consume a fixed number of bytes from the stream and return a string with a specified encoding.\n * Supports all encodings supported by TextDecoder, plus 'windows-1252'.\n */\nexport class StringType {\n    constructor(len, encoding) {\n        this.len = len;\n        this.encoding = encoding;\n    }\n    get(data, offset = 0) {\n        const bytes = data.subarray(offset, offset + this.len);\n        return textDecode(bytes, this.encoding);\n    }\n}\n/**\n * ANSI Latin 1 String using Windows-1252 (Code Page 1252)\n * Windows-1252 is a superset of ISO 8859-1 / Latin-1.\n */\nexport class AnsiStringType extends StringType {\n    constructor(len) {\n        super(len, 'windows-1252');\n    }\n}\n", "const WINDOWS_1252_EXTRA = {\n    0x80: \"\u20AC\", 0x82: \"\u201A\", 0x83: \"\u0192\", 0x84: \"\u201E\", 0x85: \"\u2026\", 0x86: \"\u2020\",\n    0x87: \"\u2021\", 0x88: \"\u02C6\", 0x89: \"\u2030\", 0x8a: \"\u0160\", 0x8b: \"\u2039\", 0x8c: \"\u0152\",\n    0x8e: \"\u017D\", 0x91: \"\u2018\", 0x92: \"\u2019\", 0x93: \"\u201C\", 0x94: \"\u201D\", 0x95: \"\u2022\",\n    0x96: \"\u2013\", 0x97: \"\u2014\", 0x98: \"\u02DC\", 0x99: \"\u2122\", 0x9a: \"\u0161\", 0x9b: \"\u203A\",\n    0x9c: \"\u0153\", 0x9e: \"\u017E\", 0x9f: \"\u0178\",\n};\nconst WINDOWS_1252_REVERSE = {};\nfor (const [code, char] of Object.entries(WINDOWS_1252_EXTRA)) {\n    WINDOWS_1252_REVERSE[char] = Number.parseInt(code, 10);\n}\nlet _utf8Decoder;\nlet _utf8Encoder;\nfunction utf8Decoder() {\n    if (typeof globalThis.TextDecoder === \"undefined\")\n        return undefined;\n    return (_utf8Decoder !== null && _utf8Decoder !== void 0 ? _utf8Decoder : (_utf8Decoder = new globalThis.TextDecoder(\"utf-8\")));\n}\nfunction utf8Encoder() {\n    if (typeof globalThis.TextEncoder === \"undefined\")\n        return undefined;\n    return (_utf8Encoder !== null && _utf8Encoder !== void 0 ? _utf8Encoder : (_utf8Encoder = new globalThis.TextEncoder()));\n}\nconst CHUNK = 32 * 1024;\nconst REPLACEMENT = 0xfffd;\n/**\n * Decode text from binary data\n */\nexport function textDecode(bytes, encoding = \"utf-8\") {\n    switch (encoding.toLowerCase()) {\n        case \"utf-8\":\n        case \"utf8\": {\n            const dec = utf8Decoder();\n            return dec ? dec.decode(bytes) : decodeUTF8(bytes);\n        }\n        case \"utf-16le\":\n            return decodeUTF16LE(bytes);\n        case \"us-ascii\":\n        case \"ascii\":\n            return decodeASCII(bytes);\n        case \"latin1\":\n        case \"iso-8859-1\":\n            return decodeLatin1(bytes);\n        case \"windows-1252\":\n            return decodeWindows1252(bytes);\n        default:\n            throw new RangeError(`Encoding '${encoding}' not supported`);\n    }\n}\nexport function textEncode(input = \"\", encoding = \"utf-8\") {\n    switch (encoding.toLowerCase()) {\n        case \"utf-8\":\n        case \"utf8\": {\n            const enc = utf8Encoder();\n            return enc ? enc.encode(input) : encodeUTF8(input);\n        }\n        case \"utf-16le\":\n            return encodeUTF16LE(input);\n        case \"us-ascii\":\n        case \"ascii\":\n            return encodeASCII(input);\n        case \"latin1\":\n        case \"iso-8859-1\":\n            return encodeLatin1(input);\n        case \"windows-1252\":\n            return encodeWindows1252(input);\n        default:\n            throw new RangeError(`Encoding '${encoding}' not supported`);\n    }\n}\nfunction appendCodePoint(out, cp) {\n    if (cp <= 0xffff) {\n        out.push(String.fromCharCode(cp));\n        return;\n    }\n    cp -= 0x10000;\n    out.push(String.fromCharCode(0xd800 + (cp >> 10), 0xdc00 + (cp & 0x3ff)));\n}\nfunction flushChunk(parts, chunk) {\n    if (chunk.length === 0)\n        return;\n    parts.push(String.fromCharCode.apply(null, chunk));\n    chunk.length = 0;\n}\nfunction pushCodeUnit(parts, chunk, codeUnit) {\n    chunk.push(codeUnit);\n    if (chunk.length >= CHUNK)\n        flushChunk(parts, chunk);\n}\nfunction pushCodePoint(parts, chunk, cp) {\n    if (cp <= 0xffff) {\n        pushCodeUnit(parts, chunk, cp);\n        return;\n    }\n    cp -= 0x10000;\n    pushCodeUnit(parts, chunk, 0xd800 + (cp >> 10));\n    pushCodeUnit(parts, chunk, 0xdc00 + (cp & 0x3ff));\n}\nfunction decodeUTF8(bytes) {\n    const parts = [];\n    const chunk = [];\n    let i = 0;\n    // Match TextDecoder(\"utf-8\") default BOM handling\n    if (bytes.length >= 3 &&\n        bytes[0] === 0xef &&\n        bytes[1] === 0xbb &&\n        bytes[2] === 0xbf) {\n        i = 3;\n    }\n    while (i < bytes.length) {\n        const b1 = bytes[i];\n        if (b1 <= 0x7f) {\n            pushCodeUnit(parts, chunk, b1);\n            i++;\n            continue;\n        }\n        // Invalid leading bytes: continuation byte or impossible prefixes\n        if (b1 < 0xc2 || b1 > 0xf4) {\n            pushCodeUnit(parts, chunk, REPLACEMENT);\n            i++;\n            continue;\n        }\n        // 2-byte sequence\n        if (b1 <= 0xdf) {\n            if (i + 1 >= bytes.length) {\n                pushCodeUnit(parts, chunk, REPLACEMENT);\n                i++;\n                continue;\n            }\n            const b2 = bytes[i + 1];\n            if ((b2 & 0xc0) !== 0x80) {\n                pushCodeUnit(parts, chunk, REPLACEMENT);\n                i++;\n                continue;\n            }\n            const cp = ((b1 & 0x1f) << 6) | (b2 & 0x3f);\n            pushCodeUnit(parts, chunk, cp);\n            i += 2;\n            continue;\n        }\n        // 3-byte sequence\n        if (b1 <= 0xef) {\n            if (i + 2 >= bytes.length) {\n                pushCodeUnit(parts, chunk, REPLACEMENT);\n                i++;\n                continue;\n            }\n            const b2 = bytes[i + 1];\n            const b3 = bytes[i + 2];\n            const valid = (b2 & 0xc0) === 0x80 &&\n                (b3 & 0xc0) === 0x80 &&\n                !(b1 === 0xe0 && b2 < 0xa0) && // overlong\n                !(b1 === 0xed && b2 >= 0xa0); // surrogate range\n            if (!valid) {\n                pushCodeUnit(parts, chunk, REPLACEMENT);\n                i++;\n                continue;\n            }\n            const cp = ((b1 & 0x0f) << 12) |\n                ((b2 & 0x3f) << 6) |\n                (b3 & 0x3f);\n            pushCodeUnit(parts, chunk, cp);\n            i += 3;\n            continue;\n        }\n        // 4-byte sequence\n        if (i + 3 >= bytes.length) {\n            pushCodeUnit(parts, chunk, REPLACEMENT);\n            i++;\n            continue;\n        }\n        const b2 = bytes[i + 1];\n        const b3 = bytes[i + 2];\n        const b4 = bytes[i + 3];\n        const valid = (b2 & 0xc0) === 0x80 &&\n            (b3 & 0xc0) === 0x80 &&\n            (b4 & 0xc0) === 0x80 &&\n            !(b1 === 0xf0 && b2 < 0x90) && // overlong\n            !(b1 === 0xf4 && b2 > 0x8f); // > U+10FFFF\n        if (!valid) {\n            pushCodeUnit(parts, chunk, REPLACEMENT);\n            i++;\n            continue;\n        }\n        const cp = ((b1 & 0x07) << 18) |\n            ((b2 & 0x3f) << 12) |\n            ((b3 & 0x3f) << 6) |\n            (b4 & 0x3f);\n        pushCodePoint(parts, chunk, cp);\n        i += 4;\n    }\n    flushChunk(parts, chunk);\n    return parts.join(\"\");\n}\nfunction decodeUTF16LE(bytes) {\n    const parts = [];\n    const chunk = [];\n    const len = bytes.length;\n    let i = 0;\n    while (i + 1 < len) {\n        const u1 = bytes[i] | (bytes[i + 1] << 8);\n        i += 2;\n        // High surrogate\n        if (u1 >= 0xd800 && u1 <= 0xdbff) {\n            if (i + 1 < len) {\n                const u2 = bytes[i] | (bytes[i + 1] << 8);\n                if (u2 >= 0xdc00 && u2 <= 0xdfff) {\n                    pushCodeUnit(parts, chunk, u1);\n                    pushCodeUnit(parts, chunk, u2);\n                    i += 2;\n                }\n                else {\n                    pushCodeUnit(parts, chunk, REPLACEMENT);\n                }\n            }\n            else {\n                pushCodeUnit(parts, chunk, REPLACEMENT);\n            }\n            continue;\n        }\n        // Lone low surrogate\n        if (u1 >= 0xdc00 && u1 <= 0xdfff) {\n            pushCodeUnit(parts, chunk, REPLACEMENT);\n            continue;\n        }\n        pushCodeUnit(parts, chunk, u1);\n    }\n    // Odd trailing byte\n    if (i < len) {\n        pushCodeUnit(parts, chunk, REPLACEMENT);\n    }\n    flushChunk(parts, chunk);\n    return parts.join(\"\");\n}\nfunction decodeASCII(bytes) {\n    const parts = [];\n    for (let i = 0; i < bytes.length; i += CHUNK) {\n        const end = Math.min(bytes.length, i + CHUNK);\n        const codes = new Array(end - i);\n        for (let j = i, k = 0; j < end; j++, k++) {\n            codes[k] = bytes[j] & 0x7f;\n        }\n        parts.push(String.fromCharCode.apply(null, codes));\n    }\n    return parts.join(\"\");\n}\nfunction decodeLatin1(bytes) {\n    const parts = [];\n    for (let i = 0; i < bytes.length; i += CHUNK) {\n        const end = Math.min(bytes.length, i + CHUNK);\n        const codes = new Array(end - i);\n        for (let j = i, k = 0; j < end; j++, k++) {\n            codes[k] = bytes[j];\n        }\n        parts.push(String.fromCharCode.apply(null, codes));\n    }\n    return parts.join(\"\");\n}\nfunction decodeWindows1252(bytes) {\n    const parts = [];\n    let out = \"\";\n    for (let i = 0; i < bytes.length; i++) {\n        const b = bytes[i];\n        const extra = b >= 0x80 && b <= 0x9f ? WINDOWS_1252_EXTRA[b] : undefined;\n        out += extra !== null && extra !== void 0 ? extra : String.fromCharCode(b);\n        if (out.length >= CHUNK) {\n            parts.push(out);\n            out = \"\";\n        }\n    }\n    if (out)\n        parts.push(out);\n    return parts.join(\"\");\n}\nfunction encodeUTF8(str) {\n    const out = [];\n    for (let i = 0; i < str.length; i++) {\n        let cp = str.charCodeAt(i);\n        // Valid surrogate pair\n        if (cp >= 0xd800 && cp <= 0xdbff) {\n            if (i + 1 < str.length) {\n                const lo = str.charCodeAt(i + 1);\n                if (lo >= 0xdc00 && lo <= 0xdfff) {\n                    cp = 0x10000 + ((cp - 0xd800) << 10) + (lo - 0xdc00);\n                    i++;\n                }\n                else {\n                    cp = REPLACEMENT;\n                }\n            }\n            else {\n                cp = REPLACEMENT;\n            }\n        }\n        else if (cp >= 0xdc00 && cp <= 0xdfff) {\n            // Lone low surrogate\n            cp = REPLACEMENT;\n        }\n        if (cp < 0x80) {\n            out.push(cp);\n        }\n        else if (cp < 0x800) {\n            out.push(0xc0 | (cp >> 6), 0x80 | (cp & 0x3f));\n        }\n        else if (cp < 0x10000) {\n            out.push(0xe0 | (cp >> 12), 0x80 | ((cp >> 6) & 0x3f), 0x80 | (cp & 0x3f));\n        }\n        else {\n            out.push(0xf0 | (cp >> 18), 0x80 | ((cp >> 12) & 0x3f), 0x80 | ((cp >> 6) & 0x3f), 0x80 | (cp & 0x3f));\n        }\n    }\n    return new Uint8Array(out);\n}\nfunction encodeUTF16LE(str) {\n    // Preserve JS string code units, but do not emit non-well-formed UTF-16.\n    // Replace lone surrogates with U+FFFD.\n    const units = [];\n    for (let i = 0; i < str.length; i++) {\n        const u = str.charCodeAt(i);\n        if (u >= 0xd800 && u <= 0xdbff) {\n            if (i + 1 < str.length) {\n                const lo = str.charCodeAt(i + 1);\n                if (lo >= 0xdc00 && lo <= 0xdfff) {\n                    units.push(u, lo);\n                    i++;\n                }\n                else {\n                    units.push(REPLACEMENT);\n                }\n            }\n            else {\n                units.push(REPLACEMENT);\n            }\n            continue;\n        }\n        if (u >= 0xdc00 && u <= 0xdfff) {\n            units.push(REPLACEMENT);\n            continue;\n        }\n        units.push(u);\n    }\n    const out = new Uint8Array(units.length * 2);\n    for (let i = 0; i < units.length; i++) {\n        const code = units[i];\n        const o = i * 2;\n        out[o] = code & 0xff;\n        out[o + 1] = code >>> 8;\n    }\n    return out;\n}\nfunction encodeASCII(str) {\n    const out = new Uint8Array(str.length);\n    for (let i = 0; i < str.length; i++)\n        out[i] = str.charCodeAt(i) & 0x7f;\n    return out;\n}\nfunction encodeLatin1(str) {\n    const out = new Uint8Array(str.length);\n    for (let i = 0; i < str.length; i++)\n        out[i] = str.charCodeAt(i) & 0xff;\n    return out;\n}\nfunction encodeWindows1252(str) {\n    const out = new Uint8Array(str.length);\n    for (let i = 0; i < str.length; i++) {\n        const ch = str[i];\n        const code = ch.charCodeAt(0);\n        if (WINDOWS_1252_REVERSE[ch] !== undefined) {\n            out[i] = WINDOWS_1252_REVERSE[ch];\n            continue;\n        }\n        if ((code >= 0x00 && code <= 0x7f) ||\n            (code >= 0xa0 && code <= 0xff)) {\n            out[i] = code;\n            continue;\n        }\n        out[i] = 0x3f; // '?'\n    }\n    return out;\n}\n", "/**\nPrimary entry point, Node.js specific entry point is index.js\n*/\n\nimport * as Token from 'token-types';\nimport * as strtok3 from 'strtok3/core';\nimport {GzipHandler} from '@tokenizer/inflate';\nimport {concatUint8Arrays} from 'uint8array-extras';\nimport {\n\tstringToBytes,\n\ttarHeaderChecksumMatches,\n\tuint32SyncSafeToken,\n} from './tokens.js';\nimport {extensions, mimeTypes} from './supported.js';\nimport {\n\tmaximumUntrustedSkipSizeInBytes,\n\tParserHardLimitError,\n\tsafeIgnore,\n\tcheckBytes,\n\thasUnknownFileSize,\n} from './parser.js';\nimport {detectZip} from './detectors/zip.js';\nimport {detectEbml} from './detectors/ebml.js';\nimport {detectPng} from './detectors/png.js';\nimport {detectAsf} from './detectors/asf.js';\n\nexport const reasonableDetectionSizeInBytes = 4100; // A fair amount of file-types are detectable within this range.\nconst maximumMpegOffsetTolerance = reasonableDetectionSizeInBytes - 2;\nconst maximumNestedGzipDetectionSizeInBytes = maximumUntrustedSkipSizeInBytes;\nconst maximumNestedGzipProbeDepth = 1;\nconst unknownSizeGzipProbeTimeoutInMilliseconds = 100;\nconst maximumId3HeaderSizeInBytes = maximumUntrustedSkipSizeInBytes;\nconst maximumTiffTagCount = 512;\nconst maximumDetectionReentryCount = 256;\nconst maximumTiffStreamIfdOffsetInBytes = 1024 * 1024;\nconst maximumTiffIfdOffsetInBytes = maximumUntrustedSkipSizeInBytes;\n\nexport function normalizeSampleSize(sampleSize) {\n\t// `sampleSize` is an explicit caller-controlled tuning knob, not untrusted file input.\n\t// Preserve valid caller-requested probe depth here; applications must bound attacker-derived option values themselves.\n\tif (!Number.isFinite(sampleSize)) {\n\t\treturn reasonableDetectionSizeInBytes;\n\t}\n\n\treturn Math.max(1, Math.trunc(sampleSize));\n}\n\nfunction normalizeMpegOffsetTolerance(mpegOffsetTolerance) {\n\t// This value controls scan depth and therefore worst-case CPU work.\n\tif (!Number.isFinite(mpegOffsetTolerance)) {\n\t\treturn 0;\n\t}\n\n\treturn Math.max(0, Math.min(maximumMpegOffsetTolerance, Math.trunc(mpegOffsetTolerance)));\n}\n\nfunction getKnownFileSizeOrMaximum(fileSize) {\n\tif (!Number.isFinite(fileSize)) {\n\t\treturn Number.MAX_SAFE_INTEGER;\n\t}\n\n\treturn Math.max(0, fileSize);\n}\n\n// Wrap stream in an identity TransformStream to avoid BYOB readers.\n// Node.js has a bug where calling controller.close() inside a BYOB stream's\n// pull() callback does not resolve pending reader.read() calls, causing\n// permanent hangs on streams shorter than the requested read size.\n// Using a default (non-BYOB) reader via TransformStream avoids this.\nfunction toDefaultStream(stream) {\n\treturn stream.pipeThrough(new TransformStream());\n}\n\nfunction readWithSignal(reader, signal) {\n\tif (signal === undefined) {\n\t\treturn reader.read();\n\t}\n\n\tsignal.throwIfAborted();\n\n\treturn Promise.race([\n\t\treader.read(),\n\t\tnew Promise((_resolve, reject) => {\n\t\t\tsignal.addEventListener('abort', () => {\n\t\t\t\treject(signal.reason);\n\t\t\t\treader.cancel(signal.reason).catch(() => {});\n\t\t\t}, {once: true});\n\t\t}),\n\t]);\n}\n\nfunction createByteLimitedReadableStream(stream, maximumBytes) {\n\tconst reader = stream.getReader();\n\tlet emittedBytes = 0;\n\tlet sourceDone = false;\n\tlet sourceCanceled = false;\n\n\tconst cancelSource = async reason => {\n\t\tif (\n\t\t\tsourceDone\n\t\t\t|| sourceCanceled\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tsourceCanceled = true;\n\t\tawait reader.cancel(reason);\n\t};\n\n\treturn new ReadableStream({\n\t\tasync pull(controller) {\n\t\t\tif (emittedBytes >= maximumBytes) {\n\t\t\t\tcontroller.close();\n\t\t\t\tawait cancelSource();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst {done, value} = await reader.read();\n\t\t\tif (\n\t\t\t\tdone\n\t\t\t\t|| !value\n\t\t\t) {\n\t\t\t\tsourceDone = true;\n\t\t\t\tcontroller.close();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst remainingBytes = maximumBytes - emittedBytes;\n\t\t\tif (value.length > remainingBytes) {\n\t\t\t\tcontroller.enqueue(value.subarray(0, remainingBytes));\n\t\t\t\temittedBytes += remainingBytes;\n\t\t\t\tcontroller.close();\n\t\t\t\tawait cancelSource();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcontroller.enqueue(value);\n\t\t\temittedBytes += value.length;\n\t\t},\n\t\tasync cancel(reason) {\n\t\t\tawait cancelSource(reason);\n\t\t},\n\t});\n}\n\nexport async function fileTypeFromStream(stream, options) {\n\treturn new FileTypeParser(options).fromStream(stream);\n}\n\nexport async function fileTypeFromBuffer(input, options) {\n\treturn new FileTypeParser(options).fromBuffer(input);\n}\n\nexport async function fileTypeFromBlob(blob, options) {\n\treturn new FileTypeParser(options).fromBlob(blob);\n}\n\nexport async function fileTypeFromTokenizer(tokenizer, options) {\n\treturn new FileTypeParser(options).fromTokenizer(tokenizer);\n}\n\nexport async function fileTypeStream(webStream, options) {\n\treturn new FileTypeParser(options).toDetectionStream(webStream, options);\n}\n\nexport class FileTypeParser {\n\tconstructor(options) {\n\t\tconst normalizedMpegOffsetTolerance = normalizeMpegOffsetTolerance(options?.mpegOffsetTolerance);\n\t\tthis.options = {\n\t\t\t...options,\n\t\t\tmpegOffsetTolerance: normalizedMpegOffsetTolerance,\n\t\t};\n\n\t\tthis.detectors = [...(this.options.customDetectors ?? []),\n\t\t\t{id: 'core', detect: this.detectConfident},\n\t\t\t{id: 'core.imprecise', detect: this.detectImprecise}];\n\t\tthis.tokenizerOptions = {\n\t\t\tabortSignal: this.options.signal,\n\t\t};\n\t\tthis.gzipProbeDepth = 0;\n\t}\n\n\tgetTokenizerOptions() {\n\t\treturn {\n\t\t\t...this.tokenizerOptions,\n\t\t};\n\t}\n\n\tcreateTokenizerFromWebStream(stream) {\n\t\treturn strtok3.fromWebStream(toDefaultStream(stream), this.getTokenizerOptions());\n\t}\n\n\tasync parseTokenizer(tokenizer, detectionReentryCount = 0) {\n\t\tthis.detectionReentryCount = detectionReentryCount;\n\t\tconst initialPosition = tokenizer.position;\n\t\t// Iterate through all file-type detectors\n\t\tfor (const detector of this.detectors) {\n\t\t\tlet fileType;\n\t\t\ttry {\n\t\t\t\tfileType = await detector.detect(tokenizer);\n\t\t\t} catch (error) {\n\t\t\t\tif (error instanceof strtok3.EndOfStreamError) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (error instanceof ParserHardLimitError) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tthrow error;\n\t\t\t}\n\n\t\t\tif (fileType) {\n\t\t\t\treturn fileType;\n\t\t\t}\n\n\t\t\tif (initialPosition !== tokenizer.position) {\n\t\t\t\treturn undefined; // Cannot proceed scanning of the tokenizer is at an arbitrary position\n\t\t\t}\n\t\t}\n\t}\n\n\tasync fromTokenizer(tokenizer) {\n\t\ttry {\n\t\t\treturn await this.parseTokenizer(tokenizer);\n\t\t} finally {\n\t\t\tawait tokenizer.close();\n\t\t}\n\t}\n\n\tasync fromBuffer(input) {\n\t\tif (!(input instanceof Uint8Array || input instanceof ArrayBuffer)) {\n\t\t\tthrow new TypeError(`Expected the \\`input\\` argument to be of type \\`Uint8Array\\` or \\`ArrayBuffer\\`, got \\`${typeof input}\\``);\n\t\t}\n\n\t\tconst buffer = input instanceof Uint8Array ? input : new Uint8Array(input);\n\n\t\tif (!(buffer?.length > 1)) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn this.fromTokenizer(strtok3.fromBuffer(buffer, this.getTokenizerOptions()));\n\t}\n\n\tasync fromBlob(blob) {\n\t\tthis.options.signal?.throwIfAborted();\n\t\tconst tokenizer = strtok3.fromBlob(blob, this.getTokenizerOptions());\n\t\treturn this.fromTokenizer(tokenizer);\n\t}\n\n\tasync fromStream(stream) {\n\t\tthis.options.signal?.throwIfAborted();\n\t\tconst tokenizer = this.createTokenizerFromWebStream(stream);\n\t\treturn this.fromTokenizer(tokenizer);\n\t}\n\n\tasync fromFile(path) {\n\t\tthis.options.signal?.throwIfAborted();\n\t\t// TODO: Remove this when `strtok3.fromFile()` safely rejects non-regular filesystem objects without a pathname race.\n\t\tconst [{default: fsPromises}, {FileTokenizer}] = await Promise.all([\n\t\t\timport('node:fs/promises'),\n\t\t\timport('strtok3'),\n\t\t]);\n\t\tconst fileHandle = await fsPromises.open(path, fsPromises.constants.O_RDONLY | fsPromises.constants.O_NONBLOCK);\n\t\tconst fileStat = await fileHandle.stat();\n\t\tif (!fileStat.isFile()) {\n\t\t\tawait fileHandle.close();\n\t\t\treturn;\n\t\t}\n\n\t\tconst tokenizer = new FileTokenizer(fileHandle, {\n\t\t\t...this.getTokenizerOptions(),\n\t\t\tfileInfo: {path, size: fileStat.size},\n\t\t});\n\t\treturn this.fromTokenizer(tokenizer);\n\t}\n\n\tasync toDetectionStream(stream, options) {\n\t\tthis.options.signal?.throwIfAborted();\n\t\tconst sampleSize = normalizeSampleSize(options?.sampleSize ?? reasonableDetectionSizeInBytes);\n\t\tlet detectedFileType;\n\t\tlet streamEnded = false;\n\n\t\tconst reader = stream.getReader();\n\t\tconst chunks = [];\n\t\tlet totalSize = 0;\n\n\t\ttry {\n\t\t\twhile (totalSize < sampleSize) {\n\t\t\t\tconst {value, done} = await readWithSignal(reader, this.options.signal);\n\t\t\t\tif (done || !value) {\n\t\t\t\t\tstreamEnded = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tchunks.push(value);\n\t\t\t\ttotalSize += value.length;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t!streamEnded\n\t\t\t\t&& totalSize === sampleSize\n\t\t\t) {\n\t\t\t\tconst {value, done} = await readWithSignal(reader, this.options.signal);\n\t\t\t\tif (done || !value) {\n\t\t\t\t\tstreamEnded = true;\n\t\t\t\t} else {\n\t\t\t\t\tchunks.push(value);\n\t\t\t\t\ttotalSize += value.length;\n\t\t\t\t}\n\t\t\t}\n\t\t} finally {\n\t\t\treader.releaseLock();\n\t\t}\n\n\t\tif (totalSize > 0) {\n\t\t\tconst sample = chunks.length === 1 ? chunks[0] : concatUint8Arrays(chunks);\n\t\t\ttry {\n\t\t\t\tdetectedFileType = await this.fromBuffer(sample.subarray(0, sampleSize));\n\t\t\t} catch (error) {\n\t\t\t\tif (!(error instanceof strtok3.EndOfStreamError)) {\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\n\t\t\t\tdetectedFileType = undefined;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t!streamEnded\n\t\t\t\t&& detectedFileType?.ext === 'pages'\n\t\t\t) {\n\t\t\t\tdetectedFileType = {\n\t\t\t\t\text: 'zip',\n\t\t\t\t\tmime: 'application/zip',\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\t// Prepend collected chunks and pipe the rest through\n\t\tconst transformStream = new TransformStream({\n\t\t\tstart(controller) {\n\t\t\t\tfor (const chunk of chunks) {\n\t\t\t\t\tcontroller.enqueue(chunk);\n\t\t\t\t}\n\t\t\t},\n\t\t\ttransform(chunk, controller) {\n\t\t\t\tcontroller.enqueue(chunk);\n\t\t\t},\n\t\t});\n\n\t\tconst newStream = stream.pipeThrough(transformStream);\n\t\tnewStream.fileType = detectedFileType;\n\n\t\treturn newStream;\n\t}\n\n\tasync detectGzip(tokenizer) {\n\t\tif (this.gzipProbeDepth >= maximumNestedGzipProbeDepth) {\n\t\t\treturn {\n\t\t\t\text: 'gz',\n\t\t\t\tmime: 'application/gzip',\n\t\t\t};\n\t\t}\n\n\t\tconst gzipHandler = new GzipHandler(tokenizer);\n\t\tconst limitedInflatedStream = createByteLimitedReadableStream(gzipHandler.inflate(), maximumNestedGzipDetectionSizeInBytes);\n\t\tconst hasUnknownSize = hasUnknownFileSize(tokenizer);\n\t\tlet timeout;\n\t\tlet probeSignal;\n\t\tlet probeParser;\n\t\tlet compressedFileType;\n\n\t\tif (hasUnknownSize) {\n\t\t\tconst timeoutController = new AbortController();\n\t\t\ttimeout = setTimeout(() => {\n\t\t\t\ttimeoutController.abort(new DOMException(`Operation timed out after ${unknownSizeGzipProbeTimeoutInMilliseconds} ms`, 'TimeoutError'));\n\t\t\t}, unknownSizeGzipProbeTimeoutInMilliseconds);\n\t\t\tprobeSignal = this.options.signal === undefined\n\t\t\t\t? timeoutController.signal\n\t\t\t\t: AbortSignal.any([this.options.signal, timeoutController.signal]);\n\t\t\tprobeParser = new FileTypeParser({\n\t\t\t\t...this.options,\n\t\t\t\tsignal: probeSignal,\n\t\t\t});\n\t\t\tprobeParser.gzipProbeDepth = this.gzipProbeDepth + 1;\n\t\t} else {\n\t\t\tthis.gzipProbeDepth++;\n\t\t}\n\n\t\ttry {\n\t\t\tcompressedFileType = await (probeParser ?? this).fromStream(limitedInflatedStream);\n\t\t} catch (error) {\n\t\t\tif (\n\t\t\t\terror?.name === 'AbortError'\n\t\t\t\t&& probeSignal?.reason?.name !== 'TimeoutError'\n\t\t\t) {\n\t\t\t\tthrow error;\n\t\t\t}\n\n\t\t\t// Timeout, decompression, or inner-detection failures are expected for non-tar gzip files.\n\t\t} finally {\n\t\t\tclearTimeout(timeout);\n\t\t\tif (!hasUnknownSize) {\n\t\t\t\tthis.gzipProbeDepth--;\n\t\t\t}\n\t\t}\n\n\t\tif (compressedFileType?.ext === 'tar') {\n\t\t\treturn {\n\t\t\t\text: 'tar.gz',\n\t\t\t\tmime: 'application/gzip',\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\text: 'gz',\n\t\t\tmime: 'application/gzip',\n\t\t};\n\t}\n\n\tcheck(header, options) {\n\t\treturn checkBytes(this.buffer, header, options);\n\t}\n\n\tcheckString(header, options) {\n\t\treturn this.check(stringToBytes(header, options?.encoding), options);\n\t}\n\n\t// Detections with a high degree of certainty in identifying the correct file type\n\tdetectConfident = async tokenizer => {\n\t\tthis.buffer = new Uint8Array(reasonableDetectionSizeInBytes);\n\n\t\t// Keep reading until EOF if the file size is unknown.\n\t\tif (tokenizer.fileInfo.size === undefined) {\n\t\t\ttokenizer.fileInfo.size = Number.MAX_SAFE_INTEGER;\n\t\t}\n\n\t\tthis.tokenizer = tokenizer;\n\n\t\tif (hasUnknownFileSize(tokenizer)) {\n\t\t\tawait tokenizer.peekBuffer(this.buffer, {length: 3, mayBeLess: true});\n\t\t\tif (this.check([0x1F, 0x8B, 0x8])) {\n\t\t\t\treturn this.detectGzip(tokenizer);\n\t\t\t}\n\t\t}\n\n\t\tawait tokenizer.peekBuffer(this.buffer, {length: 32, mayBeLess: true});\n\n\t\t// -- 2-byte signatures --\n\n\t\tif (this.check([0x42, 0x4D])) {\n\t\t\treturn {\n\t\t\t\text: 'bmp',\n\t\t\t\tmime: 'image/bmp',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x0B, 0x77])) {\n\t\t\treturn {\n\t\t\t\text: 'ac3',\n\t\t\t\tmime: 'audio/vnd.dolby.dd-raw',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x78, 0x01])) {\n\t\t\treturn {\n\t\t\t\text: 'dmg',\n\t\t\t\tmime: 'application/x-apple-diskimage',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x4D, 0x5A])) {\n\t\t\treturn {\n\t\t\t\text: 'exe',\n\t\t\t\tmime: 'application/x-msdownload',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x25, 0x21])) {\n\t\t\tawait tokenizer.peekBuffer(this.buffer, {length: 24, mayBeLess: true});\n\n\t\t\tif (\n\t\t\t\tthis.checkString('PS-Adobe-', {offset: 2})\n\t\t\t\t&& this.checkString(' EPSF-', {offset: 14})\n\t\t\t) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'eps',\n\t\t\t\t\tmime: 'application/eps',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\text: 'ps',\n\t\t\t\tmime: 'application/postscript',\n\t\t\t};\n\t\t}\n\n\t\tif (\n\t\t\tthis.check([0x1F, 0xA0])\n\t\t\t|| this.check([0x1F, 0x9D])\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'Z',\n\t\t\t\tmime: 'application/x-compress',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0xC7, 0x71])) {\n\t\t\treturn {\n\t\t\t\text: 'cpio',\n\t\t\t\tmime: 'application/x-cpio',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x60, 0xEA])) {\n\t\t\treturn {\n\t\t\t\text: 'arj',\n\t\t\t\tmime: 'application/x-arj',\n\t\t\t};\n\t\t}\n\n\t\t// -- 3-byte signatures --\n\n\t\tif (this.check([0xEF, 0xBB, 0xBF])) { // UTF-8-BOM\n\t\t\tif (this.detectionReentryCount >= maximumDetectionReentryCount) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.detectionReentryCount++;\n\t\t\t// Strip off UTF-8-BOM\n\t\t\tawait this.tokenizer.ignore(3);\n\t\t\treturn this.detectConfident(tokenizer);\n\t\t}\n\n\t\tif (this.check([0x47, 0x49, 0x46])) {\n\t\t\treturn {\n\t\t\t\text: 'gif',\n\t\t\t\tmime: 'image/gif',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x49, 0x49, 0xBC])) {\n\t\t\treturn {\n\t\t\t\text: 'jxr',\n\t\t\t\tmime: 'image/vnd.ms-photo',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x1F, 0x8B, 0x8])) {\n\t\t\treturn this.detectGzip(tokenizer);\n\t\t}\n\n\t\tif (this.check([0x42, 0x5A, 0x68])) {\n\t\t\treturn {\n\t\t\t\text: 'bz2',\n\t\t\t\tmime: 'application/x-bzip2',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('ID3')) {\n\t\t\tawait safeIgnore(tokenizer, 6, {\n\t\t\t\tmaximumLength: 6,\n\t\t\t\treason: 'ID3 header prefix',\n\t\t\t}); // Skip ID3 header until the header size\n\t\t\tconst id3HeaderLength = await tokenizer.readToken(uint32SyncSafeToken);\n\t\t\tconst isUnknownFileSize = hasUnknownFileSize(tokenizer);\n\t\t\tif (\n\t\t\t\t!Number.isFinite(id3HeaderLength)\n\t\t\t\t|| id3HeaderLength < 0\n\t\t\t\t// Keep ID3 probing bounded for unknown-size streams to avoid attacker-controlled large skips.\n\t\t\t\t|| (\n\t\t\t\t\tisUnknownFileSize\n\t\t\t\t\t&& (\n\t\t\t\t\t\tid3HeaderLength > maximumId3HeaderSizeInBytes\n\t\t\t\t\t\t|| (tokenizer.position + id3HeaderLength) > maximumId3HeaderSizeInBytes\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (tokenizer.position + id3HeaderLength > tokenizer.fileInfo.size) {\n\t\t\t\tif (isUnknownFileSize) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\text: 'mp3',\n\t\t\t\t\tmime: 'audio/mpeg',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tawait safeIgnore(tokenizer, id3HeaderLength, {\n\t\t\t\t\tmaximumLength: isUnknownFileSize ? maximumId3HeaderSizeInBytes : tokenizer.fileInfo.size,\n\t\t\t\t\treason: 'ID3 payload',\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\tif (error instanceof strtok3.EndOfStreamError) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tthrow error;\n\t\t\t}\n\n\t\t\tif (this.detectionReentryCount >= maximumDetectionReentryCount) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.detectionReentryCount++;\n\t\t\treturn this.parseTokenizer(tokenizer, this.detectionReentryCount); // Skip ID3 header, recursion\n\t\t}\n\n\t\t// Musepack, SV7\n\t\tif (this.checkString('MP+')) {\n\t\t\treturn {\n\t\t\t\text: 'mpc',\n\t\t\t\tmime: 'audio/x-musepack',\n\t\t\t};\n\t\t}\n\n\t\tif (\n\t\t\t(this.buffer[0] === 0x43 || this.buffer[0] === 0x46)\n\t\t\t&& this.check([0x57, 0x53], {offset: 1})\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'swf',\n\t\t\t\tmime: 'application/x-shockwave-flash',\n\t\t\t};\n\t\t}\n\n\t\t// -- 4-byte signatures --\n\n\t\t// Requires a sample size of 4 bytes\n\t\tif (this.check([0xFF, 0xD8, 0xFF])) {\n\t\t\tif (this.check([0xF7], {offset: 3})) { // JPG7/SOF55, indicating a ISO/IEC 14495 / JPEG-LS file\n\t\t\t\treturn {\n\t\t\t\t\text: 'jls',\n\t\t\t\t\tmime: 'image/jls',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\text: 'jpg',\n\t\t\t\tmime: 'image/jpeg',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x4F, 0x62, 0x6A, 0x01])) {\n\t\t\treturn {\n\t\t\t\text: 'avro',\n\t\t\t\tmime: 'application/avro',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('FLIF')) {\n\t\t\treturn {\n\t\t\t\text: 'flif',\n\t\t\t\tmime: 'image/flif',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('8BPS')) {\n\t\t\treturn {\n\t\t\t\text: 'psd',\n\t\t\t\tmime: 'image/vnd.adobe.photoshop',\n\t\t\t};\n\t\t}\n\n\t\t// Musepack, SV8\n\t\tif (this.checkString('MPCK')) {\n\t\t\treturn {\n\t\t\t\text: 'mpc',\n\t\t\t\tmime: 'audio/x-musepack',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('FORM')) {\n\t\t\treturn {\n\t\t\t\text: 'aif',\n\t\t\t\tmime: 'audio/aiff',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('icns', {offset: 0})) {\n\t\t\treturn {\n\t\t\t\text: 'icns',\n\t\t\t\tmime: 'image/icns',\n\t\t\t};\n\t\t}\n\n\t\t// Zip-based file formats\n\t\t// Need to be before the `zip` check\n\t\tif (this.check([0x50, 0x4B, 0x3, 0x4])) { // Local file header signature\n\t\t\treturn detectZip(tokenizer);\n\t\t}\n\n\t\tif (this.checkString('OggS')) {\n\t\t\t// This is an OGG container\n\t\t\tawait tokenizer.ignore(28);\n\t\t\tconst type = new Uint8Array(8);\n\t\t\tawait tokenizer.readBuffer(type);\n\n\t\t\t// Needs to be before `ogg` check\n\t\t\tif (checkBytes(type, [0x4F, 0x70, 0x75, 0x73, 0x48, 0x65, 0x61, 0x64])) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'opus',\n\t\t\t\t\tmime: 'audio/ogg; codecs=opus',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// If ' theora' in header.\n\t\t\tif (checkBytes(type, [0x80, 0x74, 0x68, 0x65, 0x6F, 0x72, 0x61])) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'ogv',\n\t\t\t\t\tmime: 'video/ogg',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// If '\\x01video' in header.\n\t\t\tif (checkBytes(type, [0x01, 0x76, 0x69, 0x64, 0x65, 0x6F, 0x00])) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'ogm',\n\t\t\t\t\tmime: 'video/ogg',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// If ' FLAC' in header  https://xiph.org/flac/faq.html\n\t\t\tif (checkBytes(type, [0x7F, 0x46, 0x4C, 0x41, 0x43])) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'oga',\n\t\t\t\t\tmime: 'audio/ogg',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// 'Speex  ' in header https://en.wikipedia.org/wiki/Speex\n\t\t\tif (checkBytes(type, [0x53, 0x70, 0x65, 0x65, 0x78, 0x20, 0x20])) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'spx',\n\t\t\t\t\tmime: 'audio/ogg',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// If '\\x01vorbis' in header\n\t\t\tif (checkBytes(type, [0x01, 0x76, 0x6F, 0x72, 0x62, 0x69, 0x73])) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'ogg',\n\t\t\t\t\tmime: 'audio/ogg',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// Default OGG container https://www.iana.org/assignments/media-types/application/ogg\n\t\t\treturn {\n\t\t\t\text: 'ogx',\n\t\t\t\tmime: 'application/ogg',\n\t\t\t};\n\t\t}\n\n\t\tif (\n\t\t\tthis.check([0x50, 0x4B])\n\t\t\t&& (this.buffer[2] === 0x3 || this.buffer[2] === 0x5 || this.buffer[2] === 0x7)\n\t\t\t&& (this.buffer[3] === 0x4 || this.buffer[3] === 0x6 || this.buffer[3] === 0x8)\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'zip',\n\t\t\t\tmime: 'application/zip',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('MThd')) {\n\t\t\treturn {\n\t\t\t\text: 'mid',\n\t\t\t\tmime: 'audio/midi',\n\t\t\t};\n\t\t}\n\n\t\tif (\n\t\t\tthis.checkString('wOFF')\n\t\t\t&& (\n\t\t\t\tthis.check([0x00, 0x01, 0x00, 0x00], {offset: 4})\n\t\t\t\t|| this.checkString('OTTO', {offset: 4})\n\t\t\t)\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'woff',\n\t\t\t\tmime: 'font/woff',\n\t\t\t};\n\t\t}\n\n\t\tif (\n\t\t\tthis.checkString('wOF2')\n\t\t\t&& (\n\t\t\t\tthis.check([0x00, 0x01, 0x00, 0x00], {offset: 4})\n\t\t\t\t|| this.checkString('OTTO', {offset: 4})\n\t\t\t)\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'woff2',\n\t\t\t\tmime: 'font/woff2',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0xD4, 0xC3, 0xB2, 0xA1]) || this.check([0xA1, 0xB2, 0xC3, 0xD4])) {\n\t\t\treturn {\n\t\t\t\text: 'pcap',\n\t\t\t\tmime: 'application/vnd.tcpdump.pcap',\n\t\t\t};\n\t\t}\n\n\t\t// Sony DSD Stream File (DSF)\n\t\tif (this.checkString('DSD ')) {\n\t\t\treturn {\n\t\t\t\text: 'dsf',\n\t\t\t\tmime: 'audio/x-dsf', // Non-standard\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('LZIP')) {\n\t\t\treturn {\n\t\t\t\text: 'lz',\n\t\t\t\tmime: 'application/lzip',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('fLaC')) {\n\t\t\treturn {\n\t\t\t\text: 'flac',\n\t\t\t\tmime: 'audio/flac',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x42, 0x50, 0x47, 0xFB])) {\n\t\t\treturn {\n\t\t\t\text: 'bpg',\n\t\t\t\tmime: 'image/bpg',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('wvpk')) {\n\t\t\treturn {\n\t\t\t\text: 'wv',\n\t\t\t\tmime: 'audio/wavpack',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('%PDF')) {\n\t\t\t// Assume this is just a normal PDF\n\t\t\treturn {\n\t\t\t\text: 'pdf',\n\t\t\t\tmime: 'application/pdf',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x00, 0x61, 0x73, 0x6D])) {\n\t\t\treturn {\n\t\t\t\text: 'wasm',\n\t\t\t\tmime: 'application/wasm',\n\t\t\t};\n\t\t}\n\n\t\t// TIFF, little-endian type\n\t\tif (this.check([0x49, 0x49])) {\n\t\t\tconst fileType = await this.readTiffHeader(false);\n\t\t\tif (fileType) {\n\t\t\t\treturn fileType;\n\t\t\t}\n\t\t}\n\n\t\t// TIFF, big-endian type\n\t\tif (this.check([0x4D, 0x4D])) {\n\t\t\tconst fileType = await this.readTiffHeader(true);\n\t\t\tif (fileType) {\n\t\t\t\treturn fileType;\n\t\t\t}\n\t\t}\n\n\t\tif (this.checkString('MAC ')) {\n\t\t\treturn {\n\t\t\t\text: 'ape',\n\t\t\t\tmime: 'audio/ape',\n\t\t\t};\n\t\t}\n\n\t\t// https://github.com/file/file/blob/master/magic/Magdir/matroska\n\t\tif (this.check([0x1A, 0x45, 0xDF, 0xA3])) { // Root element: EBML\n\t\t\treturn detectEbml(tokenizer);\n\t\t}\n\n\t\tif (this.checkString('SQLi')) {\n\t\t\treturn {\n\t\t\t\text: 'sqlite',\n\t\t\t\tmime: 'application/x-sqlite3',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x4E, 0x45, 0x53, 0x1A])) {\n\t\t\treturn {\n\t\t\t\text: 'nes',\n\t\t\t\tmime: 'application/x-nintendo-nes-rom',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('Cr24')) {\n\t\t\treturn {\n\t\t\t\text: 'crx',\n\t\t\t\tmime: 'application/x-google-chrome-extension',\n\t\t\t};\n\t\t}\n\n\t\tif (\n\t\t\tthis.checkString('MSCF')\n\t\t\t|| this.checkString('ISc(')\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'cab',\n\t\t\t\tmime: 'application/vnd.ms-cab-compressed',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0xED, 0xAB, 0xEE, 0xDB])) {\n\t\t\treturn {\n\t\t\t\text: 'rpm',\n\t\t\t\tmime: 'application/x-rpm',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0xC5, 0xD0, 0xD3, 0xC6])) {\n\t\t\treturn {\n\t\t\t\text: 'eps',\n\t\t\t\tmime: 'application/eps',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x28, 0xB5, 0x2F, 0xFD])) {\n\t\t\treturn {\n\t\t\t\text: 'zst',\n\t\t\t\tmime: 'application/zstd',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x7F, 0x45, 0x4C, 0x46])) {\n\t\t\treturn {\n\t\t\t\text: 'elf',\n\t\t\t\tmime: 'application/x-elf',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x21, 0x42, 0x44, 0x4E])) {\n\t\t\treturn {\n\t\t\t\text: 'pst',\n\t\t\t\tmime: 'application/vnd.ms-outlook',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('PAR1') || this.checkString('PARE')) {\n\t\t\treturn {\n\t\t\t\text: 'parquet',\n\t\t\t\tmime: 'application/vnd.apache.parquet',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('ttcf')) {\n\t\t\treturn {\n\t\t\t\text: 'ttc',\n\t\t\t\tmime: 'font/collection',\n\t\t\t};\n\t\t}\n\n\t\tif (\n\t\t\tthis.check([0xFE, 0xED, 0xFA, 0xCE]) // 32-bit, big-endian\n\t\t\t|| this.check([0xFE, 0xED, 0xFA, 0xCF]) // 64-bit, big-endian\n\t\t\t|| this.check([0xCE, 0xFA, 0xED, 0xFE]) // 32-bit, little-endian\n\t\t\t|| this.check([0xCF, 0xFA, 0xED, 0xFE]) // 64-bit, little-endian\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'macho',\n\t\t\t\tmime: 'application/x-mach-binary',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x04, 0x22, 0x4D, 0x18])) {\n\t\t\treturn {\n\t\t\t\text: 'lz4',\n\t\t\t\tmime: 'application/x-lz4', // Informal, used by freedesktop.org shared-mime-info\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('regf')) {\n\t\t\treturn {\n\t\t\t\text: 'dat',\n\t\t\t\tmime: 'application/x-ft-windows-registry-hive',\n\t\t\t};\n\t\t}\n\n\t\t// SPSS Statistical Data File\n\t\tif (this.checkString('$FL2') || this.checkString('$FL3')) {\n\t\t\treturn {\n\t\t\t\text: 'sav',\n\t\t\t\tmime: 'application/x-spss-sav',\n\t\t\t};\n\t\t}\n\n\t\t// -- 5-byte signatures --\n\n\t\tif (this.check([0x4F, 0x54, 0x54, 0x4F, 0x00])) {\n\t\t\treturn {\n\t\t\t\text: 'otf',\n\t\t\t\tmime: 'font/otf',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('#!AMR')) {\n\t\t\treturn {\n\t\t\t\text: 'amr',\n\t\t\t\tmime: 'audio/amr',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString(String.raw`{\\rtf`)) {\n\t\t\treturn {\n\t\t\t\text: 'rtf',\n\t\t\t\tmime: 'application/rtf',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x46, 0x4C, 0x56, 0x01])) {\n\t\t\treturn {\n\t\t\t\text: 'flv',\n\t\t\t\tmime: 'video/x-flv',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('IMPM')) {\n\t\t\treturn {\n\t\t\t\text: 'it',\n\t\t\t\tmime: 'audio/x-it',\n\t\t\t};\n\t\t}\n\n\t\tif (\n\t\t\tthis.checkString('-lh0-', {offset: 2})\n\t\t\t|| this.checkString('-lh1-', {offset: 2})\n\t\t\t|| this.checkString('-lh2-', {offset: 2})\n\t\t\t|| this.checkString('-lh3-', {offset: 2})\n\t\t\t|| this.checkString('-lh4-', {offset: 2})\n\t\t\t|| this.checkString('-lh5-', {offset: 2})\n\t\t\t|| this.checkString('-lh6-', {offset: 2})\n\t\t\t|| this.checkString('-lh7-', {offset: 2})\n\t\t\t|| this.checkString('-lzs-', {offset: 2})\n\t\t\t|| this.checkString('-lz4-', {offset: 2})\n\t\t\t|| this.checkString('-lz5-', {offset: 2})\n\t\t\t|| this.checkString('-lhd-', {offset: 2})\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'lzh',\n\t\t\t\tmime: 'application/x-lzh-compressed',\n\t\t\t};\n\t\t}\n\n\t\t// MPEG program stream (PS or MPEG-PS)\n\t\tif (this.check([0x00, 0x00, 0x01, 0xBA])) {\n\t\t\t//  MPEG-PS, MPEG-1 Part 1\n\t\t\tif (this.check([0x21], {offset: 4, mask: [0xF1]})) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'mpg', // May also be .ps, .mpeg\n\t\t\t\t\tmime: 'video/MP1S',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// MPEG-PS, MPEG-2 Part 1\n\t\t\tif (this.check([0x44], {offset: 4, mask: [0xC4]})) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'mpg', // May also be .mpg, .m2p, .vob or .sub\n\t\t\t\t\tmime: 'video/MP2P',\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif (this.checkString('ITSF')) {\n\t\t\treturn {\n\t\t\t\text: 'chm',\n\t\t\t\tmime: 'application/vnd.ms-htmlhelp',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0xCA, 0xFE, 0xBA, 0xBE])) {\n\t\t\t// Java bytecode and Mach-O universal binaries have the same magic number.\n\t\t\t// We disambiguate based on the next 4 bytes, as done by `file`.\n\t\t\t// See https://github.com/file/file/blob/master/magic/Magdir/cafebabe\n\t\t\tconst machOArchitectureCount = Token.UINT32_BE.get(this.buffer, 4);\n\t\t\tconst javaClassFileMajorVersion = Token.UINT16_BE.get(this.buffer, 6);\n\n\t\t\tif (machOArchitectureCount > 0 && machOArchitectureCount <= 30) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'macho',\n\t\t\t\t\tmime: 'application/x-mach-binary',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (javaClassFileMajorVersion > 30) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'class',\n\t\t\t\t\tmime: 'application/java-vm',\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif (this.checkString('.RMF')) {\n\t\t\treturn {\n\t\t\t\text: 'rm',\n\t\t\t\tmime: 'application/vnd.rn-realmedia',\n\t\t\t};\n\t\t}\n\n\t\t// -- 5-byte signatures --\n\n\t\tif (this.checkString('DRACO')) {\n\t\t\treturn {\n\t\t\t\text: 'drc',\n\t\t\t\tmime: 'application/x-ft-draco',\n\t\t\t};\n\t\t}\n\n\t\t// -- 6-byte signatures --\n\n\t\tif (this.check([0xFD, 0x37, 0x7A, 0x58, 0x5A, 0x00])) {\n\t\t\treturn {\n\t\t\t\text: 'xz',\n\t\t\t\tmime: 'application/x-xz',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('<?xml ')) {\n\t\t\treturn {\n\t\t\t\text: 'xml',\n\t\t\t\tmime: 'application/xml',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x37, 0x7A, 0xBC, 0xAF, 0x27, 0x1C])) {\n\t\t\treturn {\n\t\t\t\text: '7z',\n\t\t\t\tmime: 'application/x-7z-compressed',\n\t\t\t};\n\t\t}\n\n\t\tif (\n\t\t\tthis.check([0x52, 0x61, 0x72, 0x21, 0x1A, 0x7])\n\t\t\t&& (this.buffer[6] === 0x0 || this.buffer[6] === 0x1)\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'rar',\n\t\t\t\tmime: 'application/x-rar-compressed',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('solid ')) {\n\t\t\treturn {\n\t\t\t\text: 'stl',\n\t\t\t\tmime: 'model/stl',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('AC')) {\n\t\t\tconst version = new Token.StringType(4, 'latin1').get(this.buffer, 2);\n\t\t\tif (/^\\d+$/v.test(version) && version >= 1000 && version <= 1050) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'dwg',\n\t\t\t\t\tmime: 'image/vnd.dwg',\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif (this.checkString('070707')) {\n\t\t\treturn {\n\t\t\t\text: 'cpio',\n\t\t\t\tmime: 'application/x-cpio',\n\t\t\t};\n\t\t}\n\n\t\t// -- 7-byte signatures --\n\n\t\tif (this.checkString('BLENDER')) {\n\t\t\treturn {\n\t\t\t\text: 'blend',\n\t\t\t\tmime: 'application/x-blender',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('!<arch>')) {\n\t\t\tawait tokenizer.ignore(8);\n\t\t\tconst string = await tokenizer.readToken(new Token.StringType(13, 'ascii'));\n\t\t\tif (string === 'debian-binary') {\n\t\t\t\treturn {\n\t\t\t\t\text: 'deb',\n\t\t\t\t\tmime: 'application/x-deb',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\text: 'ar',\n\t\t\t\tmime: 'application/x-unix-archive',\n\t\t\t};\n\t\t}\n\n\t\tif (\n\t\t\tthis.checkString('WEBVTT')\n\t\t\t&&\t(\n\t\t\t\t// One of LF, CR, tab, space, or end of file must follow \"WEBVTT\" per the spec (see `fixture/fixture-vtt-*.vtt` for examples). Note that `\\0` is technically the null character (there is no such thing as an EOF character). However, checking for `\\0` gives us the same result as checking for the end of the stream.\n\t\t\t\t(['\\n', '\\r', '\\t', ' ', '\\0'].some(char7 => this.checkString(char7, {offset: 6}))))\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'vtt',\n\t\t\t\tmime: 'text/vtt',\n\t\t\t};\n\t\t}\n\n\t\t// -- 8-byte signatures --\n\n\t\tif (this.check([0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A])) {\n\t\t\treturn detectPng(tokenizer);\n\t\t}\n\n\t\tif (this.check([0x41, 0x52, 0x52, 0x4F, 0x57, 0x31, 0x00, 0x00])) {\n\t\t\treturn {\n\t\t\t\text: 'arrow',\n\t\t\t\tmime: 'application/vnd.apache.arrow.file',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x67, 0x6C, 0x54, 0x46, 0x02, 0x00, 0x00, 0x00])) {\n\t\t\treturn {\n\t\t\t\text: 'glb',\n\t\t\t\tmime: 'model/gltf-binary',\n\t\t\t};\n\t\t}\n\n\t\t// `mov` format variants\n\t\tif (\n\t\t\tthis.check([0x66, 0x72, 0x65, 0x65], {offset: 4}) // `free`\n\t\t\t|| this.check([0x6D, 0x64, 0x61, 0x74], {offset: 4}) // `mdat` MJPEG\n\t\t\t|| this.check([0x6D, 0x6F, 0x6F, 0x76], {offset: 4}) // `moov`\n\t\t\t|| this.check([0x77, 0x69, 0x64, 0x65], {offset: 4}) // `wide`\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'mov',\n\t\t\t\tmime: 'video/quicktime',\n\t\t\t};\n\t\t}\n\n\t\t// -- 9-byte signatures --\n\n\t\tif (this.check([0x49, 0x49, 0x52, 0x4F, 0x08, 0x00, 0x00, 0x00, 0x18])) {\n\t\t\treturn {\n\t\t\t\text: 'orf',\n\t\t\t\tmime: 'image/x-olympus-orf',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('gimp xcf ')) {\n\t\t\treturn {\n\t\t\t\text: 'xcf',\n\t\t\t\tmime: 'image/x-xcf',\n\t\t\t};\n\t\t}\n\n\t\t// File Type Box (https://en.wikipedia.org/wiki/ISO_base_media_file_format)\n\t\t// It's not required to be first, but it's recommended to be. Almost all ISO base media files start with `ftyp` box.\n\t\t// `ftyp` box must contain a brand major identifier, which must consist of ISO 8859-1 printable characters.\n\t\t// Here we check for 8859-1 printable characters (for simplicity, it's a mask which also catches one non-printable character).\n\t\tif (\n\t\t\tthis.checkString('ftyp', {offset: 4})\n\t\t\t&& (this.buffer[8] & 0x60) !== 0x00 // Brand major, first character ASCII?\n\t\t) {\n\t\t\t// They all can have MIME `video/mp4` except `application/mp4` special-case which is hard to detect.\n\t\t\t// For some cases, we're specific, everything else falls to `video/mp4` with `mp4` extension.\n\t\t\tconst brandMajor = new Token.StringType(4, 'latin1').get(this.buffer, 8).replace('\\0', ' ').trim();\n\t\t\tswitch (brandMajor) {\n\t\t\t\tcase 'avif':\n\t\t\t\tcase 'avis':\n\t\t\t\t\treturn {ext: 'avif', mime: 'image/avif'};\n\t\t\t\tcase 'mif1':\n\t\t\t\t\treturn {ext: 'heic', mime: 'image/heif'};\n\t\t\t\tcase 'msf1':\n\t\t\t\t\treturn {ext: 'heic', mime: 'image/heif-sequence'};\n\t\t\t\tcase 'heic':\n\t\t\t\tcase 'heix':\n\t\t\t\t\treturn {ext: 'heic', mime: 'image/heic'};\n\t\t\t\tcase 'hevc':\n\t\t\t\tcase 'hevx':\n\t\t\t\t\treturn {ext: 'heic', mime: 'image/heic-sequence'};\n\t\t\t\tcase 'qt':\n\t\t\t\t\treturn {ext: 'mov', mime: 'video/quicktime'};\n\t\t\t\tcase 'M4V':\n\t\t\t\tcase 'M4VH':\n\t\t\t\tcase 'M4VP':\n\t\t\t\t\treturn {ext: 'm4v', mime: 'video/x-m4v'};\n\t\t\t\tcase 'M4P':\n\t\t\t\t\treturn {ext: 'm4p', mime: 'video/mp4'};\n\t\t\t\tcase 'M4B':\n\t\t\t\t\treturn {ext: 'm4b', mime: 'audio/mp4'};\n\t\t\t\tcase 'M4A':\n\t\t\t\t\treturn {ext: 'm4a', mime: 'audio/x-m4a'};\n\t\t\t\tcase 'F4V':\n\t\t\t\t\treturn {ext: 'f4v', mime: 'video/mp4'};\n\t\t\t\tcase 'F4P':\n\t\t\t\t\treturn {ext: 'f4p', mime: 'video/mp4'};\n\t\t\t\tcase 'F4A':\n\t\t\t\t\treturn {ext: 'f4a', mime: 'audio/mp4'};\n\t\t\t\tcase 'F4B':\n\t\t\t\t\treturn {ext: 'f4b', mime: 'audio/mp4'};\n\t\t\t\tcase 'crx':\n\t\t\t\t\treturn {ext: 'cr3', mime: 'image/x-canon-cr3'};\n\t\t\t\tdefault:\n\t\t\t\t\tif (brandMajor.startsWith('3g')) {\n\t\t\t\t\t\tif (brandMajor.startsWith('3g2')) {\n\t\t\t\t\t\t\treturn {ext: '3g2', mime: 'video/3gpp2'};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn {ext: '3gp', mime: 'video/3gpp'};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn {ext: 'mp4', mime: 'video/mp4'};\n\t\t\t}\n\t\t}\n\n\t\t// -- 10-byte signatures --\n\n\t\tif (this.checkString('REGEDIT4\\r\\n')) {\n\t\t\treturn {\n\t\t\t\text: 'reg',\n\t\t\t\tmime: 'application/x-ms-regedit',\n\t\t\t};\n\t\t}\n\n\t\t// -- 12-byte signatures --\n\n\t\t// RIFF file format which might be AVI, WAV, QCP, etc\n\t\tif (this.check([0x52, 0x49, 0x46, 0x46])) {\n\t\t\tif (this.checkString('WEBP', {offset: 8})) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'webp',\n\t\t\t\t\tmime: 'image/webp',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (this.check([0x41, 0x56, 0x49], {offset: 8})) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'avi',\n\t\t\t\t\tmime: 'video/vnd.avi',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (this.check([0x57, 0x41, 0x56, 0x45], {offset: 8})) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'wav',\n\t\t\t\t\tmime: 'audio/wav',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// QLCM, QCP file\n\t\t\tif (this.check([0x51, 0x4C, 0x43, 0x4D], {offset: 8})) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'qcp',\n\t\t\t\t\tmime: 'audio/qcelp',\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif (this.check([0x49, 0x49, 0x55, 0x00, 0x18, 0x00, 0x00, 0x00, 0x88, 0xE7, 0x74, 0xD8])) {\n\t\t\treturn {\n\t\t\t\text: 'rw2',\n\t\t\t\tmime: 'image/x-panasonic-rw2',\n\t\t\t};\n\t\t}\n\n\t\t// ASF_Header_Object first 80 bytes\n\t\tif (this.check([0x30, 0x26, 0xB2, 0x75, 0x8E, 0x66, 0xCF, 0x11, 0xA6, 0xD9])) {\n\t\t\treturn detectAsf(tokenizer);\n\t\t}\n\n\t\tif (this.check([0xAB, 0x4B, 0x54, 0x58, 0x20, 0x31, 0x31, 0xBB, 0x0D, 0x0A, 0x1A, 0x0A])) {\n\t\t\treturn {\n\t\t\t\text: 'ktx',\n\t\t\t\tmime: 'image/ktx',\n\t\t\t};\n\t\t}\n\n\t\tif ((this.check([0x7E, 0x10, 0x04]) || this.check([0x7E, 0x18, 0x04])) && this.check([0x30, 0x4D, 0x49, 0x45], {offset: 4})) {\n\t\t\treturn {\n\t\t\t\text: 'mie',\n\t\t\t\tmime: 'application/x-mie',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x27, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00], {offset: 2})) {\n\t\t\treturn {\n\t\t\t\text: 'shp',\n\t\t\t\tmime: 'application/x-esri-shape',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0xFF, 0x4F, 0xFF, 0x51])) {\n\t\t\treturn {\n\t\t\t\text: 'j2c',\n\t\t\t\tmime: 'image/j2c',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x00, 0x00, 0x00, 0x0C, 0x6A, 0x50, 0x20, 0x20, 0x0D, 0x0A, 0x87, 0x0A])) {\n\t\t\t// JPEG-2000 family\n\n\t\t\tawait tokenizer.ignore(20);\n\t\t\tconst type = await tokenizer.readToken(new Token.StringType(4, 'ascii'));\n\t\t\tswitch (type) {\n\t\t\t\tcase 'jp2 ':\n\t\t\t\t\treturn {\n\t\t\t\t\t\text: 'jp2',\n\t\t\t\t\t\tmime: 'image/jp2',\n\t\t\t\t\t};\n\t\t\t\tcase 'jpx ':\n\t\t\t\t\treturn {\n\t\t\t\t\t\text: 'jpx',\n\t\t\t\t\t\tmime: 'image/jpx',\n\t\t\t\t\t};\n\t\t\t\tcase 'jpm ':\n\t\t\t\t\treturn {\n\t\t\t\t\t\text: 'jpm',\n\t\t\t\t\t\tmime: 'image/jpm',\n\t\t\t\t\t};\n\t\t\t\tcase 'mjp2':\n\t\t\t\t\treturn {\n\t\t\t\t\t\text: 'mj2',\n\t\t\t\t\t\tmime: 'image/mj2',\n\t\t\t\t\t};\n\t\t\t\tdefault:\n\t\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tif (\n\t\t\tthis.check([0xFF, 0x0A])\n\t\t\t|| this.check([0x00, 0x00, 0x00, 0x0C, 0x4A, 0x58, 0x4C, 0x20, 0x0D, 0x0A, 0x87, 0x0A])\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'jxl',\n\t\t\t\tmime: 'image/jxl',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0xFE, 0xFF])) { // UTF-16-BOM-BE\n\t\t\tif (this.checkString('<?xml ', {offset: 2, encoding: 'utf-16be'})) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'xml',\n\t\t\t\t\tmime: 'application/xml',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn undefined; // Some unknown text based format\n\t\t}\n\n\t\tif (this.check([0xD0, 0xCF, 0x11, 0xE0, 0xA1, 0xB1, 0x1A, 0xE1])) {\n\t\t\t// Detected Microsoft Compound File Binary File (MS-CFB) Format.\n\t\t\treturn {\n\t\t\t\text: 'cfb',\n\t\t\t\tmime: 'application/x-cfb',\n\t\t\t};\n\t\t}\n\n\t\t// Increase sample size from 32 to 256.\n\t\tawait tokenizer.peekBuffer(this.buffer, {length: Math.min(256, tokenizer.fileInfo.size), mayBeLess: true});\n\n\t\tif (this.check([0x61, 0x63, 0x73, 0x70], {offset: 36})) {\n\t\t\treturn {\n\t\t\t\text: 'icc',\n\t\t\t\tmime: 'application/vnd.iccprofile',\n\t\t\t};\n\t\t}\n\n\t\t// ACE: requires 14 bytes in the buffer\n\t\tif (this.checkString('**ACE', {offset: 7}) && this.checkString('**', {offset: 12})) {\n\t\t\treturn {\n\t\t\t\text: 'ace',\n\t\t\t\tmime: 'application/x-ace-compressed',\n\t\t\t};\n\t\t}\n\n\t\t// -- 15-byte signatures --\n\n\t\tif (this.checkString('BEGIN:')) {\n\t\t\tif (this.checkString('VCARD', {offset: 6})) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'vcf',\n\t\t\t\t\tmime: 'text/vcard',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (this.checkString('VCALENDAR', {offset: 6})) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'ics',\n\t\t\t\t\tmime: 'text/calendar',\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\t// `raf` is here just to keep all the raw image detectors together.\n\t\tif (this.checkString('FUJIFILMCCD-RAW')) {\n\t\t\treturn {\n\t\t\t\text: 'raf',\n\t\t\t\tmime: 'image/x-fujifilm-raf',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('Extended Module:')) {\n\t\t\treturn {\n\t\t\t\text: 'xm',\n\t\t\t\tmime: 'audio/x-xm',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('Creative Voice File')) {\n\t\t\treturn {\n\t\t\t\text: 'voc',\n\t\t\t\tmime: 'audio/x-voc',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x04, 0x00, 0x00, 0x00]) && this.buffer.length >= 16) { // Rough & quick check Pickle/ASAR\n\t\t\tconst jsonSize = new DataView(this.buffer.buffer).getUint32(12, true);\n\n\t\t\tif (jsonSize > 12 && this.buffer.length >= jsonSize + 16) {\n\t\t\t\ttry {\n\t\t\t\t\tconst header = new TextDecoder().decode(this.buffer.subarray(16, jsonSize + 16));\n\t\t\t\t\tconst json = JSON.parse(header);\n\t\t\t\t\t// Check if Pickle is ASAR\n\t\t\t\t\tif (json.files) { // Final check, assuring Pickle/ASAR format\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\text: 'asar',\n\t\t\t\t\t\t\tmime: 'application/x-asar',\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t} catch {}\n\t\t\t}\n\t\t}\n\n\t\tif (this.check([0x06, 0x0E, 0x2B, 0x34, 0x02, 0x05, 0x01, 0x01, 0x0D, 0x01, 0x02, 0x01, 0x01, 0x02])) {\n\t\t\treturn {\n\t\t\t\text: 'mxf',\n\t\t\t\tmime: 'application/mxf',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('SCRM', {offset: 44})) {\n\t\t\treturn {\n\t\t\t\text: 's3m',\n\t\t\t\tmime: 'audio/x-s3m',\n\t\t\t};\n\t\t}\n\n\t\t// Raw MPEG-2 transport stream (188-byte packets)\n\t\tif (this.check([0x47]) && this.check([0x47], {offset: 188})) {\n\t\t\treturn {\n\t\t\t\text: 'mts',\n\t\t\t\tmime: 'video/mp2t',\n\t\t\t};\n\t\t}\n\n\t\t// Blu-ray Disc Audio-Video (BDAV) MPEG-2 transport stream has 4-byte TP_extra_header before each 188-byte packet\n\t\tif (this.check([0x47], {offset: 4}) && this.check([0x47], {offset: 196})) {\n\t\t\treturn {\n\t\t\t\text: 'mts',\n\t\t\t\tmime: 'video/mp2t',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x42, 0x4F, 0x4F, 0x4B, 0x4D, 0x4F, 0x42, 0x49], {offset: 60})) {\n\t\t\treturn {\n\t\t\t\text: 'mobi',\n\t\t\t\tmime: 'application/x-mobipocket-ebook',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x44, 0x49, 0x43, 0x4D], {offset: 128})) {\n\t\t\treturn {\n\t\t\t\text: 'dcm',\n\t\t\t\tmime: 'application/dicom',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x4C, 0x00, 0x00, 0x00, 0x01, 0x14, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46])) {\n\t\t\treturn {\n\t\t\t\text: 'lnk',\n\t\t\t\tmime: 'application/x-ms-shortcut', // Informal, used by freedesktop.org shared-mime-info\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x62, 0x6F, 0x6F, 0x6B, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x61, 0x72, 0x6B, 0x00, 0x00, 0x00, 0x00])) {\n\t\t\treturn {\n\t\t\t\text: 'alias',\n\t\t\t\tmime: 'application/x-ft-apple.alias',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('Kaydara FBX Binary  \\u0000')) {\n\t\t\treturn {\n\t\t\t\text: 'fbx',\n\t\t\t\tmime: 'application/x-ft-fbx',\n\t\t\t};\n\t\t}\n\n\t\tif (\n\t\t\tthis.check([0x4C, 0x50], {offset: 34})\n\t\t\t&& (\n\t\t\t\tthis.check([0x00, 0x00, 0x01], {offset: 8})\n\t\t\t\t|| this.check([0x01, 0x00, 0x02], {offset: 8})\n\t\t\t\t|| this.check([0x02, 0x00, 0x02], {offset: 8})\n\t\t\t)\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'eot',\n\t\t\t\tmime: 'application/vnd.ms-fontobject',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x06, 0x06, 0xED, 0xF5, 0xD8, 0x1D, 0x46, 0xE5, 0xBD, 0x31, 0xEF, 0xE7, 0xFE, 0x74, 0xB7, 0x1D])) {\n\t\t\treturn {\n\t\t\t\text: 'indd',\n\t\t\t\tmime: 'application/x-indesign',\n\t\t\t};\n\t\t}\n\n\t\t// -- 16-byte signatures --\n\n\t\t// JMP files - check for both Little Endian and Big Endian signatures\n\t\tif (this.check([0xFF, 0xFF, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00])\n\t\t\t|| this.check([0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x04, 0x00, 0x01, 0x00, 0x01])) {\n\t\t\treturn {\n\t\t\t\text: 'jmp',\n\t\t\t\tmime: 'application/x-jmp-data',\n\t\t\t};\n\t\t}\n\n\t\t// Increase sample size from 256 to 512\n\t\tawait tokenizer.peekBuffer(this.buffer, {length: Math.min(512, tokenizer.fileInfo.size), mayBeLess: true});\n\n\t\t// Requires a buffer size of 512 bytes\n\t\tif ((this.checkString('ustar', {offset: 257}) && (this.checkString('\\0', {offset: 262}) || this.checkString(' ', {offset: 262})))\n\t\t\t|| (this.check([0, 0, 0, 0, 0, 0], {offset: 257}) && tarHeaderChecksumMatches(this.buffer))) {\n\t\t\treturn {\n\t\t\t\text: 'tar',\n\t\t\t\tmime: 'application/x-tar',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0xFF, 0xFE])) { // UTF-16-BOM-LE\n\t\t\tconst encoding = 'utf-16le';\n\t\t\tif (this.checkString('<?xml ', {offset: 2, encoding})) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'xml',\n\t\t\t\t\tmime: 'application/xml',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (this.check([0xFF, 0x0E], {offset: 2}) && this.checkString('SketchUp Model', {offset: 4, encoding})) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'skp',\n\t\t\t\t\tmime: 'application/vnd.sketchup.skp',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (this.checkString('Windows Registry Editor Version 5.00\\r\\n', {offset: 2, encoding})) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'reg',\n\t\t\t\t\tmime: 'application/x-ms-regedit',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn undefined; // Some text based format\n\t\t}\n\n\t\tif (this.checkString('-----BEGIN PGP MESSAGE-----')) {\n\t\t\treturn {\n\t\t\t\text: 'pgp',\n\t\t\t\tmime: 'application/pgp-encrypted',\n\t\t\t};\n\t\t}\n\t};\n\t// Detections with limited supporting data, resulting in a higher likelihood of false positives\n\tdetectImprecise = async tokenizer => {\n\t\tthis.buffer = new Uint8Array(reasonableDetectionSizeInBytes);\n\t\tconst fileSize = getKnownFileSizeOrMaximum(tokenizer.fileInfo.size);\n\n\t\t// Read initial sample size of 8 bytes\n\t\tawait tokenizer.peekBuffer(this.buffer, {length: Math.min(8, fileSize), mayBeLess: true});\n\n\t\tif (\n\t\t\tthis.check([0x0, 0x0, 0x1, 0xBA])\n\t\t\t|| this.check([0x0, 0x0, 0x1, 0xB3])\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'mpg',\n\t\t\t\tmime: 'video/mpeg',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x00, 0x01, 0x00, 0x00, 0x00])) {\n\t\t\treturn {\n\t\t\t\text: 'ttf',\n\t\t\t\tmime: 'font/ttf',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x00, 0x00, 0x01, 0x00])) {\n\t\t\treturn {\n\t\t\t\text: 'ico',\n\t\t\t\tmime: 'image/x-icon',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x00, 0x00, 0x02, 0x00])) {\n\t\t\treturn {\n\t\t\t\text: 'cur',\n\t\t\t\tmime: 'image/x-icon',\n\t\t\t};\n\t\t}\n\n\t\t// Adjust buffer to `mpegOffsetTolerance`\n\t\tawait tokenizer.peekBuffer(this.buffer, {length: Math.min(2 + this.options.mpegOffsetTolerance, fileSize), mayBeLess: true});\n\n\t\t// Check MPEG 1 or 2 Layer 3 header, or 'layer 0' for ADTS (MPEG sync-word 0xFFE)\n\t\tif (this.buffer.length >= (2 + this.options.mpegOffsetTolerance)) {\n\t\t\tfor (let depth = 0; depth <= this.options.mpegOffsetTolerance; ++depth) {\n\t\t\t\tconst type = this.scanMpeg(depth);\n\t\t\t\tif (type) {\n\t\t\t\t\treturn type;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\tasync readTiffTag(bigEndian) {\n\t\tconst tagId = await this.tokenizer.readToken(bigEndian ? Token.UINT16_BE : Token.UINT16_LE);\n\t\tawait this.tokenizer.ignore(10);\n\t\tswitch (tagId) {\n\t\t\tcase 50_341:\n\t\t\t\treturn {\n\t\t\t\t\text: 'arw',\n\t\t\t\t\tmime: 'image/x-sony-arw',\n\t\t\t\t};\n\t\t\tcase 50_706:\n\t\t\t\treturn {\n\t\t\t\t\text: 'dng',\n\t\t\t\t\tmime: 'image/x-adobe-dng',\n\t\t\t\t};\n\t\t\tdefault:\n\t\t}\n\t}\n\n\tasync readTiffIFD(bigEndian) {\n\t\tconst numberOfTags = await this.tokenizer.readToken(bigEndian ? Token.UINT16_BE : Token.UINT16_LE);\n\t\tif (numberOfTags > maximumTiffTagCount) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (\n\t\t\thasUnknownFileSize(this.tokenizer)\n\t\t\t&& (2 + (numberOfTags * 12)) > maximumTiffIfdOffsetInBytes\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tfor (let n = 0; n < numberOfTags; ++n) {\n\t\t\tconst fileType = await this.readTiffTag(bigEndian);\n\t\t\tif (fileType) {\n\t\t\t\treturn fileType;\n\t\t\t}\n\t\t}\n\t}\n\n\tasync readTiffHeader(bigEndian) {\n\t\tconst tiffFileType = {\n\t\t\text: 'tif',\n\t\t\tmime: 'image/tiff',\n\t\t};\n\n\t\tconst version = (bigEndian ? Token.UINT16_BE : Token.UINT16_LE).get(this.buffer, 2);\n\t\tconst ifdOffset = (bigEndian ? Token.UINT32_BE : Token.UINT32_LE).get(this.buffer, 4);\n\n\t\tif (version === 42) {\n\t\t\t// TIFF file header\n\t\t\tif (ifdOffset >= 6) {\n\t\t\t\tif (this.checkString('CR', {offset: 8})) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\text: 'cr2',\n\t\t\t\t\t\tmime: 'image/x-canon-cr2',\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tif (ifdOffset >= 8) {\n\t\t\t\t\tconst someId1 = (bigEndian ? Token.UINT16_BE : Token.UINT16_LE).get(this.buffer, 8);\n\t\t\t\t\tconst someId2 = (bigEndian ? Token.UINT16_BE : Token.UINT16_LE).get(this.buffer, 10);\n\n\t\t\t\t\tif (\n\t\t\t\t\t\t(someId1 === 0x1C && someId2 === 0xFE)\n\t\t\t\t\t\t|| (someId1 === 0x1F && someId2 === 0x0B)) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\text: 'nef',\n\t\t\t\t\t\t\tmime: 'image/x-nikon-nef',\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\thasUnknownFileSize(this.tokenizer)\n\t\t\t\t&& ifdOffset > maximumTiffStreamIfdOffsetInBytes\n\t\t\t) {\n\t\t\t\treturn tiffFileType;\n\t\t\t}\n\n\t\t\tconst maximumTiffOffset = hasUnknownFileSize(this.tokenizer) ? maximumTiffIfdOffsetInBytes : this.tokenizer.fileInfo.size;\n\n\t\t\ttry {\n\t\t\t\tawait safeIgnore(this.tokenizer, ifdOffset, {\n\t\t\t\t\tmaximumLength: maximumTiffOffset,\n\t\t\t\t\treason: 'TIFF IFD offset',\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\tif (error instanceof strtok3.EndOfStreamError) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tthrow error;\n\t\t\t}\n\n\t\t\tlet fileType;\n\t\t\ttry {\n\t\t\t\tfileType = await this.readTiffIFD(bigEndian);\n\t\t\t} catch (error) {\n\t\t\t\tif (error instanceof strtok3.EndOfStreamError) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tthrow error;\n\t\t\t}\n\n\t\t\treturn fileType ?? tiffFileType;\n\t\t}\n\n\t\tif (version === 43) {\t// Big TIFF file header\n\t\t\treturn tiffFileType;\n\t\t}\n\t}\n\n\t/**\n\tScan check MPEG 1 or 2 Layer 3 header, or 'layer 0' for ADTS (MPEG sync-word 0xFFE).\n\n\t@param offset - Offset to scan for sync-preamble.\n\t@returns {{ext: string, mime: string}}\n\t*/\n\tscanMpeg(offset) {\n\t\tif (this.check([0xFF, 0xE0], {offset, mask: [0xFF, 0xE0]})) {\n\t\t\tif (this.check([0x10], {offset: offset + 1, mask: [0x16]})) {\n\t\t\t\t// Check for (ADTS) MPEG-2\n\t\t\t\tif (this.check([0x08], {offset: offset + 1, mask: [0x08]})) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\text: 'aac',\n\t\t\t\t\t\tmime: 'audio/aac',\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Must be (ADTS) MPEG-4\n\t\t\t\treturn {\n\t\t\t\t\text: 'aac',\n\t\t\t\t\tmime: 'audio/aac',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// MPEG 1 or 2 Layer 3 header\n\t\t\t// Check for MPEG layer 3\n\t\t\tif (this.check([0x02], {offset: offset + 1, mask: [0x06]})) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'mp3',\n\t\t\t\t\tmime: 'audio/mpeg',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// Check for MPEG layer 2\n\t\t\tif (this.check([0x04], {offset: offset + 1, mask: [0x06]})) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'mp2',\n\t\t\t\t\tmime: 'audio/mpeg',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// Check for MPEG layer 1\n\t\t\tif (this.check([0x06], {offset: offset + 1, mask: [0x06]})) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'mp1',\n\t\t\t\t\tmime: 'audio/mpeg',\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport const supportedExtensions = new Set(extensions);\nexport const supportedMimeTypes = new Set(mimeTypes);\n\nexport async function fileTypeFromFile(path, options) {\n\treturn (new FileTypeParser(options)).fromFile(path);\n}\n", "import { StringType, UINT32_LE } from 'token-types';\nimport initDebug from 'debug';\nimport { DataDescriptor, EndOfCentralDirectoryRecordToken, FileHeader, LocalFileHeaderToken, Signature } from \"./ZipToken.js\";\nfunction signatureToArray(signature) {\n    const signatureBytes = new Uint8Array(UINT32_LE.len);\n    UINT32_LE.put(signatureBytes, 0, signature);\n    return signatureBytes;\n}\nconst debug = initDebug('tokenizer:inflate');\nconst syncBufferSize = 256 * 1024;\nconst ddSignatureArray = signatureToArray(Signature.DataDescriptor);\nconst eocdSignatureBytes = signatureToArray(Signature.EndOfCentralDirectory);\nexport class ZipHandler {\n    constructor(tokenizer) {\n        this.tokenizer = tokenizer;\n        this.syncBuffer = new Uint8Array(syncBufferSize);\n    }\n    async isZip() {\n        return await this.peekSignature() === Signature.LocalFileHeader;\n    }\n    peekSignature() {\n        return this.tokenizer.peekToken(UINT32_LE);\n    }\n    async findEndOfCentralDirectoryLocator() {\n        const randomReadTokenizer = this.tokenizer;\n        const chunkLength = Math.min(16 * 1024, randomReadTokenizer.fileInfo.size);\n        const buffer = this.syncBuffer.subarray(0, chunkLength);\n        await this.tokenizer.readBuffer(buffer, { position: randomReadTokenizer.fileInfo.size - chunkLength });\n        // Search the buffer from end to beginning for EOCD signature\n        // const signature = 0x06054b50;\n        for (let i = buffer.length - 4; i >= 0; i--) {\n            // Compare 4 bytes directly without calling readUInt32LE\n            if (buffer[i] === eocdSignatureBytes[0] &&\n                buffer[i + 1] === eocdSignatureBytes[1] &&\n                buffer[i + 2] === eocdSignatureBytes[2] &&\n                buffer[i + 3] === eocdSignatureBytes[3]) {\n                return randomReadTokenizer.fileInfo.size - chunkLength + i;\n            }\n        }\n        return -1;\n    }\n    async readCentralDirectory() {\n        if (!this.tokenizer.supportsRandomAccess()) {\n            debug('Cannot reading central-directory without random-read support');\n            return;\n        }\n        debug('Reading central-directory...');\n        const pos = this.tokenizer.position;\n        const offset = await this.findEndOfCentralDirectoryLocator();\n        if (offset > 0) {\n            debug('Central-directory 32-bit signature found');\n            const eocdHeader = await this.tokenizer.readToken(EndOfCentralDirectoryRecordToken, offset);\n            const files = [];\n            this.tokenizer.setPosition(eocdHeader.offsetOfStartOfCd);\n            for (let n = 0; n < eocdHeader.nrOfEntriesOfSize; ++n) {\n                const entry = await this.tokenizer.readToken(FileHeader);\n                if (entry.signature !== Signature.CentralFileHeader) {\n                    throw new Error('Expected Central-File-Header signature');\n                }\n                entry.filename = await this.tokenizer.readToken(new StringType(entry.filenameLength, 'utf-8'));\n                await this.tokenizer.ignore(entry.extraFieldLength);\n                await this.tokenizer.ignore(entry.fileCommentLength);\n                files.push(entry);\n                debug(`Add central-directory file-entry: n=${n + 1}/${files.length}: filename=${files[n].filename}`);\n            }\n            this.tokenizer.setPosition(pos);\n            return files;\n        }\n        this.tokenizer.setPosition(pos);\n    }\n    async unzip(fileCb) {\n        const entries = await this.readCentralDirectory();\n        if (entries) {\n            // Use Central Directory to iterate over files\n            return this.iterateOverCentralDirectory(entries, fileCb);\n        }\n        // Scan Zip files for local-file-header\n        let stop = false;\n        do {\n            const zipHeader = await this.readLocalFileHeader();\n            if (!zipHeader)\n                break;\n            const next = fileCb(zipHeader);\n            stop = !!next.stop;\n            let fileData;\n            await this.tokenizer.ignore(zipHeader.extraFieldLength);\n            if (zipHeader.dataDescriptor && zipHeader.compressedSize === 0) {\n                const chunks = [];\n                let len = syncBufferSize;\n                debug('Compressed-file-size unknown, scanning for next data-descriptor-signature....');\n                let nextHeaderIndex = -1;\n                while (nextHeaderIndex < 0 && len === syncBufferSize) {\n                    len = await this.tokenizer.peekBuffer(this.syncBuffer, { mayBeLess: true });\n                    nextHeaderIndex = indexOf(this.syncBuffer.subarray(0, len), ddSignatureArray);\n                    const size = nextHeaderIndex >= 0 ? nextHeaderIndex : len;\n                    if (next.handler) {\n                        const data = new Uint8Array(size);\n                        await this.tokenizer.readBuffer(data);\n                        chunks.push(data);\n                    }\n                    else {\n                        // Move position to the next header if found, skip the whole buffer otherwise\n                        await this.tokenizer.ignore(size);\n                    }\n                }\n                debug(`Found data-descriptor-signature at pos=${this.tokenizer.position}`);\n                if (next.handler) {\n                    await this.inflate(zipHeader, mergeArrays(chunks), next.handler);\n                }\n            }\n            else {\n                if (next.handler) {\n                    debug(`Reading compressed-file-data: ${zipHeader.compressedSize} bytes`);\n                    fileData = new Uint8Array(zipHeader.compressedSize);\n                    await this.tokenizer.readBuffer(fileData);\n                    await this.inflate(zipHeader, fileData, next.handler);\n                }\n                else {\n                    debug(`Ignoring compressed-file-data: ${zipHeader.compressedSize} bytes`);\n                    await this.tokenizer.ignore(zipHeader.compressedSize);\n                }\n            }\n            debug(`Reading data-descriptor at pos=${this.tokenizer.position}`);\n            if (zipHeader.dataDescriptor) {\n                // await this.tokenizer.ignore(DataDescriptor.len);\n                const dataDescriptor = await this.tokenizer.readToken(DataDescriptor);\n                if (dataDescriptor.signature !== 0x08074b50) {\n                    throw new Error(`Expected data-descriptor-signature at position ${this.tokenizer.position - DataDescriptor.len}`);\n                }\n            }\n        } while (!stop);\n    }\n    async iterateOverCentralDirectory(entries, fileCb) {\n        for (const fileHeader of entries) {\n            const next = fileCb(fileHeader);\n            if (next.handler) {\n                this.tokenizer.setPosition(fileHeader.relativeOffsetOfLocalHeader);\n                const zipHeader = await this.readLocalFileHeader();\n                if (zipHeader) {\n                    await this.tokenizer.ignore(zipHeader.extraFieldLength);\n                    const fileData = new Uint8Array(fileHeader.compressedSize);\n                    await this.tokenizer.readBuffer(fileData);\n                    await this.inflate(zipHeader, fileData, next.handler);\n                }\n            }\n            if (next.stop)\n                break;\n        }\n    }\n    async inflate(zipHeader, fileData, cb) {\n        if (zipHeader.compressedMethod === 0) {\n            // Stored (uncompressed)\n            return cb(fileData);\n        }\n        if (zipHeader.compressedMethod !== 8) {\n            throw new Error(`Unsupported ZIP compression method: ${zipHeader.compressedMethod}`);\n        }\n        debug(`Decompress filename=${zipHeader.filename}, compressed-size=${fileData.length}`);\n        const uncompressedData = await ZipHandler.decompressDeflateRaw(fileData);\n        return cb(uncompressedData);\n    }\n    static async decompressDeflateRaw(data) {\n        // Wrap Uint8Array in a ReadableStream without copying\n        const input = new ReadableStream({\n            start(controller) {\n                controller.enqueue(data);\n                controller.close();\n            }\n        });\n        const ds = new DecompressionStream(\"deflate-raw\");\n        const output = input.pipeThrough(ds);\n        try {\n            // Collect decompressed bytes from the output stream\n            const response = new Response(output);\n            const buffer = await response.arrayBuffer();\n            return new Uint8Array(buffer);\n        }\n        catch (err) {\n            // Provide ZIP-specific error context\n            const message = err instanceof Error\n                ? `Failed to deflate ZIP entry: ${err.message}`\n                : \"Unknown decompression error in ZIP entry\";\n            throw new TypeError(message);\n        }\n    }\n    async readLocalFileHeader() {\n        const signature = await this.tokenizer.peekToken(UINT32_LE);\n        if (signature === Signature.LocalFileHeader) {\n            const header = await this.tokenizer.readToken(LocalFileHeaderToken);\n            header.filename = await this.tokenizer.readToken(new StringType(header.filenameLength, 'utf-8'));\n            return header;\n        }\n        if (signature === Signature.CentralFileHeader) {\n            return false;\n        }\n        if (signature === 0xE011CFD0) {\n            throw new Error('Encrypted ZIP');\n        }\n        throw new Error('Unexpected signature');\n    }\n}\nfunction indexOf(buffer, portion) {\n    const bufferLength = buffer.length;\n    const portionLength = portion.length;\n    // Return -1 if the portion is longer than the buffer\n    if (portionLength > bufferLength)\n        return -1;\n    // Search for the portion in the buffer\n    for (let i = 0; i <= bufferLength - portionLength; i++) {\n        let found = true;\n        for (let j = 0; j < portionLength; j++) {\n            if (buffer[i + j] !== portion[j]) {\n                found = false;\n                break;\n            }\n        }\n        if (found) {\n            return i; // Return the starting offset\n        }\n    }\n    return -1; // Not found\n}\nfunction mergeArrays(chunks) {\n    // Concatenate chunks into a single Uint8Array\n    const totalLength = chunks.reduce((acc, curr) => acc + curr.length, 0);\n    const mergedArray = new Uint8Array(totalLength);\n    let offset = 0;\n    for (const chunk of chunks) {\n        mergedArray.set(chunk, offset);\n        offset += chunk.length;\n    }\n    return mergedArray;\n}\n", "/**\n * Ref https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT\n */\nimport { UINT16_LE, UINT32_LE } from \"token-types\";\nexport const Signature = {\n    LocalFileHeader: 0x04034b50,\n    DataDescriptor: 0x08074b50,\n    CentralFileHeader: 0x02014b50,\n    EndOfCentralDirectory: 0x06054b50\n};\nexport const DataDescriptor = {\n    get(array) {\n        return {\n            signature: UINT32_LE.get(array, 0),\n            compressedSize: UINT32_LE.get(array, 8),\n            uncompressedSize: UINT32_LE.get(array, 12),\n        };\n    }, len: 16\n};\n/**\n * First part of the ZIP Local File Header\n * Offset | Bytes| Description\n * -------|------+-------------------------------------------------------------------\n *      0 |    4 | Signature (0x04034b50)\n *      4 |    2 | Minimum version needed to extract\n *      6 |    2 | Bit flag\n *      8 |    2 | Compression method\n *     10 |    2 | File last modification time (MS-DOS format)\n *     12 |    2 | File last modification date (MS-DOS format)\n *     14 |    4 | CRC-32 of uncompressed data\n *     18 |    4 | Compressed size\n *     22 |    4 | Uncompressed size\n *     26 |    2 | File name length (n)\n *     28 |    2 | Extra field length (m)\n *     30 |    n | File name\n * 30 + n |    m | Extra field\n */\nexport const LocalFileHeaderToken = {\n    get(array) {\n        const flags = UINT16_LE.get(array, 6);\n        return {\n            signature: UINT32_LE.get(array, 0),\n            minVersion: UINT16_LE.get(array, 4),\n            dataDescriptor: !!(flags & 0x0008),\n            compressedMethod: UINT16_LE.get(array, 8),\n            compressedSize: UINT32_LE.get(array, 18),\n            uncompressedSize: UINT32_LE.get(array, 22),\n            filenameLength: UINT16_LE.get(array, 26),\n            extraFieldLength: UINT16_LE.get(array, 28),\n            filename: null\n        };\n    }, len: 30\n};\n/**\n * 4.3.16  End of central directory record:\n *  end of central dir signature (0x06064b50)                                      4 bytes\n *  number of this disk                                                            2 bytes\n *  number of the disk with the start of the central directory                     2 bytes\n *  total number of entries in the central directory on this disk                  2 bytes\n *  total number of entries in the size of the central directory                   2 bytes\n *  sizeOfTheCentralDirectory                                                      4 bytes\n *  offset of start of central directory with respect to the starting disk number  4 bytes\n *  .ZIP file comment length                                                       2 bytes\n *  .ZIP file comment       (variable size)\n */\nexport const EndOfCentralDirectoryRecordToken = {\n    get(array) {\n        return {\n            signature: UINT32_LE.get(array, 0),\n            nrOfThisDisk: UINT16_LE.get(array, 4),\n            nrOfThisDiskWithTheStart: UINT16_LE.get(array, 6),\n            nrOfEntriesOnThisDisk: UINT16_LE.get(array, 8),\n            nrOfEntriesOfSize: UINT16_LE.get(array, 10),\n            sizeOfCd: UINT32_LE.get(array, 12),\n            offsetOfStartOfCd: UINT32_LE.get(array, 16),\n            zipFileCommentLength: UINT16_LE.get(array, 20),\n        };\n    }, len: 22\n};\n/**\n * File header:\n *    central file header signature   4 bytes   0 (0x02014b50)\n *    version made by                 2 bytes   4\n *    version needed to extract       2 bytes   6\n *    general purpose bit flag        2 bytes   8\n *    compression method              2 bytes  10\n *    last mod file time              2 bytes  12\n *    last mod file date              2 bytes  14\n *    crc-32                          4 bytes  16\n *    compressed size                 4 bytes  20\n *    uncompressed size               4 bytes  24\n *    file name length                2 bytes  28\n *    extra field length              2 bytes  30\n *    file comment length             2 bytes  32\n *    disk number start               2 bytes  34\n *    internal file attributes        2 bytes  36\n *    external file attributes        4 bytes  38\n *    relative offset of local header 4 bytes  42\n */\nexport const FileHeader = {\n    get(array) {\n        const flags = UINT16_LE.get(array, 8);\n        return {\n            signature: UINT32_LE.get(array, 0),\n            minVersion: UINT16_LE.get(array, 6),\n            dataDescriptor: !!(flags & 0x0008),\n            compressedMethod: UINT16_LE.get(array, 10),\n            compressedSize: UINT32_LE.get(array, 20),\n            uncompressedSize: UINT32_LE.get(array, 24),\n            filenameLength: UINT16_LE.get(array, 28),\n            extraFieldLength: UINT16_LE.get(array, 30),\n            fileCommentLength: UINT16_LE.get(array, 32),\n            relativeOffsetOfLocalHeader: UINT32_LE.get(array, 42),\n            filename: null\n        };\n    }, len: 46\n};\n", "export class GzipHandler {\n    constructor(tokenizer) {\n        this.tokenizer = tokenizer;\n    }\n    inflate() {\n        const tokenizer = this.tokenizer;\n        return new ReadableStream({\n            async pull(controller) {\n                const buffer = new Uint8Array(1024);\n                const size = await tokenizer.readBuffer(buffer, { mayBeLess: true });\n                if (size === 0) {\n                    controller.close();\n                    return;\n                }\n                controller.enqueue(buffer.subarray(0, size));\n            }\n        }).pipeThrough(new DecompressionStream(\"gzip\"));\n    }\n}\n", "const objectToString = Object.prototype.toString;\nconst uint8ArrayStringified = '[object Uint8Array]';\nconst arrayBufferStringified = '[object ArrayBuffer]';\n\nfunction isType(value, typeConstructor, typeStringified) {\n\tif (!value) {\n\t\treturn false;\n\t}\n\n\tif (value.constructor === typeConstructor) {\n\t\treturn true;\n\t}\n\n\treturn objectToString.call(value) === typeStringified;\n}\n\nexport function isUint8Array(value) {\n\treturn isType(value, Uint8Array, uint8ArrayStringified);\n}\n\nfunction isArrayBuffer(value) {\n\treturn isType(value, ArrayBuffer, arrayBufferStringified);\n}\n\nfunction isUint8ArrayOrArrayBuffer(value) {\n\treturn isUint8Array(value) || isArrayBuffer(value);\n}\n\nexport function assertUint8Array(value) {\n\tif (!isUint8Array(value)) {\n\t\tthrow new TypeError(`Expected \\`Uint8Array\\`, got \\`${typeof value}\\``);\n\t}\n}\n\nexport function assertUint8ArrayOrArrayBuffer(value) {\n\tif (!isUint8ArrayOrArrayBuffer(value)) {\n\t\tthrow new TypeError(`Expected \\`Uint8Array\\` or \\`ArrayBuffer\\`, got \\`${typeof value}\\``);\n\t}\n}\n\nexport function toUint8Array(value) {\n\tif (value instanceof ArrayBuffer) {\n\t\treturn new Uint8Array(value);\n\t}\n\n\tif (ArrayBuffer.isView(value)) {\n\t\treturn new Uint8Array(value.buffer, value.byteOffset, value.byteLength);\n\t}\n\n\tthrow new TypeError(`Unsupported value, got \\`${typeof value}\\`.`);\n}\n\nexport function concatUint8Arrays(arrays, totalLength) {\n\tif (arrays.length === 0) {\n\t\treturn new Uint8Array(0);\n\t}\n\n\ttotalLength ??= arrays.reduce((accumulator, currentValue) => accumulator + currentValue.length, 0);\n\n\tconst returnValue = new Uint8Array(totalLength);\n\n\tlet offset = 0;\n\tfor (const array of arrays) {\n\t\tassertUint8Array(array);\n\t\treturnValue.set(array, offset);\n\t\toffset += array.length;\n\t}\n\n\treturn returnValue;\n}\n\nexport function areUint8ArraysEqual(a, b) {\n\tassertUint8Array(a);\n\tassertUint8Array(b);\n\n\tif (a === b) {\n\t\treturn true;\n\t}\n\n\tif (a.length !== b.length) {\n\t\treturn false;\n\t}\n\n\t// eslint-disable-next-line unicorn/no-for-loop\n\tfor (let index = 0; index < a.length; index++) {\n\t\tif (a[index] !== b[index]) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\nexport function compareUint8Arrays(a, b) {\n\tassertUint8Array(a);\n\tassertUint8Array(b);\n\n\tconst length = Math.min(a.length, b.length);\n\n\tfor (let index = 0; index < length; index++) {\n\t\tconst diff = a[index] - b[index];\n\t\tif (diff !== 0) {\n\t\t\treturn Math.sign(diff);\n\t\t}\n\t}\n\n\t// At this point, all the compared elements are equal.\n\t// The shorter array should come first if the arrays are of different lengths.\n\treturn Math.sign(a.length - b.length);\n}\n\nconst cachedDecoders = {\n\tutf8: new globalThis.TextDecoder('utf8'),\n};\n\nexport function uint8ArrayToString(array, encoding = 'utf8') {\n\tassertUint8ArrayOrArrayBuffer(array);\n\tcachedDecoders[encoding] ??= new globalThis.TextDecoder(encoding);\n\treturn cachedDecoders[encoding].decode(array);\n}\n\nfunction assertString(value) {\n\tif (typeof value !== 'string') {\n\t\tthrow new TypeError(`Expected \\`string\\`, got \\`${typeof value}\\``);\n\t}\n}\n\nconst cachedEncoder = new globalThis.TextEncoder();\n\nexport function stringToUint8Array(string) {\n\tassertString(string);\n\treturn cachedEncoder.encode(string);\n}\n\nfunction base64ToBase64Url(base64) {\n\treturn base64.replaceAll('+', '-').replaceAll('/', '_').replace(/=+$/, '');\n}\n\nfunction base64UrlToBase64(base64url) {\n\tconst base64 = base64url.replaceAll('-', '+').replaceAll('_', '/');\n\tconst padding = (4 - (base64.length % 4)) % 4;\n\treturn base64 + '='.repeat(padding);\n}\n\n// Reference: https://phuoc.ng/collection/this-vs-that/concat-vs-push/\n// Important: Keep this value divisible by 3 so intermediate chunks produce no Base64 padding.\nconst MAX_BLOCK_SIZE = 65_535;\n\nexport function uint8ArrayToBase64(array, {urlSafe = false} = {}) {\n\tassertUint8Array(array);\n\n\tlet base64 = '';\n\n\tfor (let index = 0; index < array.length; index += MAX_BLOCK_SIZE) {\n\t\tconst chunk = array.subarray(index, index + MAX_BLOCK_SIZE);\n\t\t// Required as `btoa` and `atob` don't properly support Unicode: https://developer.mozilla.org/en-US/docs/Glossary/Base64#the_unicode_problem\n\t\tbase64 += globalThis.btoa(String.fromCodePoint.apply(undefined, chunk));\n\t}\n\n\treturn urlSafe ? base64ToBase64Url(base64) : base64;\n}\n\nexport function base64ToUint8Array(base64String) {\n\tassertString(base64String);\n\treturn Uint8Array.from(globalThis.atob(base64UrlToBase64(base64String)), x => x.codePointAt(0));\n}\n\nexport function stringToBase64(string, {urlSafe = false} = {}) {\n\tassertString(string);\n\treturn uint8ArrayToBase64(stringToUint8Array(string), {urlSafe});\n}\n\nexport function base64ToString(base64String) {\n\tassertString(base64String);\n\treturn uint8ArrayToString(base64ToUint8Array(base64String));\n}\n\nconst byteToHexLookupTable = Array.from({length: 256}, (_, index) => index.toString(16).padStart(2, '0'));\n\nexport function uint8ArrayToHex(array) {\n\tassertUint8Array(array);\n\n\t// Concatenating a string is faster than using an array.\n\tlet hexString = '';\n\n\t// eslint-disable-next-line unicorn/no-for-loop -- Max performance is critical.\n\tfor (let index = 0; index < array.length; index++) {\n\t\thexString += byteToHexLookupTable[array[index]];\n\t}\n\n\treturn hexString;\n}\n\nconst hexToDecimalLookupTable = {\n\t0: 0,\n\t1: 1,\n\t2: 2,\n\t3: 3,\n\t4: 4,\n\t5: 5,\n\t6: 6,\n\t7: 7,\n\t8: 8,\n\t9: 9,\n\ta: 10,\n\tb: 11,\n\tc: 12,\n\td: 13,\n\te: 14,\n\tf: 15,\n\tA: 10,\n\tB: 11,\n\tC: 12,\n\tD: 13,\n\tE: 14,\n\tF: 15,\n};\n\nexport function hexToUint8Array(hexString) {\n\tassertString(hexString);\n\n\tif (hexString.length % 2 !== 0) {\n\t\tthrow new Error('Invalid Hex string length.');\n\t}\n\n\tconst resultLength = hexString.length / 2;\n\tconst bytes = new Uint8Array(resultLength);\n\n\tfor (let index = 0; index < resultLength; index++) {\n\t\tconst highNibble = hexToDecimalLookupTable[hexString[index * 2]];\n\t\tconst lowNibble = hexToDecimalLookupTable[hexString[(index * 2) + 1]];\n\n\t\tif (highNibble === undefined || lowNibble === undefined) {\n\t\t\tthrow new Error(`Invalid Hex character encountered at position ${index * 2}`);\n\t\t}\n\n\t\tbytes[index] = (highNibble << 4) | lowNibble; // eslint-disable-line no-bitwise\n\t}\n\n\treturn bytes;\n}\n\n/**\n@param {DataView} view\n@returns {number}\n*/\nexport function getUintBE(view) {\n\tconst {byteLength} = view;\n\n\tif (byteLength === 6) {\n\t\treturn (view.getUint16(0) * (2 ** 32)) + view.getUint32(2);\n\t}\n\n\tif (byteLength === 5) {\n\t\treturn (view.getUint8(0) * (2 ** 32)) + view.getUint32(1);\n\t}\n\n\tif (byteLength === 4) {\n\t\treturn view.getUint32(0);\n\t}\n\n\tif (byteLength === 3) {\n\t\treturn (view.getUint8(0) * (2 ** 16)) + view.getUint16(1);\n\t}\n\n\tif (byteLength === 2) {\n\t\treturn view.getUint16(0);\n\t}\n\n\tif (byteLength === 1) {\n\t\treturn view.getUint8(0);\n\t}\n}\n\n/**\n@param {Uint8Array} array\n@param {Uint8Array} value\n@returns {number}\n*/\nexport function indexOf(array, value) {\n\tconst arrayLength = array.length;\n\tconst valueLength = value.length;\n\n\tif (valueLength === 0) {\n\t\treturn -1;\n\t}\n\n\tif (valueLength > arrayLength) {\n\t\treturn -1;\n\t}\n\n\tconst validOffsetLength = arrayLength - valueLength;\n\n\tfor (let index = 0; index <= validOffsetLength; index++) {\n\t\tlet isMatch = true;\n\t\tfor (let index2 = 0; index2 < valueLength; index2++) {\n\t\t\tif (array[index + index2] !== value[index2]) {\n\t\t\t\tisMatch = false;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tif (isMatch) {\n\t\t\treturn index;\n\t\t}\n\t}\n\n\treturn -1;\n}\n\n/**\n@param {Uint8Array} array\n@param {Uint8Array} value\n@returns {boolean}\n*/\nexport function includes(array, value) {\n\treturn indexOf(array, value) !== -1;\n}\n", "import {StringType} from 'token-types';\n\nexport function stringToBytes(string, encoding) {\n\tif (encoding === 'utf-16le') {\n\t\tconst bytes = [];\n\t\tfor (let index = 0; index < string.length; index++) {\n\t\t\tconst code = string.charCodeAt(index); // eslint-disable-line unicorn/prefer-code-point\n\t\t\tbytes.push(code & 0xFF, (code >> 8) & 0xFF); // High byte\n\t\t}\n\n\t\treturn bytes;\n\t}\n\n\tif (encoding === 'utf-16be') {\n\t\tconst bytes = [];\n\t\tfor (let index = 0; index < string.length; index++) {\n\t\t\tconst code = string.charCodeAt(index); // eslint-disable-line unicorn/prefer-code-point\n\t\t\tbytes.push((code >> 8) & 0xFF, code & 0xFF); // Low byte\n\t\t}\n\n\t\treturn bytes;\n\t}\n\n\treturn [...string].map(character => character.charCodeAt(0)); // eslint-disable-line unicorn/prefer-code-point\n}\n\n/**\nChecks whether the TAR checksum is valid.\n\n@param {Uint8Array} arrayBuffer - The TAR header `[offset ... offset + 512]`.\n@param {number} offset - TAR header offset.\n@returns {boolean} `true` if the TAR checksum is valid, otherwise `false`.\n*/\nexport function tarHeaderChecksumMatches(arrayBuffer, offset = 0) {\n\tconst readSum = Number.parseInt(new StringType(6).get(arrayBuffer, 148).replace(/\\0.*$/v, '').trim(), 8); // Read sum in header\n\tif (Number.isNaN(readSum)) {\n\t\treturn false;\n\t}\n\n\tlet sum = 8 * 0x20; // Initialize signed bit sum\n\n\tfor (let index = offset; index < offset + 148; index++) {\n\t\tsum += arrayBuffer[index];\n\t}\n\n\tfor (let index = offset + 156; index < offset + 512; index++) {\n\t\tsum += arrayBuffer[index];\n\t}\n\n\treturn readSum === sum;\n}\n\n/**\nID3 UINT32 sync-safe tokenizer token.\n28 bits (representing up to 256MB) integer, the msb is 0 to avoid \"false syncsignals\".\n*/\nexport const uint32SyncSafeToken = {\n\tget: (buffer, offset) => (buffer[offset + 3] & 0x7F) | ((buffer[offset + 2] & 0x7F) << 7) | ((buffer[offset + 1] & 0x7F) << 14) | ((buffer[offset] & 0x7F) << 21),\n\tlen: 4,\n};\n", "// MIME media subtypes prefixed with `x-ft-` are custom and defined by us. They are neither formally registered with IANA nor based on any informal conventions.\n\nexport const extensions = [\n\t'jpg',\n\t'png',\n\t'apng',\n\t'gif',\n\t'webp',\n\t'flif',\n\t'xcf',\n\t'cr2',\n\t'cr3',\n\t'orf',\n\t'arw',\n\t'dng',\n\t'nef',\n\t'rw2',\n\t'raf',\n\t'tif',\n\t'bmp',\n\t'icns',\n\t'jxr',\n\t'psd',\n\t'indd',\n\t'zip',\n\t'tar',\n\t'rar',\n\t'gz',\n\t'bz2',\n\t'7z',\n\t'dmg',\n\t'mp4',\n\t'mid',\n\t'mkv',\n\t'webm',\n\t'mov',\n\t'avi',\n\t'mpg',\n\t'mp2',\n\t'mp3',\n\t'm4a',\n\t'oga',\n\t'ogg',\n\t'ogv',\n\t'opus',\n\t'flac',\n\t'wav',\n\t'spx',\n\t'amr',\n\t'pdf',\n\t'epub',\n\t'elf',\n\t'macho',\n\t'exe',\n\t'swf',\n\t'rtf',\n\t'wasm',\n\t'woff',\n\t'woff2',\n\t'eot',\n\t'ttf',\n\t'otf',\n\t'ttc',\n\t'ico',\n\t'flv',\n\t'ps',\n\t'xz',\n\t'sqlite',\n\t'nes',\n\t'crx',\n\t'xpi',\n\t'cab',\n\t'deb',\n\t'ar',\n\t'rpm',\n\t'Z',\n\t'lz',\n\t'cfb',\n\t'mxf',\n\t'mts',\n\t'blend',\n\t'bpg',\n\t'docx',\n\t'pptx',\n\t'xlsx',\n\t'3gp',\n\t'3g2',\n\t'j2c',\n\t'jp2',\n\t'jpm',\n\t'jpx',\n\t'mj2',\n\t'aif',\n\t'qcp',\n\t'odt',\n\t'ods',\n\t'odp',\n\t'xml',\n\t'mobi',\n\t'heic',\n\t'cur',\n\t'ktx',\n\t'ape',\n\t'wv',\n\t'dcm',\n\t'ics',\n\t'glb',\n\t'pcap',\n\t'dsf',\n\t'lnk',\n\t'alias',\n\t'voc',\n\t'ac3',\n\t'm4v',\n\t'm4p',\n\t'm4b',\n\t'f4v',\n\t'f4p',\n\t'f4b',\n\t'f4a',\n\t'mie',\n\t'asf',\n\t'ogm',\n\t'ogx',\n\t'mpc',\n\t'arrow',\n\t'shp',\n\t'aac',\n\t'mp1',\n\t'it',\n\t's3m',\n\t'xm',\n\t'skp',\n\t'avif',\n\t'eps',\n\t'lzh',\n\t'pgp',\n\t'asar',\n\t'stl',\n\t'chm',\n\t'3mf',\n\t'zst',\n\t'jxl',\n\t'vcf',\n\t'jls',\n\t'pst',\n\t'dwg',\n\t'parquet',\n\t'class',\n\t'arj',\n\t'cpio',\n\t'ace',\n\t'avro',\n\t'icc',\n\t'fbx',\n\t'vsdx',\n\t'vtt',\n\t'apk',\n\t'drc',\n\t'lz4',\n\t'potx',\n\t'xltx',\n\t'dotx',\n\t'xltm',\n\t'ott',\n\t'ots',\n\t'otp',\n\t'odg',\n\t'otg',\n\t'xlsm',\n\t'docm',\n\t'dotm',\n\t'potm',\n\t'pptm',\n\t'jar',\n\t'jmp',\n\t'rm',\n\t'sav',\n\t'ppsm',\n\t'ppsx',\n\t'tar.gz',\n\t'reg',\n\t'dat',\n\t'key',\n\t'numbers',\n\t'pages',\n];\n\nexport const mimeTypes = [\n\t'image/jpeg',\n\t'image/png',\n\t'image/gif',\n\t'image/webp',\n\t'image/flif',\n\t'image/x-xcf',\n\t'image/x-canon-cr2',\n\t'image/x-canon-cr3',\n\t'image/tiff',\n\t'image/bmp',\n\t'image/vnd.ms-photo',\n\t'image/vnd.adobe.photoshop',\n\t'application/x-indesign',\n\t'application/epub+zip',\n\t'application/x-xpinstall',\n\t'application/vnd.ms-powerpoint.slideshow.macroenabled.12',\n\t'application/vnd.oasis.opendocument.text',\n\t'application/vnd.oasis.opendocument.spreadsheet',\n\t'application/vnd.oasis.opendocument.presentation',\n\t'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n\t'application/vnd.openxmlformats-officedocument.presentationml.presentation',\n\t'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n\t'application/vnd.openxmlformats-officedocument.presentationml.slideshow',\n\t'application/zip',\n\t'application/x-tar',\n\t'application/x-rar-compressed',\n\t'application/gzip',\n\t'application/x-bzip2',\n\t'application/x-7z-compressed',\n\t'application/x-apple-diskimage',\n\t'application/vnd.apache.arrow.file',\n\t'video/mp4',\n\t'audio/midi',\n\t'video/matroska',\n\t'video/webm',\n\t'video/quicktime',\n\t'video/vnd.avi',\n\t'audio/wav',\n\t'audio/qcelp',\n\t'audio/x-ms-asf',\n\t'video/x-ms-asf',\n\t'application/vnd.ms-asf',\n\t'video/mpeg',\n\t'video/3gpp',\n\t'audio/mpeg',\n\t'audio/mp4', // RFC 4337\n\t'video/ogg',\n\t'audio/ogg',\n\t'audio/ogg; codecs=opus',\n\t'application/ogg',\n\t'audio/flac',\n\t'audio/ape',\n\t'audio/wavpack',\n\t'audio/amr',\n\t'application/pdf',\n\t'application/x-elf',\n\t'application/x-mach-binary',\n\t'application/x-msdownload',\n\t'application/x-shockwave-flash',\n\t'application/rtf',\n\t'application/wasm',\n\t'font/woff',\n\t'font/woff2',\n\t'application/vnd.ms-fontobject',\n\t'font/ttf',\n\t'font/otf',\n\t'font/collection',\n\t'image/x-icon',\n\t'video/x-flv',\n\t'application/postscript',\n\t'application/eps',\n\t'application/x-xz',\n\t'application/x-sqlite3',\n\t'application/x-nintendo-nes-rom',\n\t'application/x-google-chrome-extension',\n\t'application/vnd.ms-cab-compressed',\n\t'application/x-deb',\n\t'application/x-unix-archive',\n\t'application/x-rpm',\n\t'application/x-compress',\n\t'application/lzip',\n\t'application/x-cfb',\n\t'application/x-mie',\n\t'application/mxf',\n\t'video/mp2t',\n\t'application/x-blender',\n\t'image/bpg',\n\t'image/j2c',\n\t'image/jp2',\n\t'image/jpx',\n\t'image/jpm',\n\t'image/mj2',\n\t'audio/aiff',\n\t'application/xml',\n\t'application/x-mobipocket-ebook',\n\t'image/heif',\n\t'image/heif-sequence',\n\t'image/heic',\n\t'image/heic-sequence',\n\t'image/icns',\n\t'image/ktx',\n\t'application/dicom',\n\t'audio/x-musepack',\n\t'text/calendar',\n\t'text/vcard',\n\t'text/vtt',\n\t'model/gltf-binary',\n\t'application/vnd.tcpdump.pcap',\n\t'audio/x-dsf', // Non-standard\n\t'application/x-ms-shortcut', // Informal, used by freedesktop.org shared-mime-info\n\t'application/x-ft-apple.alias',\n\t'audio/x-voc',\n\t'audio/vnd.dolby.dd-raw',\n\t'audio/x-m4a',\n\t'image/apng',\n\t'image/x-olympus-orf',\n\t'image/x-sony-arw',\n\t'image/x-adobe-dng',\n\t'image/x-nikon-nef',\n\t'image/x-panasonic-rw2',\n\t'image/x-fujifilm-raf',\n\t'video/x-m4v',\n\t'video/3gpp2',\n\t'application/x-esri-shape',\n\t'audio/aac',\n\t'audio/x-it',\n\t'audio/x-s3m',\n\t'audio/x-xm',\n\t'video/MP1S',\n\t'video/MP2P',\n\t'application/vnd.sketchup.skp',\n\t'image/avif',\n\t'application/x-lzh-compressed',\n\t'application/pgp-encrypted',\n\t'application/x-asar',\n\t'model/stl',\n\t'application/vnd.ms-htmlhelp',\n\t'model/3mf',\n\t'image/jxl',\n\t'application/zstd',\n\t'image/jls',\n\t'application/vnd.ms-outlook',\n\t'image/vnd.dwg',\n\t'application/vnd.apache.parquet',\n\t'application/java-vm',\n\t'application/x-arj',\n\t'application/x-cpio',\n\t'application/x-ace-compressed',\n\t'application/avro',\n\t'application/vnd.iccprofile',\n\t'application/x-ft-fbx',\n\t'application/vnd.visio',\n\t'application/vnd.android.package-archive',\n\t'application/x-ft-draco',\n\t'application/x-lz4', // Informal, used by freedesktop.org shared-mime-info\n\t'application/vnd.openxmlformats-officedocument.presentationml.template',\n\t'application/vnd.openxmlformats-officedocument.spreadsheetml.template',\n\t'application/vnd.openxmlformats-officedocument.wordprocessingml.template',\n\t'application/vnd.ms-excel.template.macroenabled.12',\n\t'application/vnd.oasis.opendocument.text-template',\n\t'application/vnd.oasis.opendocument.spreadsheet-template',\n\t'application/vnd.oasis.opendocument.presentation-template',\n\t'application/vnd.oasis.opendocument.graphics',\n\t'application/vnd.oasis.opendocument.graphics-template',\n\t'application/vnd.ms-excel.sheet.macroenabled.12',\n\t'application/vnd.ms-word.document.macroenabled.12',\n\t'application/vnd.ms-word.template.macroenabled.12',\n\t'application/vnd.ms-powerpoint.template.macroenabled.12',\n\t'application/vnd.ms-powerpoint.presentation.macroenabled.12',\n\t'application/java-archive',\n\t'application/vnd.rn-realmedia',\n\t'application/x-spss-sav',\n\t'application/x-ms-regedit',\n\t'application/x-ft-windows-registry-hive',\n\t'application/x-jmp-data',\n\t'application/vnd.apple.keynote',\n\t'application/vnd.apple.numbers',\n\t'application/vnd.apple.pages',\n];\n", "export const maximumUntrustedSkipSizeInBytes = 16 * 1024 * 1024;\n\nexport class ParserHardLimitError extends Error {}\n\nexport function getSafeBound(value, maximum, reason) {\n\tif (\n\t\t!Number.isFinite(value)\n\t\t|| value < 0\n\t\t|| value > maximum\n\t) {\n\t\tthrow new ParserHardLimitError(`${reason} has invalid size ${value} (maximum ${maximum} bytes)`);\n\t}\n\n\treturn value;\n}\n\nexport async function safeIgnore(tokenizer, length, {maximumLength = maximumUntrustedSkipSizeInBytes, reason = 'skip'} = {}) {\n\tconst safeLength = getSafeBound(length, maximumLength, reason);\n\tawait tokenizer.ignore(safeLength);\n}\n\nexport async function safeReadBuffer(tokenizer, buffer, options, {maximumLength = buffer.length, reason = 'read'} = {}) {\n\tconst length = options?.length ?? buffer.length;\n\tconst safeLength = getSafeBound(length, maximumLength, reason);\n\treturn tokenizer.readBuffer(buffer, {\n\t\t...options,\n\t\tlength: safeLength,\n\t});\n}\n\nexport function checkBytes(buffer, headers, options) {\n\toptions = {\n\t\toffset: 0,\n\t\t...options,\n\t};\n\n\tfor (const [index, header] of headers.entries()) {\n\t\t// If a bitmask is set\n\t\tif (options.mask) {\n\t\t\t// If header doesn't equal `buf` with bits masked off\n\t\t\tif (header !== (options.mask[index] & buffer[index + options.offset])) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} else if (header !== buffer[index + options.offset]) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\nexport function hasUnknownFileSize(tokenizer) {\n\tconst fileSize = tokenizer.fileInfo.size;\n\treturn (\n\t\t!Number.isFinite(fileSize)\n\t\t|| fileSize === Number.MAX_SAFE_INTEGER\n\t);\n}\n\nexport function hasExceededUnknownSizeScanBudget(tokenizer, startOffset, maximumBytes) {\n\treturn (\n\t\thasUnknownFileSize(tokenizer)\n\t\t&& tokenizer.position - startOffset > maximumBytes\n\t);\n}\n", "import * as Token from 'token-types';\nimport * as strtok3 from 'strtok3/core';\nimport {ZipHandler} from '@tokenizer/inflate';\nimport {\n\tmaximumUntrustedSkipSizeInBytes,\n\tParserHardLimitError,\n\tsafeIgnore,\n\thasUnknownFileSize,\n\thasExceededUnknownSizeScanBudget,\n} from '../parser.js';\n\nconst maximumZipEntrySizeInBytes = 1024 * 1024;\nconst maximumZipEntryCount = 1024;\nconst maximumZipBufferedReadSizeInBytes = (2 ** 31) - 1;\nconst maximumZipTextEntrySizeInBytes = maximumZipEntrySizeInBytes;\n\nconst recoverableZipErrorMessages = new Set([\n\t'Unexpected signature',\n\t'Encrypted ZIP',\n\t'Expected Central-File-Header signature',\n]);\nconst recoverableZipErrorMessagePrefixes = [\n\t'ZIP entry count exceeds ',\n\t'Unsupported ZIP compression method:',\n\t'ZIP entry compressed data exceeds ',\n\t'ZIP entry decompressed data exceeds ',\n\t'Expected data-descriptor-signature at position ',\n];\nconst recoverableZipErrorCodes = new Set([\n\t'Z_BUF_ERROR',\n\t'Z_DATA_ERROR',\n\t'ERR_INVALID_STATE',\n]);\n\nasync function decompressDeflateRawWithLimit(data, {maximumLength = maximumZipEntrySizeInBytes} = {}) {\n\tconst input = new ReadableStream({\n\t\tstart(controller) {\n\t\t\tcontroller.enqueue(data);\n\t\t\tcontroller.close();\n\t\t},\n\t});\n\tconst output = input.pipeThrough(new DecompressionStream('deflate-raw'));\n\tconst reader = output.getReader();\n\tconst chunks = [];\n\tlet totalLength = 0;\n\n\ttry {\n\t\tfor (;;) {\n\t\t\tconst {done, value} = await reader.read();\n\t\t\tif (done) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\ttotalLength += value.length;\n\t\t\tif (totalLength > maximumLength) {\n\t\t\t\tawait reader.cancel();\n\t\t\t\tthrow new Error(`ZIP entry decompressed data exceeds ${maximumLength} bytes`);\n\t\t\t}\n\n\t\t\tchunks.push(value);\n\t\t}\n\t} finally {\n\t\treader.releaseLock();\n\t}\n\n\tconst uncompressedData = new Uint8Array(totalLength);\n\tlet offset = 0;\n\tfor (const chunk of chunks) {\n\t\tuncompressedData.set(chunk, offset);\n\t\toffset += chunk.length;\n\t}\n\n\treturn uncompressedData;\n}\n\nfunction mergeByteChunks(chunks, totalLength) {\n\tconst merged = new Uint8Array(totalLength);\n\tlet offset = 0;\n\n\tfor (const chunk of chunks) {\n\t\tmerged.set(chunk, offset);\n\t\toffset += chunk.length;\n\t}\n\n\treturn merged;\n}\n\nfunction getMaximumZipBufferedReadLength(tokenizer) {\n\tconst fileSize = tokenizer.fileInfo.size;\n\tconst remainingBytes = Number.isFinite(fileSize)\n\t\t? Math.max(0, fileSize - tokenizer.position)\n\t\t: Number.MAX_SAFE_INTEGER;\n\n\treturn Math.min(remainingBytes, maximumZipBufferedReadSizeInBytes);\n}\n\nfunction isRecoverableZipError(error) {\n\tif (error instanceof strtok3.EndOfStreamError) {\n\t\treturn true;\n\t}\n\n\tif (error instanceof ParserHardLimitError) {\n\t\treturn true;\n\t}\n\n\tif (!(error instanceof Error)) {\n\t\treturn false;\n\t}\n\n\tif (recoverableZipErrorMessages.has(error.message)) {\n\t\treturn true;\n\t}\n\n\tif (recoverableZipErrorCodes.has(error.code)) {\n\t\treturn true;\n\t}\n\n\tfor (const prefix of recoverableZipErrorMessagePrefixes) {\n\t\tif (error.message.startsWith(prefix)) {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n}\n\nfunction canReadZipEntryForDetection(zipHeader, maximumSize = maximumZipEntrySizeInBytes) {\n\tconst sizes = [zipHeader.compressedSize, zipHeader.uncompressedSize];\n\tfor (const size of sizes) {\n\t\tif (\n\t\t\t!Number.isFinite(size)\n\t\t\t|| size < 0\n\t\t\t|| size > maximumSize\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\n// -- iWork helpers --\n\nfunction createIWorkZipDetectionState() {\n\treturn {\n\t\thasDocumentEntry: false,\n\t\thasMasterSlideEntry: false,\n\t\thasTablesEntry: false,\n\t\thasCalculationEngineEntry: false,\n\t};\n}\n\nfunction updateIWorkZipDetectionStateFromFilename(iWorkState, filename) {\n\tif (filename === 'Index/Document.iwa') {\n\t\tiWorkState.hasDocumentEntry = true;\n\t}\n\n\tif (filename.startsWith('Index/MasterSlide')) {\n\t\tiWorkState.hasMasterSlideEntry = true;\n\t}\n\n\tif (filename.startsWith('Index/Tables/')) {\n\t\tiWorkState.hasTablesEntry = true;\n\t}\n\n\tif (filename === 'Index/CalculationEngine.iwa') {\n\t\tiWorkState.hasCalculationEngineEntry = true;\n\t}\n}\n\nfunction getIWorkFileTypeFromZipEntries(iWorkState) {\n\tif (!iWorkState.hasDocumentEntry) {\n\t\treturn;\n\t}\n\n\tif (iWorkState.hasMasterSlideEntry) {\n\t\treturn {ext: 'key', mime: 'application/vnd.apple.keynote'};\n\t}\n\n\tif (iWorkState.hasTablesEntry) {\n\t\treturn {ext: 'numbers', mime: 'application/vnd.apple.numbers'};\n\t}\n\n\treturn {ext: 'pages', mime: 'application/vnd.apple.pages'};\n}\n\n// -- OpenXML helpers --\n\nfunction getFileTypeFromMimeType(mimeType) {\n\tmimeType = mimeType.toLowerCase();\n\tswitch (mimeType) {\n\t\tcase 'application/epub+zip':\n\t\t\treturn {ext: 'epub', mime: mimeType};\n\t\tcase 'application/vnd.oasis.opendocument.text':\n\t\t\treturn {ext: 'odt', mime: mimeType};\n\t\tcase 'application/vnd.oasis.opendocument.text-template':\n\t\t\treturn {ext: 'ott', mime: mimeType};\n\t\tcase 'application/vnd.oasis.opendocument.spreadsheet':\n\t\t\treturn {ext: 'ods', mime: mimeType};\n\t\tcase 'application/vnd.oasis.opendocument.spreadsheet-template':\n\t\t\treturn {ext: 'ots', mime: mimeType};\n\t\tcase 'application/vnd.oasis.opendocument.presentation':\n\t\t\treturn {ext: 'odp', mime: mimeType};\n\t\tcase 'application/vnd.oasis.opendocument.presentation-template':\n\t\t\treturn {ext: 'otp', mime: mimeType};\n\t\tcase 'application/vnd.oasis.opendocument.graphics':\n\t\t\treturn {ext: 'odg', mime: mimeType};\n\t\tcase 'application/vnd.oasis.opendocument.graphics-template':\n\t\t\treturn {ext: 'otg', mime: mimeType};\n\t\tcase 'application/vnd.openxmlformats-officedocument.presentationml.slideshow':\n\t\t\treturn {ext: 'ppsx', mime: mimeType};\n\t\tcase 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet':\n\t\t\treturn {ext: 'xlsx', mime: mimeType};\n\t\tcase 'application/vnd.ms-excel.sheet.macroenabled':\n\t\t\treturn {ext: 'xlsm', mime: 'application/vnd.ms-excel.sheet.macroenabled.12'};\n\t\tcase 'application/vnd.openxmlformats-officedocument.spreadsheetml.template':\n\t\t\treturn {ext: 'xltx', mime: mimeType};\n\t\tcase 'application/vnd.ms-excel.template.macroenabled':\n\t\t\treturn {ext: 'xltm', mime: 'application/vnd.ms-excel.template.macroenabled.12'};\n\t\tcase 'application/vnd.ms-powerpoint.slideshow.macroenabled':\n\t\t\treturn {ext: 'ppsm', mime: 'application/vnd.ms-powerpoint.slideshow.macroenabled.12'};\n\t\tcase 'application/vnd.openxmlformats-officedocument.wordprocessingml.document':\n\t\t\treturn {ext: 'docx', mime: mimeType};\n\t\tcase 'application/vnd.ms-word.document.macroenabled':\n\t\t\treturn {ext: 'docm', mime: 'application/vnd.ms-word.document.macroenabled.12'};\n\t\tcase 'application/vnd.openxmlformats-officedocument.wordprocessingml.template':\n\t\t\treturn {ext: 'dotx', mime: mimeType};\n\t\tcase 'application/vnd.ms-word.template.macroenabledtemplate':\n\t\t\treturn {ext: 'dotm', mime: 'application/vnd.ms-word.template.macroenabled.12'};\n\t\tcase 'application/vnd.openxmlformats-officedocument.presentationml.template':\n\t\t\treturn {ext: 'potx', mime: mimeType};\n\t\tcase 'application/vnd.ms-powerpoint.template.macroenabled':\n\t\t\treturn {ext: 'potm', mime: 'application/vnd.ms-powerpoint.template.macroenabled.12'};\n\t\tcase 'application/vnd.openxmlformats-officedocument.presentationml.presentation':\n\t\t\treturn {ext: 'pptx', mime: mimeType};\n\t\tcase 'application/vnd.ms-powerpoint.presentation.macroenabled':\n\t\t\treturn {ext: 'pptm', mime: 'application/vnd.ms-powerpoint.presentation.macroenabled.12'};\n\t\tcase 'application/vnd.ms-visio.drawing':\n\t\t\treturn {ext: 'vsdx', mime: 'application/vnd.visio'};\n\t\tcase 'application/vnd.ms-package.3dmanufacturing-3dmodel+xml':\n\t\t\treturn {ext: '3mf', mime: 'model/3mf'};\n\t\tdefault:\n\t}\n}\n\nfunction createOpenXmlZipDetectionState() {\n\treturn {\n\t\thasContentTypesEntry: false,\n\t\thasParsedContentTypesEntry: false,\n\t\tisParsingContentTypes: false,\n\t\thasUnparseableContentTypes: false,\n\t\thasWordDirectory: false,\n\t\thasPresentationDirectory: false,\n\t\thasSpreadsheetDirectory: false,\n\t\thasThreeDimensionalModelEntry: false,\n\t};\n}\n\nfunction updateOpenXmlZipDetectionStateFromFilename(openXmlState, filename) {\n\tif (filename.startsWith('word/')) {\n\t\topenXmlState.hasWordDirectory = true;\n\t}\n\n\tif (filename.startsWith('ppt/')) {\n\t\topenXmlState.hasPresentationDirectory = true;\n\t}\n\n\tif (filename.startsWith('xl/')) {\n\t\topenXmlState.hasSpreadsheetDirectory = true;\n\t}\n\n\tif (\n\t\tfilename.startsWith('3D/')\n\t\t&& filename.endsWith('.model')\n\t) {\n\t\topenXmlState.hasThreeDimensionalModelEntry = true;\n\t}\n}\n\nfunction getOpenXmlFileTypeFromDirectoryNames(openXmlState) {\n\tif (openXmlState.hasWordDirectory) {\n\t\treturn {\n\t\t\text: 'docx',\n\t\t\tmime: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n\t\t};\n\t}\n\n\tif (openXmlState.hasPresentationDirectory) {\n\t\treturn {\n\t\t\text: 'pptx',\n\t\t\tmime: 'application/vnd.openxmlformats-officedocument.presentationml.presentation',\n\t\t};\n\t}\n\n\tif (openXmlState.hasSpreadsheetDirectory) {\n\t\treturn {\n\t\t\text: 'xlsx',\n\t\t\tmime: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n\t\t};\n\t}\n\n\tif (openXmlState.hasThreeDimensionalModelEntry) {\n\t\treturn {\n\t\t\text: '3mf',\n\t\t\tmime: 'model/3mf',\n\t\t};\n\t}\n}\n\nfunction getOpenXmlFileTypeFromZipEntries(openXmlState) {\n\t// Only use directory-name heuristic when [Content_Types].xml was present in the archive\n\t// but its handler was skipped (not invoked, not currently running, and not already resolved).\n\t// This avoids guessing from directory names when content-type parsing already gave a definitive answer or failed.\n\tif (\n\t\t!openXmlState.hasContentTypesEntry\n\t\t|| openXmlState.hasUnparseableContentTypes\n\t\t|| openXmlState.isParsingContentTypes\n\t\t|| openXmlState.hasParsedContentTypesEntry\n\t) {\n\t\treturn;\n\t}\n\n\treturn getOpenXmlFileTypeFromDirectoryNames(openXmlState);\n}\n\nfunction getOpenXmlMimeTypeFromContentTypesXml(xmlContent) {\n\t// We only need the `ContentType=\"...main+xml\"` value, so a small string scan is enough and avoids full XML parsing.\n\tconst endPosition = xmlContent.indexOf('.main+xml\"');\n\tif (endPosition === -1) {\n\t\tconst mimeType = 'application/vnd.ms-package.3dmanufacturing-3dmodel+xml';\n\t\tif (xmlContent.includes(`ContentType=\"${mimeType}\"`)) {\n\t\t\treturn mimeType;\n\t\t}\n\n\t\treturn;\n\t}\n\n\tconst truncatedContent = xmlContent.slice(0, endPosition);\n\tconst firstQuotePosition = truncatedContent.lastIndexOf('\"');\n\t// If no quote is found, `lastIndexOf` returns -1 and this intentionally falls back to the full truncated prefix.\n\treturn truncatedContent.slice(firstQuotePosition + 1);\n}\n\nconst zipDataDescriptorSignature = 0x08_07_4B_50;\nconst zipDataDescriptorLengthInBytes = 16;\nconst zipDataDescriptorOverlapLengthInBytes = zipDataDescriptorLengthInBytes - 1;\n\nfunction findZipDataDescriptorOffset(buffer, bytesConsumed) {\n\tif (buffer.length < zipDataDescriptorLengthInBytes) {\n\t\treturn -1;\n\t}\n\n\tconst lastPossibleDescriptorOffset = buffer.length - zipDataDescriptorLengthInBytes;\n\tfor (let index = 0; index <= lastPossibleDescriptorOffset; index++) {\n\t\tif (\n\t\t\tToken.UINT32_LE.get(buffer, index) === zipDataDescriptorSignature\n\t\t\t&& Token.UINT32_LE.get(buffer, index + 8) === bytesConsumed + index\n\t\t) {\n\t\t\treturn index;\n\t\t}\n\t}\n\n\treturn -1;\n}\n\nasync function readZipDataDescriptorEntryWithLimit(zipHandler, {shouldBuffer, maximumLength = maximumZipEntrySizeInBytes} = {}) {\n\tconst {syncBuffer} = zipHandler;\n\tconst {length: syncBufferLength} = syncBuffer;\n\tconst chunks = [];\n\tlet bytesConsumed = 0;\n\n\tfor (;;) {\n\t\tconst length = await zipHandler.tokenizer.peekBuffer(syncBuffer, {mayBeLess: true});\n\t\tconst dataDescriptorOffset = findZipDataDescriptorOffset(syncBuffer.subarray(0, length), bytesConsumed);\n\t\tconst retainedLength = dataDescriptorOffset >= 0\n\t\t\t? 0\n\t\t\t: (\n\t\t\t\tlength === syncBufferLength\n\t\t\t\t\t? Math.min(zipDataDescriptorOverlapLengthInBytes, length - 1)\n\t\t\t\t\t: 0\n\t\t\t);\n\t\tconst chunkLength = dataDescriptorOffset >= 0 ? dataDescriptorOffset : length - retainedLength;\n\n\t\tif (chunkLength === 0) {\n\t\t\tbreak;\n\t\t}\n\n\t\tbytesConsumed += chunkLength;\n\t\tif (bytesConsumed > maximumLength) {\n\t\t\tthrow new Error(`ZIP entry compressed data exceeds ${maximumLength} bytes`);\n\t\t}\n\n\t\tif (shouldBuffer) {\n\t\t\tconst data = new Uint8Array(chunkLength);\n\t\t\tawait zipHandler.tokenizer.readBuffer(data);\n\t\t\tchunks.push(data);\n\t\t} else {\n\t\t\tawait zipHandler.tokenizer.ignore(chunkLength);\n\t\t}\n\n\t\tif (dataDescriptorOffset >= 0) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tif (!hasUnknownFileSize(zipHandler.tokenizer)) {\n\t\tzipHandler.knownSizeDescriptorScannedBytes += bytesConsumed;\n\t}\n\n\tif (!shouldBuffer) {\n\t\treturn;\n\t}\n\n\treturn mergeByteChunks(chunks, bytesConsumed);\n}\n\nfunction getRemainingZipScanBudget(zipHandler, startOffset) {\n\tif (hasUnknownFileSize(zipHandler.tokenizer)) {\n\t\treturn Math.max(0, maximumUntrustedSkipSizeInBytes - (zipHandler.tokenizer.position - startOffset));\n\t}\n\n\treturn Math.max(0, maximumZipEntrySizeInBytes - zipHandler.knownSizeDescriptorScannedBytes);\n}\n\nasync function readZipEntryData(zipHandler, zipHeader, {shouldBuffer, maximumDescriptorLength = maximumZipEntrySizeInBytes} = {}) {\n\tif (\n\t\tzipHeader.dataDescriptor\n\t\t&& zipHeader.compressedSize === 0\n\t) {\n\t\treturn readZipDataDescriptorEntryWithLimit(zipHandler, {\n\t\t\tshouldBuffer,\n\t\t\tmaximumLength: maximumDescriptorLength,\n\t\t});\n\t}\n\n\tif (!shouldBuffer) {\n\t\tawait safeIgnore(zipHandler.tokenizer, zipHeader.compressedSize, {\n\t\t\tmaximumLength: hasUnknownFileSize(zipHandler.tokenizer) ? maximumZipEntrySizeInBytes : zipHandler.tokenizer.fileInfo.size,\n\t\t\treason: 'ZIP entry compressed data',\n\t\t});\n\t\treturn;\n\t}\n\n\tconst maximumLength = getMaximumZipBufferedReadLength(zipHandler.tokenizer);\n\tif (\n\t\t!Number.isFinite(zipHeader.compressedSize)\n\t\t|| zipHeader.compressedSize < 0\n\t\t|| zipHeader.compressedSize > maximumLength\n\t) {\n\t\tthrow new Error(`ZIP entry compressed data exceeds ${maximumLength} bytes`);\n\t}\n\n\tconst fileData = new Uint8Array(zipHeader.compressedSize);\n\tawait zipHandler.tokenizer.readBuffer(fileData);\n\treturn fileData;\n}\n\n// Override the default inflate to enforce decompression size limits, since @tokenizer/inflate does not expose a configuration hook for this.\nZipHandler.prototype.inflate = async function (zipHeader, fileData, callback) {\n\tif (zipHeader.compressedMethod === 0) {\n\t\treturn callback(fileData);\n\t}\n\n\tif (zipHeader.compressedMethod !== 8) {\n\t\tthrow new Error(`Unsupported ZIP compression method: ${zipHeader.compressedMethod}`);\n\t}\n\n\tconst uncompressedData = await decompressDeflateRawWithLimit(fileData, {maximumLength: maximumZipEntrySizeInBytes});\n\treturn callback(uncompressedData);\n};\n\nZipHandler.prototype.unzip = async function (fileCallback) {\n\tlet stop = false;\n\tlet zipEntryCount = 0;\n\tconst zipScanStart = this.tokenizer.position;\n\tthis.knownSizeDescriptorScannedBytes = 0;\n\tdo {\n\t\tif (hasExceededUnknownSizeScanBudget(this.tokenizer, zipScanStart, maximumUntrustedSkipSizeInBytes)) {\n\t\t\tthrow new ParserHardLimitError(`ZIP stream probing exceeds ${maximumUntrustedSkipSizeInBytes} bytes`);\n\t\t}\n\n\t\tconst zipHeader = await this.readLocalFileHeader();\n\t\tif (!zipHeader) {\n\t\t\tbreak;\n\t\t}\n\n\t\tzipEntryCount++;\n\t\tif (zipEntryCount > maximumZipEntryCount) {\n\t\t\tthrow new Error(`ZIP entry count exceeds ${maximumZipEntryCount}`);\n\t\t}\n\n\t\tconst next = fileCallback(zipHeader);\n\t\tstop = Boolean(next.stop);\n\t\tawait this.tokenizer.ignore(zipHeader.extraFieldLength);\n\t\tconst fileData = await readZipEntryData(this, zipHeader, {\n\t\t\tshouldBuffer: Boolean(next.handler),\n\t\t\tmaximumDescriptorLength: Math.min(maximumZipEntrySizeInBytes, getRemainingZipScanBudget(this, zipScanStart)),\n\t\t});\n\n\t\tif (next.handler) {\n\t\t\tawait this.inflate(zipHeader, fileData, next.handler);\n\t\t}\n\n\t\tif (zipHeader.dataDescriptor) {\n\t\t\tconst dataDescriptor = new Uint8Array(zipDataDescriptorLengthInBytes);\n\t\t\tawait this.tokenizer.readBuffer(dataDescriptor);\n\t\t\tif (Token.UINT32_LE.get(dataDescriptor, 0) !== zipDataDescriptorSignature) {\n\t\t\t\tthrow new Error(`Expected data-descriptor-signature at position ${this.tokenizer.position - dataDescriptor.length}`);\n\t\t\t}\n\t\t}\n\n\t\tif (hasExceededUnknownSizeScanBudget(this.tokenizer, zipScanStart, maximumUntrustedSkipSizeInBytes)) {\n\t\t\tthrow new ParserHardLimitError(`ZIP stream probing exceeds ${maximumUntrustedSkipSizeInBytes} bytes`);\n\t\t}\n\t} while (!stop);\n};\n\nexport async function detectZip(tokenizer) {\n\tlet fileType;\n\tconst openXmlState = createOpenXmlZipDetectionState();\n\tconst iWorkState = createIWorkZipDetectionState();\n\n\ttry {\n\t\tawait new ZipHandler(tokenizer).unzip(zipHeader => {\n\t\t\tupdateOpenXmlZipDetectionStateFromFilename(openXmlState, zipHeader.filename);\n\t\t\tupdateIWorkZipDetectionStateFromFilename(iWorkState, zipHeader.filename);\n\n\t\t\t// Early exit for Keynote or Numbers when markers are definitive\n\t\t\tif (iWorkState.hasDocumentEntry && (iWorkState.hasMasterSlideEntry || iWorkState.hasTablesEntry)) {\n\t\t\t\tfileType = getIWorkFileTypeFromZipEntries(iWorkState);\n\t\t\t\treturn {stop: true};\n\t\t\t}\n\n\t\t\tconst isOpenXmlContentTypesEntry = zipHeader.filename === '[Content_Types].xml';\n\t\t\tconst openXmlFileTypeFromEntries = getOpenXmlFileTypeFromZipEntries(openXmlState);\n\t\t\tif (\n\t\t\t\t!isOpenXmlContentTypesEntry\n\t\t\t\t&& openXmlFileTypeFromEntries\n\t\t\t) {\n\t\t\t\tfileType = openXmlFileTypeFromEntries;\n\t\t\t\treturn {\n\t\t\t\t\tstop: true,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tswitch (zipHeader.filename) {\n\t\t\t\tcase 'META-INF/mozilla.rsa':\n\t\t\t\t\tfileType = {\n\t\t\t\t\t\text: 'xpi',\n\t\t\t\t\t\tmime: 'application/x-xpinstall',\n\t\t\t\t\t};\n\t\t\t\t\treturn {\n\t\t\t\t\t\tstop: true,\n\t\t\t\t\t};\n\t\t\t\tcase 'META-INF/MANIFEST.MF':\n\t\t\t\t\tfileType = {\n\t\t\t\t\t\text: 'jar',\n\t\t\t\t\t\tmime: 'application/java-archive',\n\t\t\t\t\t};\n\t\t\t\t\treturn {\n\t\t\t\t\t\tstop: true,\n\t\t\t\t\t};\n\t\t\t\tcase 'mimetype':\n\t\t\t\t\tif (!canReadZipEntryForDetection(zipHeader, maximumZipTextEntrySizeInBytes)) {\n\t\t\t\t\t\treturn {};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tasync handler(fileData) {\n\t\t\t\t\t\t\t// Use TextDecoder to decode the UTF-8 encoded data\n\t\t\t\t\t\t\tconst mimeType = new TextDecoder('utf-8').decode(fileData).trim();\n\t\t\t\t\t\t\tfileType = getFileTypeFromMimeType(mimeType);\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstop: true,\n\t\t\t\t\t};\n\n\t\t\t\tcase '[Content_Types].xml': {\n\t\t\t\t\topenXmlState.hasContentTypesEntry = true;\n\n\t\t\t\t\tif (!canReadZipEntryForDetection(zipHeader, maximumZipTextEntrySizeInBytes)) {\n\t\t\t\t\t\topenXmlState.hasUnparseableContentTypes = true;\n\t\t\t\t\t\treturn {};\n\t\t\t\t\t}\n\n\t\t\t\t\topenXmlState.isParsingContentTypes = true;\n\t\t\t\t\treturn {\n\t\t\t\t\t\tasync handler(fileData) {\n\t\t\t\t\t\t\t// Use TextDecoder to decode the UTF-8 encoded data\n\t\t\t\t\t\t\tconst xmlContent = new TextDecoder('utf-8').decode(fileData);\n\t\t\t\t\t\t\tconst mimeType = getOpenXmlMimeTypeFromContentTypesXml(xmlContent);\n\t\t\t\t\t\t\tif (mimeType) {\n\t\t\t\t\t\t\t\tfileType = getFileTypeFromMimeType(mimeType);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\topenXmlState.hasParsedContentTypesEntry = true;\n\t\t\t\t\t\t\topenXmlState.isParsingContentTypes = false;\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstop: true,\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tdefault:\n\t\t\t\t\tif (/classes\\d*\\.dex/v.test(zipHeader.filename)) {\n\t\t\t\t\t\tfileType = {\n\t\t\t\t\t\t\text: 'apk',\n\t\t\t\t\t\t\tmime: 'application/vnd.android.package-archive',\n\t\t\t\t\t\t};\n\t\t\t\t\t\treturn {stop: true};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn {};\n\t\t\t}\n\t\t});\n\t} catch (error) {\n\t\tif (!isRecoverableZipError(error)) {\n\t\t\tthrow error;\n\t\t}\n\n\t\tif (openXmlState.isParsingContentTypes) {\n\t\t\topenXmlState.isParsingContentTypes = false;\n\t\t\topenXmlState.hasUnparseableContentTypes = true;\n\t\t}\n\n\t\t// When the stream was truncated before reaching [Content_Types].xml, use directory names as a fallback.\n\t\t// This handles LibreOffice-created OOXML files where [Content_Types].xml appears after content entries.\n\t\tif (!fileType && error instanceof strtok3.EndOfStreamError && !openXmlState.hasContentTypesEntry) {\n\t\t\tfileType = getOpenXmlFileTypeFromDirectoryNames(openXmlState);\n\t\t}\n\t}\n\n\tconst iWorkFileType = hasUnknownFileSize(tokenizer)\n\t\t&& iWorkState.hasDocumentEntry\n\t\t&& !iWorkState.hasMasterSlideEntry\n\t\t&& !iWorkState.hasTablesEntry\n\t\t&& !iWorkState.hasCalculationEngineEntry\n\t\t? undefined\n\t\t: getIWorkFileTypeFromZipEntries(iWorkState);\n\n\treturn fileType ?? getOpenXmlFileTypeFromZipEntries(openXmlState) ?? iWorkFileType ?? {\n\t\text: 'zip',\n\t\tmime: 'application/zip',\n\t};\n}\n", "import * as Token from 'token-types';\nimport {getUintBE} from 'uint8array-extras';\nimport {\n\tmaximumUntrustedSkipSizeInBytes,\n\tgetSafeBound,\n\tsafeReadBuffer,\n\tsafeIgnore,\n\thasUnknownFileSize,\n\thasExceededUnknownSizeScanBudget,\n} from '../parser.js';\n\nconst maximumEbmlDocumentTypeSizeInBytes = 64;\nconst maximumEbmlElementPayloadSizeInBytes = 1024 * 1024;\nconst maximumEbmlElementCount = 256;\n\nexport async function detectEbml(tokenizer) {\n\tasync function readField() {\n\t\tconst msb = await tokenizer.peekNumber(Token.UINT8);\n\t\tlet mask = 0x80;\n\t\tlet ic = 0; // 0 = A, 1 = B, 2 = C, 3 = D\n\n\t\twhile ((msb & mask) === 0 && mask !== 0) {\n\t\t\t++ic;\n\t\t\tmask >>= 1;\n\t\t}\n\n\t\tconst id = new Uint8Array(ic + 1);\n\t\tawait safeReadBuffer(tokenizer, id, undefined, {\n\t\t\tmaximumLength: id.length,\n\t\t\treason: 'EBML field',\n\t\t});\n\t\treturn id;\n\t}\n\n\tasync function readElement() {\n\t\tconst idField = await readField();\n\t\tconst lengthField = await readField();\n\n\t\tlengthField[0] ^= 0x80 >> (lengthField.length - 1);\n\t\tconst nrLength = Math.min(6, lengthField.length); // JavaScript can max read 6 bytes integer\n\n\t\tconst idView = new DataView(idField.buffer);\n\t\tconst lengthView = new DataView(lengthField.buffer, lengthField.length - nrLength, nrLength);\n\n\t\treturn {\n\t\t\tid: getUintBE(idView),\n\t\t\tlen: getUintBE(lengthView),\n\t\t};\n\t}\n\n\tasync function readChildren(children) {\n\t\tlet ebmlElementCount = 0;\n\t\twhile (children > 0) {\n\t\t\tebmlElementCount++;\n\t\t\tif (ebmlElementCount > maximumEbmlElementCount) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (hasExceededUnknownSizeScanBudget(tokenizer, ebmlScanStart, maximumUntrustedSkipSizeInBytes)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst previousPosition = tokenizer.position;\n\t\t\tconst element = await readElement();\n\n\t\t\tif (element.id === 0x42_82) {\n\t\t\t\t// `DocType` is a short string (\"webm\", \"matroska\", ...), reject implausible lengths to avoid large allocations.\n\t\t\t\tif (element.len > maximumEbmlDocumentTypeSizeInBytes) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst documentTypeLength = getSafeBound(element.len, maximumEbmlDocumentTypeSizeInBytes, 'EBML DocType');\n\t\t\t\tconst rawValue = await tokenizer.readToken(new Token.StringType(documentTypeLength));\n\t\t\t\treturn rawValue.replaceAll(/\\0.*$/gv, ''); // Return DocType\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\thasUnknownFileSize(tokenizer)\n\t\t\t\t&& (\n\t\t\t\t\t!Number.isFinite(element.len)\n\t\t\t\t\t|| element.len < 0\n\t\t\t\t\t|| element.len > maximumEbmlElementPayloadSizeInBytes\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tawait safeIgnore(tokenizer, element.len, {\n\t\t\t\tmaximumLength: hasUnknownFileSize(tokenizer) ? maximumEbmlElementPayloadSizeInBytes : tokenizer.fileInfo.size,\n\t\t\t\treason: 'EBML payload',\n\t\t\t}); // ignore payload\n\t\t\t--children;\n\n\t\t\t// Safeguard against malformed files: bail if the position did not advance.\n\t\t\tif (tokenizer.position <= previousPosition) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n\n\tconst rootElement = await readElement();\n\tconst ebmlScanStart = tokenizer.position;\n\tconst documentType = await readChildren(rootElement.len);\n\n\tswitch (documentType) {\n\t\tcase 'webm':\n\t\t\treturn {\n\t\t\t\text: 'webm',\n\t\t\t\tmime: 'video/webm',\n\t\t\t};\n\n\t\tcase 'matroska':\n\t\t\treturn {\n\t\t\t\text: 'mkv',\n\t\t\t\tmime: 'video/matroska',\n\t\t\t};\n\n\t\tdefault:\n\t}\n}\n", "import * as Token from 'token-types';\nimport * as strtok3 from 'strtok3/core';\nimport {\n\tParserHardLimitError,\n\tsafeIgnore,\n\thasUnknownFileSize,\n\thasExceededUnknownSizeScanBudget,\n} from '../parser.js';\n\nconst maximumPngChunkCount = 512;\nconst maximumPngStreamScanBudgetInBytes = 16 * 1024 * 1024;\nconst maximumPngChunkSizeInBytes = 1024 * 1024;\n\nfunction isPngAncillaryChunk(type) {\n\treturn (type.codePointAt(0) & 0x20) !== 0;\n}\n\nexport async function detectPng(tokenizer) {\n\tconst pngFileType = {\n\t\text: 'png',\n\t\tmime: 'image/png',\n\t};\n\n\tconst apngFileType = {\n\t\text: 'apng',\n\t\tmime: 'image/apng',\n\t};\n\n\t// APNG format (https://wiki.mozilla.org/APNG_Specification)\n\t// 1. Find the first IDAT (image data) chunk (49 44 41 54)\n\t// 2. Check if there is an \"acTL\" chunk before the IDAT one (61 63 54 4C)\n\n\t// Offset calculated as follows:\n\t// - 8 bytes: PNG signature\n\t// - 4 (length) + 4 (chunk type) + 13 (chunk data) + 4 (CRC): IHDR chunk\n\n\tawait tokenizer.ignore(8); // ignore PNG signature\n\n\tasync function readChunkHeader() {\n\t\treturn {\n\t\t\tlength: await tokenizer.readToken(Token.INT32_BE),\n\t\t\ttype: await tokenizer.readToken(new Token.StringType(4, 'latin1')),\n\t\t};\n\t}\n\n\tconst isUnknownPngStream = hasUnknownFileSize(tokenizer);\n\tconst pngScanStart = tokenizer.position;\n\tlet pngChunkCount = 0;\n\tlet hasSeenImageHeader = false;\n\tdo {\n\t\tpngChunkCount++;\n\t\tif (pngChunkCount > maximumPngChunkCount) {\n\t\t\tbreak;\n\t\t}\n\n\t\tif (hasExceededUnknownSizeScanBudget(tokenizer, pngScanStart, maximumPngStreamScanBudgetInBytes)) {\n\t\t\tbreak;\n\t\t}\n\n\t\tconst previousPosition = tokenizer.position;\n\t\tconst chunk = await readChunkHeader();\n\t\tif (chunk.length < 0) {\n\t\t\treturn; // Invalid chunk length\n\t\t}\n\n\t\tif (chunk.type === 'IHDR') {\n\t\t\t// PNG requires the first real image header to be a 13-byte IHDR chunk.\n\t\t\tif (chunk.length !== 13) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\thasSeenImageHeader = true;\n\t\t}\n\n\t\tswitch (chunk.type) {\n\t\t\tcase 'IDAT':\n\t\t\t\treturn pngFileType;\n\t\t\tcase 'acTL':\n\t\t\t\treturn apngFileType;\n\t\t\tdefault:\n\t\t\t\tif (\n\t\t\t\t\t!hasSeenImageHeader\n\t\t\t\t\t&& chunk.type !== 'CgBI'\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\tisUnknownPngStream\n\t\t\t\t\t&& chunk.length > maximumPngChunkSizeInBytes\n\t\t\t\t) {\n\t\t\t\t\t// Avoid huge attacker-controlled skips when probing unknown-size streams.\n\t\t\t\t\treturn hasSeenImageHeader && isPngAncillaryChunk(chunk.type) ? pngFileType : undefined;\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tawait safeIgnore(tokenizer, chunk.length + 4, {\n\t\t\t\t\t\tmaximumLength: isUnknownPngStream ? maximumPngChunkSizeInBytes + 4 : tokenizer.fileInfo.size,\n\t\t\t\t\t\treason: 'PNG chunk payload',\n\t\t\t\t\t}); // Ignore chunk-data + CRC\n\t\t\t\t} catch (error) {\n\t\t\t\t\tif (\n\t\t\t\t\t\t!isUnknownPngStream\n\t\t\t\t\t\t&& (\n\t\t\t\t\t\t\terror instanceof ParserHardLimitError\n\t\t\t\t\t\t\t|| error instanceof strtok3.EndOfStreamError\n\t\t\t\t\t\t)\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn pngFileType;\n\t\t\t\t\t}\n\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\t\t}\n\n\t\t// Safeguard against malformed files: bail if the position did not advance.\n\t\tif (tokenizer.position <= previousPosition) {\n\t\t\tbreak;\n\t\t}\n\t} while (tokenizer.position + 8 < tokenizer.fileInfo.size);\n\n\treturn pngFileType;\n}\n", "import * as Token from 'token-types';\nimport * as strtok3 from 'strtok3/core';\nimport {\n\tmaximumUntrustedSkipSizeInBytes,\n\tParserHardLimitError,\n\tcheckBytes,\n\tsafeReadBuffer,\n\tsafeIgnore,\n\thasUnknownFileSize,\n\thasExceededUnknownSizeScanBudget,\n} from '../parser.js';\n\nconst maximumAsfHeaderObjectCount = 512;\nconst maximumAsfHeaderPayloadSizeInBytes = 1024 * 1024;\n\nexport async function detectAsf(tokenizer) {\n\tlet isMalformedAsf = false;\n\ttry {\n\t\tasync function readHeader() {\n\t\t\tconst guid = new Uint8Array(16);\n\t\t\tawait safeReadBuffer(tokenizer, guid, undefined, {\n\t\t\t\tmaximumLength: guid.length,\n\t\t\t\treason: 'ASF header GUID',\n\t\t\t});\n\t\t\treturn {\n\t\t\t\tid: guid,\n\t\t\t\tsize: Number(await tokenizer.readToken(Token.UINT64_LE)),\n\t\t\t};\n\t\t}\n\n\t\tawait safeIgnore(tokenizer, 30, {\n\t\t\tmaximumLength: 30,\n\t\t\treason: 'ASF header prelude',\n\t\t});\n\t\tconst isUnknownFileSize = hasUnknownFileSize(tokenizer);\n\t\tconst asfHeaderScanStart = tokenizer.position;\n\t\tlet asfHeaderObjectCount = 0;\n\t\twhile (tokenizer.position + 24 < tokenizer.fileInfo.size) {\n\t\t\tasfHeaderObjectCount++;\n\t\t\tif (asfHeaderObjectCount > maximumAsfHeaderObjectCount) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif (hasExceededUnknownSizeScanBudget(tokenizer, asfHeaderScanStart, maximumUntrustedSkipSizeInBytes)) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tconst previousPosition = tokenizer.position;\n\t\t\tconst header = await readHeader();\n\t\t\tlet payload = header.size - 24;\n\t\t\tif (\n\t\t\t\t!Number.isFinite(payload)\n\t\t\t\t|| payload < 0\n\t\t\t) {\n\t\t\t\tisMalformedAsf = true;\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif (checkBytes(header.id, [0x91, 0x07, 0xDC, 0xB7, 0xB7, 0xA9, 0xCF, 0x11, 0x8E, 0xE6, 0x00, 0xC0, 0x0C, 0x20, 0x53, 0x65])) {\n\t\t\t\t// Sync on Stream-Properties-Object (B7DC0791-A9B7-11CF-8EE6-00C00C205365)\n\t\t\t\tconst typeId = new Uint8Array(16);\n\t\t\t\tpayload -= await safeReadBuffer(tokenizer, typeId, undefined, {\n\t\t\t\t\tmaximumLength: typeId.length,\n\t\t\t\t\treason: 'ASF stream type GUID',\n\t\t\t\t});\n\n\t\t\t\tif (checkBytes(typeId, [0x40, 0x9E, 0x69, 0xF8, 0x4D, 0x5B, 0xCF, 0x11, 0xA8, 0xFD, 0x00, 0x80, 0x5F, 0x5C, 0x44, 0x2B])) {\n\t\t\t\t\t// Found audio:\n\t\t\t\t\treturn {\n\t\t\t\t\t\text: 'asf',\n\t\t\t\t\t\tmime: 'audio/x-ms-asf',\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tif (checkBytes(typeId, [0xC0, 0xEF, 0x19, 0xBC, 0x4D, 0x5B, 0xCF, 0x11, 0xA8, 0xFD, 0x00, 0x80, 0x5F, 0x5C, 0x44, 0x2B])) {\n\t\t\t\t\t// Found video:\n\t\t\t\t\treturn {\n\t\t\t\t\t\text: 'asf',\n\t\t\t\t\t\tmime: 'video/x-ms-asf',\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tisUnknownFileSize\n\t\t\t\t&& payload > maximumAsfHeaderPayloadSizeInBytes\n\t\t\t) {\n\t\t\t\tisMalformedAsf = true;\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tawait safeIgnore(tokenizer, payload, {\n\t\t\t\tmaximumLength: isUnknownFileSize ? maximumAsfHeaderPayloadSizeInBytes : tokenizer.fileInfo.size,\n\t\t\t\treason: 'ASF header payload',\n\t\t\t});\n\n\t\t\t// Safeguard against malformed files: break if the position did not advance.\n\t\t\tif (tokenizer.position <= previousPosition) {\n\t\t\t\tisMalformedAsf = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t} catch (error) {\n\t\tif (\n\t\t\terror instanceof strtok3.EndOfStreamError\n\t\t\t|| error instanceof ParserHardLimitError\n\t\t) {\n\t\t\tif (hasUnknownFileSize(tokenizer)) {\n\t\t\t\tisMalformedAsf = true;\n\t\t\t}\n\t\t} else {\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tif (isMalformedAsf) {\n\t\treturn;\n\t}\n\n\t// Default to ASF generic extension\n\treturn {\n\t\text: 'asf',\n\t\tmime: 'application/vnd.ms-asf',\n\t};\n}\n", "export const balanced = (\n  a: string | RegExp,\n  b: string | RegExp,\n  str: string,\n) => {\n  const ma = a instanceof RegExp ? maybeMatch(a, str) : a\n  const mb = b instanceof RegExp ? maybeMatch(b, str) : b\n\n  const r = ma !== null && mb != null && range(ma, mb, str)\n\n  return (\n    r && {\n      start: r[0],\n      end: r[1],\n      pre: str.slice(0, r[0]),\n      body: str.slice(r[0] + ma.length, r[1]),\n      post: str.slice(r[1] + mb.length),\n    }\n  )\n}\n\nconst maybeMatch = (reg: RegExp, str: string) => {\n  const m = str.match(reg)\n  return m ? m[0] : null\n}\n\nexport const range = (\n  a: string,\n  b: string,\n  str: string,\n): undefined | [number, number] => {\n  let begs: number[],\n    beg: number | undefined,\n    left: number,\n    right: number | undefined = undefined,\n    result: undefined | [number, number]\n  let ai = str.indexOf(a)\n  let bi = str.indexOf(b, ai + 1)\n  let i = ai\n\n  if (ai >= 0 && bi > 0) {\n    if (a === b) {\n      return [ai, bi]\n    }\n    begs = []\n    left = str.length\n\n    while (i >= 0 && !result) {\n      if (i === ai) {\n        begs.push(i)\n        ai = str.indexOf(a, i + 1)\n      } else if (begs.length === 1) {\n        const r = begs.pop()\n        if (r !== undefined) result = [r, bi]\n      } else {\n        beg = begs.pop()\n        if (beg !== undefined && beg < left) {\n          left = beg\n          right = bi\n        }\n\n        bi = str.indexOf(b, i + 1)\n      }\n\n      i = ai < bi && ai >= 0 ? ai : bi\n    }\n\n    if (begs.length && right !== undefined) {\n      result = [left, right]\n    }\n  }\n\n  return result\n}\n", "import { balanced } from 'balanced-match'\n\nconst escSlash = '\\0SLASH' + Math.random() + '\\0'\nconst escOpen = '\\0OPEN' + Math.random() + '\\0'\nconst escClose = '\\0CLOSE' + Math.random() + '\\0'\nconst escComma = '\\0COMMA' + Math.random() + '\\0'\nconst escPeriod = '\\0PERIOD' + Math.random() + '\\0'\nconst escSlashPattern = new RegExp(escSlash, 'g')\nconst escOpenPattern = new RegExp(escOpen, 'g')\nconst escClosePattern = new RegExp(escClose, 'g')\nconst escCommaPattern = new RegExp(escComma, 'g')\nconst escPeriodPattern = new RegExp(escPeriod, 'g')\nconst slashPattern = /\\\\\\\\/g\nconst openPattern = /\\\\{/g\nconst closePattern = /\\\\}/g\nconst commaPattern = /\\\\,/g\nconst periodPattern = /\\\\\\./g\n\nexport const EXPANSION_MAX = 100_000\n\nfunction numeric(str: string) {\n  return !isNaN(str as any) ? parseInt(str, 10) : str.charCodeAt(0)\n}\n\nfunction escapeBraces(str: string) {\n  return str\n    .replace(slashPattern, escSlash)\n    .replace(openPattern, escOpen)\n    .replace(closePattern, escClose)\n    .replace(commaPattern, escComma)\n    .replace(periodPattern, escPeriod)\n}\n\nfunction unescapeBraces(str: string) {\n  return str\n    .replace(escSlashPattern, '\\\\')\n    .replace(escOpenPattern, '{')\n    .replace(escClosePattern, '}')\n    .replace(escCommaPattern, ',')\n    .replace(escPeriodPattern, '.')\n}\n\n/**\n * Basically just str.split(\",\"), but handling cases\n * where we have nested braced sections, which should be\n * treated as individual members, like {a,{b,c},d}\n */\nfunction parseCommaParts(str: string) {\n  if (!str) {\n    return ['']\n  }\n\n  const parts: string[] = []\n  const m = balanced('{', '}', str)\n\n  if (!m) {\n    return str.split(',')\n  }\n\n  const { pre, body, post } = m\n  const p = pre.split(',')\n\n  p[p.length - 1] += '{' + body + '}'\n  const postParts = parseCommaParts(post)\n  if (post.length) {\n    ;(p[p.length - 1] as string) += postParts.shift()\n    p.push.apply(p, postParts)\n  }\n\n  parts.push.apply(parts, p)\n\n  return parts\n}\n\nexport type BraceExpansionOptions = {\n  max?: number\n}\n\nexport function expand(str: string, options: BraceExpansionOptions = {}) {\n  if (!str) {\n    return []\n  }\n\n  const { max = EXPANSION_MAX } = options\n\n  // I don't know why Bash 4.3 does this, but it does.\n  // Anything starting with {} will have the first two bytes preserved\n  // but *only* at the top level, so {},a}b will not expand to anything,\n  // but a{},b}c will be expanded to [a}c,abc].\n  // One could argue that this is a bug in Bash, but since the goal of\n  // this module is to match Bash's rules, we escape a leading {}\n  if (str.slice(0, 2) === '{}') {\n    str = '\\\\{\\\\}' + str.slice(2)\n  }\n\n  return expand_(escapeBraces(str), max, true).map(unescapeBraces)\n}\n\nfunction embrace(str: string) {\n  return '{' + str + '}'\n}\n\nfunction isPadded(el: string) {\n  return /^-?0\\d/.test(el)\n}\n\nfunction lte(i: number, y: number) {\n  return i <= y\n}\n\nfunction gte(i: number, y: number) {\n  return i >= y\n}\n\nfunction expand_(str: string, max: number, isTop: boolean): string[] {\n  /** @type {string[]} */\n  const expansions: string[] = []\n\n  const m = balanced('{', '}', str)\n  if (!m) return [str]\n\n  // no need to expand pre, since it is guaranteed to be free of brace-sets\n  const pre = m.pre\n  const post: string[] = m.post.length ? expand_(m.post, max, false) : ['']\n\n  if (/\\$$/.test(m.pre)) {\n    for (let k = 0; k < post.length && k < max; k++) {\n      const expansion = pre + '{' + m.body + '}' + post[k]\n      expansions.push(expansion)\n    }\n  } else {\n    const isNumericSequence = /^-?\\d+\\.\\.-?\\d+(?:\\.\\.-?\\d+)?$/.test(m.body)\n    const isAlphaSequence = /^[a-zA-Z]\\.\\.[a-zA-Z](?:\\.\\.-?\\d+)?$/.test(\n      m.body,\n    )\n    const isSequence = isNumericSequence || isAlphaSequence\n    const isOptions = m.body.indexOf(',') >= 0\n    if (!isSequence && !isOptions) {\n      // {a},b}\n      if (m.post.match(/,(?!,).*\\}/)) {\n        str = m.pre + '{' + m.body + escClose + m.post\n        return expand_(str, max, true)\n      }\n      return [str]\n    }\n\n    let n: string[]\n    if (isSequence) {\n      n = m.body.split(/\\.\\./)\n    } else {\n      n = parseCommaParts(m.body)\n      if (n.length === 1 && n[0] !== undefined) {\n        // x{{a,b}}y ==> x{a}y x{b}y\n        n = expand_(n[0], max, false).map(embrace)\n        //XXX is this necessary? Can't seem to hit it in tests.\n        /* c8 ignore start */\n        if (n.length === 1) {\n          return post.map(p => m.pre + n[0] + p)\n        }\n        /* c8 ignore stop */\n      }\n    }\n\n    // at this point, n is the parts, and we know it's not a comma set\n    // with a single entry.\n    let N: string[]\n\n    if (isSequence && n[0] !== undefined && n[1] !== undefined) {\n      const x = numeric(n[0])\n      const y = numeric(n[1])\n      const width = Math.max(n[0].length, n[1].length)\n      let incr =\n        n.length === 3 && n[2] !== undefined ?\n          Math.max(Math.abs(numeric(n[2])), 1)\n        : 1\n      let test = lte\n      const reverse = y < x\n      if (reverse) {\n        incr *= -1\n        test = gte\n      }\n      const pad = n.some(isPadded)\n\n      N = []\n\n      for (let i = x; test(i, y); i += incr) {\n        let c\n        if (isAlphaSequence) {\n          c = String.fromCharCode(i)\n          if (c === '\\\\') {\n            c = ''\n          }\n        } else {\n          c = String(i)\n          if (pad) {\n            const need = width - c.length\n            if (need > 0) {\n              const z = new Array(need + 1).join('0')\n              if (i < 0) {\n                c = '-' + z + c.slice(1)\n              } else {\n                c = z + c\n              }\n            }\n          }\n        }\n        N.push(c)\n      }\n    } else {\n      N = []\n\n      for (let j = 0; j < n.length; j++) {\n        N.push.apply(N, expand_(n[j] as string, max, false))\n      }\n    }\n\n    for (let j = 0; j < N.length; j++) {\n      for (let k = 0; k < post.length && expansions.length < max; k++) {\n        const expansion = pre + N[j] + post[k]\n        if (!isTop || isSequence || expansion) {\n          expansions.push(expansion)\n        }\n      }\n    }\n  }\n\n  return expansions\n}\n", "const MAX_PATTERN_LENGTH = 1024 * 64\nexport const assertValidPattern: (pattern: unknown) => void = (\n  pattern: unknown,\n): asserts pattern is string => {\n  if (typeof pattern !== 'string') {\n    throw new TypeError('invalid pattern')\n  }\n\n  if (pattern.length > MAX_PATTERN_LENGTH) {\n    throw new TypeError('pattern is too long')\n  }\n}\n", "// translate the various posix character classes into unicode properties\n// this works across all unicode locales\n\n// { <posix class>: [<translation>, /u flag required, negated]\nconst posixClasses: { [k: string]: [e: string, u: boolean, n?: boolean] } =\n  {\n    '[:alnum:]': ['\\\\p{L}\\\\p{Nl}\\\\p{Nd}', true],\n    '[:alpha:]': ['\\\\p{L}\\\\p{Nl}', true],\n    '[:ascii:]': ['\\\\x' + '00-\\\\x' + '7f', false],\n    '[:blank:]': ['\\\\p{Zs}\\\\t', true],\n    '[:cntrl:]': ['\\\\p{Cc}', true],\n    '[:digit:]': ['\\\\p{Nd}', true],\n    '[:graph:]': ['\\\\p{Z}\\\\p{C}', true, true],\n    '[:lower:]': ['\\\\p{Ll}', true],\n    '[:print:]': ['\\\\p{C}', true],\n    '[:punct:]': ['\\\\p{P}', true],\n    '[:space:]': ['\\\\p{Z}\\\\t\\\\r\\\\n\\\\v\\\\f', true],\n    '[:upper:]': ['\\\\p{Lu}', true],\n    '[:word:]': ['\\\\p{L}\\\\p{Nl}\\\\p{Nd}\\\\p{Pc}', true],\n    '[:xdigit:]': ['A-Fa-f0-9', false],\n  }\n\n// only need to escape a few things inside of brace expressions\n// escapes: [ \\ ] -\nconst braceEscape = (s: string) => s.replace(/[[\\]\\\\-]/g, '\\\\$&')\n// escape all regexp magic characters\nconst regexpEscape = (s: string) =>\n  s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n\n// everything has already been escaped, we just have to join\nconst rangesToString = (ranges: string[]): string => ranges.join('')\n\nexport type ParseClassResult = [\n  src: string,\n  uFlag: boolean,\n  consumed: number,\n  hasMagic: boolean,\n]\n\n// takes a glob string at a posix brace expression, and returns\n// an equivalent regular expression source, and boolean indicating\n// whether the /u flag needs to be applied, and the number of chars\n// consumed to parse the character class.\n// This also removes out of order ranges, and returns ($.) if the\n// entire class just no good.\nexport const parseClass = (\n  glob: string,\n  position: number,\n): ParseClassResult => {\n  const pos = position\n  /* c8 ignore start */\n  if (glob.charAt(pos) !== '[') {\n    throw new Error('not in a brace expression')\n  }\n  /* c8 ignore stop */\n  const ranges: string[] = []\n  const negs: string[] = []\n\n  let i = pos + 1\n  let sawStart = false\n  let uflag = false\n  let escaping = false\n  let negate = false\n  let endPos = pos\n  let rangeStart = ''\n  WHILE: while (i < glob.length) {\n    const c = glob.charAt(i)\n    if ((c === '!' || c === '^') && i === pos + 1) {\n      negate = true\n      i++\n      continue\n    }\n\n    if (c === ']' && sawStart && !escaping) {\n      endPos = i + 1\n      break\n    }\n\n    sawStart = true\n    if (c === '\\\\') {\n      if (!escaping) {\n        escaping = true\n        i++\n        continue\n      }\n      // escaped \\ char, fall through and treat like normal char\n    }\n    if (c === '[' && !escaping) {\n      // either a posix class, a collation equivalent, or just a [\n      for (const [cls, [unip, u, neg]] of Object.entries(posixClasses)) {\n        if (glob.startsWith(cls, i)) {\n          // invalid, [a-[] is fine, but not [a-[:alpha]]\n          if (rangeStart) {\n            return ['$.', false, glob.length - pos, true]\n          }\n          i += cls.length\n          if (neg) negs.push(unip)\n          else ranges.push(unip)\n          uflag = uflag || u\n          continue WHILE\n        }\n      }\n    }\n\n    // now it's just a normal character, effectively\n    escaping = false\n    if (rangeStart) {\n      // throw this range away if it's not valid, but others\n      // can still match.\n      if (c > rangeStart) {\n        ranges.push(braceEscape(rangeStart) + '-' + braceEscape(c))\n      } else if (c === rangeStart) {\n        ranges.push(braceEscape(c))\n      }\n      rangeStart = ''\n      i++\n      continue\n    }\n\n    // now might be the start of a range.\n    // can be either c-d or c-] or c<more...>] or c] at this point\n    if (glob.startsWith('-]', i + 1)) {\n      ranges.push(braceEscape(c + '-'))\n      i += 2\n      continue\n    }\n    if (glob.startsWith('-', i + 1)) {\n      rangeStart = c\n      i += 2\n      continue\n    }\n\n    // not the start of a range, just a single character\n    ranges.push(braceEscape(c))\n    i++\n  }\n\n  if (endPos < i) {\n    // didn't see the end of the class, not a valid class,\n    // but might still be valid as a literal match.\n    return ['', false, 0, false]\n  }\n\n  // if we got no ranges and no negates, then we have a range that\n  // cannot possibly match anything, and that poisons the whole glob\n  if (!ranges.length && !negs.length) {\n    return ['$.', false, glob.length - pos, true]\n  }\n\n  // if we got one positive range, and it's a single character, then that's\n  // not actually a magic pattern, it's just that one literal character.\n  // we should not treat that as \"magic\", we should just return the literal\n  // character. [_] is a perfectly valid way to escape glob magic chars.\n  if (\n    negs.length === 0 &&\n    ranges.length === 1 &&\n    /^\\\\?.$/.test(ranges[0]) &&\n    !negate\n  ) {\n    const r = ranges[0].length === 2 ? ranges[0].slice(-1) : ranges[0]\n    return [regexpEscape(r), false, endPos - pos, false]\n  }\n\n  const sranges = '[' + (negate ? '^' : '') + rangesToString(ranges) + ']'\n  const snegs = '[' + (negate ? '' : '^') + rangesToString(negs) + ']'\n  const comb =\n    ranges.length && negs.length ? '(' + sranges + '|' + snegs + ')'\n    : ranges.length ? sranges\n    : snegs\n\n  return [comb, uflag, endPos - pos, true]\n}\n", "import type { MinimatchOptions } from './index.js'\n\n/**\n * Un-escape a string that has been escaped with {@link escape}.\n *\n * If the {@link MinimatchOptions.windowsPathsNoEscape} option is used, then\n * square-bracket escapes are removed, but not backslash escapes.\n *\n * For example, it will turn the string `'[*]'` into `*`, but it will not\n * turn `'\\\\*'` into `'*'`, because `\\` is a path separator in\n * `windowsPathsNoEscape` mode.\n *\n * When `windowsPathsNoEscape` is not set, then both square-bracket escapes and\n * backslash escapes are removed.\n *\n * Slashes (and backslashes in `windowsPathsNoEscape` mode) cannot be escaped\n * or unescaped.\n *\n * When `magicalBraces` is not set, escapes of braces (`{` and `}`) will not be\n * unescaped.\n */\n\nexport const unescape = (\n  s: string,\n  {\n    windowsPathsNoEscape = false,\n    magicalBraces = true,\n  }: Pick<MinimatchOptions, 'windowsPathsNoEscape' | 'magicalBraces'> = {},\n) => {\n  if (magicalBraces) {\n    return windowsPathsNoEscape ?\n        s.replace(/\\[([^/\\\\])\\]/g, '$1')\n      : s\n          .replace(/((?!\\\\).|^)\\[([^/\\\\])\\]/g, '$1$2')\n          .replace(/\\\\([^/])/g, '$1')\n  }\n  return windowsPathsNoEscape ?\n      s.replace(/\\[([^/\\\\{}])\\]/g, '$1')\n    : s\n        .replace(/((?!\\\\).|^)\\[([^/\\\\{}])\\]/g, '$1$2')\n        .replace(/\\\\([^/{}])/g, '$1')\n}\n", "// parse a single path portion\n\nimport { parseClass } from './brace-expressions.js'\nimport type { MinimatchOptions, MMRegExp } from './index.js'\nimport { unescape } from './unescape.js'\n\n// classes [] are handled by the parseClass method\n// for positive extglobs, we sub-parse the contents, and combine,\n// with the appropriate regexp close.\n// for negative extglobs, we sub-parse the contents, but then\n// have to include the rest of the pattern, then the parent, etc.,\n// as the thing that cannot be because RegExp negative lookaheads\n// are different from globs.\n//\n// So for example:\n// a@(i|w!(x|y)z|j)b => ^a(i|w((!?(x|y)zb).*)z|j)b$\n//   1   2 3   4 5 6      1   2    3   46      5 6\n//\n// Assembling the extglob requires not just the negated patterns themselves,\n// but also anything following the negative patterns up to the boundary\n// of the current pattern, plus anything following in the parent pattern.\n//\n//\n// So, first, we parse the string into an AST of extglobs, without turning\n// anything into regexps yet.\n//\n// ['a', {@ [['i'], ['w', {!['x', 'y']}, 'z'], ['j']]}, 'b']\n//\n// Then, for all the negative extglobs, we append whatever comes after in\n// each parent as their tail\n//\n// ['a', {@ [['i'], ['w', {!['x', 'y'], 'z', 'b'}, 'z'], ['j']]}, 'b']\n//\n// Lastly, we turn each of these pieces into a regexp, and join\n//\n//                                 v----- .* because there's more following,\n//                                 v    v  otherwise, .+ because it must be\n//                                 v    v  *something* there.\n// ['^a', {@ ['i', 'w(?:(!?(?:x|y).*zb$).*)z', 'j' ]}, 'b$']\n//   copy what follows into here--^^^^^\n// ['^a', '(?:i|w(?:(?!(?:x|y).*zb$).*)z|j)', 'b$']\n// ['^a(?:i|w(?:(?!(?:x|y).*zb$).*)z|j)b$']\n\nexport type ExtglobType = '!' | '?' | '+' | '*' | '@'\nconst types = new Set<ExtglobType>(['!', '?', '+', '*', '@'])\nconst isExtglobType = (c: string | null): c is ExtglobType =>\n  types.has(c as ExtglobType)\nconst isExtglobAST = (c: AST): c is AST & { type: ExtglobType } =>\n  isExtglobType(c.type)\n\n// Map of which extglob types can adopt the children of a nested extglob\n//\n// anything but ! can adopt a matching type:\n// +(a|+(b|c)|d) => +(a|b|c|d)\n// *(a|*(b|c)|d) => *(a|b|c|d)\n// @(a|@(b|c)|d) => @(a|b|c|d)\n// ?(a|?(b|c)|d) => ?(a|b|c|d)\n//\n// * can adopt anything, because 0 or repetition is allowed\n// *(a|?(b|c)|d) => *(a|b|c|d)\n// *(a|+(b|c)|d) => *(a|b|c|d)\n// *(a|@(b|c)|d) => *(a|b|c|d)\n//\n// + can adopt @, because 1 or repetition is allowed\n// +(a|@(b|c)|d) => +(a|b|c|d)\n//\n// + and @ CANNOT adopt *, because 0 would be allowed\n// +(a|*(b|c)|d) => would match \"\", on *(b|c)\n// @(a|*(b|c)|d) => would match \"\", on *(b|c)\n//\n// + and @ CANNOT adopt ?, because 0 would be allowed\n// +(a|?(b|c)|d) => would match \"\", on ?(b|c)\n// @(a|?(b|c)|d) => would match \"\", on ?(b|c)\n//\n// ? can adopt @, because 0 or 1 is allowed\n// ?(a|@(b|c)|d) => ?(a|b|c|d)\n//\n// ? and @ CANNOT adopt * or +, because >1 would be allowed\n// ?(a|*(b|c)|d) => would match bbb on *(b|c)\n// @(a|*(b|c)|d) => would match bbb on *(b|c)\n// ?(a|+(b|c)|d) => would match bbb on +(b|c)\n// @(a|+(b|c)|d) => would match bbb on +(b|c)\n//\n// ! CANNOT adopt ! (nothing else can either)\n// !(a|!(b|c)|d) => !(a|b|c|d) would fail to match on b (not not b|c)\n//\n// ! can adopt @\n// !(a|@(b|c)|d) => !(a|b|c|d)\n//\n// ! CANNOT adopt *\n// !(a|*(b|c)|d) => !(a|b|c|d) would match on bbb, not allowed\n//\n// ! CANNOT adopt +\n// !(a|+(b|c)|d) => !(a|b|c|d) would match on bbb, not allowed\n//\n// ! CANNOT adopt ?\n// x!(a|?(b|c)|d) => x!(a|b|c|d) would fail to match \"x\"\nconst adoptionMap = new Map<ExtglobType, ExtglobType[]>([\n  ['!', ['@']],\n  ['?', ['?', '@']],\n  ['@', ['@']],\n  ['*', ['*', '+', '?', '@']],\n  ['+', ['+', '@']],\n])\n\n// nested extglobs that can be adopted in, but with the addition of\n// a blank '' element.\nconst adoptionWithSpaceMap = new Map<ExtglobType, ExtglobType[]>([\n  ['!', ['?']],\n  ['@', ['?']],\n  ['+', ['?', '*']],\n])\n\n// union of the previous two maps\nconst adoptionAnyMap = new Map<ExtglobType, ExtglobType[]>([\n  ['!', ['?', '@']],\n  ['?', ['?', '@']],\n  ['@', ['?', '@']],\n  ['*', ['*', '+', '?', '@']],\n  ['+', ['+', '@', '?', '*']],\n])\n\n// Extglobs that can take over their parent if they are the only child\n// the key is parent, value maps child to resulting extglob parent type\n// '@' is omitted because it's a special case. An `@` extglob with a single\n// member can always be usurped by that subpattern.\nconst usurpMap = new Map<\n  ExtglobType,\n  Map<ExtglobType | null, ExtglobType | null>\n>([\n  ['!', new Map([['!', '@']])],\n  [\n    '?',\n    new Map([\n      ['*', '*'],\n      ['+', '*'],\n    ]),\n  ],\n  [\n    '@',\n    new Map([\n      ['!', '!'],\n      ['?', '?'],\n      ['@', '@'],\n      ['*', '*'],\n      ['+', '+'],\n    ]),\n  ],\n  [\n    '+',\n    new Map([\n      ['?', '*'],\n      ['*', '*'],\n    ]),\n  ],\n])\n\n// Patterns that get prepended to bind to the start of either the\n// entire string, or just a single path portion, to prevent dots\n// and/or traversal patterns, when needed.\n// Exts don't need the ^ or / bit, because the root binds that already.\nconst startNoTraversal = '(?!(?:^|/)\\\\.\\\\.?(?:$|/))'\nconst startNoDot = '(?!\\\\.)'\n\n// characters that indicate a start of pattern needs the \"no dots\" bit,\n// because a dot *might* be matched. ( is not in the list, because in\n// the case of a child extglob, it will handle the prevention itself.\nconst addPatternStart = new Set(['[', '.'])\n// cases where traversal is A-OK, no dot prevention needed\nconst justDots = new Set(['..', '.'])\nconst reSpecials = new Set('().*{}+?[]^$\\\\!')\nconst regExpEscape = (s: string) =>\n  s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n\n// any single thing other than /\nconst qmark = '[^/]'\n\n// * => any number of characters\nconst star = qmark + '*?'\n// use + when we need to ensure that *something* matches, because the * is\n// the only thing in the path portion.\nconst starNoEmpty = qmark + '+?'\n\n// remove the \\ chars that we added if we end up doing a nonmagic compare\n// const deslash = (s: string) => s.replace(/\\\\(.)/g, '$1')\n\nlet ID = 0\nexport class AST {\n  type: ExtglobType | null\n  readonly #root: AST\n\n  #hasMagic?: boolean\n  #uflag: boolean = false\n  #parts: (string | AST)[] = []\n  #parent?: AST\n  #parentIndex: number\n  #negs: AST[]\n  #filledNegs: boolean = false\n  #options: MinimatchOptions\n  #toString?: string\n  // set to true if it's an extglob with no children\n  // (which really means one child of '')\n  #emptyExt: boolean = false\n  id = ++ID\n\n  get depth(): number {\n    return (this.#parent?.depth ?? -1) + 1\n  }\n\n  [Symbol.for('nodejs.util.inspect.custom')]() {\n    return {\n      '@@type': 'AST',\n      id: this.id,\n      type: this.type,\n      root: this.#root.id,\n      parent: this.#parent?.id,\n      depth: this.depth,\n      partsLength: this.#parts.length,\n      parts: this.#parts,\n    }\n  }\n\n  constructor(\n    type: ExtglobType | null,\n    parent?: AST,\n    options: MinimatchOptions = {},\n  ) {\n    this.type = type\n    // extglobs are inherently magical\n    if (type) this.#hasMagic = true\n    this.#parent = parent\n    this.#root = this.#parent ? this.#parent.#root : this\n    this.#options = this.#root === this ? options : this.#root.#options\n    this.#negs = this.#root === this ? [] : this.#root.#negs\n    if (type === '!' && !this.#root.#filledNegs) this.#negs.push(this)\n    this.#parentIndex = this.#parent ? this.#parent.#parts.length : 0\n  }\n\n  get hasMagic(): boolean | undefined {\n    /* c8 ignore start */\n    if (this.#hasMagic !== undefined) return this.#hasMagic\n    /* c8 ignore stop */\n    for (const p of this.#parts) {\n      if (typeof p === 'string') continue\n      if (p.type || p.hasMagic) return (this.#hasMagic = true)\n    }\n    // note: will be undefined until we generate the regexp src and find out\n    return this.#hasMagic\n  }\n\n  // reconstructs the pattern\n  toString(): string {\n    return (\n      this.#toString !== undefined ? this.#toString\n      : !this.type ?\n        (this.#toString = this.#parts.map(p => String(p)).join(''))\n      : (this.#toString =\n          this.type +\n          '(' +\n          this.#parts.map(p => String(p)).join('|') +\n          ')')\n    )\n  }\n\n  #fillNegs() {\n    /* c8 ignore start */\n    if (this !== this.#root) throw new Error('should only call on root')\n    if (this.#filledNegs) return this\n    /* c8 ignore stop */\n\n    // call toString() once to fill this out\n    this.toString()\n    this.#filledNegs = true\n    let n: AST | undefined\n    while ((n = this.#negs.pop())) {\n      if (n.type !== '!') continue\n      // walk up the tree, appending everthing that comes AFTER parentIndex\n      let p: AST | undefined = n\n      let pp = p.#parent\n      while (pp) {\n        for (\n          let i = p.#parentIndex + 1;\n          !pp.type && i < pp.#parts.length;\n          i++\n        ) {\n          for (const part of n.#parts) {\n            /* c8 ignore start */\n            if (typeof part === 'string') {\n              throw new Error('string part in extglob AST??')\n            }\n            /* c8 ignore stop */\n            part.copyIn(pp.#parts[i])\n          }\n        }\n        p = pp\n        pp = p.#parent\n      }\n    }\n    return this\n  }\n\n  push(...parts: (string | AST)[]) {\n    for (const p of parts) {\n      if (p === '') continue\n      /* c8 ignore start */\n      if (\n        typeof p !== 'string' &&\n        !(p instanceof AST && p.#parent === this)\n      ) {\n        throw new Error('invalid part: ' + p)\n      }\n      /* c8 ignore stop */\n      this.#parts.push(p)\n    }\n  }\n\n  toJSON() {\n    const ret: unknown[] =\n      this.type === null ?\n        this.#parts\n          .slice()\n          .map(p => (typeof p === 'string' ? p : p.toJSON()))\n      : [this.type, ...this.#parts.map(p => (p as AST).toJSON())]\n    if (this.isStart() && !this.type) ret.unshift([])\n    if (\n      this.isEnd() &&\n      (this === this.#root ||\n        (this.#root.#filledNegs && this.#parent?.type === '!'))\n    ) {\n      ret.push({})\n    }\n    return ret\n  }\n\n  isStart(): boolean {\n    if (this.#root === this) return true\n    // if (this.type) return !!this.#parent?.isStart()\n    if (!this.#parent?.isStart()) return false\n    if (this.#parentIndex === 0) return true\n    // if everything AHEAD of this is a negation, then it's still the \"start\"\n    const p = this.#parent\n    for (let i = 0; i < this.#parentIndex; i++) {\n      const pp = p.#parts[i]\n      if (!(pp instanceof AST && pp.type === '!')) {\n        return false\n      }\n    }\n    return true\n  }\n\n  isEnd(): boolean {\n    if (this.#root === this) return true\n    if (this.#parent?.type === '!') return true\n    if (!this.#parent?.isEnd()) return false\n    if (!this.type) return this.#parent?.isEnd()\n    // if not root, it'll always have a parent\n    /* c8 ignore start */\n    const pl = this.#parent ? this.#parent.#parts.length : 0\n    /* c8 ignore stop */\n    return this.#parentIndex === pl - 1\n  }\n\n  copyIn(part: AST | string) {\n    if (typeof part === 'string') this.push(part)\n    else this.push(part.clone(this))\n  }\n\n  clone(parent: AST) {\n    const c = new AST(this.type, parent)\n    for (const p of this.#parts) {\n      c.copyIn(p)\n    }\n    return c\n  }\n\n  static #parseAST(\n    str: string,\n    ast: AST,\n    pos: number,\n    opt: MinimatchOptions,\n    extDepth: number,\n  ): number {\n    const maxDepth = opt.maxExtglobRecursion ?? 2\n    let escaping = false\n    let inBrace = false\n    let braceStart = -1\n    let braceNeg = false\n    if (ast.type === null) {\n      // outside of a extglob, append until we find a start\n      let i = pos\n      let acc = ''\n      while (i < str.length) {\n        const c = str.charAt(i++)\n        // still accumulate escapes at this point, but we do ignore\n        // starts that are escaped\n        if (escaping || c === '\\\\') {\n          escaping = !escaping\n          acc += c\n          continue\n        }\n\n        if (inBrace) {\n          if (i === braceStart + 1) {\n            if (c === '^' || c === '!') {\n              braceNeg = true\n            }\n          } else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {\n            inBrace = false\n          }\n          acc += c\n          continue\n        } else if (c === '[') {\n          inBrace = true\n          braceStart = i\n          braceNeg = false\n          acc += c\n          continue\n        }\n\n        // we don't have to check for adoption here, because that's\n        // done at the other recursion point.\n        const doRecurse =\n          !opt.noext &&\n          isExtglobType(c) &&\n          str.charAt(i) === '(' &&\n          extDepth <= maxDepth\n        if (doRecurse) {\n          ast.push(acc)\n          acc = ''\n          const ext = new AST(c, ast)\n          i = AST.#parseAST(str, ext, i, opt, extDepth + 1)\n          ast.push(ext)\n          continue\n        }\n        acc += c\n      }\n      ast.push(acc)\n      return i\n    }\n\n    // some kind of extglob, pos is at the (\n    // find the next | or )\n    let i = pos + 1\n    let part = new AST(null, ast)\n    const parts: AST[] = []\n    let acc = ''\n    while (i < str.length) {\n      const c = str.charAt(i++)\n      // still accumulate escapes at this point, but we do ignore\n      // starts that are escaped\n      if (escaping || c === '\\\\') {\n        escaping = !escaping\n        acc += c\n        continue\n      }\n\n      if (inBrace) {\n        if (i === braceStart + 1) {\n          if (c === '^' || c === '!') {\n            braceNeg = true\n          }\n        } else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {\n          inBrace = false\n        }\n        acc += c\n        continue\n      } else if (c === '[') {\n        inBrace = true\n        braceStart = i\n        braceNeg = false\n        acc += c\n        continue\n      }\n\n      const doRecurse =\n        !opt.noext &&\n        isExtglobType(c) &&\n        str.charAt(i) === '(' &&\n        /* c8 ignore start - the maxDepth is sufficient here */\n        (extDepth <= maxDepth || (ast && ast.#canAdoptType(c)))\n      /* c8 ignore stop */\n      if (doRecurse) {\n        const depthAdd = ast && ast.#canAdoptType(c) ? 0 : 1\n        part.push(acc)\n        acc = ''\n        const ext = new AST(c, part)\n        part.push(ext)\n        i = AST.#parseAST(str, ext, i, opt, extDepth + depthAdd)\n        continue\n      }\n      if (c === '|') {\n        part.push(acc)\n        acc = ''\n        parts.push(part)\n        part = new AST(null, ast)\n        continue\n      }\n      if (c === ')') {\n        if (acc === '' && ast.#parts.length === 0) {\n          ast.#emptyExt = true\n        }\n        part.push(acc)\n        acc = ''\n        ast.push(...parts, part)\n        return i\n      }\n      acc += c\n    }\n\n    // unfinished extglob\n    // if we got here, it was a malformed extglob! not an extglob, but\n    // maybe something else in there.\n    ast.type = null\n    ast.#hasMagic = undefined\n    ast.#parts = [str.substring(pos - 1)]\n    return i\n  }\n\n  #canAdoptWithSpace(child?: AST | string): child is AST & {\n    type: null\n    parts: [AST & { type: ExtglobType }]\n  } {\n    return this.#canAdopt(child, adoptionWithSpaceMap)\n  }\n\n  #canAdopt(\n    child?: AST | string,\n    map: Map<ExtglobType, ExtglobType[]> = adoptionMap,\n  ): child is AST & {\n    type: null\n    parts: [AST & { type: ExtglobType }]\n  } {\n    if (\n      !child ||\n      typeof child !== 'object' ||\n      child.type !== null ||\n      child.#parts.length !== 1 ||\n      this.type === null\n    ) {\n      return false\n    }\n    const gc = child.#parts[0]\n    if (!gc || typeof gc !== 'object' || gc.type === null) {\n      return false\n    }\n    return (this as AST & { type: ExtglobType }).#canAdoptType(\n      gc.type,\n      map,\n    )\n  }\n  #canAdoptType(\n    c: string,\n    map: Map<ExtglobType, ExtglobType[]> = adoptionAnyMap,\n  ): c is ExtglobType {\n    return !!map.get(this.type as ExtglobType)?.includes(c as ExtglobType)\n  }\n\n  #adoptWithSpace(\n    this: AST & { type: ExtglobType },\n    child: AST & {\n      type: null\n    },\n    index: number,\n  ) {\n    const gc = child.#parts[0] as AST & { type: ExtglobType }\n    const blank = new AST(null, gc, this.options)\n    blank.#parts.push('')\n    gc.push(blank)\n    this.#adopt(child, index)\n  }\n\n  #adopt(\n    child: AST & {\n      type: null\n    },\n    index: number,\n  ) {\n    const gc = child.#parts[0] as AST & { type: ExtglobType }\n    this.#parts.splice(index, 1, ...gc.#parts)\n    for (const p of gc.#parts) {\n      if (typeof p === 'object') p.#parent = this\n    }\n    this.#toString = undefined\n  }\n\n  #canUsurpType(c: string): boolean {\n    const m = usurpMap.get(this.type as ExtglobType)\n    return !!m?.has(c as ExtglobType)\n  }\n\n  #canUsurp(child?: AST | string): child is AST & {\n    type: null\n    parts: [AST & { type: ExtglobType }]\n  } {\n    if (\n      !child ||\n      typeof child !== 'object' ||\n      child.type !== null ||\n      child.#parts.length !== 1 ||\n      this.type === null ||\n      this.#parts.length !== 1\n    ) {\n      return false\n    }\n    const gc = child.#parts[0]\n    if (!gc || typeof gc !== 'object' || gc.type === null) {\n      return false\n    }\n    return (this as AST & { type: ExtglobType }).#canUsurpType(gc.type)\n  }\n\n  #usurp(this: AST & { type: ExtglobType }, child: AST & { type: null }) {\n    const m = usurpMap.get(this.type as ExtglobType)\n    const gc = child.#parts[0] as AST & { type: ExtglobType }\n    const nt = m?.get(gc.type)\n    /* c8 ignore start - impossible */\n    if (!nt) return false\n    /* c8 ignore stop */\n    this.#parts = gc.#parts\n    for (const p of this.#parts) {\n      if (typeof p === 'object') {\n        p.#parent = this\n      }\n    }\n    this.type = nt\n    this.#toString = undefined\n    this.#emptyExt = false\n  }\n\n  static fromGlob(pattern: string, options: MinimatchOptions = {}) {\n    const ast = new AST(null, undefined, options)\n    AST.#parseAST(pattern, ast, 0, options, 0)\n    return ast\n  }\n\n  // returns the regular expression if there's magic, or the unescaped\n  // string if not.\n  toMMPattern(): MMRegExp | string {\n    // should only be called on root\n    /* c8 ignore start */\n    if (this !== this.#root) return this.#root.toMMPattern()\n    /* c8 ignore stop */\n    const glob = this.toString()\n    const [re, body, hasMagic, uflag] = this.toRegExpSource()\n    // if we're in nocase mode, and not nocaseMagicOnly, then we do\n    // still need a regular expression if we have to case-insensitively\n    // match capital/lowercase characters.\n    const anyMagic =\n      hasMagic ||\n      this.#hasMagic ||\n      (this.#options.nocase &&\n        !this.#options.nocaseMagicOnly &&\n        glob.toUpperCase() !== glob.toLowerCase())\n    if (!anyMagic) {\n      return body\n    }\n\n    const flags = (this.#options.nocase ? 'i' : '') + (uflag ? 'u' : '')\n    return Object.assign(new RegExp(`^${re}$`, flags), {\n      _src: re,\n      _glob: glob,\n    })\n  }\n\n  get options() {\n    return this.#options\n  }\n\n  // returns the string match, the regexp source, whether there's magic\n  // in the regexp (so a regular expression is required) and whether or\n  // not the uflag is needed for the regular expression (for posix classes)\n  // TODO: instead of injecting the start/end at this point, just return\n  // the BODY of the regexp, along with the start/end portions suitable\n  // for binding the start/end in either a joined full-path makeRe context\n  // (where we bind to (^|/), or a standalone matchPart context (where\n  // we bind to ^, and not /).  Otherwise slashes get duped!\n  //\n  // In part-matching mode, the start is:\n  // - if not isStart: nothing\n  // - if traversal possible, but not allowed: ^(?!\\.\\.?$)\n  // - if dots allowed or not possible: ^\n  // - if dots possible and not allowed: ^(?!\\.)\n  // end is:\n  // - if not isEnd(): nothing\n  // - else: $\n  //\n  // In full-path matching mode, we put the slash at the START of the\n  // pattern, so start is:\n  // - if first pattern: same as part-matching mode\n  // - if not isStart(): nothing\n  // - if traversal possible, but not allowed: /(?!\\.\\.?(?:$|/))\n  // - if dots allowed or not possible: /\n  // - if dots possible and not allowed: /(?!\\.)\n  // end is:\n  // - if last pattern, same as part-matching mode\n  // - else nothing\n  //\n  // Always put the (?:$|/) on negated tails, though, because that has to be\n  // there to bind the end of the negated pattern portion, and it's easier to\n  // just stick it in now rather than try to inject it later in the middle of\n  // the pattern.\n  //\n  // We can just always return the same end, and leave it up to the caller\n  // to know whether it's going to be used joined or in parts.\n  // And, if the start is adjusted slightly, can do the same there:\n  // - if not isStart: nothing\n  // - if traversal possible, but not allowed: (?:/|^)(?!\\.\\.?$)\n  // - if dots allowed or not possible: (?:/|^)\n  // - if dots possible and not allowed: (?:/|^)(?!\\.)\n  //\n  // But it's better to have a simpler binding without a conditional, for\n  // performance, so probably better to return both start options.\n  //\n  // Then the caller just ignores the end if it's not the first pattern,\n  // and the start always gets applied.\n  //\n  // But that's always going to be $ if it's the ending pattern, or nothing,\n  // so the caller can just attach $ at the end of the pattern when building.\n  //\n  // So the todo is:\n  // - better detect what kind of start is needed\n  // - return both flavors of starting pattern\n  // - attach $ at the end of the pattern when creating the actual RegExp\n  //\n  // Ah, but wait, no, that all only applies to the root when the first pattern\n  // is not an extglob. If the first pattern IS an extglob, then we need all\n  // that dot prevention biz to live in the extglob portions, because eg\n  // +(*|.x*) can match .xy but not .yx.\n  //\n  // So, return the two flavors if it's #root and the first child is not an\n  // AST, otherwise leave it to the child AST to handle it, and there,\n  // use the (?:^|/) style of start binding.\n  //\n  // Even simplified further:\n  // - Since the start for a join is eg /(?!\\.) and the start for a part\n  // is ^(?!\\.), we can just prepend (?!\\.) to the pattern (either root\n  // or start or whatever) and prepend ^ or / at the Regexp construction.\n  toRegExpSource(\n    allowDot?: boolean,\n  ): [re: string, body: string, hasMagic: boolean, uflag: boolean] {\n    const dot = allowDot ?? !!this.#options.dot\n    if (this.#root === this) {\n      this.#flatten()\n      this.#fillNegs()\n    }\n    if (!isExtglobAST(this)) {\n      const noEmpty =\n        this.isStart() &&\n        this.isEnd() &&\n        !this.#parts.some(s => typeof s !== 'string')\n      const src = this.#parts\n        .map(p => {\n          const [re, _, hasMagic, uflag] =\n            typeof p === 'string' ?\n              AST.#parseGlob(p, this.#hasMagic, noEmpty)\n            : p.toRegExpSource(allowDot)\n          this.#hasMagic = this.#hasMagic || hasMagic\n          this.#uflag = this.#uflag || uflag\n          return re\n        })\n        .join('')\n\n      let start = ''\n      if (this.isStart()) {\n        if (typeof this.#parts[0] === 'string') {\n          // this is the string that will match the start of the pattern,\n          // so we need to protect against dots and such.\n\n          // '.' and '..' cannot match unless the pattern is that exactly,\n          // even if it starts with . or dot:true is set.\n          const dotTravAllowed =\n            this.#parts.length === 1 && justDots.has(this.#parts[0])\n          if (!dotTravAllowed) {\n            const aps = addPatternStart\n            // check if we have a possibility of matching . or ..,\n            // and prevent that.\n            const needNoTrav =\n              // dots are allowed, and the pattern starts with [ or .\n              (dot && aps.has(src.charAt(0))) ||\n              // the pattern starts with \\., and then [ or .\n              (src.startsWith('\\\\.') && aps.has(src.charAt(2))) ||\n              // the pattern starts with \\.\\., and then [ or .\n              (src.startsWith('\\\\.\\\\.') && aps.has(src.charAt(4)))\n            // no need to prevent dots if it can't match a dot, or if a\n            // sub-pattern will be preventing it anyway.\n            const needNoDot = !dot && !allowDot && aps.has(src.charAt(0))\n\n            start =\n              needNoTrav ? startNoTraversal\n              : needNoDot ? startNoDot\n              : ''\n          }\n        }\n      }\n\n      // append the \"end of path portion\" pattern to negation tails\n      let end = ''\n      if (\n        this.isEnd() &&\n        this.#root.#filledNegs &&\n        this.#parent?.type === '!'\n      ) {\n        end = '(?:$|\\\\/)'\n      }\n      const final = start + src + end\n      return [\n        final,\n        unescape(src),\n        (this.#hasMagic = !!this.#hasMagic),\n        this.#uflag,\n      ]\n    }\n\n    // We need to calculate the body *twice* if it's a repeat pattern\n    // at the start, once in nodot mode, then again in dot mode, so a\n    // pattern like *(?) can match 'x.y'\n\n    const repeated = this.type === '*' || this.type === '+'\n    // some kind of extglob\n    const start = this.type === '!' ? '(?:(?!(?:' : '(?:'\n    let body = (this as AST & { type: ExtglobType }).#partsToRegExp(dot)\n\n    if (this.isStart() && this.isEnd() && !body && this.type !== '!') {\n      // invalid extglob, has to at least be *something* present, if it's\n      // the entire path portion.\n      const s = this.toString()\n      const me = this as AST\n      me.#parts = [s]\n      me.type = null\n      me.#hasMagic = undefined\n      return [s, unescape(this.toString()), false, false]\n    }\n\n    let bodyDotAllowed =\n      !repeated || allowDot || dot || !startNoDot ?\n        ''\n      : this.#partsToRegExp(true)\n    if (bodyDotAllowed === body) {\n      bodyDotAllowed = ''\n    }\n    if (bodyDotAllowed) {\n      body = `(?:${body})(?:${bodyDotAllowed})*?`\n    }\n\n    // an empty !() is exactly equivalent to a starNoEmpty\n    let final = ''\n    if (this.type === '!' && this.#emptyExt) {\n      final = (this.isStart() && !dot ? startNoDot : '') + starNoEmpty\n    } else {\n      const close =\n        this.type === '!' ?\n          // !() must match something,but !(x) can match ''\n          '))' +\n          (this.isStart() && !dot && !allowDot ? startNoDot : '') +\n          star +\n          ')'\n        : this.type === '@' ? ')'\n        : this.type === '?' ? ')?'\n        : this.type === '+' && bodyDotAllowed ? ')'\n        : this.type === '*' && bodyDotAllowed ? `)?`\n        : `)${this.type}`\n      final = start + body + close\n    }\n    return [\n      final,\n      unescape(body),\n      (this.#hasMagic = !!this.#hasMagic),\n      this.#uflag,\n    ]\n  }\n\n  #flatten() {\n    if (!isExtglobAST(this)) {\n      for (const p of this.#parts) {\n        if (typeof p === 'object') {\n          p.#flatten()\n        }\n      }\n    } else {\n      // do up to 10 passes to flatten as much as possible\n      let iterations = 0\n      let done = false\n      do {\n        done = true\n        for (let i = 0; i < this.#parts.length; i++) {\n          const c = this.#parts[i]\n          if (typeof c === 'object') {\n            c.#flatten()\n            if (this.#canAdopt(c)) {\n              done = false\n              this.#adopt(c, i)\n            } else if (this.#canAdoptWithSpace(c)) {\n              done = false\n              ;(this as AST & { type: ExtglobType }).#adoptWithSpace(c, i)\n            } else if (this.#canUsurp(c)) {\n              done = false\n              ;(this as AST & { type: ExtglobType }).#usurp(c)\n            }\n          }\n        }\n      } while (!done && ++iterations < 10)\n    }\n    this.#toString = undefined\n  }\n\n  #partsToRegExp(this: AST & { type: ExtglobType }, dot: boolean) {\n    return this.#parts\n      .map(p => {\n        // extglob ASTs should only contain parent ASTs\n        /* c8 ignore start */\n        if (typeof p === 'string') {\n          throw new Error('string type in extglob ast??')\n        }\n        /* c8 ignore stop */\n        // can ignore hasMagic, because extglobs are already always magic\n        const [re, _, _hasMagic, uflag] = p.toRegExpSource(dot)\n        this.#uflag = this.#uflag || uflag\n        return re\n      })\n      .filter(p => !(this.isStart() && this.isEnd()) || !!p)\n      .join('|')\n  }\n\n  static #parseGlob(\n    glob: string,\n    hasMagic: boolean | undefined,\n    noEmpty: boolean = false,\n  ): [re: string, body: string, hasMagic: boolean, uflag: boolean] {\n    let escaping = false\n    let re = ''\n    let uflag = false\n    // multiple stars that aren't globstars coalesce into one *\n    let inStar = false\n    for (let i = 0; i < glob.length; i++) {\n      const c = glob.charAt(i)\n      if (escaping) {\n        escaping = false\n        re += (reSpecials.has(c) ? '\\\\' : '') + c\n        continue\n      }\n      if (c === '*') {\n        if (inStar) continue\n        inStar = true\n        re += noEmpty && /^[*]+$/.test(glob) ? starNoEmpty : star\n        hasMagic = true\n        continue\n      } else {\n        inStar = false\n      }\n      if (c === '\\\\') {\n        if (i === glob.length - 1) {\n          re += '\\\\\\\\'\n        } else {\n          escaping = true\n        }\n        continue\n      }\n      if (c === '[') {\n        const [src, needUflag, consumed, magic] = parseClass(glob, i)\n        if (consumed) {\n          re += src\n          uflag = uflag || needUflag\n          i += consumed - 1\n          hasMagic = hasMagic || magic\n          continue\n        }\n      }\n      if (c === '?') {\n        re += qmark\n        hasMagic = true\n        continue\n      }\n      re += regExpEscape(c)\n    }\n    return [re, unescape(glob), !!hasMagic, uflag]\n  }\n}\n", "import type { MinimatchOptions } from './index.js'\n\n/**\n * Escape all magic characters in a glob pattern.\n *\n * If the {@link MinimatchOptions.windowsPathsNoEscape}\n * option is used, then characters are escaped by wrapping in `[]`, because\n * a magic character wrapped in a character class can only be satisfied by\n * that exact character.  In this mode, `\\` is _not_ escaped, because it is\n * not interpreted as a magic character, but instead as a path separator.\n *\n * If the {@link MinimatchOptions.magicalBraces} option is used,\n * then braces (`{` and `}`) will be escaped.\n */\nexport const escape = (\n  s: string,\n  {\n    windowsPathsNoEscape = false,\n    magicalBraces = false,\n  }: Pick<MinimatchOptions, 'windowsPathsNoEscape' | 'magicalBraces'> = {},\n) => {\n  // don't need to escape +@! because we escape the parens\n  // that make those magic, and escaping ! as [!] isn't valid,\n  // because [!]] is a valid glob class meaning not ']'.\n  if (magicalBraces) {\n    return windowsPathsNoEscape ?\n        s.replace(/[?*()[\\]{}]/g, '[$&]')\n      : s.replace(/[?*()[\\]\\\\{}]/g, '\\\\$&')\n  }\n  return windowsPathsNoEscape ?\n      s.replace(/[?*()[\\]]/g, '[$&]')\n    : s.replace(/[?*()[\\]\\\\]/g, '\\\\$&')\n}\n", "import { expand } from 'brace-expansion'\nimport { assertValidPattern } from './assert-valid-pattern.js'\nimport type { ExtglobType } from './ast.js'\nimport { AST } from './ast.js'\nimport { escape } from './escape.js'\nimport { unescape } from './unescape.js'\n\nexport type Platform =\n  | 'aix'\n  | 'android'\n  | 'darwin'\n  | 'freebsd'\n  | 'haiku'\n  | 'linux'\n  | 'openbsd'\n  | 'sunos'\n  | 'win32'\n  | 'cygwin'\n  | 'netbsd'\n\nexport interface MinimatchOptions {\n  /** do not expand `{x,y}` style braces */\n  nobrace?: boolean\n  /** do not treat patterns starting with `#` as a comment */\n  nocomment?: boolean\n  /** do not treat patterns starting with `!` as a negation */\n  nonegate?: boolean\n  /** print LOTS of debugging output */\n  debug?: boolean\n  /** treat `**` the same as `*` */\n  noglobstar?: boolean\n  /** do not expand extglobs like `+(a|b)` */\n  noext?: boolean\n  /** return the pattern if nothing matches */\n  nonull?: boolean\n  /** treat `\\\\` as a path separator, not an escape character */\n  windowsPathsNoEscape?: boolean\n  /**\n   * inverse of {@link MinimatchOptions.windowsPathsNoEscape}\n   * @deprecated\n   */\n  allowWindowsEscape?: boolean\n  /**\n   * Compare a partial path to a pattern. As long as the parts\n   * of the path that are present are not contradicted by the\n   * pattern, it will be treated as a match. This is useful in\n   * applications where you're walking through a folder structure,\n   * and don't yet have the full path, but want to ensure that you\n   * do not walk down paths that can never be a match.\n   */\n  partial?: boolean\n  /** allow matches that start with `.` even if the pattern does not */\n  dot?: boolean\n  /** ignore case */\n  nocase?: boolean\n  /** ignore case only in wildcard patterns */\n  nocaseMagicOnly?: boolean\n  /** consider braces to be \"magic\" for the purpose of `hasMagic` */\n  magicalBraces?: boolean\n  /**\n   * If set, then patterns without slashes will be matched\n   * against the basename of the path if it contains slashes.\n   * For example, `a?b` would match the path `/xyz/123/acb`, but\n   * not `/xyz/acb/123`.\n   */\n  matchBase?: boolean\n  /** invert the results of negated matches */\n  flipNegate?: boolean\n  /** do not collapse multiple `/` into a single `/` */\n  preserveMultipleSlashes?: boolean\n  /**\n   * A number indicating the level of optimization that should be done\n   * to the pattern prior to parsing and using it for matches.\n   */\n  optimizationLevel?: number\n  /** operating system platform */\n  platform?: Platform\n  /**\n   * When a pattern starts with a UNC path or drive letter, and in\n   * `nocase:true` mode, do not convert the root portions of the\n   * pattern into a case-insensitive regular expression, and instead\n   * leave them as strings.\n   *\n   * This is the default when the platform is `win32` and\n   * `nocase:true` is set.\n   */\n  windowsNoMagicRoot?: boolean\n  /**\n   * max number of `{...}` patterns to expand. Default 100_000.\n   */\n  braceExpandMax?: number\n  /**\n   * Max number of non-adjacent `**` patterns to recursively walk down.\n   *\n   * The default of 200 is almost certainly high enough for most purposes,\n   * and can handle absurdly excessive patterns.\n   */\n  maxGlobstarRecursion?: number\n\n  /**\n   * Max depth to traverse for nested extglobs like `*(a|b|c)`\n   *\n   * Default is 2, which is quite low, but any higher value\n   * swiftly results in punishing performance impacts. Note\n   * that this is *not*  relevant when the globstar types can\n   * be safely coalesced into a single set.\n   *\n   * For example, `*(a|@(b|c)|d)` would be flattened into\n   * `*(a|b|c|d)`. Thus, many common extglobs will retain good\n   * performance and  never hit this limit, even if they are\n   * excessively deep and complicated.\n   *\n   * If the limit is hit, then the extglob characters are simply\n   * not parsed, and the pattern effectively switches into\n   * `noextglob: true` mode for the contents of that nested\n   * sub-pattern. This will typically _not_ result in a match,\n   * but is considered a valid trade-off for security and\n   * performance.\n   */\n  maxExtglobRecursion?: number\n}\n\nexport const minimatch = (\n  p: string,\n  pattern: string,\n  options: MinimatchOptions = {},\n) => {\n  assertValidPattern(pattern)\n\n  // shortcut: comments match nothing.\n  if (!options.nocomment && pattern.charAt(0) === '#') {\n    return false\n  }\n\n  return new Minimatch(pattern, options).match(p)\n}\n\n// Optimized checking for the most common glob patterns.\nconst starDotExtRE = /^\\*+([^+@!?*[(]*)$/\nconst starDotExtTest = (ext: string) => (f: string) =>\n  !f.startsWith('.') && f.endsWith(ext)\nconst starDotExtTestDot = (ext: string) => (f: string) => f.endsWith(ext)\nconst starDotExtTestNocase = (ext: string) => {\n  ext = ext.toLowerCase()\n  return (f: string) => !f.startsWith('.') && f.toLowerCase().endsWith(ext)\n}\nconst starDotExtTestNocaseDot = (ext: string) => {\n  ext = ext.toLowerCase()\n  return (f: string) => f.toLowerCase().endsWith(ext)\n}\nconst starDotStarRE = /^\\*+\\.\\*+$/\nconst starDotStarTest = (f: string) =>\n  !f.startsWith('.') && f.includes('.')\nconst starDotStarTestDot = (f: string) =>\n  f !== '.' && f !== '..' && f.includes('.')\nconst dotStarRE = /^\\.\\*+$/\nconst dotStarTest = (f: string) =>\n  f !== '.' && f !== '..' && f.startsWith('.')\nconst starRE = /^\\*+$/\nconst starTest = (f: string) => f.length !== 0 && !f.startsWith('.')\nconst starTestDot = (f: string) =>\n  f.length !== 0 && f !== '.' && f !== '..'\nconst qmarksRE = /^\\?+([^+@!?*[(]*)?$/\nconst qmarksTestNocase = ([$0, ext = '']: RegExpMatchArray) => {\n  const noext = qmarksTestNoExt([$0])\n  if (!ext) return noext\n  ext = ext.toLowerCase()\n  return (f: string) => noext(f) && f.toLowerCase().endsWith(ext)\n}\nconst qmarksTestNocaseDot = ([$0, ext = '']: RegExpMatchArray) => {\n  const noext = qmarksTestNoExtDot([$0])\n  if (!ext) return noext\n  ext = ext.toLowerCase()\n  return (f: string) => noext(f) && f.toLowerCase().endsWith(ext)\n}\nconst qmarksTestDot = ([$0, ext = '']: RegExpMatchArray) => {\n  const noext = qmarksTestNoExtDot([$0])\n  return !ext ? noext : (f: string) => noext(f) && f.endsWith(ext)\n}\nconst qmarksTest = ([$0, ext = '']: RegExpMatchArray) => {\n  const noext = qmarksTestNoExt([$0])\n  return !ext ? noext : (f: string) => noext(f) && f.endsWith(ext)\n}\nconst qmarksTestNoExt = ([$0]: RegExpMatchArray) => {\n  const len = $0.length\n  return (f: string) => f.length === len && !f.startsWith('.')\n}\nconst qmarksTestNoExtDot = ([$0]: RegExpMatchArray) => {\n  const len = $0.length\n  return (f: string) => f.length === len && f !== '.' && f !== '..'\n}\n\n/* c8 ignore start */\nconst defaultPlatform: Platform = (\n  typeof process === 'object' && process ?\n    (typeof process.env === 'object' &&\n      process.env &&\n      process.env.__MINIMATCH_TESTING_PLATFORM__) ||\n    process.platform\n  : 'posix') as Platform\n\nexport type Sep = '\\\\' | '/'\n\nconst path: { [k: string]: { sep: Sep } } = {\n  win32: { sep: '\\\\' },\n  posix: { sep: '/' },\n}\n/* c8 ignore stop */\n\nexport const sep =\n  defaultPlatform === 'win32' ? path.win32.sep : path.posix.sep\nminimatch.sep = sep\n\nexport const GLOBSTAR = Symbol('globstar **')\nminimatch.GLOBSTAR = GLOBSTAR\n\n// any single thing other than /\n// don't need to escape / when using new RegExp()\nconst qmark = '[^/]'\n\n// * => any number of characters\nconst star = qmark + '*?'\n\n// ** when dots are allowed.  Anything goes, except .. and .\n// not (^ or / followed by one or two dots followed by $ or /),\n// followed by anything, any number of times.\nconst twoStarDot = '(?:(?!(?:\\\\/|^)(?:\\\\.{1,2})($|\\\\/)).)*?'\n\n// not a ^ or / followed by a dot,\n// followed by anything, any number of times.\nconst twoStarNoDot = '(?:(?!(?:\\\\/|^)\\\\.).)*?'\n\nexport const filter =\n  (pattern: string, options: MinimatchOptions = {}) =>\n  (p: string) =>\n    minimatch(p, pattern, options)\nminimatch.filter = filter\n\nconst ext = (a: MinimatchOptions, b: MinimatchOptions = {}) =>\n  Object.assign({}, a, b)\n\nexport const defaults = (def: MinimatchOptions): typeof minimatch => {\n  if (!def || typeof def !== 'object' || !Object.keys(def).length) {\n    return minimatch\n  }\n\n  const orig = minimatch\n\n  const m = (p: string, pattern: string, options: MinimatchOptions = {}) =>\n    orig(p, pattern, ext(def, options))\n\n  return Object.assign(m, {\n    Minimatch: class Minimatch extends orig.Minimatch {\n      constructor(pattern: string, options: MinimatchOptions = {}) {\n        super(pattern, ext(def, options))\n      }\n      static defaults(options: MinimatchOptions) {\n        return orig.defaults(ext(def, options)).Minimatch\n      }\n    },\n\n    AST: class AST extends orig.AST {\n      /* c8 ignore start */\n      constructor(\n        type: ExtglobType | null,\n        parent?: AST,\n        options: MinimatchOptions = {},\n      ) {\n        super(type, parent, ext(def, options))\n      }\n      /* c8 ignore stop */\n\n      static fromGlob(pattern: string, options: MinimatchOptions = {}) {\n        return orig.AST.fromGlob(pattern, ext(def, options))\n      }\n    },\n\n    unescape: (\n      s: string,\n      options: Pick<\n        MinimatchOptions,\n        'windowsPathsNoEscape' | 'magicalBraces'\n      > = {},\n    ) => orig.unescape(s, ext(def, options)),\n\n    escape: (\n      s: string,\n      options: Pick<\n        MinimatchOptions,\n        'windowsPathsNoEscape' | 'magicalBraces'\n      > = {},\n    ) => orig.escape(s, ext(def, options)),\n\n    filter: (pattern: string, options: MinimatchOptions = {}) =>\n      orig.filter(pattern, ext(def, options)),\n\n    defaults: (options: MinimatchOptions) =>\n      orig.defaults(ext(def, options)),\n\n    makeRe: (pattern: string, options: MinimatchOptions = {}) =>\n      orig.makeRe(pattern, ext(def, options)),\n\n    braceExpand: (pattern: string, options: MinimatchOptions = {}) =>\n      orig.braceExpand(pattern, ext(def, options)),\n\n    match: (\n      list: string[],\n      pattern: string,\n      options: MinimatchOptions = {},\n    ) => orig.match(list, pattern, ext(def, options)),\n\n    sep: orig.sep,\n    GLOBSTAR: GLOBSTAR as typeof GLOBSTAR,\n  })\n}\nminimatch.defaults = defaults\n\n// Brace expansion:\n// a{b,c}d -> abd acd\n// a{b,}c -> abc ac\n// a{0..3}d -> a0d a1d a2d a3d\n// a{b,c{d,e}f}g -> abg acdfg acefg\n// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg\n//\n// Invalid sets are not expanded.\n// a{2..}b -> a{2..}b\n// a{b}c -> a{b}c\nexport const braceExpand = (\n  pattern: string,\n  options: MinimatchOptions = {},\n) => {\n  assertValidPattern(pattern)\n\n  // Thanks to Yeting Li <https://github.com/yetingli> for\n  // improving this regexp to avoid a ReDOS vulnerability.\n  if (options.nobrace || !/\\{(?:(?!\\{).)*\\}/.test(pattern)) {\n    // shortcut. no need to expand.\n    return [pattern]\n  }\n\n  return expand(pattern, { max: options.braceExpandMax })\n}\nminimatch.braceExpand = braceExpand\n\n// parse a component of the expanded set.\n// At this point, no pattern may contain \"/\" in it\n// so we're going to return a 2d array, where each entry is the full\n// pattern, split on '/', and then turned into a regular expression.\n// A regexp is made at the end which joins each array with an\n// escaped /, and another full one which joins each regexp with |.\n//\n// Following the lead of Bash 4.1, note that \"**\" only has special meaning\n// when it is the *only* thing in a path portion.  Otherwise, any series\n// of * is equivalent to a single *.  Globstar behavior is enabled by\n// default, and can be disabled by setting options.noglobstar.\n\nexport const makeRe = (pattern: string, options: MinimatchOptions = {}) =>\n  new Minimatch(pattern, options).makeRe()\nminimatch.makeRe = makeRe\n\nexport const match = (\n  list: string[],\n  pattern: string,\n  options: MinimatchOptions = {},\n) => {\n  const mm = new Minimatch(pattern, options)\n  list = list.filter(f => mm.match(f))\n  if (mm.options.nonull && !list.length) {\n    list.push(pattern)\n  }\n  return list\n}\nminimatch.match = match\n\n// replace stuff like \\* with *\nconst globMagic = /[?*]|[+@!]\\(.*?\\)|\\[|\\]/\nconst regExpEscape = (s: string) =>\n  s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n\nexport type MMRegExp = RegExp & {\n  _src?: string\n  _glob?: string\n}\n\nexport type ParseReturnFiltered = string | MMRegExp | typeof GLOBSTAR\nexport type ParseReturn = ParseReturnFiltered | false\n\nexport class Minimatch {\n  options: MinimatchOptions\n  set: ParseReturnFiltered[][]\n  pattern: string\n\n  windowsPathsNoEscape: boolean\n  nonegate: boolean\n  negate: boolean\n  comment: boolean\n  empty: boolean\n  preserveMultipleSlashes: boolean\n  partial: boolean\n  globSet: string[]\n  globParts: string[][]\n  nocase: boolean\n\n  isWindows: boolean\n  platform: Platform\n  windowsNoMagicRoot: boolean\n  maxGlobstarRecursion: number\n\n  regexp: false | null | MMRegExp\n  constructor(pattern: string, options: MinimatchOptions = {}) {\n    assertValidPattern(pattern)\n\n    options = options || {}\n    this.options = options\n    this.maxGlobstarRecursion = options.maxGlobstarRecursion ?? 200\n    this.pattern = pattern\n    this.platform = options.platform || defaultPlatform\n    this.isWindows = this.platform === 'win32'\n    // avoid the annoying deprecation flag lol\n    const awe = ('allowWindow' + 'sEscape') as keyof MinimatchOptions\n    this.windowsPathsNoEscape =\n      !!options.windowsPathsNoEscape || options[awe] === false\n    if (this.windowsPathsNoEscape) {\n      this.pattern = this.pattern.replace(/\\\\/g, '/')\n    }\n    this.preserveMultipleSlashes = !!options.preserveMultipleSlashes\n    this.regexp = null\n    this.negate = false\n    this.nonegate = !!options.nonegate\n    this.comment = false\n    this.empty = false\n    this.partial = !!options.partial\n    this.nocase = !!this.options.nocase\n    this.windowsNoMagicRoot =\n      options.windowsNoMagicRoot !== undefined ?\n        options.windowsNoMagicRoot\n      : !!(this.isWindows && this.nocase)\n\n    this.globSet = []\n    this.globParts = []\n    this.set = []\n\n    // make the set of regexps etc.\n    this.make()\n  }\n\n  hasMagic(): boolean {\n    if (this.options.magicalBraces && this.set.length > 1) {\n      return true\n    }\n    for (const pattern of this.set) {\n      for (const part of pattern) {\n        if (typeof part !== 'string') return true\n      }\n    }\n    return false\n  }\n\n  debug(..._: unknown[]) {}\n\n  make() {\n    const pattern = this.pattern\n    const options = this.options\n\n    // empty patterns and comments match nothing.\n    if (!options.nocomment && pattern.charAt(0) === '#') {\n      this.comment = true\n      return\n    }\n\n    if (!pattern) {\n      this.empty = true\n      return\n    }\n\n    // step 1: figure out negation, etc.\n    this.parseNegate()\n\n    // step 2: expand braces\n    this.globSet = [...new Set(this.braceExpand())]\n\n    if (options.debug) {\n      //oxlint-disable-next-line no-console\n      this.debug = (...args: unknown[]) => console.error(...args)\n    }\n\n    this.debug(this.pattern, this.globSet)\n\n    // step 3: now we have a set, so turn each one into a series of\n    // path-portion matching patterns.\n    // These will be regexps, except in the case of \"**\", which is\n    // set to the GLOBSTAR object for globstar behavior,\n    // and will not contain any / characters\n    //\n    // First, we preprocess to make the glob pattern sets a bit simpler\n    // and deduped.  There are some perf-killing patterns that can cause\n    // problems with a glob walk, but we can simplify them down a bit.\n    const rawGlobParts = this.globSet.map(s => this.slashSplit(s))\n    this.globParts = this.preprocess(rawGlobParts)\n    this.debug(this.pattern, this.globParts)\n\n    // glob --> regexps\n    let set = this.globParts.map((s, _, __) => {\n      if (this.isWindows && this.windowsNoMagicRoot) {\n        // check if it's a drive or unc path.\n        const isUNC =\n          s[0] === '' &&\n          s[1] === '' &&\n          (s[2] === '?' || !globMagic.test(s[2])) &&\n          !globMagic.test(s[3])\n        const isDrive = /^[a-z]:/i.test(s[0])\n        if (isUNC) {\n          return [\n            ...s.slice(0, 4),\n            ...s.slice(4).map(ss => this.parse(ss)),\n          ]\n        } else if (isDrive) {\n          return [s[0], ...s.slice(1).map(ss => this.parse(ss))]\n        }\n      }\n      return s.map(ss => this.parse(ss))\n    })\n\n    this.debug(this.pattern, set)\n\n    // filter out everything that didn't compile properly.\n    this.set = set.filter(\n      s => s.indexOf(false) === -1,\n    ) as ParseReturnFiltered[][]\n\n    // do not treat the ? in UNC paths as magic\n    if (this.isWindows) {\n      for (let i = 0; i < this.set.length; i++) {\n        const p = this.set[i]\n        if (\n          p[0] === '' &&\n          p[1] === '' &&\n          this.globParts[i][2] === '?' &&\n          typeof p[3] === 'string' &&\n          /^[a-z]:$/i.test(p[3])\n        ) {\n          p[2] = '?'\n        }\n      }\n    }\n\n    this.debug(this.pattern, this.set)\n  }\n\n  // various transforms to equivalent pattern sets that are\n  // faster to process in a filesystem walk.  The goal is to\n  // eliminate what we can, and push all ** patterns as far\n  // to the right as possible, even if it increases the number\n  // of patterns that we have to process.\n  preprocess(globParts: string[][]) {\n    // if we're not in globstar mode, then turn ** into *\n    if (this.options.noglobstar) {\n      for (const partset of globParts) {\n        for (let j = 0; j < partset.length; j++) {\n          if (partset[j] === '**') {\n            partset[j] = '*'\n          }\n        }\n      }\n    }\n\n    const { optimizationLevel = 1 } = this.options\n\n    if (optimizationLevel >= 2) {\n      // aggressive optimization for the purpose of fs walking\n      globParts = this.firstPhasePreProcess(globParts)\n      globParts = this.secondPhasePreProcess(globParts)\n    } else if (optimizationLevel >= 1) {\n      // just basic optimizations to remove some .. parts\n      globParts = this.levelOneOptimize(globParts)\n    } else {\n      // just collapse multiple ** portions into one\n      globParts = this.adjascentGlobstarOptimize(globParts)\n    }\n\n    return globParts\n  }\n\n  // just get rid of adjascent ** portions\n  adjascentGlobstarOptimize(globParts: string[][]) {\n    return globParts.map(parts => {\n      let gs: number = -1\n      while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n        let i = gs\n        while (parts[i + 1] === '**') {\n          i++\n        }\n        if (i !== gs) {\n          parts.splice(gs, i - gs)\n        }\n      }\n      return parts\n    })\n  }\n\n  // get rid of adjascent ** and resolve .. portions\n  levelOneOptimize(globParts: string[][]) {\n    return globParts.map(parts => {\n      parts = parts.reduce((set: string[], part) => {\n        const prev = set[set.length - 1]\n        if (part === '**' && prev === '**') {\n          return set\n        }\n        if (part === '..') {\n          if (prev && prev !== '..' && prev !== '.' && prev !== '**') {\n            set.pop()\n            return set\n          }\n        }\n        set.push(part)\n        return set\n      }, [])\n      return parts.length === 0 ? [''] : parts\n    })\n  }\n\n  levelTwoFileOptimize(parts: string | string[]) {\n    if (!Array.isArray(parts)) {\n      parts = this.slashSplit(parts)\n    }\n    let didSomething: boolean = false\n\n    do {\n      didSomething = false\n      // <pre>/<e>/<rest> -> <pre>/<rest>\n      if (!this.preserveMultipleSlashes) {\n        for (let i = 1; i < parts.length - 1; i++) {\n          const p = parts[i]\n          // don't squeeze out UNC patterns\n          if (i === 1 && p === '' && parts[0] === '') continue\n          if (p === '.' || p === '') {\n            didSomething = true\n            parts.splice(i, 1)\n            i--\n          }\n        }\n        if (\n          parts[0] === '.' &&\n          parts.length === 2 &&\n          (parts[1] === '.' || parts[1] === '')\n        ) {\n          didSomething = true\n          parts.pop()\n        }\n      }\n\n      // <pre>/<p>/../<rest> -> <pre>/<rest>\n      let dd: number = 0\n      while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n        const p = parts[dd - 1]\n        if (\n          p &&\n          p !== '.' &&\n          p !== '..' &&\n          p !== '**' &&\n          !(this.isWindows && /^[a-z]:$/i.test(p))\n        ) {\n          didSomething = true\n          parts.splice(dd - 1, 2)\n          dd -= 2\n        }\n      }\n    } while (didSomething)\n    return parts.length === 0 ? [''] : parts\n  }\n\n  // First phase: single-pattern processing\n  // <pre> is 1 or more portions\n  // <rest> is 1 or more portions\n  // <p> is any portion other than ., .., '', or **\n  // <e> is . or ''\n  //\n  // **/.. is *brutal* for filesystem walking performance, because\n  // it effectively resets the recursive walk each time it occurs,\n  // and ** cannot be reduced out by a .. pattern part like a regexp\n  // or most strings (other than .., ., and '') can be.\n  //\n  // <pre>/**/../<p>/<p>/<rest> -> {<pre>/../<p>/<p>/<rest>,<pre>/**/<p>/<p>/<rest>}\n  // <pre>/<e>/<rest> -> <pre>/<rest>\n  // <pre>/<p>/../<rest> -> <pre>/<rest>\n  // **/**/<rest> -> **/<rest>\n  //\n  // **/*/<rest> -> */**/<rest> <== not valid because ** doesn't follow\n  // this WOULD be allowed if ** did follow symlinks, or * didn't\n  firstPhasePreProcess(globParts: string[][]) {\n    let didSomething = false\n    do {\n      didSomething = false\n      // <pre>/**/../<p>/<p>/<rest> -> {<pre>/../<p>/<p>/<rest>,<pre>/**/<p>/<p>/<rest>}\n      for (let parts of globParts) {\n        let gs: number = -1\n        while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n          let gss: number = gs\n          while (parts[gss + 1] === '**') {\n            // <pre>/**/**/<rest> -> <pre>/**/<rest>\n            gss++\n          }\n          // eg, if gs is 2 and gss is 4, that means we have 3 **\n          // parts, and can remove 2 of them.\n          if (gss > gs) {\n            parts.splice(gs + 1, gss - gs)\n          }\n\n          let next = parts[gs + 1]\n          const p = parts[gs + 2]\n          const p2 = parts[gs + 3]\n          if (next !== '..') continue\n          if (\n            !p ||\n            p === '.' ||\n            p === '..' ||\n            !p2 ||\n            p2 === '.' ||\n            p2 === '..'\n          ) {\n            continue\n          }\n          didSomething = true\n          // edit parts in place, and push the new one\n          parts.splice(gs, 1)\n          const other = parts.slice(0)\n          other[gs] = '**'\n          globParts.push(other)\n          gs--\n        }\n\n        // <pre>/<e>/<rest> -> <pre>/<rest>\n        if (!this.preserveMultipleSlashes) {\n          for (let i = 1; i < parts.length - 1; i++) {\n            const p = parts[i]\n            // don't squeeze out UNC patterns\n            if (i === 1 && p === '' && parts[0] === '') continue\n            if (p === '.' || p === '') {\n              didSomething = true\n              parts.splice(i, 1)\n              i--\n            }\n          }\n          if (\n            parts[0] === '.' &&\n            parts.length === 2 &&\n            (parts[1] === '.' || parts[1] === '')\n          ) {\n            didSomething = true\n            parts.pop()\n          }\n        }\n\n        // <pre>/<p>/../<rest> -> <pre>/<rest>\n        let dd: number = 0\n        while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n          const p = parts[dd - 1]\n          if (p && p !== '.' && p !== '..' && p !== '**') {\n            didSomething = true\n            const needDot = dd === 1 && parts[dd + 1] === '**'\n            const splin = needDot ? ['.'] : []\n            parts.splice(dd - 1, 2, ...splin)\n            if (parts.length === 0) parts.push('')\n            dd -= 2\n          }\n        }\n      }\n    } while (didSomething)\n\n    return globParts\n  }\n\n  // second phase: multi-pattern dedupes\n  // {<pre>/*/<rest>,<pre>/<p>/<rest>} -> <pre>/*/<rest>\n  // {<pre>/<rest>,<pre>/<rest>} -> <pre>/<rest>\n  // {<pre>/**/<rest>,<pre>/<rest>} -> <pre>/**/<rest>\n  //\n  // {<pre>/**/<rest>,<pre>/**/<p>/<rest>} -> <pre>/**/<rest>\n  // ^-- not valid because ** doens't follow symlinks\n  secondPhasePreProcess(globParts: string[][]): string[][] {\n    for (let i = 0; i < globParts.length - 1; i++) {\n      for (let j = i + 1; j < globParts.length; j++) {\n        const matched = this.partsMatch(\n          globParts[i],\n          globParts[j],\n          !this.preserveMultipleSlashes,\n        )\n        if (matched) {\n          globParts[i] = []\n          globParts[j] = matched\n          break\n        }\n      }\n    }\n    return globParts.filter(gs => gs.length)\n  }\n\n  partsMatch(\n    a: string[],\n    b: string[],\n    emptyGSMatch: boolean = false,\n  ): false | string[] {\n    let ai = 0\n    let bi = 0\n    let result: string[] = []\n    let which: string = ''\n    while (ai < a.length && bi < b.length) {\n      if (a[ai] === b[bi]) {\n        result.push(which === 'b' ? b[bi] : a[ai])\n        ai++\n        bi++\n      } else if (emptyGSMatch && a[ai] === '**' && b[bi] === a[ai + 1]) {\n        result.push(a[ai])\n        ai++\n      } else if (emptyGSMatch && b[bi] === '**' && a[ai] === b[bi + 1]) {\n        result.push(b[bi])\n        bi++\n      } else if (\n        a[ai] === '*' &&\n        b[bi] &&\n        (this.options.dot || !b[bi].startsWith('.')) &&\n        b[bi] !== '**'\n      ) {\n        if (which === 'b') return false\n        which = 'a'\n        result.push(a[ai])\n        ai++\n        bi++\n      } else if (\n        b[bi] === '*' &&\n        a[ai] &&\n        (this.options.dot || !a[ai].startsWith('.')) &&\n        a[ai] !== '**'\n      ) {\n        if (which === 'a') return false\n        which = 'b'\n        result.push(b[bi])\n        ai++\n        bi++\n      } else {\n        return false\n      }\n    }\n    // if we fall out of the loop, it means they two are identical\n    // as long as their lengths match\n    return a.length === b.length && result\n  }\n\n  parseNegate() {\n    if (this.nonegate) return\n\n    const pattern = this.pattern\n    let negate = false\n    let negateOffset = 0\n\n    for (let i = 0; i < pattern.length && pattern.charAt(i) === '!'; i++) {\n      negate = !negate\n      negateOffset++\n    }\n\n    if (negateOffset) this.pattern = pattern.slice(negateOffset)\n    this.negate = negate\n  }\n\n  // set partial to true to test if, for example,\n  // \"/a/b\" matches the start of \"/*/b/*/d\"\n  // Partial means, if you run out of file before you run\n  // out of pattern, then that's fine, as long as all\n  // the parts match.\n  matchOne(\n    file: string[],\n    pattern: ParseReturn[],\n    partial: boolean = false,\n  ) {\n    let fileStartIndex = 0\n    let patternStartIndex = 0\n\n    // UNC paths like //?/X:/... can match X:/... and vice versa\n    // Drive letters in absolute drive or unc paths are always compared\n    // case-insensitively.\n    if (this.isWindows) {\n      const fileDrive =\n        typeof file[0] === 'string' && /^[a-z]:$/i.test(file[0])\n      const fileUNC =\n        !fileDrive &&\n        file[0] === '' &&\n        file[1] === '' &&\n        file[2] === '?' &&\n        /^[a-z]:$/i.test(file[3])\n\n      const patternDrive =\n        typeof pattern[0] === 'string' && /^[a-z]:$/i.test(pattern[0])\n      const patternUNC =\n        !patternDrive &&\n        pattern[0] === '' &&\n        pattern[1] === '' &&\n        pattern[2] === '?' &&\n        typeof pattern[3] === 'string' &&\n        /^[a-z]:$/i.test(pattern[3])\n\n      const fdi =\n        fileUNC ? 3\n        : fileDrive ? 0\n        : undefined\n      const pdi =\n        patternUNC ? 3\n        : patternDrive ? 0\n        : undefined\n      if (typeof fdi === 'number' && typeof pdi === 'number') {\n        const [fd, pd]: [string, string] = [\n          file[fdi],\n          pattern[pdi] as string,\n        ]\n        // start matching at the drive letter index of each\n        if (fd.toLowerCase() === pd.toLowerCase()) {\n          pattern[pdi] = fd\n          patternStartIndex = pdi\n          fileStartIndex = fdi\n        }\n      }\n    }\n\n    // resolve and reduce . and .. portions in the file as well.\n    // don't need to do the second phase, because it's only one string[]\n    const { optimizationLevel = 1 } = this.options\n    if (optimizationLevel >= 2) {\n      file = this.levelTwoFileOptimize(file)\n    }\n\n    if (pattern.includes(GLOBSTAR)) {\n      return this.#matchGlobstar(\n        file,\n        pattern,\n        partial,\n        fileStartIndex,\n        patternStartIndex,\n      )\n    }\n\n    return this.#matchOne(\n      file,\n      pattern,\n      partial,\n      fileStartIndex,\n      patternStartIndex,\n    )\n  }\n\n  #matchGlobstar(\n    file: string[],\n    pattern: ParseReturn[],\n    partial: boolean,\n    fileIndex: number,\n    patternIndex: number,\n  ) {\n    // split the pattern into head, tail, and middle of ** delimited parts\n    const firstgs = pattern.indexOf(GLOBSTAR, patternIndex)\n    const lastgs = pattern.lastIndexOf(GLOBSTAR)\n\n    // split the pattern up into globstar-delimited sections\n    // the tail has to be at the end, and the others just have\n    // to be found in order from the head.\n    const [head, body, tail] =\n      partial ?\n        [\n          pattern.slice(patternIndex, firstgs),\n          pattern.slice(firstgs + 1),\n          [],\n        ]\n      : [\n          pattern.slice(patternIndex, firstgs),\n          pattern.slice(firstgs + 1, lastgs),\n          pattern.slice(lastgs + 1),\n        ]\n\n    // check the head, from the current file/pattern index.\n    if (head.length) {\n      const fileHead = file.slice(fileIndex, fileIndex + head.length)\n      if (!this.#matchOne(fileHead, head, partial, 0, 0)) {\n        return false\n      }\n      fileIndex += head.length\n      patternIndex += head.length\n    }\n    // now we know the head matches!\n\n    // if the last portion is not empty, it MUST match the end\n    // check the tail\n    let fileTailMatch: number = 0\n    if (tail.length) {\n      // if head + tail > file, then we cannot possibly match\n      if (tail.length + fileIndex > file.length) return false\n\n      // try to match the tail\n      let tailStart = file.length - tail.length\n      if (this.#matchOne(file, tail, partial, tailStart, 0)) {\n        fileTailMatch = tail.length\n      } else {\n        // affordance for stuff like a/**/* matching a/b/\n        // if the last file portion is '', and there's more to the pattern\n        // then try without the '' bit.\n        if (\n          file[file.length - 1] !== '' ||\n          fileIndex + tail.length === file.length\n        ) {\n          return false\n        }\n        tailStart--\n        if (!this.#matchOne(file, tail, partial, tailStart, 0)) {\n          return false\n        }\n        fileTailMatch = tail.length + 1\n      }\n    }\n\n    // now we know the tail matches!\n\n    // the middle is zero or more portions wrapped in **, possibly\n    // containing more ** sections.\n    // so a/**/b/**/c/**/d has become **/b/**/c/**\n    // if it's empty, it means a/**/b, just verify we have no bad dots\n    // if there's no tail, so it ends on /**, then we must have *something*\n    // after the head, or it's not a matc\n    if (!body.length) {\n      let sawSome = !!fileTailMatch\n      for (let i = fileIndex; i < file.length - fileTailMatch; i++) {\n        const f = String(file[i])\n        sawSome = true\n        if (\n          f === '.' ||\n          f === '..' ||\n          (!this.options.dot && f.startsWith('.'))\n        ) {\n          return false\n        }\n      }\n      // in partial mode, we just need to get past all file parts\n      return partial || sawSome\n    }\n\n    // now we know that there's one or more body sections, which can\n    // be matched anywhere from the 0 index (because the head was pruned)\n    // through to the length-fileTailMatch index.\n    // split the body up into sections, and note the minimum index it can\n    // be found at (start with the length of all previous segments)\n    // [section, before, after]\n    const bodySegments: [ParseReturn[], number][] = [[[], 0]]\n    let currentBody: [ParseReturn[], number] = bodySegments[0]\n    let nonGsParts = 0\n    const nonGsPartsSums: number[] = [0]\n    for (const b of body) {\n      if (b === GLOBSTAR) {\n        nonGsPartsSums.push(nonGsParts)\n        currentBody = [[], 0]\n        bodySegments.push(currentBody)\n      } else {\n        currentBody[0].push(b)\n        nonGsParts++\n      }\n    }\n    let i = bodySegments.length - 1\n    const fileLength = file.length - fileTailMatch\n    for (const b of bodySegments) {\n      b[1] = fileLength - ((nonGsPartsSums[i--] as number) + b[0].length)\n    }\n\n    return !!this.#matchGlobStarBodySections(\n      file,\n      bodySegments,\n      fileIndex,\n      0,\n      partial,\n      0,\n      !!fileTailMatch,\n    )\n  }\n\n  // return false for \"nope, not matching\"\n  // return null for \"not matching, cannot keep trying\"\n  #matchGlobStarBodySections(\n    file: string[],\n    // pattern section, last possible position for it\n    bodySegments: [ParseReturn[], number][],\n    fileIndex: number,\n    bodyIndex: number,\n    partial: boolean,\n    globStarDepth: number,\n    sawTail: boolean,\n  ): boolean | null {\n    // take the first body segment, and walk from fileIndex to its \"after\"\n    // value at the end\n    // If it doesn't match at that position, we increment, until we hit\n    // that final possible position, and give up.\n    // If it does match, then advance and try to rest.\n    // If any of them fail we keep walking forward.\n    // this is still a bit recursively painful, but it's more constrained\n    // than previous implementations, because we never test something that\n    // can't possibly be a valid matching condition.\n    const bs = bodySegments[bodyIndex]\n    if (!bs) {\n      // just make sure that there's no bad dots\n      for (let i = fileIndex; i < file.length; i++) {\n        sawTail = true\n        const f = file[i]\n        if (\n          f === '.' ||\n          f === '..' ||\n          (!this.options.dot && f.startsWith('.'))\n        ) {\n          return false\n        }\n      }\n      return sawTail\n    }\n\n    // have a non-globstar body section to test\n    const [body, after] = bs\n    while (fileIndex <= after) {\n      const m = this.#matchOne(\n        file.slice(0, fileIndex + body.length),\n        body,\n        partial,\n        fileIndex,\n        0,\n      )\n      // if limit exceeded, no match. intentional false negative,\n      // acceptable break in correctness for security.\n      if (m && globStarDepth < this.maxGlobstarRecursion) {\n        // match! see if the rest match. if so, we're done!\n        const sub = this.#matchGlobStarBodySections(\n          file,\n          bodySegments,\n          fileIndex + body.length,\n          bodyIndex + 1,\n          partial,\n          globStarDepth + 1,\n          sawTail,\n        )\n        if (sub !== false) {\n          return sub\n        }\n      }\n      const f = file[fileIndex]\n      if (\n        f === '.' ||\n        f === '..' ||\n        (!this.options.dot && f.startsWith('.'))\n      ) {\n        return false\n      }\n\n      fileIndex++\n    }\n    // walked off. no point continuing\n    return partial || null\n  }\n\n  #matchOne(\n    file: string[],\n    pattern: ParseReturn[],\n    partial: boolean,\n    fileIndex: number,\n    patternIndex: number,\n  ) {\n    let fi: number\n    let pi: number\n    let pl: number\n    let fl: number\n    for (\n      fi = fileIndex,\n        pi = patternIndex,\n        fl = file.length,\n        pl = pattern.length;\n      fi < fl && pi < pl;\n      fi++, pi++\n    ) {\n      this.debug('matchOne loop')\n      let p = pattern[pi]\n      let f = file[fi]\n\n      this.debug(pattern, p, f)\n\n      // should be impossible.\n      // some invalid regexp stuff in the set.\n      /* c8 ignore start */\n      if (p === false || p === GLOBSTAR) {\n        return false\n      }\n      /* c8 ignore stop */\n\n      // something other than **\n      // non-magic patterns just have to match exactly\n      // patterns with magic have been turned into regexps.\n      let hit: boolean\n      if (typeof p === 'string') {\n        hit = f === p\n        this.debug('string match', p, f, hit)\n      } else {\n        hit = p.test(f)\n        this.debug('pattern match', p, f, hit)\n      }\n\n      if (!hit) return false\n    }\n\n    // Note: ending in / means that we'll get a final \"\"\n    // at the end of the pattern.  This can only match a\n    // corresponding \"\" at the end of the file.\n    // If the file ends in /, then it can only match a\n    // a pattern that ends in /, unless the pattern just\n    // doesn't have any more for it. But, a/b/ should *not*\n    // match \"a/b/*\", even though \"\" matches against the\n    // [^/]*? pattern, except in partial mode, where it might\n    // simply not be reached yet.\n    // However, a/b/ should still satisfy a/*\n\n    // now either we fell off the end of the pattern, or we're done.\n    if (fi === fl && pi === pl) {\n      // ran out of pattern and filename at the same time.\n      // an exact hit!\n      return true\n    } else if (fi === fl) {\n      // ran out of file, but still had pattern left.\n      // this is ok if we're doing the match as part of\n      // a glob fs traversal.\n      return partial\n    } else if (pi === pl) {\n      // ran out of pattern, still have file left.\n      // this is only acceptable if we're on the very last\n      // empty segment of a file with a trailing slash.\n      // a/* should match a/b/\n      return fi === fl - 1 && file[fi] === ''\n\n      /* c8 ignore start */\n    } else {\n      // should be unreachable.\n      throw new Error('wtf?')\n    }\n    /* c8 ignore stop */\n  }\n\n  braceExpand() {\n    return braceExpand(this.pattern, this.options)\n  }\n\n  parse(pattern: string): ParseReturn {\n    assertValidPattern(pattern)\n\n    const options = this.options\n\n    // shortcuts\n    if (pattern === '**') return GLOBSTAR\n    if (pattern === '') return ''\n\n    // far and away, the most common glob pattern parts are\n    // *, *.*, and *.<ext>  Add a fast check method for those.\n    let m: RegExpMatchArray | null\n    let fastTest: null | ((f: string) => boolean) = null\n    if ((m = pattern.match(starRE))) {\n      fastTest = options.dot ? starTestDot : starTest\n    } else if ((m = pattern.match(starDotExtRE))) {\n      fastTest = (\n        options.nocase ?\n          options.dot ?\n            starDotExtTestNocaseDot\n          : starDotExtTestNocase\n        : options.dot ? starDotExtTestDot\n        : starDotExtTest)(m[1])\n    } else if ((m = pattern.match(qmarksRE))) {\n      fastTest = (\n        options.nocase ?\n          options.dot ?\n            qmarksTestNocaseDot\n          : qmarksTestNocase\n        : options.dot ? qmarksTestDot\n        : qmarksTest)(m)\n    } else if ((m = pattern.match(starDotStarRE))) {\n      fastTest = options.dot ? starDotStarTestDot : starDotStarTest\n    } else if ((m = pattern.match(dotStarRE))) {\n      fastTest = dotStarTest\n    }\n\n    const re = AST.fromGlob(pattern, this.options).toMMPattern()\n    if (fastTest && typeof re === 'object') {\n      // Avoids overriding in frozen environments\n      Reflect.defineProperty(re, 'test', { value: fastTest })\n    }\n    return re\n  }\n\n  makeRe() {\n    if (this.regexp || this.regexp === false) return this.regexp\n\n    // at this point, this.set is a 2d array of partial\n    // pattern strings, or \"**\".\n    //\n    // It's better to use .match().  This function shouldn't\n    // be used, really, but it's pretty convenient sometimes,\n    // when you just want to work with a regex.\n    const set = this.set\n\n    if (!set.length) {\n      this.regexp = false\n      return this.regexp\n    }\n    const options = this.options\n\n    const twoStar =\n      options.noglobstar ? star\n      : options.dot ? twoStarDot\n      : twoStarNoDot\n    const flags = new Set(options.nocase ? ['i'] : [])\n\n    // regexpify non-globstar patterns\n    // if ** is only item, then we just do one twoStar\n    // if ** is first, and there are more, prepend (\\/|twoStar\\/)? to next\n    // if ** is last, append (\\/twoStar|) to previous\n    // if ** is in the middle, append (\\/|\\/twoStar\\/) to previous\n    // then filter out GLOBSTAR symbols\n    let re = set\n      .map(pattern => {\n        const pp: (string | typeof GLOBSTAR)[] = pattern.map(p => {\n          if (p instanceof RegExp) {\n            for (const f of p.flags.split('')) flags.add(f)\n          }\n          return (\n            typeof p === 'string' ? regExpEscape(p)\n            : p === GLOBSTAR ? GLOBSTAR\n            : p._src\n          )\n        }) as (string | typeof GLOBSTAR)[]\n        pp.forEach((p, i) => {\n          const next = pp[i + 1]\n          const prev = pp[i - 1]\n          if (p !== GLOBSTAR || prev === GLOBSTAR) {\n            return\n          }\n          if (prev === undefined) {\n            if (next !== undefined && next !== GLOBSTAR) {\n              pp[i + 1] = '(?:\\\\/|' + twoStar + '\\\\/)?' + next\n            } else {\n              pp[i] = twoStar\n            }\n          } else if (next === undefined) {\n            pp[i - 1] = prev + '(?:\\\\/|\\\\/' + twoStar + ')?'\n          } else if (next !== GLOBSTAR) {\n            pp[i - 1] = prev + '(?:\\\\/|\\\\/' + twoStar + '\\\\/)' + next\n            pp[i + 1] = GLOBSTAR\n          }\n        })\n        const filtered = pp.filter(p => p !== GLOBSTAR)\n\n        // For partial matches, we need to make the pattern match\n        // any prefix of the full path. We do this by generating\n        // alternative patterns that match progressively longer prefixes.\n        if (this.partial && filtered.length >= 1) {\n          const prefixes: string[] = []\n          for (let i = 1; i <= filtered.length; i++) {\n            prefixes.push(filtered.slice(0, i).join('/'))\n          }\n          return '(?:' + prefixes.join('|') + ')'\n        }\n\n        return filtered.join('/')\n      })\n      .join('|')\n\n    // need to wrap in parens if we had more than one thing with |,\n    // otherwise only the first will be anchored to ^ and the last to $\n    const [open, close] = set.length > 1 ? ['(?:', ')'] : ['', '']\n    // must match entire pattern\n    // ending in a * or ** will make it less strict.\n    re = '^' + open + re + close + '$'\n\n    // In partial mode, '/' should always match as it's a valid prefix for any pattern\n    if (this.partial) {\n      re = '^(?:\\\\/|' + open + re.slice(1, -1) + close + ')$'\n    }\n\n    // can match anything, as long as it's not this.\n    if (this.negate) re = '^(?!' + re + ').+$'\n\n    try {\n      this.regexp = new RegExp(re, [...flags].join(''))\n      /* c8 ignore start */\n    } catch {\n      // should be impossible\n      this.regexp = false\n    }\n    /* c8 ignore stop */\n    return this.regexp\n  }\n\n  slashSplit(p: string) {\n    // if p starts with // on windows, we preserve that\n    // so that UNC paths aren't broken.  Otherwise, any number of\n    // / characters are coalesced into one, unless\n    // preserveMultipleSlashes is set to true.\n    if (this.preserveMultipleSlashes) {\n      return p.split('/')\n    } else if (this.isWindows && /^\\/\\/[^/]+/.test(p)) {\n      // add an extra '' for the one we lose\n      return ['', ...p.split(/\\/+/)]\n    } else {\n      return p.split(/\\/+/)\n    }\n  }\n\n  match(f: string, partial = this.partial) {\n    this.debug('match', f, this.pattern)\n    // short-circuit in the case of busted things.\n    // comments, etc.\n    if (this.comment) {\n      return false\n    }\n    if (this.empty) {\n      return f === ''\n    }\n\n    if (f === '/' && partial) {\n      return true\n    }\n\n    const options = this.options\n\n    // windows: need to use /, not \\\n    if (this.isWindows) {\n      f = f.split('\\\\').join('/')\n    }\n\n    // treat the test path as a set of pathparts.\n    const ff = this.slashSplit(f)\n    this.debug(this.pattern, 'split', ff)\n\n    // just ONE of the pattern sets in this.set needs to match\n    // in order for it to be valid.  If negating, then just one\n    // match means that we have failed.\n    // Either way, return on the first hit.\n\n    const set = this.set\n    this.debug(this.pattern, 'set', set)\n\n    // Find the basename of the path by looking for the last non-empty segment\n    let filename: string = ff[ff.length - 1]\n    if (!filename) {\n      for (let i = ff.length - 2; !filename && i >= 0; i--) {\n        filename = ff[i]\n      }\n    }\n\n    for (const pattern of set) {\n      let file = ff\n      if (options.matchBase && pattern.length === 1) {\n        file = [filename]\n      }\n      const hit = this.matchOne(file, pattern, partial)\n      if (hit) {\n        if (options.flipNegate) {\n          return true\n        }\n        return !this.negate\n      }\n    }\n\n    // didn't get any hits.  this is success if it's a negative\n    // pattern, failure otherwise.\n    if (options.flipNegate) {\n      return false\n    }\n    return this.negate\n  }\n\n  static defaults(def: MinimatchOptions) {\n    return minimatch.defaults(def).Minimatch\n  }\n}\n/* c8 ignore start */\nexport { AST } from './ast.js'\nexport { escape } from './escape.js'\nexport { unescape } from './unescape.js'\n/* c8 ignore stop */\nminimatch.AST = AST\nminimatch.Minimatch = Minimatch\nminimatch.escape = escape\nminimatch.unescape = unescape\n", "export const fullPath = ({\n  file,\n  sourceAbsolutePath\n}: {\n  file: string;\n  sourceAbsolutePath: string;\n}): string => file.replace(sourceAbsolutePath, '').replace(/\\\\/g, '/');\n", "import type {Precompress, SatelliteConfig} from '@junobuild/config';\nimport {minimatch} from 'minimatch';\nimport {createReadStream, createWriteStream} from 'node:fs';\nimport {Readable} from 'node:stream';\nimport {createBrotliCompress, createGunzip, createGzip} from 'node:zlib';\nimport {DEPLOY_DEFAULT_PRECOMPRESS} from '../constants/deploy.constants';\n\nexport const gunzipFile = async ({source}: {source: Buffer}): Promise<Buffer> =>\n  await new Promise<Buffer>((resolve, reject) => {\n    const sourceStream = Readable.from(source);\n\n    const chunks: Uint8Array[] = [];\n\n    const gzip = createGunzip();\n\n    sourceStream.pipe(gzip);\n\n    gzip.on('data', (chunk: Uint8Array) => chunks.push(chunk));\n    gzip.on('end', () => {\n      resolve(Buffer.concat(chunks));\n    });\n    gzip.on('error', reject);\n  });\n\ninterface CompressedFile {\n  source: string;\n  compressed: string;\n  mode: 'both' | 'replace';\n}\n\nexport const compressFiles = async ({\n  sourceFiles,\n  precompress\n}: {sourceFiles: string[]} & Required<Pick<SatelliteConfig, 'precompress'>>): Promise<\n  CompressedFile[]\n> => {\n  if (precompress === false) {\n    return [];\n  }\n\n  const precompressions = Array.isArray(precompress) ? precompress : [precompress];\n\n  const compressedFiles = await Promise.all(\n    precompressions.map(\n      async (precompress) =>\n        await compressFilesForOptions({\n          sourceFiles,\n          precompress\n        })\n    )\n  );\n\n  return compressedFiles.reduce((acc, files) => [...acc, ...files], []);\n};\n\nconst compressFilesForOptions = async ({\n  sourceFiles,\n  precompress\n}: {sourceFiles: string[]} & {precompress: Precompress}): Promise<CompressedFile[]> => {\n  const pattern =\n    // @ts-expect-error we read json so, it's possible that one provide a boolean that does not match the TS type\n    precompress === true\n      ? DEPLOY_DEFAULT_PRECOMPRESS.pattern\n      : (precompress.pattern ?? DEPLOY_DEFAULT_PRECOMPRESS.pattern);\n\n  const algorithm =\n    // @ts-expect-error we read json so, it's possible that one provide a boolean that does not match the TS type\n    precompress === true\n      ? DEPLOY_DEFAULT_PRECOMPRESS.algorithm\n      : (precompress.algorithm ?? DEPLOY_DEFAULT_PRECOMPRESS.algorithm);\n\n  const filesToCompress = sourceFiles.filter((file) => minimatch(file, pattern));\n  return await Promise.all(\n    filesToCompress.map(async (source) => ({\n      source,\n      compressed: await compressFile({source, algorithm}),\n      mode: precompress?.mode ?? DEPLOY_DEFAULT_PRECOMPRESS.mode\n    }))\n  );\n};\n\nexport const gzipFile = async (params: {source: string; destination?: string}): Promise<string> =>\n  await compressFile({\n    ...params,\n    algorithm: 'gzip'\n  });\n\nexport const brotliFile = async (params: {source: string; destination?: string}): Promise<string> =>\n  await compressFile({\n    ...params,\n    algorithm: 'brotli'\n  });\n\nconst compressFile = async ({\n  source,\n  algorithm,\n  destination\n}: {\n  source: string;\n  destination?: string;\n} & Pick<Required<Precompress>, 'algorithm'>): Promise<string> =>\n  await new Promise<string>((resolve, reject) => {\n    const sourceStream = createReadStream(source);\n\n    const destinationPath = destination ?? `${source}.${algorithm === 'brotli' ? 'br' : 'gz'}`;\n    const destinationStream = createWriteStream(destinationPath);\n\n    const compressor = algorithm === 'brotli' ? createBrotliCompress() : createGzip();\n\n    sourceStream.pipe(compressor).pipe(destinationStream);\n\n    destinationStream.on('close', () => {\n      resolve(destinationPath);\n    });\n    destinationStream.on('error', reject);\n  });\n\nexport const isGzip = (buffer: Buffer): boolean =>\n  buffer.length > 2 && buffer[0] === 0x1f && buffer[1] === 0x8b;\n", "import type {SatelliteConfig} from '@junobuild/config';\nimport {minimatch} from 'minimatch';\nimport {basename} from 'node:path';\nimport {IGNORE_OS_FILES} from '../constants/deploy.constants';\nimport {files} from './fs.utils';\n\nexport const listSourceFilesForDeploy = ({\n  sourceAbsolutePath,\n  ignore\n}: {sourceAbsolutePath: string} & Required<Pick<SatelliteConfig, 'ignore'>>): string[] => {\n  const sourceFiles = files(sourceAbsolutePath);\n\n  return sourceFiles.filter((file) => filterFile({file, ignore}));\n};\n\nconst filterFile = ({\n  file,\n  ignore\n}: {file: string} & Required<Pick<SatelliteConfig, 'ignore'>>): boolean => {\n  // Ignore .DS_Store on Mac or Thumbs.db on Windows\n  if (IGNORE_OS_FILES.includes(basename(file).toLowerCase())) {\n    return false;\n  }\n\n  return ignore.find((pattern) => minimatch(file, pattern)) === undefined;\n};\n", "import {lstatSync, readdirSync} from 'node:fs';\nimport {access} from 'node:fs/promises';\nimport {join} from 'node:path';\n\nexport const files = (source: string): string[] =>\n  readdirSync(source).flatMap((file) => {\n    const path = join(source, file);\n    return lstatSync(path).isDirectory() ? files(path) : join(path);\n  });\n\nexport const fileExists = async (path: string): Promise<boolean> => {\n  try {\n    await access(path);\n    return true;\n  } catch (err: unknown) {\n    if (err instanceof Error && 'code' in err && (err as NodeJS.ErrnoException).code === 'ENOENT') {\n      return false;\n    }\n    throw err;\n  }\n};\n\nexport const fileSizeInBytes = (path: string): number => {\n  const {size} = lstatSync(path);\n  return size;\n};\n", "import {commitProposal, initProposal, submitProposal} from '@junobuild/cdn';\nimport {fromNullable, isNullish, uint8ArrayToHexString} from '@junobuild/utils';\nimport ora from 'ora';\nimport type {ProposeChangesParams} from '../types/proposal';\n\n/**\n * Handles a change lifecycle using a proposal workflow, and optionally commits it.\n *\n * This function:\n * 1. Initializes a new change (proposal) in the CDN.\n * 2. Executes the provided `executeChanges` function to upload assets or WASM.\n * 3. If changes were uploaded, submits the proposal.\n * 4. Logs metadata (ID, status, hash).\n * 5. Optionally commits the change if `autoCommit` is `true`.\n *\n * If no changes are detected during deploy, the function exits early.\n *\n * @param {Object} options - The deployment options.\n * @param {ProposalType} options.proposalType - The type of change being proposed (e.g., deploy, upgrade).\n * @param {CdnParameters} options.cdn - Parameters for interacting with the CDN and associated governance.\n * @param {Function} options.executeChanges - A function that performs the actual upload and returns a `DeployResult`.\n *   Receives the generated proposal ID as input.\n * @param {boolean} options.autoCommit - If `true`, the function will also commit the change after submission.\n *\n * @returns {Promise<{proposalId: bigint}>} Resolves once the deployment and optional commit are complete.\n * Returns the proposal ID that was created.\n *\n * @throws {Error} If the SHA256 hash returned from `submitProposal` is `null` or `undefined`.\n */\nexport const proposeChanges = async ({\n  proposalType,\n  cdn,\n  executeChanges,\n  autoCommit\n}: ProposeChangesParams): Promise<{proposalId: bigint}> => {\n  const init = async (): Promise<{proposalId: bigint}> => {\n    const spinner = ora('Opening proposal...').start();\n\n    try {\n      const [proposalId, _] = await initProposal({proposalType, cdn});\n      return {proposalId};\n    } finally {\n      spinner.stop();\n    }\n  };\n\n  const {proposalId} = await init();\n\n  await executeChanges(proposalId);\n\n  const submit = async (): Promise<{sha256: Uint8Array}> => {\n    console.log('');\n    const spinner = ora('Submitting proposal...').start();\n\n    try {\n      const [__, {sha256: proposalSha256, status}] = await submitProposal({\n        cdn,\n        proposalId\n      });\n\n      const sha256 = fromNullable(proposalSha256);\n\n      spinner.stop();\n\n      console.log('Change submitted.\\n');\n      console.log('\uD83C\uDD94 ', Number(proposalId));\n      console.log('\u23F3 ', Object.keys(status)[0] ?? status);\n\n      if (isNullish(sha256)) {\n        spinner.stop();\n\n        console.log('\u274C Hash undefined. This is unexpected.');\n        process.exit(1);\n      }\n\n      console.log('\uD83D\uDD12 ', uint8ArrayToHexString(sha256));\n\n      return {sha256};\n    } catch (err: unknown) {\n      spinner.stop();\n      throw err;\n    }\n  };\n\n  const {sha256} = await submit();\n\n  if (!autoCommit) {\n    return {proposalId};\n  }\n\n  const commit = async () => {\n    console.log('');\n    const spinner = ora('Committing proposal...').start();\n\n    try {\n      await commitProposal({\n        proposal: {\n          proposal_id: proposalId,\n          sha256\n        },\n        cdn\n      });\n\n      spinner.stop();\n\n      console.log(`\uD83C\uDFAF Change #${proposalId} applied.`);\n    } catch (err: unknown) {\n      spinner.stop();\n      throw err;\n    }\n  };\n\n  await commit();\n\n  return {proposalId};\n};\n", "export const formatBytes = (bytes: number): string => {\n  const unit = bytes >= 1000 ? 'megabyte' : 'kilobyte';\n\n  const formatter = new Intl.NumberFormat('en', {\n    style: 'unit',\n    unit\n  });\n\n  return formatter.format(bytes / (unit === 'megabyte' ? 1_000_000 : 1_000));\n};\n", "import EventEmitter from './index.js'\n\nexport { EventEmitter }\nexport default EventEmitter\n", "import EventEmitter from \"eventemitter3\";\nimport { inspect, styleText } from \"node:util\";\nimport { format } from \"util\";\nimport { EOL } from \"os\";\nimport { StringDecoder } from \"string_decoder\";\nimport { Writable } from \"stream\";\nimport rfdc from \"rfdc\";\nimport { randomUUID } from \"crypto\";\n\n//#region src/constants/ansi-escape-codes.constants.ts\n/**\n* Indicates an UNICODE characters is coming up.\n*/\nconst ANSI_ESCAPE = \"\\x1B[\";\n/**\n* Generic ANSI escape characters for terminal based operations.\n*/\nconst ANSI_ESCAPE_CODES = {\n\tCURSOR_HIDE: ANSI_ESCAPE + \"?25l\",\n\tCURSOR_SHOW: ANSI_ESCAPE + \"?25h\"\n};\n\n//#endregion\n//#region src/constants/environment-variables.constants.ts\n/**\n* Environment variables for Listr.\n*/\nlet ListrEnvironmentVariables = /* @__PURE__ */ function(ListrEnvironmentVariables) {\n\tListrEnvironmentVariables[\"FORCE_UNICODE\"] = \"LISTR_FORCE_UNICODE\";\n\tListrEnvironmentVariables[\"FORCE_TTY\"] = \"LISTR_FORCE_TTY\";\n\tListrEnvironmentVariables[\"DISABLE_COLOR\"] = \"NO_COLOR\";\n\tListrEnvironmentVariables[\"FORCE_COLOR\"] = \"FORCE_COLOR\";\n\treturn ListrEnvironmentVariables;\n}({});\n\n//#endregion\n//#region src/constants/listr-error.constants.ts\n/**\n* The actual error type that is collected and to help identify where the error is triggered from.\n*/\nlet ListrErrorTypes = /* @__PURE__ */ function(ListrErrorTypes) {\n\t/** Task has failed and will try to retry. */\n\tListrErrorTypes[\"WILL_RETRY\"] = \"WILL_RETRY\";\n\t/** Task has failed and will try to rollback. */\n\tListrErrorTypes[\"WILL_ROLLBACK\"] = \"WILL_ROLLBACK\";\n\t/** Task has failed, ran the rollback action but the rollback action itself has failed. */\n\tListrErrorTypes[\"HAS_FAILED_TO_ROLLBACK\"] = \"HAS_FAILED_TO_ROLLBACK\";\n\t/** Task has failed. */\n\tListrErrorTypes[\"HAS_FAILED\"] = \"HAS_FAILED\";\n\t/** Task has failed, but exitOnError is set to false, so will ignore this error. */\n\tListrErrorTypes[\"HAS_FAILED_WITHOUT_ERROR\"] = \"HAS_FAILED_WITHOUT_ERROR\";\n\treturn ListrErrorTypes;\n}({});\n\n//#endregion\n//#region src/constants/listr-events.constants.ts\n/**\n* Events that are triggered by Listr.\n*\n* These are stateful and singleton events by being attached to the main Listr class and propagating to the subtasks.\n*\n* @see {@link https://listr2.kilic.dev/listr/events.html}\n*/\nlet ListrEventType = /* @__PURE__ */ function(ListrEventType) {\n\t/** Indicates that underlying renderer should refresh the current render. */\n\tListrEventType[\"SHOULD_REFRESH_RENDER\"] = \"SHOUD_REFRESH_RENDER\";\n\treturn ListrEventType;\n}({});\n\n//#endregion\n//#region src/constants/listr-renderer.constants.ts\nlet ListrRendererSelection = /* @__PURE__ */ function(ListrRendererSelection) {\n\tListrRendererSelection[\"PRIMARY\"] = \"PRIMARY\";\n\tListrRendererSelection[\"SECONDARY\"] = \"SECONDARY\";\n\tListrRendererSelection[\"SILENT\"] = \"SILENT\";\n\treturn ListrRendererSelection;\n}({});\n\n//#endregion\n//#region src/constants/listr-task-events.constants.ts\n/**\n* Internal events that are fired from the Task.\n*\n* @see {@link https://listr2.kilic.dev/task/events.html}\n*/\nlet ListrTaskEventType = /* @__PURE__ */ function(ListrTaskEventType) {\n\t/** Title has changed for the current Task. */\n\tListrTaskEventType[\"TITLE\"] = \"TITLE\";\n\t/**\n\t* State has changed for the current Task.\n\t*\n\t* @see {@link module:listr2.ListrTaskState}\n\t*/\n\tListrTaskEventType[\"STATE\"] = \"STATE\";\n\t/** The current Task has been marked as enabled. */\n\tListrTaskEventType[\"ENABLED\"] = \"ENABLED\";\n\t/** The current Task is currently processing subtasks. */\n\tListrTaskEventType[\"SUBTASK\"] = \"SUBTASK\";\n\t/** The current Task is now processing a prompt. */\n\tListrTaskEventType[\"PROMPT\"] = \"PROMPT\";\n\t/** The current Task is now dumping output. */\n\tListrTaskEventType[\"OUTPUT\"] = \"OUTPUT\";\n\t/**\n\t* The current Task is now dumping a message.\n\t*\n\t* @see {module:Listr2.ListrTaskMessage}\n\t*/\n\tListrTaskEventType[\"MESSAGE\"] = \"MESSAGE\";\n\t/** The current Task is closed and no further action in expected. */\n\tListrTaskEventType[\"CLOSED\"] = \"CLOSED\";\n\treturn ListrTaskEventType;\n}({});\n\n//#endregion\n//#region src/constants/listr-task-state.constants.ts\n/**\n* Tasks can be in various states during the execution.\n*\n* Whenever a state change occurs, the task will emit a {@link module:listr2.ListrTaskEventType.STATE} with the appropriate state.\n*/\nlet ListrTaskState = /* @__PURE__ */ function(ListrTaskState) {\n\t/** Task has not started yet, waiting for pick-up. */\n\tListrTaskState[\"WAITING\"] = \"WAITING\";\n\t/** Task has started. */\n\tListrTaskState[\"STARTED\"] = \"STARTED\";\n\t/** Task has been completed. */\n\tListrTaskState[\"COMPLETED\"] = \"COMPLETED\";\n\t/** Task has failed. */\n\tListrTaskState[\"FAILED\"] = \"FAILED\";\n\t/** Task has been skipped. */\n\tListrTaskState[\"SKIPPED\"] = \"SKIPPED\";\n\t/** Task is currently trying to rollback. */\n\tListrTaskState[\"ROLLING_BACK\"] = \"ROLLING_BACK\";\n\t/** Task has rolledback successfully after failing. */\n\tListrTaskState[\"ROLLED_BACK\"] = \"ROLLED_BACK\";\n\t/** Task is currently retrying. */\n\tListrTaskState[\"RETRY\"] = \"RETRY\";\n\t/** Task is currently paused. */\n\tListrTaskState[\"PAUSED\"] = \"PAUSED\";\n\t/** Task is currently trying to process a prompt. */\n\tListrTaskState[\"PROMPT\"] = \"PROMPT\";\n\t/** Task has successfully processed the prompt. */\n\tListrTaskState[\"PROMPT_COMPLETED\"] = \"PROMPT_COMPLETED\";\n\t/** Task has failed to process the prompt. */\n\tListrTaskState[\"PROMPT_FAILED\"] = \"PROMPT_FAILED\";\n\treturn ListrTaskState;\n}({});\n\n//#endregion\n//#region src/lib/event-manager.ts\nvar EventManager = class {\n\temitter = new EventEmitter();\n\temit(dispatch, args) {\n\t\tthis.emitter.emit(dispatch, args);\n\t}\n\ton(dispatch, handler) {\n\t\tthis.emitter.addListener(dispatch, handler);\n\t}\n\tonce(dispatch, handler) {\n\t\tthis.emitter.once(dispatch, handler);\n\t}\n\toff(dispatch, handler) {\n\t\tthis.emitter.off(dispatch, handler);\n\t}\n\tcomplete() {\n\t\tthis.emitter.removeAllListeners();\n\t}\n};\n\n//#endregion\n//#region src/interfaces/event.interface.ts\n/**\n* Give event map a set of indexes to not make it go crazy when some events are missing from it.\n* They are optional after all.\n*/\nvar BaseEventMap = class {};\n\n//#endregion\n//#region src/utils/environment/is-observable.ts\n/**\n* Tests to see if the object is an RxJS {@link Observable}\n* @param obj the object to test\n*/\nfunction isObservable(obj) {\n\treturn !!obj && typeof obj === \"object\" && typeof obj.subscribe === \"function\";\n}\n\n//#endregion\n//#region src/utils/environment/is-readable.ts\n/**\n* Tests to see if the object is an Readable or NodeJS.ReadableStream {@link Readable, NodeJS.ReadableStream}\n* @param obj the object to test\n*/\nfunction isReadable(obj) {\n\treturn !!obj && typeof obj === \"object\" && obj.readable === true && typeof obj.read === \"function\" && typeof obj.on === \"function\";\n}\n\n//#endregion\n//#region src/utils/environment/is-unicode-supported.ts\nfunction isUnicodeSupported() {\n\t/* istanbul ignore next */\n\treturn !!process.env[ListrEnvironmentVariables.FORCE_UNICODE] || process.platform !== \"win32\" || !!process.env.CI || !!process.env.WT_SESSION || process.env.TERM_PROGRAM === \"vscode\" || process.env.TERM === \"xterm-256color\" || process.env.TERM === \"alacritty\";\n}\n\n//#endregion\n//#region src/utils/format/cleanse-ansi.constants.ts\nconst CLEAR_LINE_REGEX = \"(?:\\\\u001b|\\\\u009b)\\\\[[\\\\=><~/#&.:=?%@~_-]*[0-9]*[\\\\a-ln-tqyz=><~/#&.:=?%@~_-]+\";\nconst BELL_REGEX = /\\u0007/;\n\n//#endregion\n//#region src/utils/format/cleanse-ansi.ts\nfunction cleanseAnsi(chunk) {\n\treturn String(chunk).replace(new RegExp(CLEAR_LINE_REGEX, \"gmi\"), \"\").replace(new RegExp(BELL_REGEX, \"gmi\"), \"\").trim();\n}\n\n//#endregion\n//#region src/utils/format/color.ts\n/**\n* Color palette.\n*/\nconst color = Object.fromEntries(Object.keys(inspect.colors).map((color) => [color, (text) => styleText(color, String(text))]));\n\n//#endregion\n//#region src/utils/format/indent.ts\nfunction indent(string, count) {\n\treturn string.replace(/^(?!\\s*$)/gm, \" \".repeat(count));\n}\n\n//#endregion\n//#region src/utils/format/figures.ts\nconst FIGURES_MAIN = {\n\twarning: \"\u26A0\",\n\tcross: \"\u2716\",\n\tarrowDown: \"\u2193\",\n\ttick: \"\u2714\",\n\tarrowRight: \"\u2192\",\n\tpointer: \"\u276F\",\n\tcheckboxOn: \"\u2612\",\n\tarrowLeft: \"\u2190\",\n\tsquareSmallFilled: \"\u25FC\",\n\tpointerSmall: \"\u203A\"\n};\nconst FIGURES_FALLBACK = {\n\t...FIGURES_MAIN,\n\twarning: \"\u203C\",\n\tcross: \"\u00D7\",\n\ttick: \"\u221A\",\n\tpointer: \">\",\n\tcheckboxOn: \"[\u00D7]\",\n\tsquareSmallFilled: \"\u25A0\"\n};\nconst figures = isUnicodeSupported() ? FIGURES_MAIN : FIGURES_FALLBACK;\n\n//#endregion\n//#region src/utils/format/splat.ts\nfunction splat(message, ...splat) {\n\treturn format(String(message), ...splat);\n}\n\n//#endregion\n//#region src/utils/logger/logger.constants.ts\n/** Default ListrLogLevels for the logger */\nlet ListrLogLevels = /* @__PURE__ */ function(ListrLogLevels) {\n\tListrLogLevels[\"STARTED\"] = \"STARTED\";\n\tListrLogLevels[\"COMPLETED\"] = \"COMPLETED\";\n\tListrLogLevels[\"FAILED\"] = \"FAILED\";\n\tListrLogLevels[\"SKIPPED\"] = \"SKIPPED\";\n\tListrLogLevels[\"OUTPUT\"] = \"OUTPUT\";\n\tListrLogLevels[\"TITLE\"] = \"TITLE\";\n\tListrLogLevels[\"ROLLBACK\"] = \"ROLLBACK\";\n\tListrLogLevels[\"RETRY\"] = \"RETRY\";\n\tListrLogLevels[\"PROMPT\"] = \"PROMPT\";\n\tListrLogLevels[\"PAUSED\"] = \"PAUSED\";\n\treturn ListrLogLevels;\n}({});\nconst LISTR_LOGGER_STYLE = {\n\ticon: {\n\t\t[ListrLogLevels.STARTED]: figures.pointer,\n\t\t[ListrLogLevels.FAILED]: figures.cross,\n\t\t[ListrLogLevels.SKIPPED]: figures.arrowDown,\n\t\t[ListrLogLevels.COMPLETED]: figures.tick,\n\t\t[ListrLogLevels.OUTPUT]: figures.pointerSmall,\n\t\t[ListrLogLevels.TITLE]: figures.arrowRight,\n\t\t[ListrLogLevels.RETRY]: figures.warning,\n\t\t[ListrLogLevels.ROLLBACK]: figures.arrowLeft,\n\t\t[ListrLogLevels.PAUSED]: figures.squareSmallFilled\n\t},\n\tcolor: {\n\t\t[ListrLogLevels.STARTED]: color.yellow,\n\t\t[ListrLogLevels.FAILED]: color.red,\n\t\t[ListrLogLevels.SKIPPED]: color.yellow,\n\t\t[ListrLogLevels.COMPLETED]: color.green,\n\t\t[ListrLogLevels.RETRY]: color.yellowBright,\n\t\t[ListrLogLevels.ROLLBACK]: color.redBright,\n\t\t[ListrLogLevels.PAUSED]: color.yellowBright\n\t}\n};\nconst LISTR_LOGGER_STDERR_LEVELS = [\n\tListrLogLevels.RETRY,\n\tListrLogLevels.ROLLBACK,\n\tListrLogLevels.FAILED\n];\n\n//#endregion\n//#region src/utils/logger/logger.ts\n/**\n* Creates a new Listr2 logger.\n*\n* This logger is used throughout the renderers for consistency.\n*\n* @see {@link https://listr2.kilic.dev/renderer/logger.html}\n*/\nvar ListrLogger = class {\n\tprocess;\n\tconstructor(options) {\n\t\tthis.options = options;\n\t\tthis.options = {\n\t\t\tuseIcons: true,\n\t\t\ttoStderr: [],\n\t\t\t...options ?? {}\n\t\t};\n\t\tthis.options.fields ??= {};\n\t\tthis.options.fields.prefix ??= [];\n\t\tthis.options.fields.suffix ??= [];\n\t\tthis.process = this.options.processOutput ?? new ProcessOutput();\n\t}\n\tlog(level, message, options) {\n\t\tconst output = this.format(level, message, options);\n\t\tif (this.options.toStderr.includes(level)) {\n\t\t\tthis.process.toStderr(output);\n\t\t\treturn;\n\t\t}\n\t\tthis.process.toStdout(output);\n\t}\n\ttoStdout(message, options, eol = true) {\n\t\tthis.process.toStdout(this.format(null, message, options), eol);\n\t}\n\ttoStderr(message, options, eol = true) {\n\t\tthis.process.toStderr(this.format(null, message, options), eol);\n\t}\n\twrap(message, options) {\n\t\tif (!message) return message;\n\t\treturn this.applyFormat(`[${message}]`, options);\n\t}\n\tsplat(...args) {\n\t\tconst message = args.shift() ?? \"\";\n\t\treturn args.length === 0 ? message : splat(message, args);\n\t}\n\tsuffix(message, ...suffixes) {\n\t\tsuffixes.filter(Boolean).forEach((suffix) => {\n\t\t\tmessage += this.spacing(message);\n\t\t\tif (typeof suffix === \"string\") message += this.wrap(suffix);\n\t\t\telse if (typeof suffix === \"object\") {\n\t\t\t\tsuffix.args ??= [];\n\t\t\t\tif (typeof suffix.condition === \"function\" ? !suffix.condition(...suffix.args) : !(suffix.condition ?? true)) return message;\n\t\t\t\tmessage += this.wrap(typeof suffix.field === \"function\" ? suffix.field(...suffix.args) : suffix.field, { format: suffix?.format(...suffix.args) });\n\t\t\t}\n\t\t});\n\t\treturn message;\n\t}\n\tprefix(message, ...prefixes) {\n\t\tprefixes.filter(Boolean).forEach((prefix) => {\n\t\t\tmessage = this.spacing(message) + message;\n\t\t\tif (typeof prefix === \"string\") message = this.wrap(prefix) + message;\n\t\t\telse if (typeof prefix === \"object\") {\n\t\t\t\tprefix.args ??= [];\n\t\t\t\tif (typeof prefix.condition === \"function\" ? !prefix.condition(...prefix.args) : !(prefix.condition ?? true)) return message;\n\t\t\t\tmessage = this.wrap(typeof prefix.field === \"function\" ? prefix.field(...prefix.args) : prefix.field, { format: prefix?.format() }) + message;\n\t\t\t}\n\t\t});\n\t\treturn message;\n\t}\n\tfields(message, options) {\n\t\tif (this.options?.fields?.prefix) message = this.prefix(message, ...this.options.fields.prefix);\n\t\tif (options?.prefix) message = this.prefix(message, ...options.prefix);\n\t\tif (options?.suffix) message = this.suffix(message, ...options.suffix);\n\t\tif (this.options?.fields?.suffix) message = this.suffix(message, ...this.options.fields.suffix);\n\t\treturn message;\n\t}\n\ticon(level, icon) {\n\t\tif (!level) return null;\n\t\tif (!icon) {\n\t\t\tconst i = this.options.icon?.[level];\n\t\t\ticon = typeof i === \"function\" ? i() : i;\n\t\t}\n\t\tconst coloring = this.options.color?.[level];\n\t\tif (icon && coloring) icon = coloring(icon);\n\t\treturn icon;\n\t}\n\tformat(level, message, options) {\n\t\tif (!Array.isArray(message)) message = [message];\n\t\tmessage = this.splat(message.shift(), ...message).toString().split(EOL).filter((m) => !m || m.trim() !== \"\").map((m) => {\n\t\t\treturn this.style(level, this.fields(m, {\n\t\t\t\tprefix: Array.isArray(options?.prefix) ? options.prefix : [options?.prefix],\n\t\t\t\tsuffix: Array.isArray(options?.suffix) ? options.suffix : [options?.suffix]\n\t\t\t}));\n\t\t}).join(EOL);\n\t\treturn message;\n\t}\n\tstyle(level, message) {\n\t\tif (!level || !message) return message;\n\t\tconst icon = this.icon(level, !this.options.useIcons && this.wrap(level));\n\t\tif (icon) message = icon + \" \" + message;\n\t\treturn message;\n\t}\n\tapplyFormat(message, options) {\n\t\tif (options?.format) return options.format(message);\n\t\treturn message;\n\t}\n\tspacing(message) {\n\t\treturn typeof message === \"undefined\" || message.trim() === \"\" ? \"\" : \" \";\n\t}\n};\n\n//#endregion\n//#region src/utils/process-output/process-output-buffer.ts\nvar ProcessOutputBuffer = class {\n\tbuffer = [];\n\tdecoder = new StringDecoder();\n\tconstructor(options) {\n\t\tthis.options = options;\n\t}\n\tget all() {\n\t\treturn this.buffer;\n\t}\n\tget last() {\n\t\treturn this.buffer.at(-1);\n\t}\n\tget length() {\n\t\treturn this.buffer.length;\n\t}\n\twrite(data, ...args) {\n\t\tconst callback = args[args.length - 1];\n\t\tthis.buffer.push({\n\t\t\ttime: Date.now(),\n\t\t\tstream: this.options?.stream,\n\t\t\tentry: this.decoder.write(typeof data === \"string\" ? Buffer.from(data, typeof args[0] === \"string\" ? args[0] : void 0) : Buffer.from(data))\n\t\t});\n\t\tif (this.options?.limit) this.buffer = this.buffer.slice(-this.options.limit);\n\t\tif (typeof callback === \"function\") callback();\n\t\treturn true;\n\t}\n\treset() {\n\t\tthis.buffer = [];\n\t}\n};\n\n//#endregion\n//#region src/utils/process-output/process-output-stream.ts\nvar ProcessOutputStream = class {\n\tmethod;\n\tbuffer;\n\tconstructor(stream) {\n\t\tthis.stream = stream;\n\t\tthis.method = stream.write;\n\t\tthis.buffer = new ProcessOutputBuffer({ stream });\n\t}\n\tget out() {\n\t\tconst self = this;\n\t\treturn new Proxy(this.stream, { get(target, prop, receiver) {\n\t\t\tif (prop === \"write\") return self.write.bind(self);\n\t\t\treturn Reflect.get(target, prop, receiver);\n\t\t} });\n\t}\n\thijack() {\n\t\tthis.stream.write = this.buffer.write.bind(this.buffer);\n\t}\n\trelease() {\n\t\tthis.stream.write = this.method;\n\t\tconst buffer = [...this.buffer.all];\n\t\tthis.buffer.reset();\n\t\treturn buffer;\n\t}\n\twrite(...args) {\n\t\treturn this.method.apply(this.stream, args);\n\t}\n};\n\n//#endregion\n//#region src/utils/process-output/process-output.ts\n/**\n* Creates a new Listr2 process-output controller.\n*\n* This is used to control the flow to `process.stdout` and `process.stderr` for all renderers.\n*\n* @see {@link https://listr2.kilic.dev/renderer/process-output.html}\n*/\nvar ProcessOutput = class {\n\tstream;\n\tactive;\n\tconstructor(stdout, stderr, options) {\n\t\tthis.options = options;\n\t\tthis.stream = {\n\t\t\tstdout: new ProcessOutputStream(stdout ?? process.stdout),\n\t\t\tstderr: new ProcessOutputStream(stderr ?? process.stderr)\n\t\t};\n\t\tthis.options = {\n\t\t\tdump: [\"stdout\", \"stderr\"],\n\t\t\tleaveEmptyLine: true,\n\t\t\t...options\n\t\t};\n\t}\n\tget stdout() {\n\t\treturn this.stream.stdout.out;\n\t}\n\tget stderr() {\n\t\treturn this.stream.stderr.out;\n\t}\n\thijack() {\n\t\tif (this.active) throw new Error(\"ProcessOutput has been already hijacked!\");\n\t\tthis.stream.stdout.write(ANSI_ESCAPE_CODES.CURSOR_HIDE);\n\t\tObject.values(this.stream).forEach((stream) => stream.hijack());\n\t\tthis.active = true;\n\t}\n\trelease() {\n\t\tconst output = Object.entries(this.stream).map(([name, stream]) => ({\n\t\t\tname,\n\t\t\tbuffer: stream.release()\n\t\t})).filter((output) => this.options.dump.includes(output.name)).flatMap((output) => output.buffer).sort((a, b) => a.time - b.time).map((message) => {\n\t\t\treturn {\n\t\t\t\t...message,\n\t\t\t\tentry: cleanseAnsi(message.entry)\n\t\t\t};\n\t\t}).filter((message) => message.entry);\n\t\tif (output.length > 0) {\n\t\t\tif (this.options.leaveEmptyLine) this.stdout.write(EOL);\n\t\t\toutput.forEach((message) => {\n\t\t\t\t(message.stream ?? this.stdout).write(message.entry + EOL);\n\t\t\t});\n\t\t}\n\t\tthis.stream.stdout.write(ANSI_ESCAPE_CODES.CURSOR_SHOW);\n\t\tthis.active = false;\n\t}\n\ttoStdout(buffer, eol = true) {\n\t\tif (eol) buffer = buffer + EOL;\n\t\treturn this.stream.stdout.write(buffer);\n\t}\n\ttoStderr(buffer, eol = true) {\n\t\tif (eol) buffer = buffer + EOL;\n\t\treturn this.stream.stderr.write(buffer);\n\t}\n};\n\n//#endregion\n//#region src/utils/process-output/writable.ts\n/* istanbul ignore next */\nfunction createWritable(cb) {\n\tconst writable = new Writable();\n\twritable.rows = Infinity;\n\twritable.columns = Infinity;\n\twritable.write = (chunk) => {\n\t\tcb(chunk.toString());\n\t\treturn true;\n\t};\n\treturn writable;\n}\n\n//#endregion\n//#region src/utils/prompts/adapter.ts\n/* istanbul ignore next */\nvar ListrPromptAdapter = class {\n\tstate;\n\tconstructor(task, wrapper) {\n\t\tthis.task = task;\n\t\tthis.wrapper = wrapper;\n\t}\n\treportStarted() {\n\t\tthis.state = this.task.state;\n\t\tif (this.task.prompt) throw new PromptError(\"There is already an active prompt attached to this task which may not be cleaned up properly.\");\n\t\tthis.task.prompt = this;\n\t\tthis.task.state$ = ListrTaskState.PROMPT;\n\t}\n\treportFailed() {\n\t\tthis.task.state$ = ListrTaskState.PROMPT_FAILED;\n\t\tthis.restoreState();\n\t}\n\treportCompleted() {\n\t\tthis.task.state$ = ListrTaskState.PROMPT_COMPLETED;\n\t\tthis.restoreState();\n\t}\n\trestoreState() {\n\t\tthis.task.prompt = void 0;\n\t\tif (this.state) this.task.state = this.state;\n\t}\n};\n\n//#endregion\n//#region src/utils/ui/spinner.ts\n/* istanbul ignore next */\nvar Spinner = class {\n\tspinner = !isUnicodeSupported() ? [\n\t\t\"-\",\n\t\t\"\\\\\",\n\t\t\"|\",\n\t\t\"/\"\n\t] : [\n\t\t\"\u280B\",\n\t\t\"\u2819\",\n\t\t\"\u2839\",\n\t\t\"\u2838\",\n\t\t\"\u283C\",\n\t\t\"\u2834\",\n\t\t\"\u2826\",\n\t\t\"\u2827\",\n\t\t\"\u2807\",\n\t\t\"\u280F\"\n\t];\n\tid;\n\tspinnerPosition = 0;\n\tspin() {\n\t\tthis.spinnerPosition = ++this.spinnerPosition % this.spinner.length;\n\t}\n\tfetch() {\n\t\treturn this.spinner[this.spinnerPosition];\n\t}\n\tisRunning() {\n\t\treturn !!this.id;\n\t}\n\tstart(cb, interval = 100) {\n\t\tthis.id = setInterval(() => {\n\t\t\tthis.spin();\n\t\t\tif (cb) cb();\n\t\t}, interval);\n\t}\n\tstop() {\n\t\tclearInterval(this.id);\n\t\tthis.id = void 0;\n\t}\n};\n\n//#endregion\n//#region src/renderer/default/renderer.constants.ts\nlet ListrDefaultRendererLogLevels = /* @__PURE__ */ function(ListrDefaultRendererLogLevels) {\n\tListrDefaultRendererLogLevels[\"SKIPPED_WITH_COLLAPSE\"] = \"SKIPPED_WITH_COLLAPSE\";\n\tListrDefaultRendererLogLevels[\"SKIPPED_WITHOUT_COLLAPSE\"] = \"SKIPPED_WITHOUT_COLLAPSE\";\n\tListrDefaultRendererLogLevels[\"OUTPUT\"] = \"OUTPUT\";\n\tListrDefaultRendererLogLevels[\"OUTPUT_WITH_BOTTOMBAR\"] = \"OUTPUT_WITH_BOTTOMBAR\";\n\tListrDefaultRendererLogLevels[\"PENDING\"] = \"PENDING\";\n\tListrDefaultRendererLogLevels[\"COMPLETED\"] = \"COMPLETED\";\n\tListrDefaultRendererLogLevels[\"COMPLETED_WITH_FAILED_SUBTASKS\"] = \"COMPLETED_WITH_FAILED_SUBTASKS\";\n\tListrDefaultRendererLogLevels[\"COMPLETED_WITH_FAILED_SISTER_TASKS\"] = \"COMPLETED_WITH_SISTER_TASKS_FAILED\";\n\tListrDefaultRendererLogLevels[\"RETRY\"] = \"RETRY\";\n\tListrDefaultRendererLogLevels[\"ROLLING_BACK\"] = \"ROLLING_BACK\";\n\tListrDefaultRendererLogLevels[\"ROLLED_BACK\"] = \"ROLLED_BACK\";\n\tListrDefaultRendererLogLevels[\"FAILED\"] = \"FAILED\";\n\tListrDefaultRendererLogLevels[\"FAILED_WITH_FAILED_SUBTASKS\"] = \"FAILED_WITH_SUBTASKS\";\n\tListrDefaultRendererLogLevels[\"WAITING\"] = \"WAITING\";\n\tListrDefaultRendererLogLevels[\"PAUSED\"] = \"PAUSED\";\n\treturn ListrDefaultRendererLogLevels;\n}({});\nconst LISTR_DEFAULT_RENDERER_STYLE = {\n\ticon: {\n\t\t[ListrDefaultRendererLogLevels.SKIPPED_WITH_COLLAPSE]: figures.arrowDown,\n\t\t[ListrDefaultRendererLogLevels.SKIPPED_WITHOUT_COLLAPSE]: figures.warning,\n\t\t[ListrDefaultRendererLogLevels.OUTPUT]: figures.pointerSmall,\n\t\t[ListrDefaultRendererLogLevels.OUTPUT_WITH_BOTTOMBAR]: figures.pointerSmall,\n\t\t[ListrDefaultRendererLogLevels.PENDING]: figures.pointer,\n\t\t[ListrDefaultRendererLogLevels.COMPLETED]: figures.tick,\n\t\t[ListrDefaultRendererLogLevels.COMPLETED_WITH_FAILED_SUBTASKS]: figures.warning,\n\t\t[ListrDefaultRendererLogLevels.COMPLETED_WITH_FAILED_SISTER_TASKS]: figures.squareSmallFilled,\n\t\t[ListrDefaultRendererLogLevels.RETRY]: figures.warning,\n\t\t[ListrDefaultRendererLogLevels.ROLLING_BACK]: figures.warning,\n\t\t[ListrDefaultRendererLogLevels.ROLLED_BACK]: figures.arrowLeft,\n\t\t[ListrDefaultRendererLogLevels.FAILED]: figures.cross,\n\t\t[ListrDefaultRendererLogLevels.FAILED_WITH_FAILED_SUBTASKS]: figures.pointer,\n\t\t[ListrDefaultRendererLogLevels.WAITING]: figures.squareSmallFilled,\n\t\t[ListrDefaultRendererLogLevels.PAUSED]: figures.squareSmallFilled\n\t},\n\tcolor: {\n\t\t[ListrDefaultRendererLogLevels.SKIPPED_WITH_COLLAPSE]: color.yellow,\n\t\t[ListrDefaultRendererLogLevels.SKIPPED_WITHOUT_COLLAPSE]: color.yellow,\n\t\t[ListrDefaultRendererLogLevels.PENDING]: color.yellow,\n\t\t[ListrDefaultRendererLogLevels.COMPLETED]: color.green,\n\t\t[ListrDefaultRendererLogLevels.COMPLETED_WITH_FAILED_SUBTASKS]: color.yellow,\n\t\t[ListrDefaultRendererLogLevels.COMPLETED_WITH_FAILED_SISTER_TASKS]: color.red,\n\t\t[ListrDefaultRendererLogLevels.RETRY]: color.yellowBright,\n\t\t[ListrDefaultRendererLogLevels.ROLLING_BACK]: color.redBright,\n\t\t[ListrDefaultRendererLogLevels.ROLLED_BACK]: color.redBright,\n\t\t[ListrDefaultRendererLogLevels.FAILED]: color.red,\n\t\t[ListrDefaultRendererLogLevels.FAILED_WITH_FAILED_SUBTASKS]: color.red,\n\t\t[ListrDefaultRendererLogLevels.WAITING]: color.dim,\n\t\t[ListrDefaultRendererLogLevels.PAUSED]: color.yellowBright\n\t}\n};\n\n//#endregion\n//#region src/presets/timer/parser.ts\n/**\n* A basic function to parse minutes and tasks passed given a duration.\n* Useful for renderers to show the task time.\n*/\n/* istanbul ignore next */\nfunction parseTimer(duration) {\n\tconst seconds = Math.floor(duration / 1e3);\n\tconst minutes = Math.floor(seconds / 60);\n\tlet parsedTime;\n\tif (seconds === 0 && minutes === 0) parsedTime = `0.${Math.floor(duration / 100)}s`;\n\tif (seconds > 0) parsedTime = `${seconds % 60}s`;\n\tif (minutes > 0) parsedTime = `${minutes}m${parsedTime}`;\n\treturn parsedTime;\n}\n\n//#endregion\n//#region src/presets/timer/preset.ts\n/* istanbul ignore next */\nconst PRESET_TIMER = {\n\tcondition: true,\n\tfield: parseTimer,\n\tformat: () => color.dim\n};\n\n//#endregion\n//#region src/presets/timestamp/parser.ts\n/* istanbul ignore next */\nfunction parseTimestamp() {\n\tconst now = /* @__PURE__ */ new Date();\n\treturn String(now.getHours()).padStart(2, \"0\") + \":\" + String(now.getMinutes()).padStart(2, \"0\") + \":\" + String(now.getSeconds()).padStart(2, \"0\");\n}\n\n//#endregion\n//#region src/presets/timestamp/preset.ts\n/* istanbul ignore next */\nconst PRESET_TIMESTAMP = {\n\tcondition: true,\n\tfield: parseTimestamp,\n\tformat: () => color.dim\n};\n\n//#endregion\n//#region src/renderer/default/renderer.ts\nvar DefaultRenderer = class DefaultRenderer {\n\tstatic nonTTY = false;\n\tstatic rendererOptions = {\n\t\tindentation: 2,\n\t\tclearOutput: false,\n\t\tshowSubtasks: true,\n\t\tcollapseSubtasks: true,\n\t\tcollapseSkips: true,\n\t\tshowSkipMessage: true,\n\t\tsuffixSkips: false,\n\t\tcollapseErrors: true,\n\t\tshowErrorMessage: true,\n\t\tsuffixRetries: true,\n\t\tlazy: false,\n\t\tremoveEmptyLines: true,\n\t\tformatOutput: \"wrap\",\n\t\tpausedTimer: {\n\t\t\t...PRESET_TIMER,\n\t\t\tformat: () => color.yellowBright\n\t\t}\n\t};\n\tstatic rendererTaskOptions = { outputBar: true };\n\tprompt;\n\tactivePrompt;\n\tspinner;\n\tlogger;\n\tupdater;\n\ttruncate;\n\twrap;\n\tbuffer = {\n\t\toutput: /* @__PURE__ */ new Map(),\n\t\tbottom: /* @__PURE__ */ new Map()\n\t};\n\tcache = {\n\t\trender: /* @__PURE__ */ new Map(),\n\t\trendererOptions: /* @__PURE__ */ new Map(),\n\t\trendererTaskOptions: /* @__PURE__ */ new Map()\n\t};\n\tconstructor(tasks, options, events) {\n\t\tthis.tasks = tasks;\n\t\tthis.options = options;\n\t\tthis.events = events;\n\t\tthis.options = {\n\t\t\t...DefaultRenderer.rendererOptions,\n\t\t\t...this.options,\n\t\t\ticon: {\n\t\t\t\t...LISTR_DEFAULT_RENDERER_STYLE.icon,\n\t\t\t\t...options?.icon ?? {}\n\t\t\t},\n\t\t\tcolor: {\n\t\t\t\t...LISTR_DEFAULT_RENDERER_STYLE.color,\n\t\t\t\t...options?.color ?? {}\n\t\t\t}\n\t\t};\n\t\tthis.spinner = this.options.spinner ?? new Spinner();\n\t\tthis.logger = this.options.logger ?? new ListrLogger({\n\t\t\tuseIcons: true,\n\t\t\ttoStderr: []\n\t\t});\n\t\tthis.logger.options.icon = this.options.icon;\n\t\tthis.logger.options.color = this.options.color;\n\t}\n\tasync render() {\n\t\tconst { createLogUpdate } = await import(\"log-update\");\n\t\tconst { default: truncate } = await import(\"cli-truncate\");\n\t\tconst { default: wrap } = await import(\"wrap-ansi\");\n\t\tthis.updater = createLogUpdate(this.logger.process.stdout);\n\t\tthis.truncate = truncate;\n\t\tthis.wrap = wrap;\n\t\tthis.logger.process.hijack();\n\t\t/* istanbul ignore if */\n\t\tif (!this.options?.lazy) this.spinner.start(() => {\n\t\t\tthis.update();\n\t\t});\n\t\tthis.events.on(ListrEventType.SHOULD_REFRESH_RENDER, () => {\n\t\t\tthis.update();\n\t\t});\n\t}\n\tupdate() {\n\t\tthis.updater(this.create());\n\t}\n\tend() {\n\t\tthis.spinner.stop();\n\t\tthis.updater.clear();\n\t\tthis.updater.done();\n\t\tif (!this.options.clearOutput) this.logger.process.toStdout(this.create({ prompt: false }));\n\t\tthis.logger.process.release();\n\t}\n\tcreate(options) {\n\t\toptions = {\n\t\t\ttasks: true,\n\t\t\tbottomBar: true,\n\t\t\tprompt: true,\n\t\t\t...options\n\t\t};\n\t\tconst render = [];\n\t\tconst renderTasks = this.renderer(this.tasks);\n\t\tconst renderBottomBar = this.renderBottomBar();\n\t\tconst renderPrompt = this.renderPrompt();\n\t\tif (options.tasks && renderTasks.length > 0) render.push(...renderTasks);\n\t\tif (options.bottomBar && renderBottomBar.length > 0) {\n\t\t\tif (render.length > 0) render.push(\"\");\n\t\t\trender.push(...renderBottomBar);\n\t\t}\n\t\tif (options.prompt && renderPrompt.length > 0) {\n\t\t\tif (render.length > 0) render.push(\"\");\n\t\t\trender.push(...renderPrompt);\n\t\t}\n\t\treturn render.join(EOL);\n\t}\n\tstyle(task, output = false) {\n\t\tconst rendererOptions = this.cache.rendererOptions.get(task.id);\n\t\tif (task.isSkipped()) {\n\t\t\tif (output || rendererOptions.collapseSkips) return this.logger.icon(ListrDefaultRendererLogLevels.SKIPPED_WITH_COLLAPSE);\n\t\t\telse if (rendererOptions.collapseSkips === false) return this.logger.icon(ListrDefaultRendererLogLevels.SKIPPED_WITHOUT_COLLAPSE);\n\t\t}\n\t\tif (output) {\n\t\t\tif (this.shouldOutputToBottomBar(task)) return this.logger.icon(ListrDefaultRendererLogLevels.OUTPUT_WITH_BOTTOMBAR);\n\t\t\treturn this.logger.icon(ListrDefaultRendererLogLevels.OUTPUT);\n\t\t}\n\t\tif (task.hasSubtasks()) {\n\t\t\tif (task.isStarted() || task.isPrompt() && rendererOptions.showSubtasks !== false && !task.subtasks.every((subtask) => !subtask.hasTitle())) return this.logger.icon(ListrDefaultRendererLogLevels.PENDING);\n\t\t\telse if (task.isCompleted() && task.subtasks.some((subtask) => subtask.hasFailed())) return this.logger.icon(ListrDefaultRendererLogLevels.COMPLETED_WITH_FAILED_SUBTASKS);\n\t\t\telse if (task.hasFailed()) return this.logger.icon(ListrDefaultRendererLogLevels.FAILED_WITH_FAILED_SUBTASKS);\n\t\t}\n\t\tif (task.isStarted() || task.isPrompt()) return this.logger.icon(ListrDefaultRendererLogLevels.PENDING, !this.options?.lazy && this.spinner.fetch());\n\t\telse if (task.isCompleted()) return this.logger.icon(ListrDefaultRendererLogLevels.COMPLETED);\n\t\telse if (task.isRetrying()) return this.logger.icon(ListrDefaultRendererLogLevels.RETRY, !this.options?.lazy && this.spinner.fetch());\n\t\telse if (task.isRollingBack()) return this.logger.icon(ListrDefaultRendererLogLevels.ROLLING_BACK, !this.options?.lazy && this.spinner.fetch());\n\t\telse if (task.hasRolledBack()) return this.logger.icon(ListrDefaultRendererLogLevels.ROLLED_BACK);\n\t\telse if (task.hasFailed()) return this.logger.icon(ListrDefaultRendererLogLevels.FAILED);\n\t\telse if (task.isPaused()) return this.logger.icon(ListrDefaultRendererLogLevels.PAUSED);\n\t\treturn this.logger.icon(ListrDefaultRendererLogLevels.WAITING);\n\t}\n\tformat(message, icon, level) {\n\t\tif (message.trim() === \"\") return [];\n\t\tif (icon) message = icon + \" \" + message;\n\t\tlet parsed;\n\t\tconst columns = (process.stdout.columns ?? 80) - level * this.options.indentation - 2;\n\t\tswitch (this.options.formatOutput) {\n\t\t\tcase \"truncate\":\n\t\t\t\tparsed = message.split(EOL).map((s, i) => {\n\t\t\t\t\treturn this.truncate(this.indent(s, i), columns);\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\tcase \"wrap\":\n\t\t\t\tparsed = this.wrap(message, columns, {\n\t\t\t\t\thard: true,\n\t\t\t\t\ttrim: false\n\t\t\t\t}).split(EOL).map((s, i) => this.indent(s, i));\n\t\t\t\tbreak;\n\t\t\tdefault: throw new ListrRendererError(\"Format option for the renderer is wrong.\");\n\t\t}\n\t\tif (this.options.removeEmptyLines) parsed = parsed.filter(Boolean);\n\t\treturn parsed.map((str) => indent(str, level * this.options.indentation));\n\t}\n\tshouldOutputToOutputBar(task) {\n\t\tconst outputBar = this.cache.rendererTaskOptions.get(task.id).outputBar;\n\t\treturn typeof outputBar === \"number\" && outputBar !== 0 || typeof outputBar === \"boolean\" && outputBar !== false;\n\t}\n\tshouldOutputToBottomBar(task) {\n\t\tconst bottomBar = this.cache.rendererTaskOptions.get(task.id).bottomBar;\n\t\treturn typeof bottomBar === \"number\" && bottomBar !== 0 || typeof bottomBar === \"boolean\" && bottomBar !== false || !task.hasTitle();\n\t}\n\trenderer(tasks, level = 0) {\n\t\treturn tasks.flatMap((task) => {\n\t\t\tif (!task.isEnabled()) return [];\n\t\t\tif (this.cache.render.has(task.id)) return this.cache.render.get(task.id);\n\t\t\tthis.calculate(task);\n\t\t\tthis.setupBuffer(task);\n\t\t\tconst rendererOptions = this.cache.rendererOptions.get(task.id);\n\t\t\tconst rendererTaskOptions = this.cache.rendererTaskOptions.get(task.id);\n\t\t\tconst output = [];\n\t\t\tif (task.isPrompt()) {\n\t\t\t\tif (this.activePrompt && this.activePrompt !== task.id) throw new ListrRendererError(\"Only one prompt can be active at the given time, please re-evaluate your task design.\");\n\t\t\t\telse if (!this.activePrompt) {\n\t\t\t\t\ttask.on(ListrTaskEventType.PROMPT, (prompt) => {\n\t\t\t\t\t\tconst cleansed = cleanseAnsi(prompt);\n\t\t\t\t\t\tif (cleansed) this.prompt = cleansed;\n\t\t\t\t\t});\n\t\t\t\t\ttask.on(ListrTaskEventType.STATE, (state) => {\n\t\t\t\t\t\tif (state === ListrTaskState.PROMPT_COMPLETED || task.hasFinalized() || task.hasReset()) {\n\t\t\t\t\t\t\tthis.prompt = null;\n\t\t\t\t\t\t\tthis.activePrompt = null;\n\t\t\t\t\t\t\ttask.off(ListrTaskEventType.PROMPT);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tthis.activePrompt = task.id;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (task.hasTitle()) if (!(tasks.some((task) => task.hasFailed()) && !task.hasFailed() && task.options.exitOnError !== false && !(task.isCompleted() || task.isSkipped()))) if (task.hasFailed() && rendererOptions.collapseErrors) output.push(...this.format(!task.hasSubtasks() && task.message.error && rendererOptions.showErrorMessage ? task.message.error : task.title, this.style(task), level));\n\t\t\telse if (task.isSkipped() && rendererOptions.collapseSkips) output.push(...this.format(this.logger.suffix(task.message.skip && rendererOptions.showSkipMessage ? task.message.skip : task.title, {\n\t\t\t\tfield: ListrLogLevels.SKIPPED,\n\t\t\t\tcondition: rendererOptions.suffixSkips,\n\t\t\t\tformat: () => color.dim\n\t\t\t}), this.style(task), level));\n\t\t\telse if (task.isRetrying()) output.push(...this.format(this.logger.suffix(task.title, {\n\t\t\t\tfield: `${ListrLogLevels.RETRY}:${task.message.retry.count}`,\n\t\t\t\tformat: () => color.yellow,\n\t\t\t\tcondition: rendererOptions.suffixRetries\n\t\t\t}), this.style(task), level));\n\t\t\telse if (task.isCompleted() && task.hasTitle() && assertFunctionOrSelf(rendererTaskOptions.timer?.condition, task.message.duration)) output.push(...this.format(this.logger.suffix(task?.title, {\n\t\t\t\t...rendererTaskOptions.timer,\n\t\t\t\targs: [task.message.duration]\n\t\t\t}), this.style(task), level));\n\t\t\telse if (task.isPaused()) output.push(...this.format(this.logger.suffix(task.title, {\n\t\t\t\t...rendererOptions.pausedTimer,\n\t\t\t\targs: [task.message.paused - Date.now()]\n\t\t\t}), this.style(task), level));\n\t\t\telse output.push(...this.format(task.title, this.style(task), level));\n\t\t\telse output.push(...this.format(task.title, this.logger.icon(ListrDefaultRendererLogLevels.COMPLETED_WITH_FAILED_SISTER_TASKS), level));\n\t\t\tif (!task.hasSubtasks() || !rendererOptions.showSubtasks) {\n\t\t\t\tif (task.hasFailed() && rendererOptions.collapseErrors === false && (rendererOptions.showErrorMessage || !rendererOptions.showSubtasks)) output.push(...this.dump(task, level, ListrLogLevels.FAILED));\n\t\t\t\telse if (task.isSkipped() && rendererOptions.collapseSkips === false && (rendererOptions.showSkipMessage || !rendererOptions.showSubtasks)) output.push(...this.dump(task, level, ListrLogLevels.SKIPPED));\n\t\t\t}\n\t\t\tif (task.isPending() || rendererTaskOptions.persistentOutput) output.push(...this.renderOutputBar(task, level));\n\t\t\tif (rendererOptions.showSubtasks !== false && task.hasSubtasks() && (task.isPending() || task.hasFinalized() && !task.hasTitle() || task.isCompleted() && rendererOptions.collapseSubtasks === false && !task.subtasks.some((subtask) => this.cache.rendererOptions.get(subtask.id)?.collapseSubtasks === true) || task.subtasks.some((subtask) => this.cache.rendererOptions.get(subtask.id)?.collapseSubtasks === false) || task.subtasks.some((subtask) => subtask.hasFailed()) || task.subtasks.some((subtask) => subtask.hasRolledBack()))) {\n\t\t\t\tconst subtaskLevel = !task.hasTitle() ? level : level + 1;\n\t\t\t\tconst subtaskRender = this.renderer(task.subtasks, subtaskLevel);\n\t\t\t\toutput.push(...subtaskRender);\n\t\t\t}\n\t\t\tif (task.hasFinalized()) {\n\t\t\t\tif (!rendererTaskOptions.persistentOutput) {\n\t\t\t\t\tthis.buffer.bottom.delete(task.id);\n\t\t\t\t\tthis.buffer.output.delete(task.id);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (task.isClosed()) {\n\t\t\t\tthis.cache.render.set(task.id, output);\n\t\t\t\tthis.reset(task);\n\t\t\t}\n\t\t\treturn output;\n\t\t});\n\t}\n\trenderOutputBar(task, level) {\n\t\tconst output = this.buffer.output.get(task.id);\n\t\tif (!output) return [];\n\t\treturn output.all.flatMap((o) => this.dump(task, level, ListrLogLevels.OUTPUT, o.entry));\n\t}\n\trenderBottomBar() {\n\t\tif (this.buffer.bottom.size === 0) return [];\n\t\treturn Array.from(this.buffer.bottom.values()).flatMap((output) => output.all).sort((a, b) => a.time - b.time).map((output) => output.entry);\n\t}\n\trenderPrompt() {\n\t\tif (!this.prompt) return [];\n\t\treturn [this.prompt];\n\t}\n\tcalculate(task) {\n\t\tif (this.cache.rendererOptions.has(task.id) && this.cache.rendererTaskOptions.has(task.id)) return;\n\t\tconst rendererOptions = {\n\t\t\t...this.options,\n\t\t\t...task.rendererOptions\n\t\t};\n\t\tthis.cache.rendererOptions.set(task.id, rendererOptions);\n\t\tthis.cache.rendererTaskOptions.set(task.id, {\n\t\t\t...DefaultRenderer.rendererTaskOptions,\n\t\t\ttimer: rendererOptions.timer,\n\t\t\t...task.rendererTaskOptions\n\t\t});\n\t}\n\tsetupBuffer(task) {\n\t\tif (this.buffer.bottom.has(task.id) || this.buffer.output.has(task.id)) return;\n\t\tconst rendererTaskOptions = this.cache.rendererTaskOptions.get(task.id);\n\t\tif (this.shouldOutputToBottomBar(task) && !this.buffer.bottom.has(task.id)) {\n\t\t\tthis.buffer.bottom.set(task.id, new ProcessOutputBuffer({ limit: typeof rendererTaskOptions.bottomBar === \"number\" ? rendererTaskOptions.bottomBar : 1 }));\n\t\t\ttask.on(ListrTaskEventType.OUTPUT, (output) => {\n\t\t\t\tconst data = this.dump(task, -1, ListrLogLevels.OUTPUT, output);\n\t\t\t\tthis.buffer.bottom.get(task.id).write(data.join(EOL));\n\t\t\t});\n\t\t\ttask.on(ListrTaskEventType.STATE, (state) => {\n\t\t\t\tswitch (state) {\n\t\t\t\t\tcase ListrTaskState.RETRY || ListrTaskState.ROLLING_BACK:\n\t\t\t\t\t\tthis.buffer.bottom.delete(task.id);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t});\n\t\t} else if (this.shouldOutputToOutputBar(task) && !this.buffer.output.has(task.id)) {\n\t\t\tthis.buffer.output.set(task.id, new ProcessOutputBuffer({ limit: typeof rendererTaskOptions.outputBar === \"number\" ? rendererTaskOptions.outputBar : 1 }));\n\t\t\ttask.on(ListrTaskEventType.OUTPUT, (output) => {\n\t\t\t\tthis.buffer.output.get(task.id).write(output);\n\t\t\t});\n\t\t\ttask.on(ListrTaskEventType.STATE, (state) => {\n\t\t\t\tswitch (state) {\n\t\t\t\t\tcase ListrTaskState.RETRY || ListrTaskState.ROLLING_BACK:\n\t\t\t\t\t\tthis.buffer.output.delete(task.id);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\treset(task) {\n\t\tthis.cache.rendererOptions.delete(task.id);\n\t\tthis.cache.rendererTaskOptions.delete(task.id);\n\t\tthis.buffer.output.delete(task.id);\n\t}\n\tdump(task, level, source = ListrLogLevels.OUTPUT, data) {\n\t\tif (!data) switch (source) {\n\t\t\tcase ListrLogLevels.OUTPUT:\n\t\t\t\tdata = task.output;\n\t\t\t\tbreak;\n\t\t\tcase ListrLogLevels.SKIPPED:\n\t\t\t\tdata = task.message.skip;\n\t\t\t\tbreak;\n\t\t\tcase ListrLogLevels.FAILED:\n\t\t\t\tdata = task.message.error;\n\t\t\t\tbreak;\n\t\t}\n\t\tif (task.hasTitle() && source === ListrLogLevels.FAILED && data === task.title || typeof data !== \"string\") return [];\n\t\tif (source === ListrLogLevels.OUTPUT) data = cleanseAnsi(data);\n\t\treturn this.format(data, this.style(task, true), level + 1);\n\t}\n\tindent(str, i) {\n\t\treturn i > 0 ? indent(str.trimEnd(), this.options.indentation) : str.trimEnd();\n\t}\n};\n\n//#endregion\n//#region src/renderer/silent/renderer.ts\nvar SilentRenderer = class {\n\tstatic nonTTY = true;\n\tstatic rendererOptions;\n\tstatic rendererTaskOptions;\n\tconstructor(tasks, options) {\n\t\tthis.tasks = tasks;\n\t\tthis.options = options;\n\t}\n\trender() {}\n\tend() {}\n};\n\n//#endregion\n//#region src/renderer/simple/renderer.ts\nvar SimpleRenderer = class SimpleRenderer {\n\tstatic nonTTY = true;\n\tstatic rendererOptions = { pausedTimer: {\n\t\t...PRESET_TIMER,\n\t\tfield: (time) => `${ListrLogLevels.PAUSED}:${time}`,\n\t\tformat: () => color.yellowBright\n\t} };\n\tstatic rendererTaskOptions = {};\n\tlogger;\n\tcache = {\n\t\trendererOptions: /* @__PURE__ */ new Map(),\n\t\trendererTaskOptions: /* @__PURE__ */ new Map()\n\t};\n\tconstructor(tasks, options) {\n\t\tthis.tasks = tasks;\n\t\tthis.options = options;\n\t\tthis.options = {\n\t\t\t...SimpleRenderer.rendererOptions,\n\t\t\t...options,\n\t\t\ticon: {\n\t\t\t\t...LISTR_LOGGER_STYLE.icon,\n\t\t\t\t...options?.icon ?? {}\n\t\t\t},\n\t\t\tcolor: {\n\t\t\t\t...LISTR_LOGGER_STYLE.color,\n\t\t\t\t...options?.color ?? {}\n\t\t\t}\n\t\t};\n\t\tthis.logger = this.options.logger ?? new ListrLogger({\n\t\t\tuseIcons: true,\n\t\t\ttoStderr: LISTR_LOGGER_STDERR_LEVELS\n\t\t});\n\t\tthis.logger.options.icon = this.options.icon;\n\t\tthis.logger.options.color = this.options.color;\n\t\tif (this.options.timestamp) this.logger.options.fields.prefix.unshift(this.options.timestamp);\n\t}\n\tend() {}\n\trender() {\n\t\tthis.renderer(this.tasks);\n\t}\n\trenderer(tasks) {\n\t\ttasks.forEach((task) => {\n\t\t\tthis.calculate(task);\n\t\t\ttask.once(ListrTaskEventType.CLOSED, () => {\n\t\t\t\tthis.reset(task);\n\t\t\t});\n\t\t\tconst rendererOptions = this.cache.rendererOptions.get(task.id);\n\t\t\tconst rendererTaskOptions = this.cache.rendererTaskOptions.get(task.id);\n\t\t\ttask.on(ListrTaskEventType.SUBTASK, (subtasks) => {\n\t\t\t\tthis.renderer(subtasks);\n\t\t\t});\n\t\t\ttask.on(ListrTaskEventType.STATE, (state) => {\n\t\t\t\tif (!task.hasTitle()) return;\n\t\t\t\tif (state === ListrTaskState.STARTED) this.logger.log(ListrLogLevels.STARTED, task.title);\n\t\t\t\telse if (state === ListrTaskState.COMPLETED) {\n\t\t\t\t\tconst timer = rendererTaskOptions?.timer;\n\t\t\t\t\tthis.logger.log(ListrLogLevels.COMPLETED, task.title, timer && { suffix: {\n\t\t\t\t\t\t...timer,\n\t\t\t\t\t\tcondition: !!task.message?.duration && timer.condition,\n\t\t\t\t\t\targs: [task.message.duration]\n\t\t\t\t\t} });\n\t\t\t\t} else if (state === ListrTaskState.PROMPT) {\n\t\t\t\t\tthis.logger.process.hijack();\n\t\t\t\t\ttask.on(ListrTaskEventType.PROMPT, (prompt) => {\n\t\t\t\t\t\tthis.logger.process.toStderr(prompt, false);\n\t\t\t\t\t});\n\t\t\t\t} else if (state === ListrTaskState.PROMPT_COMPLETED) {\n\t\t\t\t\ttask.off(ListrTaskEventType.PROMPT);\n\t\t\t\t\tthis.logger.process.release();\n\t\t\t\t}\n\t\t\t});\n\t\t\ttask.on(ListrTaskEventType.OUTPUT, (output) => {\n\t\t\t\tthis.logger.log(ListrLogLevels.OUTPUT, output);\n\t\t\t});\n\t\t\ttask.on(ListrTaskEventType.MESSAGE, (message) => {\n\t\t\t\tif (message.error) this.logger.log(ListrLogLevels.FAILED, task.title, { suffix: {\n\t\t\t\t\tfield: `${ListrLogLevels.FAILED}: ${message.error}`,\n\t\t\t\t\tformat: () => color.red\n\t\t\t\t} });\n\t\t\t\telse if (message.skip) this.logger.log(ListrLogLevels.SKIPPED, task.title, { suffix: {\n\t\t\t\t\tfield: `${ListrLogLevels.SKIPPED}: ${message.skip}`,\n\t\t\t\t\tformat: () => color.yellow\n\t\t\t\t} });\n\t\t\t\telse if (message.rollback) this.logger.log(ListrLogLevels.ROLLBACK, task.title, { suffix: {\n\t\t\t\t\tfield: `${ListrLogLevels.ROLLBACK}: ${message.rollback}`,\n\t\t\t\t\tformat: () => color.red\n\t\t\t\t} });\n\t\t\t\telse if (message.retry) this.logger.log(ListrLogLevels.RETRY, task.title, { suffix: {\n\t\t\t\t\tfield: `${ListrLogLevels.RETRY}:${message.retry.count}`,\n\t\t\t\t\tformat: () => color.red\n\t\t\t\t} });\n\t\t\t\telse if (message.paused) {\n\t\t\t\t\tconst timer = rendererOptions?.pausedTimer;\n\t\t\t\t\tthis.logger.log(ListrLogLevels.PAUSED, task.title, timer && { suffix: {\n\t\t\t\t\t\t...timer,\n\t\t\t\t\t\tcondition: !!message?.paused && timer.condition,\n\t\t\t\t\t\targs: [message.paused - Date.now()]\n\t\t\t\t\t} });\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\tcalculate(task) {\n\t\tif (this.cache.rendererOptions.has(task.id) && this.cache.rendererTaskOptions.has(task.id)) return;\n\t\tconst rendererOptions = {\n\t\t\t...this.options,\n\t\t\t...task.rendererOptions\n\t\t};\n\t\tthis.cache.rendererOptions.set(task.id, rendererOptions);\n\t\tthis.cache.rendererTaskOptions.set(task.id, {\n\t\t\t...SimpleRenderer.rendererTaskOptions,\n\t\t\ttimer: rendererOptions.timer,\n\t\t\t...task.rendererTaskOptions\n\t\t});\n\t}\n\treset(task) {\n\t\tthis.cache.rendererOptions.delete(task.id);\n\t\tthis.cache.rendererTaskOptions.delete(task.id);\n\t}\n};\n\n//#endregion\n//#region src/renderer/test/serializer.ts\nvar TestRendererSerializer = class {\n\tconstructor(options) {\n\t\tthis.options = options;\n\t}\n\tserialize(event, data, task) {\n\t\treturn JSON.stringify(this.generate(event, data, task));\n\t}\n\tgenerate(event, data, task) {\n\t\tconst output = {\n\t\t\tevent,\n\t\t\tdata\n\t\t};\n\t\tif (typeof this.options?.task !== \"boolean\") {\n\t\t\tconst t = Object.fromEntries(this.options.task.map((entity) => {\n\t\t\t\tconst property = task[entity];\n\t\t\t\tif (typeof property === \"function\") return [entity, property.call(task)];\n\t\t\t\treturn [entity, property];\n\t\t\t}));\n\t\t\tif (Object.keys(task).length > 0) output.task = t;\n\t\t}\n\t\treturn output;\n\t}\n};\n\n//#endregion\n//#region src/renderer/test/renderer.ts\nvar TestRenderer = class TestRenderer {\n\tstatic nonTTY = true;\n\tstatic rendererOptions = {\n\t\tsubtasks: true,\n\t\tstate: Object.values(ListrTaskState),\n\t\toutput: true,\n\t\tprompt: true,\n\t\ttitle: true,\n\t\tmessages: [\n\t\t\t\"skip\",\n\t\t\t\"error\",\n\t\t\t\"retry\",\n\t\t\t\"rollback\",\n\t\t\t\"paused\"\n\t\t],\n\t\tmessagesToStderr: [\n\t\t\t\"error\",\n\t\t\t\"rollback\",\n\t\t\t\"retry\"\n\t\t],\n\t\ttask: [\n\t\t\t\"hasRolledBack\",\n\t\t\t\"isRollingBack\",\n\t\t\t\"isCompleted\",\n\t\t\t\"isSkipped\",\n\t\t\t\"hasFinalized\",\n\t\t\t\"hasSubtasks\",\n\t\t\t\"title\",\n\t\t\t\"hasReset\",\n\t\t\t\"hasTitle\",\n\t\t\t\"isPrompt\",\n\t\t\t\"isPaused\",\n\t\t\t\"isPending\",\n\t\t\t\"isSkipped\",\n\t\t\t\"isStarted\",\n\t\t\t\"hasFailed\",\n\t\t\t\"isEnabled\",\n\t\t\t\"isRetrying\",\n\t\t\t\"path\"\n\t\t]\n\t};\n\tstatic rendererTaskOptions;\n\tlogger;\n\tserializer;\n\tconstructor(tasks, options) {\n\t\tthis.tasks = tasks;\n\t\tthis.options = options;\n\t\tthis.options = {\n\t\t\t...TestRenderer.rendererOptions,\n\t\t\t...this.options\n\t\t};\n\t\tthis.logger = this.options.logger ?? new ListrLogger({ useIcons: false });\n\t\tthis.serializer = new TestRendererSerializer(this.options);\n\t}\n\trender() {\n\t\tthis.renderer(this.tasks);\n\t}\n\tend() {}\n\trenderer(tasks) {\n\t\ttasks.forEach((task) => {\n\t\t\tif (this.options.subtasks) task.on(ListrTaskEventType.SUBTASK, (subtasks) => {\n\t\t\t\tthis.renderer(subtasks);\n\t\t\t});\n\t\t\tif (this.options.state) task.on(ListrTaskEventType.STATE, (state) => {\n\t\t\t\tthis.logger.toStdout(this.serializer.serialize(ListrTaskEventType.STATE, state, task));\n\t\t\t});\n\t\t\tif (this.options.output) task.on(ListrTaskEventType.OUTPUT, (data) => {\n\t\t\t\tthis.logger.toStdout(this.serializer.serialize(ListrTaskEventType.OUTPUT, data, task));\n\t\t\t});\n\t\t\tif (this.options.prompt) task.on(ListrTaskEventType.PROMPT, (prompt) => {\n\t\t\t\tthis.logger.toStdout(this.serializer.serialize(ListrTaskEventType.PROMPT, prompt, task));\n\t\t\t});\n\t\t\tif (this.options.title) task.on(ListrTaskEventType.TITLE, (title) => {\n\t\t\t\tthis.logger.toStdout(this.serializer.serialize(ListrTaskEventType.TITLE, title, task));\n\t\t\t});\n\t\t\ttask.on(ListrTaskEventType.MESSAGE, (message) => {\n\t\t\t\tconst parsed = Object.fromEntries(Object.entries(message).map(([key, value]) => {\n\t\t\t\t\tif (this.options.messages.includes(key)) return [key, value];\n\t\t\t\t}).filter(Boolean));\n\t\t\t\tif (Object.keys(parsed).length > 0) {\n\t\t\t\t\tconst output = this.serializer.serialize(ListrTaskEventType.MESSAGE, parsed, task);\n\t\t\t\t\tif (this.options.messagesToStderr.some((state) => Object.keys(parsed).includes(state))) this.logger.toStderr(output);\n\t\t\t\t\telse this.logger.toStdout(output);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n};\n\n//#endregion\n//#region src/renderer/verbose/renderer.ts\nvar VerboseRenderer = class VerboseRenderer {\n\tstatic nonTTY = true;\n\tstatic rendererOptions = {\n\t\tlogTitleChange: false,\n\t\tpausedTimer: {\n\t\t\t...PRESET_TIMER,\n\t\t\tformat: () => color.yellowBright\n\t\t}\n\t};\n\tstatic rendererTaskOptions;\n\tlogger;\n\tcache = {\n\t\trendererOptions: /* @__PURE__ */ new Map(),\n\t\trendererTaskOptions: /* @__PURE__ */ new Map()\n\t};\n\tconstructor(tasks, options) {\n\t\tthis.tasks = tasks;\n\t\tthis.options = options;\n\t\tthis.options = {\n\t\t\t...VerboseRenderer.rendererOptions,\n\t\t\t...this.options,\n\t\t\ticon: {\n\t\t\t\t...LISTR_LOGGER_STYLE.icon,\n\t\t\t\t...options?.icon ?? {}\n\t\t\t},\n\t\t\tcolor: {\n\t\t\t\t...LISTR_LOGGER_STYLE.color,\n\t\t\t\t...options?.color ?? {}\n\t\t\t}\n\t\t};\n\t\tthis.logger = this.options.logger ?? new ListrLogger({\n\t\t\tuseIcons: false,\n\t\t\ttoStderr: LISTR_LOGGER_STDERR_LEVELS\n\t\t});\n\t\tthis.logger.options.icon = this.options.icon;\n\t\tthis.logger.options.color = this.options.color;\n\t\tif (this.options.timestamp) this.logger.options.fields.prefix.unshift(this.options.timestamp);\n\t}\n\trender() {\n\t\tthis.renderer(this.tasks);\n\t}\n\tend() {}\n\trenderer(tasks) {\n\t\ttasks.forEach((task) => {\n\t\t\tthis.calculate(task);\n\t\t\ttask.once(ListrTaskEventType.CLOSED, () => {\n\t\t\t\tthis.reset(task);\n\t\t\t});\n\t\t\tconst rendererOptions = this.cache.rendererOptions.get(task.id);\n\t\t\tconst rendererTaskOptions = this.cache.rendererTaskOptions.get(task.id);\n\t\t\ttask.on(ListrTaskEventType.SUBTASK, (subtasks) => {\n\t\t\t\tthis.renderer(subtasks);\n\t\t\t});\n\t\t\ttask.on(ListrTaskEventType.STATE, (state) => {\n\t\t\t\tif (!task.hasTitle()) return;\n\t\t\t\tif (state === ListrTaskState.STARTED) this.logger.log(ListrLogLevels.STARTED, task.title);\n\t\t\t\telse if (state === ListrTaskState.COMPLETED) {\n\t\t\t\t\tconst timer = rendererTaskOptions.timer;\n\t\t\t\t\tthis.logger.log(ListrLogLevels.COMPLETED, task.title, timer && { suffix: {\n\t\t\t\t\t\t...timer,\n\t\t\t\t\t\tcondition: !!task.message?.duration && timer.condition,\n\t\t\t\t\t\targs: [task.message.duration]\n\t\t\t\t\t} });\n\t\t\t\t}\n\t\t\t});\n\t\t\ttask.on(ListrTaskEventType.OUTPUT, (data) => {\n\t\t\t\tthis.logger.log(ListrLogLevels.OUTPUT, data);\n\t\t\t});\n\t\t\ttask.on(ListrTaskEventType.PROMPT, (prompt) => {\n\t\t\t\tconst cleansed = cleanseAnsi(prompt);\n\t\t\t\tif (cleansed) this.logger.log(ListrLogLevels.PROMPT, cleansed);\n\t\t\t});\n\t\t\tif (this.options?.logTitleChange !== false) task.on(ListrTaskEventType.TITLE, (title) => {\n\t\t\t\tthis.logger.log(ListrLogLevels.TITLE, title);\n\t\t\t});\n\t\t\ttask.on(ListrTaskEventType.MESSAGE, (message) => {\n\t\t\t\tif (message?.error) this.logger.log(ListrLogLevels.FAILED, message.error);\n\t\t\t\telse if (message?.skip) this.logger.log(ListrLogLevels.SKIPPED, message.skip);\n\t\t\t\telse if (message?.rollback) this.logger.log(ListrLogLevels.ROLLBACK, message.rollback);\n\t\t\t\telse if (message?.retry) this.logger.log(ListrLogLevels.RETRY, task.title, { suffix: message.retry.count.toString() });\n\t\t\t\telse if (message?.paused) {\n\t\t\t\t\tconst timer = rendererOptions?.pausedTimer;\n\t\t\t\t\tthis.logger.log(ListrLogLevels.PAUSED, task.title, timer && { suffix: {\n\t\t\t\t\t\t...timer,\n\t\t\t\t\t\tcondition: !!message?.paused && timer.condition,\n\t\t\t\t\t\targs: [message.paused - Date.now()]\n\t\t\t\t\t} });\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\tcalculate(task) {\n\t\tif (this.cache.rendererOptions.has(task.id) && this.cache.rendererTaskOptions.has(task.id)) return;\n\t\tconst rendererOptions = {\n\t\t\t...this.options,\n\t\t\t...task.rendererOptions\n\t\t};\n\t\tthis.cache.rendererOptions.set(task.id, rendererOptions);\n\t\tthis.cache.rendererTaskOptions.set(task.id, {\n\t\t\t...VerboseRenderer.rendererTaskOptions,\n\t\t\ttimer: rendererOptions.timer,\n\t\t\t...task.rendererTaskOptions\n\t\t});\n\t}\n\treset(task) {\n\t\tthis.cache.rendererOptions.delete(task.id);\n\t\tthis.cache.rendererTaskOptions.delete(task.id);\n\t}\n};\n\n//#endregion\n//#region src/utils/ui/renderer.ts\nconst RENDERERS = {\n\tdefault: DefaultRenderer,\n\tsimple: SimpleRenderer,\n\tverbose: VerboseRenderer,\n\ttest: TestRenderer,\n\tsilent: SilentRenderer\n};\nfunction isRendererSupported(renderer) {\n\treturn process.stdout.isTTY === true || renderer.nonTTY === true;\n}\nfunction getRendererClass(renderer) {\n\tif (typeof renderer === \"string\") return RENDERERS[renderer] ?? RENDERERS.default;\n\treturn typeof renderer === \"function\" ? renderer : RENDERERS.default;\n}\nfunction getRenderer(options) {\n\tif (assertFunctionOrSelf(options?.silentRendererCondition)) return {\n\t\trenderer: getRendererClass(\"silent\"),\n\t\tselection: ListrRendererSelection.SILENT\n\t};\n\tconst r = {\n\t\trenderer: getRendererClass(options.renderer),\n\t\toptions: options.rendererOptions,\n\t\tselection: ListrRendererSelection.PRIMARY\n\t};\n\tif (!isRendererSupported(r.renderer) || assertFunctionOrSelf(options?.fallbackRendererCondition)) return {\n\t\trenderer: getRendererClass(options.fallbackRenderer),\n\t\toptions: options.fallbackRendererOptions,\n\t\tselection: ListrRendererSelection.SECONDARY\n\t};\n\treturn r;\n}\n\n//#endregion\n//#region src/utils/assert.ts\n/**\n* This function asserts the given value as a function or itself.\n* If the value itself is a function it will evaluate it with the passed in arguments,\n* elsewise it will directly return itself.\n*/\nfunction assertFunctionOrSelf(functionOrSelf, ...args) {\n\tif (typeof functionOrSelf === \"function\") return functionOrSelf(...args);\n\telse return functionOrSelf;\n}\n\n//#endregion\n//#region src/utils/clone.ts\nconst clone = rfdc({ circles: true });\n/**\n* Deep clones a object in the easiest manner.\n*/\nfunction cloneObject(obj) {\n\treturn clone(obj);\n}\n\n//#endregion\n//#region src/utils/concurrency.ts\nvar Concurrency = class {\n\tconcurrency;\n\tcount;\n\tqueue;\n\tconstructor(options) {\n\t\tthis.concurrency = options.concurrency;\n\t\tthis.count = 0;\n\t\tthis.queue = /* @__PURE__ */ new Set();\n\t}\n\tadd(fn) {\n\t\tif (this.count < this.concurrency) return this.run(fn);\n\t\treturn new Promise((resolve) => {\n\t\t\tconst callback = () => resolve(this.run(fn));\n\t\t\tthis.queue.add(callback);\n\t\t});\n\t}\n\tflush() {\n\t\tfor (const callback of this.queue) {\n\t\t\tif (this.count >= this.concurrency) break;\n\t\t\tthis.queue.delete(callback);\n\t\t\tcallback();\n\t\t}\n\t}\n\trun(fn) {\n\t\tthis.count++;\n\t\tconst promise = fn();\n\t\tconst cleanup = () => {\n\t\t\tthis.count--;\n\t\t\tthis.flush();\n\t\t};\n\t\tpromise.then(cleanup, () => {\n\t\t\tthis.queue.clear();\n\t\t});\n\t\treturn promise;\n\t}\n};\n\n//#endregion\n//#region src/utils/delay.ts\nfunction delay(time) {\n\treturn new Promise((resolve) => {\n\t\tsetTimeout(resolve, time);\n\t});\n}\n\n//#endregion\n//#region src/interfaces/listr-error.interface.ts\n/**\n* Internal error handling mechanism for Listr collects the errors and details for a failed task.\n*\n* @see {@link https://listr2.kilic.dev/task/error-handling.html}\n*/\nvar ListrError = class extends Error {\n\tpath;\n\tctx;\n\tconstructor(error, type, task) {\n\t\tsuper(error.message);\n\t\tthis.error = error;\n\t\tthis.type = type;\n\t\tthis.task = task;\n\t\tthis.name = \"ListrError\";\n\t\tthis.path = task.path;\n\t\tif (task?.options.collectErrors === \"full\") {\n\t\t\tthis.task = cloneObject(task);\n\t\t\tthis.ctx = cloneObject(task.listr.ctx);\n\t\t}\n\t\tthis.stack = error?.stack;\n\t}\n};\n\n//#endregion\n//#region src/interfaces/listr-renderer-error.interface.ts\n/**\n* Internal error coming from renderer.\n*/\nvar ListrRendererError = class extends Error {};\n\n//#endregion\n//#region src/interfaces/prompt-error.interface.ts\n/**\n* Internal error handling mechanism for Listr prompts to identify the failing cause is coming from a prompt.\n*\n* @see {@link https://listr2.kilic.dev/task/prompts.html}\n*/\nvar PromptError = class extends Error {};\n\n//#endregion\n//#region src/lib/task-wrapper.ts\n/**\n* The original Task that is defined by the user is wrapped with the TaskWrapper to provide additional functionality.\n*\n* @see {@link https://listr2.kilic.dev/task/task.html}\n*/\nvar TaskWrapper = class {\n\tconstructor(task) {\n\t\tthis.task = task;\n\t}\n\t/* istanbul ignore next */\n\tget title() {\n\t\treturn this.task.title;\n\t}\n\t/**\n\t* Title of the current task.\n\t*\n\t* @see {@link https://listr2.kilic.dev/task/title.html}\n\t*/\n\tset title(title) {\n\t\ttitle = Array.isArray(title) ? title : [title];\n\t\tthis.task.title$ = splat(title.shift(), ...title);\n\t}\n\t/* istanbul ignore next */\n\tget output() {\n\t\treturn this.task.output;\n\t}\n\t/* istanbul ignore next */\n\t/**\n\t* Send output from the current task to the renderer.\n\t*\n\t* @see {@link https://listr2.kilic.dev/task/output.html}\n\t*/\n\tset output(output) {\n\t\toutput = Array.isArray(output) ? output : [output];\n\t\tthis.task.output$ = splat(output.shift(), ...output);\n\t}\n\t/* istanbul ignore next */\n\t/** Send an output to the output channel as prompt. */\n\tset promptOutput(output) {\n\t\tthis.task.promptOutput$ = output;\n\t}\n\t/**\n\t* Creates a new set of Listr subtasks.\n\t*\n\t* @see {@link https://listr2.kilic.dev/task/subtasks.html}\n\t*/\n\tnewListr(task, options) {\n\t\tlet tasks;\n\t\tif (typeof task === \"function\") tasks = task(this);\n\t\telse tasks = task;\n\t\treturn new Listr(tasks, options, this.task);\n\t}\n\t/**\n\t* Report an error that has to be collected and handled.\n\t*\n\t* @see {@link https://listr2.kilic.dev/task/error-handling.html}\n\t*/\n\treport(error, type) {\n\t\tif (this.task.options.collectErrors !== false) this.task.listr.errors.push(new ListrError(error, type, this.task));\n\t\tthis.task.message$ = { error: error.message ?? this.task?.title };\n\t}\n\t/**\n\t* Skip the current task.\n\t*\n\t* @see {@link https://listr2.kilic.dev/task/skip.html}\n\t*/\n\tskip(message, ...metadata) {\n\t\tthis.task.state$ = ListrTaskState.SKIPPED;\n\t\tif (message) this.task.message$ = { skip: message ? splat(message, ...metadata) : this.task?.title };\n\t}\n\t/**\n\t* Check whether this task is currently in a retry state.\n\t*\n\t* @see {@link https://listr2.kilic.dev/task/retry.html}\n\t*/\n\tisRetrying() {\n\t\treturn this.task.isRetrying() ? this.task.retry : { count: 0 };\n\t}\n\t/* istanbul ignore next */\n\t/**\n\t* Create a new prompt for getting user input through the prompt adapter.\n\t* This will create a new prompt through the adapter if the task is not currently rendering a prompt or will return the active instance.\n\t*\n\t* This part of the application requires optional peer dependencies, please refer to documentation.\n\t*\n\t* @see {@link https://listr2.kilic.dev/task/prompt.html}\n\t*/\n\tprompt(adapter) {\n\t\tif (this.task.prompt) return this.task.prompt;\n\t\treturn new adapter(this.task, this);\n\t}\n\t/* istanbul ignore next */\n\t/**\n\t* Generates a fake stdout for your use case, where it will be tunnelled through Listr to handle the rendering process.\n\t*\n\t* @see {@link https://listr2.kilic.dev/renderer/process-output.html}\n\t*/\n\tstdout(type) {\n\t\treturn createWritable((chunk) => {\n\t\t\tswitch (type) {\n\t\t\t\tcase ListrTaskEventType.PROMPT:\n\t\t\t\t\tthis.promptOutput = chunk;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault: this.output = chunk;\n\t\t\t}\n\t\t});\n\t}\n\t/** Run this task. */\n\trun(ctx) {\n\t\treturn this.task.run(ctx, this);\n\t}\n};\n\n//#endregion\n//#region src/lib/listr-task-event-manager.ts\nvar ListrTaskEventManager = class extends EventManager {};\n\n//#endregion\n//#region src/lib/task.ts\n/**\n* Creates and handles a runnable instance of the Task.\n*/\nvar Task = class extends ListrTaskEventManager {\n\t/** Unique id per task, can be used for identifying a Task. */\n\tid = randomUUID();\n\t/** The current state of the task. */\n\tstate = ListrTaskState.WAITING;\n\t/** Subtasks of the current task. */\n\tsubtasks;\n\t/** Title of the task. */\n\ttitle;\n\t/** Initial/Untouched version of the title for using whenever task has a reset. */\n\tinitialTitle;\n\t/** Output channel for the task. */\n\toutput;\n\t/** Current state of the retry process whenever the task is retrying. */\n\tretry;\n\t/**\n\t* A channel for messages.\n\t*\n\t* This requires a separate channel for messages like error, skip or runtime messages to further utilize in the renderers.\n\t*/\n\tmessage = {};\n\t/** Current prompt instance or prompt error whenever the task is prompting. */\n\tprompt;\n\t/** Parent task of the current task. */\n\tparent;\n\t/** Enable flag of this task. */\n\tenabled;\n\t/** User provided Task callback function to run. */\n\ttaskFn;\n\t/** Marks the task as closed. This is different from finalized since this is not really related to task itself. */\n\tclosed;\n\tconstructor(listr, task, options, rendererOptions, rendererTaskOptions) {\n\t\tsuper();\n\t\tthis.listr = listr;\n\t\tthis.task = task;\n\t\tthis.options = options;\n\t\tthis.rendererOptions = rendererOptions;\n\t\tthis.rendererTaskOptions = rendererTaskOptions;\n\t\tif (task.title) {\n\t\t\tconst title = Array.isArray(task?.title) ? task.title : [task.title];\n\t\t\tthis.title = splat(title.shift(), ...title);\n\t\t\tthis.initialTitle = this.title;\n\t\t}\n\t\tthis.taskFn = task.task;\n\t\tthis.parent = listr.parentTask;\n\t}\n\t/**\n\t* Update the current state of the Task and emit the neccassary events.\n\t*/\n\tset state$(state) {\n\t\tthis.state = state;\n\t\tthis.emit(ListrTaskEventType.STATE, state);\n\t\tif (this.hasSubtasks() && this.hasFailed()) {\n\t\t\tfor (const subtask of this.subtasks) if (subtask.state === ListrTaskState.STARTED) subtask.state$ = ListrTaskState.FAILED;\n\t\t}\n\t\tthis.listr.events.emit(ListrEventType.SHOULD_REFRESH_RENDER);\n\t}\n\t/**\n\t* Update the current output of the Task and emit the neccassary events.\n\t*/\n\tset output$(data) {\n\t\tthis.output = data;\n\t\tthis.emit(ListrTaskEventType.OUTPUT, data);\n\t\tthis.listr.events.emit(ListrEventType.SHOULD_REFRESH_RENDER);\n\t}\n\t/**\n\t* Update the current prompt output of the Task and emit the neccassary events.\n\t*/\n\tset promptOutput$(data) {\n\t\tthis.emit(ListrTaskEventType.PROMPT, data);\n\t\tif (cleanseAnsi(data)) this.listr.events.emit(ListrEventType.SHOULD_REFRESH_RENDER);\n\t}\n\t/**\n\t* Update or extend the current message of the Task and emit the neccassary events.\n\t*/\n\tset message$(data) {\n\t\tthis.message = {\n\t\t\t...this.message,\n\t\t\t...data\n\t\t};\n\t\tthis.emit(ListrTaskEventType.MESSAGE, data);\n\t\tthis.listr.events.emit(ListrEventType.SHOULD_REFRESH_RENDER);\n\t}\n\t/**\n\t* Update the current title of the Task and emit the neccassary events.\n\t*/\n\tset title$(title) {\n\t\tthis.title = title;\n\t\tthis.emit(ListrTaskEventType.TITLE, title);\n\t\tthis.listr.events.emit(ListrEventType.SHOULD_REFRESH_RENDER);\n\t}\n\t/**\n\t* Current task path in the hierarchy.\n\t*/\n\tget path() {\n\t\treturn [...this.listr.path, this.initialTitle];\n\t}\n\t/**\n\t* Checks whether the current task with the given context should be set as enabled.\n\t*/\n\tasync check(ctx) {\n\t\tif (this.state === ListrTaskState.WAITING) {\n\t\t\tthis.enabled = await assertFunctionOrSelf(this.task?.enabled ?? true, ctx);\n\t\t\tthis.emit(ListrTaskEventType.ENABLED, this.enabled);\n\t\t\tthis.listr.events.emit(ListrEventType.SHOULD_REFRESH_RENDER);\n\t\t}\n\t\treturn this.enabled;\n\t}\n\t/** Returns whether this task has subtasks. */\n\thasSubtasks() {\n\t\treturn this.subtasks?.length > 0;\n\t}\n\t/** Returns whether this task is finalized in someform. */\n\thasFinalized() {\n\t\treturn this.isCompleted() || this.hasFailed() || this.isSkipped() || this.hasRolledBack();\n\t}\n\t/** Returns whether this task is in progress. */\n\tisPending() {\n\t\treturn this.isStarted() || this.isPrompt() || this.hasReset();\n\t}\n\t/** Returns whether this task has started. */\n\tisStarted() {\n\t\treturn this.state === ListrTaskState.STARTED;\n\t}\n\t/** Returns whether this task is skipped. */\n\tisSkipped() {\n\t\treturn this.state === ListrTaskState.SKIPPED;\n\t}\n\t/** Returns whether this task has been completed. */\n\tisCompleted() {\n\t\treturn this.state === ListrTaskState.COMPLETED;\n\t}\n\t/** Returns whether this task has been failed. */\n\thasFailed() {\n\t\treturn this.state === ListrTaskState.FAILED;\n\t}\n\t/** Returns whether this task has an active rollback task going on. */\n\tisRollingBack() {\n\t\treturn this.state === ListrTaskState.ROLLING_BACK;\n\t}\n\t/** Returns whether the rollback action was successful. */\n\thasRolledBack() {\n\t\treturn this.state === ListrTaskState.ROLLED_BACK;\n\t}\n\t/** Returns whether this task has an actively retrying task going on. */\n\tisRetrying() {\n\t\treturn this.state === ListrTaskState.RETRY;\n\t}\n\t/** Returns whether this task has some kind of reset like retry and rollback going on. */\n\thasReset() {\n\t\treturn this.state === ListrTaskState.RETRY || this.state === ListrTaskState.ROLLING_BACK;\n\t}\n\t/** Returns whether enabled function resolves to true. */\n\tisEnabled() {\n\t\treturn this.enabled;\n\t}\n\t/** Returns whether this task actually has a title. */\n\thasTitle() {\n\t\treturn typeof this?.title === \"string\";\n\t}\n\t/** Returns whether this task has a prompt inside. */\n\tisPrompt() {\n\t\treturn this.state === ListrTaskState.PROMPT;\n\t}\n\t/** Returns whether this task is currently paused. */\n\tisPaused() {\n\t\treturn this.state === ListrTaskState.PAUSED;\n\t}\n\t/** Returns whether this task is closed. */\n\tisClosed() {\n\t\treturn this.closed;\n\t}\n\t/** Pause the given task for certain time. */\n\tasync pause(time) {\n\t\tconst state = this.state;\n\t\tthis.state$ = ListrTaskState.PAUSED;\n\t\tthis.message$ = { paused: Date.now() + time };\n\t\tawait delay(time);\n\t\tthis.state$ = state;\n\t\tthis.message$ = { paused: null };\n\t}\n\t/** Run the current task. */\n\tasync run(context, wrapper) {\n\t\tconst handleResult = (result) => {\n\t\t\tif (result instanceof Listr) {\n\t\t\t\tresult.options = {\n\t\t\t\t\t...this.options,\n\t\t\t\t\t...result.options\n\t\t\t\t};\n\t\t\t\tresult.rendererClass = getRendererClass(\"silent\");\n\t\t\t\tthis.subtasks = result.tasks;\n\t\t\t\tresult.errors = this.listr.errors;\n\t\t\t\tthis.emit(ListrTaskEventType.SUBTASK, this.subtasks);\n\t\t\t\tresult = result.run(context);\n\t\t\t} else if (result instanceof Promise) result = result.then(handleResult);\n\t\t\telse if (isReadable(result)) result = new Promise((resolve, reject) => {\n\t\t\t\tresult.on(\"data\", (data) => {\n\t\t\t\t\tthis.output$ = data.toString();\n\t\t\t\t});\n\t\t\t\tresult.on(\"error\", (error) => reject(error));\n\t\t\t\tresult.on(\"end\", () => resolve(null));\n\t\t\t});\n\t\t\telse if (isObservable(result)) result = new Promise((resolve, reject) => {\n\t\t\t\tresult.subscribe({\n\t\t\t\t\tnext: (data) => {\n\t\t\t\t\t\tthis.output$ = data;\n\t\t\t\t\t},\n\t\t\t\t\terror: reject,\n\t\t\t\t\tcomplete: resolve\n\t\t\t\t});\n\t\t\t});\n\t\t\treturn result;\n\t\t};\n\t\tconst startTime = Date.now();\n\t\tthis.state$ = ListrTaskState.STARTED;\n\t\tconst skipped = await assertFunctionOrSelf(this.task?.skip ?? false, context);\n\t\tif (skipped) {\n\t\t\tif (typeof skipped === \"string\") this.message$ = { skip: skipped };\n\t\t\telse if (this.hasTitle()) this.message$ = { skip: this.title };\n\t\t\telse this.message$ = { skip: \"Skipped task without a title.\" };\n\t\t\tthis.state$ = ListrTaskState.SKIPPED;\n\t\t\treturn;\n\t\t}\n\t\ttry {\n\t\t\tconst retryCount = typeof this.task?.retry === \"number\" && this.task.retry > 0 ? this.task.retry + 1 : typeof this.task?.retry === \"object\" && this.task.retry.tries > 0 ? this.task.retry.tries + 1 : 1;\n\t\t\tconst retryDelay = typeof this.task.retry === \"object\" && this.task.retry.delay;\n\t\t\tfor (let retries = 1; retries <= retryCount; retries++) try {\n\t\t\t\tawait handleResult(this.taskFn(context, wrapper));\n\t\t\t\tbreak;\n\t\t\t} catch (err) {\n\t\t\t\tif (retries !== retryCount) {\n\t\t\t\t\tthis.retry = {\n\t\t\t\t\t\tcount: retries,\n\t\t\t\t\t\terror: err\n\t\t\t\t\t};\n\t\t\t\t\tthis.message$ = { retry: this.retry };\n\t\t\t\t\tthis.title$ = this.initialTitle;\n\t\t\t\t\tthis.output = void 0;\n\t\t\t\t\twrapper.report(err, ListrErrorTypes.WILL_RETRY);\n\t\t\t\t\tthis.state$ = ListrTaskState.RETRY;\n\t\t\t\t\tif (retryDelay) await this.pause(retryDelay);\n\t\t\t\t} else throw err;\n\t\t\t}\n\t\t\tif (this.isStarted() || this.isRetrying()) {\n\t\t\t\tthis.message$ = { duration: Date.now() - startTime };\n\t\t\t\tthis.state$ = ListrTaskState.COMPLETED;\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tif (this.prompt instanceof PromptError) error = this.prompt;\n\t\t\tif (this.task?.rollback) {\n\t\t\t\twrapper.report(error, ListrErrorTypes.WILL_ROLLBACK);\n\t\t\t\ttry {\n\t\t\t\t\tthis.state$ = ListrTaskState.ROLLING_BACK;\n\t\t\t\t\tawait this.task.rollback(context, wrapper);\n\t\t\t\t\tthis.message$ = { rollback: this.title };\n\t\t\t\t\tthis.state$ = ListrTaskState.ROLLED_BACK;\n\t\t\t\t} catch (err) {\n\t\t\t\t\tthis.state$ = ListrTaskState.FAILED;\n\t\t\t\t\twrapper.report(err, ListrErrorTypes.HAS_FAILED_TO_ROLLBACK);\n\t\t\t\t\tthis.close();\n\t\t\t\t\tthrow err;\n\t\t\t\t}\n\t\t\t\tif (this.listr.options?.exitAfterRollback !== false) {\n\t\t\t\t\tthis.close();\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.state$ = ListrTaskState.FAILED;\n\t\t\t\tif (this.listr.options.exitOnError !== false && await assertFunctionOrSelf(this.task?.exitOnError, context) !== false) {\n\t\t\t\t\twrapper.report(error, ListrErrorTypes.HAS_FAILED);\n\t\t\t\t\tthis.close();\n\t\t\t\t\tthrow error;\n\t\t\t\t} else if (!this.hasSubtasks()) wrapper.report(error, ListrErrorTypes.HAS_FAILED_WITHOUT_ERROR);\n\t\t\t}\n\t\t} finally {\n\t\t\tthis.close();\n\t\t}\n\t}\n\tclose() {\n\t\tthis.emit(ListrTaskEventType.CLOSED);\n\t\tthis.listr.events.emit(ListrEventType.SHOULD_REFRESH_RENDER);\n\t\tthis.complete();\n\t}\n};\n\n//#endregion\n//#region src/lib/listr-event-manager.ts\nvar ListrEventManager = class extends EventManager {};\n\n//#endregion\n//#region src/listr.ts\n/**\n* Create a new task list with Listr.\n*\n* @see {@link https://listr2.kilic.dev/listr/listr.html}\n*/\nvar Listr = class {\n\ttasks = [];\n\terrors = [];\n\tctx;\n\tevents;\n\tpath = [];\n\trendererClass;\n\trendererClassOptions;\n\trendererSelection;\n\tboundSignalHandler;\n\tconcurrency;\n\trenderer;\n\tconstructor(task, options, parentTask) {\n\t\tthis.task = task;\n\t\tthis.options = options;\n\t\tthis.parentTask = parentTask;\n\t\tthis.options = {\n\t\t\tconcurrent: false,\n\t\t\trenderer: \"default\",\n\t\t\tfallbackRenderer: \"simple\",\n\t\t\texitOnError: true,\n\t\t\texitAfterRollback: true,\n\t\t\tcollectErrors: false,\n\t\t\tregisterSignalListeners: true,\n\t\t\t...this.parentTask?.options ?? {},\n\t\t\t...options\n\t\t};\n\t\tif (this.options.concurrent === true) this.options.concurrent = Infinity;\n\t\telse if (typeof this.options.concurrent !== \"number\") this.options.concurrent = 1;\n\t\tthis.concurrency = new Concurrency({ concurrency: this.options.concurrent });\n\t\tif (parentTask) {\n\t\t\tthis.path = [...parentTask.listr.path, parentTask.title];\n\t\t\tthis.errors = parentTask.listr.errors;\n\t\t}\n\t\tif (this.parentTask?.listr.events instanceof ListrEventManager) this.events = this.parentTask.listr.events;\n\t\telse this.events = new ListrEventManager();\n\t\t/* istanbul ignore if */\n\t\tif (this.options?.forceTTY || process.env[ListrEnvironmentVariables.FORCE_TTY]) {\n\t\t\tprocess.stdout.isTTY = true;\n\t\t\tprocess.stderr.isTTY = true;\n\t\t}\n\t\t/* istanbul ignore if */\n\t\tif (this.options?.forceUnicode) process.env[ListrEnvironmentVariables.FORCE_UNICODE] = \"1\";\n\t\tconst renderer = getRenderer({\n\t\t\trenderer: this.options.renderer,\n\t\t\trendererOptions: this.options.rendererOptions,\n\t\t\tfallbackRenderer: this.options.fallbackRenderer,\n\t\t\tfallbackRendererOptions: this.options.fallbackRendererOptions,\n\t\t\tfallbackRendererCondition: this.options?.fallbackRendererCondition,\n\t\t\tsilentRendererCondition: this.options?.silentRendererCondition\n\t\t});\n\t\tthis.rendererClass = renderer.renderer;\n\t\tthis.rendererClassOptions = renderer.options;\n\t\tthis.rendererSelection = renderer.selection;\n\t\t/* istanbul ignore next */\n\t\tthis.add(task ?? []);\n\t\t/* istanbul ignore if */\n\t\tif (this.options.registerSignalListeners) {\n\t\t\tthis.boundSignalHandler = this.signalHandler.bind(this);\n\t\t\tprocess.once(\"SIGINT\", this.boundSignalHandler).setMaxListeners(0);\n\t\t}\n\t}\n\t/**\n\t* Whether this is the root task.\n\t*/\n\tisRoot() {\n\t\treturn !this.parentTask;\n\t}\n\t/**\n\t* Whether this is a subtask of another task list.\n\t*/\n\tisSubtask() {\n\t\treturn !!this.parentTask;\n\t}\n\t/**\n\t* Add tasks to current task list.\n\t*\n\t* @see {@link https://listr2.kilic.dev/task/task.html}\n\t*/\n\tadd(tasks) {\n\t\tthis.tasks.push(...this.generate(tasks));\n\t}\n\t/**\n\t* Run the task list.\n\t*\n\t* @see {@link https://listr2.kilic.dev/listr/listr.html#run-the-generated-task-list}\n\t*/\n\tasync run(context) {\n\t\tif (!this.renderer) this.renderer = new this.rendererClass(this.tasks, this.rendererClassOptions, this.events);\n\t\tawait this.renderer.render();\n\t\tthis.ctx = this.options?.ctx ?? context ?? {};\n\t\ttry {\n\t\t\tawait Promise.all(this.tasks.map((task) => task.check(this.ctx)));\n\t\t\tawait Promise.all(this.tasks.map((task) => this.concurrency.add(() => this.runTask(task))));\n\t\t\tthis.renderer.end();\n\t\t\tthis.removeSignalHandler();\n\t\t} catch (err) {\n\t\t\tif (this.options.exitOnError !== false) {\n\t\t\t\tthis.renderer.end(err);\n\t\t\t\tthis.removeSignalHandler();\n\t\t\t\tthrow err;\n\t\t\t}\n\t\t}\n\t\treturn this.ctx;\n\t}\n\tgenerate(tasks) {\n\t\ttasks = Array.isArray(tasks) ? tasks : [tasks];\n\t\treturn tasks.map((task) => {\n\t\t\tlet rendererTaskOptions;\n\t\t\tif (this.rendererSelection === ListrRendererSelection.PRIMARY) rendererTaskOptions = task.rendererOptions;\n\t\t\telse if (this.rendererSelection === ListrRendererSelection.SECONDARY) rendererTaskOptions = task.fallbackRendererOptions;\n\t\t\treturn new Task(this, task, this.options, this.rendererClassOptions, rendererTaskOptions);\n\t\t});\n\t}\n\tasync runTask(task) {\n\t\tif (!await task.check(this.ctx)) return;\n\t\treturn new TaskWrapper(task).run(this.ctx);\n\t}\n\tsignalHandler() {\n\t\tthis.tasks?.forEach(async (task) => {\n\t\t\tif (task.isPending()) task.state$ = ListrTaskState.FAILED;\n\t\t});\n\t\tif (this.isRoot()) {\n\t\t\tthis.renderer?.end(/* @__PURE__ */ new Error(\"Interrupted.\"));\n\t\t\tprocess.exit(127);\n\t\t}\n\t}\n\tremoveSignalHandler() {\n\t\tif (this.boundSignalHandler) process.removeListener(\"SIGINT\", this.boundSignalHandler);\n\t}\n};\n\n//#endregion\nexport { ANSI_ESCAPE, ANSI_ESCAPE_CODES, BaseEventMap, Concurrency, DefaultRenderer, EventManager, LISTR_DEFAULT_RENDERER_STYLE, LISTR_LOGGER_STDERR_LEVELS, LISTR_LOGGER_STYLE, Listr, ListrDefaultRendererLogLevels, ListrEnvironmentVariables, ListrError, ListrErrorTypes, ListrEventManager, ListrEventType, ListrLogLevels, ListrLogger, ListrPromptAdapter, ListrRendererError, ListrRendererSelection, ListrTaskEventManager, ListrTaskEventType, ListrTaskState, PRESET_TIMER, PRESET_TIMESTAMP, ProcessOutput, ProcessOutputBuffer, ProcessOutputStream, PromptError, SilentRenderer, SimpleRenderer, Spinner, TestRenderer, TestRendererSerializer, VerboseRenderer, assertFunctionOrSelf, cleanseAnsi, cloneObject, color, createWritable, delay, figures, getRenderer, getRendererClass, indent, isObservable, isReadable, isUnicodeSupported, parseTimer, parseTimestamp, splat };", "import {Listr} from 'listr2';\nimport {relative} from 'node:path';\nimport type {UploadFiles} from '../../types/deploy';\nimport type {UploadFilesParams, UploadFilesParamsWithProgress} from '../../types/upload';\nimport {\n  type ExecuteUploadFiles,\n  executeUploadFiles,\n  prepareFileForUpload\n} from './_upload.services';\n\nexport const uploadFilesWithBatch = async ({\n  uploadFiles,\n  collection,\n  ...rest\n}: {\n  uploadFiles: UploadFiles;\n} & UploadFilesParams) => {\n  const upload = async ({\n    files,\n    progress\n  }: Pick<UploadFilesParamsWithProgress, 'files' | 'progress'>): Promise<void> => {\n    await uploadFilesToStorage({\n      collection,\n      files,\n      uploadFiles,\n      progress\n    });\n  };\n\n  await batchUploadFiles({\n    upload,\n    ...rest\n  });\n};\n\nconst batchUploadFiles = async ({\n  files,\n  sourceAbsolutePath,\n  upload,\n  batchSize\n}: {\n  upload: (params: Pick<UploadFilesParamsWithProgress, 'files' | 'progress'>) => Promise<void>;\n} & Omit<UploadFilesParams, 'collection'>) => {\n  const uploadFiles: ExecuteUploadFiles = async ({groupFiles, step}) => {\n    const totalBatches = Math.ceil(groupFiles.length / batchSize);\n\n    // Execute upload batchSize (default UPLOAD_BATCH_SIZE) files at a time max preventively to not stress too much the network\n    for (let i = 0; i < groupFiles.length; i += batchSize) {\n      const files = groupFiles.slice(i, i + batchSize);\n\n      const deferredPromise = (): {\n        promise: Promise<void>;\n        resolve: (() => void) | undefined;\n      } => {\n        let resolve: (() => void) | undefined = undefined;\n        const promise = new Promise<void>((res) => (resolve = res));\n        return {promise, resolve};\n      };\n\n      const filesProgress = files.map((file) => ({\n        ...file,\n        ...deferredPromise()\n      }));\n\n      const initBatch = deferredPromise();\n      const commitBatch = deferredPromise();\n\n      const uploadFilesTasks = filesProgress.map(({file, promise}) => ({\n        title: `Uploading ${relative(sourceAbsolutePath, file.file)}`,\n        task: async () => await promise\n      }));\n\n      const batchNumber = Math.floor(i / batchSize) + 1;\n      const batchLabel = `[${batchNumber}/${totalBatches}]`;\n      const batchType = step === 'alternate' ? '\u2728' : '\uD83D\uDCE6';\n\n      const tasks = new Listr<void>(\n        [\n          {\n            title: `${batchType} Initializing ${batchLabel}`,\n            task: async () => await initBatch.promise\n          },\n          {\n            title: `${batchType} Uploading    ${batchLabel}`,\n            // eslint-disable-next-line local-rules/prefer-object-params\n            task: (_ctx, task): Listr =>\n              task.newListr(uploadFilesTasks, {\n                concurrent: true\n              })\n          },\n          {\n            title: `${batchType} Committing   ${batchLabel}`,\n            task: async () => await commitBatch.promise\n          }\n        ],\n        {concurrent: false}\n      );\n\n      // We do not await the run on purpose\n      const run = tasks.run();\n\n      await upload({\n        files,\n        progress: {\n          onUploadedFileChunks: (fullPath) => {\n            const progress = filesProgress.find((file) => file.paths.fullPath === fullPath);\n            progress?.resolve?.();\n          },\n          onInitiatedBatch: () => initBatch.resolve?.(),\n          onCommittedBatch: () => commitBatch.resolve?.()\n        }\n      });\n\n      // wait for the renderer to flush & close cleanly before next batch\n      await run;\n    }\n  };\n\n  await executeUploadFiles({\n    files,\n    uploadFiles\n  });\n};\n\nconst uploadFilesToStorage = async ({\n  uploadFiles,\n  files,\n  collection,\n  progress\n}: {\n  uploadFiles: UploadFiles;\n} & Omit<UploadFilesParamsWithProgress, 'sourceAbsolutePath' | 'batchSize'>): Promise<void> => {\n  const filesToUpload = await Promise.all(\n    files.map(\n      async ({file, paths}) =>\n        await prepareFileForUpload({\n          collection,\n          ...paths,\n          file\n        })\n    )\n  );\n\n  await uploadFiles({\n    files: filesToUpload,\n    progress\n  });\n};\n", "import {nonNullish, notEmptyString} from '@junobuild/utils';\nimport {readFile} from 'node:fs/promises';\nimport {basename} from 'node:path';\nimport type {FileAndPaths, FileDetails, UploadFileStorage} from '../../types/deploy';\nimport type {UploadFilesParams} from '../../types/upload';\nimport {splitSourceFiles} from '../../utils/upload.utils';\n\nexport const prepareFileForUpload = async ({\n  file,\n  fullPath,\n  collection,\n  filePath,\n  token,\n  description\n}: {\n  file: FileDetails;\n  filePath: string;\n} & Pick<\n  UploadFileStorage,\n  'fullPath' | 'collection' | 'token' | 'description'\n>): Promise<UploadFileStorage> => ({\n  filename: basename(filePath),\n  fullPath,\n  data: new Blob([await readFile(file.file)]),\n  collection,\n  headers: [\n    ...(file.mime === undefined ? [] : ([['Content-Type', file.mime]] as Array<[string, string]>))\n  ],\n  encoding: file.encoding,\n  ...(nonNullish(token) && notEmptyString(token) && {token}),\n  ...(nonNullish(description) && notEmptyString(description) && {description})\n});\n\nexport type ExecuteUploadFiles = (params: {\n  groupFiles: FileAndPaths[];\n  step: 'alternate' | 'source';\n}) => Promise<void>;\n\nexport const executeUploadFiles = async ({\n  files,\n  uploadFiles\n}: {\n  uploadFiles: ExecuteUploadFiles;\n} & Pick<UploadFilesParams, 'files'>) => {\n  // We upload alternate files first. See comment in splitSourceFiles.\n  const [alternateFiles, sourceFiles] = splitSourceFiles(files);\n  await uploadFiles({groupFiles: alternateFiles, step: 'alternate'});\n  await uploadFiles({groupFiles: sourceFiles, step: 'source'});\n};\n", "import {isNullish, nonNullish} from '@junobuild/utils';\nimport type {FileAndPaths} from '../types/deploy';\n\n// TODO: temporary possible race condition fix until Satellite v0.0.13 is published\n// We must upload the alternative path first to ensure . Friday Oct. 10 2023 I got unexpected race condition while uploading the Astro sample example (file hoisted.8961d9b1.js).\nexport const splitSourceFiles = (files: FileAndPaths[]): [FileAndPaths[], FileAndPaths[]] =>\n  files.reduce<[FileAndPaths[], FileAndPaths[]]>(\n    ([alternateFiles, sourceFiles], file) => [\n      [...alternateFiles, ...(nonNullish(file.file.alternateFile) ? [file] : [])],\n      [...sourceFiles, ...(isNullish(file.file.alternateFile) ? [file] : [])]\n    ],\n    [[], []]\n  );\n", "import {Listr} from 'listr2';\nimport {relative} from 'node:path';\nimport type {FileAndPaths, FileDetails, UploadFile, UploadFileStorage} from '../../types/deploy';\nimport type {UploadFilesParams} from '../../types/upload';\nimport {\n  type ExecuteUploadFiles,\n  executeUploadFiles,\n  prepareFileForUpload\n} from './_upload.services';\n\nexport const uploadFilesIndividually = async ({\n  uploadFile,\n  collection,\n  ...rest\n}: {\n  uploadFile: UploadFile;\n} & UploadFilesParams) => {\n  const upload = async ({file, paths}: FileAndPaths): Promise<void> => {\n    await uploadFileToStorage({\n      collection,\n      ...paths,\n      file,\n      uploadFile\n    });\n  };\n\n  await batchUploadFiles({\n    upload,\n    ...rest\n  });\n};\n\nconst batchUploadFiles = async ({\n  files,\n  sourceAbsolutePath,\n  upload,\n  batchSize\n}: {\n  upload: (params: FileAndPaths) => Promise<void>;\n} & Omit<UploadFilesParams, 'collection'>) => {\n  const uploadFiles: ExecuteUploadFiles = async ({groupFiles, step}) => {\n    // Execute upload batchSize (default UPLOAD_BATCH_SIZE) files at a time max preventively to not stress too much the network\n    for (let i = 0; i < groupFiles.length; i += batchSize) {\n      const files = groupFiles.slice(i, i + batchSize);\n\n      const tasks = new Listr<void>(\n        files.map(({file, paths}) => ({\n          title: `${step === 'alternate' ? '\u2728' : '\uD83D\uDCE6'} Uploading ${relative(sourceAbsolutePath, file.file)}`,\n          task: async () => await upload({file, paths})\n        })),\n        {concurrent: true}\n      );\n\n      await tasks.run();\n    }\n  };\n\n  await executeUploadFiles({\n    files,\n    uploadFiles\n  });\n};\n\nconst uploadFileToStorage = async ({\n  uploadFile,\n  ...rest\n}: {\n  file: FileDetails;\n  uploadFile: UploadFile;\n  filePath: string;\n} & Pick<\n  UploadFileStorage,\n  'fullPath' | 'collection' | 'token' | 'description'\n>): Promise<void> => {\n  const fileToUpload = await prepareFileForUpload(rest);\n  await uploadFile(fileToUpload);\n};\n", "import type {FileAndPaths, UploadIndividually, UploadWithBatch} from '../types/deploy';\nimport type {UploadFilesParams} from '../types/upload';\nimport {formatBytes} from '../utils/format.utils';\nimport {fileSizeInBytes} from '../utils/fs.utils';\nimport {uploadFilesWithBatch} from './upload/upload.batch.services';\nimport {uploadFilesIndividually} from './upload/upload.individual.services';\n\nexport const uploadFiles = async ({\n  upload,\n  files,\n  ...rest\n}: UploadFilesParams & {\n  upload: UploadIndividually | UploadWithBatch;\n}) => {\n  if ('uploadFiles' in upload) {\n    await uploadFilesWithBatch({\n      uploadFiles: upload.uploadFiles,\n      files,\n      ...rest\n    });\n\n    logSuccess({files});\n    return;\n  }\n\n  await uploadFilesIndividually({uploadFile: upload.uploadFile, files, ...rest});\n\n  logSuccess({files});\n};\n\nconst logSuccess = ({files}: {files: FileAndPaths[]}) => {\n  const {count, size} = files.reduce(\n    ({count, size}, {paths}) => ({\n      count: count + 1,\n      size: size + fileSizeInBytes(paths.filePath)\n    }),\n    {count: 0, size: 0}\n  );\n\n  console.log(`\\n\u2714 ${count} files uploaded (total: ${formatBytes(size)})`);\n};\n", "import type {\n  DeployResultWithProposal,\n  UploadFileStorage,\n  UploadFilesWithProposal,\n  UploadFileWithProposal,\n  UploadIndividually,\n  UploadWithBatch\n} from '../types/deploy';\nimport type {ProposeChangesParams} from '../types/proposal';\nimport type {UploadFilesParams} from '../types/upload';\nimport {proposeChanges} from './proposals.services';\nimport {uploadFiles} from './upload.services';\n\nexport const deployAndProposeChanges = async ({\n  deploy: {upload, files, sourceAbsolutePath, collection, batchSize},\n  proposal: {proposalType, autoCommit, ...proposalRest}\n}: {\n  deploy: {\n    upload: UploadIndividually<UploadFileWithProposal> | UploadWithBatch<UploadFilesWithProposal>;\n  } & UploadFilesParams;\n  proposal: Omit<ProposeChangesParams, 'executeChanges'>;\n}): Promise<DeployResultWithProposal> => {\n  const executeChanges = async (proposalId: bigint): Promise<void> => {\n    if ('uploadFiles' in upload) {\n      const uploadFilesWithProposalId = (params: {files: UploadFileStorage[]}) =>\n        upload.uploadFiles({\n          ...params,\n          proposalId\n        });\n\n      await uploadFiles({\n        files,\n        sourceAbsolutePath,\n        collection,\n        batchSize,\n        upload: {uploadFiles: uploadFilesWithProposalId}\n      });\n      return;\n    }\n\n    const uploadFileWithProposalId = (params: UploadFileStorage) =>\n      upload.uploadFile({\n        ...params,\n        proposalId\n      });\n\n    await uploadFiles({\n      files,\n      sourceAbsolutePath,\n      collection,\n      batchSize,\n      upload: {uploadFile: uploadFileWithProposalId}\n    });\n  };\n\n  const {proposalId} = await proposeChanges({\n    ...proposalRest,\n    autoCommit,\n    proposalType,\n    executeChanges\n  });\n\n  if (!autoCommit) {\n    return {result: 'submitted', files: files.map((file) => file.file), proposalId};\n  }\n\n  return {result: 'deployed', files: files.map((file) => file.file), proposalId};\n};\n", "import {generateFunctions, type GenerateFunctionsResult} from '@junobuild/functions-tools';\nimport {isNullish} from '@junobuild/utils';\nimport type {Metafile} from 'esbuild';\nimport {writeFile} from 'node:fs/promises';\nimport {relative} from 'node:path';\nimport {buildFunctions} from './build';\n\nexport interface GenerateArgs {\n  infile: string;\n  outfileJs: string;\n  outfileRs: string;\n  banner?: {[type: string]: string};\n}\n\nexport interface GenerateBuildData {\n  version: string;\n  output: [string, Metafile['outputs'][0]];\n  code: Uint8Array;\n  outputPath: string;\n}\n\nexport interface GenerateResultData {\n  build: Omit<GenerateBuildData, 'code'>;\n  generate: GenerateFunctionsResult;\n}\n\nexport interface GenerateResultError {\n  status: 'error';\n  warnings?: string[];\n  errors: string[];\n}\n\nexport type GenerateResult = {status: 'success'; result: GenerateResultData} | GenerateResultError;\n\nexport type GenerateCodeResult =\n  | {status: 'success'; result: Omit<GenerateBuildData, 'outputPath'>}\n  | GenerateResultError;\n\nexport const buildAndGenerateFunctions = async ({\n  outfileJs,\n  outfileRs,\n  ...args\n}: GenerateArgs): Promise<GenerateResult> => {\n  const build = await buildWithEsbuild(args);\n\n  if (build.status === 'error') {\n    return build;\n  }\n\n  const {\n    result: {code, ...buildResult}\n  } = build;\n\n  // We generate the custom functions before the JavaScript script because\n  // there might be none, therefore no Rust module to generate but, also because\n  // the Docker image currently watches the script to initiate new automatic build.\n  const generate = await writeDevFunctions({code, outfileRs});\n\n  const dev = await writeDevScript({code, outfileJs});\n\n  return {status: 'success', result: {build: {...buildResult, ...dev}, generate}};\n};\n\nconst buildWithEsbuild = async ({\n  infile,\n  banner\n}: Omit<GenerateArgs, 'outfileJs' | 'outfileRs'>): Promise<GenerateCodeResult> => {\n  const {\n    metafile,\n    errors: buildErrors,\n    warnings: buildWarnings,\n    version,\n    outputFiles\n  } = await buildFunctions({\n    infile,\n    banner\n  });\n\n  const warnings = buildWarnings.map(({text}) => text);\n  const errors = buildErrors.map(({text}) => text);\n\n  if (errors.length > 0) {\n    return {status: 'error', errors, warnings};\n  }\n\n  const entry = Object.entries(metafile.outputs);\n\n  if (entry.length === 0) {\n    return {\n      status: 'error',\n      errors: ['Unexpected: No metafile resulting from the build was found.']\n    };\n  }\n\n  const code = outputFiles?.[0]?.contents;\n\n  if (isNullish(code)) {\n    return {\n      status: 'error',\n      errors: ['Unexpected: No script build for the functions.']\n    };\n  }\n\n  return {\n    status: 'success',\n    result: {\n      output: entry[0],\n      version,\n      code\n    }\n  };\n};\n\nconst writeDevFunctions = async ({\n  code,\n  outfileRs\n}: Pick<GenerateBuildData, 'code'> &\n  Pick<GenerateArgs, 'outfileRs'>): Promise<GenerateFunctionsResult> =>\n  await generateFunctions({code, outputFile: outfileRs});\n\nconst writeDevScript = async ({\n  code,\n  outfileJs\n}: Pick<GenerateBuildData, 'code'> & Pick<GenerateArgs, 'outfileJs'>): Promise<{\n  outputPath: string;\n}> => {\n  await writeFile(outfileJs, code);\n\n  return {\n    outputPath: relative(process.cwd(), outfileJs)\n  };\n};\n", "import ora from 'ora';\nimport {PRUNE_DEFAULT_BATCH_SIZE} from '../constants/prune.constants';\nimport {preparePrune as preparePruneServices} from '../services/prune.prepare.services';\nimport {prune as pruneServices} from '../services/prune.services';\nimport type {PruneFilesFn, PruneFileStorage, PruneParams, PruneResult} from '../types/prune';\n\n/**\n * Identifies and removes stale assets from a satellite's storage.\n *\n * @param {Object} options\n * @param {PruneParams} options.params - Prune parameters including `dryRun` and `batchSize`.\n * @param {PruneFilesFn} options.pruneFn - Function used to delete the resolved stale assets.\n *\n * @returns {Promise<PruneResult>}\n *   - `{ result: 'skipped' }` when no stale assets are found.\n *   - `{ result: 'simulated', files }` when `dryRun` is true; no files are deleted.\n *   - `{ result: 'pruned', files }` when stale assets are successfully deleted.\n */\nexport const prune = async ({\n  params: {dryRun, batchSize, ...rest},\n  pruneFn\n}: {\n  params: PruneParams;\n  pruneFn: PruneFilesFn;\n}): Promise<PruneResult> => {\n  const prepareResult = await preparePrune(rest);\n\n  if (prepareResult.result === 'skipped') {\n    return {result: 'skipped'};\n  }\n\n  const {files} = prepareResult;\n\n  // 4. Report\n  console.log(`\\nFound ${files.length} stale asset(s):`);\n  for (const {fullPath} of files) {\n    console.log(`  - ${fullPath}`);\n  }\n  console.log('');\n\n  if (dryRun === true) {\n    return {result: 'simulated', files};\n  }\n\n  await pruneServices({files, pruneFn, batchSize: batchSize ?? PRUNE_DEFAULT_BATCH_SIZE});\n\n  return {result: 'pruned', files};\n};\n\nconst preparePrune = async (\n  params: Omit<PruneParams, 'dryRun'>\n): Promise<{result: 'skipped'} | {result: 'to-prune'; files: PruneFileStorage[]}> => {\n  const spinner = ora('Preparing prune...').start();\n\n  try {\n    const {files: sourceFiles} = await preparePruneServices(params);\n\n    spinner.stop();\n\n    if (sourceFiles.length === 0) {\n      console.log('');\n      console.log('\uD83D\uDC4D  No stale assets found. Satellite is already clean.');\n\n      return {result: 'skipped'};\n    }\n\n    return {\n      result: 'to-prune',\n      files: sourceFiles\n    };\n  } catch (err: unknown) {\n    spinner.stop();\n    throw err;\n  }\n};\n", "import type {Asset} from '@junobuild/storage';\nimport {join} from 'node:path';\nimport {DEPLOY_DEFAULT_IGNORE, DEPLOY_DEFAULT_SOURCE} from '../constants/deploy.constants';\nimport type {ListAssets} from '../types/assets';\nimport type {DeployConfig} from '../types/config';\nimport type {PreparePruneOptions, PruneFileStorage} from '../types/prune';\nimport {listSourceFilesForPrune} from '../utils/prune.utils';\n\nexport const preparePrune = async ({\n  config,\n  listAssets,\n  assertSourceDirExists\n}: {\n  config: DeployConfig;\n  listAssets: ListAssets;\n} & PreparePruneOptions): Promise<{files: PruneFileStorage[]}> => {\n  const {source = DEPLOY_DEFAULT_SOURCE, ignore = DEPLOY_DEFAULT_IGNORE} = config;\n\n  const sourceAbsolutePath = join(process.cwd(), source);\n\n  assertSourceDirExists?.(sourceAbsolutePath);\n\n  // 1. Scan local build output\n  const localPaths = listSourceFilesForPrune({sourceAbsolutePath, ignore});\n\n  const stale = await filterFilesToPrune({localPaths, listAssets});\n\n  return {files: stale.map(({fullPath}) => ({fullPath}))};\n};\n\nconst filterFilesToPrune = async ({\n  localPaths,\n  listAssets\n}: {\n  localPaths: Set<string>;\n  listAssets: ListAssets;\n}): Promise<Asset[]> => {\n  // 2. Fetch all live assets (paginated)\n  const existingAssets = await listAssets({});\n\n  // 3. Compute stale = live_assets \u2212 local_files\n  const stale = existingAssets.filter(({fullPath}) => !localPaths.has(fullPath));\n\n  // Workaround: ic-domains and ii-alternative-origins should not be deleted\n  // @see https://github.com/junobuild/juno/issues/2686\n  return stale.filter(\n    ({fullPath}) =>\n      !['/.well-known/ic-domains', '/.well-known/ii-alternative-origins'].includes(fullPath)\n  );\n};\n", "import type {SatelliteConfig} from '@junobuild/config';\nimport {minimatch} from 'minimatch';\nimport {fullPath} from './assets.utils';\nimport {files} from './fs.utils';\n\n/**\n * Scans the local source directory and returns a Set of fullPaths that are present.\n * Throws if the directory cannot be read.\n */\nexport const listSourceFilesForPrune = ({\n  sourceAbsolutePath,\n  ignore\n}: {sourceAbsolutePath: string} & Required<Pick<SatelliteConfig, 'ignore'>>): Set<string> => {\n  const allFiles = files(sourceAbsolutePath);\n  const filteredFiles = allFiles.filter((file) => shouldBeIncluded({file, ignore}));\n  return new Set(filteredFiles.map((file) => fullPath({file, sourceAbsolutePath})));\n};\n\n/**\n * Returns true if the file should be excluded based on the ignore patterns.\n */\nconst isIgnored = ({file, ignore}: {file: string; ignore: string[]}): boolean =>\n  ignore.some((pattern) => minimatch(file, pattern, {matchBase: true}));\n\n/**\n * Returns true if the file should be included for deletion.\n */\nconst shouldBeIncluded = (params: {file: string; ignore: string[]}): boolean => !isIgnored(params);\n", "import {Listr} from 'listr2';\nimport type {PruneFilesFn, PruneFileStorage, PruneParams} from '../types/prune';\n\nexport const prune = async ({\n  files: groupFiles,\n  pruneFn,\n  batchSize\n}: {\n  files: PruneFileStorage[];\n  pruneFn: PruneFilesFn;\n} & Required<Pick<PruneParams, 'batchSize'>>) => {\n  const totalBatches = Math.ceil(groupFiles.length / batchSize);\n\n  // Execute prune with batchSize (default PRUNE_DEFAULT_BATCH_SIZE) files at a time max preventively to not stress too much the network\n  for (let i = 0; i < groupFiles.length; i += batchSize) {\n    const files = groupFiles.slice(i, i + batchSize);\n\n    const batchNumber = Math.floor(i / batchSize) + 1;\n    const batchLabel = `[${batchNumber}/${totalBatches}]`;\n\n    const tasks = new Listr<void>(\n      [\n        {\n          title: `\uD83D\uDDD1\uFE0F  Pruning assets ${batchLabel}`,\n          task: async () => await pruneFn({files})\n        }\n      ],\n      {concurrent: false}\n    );\n\n    await tasks.run();\n  }\n\n  console.log(`\\n\u2714 ${groupFiles.length} stale asset(s) pruned.`);\n};\n", "import {toNullable} from '@junobuild/utils';\nimport {UPLOAD_DEFAULT_BATCH_SIZE} from '../constants/deploy.constants';\nimport {COLLECTION_CDN_RELEASES} from '../constants/storage.constants';\nimport {deployAndProposeChanges} from '../services/deploy.proposal.services';\nimport type {DeployResultWithProposal, FileAndPaths} from '../types/deploy';\nimport type {ProposeChangesParams} from '../types/proposal';\nimport type {PublishSatelliteWasmParams} from '../types/publish';\n\n/**\n * Uploads a Satellite WASM file to the CDN as part of a proposal-based deployment.\n *\n * This function:\n * 1. Optionally performs a memory check (via `assertMemory`).\n * 2. Packages the WASM file into the required format.\n * 3. Uploads the file(s) using the provided upload function \u2014 which may\n *    perform a batched proposal flow or an individual file flow, depending\n *    on the `upload` implementation.\n * 4. Submits a proposal to deploy the uploaded Satellite WASM.\n * 5. Optionally commits (applies) the proposal if `autoCommit` is `true`.\n *\n * @param {Object} options - The deployment and proposal configuration.\n * @param {PublishSatelliteWasmParams} options.publish - Publication parameters including the upload function,\n * memory assertion, and file paths.\n * @param {Object} options.proposal - Proposal options.\n * @param {CdnParameters} options.proposal.cdn - CDN and governance configuration.\n * @param {boolean} options.proposal.autoCommit - If `true`, the proposal is automatically committed after submission.\n * @param {string} options.proposal.version - The Satellite version to include in the proposal.\n *\n * @returns {Promise<DeployResultWithProposal>} A result object describing the outcome:\n * - `{ result: 'skipped' }` \u2013 No files were found to upload.\n * - `{ result: 'submitted', files, proposalId }` \u2013 Upload and proposal submission succeeded.\n * - `{ result: 'deployed', files, proposalId }` \u2013 Upload succeeded and proposal was auto-committed.\n */\nexport const publishSatelliteWasmWithProposal = async ({\n  publish: {assertMemory, filePath, fullPath, upload, ...restDeploy},\n  proposal: {version, ...restProposal}\n}: {\n  publish: PublishSatelliteWasmParams;\n  proposal: Pick<ProposeChangesParams, 'cdn' | 'autoCommit'> & {version: string};\n}): Promise<DeployResultWithProposal> => {\n  await assertMemory?.();\n\n  const sourceFiles: FileAndPaths[] = [\n    {\n      file: {\n        file: filePath\n      },\n      paths: {\n        filePath,\n        fullPath\n      }\n    }\n  ];\n\n  const result = await deployAndProposeChanges({\n    deploy: {\n      ...restDeploy,\n      upload,\n      files: sourceFiles,\n      collection: COLLECTION_CDN_RELEASES,\n      batchSize: UPLOAD_DEFAULT_BATCH_SIZE\n    },\n    proposal: {\n      ...restProposal,\n      proposalType: {\n        SegmentsDeployment: {\n          satellite_version: toNullable(version),\n          orbiter: toNullable(),\n          mission_control_version: toNullable()\n        }\n      }\n    }\n  });\n\n  if (result.result === 'deployed') {\n    console.log(`\\n\uD83D\uDCE1 Satellite WASM published to CDN.`);\n  }\n\n  return result;\n};\n", "export const hasArgs = ({args, options}: {args?: string[]; options: string[]}): boolean =>\n  args?.find((arg) => options.includes(arg)) !== undefined;\n\nexport const nextArg = ({args, option}: {args?: string[]; option: string}): string | undefined => {\n  const index = (args ?? []).findIndex((arg) => arg === option);\n\n  if (index === -1) {\n    return undefined;\n  }\n\n  return args?.[index + 1];\n};\n", "import {nonNullish} from '@junobuild/utils';\nimport {get as httpGet} from 'http';\nimport {get as httpsGet, type RequestOptions} from 'https';\n\nexport const downloadFromURL = async (url: string | RequestOptions): Promise<Buffer> =>\n  await new Promise((resolve, reject) => {\n    const protocol = typeof url === 'string' ? URL.parse(url)?.protocol : url.protocol;\n    const get = protocol === 'http:' ? httpGet : httpsGet;\n\n    get(url, async (res) => {\n      if (\n        nonNullish(res.statusCode) &&\n        nonNullish(res.headers.location) &&\n        [301, 302].includes(res.statusCode)\n      ) {\n        await downloadFromURL(res.headers.location).then(resolve, reject);\n      }\n\n      const data: Uint8Array[] = [];\n\n      res.on('data', (chunk) => data.push(chunk));\n      res.on('end', () => {\n        resolve(Buffer.concat(data));\n      });\n      res.on('error', reject);\n    });\n  });\n", "import {readFile} from 'node:fs/promises';\nimport type {PackageJson} from '../types/pkg';\n\nexport const readPackageJson = async ({\n  packageJsonPath\n}: {\n  packageJsonPath: string;\n}): Promise<PackageJson> => {\n  const packageJson = await readFile(packageJsonPath, 'utf-8');\n\n  const {dependencies, version, juno, name} = JSON.parse(packageJson) as PackageJson;\n\n  return {\n    name,\n    version,\n    dependencies,\n    juno\n  };\n};\n", "import {isNullish, nonNullish} from '@junobuild/utils';\n\n// In case an answer is replaced by control+c\nexport const assertAnswerCtrlC: (\n  answer: null | undefined | '' | string,\n  message?: string\n  // eslint-disable-next-line local-rules/prefer-object-params\n) => asserts answer is NonNullable<string> = (\n  answer: null | undefined | '' | string,\n  message?: string\n): void => {\n  if (isNullish(answer) || answer === '') {\n    if (nonNullish(message)) {\n      console.error(message);\n    }\n\n    process.exit(1);\n  }\n};\n"],
  "mappings": "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a,CACzB,MACA,MACA,OACA,MACA,OACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,MACA,MACA,OACA,MACA,MACA,MACA,KACA,MACA,KACA,MACA,MACA,MACA,MACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,OACA,MACA,MACA,MACA,MACA,OACA,MACA,QACA,MACA,MACA,MACA,OACA,OACA,QACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,KACA,SACA,MACA,MACA,MACA,MACA,MACA,KACA,MACA,IACA,KACA,MACA,MACA,MACA,QACA,MACA,OACA,OACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,OACA,MACA,MACA,MACA,KACA,MACA,MACA,MACA,OACA,MACA,MACA,QACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,QACA,MACA,MACA,MACA,KACA,MACA,KACA,MACA,OACA,MACA,MACA,MACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,UACA,QACA,MACA,OACA,MACA,OACA,MACA,MACA,OACA,MACA,MACA,MACA,MACA,OACA,OACA,OACA,OACA,MACA,MACA,MACA,MACA,MACA,OACA,OACA,OACA,OACA,OACA,MACA,MACA,KACA,MACA,OACA,OACA,SACA,MACA,MACA,MACA,UACA,OACD,EAEaC,GAAY,CACxB,aACA,YACA,YACA,aACA,aACA,cACA,oBACA,oBACA,aACA,YACA,qBACA,4BACA,yBACA,uBACA,0BACA,0DACA,0CACA,iDACA,kDACA,0EACA,4EACA,oEACA,yEACA,kBACA,oBACA,+BACA,mBACA,sBACA,8BACA,gCACA,oCACA,YACA,aACA,iBACA,aACA,kBACA,gBACA,YACA,cACA,iBACA,iBACA,yBACA,aACA,aACA,aACA,YACA,YACA,YACA,yBACA,kBACA,aACA,YACA,gBACA,YACA,kBACA,oBACA,4BACA,2BACA,gCACA,kBACA,mBACA,YACA,aACA,gCACA,WACA,WACA,kBACA,eACA,cACA,yBACA,kBACA,mBACA,wBACA,iCACA,wCACA,oCACA,oBACA,6BACA,oBACA,yBACA,mBACA,oBACA,oBACA,kBACA,aACA,wBACA,YACA,YACA,YACA,YACA,YACA,YACA,aACA,kBACA,iCACA,aACA,sBACA,aACA,sBACA,aACA,YACA,oBACA,mBACA,gBACA,aACA,WACA,oBACA,+BACA,cACA,4BACA,+BACA,cACA,yBACA,cACA,aACA,sBACA,mBACA,oBACA,oBACA,wBACA,uBACA,cACA,cACA,2BACA,YACA,aACA,cACA,aACA,aACA,aACA,+BACA,aACA,+BACA,4BACA,qBACA,YACA,8BACA,YACA,YACA,mBACA,YACA,6BACA,gBACA,iCACA,sBACA,oBACA,qBACA,+BACA,mBACA,6BACA,uBACA,wBACA,0CACA,yBACA,oBACA,wEACA,uEACA,0EACA,oDACA,mDACA,0DACA,2DACA,8CACA,uDACA,iDACA,mDACA,mDACA,yDACA,6DACA,2BACA,+BACA,yBACA,2BACA,yCACA,yBACA,gCACA,gCACA,6BACD,EC7WO,IAAMC,EAAN,cAAmC,KAAM,CAAC,EAE1C,SAASC,GAAaC,EAAOC,EAASC,EAAQ,CACpD,GACC,CAAC,OAAO,SAASF,CAAK,GACnBA,EAAQ,GACRA,EAAQC,EAEX,MAAM,IAAIH,EAAqB,GAAGI,CAAM,qBAAqBF,CAAK,aAAaC,CAAO,SAAS,EAGhG,OAAOD,CACR,CAEA,eAAsBG,EAAWC,EAAWC,EAAQ,CAAC,cAAAC,EAAgB,SAAiC,OAAAJ,EAAS,MAAM,EAAI,CAAC,EAAG,CAC5H,IAAMK,EAAaR,GAAaM,EAAQC,EAAeJ,CAAM,EAC7D,MAAME,EAAU,OAAOG,CAAU,CAClC,CAEA,eAAsBC,GAAeJ,EAAWK,EAAQC,EAAS,CAAC,cAAAJ,EAAgBG,EAAO,OAAQ,OAAAP,EAAS,MAAM,EAAI,CAAC,E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",
  "names": ["require_ieee754", "__commonJSMin", "exports", "buffer", "offset", "isLE", "mLen", "nBytes", "e", "m", "eLen", "eMax", "eBias", "nBits", "i", "d", "s", "value", "rt", "defaultMessages", "EndOfStreamError", "AbortError", "init_Errors", "__esmMin", "message", "Deferred", "init_Deferred", "__esmMin", "resolve", "reject", "AbstractStreamReader", "init_AbstractStreamReader", "__esmMin", "init_Errors", "uint8Array", "mayBeLess", "bytesRead", "buffer", "EndOfStreamError", "remaining", "peekData", "lenCopy", "AbortError", "chunkLen", "StreamReader", "init_StreamReader", "__esmMin", "init_Errors", "init_Deferred", "init_AbstractStreamReader", "AbstractStreamReader", "s", "err", "buffer", "mayBeLess", "readBuffer", "request", "Deferred", "AbortError", "WebStreamReader", "init_WebStreamReader", "__esmMin", "init_AbstractStreamReader", "AbstractStreamReader", "reader", "WebStreamByobReader", "init_WebStreamByobReader", "__esmMin", "init_WebStreamReader", "WebStreamReader", "buffer", "mayBeLess", "result", "WebStreamDefaultReader", "init_WebStreamDefaultReader", "__esmMin", "init_Errors", "init_AbstractStreamReader", "AbstractStreamReader", "reader", "target", "chunk", "written", "buffer", "mayBeLess", "totalBytesRead", "result", "EndOfStreamError", "makeWebStreamReader", "stream", "reader", "WebStreamDefaultReader", "WebStreamByobReader", "error", "init_WebStreamReaderFactory", "__esmMin", "init_WebStreamByobReader", "init_WebStreamDefaultReader", "init_stream", "__esmMin", "init_Errors", "init_StreamReader", "init_WebStreamByobReader", "init_WebStreamDefaultReader", "init_WebStreamReaderFactory", "AbstractTokenizer", "init_AbstractTokenizer", "__esmMin", "init_stream", "options", "token", "position", "uint8Array", "EndOfStreamError", "length", "bytesLeft", "maxBufferSize", "ReadStreamTokenizer", "init_ReadStreamTokenizer", "__esmMin", "init_AbstractTokenizer", "init_stream", "AbstractTokenizer", "streamReader", "options", "uint8Array", "normOptions", "skipBytes", "bytesRead", "EndOfStreamError", "skipBuffer", "err", "length", "bufSize", "buf", "totBytesRead", "remaining", "BufferTokenizer", "init_BufferTokenizer", "__esmMin", "init_stream", "init_AbstractTokenizer", "AbstractTokenizer", "uint8Array", "options", "bytesRead", "normOptions", "bytes2read", "EndOfStreamError", "position", "BlobTokenizer", "init_BlobTokenizer", "__esmMin", "init_stream", "init_AbstractTokenizer", "AbstractTokenizer", "blob", "options", "uint8Array", "bytesRead", "buffer", "normOptions", "bytes2read", "EndOfStreamError", "arrayBuffer", "position", "fromStream", "stream", "options", "streamReader", "StreamReader", "_options", "chainedClose", "ReadStreamTokenizer", "fromWebStream", "webStream", "webStreamReader", "makeWebStreamReader", "fromBuffer", "uint8Array", "BufferTokenizer", "fromBlob", "blob", "BlobTokenizer", "init_core", "__esmMin", "init_stream", "init_ReadStreamTokenizer", "init_BufferTokenizer", "init_BlobTokenizer", "init_AbstractTokenizer", "require_ms", "__commonJSMin", "exports", "module", "s", "m", "h", "d", "w", "y", "val", "options", "type", "parse", "fmtLong", "fmtShort", "str", "match", "n", "ms", "msAbs", "plural", "name", "isPlural", "require_common", "__commonJSMin", "exports", "module", "setup", "env", "createDebug", "coerce", "disable", "enable", "enabled", "destroy", "key", "selectColor", "namespace", "hash", "i", "prevTime", "enableOverride", "namespacesCache", "enabledCache", "debug", "args", "self", "curr", "ms", "index", "match", "format", "formatter", "val", "extend", "v", "delimiter", "newDebug", "namespaces", "split", "ns", "matchesTemplate", "search", "template", "searchIndex", "templateIndex", "starIndex", "matchIndex", "name", "skip", "require_browser", "__commonJSMin", "exports", "module", "formatArgs", "save", "load", "useColors", "localstorage", "warned", "m", "args", "c", "index", "lastC", "match", "namespaces", "r", "formatters", "v", "error", "require_has_flag", "__commonJSMin", "exports", "module", "flag", "argv", "prefix", "position", "terminatorPosition", "require_supports_color", "__commonJSMin", "exports", "module", "os", "tty", "hasFlag", "env", "forceColor", "translateLevel", "level", "supportsColor", "haveStream", "streamIsTTY", "min", "osRelease", "sign", "version", "getSupportLevel", "stream", "require_node", "__commonJSMin", "exports", "module", "tty", "util", "init", "log", "formatArgs", "save", "load", "useColors", "supportsColor", "key", "obj", "prop", "_", "k", "val", "args", "name", "c", "colorCode", "prefix", "getDate", "namespaces", "debug", "keys", "i", "formatters", "v", "str", "require_src", "__commonJSMin", "exports", "module", "fsOpen", "FileTokenizer", "init_FileTokenizer", "__esmMin", "init_AbstractTokenizer", "init_stream", "_FileTokenizer", "AbstractTokenizer", "sourceFilePath", "fileHandle", "stat", "options", "uint8Array", "normOptions", "res", "EndOfStreamError", "position", "lib_exports", "__export", "AbortError", "AbstractTokenizer", "EndOfStreamError", "FileTokenizer", "fromBlob", "fromBuffer", "fromFile", "fromStream", "fromWebStream", "fsStat", "stream", "options", "rst", "stat", "init_lib", "__esmMin", "init_core", "init_FileTokenizer", "require_db", "__commonJSMin", "exports", "module", "require_mime_db", "__commonJSMin", "exports", "module", "require_mimeScore", "__commonJSMin", "exports", "module", "FACET_SCORES", "SOURCE_SCORES", "TYPE_SCORES", "mimeType", "source", "type", "subtype", "facet", "facetScore", "sourceScore", "typeScore", "lengthScore", "require_mime_types", "__commonJSMin", "exports", "db", "extname", "mimeScore", "EXTRACT_TYPE_REGEXP", "TEXT_TYPE_REGEXP", "charset", "contentType", "extension", "lookup", "populateMaps", "type", "match", "mime", "str", "exts", "path", "extensions", "types", "i", "_preferredType", "legacyType", "_preferredTypeLegacy", "ext", "type0", "type1", "score0", "score1", "SOURCE_RANK", "require_eventemitter3", "__commonJSMin", "exports", "module", "has", "prefix", "Events", "EE", "fn", "context", "once", "addListener", "emitter", "event", "listener", "evt", "clearEvent", "EventEmitter", "names", "events", "name", "handlers", "i", "l", "ee", "listeners", "a1", "a2", "a3", "a4", "a5", "len", "args", "length", "j", "require_rfdc", "__commonJSMin", "exports", "module", "rfdc", "copyBuffer", "cur", "opts", "rfdcCircles", "constructorHandlers", "fn", "cloneArray", "handler", "cloneProto", "clone", "a", "keys", "a2", "i", "k", "o2", "refs", "refsNew", "o", "index", "isBrowser", "isNode", "isBun", "isDeno", "isElectron", "isJsDom", "isWebWorker", "isDedicatedWorker", "isSharedWorker", "isServiceWorker", "platform", "isMacOs", "isWindows", "isLinux", "isIos", "isAndroid", "init_environment", "__esmMin", "base_exports", "__export", "beep", "clearScreen", "clearTerminal", "cursorBackward", "cursorDown", "cursorForward", "cursorGetPosition", "cursorHide", "cursorLeft", "cursorMove", "cursorNextLine", "cursorPrevLine", "cursorRestorePosition", "cursorSavePosition", "cursorShow", "cursorTo", "cursorUp", "enterAlternativeScreen", "eraseDown", "eraseEndLine", "eraseLine", "eraseLines", "eraseScreen", "eraseStartLine", "eraseUp", "exitAlternativeScreen", "iTerm", "image", "link", "scrollDown", "scrollUp", "process", "ESC", "OSC", "BEL", "SEP", "isTerminalApp", "isWindows", "cwdFunction", "init_base", "__esmMin", "init_environment", "isBrowser", "x", "y", "returnValue", "count", "clear", "i", "text", "url", "data", "options", "cwd", "message", "hasX", "hasY", "init_ansi_escapes", "__esmMin", "init_base", "mimicFunction", "to", "from", "ignoreNonConfigurable", "name", "property", "copyProperty", "changePrototype", "changeToString", "canCopyProperty", "wrappedToString", "toStringDescriptor", "toStringName", "init_mimic_function", "__esmMin", "toDescriptor", "fromDescriptor", "fromPrototype", "withName", "fromBody", "newToString", "writable", "enumerable", "configurable", "calledFunctions", "onetime", "onetime_default", "init_onetime", "__esmMin", "init_mimic_function", "function_", "options", "returnValue", "callCount", "functionName", "arguments_", "mimicFunction", "signals", "init_signals", "__esmMin", "processOk", "kExitEmitter", "global", "ObjectDefineProperty", "Emitter", "SignalExitBase", "signalExitWrap", "SignalExitFallback", "SignalExit", "process", "onExit", "load", "unload", "init_mjs", "__esmMin", "init_signals", "ev", "fn", "list", "i", "code", "signal", "ret", "handler", "cb", "opts", "#hupSig", "#emitter", "#process", "#originalProcessEmit", "#originalProcessReallyExit", "#sigListeners", "#loaded", "sig", "signals", "listeners", "count", "p", "s", "a", "#processEmit", "#processReallyExit", "listener", "args", "og", "process", "terminal", "restoreCursor", "restore_cursor_default", "init_restore_cursor", "__esmMin", "init_onetime", "init_mjs", "onetime_default", "onExit", "process", "isHidden", "cliCursor", "cli_cursor_default", "init_cli_cursor", "__esmMin", "init_restore_cursor", "writableStream", "restore_cursor_default", "force", "ansiRegex", "onlyFirst", "pattern", "init_ansi_regex", "__esmMin", "stripAnsi", "string", "regex", "init_strip_ansi", "__esmMin", "init_ansi_regex", "ansiRegex", "ambiguousRanges", "fullwidthRanges", "halfwidthRanges", "narrowRanges", "wideRanges", "init_lookup_data", "__esmMin", "isInRange", "init_utilities", "__esmMin", "ranges", "codePoint", "low", "high", "mid", "i", "findWideFastPathRange", "ranges", "fastPathStart", "fastPathEnd", "index", "start", "end", "commonCjkCodePoint", "minimumAmbiguousCodePoint", "maximumAmbiguousCodePoint", "minimumFullWidthCodePoint", "maximumFullWidthCodePoint", "minimumHalfWidthCodePoint", "maximumHalfWidthCodePoint", "minimumNarrowCodePoint", "maximumNarrowCodePoint", "minimumWideCodePoint", "maximumWideCodePoint", "wideFastPathStart", "wideFastPathEnd", "isAmbiguous", "isFullWidth", "isWide", "init_lookup", "__esmMin", "init_lookup_data", "init_utilities", "ambiguousRanges", "fullwidthRanges", "halfwidthRanges", "narrowRanges", "wideRanges", "codePoint", "isInRange", "validate", "codePoint", "eastAsianWidth", "ambiguousAsWide", "isFullWidth", "isWide", "isAmbiguous", "init_get_east_asian_width", "__esmMin", "init_lookup", "require_emoji_regex", "__commonJSMin", "exports", "module", "stringWidth", "string", "options", "ambiguousIsNarrow", "countAnsiEscapeCodes", "stripAnsi", "width", "eastAsianWidthOptions", "character", "segmenter", "codePoint", "defaultIgnorableCodePointRegex", "emojiRegex", "eastAsianWidth", "import_emoji_regex", "init_string_width", "__esmMin", "init_strip_ansi", "init_get_east_asian_width", "assembleStyles", "codes", "groupName", "group", "styles", "styleName", "style", "wrapAnsi16", "wrapAnsi256", "wrapAnsi16m", "red", "green", "blue", "hex", "matches", "colorString", "character", "integer", "code", "remainder", "value", "result", "modifierNames", "foregroundColorNames", "backgroundColorNames", "colorNames", "ansiStyles", "ansi_styles_default", "init_ansi_styles", "__esmMin", "offset", "wrapAnsi", "string", "columns", "options", "line", "exec", "ESCAPES", "END_CODE", "ANSI_ESCAPE_BELL", "ANSI_CSI", "ANSI_OSC", "ANSI_SGR_TERMINATOR", "ANSI_ESCAPE_LINK", "wrapAnsiCode", "wrapAnsiHyperlink", "wordLengths", "wrapWord", "stringVisibleTrimSpacesRight", "init_wrap_ansi", "__esmMin", "init_string_width", "init_strip_ansi", "init_ansi_styles", "code", "url", "character", "stringWidth", "rows", "word", "characters", "isInsideEscape", "isInsideLinkEscape", "visible", "stripAnsi", "index", "characterLength", "words", "last", "returnValue", "escapeCode", "escapeUrl", "lengths", "rowLength", "remainingColumns", "breaksStartingThisLine", "row", "preString", "pre", "preStringIndex", "groups", "ansi_styles_default", "assembleStyles", "codes", "groupName", "group", "styles", "styleName", "style", "wrapAnsi16", "wrapAnsi256", "wrapAnsi16m", "red", "green", "blue", "hex", "matches", "colorString", "character", "integer", "code", "remainder", "value", "result", "modifierNames", "foregroundColorNames", "backgroundColorNames", "colorNames", "ansiStyles", "ansi_styles_default", "init_ansi_styles", "__esmMin", "offset", "isFullwidthCodePoint", "codePoint", "isFullWidth", "isWide", "init_is_fullwidth_code_point", "__esmMin", "init_get_east_asian_width", "getEndCode", "code", "endCodesSet", "endCodesMap", "returnValue", "ansi_styles_default", "findNumberIndex", "string", "index", "codePoint", "CODE_POINT_0", "CODE_POINT_9", "parseAnsiCode", "offset", "MAX_ANSI_SEQUENCE_LENGTH", "startIndex", "endIndex", "tokenize", "endCharacter", "visibleCount", "ESCAPES", "isFullWidth", "isFullwidthCodePoint", "character", "reduceAnsiCodes", "codes", "returnValueCode", "undoAnsiCodes", "endCode", "sliceAnsi", "start", "end", "tokens", "activeCodes", "position", "include", "token", "init_slice_ansi", "__esmMin", "init_ansi_styles", "init_is_fullwidth_code_point", "log_update_exports", "__export", "createLogUpdate", "log_update_default", "logUpdateStderr", "process", "stream", "showCursor", "previousLineCount", "previousWidth", "getWidth", "previousOutput", "reset", "render", "arguments_", "cli_cursor_default", "output", "fitToTerminalHeight", "width", "wrapAnsi", "base_exports", "defaultTerminalHeight", "logUpdate", "init_log_update", "__esmMin", "init_ansi_escapes", "init_cli_cursor", "init_wrap_ansi", "init_slice_ansi", "init_strip_ansi", "columns", "text", "terminalHeight", "lines", "toRemove", "sliceAnsi", "stripAnsi", "assembleStyles", "codes", "groupName", "group", "styles", "styleName", "style", "wrapAnsi16", "wrapAnsi256", "wrapAnsi16m", "red", "green", "blue", "hex", "matches", "colorString", "character", "integer", "code", "remainder", "value", "result", "modifierNames", "foregroundColorNames", "backgroundColorNames", "colorNames", "ansiStyles", "ansi_styles_default", "init_ansi_styles", "__esmMin", "offset", "isSgrParameterCharacter", "codePoint", "CODE_POINT_0", "CODE_POINT_9", "CODE_POINT_SEMICOLON", "CODE_POINT_COLON", "isCsiParameterCharacter", "CODE_POINT_CSI_PARAMETER_START", "CODE_POINT_CSI_PARAMETER_END", "isCsiIntermediateCharacter", "CODE_POINT_CSI_INTERMEDIATE_START", "CODE_POINT_CSI_INTERMEDIATE_END", "isCsiFinalCharacter", "CODE_POINT_CSI_FINAL_START", "CODE_POINT_CSI_FINAL_END", "isRegionalIndicatorCodePoint", "REGIONAL_INDICATOR_SYMBOL_LETTER_A", "REGIONAL_INDICATOR_SYMBOL_LETTER_Z", "createControlParseResult", "code", "endIndex", "isEmojiStyleGrapheme", "grapheme", "EMOJI_PRESENTATION_GRAPHEME_REGEX", "character", "VARIATION_SELECTOR_16_CODE_POINT", "COMBINING_ENCLOSING_KEYCAP_CODE_POINT", "getGraphemeWidth", "regionalIndicatorCount", "isFullwidthCodePoint", "getSgrPrefix", "ESCAPE", "ANSI_CSI", "createSgrCode", "prefix", "values", "ANSI_SGR_TERMINATOR", "getSgrFragments", "fragments", "sgrPrefix", "parameterString", "rawCodes", "SGR_RESET_CODE", "index", "codeNumber", "SGR_EXTENDED_FOREGROUND_CODE", "SGR_EXTENDED_BACKGROUND_CODE", "colorType", "SGR_COLOR_TYPE_ANSI_256", "SGR_ANSI_256_LAST_PARAMETER_OFFSET", "openCode", "SGR_ANSI_256_FRAGMENT_LENGTH", "ansi_styles_default", "SGR_DEFAULT_FOREGROUND_CODE", "SGR_DEFAULT_BACKGROUND_CODE", "SGR_COLOR_TYPE_TRUECOLOR", "SGR_TRUECOLOR_LAST_PARAMETER_OFFSET", "SGR_TRUECOLOR_FRAGMENT_LENGTH", "endCodeNumbers", "mappedEndCode", "parseCsiCode", "string", "escapeCodePoint", "sequenceStartIndex", "ESCAPE_CODE_POINT", "C1_CSI_CODE_POINT", "hasCanonicalSgrParameters", "sequenceIndex", "parseHyperlinkCode", "hyperlinkPrefix", "hyperlinkClose", "ANSI_HYPERLINK_ESC_PREFIX", "ANSI_HYPERLINK_ESC_CLOSE", "C1_OSC_CODE_POINT", "ANSI_HYPERLINK_C1_PREFIX", "ANSI_HYPERLINK_C1_CLOSE", "uriStart", "ANSI_BELL", "action", "ANSI_OSC_TERMINATOR", "ANSI_STRING_TERMINATOR", "C1_STRING_TERMINATOR", "parseControlStringCode", "supportsBellTerminator", "ANSI_OSC", "ANSI_DCS", "ANSI_SOS", "ANSI_PM", "ANSI_APC", "C1_DCS_CODE_POINT", "C1_SOS_CODE_POINT", "C1_PM_CODE_POINT", "C1_APC_CODE_POINT", "C1_ST_CODE_POINT", "parseAnsiCode", "hyperlinkCode", "controlStringCode", "appendTrailingAnsiTokens", "tokens", "nextCodePoint", "ESCAPES", "escapeCode", "parseCharacterTokenWithRawSegmentation", "graphemeSegments", "segment", "collectVisibleCharacters", "visibleCharacters", "value", "applyGraphemeMetadata", "visibleString", "scalarOffsets", "scalarOffset", "visibleCharacter", "scalarIndex", "GRAPHEME_SEGMENTER", "graphemeIndex", "isFirstInGrapheme", "tokenizeAnsiWithVisibleSegmentation", "endCharacter", "visibleCharacterIndex", "visibleCount", "visibleWidth", "token", "nextVisibleCharacter", "areValuesInSameGrapheme", "leftValue", "rightValue", "pair", "splitIndex", "hasAnsiSplitContinuationAhead", "startIndex", "previousVisibleValue", "hasAnsiCode", "characterToken", "tokenizeAnsi", "hasAnsiSinceLastVisible", "C1_OSC", "init_tokenize_ansi", "__esmMin", "init_ansi_styles", "init_is_fullwidth_code_point", "end", "applySgrFragments", "activeStyles", "fragments", "fragment", "undoAnsiCodes", "closeHyperlink", "hyperlinkToken", "shouldIncludeSgrAfterEnd", "token", "hasStartFragment", "hasClosingEffect", "applySgrToken", "isPastEnd", "returnValue", "include", "activeHyperlink", "position", "applyHyperlinkToken", "applyControlToken", "applyCharacterToken", "start", "applyToken", "parameters", "tokenHandler", "tokenHandlers", "createHasContinuationAheadMap", "tokens", "hasContinuationAhead", "nextCharacterIsContinuation", "tokenIndex", "sliceAnsi", "string", "end", "tokenizeAnsi", "init_slice_ansi", "__esmMin", "init_tokenize_ansi", "isDoubleWidthNonRgiEmojiSequence", "segment", "unqualifiedKeycapRegex", "pictographics", "extendedPictographicRegex", "baseVisible", "leadingNonPrintingRegex", "isZeroWidthCluster", "zeroWidthClusterRegex", "trailingHalfwidthWidth", "eastAsianWidthOptions", "extra", "char", "eastAsianWidth", "stringWidth", "input", "options", "ambiguousIsNarrow", "countAnsiEscapeCodes", "string", "stripAnsi", "width", "segmenter", "rgiEmojiRegex", "codePoint", "init_string_width", "__esmMin", "init_strip_ansi", "init_get_east_asian_width", "cli_truncate_exports", "__export", "cliTruncate", "getIndexOfNearestSpace", "string", "wantedIndex", "shouldSearchRight", "direction", "index", "finalIndex", "text", "columns", "options", "position", "space", "preferTruncationOnSpace", "truncationCharacter", "length", "stringWidth", "ANSI", "isSgrParameter", "code", "leadingSgrSpanEndIndex", "j", "trailingSgrSpanStartIndex", "start", "appendWithInheritedStyleFromEnd", "visible", "suffix", "prependWithInheritedStyleFromStart", "prefix", "end", "nearestSpace", "right", "sliceAnsi", "half", "spaceNearFirstBreakPoint", "spaceNearSecondBreakPoint", "left", "init_cli_truncate", "__esmMin", "init_slice_ansi", "init_string_width", "isDoubleWidthNonRgiEmojiSequence", "segment", "unqualifiedKeycapRegex", "pictographics", "extendedPictographicRegex", "baseVisible", "leadingNonPrintingRegex", "isZeroWidthCluster", "zeroWidthClusterRegex", "trailingHalfwidthWidth", "eastAsianWidthOptions", "extra", "char", "eastAsianWidth", "stringWidth", "input", "options", "ambiguousIsNarrow", "countAnsiEscapeCodes", "string", "stripAnsi", "width", "segmenter", "rgiEmojiRegex", "codePoint", "init_string_width", "__esmMin", "init_strip_ansi", "init_get_east_asian_width", "assembleStyles", "codes", "groupName", "group", "styles", "styleName", "style", "wrapAnsi16", "wrapAnsi256", "wrapAnsi16m", "red", "green", "blue", "hex", "matches", "colorString", "character", "integer", "code", "remainder", "value", "result", "modifierNames", "foregroundColorNames", "backgroundColorNames", "colorNames", "ansiStyles", "ansi_styles_default", "init_ansi_styles", "__esmMin", "offset", "wrap_ansi_exports", "__export", "wrapAnsi", "string", "columns", "options", "line", "exec", "expandTabs", "ANSI_ESCAPE", "ANSI_ESCAPE_CSI", "ESCAPES", "ANSI_ESCAPE_BELL", "ANSI_CSI", "ANSI_OSC", "ANSI_SGR_TERMINATOR", "ANSI_SGR_RESET", "ANSI_SGR_RESET_FOREGROUND", "ANSI_SGR_RESET_BACKGROUND", "ANSI_SGR_RESET_UNDERLINE_COLOR", "ANSI_SGR_FOREGROUND_EXTENDED", "ANSI_SGR_BACKGROUND_EXTENDED", "ANSI_SGR_UNDERLINE_COLOR_EXTENDED", "ANSI_SGR_COLOR_MODE_256", "ANSI_SGR_COLOR_MODE_RGB", "ANSI_ESCAPE_LINK", "ANSI_ESCAPE_REGEX", "ANSI_ESCAPE_CSI_REGEX", "ANSI_SGR_MODIFIER_CLOSE_CODES", "segmenter", "getGraphemes", "TAB_SIZE", "wrapAnsiCode", "wrapAnsiHyperlink", "getSgrTokens", "removeActiveStyle", "upsertActiveStyle", "removeModifierStylesByClose", "getColorStyle", "applySgrResetCode", "applySgrToken", "applySgrParameters", "applySgrResets", "applyLeadingSgrResets", "getClosingSgrSequence", "getOpeningSgrSequence", "wordLengths", "wrapWord", "stringVisibleTrimSpacesRight", "init_wrap_ansi", "__esmMin", "init_string_width", "init_strip_ansi", "init_ansi_styles", "ansi_styles_default", "segment", "code", "url", "sgrParameters", "codes", "sgrParameter", "sgrTokens", "index", "mode", "red", "green", "blue", "activeStyles", "family", "activeStyleIndex", "activeStyle", "nextActiveStyle", "closeCode", "sgrToken", "colorStyle", "close", "remainder", "match", "word", "stringWidth", "rows", "characters", "isInsideEscape", "isInsideLinkEscape", "visible", "stripAnsi", "character", "characterLength", "words", "last", "segments", "expandedLine", "spaces", "returnValue", "escapeUrl", "lengths", "rowLength", "remainingColumns", "breaksStartingThisLine", "row", "preString", "pre", "preStringIndex", "groups", "openingStyles", "nonNullish", "rm", "buildFunctions", "infile", "banner", "esbuild", "buildScript", "outfile", "platform", "define", "treeShaking", "build", "version", "importEsbuildAndExitOnError", "metafile", "errors", "warnings", "outputFiles", "nonNullish", "toNullable", "ora", "DEPLOY_DEFAULT_SOURCE", "DEPLOY_DEFAULT_IGNORE", "DEPLOY_DEFAULT_ENCODING", "DEPLOY_DEFAULT_PRECOMPRESS", "IGNORE_OS_FILES", "UPLOAD_DEFAULT_BATCH_SIZE", "COLLECTION_DAPP", "COLLECTION_CDN_RELEASES", "nonNullish", "spawnCommand", "nonNullish", "stat", "path", "process", "URL", "applyForceShell", "file", "commandArguments", "options", "shouldForceShell", "escapeFile", "argument", "escapeArgument", "shell", "cwd", "env", "isExe", "Path", "PATH", "exeExtensions", "extension", "EXE_MEMO", "mIsExe", "parts", "part", "possibleFile", "spawn", "command", "cwd", "args", "env", "stdout", "silentOut", "silentErrors", "resolve", "reject", "escapedCommand", "escapedArgs", "options", "applyForceShell", "nonNullish", "process", "spawnCommand", "data", "code", "err", "execute", "executeHooks", "hooks", "hook", "cmd", "args", "execute", "isNullish", "nonNullish", "crypto", "ieee754", "WINDOWS_1252_EXTRA", "WINDOWS_1252_REVERSE", "code", "char", "_utf8Decoder", "utf8Decoder", "_utf8Decoder", "CHUNK", "REPLACEMENT", "textDecode", "bytes", "encoding", "dec", "utf8Decoder", "decodeUTF8", "decodeUTF16LE", "decodeASCII", "decodeLatin1", "decodeWindows1252", "flushChunk", "parts", "chunk", "pushCodeUnit", "codeUnit", "CHUNK", "pushCodePoint", "cp", "decodeUTF8", "bytes", "i", "b1", "REPLACEMENT", "b2", "b3", "b4", "decodeUTF16LE", "len", "u1", "u2", "decodeASCII", "end", "codes", "j", "k", "decodeLatin1", "decodeWindows1252", "out", "b", "extra", "WINDOWS_1252_EXTRA", "dv", "array", "UINT8", "offset", "value", "UINT16_LE", "UINT16_BE", "UINT32_LE", "array", "offset", "dv", "value", "UINT32_BE", "INT32_BE", "array", "offset", "dv", "value", "UINT64_LE", "array", "offset", "dv", "value", "StringType", "len", "encoding", "data", "offset", "bytes", "textDecode", "init_core", "import_debug", "Signature", "DataDescriptor", "array", "UINT32_LE", "LocalFileHeaderToken", "flags", "UINT16_LE", "EndOfCentralDirectoryRecordToken", "FileHeader", "signatureToArray", "signature", "signatureBytes", "UINT32_LE", "debug", "initDebug", "syncBufferSize", "ddSignatureArray", "Signature", "eocdSignatureBytes", "ZipHandler", "_ZipHandler", "tokenizer", "randomReadTokenizer", "chunkLength", "buffer", "i", "pos", "offset", "eocdHeader", "EndOfCentralDirectoryRecordToken", "files", "n", "entry", "FileHeader", "StringType", "fileCb", "entries", "stop", "zipHeader", "next", "fileData", "chunks", "len", "nextHeaderIndex", "indexOf", "size", "data", "mergeArrays", "DataDescriptor", "fileHeader", "cb", "uncompressedData", "input", "controller", "ds", "output", "err", "message", "header", "LocalFileHeaderToken", "portion", "bufferLength", "portionLength", "found", "j", "totalLength", "acc", "curr", "mergedArray", "chunk", "GzipHandler", "tokenizer", "controller", "buffer", "size", "objectToString", "uint8ArrayStringified", "isType", "value", "typeConstructor", "typeStringified", "objectToString", "isUint8Array", "uint8ArrayStringified", "assertUint8Array", "value", "isUint8Array", "concatUint8Arrays", "arrays", "totalLength", "accumulator", "currentValue", "returnValue", "offset", "array", "assertUint8Array", "cachedDecoders", "cachedEncoder", "byteToHexLookupTable", "_", "index", "getUintBE", "view", "byteLength", "stringToBytes", "string", "encoding", "bytes", "index", "code", "character", "tarHeaderChecksumMatches", "arrayBuffer", "offset", "readSum", "StringType", "sum", "uint32SyncSafeToken", "buffer", "extensions", "mimeTypes", "ParserHardLimitError", "getSafeBound", "value", "maximum", "reason", "safeIgnore", "tokenizer", "length", "maximumLength", "safeLength", "safeReadBuffer", "buffer", "options", "checkBytes", "headers", "index", "header", "hasUnknownFileSize", "fileSize", "hasExceededUnknownSizeScanBudget", "startOffset", "maximumBytes", "init_core", "maximumZipEntrySizeInBytes", "maximumZipEntryCount", "maximumZipBufferedReadSizeInBytes", "maximumZipTextEntrySizeInBytes", "recoverableZipErrorMessages", "recoverableZipErrorMessagePrefixes", "recoverableZipErrorCodes", "decompressDeflateRawWithLimit", "data", "maximumLength", "reader", "controller", "chunks", "totalLength", "done", "value", "uncompressedData", "offset", "chunk", "mergeByteChunks", "merged", "getMaximumZipBufferedReadLength", "tokenizer", "fileSize", "remainingBytes", "isRecoverableZipError", "error", "EndOfStreamError", "ParserHardLimitError", "prefix", "canReadZipEntryForDetection", "zipHeader", "maximumSize", "sizes", "size", "createIWorkZipDetectionState", "updateIWorkZipDetectionStateFromFilename", "iWorkState", "filename", "getIWorkFileTypeFromZipEntries", "getFileTypeFromMimeType", "mimeType", "createOpenXmlZipDetectionState", "updateOpenXmlZipDetectionStateFromFilename", "openXmlState", "getOpenXmlFileTypeFromDirectoryNames", "getOpenXmlFileTypeFromZipEntries", "getOpenXmlMimeTypeFromContentTypesXml", "xmlContent", "endPosition", "truncatedContent", "firstQuotePosition", "zipDataDescriptorSignature", "zipDataDescriptorLengthInBytes", "zipDataDescriptorOverlapLengthInBytes", "findZipDataDescriptorOffset", "buffer", "bytesConsumed", "lastPossibleDescriptorOffset", "index", "UINT32_LE", "readZipDataDescriptorEntryWithLimit", "zipHandler", "shouldBuffer", "syncBuffer", "syncBufferLength", "length", "dataDescriptorOffset", "retainedLength", "chunkLength", "hasUnknownFileSize", "getRemainingZipScanBudget", "startOffset", "readZipEntryData", "maximumDescriptorLength", "safeIgnore", "fileData", "ZipHandler", "callback", "fileCallback", "stop", "zipEntryCount", "zipScanStart", "hasExceededUnknownSizeScanBudget", "next", "dataDescriptor", "detectZip", "fileType", "isOpenXmlContentTypesEntry", "openXmlFileTypeFromEntries", "iWorkFileType", "maximumEbmlDocumentTypeSizeInBytes", "maximumEbmlElementPayloadSizeInBytes", "maximumEbmlElementCount", "detectEbml", "tokenizer", "readField", "msb", "UINT8", "mask", "ic", "id", "safeReadBuffer", "readElement", "idField", "lengthField", "nrLength", "idView", "lengthView", "getUintBE", "readChildren", "children", "ebmlElementCount", "hasExceededUnknownSizeScanBudget", "ebmlScanStart", "previousPosition", "element", "documentTypeLength", "getSafeBound", "StringType", "hasUnknownFileSize", "safeIgnore", "rootElement", "init_core", "maximumPngChunkCount", "maximumPngStreamScanBudgetInBytes", "maximumPngChunkSizeInBytes", "isPngAncillaryChunk", "type", "detectPng", "tokenizer", "pngFileType", "apngFileType", "readChunkHeader", "INT32_BE", "StringType", "isUnknownPngStream", "hasUnknownFileSize", "pngScanStart", "pngChunkCount", "hasSeenImageHeader", "hasExceededUnknownSizeScanBudget", "previousPosition", "chunk", "safeIgnore", "error", "ParserHardLimitError", "EndOfStreamError", "init_core", "maximumAsfHeaderObjectCount", "maximumAsfHeaderPayloadSizeInBytes", "detectAsf", "tokenizer", "isMalformedAsf", "readHeader", "guid", "safeReadBuffer", "UINT64_LE", "safeIgnore", "isUnknownFileSize", "hasUnknownFileSize", "asfHeaderScanStart", "asfHeaderObjectCount", "hasExceededUnknownSizeScanBudget", "previousPosition", "header", "payload", "checkBytes", "typeId", "error", "EndOfStreamError", "ParserHardLimitError", "reasonableDetectionSizeInBytes", "maximumMpegOffsetTolerance", "maximumNestedGzipDetectionSizeInBytes", "maximumNestedGzipProbeDepth", "unknownSizeGzipProbeTimeoutInMilliseconds", "maximumId3HeaderSizeInBytes", "maximumTiffTagCount", "maximumDetectionReentryCount", "maximumTiffStreamIfdOffsetInBytes", "maximumTiffIfdOffsetInBytes", "normalizeSampleSize", "sampleSize", "normalizeMpegOffsetTolerance", "mpegOffsetTolerance", "getKnownFileSizeOrMaximum", "fileSize", "toDefaultStream", "stream", "readWithSignal", "reader", "signal", "_resolve", "reject", "createByteLimitedReadableStream", "maximumBytes", "emittedBytes", "sourceDone", "sourceCanceled", "cancelSource", "reason", "controller", "done", "value", "remainingBytes", "FileTypeParser", "_FileTypeParser", "options", "normalizedMpegOffsetTolerance", "normalizeMpegOffsetTolerance", "stream", "fromWebStream", "toDefaultStream", "tokenizer", "detectionReentryCount", "initialPosition", "detector", "fileType", "error", "EndOfStreamError", "ParserHardLimitError", "input", "buffer", "fromBuffer", "blob", "fromBlob", "path", "fsPromises", "FileTokenizer", "fileHandle", "fileStat", "sampleSize", "normalizeSampleSize", "reasonableDetectionSizeInBytes", "detectedFileType", "streamEnded", "reader", "chunks", "totalSize", "value", "done", "readWithSignal", "sample", "concatUint8Arrays", "transformStream", "controller", "chunk", "newStream", "maximumNestedGzipProbeDepth", "gzipHandler", "GzipHandler", "limitedInflatedStream", "createByteLimitedReadableStream", "maximumNestedGzipDetectionSizeInBytes", "hasUnknownSize", "hasUnknownFileSize", "timeout", "probeSignal", "probeParser", "compressedFileType", "timeoutController", "unknownSizeGzipProbeTimeoutInMilliseconds", "header", "checkBytes", "stringToBytes", "maximumDetectionReentryCount", "safeIgnore", "id3HeaderLength", "uint32SyncSafeToken", "isUnknownFileSize", "maximumId3HeaderSizeInBytes", "detectZip", "type", "detectEbml", "machOArchitectureCount", "UINT32_BE", "javaClassFileMajorVersion", "UINT16_BE", "version", "StringType", "char7", "detectPng", "brandMajor", "detectAsf", "jsonSize", "tarHeaderChecksumMatches", "encoding", "fileSize", "getKnownFileSizeOrMaximum", "depth", "bigEndian", "tagId", "UINT16_LE", "numberOfTags", "maximumTiffTagCount", "maximumTiffIfdOffsetInBytes", "tiffFileType", "ifdOffset", "UINT32_LE", "someId1", "someId2", "maximumTiffStreamIfdOffsetInBytes", "maximumTiffOffset", "offset", "supportedExtensions", "extensions", "supportedMimeTypes", "mimeTypes", "fileTypeFromFile", "import_mime_types", "balanced", "a", "b", "str", "ma", "maybeMatch", "mb", "r", "range", "reg", "m", "begs", "beg", "left", "right", "result", "ai", "bi", "i", "escSlash", "escOpen", "escClose", "escComma", "escPeriod", "escSlashPattern", "escOpenPattern", "escClosePattern", "escCommaPattern", "escPeriodPattern", "slashPattern", "openPattern", "closePattern", "commaPattern", "periodPattern", "EXPANSION_MAX", "numeric", "str", "escapeBraces", "unescapeBraces", "parseCommaParts", "parts", "m", "balanced", "pre", "body", "post", "p", "postParts", "expand", "options", "max", "expand_", "embrace", "isPadded", "el", "lte", "y", "gte", "isTop", "expansions", "k", "expansion", "isNumericSequence", "isAlphaSequence", "isSequence", "isOptions", "n", "N", "x", "width", "incr", "test", "pad", "i", "c", "need", "z", "j", "assertValidPattern", "pattern", "posixClasses", "braceEscape", "s", "regexpEscape", "rangesToString", "ranges", "parseClass", "glob", "position", "pos", "negs", "i", "sawStart", "uflag", "escaping", "negate", "endPos", "rangeStart", "WHILE", "c", "cls", "unip", "u", "neg", "r", "sranges", "snegs", "unescape", "s", "windowsPathsNoEscape", "magicalBraces", "types", "isExtglobType", "c", "isExtglobAST", "adoptionMap", "adoptionWithSpaceMap", "adoptionAnyMap", "usurpMap", "startNoTraversal", "startNoDot", "addPatternStart", "justDots", "reSpecials", "regExpEscape", "s", "qmark", "star", "starNoEmpty", "ID", "AST", "#root", "#hasMagic", "#uflag", "#parts", "#parent", "#parentIndex", "#negs", "#filledNegs", "#options", "#toString", "#emptyExt", "type", "parent", "options", "p", "#fillNegs", "n", "pp", "i", "part", "parts", "_a", "ret", "pl", "#parseAST", "str", "ast", "pos", "opt", "extDepth", "maxDepth", "escaping", "inBrace", "braceStart", "braceNeg", "acc", "ext", "#canAdoptType", "depthAdd", "#canAdoptWithSpace", "child", "#canAdopt", "map", "gc", "#adoptWithSpace", "index", "blank", "#adopt", "#canUsurpType", "#canUsurp", "#usurp", "m", "nt", "pattern", "glob", "re", "body", "hasMagic", "uflag", "flags", "allowDot", "dot", "#flatten", "noEmpty", "src", "_", "#parseGlob", "start", "aps", "needNoTrav", "needNoDot", "end", "unescape", "repeated", "#partsToRegExp", "me", "bodyDotAllowed", "final", "close", "iterations", "done", "_hasMagic", "inStar", "needUflag", "consumed", "magic", "parseClass", "escape", "s", "windowsPathsNoEscape", "magicalBraces", "minimatch", "p", "pattern", "options", "assertValidPattern", "Minimatch", "starDotExtRE", "starDotExtTest", "ext", "f", "starDotExtTestDot", "starDotExtTestNocase", "starDotExtTestNocaseDot", "starDotStarRE", "starDotStarTest", "starDotStarTestDot", "dotStarRE", "dotStarTest", "starRE", "starTest", "starTestDot", "qmarksRE", "qmarksTestNocase", "$0", "noext", "qmarksTestNoExt", "qmarksTestNocaseDot", "qmarksTestNoExtDot", "qmarksTestDot", "qmarksTest", "len", "defaultPlatform", "path", "sep", "GLOBSTAR", "qmark", "star", "twoStarDot", "twoStarNoDot", "filter", "a", "b", "defaults", "def", "orig", "type", "parent", "s", "list", "braceExpand", "expand", "makeRe", "match", "mm", "globMagic", "regExpEscape", "awe", "part", "_", "args", "rawGlobParts", "set", "__", "isUNC", "isDrive", "ss", "i", "globParts", "partset", "j", "optimizationLevel", "parts", "gs", "prev", "didSomething", "dd", "gss", "next", "p2", "other", "splin", "matched", "emptyGSMatch", "ai", "bi", "result", "which", "negate", "negateOffset", "file", "partial", "fileStartIndex", "patternStartIndex", "fileDrive", "fileUNC", "patternDrive", "patternUNC", "fdi", "pdi", "fd", "pd", "#matchGlobstar", "#matchOne", "fileIndex", "patternIndex", "firstgs", "lastgs", "head", "body", "tail", "fileHead", "fileTailMatch", "tailStart", "sawSome", "bodySegments", "currentBody", "nonGsParts", "nonGsPartsSums", "fileLength", "#matchGlobStarBodySections", "bodyIndex", "globStarDepth", "sawTail", "bs", "after", "sub", "fi", "pi", "pl", "fl", "hit", "m", "fastTest", "re", "AST", "twoStar", "flags", "pp", "filtered", "prefixes", "open", "close", "ff", "filename", "escape", "unescape", "readFile", "extname", "join", "fullPath", "file", "sourceAbsolutePath", "createReadStream", "createWriteStream", "Readable", "createBrotliCompress", "createGunzip", "createGzip", "gunzipFile", "source", "resolve", "reject", "sourceStream", "Readable", "chunks", "gzip", "createGunzip", "chunk", "compressFiles", "sourceFiles", "precompress", "precompressions", "compressFilesForOptions", "acc", "files", "pattern", "DEPLOY_DEFAULT_PRECOMPRESS", "algorithm", "filesToCompress", "file", "minimatch", "compressFile", "gzipFile", "params", "brotliFile", "destination", "createReadStream", "destinationPath", "destinationStream", "createWriteStream", "compressor", "createBrotliCompress", "createGzip", "isGzip", "buffer", "basename", "lstatSync", "readdirSync", "access", "join", "files", "source", "file", "path", "fileExists", "err", "fileSizeInBytes", "size", "listSourceFilesForDeploy", "sourceAbsolutePath", "ignore", "files", "file", "filterFile", "IGNORE_OS_FILES", "basename", "pattern", "minimatch", "prepareDeploy", "config", "listAssets", "assertSourceDirExists", "includeAllFiles", "source", "DEPLOY_DEFAULT_SOURCE", "ignore", "DEPLOY_DEFAULT_IGNORE", "encoding", "DEPLOY_DEFAULT_ENCODING", "precompress", "DEPLOY_DEFAULT_PRECOMPRESS", "sourceAbsolutePath", "join", "prepareFiles", "filterFilesToUpload", "files", "existingAssets", "promises", "file", "fileNeedUpload", "upload", "computeSha256", "buffer", "readFile", "crypto", "effectiveFilePath", "asset", "f", "fullPath", "isNullish", "fileToUpload", "sha256", "sourceFiles", "listSourceFilesForDeploy", "compressedFiles", "compressFiles", "compressed", "uncompressedFiles", "sourceCompressed", "mapEncodingType", "ext", "customEncoding", "pattern", "_", "minimatch", "nonNullish", "encodingType", "extname", "mapFiles", "alternateFile", "fileType", "fileTypeFromFile", "mimeType", "mime", "uncompressedFilesDetails", "mapBothFiles", "mapCompressedFile", "mapSourceFile", "mapReplaceFile", "bothCompressedFilesDetails", "mode", "commitProposal", "initProposal", "submitProposal", "fromNullable", "isNullish", "uint8ArrayToHexString", "ora", "proposeChanges", "proposalType", "cdn", "executeChanges", "autoCommit", "init", "spinner", "proposalId", "_", "submit", "__", "proposalSha256", "status", "sha256", "err", "formatBytes", "bytes", "unit", "import_index", "eventemitter3_default", "EventEmitter", "import_rfdc", "inspect", "styleText", "format", "EOL", "StringDecoder", "Writable", "randomUUID", "ANSI_ESCAPE", "ANSI_ESCAPE_CODES", "ListrEnvironmentVariables", "ListrErrorTypes", "ListrEventType", "ListrRendererSelection", "ListrTaskEventType", "ListrTaskState", "EventManager", "eventemitter3_default", "dispatch", "args", "handler", "isObservable", "obj", "isReadable", "isUnicodeSupported", "ListrEnvironmentVariables", "CLEAR_LINE_REGEX", "BELL_REGEX", "cleanseAnsi", "chunk", "color", "inspect", "text", "styleText", "indent", "string", "count", "FIGURES_MAIN", "FIGURES_FALLBACK", "figures", "splat", "message", "format", "ListrLogLevels", "LISTR_LOGGER_STYLE", "LISTR_LOGGER_STDERR_LEVELS", "ListrLogger", "options", "ProcessOutput", "level", "output", "eol", "args", "suffixes", "suffix", "prefixes", "prefix", "icon", "i", "coloring", "EOL", "m", "ProcessOutputBuffer", "StringDecoder", "data", "callback", "ProcessOutputStream", "stream", "self", "target", "prop", "receiver", "buffer", "stdout", "stderr", "ANSI_ESCAPE_CODES", "name", "a", "b", "createWritable", "cb", "writable", "Writable", "Spinner", "isUnicodeSupported", "cb", "interval", "ListrDefaultRendererLogLevels", "LISTR_DEFAULT_RENDERER_STYLE", "figures", "color", "parseTimer", "duration", "seconds", "minutes", "parsedTime", "PRESET_TIMER", "DefaultRenderer", "PRESET_TIMER", "color", "tasks", "options", "events", "LISTR_DEFAULT_RENDERER_STYLE", "Spinner", "ListrLogger", "createLogUpdate", "truncate", "wrap", "ListrEventType", "render", "renderTasks", "renderBottomBar", "renderPrompt", "EOL", "task", "output", "rendererOptions", "ListrDefaultRendererLogLevels", "subtask", "message", "icon", "level", "parsed", "columns", "s", "i", "ListrRendererError", "str", "indent", "outputBar", "bottomBar", "rendererTaskOptions", "ListrTaskEventType", "prompt", "cleansed", "cleanseAnsi", "state", "ListrTaskState", "ListrLogLevels", "assertFunctionOrSelf", "subtaskLevel", "subtaskRender", "o", "a", "b", "ProcessOutputBuffer", "data", "source", "SilentRenderer", "SimpleRenderer", "time", "LISTR_LOGGER_STYLE", "LISTR_LOGGER_STDERR_LEVELS", "subtasks", "timer", "TestRendererSerializer", "event", "t", "entity", "property", "TestRenderer", "title", "key", "value", "VerboseRenderer", "RENDERERS", "isRendererSupported", "renderer", "getRendererClass", "getRenderer", "ListrRendererSelection", "r", "functionOrSelf", "args", "clone", "rfdc", "cloneObject", "obj", "Concurrency", "fn", "resolve", "callback", "promise", "cleanup", "delay", "ListrError", "error", "type", "PromptError", "TaskWrapper", "splat", "Listr", "metadata", "adapter", "createWritable", "chunk", "ctx", "ListrTaskEventManager", "EventManager", "Task", "randomUUID", "listr", "context", "wrapper", "handleResult", "result", "isReadable", "reject", "isObservable", "startTime", "skipped", "retryCount", "retryDelay", "retries", "err", "ListrErrorTypes", "ListrEventManager", "parentTask", "ListrEnvironmentVariables", "relative", "nonNullish", "notEmptyString", "readFile", "basename", "isNullish", "nonNullish", "splitSourceFiles", "files", "alternateFiles", "sourceFiles", "file", "prepareFileForUpload", "file", "fullPath", "collection", "filePath", "token", "description", "basename", "readFile", "nonNullish", "notEmptyString", "executeUploadFiles", "files", "uploadFiles", "alternateFiles", "sourceFiles", "splitSourceFiles", "uploadFilesWithBatch", "uploadFiles", "collection", "rest", "batchUploadFiles", "files", "progress", "uploadFilesToStorage", "sourceAbsolutePath", "upload", "batchSize", "executeUploadFiles", "groupFiles", "step", "totalBatches", "i", "deferredPromise", "resolve", "res", "filesProgress", "file", "initBatch", "commitBatch", "uploadFilesTasks", "promise", "relative", "batchLabel", "batchType", "run", "Listr", "_ctx", "task", "fullPath", "filesToUpload", "paths", "prepareFileForUpload", "relative", "uploadFilesIndividually", "uploadFile", "collection", "rest", "batchUploadFiles", "file", "paths", "uploadFileToStorage", "files", "sourceAbsolutePath", "upload", "batchSize", "executeUploadFiles", "groupFiles", "step", "i", "Listr", "relative", "fileToUpload", "prepareFileForUpload", "uploadFiles", "upload", "files", "rest", "uploadFilesWithBatch", "logSuccess", "uploadFilesIndividually", "count", "size", "paths", "fileSizeInBytes", "formatBytes", "deployAndProposeChanges", "upload", "files", "sourceAbsolutePath", "collection", "batchSize", "proposalType", "autoCommit", "proposalRest", "executeChanges", "proposalId", "uploadFiles", "params", "proposeChanges", "file", "preDeploy", "predeploy", "executeHooks", "postDeploy", "postdeploy", "deploy", "params", "upload", "prepareResult", "prepareDeploy", "files", "sourceAbsolutePath", "source", "prepareSourceFiles", "UPLOAD_DEFAULT_BATCH_SIZE", "uploadFiles", "COLLECTION_DAPP", "deployWithProposal", "clearAssets", "restProposal", "sourceFiles", "result", "deployAndProposeChanges", "toNullable", "assertMemory", "rest", "spinner", "ora", "nonNullish", "err", "filePaths", "file", "filePath", "fullPath", "generateFunctions", "isNullish", "writeFile", "relative", "buildAndGenerateFunctions", "outfileJs", "outfileRs", "args", "build", "buildWithEsbuild", "code", "buildResult", "generate", "writeDevFunctions", "dev", "writeDevScript", "infile", "banner", "metafile", "buildErrors", "buildWarnings", "version", "outputFiles", "buildFunctions", "warnings", "text", "errors", "entry", "isNullish", "generateFunctions", "writeFile", "relative", "ora", "join", "listSourceFilesForPrune", "sourceAbsolutePath", "ignore", "filteredFiles", "files", "file", "shouldBeIncluded", "fullPath", "isIgnored", "pattern", "minimatch", "params", "preparePrune", "config", "listAssets", "assertSourceDirExists", "source", "DEPLOY_DEFAULT_SOURCE", "ignore", "DEPLOY_DEFAULT_IGNORE", "sourceAbsolutePath", "join", "localPaths", "listSourceFilesForPrune", "filterFilesToPrune", "fullPath", "prune", "groupFiles", "pruneFn", "batchSize", "totalBatches", "i", "files", "batchLabel", "Listr", "prune", "dryRun", "batchSize", "rest", "pruneFn", "prepareResult", "preparePrune", "files", "fullPath", "params", "spinner", "ora", "sourceFiles", "err", "toNullable", "publishSatelliteWasmWithProposal", "assertMemory", "filePath", "fullPath", "upload", "restDeploy", "version", "restProposal", "result", "deployAndProposeChanges", "COLLECTION_CDN_RELEASES", "UPLOAD_DEFAULT_BATCH_SIZE", "toNullable", "hasArgs", "args", "options", "arg", "nextArg", "option", "index", "nonNullish", "httpGet", "httpsGet", "downloadFromURL", "url", "resolve", "reject", "res", "data", "chunk", "readFile", "readPackageJson", "packageJsonPath", "packageJson", "dependencies", "version", "juno", "name", "isNullish", "nonNullish", "assertAnswerCtrlC", "answer", "message"]
}
