apitally
Version:
Simple API monitoring & analytics for REST APIs built with Express, Fastify, NestJS, AdonisJS, Hono, H3, Elysia, and Koa.
1 lines • 264 kB
Source Map (JSON)
{"version":3,"sources":["../../node_modules/pino-std-serializers/lib/err-helpers.js","../../node_modules/pino-std-serializers/lib/err-proto.js","../../node_modules/pino-std-serializers/lib/err.js","../../node_modules/pino-std-serializers/lib/err-with-cause.js","../../node_modules/pino-std-serializers/lib/req.js","../../node_modules/pino-std-serializers/lib/res.js","../../node_modules/pino-std-serializers/index.js","../../node_modules/pino/lib/caller.js","../../node_modules/fast-redact/lib/validator.js","../../node_modules/fast-redact/lib/rx.js","../../node_modules/fast-redact/lib/parse.js","../../node_modules/fast-redact/lib/redactor.js","../../node_modules/fast-redact/lib/modifiers.js","../../node_modules/fast-redact/lib/restorer.js","../../node_modules/fast-redact/lib/state.js","../../node_modules/fast-redact/index.js","../../node_modules/pino/lib/symbols.js","../../node_modules/pino/lib/redaction.js","../../node_modules/pino/lib/time.js","../../node_modules/quick-format-unescaped/index.js","../../node_modules/atomic-sleep/index.js","../../node_modules/sonic-boom/index.js","../../node_modules/on-exit-leak-free/index.js","../../node_modules/thread-stream/package.json","../../node_modules/thread-stream/lib/wait.js","../../node_modules/thread-stream/lib/indexes.js","../../node_modules/thread-stream/index.js","../../node_modules/pino/lib/transport.js","../../node_modules/pino/lib/tools.js","../../node_modules/pino/lib/constants.js","../../node_modules/pino/lib/levels.js","../../node_modules/pino/lib/meta.js","../../node_modules/pino/lib/proto.js","../../node_modules/safe-stable-stringify/index.js","../../node_modules/pino/lib/multistream.js","../../node_modules/pino/pino.js","../../src/loggers/pino.ts","../../src/loggers/utils.ts"],"sourcesContent":["'use strict'\n\n// **************************************************************\n// * Code initially copied/adapted from \"pony-cause\" npm module *\n// * Please upstream improvements there *\n// **************************************************************\n\nconst isErrorLike = (err) => {\n return err && typeof err.message === 'string'\n}\n\n/**\n * @param {Error|{ cause?: unknown|(()=>err)}} err\n * @returns {Error|Object|undefined}\n */\nconst getErrorCause = (err) => {\n if (!err) return\n\n /** @type {unknown} */\n // @ts-ignore\n const cause = err.cause\n\n // VError / NError style causes\n if (typeof cause === 'function') {\n // @ts-ignore\n const causeResult = err.cause()\n\n return isErrorLike(causeResult)\n ? causeResult\n : undefined\n } else {\n return isErrorLike(cause)\n ? cause\n : undefined\n }\n}\n\n/**\n * Internal method that keeps a track of which error we have already added, to avoid circular recursion\n *\n * @private\n * @param {Error} err\n * @param {Set<Error>} seen\n * @returns {string}\n */\nconst _stackWithCauses = (err, seen) => {\n if (!isErrorLike(err)) return ''\n\n const stack = err.stack || ''\n\n // Ensure we don't go circular or crazily deep\n if (seen.has(err)) {\n return stack + '\\ncauses have become circular...'\n }\n\n const cause = getErrorCause(err)\n\n if (cause) {\n seen.add(err)\n return (stack + '\\ncaused by: ' + _stackWithCauses(cause, seen))\n } else {\n return stack\n }\n}\n\n/**\n * @param {Error} err\n * @returns {string}\n */\nconst stackWithCauses = (err) => _stackWithCauses(err, new Set())\n\n/**\n * Internal method that keeps a track of which error we have already added, to avoid circular recursion\n *\n * @private\n * @param {Error} err\n * @param {Set<Error>} seen\n * @param {boolean} [skip]\n * @returns {string}\n */\nconst _messageWithCauses = (err, seen, skip) => {\n if (!isErrorLike(err)) return ''\n\n const message = skip ? '' : (err.message || '')\n\n // Ensure we don't go circular or crazily deep\n if (seen.has(err)) {\n return message + ': ...'\n }\n\n const cause = getErrorCause(err)\n\n if (cause) {\n seen.add(err)\n\n // @ts-ignore\n const skipIfVErrorStyleCause = typeof err.cause === 'function'\n\n return (message +\n (skipIfVErrorStyleCause ? '' : ': ') +\n _messageWithCauses(cause, seen, skipIfVErrorStyleCause))\n } else {\n return message\n }\n}\n\n/**\n * @param {Error} err\n * @returns {string}\n */\nconst messageWithCauses = (err) => _messageWithCauses(err, new Set())\n\nmodule.exports = {\n isErrorLike,\n getErrorCause,\n stackWithCauses,\n messageWithCauses\n}\n","'use strict'\n\nconst seen = Symbol('circular-ref-tag')\nconst rawSymbol = Symbol('pino-raw-err-ref')\n\nconst pinoErrProto = Object.create({}, {\n type: {\n enumerable: true,\n writable: true,\n value: undefined\n },\n message: {\n enumerable: true,\n writable: true,\n value: undefined\n },\n stack: {\n enumerable: true,\n writable: true,\n value: undefined\n },\n aggregateErrors: {\n enumerable: true,\n writable: true,\n value: undefined\n },\n raw: {\n enumerable: false,\n get: function () {\n return this[rawSymbol]\n },\n set: function (val) {\n this[rawSymbol] = val\n }\n }\n})\nObject.defineProperty(pinoErrProto, rawSymbol, {\n writable: true,\n value: {}\n})\n\nmodule.exports = {\n pinoErrProto,\n pinoErrorSymbols: {\n seen,\n rawSymbol\n }\n}\n","'use strict'\n\nmodule.exports = errSerializer\n\nconst { messageWithCauses, stackWithCauses, isErrorLike } = require('./err-helpers')\nconst { pinoErrProto, pinoErrorSymbols } = require('./err-proto')\nconst { seen } = pinoErrorSymbols\n\nconst { toString } = Object.prototype\n\nfunction errSerializer (err) {\n if (!isErrorLike(err)) {\n return err\n }\n\n err[seen] = undefined // tag to prevent re-looking at this\n const _err = Object.create(pinoErrProto)\n _err.type = toString.call(err.constructor) === '[object Function]'\n ? err.constructor.name\n : err.name\n _err.message = messageWithCauses(err)\n _err.stack = stackWithCauses(err)\n\n if (Array.isArray(err.errors)) {\n _err.aggregateErrors = err.errors.map(err => errSerializer(err))\n }\n\n for (const key in err) {\n if (_err[key] === undefined) {\n const val = err[key]\n if (isErrorLike(val)) {\n // We append cause messages and stacks to _err, therefore skipping causes here\n if (key !== 'cause' && !Object.prototype.hasOwnProperty.call(val, seen)) {\n _err[key] = errSerializer(val)\n }\n } else {\n _err[key] = val\n }\n }\n }\n\n delete err[seen] // clean up tag in case err is serialized again later\n _err.raw = err\n return _err\n}\n","'use strict'\n\nmodule.exports = errWithCauseSerializer\n\nconst { isErrorLike } = require('./err-helpers')\nconst { pinoErrProto, pinoErrorSymbols } = require('./err-proto')\nconst { seen } = pinoErrorSymbols\n\nconst { toString } = Object.prototype\n\nfunction errWithCauseSerializer (err) {\n if (!isErrorLike(err)) {\n return err\n }\n\n err[seen] = undefined // tag to prevent re-looking at this\n const _err = Object.create(pinoErrProto)\n _err.type = toString.call(err.constructor) === '[object Function]'\n ? err.constructor.name\n : err.name\n _err.message = err.message\n _err.stack = err.stack\n\n if (Array.isArray(err.errors)) {\n _err.aggregateErrors = err.errors.map(err => errWithCauseSerializer(err))\n }\n\n if (isErrorLike(err.cause) && !Object.prototype.hasOwnProperty.call(err.cause, seen)) {\n _err.cause = errWithCauseSerializer(err.cause)\n }\n\n for (const key in err) {\n if (_err[key] === undefined) {\n const val = err[key]\n if (isErrorLike(val)) {\n if (!Object.prototype.hasOwnProperty.call(val, seen)) {\n _err[key] = errWithCauseSerializer(val)\n }\n } else {\n _err[key] = val\n }\n }\n }\n\n delete err[seen] // clean up tag in case err is serialized again later\n _err.raw = err\n return _err\n}\n","'use strict'\n\nmodule.exports = {\n mapHttpRequest,\n reqSerializer\n}\n\nconst rawSymbol = Symbol('pino-raw-req-ref')\nconst pinoReqProto = Object.create({}, {\n id: {\n enumerable: true,\n writable: true,\n value: ''\n },\n method: {\n enumerable: true,\n writable: true,\n value: ''\n },\n url: {\n enumerable: true,\n writable: true,\n value: ''\n },\n query: {\n enumerable: true,\n writable: true,\n value: ''\n },\n params: {\n enumerable: true,\n writable: true,\n value: ''\n },\n headers: {\n enumerable: true,\n writable: true,\n value: {}\n },\n remoteAddress: {\n enumerable: true,\n writable: true,\n value: ''\n },\n remotePort: {\n enumerable: true,\n writable: true,\n value: ''\n },\n raw: {\n enumerable: false,\n get: function () {\n return this[rawSymbol]\n },\n set: function (val) {\n this[rawSymbol] = val\n }\n }\n})\nObject.defineProperty(pinoReqProto, rawSymbol, {\n writable: true,\n value: {}\n})\n\nfunction reqSerializer (req) {\n // req.info is for hapi compat.\n const connection = req.info || req.socket\n const _req = Object.create(pinoReqProto)\n _req.id = (typeof req.id === 'function' ? req.id() : (req.id || (req.info ? req.info.id : undefined)))\n _req.method = req.method\n // req.originalUrl is for expressjs compat.\n if (req.originalUrl) {\n _req.url = req.originalUrl\n } else {\n const path = req.path\n // path for safe hapi compat.\n _req.url = typeof path === 'string' ? path : (req.url ? req.url.path || req.url : undefined)\n }\n\n if (req.query) {\n _req.query = req.query\n }\n\n if (req.params) {\n _req.params = req.params\n }\n\n _req.headers = req.headers\n _req.remoteAddress = connection && connection.remoteAddress\n _req.remotePort = connection && connection.remotePort\n // req.raw is for hapi compat/equivalence\n _req.raw = req.raw || req\n return _req\n}\n\nfunction mapHttpRequest (req) {\n return {\n req: reqSerializer(req)\n }\n}\n","'use strict'\n\nmodule.exports = {\n mapHttpResponse,\n resSerializer\n}\n\nconst rawSymbol = Symbol('pino-raw-res-ref')\nconst pinoResProto = Object.create({}, {\n statusCode: {\n enumerable: true,\n writable: true,\n value: 0\n },\n headers: {\n enumerable: true,\n writable: true,\n value: ''\n },\n raw: {\n enumerable: false,\n get: function () {\n return this[rawSymbol]\n },\n set: function (val) {\n this[rawSymbol] = val\n }\n }\n})\nObject.defineProperty(pinoResProto, rawSymbol, {\n writable: true,\n value: {}\n})\n\nfunction resSerializer (res) {\n const _res = Object.create(pinoResProto)\n _res.statusCode = res.headersSent ? res.statusCode : null\n _res.headers = res.getHeaders ? res.getHeaders() : res._headers\n _res.raw = res\n return _res\n}\n\nfunction mapHttpResponse (res) {\n return {\n res: resSerializer(res)\n }\n}\n","'use strict'\n\nconst errSerializer = require('./lib/err')\nconst errWithCauseSerializer = require('./lib/err-with-cause')\nconst reqSerializers = require('./lib/req')\nconst resSerializers = require('./lib/res')\n\nmodule.exports = {\n err: errSerializer,\n errWithCause: errWithCauseSerializer,\n mapHttpRequest: reqSerializers.mapHttpRequest,\n mapHttpResponse: resSerializers.mapHttpResponse,\n req: reqSerializers.reqSerializer,\n res: resSerializers.resSerializer,\n\n wrapErrorSerializer: function wrapErrorSerializer (customSerializer) {\n if (customSerializer === errSerializer) return customSerializer\n return function wrapErrSerializer (err) {\n return customSerializer(errSerializer(err))\n }\n },\n\n wrapRequestSerializer: function wrapRequestSerializer (customSerializer) {\n if (customSerializer === reqSerializers.reqSerializer) return customSerializer\n return function wrappedReqSerializer (req) {\n return customSerializer(reqSerializers.reqSerializer(req))\n }\n },\n\n wrapResponseSerializer: function wrapResponseSerializer (customSerializer) {\n if (customSerializer === resSerializers.resSerializer) return customSerializer\n return function wrappedResSerializer (res) {\n return customSerializer(resSerializers.resSerializer(res))\n }\n }\n}\n","'use strict'\n\nfunction noOpPrepareStackTrace (_, stack) {\n return stack\n}\n\nmodule.exports = function getCallers () {\n const originalPrepare = Error.prepareStackTrace\n Error.prepareStackTrace = noOpPrepareStackTrace\n const stack = new Error().stack\n Error.prepareStackTrace = originalPrepare\n\n if (!Array.isArray(stack)) {\n return undefined\n }\n\n const entries = stack.slice(2)\n\n const fileNames = []\n\n for (const entry of entries) {\n if (!entry) {\n continue\n }\n\n fileNames.push(entry.getFileName())\n }\n\n return fileNames\n}\n","'use strict'\n\nmodule.exports = validator\n\nfunction validator (opts = {}) {\n const {\n ERR_PATHS_MUST_BE_STRINGS = () => 'fast-redact - Paths must be (non-empty) strings',\n ERR_INVALID_PATH = (s) => `fast-redact – Invalid path (${s})`\n } = opts\n\n return function validate ({ paths }) {\n paths.forEach((s) => {\n if (typeof s !== 'string') {\n throw Error(ERR_PATHS_MUST_BE_STRINGS())\n }\n try {\n if (/〇/.test(s)) throw Error()\n const expr = (s[0] === '[' ? '' : '.') + s.replace(/^\\*/, '〇').replace(/\\.\\*/g, '.〇').replace(/\\[\\*\\]/g, '[〇]')\n if (/\\n|\\r|;/.test(expr)) throw Error()\n if (/\\/\\*/.test(expr)) throw Error()\n /* eslint-disable-next-line */\n Function(`\n 'use strict'\n const o = new Proxy({}, { get: () => o, set: () => { throw Error() } });\n const 〇 = null;\n o${expr}\n if ([o${expr}].length !== 1) throw Error()`)()\n } catch (e) {\n throw Error(ERR_INVALID_PATH(s))\n }\n })\n }\n}\n","'use strict'\n\nmodule.exports = /[^.[\\]]+|\\[((?:.)*?)\\]/g\n\n/*\nRegular expression explanation:\n\nAlt 1: /[^.[\\]]+/ - Match one or more characters that are *not* a dot (.)\n opening square bracket ([) or closing square bracket (])\n\nAlt 2: /\\[((?:.)*?)\\]/ - If the char IS dot or square bracket, then create a capture\n group (which will be capture group $1) that matches anything\n within square brackets. Expansion is lazy so it will\n stop matching as soon as the first closing bracket is met `]`\n (rather than continuing to match until the final closing bracket).\n*/\n","'use strict'\n\nconst rx = require('./rx')\n\nmodule.exports = parse\n\nfunction parse ({ paths }) {\n const wildcards = []\n var wcLen = 0\n const secret = paths.reduce(function (o, strPath, ix) {\n var path = strPath.match(rx).map((p) => p.replace(/'|\"|`/g, ''))\n const leadingBracket = strPath[0] === '['\n path = path.map((p) => {\n if (p[0] === '[') return p.substr(1, p.length - 2)\n else return p\n })\n const star = path.indexOf('*')\n if (star > -1) {\n const before = path.slice(0, star)\n const beforeStr = before.join('.')\n const after = path.slice(star + 1, path.length)\n const nested = after.length > 0\n wcLen++\n wildcards.push({\n before,\n beforeStr,\n after,\n nested\n })\n } else {\n o[strPath] = {\n path: path,\n val: undefined,\n precensored: false,\n circle: '',\n escPath: JSON.stringify(strPath),\n leadingBracket: leadingBracket\n }\n }\n return o\n }, {})\n\n return { wildcards, wcLen, secret }\n}\n","'use strict'\n\nconst rx = require('./rx')\n\nmodule.exports = redactor\n\nfunction redactor ({ secret, serialize, wcLen, strict, isCensorFct, censorFctTakesPath }, state) {\n /* eslint-disable-next-line */\n const redact = Function('o', `\n if (typeof o !== 'object' || o == null) {\n ${strictImpl(strict, serialize)}\n }\n const { censor, secret } = this\n const originalSecret = {}\n const secretKeys = Object.keys(secret)\n for (var i = 0; i < secretKeys.length; i++) {\n originalSecret[secretKeys[i]] = secret[secretKeys[i]]\n }\n\n ${redactTmpl(secret, isCensorFct, censorFctTakesPath)}\n this.compileRestore()\n ${dynamicRedactTmpl(wcLen > 0, isCensorFct, censorFctTakesPath)}\n this.secret = originalSecret\n ${resultTmpl(serialize)}\n `).bind(state)\n\n redact.state = state\n\n if (serialize === false) {\n redact.restore = (o) => state.restore(o)\n }\n\n return redact\n}\n\nfunction redactTmpl (secret, isCensorFct, censorFctTakesPath) {\n return Object.keys(secret).map((path) => {\n const { escPath, leadingBracket, path: arrPath } = secret[path]\n const skip = leadingBracket ? 1 : 0\n const delim = leadingBracket ? '' : '.'\n const hops = []\n var match\n while ((match = rx.exec(path)) !== null) {\n const [ , ix ] = match\n const { index, input } = match\n if (index > skip) hops.push(input.substring(0, index - (ix ? 0 : 1)))\n }\n var existence = hops.map((p) => `o${delim}${p}`).join(' && ')\n if (existence.length === 0) existence += `o${delim}${path} != null`\n else existence += ` && o${delim}${path} != null`\n\n const circularDetection = `\n switch (true) {\n ${hops.reverse().map((p) => `\n case o${delim}${p} === censor:\n secret[${escPath}].circle = ${JSON.stringify(p)}\n break\n `).join('\\n')}\n }\n `\n\n const censorArgs = censorFctTakesPath\n ? `val, ${JSON.stringify(arrPath)}`\n : `val`\n\n return `\n if (${existence}) {\n const val = o${delim}${path}\n if (val === censor) {\n secret[${escPath}].precensored = true\n } else {\n secret[${escPath}].val = val\n o${delim}${path} = ${isCensorFct ? `censor(${censorArgs})` : 'censor'}\n ${circularDetection}\n }\n }\n `\n }).join('\\n')\n}\n\nfunction dynamicRedactTmpl (hasWildcards, isCensorFct, censorFctTakesPath) {\n return hasWildcards === true ? `\n {\n const { wildcards, wcLen, groupRedact, nestedRedact } = this\n for (var i = 0; i < wcLen; i++) {\n const { before, beforeStr, after, nested } = wildcards[i]\n if (nested === true) {\n secret[beforeStr] = secret[beforeStr] || []\n nestedRedact(secret[beforeStr], o, before, after, censor, ${isCensorFct}, ${censorFctTakesPath})\n } else secret[beforeStr] = groupRedact(o, before, censor, ${isCensorFct}, ${censorFctTakesPath})\n }\n }\n ` : ''\n}\n\nfunction resultTmpl (serialize) {\n return serialize === false ? `return o` : `\n var s = this.serialize(o)\n this.restore(o)\n return s\n `\n}\n\nfunction strictImpl (strict, serialize) {\n return strict === true\n ? `throw Error('fast-redact: primitives cannot be redacted')`\n : serialize === false ? `return o` : `return this.serialize(o)`\n}\n","'use strict'\n\nmodule.exports = {\n groupRedact,\n groupRestore,\n nestedRedact,\n nestedRestore\n}\n\nfunction groupRestore ({ keys, values, target }) {\n if (target == null || typeof target === 'string') return\n const length = keys.length\n for (var i = 0; i < length; i++) {\n const k = keys[i]\n target[k] = values[i]\n }\n}\n\nfunction groupRedact (o, path, censor, isCensorFct, censorFctTakesPath) {\n const target = get(o, path)\n if (target == null || typeof target === 'string') return { keys: null, values: null, target, flat: true }\n const keys = Object.keys(target)\n const keysLength = keys.length\n const pathLength = path.length\n const pathWithKey = censorFctTakesPath ? [...path] : undefined\n const values = new Array(keysLength)\n\n for (var i = 0; i < keysLength; i++) {\n const key = keys[i]\n values[i] = target[key]\n\n if (censorFctTakesPath) {\n pathWithKey[pathLength] = key\n target[key] = censor(target[key], pathWithKey)\n } else if (isCensorFct) {\n target[key] = censor(target[key])\n } else {\n target[key] = censor\n }\n }\n return { keys, values, target, flat: true }\n}\n\n/**\n * @param {RestoreInstruction[]} instructions a set of instructions for restoring values to objects\n */\nfunction nestedRestore (instructions) {\n for (let i = 0; i < instructions.length; i++) {\n const { target, path, value } = instructions[i]\n let current = target\n for (let i = path.length - 1; i > 0; i--) {\n current = current[path[i]]\n }\n current[path[0]] = value\n }\n}\n\nfunction nestedRedact (store, o, path, ns, censor, isCensorFct, censorFctTakesPath) {\n const target = get(o, path)\n if (target == null) return\n const keys = Object.keys(target)\n const keysLength = keys.length\n for (var i = 0; i < keysLength; i++) {\n const key = keys[i]\n specialSet(store, target, key, path, ns, censor, isCensorFct, censorFctTakesPath)\n }\n return store\n}\n\nfunction has (obj, prop) {\n return obj !== undefined && obj !== null\n ? ('hasOwn' in Object ? Object.hasOwn(obj, prop) : Object.prototype.hasOwnProperty.call(obj, prop))\n : false\n}\n\nfunction specialSet (store, o, k, path, afterPath, censor, isCensorFct, censorFctTakesPath) {\n const afterPathLen = afterPath.length\n const lastPathIndex = afterPathLen - 1\n const originalKey = k\n var i = -1\n var n\n var nv\n var ov\n var oov = null\n var wc = null\n var kIsWc\n var wcov\n var consecutive = false\n var level = 0\n // need to track depth of the `redactPath` tree\n var depth = 0\n var redactPathCurrent = tree()\n ov = n = o[k]\n if (typeof n !== 'object') return\n while (n != null && ++i < afterPathLen) {\n depth += 1\n k = afterPath[i]\n oov = ov\n if (k !== '*' && !wc && !(typeof n === 'object' && k in n)) {\n break\n }\n if (k === '*') {\n if (wc === '*') {\n consecutive = true\n }\n wc = k\n if (i !== lastPathIndex) {\n continue\n }\n }\n if (wc) {\n const wcKeys = Object.keys(n)\n for (var j = 0; j < wcKeys.length; j++) {\n const wck = wcKeys[j]\n wcov = n[wck]\n kIsWc = k === '*'\n if (consecutive) {\n redactPathCurrent = node(redactPathCurrent, wck, depth)\n level = i\n ov = iterateNthLevel(wcov, level - 1, k, path, afterPath, censor, isCensorFct, censorFctTakesPath, originalKey, n, nv, ov, kIsWc, wck, i, lastPathIndex, redactPathCurrent, store, o[originalKey], depth + 1)\n } else {\n if (kIsWc || (typeof wcov === 'object' && wcov !== null && k in wcov)) {\n if (kIsWc) {\n ov = wcov\n } else {\n ov = wcov[k]\n }\n nv = (i !== lastPathIndex)\n ? ov\n : (isCensorFct\n ? (censorFctTakesPath ? censor(ov, [...path, originalKey, ...afterPath]) : censor(ov))\n : censor)\n if (kIsWc) {\n const rv = restoreInstr(node(redactPathCurrent, wck, depth), ov, o[originalKey])\n store.push(rv)\n n[wck] = nv\n } else {\n if (wcov[k] === nv) {\n // pass\n } else if ((nv === undefined && censor !== undefined) || (has(wcov, k) && nv === ov)) {\n redactPathCurrent = node(redactPathCurrent, wck, depth)\n } else {\n redactPathCurrent = node(redactPathCurrent, wck, depth)\n const rv = restoreInstr(node(redactPathCurrent, k, depth + 1), ov, o[originalKey])\n store.push(rv)\n wcov[k] = nv\n }\n }\n }\n }\n }\n wc = null\n } else {\n ov = n[k]\n redactPathCurrent = node(redactPathCurrent, k, depth)\n nv = (i !== lastPathIndex)\n ? ov\n : (isCensorFct\n ? (censorFctTakesPath ? censor(ov, [...path, originalKey, ...afterPath]) : censor(ov))\n : censor)\n if ((has(n, k) && nv === ov) || (nv === undefined && censor !== undefined)) {\n // pass\n } else {\n const rv = restoreInstr(redactPathCurrent, ov, o[originalKey])\n store.push(rv)\n n[k] = nv\n }\n n = n[k]\n }\n if (typeof n !== 'object') break\n // prevent circular structure, see https://github.com/pinojs/pino/issues/1513\n if (ov === oov || typeof ov === 'undefined') {\n // pass\n }\n }\n}\n\nfunction get (o, p) {\n var i = -1\n var l = p.length\n var n = o\n while (n != null && ++i < l) {\n n = n[p[i]]\n }\n return n\n}\n\nfunction iterateNthLevel (wcov, level, k, path, afterPath, censor, isCensorFct, censorFctTakesPath, originalKey, n, nv, ov, kIsWc, wck, i, lastPathIndex, redactPathCurrent, store, parent, depth) {\n if (level === 0) {\n if (kIsWc || (typeof wcov === 'object' && wcov !== null && k in wcov)) {\n if (kIsWc) {\n ov = wcov\n } else {\n ov = wcov[k]\n }\n nv = (i !== lastPathIndex)\n ? ov\n : (isCensorFct\n ? (censorFctTakesPath ? censor(ov, [...path, originalKey, ...afterPath]) : censor(ov))\n : censor)\n if (kIsWc) {\n const rv = restoreInstr(redactPathCurrent, ov, parent)\n store.push(rv)\n n[wck] = nv\n } else {\n if (wcov[k] === nv) {\n // pass\n } else if ((nv === undefined && censor !== undefined) || (has(wcov, k) && nv === ov)) {\n // pass\n } else {\n const rv = restoreInstr(node(redactPathCurrent, k, depth + 1), ov, parent)\n store.push(rv)\n wcov[k] = nv\n }\n }\n }\n }\n for (const key in wcov) {\n if (typeof wcov[key] === 'object') {\n redactPathCurrent = node(redactPathCurrent, key, depth)\n iterateNthLevel(wcov[key], level - 1, k, path, afterPath, censor, isCensorFct, censorFctTakesPath, originalKey, n, nv, ov, kIsWc, wck, i, lastPathIndex, redactPathCurrent, store, parent, depth + 1)\n }\n }\n}\n\n/**\n * @typedef {object} TreeNode\n * @prop {TreeNode} [parent] reference to the parent of this node in the tree, or `null` if there is no parent\n * @prop {string} key the key that this node represents (key here being part of the path being redacted\n * @prop {TreeNode[]} children the child nodes of this node\n * @prop {number} depth the depth of this node in the tree\n */\n\n/**\n * instantiate a new, empty tree\n * @returns {TreeNode}\n */\nfunction tree () {\n return { parent: null, key: null, children: [], depth: 0 }\n}\n\n/**\n * creates a new node in the tree, attaching it as a child of the provided parent node\n * if the specified depth matches the parent depth, adds the new node as a _sibling_ of the parent instead\n * @param {TreeNode} parent the parent node to add a new node to (if the parent depth matches the provided `depth` value, will instead add as a sibling of this\n * @param {string} key the key that the new node represents (key here being part of the path being redacted)\n * @param {number} depth the depth of the new node in the tree - used to determing whether to add the new node as a child or sibling of the provided `parent` node\n * @returns {TreeNode} a reference to the newly created node in the tree\n */\nfunction node (parent, key, depth) {\n if (parent.depth === depth) {\n return node(parent.parent, key, depth)\n }\n\n var child = {\n parent,\n key,\n depth,\n children: []\n }\n\n parent.children.push(child)\n\n return child\n}\n\n/**\n * @typedef {object} RestoreInstruction\n * @prop {string[]} path a reverse-order path that can be used to find the correct insertion point to restore a `value` for the given `parent` object\n * @prop {*} value the value to restore\n * @prop {object} target the object to restore the `value` in\n */\n\n/**\n * create a restore instruction for the given redactPath node\n * generates a path in reverse order by walking up the redactPath tree\n * @param {TreeNode} node a tree node that should be at the bottom of the redact path (i.e. have no children) - this will be used to walk up the redact path tree to construct the path needed to restore\n * @param {*} value the value to restore\n * @param {object} target a reference to the parent object to apply the restore instruction to\n * @returns {RestoreInstruction} an instruction used to restore a nested value for a specific object\n */\nfunction restoreInstr (node, value, target) {\n let current = node\n const path = []\n do {\n path.push(current.key)\n current = current.parent\n } while (current.parent != null)\n\n return { path, value, target }\n}\n","'use strict'\n\nconst { groupRestore, nestedRestore } = require('./modifiers')\n\nmodule.exports = restorer\n\nfunction restorer () {\n return function compileRestore () {\n if (this.restore) {\n this.restore.state.secret = this.secret\n return\n }\n const { secret, wcLen } = this\n const paths = Object.keys(secret)\n const resetters = resetTmpl(secret, paths)\n const hasWildcards = wcLen > 0\n const state = hasWildcards ? { secret, groupRestore, nestedRestore } : { secret }\n /* eslint-disable-next-line */\n this.restore = Function(\n 'o',\n restoreTmpl(resetters, paths, hasWildcards)\n ).bind(state)\n this.restore.state = state\n }\n}\n\n/**\n * Mutates the original object to be censored by restoring its original values\n * prior to censoring.\n *\n * @param {object} secret Compiled object describing which target fields should\n * be censored and the field states.\n * @param {string[]} paths The list of paths to censor as provided at\n * initialization time.\n *\n * @returns {string} String of JavaScript to be used by `Function()`. The\n * string compiles to the function that does the work in the description.\n */\nfunction resetTmpl (secret, paths) {\n return paths.map((path) => {\n const { circle, escPath, leadingBracket } = secret[path]\n const delim = leadingBracket ? '' : '.'\n const reset = circle\n ? `o.${circle} = secret[${escPath}].val`\n : `o${delim}${path} = secret[${escPath}].val`\n const clear = `secret[${escPath}].val = undefined`\n return `\n if (secret[${escPath}].val !== undefined) {\n try { ${reset} } catch (e) {}\n ${clear}\n }\n `\n }).join('')\n}\n\n/**\n * Creates the body of the restore function\n *\n * Restoration of the redacted object happens\n * backwards, in reverse order of redactions,\n * so that repeated redactions on the same object\n * property can be eventually rolled back to the\n * original value.\n *\n * This way dynamic redactions are restored first,\n * starting from the last one working backwards and\n * followed by the static ones.\n *\n * @returns {string} the body of the restore function\n */\nfunction restoreTmpl (resetters, paths, hasWildcards) {\n const dynamicReset = hasWildcards === true ? `\n const keys = Object.keys(secret)\n const len = keys.length\n for (var i = len - 1; i >= ${paths.length}; i--) {\n const k = keys[i]\n const o = secret[k]\n if (o) {\n if (o.flat === true) this.groupRestore(o)\n else this.nestedRestore(o)\n secret[k] = null\n }\n }\n ` : ''\n\n return `\n const secret = this.secret\n ${dynamicReset}\n ${resetters}\n return o\n `\n}\n","'use strict'\n\nmodule.exports = state\n\nfunction state (o) {\n const {\n secret,\n censor,\n compileRestore,\n serialize,\n groupRedact,\n nestedRedact,\n wildcards,\n wcLen\n } = o\n const builder = [{ secret, censor, compileRestore }]\n if (serialize !== false) builder.push({ serialize })\n if (wcLen > 0) builder.push({ groupRedact, nestedRedact, wildcards, wcLen })\n return Object.assign(...builder)\n}\n","'use strict'\n\nconst validator = require('./lib/validator')\nconst parse = require('./lib/parse')\nconst redactor = require('./lib/redactor')\nconst restorer = require('./lib/restorer')\nconst { groupRedact, nestedRedact } = require('./lib/modifiers')\nconst state = require('./lib/state')\nconst rx = require('./lib/rx')\nconst validate = validator()\nconst noop = (o) => o\nnoop.restore = noop\n\nconst DEFAULT_CENSOR = '[REDACTED]'\nfastRedact.rx = rx\nfastRedact.validator = validator\n\nmodule.exports = fastRedact\n\nfunction fastRedact (opts = {}) {\n const paths = Array.from(new Set(opts.paths || []))\n const serialize = 'serialize' in opts ? (\n opts.serialize === false ? opts.serialize\n : (typeof opts.serialize === 'function' ? opts.serialize : JSON.stringify)\n ) : JSON.stringify\n const remove = opts.remove\n if (remove === true && serialize !== JSON.stringify) {\n throw Error('fast-redact – remove option may only be set when serializer is JSON.stringify')\n }\n const censor = remove === true\n ? undefined\n : 'censor' in opts ? opts.censor : DEFAULT_CENSOR\n\n const isCensorFct = typeof censor === 'function'\n const censorFctTakesPath = isCensorFct && censor.length > 1\n\n if (paths.length === 0) return serialize || noop\n\n validate({ paths, serialize, censor })\n\n const { wildcards, wcLen, secret } = parse({ paths, censor })\n\n const compileRestore = restorer()\n const strict = 'strict' in opts ? opts.strict : true\n\n return redactor({ secret, wcLen, serialize, strict, isCensorFct, censorFctTakesPath }, state({\n secret,\n censor,\n compileRestore,\n serialize,\n groupRedact,\n nestedRedact,\n wildcards,\n wcLen\n }))\n}\n","'use strict'\n\nconst setLevelSym = Symbol('pino.setLevel')\nconst getLevelSym = Symbol('pino.getLevel')\nconst levelValSym = Symbol('pino.levelVal')\nconst levelCompSym = Symbol('pino.levelComp')\nconst useLevelLabelsSym = Symbol('pino.useLevelLabels')\nconst useOnlyCustomLevelsSym = Symbol('pino.useOnlyCustomLevels')\nconst mixinSym = Symbol('pino.mixin')\n\nconst lsCacheSym = Symbol('pino.lsCache')\nconst chindingsSym = Symbol('pino.chindings')\n\nconst asJsonSym = Symbol('pino.asJson')\nconst writeSym = Symbol('pino.write')\nconst redactFmtSym = Symbol('pino.redactFmt')\n\nconst timeSym = Symbol('pino.time')\nconst timeSliceIndexSym = Symbol('pino.timeSliceIndex')\nconst streamSym = Symbol('pino.stream')\nconst stringifySym = Symbol('pino.stringify')\nconst stringifySafeSym = Symbol('pino.stringifySafe')\nconst stringifiersSym = Symbol('pino.stringifiers')\nconst endSym = Symbol('pino.end')\nconst formatOptsSym = Symbol('pino.formatOpts')\nconst messageKeySym = Symbol('pino.messageKey')\nconst errorKeySym = Symbol('pino.errorKey')\nconst nestedKeySym = Symbol('pino.nestedKey')\nconst nestedKeyStrSym = Symbol('pino.nestedKeyStr')\nconst mixinMergeStrategySym = Symbol('pino.mixinMergeStrategy')\nconst msgPrefixSym = Symbol('pino.msgPrefix')\n\nconst wildcardFirstSym = Symbol('pino.wildcardFirst')\n\n// public symbols, no need to use the same pino\n// version for these\nconst serializersSym = Symbol.for('pino.serializers')\nconst formattersSym = Symbol.for('pino.formatters')\nconst hooksSym = Symbol.for('pino.hooks')\nconst needsMetadataGsym = Symbol.for('pino.metadata')\n\nmodule.exports = {\n setLevelSym,\n getLevelSym,\n levelValSym,\n levelCompSym,\n useLevelLabelsSym,\n mixinSym,\n lsCacheSym,\n chindingsSym,\n asJsonSym,\n writeSym,\n serializersSym,\n redactFmtSym,\n timeSym,\n timeSliceIndexSym,\n streamSym,\n stringifySym,\n stringifySafeSym,\n stringifiersSym,\n endSym,\n formatOptsSym,\n messageKeySym,\n errorKeySym,\n nestedKeySym,\n wildcardFirstSym,\n needsMetadataGsym,\n useOnlyCustomLevelsSym,\n formattersSym,\n hooksSym,\n nestedKeyStrSym,\n mixinMergeStrategySym,\n msgPrefixSym\n}\n","'use strict'\n\nconst fastRedact = require('fast-redact')\nconst { redactFmtSym, wildcardFirstSym } = require('./symbols')\nconst { rx, validator } = fastRedact\n\nconst validate = validator({\n ERR_PATHS_MUST_BE_STRINGS: () => 'pino – redacted paths must be strings',\n ERR_INVALID_PATH: (s) => `pino – redact paths array contains an invalid path (${s})`\n})\n\nconst CENSOR = '[Redacted]'\nconst strict = false // TODO should this be configurable?\n\nfunction redaction (opts, serialize) {\n const { paths, censor } = handle(opts)\n\n const shape = paths.reduce((o, str) => {\n rx.lastIndex = 0\n const first = rx.exec(str)\n const next = rx.exec(str)\n\n // ns is the top-level path segment, brackets + quoting removed.\n let ns = first[1] !== undefined\n ? first[1].replace(/^(?:\"|'|`)(.*)(?:\"|'|`)$/, '$1')\n : first[0]\n\n if (ns === '*') {\n ns = wildcardFirstSym\n }\n\n // top level key:\n if (next === null) {\n o[ns] = null\n return o\n }\n\n // path with at least two segments:\n // if ns is already redacted at the top level, ignore lower level redactions\n if (o[ns] === null) {\n return o\n }\n\n const { index } = next\n const nextPath = `${str.substr(index, str.length - 1)}`\n\n o[ns] = o[ns] || []\n\n // shape is a mix of paths beginning with literal values and wildcard\n // paths [ \"a.b.c\", \"*.b.z\" ] should reduce to a shape of\n // { \"a\": [ \"b.c\", \"b.z\" ], *: [ \"b.z\" ] }\n // note: \"b.z\" is in both \"a\" and * arrays because \"a\" matches the wildcard.\n // (* entry has wildcardFirstSym as key)\n if (ns !== wildcardFirstSym && o[ns].length === 0) {\n // first time ns's get all '*' redactions so far\n o[ns].push(...(o[wildcardFirstSym] || []))\n }\n\n if (ns === wildcardFirstSym) {\n // new * path gets added to all previously registered literal ns's.\n Object.keys(o).forEach(function (k) {\n if (o[k]) {\n o[k].push(nextPath)\n }\n })\n }\n\n o[ns].push(nextPath)\n return o\n }, {})\n\n // the redactor assigned to the format symbol key\n // provides top level redaction for instances where\n // an object is interpolated into the msg string\n const result = {\n [redactFmtSym]: fastRedact({ paths, censor, serialize, strict })\n }\n\n const topCensor = (...args) => {\n return typeof censor === 'function' ? serialize(censor(...args)) : serialize(censor)\n }\n\n return [...Object.keys(shape), ...Object.getOwnPropertySymbols(shape)].reduce((o, k) => {\n // top level key:\n if (shape[k] === null) {\n o[k] = (value) => topCensor(value, [k])\n } else {\n const wrappedCensor = typeof censor === 'function'\n ? (value, path) => {\n return censor(value, [k, ...path])\n }\n : censor\n o[k] = fastRedact({\n paths: shape[k],\n censor: wrappedCensor,\n serialize,\n strict\n })\n }\n return o\n }, result)\n}\n\nfunction handle (opts) {\n if (Array.isArray(opts)) {\n opts = { paths: opts, censor: CENSOR }\n validate(opts)\n return opts\n }\n let { paths, censor = CENSOR, remove } = opts\n if (Array.isArray(paths) === false) { throw Error('pino – redact must contain an array of strings') }\n if (remove === true) censor = undefined\n validate({ paths, censor })\n\n return { paths, censor }\n}\n\nmodule.exports = redaction\n","'use strict'\n\nconst nullTime = () => ''\n\nconst epochTime = () => `,\"time\":${Date.now()}`\n\nconst unixTime = () => `,\"time\":${Math.round(Date.now() / 1000.0)}`\n\nconst isoTime = () => `,\"time\":\"${new Date(Date.now()).toISOString()}\"` // using Date.now() for testability\n\nmodule.exports = { nullTime, epochTime, unixTime, isoTime }\n","'use strict'\nfunction tryStringify (o) {\n try { return JSON.stringify(o) } catch(e) { return '\"[Circular]\"' }\n}\n\nmodule.exports = format\n\nfunction format(f, args, opts) {\n var ss = (opts && opts.stringify) || tryStringify\n var offset = 1\n if (typeof f === 'object' && f !== null) {\n var len = args.length + offset\n if (len === 1) return f\n var objects = new Array(len)\n objects[0] = ss(f)\n for (var index = 1; index < len; index++) {\n objects[index] = ss(args[index])\n }\n return objects.join(' ')\n }\n if (typeof f !== 'string') {\n return f\n }\n var argLen = args.length\n if (argLen === 0) return f\n var str = ''\n var a = 1 - offset\n var lastPos = -1\n var flen = (f && f.length) || 0\n for (var i = 0; i < flen;) {\n if (f.charCodeAt(i) === 37 && i + 1 < flen) {\n lastPos = lastPos > -1 ? lastPos : 0\n switch (f.charCodeAt(i + 1)) {\n case 100: // 'd'\n case 102: // 'f'\n if (a >= argLen)\n break\n if (args[a] == null) break\n if (lastPos < i)\n str += f.slice(lastPos, i)\n str += Number(args[a])\n lastPos = i + 2\n i++\n break\n case 105: // 'i'\n if (a >= argLen)\n break\n if (args[a] == null) break\n if (lastPos < i)\n str += f.slice(lastPos, i)\n str += Math.floor(Number(args[a]))\n lastPos = i + 2\n i++\n break\n case 79: // 'O'\n case 111: // 'o'\n case 106: // 'j'\n if (a >= argLen)\n break\n if (args[a] === undefined) break\n if (lastPos < i)\n str += f.slice(lastPos, i)\n var type = typeof args[a]\n if (type === 'string') {\n str += '\\'' + args[a] + '\\''\n lastPos = i + 2\n i++\n break\n }\n if (type === 'function') {\n str += args[a].name || '<anonymous>'\n lastPos = i + 2\n i++\n break\n }\n str += ss(args[a])\n lastPos = i + 2\n i++\n break\n case 115: // 's'\n if (a >= argLen)\n break\n if (lastPos < i)\n str += f.slice(lastPos, i)\n str += String(args[a])\n lastPos = i + 2\n i++\n break\n case 37: // '%'\n if (lastPos < i)\n str += f.slice(lastPos, i)\n str += '%'\n lastPos = i + 2\n i++\n a--\n break\n }\n ++a\n }\n ++i\n }\n if (lastPos === -1)\n return f\n else if (lastPos < flen) {\n str += f.slice(lastPos)\n }\n\n return str\n}\n","'use strict'\n\n/* global SharedArrayBuffer, Atomics */\n\nif (typeof SharedArrayBuffer !== 'undefined' && typeof Atomics !== 'undefined') {\n const nil = new Int32Array(new SharedArrayBuffer(4))\n\n function sleep (ms) {\n // also filters out NaN, non-number types, including empty strings, but allows bigints\n const valid = ms > 0 && ms < Infinity \n if (valid === false) {\n if (typeof ms !== 'number' && typeof ms !== 'bigint') {\n throw TypeError('sleep: ms must be a number')\n }\n throw RangeError('sleep: ms must be a number that is greater than 0 but less than Infinity')\n }\n\n Atomics.wait(nil, 0, 0, Number(ms))\n }\n module.exports = sleep\n} else {\n\n function sleep (ms) {\n // also filters out NaN, non-number types, including empty strings, but allows bigints\n const valid = ms > 0 && ms < Infinity \n if (valid === false) {\n if (typeof ms !== 'number' && typeof ms !== 'bigint') {\n throw TypeError('sleep: ms must be a number')\n }\n throw RangeError('sleep: ms must be a number that is greater than 0 but less than Infinity')\n }\n const target = Date.now() + Number(ms)\n while (target > Date.now()){}\n }\n\n module.exports = sleep\n\n}\n","'use strict'\n\nconst fs = require('fs')\nconst EventEmitter = require('events')\nconst inherits = require('util').inherits\nconst path = require('path')\nconst sleep = require('atomic-sleep')\nconst assert = require('assert')\n\nconst BUSY_WRITE_TIMEOUT = 100\nconst kEmptyBuffer = Buffer.allocUnsafe(0)\n\n// 16 KB. Don't write more than docker buffer size.\n// https://github.com/moby/moby/blob/513ec73831269947d38a644c278ce3cac36783b2/daemon/logger/copier.go#L13\nconst MAX_WRITE = 16 * 1024\n\nconst kContentModeBuffer = 'buffer'\nconst kContentModeUtf8 = 'utf8'\n\nconst [major, minor] = (process.versions.node || '0.0').split('.').map(Number)\nconst kCopyBuffer = major >= 22 && minor >= 7\n\nfunction openFile (file, sonic) {\n sonic._opening = true\n sonic._writing = true\n sonic._asyncDrainScheduled = false\n\n // NOTE: 'error' and 'ready' events emitted below only relevant when sonic.sync===false\n // for sync mode, there is no way to add a listener that will receive these\n\n function fileOpened (err, fd) {\n if (err) {\n sonic._reopening = false\n sonic._writing = false\n sonic._opening = false\n\n if (sonic.sync) {\n process.nextTick(() => {\n if (sonic.listenerCount('error') > 0) {\n sonic.emit('error', err)\n }\n })\n } else {\n sonic.emit('error', err)\n }\n return\n }\n\n const reopening = sonic._reopening\n\n sonic.fd = fd\n sonic.file = file\n sonic._reopening = false\n sonic._opening = false\n sonic._writing = false\n\n if (sonic.sync) {\n process.nextTick(() => sonic.emit('ready'))\n } else {\n sonic.emit('ready')\n }\n\n if (sonic.destroyed) {\n return\n }\n\n // start\n if ((!sonic._writing && sonic._len > sonic.minLength) || sonic._flushPending) {\n sonic._actualWrite()\n } else if (reopening) {\n process.nextTick(() => sonic.emit('drain'))\n }\n }\n\n const flags = sonic.append ? 'a' : 'w'\n const mode = sonic.mode\n\n if (sonic.sync) {\n try {\n if (sonic.mkdir) fs.mkdirSync(path.dirname(file), { recursive: true })\n const fd = fs.openSync(file, flags, mode)\n fileOpened(null, fd)\n } catch (err) {\n fileOpened(err)\n throw err\n }\n } else if (sonic.mkdir) {\n fs.mkdir(path.dirname(file), { recursive: true }, (err) => {\n if (err) return fileOpened(err)\n fs.open(file, flags, mode, fileOpened)\n })\n } else {\n fs.open(file, flags, mode, fileOpened)\n }\n}\n\nfunction SonicBoom (opts) {\n if (!(this instanceof SonicBoom)) {\n return new SonicBoom(opts)\n }\n\n let { fd, dest, minLength, maxLength, maxWrite, periodicFlush, sync, append = true, mkdir, retryEAGAIN, fsync, contentMode, mode } = opts || {}\n\n fd = fd || dest\n\n this._len = 0\n this.fd = -1\n this._bufs = []\n this._lens = []\n this._writing = false\n this._ending = false\n this._reopening = false\n this._asyncDrainScheduled = false\n this._flushPending = false\n this._hwm = Math.max(minLength || 0, 16387)\n this.file = null\n this.destroyed = false\n this.minLength = minLength || 0\n this.maxLength = maxLength || 0\n this.maxWrite = maxWrite || MAX_WRITE\n this._periodicFlush = periodicFlush || 0\n this._periodicFlushTimer = undefined\n this.sync = sync || false\n this.writable = true\n this._fsync = fsync || false\n this.append = append || false\n this.mode = mode\n this.retryEAGAIN = retryEAGAIN || (() => true)\n this.mkdir = mkdir || false\n\n let fsWriteSync\n let fsWrite\n if (contentMode === kContentModeBuffer) {\n this._writingBuf = kEmptyBuffer\n this.write = writeBuffer\n this.flush = flushBuffer\n this.flushSync = flushBufferSync\n this._actualWrite = actualWriteBuffer\n fsWriteSync = () => fs.writeSync(this.fd, this._writingBuf)\n fsWrite = () => fs.write(this.fd, this._writingBuf, this.release)\n } else if (contentMode === undefined || contentMode === kContentModeUtf8) {\n this._writingBuf = ''\n this.write = write\n this.flush = flush\n this.flushSync = flushSync\n this._actualWrite = actualWrite\n fsWriteSync = () => fs.writeSync(this.fd, this._writingBuf, 'utf8')\n fsWrite = () => fs.write(this.fd, this._writingBuf, 'utf8', this.release)\n } else {\n throw new Error(`SonicBoom supports \"${kContentModeUtf8}\" and \"${kContentModeBuffer}\", but passed ${contentMode}`)\n }\n\n if (typeof fd === 'number') {\n this.fd = fd\n process.nextTick(() => this.emit('ready'))\n } else if (typeof fd === 'string') {\n openFile(fd, this)\n } else {\n throw new Error('SonicBoom supports only file descriptors and files')\n }\n if (this.minLength >= this.maxWrite) {\n throw new Error(`minLength should be smaller than maxWrite (${this.maxWrite})`)\n }\n\n this.release = (err, n) => {\n if (err) {\n if ((err.code === 'EAGAIN' || err.code === 'EBUSY') && this.retryEAGAIN(err, this._writingBuf.length, this._len - this._writingBuf.length)) {\n if (this.sync) {\n // This error code should not happen in sync mode, because it is\n // not using the underlining operating system asynchronous functions.\n // However it happens, and so we handle it.\n // Ref: https://github.com/pinojs/pino/issues/783\n try {\n sleep(BUSY_WRITE_TIMEOUT)\n this.release(undefined, 0)\n } catch (err) {\n this.release(err)\n }\n } else {\n // Let's give the destination some time to process the chunk.\n setTimeout(fsWrite, BUSY_WRITE_TIMEOUT)\n }\n } else {\n this._writing = false\n\n this.emit('error', err)\n }\n return\n }\n\n this.emit('write', n)\n const releasedBufObj = releaseWritingBuf(this._writingBuf, this._len, n)\n this._len = releasedBufObj.len\n this._writingBuf = releasedBufObj.writingBuf\n\n if (this._writingBuf.length) {\n if (!this.sync) {\n fsWrite()\n return\n }\n\n try {\n do {\n const n = fsWriteSync()\n const releasedBufObj = releaseWritingBuf(this._writingBuf, this._len, n)\n this._len = releasedBufObj.len\n this._writingBuf = releasedBufObj.writingBuf\n } while (this._writingBuf.length)\n } catch (err) {\n this.release(err)\n return\n }\n }\n\n if (this._fsync) {\n fs.fsyncSync(this.fd)\n }\n\n const len = this._len\n if (this._reopening) {\n this._writing = false\n this._reopening = false\n this.reopen()\n } else if (len > this.minLength) {\n this._actualWrite()\n } else if (this._ending) {\n if (len > 0) {\n this._actualWrite()\n } else {\n this._writing = false\n actualClose(this)\n }\n } else {\n this._writing = false\n if (this.sync) {\n if (!this._asyncDrainScheduled) {\n this._asyncDrainScheduled = true\n process.nextTick(emitDrain, this)\n }\n } else {\n this.emit('drain')\n }\n }\n }\n\n this.on('newListener', function (name) {\n if (name === 'drain') {\n this._asyncDrainScheduled = false\n }\n })\n\n if (this._periodicFlush !== 0) {\n this._periodicFlushTimer = setInterval(() => this.flush(null), this._periodicFlush)\n this._periodicFlushTimer.unref()\n }\n}\n\n/**\n * Release the writingBuf after fs.write n bytes data\n * @param {string | Buffer} writingBuf - currently writing buffer, usually be instance._writingBuf.\n * @param {number} len - currently buffer length, usually be instance._len.\n * @param {number} n - number of bytes fs already written\n * @returns {{writingBuf: string | Buffer, len: number}} released writingBuf and length\n */\nfunction releaseWritingBuf (writingBuf, len, n) {\n // if Buffer.byteLength is equal to n, that means writingBuf contains no multi-byte character\n if (typeof writingBuf === 'string' && Buffer.byteLength(writingBuf) !== n) {\n // Since the fs.write callback parameter `n` means how many bytes the passed of string\n // We calculate the original string length for avoiding the multi-byte character issue\n n = Buffer.from(writingBuf).subarray(0, n).toString().length\n }\n len = Math.max(len - n, 0)\n writingBuf = writingBuf.slice(n)\n return { writingBuf, len }\n}\n\nfunction emitDrain (sonic) {\n const hasListeners = sonic.listenerCount('drain') > 0\n if (!hasListeners) return\n sonic._asyncDrainScheduled = false\n sonic.emit('drain')\n}\n\ninherits(SonicBoom, EventEmitter)\n\nfunction mergeBuf (bufs, len) {\n if (bufs.length === 0) {\n return kEmptyBuffer\n }\n\n if (bufs.length === 1) {\n return bufs[0]\n }\n\n return Buffer.concat(bufs, len)\n}\n\nfunction write (data) {\n if (this.destroyed) {\n throw new Error('SonicBoom destroyed')\n }\n\n const len = this._len + data.length\n const bufs = this._bufs\n\n if (this.maxLength && len > this.maxLength) {\n this.emit('drop', data)\n return this._len < this._hwm\n }\n\n if (\n bufs.length === 0 ||\n bufs[bufs.length - 1].length + data.length > this.maxWrite\n ) {\n bufs.push('' + data)\n } else {\n bufs[bufs.length - 1] += data\n }\n\n this._len = len\n\n if (!this._writing && this._len >= this.minLength) {\n this._actualWrite()\n }\n\n return this._len < this._hwm\n}\n\nfunction writeBuffer (data) {\n if (this.destroyed) {\n throw new Error('SonicBoom destroyed')\n }\n\n const len = this._len + data.length\n const bufs = this._bufs\n const lens = this._lens\n\n if (this.maxLength && len > this.maxLength) {\n this.emit('drop', data)\n return this._len < this._hwm\n }\n\n if (\n bufs.length === 0 ||\n lens[lens.length - 1] + data.length > this.maxWrite\n ) {\n bufs.push([data])\n lens.push(data.length)\n } else {\n bufs[bufs.length - 1].push(data)\n lens[lens.length - 1] += data.length\n }\n\n this._len = len\n\n if (!this._writing && this._len >= this.minLength) {\n this._actualWrite()\n }\n\n return this._len < this._hwm\n}\n\nfunction callFlushCallbackOnDrain (cb) {\n this._flushPending = true\n const onDrain = () => {\n // only if _fsync is false to avoid double fsync\n if (!this._fsync) {\n try {\n fs.fsync(this.fd, (err) => {\n this._flushPending = false\n cb(err)\n })\n } catch (err) {\n cb(err)\n }\n } else {\n this._flushPending = false\n cb()\n }\n this.off('error', onError)\n }\n const onError = (err) => {\n this._flushPending = false\n cb(err)\n this.off('drain', onDrain)\n }\n\n this.once('drain', onDrain)\n this.once('error', onError)\n}\n\nfunction flush (cb) {\n if (cb != null && typeof cb !== 'function') {\n throw new Error('flush cb must be a function')\n }\n\n if (this.destroyed) {\n const error = new Error('SonicBoom destroyed')\n if (cb) {\n cb(error)\n return\n }\n\n throw error\n }\n\n if (this.minLength <= 0) {\n cb?.()\n return\n }\n\n if (cb) {\n callFlushCallbackOnDrain.call(this, cb)\n }\n\n if (this._writing) {\n return\n }\n\n if (this._bufs.length === 0) {\n this._bufs.push('')\n }\n\n this._actualWrite()\n}\n\nfunction flushBuffer (cb) {\n if (cb != null && typeof cb !== 'function') {\n throw new Error('flush cb must be a function')\n }\n\n if (this.destroyed) {\n const error = new Error('SonicBoom destroyed')\n if (cb) {\n cb(error)\n return\n }\n\n throw error\n }\n\n if (this.minLength <= 0) {\n cb?.()\n return\n }\n\n if (cb) {\n callFlushCallbackOnDrain.call(this, cb)\n }\n\n if (this._writing) {\n return\n }\n\n if (this._bufs.length === 0) {\n this._bufs.push([])\n this._lens.push(0)\n }\n\n this._actualWrite()\n}\n\nSonicBoom.prototype.reopen = function (file) {\n if (this.destroyed) {\n throw new Error('SonicBoom destroyed')\n }\n\n if (this._opening) {\n this.once('ready', () => {\n this.reopen(file)\n })\n return\n }\n\n if (this._ending) {\n return\n }\n\n if (!this.file) {\n throw new Error('Unable to reopen a file descriptor, you must pass a file to SonicBoom')\n }\n\n if (file) {\n this.file = file\n }\n this._reopening = true\n\n if (this._writing) {\n return\n }\n\n const fd = this.fd\n this.once('ready', () => {\n if (fd !== this.fd) {\n fs.close(fd, (err) => {\n if (err) {\n return this.emit('error', err)\n }\n })\n }\n })\n\n openFile(this.file, this)\n}\n\nSonicBoom.prototype.end = function () {\n if (this.destroyed) {\n throw new Error('SonicBoom destroyed')\n }\n\n if (this._opening) {\n this.once('ready', () => {\n this.end()\n })\n return\n }\n\n if (this._ending) {\n return\n }\n\n this._ending = true\n\n if (this._writing) {\n return\n }\n\n if (this._len > 0 && this.fd >= 0) {\n this._actualWrite()\n } else {\n actualClose(this)\n }\n}\n\nfunction flushSync () {\n if (this.destroyed) {\n throw new Error('SonicBoom destroyed')\n }\n\n if (this.fd < 0) {\n throw new Error('sonic boom is not ready yet')\n }\n\n if (!this._writing && this._writingBuf.length > 0) {\n this._bufs.unshift(this._writingBuf)\n this._writingBuf = ''\n }\n\n let buf = ''\n while (this._bufs.length || buf) {\n if (buf.length <= 0) {\n buf = this._bufs[0]\n }\n try {\n const n = fs.writeSync(this.fd, buf, 'utf8')\n const releasedBufObj = releaseWritingBuf(buf, this._len, n)\n buf = releasedBufObj.writingBuf\n this._len = releasedBufObj.len\n if (buf.length <= 0) {\n this._bufs.shift()\n }\n } catch (err) {\n const shouldRetry = err.code === 'EAGAIN' || err.code === 'EBUSY'\n if (shouldRetry && !this.retryEAGAIN(err, buf.length, this._len - buf.length)) {\n throw err\n }\n\n sleep(BUSY_WRITE_TIMEOUT)\n }\n }\n\n try {\n fs.fsyncSync(this.fd)\n } catch {\n // Skip the error. The fd might not support fsync.\n }\n}\n\nfunction flushBufferSync () {\n if (this.destroyed) {\n throw new Error('SonicBoom destroyed')\n }\n\n if (this.fd < 0) {\n throw new Error('sonic boom is not ready yet')\n }\n\n if (!this._writing && this._writingBuf.length > 0) {\n this._bufs.unshift([this._writingBuf])\n this._writingBuf = kEmptyBuffer\n }\n\n let buf = kEmptyBuffer\n while (this._bufs.length || buf.length) {\n if (buf.length <= 0) {\n buf = mergeBuf(this._bufs[0], this._lens[0])\n }\n try {\n const n = fs.writeSync(this.fd, buf)\n buf = buf.subarray(n)\n this._len = Math.max(this._len - n, 0)\n if (buf.length <= 0) {\n this._bufs.shift()\n this._lens.shift()\n }\n } catch (err) {\n const shouldRetry = err.code === 'EAGAIN' || err.code === 'EBUSY'\n if (shouldRetry && !this.retryEAGAIN(err, buf.length, this._len - buf.length)) {\n throw err\n }\n\n sleep(BUSY_WRITE_TIMEOUT)\n }\n }\n}\n\nSonicBoom.prototype.destroy = function () {\n if (this.destroyed) {\n return\n }\n actualClose(this)\n}\n\nfunction actualWrite () {\n const release = this.release\n this._writing = true\n this._writingBuf = this._writingBuf || this._bufs.shift() || ''\n\n if (this.sync) {\n try {\n const written = fs.writeSync(this.fd, this._writingBuf, 'utf8')\n release(null, written)\n } catch (err) {\n release(err)\n }\n } else {\n fs.write(this.fd, this._writingBuf, 'utf8', release)\n }\n}\n\nfunction actualWriteBuffer () {\n const release = this.release\n this._writing = true\n this._writingBuf = this._writingBuf.length ? this._writingBuf : mergeBuf(this._bufs.shift(), this._lens.shift())\n\n if (this.sync) {\n try {\n const written = fs.writeSync(this.fd, this._writingBuf)\n release(null, written)\n } catch (err) {\n release(err)\n }\n } else {\n // fs.write will need to copy string to buffer anyway so\n // we do it here to avoid the overhead of calculating the buffer size\n // in releaseWritingBuf.\n if (kCopyBuffer) {\n this._writingBuf = Buffer.from(this._writingBuf)\n }\n fs.write(this.fd, this._writingBuf, release)\n }\n}\n\nfunction actualClose (sonic) {\n if (sonic.fd === -1) {\n sonic.once('ready', actualClose.bind(null, sonic))\n return\n }\n\n if (sonic._periodicFlushTimer !== undefined) {\n clearInterval(sonic._periodicFlushTimer)\n }\n\n sonic.destroyed = true\n sonic._bufs = []\n sonic._lens = []\n\n assert(typeof sonic.fd === 'number', `sonic.fd must be a number, got ${typeof sonic.fd}`)\n try {\n fs.fsync(sonic.fd, closeWrapped)\n } catch {\n }\n\n function closeWrapped () {\n // We skip errors in fsync\n\n if (sonic.fd !== 1 && sonic.fd !== 2) {\n fs.close(sonic.fd, done)\n } else {\n done()\n }\n }\n\n function done (err) {\n if (err) {\n sonic.emit('error', err)\n return\n }\n\n if (sonic._ending && !sonic._writing) {\n sonic.emit('finish')\n }\n sonic.emit('close')\n }\n}\n\n/**\n * These export configurations enable JS and TS developers\n * to consumer SonicBoom in whatever way best suits their needs.\n * Some examples of supported import syntax includes:\n * - `const SonicBoom = require('SonicBoom')`\n * - `const { SonicBoom } = require('SonicBoom')`\n * - `import * as SonicBoom from 'SonicBoom'`\n * - `import { SonicBoom } from 'SonicBoom'`\n * - `import SonicBoom from 'SonicBoom'`\n */\nSonicBoom.SonicBoom = SonicBoom\nSonicBoom.default = SonicBoom\nmodule.exports = SonicBoom\n","'use strict'\n\nconst refs = {\n exit: [],\n beforeExit: []\n}\nconst functions = {\n exit: onExit,\n beforeExit: onBeforeExit\n}\n\nlet registry\n\nfunction ensureRegistry () {\n if (registry === undefined) {\n registry = new FinalizationRegistry(clear)\n }\n}\n\nfunction install (event) {\n if (refs[event].length > 0) {\n return\n }\n\n process.on(event, functions[event])\n}\n\nfunction uninstall (event) {\n if (refs[event].length > 0) {\n return\n }\n process.removeListener(event, functions[event])\n if (refs.exit.length === 0 && refs.beforeExit.length === 0) {\n registry = undefined\n }\n}\n\nfunction onExit () {\n callRefs('exit')\n}\n\nfunction onBeforeExit () {\n callRefs('beforeExit')\n}\n\nfunction callRefs (event) {\n for (const ref of refs[event]) {\n const obj = ref.deref()\n const fn = ref.fn\n\n // This should always happen, however GC is\n // undeterministic so it might not happen.\n /* istanbul ignore else */\n if (obj !== undefined) {\n fn(obj, event)\n }\n }\n refs[event] = []\n}\n\nfunction clear (ref) {\n for (const event of ['exit', 'beforeExit']) {\n const index = refs[event].indexOf(ref)\n refs[event].splice(index, index + 1)\n uninstall(event)\n }\n}\n\nfunction _register (event, obj, fn) {\n if (obj === undefined) {\n throw new Error('the object can\\'t be undefined')\n }\n install(event)\n const ref = new WeakRef(obj)\n ref.fn = fn\n\n ensureRegistry()\n registry.register(obj, ref)\n refs[event].push(ref)\n}\n\nfunction register (obj, fn) {\n _register('exit', obj, fn)\n}\n\nfunction registerBeforeExit (obj, fn) {\n _register('beforeExit', obj, fn)\n}\n\nfunction unregister (obj) {\n if (registry === undefined) {\n return\n }\n registry.unregister(obj)\n for (const event of ['exit', 'beforeExit']) {\n refs[event] = refs[event].filter((ref) => {\n const _obj = ref.deref()\n return _obj && _obj !== obj\n })\n uninstall(event)\n }\n}\n\nmodule.exports = {\n register,\n registerBeforeExit,\n unregister\n}\n","{\n \"name\": \"thread-stream\",\n \"version\": \"3.1.0\",\n \"description\": \"A streaming way to send data to a Node.js Worker Thread\",\n \"main\": \"index.js\",\n \"types\": \"index.d.ts\",\n \"dependencies\": {\n \"real-require\": \"^0.2.0\"\n },\n \"devDependencies\": {\n \"@types/node\": \"^20.1.0\",\n \"@types/tap\": \"^15.0.0\",\n \"@yao-pkg/pkg\": \"^5.11.5\",\n \"desm\": \"^1.3.0\",\n \"fastbench\": \"^1.0.1\",\n \"husky\": \"^9.0.6\",\n \"pino-elasticsearch\": \"^8.0.0\",\n \"sonic-boom\": \"^4.0.1\",\n \"standard\": \"^17.0.0\",\n \"tap\": \"^16.2.0\",\n \"ts-node\": \"^10.8.0\",\n \"typescript\": \"^5.3.2\",\n \"why-is-node-running\": \"^2.2.2\"\n },\n \"scripts\": {\n \"build\": \"tsc --noEmit\",\n \"test\": \"standard && npm run build && npm run transpile && tap \\\"test/**/*.test.*js\\\" && tap --ts test/*.test.*ts\",\n \"test:ci\": \"standard && npm run transpile && npm run test:ci:js && npm run test:ci:ts\",\n \"test:ci:js\": \"tap --no-check-coverage --timeout=120 --coverage-report=lcovonly \\\"test/**/*.test.*js\\\"\",\n \"test:ci:ts\": \"tap --ts --no-check-coverage --coverage-report=lcovonly \\\"test/**/*.test.*ts\\\"\",\n \"test:yarn\": \"npm run transpile && tap \\\"test/**/*.test.js\\\" --no-check-coverage\",\n \"transpile\": \"sh ./test/ts/transpile.sh\",\n \"prepare\": \"husky install\"\n },\n \"standard\": {\n \"ignore\": [\n \"test/ts/**/*\",\n \"test/syntax-error.mjs\"\n ]\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/mcollina/thread-stream.git\"\n },\n \"keywords\": [\n \"worker\",\n \"thread\",\n \"threads\",\n \"stream\"\n ],\n \"author\": \"Matteo Collina <hello@matteocollina.com>\",\n \"license\": \"MIT\",\n \"bugs\": {\n \"url\": \"https://github.com/mcollina/thread-stream/issues\"\n },\n \"homepage\": \"https://github.com/mcollina/thread-stream#readme\"\n}\n","'use strict'\n\nconst MAX_TIMEOUT = 1000\n\nfunction wait (state, index, expected, timeout, done) {\n const max = Date.now() + timeout\n let current = Atomics.load(state, index)\n if (current === expected) {\n done(null, 'ok')\n return\n }\n let prior = current\n const check = (backoff) => {\n if (Date.now() > max) {\n done(null, 'timed-out')\n } else {\n setTimeout(() => {\n prior = current\n current = Atomics.load(state, index)\n if (current === prior) {\n check(backoff >= MAX_TIMEOUT ? MAX_TIMEOUT : backoff * 2)\n } else {\n if (current === expected) done(null, 'ok')\n else done(null, 'not-equal')\n }\n }, backoff)\n }\n }\n check(1)\n}\n\n// let waitDiffCount = 0\nfunction waitDiff (state, index, expected, timeout, done) {\n // const id = waitDiffCount++\n // process._rawDebug(`>>> waitDiff ${id}`)\n const max = Date.now() + timeout\n let current = Atomics.load(state, index)\n if (current !== expected) {\n done(null, 'ok')\n return\n }\n const check = (backoff) => {\n // process._rawDebug(`${id} ${index} current ${current} expected ${expected}`)\n // process._rawDebug('' + backoff)\n if (Date.now() > max) {\n done(null, 'timed-out')\n } else {\n setTimeout(() => {\n current = Atomics.load(state, index)\n if (current !== expected) {\n done(null, 'ok')\n } else {\n check(backoff >= MAX_TIMEOUT ? MAX_TIMEOUT : backoff * 2)\n }\n }, backoff)\n }\n }\n check(1)\n}\n\nmodule.exports = { wait, waitDiff }\n","'use strict'\n\nconst WRITE_INDEX = 4\nconst READ_INDEX = 8\n\nmodule.exports = {\n WRITE_INDEX,\n READ_INDEX\n}\n","'use strict'\n\nconst { version } = require('./package.json')\nconst { EventEmitter } = require('events')\nconst { Worker } = require('worker_threads')\nconst { join } = require('path')\nconst { pathToFileURL } = require('url')\nconst { wait } = require('./lib/wait')\nconst {\n WRITE_INDEX,\n READ_INDEX\n} = require('./lib/indexes')\nconst buffer = require('buffer')\nconst assert = require('assert')\n\nconst kImpl = Symbol('kImpl')\n\n// V8 limit for string size\nconst MAX_STRING = buffer.constants.MAX_STRING_LENGTH\n\nclass FakeWeakRef {\n constructor (value) {\n this._value = value\n }\n\n deref () {\n return this._value\n }\n}\n\nclass FakeFinalizationRegistry {\n register () {}\n\n unregister () {}\n}\n\n// Currently using FinalizationRegistry with code coverage breaks the world\n// Ref: https://github.com/nodejs/node/issues/49344\nconst FinalizationRegistry = process.env.NODE_V8_COVERAGE ? FakeFinalizationRegistry : global.FinalizationRegistry || FakeFinalizationRegistry\nconst WeakRef = process.env.NODE_V8_COVERAGE ? FakeWeakRef : global.WeakRef || FakeWeakRef\n\nconst registry = new FinalizationRegistry((worker) => {\n if (worker.exited) {\n return\n }\n worker.terminate()\n})\n\nfunction createWorker (stream, opts) {\n const { filename, workerData } = opts\n\n const bundlerOverrides = '__bundlerPathsOverrides' in globalThis ? globalThis.__bundlerPathsOverrides : {}\n const toExecute = bundlerOverrides['thread-stream-worker'] || join(__dirname, 'lib', 'worker.js')\n\n const worker = new Worker(toExecute, {\n ...opts.workerOpts,\n trackUnmanagedFds: false,\n workerData: {\n filename: filename.indexOf('file://') === 0\n ? filename\n : pathToFileURL(filename).href,\n dataBuf: stream[kImpl].dataBuf,\n stateBuf: stream[kImpl].stateBuf,\n workerData: {\n $context: {\n threadStreamVersion: version\n },\n ...workerData\n }\n }\n })\n\n // We keep a strong reference for now,\n // we need to start writing first\n worker.stream = new FakeWeakRef(stream)\n\n worker.on('message', onWorkerMessage)\n worker.on('exit', onWorkerExit)\n registry.register(stream, worker)\n\n return worker\n}\n\nfunction drain (stream) {\n assert(!stream[kImpl].sync)\n if (stream[kImpl].needDrain) {\n stream[kImpl].needDrain = false\n stream.emit('drain')\n }\n}\n\nfunction nextFlush (stream) {\n const writeIndex = Atomics.load(stream[kImpl].state, WRITE_INDEX)\n let leftover = stream[kImpl].data.length - writeIndex\n\n if (leftover > 0) {\n if (stream[kImpl].buf.length === 0) {\n stream[kImpl].flushing = false\n\n if (stream[kImpl].ending) {\n end(stream)\n } else if (stream[kImpl].needDrain) {\n process.nextTick(drain, stream)\n }\n\n return\n }\n\n let toWrite = stream[kImpl].buf.slice(0, leftover)\n let toWriteBytes = Buffer.byteLength(toWrite)\n if (toWriteBytes <= leftover) {\n stream[kImpl].buf = stream[kImpl].buf.slice(leftover)\n // process._rawDebug('writing ' + toWrite.length)\n write(stream, toWrite, nextFlush.bind(null, stream))\n } else {\n // multi-byte utf-8\n stream.flush(() => {\n // err is already handled in flush()\n if (stream.destroyed) {\n return\n }\n\n Atomics.store(stream[kImpl].state, READ_INDEX, 0)\n Atomics.store(stream[kImpl].state, WRITE_INDEX, 0)\n\n // Find a toWrite length that fits the buffer\n // it must exists as the buffer is at least 4 bytes length\n // and the max utf-8 length for a char is 4 bytes.\n while (toWriteBytes > stream[kImpl].data.length) {\n leftover = leftover / 2\n toWrite = stream[kImpl].buf.slice(0, leftover)\n toWriteBytes = Buffer.byteLength(toWrite)\n }\n stream[kImpl].buf = stream[kImpl].buf.slice(leftover)\n write(stream, toWrite, nextFlush.bind(null, stream))\n })\n }\n } else if (leftover === 0) {\n if (writeIndex === 0 && stream[kImpl].buf.length === 0) {\n // we had a flushSync in the meanwhile\n return\n }\n stream.flush(() => {\n Atomics.store(stream[kImpl].state, READ_INDEX, 0)\n Atomics.store(stream[kImpl].state, WRITE_INDEX, 0)\n nextFlush(stream)\n })\n } else {\n // This should never happen\n destroy(stream, new Error('overwritten'))\n }\n}\n\nfunction onWorkerMessage (msg) {\n const stream = this.stream.deref()\n if (stream === undefined) {\n this.exited = true\n // Terminate the worker.\n this.terminate()\n return\n }\n\n switch (msg.code) {\n case 'READY':\n // Replace the FakeWeakRef with a\n // proper one.\n this.stream = new WeakRef(stream)\n\n stream.flush(() => {\n stream[kImpl].ready = true\n stream.emit('ready')\n })\n break\n case 'ERROR':\n destroy(stream, msg.err)\n break\n case 'EVENT':\n if (Array.isArray(msg.args)) {\n stream.emit(msg.name, ...msg.args)\n } else {\n stream.emit(msg.name, msg.args)\n }\n break\n case 'WARNING':\n process.emitWarning(msg.err)\n break\n default:\n destroy(stream, new Error('this should not happen: ' + msg.code))\n }\n}\n\nfunction onWorkerExit (code) {\n const stream = this.stream.deref()\n if (stream === undefined) {\n // Nothing to do, the worker already exit\n return\n }\n registry.unregister(stream)\n stream.worker.exited = true\n stream.worker.off('exit', onWorkerExit)\n destroy(stream, code !== 0 ? new Error('the worker thread exited') : null)\n}\n\nclass ThreadStream extends EventEmitter {\n constructor (opts = {}) {\n super()\n\n if (opts.bufferSize < 4) {\n throw new Error('bufferSize must at least fit a 4-byte utf-8 char')\n }\n\n this[kImpl] = {}\n this[kImpl].stateBuf = new SharedArrayBuffer(128)\n this[kImpl].state = new Int32Array(this[kImpl].stateBuf)\n this[kImpl].dataBuf = new SharedArrayBuffer(opts.bufferSize || 4 * 1024 * 1024)\n this[kImpl].data = Buffer.from(this[kImpl].dataBuf)\n this[kImpl].sync = opts.sync || false\n this[kImpl].ending = false\n this[kImpl].ended = false\n this[kImpl].needDrain = false\n this[kImpl].destroyed = false\n this[kImpl].flushing = false\n this[kImpl].ready = false\n this[kImpl].finished = false\n this[kImpl].errored = null\n this[kImpl].closed = false\n this[kImpl].buf = ''\n\n // TODO (fix): Make private?\n this.worker = createWorker(this, opts) // TODO (fix): make private\n this.on('message', (message, transferList) => {\n this.worker.postMessage(message, transferList)\n })\n }\n\n write (data) {\n if (this[kImpl].destroyed) {\n error(this, new Error('the worker has exited'))\n return false\n }\n\n if (this[kImpl].ending) {\n error(this, new Error('the worker is ending'))\n return false\n }\n\n if (this[kImpl].flushing && this[kImpl].buf.length + data.length >= MAX_STRING) {\n try {\n writeSync(this)\n this[kImpl].flushing = true\n } catch (err) {\n destroy(this, err)\n return false\n }\n }\n\n this[kImpl].buf += data\n\n if (this[kImpl].sync) {\n try {\n writeSync(this)\n return true\n } catch (err) {\n destroy(this, err)\n return false\n }\n }\n\n if (!this[kImpl].flushing) {\n this[kImpl].flushing = true\n setImmediate(nextFlush, this)\n }\n\n this[kImpl].needDrain = this[kImpl].data.length - this[kImpl].buf.length - Atomics.load(this[kImpl].state, WRITE_INDEX) <= 0\n return !this[kImpl].needDrain\n }\n\n end () {\n if (this[kImpl].destroyed) {\n return\n }\n\n this[kImpl].ending = true\n end(this)\n }\n\n flush (cb) {\n if (this[kImpl].destroyed) {\n if (typeof cb === 'function') {\n process.nextTick(cb, new Error('the worker has exited'))\n }\n return\n }\n\n // TODO write all .buf\n const writeIndex = Atomics.load(this[kImpl].state, WRITE_INDEX)\n // process._rawDebug(`(flush) readIndex (${Atomics.load(this.state, READ_INDEX)}) writeIndex (${Atomics.load(this.state, WRITE_INDEX)})`)\n wait(this[kImpl].state, READ_INDEX, writeIndex, Infinity, (err, res) => {\n if (err) {\n destroy(this, err)\n process.nextTick(cb, err)\n return\n }\n if (res === 'not-equal') {\n // TODO handle deadlock\n this.flush(cb)\n return\n }\n process.nextTick(cb)\n })\n }\n\n flushSync () {\n if (this[kImpl].destroyed) {\n return\n }\n\n writeSync(this)\n flushSync(this)\n }\n\n unref () {\n this.worker.unref()\n }\n\n ref () {\n this.worker.ref()\n }\n\n get ready () {\n return this[kImpl].ready\n }\n\n get destroyed () {\n return this[kImpl].destroyed\n }\n\n get closed () {\n return this[kImpl].closed\n }\n\n get writable () {\n return !this[kImpl].destroyed && !this[kImpl].ending\n }\n\n get writableEnded () {\n return this[kImpl].ending\n }\n\n get writableFinished () {\n return this[kImpl].finished\n }\n\n get writableNeedDrain () {\n return this[kImpl].needDrain\n }\n\n get writableObjectMode () {\n return false\n }\n\n get writableErrored () {\n return this[kImpl].errored\n }\n}\n\nfunction error (stream, err) {\n setImmediate(() => {\n stream.emit('error', err)\n })\n}\n\nfunction destroy (stream, err) {\n if (stream[kImpl].destroyed) {\n return\n }\n stream[kImpl].destroyed = true\n\n if (err) {\n stream[kImpl].errored = err\n error(stream, err)\n }\n\n if (!stream.worker.exited) {\n stream.worker.terminate()\n .catch(() => {})\n .then(() => {\n stream[kImpl].closed = true\n stream.emit('close')\n })\n } else {\n setImmediate(() => {\n stream[kImpl].closed = true\n stream.emit('close')\n })\n }\n}\n\nfunction write (stream, data, cb) {\n // data is smaller than the shared buffer length\n const current = Atomics.load(stream[kImpl].state, WRITE_INDEX)\n const length = Buffer.byteLength(data)\n stream[kImpl].data.write(data, current)\n Atomics.store(stream[kImpl].state, WRITE_INDEX, current + length)\n Atomics.notify(stream[kImpl].state, WRITE_INDEX)\n cb()\n return true\n}\n\nfunction end (stream) {\n if (stream[kImpl].ended || !stream[kImpl].ending || stream[kImpl].flushing) {\n return\n }\n stream[kImpl].ended = true\n\n try {\n stream.flushSync()\n\n let readIndex = Atomics.load(stream[kImpl].state, READ_INDEX)\n\n // process._rawDebug('writing index')\n Atomics.store(stream[kImpl].state, WRITE_INDEX, -1)\n // process._rawDebug(`(end) readIndex (${Atomics.load(stream.state, READ_INDEX)}) writeIndex (${Atomics.load(stream.state, WRITE_INDEX)})`)\n Atomics.notify(stream[kImpl].state, WRITE_INDEX)\n\n // Wait for the process to complete\n let spins = 0\n while (readIndex !== -1) {\n // process._rawDebug(`read = ${read}`)\n Atomics.wait(stream[kImpl].state, READ_INDEX, readIndex, 1000)\n readIndex = Atomics.load(stream[kImpl].state, READ_INDEX)\n\n if (readIndex === -2) {\n destroy(stream, new Error('end() failed'))\n return\n }\n\n if (++spins === 10) {\n destroy(stream, new Error('end() took too long (10s)'))\n return\n }\n }\n\n process.nextTick(() => {\n stream[kImpl].finished = true\n stream.emit('finish')\n })\n } catch (err) {\n destroy(stream, err)\n }\n // process._rawDebug('end finished...')\n}\n\nfunction writeSync (stream) {\n const cb = () => {\n if (stream[kImpl].ending) {\n end(stream)\n } else if (stream[kImpl].needDrain) {\n process.nextTick(drain, stream)\n }\n }\n stream[kImpl].flushing = false\n\n while (stream[kImpl].buf.length !== 0) {\n const writeIndex = Atomics.load(stream[kImpl].state, WRITE_INDEX)\n let leftover = stream[kImpl].data.length - writeIndex\n if (leftover === 0) {\n flushSync(stream)\n Atomics.store(stream[kImpl].state, READ_INDEX, 0)\n Atomics.store(stream[kImpl].state, WRITE_INDEX, 0)\n continue\n } else if (leftover < 0) {\n // stream should never happen\n throw new Error('overwritten')\n }\n\n let toWrite = stream[kImpl].buf.slice(0, leftover)\n let toWriteBytes = Buffer.byteLength(toWrite)\n if (toWriteBytes <= leftover) {\n stream[kImpl].buf = stream[kImpl].buf.slice(leftover)\n // process._rawDebug('writing ' + toWrite.length)\n write(stream, toWrite, cb)\n } else {\n // multi-byte utf-8\n flushSync(stream)\n Atomics.store(stream[kImpl].state, READ_INDEX, 0)\n Atomics.store(stream[kImpl].state, WRITE_INDEX, 0)\n\n // Find a toWrite length that fits the buffer\n // it must exists as the buffer is at least 4 bytes length\n // and the max utf-8 length for a char is 4 bytes.\n while (toWriteBytes > stream[kImpl].buf.length) {\n leftover = leftover / 2\n toWrite = stream[kImpl].buf.slice(0, leftover)\n toWriteBytes = Buffer.byteLength(toWrite)\n }\n stream[kImpl].buf = stream[kImpl].buf.slice(leftover)\n write(stream, toWrite, cb)\n }\n }\n}\n\nfunction flushSync (stream) {\n if (stream[kImpl].flushing) {\n throw new Error('unable to flush while flushing')\n }\n\n // process._rawDebug('flushSync started')\n\n const writeIndex = Atomics.load(stream[kImpl].state, WRITE_INDEX)\n\n let spins = 0\n\n // TODO handle deadlock\n while (true) {\n const readIndex = Atomics.load(stream[kImpl].state, READ_INDEX)\n\n if (readIndex === -2) {\n throw Error('_flushSync failed')\n }\n\n // process._rawDebug(`(flushSync) readIndex (${readIndex}) writeIndex (${writeIndex})`)\n if (readIndex !== writeIndex) {\n // TODO stream timeouts for some reason.\n Atomics.wait(stream[kImpl].state, READ_INDEX, readIndex, 1000)\n } else {\n break\n }\n\n if (++spins === 10) {\n throw new Error('_flushSync took too long (10s)')\n }\n }\n // process._rawDebug('flushSync finished')\n}\n\nmodule.exports = ThreadStream\n","'use strict'\n\nconst { createRequire } = require('module')\nconst getCallers = require('./caller')\nconst { join, isAbsolute, sep } = require('node:path')\nconst sleep = require('atomic-sleep')\nconst onExit = require('on-exit-leak-free')\nconst ThreadStream = require('thread-stream')\n\nfunction setupOnExit (stream) {\n // This is leak free, it does not leave event handlers\n onExit.register(stream, autoEnd)\n onExit.registerBeforeExit(stream, flush)\n\n stream.on('close', function () {\n onExit.unregister(stream)\n })\n}\n\nfunction buildStream (filename, workerData, workerOpts, sync) {\n const stream = new ThreadStream({\n filename,\n workerData,\n workerOpts,\n sync\n })\n\n stream.on('ready', onReady)\n stream.on('close', function () {\n process.removeListener('exit', onExit)\n })\n\n process.on('exit', onExit)\n\n function onReady () {\n process.removeListener('exit', onExit)\n stream.unref()\n\n if (workerOpts.autoEnd !== false) {\n setupOnExit(stream)\n }\n }\n\n function onExit () {\n /* istanbul ignore next */\n if (stream.closed) {\n return\n }\n stream.flushSync()\n // Apparently there is a very sporadic race condition\n // that in certain OS would prevent the messages to be flushed\n // because the thread might not have been created still.\n // Unfortunately we need to sleep(100) in this case.\n sleep(100)\n stream.end()\n }\n\n return stream\n}\n\nfunction autoEnd (stream) {\n stream.ref()\n stream.flushSync()\n stream.end()\n stream.once('close', function () {\n stream.unref()\n })\n}\n\nfunction flush (stream) {\n stream.flushSync()\n}\n\nfunction transport (fullOptions) {\n const { pipeline, targets, levels, dedupe, worker = {}, caller = getCallers(), sync = false } = fullOptions\n\n const options = {\n ...fullOptions.options\n }\n\n // Backwards compatibility\n const callers = typeof caller === 'string' ? [caller] : caller\n\n // This will be eventually modified by bundlers\n const bundlerOverrides = '__bundlerPathsOverrides' in globalThis ? globalThis.__bundlerPathsOverrides : {}\n\n let target = fullOptions.target\n\n if (target && targets) {\n throw new Error('only one of target or targets can be specified')\n }\n\n if (targets) {\n target = bundlerOverrides['pino-worker'] || join(__dirname, 'worker.js')\n options.targets = targets.filter(dest => dest.target).map((dest) => {\n return {\n ...dest,\n target: fixTarget(dest.target)\n }\n })\n options.pipelines = targets.filter(dest => dest.pipeline).map((dest) => {\n return dest.pipeline.map((t) => {\n return {\n ...t,\n level: dest.level, // duplicate the pipeline `level` property defined in the upper level\n target: fixTarget(t.target)\n }\n })\n })\n } else if (pipeline) {\n target = bundlerOverrides['pino-worker'] || join(__dirname, 'worker.js')\n options.pipelines = [pipeline.map((dest) => {\n return {\n ...dest,\n target: fixTarget(dest.target)\n }\n })]\n }\n\n if (levels) {\n options.levels = levels\n }\n\n if (dedupe) {\n options.dedupe = dedupe\n }\n\n options.pinoWillSendConfig = true\n\n return buildStream(fixTarget(target), options, worker, sync)\n\n function fixTarget (origin) {\n origin = bundlerOverrides[origin] || origin\n\n if (isAbsolute(origin) || origin.indexOf('file://') === 0) {\n return origin\n }\n\n if (origin === 'pino/file') {\n return join(__dirname, '..', 'file.js')\n }\n\n let fixTarget\n\n for (const filePath of callers) {\n try {\n const context = filePath === 'node:repl'\n ? process.cwd() + sep\n : filePath\n\n fixTarget = createRequire(context).resolve(origin)\n break\n } catch (err) {\n // Silent catch\n continue\n }\n }\n\n if (!fixTarget) {\n throw new Error(`unable to determine transport target for \"${origin}\"`)\n }\n\n return fixTarget\n }\n}\n\nmodule.exports = transport\n","'use strict'\n\n/* eslint no-prototype-builtins: 0 */\n\nconst format = require('quick-format-unescaped')\nconst { mapHttpRequest, mapHttpResponse } = require('pino-std-serializers')\nconst SonicBoom = require('sonic-boom')\nconst onExit = require('on-exit-leak-free')\nconst {\n lsCacheSym,\n chindingsSym,\n writeSym,\n serializersSym,\n formatOptsSym,\n endSym,\n stringifiersSym,\n stringifySym,\n stringifySafeSym,\n wildcardFirstSym,\n nestedKeySym,\n formattersSym,\n messageKeySym,\n errorKeySym,\n nestedKeyStrSym,\n msgPrefixSym\n} = require('./symbols')\nconst { isMainThread } = require('worker_threads')\nconst transport = require('./transport')\n\nfunction noop () {\n}\n\nfunction genLog (level, hook) {\n if (!hook) return LOG\n\n return function hookWrappedLog (...args) {\n hook.call(this, args, LOG, level)\n }\n\n function LOG (o, ...n) {\n if (typeof o === 'object') {\n let msg = o\n if (o !== null) {\n if (o.method && o.headers && o.socket) {\n o = mapHttpRequest(o)\n } else if (typeof o.setHeader === 'function') {\n o = mapHttpResponse(o)\n }\n }\n let formatParams\n if (msg === null && n.length === 0) {\n formatParams = [null]\n } else {\n msg = n.shift()\n formatParams = n\n }\n // We do not use a coercive check for `msg` as it is\n // measurably slower than the explicit checks.\n if (typeof this[msgPrefixSym] === 'string' && msg !== undefined && msg !== null) {\n msg = this[msgPrefixSym] + msg\n }\n this[writeSym](o, format(msg, formatParams, this[formatOptsSym]), level)\n } else {\n let msg = o === undefined ? n.shift() : o\n\n // We do not use a coercive check for `msg` as it is\n // measurably slower than the explicit checks.\n if (typeof this[msgPrefixSym] === 'string' && msg !== undefined && msg !== null) {\n msg = this[msgPrefixSym] + msg\n }\n this[writeSym](null, format(msg, n, this[formatOptsSym]), level)\n }\n }\n}\n\n// magically escape strings for json\n// relying on their charCodeAt\n// everything below 32 needs JSON.stringify()\n// 34 and 92 happens all the time, so we\n// have a fast case for them\nfunction asString (str) {\n let result = ''\n let last = 0\n let found = false\n let point = 255\n const l = str.length\n if (l > 100) {\n return JSON.stringify(str)\n }\n for (var i = 0; i < l && point >= 32; i++) {\n point = str.charCodeAt(i)\n if (point === 34 || point === 92) {\n result += str.slice(last, i) + '\\\\'\n last = i\n found = true\n }\n }\n if (!found) {\n result = str\n } else {\n result += str.slice(last)\n }\n return point < 32 ? JSON.stringify(str) : '\"' + result + '\"'\n}\n\nfunction asJson (obj, msg, num, time) {\n const stringify = this[stringifySym]\n const stringifySafe = this[stringifySafeSym]\n const stringifiers = this[stringifiersSym]\n const end = this[endSym]\n const chindings = this[chindingsSym]\n const serializers = this[serializersSym]\n const formatters = this[formattersSym]\n const messageKey = this[messageKeySym]\n const errorKey = this[errorKeySym]\n let data = this[lsCacheSym][num] + time\n\n // we need the child bindings added to the output first so instance logged\n // objects can take precedence when JSON.parse-ing the resulting log line\n data = data + chindings\n\n let value\n if (formatters.log) {\n obj = formatters.log(obj)\n }\n const wildcardStringifier = stringifiers[wildcardFirstSym]\n let propStr = ''\n for (const key in obj) {\n value = obj[key]\n if (Object.prototype.hasOwnProperty.call(obj, key) && value !== undefined) {\n if (serializers[key]) {\n value = serializers[key](value)\n } else if (key === errorKey && serializers.err) {\n value = serializers.err(value)\n }\n\n const stringifier = stringifiers[key] || wildcardStringifier\n\n switch (typeof value) {\n case 'undefined':\n case 'function':\n continue\n case 'number':\n /* eslint no-fallthrough: \"off\" */\n if (Number.isFinite(value) === false) {\n value = null\n }\n // this case explicitly falls through to the next one\n case 'boolean':\n if (stringifier) value = stringifier(value)\n break\n case 'string':\n value = (stringifier || asString)(value)\n break\n default:\n value = (stringifier || stringify)(value, stringifySafe)\n }\n if (value === undefined) continue\n const strKey = asString(key)\n propStr += ',' + strKey + ':' + value\n }\n }\n\n let msgStr = ''\n if (msg !== undefined) {\n value = serializers[messageKey] ? serializers[messageKey](msg) : msg\n const stringifier = stringifiers[messageKey] || wildcardStringifier\n\n switch (typeof value) {\n case 'function':\n break\n case 'number':\n /* eslint no-fallthrough: \"off\" */\n if (Number.isFinite(value) === false) {\n value = null\n }\n // this case explicitly falls through to the next one\n case 'boolean':\n if (stringifier) value = stringifier(value)\n msgStr = ',\"' + messageKey + '\":' + value\n break\n case 'string':\n value = (stringifier || asString)(value)\n msgStr = ',\"' + messageKey + '\":' + value\n break\n default:\n value = (stringifier || stringify)(value, stringifySafe)\n msgStr = ',\"' + messageKey + '\":' + value\n }\n }\n\n if (this[nestedKeySym] && propStr) {\n // place all the obj properties under the specified key\n // the nested key is already formatted from the constructor\n return data + this[nestedKeyStrSym] + propStr.slice(1) + '}' + msgStr + end\n } else {\n return data + propStr + msgStr + end\n }\n}\n\nfunction asChindings (instance, bindings) {\n let value\n let data = instance[chindingsSym]\n const stringify = instance[stringifySym]\n const stringifySafe = instance[stringifySafeSym]\n const stringifiers = instance[stringifiersSym]\n const wildcardStringifier = stringifiers[wildcardFirstSym]\n const serializers = instance[serializersSym]\n const formatter = instance[formattersSym].bindings\n bindings = formatter(bindings)\n\n for (const key in bindings) {\n value = bindings[key]\n const valid = key !== 'level' &&\n key !== 'serializers' &&\n key !== 'formatters' &&\n key !== 'customLevels' &&\n bindings.hasOwnProperty(key) &&\n value !== undefined\n if (valid === true) {\n value = serializers[key] ? serializers[key](value) : value\n value = (stringifiers[key] || wildcardStringifier || stringify)(value, stringifySafe)\n if (value === undefined) continue\n data += ',\"' + key + '\":' + value\n }\n }\n return data\n}\n\nfunction hasBeenTampered (stream) {\n return stream.write !== stream.constructor.prototype.write\n}\n\nfunction buildSafeSonicBoom (opts) {\n const stream = new SonicBoom(opts)\n stream.on('error', filterBrokenPipe)\n // If we are sync: false, we must flush on exit\n if (!opts.sync && isMainThread) {\n onExit.register(stream, autoEnd)\n\n stream.on('close', function () {\n onExit.unregister(stream)\n })\n }\n return stream\n\n function filterBrokenPipe (err) {\n // Impossible to replicate across all operating systems\n /* istanbul ignore next */\n if (err.code === 'EPIPE') {\n // If we get EPIPE, we should stop logging here\n // however we have no control to the consumer of\n // SonicBoom, so we just overwrite the write method\n stream.write = noop\n stream.end = noop\n stream.flushSync = noop\n stream.destroy = noop\n return\n }\n stream.removeListener('error', filterBrokenPipe)\n stream.emit('error', err)\n }\n}\n\nfunction autoEnd (stream, eventName) {\n // This check is needed only on some platforms\n /* istanbul ignore next */\n if (stream.destroyed) {\n return\n }\n\n if (eventName === 'beforeExit') {\n // We still have an event loop, let's use it\n stream.flush()\n stream.on('drain', function () {\n stream.end()\n })\n } else {\n // For some reason istanbul is not detecting this, but it's there\n /* istanbul ignore next */\n // We do not have an event loop, so flush synchronously\n stream.flushSync()\n }\n}\n\nfunction createArgsNormalizer (defaultOptions) {\n return function normalizeArgs (instance, caller, opts = {}, stream) {\n // support stream as a string\n if (typeof opts === 'string') {\n stream = buildSafeSonicBoom({ dest: opts })\n opts = {}\n } else if (typeof stream === 'string') {\n if (opts && opts.transport) {\n throw Error('only one of option.transport or stream can be specified')\n }\n stream = buildSafeSonicBoom({ dest: stream })\n } else if (opts instanceof SonicBoom || opts.writable || opts._writableState) {\n stream = opts\n opts = {}\n } else if (opts.transport) {\n if (opts.transport instanceof SonicBoom || opts.transport.writable || opts.transport._writableState) {\n throw Error('option.transport do not allow stream, please pass to option directly. e.g. pino(transport)')\n }\n if (opts.transport.targets && opts.transport.targets.length && opts.formatters && typeof opts.formatters.level === 'function') {\n throw Error('option.transport.targets do not allow custom level formatters')\n }\n\n let customLevels\n if (opts.customLevels) {\n customLevels = opts.useOnlyCustomLevels ? opts.customLevels : Object.assign({}, opts.levels, opts.customLevels)\n }\n stream = transport({ caller, ...opts.transport, levels: customLevels })\n }\n opts = Object.assign({}, defaultOptions, opts)\n opts.serializers = Object.assign({}, defaultOptions.serializers, opts.serializers)\n opts.formatters = Object.assign({}, defaultOptions.formatters, opts.formatters)\n\n if (opts.prettyPrint) {\n throw new Error('prettyPrint option is no longer supported, see the pino-pretty package (https://github.com/pinojs/pino-pretty)')\n }\n\n const { enabled, onChild } = opts\n if (enabled === false) opts.level = 'silent'\n if (!onChild) opts.onChild = noop\n if (!stream) {\n if (!hasBeenTampered(process.stdout)) {\n // If process.stdout.fd is undefined, it means that we are running\n // in a worker thread. Let's assume we are logging to file descriptor 1.\n stream = buildSafeSonicBoom({ fd: process.stdout.fd || 1 })\n } else {\n stream = process.stdout\n }\n }\n return { opts, stream }\n }\n}\n\nfunction stringify (obj, stringifySafeFn) {\n try {\n return JSON.stringify(obj)\n } catch (_) {\n try {\n const stringify = stringifySafeFn || this[stringifySafeSym]\n return stringify(obj)\n } catch (_) {\n return '\"[unable to serialize, circular reference is too complex to analyze]\"'\n }\n }\n}\n\nfunction buildFormatters (level, bindings, log) {\n return {\n level,\n bindings,\n log\n }\n}\n\n/**\n * Convert a string integer file descriptor to a proper native integer\n * file descriptor.\n *\n * @param {string} destination The file descriptor string to attempt to convert.\n *\n * @returns {Number}\n */\nfunction normalizeDestFileDescriptor (destination) {\n const fd = Number(destination)\n if (typeof destination === 'string' && Number.isFinite(fd)) {\n return fd\n }\n // destination could be undefined if we are in a worker\n if (destination === undefined) {\n // This is stdout in UNIX systems\n return 1\n }\n return destination\n}\n\nmodule.exports = {\n noop,\n buildSafeSonicBoom,\n asChindings,\n asJson,\n genLog,\n createArgsNormalizer,\n stringify,\n buildFormatters,\n normalizeDestFileDescriptor\n}\n","/**\n * Represents default log level values\n *\n * @enum {number}\n */\nconst DEFAULT_LEVELS = {\n trace: 10,\n debug: 20,\n info: 30,\n warn: 40,\n error: 50,\n fatal: 60\n}\n\n/**\n * Represents sort order direction: `ascending` or `descending`\n *\n * @enum {string}\n */\nconst SORTING_ORDER = {\n ASC: 'ASC',\n DESC: 'DESC'\n}\n\nmodule.exports = {\n DEFAULT_LEVELS,\n SORTING_ORDER\n}\n","'use strict'\n/* eslint no-prototype-builtins: 0 */\nconst {\n lsCacheSym,\n levelValSym,\n useOnlyCustomLevelsSym,\n streamSym,\n formattersSym,\n hooksSym,\n levelCompSym\n} = require('./symbols')\nconst { noop, genLog } = require('./tools')\nconst { DEFAULT_LEVELS, SORTING_ORDER } = require('./constants')\n\nconst levelMethods = {\n fatal: (hook) => {\n const logFatal = genLog(DEFAULT_LEVELS.fatal, hook)\n return function (...args) {\n const stream = this[streamSym]\n logFatal.call(this, ...args)\n if (typeof stream.flushSync === 'function') {\n try {\n stream.flushSync()\n } catch (e) {\n // https://github.com/pinojs/pino/pull/740#discussion_r346788313\n }\n }\n }\n },\n error: (hook) => genLog(DEFAULT_LEVELS.error, hook),\n warn: (hook) => genLog(DEFAULT_LEVELS.warn, hook),\n info: (hook) => genLog(DEFAULT_LEVELS.info, hook),\n debug: (hook) => genLog(DEFAULT_LEVELS.debug, hook),\n trace: (hook) => genLog(DEFAULT_LEVELS.trace, hook)\n}\n\nconst nums = Object.keys(DEFAULT_LEVELS).reduce((o, k) => {\n o[DEFAULT_LEVELS[k]] = k\n return o\n}, {})\n\nconst initialLsCache = Object.keys(nums).reduce((o, k) => {\n o[k] = '{\"level\":' + Number(k)\n return o\n}, {})\n\nfunction genLsCache (instance) {\n const formatter = instance[formattersSym].level\n const { labels } = instance.levels\n const cache = {}\n for (const label in labels) {\n const level = formatter(labels[label], Number(label))\n cache[label] = JSON.stringify(level).slice(0, -1)\n }\n instance[lsCacheSym] = cache\n return instance\n}\n\nfunction isStandardLevel (level, useOnlyCustomLevels) {\n if (useOnlyCustomLevels) {\n return false\n }\n\n switch (level) {\n case 'fatal':\n case 'error':\n case 'warn':\n case 'info':\n case 'debug':\n case 'trace':\n return true\n default:\n return false\n }\n}\n\nfunction setLevel (level) {\n const { labels, values } = this.levels\n if (typeof level === 'number') {\n if (labels[level] === undefined) throw Error('unknown level value' + level)\n level = labels[level]\n }\n if (values[level] === undefined) throw Error('unknown level ' + level)\n const preLevelVal = this[levelValSym]\n const levelVal = this[levelValSym] = values[level]\n const useOnlyCustomLevelsVal = this[useOnlyCustomLevelsSym]\n const levelComparison = this[levelCompSym]\n const hook = this[hooksSym].logMethod\n\n for (const key in values) {\n if (levelComparison(values[key], levelVal) === false) {\n this[key] = noop\n continue\n }\n this[key] = isStandardLevel(key, useOnlyCustomLevelsVal) ? levelMethods[key](hook) : genLog(values[key], hook)\n }\n\n this.emit(\n 'level-change',\n level,\n levelVal,\n labels[preLevelVal],\n preLevelVal,\n this\n )\n}\n\nfunction getLevel (level) {\n const { levels, levelVal } = this\n // protection against potential loss of Pino scope from serializers (edge case with circular refs - https://github.com/pinojs/pino/issues/833)\n return (levels && levels.labels) ? levels.labels[levelVal] : ''\n}\n\nfunction isLevelEnabled (logLevel) {\n const { values } = this.levels\n const logLevelVal = values[logLevel]\n return logLevelVal !== undefined && this[levelCompSym](logLevelVal, this[levelValSym])\n}\n\n/**\n * Determine if the given `current` level is enabled by comparing it\n * against the current threshold (`expected`).\n *\n * @param {SORTING_ORDER} direction comparison direction \"ASC\" or \"DESC\"\n * @param {number} current current log level number representation\n * @param {number} expected threshold value to compare with\n * @returns {boolean}\n */\nfunction compareLevel (direction, current, expected) {\n if (direction === SORTING_ORDER.DESC) {\n return current <= expected\n }\n\n return current >= expected\n}\n\n/**\n * Create a level comparison function based on `levelComparison`\n * it could a default function which compares levels either in \"ascending\" or \"descending\" order or custom comparison function\n *\n * @param {SORTING_ORDER | Function} levelComparison sort levels order direction or custom comparison function\n * @returns Function\n */\nfunction genLevelComparison (levelComparison) {\n if (typeof levelComparison === 'string') {\n return compareLevel.bind(null, levelComparison)\n }\n\n return levelComparison\n}\n\nfunction mappings (customLevels = null, useOnlyCustomLevels = false) {\n const customNums = customLevels\n /* eslint-disable */\n ? Object.keys(customLevels).reduce((o, k) => {\n o[customLevels[k]] = k\n return o\n }, {})\n : null\n /* eslint-enable */\n\n const labels = Object.assign(\n Object.create(Object.prototype, { Infinity: { value: 'silent' } }),\n useOnlyCustomLevels ? null : nums,\n customNums\n )\n const values = Object.assign(\n Object.create(Object.prototype, { silent: { value: Infinity } }),\n useOnlyCustomLevels ? null : DEFAULT_LEVELS,\n customLevels\n )\n return { labels, values }\n}\n\nfunction assertDefaultLevelFound (defaultLevel, customLevels, useOnlyCustomLevels) {\n if (typeof defaultLevel === 'number') {\n const values = [].concat(\n Object.keys(customLevels || {}).map(key => customLevels[key]),\n useOnlyCustomLevels ? [] : Object.keys(nums).map(level => +level),\n Infinity\n )\n if (!values.includes(defaultLevel)) {\n throw Error(`default level:${defaultLevel} must be included in custom levels`)\n }\n return\n }\n\n const labels = Object.assign(\n Object.create(Object.prototype, { silent: { value: Infinity } }),\n useOnlyCustomLevels ? null : DEFAULT_LEVELS,\n customLevels\n )\n if (!(defaultLevel in labels)) {\n throw Error(`default level:${defaultLevel} must be included in custom levels`)\n }\n}\n\nfunction assertNoLevelCollisions (levels, customLevels) {\n const { labels, values } = levels\n for (const k in customLevels) {\n if (k in values) {\n throw Error('levels cannot be overridden')\n }\n if (customLevels[k] in labels) {\n throw Error('pre-existing level values cannot be used for new levels')\n }\n }\n}\n\n/**\n * Validates whether `levelComparison` is correct\n *\n * @throws Error\n * @param {SORTING_ORDER | Function} levelComparison - value to validate\n * @returns\n */\nfunction assertLevelComparison (levelComparison) {\n if (typeof levelComparison === 'function') {\n return\n }\n\n if (typeof levelComparison === 'string' && Object.values(SORTING_ORDER).includes(levelComparison)) {\n return\n }\n\n throw new Error('Levels comparison should be one of \"ASC\", \"DESC\" or \"function\" type')\n}\n\nmodule.exports = {\n initialLsCache,\n genLsCache,\n levelMethods,\n getLevel,\n setLevel,\n isLevelEnabled,\n mappings,\n assertNoLevelCollisions,\n assertDefaultLevelFound,\n genLevelComparison,\n assertLevelComparison\n}\n","'use strict'\n\nmodule.exports = { version: '9.9.0' }\n","'use strict'\n\n/* eslint no-prototype-builtins: 0 */\n\nconst { EventEmitter } = require('node:events')\nconst {\n lsCacheSym,\n levelValSym,\n setLevelSym,\n getLevelSym,\n chindingsSym,\n parsedChindingsSym,\n mixinSym,\n asJsonSym,\n writeSym,\n mixinMergeStrategySym,\n timeSym,\n timeSliceIndexSym,\n streamSym,\n serializersSym,\n formattersSym,\n errorKeySym,\n messageKeySym,\n useOnlyCustomLevelsSym,\n needsMetadataGsym,\n redactFmtSym,\n stringifySym,\n formatOptsSym,\n stringifiersSym,\n msgPrefixSym,\n hooksSym\n} = require('./symbols')\nconst {\n getLevel,\n setLevel,\n isLevelEnabled,\n mappings,\n initialLsCache,\n genLsCache,\n assertNoLevelCollisions\n} = require('./levels')\nconst {\n asChindings,\n asJson,\n buildFormatters,\n stringify\n} = require('./tools')\nconst {\n version\n} = require('./meta')\nconst redaction = require('./redaction')\n\n// note: use of class is satirical\n// https://github.com/pinojs/pino/pull/433#pullrequestreview-127703127\nconst constructor = class Pino {}\nconst prototype = {\n constructor,\n child,\n bindings,\n setBindings,\n flush,\n isLevelEnabled,\n version,\n get level () { return this[getLevelSym]() },\n set level (lvl) { this[setLevelSym](lvl) },\n get levelVal () { return this[levelValSym] },\n set levelVal (n) { throw Error('levelVal is read-only') },\n get msgPrefix () { return this[msgPrefixSym] },\n [lsCacheSym]: initialLsCache,\n [writeSym]: write,\n [asJsonSym]: asJson,\n [getLevelSym]: getLevel,\n [setLevelSym]: setLevel\n}\n\nObject.setPrototypeOf(prototype, EventEmitter.prototype)\n\n// exporting and consuming the prototype object using factory pattern fixes scoping issues with getters when serializing\nmodule.exports = function () {\n return Object.create(prototype)\n}\n\nconst resetChildingsFormatter = bindings => bindings\nfunction child (bindings, options) {\n if (!bindings) {\n throw Error('missing bindings for child Pino')\n }\n options = options || {} // default options to empty object\n const serializers = this[serializersSym]\n const formatters = this[formattersSym]\n const instance = Object.create(this)\n\n if (options.hasOwnProperty('serializers') === true) {\n instance[serializersSym] = Object.create(null)\n\n for (const k in serializers) {\n instance[serializersSym][k] = serializers[k]\n }\n const parentSymbols = Object.getOwnPropertySymbols(serializers)\n /* eslint no-var: off */\n for (var i = 0; i < parentSymbols.length; i++) {\n const ks = parentSymbols[i]\n instance[serializersSym][ks] = serializers[ks]\n }\n\n for (const bk in options.serializers) {\n instance[serializersSym][bk] = options.serializers[bk]\n }\n const bindingsSymbols = Object.getOwnPropertySymbols(options.serializers)\n for (var bi = 0; bi < bindingsSymbols.length; bi++) {\n const bks = bindingsSymbols[bi]\n instance[serializersSym][bks] = options.serializers[bks]\n }\n } else instance[serializersSym] = serializers\n if (options.hasOwnProperty('formatters')) {\n const { level, bindings: chindings, log } = options.formatters\n instance[formattersSym] = buildFormatters(\n level || formatters.level,\n chindings || resetChildingsFormatter,\n log || formatters.log\n )\n } else {\n instance[formattersSym] = buildFormatters(\n formatters.level,\n resetChildingsFormatter,\n formatters.log\n )\n }\n if (options.hasOwnProperty('customLevels') === true) {\n assertNoLevelCollisions(this.levels, options.customLevels)\n instance.levels = mappings(options.customLevels, instance[useOnlyCustomLevelsSym])\n genLsCache(instance)\n }\n\n // redact must place before asChindings and only replace if exist\n if ((typeof options.redact === 'object' && options.redact !== null) || Array.isArray(options.redact)) {\n instance.redact = options.redact // replace redact directly\n const stringifiers = redaction(instance.redact, stringify)\n const formatOpts = { stringify: stringifiers[redactFmtSym] }\n instance[stringifySym] = stringify\n instance[stringifiersSym] = stringifiers\n instance[formatOptsSym] = formatOpts\n }\n\n if (typeof options.msgPrefix === 'string') {\n instance[msgPrefixSym] = (this[msgPrefixSym] || '') + options.msgPrefix\n }\n\n instance[chindingsSym] = asChindings(instance, bindings)\n const childLevel = options.level || this.level\n instance[setLevelSym](childLevel)\n this.onChild(instance)\n return instance\n}\n\nfunction bindings () {\n const chindings = this[chindingsSym]\n const chindingsJson = `{${chindings.substr(1)}}` // at least contains ,\"pid\":7068,\"hostname\":\"myMac\"\n const bindingsFromJson = JSON.parse(chindingsJson)\n delete bindingsFromJson.pid\n delete bindingsFromJson.hostname\n return bindingsFromJson\n}\n\nfunction setBindings (newBindings) {\n const chindings = asChindings(this, newBindings)\n this[chindingsSym] = chindings\n delete this[parsedChindingsSym]\n}\n\n/**\n * Default strategy for creating `mergeObject` from arguments and the result from `mixin()`.\n * Fields from `mergeObject` have higher priority in this strategy.\n *\n * @param {Object} mergeObject The object a user has supplied to the logging function.\n * @param {Object} mixinObject The result of the `mixin` method.\n * @return {Object}\n */\nfunction defaultMixinMergeStrategy (mergeObject, mixinObject) {\n return Object.assign(mixinObject, mergeObject)\n}\n\nfunction write (_obj, msg, num) {\n const t = this[timeSym]()\n const mixin = this[mixinSym]\n const errorKey = this[errorKeySym]\n const messageKey = this[messageKeySym]\n const mixinMergeStrategy = this[mixinMergeStrategySym] || defaultMixinMergeStrategy\n let obj\n const streamWriteHook = this[hooksSym].streamWrite\n\n if (_obj === undefined || _obj === null) {\n obj = {}\n } else if (_obj instanceof Error) {\n obj = { [errorKey]: _obj }\n if (msg === undefined) {\n msg = _obj.message\n }\n } else {\n obj = _obj\n if (msg === undefined && _obj[messageKey] === undefined && _obj[errorKey]) {\n msg = _obj[errorKey].message\n }\n }\n\n if (mixin) {\n obj = mixinMergeStrategy(obj, mixin(obj, num, this))\n }\n\n const s = this[asJsonSym](obj, msg, num, t)\n\n const stream = this[streamSym]\n if (stream[needsMetadataGsym] === true) {\n stream.lastLevel = num\n stream.lastObj = obj\n stream.lastMsg = msg\n stream.lastTime = t.slice(this[timeSliceIndexSym])\n stream.lastLogger = this // for child loggers\n }\n stream.write(streamWriteHook ? streamWriteHook(s) : s)\n}\n\nfunction noop () {}\n\nfunction flush (cb) {\n if (cb != null && typeof cb !== 'function') {\n throw Error('callback must be a function')\n }\n\n const stream = this[streamSym]\n\n if (typeof stream.flush === 'function') {\n stream.flush(cb || noop)\n } else if (cb) cb()\n}\n","'use strict'\n\nconst { hasOwnProperty } = Object.prototype\n\nconst stringify = configure()\n\n// @ts-expect-error\nstringify.configure = configure\n// @ts-expect-error\nstringify.stringify = stringify\n\n// @ts-expect-error\nstringify.default = stringify\n\n// @ts-expect-error used for named export\nexports.stringify = stringify\n// @ts-expect-error used for named export\nexports.configure = configure\n\nmodule.exports = stringify\n\n// eslint-disable-next-line no-control-regex\nconst strEscapeSequencesRegExp = /[\\u0000-\\u001f\\u0022\\u005c\\ud800-\\udfff]/\n\n// Escape C0 control characters, double quotes, the backslash and every code\n// unit with a numeric value in the inclusive range 0xD800 to 0xDFFF.\nfunction strEscape (str) {\n // Some magic numbers that worked out fine while benchmarking with v8 8.0\n if (str.length < 5000 && !strEscapeSequencesRegExp.test(str)) {\n return `\"${str}\"`\n }\n return JSON.stringify(str)\n}\n\nfunction sort (array, comparator) {\n // Insertion sort is very efficient for small input sizes, but it has a bad\n // worst case complexity. Thus, use native array sort for bigger values.\n if (array.length > 2e2 || comparator) {\n return array.sort(comparator)\n }\n for (let i = 1; i < array.length; i++) {\n const currentValue = array[i]\n let position = i\n while (position !== 0 && array[position - 1] > currentValue) {\n array[position] = array[position - 1]\n position--\n }\n array[position] = currentValue\n }\n return array\n}\n\nconst typedArrayPrototypeGetSymbolToStringTag =\n Object.getOwnPropertyDescriptor(\n Object.getPrototypeOf(\n Object.getPrototypeOf(\n new Int8Array()\n )\n ),\n Symbol.toStringTag\n ).get\n\nfunction isTypedArrayWithEntries (value) {\n return typedArrayPrototypeGetSymbolToStringTag.call(value) !== undefined && value.length !== 0\n}\n\nfunction stringifyTypedArray (array, separator, maximumBreadth) {\n if (array.length < maximumBreadth) {\n maximumBreadth = array.length\n }\n const whitespace = separator === ',' ? '' : ' '\n let res = `\"0\":${whitespace}${array[0]}`\n for (let i = 1; i < maximumBreadth; i++) {\n res += `${separator}\"${i}\":${whitespace}${array[i]}`\n }\n return res\n}\n\nfunction getCircularValueOption (options) {\n if (hasOwnProperty.call(options, 'circularValue')) {\n const circularValue = options.circularValue\n if (typeof circularValue === 'string') {\n return `\"${circularValue}\"`\n }\n if (circularValue == null) {\n return circularValue\n }\n if (circularValue === Error || circularValue === TypeError) {\n return {\n toString () {\n throw new TypeError('Converting circular structure to JSON')\n }\n }\n }\n throw new TypeError('The \"circularValue\" argument must be of type string or the value null or undefined')\n }\n return '\"[Circular]\"'\n}\n\nfunction getDeterministicOption (options) {\n let value\n if (hasOwnProperty.call(options, 'deterministic')) {\n value = options.deterministic\n if (typeof value !== 'boolean' && typeof value !== 'function') {\n throw new TypeError('The \"deterministic\" argument must be of type boolean or comparator function')\n }\n }\n return value === undefined ? true : value\n}\n\nfunction getBooleanOption (options, key) {\n let value\n if (hasOwnProperty.call(options, key)) {\n value = options[key]\n if (typeof value !== 'boolean') {\n throw new TypeError(`The \"${key}\" argument must be of type boolean`)\n }\n }\n return value === undefined ? true : value\n}\n\nfunction getPositiveIntegerOption (options, key) {\n let value\n if (hasOwnProperty.call(options, key)) {\n value = options[key]\n if (typeof value !== 'number') {\n throw new TypeError(`The \"${key}\" argument must be of type number`)\n }\n if (!Number.isInteger(value)) {\n throw new TypeError(`The \"${key}\" argument must be an integer`)\n }\n if (value < 1) {\n throw new RangeError(`The \"${key}\" argument must be >= 1`)\n }\n }\n return value === undefined ? Infinity : value\n}\n\nfunction getItemCount (number) {\n if (number === 1) {\n return '1 item'\n }\n return `${number} items`\n}\n\nfunction getUniqueReplacerSet (replacerArray) {\n const replacerSet = new Set()\n for (const value of replacerArray) {\n if (typeof value === 'string' || typeof value === 'number') {\n replacerSet.add(String(value))\n }\n }\n return replacerSet\n}\n\nfunction getStrictOption (options) {\n if (hasOwnProperty.call(options, 'strict')) {\n const value = options.strict\n if (typeof value !== 'boolean') {\n throw new TypeError('The \"strict\" argument must be of type boolean')\n }\n if (value) {\n return (value) => {\n let message = `Object can not safely be stringified. Received type ${typeof value}`\n if (typeof value !== 'function') message += ` (${value.toString()})`\n throw new Error(message)\n }\n }\n }\n}\n\nfunction configure (options) {\n options = { ...options }\n const fail = getStrictOption(options)\n if (fail) {\n if (options.bigint === undefined) {\n options.bigint = false\n }\n if (!('circularValue' in options)) {\n options.circularValue = Error\n }\n }\n const circularValue = getCircularValueOption(options)\n const bigint = getBooleanOption(options, 'bigint')\n const deterministic = getDeterministicOption(options)\n const comparator = typeof deterministic === 'function' ? deterministic : undefined\n const maximumDepth = getPositiveIntegerOption(options, 'maximumDepth')\n const maximumBreadth = getPositiveIntegerOption(options, 'maximumBreadth')\n\n function stringifyFnReplacer (key, parent, stack, replacer, spacer, indentation) {\n let value = parent[key]\n\n if (typeof value === 'object' && value !== null && typeof value.toJSON === 'function') {\n value = value.toJSON(key)\n }\n value = replacer.call(parent, key, value)\n\n switch (typeof value) {\n case 'string':\n return strEscape(value)\n case 'object': {\n if (value === null) {\n return 'null'\n }\n if (stack.indexOf(value) !== -1) {\n return circularValue\n }\n\n let res = ''\n let join = ','\n const originalIndentation = indentation\n\n if (Array.isArray(value)) {\n if (value.length === 0) {\n return '[]'\n }\n if (maximumDepth < stack.length + 1) {\n return '\"[Array]\"'\n }\n stack.push(value)\n if (spacer !== '') {\n indentation += spacer\n res += `\\n${indentation}`\n join = `,\\n${indentation}`\n }\n const maximumValuesToStringify = Math.min(value.length, maximumBreadth)\n let i = 0\n for (; i < maximumValuesToStringify - 1; i++) {\n const tmp = stringifyFnReplacer(String(i), value, stack, replacer, spacer, indentation)\n res += tmp !== undefined ? tmp : 'null'\n res += join\n }\n const tmp = stringifyFnReplacer(String(i), value, stack, replacer, spacer, indentation)\n res += tmp !== undefined ? tmp : 'null'\n if (value.length - 1 > maximumBreadth) {\n const removedKeys = value.length - maximumBreadth - 1\n res += `${join}\"... ${getItemCount(removedKeys)} not stringified\"`\n }\n if (spacer !== '') {\n res += `\\n${originalIndentation}`\n }\n stack.pop()\n return `[${res}]`\n }\n\n let keys = Object.keys(value)\n const keyLength = keys.length\n if (keyLength === 0) {\n return '{}'\n }\n if (maximumDepth < stack.length + 1) {\n return '\"[Object]\"'\n }\n let whitespace = ''\n let separator = ''\n if (spacer !== '') {\n indentation += spacer\n join = `,\\n${indentation}`\n whitespace = ' '\n }\n const maximumPropertiesToStringify = Math.min(keyLength, maximumBreadth)\n if (deterministic && !isTypedArrayWithEntries(value)) {\n keys = sort(keys, comparator)\n }\n stack.push(value)\n for (let i = 0; i < maximumPropertiesToStringify; i++) {\n const key = keys[i]\n const tmp = stringifyFnReplacer(key, value, stack, replacer, spacer, indentation)\n if (tmp !== undefined) {\n res += `${separator}${strEscape(key)}:${whitespace}${tmp}`\n separator = join\n }\n }\n if (keyLength > maximumBreadth) {\n const removedKeys = keyLength - maximumBreadth\n res += `${separator}\"...\":${whitespace}\"${getItemCount(removedKeys)} not stringified\"`\n separator = join\n }\n if (spacer !== '' && separator.length > 1) {\n res = `\\n${indentation}${res}\\n${originalIndentation}`\n }\n stack.pop()\n return `{${res}}`\n }\n case 'number':\n return isFinite(value) ? String(value) : fail ? fail(value) : 'null'\n case 'boolean':\n return value === true ? 'true' : 'false'\n case 'undefined':\n return undefined\n case 'bigint':\n if (bigint) {\n return String(value)\n }\n // fallthrough\n default:\n return fail ? fail(value) : undefined\n }\n }\n\n function stringifyArrayReplacer (key, value, stack, replacer, spacer, indentation) {\n if (typeof value === 'object' && value !== null && typeof value.toJSON === 'function') {\n value = value.toJSON(key)\n }\n\n switch (typeof value) {\n case 'string':\n return strEscape(value)\n case 'object': {\n if (value === null) {\n return 'null'\n }\n if (stack.indexOf(value) !== -1) {\n return circularValue\n }\n\n const originalIndentation = indentation\n let res = ''\n let join = ','\n\n if (Array.isArray(value)) {\n if (value.length === 0) {\n return '[]'\n }\n if (maximumDepth < stack.length + 1) {\n return '\"[Array]\"'\n }\n stack.push(value)\n if (spacer !== '') {\n indentation += spacer\n res += `\\n${indentation}`\n join = `,\\n${indentation}`\n }\n const maximumValuesToStringify = Math.min(value.length, maximumBreadth)\n let i = 0\n for (; i < maximumValuesToStringify - 1; i++) {\n const tmp = stringifyArrayReplacer(String(i), value[i], stack, replacer, spacer, indentation)\n res += tmp !== undefined ? tmp : 'null'\n res += join\n }\n const tmp = stringifyArrayReplacer(String(i), value[i], stack, replacer, spacer, indentation)\n res += tmp !== undefined ? tmp : 'null'\n if (value.length - 1 > maximumBreadth) {\n const removedKeys = value.length - maximumBreadth - 1\n res += `${join}\"... ${getItemCount(removedKeys)} not stringified\"`\n }\n if (spacer !== '') {\n res += `\\n${originalIndentation}`\n }\n stack.pop()\n return `[${res}]`\n }\n stack.push(value)\n let whitespace = ''\n if (spacer !== '') {\n indentation += spacer\n join = `,\\n${indentation}`\n whitespace = ' '\n }\n let separator = ''\n for (const key of replacer) {\n const tmp = stringifyArrayReplacer(key, value[key], stack, replacer, spacer, indentation)\n if (tmp !== undefined) {\n res += `${separator}${strEscape(key)}:${whitespace}${tmp}`\n separator = join\n }\n }\n if (spacer !== '' && separator.length > 1) {\n res = `\\n${indentation}${res}\\n${originalIndentation}`\n }\n stack.pop()\n return `{${res}}`\n }\n case 'number':\n return isFinite(value) ? String(value) : fail ? fail(value) : 'null'\n case 'boolean':\n return value === true ? 'true' : 'false'\n case 'undefined':\n return undefined\n case 'bigint':\n if (bigint) {\n return String(value)\n }\n // fallthrough\n default:\n return fail ? fail(value) : undefined\n }\n }\n\n function stringifyIndent (key, value, stack, spacer, indentation) {\n switch (typeof value) {\n case 'string':\n return strEscape(value)\n case 'object': {\n if (value === null) {\n return 'null'\n }\n if (typeof value.toJSON === 'function') {\n value = value.toJSON(key)\n // Prevent calling `toJSON` again.\n if (typeof value !== 'object') {\n return stringifyIndent(key, value, stack, spacer, indentation)\n }\n if (value === null) {\n return 'null'\n }\n }\n if (stack.indexOf(value) !== -1) {\n return circularValue\n }\n const originalIndentation = indentation\n\n if (Array.isArray(value)) {\n if (value.length === 0) {\n return '[]'\n }\n if (maximumDepth < stack.length + 1) {\n return '\"[Array]\"'\n }\n stack.push(value)\n indentation += spacer\n let res = `\\n${indentation}`\n const join = `,\\n${indentation}`\n const maximumValuesToStringify = Math.min(value.length, maximumBreadth)\n let i = 0\n for (; i < maximumValuesToStringify - 1; i++) {\n const tmp = stringifyIndent(String(i), value[i], stack, spacer, indentation)\n res += tmp !== undefined ? tmp : 'null'\n res += join\n }\n const tmp = stringifyIndent(String(i), value[i], stack, spacer, indentation)\n res += tmp !== undefined ? tmp : 'null'\n if (value.length - 1 > maximumBreadth) {\n const removedKeys = value.length - maximumBreadth - 1\n res += `${join}\"... ${getItemCount(removedKeys)} not stringified\"`\n }\n res += `\\n${originalIndentation}`\n stack.pop()\n return `[${res}]`\n }\n\n let keys = Object.keys(value)\n const keyLength = keys.length\n if (keyLength === 0) {\n return '{}'\n }\n if (maximumDepth < stack.length + 1) {\n return '\"[Object]\"'\n }\n indentation += spacer\n const join = `,\\n${indentation}`\n let res = ''\n let separator = ''\n let maximumPropertiesToStringify = Math.min(keyLength, maximumBreadth)\n if (isTypedArrayWithEntries(value)) {\n res += stringifyTypedArray(value, join, maximumBreadth)\n keys = keys.slice(value.length)\n maximumPropertiesToStringify -= value.length\n separator = join\n }\n if (deterministic) {\n keys = sort(keys, comparator)\n }\n stack.push(value)\n for (let i = 0; i < maximumPropertiesToStringify; i++) {\n const key = keys[i]\n const tmp = stringifyIndent(key, value[key], stack, spacer, indentation)\n if (tmp !== undefined) {\n res += `${separator}${strEscape(key)}: ${tmp}`\n separator = join\n }\n }\n if (keyLength > maximumBreadth) {\n const removedKeys = keyLength - maximumBreadth\n res += `${separator}\"...\": \"${getItemCount(removedKeys)} not stringified\"`\n separator = join\n }\n if (separator !== '') {\n res = `\\n${indentation}${res}\\n${originalIndentation}`\n }\n stack.pop()\n return `{${res}}`\n }\n case 'number':\n return isFinite(value) ? String(value) : fail ? fail(value) : 'null'\n case 'boolean':\n return value === true ? 'true' : 'false'\n case 'undefined':\n return undefined\n case 'bigint':\n if (bigint) {\n return String(value)\n }\n // fallthrough\n default:\n return fail ? fail(value) : undefined\n }\n }\n\n function stringifySimple (key, value, stack) {\n switch (typeof value) {\n case 'string':\n return strEscape(value)\n case 'object': {\n if (value === null) {\n return 'null'\n }\n if (typeof value.toJSON === 'function') {\n value = value.toJSON(key)\n // Prevent calling `toJSON` again\n if (typeof value !== 'object') {\n return stringifySimple(key, value, stack)\n }\n if (value === null) {\n return 'null'\n }\n }\n if (stack.indexOf(value) !== -1) {\n return circularValue\n }\n\n let res = ''\n\n const hasLength = value.length !== undefined\n if (hasLength && Array.isArray(value)) {\n if (value.length === 0) {\n return '[]'\n }\n if (maximumDepth < stack.length + 1) {\n return '\"[Array]\"'\n }\n stack.push(value)\n const maximumValuesToStringify = Math.min(value.length, maximumBreadth)\n let i = 0\n for (; i < maximumValuesToStringify - 1; i++) {\n const tmp = stringifySimple(String(i), value[i], stack)\n res += tmp !== undefined ? tmp : 'null'\n res += ','\n }\n const tmp = stringifySimple(String(i), value[i], stack)\n res += tmp !== undefined ? tmp : 'null'\n if (value.length - 1 > maximumBreadth) {\n const removedKeys = value.length - maximumBreadth - 1\n res += `,\"... ${getItemCount(removedKeys)} not stringified\"`\n }\n stack.pop()\n return `[${res}]`\n }\n\n let keys = Object.keys(value)\n const keyLength = keys.length\n if (keyLength === 0) {\n return '{}'\n }\n if (maximumDepth < stack.length + 1) {\n return '\"[Object]\"'\n }\n let separator = ''\n let maximumPropertiesToStringify = Math.min(keyLength, maximumBreadth)\n if (hasLength && isTypedArrayWithEntries(value)) {\n res += stringifyTypedArray(value, ',', maximumBreadth)\n keys = keys.slice(value.length)\n maximumPropertiesToStringify -= value.length\n separator = ','\n }\n if (deterministic) {\n keys = sort(keys, comparator)\n }\n stack.push(value)\n for (let i = 0; i < maximumPropertiesToStringify; i++) {\n const key = keys[i]\n const tmp = stringifySimple(key, value[key], stack)\n if (tmp !== undefined) {\n res += `${separator}${strEscape(key)}:${tmp}`\n separator = ','\n }\n }\n if (keyLength > maximumBreadth) {\n const removedKeys = keyLength - maximumBreadth\n res += `${separator}\"...\":\"${getItemCount(removedKeys)} not stringified\"`\n }\n stack.pop()\n return `{${res}}`\n }\n case 'number':\n return isFinite(value) ? String(value) : fail ? fail(value) : 'null'\n case 'boolean':\n return value === true ? 'true' : 'false'\n case 'undefined':\n return undefined\n case 'bigint':\n if (bigint) {\n return String(value)\n }\n // fallthrough\n default:\n return fail ? fail(value) : undefined\n }\n }\n\n function stringify (value, replacer, space) {\n if (arguments.length > 1) {\n let spacer = ''\n if (typeof space === 'number') {\n spacer = ' '.repeat(Math.min(space, 10))\n } else if (typeof space === 'string') {\n spacer = space.slice(0, 10)\n }\n if (replacer != null) {\n if (typeof replacer === 'function') {\n return stringifyFnReplacer('', { '': value }, [], replacer, spacer, '')\n }\n if (Array.isArray(replacer)) {\n return stringifyArrayReplacer('', value, [], getUniqueReplacerSet(replacer), spacer, '')\n }\n }\n if (spacer.length !== 0) {\n return stringifyIndent('', value, [], spacer, '')\n }\n }\n return stringifySimple('', value, [])\n }\n\n return stringify\n}\n","'use strict'\n\nconst metadata = Symbol.for('pino.metadata')\nconst { DEFAULT_LEVELS } = require('./constants')\n\nconst DEFAULT_INFO_LEVEL = DEFAULT_LEVELS.info\n\nfunction multistream (streamsArray, opts) {\n streamsArray = streamsArray || []\n opts = opts || { dedupe: false }\n\n const streamLevels = Object.create(DEFAULT_LEVELS)\n streamLevels.silent = Infinity\n if (opts.levels && typeof opts.levels === 'object') {\n Object.keys(opts.levels).forEach(i => {\n streamLevels[i] = opts.levels[i]\n })\n }\n\n const res = {\n write,\n add,\n remove,\n emit,\n flushSync,\n end,\n minLevel: 0,\n lastId: 0,\n streams: [],\n clone,\n [metadata]: true,\n streamLevels\n }\n\n if (Array.isArray(streamsArray)) {\n streamsArray.forEach(add, res)\n } else {\n add.call(res, streamsArray)\n }\n\n // clean this object up\n // or it will stay allocated forever\n // as it is closed on the following closures\n streamsArray = null\n\n return res\n\n // we can exit early because the streams are ordered by level\n function write (data) {\n let dest\n const level = this.lastLevel\n const { streams } = this\n // for handling situation when several streams has the same level\n let recordedLevel = 0\n let stream\n\n // if dedupe set to true we send logs to the stream with the highest level\n // therefore, we have to change sorting order\n for (let i = initLoopVar(streams.length, opts.dedupe); checkLoopVar(i, streams.length, opts.dedupe); i = adjustLoopVar(i, opts.dedupe)) {\n dest = streams[i]\n if (dest.level <= level) {\n if (recordedLevel !== 0 && recordedLevel !== dest.level) {\n break\n }\n stream = dest.stream\n if (stream[metadata]) {\n const { lastTime, lastMsg, lastObj, lastLogger } = this\n stream.lastLevel = level\n stream.lastTime = lastTime\n stream.lastMsg = lastMsg\n stream.lastObj = lastObj\n stream.lastLogger = lastLogger\n }\n stream.write(data)\n if (opts.dedupe) {\n recordedLevel = dest.level\n }\n } else if (!opts.dedupe) {\n break\n }\n }\n }\n\n function emit (...args) {\n for (const { stream } of this.streams) {\n if (typeof stream.emit === 'function') {\n stream.emit(...args)\n }\n }\n }\n\n function flushSync () {\n for (const { stream } of this.streams) {\n if (typeof stream.flushSync === 'function') {\n stream.flushSync()\n }\n }\n }\n\n function add (dest) {\n if (!dest) {\n return res\n }\n\n // Check that dest implements either StreamEntry or DestinationStream\n const isStream = typeof dest.write === 'function' || dest.stream\n const stream_ = dest.write ? dest : dest.stream\n // This is necessary to provide a meaningful error message, otherwise it throws somewhere inside write()\n if (!isStream) {\n throw Error('stream object needs to implement either StreamEntry or DestinationStream interface')\n }\n\n const { streams, streamLevels } = this\n\n let level\n if (typeof dest.levelVal === 'number') {\n level = dest.levelVal\n } else if (typeof dest.level === 'string') {\n level = streamLevels[dest.level]\n } else if (typeof dest.level === 'number') {\n level = dest.level\n } else {\n level = DEFAULT_INFO_LEVEL\n }\n\n const dest_ = {\n stream: stream_,\n level,\n levelVal: undefined,\n id: ++res.lastId\n }\n\n streams.unshift(dest_)\n streams.sort(compareByLevel)\n\n this.minLevel = streams[0].level\n\n return res\n }\n\n function remove (id) {\n const { streams } = this\n const index = streams.findIndex(s => s.id === id)\n\n if (index >= 0) {\n streams.splice(index, 1)\n streams.sort(compareByLevel)\n this.minLevel = streams.length > 0 ? streams[0].level : -1\n }\n\n return res\n }\n\n function end () {\n for (const { stream } of this.streams) {\n if (typeof stream.flushSync === 'function') {\n stream.flushSync()\n }\n stream.end()\n }\n }\n\n function clone (level) {\n const streams = new Array(this.streams.length)\n\n for (let i = 0; i < streams.length; i++) {\n streams[i] = {\n level,\n stream: this.streams[i].stream\n }\n }\n\n return {\n write,\n add,\n remove,\n minLevel: level,\n streams,\n clone,\n emit,\n flushSync,\n [metadata]: true\n }\n }\n}\n\nfunction compareByLevel (a, b) {\n return a.level - b.level\n}\n\nfunction initLoopVar (length, dedupe) {\n return dedupe ? length - 1 : 0\n}\n\nfunction adjustLoopVar (i, dedupe) {\n return dedupe ? i - 1 : i + 1\n}\n\nfunction checkLoopVar (i, length, dedupe) {\n return dedupe ? i >= 0 : i < length\n}\n\nmodule.exports = multistream\n","'use strict'\n\nconst os = require('node:os')\nconst stdSerializers = require('pino-std-serializers')\nconst caller = require('./lib/caller')\nconst redaction = require('./lib/redaction')\nconst time = require('./lib/time')\nconst proto = require('./lib/proto')\nconst symbols = require('./lib/symbols')\nconst { configure } = require('safe-stable-stringify')\nconst { assertDefaultLevelFound, mappings, genLsCache, genLevelComparison, assertLevelComparison } = require('./lib/levels')\nconst { DEFAULT_LEVELS, SORTING_ORDER } = require('./lib/constants')\nconst {\n createArgsNormalizer,\n asChindings,\n buildSafeSonicBoom,\n buildFormatters,\n stringify,\n normalizeDestFileDescriptor,\n noop\n} = require('./lib/tools')\nconst { version } = require('./lib/meta')\nconst {\n chindingsSym,\n redactFmtSym,\n serializersSym,\n timeSym,\n timeSliceIndexSym,\n streamSym,\n stringifySym,\n stringifySafeSym,\n stringifiersSym,\n setLevelSym,\n endSym,\n formatOptsSym,\n messageKeySym,\n errorKeySym,\n nestedKeySym,\n mixinSym,\n levelCompSym,\n useOnlyCustomLevelsSym,\n formattersSym,\n hooksSym,\n nestedKeyStrSym,\n mixinMergeStrategySym,\n msgPrefixSym\n} = symbols\nconst { epochTime, nullTime } = time\nconst { pid } = process\nconst hostname = os.hostname()\nconst defaultErrorSerializer = stdSerializers.err\nconst defaultOptions = {\n level: 'info',\n levelComparison: SORTING_ORDER.ASC,\n levels: DEFAULT_LEVELS,\n messageKey: 'msg',\n errorKey: 'err',\n nestedKey: null,\n enabled: true,\n base: { pid, hostname },\n serializers: Object.assign(Object.create(null), {\n err: defaultErrorSerializer\n }),\n formatters: Object.assign(Object.create(null), {\n bindings (bindings) {\n return bindings\n },\n level (label, number) {\n return { level: number }\n }\n }),\n hooks: {\n logMethod: undefined,\n streamWrite: undefined\n },\n timestamp: epochTime,\n name: undefined,\n redact: null,\n customLevels: null,\n useOnlyCustomLevels: false,\n depthLimit: 5,\n edgeLimit: 100\n}\n\nconst normalize = createArgsNormalizer(defaultOptions)\n\nconst serializers = Object.assign(Object.create(null), stdSerializers)\n\nfunction pino (...args) {\n const instance = {}\n const { opts, stream } = normalize(instance, caller(), ...args)\n\n if (opts.level && typeof opts.level === 'string' && DEFAULT_LEVELS[opts.level.toLowerCase()] !== undefined) opts.level = opts.level.toLowerCase()\n\n const {\n redact,\n crlf,\n serializers,\n timestamp,\n messageKey,\n errorKey,\n nestedKey,\n base,\n name,\n level,\n customLevels,\n levelComparison,\n mixin,\n mixinMergeStrategy,\n useOnlyCustomLevels,\n formatters,\n hooks,\n depthLimit,\n edgeLimit,\n onChild,\n msgPrefix\n } = opts\n\n const stringifySafe = configure({\n maximumDepth: depthLimit,\n maximumBreadth: edgeLimit\n })\n\n const allFormatters = buildFormatters(\n formatters.level,\n formatters.bindings,\n formatters.log\n )\n\n const stringifyFn = stringify.bind({\n [stringifySafeSym]: stringifySafe\n })\n const stringifiers = redact ? redaction(redact, stringifyFn) : {}\n const formatOpts = redact\n ? { stringify: stringifiers[redactFmtSym] }\n : { stringify: stringifyFn }\n const end = '}' + (crlf ? '\\r\\n' : '\\n')\n const coreChindings = asChindings.bind(null, {\n [chindingsSym]: '',\n [serializersSym]: serializers,\n [stringifiersSym]: stringifiers,\n [stringifySym]: stringify,\n [stringifySafeSym]: stringifySafe,\n [formattersSym]: allFormatters\n })\n\n let chindings = ''\n if (base !== null) {\n if (name === undefined) {\n chindings = coreChindings(base)\n } else {\n chindings = coreChindings(Object.assign({}, base, { name }))\n }\n }\n\n const time = (timestamp instanceof Function)\n ? timestamp\n : (timestamp ? epochTime : nullTime)\n const timeSliceIndex = time().indexOf(':') + 1\n\n if (useOnlyCustomLevels && !customLevels) throw Error('customLevels is required if useOnlyCustomLevels is set true')\n if (mixin && typeof mixin !== 'function') throw Error(`Unknown mixin type \"${typeof mixin}\" - expected \"function\"`)\n if (msgPrefix && typeof msgPrefix !== 'string') throw Error(`Unknown msgPrefix type \"${typeof msgPrefix}\" - expected \"string\"`)\n\n assertDefaultLevelFound(level, customLevels, useOnlyCustomLevels)\n const levels = mappings(customLevels, useOnlyCustomLevels)\n\n if (typeof stream.emit === 'function') {\n stream.emit('message', { code: 'PINO_CONFIG', config: { levels, messageKey, errorKey } })\n }\n\n assertLevelComparison(levelComparison)\n const levelCompFunc = genLevelComparison(levelComparison)\n\n Object.assign(instance, {\n levels,\n [levelCompSym]: levelCompFunc,\n [useOnlyCustomLevelsSym]: useOnlyCustomLevels,\n [streamSym]: stream,\n [timeSym]: time,\n [timeSliceIndexSym]: timeSliceIndex,\n [stringifySym]: stringify,\n [stringifySafeSym]: stringifySafe,\n [stringifiersSym]: stringifiers,\n [endSym]: end,\n [formatOptsSym]: formatOpts,\n [messageKeySym]: messageKey,\n [errorKeySym]: errorKey,\n [nestedKeySym]: nestedKey,\n // protect against injection\n [nestedKeyStrSym]: nestedKey ? `,${JSON.stringify(nestedKey)}:{` : '',\n [serializersSym]: serializers,\n [mixinSym]: mixin,\n [mixinMergeStrategySym]: mixinMergeStrategy,\n [chindingsSym]: chindings,\n [formattersSym]: allFormatters,\n [hooksSym]: hooks,\n silent: noop,\n onChild,\n [msgPrefixSym]: msgPrefix\n })\n\n Object.setPrototypeOf(instance, proto())\n\n genLsCache(instance)\n\n instance[setLevelSym](level)\n\n return instance\n}\n\nmodule.exports = pino\n\nmodule.exports.destination = (dest = process.stdout.fd) => {\n if (typeof dest === 'object') {\n dest.dest = normalizeDestFileDescriptor(dest.dest || process.stdout.fd)\n return buildSafeSonicBoom(dest)\n } else {\n return buildSafeSonicBoom({ dest: normalizeDestFileDescriptor(dest), minLength: 0 })\n }\n}\n\nmodule.exports.transport = require('./lib/transport')\nmodule.exports.multistream = require('./lib/multistream')\n\nmodule.exports.levels = mappings()\nmodule.exports.stdSerializers = serializers\nmodule.exports.stdTimeFunctions = Object.assign({}, time)\nmodule.exports.symbols = symbols\nmodule.exports.version = version\n\n// Enables default and name export with TypeScript and Babel\nmodule.exports.default = pino\nmodule.exports.pino = pino\n","import { AsyncLocalStorage } from \"node:async_hooks\";\n\nimport type { LogRecord } from \"../common/requestLogger.js\";\nimport { formatMessage, removeKeys } from \"./utils.js\";\n\nconst MAX_BUFFER_SIZE = 1000;\n\nconst originalStreamSym = Symbol.for(\"apitally.originalStream\");\nconst logLevelMap: Record<number, string> = {\n 10: \"trace\",\n 20: \"debug\",\n 30: \"info\",\n 40: \"warn\",\n 50: \"error\",\n 60: \"fatal\",\n};\n\nexport async function patchPinoLogger(\n logger: any,\n logsContext: AsyncLocalStorage<LogRecord[]>,\n) {\n try {\n const pino = await import(\"pino\");\n if (!(pino.default.symbols.streamSym in logger)) {\n return;\n }\n if (!(originalStreamSym in logger)) {\n logger[originalStreamSym] = logger[pino.default.symbols.streamSym];\n }\n\n const originalStream = logger[originalStreamSym];\n if (originalStream) {\n const messageKey = logger[pino.default.symbols.messageKeySym];\n const captureStream = new ApitallyLogCaptureStream(\n logsContext,\n messageKey,\n );\n logger[pino.default.symbols.streamSym] = pino.default.multistream(\n [\n { level: 0, stream: originalStream },\n { level: 0, stream: captureStream },\n ],\n {\n levels: logger.levels,\n },\n );\n }\n } catch {\n // pino is not installed, silently ignore\n }\n}\n\nfunction filterLogs(obj: any, messageKey: string) {\n return obj[messageKey] !== \"request completed\";\n}\n\nclass ApitallyLogCaptureStream {\n private logsContext: AsyncLocalStorage<LogRecord[]>;\n private messageKey: string;\n\n constructor(logsContext: AsyncLocalStorage<LogRecord[]>, messageKey: string) {\n this.logsContext = logsContext;\n this.messageKey = messageKey;\n }\n\n write(msg: string): void {\n const logs = this.logsContext.getStore();\n if (!logs || !msg || logs.length >= MAX_BUFFER_SIZE) {\n return;\n }\n\n let obj: any;\n try {\n obj = JSON.parse(msg);\n } catch (e) {\n return;\n }\n if (\n obj === null ||\n typeof obj !== \"object\" ||\n !filterLogs(obj, this.messageKey)\n ) {\n return;\n }\n\n try {\n const message = obj[this.messageKey];\n const rest = removeKeys(obj, [\n \"hostname\",\n \"level\",\n this.messageKey,\n \"pid\",\n \"time\",\n \"reqId\",\n \"req\",\n \"res\",\n ]);\n const formattedMessage = formatMessage(message, rest);\n if (formattedMessage) {\n logs.push({\n timestamp: this.convertTime(obj.time),\n level: logLevelMap[obj.level] || \"info\",\n message: formattedMessage,\n });\n }\n } catch (e) {\n // ignore\n }\n }\n\n private convertTime(time: any): number {\n if (typeof time === \"number\" && !isNaN(time)) {\n return time / 1000; // Convert milliseconds to seconds\n }\n return Date.now() / 1000; // Fallback to current time\n }\n}\n","import { format } from \"node:util\";\n\nexport function formatMessage(message: any, ...args: any[]) {\n return [message, ...args]\n .map(formatArg)\n .filter((arg) => arg !== \"\")\n .join(\"\\n\");\n}\n\nexport function removeKeys(obj: any, keys: string[]) {\n return Object.fromEntries(\n Object.entries(obj).filter(([key]) => !keys.includes(key)),\n );\n}\n\nfunction formatArg(arg: any) {\n if (typeof arg === \"string\") {\n return arg.trim();\n }\n if (arg instanceof Error) {\n return format(arg).trim();\n }\n if (arg === undefined || arg === null || isEmptyObject(arg)) {\n return \"\";\n }\n try {\n return JSON.stringify(arg);\n } catch {\n return format(arg).trim();\n }\n}\n\nfunction isEmptyObject(obj: any) {\n return (\n obj !== null &&\n typeof obj === \"object\" &&\n Object.getPrototypeOf(obj) === Object.prototype &&\n Object.keys(obj).length === 0\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;yDAAAA,UAAAC,SAAA;;AAOA,QAAMC,cAAc,wBAACC,QAAAA;AACnB,aAAOA,OAAO,OAAOA,IAAIC,YAAY;IACvC,GAFoB;AAQpB,QAAMC,gBAAgB,wBAACF,QAAAA;AACrB,UAAI,CAACA,IAAK;AAIV,YAAMG,QAAQH,IAAIG;AAGlB,UAAI,OAAOA,UAAU,YAAY;AAE/B,cAAMC,cAAcJ,IAAIG,MAAK;AAE7B,eAAOJ,YAAYK,WAAAA,IACfA,cACAC;MACN,OAAO;AACL,eAAON,YAAYI,KAAAA,IACfA,QACAE;MACN;IACF,GApBsB;AA8BtB,QAAMC,mBAAmB,wBAACN,KAAKO,SAAAA;AAC7B,UAAI,CAACR,YAAYC,GAAAA,EAAM,QAAO;AAE9B,YAAMQ,QAAQR,IAAIQ,SAAS;AAG3B,UAAID,KAAKE,IAAIT,GAAAA,GAAM;AACjB,eAAOQ,QAAQ;MACjB;AAEA,YAAML,QAAQD,cAAcF,GAAAA;AAE5B,UAAIG,OAAO;AACTI,aAAKG,IAAIV,GAAAA;AACT,eAAQQ,QAAQ,kBAAkBF,iBAAiBH,OAAOI,IAAAA;MAC5D,OAAO;AACL,eAAOC;MACT;IACF,GAlByB;AAwBzB,QAAMG,kBAAkB,wBAACX,QAAQM,iBAAiBN,KAAK,oBAAIY,IAAAA,CAAAA,GAAnC;AAWxB,QAAMC,qBAAqB,wBAACb,KAAKO,MAAMO,SAAAA;AACrC,UAAI,CAACf,YAAYC,GAAAA,EAAM,QAAO;AAE9B,YAAMC,UAAUa,OAAO,KAAMd,IAAIC,WAAW;AAG5C,UAAIM,KAAKE,IAAIT,GAAAA,GAAM;AACjB,eAAOC,UAAU;MACnB;AAEA,YAAME,QAAQD,cAAcF,GAAAA;AAE5B,UAAIG,OAAO;AACTI,aAAKG,IAAIV,GAAAA;AAGT,cAAMe,yBAAyB,OAAOf,IAAIG,UAAU;AAEpD,eAAQF,WACLc,yBAAyB,KAAK,QAC/BF,mBAAmBV,OAAOI,MAAMQ,sBAAAA;MACpC,OAAO;AACL,eAAOd;MACT;IACF,GAxB2B;AA8B3B,QAAMe,oBAAoB,wBAAChB,QAAQa,mBAAmBb,KAAK,oBAAIY,IAAAA,CAAAA,GAArC;AAE1Bd,IAAAA,QAAOD,UAAU;MACfE;MACAG;MACAS;MACAK;IACF;;;;;ACrHA;uDAAAC,UAAAC,SAAA;;AAEA,QAAMC,OAAOC,OAAO,kBAAA;AACpB,QAAMC,YAAYD,OAAO,kBAAA;AAEzB,QAAME,eAAeC,OAAOC,OAAO,CAAC,GAAG;MACrCC,MAAM;QACJC,YAAY;QACZC,UAAU;QACVC,OAAOC;MACT;MACAC,SAAS;QACPJ,YAAY;QACZC,UAAU;QACVC,OAAOC;MACT;MACAE,OAAO;QACLL,YAAY;QACZC,UAAU;QACVC,OAAOC;MACT;MACAG,iBAAiB;QACfN,YAAY;QACZC,UAAU;QACVC,OAAOC;MACT;MACAI,KAAK;QACHP,YAAY;QACZQ,KAAK,kCAAA;AACH,iBAAO,KAAKb,SAAAA;QACd,GAFK;QAGLc,KAAK,gCAAUC,KAAG;AAChB,eAAKf,SAAAA,IAAae;QACpB,GAFK;MAGP;IACF,CAAA;AACAb,WAAOc,eAAef,cAAcD,WAAW;MAC7CM,UAAU;MACVC,OAAO,CAAC;IACV,CAAA;AAEAV,IAAAA,QAAOD,UAAU;MACfK;MACAgB,kBAAkB;QAChBnB;QACAE;MACF;IACF;;;;;AC/CA;iDAAAkB,UAAAC,SAAA;;AAEAA,IAAAA,QAAOD,UAAUE;AAEjB,QAAM,EAAEC,mBAAmBC,iBAAiBC,YAAW,IAAKC;AAC5D,QAAM,EAAEC,cAAcC,iBAAgB,IAAKF;AAC3C,QAAM,EAAEG,KAAI,IAAKD;AAEjB,QAAM,EAAEE,SAAQ,IAAKC,OAAOC;AAE5B,aAASV,cAAeW,KAAG;AACzB,UAAI,CAACR,YAAYQ,GAAAA,GAAM;AACrB,eAAOA;MACT;AAEAA,UAAIJ,IAAAA,IAAQK;AACZ,YAAMC,OAAOJ,OAAOK,OAAOT,YAAAA;AAC3BQ,WAAKE,OAAOP,SAASQ,KAAKL,IAAI,WAAW,MAAM,sBAC3CA,IAAI,YAAYM,OAChBN,IAAIM;AACRJ,WAAKK,UAAUjB,kBAAkBU,GAAAA;AACjCE,WAAKM,QAAQjB,gBAAgBS,GAAAA;AAE7B,UAAIS,MAAMC,QAAQV,IAAIW,MAAM,GAAG;AAC7BT,aAAKU,kBAAkBZ,IAAIW,OAAOE,IAAIb,CAAAA,SAAOX,cAAcW,IAAAA,CAAAA;MAC7D;AAEA,iBAAWc,OAAOd,KAAK;AACrB,YAAIE,KAAKY,GAAAA,MAASb,QAAW;AAC3B,gBAAMc,MAAMf,IAAIc,GAAAA;AAChB,cAAItB,YAAYuB,GAAAA,GAAM;AAEpB,gBAAID,QAAQ,WAAW,CAAChB,OAAOC,UAAUiB,eAAeX,KAAKU,KAAKnB,IAAAA,GAAO;AACvEM,mBAAKY,GAAAA,IAAOzB,cAAc0B,GAAAA;YAC5B;UACF,OAAO;AACLb,iBAAKY,GAAAA,IAAOC;UACd;QACF;MACF;AAEA,aAAOf,IAAIJ,IAAAA;AACXM,WAAKe,MAAMjB;AACX,aAAOE;IACT;AAlCSb;;;;;ACVT;4DAAA6B,UAAAC,SAAA;;AAEAA,IAAAA,QAAOD,UAAUE;AAEjB,QAAM,EAAEC,YAAW,IAAKC;AACxB,QAAM,EAAEC,cAAcC,iBAAgB,IAAKF;AAC3C,QAAM,EAAEG,KAAI,IAAKD;AAEjB,QAAM,EAAEE,SAAQ,IAAKC,OAAOC;AAE5B,aAASR,uBAAwBS,KAAG;AAClC,UAAI,CAACR,YAAYQ,GAAAA,GAAM;AACrB,eAAOA;MACT;AAEAA,UAAIJ,IAAAA,IAAQK;AACZ,YAAMC,OAAOJ,OAAOK,OAAOT,YAAAA;AAC3BQ,WAAKE,OAAOP,SAASQ,KAAKL,IAAI,WAAW,MAAM,sBAC3CA,IAAI,YAAYM,OAChBN,IAAIM;AACRJ,WAAKK,UAAUP,IAAIO;AACnBL,WAAKM,QAAQR,IAAIQ;AAEjB,UAAIC,MAAMC,QAAQV,IAAIW,MAAM,GAAG;AAC7BT,aAAKU,kBAAkBZ,IAAIW,OAAOE,IAAIb,CAAAA,SAAOT,uBAAuBS,IAAAA,CAAAA;MACtE;AAEA,UAAIR,YAAYQ,IAAIc,KAAK,KAAK,CAAChB,OAAOC,UAAUgB,eAAeV,KAAKL,IAAIc,OAAOlB,IAAAA,GAAO;AACpFM,aAAKY,QAAQvB,uBAAuBS,IAAIc,KAAK;MAC/C;AAEA,iBAAWE,OAAOhB,KAAK;AACrB,YAAIE,KAAKc,GAAAA,MAASf,QAAW;AAC3B,gBAAMgB,MAAMjB,IAAIgB,GAAAA;AAChB,cAAIxB,YAAYyB,GAAAA,GAAM;AACpB,gBAAI,CAACnB,OAAOC,UAAUgB,eAAeV,KAAKY,KAAKrB,IAAAA,GAAO;AACpDM,mBAAKc,GAAAA,IAAOzB,uBAAuB0B,GAAAA;YACrC;UACF,OAAO;AACLf,iBAAKc,GAAAA,IAAOC;UACd;QACF;MACF;AAEA,aAAOjB,IAAIJ,IAAAA;AACXM,WAAKgB,MAAMlB;AACX,aAAOE;IACT;AArCSX;;;;;ACVT;iDAAA4B,UAAAC,SAAA;;AAEAA,IAAAA,QAAOD,UAAU;MACfE;MACAC;IACF;AAEA,QAAMC,YAAYC,OAAO,kBAAA;AACzB,QAAMC,eAAeC,OAAOC,OAAO,CAAC,GAAG;MACrCC,IAAI;QACFC,YAAY;QACZC,UAAU;QACVC,OAAO;MACT;MACAC,QAAQ;QACNH,YAAY;QACZC,UAAU;QACVC,OAAO;MACT;MACAE,KAAK;QACHJ,YAAY;QACZC,UAAU;QACVC,OAAO;MACT;MACAG,OAAO;QACLL,YAAY;QACZC,UAAU;QACVC,OAAO;MACT;MACAI,QAAQ;QACNN,YAAY;QACZC,UAAU;QACVC,OAAO;MACT;MACAK,SAAS;QACPP,YAAY;QACZC,UAAU;QACVC,OAAO,CAAC;MACV;MACAM,eAAe;QACbR,YAAY;QACZC,UAAU;QACVC,OAAO;MACT;MACAO,YAAY;QACVT,YAAY;QACZC,UAAU;QACVC,OAAO;MACT;MACAQ,KAAK;QACHV,YAAY;QACZW,KAAK,kCAAA;AACH,iBAAO,KAAKjB,SAAAA;QACd,GAFK;QAGLkB,KAAK,gCAAUC,KAAG;AAChB,eAAKnB,SAAAA,IAAamB;QACpB,GAFK;MAGP;IACF,CAAA;AACAhB,WAAOiB,eAAelB,cAAcF,WAAW;MAC7CO,UAAU;MACVC,OAAO,CAAC;IACV,CAAA;AAEA,aAAST,cAAesB,KAAG;AAEzB,YAAMC,aAAaD,IAAIE,QAAQF,IAAIG;AACnC,YAAMC,OAAOtB,OAAOC,OAAOF,YAAAA;AAC3BuB,WAAKpB,KAAM,OAAOgB,IAAIhB,OAAO,aAAagB,IAAIhB,GAAE,IAAMgB,IAAIhB,OAAOgB,IAAIE,OAAOF,IAAIE,KAAKlB,KAAKqB;AAC1FD,WAAKhB,SAASY,IAAIZ;AAElB,UAAIY,IAAIM,aAAa;AACnBF,aAAKf,MAAMW,IAAIM;MACjB,OAAO;AACL,cAAMC,OAAOP,IAAIO;AAEjBH,aAAKf,MAAM,OAAOkB,SAAS,WAAWA,OAAQP,IAAIX,MAAMW,IAAIX,IAAIkB,QAAQP,IAAIX,MAAMgB;MACpF;AAEA,UAAIL,IAAIV,OAAO;AACbc,aAAKd,QAAQU,IAAIV;MACnB;AAEA,UAAIU,IAAIT,QAAQ;AACda,aAAKb,SAASS,IAAIT;MACpB;AAEAa,WAAKZ,UAAUQ,IAAIR;AACnBY,WAAKX,gBAAgBQ,cAAcA,WAAWR;AAC9CW,WAAKV,aAAaO,cAAcA,WAAWP;AAE3CU,WAAKT,MAAMK,IAAIL,OAAOK;AACtB,aAAOI;IACT;AA7BS1B;AA+BT,aAASD,eAAgBuB,KAAG;AAC1B,aAAO;QACLA,KAAKtB,cAAcsB,GAAAA;MACrB;IACF;AAJSvB;;;;;AC/FT;iDAAA+B,UAAAC,SAAA;;AAEAA,IAAAA,QAAOD,UAAU;MACfE;MACAC;IACF;AAEA,QAAMC,YAAYC,OAAO,kBAAA;AACzB,QAAMC,eAAeC,OAAOC,OAAO,CAAC,GAAG;MACrCC,YAAY;QACVC,YAAY;QACZC,UAAU;QACVC,OAAO;MACT;MACAC,SAAS;QACPH,YAAY;QACZC,UAAU;QACVC,OAAO;MACT;MACAE,KAAK;QACHJ,YAAY;QACZK,KAAK,kCAAA;AACH,iBAAO,KAAKX,SAAAA;QACd,GAFK;QAGLY,KAAK,gCAAUC,KAAG;AAChB,eAAKb,SAAAA,IAAaa;QACpB,GAFK;MAGP;IACF,CAAA;AACAV,WAAOW,eAAeZ,cAAcF,WAAW;MAC7CO,UAAU;MACVC,OAAO,CAAC;IACV,CAAA;AAEA,aAAST,cAAegB,KAAG;AACzB,YAAMC,OAAOb,OAAOC,OAAOF,YAAAA;AAC3Bc,WAAKX,aAAaU,IAAIE,cAAcF,IAAIV,aAAa;AACrDW,WAAKP,UAAUM,IAAIG,aAAaH,IAAIG,WAAU,IAAKH,IAAII;AACvDH,WAAKN,MAAMK;AACX,aAAOC;IACT;AANSjB;AAQT,aAASD,gBAAiBiB,KAAG;AAC3B,aAAO;QACLA,KAAKhB,cAAcgB,GAAAA;MACrB;IACF;AAJSjB;;;;;AC1CT;+CAAAsB,UAAAC,SAAA;;AAEA,QAAMC,gBAAgBC;AACtB,QAAMC,yBAAyBD;AAC/B,QAAME,iBAAiBF;AACvB,QAAMG,iBAAiBH;AAEvBF,IAAAA,QAAOD,UAAU;MACfO,KAAKL;MACLM,cAAcJ;MACdK,gBAAgBJ,eAAeI;MAC/BC,iBAAiBJ,eAAeI;MAChCC,KAAKN,eAAeO;MACpBC,KAAKP,eAAeQ;MAEpBC,qBAAqB,gCAASA,oBAAqBC,kBAAgB;AACjE,YAAIA,qBAAqBd,cAAe,QAAOc;AAC/C,eAAO,gCAASC,kBAAmBV,KAAG;AACpC,iBAAOS,iBAAiBd,cAAcK,GAAAA,CAAAA;QACxC,GAFO;MAGT,GALqB;MAOrBW,uBAAuB,gCAASA,sBAAuBF,kBAAgB;AACrE,YAAIA,qBAAqBX,eAAeO,cAAe,QAAOI;AAC9D,eAAO,gCAASG,qBAAsBR,KAAG;AACvC,iBAAOK,iBAAiBX,eAAeO,cAAcD,GAAAA,CAAAA;QACvD,GAFO;MAGT,GALuB;MAOvBS,wBAAwB,gCAASA,uBAAwBJ,kBAAgB;AACvE,YAAIA,qBAAqBV,eAAeQ,cAAe,QAAOE;AAC9D,eAAO,gCAASK,qBAAsBR,KAAG;AACvC,iBAAOG,iBAAiBV,eAAeQ,cAAcD,GAAAA,CAAAA;QACvD,GAFO;MAGT,GALwB;IAM1B;;;;;ACnCA;oCAAAS,UAAAC,SAAA;;AAEA,aAASC,sBAAuBC,GAAGC,OAAK;AACtC,aAAOA;IACT;AAFSF;AAITD,IAAAA,QAAOD,UAAU,gCAASK,aAAAA;AACxB,YAAMC,kBAAkBC,MAAMC;AAC9BD,YAAMC,oBAAoBN;AAC1B,YAAME,QAAQ,IAAIG,MAAAA,EAAQH;AAC1BG,YAAMC,oBAAoBF;AAE1B,UAAI,CAACG,MAAMC,QAAQN,KAAAA,GAAQ;AACzB,eAAOO;MACT;AAEA,YAAMC,UAAUR,MAAMS,MAAM,CAAA;AAE5B,YAAMC,YAAY,CAAA;AAElB,iBAAWC,SAASH,SAAS;AAC3B,YAAI,CAACG,OAAO;AACV;QACF;AAEAD,kBAAUE,KAAKD,MAAME,YAAW,CAAA;MAClC;AAEA,aAAOH;IACT,GAvBiB;;;;;ACNjB;8CAAAI,UAAAC,SAAA;;AAEAA,IAAAA,QAAOD,UAAUE;AAEjB,aAASA,UAAWC,OAAO,CAAC,GAAC;AAC3B,YAAM,EACJC,4BAA4B,6BAAM,mDAAN,8BAC5BC,mBAAmB,wBAACC,MAAM,oCAA+BA,CAAAA,KAAtC,oBAA0C,IAC3DH;AAEJ,aAAO,gCAASI,SAAU,EAAEC,MAAK,GAAE;AACjCA,cAAMC,QAAQ,CAACH,MAAAA;AACb,cAAI,OAAOA,MAAM,UAAU;AACzB,kBAAMI,MAAMN,0BAAAA,CAAAA;UACd;AACA,cAAI;AACF,gBAAI,IAAIO,KAAKL,CAAAA,EAAI,OAAMI,MAAAA;AACvB,kBAAME,QAAQN,EAAE,CAAA,MAAO,MAAM,KAAK,OAAOA,EAAEO,QAAQ,OAAO,QAAA,EAAKA,QAAQ,SAAS,SAAA,EAAMA,QAAQ,WAAW,UAAA;AACzG,gBAAI,UAAUF,KAAKC,IAAAA,EAAO,OAAMF,MAAAA;AAChC,gBAAI,OAAOC,KAAKC,IAAAA,EAAO,OAAMF,MAAAA;AAE7BI,qBAAS;;;;eAIFF,IAAAA;oBACKA,IAAAA,+BAAmC,EAAA;UACjD,SAASG,GAAG;AACV,kBAAML,MAAML,iBAAiBC,CAAAA,CAAAA;UAC/B;QACF,CAAA;MACF,GArBO;IAsBT;AA5BSJ;;;;;ACJT;uCAAAc,UAAAC,SAAA;;AAEAA,IAAAA,QAAOD,UAAU;;;;;ACFjB;0CAAAE,UAAAC,SAAA;;AAEA,QAAMC,KAAKC;AAEXF,IAAAA,QAAOD,UAAUI;AAEjB,aAASA,MAAO,EAAEC,MAAK,GAAE;AACvB,YAAMC,YAAY,CAAA;AAClB,UAAIC,QAAQ;AACZ,YAAMC,SAASH,MAAMI,OAAO,SAAUC,GAAGC,SAASC,IAAE;AAClD,YAAIC,OAAOF,QAAQG,MAAMZ,EAAAA,EAAIa,IAAI,CAACC,MAAMA,EAAEC,QAAQ,UAAU,EAAA,CAAA;AAC5D,cAAMC,iBAAiBP,QAAQ,CAAA,MAAO;AACtCE,eAAOA,KAAKE,IAAI,CAACC,MAAAA;AACf,cAAIA,EAAE,CAAA,MAAO,IAAK,QAAOA,EAAEG,OAAO,GAAGH,EAAEI,SAAS,CAAA;cAC3C,QAAOJ;QACd,CAAA;AACA,cAAMK,OAAOR,KAAKS,QAAQ,GAAA;AAC1B,YAAID,OAAO,IAAI;AACb,gBAAME,SAASV,KAAKW,MAAM,GAAGH,IAAAA;AAC7B,gBAAMI,YAAYF,OAAOG,KAAK,GAAA;AAC9B,gBAAMC,QAAQd,KAAKW,MAAMH,OAAO,GAAGR,KAAKO,MAAM;AAC9C,gBAAMQ,SAASD,MAAMP,SAAS;AAC9Bb;AACAD,oBAAUuB,KAAK;YACbN;YACAE;YACAE;YACAC;UACF,CAAA;QACF,OAAO;AACLlB,YAAEC,OAAAA,IAAW;YACXE;YACAiB,KAAKC;YACLC,aAAa;YACbC,QAAQ;YACRC,SAASC,KAAKC,UAAUzB,OAAAA;YACxBO;UACF;QACF;AACA,eAAOR;MACT,GAAG,CAAC,CAAA;AAEJ,aAAO;QAAEJ;QAAWC;QAAOC;MAAO;IACpC;AArCSJ;;;;;ACNT;6CAAAiC,UAAAC,SAAA;;AAEA,QAAMC,KAAKC;AAEXF,IAAAA,QAAOD,UAAUI;AAEjB,aAASA,SAAU,EAAEC,QAAQC,WAAWC,OAAOC,QAAQC,aAAaC,mBAAkB,GAAIC,OAAK;AAE7F,YAAMC,SAASC,SAAS,KAAK;;QAEvBC,WAAWN,QAAQF,SAAAA,CAAAA;;;;;;;;;MASrBS,WAAWV,QAAQI,aAAaC,kBAAAA,CAAAA;;MAEhCM,kBAAkBT,QAAQ,GAAGE,aAAaC,kBAAAA,CAAAA;;MAE1CO,WAAWX,SAAAA,CAAAA;GACd,EAAEY,KAAKP,KAAAA;AAERC,aAAOD,QAAQA;AAEf,UAAIL,cAAc,OAAO;AACvBM,eAAOO,UAAU,CAACC,MAAMT,MAAMQ,QAAQC,CAAAA;MACxC;AAEA,aAAOR;IACT;AA3BSR;AA6BT,aAASW,WAAYV,QAAQI,aAAaC,oBAAkB;AAC1D,aAAOW,OAAOC,KAAKjB,MAAAA,EAAQkB,IAAI,CAACC,SAAAA;AAC9B,cAAM,EAAEC,SAASC,gBAAgBF,MAAMG,QAAO,IAAKtB,OAAOmB,IAAAA;AAC1D,cAAMI,OAAOF,iBAAiB,IAAI;AAClC,cAAMG,QAAQH,iBAAiB,KAAK;AACpC,cAAMI,OAAO,CAAA;AACb,YAAIC;AACJ,gBAAQA,QAAQ7B,GAAG8B,KAAKR,IAAAA,OAAW,MAAM;AACvC,gBAAM,CAAA,EAAIS,EAAAA,IAAOF;AACjB,gBAAM,EAAEG,OAAOC,MAAK,IAAKJ;AACzB,cAAIG,QAAQN,KAAME,MAAKM,KAAKD,MAAME,UAAU,GAAGH,SAASD,KAAK,IAAI,EAAA,CAAA;QACnE;AACA,YAAIK,YAAYR,KAAKP,IAAI,CAACgB,MAAM,IAAIV,KAAAA,GAAQU,CAAAA,EAAG,EAAEC,KAAK,MAAA;AACtD,YAAIF,UAAUG,WAAW,EAAGH,cAAa,IAAIT,KAAAA,GAAQL,IAAAA;YAChDc,cAAa,QAAQT,KAAAA,GAAQL,IAAAA;AAElC,cAAMkB,oBAAoB;;UAEpBZ,KAAKa,QAAO,EAAGpB,IAAI,CAACgB,MAAM;kBAClBV,KAAAA,GAAQU,CAAAA;qBACLd,OAAAA,cAAqBmB,KAAKC,UAAUN,CAAAA,CAAAA;;SAEhD,EAAEC,KAAK,IAAA,CAAA;;;AAIZ,cAAMM,aAAapC,qBACf,QAAQkC,KAAKC,UAAUlB,OAAAA,CAAAA,KACvB;AAEJ,eAAO;YACCW,SAAAA;uBACWT,KAAAA,GAAQL,IAAAA;;mBAEZC,OAAAA;;mBAEAA,OAAAA;aACNI,KAAAA,GAAQL,IAAAA,MAAUf,cAAc,UAAUqC,UAAAA,MAAgB,QAAA;YAC3DJ,iBAAAA;;;;MAIV,CAAA,EAAGF,KAAK,IAAA;IACV;AA3CSzB;AA6CT,aAASC,kBAAmB+B,cAActC,aAAaC,oBAAkB;AACvE,aAAOqC,iBAAiB,OAAO;;;;;;;sEAOqCtC,WAAAA,KAAgBC,kBAAAA;oEAClBD,WAAAA,KAAgBC,kBAAAA;;;MAG9E;IACN;AAbSM;AAeT,aAASC,WAAYX,WAAS;AAC5B,aAAOA,cAAc,QAAQ,aAAa;;;;;IAK5C;AANSW;AAQT,aAASH,WAAYN,QAAQF,WAAS;AACpC,aAAOE,WAAW,OACd,8DACAF,cAAc,QAAQ,aAAa;IACzC;AAJSQ;;;;;ACvGT;8CAAAkC,UAAAC,SAAA;;AAEAA,IAAAA,QAAOD,UAAU;MACfE;MACAC;MACAC;MACAC;IACF;AAEA,aAASF,aAAc,EAAEG,MAAMC,QAAQC,OAAM,GAAE;AAC7C,UAAIA,UAAU,QAAQ,OAAOA,WAAW,SAAU;AAClD,YAAMC,SAASH,KAAKG;AACpB,eAASC,IAAI,GAAGA,IAAID,QAAQC,KAAK;AAC/B,cAAMC,IAAIL,KAAKI,CAAAA;AACfF,eAAOG,CAAAA,IAAKJ,OAAOG,CAAAA;MACrB;IACF;AAPSP;AAST,aAASD,YAAaU,GAAGC,MAAMC,QAAQC,aAAaC,oBAAkB;AACpE,YAAMR,SAASS,IAAIL,GAAGC,IAAAA;AACtB,UAAIL,UAAU,QAAQ,OAAOA,WAAW,SAAU,QAAO;QAAEF,MAAM;QAAMC,QAAQ;QAAMC;QAAQU,MAAM;MAAK;AACxG,YAAMZ,OAAOa,OAAOb,KAAKE,MAAAA;AACzB,YAAMY,aAAad,KAAKG;AACxB,YAAMY,aAAaR,KAAKJ;AACxB,YAAMa,cAAcN,qBAAqB;WAAIH;UAAQU;AACrD,YAAMhB,SAAS,IAAIiB,MAAMJ,UAAAA;AAEzB,eAASV,IAAI,GAAGA,IAAIU,YAAYV,KAAK;AACnC,cAAMe,MAAMnB,KAAKI,CAAAA;AACjBH,eAAOG,CAAAA,IAAKF,OAAOiB,GAAAA;AAEnB,YAAIT,oBAAoB;AACtBM,sBAAYD,UAAAA,IAAcI;AAC1BjB,iBAAOiB,GAAAA,IAAOX,OAAON,OAAOiB,GAAAA,GAAMH,WAAAA;QACpC,WAAWP,aAAa;AACtBP,iBAAOiB,GAAAA,IAAOX,OAAON,OAAOiB,GAAAA,CAAI;QAClC,OAAO;AACLjB,iBAAOiB,GAAAA,IAAOX;QAChB;MACF;AACA,aAAO;QAAER;QAAMC;QAAQC;QAAQU,MAAM;MAAK;IAC5C;AAvBShB;AA4BT,aAASG,cAAeqB,cAAY;AAClC,eAAShB,IAAI,GAAGA,IAAIgB,aAAajB,QAAQC,KAAK;AAC5C,cAAM,EAAEF,QAAQK,MAAMc,MAAK,IAAKD,aAAahB,CAAAA;AAC7C,YAAIkB,UAAUpB;AACd,iBAASE,KAAIG,KAAKJ,SAAS,GAAGC,KAAI,GAAGA,MAAK;AACxCkB,oBAAUA,QAAQf,KAAKH,EAAAA,CAAE;QAC3B;AACAkB,gBAAQf,KAAK,CAAA,CAAE,IAAIc;MACrB;IACF;AATStB;AAWT,aAASD,aAAcyB,OAAOjB,GAAGC,MAAMiB,IAAIhB,QAAQC,aAAaC,oBAAkB;AAChF,YAAMR,SAASS,IAAIL,GAAGC,IAAAA;AACtB,UAAIL,UAAU,KAAM;AACpB,YAAMF,OAAOa,OAAOb,KAAKE,MAAAA;AACzB,YAAMY,aAAad,KAAKG;AACxB,eAASC,IAAI,GAAGA,IAAIU,YAAYV,KAAK;AACnC,cAAMe,MAAMnB,KAAKI,CAAAA;AACjBqB,mBAAWF,OAAOrB,QAAQiB,KAAKZ,MAAMiB,IAAIhB,QAAQC,aAAaC,kBAAAA;MAChE;AACA,aAAOa;IACT;AAVSzB;AAYT,aAAS4B,IAAKC,KAAKC,MAAI;AACrB,aAAOD,QAAQV,UAAaU,QAAQ,OAC/B,YAAYd,SAASA,OAAOgB,OAAOF,KAAKC,IAAAA,IAAQf,OAAOiB,UAAUC,eAAeC,KAAKL,KAAKC,IAAAA,IAC3F;IACN;AAJSF;AAMT,aAASD,WAAYF,OAAOjB,GAAGD,GAAGE,MAAM0B,WAAWzB,QAAQC,aAAaC,oBAAkB;AACxF,YAAMwB,eAAeD,UAAU9B;AAC/B,YAAMgC,gBAAgBD,eAAe;AACrC,YAAME,cAAc/B;AACpB,UAAID,IAAI;AACR,UAAIiC;AACJ,UAAIC;AACJ,UAAIC;AACJ,UAAIC,MAAM;AACV,UAAIC,KAAK;AACT,UAAIC;AACJ,UAAIC;AACJ,UAAIC,cAAc;AAClB,UAAIC,QAAQ;AAEZ,UAAIC,QAAQ;AACZ,UAAIC,oBAAoBC,KAAAA;AACxBT,WAAKF,IAAI/B,EAAED,CAAAA;AACX,UAAI,OAAOgC,MAAM,SAAU;AAC3B,aAAOA,KAAK,QAAQ,EAAEjC,IAAI8B,cAAc;AACtCY,iBAAS;AACTzC,YAAI4B,UAAU7B,CAAAA;AACdoC,cAAMD;AACN,YAAIlC,MAAM,OAAO,CAACoC,MAAM,EAAE,OAAOJ,MAAM,YAAYhC,KAAKgC,IAAI;AAC1D;QACF;AACA,YAAIhC,MAAM,KAAK;AACb,cAAIoC,OAAO,KAAK;AACdG,0BAAc;UAChB;AACAH,eAAKpC;AACL,cAAID,MAAM+B,eAAe;AACvB;UACF;QACF;AACA,YAAIM,IAAI;AACN,gBAAMQ,SAASpC,OAAOb,KAAKqC,CAAAA;AAC3B,mBAASa,IAAI,GAAGA,IAAID,OAAO9C,QAAQ+C,KAAK;AACtC,kBAAMC,MAAMF,OAAOC,CAAAA;AACnBP,mBAAON,EAAEc,GAAAA;AACTT,oBAAQrC,MAAM;AACd,gBAAIuC,aAAa;AACfG,kCAAoBK,KAAKL,mBAAmBI,KAAKL,KAAAA;AACjDD,sBAAQzC;AACRmC,mBAAKc,gBAAgBV,MAAME,QAAQ,GAAGxC,GAAGE,MAAM0B,WAAWzB,QAAQC,aAAaC,oBAAoB0B,aAAaC,GAAGC,IAAIC,IAAIG,OAAOS,KAAK/C,GAAG+B,eAAeY,mBAAmBxB,OAAOjB,EAAE8B,WAAAA,GAAcU,QAAQ,CAAA;YAC7M,OAAO;AACL,kBAAIJ,SAAU,OAAOC,SAAS,YAAYA,SAAS,QAAQtC,KAAKsC,MAAO;AACrE,oBAAID,OAAO;AACTH,uBAAKI;gBACP,OAAO;AACLJ,uBAAKI,KAAKtC,CAAAA;gBACZ;AACAiC,qBAAMlC,MAAM+B,gBACRI,KACC9B,cACEC,qBAAqBF,OAAO+B,IAAI;qBAAIhC;kBAAM6B;qBAAgBH;iBAAU,IAAIzB,OAAO+B,EAAAA,IAChF/B;AACN,oBAAIkC,OAAO;AACT,wBAAMY,KAAKC,aAAaH,KAAKL,mBAAmBI,KAAKL,KAAAA,GAAQP,IAAIjC,EAAE8B,WAAAA,CAAY;AAC/Eb,wBAAMiC,KAAKF,EAAAA;AACXjB,oBAAEc,GAAAA,IAAOb;gBACX,OAAO;AACL,sBAAIK,KAAKtC,CAAAA,MAAOiC,IAAI;kBAEpB,WAAYA,OAAOrB,UAAaT,WAAWS,UAAeS,IAAIiB,MAAMtC,CAAAA,KAAMiC,OAAOC,IAAK;AACpFQ,wCAAoBK,KAAKL,mBAAmBI,KAAKL,KAAAA;kBACnD,OAAO;AACLC,wCAAoBK,KAAKL,mBAAmBI,KAAKL,KAAAA;AACjD,0BAAMQ,KAAKC,aAAaH,KAAKL,mBAAmB1C,GAAGyC,QAAQ,CAAA,GAAIP,IAAIjC,EAAE8B,WAAAA,CAAY;AACjFb,0BAAMiC,KAAKF,EAAAA;AACXX,yBAAKtC,CAAAA,IAAKiC;kBACZ;gBACF;cACF;YACF;UACF;AACAG,eAAK;QACP,OAAO;AACLF,eAAKF,EAAEhC,CAAAA;AACP0C,8BAAoBK,KAAKL,mBAAmB1C,GAAGyC,KAAAA;AAC/CR,eAAMlC,MAAM+B,gBACRI,KACC9B,cACEC,qBAAqBF,OAAO+B,IAAI;eAAIhC;YAAM6B;eAAgBH;WAAU,IAAIzB,OAAO+B,EAAAA,IAChF/B;AACN,cAAKkB,IAAIW,GAAGhC,CAAAA,KAAMiC,OAAOC,MAAQD,OAAOrB,UAAaT,WAAWS,QAAY;UAE5E,OAAO;AACL,kBAAMqC,KAAKC,aAAaR,mBAAmBR,IAAIjC,EAAE8B,WAAAA,CAAY;AAC7Db,kBAAMiC,KAAKF,EAAAA;AACXjB,cAAEhC,CAAAA,IAAKiC;UACT;AACAD,cAAIA,EAAEhC,CAAAA;QACR;AACA,YAAI,OAAOgC,MAAM,SAAU;AAE3B,YAAIE,OAAOC,OAAO,OAAOD,OAAO,aAAa;QAE7C;MACF;IACF;AApGSd;AAsGT,aAASd,IAAKL,GAAGmD,GAAC;AAChB,UAAIrD,IAAI;AACR,UAAIsD,IAAID,EAAEtD;AACV,UAAIkC,IAAI/B;AACR,aAAO+B,KAAK,QAAQ,EAAEjC,IAAIsD,GAAG;AAC3BrB,YAAIA,EAAEoB,EAAErD,CAAAA,CAAE;MACZ;AACA,aAAOiC;IACT;AARS1B;AAUT,aAAS0C,gBAAiBV,MAAME,OAAOxC,GAAGE,MAAM0B,WAAWzB,QAAQC,aAAaC,oBAAoB0B,aAAaC,GAAGC,IAAIC,IAAIG,OAAOS,KAAK/C,GAAG+B,eAAeY,mBAAmBxB,OAAOoC,QAAQb,OAAK;AAC/L,UAAID,UAAU,GAAG;AACf,YAAIH,SAAU,OAAOC,SAAS,YAAYA,SAAS,QAAQtC,KAAKsC,MAAO;AACrE,cAAID,OAAO;AACTH,iBAAKI;UACP,OAAO;AACLJ,iBAAKI,KAAKtC,CAAAA;UACZ;AACAiC,eAAMlC,MAAM+B,gBACRI,KACC9B,cACEC,qBAAqBF,OAAO+B,IAAI;eAAIhC;YAAM6B;eAAgBH;WAAU,IAAIzB,OAAO+B,EAAAA,IAChF/B;AACN,cAAIkC,OAAO;AACT,kBAAMY,KAAKC,aAAaR,mBAAmBR,IAAIoB,MAAAA;AAC/CpC,kBAAMiC,KAAKF,EAAAA;AACXjB,cAAEc,GAAAA,IAAOb;UACX,OAAO;AACL,gBAAIK,KAAKtC,CAAAA,MAAOiC,IAAI;YAEpB,WAAYA,OAAOrB,UAAaT,WAAWS,UAAeS,IAAIiB,MAAMtC,CAAAA,KAAMiC,OAAOC,IAAK;YAEtF,OAAO;AACL,oBAAMe,KAAKC,aAAaH,KAAKL,mBAAmB1C,GAAGyC,QAAQ,CAAA,GAAIP,IAAIoB,MAAAA;AACnEpC,oBAAMiC,KAAKF,EAAAA;AACXX,mBAAKtC,CAAAA,IAAKiC;YACZ;UACF;QACF;MACF;AACA,iBAAWnB,OAAOwB,MAAM;AACtB,YAAI,OAAOA,KAAKxB,GAAAA,MAAS,UAAU;AACjC4B,8BAAoBK,KAAKL,mBAAmB5B,KAAK2B,KAAAA;AACjDO,0BAAgBV,KAAKxB,GAAAA,GAAM0B,QAAQ,GAAGxC,GAAGE,MAAM0B,WAAWzB,QAAQC,aAAaC,oBAAoB0B,aAAaC,GAAGC,IAAIC,IAAIG,OAAOS,KAAK/C,GAAG+B,eAAeY,mBAAmBxB,OAAOoC,QAAQb,QAAQ,CAAA;QACrM;MACF;IACF;AApCSO;AAkDT,aAASL,OAAAA;AACP,aAAO;QAAEW,QAAQ;QAAMxC,KAAK;QAAMyC,UAAU,CAAA;QAAId,OAAO;MAAE;IAC3D;AAFSE;AAYT,aAASI,KAAMO,QAAQxC,KAAK2B,OAAK;AAC/B,UAAIa,OAAOb,UAAUA,OAAO;AAC1B,eAAOM,KAAKO,OAAOA,QAAQxC,KAAK2B,KAAAA;MAClC;AAEA,UAAIe,QAAQ;QACVF;QACAxC;QACA2B;QACAc,UAAU,CAAA;MACZ;AAEAD,aAAOC,SAASJ,KAAKK,KAAAA;AAErB,aAAOA;IACT;AAfST;AAgCT,aAASG,aAAcH,OAAM/B,OAAOnB,QAAM;AACxC,UAAIoB,UAAU8B;AACd,YAAM7C,OAAO,CAAA;AACb,SAAG;AACDA,aAAKiD,KAAKlC,QAAQH,GAAG;AACrBG,kBAAUA,QAAQqC;MACpB,SAASrC,QAAQqC,UAAU;AAE3B,aAAO;QAAEpD;QAAMc;QAAOnB;MAAO;IAC/B;AATSqD;;;;;ACzRT;6CAAAO,UAAAC,SAAA;;AAEA,QAAM,EAAEC,cAAcC,cAAa,IAAKC;AAExCH,IAAAA,QAAOD,UAAUK;AAEjB,aAASA,WAAAA;AACP,aAAO,gCAASC,iBAAAA;AACd,YAAI,KAAKC,SAAS;AAChB,eAAKA,QAAQC,MAAMC,SAAS,KAAKA;AACjC;QACF;AACA,cAAM,EAAEA,QAAQC,MAAK,IAAK;AAC1B,cAAMC,QAAQC,OAAOC,KAAKJ,MAAAA;AAC1B,cAAMK,YAAYC,UAAUN,QAAQE,KAAAA;AACpC,cAAMK,eAAeN,QAAQ;AAC7B,cAAMF,QAAQQ,eAAe;UAAEP;UAAQP;UAAcC;QAAc,IAAI;UAAEM;QAAO;AAEhF,aAAKF,UAAUU,SACb,KACAC,YAAYJ,WAAWH,OAAOK,YAAAA,CAAAA,EAC9BG,KAAKX,KAAAA;AACP,aAAKD,QAAQC,QAAQA;MACvB,GAhBO;IAiBT;AAlBSH;AAgCT,aAASU,UAAWN,QAAQE,OAAK;AAC/B,aAAOA,MAAMS,IAAI,CAACC,SAAAA;AAChB,cAAM,EAAEC,QAAQC,SAASC,eAAc,IAAKf,OAAOY,IAAAA;AACnD,cAAMI,QAAQD,iBAAiB,KAAK;AACpC,cAAME,QAAQJ,SACV,KAAKA,MAAAA,aAAmBC,OAAAA,UACxB,IAAIE,KAAAA,GAAQJ,IAAAA,aAAiBE,OAAAA;AACjC,cAAMI,QAAQ,UAAUJ,OAAAA;AACxB,eAAO;mBACQA,OAAAA;gBACHG,KAAAA;UACNC,KAAAA;;;MAGR,CAAA,EAAGC,KAAK,EAAA;IACV;AAfSb;AAgCT,aAASG,YAAaJ,WAAWH,OAAOK,cAAY;AAClD,YAAMa,eAAeb,iBAAiB,OAAO;;;iCAGdL,MAAMmB,MAAM;;;;;;;;;MASvC;AAEJ,aAAO;;MAEHD,YAAAA;MACAf,SAAAA;;;IAGN;AArBSI;;;;;ACtET;0CAAAa,UAAAC,SAAA;;AAEAA,IAAAA,QAAOD,UAAUE;AAEjB,aAASA,MAAOC,GAAC;AACf,YAAM,EACJC,QACAC,QACAC,gBACAC,WACAC,aACAC,cACAC,WACAC,MAAK,IACHR;AACJ,YAAMS,UAAU;QAAC;UAAER;UAAQC;UAAQC;QAAe;;AAClD,UAAIC,cAAc,MAAOK,SAAQC,KAAK;QAAEN;MAAU,CAAA;AAClD,UAAII,QAAQ,EAAGC,SAAQC,KAAK;QAAEL;QAAaC;QAAcC;QAAWC;MAAM,CAAA;AAC1E,aAAOG,OAAOC,OAAM,GAAIH,OAAAA;IAC1B;AAfSV;;;;;ACJT;sCAAAc,UAAAC,SAAA;;AAEA,QAAMC,YAAYC;AAClB,QAAMC,QAAQD;AACd,QAAME,WAAWF;AACjB,QAAMG,WAAWH;AACjB,QAAM,EAAEI,aAAaC,aAAY,IAAKL;AACtC,QAAMM,QAAQN;AACd,QAAMO,KAAKP;AACX,QAAMQ,WAAWT,UAAAA;AACjB,QAAMU,OAAO,wBAACC,MAAMA,GAAP;AACbD,SAAKE,UAAUF;AAEf,QAAMG,iBAAiB;AACvBC,eAAWN,KAAKA;AAChBM,eAAWd,YAAYA;AAEvBD,IAAAA,QAAOD,UAAUgB;AAEjB,aAASA,WAAYC,OAAO,CAAC,GAAC;AAC5B,YAAMC,QAAQC,MAAMC,KAAK,IAAIC,IAAIJ,KAAKC,SAAS,CAAA,CAAE,CAAA;AACjD,YAAMI,YAAY,eAAeL,OAC/BA,KAAKK,cAAc,QAAQL,KAAKK,YAC3B,OAAOL,KAAKK,cAAc,aAAaL,KAAKK,YAAYC,KAAKC,YAChED,KAAKC;AACT,YAAMC,SAASR,KAAKQ;AACpB,UAAIA,WAAW,QAAQH,cAAcC,KAAKC,WAAW;AACnD,cAAME,MAAM,oFAAA;MACd;AACA,YAAMC,SAASF,WAAW,OACtBG,SACA,YAAYX,OAAOA,KAAKU,SAASZ;AAErC,YAAMc,cAAc,OAAOF,WAAW;AACtC,YAAMG,qBAAqBD,eAAeF,OAAOI,SAAS;AAE1D,UAAIb,MAAMa,WAAW,EAAG,QAAOT,aAAaV;AAE5CD,eAAS;QAAEO;QAAOI;QAAWK;MAAO,CAAA;AAEpC,YAAM,EAAEK,WAAWC,OAAOC,OAAM,IAAK9B,MAAM;QAAEc;QAAOS;MAAO,CAAA;AAE3D,YAAMQ,iBAAiB7B,SAAAA;AACvB,YAAM8B,SAAS,YAAYnB,OAAOA,KAAKmB,SAAS;AAEhD,aAAO/B,SAAS;QAAE6B;QAAQD;QAAOX;QAAWc;QAAQP;QAAaC;MAAmB,GAAGrB,MAAM;QAC3FyB;QACAP;QACAQ;QACAb;QACAf;QACAC;QACAwB;QACAC;MACF,CAAA,CAAA;IACF;AApCSjB;;;;;ACnBT;qCAAAqB,UAAAC,SAAA;;AAEA,QAAMC,cAAcC,OAAO,eAAA;AAC3B,QAAMC,cAAcD,OAAO,eAAA;AAC3B,QAAME,cAAcF,OAAO,eAAA;AAC3B,QAAMG,eAAeH,OAAO,gBAAA;AAC5B,QAAMI,oBAAoBJ,OAAO,qBAAA;AACjC,QAAMK,yBAAyBL,OAAO,0BAAA;AACtC,QAAMM,WAAWN,OAAO,YAAA;AAExB,QAAMO,aAAaP,OAAO,cAAA;AAC1B,QAAMQ,eAAeR,OAAO,gBAAA;AAE5B,QAAMS,YAAYT,OAAO,aAAA;AACzB,QAAMU,WAAWV,OAAO,YAAA;AACxB,QAAMW,eAAeX,OAAO,gBAAA;AAE5B,QAAMY,UAAUZ,OAAO,WAAA;AACvB,QAAMa,oBAAoBb,OAAO,qBAAA;AACjC,QAAMc,YAAYd,OAAO,aAAA;AACzB,QAAMe,eAAef,OAAO,gBAAA;AAC5B,QAAMgB,mBAAmBhB,OAAO,oBAAA;AAChC,QAAMiB,kBAAkBjB,OAAO,mBAAA;AAC/B,QAAMkB,SAASlB,OAAO,UAAA;AACtB,QAAMmB,gBAAgBnB,OAAO,iBAAA;AAC7B,QAAMoB,gBAAgBpB,OAAO,iBAAA;AAC7B,QAAMqB,cAAcrB,OAAO,eAAA;AAC3B,QAAMsB,eAAetB,OAAO,gBAAA;AAC5B,QAAMuB,kBAAkBvB,OAAO,mBAAA;AAC/B,QAAMwB,wBAAwBxB,OAAO,yBAAA;AACrC,QAAMyB,eAAezB,OAAO,gBAAA;AAE5B,QAAM0B,mBAAmB1B,OAAO,oBAAA;AAIhC,QAAM2B,iBAAiB3B,OAAO4B,IAAI,kBAAA;AAClC,QAAMC,gBAAgB7B,OAAO4B,IAAI,iBAAA;AACjC,QAAME,WAAW9B,OAAO4B,IAAI,YAAA;AAC5B,QAAMG,oBAAoB/B,OAAO4B,IAAI,eAAA;AAErC9B,IAAAA,QAAOD,UAAU;MACfE;MACAE;MACAC;MACAC;MACAC;MACAE;MACAC;MACAC;MACAC;MACAC;MACAiB;MACAhB;MACAC;MACAC;MACAC;MACAC;MACAC;MACAC;MACAC;MACAC;MACAC;MACAC;MACAC;MACAI;MACAK;MACA1B;MACAwB;MACAC;MACAP;MACAC;MACAC;IACF;;;;;ACzEA;uCAAAO,UAAAC,SAAA;;AAEA,QAAMC,aAAaC;AACnB,QAAM,EAAEC,cAAcC,iBAAgB,IAAKF;AAC3C,QAAM,EAAEG,IAAIC,UAAS,IAAKL;AAE1B,QAAMM,WAAWD,UAAU;MACzBE,2BAA2B,6BAAM,8CAAN;MAC3BC,kBAAkB,wBAACC,MAAM,4DAAuDA,CAAAA,KAA9D;IACpB,CAAA;AAEA,QAAMC,SAAS;AACf,QAAMC,SAAS;AAEf,aAASC,UAAWC,MAAMC,WAAS;AACjC,YAAM,EAAEC,OAAOC,OAAM,IAAKC,OAAOJ,IAAAA;AAEjC,YAAMK,QAAQH,MAAMI,OAAO,CAACC,GAAGC,QAAAA;AAC7BjB,WAAGkB,YAAY;AACf,cAAMC,QAAQnB,GAAGoB,KAAKH,GAAAA;AACtB,cAAMI,OAAOrB,GAAGoB,KAAKH,GAAAA;AAGrB,YAAIK,KAAKH,MAAM,CAAA,MAAOI,SAClBJ,MAAM,CAAA,EAAGK,QAAQ,4BAA4B,IAAA,IAC7CL,MAAM,CAAA;AAEV,YAAIG,OAAO,KAAK;AACdA,eAAKvB;QACP;AAGA,YAAIsB,SAAS,MAAM;AACjBL,YAAEM,EAAAA,IAAM;AACR,iBAAON;QACT;AAIA,YAAIA,EAAEM,EAAAA,MAAQ,MAAM;AAClB,iBAAON;QACT;AAEA,cAAM,EAAES,MAAK,IAAKJ;AAClB,cAAMK,WAAW,GAAGT,IAAIU,OAAOF,OAAOR,IAAIW,SAAS,CAAA,CAAA;AAEnDZ,UAAEM,EAAAA,IAAMN,EAAEM,EAAAA,KAAO,CAAA;AAOjB,YAAIA,OAAOvB,oBAAoBiB,EAAEM,EAAAA,EAAIM,WAAW,GAAG;AAEjDZ,YAAEM,EAAAA,EAAIO,KAAI,GAAKb,EAAEjB,gBAAAA,KAAqB,CAAA,CAAE;QAC1C;AAEA,YAAIuB,OAAOvB,kBAAkB;AAE3B+B,iBAAOC,KAAKf,CAAAA,EAAGgB,QAAQ,SAAUC,GAAC;AAChC,gBAAIjB,EAAEiB,CAAAA,GAAI;AACRjB,gBAAEiB,CAAAA,EAAGJ,KAAKH,QAAAA;YACZ;UACF,CAAA;QACF;AAEAV,UAAEM,EAAAA,EAAIO,KAAKH,QAAAA;AACX,eAAOV;MACT,GAAG,CAAC,CAAA;AAKJ,YAAMkB,SAAS;QACb,CAACpC,YAAAA,GAAeF,WAAW;UAAEe;UAAOC;UAAQF;UAAWH;QAAO,CAAA;MAChE;AAEA,YAAM4B,YAAY,2BAAIC,SAAAA;AACpB,eAAO,OAAOxB,WAAW,aAAaF,UAAUE,OAAAA,GAAUwB,IAAAA,CAAAA,IAAS1B,UAAUE,MAAAA;MAC/E,GAFkB;AAIlB,aAAO;WAAIkB,OAAOC,KAAKjB,KAAAA;WAAWgB,OAAOO,sBAAsBvB,KAAAA;QAAQC,OAAO,CAACC,GAAGiB,MAAAA;AAEhF,YAAInB,MAAMmB,CAAAA,MAAO,MAAM;AACrBjB,YAAEiB,CAAAA,IAAK,CAACK,UAAUH,UAAUG,OAAO;YAACL;WAAE;QACxC,OAAO;AACL,gBAAMM,gBAAgB,OAAO3B,WAAW,aACpC,CAAC0B,OAAOE,SAAAA;AACN,mBAAO5B,OAAO0B,OAAO;cAACL;iBAAMO;aAAK;UACnC,IACA5B;AACJI,YAAEiB,CAAAA,IAAKrC,WAAW;YAChBe,OAAOG,MAAMmB,CAAAA;YACbrB,QAAQ2B;YACR7B;YACAH;UACF,CAAA;QACF;AACA,eAAOS;MACT,GAAGkB,MAAAA;IACL;AAvFS1B;AAyFT,aAASK,OAAQJ,MAAI;AACnB,UAAIgC,MAAMC,QAAQjC,IAAAA,GAAO;AACvBA,eAAO;UAAEE,OAAOF;UAAMG,QAAQN;QAAO;AACrCJ,iBAASO,IAAAA;AACT,eAAOA;MACT;AACA,UAAI,EAAEE,OAAOC,SAASN,QAAQqC,OAAM,IAAKlC;AACzC,UAAIgC,MAAMC,QAAQ/B,KAAAA,MAAW,OAAO;AAAE,cAAMiC,MAAM,qDAAA;MAAkD;AACpG,UAAID,WAAW,KAAM/B,UAASW;AAC9BrB,eAAS;QAAES;QAAOC;MAAO,CAAA;AAEzB,aAAO;QAAED;QAAOC;MAAO;IACzB;AAZSC;AAcTlB,IAAAA,QAAOD,UAAUc;;;;;ACrHjB;kCAAAqC,UAAAC,SAAA;;AAEA,QAAMC,WAAW,6BAAM,IAAN;AAEjB,QAAMC,YAAY,6BAAM,WAAWC,KAAKC,IAAG,CAAA,IAAzB;AAElB,QAAMC,WAAW,6BAAM,WAAWC,KAAKC,MAAMJ,KAAKC,IAAG,IAAK,GAAA,CAAA,IAAzC;AAEjB,QAAMI,UAAU,6BAAM,YAAY,IAAIL,KAAKA,KAAKC,IAAG,CAAA,EAAIK,YAAW,CAAA,KAAlD;AAEhBT,IAAAA,QAAOD,UAAU;MAAEE;MAAUC;MAAWG;MAAUG;IAAQ;;;;;ACV1D;iDAAAE,UAAAC,SAAA;;AACA,aAASC,aAAcC,GAAC;AACtB,UAAI;AAAE,eAAOC,KAAKC,UAAUF,CAAAA;MAAG,SAAQG,GAAG;AAAE,eAAO;MAAe;IACpE;AAFSJ;AAITD,IAAAA,QAAOD,UAAUO;AAEjB,aAASA,QAAOC,GAAGC,MAAMC,MAAI;AAC3B,UAAIC,KAAMD,QAAQA,KAAKL,aAAcH;AACrC,UAAIU,SAAS;AACb,UAAI,OAAOJ,MAAM,YAAYA,MAAM,MAAM;AACvC,YAAIK,MAAMJ,KAAKK,SAASF;AACxB,YAAIC,QAAQ,EAAG,QAAOL;AACtB,YAAIO,UAAU,IAAIC,MAAMH,GAAAA;AACxBE,gBAAQ,CAAA,IAAKJ,GAAGH,CAAAA;AAChB,iBAASS,QAAQ,GAAGA,QAAQJ,KAAKI,SAAS;AACxCF,kBAAQE,KAAAA,IAASN,GAAGF,KAAKQ,KAAAA,CAAM;QACjC;AACA,eAAOF,QAAQG,KAAK,GAAA;MACtB;AACA,UAAI,OAAOV,MAAM,UAAU;AACzB,eAAOA;MACT;AACA,UAAIW,SAASV,KAAKK;AAClB,UAAIK,WAAW,EAAG,QAAOX;AACzB,UAAIY,MAAM;AACV,UAAIC,IAAI,IAAIT;AACZ,UAAIU,UAAU;AACd,UAAIC,OAAQf,KAAKA,EAAEM,UAAW;AAC9B,eAASU,IAAI,GAAGA,IAAID,QAAO;AACzB,YAAIf,EAAEiB,WAAWD,CAAAA,MAAO,MAAMA,IAAI,IAAID,MAAM;AAC1CD,oBAAUA,UAAU,KAAKA,UAAU;AACnC,kBAAQd,EAAEiB,WAAWD,IAAI,CAAA,GAAA;YACvB,KAAK;YACL,KAAK;AACH,kBAAIH,KAAKF,OACP;AACF,kBAAIV,KAAKY,CAAAA,KAAM,KAAO;AACtB,kBAAIC,UAAUE,EACZJ,QAAOZ,EAAEkB,MAAMJ,SAASE,CAAAA;AAC1BJ,qBAAOO,OAAOlB,KAAKY,CAAAA,CAAE;AACrBC,wBAAUE,IAAI;AACdA;AACA;YACF,KAAK;AACH,kBAAIH,KAAKF,OACP;AACF,kBAAIV,KAAKY,CAAAA,KAAM,KAAO;AACtB,kBAAIC,UAAUE,EACZJ,QAAOZ,EAAEkB,MAAMJ,SAASE,CAAAA;AAC1BJ,qBAAOQ,KAAKC,MAAMF,OAAOlB,KAAKY,CAAAA,CAAE,CAAA;AAChCC,wBAAUE,IAAI;AACdA;AACA;YACF,KAAK;YACL,KAAK;YACL,KAAK;AACH,kBAAIH,KAAKF,OACP;AACF,kBAAIV,KAAKY,CAAAA,MAAOS,OAAW;AAC3B,kBAAIR,UAAUE,EACZJ,QAAOZ,EAAEkB,MAAMJ,SAASE,CAAAA;AAC1B,kBAAIO,OAAO,OAAOtB,KAAKY,CAAAA;AACvB,kBAAIU,SAAS,UAAU;AACrBX,uBAAO,MAAOX,KAAKY,CAAAA,IAAK;AACxBC,0BAAUE,IAAI;AACdA;AACA;cACF;AACA,kBAAIO,SAAS,YAAY;AACvBX,uBAAOX,KAAKY,CAAAA,EAAGW,QAAQ;AACvBV,0BAAUE,IAAI;AACdA;AACA;cACF;AACAJ,qBAAOT,GAAGF,KAAKY,CAAAA,CAAE;AACjBC,wBAAUE,IAAI;AACdA;AACA;YACF,KAAK;AACH,kBAAIH,KAAKF,OACP;AACF,kBAAIG,UAAUE,EACZJ,QAAOZ,EAAEkB,MAAMJ,SAASE,CAAAA;AAC1BJ,qBAAOa,OAAOxB,KAAKY,CAAAA,CAAE;AACrBC,wBAAUE,IAAI;AACdA;AACA;YACF,KAAK;AACH,kBAAIF,UAAUE,EACZJ,QAAOZ,EAAEkB,MAAMJ,SAASE,CAAAA;AAC1BJ,qBAAO;AACPE,wBAAUE,IAAI;AACdA;AACAH;AACA;UACJ;AACA,YAAEA;QACJ;AACA,UAAEG;MACJ;AACA,UAAIF,YAAY,GACd,QAAOd;eACAc,UAAUC,MAAM;AACvBH,eAAOZ,EAAEkB,MAAMJ,OAAAA;MACjB;AAEA,aAAOF;IACT;AArGSb,WAAAA,SAAAA;;;;;ACPT;uCAAA2B,UAAAC,SAAA;;AAIA,QAAI,OAAOC,sBAAsB,eAAe,OAAOC,YAAY,aAAa;AAG9E,UAASC,QAAT,SAAgBC,IAAE;AAEhB,cAAMC,QAAQD,KAAK,KAAKA,KAAKE;AAC7B,YAAID,UAAU,OAAO;AACnB,cAAI,OAAOD,OAAO,YAAY,OAAOA,OAAO,UAAU;AACpD,kBAAMG,UAAU,4BAAA;UAClB;AACA,gBAAMC,WAAW,0EAAA;QACnB;AAEAN,gBAAQO,KAAKC,KAAK,GAAG,GAAGC,OAAOP,EAAAA,CAAAA;MACjC;AAXSD;AAFT,YAAMO,MAAM,IAAIE,WAAW,IAAIX,kBAAkB,CAAA,CAAA;AAcjDD,MAAAA,QAAOD,UAAUI;IACnB,OAAO;AAEL,UAASA,SAAT,SAAgBC,IAAE;AAEhB,cAAMC,QAAQD,KAAK,KAAKA,KAAKE;AAC7B,YAAID,UAAU,OAAO;AACnB,cAAI,OAAOD,OAAO,YAAY,OAAOA,OAAO,UAAU;AACpD,kBAAMG,UAAU,4BAAA;UAClB;AACA,gBAAMC,WAAW,0EAAA;QACnB;AACA,cAAMK,SAASC,KAAKC,IAAG,IAAKJ,OAAOP,EAAAA;AACnC,eAAOS,SAASC,KAAKC,IAAG,GAAG;QAAC;MAC9B;AAXSZ;AAaTH,MAAAA,QAAOD,UAAUI;IAEnB;;;;;ACrCA;qCAAAa,UAAAC,SAAA;;AAEA,QAAMC,KAAKC,QAAQ,IAAA;AACnB,QAAMC,eAAeD,QAAQ,QAAA;AAC7B,QAAME,WAAWF,QAAQ,MAAA,EAAQE;AACjC,QAAMC,OAAOH,QAAQ,MAAA;AACrB,QAAMI,QAAQJ;AACd,QAAMK,SAASL,QAAQ,QAAA;AAEvB,QAAMM,qBAAqB;AAC3B,QAAMC,eAAeC,OAAOC,YAAY,CAAA;AAIxC,QAAMC,YAAY,KAAK;AAEvB,QAAMC,qBAAqB;AAC3B,QAAMC,mBAAmB;AAEzB,QAAM,CAACC,OAAOC,KAAAA,KAAUC,QAAQC,SAASC,QAAQ,OAAOC,MAAM,GAAA,EAAKC,IAAIC,MAAAA;AACvE,QAAMC,cAAcR,SAAS,MAAMC,SAAS;AAE5C,aAASQ,SAAUC,MAAMC,OAAK;AAC5BA,YAAMC,WAAW;AACjBD,YAAME,WAAW;AACjBF,YAAMG,uBAAuB;AAK7B,eAASC,WAAYC,KAAKC,IAAE;AAC1B,YAAID,KAAK;AACPL,gBAAMO,aAAa;AACnBP,gBAAME,WAAW;AACjBF,gBAAMC,WAAW;AAEjB,cAAID,MAAMQ,MAAM;AACdjB,oBAAQkB,SAAS,MAAA;AACf,kBAAIT,MAAMU,cAAc,OAAA,IAAW,GAAG;AACpCV,sBAAMW,KAAK,SAASN,GAAAA;cACtB;YACF,CAAA;UACF,OAAO;AACLL,kBAAMW,KAAK,SAASN,GAAAA;UACtB;AACA;QACF;AAEA,cAAMO,YAAYZ,MAAMO;AAExBP,cAAMM,KAAKA;AACXN,cAAMD,OAAOA;AACbC,cAAMO,aAAa;AACnBP,cAAMC,WAAW;AACjBD,cAAME,WAAW;AAEjB,YAAIF,MAAMQ,MAAM;AACdjB,kBAAQkB,SAAS,MAAMT,MAAMW,KAAK,OAAA,CAAA;QACpC,OAAO;AACLX,gBAAMW,KAAK,OAAA;QACb;AAEA,YAAIX,MAAMa,WAAW;AACnB;QACF;AAGA,YAAK,CAACb,MAAME,YAAYF,MAAMc,OAAOd,MAAMe,aAAcf,MAAMgB,eAAe;AAC5EhB,gBAAMiB,aAAY;QACpB,WAAWL,WAAW;AACpBrB,kBAAQkB,SAAS,MAAMT,MAAMW,KAAK,OAAA,CAAA;QACpC;MACF;AA1CSP;AA4CT,YAAMc,QAAQlB,MAAMmB,SAAS,MAAM;AACnC,YAAMC,OAAOpB,MAAMoB;AAEnB,UAAIpB,MAAMQ,MAAM;AACd,YAAI;AACF,cAAIR,MAAMqB,MAAO9C,IAAG+C,UAAU3C,KAAK4C,QAAQxB,IAAAA,GAAO;YAAEyB,WAAW;UAAK,CAAA;AACpE,gBAAMlB,KAAK/B,GAAGkD,SAAS1B,MAAMmB,OAAOE,IAAAA;AACpChB,qBAAW,MAAME,EAAAA;QACnB,SAASD,KAAK;AACZD,qBAAWC,GAAAA;AACX,gBAAMA;QACR;MACF,WAAWL,MAAMqB,OAAO;AACtB9C,WAAG8C,MAAM1C,KAAK4C,QAAQxB,IAAAA,GAAO;UAAEyB,WAAW;QAAK,GAAG,CAACnB,QAAAA;AACjD,cAAIA,IAAK,QAAOD,WAAWC,GAAAA;AAC3B9B,aAAGmD,KAAK3B,MAAMmB,OAAOE,MAAMhB,UAAAA;QAC7B,CAAA;MACF,OAAO;AACL7B,WAAGmD,KAAK3B,MAAMmB,OAAOE,MAAMhB,UAAAA;MAC7B;IACF;AAxESN;AA0ET,aAAS6B,UAAWC,MAAI;AACtB,UAAI,EAAE,gBAAgBD,YAAY;AAChC,eAAO,IAAIA,UAAUC,IAAAA;MACvB;AAEA,UAAI,EAAEtB,IAAIuB,MAAMd,WAAWe,WAAWC,UAAUC,eAAexB,MAAMW,SAAS,MAAME,OAAOY,aAAaC,OAAOC,aAAaf,KAAI,IAAKQ,QAAQ,CAAC;AAE9ItB,WAAKA,MAAMuB;AAEX,WAAKf,OAAO;AACZ,WAAKR,KAAK;AACV,WAAK8B,QAAQ,CAAA;AACb,WAAKC,QAAQ,CAAA;AACb,WAAKnC,WAAW;AAChB,WAAKoC,UAAU;AACf,WAAK/B,aAAa;AAClB,WAAKJ,uBAAuB;AAC5B,WAAKa,gBAAgB;AACrB,WAAKuB,OAAOC,KAAKC,IAAI1B,aAAa,GAAG,KAAA;AACrC,WAAKhB,OAAO;AACZ,WAAKc,YAAY;AACjB,WAAKE,YAAYA,aAAa;AAC9B,WAAKe,YAAYA,aAAa;AAC9B,WAAKC,WAAWA,YAAY7C;AAC5B,WAAKwD,iBAAiBV,iBAAiB;AACvC,WAAKW,sBAAsBC;AAC3B,WAAKpC,OAAOA,QAAQ;AACpB,WAAKqC,WAAW;AAChB,WAAKC,SAASZ,SAAS;AACvB,WAAKf,SAASA,UAAU;AACxB,WAAKC,OAAOA;AACZ,WAAKa,cAAcA,gBAAgB,MAAM;AACzC,WAAKZ,QAAQA,SAAS;AAEtB,UAAI0B;AACJ,UAAIC;AACJ,UAAIb,gBAAgBhD,oBAAoB;AACtC,aAAK8D,cAAclE;AACnB,aAAKmE,QAAQC;AACb,aAAKC,QAAQC;AACb,aAAKC,YAAYC;AACjB,aAAKtC,eAAeuC;AACpBT,sBAAc,6BAAMxE,GAAGkF,UAAU,KAAKnD,IAAI,KAAK2C,WAAW,GAA5C;AACdD,kBAAU,6BAAMzE,GAAG2E,MAAM,KAAK5C,IAAI,KAAK2C,aAAa,KAAKS,OAAO,GAAtD;MACZ,WAAWvB,gBAAgBS,UAAaT,gBAAgB/C,kBAAkB;AACxE,aAAK6D,cAAc;AACnB,aAAKC,QAAQA;AACb,aAAKE,QAAQA;AACb,aAAKE,YAAYA;AACjB,aAAKrC,eAAe0C;AACpBZ,sBAAc,6BAAMxE,GAAGkF,UAAU,KAAKnD,IAAI,KAAK2C,aAAa,MAAA,GAA9C;AACdD,kBAAU,6BAAMzE,GAAG2E,MAAM,KAAK5C,IAAI,KAAK2C,aAAa,QAAQ,KAAKS,OAAO,GAA9D;MACZ,OAAO;AACL,cAAM,IAAIE,MAAM,uBAAuBxE,gBAAAA,UAA0BD,kBAAAA,iBAAmCgD,WAAAA,EAAa;MACnH;AAEA,UAAI,OAAO7B,OAAO,UAAU;AAC1B,aAAKA,KAAKA;AACVf,gBAAQkB,SAAS,MAAM,KAAKE,KAAK,OAAA,CAAA;MACnC,WAAW,OAAOL,OAAO,UAAU;AACjCR,iBAASQ,IAAI,IAAI;MACnB,OAAO;AACL,cAAM,IAAIsD,MAAM,oDAAA;MAClB;AACA,UAAI,KAAK7C,aAAa,KAAKgB,UAAU;AACnC,cAAM,IAAI6B,MAAM,8CAA8C,KAAK7B,QAAQ,GAAG;MAChF;AAEA,WAAK2B,UAAU,CAACrD,KAAKwD,MAAAA;AACnB,YAAIxD,KAAK;AACP,eAAKA,IAAIyD,SAAS,YAAYzD,IAAIyD,SAAS,YAAY,KAAK7B,YAAY5B,KAAK,KAAK4C,YAAYc,QAAQ,KAAKjD,OAAO,KAAKmC,YAAYc,MAAM,GAAG;AAC1I,gBAAI,KAAKvD,MAAM;AAKb,kBAAI;AACF5B,sBAAME,kBAAAA;AACN,qBAAK4E,QAAQd,QAAW,CAAA;cAC1B,SAASvC,MAAK;AACZ,qBAAKqD,QAAQrD,IAAAA;cACf;YACF,OAAO;AAEL2D,yBAAWhB,SAASlE,kBAAAA;YACtB;UACF,OAAO;AACL,iBAAKoB,WAAW;AAEhB,iBAAKS,KAAK,SAASN,GAAAA;UACrB;AACA;QACF;AAEA,aAAKM,KAAK,SAASkD,CAAAA;AACnB,cAAMI,iBAAiBC,kBAAkB,KAAKjB,aAAa,KAAKnC,MAAM+C,CAAAA;AACtE,aAAK/C,OAAOmD,eAAeE;AAC3B,aAAKlB,cAAcgB,eAAeG;AAElC,YAAI,KAAKnB,YAAYc,QAAQ;AAC3B,cAAI,CAAC,KAAKvD,MAAM;AACdwC,oBAAAA;AACA;UACF;AAEA,cAAI;AACF,eAAG;AACD,oBAAMa,KAAId,YAAAA;AACV,oBAAMkB,kBAAiBC,kBAAkB,KAAKjB,aAAa,KAAKnC,MAAM+C,EAAAA;AACtE,mBAAK/C,OAAOmD,gBAAeE;AAC3B,mBAAKlB,cAAcgB,gBAAeG;YACpC,SAAS,KAAKnB,YAAYc;UAC5B,SAAS1D,MAAK;AACZ,iBAAKqD,QAAQrD,IAAAA;AACb;UACF;QACF;AAEA,YAAI,KAAKyC,QAAQ;AACfvE,aAAG8F,UAAU,KAAK/D,EAAE;QACtB;AAEA,cAAM6D,MAAM,KAAKrD;AACjB,YAAI,KAAKP,YAAY;AACnB,eAAKL,WAAW;AAChB,eAAKK,aAAa;AAClB,eAAK+D,OAAM;QACb,WAAWH,MAAM,KAAKpD,WAAW;AAC/B,eAAKE,aAAY;QACnB,WAAW,KAAKqB,SAAS;AACvB,cAAI6B,MAAM,GAAG;AACX,iBAAKlD,aAAY;UACnB,OAAO;AACL,iBAAKf,WAAW;AAChBqE,wBAAY,IAAI;UAClB;QACF,OAAO;AACL,eAAKrE,WAAW;AAChB,cAAI,KAAKM,MAAM;AACb,gBAAI,CAAC,KAAKL,sBAAsB;AAC9B,mBAAKA,uBAAuB;AAC5BZ,sBAAQkB,SAAS+D,WAAW,IAAI;YAClC;UACF,OAAO;AACL,iBAAK7D,KAAK,OAAA;UACZ;QACF;MACF;AAEA,WAAK8D,GAAG,eAAe,SAAUC,MAAI;AACnC,YAAIA,SAAS,SAAS;AACpB,eAAKvE,uBAAuB;QAC9B;MACF,CAAA;AAEA,UAAI,KAAKuC,mBAAmB,GAAG;AAC7B,aAAKC,sBAAsBgC,YAAY,MAAM,KAAKvB,MAAM,IAAA,GAAO,KAAKV,cAAc;AAClF,aAAKC,oBAAoBiC,MAAK;MAChC;IACF;AA/JSjD;AAwKT,aAASuC,kBAAmBE,YAAYD,KAAKN,GAAC;AAE5C,UAAI,OAAOO,eAAe,YAAYpF,OAAO6F,WAAWT,UAAAA,MAAgBP,GAAG;AAGzEA,YAAI7E,OAAO8F,KAAKV,UAAAA,EAAYW,SAAS,GAAGlB,CAAAA,EAAGmB,SAAQ,EAAGjB;MACxD;AACAI,YAAM3B,KAAKC,IAAI0B,MAAMN,GAAG,CAAA;AACxBO,mBAAaA,WAAWa,MAAMpB,CAAAA;AAC9B,aAAO;QAAEO;QAAYD;MAAI;IAC3B;AAVSD;AAYT,aAASM,UAAWxE,OAAK;AACvB,YAAMkF,eAAelF,MAAMU,cAAc,OAAA,IAAW;AACpD,UAAI,CAACwE,aAAc;AACnBlF,YAAMG,uBAAuB;AAC7BH,YAAMW,KAAK,OAAA;IACb;AALS6D;AAOT9F,aAASiD,WAAWlD,YAAAA;AAEpB,aAAS0G,SAAUC,MAAMjB,KAAG;AAC1B,UAAIiB,KAAKrB,WAAW,GAAG;AACrB,eAAOhF;MACT;AAEA,UAAIqG,KAAKrB,WAAW,GAAG;AACrB,eAAOqB,KAAK,CAAA;MACd;AAEA,aAAOpG,OAAOqG,OAAOD,MAAMjB,GAAAA;IAC7B;AAVSgB;AAYT,aAASjC,MAAOoC,MAAI;AAClB,UAAI,KAAKzE,WAAW;AAClB,cAAM,IAAI+C,MAAM,qBAAA;MAClB;AAEA,YAAMO,MAAM,KAAKrD,OAAOwE,KAAKvB;AAC7B,YAAMqB,OAAO,KAAKhD;AAElB,UAAI,KAAKN,aAAaqC,MAAM,KAAKrC,WAAW;AAC1C,aAAKnB,KAAK,QAAQ2E,IAAAA;AAClB,eAAO,KAAKxE,OAAO,KAAKyB;MAC1B;AAEA,UACE6C,KAAKrB,WAAW,KAChBqB,KAAKA,KAAKrB,SAAS,CAAA,EAAGA,SAASuB,KAAKvB,SAAS,KAAKhC,UAClD;AACAqD,aAAKG,KAAK,KAAKD,IAAAA;MACjB,OAAO;AACLF,aAAKA,KAAKrB,SAAS,CAAA,KAAMuB;MAC3B;AAEA,WAAKxE,OAAOqD;AAEZ,UAAI,CAAC,KAAKjE,YAAY,KAAKY,QAAQ,KAAKC,WAAW;AACjD,aAAKE,aAAY;MACnB;AAEA,aAAO,KAAKH,OAAO,KAAKyB;IAC1B;AA7BSW;AA+BT,aAASC,YAAamC,MAAI;AACxB,UAAI,KAAKzE,WAAW;AAClB,cAAM,IAAI+C,MAAM,qBAAA;MAClB;AAEA,YAAMO,MAAM,KAAKrD,OAAOwE,KAAKvB;AAC7B,YAAMqB,OAAO,KAAKhD;AAClB,YAAMoD,OAAO,KAAKnD;AAElB,UAAI,KAAKP,aAAaqC,MAAM,KAAKrC,WAAW;AAC1C,aAAKnB,KAAK,QAAQ2E,IAAAA;AAClB,eAAO,KAAKxE,OAAO,KAAKyB;MAC1B;AAEA,UACE6C,KAAKrB,WAAW,KAChByB,KAAKA,KAAKzB,SAAS,CAAA,IAAKuB,KAAKvB,SAAS,KAAKhC,UAC3C;AACAqD,aAAKG,KAAK;UAACD;SAAK;AAChBE,aAAKD,KAAKD,KAAKvB,MAAM;MACvB,OAAO;AACLqB,aAAKA,KAAKrB,SAAS,CAAA,EAAGwB,KAAKD,IAAAA;AAC3BE,aAAKA,KAAKzB,SAAS,CAAA,KAAMuB,KAAKvB;MAChC;AAEA,WAAKjD,OAAOqD;AAEZ,UAAI,CAAC,KAAKjE,YAAY,KAAKY,QAAQ,KAAKC,WAAW;AACjD,aAAKE,aAAY;MACnB;AAEA,aAAO,KAAKH,OAAO,KAAKyB;IAC1B;AAhCSY;AAkCT,aAASsC,yBAA0BC,IAAE;AACnC,WAAK1E,gBAAgB;AACrB,YAAM2E,UAAU,6BAAA;AAEd,YAAI,CAAC,KAAK7C,QAAQ;AAChB,cAAI;AACFvE,eAAG2D,MAAM,KAAK5B,IAAI,CAACD,QAAAA;AACjB,mBAAKW,gBAAgB;AACrB0E,iBAAGrF,GAAAA;YACL,CAAA;UACF,SAASA,KAAK;AACZqF,eAAGrF,GAAAA;UACL;QACF,OAAO;AACL,eAAKW,gBAAgB;AACrB0E,aAAAA;QACF;AACA,aAAKE,IAAI,SAASC,OAAAA;MACpB,GAhBgB;AAiBhB,YAAMA,UAAU,wBAACxF,QAAAA;AACf,aAAKW,gBAAgB;AACrB0E,WAAGrF,GAAAA;AACH,aAAKuF,IAAI,SAASD,OAAAA;MACpB,GAJgB;AAMhB,WAAKG,KAAK,SAASH,OAAAA;AACnB,WAAKG,KAAK,SAASD,OAAAA;IACrB;AA3BSJ;AA6BT,aAASrC,MAAOsC,IAAE;AAChB,UAAIA,MAAM,QAAQ,OAAOA,OAAO,YAAY;AAC1C,cAAM,IAAI9B,MAAM,6BAAA;MAClB;AAEA,UAAI,KAAK/C,WAAW;AAClB,cAAMkF,QAAQ,IAAInC,MAAM,qBAAA;AACxB,YAAI8B,IAAI;AACNA,aAAGK,KAAAA;AACH;QACF;AAEA,cAAMA;MACR;AAEA,UAAI,KAAKhF,aAAa,GAAG;AACvB2E;AACA;MACF;AAEA,UAAIA,IAAI;AACND,iCAAyBO,KAAK,MAAMN,EAAAA;MACtC;AAEA,UAAI,KAAKxF,UAAU;AACjB;MACF;AAEA,UAAI,KAAKkC,MAAM2B,WAAW,GAAG;AAC3B,aAAK3B,MAAMmD,KAAK,EAAA;MAClB;AAEA,WAAKtE,aAAY;IACnB;AAjCSmC;AAmCT,aAASC,YAAaqC,IAAE;AACtB,UAAIA,MAAM,QAAQ,OAAOA,OAAO,YAAY;AAC1C,cAAM,IAAI9B,MAAM,6BAAA;MAClB;AAEA,UAAI,KAAK/C,WAAW;AAClB,cAAMkF,QAAQ,IAAInC,MAAM,qBAAA;AACxB,YAAI8B,IAAI;AACNA,aAAGK,KAAAA;AACH;QACF;AAEA,cAAMA;MACR;AAEA,UAAI,KAAKhF,aAAa,GAAG;AACvB2E;AACA;MACF;AAEA,UAAIA,IAAI;AACND,iCAAyBO,KAAK,MAAMN,EAAAA;MACtC;AAEA,UAAI,KAAKxF,UAAU;AACjB;MACF;AAEA,UAAI,KAAKkC,MAAM2B,WAAW,GAAG;AAC3B,aAAK3B,MAAMmD,KAAK,CAAA,CAAE;AAClB,aAAKlD,MAAMkD,KAAK,CAAA;MAClB;AAEA,WAAKtE,aAAY;IACnB;AAlCSoC;AAoCT1B,cAAUsE,UAAU3B,SAAS,SAAUvE,MAAI;AACzC,UAAI,KAAKc,WAAW;AAClB,cAAM,IAAI+C,MAAM,qBAAA;MAClB;AAEA,UAAI,KAAK3D,UAAU;AACjB,aAAK6F,KAAK,SAAS,MAAA;AACjB,eAAKxB,OAAOvE,IAAAA;QACd,CAAA;AACA;MACF;AAEA,UAAI,KAAKuC,SAAS;AAChB;MACF;AAEA,UAAI,CAAC,KAAKvC,MAAM;AACd,cAAM,IAAI6D,MAAM,uEAAA;MAClB;AAEA,UAAI7D,MAAM;AACR,aAAKA,OAAOA;MACd;AACA,WAAKQ,aAAa;AAElB,UAAI,KAAKL,UAAU;AACjB;MACF;AAEA,YAAMI,KAAK,KAAKA;AAChB,WAAKwF,KAAK,SAAS,MAAA;AACjB,YAAIxF,OAAO,KAAKA,IAAI;AAClB/B,aAAG2H,MAAM5F,IAAI,CAACD,QAAAA;AACZ,gBAAIA,KAAK;AACP,qBAAO,KAAKM,KAAK,SAASN,GAAAA;YAC5B;UACF,CAAA;QACF;MACF,CAAA;AAEAP,eAAS,KAAKC,MAAM,IAAI;IAC1B;AAEA4B,cAAUsE,UAAUE,MAAM,WAAA;AACxB,UAAI,KAAKtF,WAAW;AAClB,cAAM,IAAI+C,MAAM,qBAAA;MAClB;AAEA,UAAI,KAAK3D,UAAU;AACjB,aAAK6F,KAAK,SAAS,MAAA;AACjB,eAAKK,IAAG;QACV,CAAA;AACA;MACF;AAEA,UAAI,KAAK7D,SAAS;AAChB;MACF;AAEA,WAAKA,UAAU;AAEf,UAAI,KAAKpC,UAAU;AACjB;MACF;AAEA,UAAI,KAAKY,OAAO,KAAK,KAAKR,MAAM,GAAG;AACjC,aAAKW,aAAY;MACnB,OAAO;AACLsD,oBAAY,IAAI;MAClB;IACF;AAEA,aAASjB,YAAAA;AACP,UAAI,KAAKzC,WAAW;AAClB,cAAM,IAAI+C,MAAM,qBAAA;MAClB;AAEA,UAAI,KAAKtD,KAAK,GAAG;AACf,cAAM,IAAIsD,MAAM,6BAAA;MAClB;AAEA,UAAI,CAAC,KAAK1D,YAAY,KAAK+C,YAAYc,SAAS,GAAG;AACjD,aAAK3B,MAAMgE,QAAQ,KAAKnD,WAAW;AACnC,aAAKA,cAAc;MACrB;AAEA,UAAIoD,MAAM;AACV,aAAO,KAAKjE,MAAM2B,UAAUsC,KAAK;AAC/B,YAAIA,IAAItC,UAAU,GAAG;AACnBsC,gBAAM,KAAKjE,MAAM,CAAA;QACnB;AACA,YAAI;AACF,gBAAMyB,IAAItF,GAAGkF,UAAU,KAAKnD,IAAI+F,KAAK,MAAA;AACrC,gBAAMpC,iBAAiBC,kBAAkBmC,KAAK,KAAKvF,MAAM+C,CAAAA;AACzDwC,gBAAMpC,eAAeG;AACrB,eAAKtD,OAAOmD,eAAeE;AAC3B,cAAIkC,IAAItC,UAAU,GAAG;AACnB,iBAAK3B,MAAMkE,MAAK;UAClB;QACF,SAASjG,KAAK;AACZ,gBAAMkG,cAAclG,IAAIyD,SAAS,YAAYzD,IAAIyD,SAAS;AAC1D,cAAIyC,eAAe,CAAC,KAAKtE,YAAY5B,KAAKgG,IAAItC,QAAQ,KAAKjD,OAAOuF,IAAItC,MAAM,GAAG;AAC7E,kBAAM1D;UACR;AAEAzB,gBAAME,kBAAAA;QACR;MACF;AAEA,UAAI;AACFP,WAAG8F,UAAU,KAAK/D,EAAE;MACtB,QAAQ;MAER;IACF;AA1CSgD;AA4CT,aAASC,kBAAAA;AACP,UAAI,KAAK1C,WAAW;AAClB,cAAM,IAAI+C,MAAM,qBAAA;MAClB;AAEA,UAAI,KAAKtD,KAAK,GAAG;AACf,cAAM,IAAIsD,MAAM,6BAAA;MAClB;AAEA,UAAI,CAAC,KAAK1D,YAAY,KAAK+C,YAAYc,SAAS,GAAG;AACjD,aAAK3B,MAAMgE,QAAQ;UAAC,KAAKnD;SAAY;AACrC,aAAKA,cAAclE;MACrB;AAEA,UAAIsH,MAAMtH;AACV,aAAO,KAAKqD,MAAM2B,UAAUsC,IAAItC,QAAQ;AACtC,YAAIsC,IAAItC,UAAU,GAAG;AACnBsC,gBAAMlB,SAAS,KAAK/C,MAAM,CAAA,GAAI,KAAKC,MAAM,CAAA,CAAE;QAC7C;AACA,YAAI;AACF,gBAAMwB,IAAItF,GAAGkF,UAAU,KAAKnD,IAAI+F,GAAAA;AAChCA,gBAAMA,IAAItB,SAASlB,CAAAA;AACnB,eAAK/C,OAAO0B,KAAKC,IAAI,KAAK3B,OAAO+C,GAAG,CAAA;AACpC,cAAIwC,IAAItC,UAAU,GAAG;AACnB,iBAAK3B,MAAMkE,MAAK;AAChB,iBAAKjE,MAAMiE,MAAK;UAClB;QACF,SAASjG,KAAK;AACZ,gBAAMkG,cAAclG,IAAIyD,SAAS,YAAYzD,IAAIyD,SAAS;AAC1D,cAAIyC,eAAe,CAAC,KAAKtE,YAAY5B,KAAKgG,IAAItC,QAAQ,KAAKjD,OAAOuF,IAAItC,MAAM,GAAG;AAC7E,kBAAM1D;UACR;AAEAzB,gBAAME,kBAAAA;QACR;MACF;IACF;AApCSyE;AAsCT5B,cAAUsE,UAAUO,UAAU,WAAA;AAC5B,UAAI,KAAK3F,WAAW;AAClB;MACF;AACA0D,kBAAY,IAAI;IAClB;AAEA,aAASZ,cAAAA;AACP,YAAMD,UAAU,KAAKA;AACrB,WAAKxD,WAAW;AAChB,WAAK+C,cAAc,KAAKA,eAAe,KAAKb,MAAMkE,MAAK,KAAM;AAE7D,UAAI,KAAK9F,MAAM;AACb,YAAI;AACF,gBAAMiG,UAAUlI,GAAGkF,UAAU,KAAKnD,IAAI,KAAK2C,aAAa,MAAA;AACxDS,kBAAQ,MAAM+C,OAAAA;QAChB,SAASpG,KAAK;AACZqD,kBAAQrD,GAAAA;QACV;MACF,OAAO;AACL9B,WAAG2E,MAAM,KAAK5C,IAAI,KAAK2C,aAAa,QAAQS,OAAAA;MAC9C;IACF;AAfSC;AAiBT,aAASH,oBAAAA;AACP,YAAME,UAAU,KAAKA;AACrB,WAAKxD,WAAW;AAChB,WAAK+C,cAAc,KAAKA,YAAYc,SAAS,KAAKd,cAAckC,SAAS,KAAK/C,MAAMkE,MAAK,GAAI,KAAKjE,MAAMiE,MAAK,CAAA;AAE7G,UAAI,KAAK9F,MAAM;AACb,YAAI;AACF,gBAAMiG,UAAUlI,GAAGkF,UAAU,KAAKnD,IAAI,KAAK2C,WAAW;AACtDS,kBAAQ,MAAM+C,OAAAA;QAChB,SAASpG,KAAK;AACZqD,kBAAQrD,GAAAA;QACV;MACF,OAAO;AAIL,YAAIR,aAAa;AACf,eAAKoD,cAAcjE,OAAO8F,KAAK,KAAK7B,WAAW;QACjD;AACA1E,WAAG2E,MAAM,KAAK5C,IAAI,KAAK2C,aAAaS,OAAAA;MACtC;IACF;AArBSF;AAuBT,aAASe,YAAavE,OAAK;AACzB,UAAIA,MAAMM,OAAO,IAAI;AACnBN,cAAM8F,KAAK,SAASvB,YAAYmC,KAAK,MAAM1G,KAAAA,CAAAA;AAC3C;MACF;AAEA,UAAIA,MAAM2C,wBAAwBC,QAAW;AAC3C+D,sBAAc3G,MAAM2C,mBAAmB;MACzC;AAEA3C,YAAMa,YAAY;AAClBb,YAAMoC,QAAQ,CAAA;AACdpC,YAAMqC,QAAQ,CAAA;AAEdxD,aAAO,OAAOmB,MAAMM,OAAO,UAAU,kCAAkC,OAAON,MAAMM,EAAE,EAAE;AACxF,UAAI;AACF/B,WAAG2D,MAAMlC,MAAMM,IAAIsG,YAAAA;MACrB,QAAQ;MACR;AAEA,eAASA,eAAAA;AAGP,YAAI5G,MAAMM,OAAO,KAAKN,MAAMM,OAAO,GAAG;AACpC/B,aAAG2H,MAAMlG,MAAMM,IAAIuG,IAAAA;QACrB,OAAO;AACLA,eAAAA;QACF;MACF;AARSD;AAUT,eAASC,KAAMxG,KAAG;AAChB,YAAIA,KAAK;AACPL,gBAAMW,KAAK,SAASN,GAAAA;AACpB;QACF;AAEA,YAAIL,MAAMsC,WAAW,CAACtC,MAAME,UAAU;AACpCF,gBAAMW,KAAK,QAAA;QACb;AACAX,cAAMW,KAAK,OAAA;MACb;AAVSkG;IAWX;AAzCStC;AAqDT5C,cAAUA,YAAYA;AACtBA,cAAUmF,UAAUnF;AACpBrD,IAAAA,QAAOD,UAAUsD;;;;;AC9sBjB;4CAAAoF,UAAAC,SAAA;;AAEA,QAAMC,OAAO;MACXC,MAAM,CAAA;MACNC,YAAY,CAAA;IACd;AACA,QAAMC,YAAY;MAChBF,MAAMG;MACNF,YAAYG;IACd;AAEA,QAAIC;AAEJ,aAASC,iBAAAA;AACP,UAAID,aAAaE,QAAW;AAC1BF,mBAAW,IAAIG,qBAAqBC,KAAAA;MACtC;IACF;AAJSH;AAMT,aAASI,QAASC,OAAK;AACrB,UAAIZ,KAAKY,KAAAA,EAAOC,SAAS,GAAG;AAC1B;MACF;AAEAC,cAAQC,GAAGH,OAAOT,UAAUS,KAAAA,CAAM;IACpC;AANSD;AAQT,aAASK,UAAWJ,OAAK;AACvB,UAAIZ,KAAKY,KAAAA,EAAOC,SAAS,GAAG;AAC1B;MACF;AACAC,cAAQG,eAAeL,OAAOT,UAAUS,KAAAA,CAAM;AAC9C,UAAIZ,KAAKC,KAAKY,WAAW,KAAKb,KAAKE,WAAWW,WAAW,GAAG;AAC1DP,mBAAWE;MACb;IACF;AARSQ;AAUT,aAASZ,SAAAA;AACPc,eAAS,MAAA;IACX;AAFSd;AAIT,aAASC,eAAAA;AACPa,eAAS,YAAA;IACX;AAFSb;AAIT,aAASa,SAAUN,OAAK;AACtB,iBAAWO,OAAOnB,KAAKY,KAAAA,GAAQ;AAC7B,cAAMQ,MAAMD,IAAIE,MAAK;AACrB,cAAMC,KAAKH,IAAIG;AAKf,YAAIF,QAAQZ,QAAW;AACrBc,aAAGF,KAAKR,KAAAA;QACV;MACF;AACAZ,WAAKY,KAAAA,IAAS,CAAA;IAChB;AAbSM;AAeT,aAASR,MAAOS,KAAG;AACjB,iBAAWP,SAAS;QAAC;QAAQ;SAAe;AAC1C,cAAMW,QAAQvB,KAAKY,KAAAA,EAAOY,QAAQL,GAAAA;AAClCnB,aAAKY,KAAAA,EAAOa,OAAOF,OAAOA,QAAQ,CAAA;AAClCP,kBAAUJ,KAAAA;MACZ;IACF;AANSF;AAQT,aAASgB,UAAWd,OAAOQ,KAAKE,IAAE;AAChC,UAAIF,QAAQZ,QAAW;AACrB,cAAM,IAAImB,MAAM,+BAAA;MAClB;AACAhB,cAAQC,KAAAA;AACR,YAAMO,MAAM,IAAIS,QAAQR,GAAAA;AACxBD,UAAIG,KAAKA;AAETf,qBAAAA;AACAD,eAASuB,SAAST,KAAKD,GAAAA;AACvBnB,WAAKY,KAAAA,EAAOkB,KAAKX,GAAAA;IACnB;AAXSO;AAaT,aAASG,SAAUT,KAAKE,IAAE;AACxBI,gBAAU,QAAQN,KAAKE,EAAAA;IACzB;AAFSO;AAIT,aAASE,mBAAoBX,KAAKE,IAAE;AAClCI,gBAAU,cAAcN,KAAKE,EAAAA;IAC/B;AAFSS;AAIT,aAASC,WAAYZ,KAAG;AACtB,UAAId,aAAaE,QAAW;AAC1B;MACF;AACAF,eAAS0B,WAAWZ,GAAAA;AACpB,iBAAWR,SAAS;QAAC;QAAQ;SAAe;AAC1CZ,aAAKY,KAAAA,IAASZ,KAAKY,KAAAA,EAAOqB,OAAO,CAACd,QAAAA;AAChC,gBAAMe,OAAOf,IAAIE,MAAK;AACtB,iBAAOa,QAAQA,SAASd;QAC1B,CAAA;AACAJ,kBAAUJ,KAAAA;MACZ;IACF;AAZSoB;AAcTjC,IAAAA,QAAOD,UAAU;MACf+B;MACAE;MACAC;IACF;;;;;AC3GA;AAAA,4CAAAG,UAAAC,SAAA;AAAA,IAAAA,QAAA;AAAA,MACE,MAAQ;AAAA,MACR,SAAW;AAAA,MACX,aAAe;AAAA,MACf,MAAQ;AAAA,MACR,OAAS;AAAA,MACT,cAAgB;AAAA,QACd,gBAAgB;AAAA,MAClB;AAAA,MACA,iBAAmB;AAAA,QACjB,eAAe;AAAA,QACf,cAAc;AAAA,QACd,gBAAgB;AAAA,QAChB,MAAQ;AAAA,QACR,WAAa;AAAA,QACb,OAAS;AAAA,QACT,sBAAsB;AAAA,QACtB,cAAc;AAAA,QACd,UAAY;AAAA,QACZ,KAAO;AAAA,QACP,WAAW;AAAA,QACX,YAAc;AAAA,QACd,uBAAuB;AAAA,MACzB;AAAA,MACA,SAAW;AAAA,QACT,OAAS;AAAA,QACT,MAAQ;AAAA,QACR,WAAW;AAAA,QACX,cAAc;AAAA,QACd,cAAc;AAAA,QACd,aAAa;AAAA,QACb,WAAa;AAAA,QACb,SAAW;AAAA,MACb;AAAA,MACA,UAAY;AAAA,QACV,QAAU;AAAA,UACR;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAAA,MACA,YAAc;AAAA,QACZ,MAAQ;AAAA,QACR,KAAO;AAAA,MACT;AAAA,MACA,UAAY;AAAA,QACV;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,QAAU;AAAA,MACV,SAAW;AAAA,MACX,MAAQ;AAAA,QACN,KAAO;AAAA,MACT;AAAA,MACA,UAAY;AAAA,IACd;AAAA;AAAA;;;ACxDA;2CAAAC,UAAAC,SAAA;;AAEA,QAAMC,cAAc;AAEpB,aAASC,KAAMC,OAAOC,OAAOC,UAAUC,SAASC,MAAI;AAClD,YAAMC,MAAMC,KAAKC,IAAG,IAAKJ;AACzB,UAAIK,UAAUC,QAAQC,KAAKV,OAAOC,KAAAA;AAClC,UAAIO,YAAYN,UAAU;AACxBE,aAAK,MAAM,IAAA;AACX;MACF;AACA,UAAIO,QAAQH;AACZ,YAAMI,QAAQ,wBAACC,YAAAA;AACb,YAAIP,KAAKC,IAAG,IAAKF,KAAK;AACpBD,eAAK,MAAM,WAAA;QACb,OAAO;AACLU,qBAAW,MAAA;AACTH,oBAAQH;AACRA,sBAAUC,QAAQC,KAAKV,OAAOC,KAAAA;AAC9B,gBAAIO,YAAYG,OAAO;AACrBC,oBAAMC,WAAWf,cAAcA,cAAce,UAAU,CAAA;YACzD,OAAO;AACL,kBAAIL,YAAYN,SAAUE,MAAK,MAAM,IAAA;kBAChCA,MAAK,MAAM,WAAA;YAClB;UACF,GAAGS,OAAAA;QACL;MACF,GAfc;AAgBdD,YAAM,CAAA;IACR;AAzBSb;AA4BT,aAASgB,SAAUf,OAAOC,OAAOC,UAAUC,SAASC,MAAI;AAGtD,YAAMC,MAAMC,KAAKC,IAAG,IAAKJ;AACzB,UAAIK,UAAUC,QAAQC,KAAKV,OAAOC,KAAAA;AAClC,UAAIO,YAAYN,UAAU;AACxBE,aAAK,MAAM,IAAA;AACX;MACF;AACA,YAAMQ,QAAQ,wBAACC,YAAAA;AAGb,YAAIP,KAAKC,IAAG,IAAKF,KAAK;AACpBD,eAAK,MAAM,WAAA;QACb,OAAO;AACLU,qBAAW,MAAA;AACTN,sBAAUC,QAAQC,KAAKV,OAAOC,KAAAA;AAC9B,gBAAIO,YAAYN,UAAU;AACxBE,mBAAK,MAAM,IAAA;YACb,OAAO;AACLQ,oBAAMC,WAAWf,cAAcA,cAAce,UAAU,CAAA;YACzD;UACF,GAAGA,OAAAA;QACL;MACF,GAfc;AAgBdD,YAAM,CAAA;IACR;AA1BSG;AA4BTlB,IAAAA,QAAOD,UAAU;MAAEG;MAAMgB;IAAS;;;;;AC5DlC;8CAAAC,UAAAC,SAAA;;AAEA,QAAMC,cAAc;AACpB,QAAMC,aAAa;AAEnBF,IAAAA,QAAOD,UAAU;MACfE;MACAC;IACF;;;;;ACRA;wCAAAC,UAAAC,SAAA;;AAEA,QAAM,EAAEC,QAAO,IAAKC;AACpB,QAAM,EAAEC,aAAY,IAAKD,QAAQ,QAAA;AACjC,QAAM,EAAEE,OAAM,IAAKF,QAAQ,gBAAA;AAC3B,QAAM,EAAEG,KAAI,IAAKH,QAAQ,MAAA;AACzB,QAAM,EAAEI,cAAa,IAAKJ,QAAQ,KAAA;AAClC,QAAM,EAAEK,KAAI,IAAKL;AACjB,QAAM,EACJM,aACAC,WAAU,IACRP;AACJ,QAAMQ,SAASR,QAAQ,QAAA;AACvB,QAAMS,SAAST,QAAQ,QAAA;AAEvB,QAAMU,QAAQC,OAAO,OAAA;AAGrB,QAAMC,aAAaJ,OAAOK,UAAUC;AAlBpC,QAAAC;AAoBA,QAAMC,eAAND,MAAA,MAAMC;MACJ,YAAaC,OAAO;AAClB,aAAKC,SAASD;MAChB;MAEAE,QAAS;AACP,eAAO,KAAKD;MACd;IACF,GARMF,OAAAA,KAAAA,gBAAND;AApBA,QAAAA;AA8BA,QAAMK,4BAANL,MAAA,MAAMK;MACJC,WAAY;MAAC;MAEbC,aAAc;MAAC;IACjB,GAJMF,OAAAA,KAAAA,6BAANL;AAQA,QAAMQ,wBAAuBC,QAAQC,IAAIC,mBAAmBN,2BAA2BO,OAAOJ,wBAAwBH;AACtH,QAAMQ,WAAUJ,QAAQC,IAAIC,mBAAmBV,cAAcW,OAAOC,WAAWZ;AAE/E,QAAMa,WAAW,IAAIN,sBAAqB,CAACO,WAAAA;AACzC,UAAIA,OAAOC,QAAQ;AACjB;MACF;AACAD,aAAOE,UAAS;IAClB,CAAA;AAEA,aAASC,aAAcC,QAAQC,MAAI;AACjC,YAAM,EAAEC,UAAUC,WAAU,IAAKF;AAEjC,YAAMG,mBAAmB,6BAA6BC,aAAaA,WAAWC,0BAA0B,CAAC;AACzG,YAAMC,YAAYH,iBAAiB,sBAAA,KAA2BnC,KAAKuC,WAAW,OAAO,WAAA;AAErF,YAAMZ,SAAS,IAAI5B,OAAOuC,WAAW;QACnC,GAAGN,KAAKQ;QACRC,mBAAmB;QACnBP,YAAY;UACVD,UAAUA,SAASS,QAAQ,SAAA,MAAe,IACtCT,WACAhC,cAAcgC,QAAAA,EAAUU;UAC5BC,SAASb,OAAOxB,KAAAA,EAAOqC;UACvBC,UAAUd,OAAOxB,KAAAA,EAAOsC;UACxBX,YAAY;YACVY,UAAU;cACRC,qBAAqBnD;YACvB;YACA,GAAGsC;UACL;QACF;MACF,CAAA;AAIAP,aAAOI,SAAS,IAAIlB,YAAYkB,MAAAA;AAEhCJ,aAAOqB,GAAG,WAAWC,eAAAA;AACrBtB,aAAOqB,GAAG,QAAQE,YAAAA;AAClBxB,eAASR,SAASa,QAAQJ,MAAAA;AAE1B,aAAOA;IACT;AAjCSG;AAmCT,aAASqB,MAAOpB,QAAM;AACpBzB,aAAO,CAACyB,OAAOxB,KAAAA,EAAO6C,IAAI;AAC1B,UAAIrB,OAAOxB,KAAAA,EAAO8C,WAAW;AAC3BtB,eAAOxB,KAAAA,EAAO8C,YAAY;AAC1BtB,eAAOuB,KAAK,OAAA;MACd;IACF;AANSH;AAQT,aAASI,UAAWxB,QAAM;AACxB,YAAMyB,aAAaC,QAAQC,KAAK3B,OAAOxB,KAAAA,EAAOoD,OAAOxD,WAAAA;AACrD,UAAIyD,WAAW7B,OAAOxB,KAAAA,EAAOsD,KAAKC,SAASN;AAE3C,UAAII,WAAW,GAAG;AAChB,YAAI7B,OAAOxB,KAAAA,EAAOwD,IAAID,WAAW,GAAG;AAClC/B,iBAAOxB,KAAAA,EAAOyD,WAAW;AAEzB,cAAIjC,OAAOxB,KAAAA,EAAO0D,QAAQ;AACxBC,gBAAInC,MAAAA;UACN,WAAWA,OAAOxB,KAAAA,EAAO8C,WAAW;AAClChC,oBAAQ8C,SAAShB,OAAOpB,MAAAA;UAC1B;AAEA;QACF;AAEA,YAAIqC,UAAUrC,OAAOxB,KAAAA,EAAOwD,IAAIM,MAAM,GAAGT,QAAAA;AACzC,YAAIU,eAAeC,OAAOC,WAAWJ,OAAAA;AACrC,YAAIE,gBAAgBV,UAAU;AAC5B7B,iBAAOxB,KAAAA,EAAOwD,MAAMhC,OAAOxB,KAAAA,EAAOwD,IAAIM,MAAMT,QAAAA;AAE5Ca,gBAAM1C,QAAQqC,SAASb,UAAUmB,KAAK,MAAM3C,MAAAA,CAAAA;QAC9C,OAAO;AAELA,iBAAO4C,MAAM,MAAA;AAEX,gBAAI5C,OAAO6C,WAAW;AACpB;YACF;AAEAnB,oBAAQoB,MAAM9C,OAAOxB,KAAAA,EAAOoD,OAAOvD,YAAY,CAAA;AAC/CqD,oBAAQoB,MAAM9C,OAAOxB,KAAAA,EAAOoD,OAAOxD,aAAa,CAAA;AAKhD,mBAAOmE,eAAevC,OAAOxB,KAAAA,EAAOsD,KAAKC,QAAQ;AAC/CF,yBAAWA,WAAW;AACtBQ,wBAAUrC,OAAOxB,KAAAA,EAAOwD,IAAIM,MAAM,GAAGT,QAAAA;AACrCU,6BAAeC,OAAOC,WAAWJ,OAAAA;YACnC;AACArC,mBAAOxB,KAAAA,EAAOwD,MAAMhC,OAAOxB,KAAAA,EAAOwD,IAAIM,MAAMT,QAAAA;AAC5Ca,kBAAM1C,QAAQqC,SAASb,UAAUmB,KAAK,MAAM3C,MAAAA,CAAAA;UAC9C,CAAA;QACF;MACF,WAAW6B,aAAa,GAAG;AACzB,YAAIJ,eAAe,KAAKzB,OAAOxB,KAAAA,EAAOwD,IAAID,WAAW,GAAG;AAEtD;QACF;AACA/B,eAAO4C,MAAM,MAAA;AACXlB,kBAAQoB,MAAM9C,OAAOxB,KAAAA,EAAOoD,OAAOvD,YAAY,CAAA;AAC/CqD,kBAAQoB,MAAM9C,OAAOxB,KAAAA,EAAOoD,OAAOxD,aAAa,CAAA;AAChDoD,oBAAUxB,MAAAA;QACZ,CAAA;MACF,OAAO;AAEL+C,gBAAQ/C,QAAQ,IAAIgD,MAAM,aAAA,CAAA;MAC5B;IACF;AA5DSxB;AA8DT,aAASN,gBAAiB+B,KAAG;AAC3B,YAAMjD,SAAS,KAAKA,OAAOf,MAAK;AAChC,UAAIe,WAAWkD,QAAW;AACxB,aAAKrD,SAAS;AAEd,aAAKC,UAAS;AACd;MACF;AAEA,cAAQmD,IAAIE,MAAI;QACd,KAAK;AAGH,eAAKnD,SAAS,IAAIN,SAAQM,MAAAA;AAE1BA,iBAAO4C,MAAM,MAAA;AACX5C,mBAAOxB,KAAAA,EAAO4E,QAAQ;AACtBpD,mBAAOuB,KAAK,OAAA;UACd,CAAA;AACA;QACF,KAAK;AACHwB,kBAAQ/C,QAAQiD,IAAII,GAAG;AACvB;QACF,KAAK;AACH,cAAIC,MAAMC,QAAQN,IAAIO,IAAI,GAAG;AAC3BxD,mBAAOuB,KAAK0B,IAAIQ,MAAI,GAAKR,IAAIO,IAAI;UACnC,OAAO;AACLxD,mBAAOuB,KAAK0B,IAAIQ,MAAMR,IAAIO,IAAI;UAChC;AACA;QACF,KAAK;AACHlE,kBAAQoE,YAAYT,IAAII,GAAG;AAC3B;QACF;AACEN,kBAAQ/C,QAAQ,IAAIgD,MAAM,6BAA6BC,IAAIE,IAAI,CAAA;MACnE;IACF;AApCSjC;AAsCT,aAASC,aAAcgC,MAAI;AACzB,YAAMnD,SAAS,KAAKA,OAAOf,MAAK;AAChC,UAAIe,WAAWkD,QAAW;AAExB;MACF;AACAvD,eAASP,WAAWY,MAAAA;AACpBA,aAAOJ,OAAOC,SAAS;AACvBG,aAAOJ,OAAO+D,IAAI,QAAQxC,YAAAA;AAC1B4B,cAAQ/C,QAAQmD,SAAS,IAAI,IAAIH,MAAM,0BAAA,IAA8B,IAAA;IACvE;AAVS7B;AA/LT,QAAAtC;AA2MA,QAAM+E,gBAAN/E,MAAA,cAA2Bd,aAAAA;MACzB,YAAakC,OAAO,CAAC,GAAG;AACtB,cAAK;AAEL,YAAIA,KAAK4D,aAAa,GAAG;AACvB,gBAAM,IAAIb,MAAM,kDAAA;QAClB;AAEA,aAAKxE,KAAAA,IAAS,CAAC;AACf,aAAKA,KAAAA,EAAOsC,WAAW,IAAIgD,kBAAkB,GAAA;AAC7C,aAAKtF,KAAAA,EAAOoD,QAAQ,IAAImC,WAAW,KAAKvF,KAAAA,EAAOsC,QAAQ;AACvD,aAAKtC,KAAAA,EAAOqC,UAAU,IAAIiD,kBAAkB7D,KAAK4D,cAAc,IAAI,OAAO,IAAA;AAC1E,aAAKrF,KAAAA,EAAOsD,OAAOU,OAAOwB,KAAK,KAAKxF,KAAAA,EAAOqC,OAAO;AAClD,aAAKrC,KAAAA,EAAO6C,OAAOpB,KAAKoB,QAAQ;AAChC,aAAK7C,KAAAA,EAAO0D,SAAS;AACrB,aAAK1D,KAAAA,EAAOyF,QAAQ;AACpB,aAAKzF,KAAAA,EAAO8C,YAAY;AACxB,aAAK9C,KAAAA,EAAOqE,YAAY;AACxB,aAAKrE,KAAAA,EAAOyD,WAAW;AACvB,aAAKzD,KAAAA,EAAO4E,QAAQ;AACpB,aAAK5E,KAAAA,EAAO0F,WAAW;AACvB,aAAK1F,KAAAA,EAAO2F,UAAU;AACtB,aAAK3F,KAAAA,EAAO4F,SAAS;AACrB,aAAK5F,KAAAA,EAAOwD,MAAM;AAGlB,aAAKpC,SAASG,aAAa,MAAME,IAAAA;AACjC,aAAKgB,GAAG,WAAW,CAACoD,SAASC,iBAAAA;AAC3B,eAAK1E,OAAO2E,YAAYF,SAASC,YAAAA;QACnC,CAAA;MACF;MAEA5B,MAAOZ,MAAM;AACX,YAAI,KAAKtD,KAAAA,EAAOqE,WAAW;AACzB2B,gBAAM,MAAM,IAAIxB,MAAM,uBAAA,CAAA;AACtB,iBAAO;QACT;AAEA,YAAI,KAAKxE,KAAAA,EAAO0D,QAAQ;AACtBsC,gBAAM,MAAM,IAAIxB,MAAM,sBAAA,CAAA;AACtB,iBAAO;QACT;AAEA,YAAI,KAAKxE,KAAAA,EAAOyD,YAAY,KAAKzD,KAAAA,EAAOwD,IAAID,SAASD,KAAKC,UAAUrD,YAAY;AAC9E,cAAI;AACF+F,sBAAU,IAAI;AACd,iBAAKjG,KAAAA,EAAOyD,WAAW;UACzB,SAASoB,KAAK;AACZN,oBAAQ,MAAMM,GAAAA;AACd,mBAAO;UACT;QACF;AAEA,aAAK7E,KAAAA,EAAOwD,OAAOF;AAEnB,YAAI,KAAKtD,KAAAA,EAAO6C,MAAM;AACpB,cAAI;AACFoD,sBAAU,IAAI;AACd,mBAAO;UACT,SAASpB,KAAK;AACZN,oBAAQ,MAAMM,GAAAA;AACd,mBAAO;UACT;QACF;AAEA,YAAI,CAAC,KAAK7E,KAAAA,EAAOyD,UAAU;AACzB,eAAKzD,KAAAA,EAAOyD,WAAW;AACvByC,uBAAalD,WAAW,IAAI;QAC9B;AAEA,aAAKhD,KAAAA,EAAO8C,YAAY,KAAK9C,KAAAA,EAAOsD,KAAKC,SAAS,KAAKvD,KAAAA,EAAOwD,IAAID,SAASL,QAAQC,KAAK,KAAKnD,KAAAA,EAAOoD,OAAOxD,WAAAA,KAAgB;AAC3H,eAAO,CAAC,KAAKI,KAAAA,EAAO8C;MACtB;MAEAa,MAAO;AACL,YAAI,KAAK3D,KAAAA,EAAOqE,WAAW;AACzB;QACF;AAEA,aAAKrE,KAAAA,EAAO0D,SAAS;AACrBC,YAAI,IAAI;MACV;MAEAS,MAAO+B,IAAI;AACT,YAAI,KAAKnG,KAAAA,EAAOqE,WAAW;AACzB,cAAI,OAAO8B,OAAO,YAAY;AAC5BrF,oBAAQ8C,SAASuC,IAAI,IAAI3B,MAAM,uBAAA,CAAA;UACjC;AACA;QACF;AAGA,cAAMvB,aAAaC,QAAQC,KAAK,KAAKnD,KAAAA,EAAOoD,OAAOxD,WAAAA;AAEnDD,aAAK,KAAKK,KAAAA,EAAOoD,OAAOvD,YAAYoD,YAAYmD,UAAU,CAACvB,KAAKwB,QAAAA;AAC9D,cAAIxB,KAAK;AACPN,oBAAQ,MAAMM,GAAAA;AACd/D,oBAAQ8C,SAASuC,IAAItB,GAAAA;AACrB;UACF;AACA,cAAIwB,QAAQ,aAAa;AAEvB,iBAAKjC,MAAM+B,EAAAA;AACX;UACF;AACArF,kBAAQ8C,SAASuC,EAAAA;QACnB,CAAA;MACF;MAEAG,YAAa;AACX,YAAI,KAAKtG,KAAAA,EAAOqE,WAAW;AACzB;QACF;AAEA4B,kBAAU,IAAI;AACdK,kBAAU,IAAI;MAChB;MAEAC,QAAS;AACP,aAAKnF,OAAOmF,MAAK;MACnB;MAEAC,MAAO;AACL,aAAKpF,OAAOoF,IAAG;MACjB;MAEA,IAAI5B,QAAS;AACX,eAAO,KAAK5E,KAAAA,EAAO4E;MACrB;MAEA,IAAIP,YAAa;AACf,eAAO,KAAKrE,KAAAA,EAAOqE;MACrB;MAEA,IAAIuB,SAAU;AACZ,eAAO,KAAK5F,KAAAA,EAAO4F;MACrB;MAEA,IAAIa,WAAY;AACd,eAAO,CAAC,KAAKzG,KAAAA,EAAOqE,aAAa,CAAC,KAAKrE,KAAAA,EAAO0D;MAChD;MAEA,IAAIgD,gBAAiB;AACnB,eAAO,KAAK1G,KAAAA,EAAO0D;MACrB;MAEA,IAAIiD,mBAAoB;AACtB,eAAO,KAAK3G,KAAAA,EAAO0F;MACrB;MAEA,IAAIkB,oBAAqB;AACvB,eAAO,KAAK5G,KAAAA,EAAO8C;MACrB;MAEA,IAAI+D,qBAAsB;AACxB,eAAO;MACT;MAEA,IAAIC,kBAAmB;AACrB,eAAO,KAAK9G,KAAAA,EAAO2F;MACrB;IACF,GAjK2BpG,OAAAA,KAAAA,iBAA3Bc;AAmKA,aAAS2F,MAAOxE,QAAQqD,KAAG;AACzBqB,mBAAa,MAAA;AACX1E,eAAOuB,KAAK,SAAS8B,GAAAA;MACvB,CAAA;IACF;AAJSmB;AAMT,aAASzB,QAAS/C,QAAQqD,KAAG;AAC3B,UAAIrD,OAAOxB,KAAAA,EAAOqE,WAAW;AAC3B;MACF;AACA7C,aAAOxB,KAAAA,EAAOqE,YAAY;AAE1B,UAAIQ,KAAK;AACPrD,eAAOxB,KAAAA,EAAO2F,UAAUd;AACxBmB,cAAMxE,QAAQqD,GAAAA;MAChB;AAEA,UAAI,CAACrD,OAAOJ,OAAOC,QAAQ;AACzBG,eAAOJ,OAAOE,UAAS,EACpByF,MAAM,MAAA;QAAO,CAAA,EACbC,KAAK,MAAA;AACJxF,iBAAOxB,KAAAA,EAAO4F,SAAS;AACvBpE,iBAAOuB,KAAK,OAAA;QACd,CAAA;MACJ,OAAO;AACLmD,qBAAa,MAAA;AACX1E,iBAAOxB,KAAAA,EAAO4F,SAAS;AACvBpE,iBAAOuB,KAAK,OAAA;QACd,CAAA;MACF;IACF;AAxBSwB;AA0BT,aAASL,MAAO1C,QAAQ8B,MAAM6C,IAAE;AAE9B,YAAMc,UAAU/D,QAAQC,KAAK3B,OAAOxB,KAAAA,EAAOoD,OAAOxD,WAAAA;AAClD,YAAM2D,SAASS,OAAOC,WAAWX,IAAAA;AACjC9B,aAAOxB,KAAAA,EAAOsD,KAAKY,MAAMZ,MAAM2D,OAAAA;AAC/B/D,cAAQoB,MAAM9C,OAAOxB,KAAAA,EAAOoD,OAAOxD,aAAaqH,UAAU1D,MAAAA;AAC1DL,cAAQgE,OAAO1F,OAAOxB,KAAAA,EAAOoD,OAAOxD,WAAAA;AACpCuG,SAAAA;AACA,aAAO;IACT;AATSjC;AAWT,aAASP,IAAKnC,QAAM;AAClB,UAAIA,OAAOxB,KAAAA,EAAOyF,SAAS,CAACjE,OAAOxB,KAAAA,EAAO0D,UAAUlC,OAAOxB,KAAAA,EAAOyD,UAAU;AAC1E;MACF;AACAjC,aAAOxB,KAAAA,EAAOyF,QAAQ;AAEtB,UAAI;AACFjE,eAAO8E,UAAS;AAEhB,YAAIa,YAAYjE,QAAQC,KAAK3B,OAAOxB,KAAAA,EAAOoD,OAAOvD,UAAAA;AAGlDqD,gBAAQoB,MAAM9C,OAAOxB,KAAAA,EAAOoD,OAAOxD,aAAa,EAAC;AAEjDsD,gBAAQgE,OAAO1F,OAAOxB,KAAAA,EAAOoD,OAAOxD,WAAAA;AAGpC,YAAIwH,QAAQ;AACZ,eAAOD,cAAc,IAAI;AAEvBjE,kBAAQvD,KAAK6B,OAAOxB,KAAAA,EAAOoD,OAAOvD,YAAYsH,WAAW,GAAA;AACzDA,sBAAYjE,QAAQC,KAAK3B,OAAOxB,KAAAA,EAAOoD,OAAOvD,UAAAA;AAE9C,cAAIsH,cAAc,IAAI;AACpB5C,oBAAQ/C,QAAQ,IAAIgD,MAAM,cAAA,CAAA;AAC1B;UACF;AAEA,cAAI,EAAE4C,UAAU,IAAI;AAClB7C,oBAAQ/C,QAAQ,IAAIgD,MAAM,2BAAA,CAAA;AAC1B;UACF;QACF;AAEA1D,gBAAQ8C,SAAS,MAAA;AACfpC,iBAAOxB,KAAAA,EAAO0F,WAAW;AACzBlE,iBAAOuB,KAAK,QAAA;QACd,CAAA;MACF,SAAS8B,KAAK;AACZN,gBAAQ/C,QAAQqD,GAAAA;MAClB;IAEF;AA1CSlB;AA4CT,aAASsC,UAAWzE,QAAM;AACxB,YAAM2E,KAAK,6BAAA;AACT,YAAI3E,OAAOxB,KAAAA,EAAO0D,QAAQ;AACxBC,cAAInC,MAAAA;QACN,WAAWA,OAAOxB,KAAAA,EAAO8C,WAAW;AAClChC,kBAAQ8C,SAAShB,OAAOpB,MAAAA;QAC1B;MACF,GANW;AAOXA,aAAOxB,KAAAA,EAAOyD,WAAW;AAEzB,aAAOjC,OAAOxB,KAAAA,EAAOwD,IAAID,WAAW,GAAG;AACrC,cAAMN,aAAaC,QAAQC,KAAK3B,OAAOxB,KAAAA,EAAOoD,OAAOxD,WAAAA;AACrD,YAAIyD,WAAW7B,OAAOxB,KAAAA,EAAOsD,KAAKC,SAASN;AAC3C,YAAII,aAAa,GAAG;AAClBiD,oBAAU9E,MAAAA;AACV0B,kBAAQoB,MAAM9C,OAAOxB,KAAAA,EAAOoD,OAAOvD,YAAY,CAAA;AAC/CqD,kBAAQoB,MAAM9C,OAAOxB,KAAAA,EAAOoD,OAAOxD,aAAa,CAAA;AAChD;QACF,WAAWyD,WAAW,GAAG;AAEvB,gBAAM,IAAImB,MAAM,aAAA;QAClB;AAEA,YAAIX,UAAUrC,OAAOxB,KAAAA,EAAOwD,IAAIM,MAAM,GAAGT,QAAAA;AACzC,YAAIU,eAAeC,OAAOC,WAAWJ,OAAAA;AACrC,YAAIE,gBAAgBV,UAAU;AAC5B7B,iBAAOxB,KAAAA,EAAOwD,MAAMhC,OAAOxB,KAAAA,EAAOwD,IAAIM,MAAMT,QAAAA;AAE5Ca,gBAAM1C,QAAQqC,SAASsC,EAAAA;QACzB,OAAO;AAELG,oBAAU9E,MAAAA;AACV0B,kBAAQoB,MAAM9C,OAAOxB,KAAAA,EAAOoD,OAAOvD,YAAY,CAAA;AAC/CqD,kBAAQoB,MAAM9C,OAAOxB,KAAAA,EAAOoD,OAAOxD,aAAa,CAAA;AAKhD,iBAAOmE,eAAevC,OAAOxB,KAAAA,EAAOwD,IAAID,QAAQ;AAC9CF,uBAAWA,WAAW;AACtBQ,sBAAUrC,OAAOxB,KAAAA,EAAOwD,IAAIM,MAAM,GAAGT,QAAAA;AACrCU,2BAAeC,OAAOC,WAAWJ,OAAAA;UACnC;AACArC,iBAAOxB,KAAAA,EAAOwD,MAAMhC,OAAOxB,KAAAA,EAAOwD,IAAIM,MAAMT,QAAAA;AAC5Ca,gBAAM1C,QAAQqC,SAASsC,EAAAA;QACzB;MACF;IACF;AA/CSF;AAiDT,aAASK,UAAW9E,QAAM;AACxB,UAAIA,OAAOxB,KAAAA,EAAOyD,UAAU;AAC1B,cAAM,IAAIe,MAAM,gCAAA;MAClB;AAIA,YAAMvB,aAAaC,QAAQC,KAAK3B,OAAOxB,KAAAA,EAAOoD,OAAOxD,WAAAA;AAErD,UAAIwH,QAAQ;AAGZ,aAAO,MAAM;AACX,cAAMD,YAAYjE,QAAQC,KAAK3B,OAAOxB,KAAAA,EAAOoD,OAAOvD,UAAAA;AAEpD,YAAIsH,cAAc,IAAI;AACpB,gBAAM3C,MAAM,mBAAA;QACd;AAGA,YAAI2C,cAAclE,YAAY;AAE5BC,kBAAQvD,KAAK6B,OAAOxB,KAAAA,EAAOoD,OAAOvD,YAAYsH,WAAW,GAAA;QAC3D,OAAO;AACL;QACF;AAEA,YAAI,EAAEC,UAAU,IAAI;AAClB,gBAAM,IAAI5C,MAAM,gCAAA;QAClB;MACF;IAEF;AAhCS8B;AAkCTlH,IAAAA,QAAOD,UAAUiG;;;;;ACxhBjB;uCAAAiC,UAAAC,SAAA;;AAEA,QAAM,EAAEC,cAAa,IAAKC,QAAQ,QAAA;AAClC,QAAMC,aAAaD;AACnB,QAAM,EAAEE,MAAMC,YAAYC,IAAG,IAAKJ,QAAQ,MAAA;AAC1C,QAAMK,QAAQL;AACd,QAAMM,SAASN;AACf,QAAMO,eAAeP;AAErB,aAASQ,YAAaC,QAAM;AAE1BH,aAAOI,SAASD,QAAQE,OAAAA;AACxBL,aAAOM,mBAAmBH,QAAQI,KAAAA;AAElCJ,aAAOK,GAAG,SAAS,WAAA;AACjBR,eAAOS,WAAWN,MAAAA;MACpB,CAAA;IACF;AARSD;AAUT,aAASQ,YAAaC,UAAUC,YAAYC,YAAYC,MAAI;AAC1D,YAAMX,SAAS,IAAIF,aAAa;QAC9BU;QACAC;QACAC;QACAC;MACF,CAAA;AAEAX,aAAOK,GAAG,SAASO,OAAAA;AACnBZ,aAAOK,GAAG,SAAS,WAAA;AACjBQ,gBAAQC,eAAe,QAAQjB,OAAAA;MACjC,CAAA;AAEAgB,cAAQR,GAAG,QAAQR,OAAAA;AAEnB,eAASe,UAAAA;AACPC,gBAAQC,eAAe,QAAQjB,OAAAA;AAC/BG,eAAOe,MAAK;AAEZ,YAAIL,WAAWR,YAAY,OAAO;AAChCH,sBAAYC,MAAAA;QACd;MACF;AAPSY;AAST,eAASf,UAAAA;AAEP,YAAIG,OAAOgB,QAAQ;AACjB;QACF;AACAhB,eAAOiB,UAAS;AAKhBrB,cAAM,GAAA;AACNI,eAAOkB,IAAG;MACZ;AAZSrB,aAAAA,SAAAA;AAcT,aAAOG;IACT;AAvCSO;AAyCT,aAASL,QAASF,QAAM;AACtBA,aAAOmB,IAAG;AACVnB,aAAOiB,UAAS;AAChBjB,aAAOkB,IAAG;AACVlB,aAAOoB,KAAK,SAAS,WAAA;AACnBpB,eAAOe,MAAK;MACd,CAAA;IACF;AAPSb;AAST,aAASE,MAAOJ,QAAM;AACpBA,aAAOiB,UAAS;IAClB;AAFSb;AAIT,aAASiB,UAAWC,aAAW;AAC7B,YAAM,EAAEC,UAAUC,SAASC,QAAQC,QAAQC,SAAS,CAAC,GAAGC,SAASpC,WAAAA,GAAcmB,OAAO,MAAK,IAAKW;AAEhG,YAAMO,UAAU;QACd,GAAGP,YAAYO;MACjB;AAGA,YAAMC,UAAU,OAAOF,WAAW,WAAW;QAACA;UAAUA;AAGxD,YAAMG,mBAAmB,6BAA6BC,aAAaA,WAAWC,0BAA0B,CAAC;AAEzG,UAAIC,SAASZ,YAAYY;AAEzB,UAAIA,UAAUV,SAAS;AACrB,cAAM,IAAIW,MAAM,gDAAA;MAClB;AAEA,UAAIX,SAAS;AACXU,iBAASH,iBAAiB,aAAA,KAAkBtC,KAAK2C,WAAW,WAAA;AAC5DP,gBAAQL,UAAUA,QAAQa,OAAOC,CAAAA,SAAQA,KAAKJ,MAAM,EAAEK,IAAI,CAACD,SAAAA;AACzD,iBAAO;YACL,GAAGA;YACHJ,QAAQM,UAAUF,KAAKJ,MAAM;UAC/B;QACF,CAAA;AACAL,gBAAQY,YAAYjB,QAAQa,OAAOC,CAAAA,SAAQA,KAAKf,QAAQ,EAAEgB,IAAI,CAACD,SAAAA;AAC7D,iBAAOA,KAAKf,SAASgB,IAAI,CAACG,MAAAA;AACxB,mBAAO;cACL,GAAGA;cACHC,OAAOL,KAAKK;cACZT,QAAQM,UAAUE,EAAER,MAAM;YAC5B;UACF,CAAA;QACF,CAAA;MACF,WAAWX,UAAU;AACnBW,iBAASH,iBAAiB,aAAA,KAAkBtC,KAAK2C,WAAW,WAAA;AAC5DP,gBAAQY,YAAY;UAAClB,SAASgB,IAAI,CAACD,SAAAA;AACjC,mBAAO;cACL,GAAGA;cACHJ,QAAQM,UAAUF,KAAKJ,MAAM;YAC/B;UACF,CAAA;;MACF;AAEA,UAAIT,QAAQ;AACVI,gBAAQJ,SAASA;MACnB;AAEA,UAAIC,QAAQ;AACVG,gBAAQH,SAASA;MACnB;AAEAG,cAAQe,qBAAqB;AAE7B,aAAOrC,YAAYiC,UAAUN,MAAAA,GAASL,SAASF,QAAQhB,IAAAA;AAEvD,eAAS6B,UAAWK,QAAM;AACxBA,iBAASd,iBAAiBc,MAAAA,KAAWA;AAErC,YAAInD,WAAWmD,MAAAA,KAAWA,OAAOC,QAAQ,SAAA,MAAe,GAAG;AACzD,iBAAOD;QACT;AAEA,YAAIA,WAAW,aAAa;AAC1B,iBAAOpD,KAAK2C,WAAW,MAAM,SAAA;QAC/B;AAEA,YAAII;AAEJ,mBAAWO,YAAYjB,SAAS;AAC9B,cAAI;AACF,kBAAMkB,UAAUD,aAAa,cACzBlC,QAAQoC,IAAG,IAAKtD,MAChBoD;AAEJP,YAAAA,aAAYlD,cAAc0D,OAAAA,EAASE,QAAQL,MAAAA;AAC3C;UACF,SAASM,KAAK;AAEZ;UACF;QACF;AAEA,YAAI,CAACX,YAAW;AACd,gBAAM,IAAIL,MAAM,6CAA6CU,MAAAA,GAAS;QACxE;AAEA,eAAOL;MACT;AAhCSA;IAiCX;AA3FSnB;AA6FThC,IAAAA,QAAOD,UAAUiC;;;;;ACtKjB;mCAAA+B,UAAAC,SAAA;;AAIA,QAAMC,UAASC;AACf,QAAM,EAAEC,gBAAgBC,gBAAe,IAAKF;AAC5C,QAAMG,YAAYH;AAClB,QAAMI,SAASJ;AACf,QAAM,EACJK,YACAC,cACAC,UACAC,gBACAC,eACAC,QACAC,iBACAC,cACAC,kBACAC,kBACAC,cACAC,eACAC,eACAC,aACAC,iBACAC,aAAY,IACVpB;AACJ,QAAM,EAAEqB,aAAY,IAAKrB,QAAQ,gBAAA;AACjC,QAAMsB,YAAYtB;AAElB,aAASuB,OAAAA;IACT;AADSA;AAGT,aAASC,OAAQC,OAAOC,MAAI;AAC1B,UAAI,CAACA,KAAM,QAAOC;AAElB,aAAO,gCAASC,kBAAmBC,MAAI;AACrCH,aAAKI,KAAK,MAAMD,MAAMF,KAAKF,KAAAA;MAC7B,GAFO;AAIP,eAASE,IAAKI,MAAMC,GAAC;AACnB,YAAI,OAAOD,MAAM,UAAU;AACzB,cAAIE,MAAMF;AACV,cAAIA,MAAM,MAAM;AACd,gBAAIA,EAAEG,UAAUH,EAAEI,WAAWJ,EAAEK,QAAQ;AACrCL,kBAAI9B,eAAe8B,CAAAA;YACrB,WAAW,OAAOA,EAAEM,cAAc,YAAY;AAC5CN,kBAAI7B,gBAAgB6B,CAAAA;YACtB;UACF;AACA,cAAIO;AACJ,cAAIL,QAAQ,QAAQD,EAAEO,WAAW,GAAG;AAClCD,2BAAe;cAAC;;UAClB,OAAO;AACLL,kBAAMD,EAAEQ,MAAK;AACbF,2BAAeN;UACjB;AAGA,cAAI,OAAO,KAAKZ,YAAAA,MAAkB,YAAYa,QAAQQ,UAAaR,QAAQ,MAAM;AAC/EA,kBAAM,KAAKb,YAAAA,IAAgBa;UAC7B;AACA,eAAK1B,QAAAA,EAAUwB,GAAGhC,QAAOkC,KAAKK,cAAc,KAAK7B,aAAAA,CAAc,GAAGgB,KAAAA;QACpE,OAAO;AACL,cAAIQ,MAAMF,MAAMU,SAAYT,EAAEQ,MAAK,IAAKT;AAIxC,cAAI,OAAO,KAAKX,YAAAA,MAAkB,YAAYa,QAAQQ,UAAaR,QAAQ,MAAM;AAC/EA,kBAAM,KAAKb,YAAAA,IAAgBa;UAC7B;AACA,eAAK1B,QAAAA,EAAU,MAAMR,QAAOkC,KAAKD,GAAG,KAAKvB,aAAAA,CAAc,GAAGgB,KAAAA;QAC5D;MACF;AAjCSE;IAkCX;AAzCSH;AAgDT,aAASkB,SAAUC,KAAG;AACpB,UAAIC,SAAS;AACb,UAAIC,OAAO;AACX,UAAIC,QAAQ;AACZ,UAAIC,QAAQ;AACZ,YAAMC,IAAIL,IAAIJ;AACd,UAAIS,IAAI,KAAK;AACX,eAAOC,KAAKC,UAAUP,GAAAA;MACxB;AACA,eAASQ,IAAI,GAAGA,IAAIH,KAAKD,SAAS,IAAII,KAAK;AACzCJ,gBAAQJ,IAAIS,WAAWD,CAAAA;AACvB,YAAIJ,UAAU,MAAMA,UAAU,IAAI;AAChCH,oBAAUD,IAAIU,MAAMR,MAAMM,CAAAA,IAAK;AAC/BN,iBAAOM;AACPL,kBAAQ;QACV;MACF;AACA,UAAI,CAACA,OAAO;AACVF,iBAASD;MACX,OAAO;AACLC,kBAAUD,IAAIU,MAAMR,IAAAA;MACtB;AACA,aAAOE,QAAQ,KAAKE,KAAKC,UAAUP,GAAAA,IAAO,MAAMC,SAAS;IAC3D;AAvBSF;AAyBT,aAASY,OAAQC,KAAKtB,KAAKuB,KAAKC,MAAI;AAClC,YAAMP,aAAY,KAAKtC,YAAAA;AACvB,YAAM8C,gBAAgB,KAAK7C,gBAAAA;AAC3B,YAAM8C,eAAe,KAAKhD,eAAAA;AAC1B,YAAMiD,MAAM,KAAKlD,MAAAA;AACjB,YAAMmD,YAAY,KAAKvD,YAAAA;AACvB,YAAMwD,cAAc,KAAKtD,cAAAA;AACzB,YAAMuD,aAAa,KAAK/C,aAAAA;AACxB,YAAMgD,aAAa,KAAK/C,aAAAA;AACxB,YAAMgD,WAAW,KAAK/C,WAAAA;AACtB,UAAIgD,OAAO,KAAK7D,UAAAA,EAAYmD,GAAAA,IAAOC;AAInCS,aAAOA,OAAOL;AAEd,UAAIM;AACJ,UAAIJ,WAAWK,KAAK;AAClBb,cAAMQ,WAAWK,IAAIb,GAAAA;MACvB;AACA,YAAMc,sBAAsBV,aAAa7C,gBAAAA;AACzC,UAAIwD,UAAU;AACd,iBAAWC,OAAOhB,KAAK;AACrBY,gBAAQZ,IAAIgB,GAAAA;AACZ,YAAIC,OAAOC,UAAUC,eAAe5C,KAAKyB,KAAKgB,GAAAA,KAAQJ,UAAU1B,QAAW;AACzE,cAAIqB,YAAYS,GAAAA,GAAM;AACpBJ,oBAAQL,YAAYS,GAAAA,EAAKJ,KAAAA;UAC3B,WAAWI,QAAQN,YAAYH,YAAYa,KAAK;AAC9CR,oBAAQL,YAAYa,IAAIR,KAAAA;UAC1B;AAEA,gBAAMS,cAAcjB,aAAaY,GAAAA,KAAQF;AAEzC,kBAAQ,OAAOF,OAAAA;YACb,KAAK;YACL,KAAK;AACH;YACF,KAAK;AAEH,kBAAIU,OAAOC,SAASX,KAAAA,MAAW,OAAO;AACpCA,wBAAQ;cACV;;YAEF,KAAK;AACH,kBAAIS,YAAaT,SAAQS,YAAYT,KAAAA;AACrC;YACF,KAAK;AACHA,uBAASS,eAAelC,UAAUyB,KAAAA;AAClC;YACF;AACEA,uBAASS,eAAe1B,YAAWiB,OAAOT,aAAAA;UAC9C;AACA,cAAIS,UAAU1B,OAAW;AACzB,gBAAMsC,SAASrC,SAAS6B,GAAAA;AACxBD,qBAAW,MAAMS,SAAS,MAAMZ;QAClC;MACF;AAEA,UAAIa,SAAS;AACb,UAAI/C,QAAQQ,QAAW;AACrB0B,gBAAQL,YAAYE,UAAAA,IAAcF,YAAYE,UAAAA,EAAY/B,GAAAA,IAAOA;AACjE,cAAM2C,cAAcjB,aAAaK,UAAAA,KAAeK;AAEhD,gBAAQ,OAAOF,OAAAA;UACb,KAAK;AACH;UACF,KAAK;AAEH,gBAAIU,OAAOC,SAASX,KAAAA,MAAW,OAAO;AACpCA,sBAAQ;YACV;;UAEF,KAAK;AACH,gBAAIS,YAAaT,SAAQS,YAAYT,KAAAA;AACrCa,qBAAS,OAAOhB,aAAa,OAAOG;AACpC;UACF,KAAK;AACHA,qBAASS,eAAelC,UAAUyB,KAAAA;AAClCa,qBAAS,OAAOhB,aAAa,OAAOG;AACpC;UACF;AACEA,qBAASS,eAAe1B,YAAWiB,OAAOT,aAAAA;AAC1CsB,qBAAS,OAAOhB,aAAa,OAAOG;QACxC;MACF;AAEA,UAAI,KAAKpD,YAAAA,KAAiBuD,SAAS;AAGjC,eAAOJ,OAAO,KAAK/C,eAAAA,IAAmBmD,QAAQjB,MAAM,CAAA,IAAK,MAAM2B,SAASpB;MAC1E,OAAO;AACL,eAAOM,OAAOI,UAAUU,SAASpB;MACnC;IACF;AA7FSN;AA+FT,aAAS2B,YAAaC,UAAUC,UAAQ;AACtC,UAAIhB;AACJ,UAAID,OAAOgB,SAAS5E,YAAAA;AACpB,YAAM4C,aAAYgC,SAAStE,YAAAA;AAC3B,YAAM8C,gBAAgBwB,SAASrE,gBAAAA;AAC/B,YAAM8C,eAAeuB,SAASvE,eAAAA;AAC9B,YAAM0D,sBAAsBV,aAAa7C,gBAAAA;AACzC,YAAMgD,cAAcoB,SAAS1E,cAAAA;AAC7B,YAAM4E,YAAYF,SAASlE,aAAAA,EAAemE;AAC1CA,iBAAWC,UAAUD,QAAAA;AAErB,iBAAWZ,OAAOY,UAAU;AAC1BhB,gBAAQgB,SAASZ,GAAAA;AACjB,cAAMc,QAAQd,QAAQ,WACpBA,QAAQ,iBACRA,QAAQ,gBACRA,QAAQ,kBACRY,SAAST,eAAeH,GAAAA,KACxBJ,UAAU1B;AACZ,YAAI4C,UAAU,MAAM;AAClBlB,kBAAQL,YAAYS,GAAAA,IAAOT,YAAYS,GAAAA,EAAKJ,KAAAA,IAASA;AACrDA,mBAASR,aAAaY,GAAAA,KAAQF,uBAAuBnB,YAAWiB,OAAOT,aAAAA;AACvE,cAAIS,UAAU1B,OAAW;AACzByB,kBAAQ,OAAOK,MAAM,OAAOJ;QAC9B;MACF;AACA,aAAOD;IACT;AA3BSe;AA6BT,aAASK,gBAAiBC,QAAM;AAC9B,aAAOA,OAAOC,UAAUD,OAAO,YAAYd,UAAUe;IACvD;AAFSF;AAIT,aAASG,mBAAoBC,MAAI;AAC/B,YAAMH,SAAS,IAAIpF,UAAUuF,IAAAA;AAC7BH,aAAOI,GAAG,SAASC,gBAAAA;AAEnB,UAAI,CAACF,KAAKG,QAAQxE,cAAc;AAC9BjB,eAAO0F,SAASP,QAAQQ,OAAAA;AAExBR,eAAOI,GAAG,SAAS,WAAA;AACjBvF,iBAAO4F,WAAWT,MAAAA;QACpB,CAAA;MACF;AACA,aAAOA;AAEP,eAASK,iBAAkBjB,KAAG;AAG5B,YAAIA,IAAIsB,SAAS,SAAS;AAIxBV,iBAAOC,QAAQjE;AACfgE,iBAAO3B,MAAMrC;AACbgE,iBAAOW,YAAY3E;AACnBgE,iBAAOY,UAAU5E;AACjB;QACF;AACAgE,eAAOa,eAAe,SAASR,gBAAAA;AAC/BL,eAAOc,KAAK,SAAS1B,GAAAA;MACvB;AAfSiB;IAgBX;AA7BSH;AA+BT,aAASM,QAASR,QAAQe,WAAS;AAGjC,UAAIf,OAAOgB,WAAW;AACpB;MACF;AAEA,UAAID,cAAc,cAAc;AAE9Bf,eAAOiB,MAAK;AACZjB,eAAOI,GAAG,SAAS,WAAA;AACjBJ,iBAAO3B,IAAG;QACZ,CAAA;MACF,OAAO;AAIL2B,eAAOW,UAAS;MAClB;IACF;AAnBSH;AAqBT,aAASU,qBAAsBC,gBAAc;AAC3C,aAAO,gCAASC,cAAezB,UAAU0B,QAAQlB,OAAO,CAAC,GAAGH,QAAM;AAEhE,YAAI,OAAOG,SAAS,UAAU;AAC5BH,mBAASE,mBAAmB;YAAEoB,MAAMnB;UAAK,CAAA;AACzCA,iBAAO,CAAC;QACV,WAAW,OAAOH,WAAW,UAAU;AACrC,cAAIG,QAAQA,KAAKpE,WAAW;AAC1B,kBAAMwF,MAAM,yDAAA;UACd;AACAvB,mBAASE,mBAAmB;YAAEoB,MAAMtB;UAAO,CAAA;QAC7C,WAAWG,gBAAgBvF,aAAauF,KAAKqB,YAAYrB,KAAKsB,gBAAgB;AAC5EzB,mBAASG;AACTA,iBAAO,CAAC;QACV,WAAWA,KAAKpE,WAAW;AACzB,cAAIoE,KAAKpE,qBAAqBnB,aAAauF,KAAKpE,UAAUyF,YAAYrB,KAAKpE,UAAU0F,gBAAgB;AACnG,kBAAMF,MAAM,4FAAA;UACd;AACA,cAAIpB,KAAKpE,UAAU2F,WAAWvB,KAAKpE,UAAU2F,QAAQ1E,UAAUmD,KAAK3B,cAAc,OAAO2B,KAAK3B,WAAWtC,UAAU,YAAY;AAC7H,kBAAMqF,MAAM,+DAAA;UACd;AAEA,cAAII;AACJ,cAAIxB,KAAKwB,cAAc;AACrBA,2BAAexB,KAAKyB,sBAAsBzB,KAAKwB,eAAe1C,OAAO4C,OAAO,CAAC,GAAG1B,KAAK2B,QAAQ3B,KAAKwB,YAAY;UAChH;AACA3B,mBAASjE,UAAU;YAAEsF;YAAQ,GAAGlB,KAAKpE;YAAW+F,QAAQH;UAAa,CAAA;QACvE;AACAxB,eAAOlB,OAAO4C,OAAO,CAAC,GAAGV,gBAAgBhB,IAAAA;AACzCA,aAAK5B,cAAcU,OAAO4C,OAAO,CAAC,GAAGV,eAAe5C,aAAa4B,KAAK5B,WAAW;AACjF4B,aAAK3B,aAAaS,OAAO4C,OAAO,CAAC,GAAGV,eAAe3C,YAAY2B,KAAK3B,UAAU;AAE9E,YAAI2B,KAAK4B,aAAa;AACpB,gBAAM,IAAIR,MAAM,gHAAA;QAClB;AAEA,cAAM,EAAES,SAASC,QAAO,IAAK9B;AAC7B,YAAI6B,YAAY,MAAO7B,MAAKjE,QAAQ;AACpC,YAAI,CAAC+F,QAAS9B,MAAK8B,UAAUjG;AAC7B,YAAI,CAACgE,QAAQ;AACX,cAAI,CAACD,gBAAgBmC,QAAQC,MAAM,GAAG;AAGpCnC,qBAASE,mBAAmB;cAAEkC,IAAIF,QAAQC,OAAOC,MAAM;YAAE,CAAA;UAC3D,OAAO;AACLpC,qBAASkC,QAAQC;UACnB;QACF;AACA,eAAO;UAAEhC;UAAMH;QAAO;MACxB,GAhDO;IAiDT;AAlDSkB;AAoDT,aAASvD,UAAWK,KAAKqE,iBAAe;AACtC,UAAI;AACF,eAAO3E,KAAKC,UAAUK,GAAAA;MACxB,SAASsE,GAAG;AACV,YAAI;AACF,gBAAM3E,aAAY0E,mBAAmB,KAAK/G,gBAAAA;AAC1C,iBAAOqC,WAAUK,GAAAA;QACnB,SAASsE,IAAG;AACV,iBAAO;QACT;MACF;IACF;AAXS3E;AAaT,aAAS4E,gBAAiBrG,OAAO0D,UAAUf,KAAG;AAC5C,aAAO;QACL3C;QACA0D;QACAf;MACF;IACF;AANS0D;AAgBT,aAASC,4BAA6BC,aAAW;AAC/C,YAAML,KAAK9C,OAAOmD,WAAAA;AAClB,UAAI,OAAOA,gBAAgB,YAAYnD,OAAOC,SAAS6C,EAAAA,GAAK;AAC1D,eAAOA;MACT;AAEA,UAAIK,gBAAgBvF,QAAW;AAE7B,eAAO;MACT;AACA,aAAOuF;IACT;AAXSD;AAaTjI,IAAAA,QAAOD,UAAU;MACf0B;MACAkE;MACAR;MACA3B;MACA9B;MACAiF;MACAvD;MACA4E;MACAC;IACF;;;;;ACrYA;uCAAAE,UAAAC,SAAA;;AAKA,QAAMC,iBAAiB;MACrBC,OAAO;MACPC,OAAO;MACPC,MAAM;MACNC,MAAM;MACNC,OAAO;MACPC,OAAO;IACT;AAOA,QAAMC,gBAAgB;MACpBC,KAAK;MACLC,MAAM;IACR;AAEAV,IAAAA,QAAOD,UAAU;MACfE;MACAO;IACF;;;;;AC3BA;oCAAAG,UAAAC,SAAA;;AAEA,QAAM,EACJC,YACAC,aACAC,wBACAC,WACAC,eACAC,UACAC,aAAY,IACVC;AACJ,QAAM,EAAEC,MAAMC,OAAM,IAAKF;AACzB,QAAM,EAAEG,gBAAgBC,cAAa,IAAKJ;AAE1C,QAAMK,eAAe;MACnBC,OAAO,wBAACC,SAAAA;AACN,cAAMC,WAAWN,OAAOC,eAAeG,OAAOC,IAAAA;AAC9C,eAAO,YAAaE,MAAI;AACtB,gBAAMC,SAAS,KAAKd,SAAAA;AACpBY,mBAASG,KAAK,MAAI,GAAKF,IAAAA;AACvB,cAAI,OAAOC,OAAOE,cAAc,YAAY;AAC1C,gBAAI;AACFF,qBAAOE,UAAS;YAClB,SAASC,GAAG;YAEZ;UACF;QACF;MACF,GAbO;MAcPC,OAAO,wBAACP,SAASL,OAAOC,eAAeW,OAAOP,IAAAA,GAAvC;MACPQ,MAAM,wBAACR,SAASL,OAAOC,eAAeY,MAAMR,IAAAA,GAAtC;MACNS,MAAM,wBAACT,SAASL,OAAOC,eAAea,MAAMT,IAAAA,GAAtC;MACNU,OAAO,wBAACV,SAASL,OAAOC,eAAec,OAAOV,IAAAA,GAAvC;MACPW,OAAO,wBAACX,SAASL,OAAOC,eAAee,OAAOX,IAAAA,GAAvC;IACT;AAEA,QAAMY,OAAOC,OAAOC,KAAKlB,cAAAA,EAAgBmB,OAAO,CAACC,GAAGC,MAAAA;AAClDD,QAAEpB,eAAeqB,CAAAA,CAAE,IAAIA;AACvB,aAAOD;IACT,GAAG,CAAC,CAAA;AAEJ,QAAME,iBAAiBL,OAAOC,KAAKF,IAAAA,EAAMG,OAAO,CAACC,GAAGC,MAAAA;AAClDD,QAAEC,CAAAA,IAAK,cAAcE,OAAOF,CAAAA;AAC5B,aAAOD;IACT,GAAG,CAAC,CAAA;AAEJ,aAASI,WAAYC,UAAQ;AAC3B,YAAMC,YAAYD,SAAS/B,aAAAA,EAAeiC;AAC1C,YAAM,EAAEC,OAAM,IAAKH,SAASI;AAC5B,YAAMC,QAAQ,CAAC;AACf,iBAAWC,SAASH,QAAQ;AAC1B,cAAMD,QAAQD,UAAUE,OAAOG,KAAAA,GAAQR,OAAOQ,KAAAA,CAAAA;AAC9CD,cAAMC,KAAAA,IAASC,KAAKC,UAAUN,KAAAA,EAAOO,MAAM,GAAG,EAAC;MACjD;AACAT,eAASnC,UAAAA,IAAcwC;AACvB,aAAOL;IACT;AAVSD;AAYT,aAASW,gBAAiBR,OAAOS,qBAAmB;AAClD,UAAIA,qBAAqB;AACvB,eAAO;MACT;AAEA,cAAQT,OAAAA;QACN,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;AACH,iBAAO;QACT;AACE,iBAAO;MACX;IACF;AAhBSQ;AAkBT,aAASE,SAAUV,OAAK;AACtB,YAAM,EAAEC,QAAQU,OAAM,IAAK,KAAKT;AAChC,UAAI,OAAOF,UAAU,UAAU;AAC7B,YAAIC,OAAOD,KAAAA,MAAWY,OAAW,OAAMC,MAAM,wBAAwBb,KAAAA;AACrEA,gBAAQC,OAAOD,KAAAA;MACjB;AACA,UAAIW,OAAOX,KAAAA,MAAWY,OAAW,OAAMC,MAAM,mBAAmBb,KAAAA;AAChE,YAAMc,cAAc,KAAKlD,WAAAA;AACzB,YAAMmD,WAAW,KAAKnD,WAAAA,IAAe+C,OAAOX,KAAAA;AAC5C,YAAMgB,yBAAyB,KAAKnD,sBAAAA;AACpC,YAAMoD,kBAAkB,KAAKhD,YAAAA;AAC7B,YAAMQ,OAAO,KAAKT,QAAAA,EAAUkD;AAE5B,iBAAWC,OAAOR,QAAQ;AACxB,YAAIM,gBAAgBN,OAAOQ,GAAAA,GAAMJ,QAAAA,MAAc,OAAO;AACpD,eAAKI,GAAAA,IAAOhD;AACZ;QACF;AACA,aAAKgD,GAAAA,IAAOX,gBAAgBW,KAAKH,sBAAAA,IAA0BzC,aAAa4C,GAAAA,EAAK1C,IAAAA,IAAQL,OAAOuC,OAAOQ,GAAAA,GAAM1C,IAAAA;MAC3G;AAEA,WAAK2C,KACH,gBACApB,OACAe,UACAd,OAAOa,WAAAA,GACPA,aACA,IAAI;IAER;AA7BSJ;AA+BT,aAASW,SAAUrB,OAAK;AACtB,YAAM,EAAEE,QAAQa,SAAQ,IAAK;AAE7B,aAAQb,UAAUA,OAAOD,SAAUC,OAAOD,OAAOc,QAAAA,IAAY;IAC/D;AAJSM;AAMT,aAASC,eAAgBC,UAAQ;AAC/B,YAAM,EAAEZ,OAAM,IAAK,KAAKT;AACxB,YAAMsB,cAAcb,OAAOY,QAAAA;AAC3B,aAAOC,gBAAgBZ,UAAa,KAAK3C,YAAAA,EAAcuD,aAAa,KAAK5D,WAAAA,CAAY;IACvF;AAJS0D;AAeT,aAASG,aAAcC,WAAWC,SAASC,UAAQ;AACjD,UAAIF,cAAcpD,cAAcuD,MAAM;AACpC,eAAOF,WAAWC;MACpB;AAEA,aAAOD,WAAWC;IACpB;AANSH;AAeT,aAASK,mBAAoBb,iBAAe;AAC1C,UAAI,OAAOA,oBAAoB,UAAU;AACvC,eAAOQ,aAAaM,KAAK,MAAMd,eAAAA;MACjC;AAEA,aAAOA;IACT;AANSa;AAQT,aAASE,SAAUC,eAAe,MAAMxB,sBAAsB,OAAK;AACjE,YAAMyB,aAAaD,eAEf3C,OAAOC,KAAK0C,YAAAA,EAAczC,OAAO,CAACC,GAAGC,MAAAA;AACnCD,UAAEwC,aAAavC,CAAAA,CAAE,IAAIA;AACrB,eAAOD;MACT,GAAG,CAAC,CAAA,IACJ;AAGJ,YAAMQ,SAASX,OAAO6C,OACpB7C,OAAO8C,OAAO9C,OAAO+C,WAAW;QAAEC,UAAU;UAAEC,OAAO;QAAS;MAAE,CAAA,GAChE9B,sBAAsB,OAAOpB,MAC7B6C,UAAAA;AAEF,YAAMvB,SAASrB,OAAO6C,OACpB7C,OAAO8C,OAAO9C,OAAO+C,WAAW;QAAEG,QAAQ;UAAED,OAAOD;QAAS;MAAE,CAAA,GAC9D7B,sBAAsB,OAAOpC,gBAC7B4D,YAAAA;AAEF,aAAO;QAAEhC;QAAQU;MAAO;IAC1B;AArBSqB;AAuBT,aAASS,wBAAyBC,cAAcT,cAAcxB,qBAAmB;AAC/E,UAAI,OAAOiC,iBAAiB,UAAU;AACpC,cAAM/B,SAAS,CAAA,EAAGgC,OAChBrD,OAAOC,KAAK0C,gBAAgB,CAAC,CAAA,EAAGW,IAAIzB,CAAAA,QAAOc,aAAad,GAAAA,CAAI,GAC5DV,sBAAsB,CAAA,IAAKnB,OAAOC,KAAKF,IAAAA,EAAMuD,IAAI5C,CAAAA,UAAS,CAACA,KAAAA,GAC3DsC,QAAAA;AAEF,YAAI,CAAC3B,OAAOkC,SAASH,YAAAA,GAAe;AAClC,gBAAM7B,MAAM,iBAAiB6B,YAAAA,oCAAgD;QAC/E;AACA;MACF;AAEA,YAAMzC,SAASX,OAAO6C,OACpB7C,OAAO8C,OAAO9C,OAAO+C,WAAW;QAAEG,QAAQ;UAAED,OAAOD;QAAS;MAAE,CAAA,GAC9D7B,sBAAsB,OAAOpC,gBAC7B4D,YAAAA;AAEF,UAAI,EAAES,gBAAgBzC,SAAS;AAC7B,cAAMY,MAAM,iBAAiB6B,YAAAA,oCAAgD;MAC/E;IACF;AArBSD;AAuBT,aAASK,wBAAyB5C,QAAQ+B,cAAY;AACpD,YAAM,EAAEhC,QAAQU,OAAM,IAAKT;AAC3B,iBAAWR,KAAKuC,cAAc;AAC5B,YAAIvC,KAAKiB,QAAQ;AACf,gBAAME,MAAM,6BAAA;QACd;AACA,YAAIoB,aAAavC,CAAAA,KAAMO,QAAQ;AAC7B,gBAAMY,MAAM,yDAAA;QACd;MACF;IACF;AAVSiC;AAmBT,aAASC,sBAAuB9B,iBAAe;AAC7C,UAAI,OAAOA,oBAAoB,YAAY;AACzC;MACF;AAEA,UAAI,OAAOA,oBAAoB,YAAY3B,OAAOqB,OAAOrC,aAAAA,EAAeuE,SAAS5B,eAAAA,GAAkB;AACjG;MACF;AAEA,YAAM,IAAIJ,MAAM,qEAAA;IAClB;AAVSkC;AAYTrF,IAAAA,QAAOD,UAAU;MACfkC;MACAE;MACAtB;MACA8C;MACAX;MACAY;MACAU;MACAc;MACAL;MACAX;MACAiB;IACF;;;;;AChPA;kCAAAC,UAAAC,SAAA;;AAEAA,IAAAA,QAAOD,UAAU;MAAEE,SAAS;IAAQ;;;;;ACFpC;mCAAAC,UAAAC,SAAA;;AAIA,QAAM,EAAEC,aAAY,IAAKC,QAAQ,QAAA;AACjC,QAAM,EACJC,YACAC,aACAC,aACAC,aACAC,cACAC,oBACAC,UACAC,WACAC,UACAC,uBACAC,SACAC,mBACAC,WACAC,gBACAC,eACAC,aACAC,eACAC,wBACAC,mBACAC,cACAC,cACAC,eACAC,iBACAC,cACAC,SAAQ,IACNzB;AACJ,QAAM,EACJ0B,UACAC,UACAC,gBACAC,UACAC,gBACAC,YACAC,wBAAuB,IACrBhC;AACJ,QAAM,EACJiC,aACAC,QACAC,iBACAC,UAAS,IACPpC;AACJ,QAAM,EACJqC,QAAO,IACLrC;AACJ,QAAMsC,YAAYtC;AAlDlB,QAAAuC;AAsDA,QAAMC,eAAcD,MAAA,MAAME;IAAM,GAANA,OAAAA,KAAAA,SAANF;AACpB,QAAMG,YAAY;MAChBF;MACAG;MACAC;MACAC;MACAC;MACAlB;MACAS;MACA,IAAIU,QAAS;AAAE,eAAO,KAAK3C,WAAAA,EAAY;MAAG;MAC1C,IAAI2C,MAAOC,KAAK;AAAE,aAAK7C,WAAAA,EAAa6C,GAAAA;MAAK;MACzC,IAAIC,WAAY;AAAE,eAAO,KAAK/C,WAAAA;MAAa;MAC3C,IAAI+C,SAAUC,GAAG;AAAE,cAAMC,MAAM,uBAAA;MAAyB;MACxD,IAAIC,YAAa;AAAE,eAAO,KAAK5B,YAAAA;MAAc;MAC7C,CAACvB,UAAAA,GAAa6B;MACd,CAACrB,QAAAA,GAAW4C;MACZ,CAAC7C,SAAAA,GAAY0B;MACb,CAAC9B,WAAAA,GAAcsB;MACf,CAACvB,WAAAA,GAAcwB;IACjB;AAEA2B,WAAOC,eAAeb,WAAW3C,aAAa2C,SAAS;AAGvD5C,IAAAA,QAAOD,UAAU,WAAA;AACf,aAAOyD,OAAOE,OAAOd,SAAAA;IACvB;AAEA,QAAMe,0BAA0Bb,wBAAAA,cAAYA,WAAZA;AAChC,aAASD,MAAOC,WAAUc,SAAO;AAC/B,UAAI,CAACd,WAAU;AACb,cAAMO,MAAM,iCAAA;MACd;AACAO,gBAAUA,WAAW,CAAC;AACtB,YAAMC,cAAc,KAAK7C,cAAAA;AACzB,YAAM8C,aAAa,KAAK7C,aAAAA;AACxB,YAAM8C,WAAWP,OAAOE,OAAO,IAAI;AAEnC,UAAIE,QAAQI,eAAe,aAAA,MAAmB,MAAM;AAClDD,iBAAS/C,cAAAA,IAAkBwC,uBAAOE,OAAO,IAAA;AAEzC,mBAAWO,KAAKJ,aAAa;AAC3BE,mBAAS/C,cAAAA,EAAgBiD,CAAAA,IAAKJ,YAAYI,CAAAA;QAC5C;AACA,cAAMC,gBAAgBV,OAAOW,sBAAsBN,WAAAA;AAEnD,iBAASO,IAAI,GAAGA,IAAIF,cAAcG,QAAQD,KAAK;AAC7C,gBAAME,KAAKJ,cAAcE,CAAAA;AACzBL,mBAAS/C,cAAAA,EAAgBsD,EAAAA,IAAMT,YAAYS,EAAAA;QAC7C;AAEA,mBAAWC,MAAMX,QAAQC,aAAa;AACpCE,mBAAS/C,cAAAA,EAAgBuD,EAAAA,IAAMX,QAAQC,YAAYU,EAAAA;QACrD;AACA,cAAMC,kBAAkBhB,OAAOW,sBAAsBP,QAAQC,WAAW;AACxE,iBAASY,KAAK,GAAGA,KAAKD,gBAAgBH,QAAQI,MAAM;AAClD,gBAAMC,MAAMF,gBAAgBC,EAAAA;AAC5BV,mBAAS/C,cAAAA,EAAgB0D,GAAAA,IAAOd,QAAQC,YAAYa,GAAAA;QACtD;MACF,MAAOX,UAAS/C,cAAAA,IAAkB6C;AAClC,UAAID,QAAQI,eAAe,YAAA,GAAe;AACxC,cAAM,EAAEf,OAAOH,UAAU6B,WAAWC,IAAG,IAAKhB,QAAQE;AACpDC,iBAAS9C,aAAAA,IAAiBoB,gBACxBY,SAASa,WAAWb,OACpB0B,aAAahB,yBACbiB,OAAOd,WAAWc,GAAG;MAEzB,OAAO;AACLb,iBAAS9C,aAAAA,IAAiBoB,gBACxByB,WAAWb,OACXU,yBACAG,WAAWc,GAAG;MAElB;AACA,UAAIhB,QAAQI,eAAe,cAAA,MAAoB,MAAM;AACnD9B,gCAAwB,KAAK2C,QAAQjB,QAAQkB,YAAY;AACzDf,iBAASc,SAAS9C,SAAS6B,QAAQkB,cAAcf,SAAS3C,sBAAAA,CAAuB;AACjFa,mBAAW8B,QAAAA;MACb;AAGA,UAAK,OAAOH,QAAQmB,WAAW,YAAYnB,QAAQmB,WAAW,QAASC,MAAMC,QAAQrB,QAAQmB,MAAM,GAAG;AACpGhB,iBAASgB,SAASnB,QAAQmB;AAC1B,cAAMG,eAAe1C,UAAUuB,SAASgB,QAAQzC,SAAAA;AAChD,cAAM6C,aAAa;UAAE7C,WAAW4C,aAAa5D,YAAAA;QAAc;AAC3DyC,iBAASxC,YAAAA,IAAgBe;AACzByB,iBAAStC,eAAAA,IAAmByD;AAC5BnB,iBAASvC,aAAAA,IAAiB2D;MAC5B;AAEA,UAAI,OAAOvB,QAAQN,cAAc,UAAU;AACzCS,iBAASrC,YAAAA,KAAiB,KAAKA,YAAAA,KAAiB,MAAMkC,QAAQN;MAChE;AAEAS,eAASxD,YAAAA,IAAgB4B,YAAY4B,UAAUjB,SAAAA;AAC/C,YAAMsC,aAAaxB,QAAQX,SAAS,KAAKA;AACzCc,eAAS1D,WAAAA,EAAa+E,UAAAA;AACtB,WAAKC,QAAQtB,QAAAA;AACb,aAAOA;IACT;AAtESlB;AAwET,aAASC,WAAAA;AACP,YAAM6B,YAAY,KAAKpE,YAAAA;AACvB,YAAM+E,gBAAgB,IAAIX,UAAUY,OAAO,CAAA,CAAA;AAC3C,YAAMC,mBAAmBC,KAAKC,MAAMJ,aAAAA;AACpC,aAAOE,iBAAiBG;AACxB,aAAOH,iBAAiBI;AACxB,aAAOJ;IACT;AAPS1C;AAST,aAASC,YAAa8C,aAAW;AAC/B,YAAMlB,YAAYxC,YAAY,MAAM0D,WAAAA;AACpC,WAAKtF,YAAAA,IAAgBoE;AACrB,aAAO,KAAKnE,kBAAAA;IACd;AAJSuC;AAcT,aAAS+C,0BAA2BC,aAAaC,aAAW;AAC1D,aAAOxC,OAAOyC,OAAOD,aAAaD,WAAAA;IACpC;AAFSD;AAIT,aAASvC,MAAO2C,MAAMC,KAAKC,KAAG;AAC5B,YAAMC,IAAI,KAAKxF,OAAAA,EAAQ;AACvB,YAAMyF,QAAQ,KAAK7F,QAAAA;AACnB,YAAM8F,WAAW,KAAKrF,WAAAA;AACtB,YAAMsF,aAAa,KAAKrF,aAAAA;AACxB,YAAMsF,qBAAqB,KAAK7F,qBAAAA,KAA0BkF;AAC1D,UAAIY;AACJ,YAAMC,kBAAkB,KAAKhF,QAAAA,EAAUiF;AAEvC,UAAIV,SAASW,UAAaX,SAAS,MAAM;AACvCQ,cAAM,CAAC;MACT,WAAWR,gBAAgB7C,OAAO;AAChCqD,cAAM;UAAE,CAACH,QAAAA,GAAWL;QAAK;AACzB,YAAIC,QAAQU,QAAW;AACrBV,gBAAMD,KAAKY;QACb;MACF,OAAO;AACLJ,cAAMR;AACN,YAAIC,QAAQU,UAAaX,KAAKM,UAAAA,MAAgBK,UAAaX,KAAKK,QAAAA,GAAW;AACzEJ,gBAAMD,KAAKK,QAAAA,EAAUO;QACvB;MACF;AAEA,UAAIR,OAAO;AACTI,cAAMD,mBAAmBC,KAAKJ,MAAMI,KAAKN,KAAK,IAAI,CAAA;MACpD;AAEA,YAAMW,IAAI,KAAKrG,SAAAA,EAAWgG,KAAKP,KAAKC,KAAKC,CAAAA;AAEzC,YAAMW,SAAS,KAAKjG,SAAAA;AACpB,UAAIiG,OAAO3F,iBAAAA,MAAuB,MAAM;AACtC2F,eAAOC,YAAYb;AACnBY,eAAOE,UAAUR;AACjBM,eAAOG,UAAUhB;AACjBa,eAAOI,WAAWf,EAAEgB,MAAM,KAAKvG,iBAAAA,CAAkB;AACjDkG,eAAOM,aAAa;MACtB;AACAN,aAAOzD,MAAMoD,kBAAkBA,gBAAgBI,CAAAA,IAAKA,CAAAA;IACtD;AAtCSxD;AAwCT,aAASgE,OAAAA;IAAS;AAATA;AAET,aAASvE,MAAOwE,IAAE;AAChB,UAAIA,MAAM,QAAQ,OAAOA,OAAO,YAAY;AAC1C,cAAMnE,MAAM,6BAAA;MACd;AAEA,YAAM2D,SAAS,KAAKjG,SAAAA;AAEpB,UAAI,OAAOiG,OAAOhE,UAAU,YAAY;AACtCgE,eAAOhE,MAAMwE,MAAMD,IAAAA;MACrB,WAAWC,GAAIA,IAAAA;IACjB;AAVSxE;;;;;AChOT;gDAAAyE,UAAAC,SAAA;;AAEA,QAAM,EAAEC,eAAc,IAAKC,OAAOC;AAElC,QAAMC,YAAYC,UAAAA;AAGlBD,cAAUC,YAAYA;AAEtBD,cAAUA,YAAYA;AAGtBA,cAAUE,UAAUF;AAGpBL,IAAAA,SAAQK,YAAYA;AAEpBL,IAAAA,SAAQM,YAAYA;AAEpBL,IAAAA,QAAOD,UAAUK;AAGjB,QAAMG,2BAA2B;AAIjC,aAASC,UAAWC,KAAG;AAErB,UAAIA,IAAIC,SAAS,OAAQ,CAACH,yBAAyBI,KAAKF,GAAAA,GAAM;AAC5D,eAAO,IAAIA,GAAAA;MACb;AACA,aAAOG,KAAKR,UAAUK,GAAAA;IACxB;AANSD;AAQT,aAASK,KAAMC,OAAOC,YAAU;AAG9B,UAAID,MAAMJ,SAAS,OAAOK,YAAY;AACpC,eAAOD,MAAMD,KAAKE,UAAAA;MACpB;AACA,eAASC,IAAI,GAAGA,IAAIF,MAAMJ,QAAQM,KAAK;AACrC,cAAMC,eAAeH,MAAME,CAAAA;AAC3B,YAAIE,WAAWF;AACf,eAAOE,aAAa,KAAKJ,MAAMI,WAAW,CAAA,IAAKD,cAAc;AAC3DH,gBAAMI,QAAAA,IAAYJ,MAAMI,WAAW,CAAA;AACnCA;QACF;AACAJ,cAAMI,QAAAA,IAAYD;MACpB;AACA,aAAOH;IACT;AAhBSD;AAkBT,QAAMM,0CACJjB,OAAOkB,yBACLlB,OAAOmB,eACLnB,OAAOmB,eACL,IAAIC,UAAAA,CAAAA,CAAAA,GAGRC,OAAOC,WAAW,EAClBC;AAEJ,aAASC,wBAAyBC,OAAK;AACrC,aAAOR,wCAAwCS,KAAKD,KAAAA,MAAWE,UAAaF,MAAMjB,WAAW;IAC/F;AAFSgB;AAIT,aAASI,oBAAqBhB,OAAOiB,WAAWC,gBAAc;AAC5D,UAAIlB,MAAMJ,SAASsB,gBAAgB;AACjCA,yBAAiBlB,MAAMJ;MACzB;AACA,YAAMuB,aAAaF,cAAc,MAAM,KAAK;AAC5C,UAAIG,MAAM,OAAOD,UAAAA,GAAanB,MAAM,CAAA,CAAE;AACtC,eAASE,IAAI,GAAGA,IAAIgB,gBAAgBhB,KAAK;AACvCkB,eAAO,GAAGH,SAAAA,IAAaf,CAAAA,KAAMiB,UAAAA,GAAanB,MAAME,CAAAA,CAAE;MACpD;AACA,aAAOkB;IACT;AAVSJ;AAYT,aAASK,uBAAwBC,SAAO;AACtC,UAAInC,eAAe2B,KAAKQ,SAAS,eAAA,GAAkB;AACjD,cAAMC,gBAAgBD,QAAQC;AAC9B,YAAI,OAAOA,kBAAkB,UAAU;AACrC,iBAAO,IAAIA,aAAAA;QACb;AACA,YAAIA,iBAAiB,MAAM;AACzB,iBAAOA;QACT;AACA,YAAIA,kBAAkBC,SAASD,kBAAkBE,WAAW;AAC1D,iBAAO;YACLC,WAAAA;AACE,oBAAM,IAAID,UAAU,uCAAA;YACtB;UACF;QACF;AACA,cAAM,IAAIA,UAAU,oFAAA;MACtB;AACA,aAAO;IACT;AAnBSJ;AAqBT,aAASM,uBAAwBL,SAAO;AACtC,UAAIT;AACJ,UAAI1B,eAAe2B,KAAKQ,SAAS,eAAA,GAAkB;AACjDT,gBAAQS,QAAQM;AAChB,YAAI,OAAOf,UAAU,aAAa,OAAOA,UAAU,YAAY;AAC7D,gBAAM,IAAIY,UAAU,6EAAA;QACtB;MACF;AACA,aAAOZ,UAAUE,SAAY,OAAOF;IACtC;AATSc;AAWT,aAASE,iBAAkBP,SAASQ,KAAG;AACrC,UAAIjB;AACJ,UAAI1B,eAAe2B,KAAKQ,SAASQ,GAAAA,GAAM;AACrCjB,gBAAQS,QAAQQ,GAAAA;AAChB,YAAI,OAAOjB,UAAU,WAAW;AAC9B,gBAAM,IAAIY,UAAU,QAAQK,GAAAA,oCAAuC;QACrE;MACF;AACA,aAAOjB,UAAUE,SAAY,OAAOF;IACtC;AATSgB;AAWT,aAASE,yBAA0BT,SAASQ,KAAG;AAC7C,UAAIjB;AACJ,UAAI1B,eAAe2B,KAAKQ,SAASQ,GAAAA,GAAM;AACrCjB,gBAAQS,QAAQQ,GAAAA;AAChB,YAAI,OAAOjB,UAAU,UAAU;AAC7B,gBAAM,IAAIY,UAAU,QAAQK,GAAAA,mCAAsC;QACpE;AACA,YAAI,CAACE,OAAOC,UAAUpB,KAAAA,GAAQ;AAC5B,gBAAM,IAAIY,UAAU,QAAQK,GAAAA,+BAAkC;QAChE;AACA,YAAIjB,QAAQ,GAAG;AACb,gBAAM,IAAIqB,WAAW,QAAQJ,GAAAA,yBAA4B;QAC3D;MACF;AACA,aAAOjB,UAAUE,SAAYoB,WAAWtB;IAC1C;AAfSkB;AAiBT,aAASK,aAAcC,QAAM;AAC3B,UAAIA,WAAW,GAAG;AAChB,eAAO;MACT;AACA,aAAO,GAAGA,MAAAA;IACZ;AALSD;AAOT,aAASE,qBAAsBC,eAAa;AAC1C,YAAMC,cAAc,oBAAIC,IAAAA;AACxB,iBAAW5B,SAAS0B,eAAe;AACjC,YAAI,OAAO1B,UAAU,YAAY,OAAOA,UAAU,UAAU;AAC1D2B,sBAAYE,IAAIC,OAAO9B,KAAAA,CAAAA;QACzB;MACF;AACA,aAAO2B;IACT;AARSF;AAUT,aAASM,gBAAiBtB,SAAO;AAC/B,UAAInC,eAAe2B,KAAKQ,SAAS,QAAA,GAAW;AAC1C,cAAMT,QAAQS,QAAQuB;AACtB,YAAI,OAAOhC,UAAU,WAAW;AAC9B,gBAAM,IAAIY,UAAU,+CAAA;QACtB;AACA,YAAIZ,OAAO;AACT,iBAAO,CAACA,WAAAA;AACN,gBAAIiC,UAAU,uDAAuD,OAAOjC,MAAAA;AAC5E,gBAAI,OAAOA,WAAU,WAAYiC,YAAW,KAAKjC,OAAMa,SAAQ,CAAA;AAC/D,kBAAM,IAAIF,MAAMsB,OAAAA;UAClB;QACF;MACF;IACF;AAdSF;AAgBT,aAASrD,UAAW+B,SAAO;AACzBA,gBAAU;QAAE,GAAGA;MAAQ;AACvB,YAAMyB,OAAOH,gBAAgBtB,OAAAA;AAC7B,UAAIyB,MAAM;AACR,YAAIzB,QAAQ0B,WAAWjC,QAAW;AAChCO,kBAAQ0B,SAAS;QACnB;AACA,YAAI,EAAE,mBAAmB1B,UAAU;AACjCA,kBAAQC,gBAAgBC;QAC1B;MACF;AACA,YAAMD,gBAAgBF,uBAAuBC,OAAAA;AAC7C,YAAM0B,SAASnB,iBAAiBP,SAAS,QAAA;AACzC,YAAMM,gBAAgBD,uBAAuBL,OAAAA;AAC7C,YAAMrB,aAAa,OAAO2B,kBAAkB,aAAaA,gBAAgBb;AACzE,YAAMkC,eAAelB,yBAAyBT,SAAS,cAAA;AACvD,YAAMJ,iBAAiBa,yBAAyBT,SAAS,gBAAA;AAEzD,eAAS4B,oBAAqBpB,KAAKqB,QAAQC,OAAOC,UAAUC,QAAQC,aAAW;AAC7E,YAAI1C,QAAQsC,OAAOrB,GAAAA;AAEnB,YAAI,OAAOjB,UAAU,YAAYA,UAAU,QAAQ,OAAOA,MAAM2C,WAAW,YAAY;AACrF3C,kBAAQA,MAAM2C,OAAO1B,GAAAA;QACvB;AACAjB,gBAAQwC,SAASvC,KAAKqC,QAAQrB,KAAKjB,KAAAA;AAEnC,gBAAQ,OAAOA,OAAAA;UACb,KAAK;AACH,mBAAOnB,UAAUmB,KAAAA;UACnB,KAAK,UAAU;AACb,gBAAIA,UAAU,MAAM;AAClB,qBAAO;YACT;AACA,gBAAIuC,MAAMK,QAAQ5C,KAAAA,MAAW,IAAI;AAC/B,qBAAOU;YACT;AAEA,gBAAIH,MAAM;AACV,gBAAIsC,OAAO;AACX,kBAAMC,sBAAsBJ;AAE5B,gBAAIK,MAAMC,QAAQhD,KAAAA,GAAQ;AACxB,kBAAIA,MAAMjB,WAAW,GAAG;AACtB,uBAAO;cACT;AACA,kBAAIqD,eAAeG,MAAMxD,SAAS,GAAG;AACnC,uBAAO;cACT;AACAwD,oBAAMU,KAAKjD,KAAAA;AACX,kBAAIyC,WAAW,IAAI;AACjBC,+BAAeD;AACflC,uBAAO;EAAKmC,WAAAA;AACZG,uBAAO;EAAMH,WAAAA;cACf;AACA,oBAAMQ,2BAA2BC,KAAKC,IAAIpD,MAAMjB,QAAQsB,cAAAA;AACxD,kBAAIhB,IAAI;AACR,qBAAOA,IAAI6D,2BAA2B,GAAG7D,KAAK;AAC5C,sBAAMgE,OAAMhB,oBAAoBP,OAAOzC,CAAAA,GAAIW,OAAOuC,OAAOC,UAAUC,QAAQC,WAAAA;AAC3EnC,uBAAO8C,SAAQnD,SAAYmD,OAAM;AACjC9C,uBAAOsC;cACT;AACA,oBAAMQ,MAAMhB,oBAAoBP,OAAOzC,CAAAA,GAAIW,OAAOuC,OAAOC,UAAUC,QAAQC,WAAAA;AAC3EnC,qBAAO8C,QAAQnD,SAAYmD,MAAM;AACjC,kBAAIrD,MAAMjB,SAAS,IAAIsB,gBAAgB;AACrC,sBAAMiD,cAActD,MAAMjB,SAASsB,iBAAiB;AACpDE,uBAAO,GAAGsC,IAAAA,QAAYtB,aAAa+B,WAAAA,CAAAA;cACrC;AACA,kBAAIb,WAAW,IAAI;AACjBlC,uBAAO;EAAKuC,mBAAAA;cACd;AACAP,oBAAMgB,IAAG;AACT,qBAAO,IAAIhD,GAAAA;YACb;AAEA,gBAAIiD,OAAOjF,OAAOiF,KAAKxD,KAAAA;AACvB,kBAAMyD,YAAYD,KAAKzE;AACvB,gBAAI0E,cAAc,GAAG;AACnB,qBAAO;YACT;AACA,gBAAIrB,eAAeG,MAAMxD,SAAS,GAAG;AACnC,qBAAO;YACT;AACA,gBAAIuB,aAAa;AACjB,gBAAIF,YAAY;AAChB,gBAAIqC,WAAW,IAAI;AACjBC,6BAAeD;AACfI,qBAAO;EAAMH,WAAAA;AACbpC,2BAAa;YACf;AACA,kBAAMoD,+BAA+BP,KAAKC,IAAIK,WAAWpD,cAAAA;AACzD,gBAAIU,iBAAiB,CAAChB,wBAAwBC,KAAAA,GAAQ;AACpDwD,qBAAOtE,KAAKsE,MAAMpE,UAAAA;YACpB;AACAmD,kBAAMU,KAAKjD,KAAAA;AACX,qBAASX,IAAI,GAAGA,IAAIqE,8BAA8BrE,KAAK;AACrD,oBAAM4B,OAAMuC,KAAKnE,CAAAA;AACjB,oBAAMgE,MAAMhB,oBAAoBpB,MAAKjB,OAAOuC,OAAOC,UAAUC,QAAQC,WAAAA;AACrE,kBAAIW,QAAQnD,QAAW;AACrBK,uBAAO,GAAGH,SAAAA,GAAYvB,UAAUoC,IAAAA,CAAAA,IAAQX,UAAAA,GAAa+C,GAAAA;AACrDjD,4BAAYyC;cACd;YACF;AACA,gBAAIY,YAAYpD,gBAAgB;AAC9B,oBAAMiD,cAAcG,YAAYpD;AAChCE,qBAAO,GAAGH,SAAAA,SAAkBE,UAAAA,IAAciB,aAAa+B,WAAAA,CAAAA;AACvDlD,0BAAYyC;YACd;AACA,gBAAIJ,WAAW,MAAMrC,UAAUrB,SAAS,GAAG;AACzCwB,oBAAM;EAAKmC,WAAAA,GAAcnC,GAAAA;EAAQuC,mBAAAA;YACnC;AACAP,kBAAMgB,IAAG;AACT,mBAAO,IAAIhD,GAAAA;UACb;UACA,KAAK;AACH,mBAAOoD,SAAS3D,KAAAA,IAAS8B,OAAO9B,KAAAA,IAASkC,OAAOA,KAAKlC,KAAAA,IAAS;UAChE,KAAK;AACH,mBAAOA,UAAU,OAAO,SAAS;UACnC,KAAK;AACH,mBAAOE;UACT,KAAK;AACH,gBAAIiC,QAAQ;AACV,qBAAOL,OAAO9B,KAAAA;YAChB;;UAEF;AACE,mBAAOkC,OAAOA,KAAKlC,KAAAA,IAASE;QAChC;MACF;AA7GSmC;AA+GT,eAASuB,uBAAwB3C,KAAKjB,OAAOuC,OAAOC,UAAUC,QAAQC,aAAW;AAC/E,YAAI,OAAO1C,UAAU,YAAYA,UAAU,QAAQ,OAAOA,MAAM2C,WAAW,YAAY;AACrF3C,kBAAQA,MAAM2C,OAAO1B,GAAAA;QACvB;AAEA,gBAAQ,OAAOjB,OAAAA;UACb,KAAK;AACH,mBAAOnB,UAAUmB,KAAAA;UACnB,KAAK,UAAU;AACb,gBAAIA,UAAU,MAAM;AAClB,qBAAO;YACT;AACA,gBAAIuC,MAAMK,QAAQ5C,KAAAA,MAAW,IAAI;AAC/B,qBAAOU;YACT;AAEA,kBAAMoC,sBAAsBJ;AAC5B,gBAAInC,MAAM;AACV,gBAAIsC,OAAO;AAEX,gBAAIE,MAAMC,QAAQhD,KAAAA,GAAQ;AACxB,kBAAIA,MAAMjB,WAAW,GAAG;AACtB,uBAAO;cACT;AACA,kBAAIqD,eAAeG,MAAMxD,SAAS,GAAG;AACnC,uBAAO;cACT;AACAwD,oBAAMU,KAAKjD,KAAAA;AACX,kBAAIyC,WAAW,IAAI;AACjBC,+BAAeD;AACflC,uBAAO;EAAKmC,WAAAA;AACZG,uBAAO;EAAMH,WAAAA;cACf;AACA,oBAAMQ,2BAA2BC,KAAKC,IAAIpD,MAAMjB,QAAQsB,cAAAA;AACxD,kBAAIhB,IAAI;AACR,qBAAOA,IAAI6D,2BAA2B,GAAG7D,KAAK;AAC5C,sBAAMgE,OAAMO,uBAAuB9B,OAAOzC,CAAAA,GAAIW,MAAMX,CAAAA,GAAIkD,OAAOC,UAAUC,QAAQC,WAAAA;AACjFnC,uBAAO8C,SAAQnD,SAAYmD,OAAM;AACjC9C,uBAAOsC;cACT;AACA,oBAAMQ,MAAMO,uBAAuB9B,OAAOzC,CAAAA,GAAIW,MAAMX,CAAAA,GAAIkD,OAAOC,UAAUC,QAAQC,WAAAA;AACjFnC,qBAAO8C,QAAQnD,SAAYmD,MAAM;AACjC,kBAAIrD,MAAMjB,SAAS,IAAIsB,gBAAgB;AACrC,sBAAMiD,cAActD,MAAMjB,SAASsB,iBAAiB;AACpDE,uBAAO,GAAGsC,IAAAA,QAAYtB,aAAa+B,WAAAA,CAAAA;cACrC;AACA,kBAAIb,WAAW,IAAI;AACjBlC,uBAAO;EAAKuC,mBAAAA;cACd;AACAP,oBAAMgB,IAAG;AACT,qBAAO,IAAIhD,GAAAA;YACb;AACAgC,kBAAMU,KAAKjD,KAAAA;AACX,gBAAIM,aAAa;AACjB,gBAAImC,WAAW,IAAI;AACjBC,6BAAeD;AACfI,qBAAO;EAAMH,WAAAA;AACbpC,2BAAa;YACf;AACA,gBAAIF,YAAY;AAChB,uBAAWa,QAAOuB,UAAU;AAC1B,oBAAMa,MAAMO,uBAAuB3C,MAAKjB,MAAMiB,IAAAA,GAAMsB,OAAOC,UAAUC,QAAQC,WAAAA;AAC7E,kBAAIW,QAAQnD,QAAW;AACrBK,uBAAO,GAAGH,SAAAA,GAAYvB,UAAUoC,IAAAA,CAAAA,IAAQX,UAAAA,GAAa+C,GAAAA;AACrDjD,4BAAYyC;cACd;YACF;AACA,gBAAIJ,WAAW,MAAMrC,UAAUrB,SAAS,GAAG;AACzCwB,oBAAM;EAAKmC,WAAAA,GAAcnC,GAAAA;EAAQuC,mBAAAA;YACnC;AACAP,kBAAMgB,IAAG;AACT,mBAAO,IAAIhD,GAAAA;UACb;UACA,KAAK;AACH,mBAAOoD,SAAS3D,KAAAA,IAAS8B,OAAO9B,KAAAA,IAASkC,OAAOA,KAAKlC,KAAAA,IAAS;UAChE,KAAK;AACH,mBAAOA,UAAU,OAAO,SAAS;UACnC,KAAK;AACH,mBAAOE;UACT,KAAK;AACH,gBAAIiC,QAAQ;AACV,qBAAOL,OAAO9B,KAAAA;YAChB;;UAEF;AACE,mBAAOkC,OAAOA,KAAKlC,KAAAA,IAASE;QAChC;MACF;AAvFS0D;AAyFT,eAASC,gBAAiB5C,KAAKjB,OAAOuC,OAAOE,QAAQC,aAAW;AAC9D,gBAAQ,OAAO1C,OAAAA;UACb,KAAK;AACH,mBAAOnB,UAAUmB,KAAAA;UACnB,KAAK,UAAU;AACb,gBAAIA,UAAU,MAAM;AAClB,qBAAO;YACT;AACA,gBAAI,OAAOA,MAAM2C,WAAW,YAAY;AACtC3C,sBAAQA,MAAM2C,OAAO1B,GAAAA;AAErB,kBAAI,OAAOjB,UAAU,UAAU;AAC7B,uBAAO6D,gBAAgB5C,KAAKjB,OAAOuC,OAAOE,QAAQC,WAAAA;cACpD;AACA,kBAAI1C,UAAU,MAAM;AAClB,uBAAO;cACT;YACF;AACA,gBAAIuC,MAAMK,QAAQ5C,KAAAA,MAAW,IAAI;AAC/B,qBAAOU;YACT;AACA,kBAAMoC,sBAAsBJ;AAE5B,gBAAIK,MAAMC,QAAQhD,KAAAA,GAAQ;AACxB,kBAAIA,MAAMjB,WAAW,GAAG;AACtB,uBAAO;cACT;AACA,kBAAIqD,eAAeG,MAAMxD,SAAS,GAAG;AACnC,uBAAO;cACT;AACAwD,oBAAMU,KAAKjD,KAAAA;AACX0C,6BAAeD;AACf,kBAAIlC,OAAM;EAAKmC,WAAAA;AACf,oBAAMG,QAAO;EAAMH,WAAAA;AACnB,oBAAMQ,2BAA2BC,KAAKC,IAAIpD,MAAMjB,QAAQsB,cAAAA;AACxD,kBAAIhB,IAAI;AACR,qBAAOA,IAAI6D,2BAA2B,GAAG7D,KAAK;AAC5C,sBAAMgE,OAAMQ,gBAAgB/B,OAAOzC,CAAAA,GAAIW,MAAMX,CAAAA,GAAIkD,OAAOE,QAAQC,WAAAA;AAChEnC,gBAAAA,QAAO8C,SAAQnD,SAAYmD,OAAM;AACjC9C,gBAAAA,QAAOsC;cACT;AACA,oBAAMQ,MAAMQ,gBAAgB/B,OAAOzC,CAAAA,GAAIW,MAAMX,CAAAA,GAAIkD,OAAOE,QAAQC,WAAAA;AAChEnC,cAAAA,QAAO8C,QAAQnD,SAAYmD,MAAM;AACjC,kBAAIrD,MAAMjB,SAAS,IAAIsB,gBAAgB;AACrC,sBAAMiD,cAActD,MAAMjB,SAASsB,iBAAiB;AACpDE,gBAAAA,QAAO,GAAGsC,KAAAA,QAAYtB,aAAa+B,WAAAA,CAAAA;cACrC;AACA/C,cAAAA,QAAO;EAAKuC,mBAAAA;AACZP,oBAAMgB,IAAG;AACT,qBAAO,IAAIhD,IAAAA;YACb;AAEA,gBAAIiD,OAAOjF,OAAOiF,KAAKxD,KAAAA;AACvB,kBAAMyD,YAAYD,KAAKzE;AACvB,gBAAI0E,cAAc,GAAG;AACnB,qBAAO;YACT;AACA,gBAAIrB,eAAeG,MAAMxD,SAAS,GAAG;AACnC,qBAAO;YACT;AACA2D,2BAAeD;AACf,kBAAMI,OAAO;EAAMH,WAAAA;AACnB,gBAAInC,MAAM;AACV,gBAAIH,YAAY;AAChB,gBAAIsD,+BAA+BP,KAAKC,IAAIK,WAAWpD,cAAAA;AACvD,gBAAIN,wBAAwBC,KAAAA,GAAQ;AAClCO,qBAAOJ,oBAAoBH,OAAO6C,MAAMxC,cAAAA;AACxCmD,qBAAOA,KAAKM,MAAM9D,MAAMjB,MAAM;AAC9B2E,8CAAgC1D,MAAMjB;AACtCqB,0BAAYyC;YACd;AACA,gBAAI9B,eAAe;AACjByC,qBAAOtE,KAAKsE,MAAMpE,UAAAA;YACpB;AACAmD,kBAAMU,KAAKjD,KAAAA;AACX,qBAASX,IAAI,GAAGA,IAAIqE,8BAA8BrE,KAAK;AACrD,oBAAM4B,OAAMuC,KAAKnE,CAAAA;AACjB,oBAAMgE,MAAMQ,gBAAgB5C,MAAKjB,MAAMiB,IAAAA,GAAMsB,OAAOE,QAAQC,WAAAA;AAC5D,kBAAIW,QAAQnD,QAAW;AACrBK,uBAAO,GAAGH,SAAAA,GAAYvB,UAAUoC,IAAAA,CAAAA,KAASoC,GAAAA;AACzCjD,4BAAYyC;cACd;YACF;AACA,gBAAIY,YAAYpD,gBAAgB;AAC9B,oBAAMiD,cAAcG,YAAYpD;AAChCE,qBAAO,GAAGH,SAAAA,WAAoBmB,aAAa+B,WAAAA,CAAAA;AAC3ClD,0BAAYyC;YACd;AACA,gBAAIzC,cAAc,IAAI;AACpBG,oBAAM;EAAKmC,WAAAA,GAAcnC,GAAAA;EAAQuC,mBAAAA;YACnC;AACAP,kBAAMgB,IAAG;AACT,mBAAO,IAAIhD,GAAAA;UACb;UACA,KAAK;AACH,mBAAOoD,SAAS3D,KAAAA,IAAS8B,OAAO9B,KAAAA,IAASkC,OAAOA,KAAKlC,KAAAA,IAAS;UAChE,KAAK;AACH,mBAAOA,UAAU,OAAO,SAAS;UACnC,KAAK;AACH,mBAAOE;UACT,KAAK;AACH,gBAAIiC,QAAQ;AACV,qBAAOL,OAAO9B,KAAAA;YAChB;;UAEF;AACE,mBAAOkC,OAAOA,KAAKlC,KAAAA,IAASE;QAChC;MACF;AA5GS2D;AA8GT,eAASE,gBAAiB9C,KAAKjB,OAAOuC,OAAK;AACzC,gBAAQ,OAAOvC,OAAAA;UACb,KAAK;AACH,mBAAOnB,UAAUmB,KAAAA;UACnB,KAAK,UAAU;AACb,gBAAIA,UAAU,MAAM;AAClB,qBAAO;YACT;AACA,gBAAI,OAAOA,MAAM2C,WAAW,YAAY;AACtC3C,sBAAQA,MAAM2C,OAAO1B,GAAAA;AAErB,kBAAI,OAAOjB,UAAU,UAAU;AAC7B,uBAAO+D,gBAAgB9C,KAAKjB,OAAOuC,KAAAA;cACrC;AACA,kBAAIvC,UAAU,MAAM;AAClB,uBAAO;cACT;YACF;AACA,gBAAIuC,MAAMK,QAAQ5C,KAAAA,MAAW,IAAI;AAC/B,qBAAOU;YACT;AAEA,gBAAIH,MAAM;AAEV,kBAAMyD,YAAYhE,MAAMjB,WAAWmB;AACnC,gBAAI8D,aAAajB,MAAMC,QAAQhD,KAAAA,GAAQ;AACrC,kBAAIA,MAAMjB,WAAW,GAAG;AACtB,uBAAO;cACT;AACA,kBAAIqD,eAAeG,MAAMxD,SAAS,GAAG;AACnC,uBAAO;cACT;AACAwD,oBAAMU,KAAKjD,KAAAA;AACX,oBAAMkD,2BAA2BC,KAAKC,IAAIpD,MAAMjB,QAAQsB,cAAAA;AACxD,kBAAIhB,IAAI;AACR,qBAAOA,IAAI6D,2BAA2B,GAAG7D,KAAK;AAC5C,sBAAMgE,OAAMU,gBAAgBjC,OAAOzC,CAAAA,GAAIW,MAAMX,CAAAA,GAAIkD,KAAAA;AACjDhC,uBAAO8C,SAAQnD,SAAYmD,OAAM;AACjC9C,uBAAO;cACT;AACA,oBAAM8C,MAAMU,gBAAgBjC,OAAOzC,CAAAA,GAAIW,MAAMX,CAAAA,GAAIkD,KAAAA;AACjDhC,qBAAO8C,QAAQnD,SAAYmD,MAAM;AACjC,kBAAIrD,MAAMjB,SAAS,IAAIsB,gBAAgB;AACrC,sBAAMiD,cAActD,MAAMjB,SAASsB,iBAAiB;AACpDE,uBAAO,SAASgB,aAAa+B,WAAAA,CAAAA;cAC/B;AACAf,oBAAMgB,IAAG;AACT,qBAAO,IAAIhD,GAAAA;YACb;AAEA,gBAAIiD,OAAOjF,OAAOiF,KAAKxD,KAAAA;AACvB,kBAAMyD,YAAYD,KAAKzE;AACvB,gBAAI0E,cAAc,GAAG;AACnB,qBAAO;YACT;AACA,gBAAIrB,eAAeG,MAAMxD,SAAS,GAAG;AACnC,qBAAO;YACT;AACA,gBAAIqB,YAAY;AAChB,gBAAIsD,+BAA+BP,KAAKC,IAAIK,WAAWpD,cAAAA;AACvD,gBAAI2D,aAAajE,wBAAwBC,KAAAA,GAAQ;AAC/CO,qBAAOJ,oBAAoBH,OAAO,KAAKK,cAAAA;AACvCmD,qBAAOA,KAAKM,MAAM9D,MAAMjB,MAAM;AAC9B2E,8CAAgC1D,MAAMjB;AACtCqB,0BAAY;YACd;AACA,gBAAIW,eAAe;AACjByC,qBAAOtE,KAAKsE,MAAMpE,UAAAA;YACpB;AACAmD,kBAAMU,KAAKjD,KAAAA;AACX,qBAASX,IAAI,GAAGA,IAAIqE,8BAA8BrE,KAAK;AACrD,oBAAM4B,OAAMuC,KAAKnE,CAAAA;AACjB,oBAAMgE,MAAMU,gBAAgB9C,MAAKjB,MAAMiB,IAAAA,GAAMsB,KAAAA;AAC7C,kBAAIc,QAAQnD,QAAW;AACrBK,uBAAO,GAAGH,SAAAA,GAAYvB,UAAUoC,IAAAA,CAAAA,IAAQoC,GAAAA;AACxCjD,4BAAY;cACd;YACF;AACA,gBAAIqD,YAAYpD,gBAAgB;AAC9B,oBAAMiD,cAAcG,YAAYpD;AAChCE,qBAAO,GAAGH,SAAAA,UAAmBmB,aAAa+B,WAAAA,CAAAA;YAC5C;AACAf,kBAAMgB,IAAG;AACT,mBAAO,IAAIhD,GAAAA;UACb;UACA,KAAK;AACH,mBAAOoD,SAAS3D,KAAAA,IAAS8B,OAAO9B,KAAAA,IAASkC,OAAOA,KAAKlC,KAAAA,IAAS;UAChE,KAAK;AACH,mBAAOA,UAAU,OAAO,SAAS;UACnC,KAAK;AACH,mBAAOE;UACT,KAAK;AACH,gBAAIiC,QAAQ;AACV,qBAAOL,OAAO9B,KAAAA;YAChB;;UAEF;AACE,mBAAOkC,OAAOA,KAAKlC,KAAAA,IAASE;QAChC;MACF;AAnGS6D;AAqGT,eAAStF,WAAWuB,OAAOwC,UAAUyB,OAAK;AACxC,YAAIC,UAAUnF,SAAS,GAAG;AACxB,cAAI0D,SAAS;AACb,cAAI,OAAOwB,UAAU,UAAU;AAC7BxB,qBAAS,IAAI0B,OAAOhB,KAAKC,IAAIa,OAAO,EAAA,CAAA;UACtC,WAAW,OAAOA,UAAU,UAAU;AACpCxB,qBAASwB,MAAMH,MAAM,GAAG,EAAA;UAC1B;AACA,cAAItB,YAAY,MAAM;AACpB,gBAAI,OAAOA,aAAa,YAAY;AAClC,qBAAOH,oBAAoB,IAAI;gBAAE,IAAIrC;cAAM,GAAG,CAAA,GAAIwC,UAAUC,QAAQ,EAAA;YACtE;AACA,gBAAIM,MAAMC,QAAQR,QAAAA,GAAW;AAC3B,qBAAOoB,uBAAuB,IAAI5D,OAAO,CAAA,GAAIyB,qBAAqBe,QAAAA,GAAWC,QAAQ,EAAA;YACvF;UACF;AACA,cAAIA,OAAO1D,WAAW,GAAG;AACvB,mBAAO8E,gBAAgB,IAAI7D,OAAO,CAAA,GAAIyC,QAAQ,EAAA;UAChD;QACF;AACA,eAAOsB,gBAAgB,IAAI/D,OAAO,CAAA,CAAE;MACtC;AArBSvB,aAAAA,YAAAA;AAuBT,aAAOA;IACT;AArcSC;;;;;AC3KT;yCAAA0F,UAAAC,SAAA;;AAEA,QAAMC,WAAWC,OAAOC,IAAI,eAAA;AAC5B,QAAM,EAAEC,eAAc,IAAKC;AAE3B,QAAMC,qBAAqBF,eAAeG;AAE1C,aAASC,YAAaC,cAAcC,MAAI;AACtCD,qBAAeA,gBAAgB,CAAA;AAC/BC,aAAOA,QAAQ;QAAEC,QAAQ;MAAM;AAE/B,YAAMC,eAAeC,OAAOC,OAAOV,cAAAA;AACnCQ,mBAAaG,SAASC;AACtB,UAAIN,KAAKO,UAAU,OAAOP,KAAKO,WAAW,UAAU;AAClDJ,eAAOK,KAAKR,KAAKO,MAAM,EAAEE,QAAQC,CAAAA,MAAAA;AAC/BR,uBAAaQ,CAAAA,IAAKV,KAAKO,OAAOG,CAAAA;QAChC,CAAA;MACF;AAEA,YAAMC,MAAM;QACVC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC,UAAU;QACVC,QAAQ;QACRC,SAAS,CAAA;QACTC;QACA,CAAC9B,QAAAA,GAAW;QACZW;MACF;AAEA,UAAIoB,MAAMC,QAAQxB,YAAAA,GAAe;AAC/BA,qBAAaU,QAAQI,KAAKF,GAAAA;MAC5B,OAAO;AACLE,YAAIW,KAAKb,KAAKZ,YAAAA;MAChB;AAKAA,qBAAe;AAEf,aAAOY;AAGP,eAASC,MAAOa,MAAI;AAClB,YAAIC;AACJ,cAAMC,QAAQ,KAAKC;AACnB,cAAM,EAAER,QAAO,IAAK;AAEpB,YAAIS,gBAAgB;AACpB,YAAIC;AAIJ,iBAASpB,IAAIqB,YAAYX,QAAQY,QAAQhC,KAAKC,MAAM,GAAGgC,aAAavB,GAAGU,QAAQY,QAAQhC,KAAKC,MAAM,GAAGS,IAAIwB,cAAcxB,GAAGV,KAAKC,MAAM,GAAG;AACtIyB,iBAAON,QAAQV,CAAAA;AACf,cAAIgB,KAAKC,SAASA,OAAO;AACvB,gBAAIE,kBAAkB,KAAKA,kBAAkBH,KAAKC,OAAO;AACvD;YACF;AACAG,qBAASJ,KAAKI;AACd,gBAAIA,OAAOvC,QAAAA,GAAW;AACpB,oBAAM,EAAE4C,UAAUC,SAASC,SAASC,WAAU,IAAK;AACnDR,qBAAOF,YAAYD;AACnBG,qBAAOK,WAAWA;AAClBL,qBAAOM,UAAUA;AACjBN,qBAAOO,UAAUA;AACjBP,qBAAOQ,aAAaA;YACtB;AACAR,mBAAOlB,MAAMa,IAAAA;AACb,gBAAIzB,KAAKC,QAAQ;AACf4B,8BAAgBH,KAAKC;YACvB;UACF,WAAW,CAAC3B,KAAKC,QAAQ;AACvB;UACF;QACF;MACF;AAjCSW;AAmCT,eAASG,QAASwB,MAAI;AACpB,mBAAW,EAAET,OAAM,KAAM,KAAKV,SAAS;AACrC,cAAI,OAAOU,OAAOf,SAAS,YAAY;AACrCe,mBAAOf,KAAI,GAAIwB,IAAAA;UACjB;QACF;MACF;AANSxB;AAQT,eAASC,YAAAA;AACP,mBAAW,EAAEc,OAAM,KAAM,KAAKV,SAAS;AACrC,cAAI,OAAOU,OAAOd,cAAc,YAAY;AAC1Cc,mBAAOd,UAAS;UAClB;QACF;MACF;AANSA;AAQT,eAASH,IAAKa,MAAI;AAChB,YAAI,CAACA,MAAM;AACT,iBAAOf;QACT;AAGA,cAAM6B,WAAW,OAAOd,KAAKd,UAAU,cAAcc,KAAKI;AAC1D,cAAMW,UAAUf,KAAKd,QAAQc,OAAOA,KAAKI;AAEzC,YAAI,CAACU,UAAU;AACb,gBAAME,MAAM,oFAAA;QACd;AAEA,cAAM,EAAEtB,SAASlB,cAAAA,cAAY,IAAK;AAElC,YAAIyB;AACJ,YAAI,OAAOD,KAAKiB,aAAa,UAAU;AACrChB,kBAAQD,KAAKiB;QACf,WAAW,OAAOjB,KAAKC,UAAU,UAAU;AACzCA,kBAAQzB,cAAawB,KAAKC,KAAK;QACjC,WAAW,OAAOD,KAAKC,UAAU,UAAU;AACzCA,kBAAQD,KAAKC;QACf,OAAO;AACLA,kBAAQ/B;QACV;AAEA,cAAMgD,QAAQ;UACZd,QAAQW;UACRd;UACAgB,UAAUE;UACVC,IAAI,EAAEnC,IAAIQ;QACZ;AAEAC,gBAAQ2B,QAAQH,KAAAA;AAChBxB,gBAAQ4B,KAAKC,cAAAA;AAEb,aAAK/B,WAAWE,QAAQ,CAAA,EAAGO;AAE3B,eAAOhB;MACT;AAvCSE;AAyCT,eAASC,OAAQgC,IAAE;AACjB,cAAM,EAAE1B,QAAO,IAAK;AACpB,cAAM8B,QAAQ9B,QAAQ+B,UAAUC,CAAAA,MAAKA,EAAEN,OAAOA,EAAAA;AAE9C,YAAII,SAAS,GAAG;AACd9B,kBAAQiC,OAAOH,OAAO,CAAA;AACtB9B,kBAAQ4B,KAAKC,cAAAA;AACb,eAAK/B,WAAWE,QAAQY,SAAS,IAAIZ,QAAQ,CAAA,EAAGO,QAAQ;QAC1D;AAEA,eAAOhB;MACT;AAXSG;AAaT,eAASG,MAAAA;AACP,mBAAW,EAAEa,OAAM,KAAM,KAAKV,SAAS;AACrC,cAAI,OAAOU,OAAOd,cAAc,YAAY;AAC1Cc,mBAAOd,UAAS;UAClB;AACAc,iBAAOb,IAAG;QACZ;MACF;AAPSA;AAST,eAASI,MAAOM,OAAK;AACnB,cAAMP,UAAU,IAAIE,MAAM,KAAKF,QAAQY,MAAM;AAE7C,iBAAStB,IAAI,GAAGA,IAAIU,QAAQY,QAAQtB,KAAK;AACvCU,kBAAQV,CAAAA,IAAK;YACXiB;YACAG,QAAQ,KAAKV,QAAQV,CAAAA,EAAGoB;UAC1B;QACF;AAEA,eAAO;UACLlB;UACAC;UACAC;UACAI,UAAUS;UACVP;UACAC;UACAN;UACAC;UACA,CAACzB,QAAAA,GAAW;QACd;MACF;AArBS8B;IAsBX;AAjLSvB;AAmLT,aAASmD,eAAgBK,GAAGC,GAAC;AAC3B,aAAOD,EAAE3B,QAAQ4B,EAAE5B;IACrB;AAFSsB;AAIT,aAASlB,YAAaC,QAAQ/B,QAAM;AAClC,aAAOA,SAAS+B,SAAS,IAAI;IAC/B;AAFSD;AAIT,aAASG,cAAexB,GAAGT,QAAM;AAC/B,aAAOA,SAASS,IAAI,IAAIA,IAAI;IAC9B;AAFSwB;AAIT,aAASD,aAAcvB,GAAGsB,QAAQ/B,QAAM;AACtC,aAAOA,SAASS,KAAK,IAAIA,IAAIsB;IAC/B;AAFSC;AAIT3C,IAAAA,QAAOD,UAAUS;;;;;AC1MjB;8BAAA0D,UAAAC,SAAA;;AAEA,QAAMC,KAAKC,QAAQ,IAAA;AACnB,QAAMC,iBAAiBD;AACvB,QAAME,SAASF;AACf,QAAMG,YAAYH;AAClB,QAAMI,OAAOJ;AACb,QAAMK,QAAQL;AACd,QAAMM,UAAUN;AAChB,QAAM,EAAEO,UAAS,IAAKP;AACtB,QAAM,EAAEQ,yBAAyBC,UAAUC,YAAYC,oBAAoBC,sBAAqB,IAAKZ;AACrG,QAAM,EAAEa,gBAAgBC,cAAa,IAAKd;AAC1C,QAAM,EACJe,sBACAC,aACAC,oBACAC,iBACAC,WACAC,6BACAC,KAAI,IACFrB;AACJ,QAAM,EAAEsB,QAAO,IAAKtB;AACpB,QAAM,EACJuB,cACAC,cACAC,gBACAC,SACAC,mBACAC,WACAC,cACAC,kBACAC,iBACAC,aACAC,QACAC,eACAC,eACAC,aACAC,cACAC,UACAC,cACAC,wBACAC,eACAC,UACAC,iBACAC,uBACAC,aAAY,IACVvC;AACJ,QAAM,EAAEwC,WAAWC,SAAQ,IAAK3C;AAChC,QAAM,EAAE4C,IAAG,IAAKC;AAChB,QAAMC,WAAWnD,GAAGmD,SAAQ;AAC5B,QAAMC,yBAAyBlD,eAAemD;AAC9C,QAAMC,iBAAiB;MACrBC,OAAO;MACPC,iBAAiBzC,cAAc0C;MAC/BC,QAAQ5C;MACR6C,YAAY;MACZC,UAAU;MACVC,WAAW;MACXC,SAAS;MACTC,MAAM;QAAEd;QAAKE;MAAS;MACtBa,aAAaC,OAAOC,OAAOD,uBAAOE,OAAO,IAAA,GAAO;QAC9Cd,KAAKD;MACP,CAAA;MACAgB,YAAYH,OAAOC,OAAOD,uBAAOE,OAAO,IAAA,GAAO;QAC7CE,SAAUA,UAAQ;AAChB,iBAAOA;QACT;QACAd,MAAOe,OAAOC,QAAM;AAClB,iBAAO;YAAEhB,OAAOgB;UAAO;QACzB;MACF,CAAA;MACAC,OAAO;QACLC,WAAWC;QACXC,aAAaD;MACf;MACAE,WAAW7B;MACX8B,MAAMH;MACNI,QAAQ;MACRC,cAAc;MACdC,qBAAqB;MACrBC,YAAY;MACZC,WAAW;IACb;AAEA,QAAMC,YAAYnE,qBAAqBsC,cAAAA;AAEvC,QAAMU,cAAcC,OAAOC,OAAOD,uBAAOE,OAAO,IAAA,GAAOjE,cAAAA;AAEvD,aAASkF,QAASC,MAAI;AACpB,YAAMC,WAAW,CAAC;AAClB,YAAM,EAAEC,MAAMC,OAAM,IAAKL,UAAUG,UAAUnF,OAAAA,GAAAA,GAAakF,IAAAA;AAE1D,UAAIE,KAAKhC,SAAS,OAAOgC,KAAKhC,UAAU,YAAYzC,eAAeyE,KAAKhC,MAAMkC,YAAW,CAAA,MAAQf,OAAWa,MAAKhC,QAAQgC,KAAKhC,MAAMkC,YAAW;AAE/I,YAAM,EACJX,QACAY,MACA1B,aAAAA,cACAY,WACAjB,YACAC,UACAC,WACAE,MACAc,MACAtB,OACAwB,cACAvB,iBACAmC,OACAC,oBACAZ,qBACAZ,YACAI,OACAS,YACAC,WACAW,SACAC,UAAS,IACPP;AAEJ,YAAMQ,gBAAgBvF,UAAU;QAC9BwF,cAAcf;QACdgB,gBAAgBf;MAClB,CAAA;AAEA,YAAMgB,gBAAgB/E,gBACpBiD,WAAWb,OACXa,WAAWC,UACXD,WAAW+B,GAAG;AAGhB,YAAMC,cAAchF,UAAUiF,KAAK;QACjC,CAACtE,gBAAAA,GAAmBgE;MACtB,CAAA;AACA,YAAMO,eAAexB,SAAS1E,UAAU0E,QAAQsB,WAAAA,IAAe,CAAC;AAChE,YAAMG,aAAazB,SACf;QAAE1D,WAAWkF,aAAa7E,YAAAA;MAAc,IACxC;QAAEL,WAAWgF;MAAY;AAC7B,YAAMI,MAAM,OAAOd,OAAO,SAAS;AACnC,YAAMe,gBAAgBxF,YAAYoF,KAAK,MAAM;QAC3C,CAAC7E,YAAAA,GAAe;QAChB,CAACE,cAAAA,GAAiBsC;QAClB,CAAChC,eAAAA,GAAkBsE;QACnB,CAACxE,YAAAA,GAAeV;QAChB,CAACW,gBAAAA,GAAmBgE;QACpB,CAACrD,aAAAA,GAAgBwD;MACnB,CAAA;AAEA,UAAIQ,YAAY;AAChB,UAAI3C,SAAS,MAAM;AACjB,YAAIc,SAASH,QAAW;AACtBgC,sBAAYD,cAAc1C,IAAAA;QAC5B,OAAO;AACL2C,sBAAYD,cAAcxC,OAAOC,OAAO,CAAC,GAAGH,MAAM;YAAEc;UAAK,CAAA,CAAA;QAC3D;MACF;AAEA,YAAMxE,QAAQuE,qBAAqB+B,WAC/B/B,YACCA,YAAY7B,YAAYC;AAC7B,YAAM4D,iBAAiBvG,MAAAA,EAAOwG,QAAQ,GAAA,IAAO;AAE7C,UAAI7B,uBAAuB,CAACD,aAAc,OAAM+B,MAAM,6DAAA;AACtD,UAAInB,SAAS,OAAOA,UAAU,WAAY,OAAMmB,MAAM,uBAAuB,OAAOnB,KAAAA,yBAA8B;AAClH,UAAIG,aAAa,OAAOA,cAAc,SAAU,OAAMgB,MAAM,2BAA2B,OAAOhB,SAAAA,uBAAgC;AAE9HrF,8BAAwB8C,OAAOwB,cAAcC,mBAAAA;AAC7C,YAAMtB,SAAShD,SAASqE,cAAcC,mBAAAA;AAEtC,UAAI,OAAOQ,OAAOuB,SAAS,YAAY;AACrCvB,eAAOuB,KAAK,WAAW;UAAEC,MAAM;UAAeC,QAAQ;YAAEvD;YAAQC;YAAYC;UAAS;QAAE,CAAA;MACzF;AAEA/C,4BAAsB2C,eAAAA;AACtB,YAAM0D,gBAAgBtG,mBAAmB4C,eAAAA;AAEzCS,aAAOC,OAAOoB,UAAU;QACtB5B;QACA,CAAClB,YAAAA,GAAe0E;QAChB,CAACzE,sBAAAA,GAAyBuC;QAC1B,CAACnD,SAAAA,GAAY2D;QACb,CAAC7D,OAAAA,GAAUtB;QACX,CAACuB,iBAAAA,GAAoBgF;QACrB,CAAC9E,YAAAA,GAAeV;QAChB,CAACW,gBAAAA,GAAmBgE;QACpB,CAAC/D,eAAAA,GAAkBsE;QACnB,CAACpE,MAAAA,GAASsE;QACV,CAACrE,aAAAA,GAAgBoE;QACjB,CAACnE,aAAAA,GAAgBuB;QACjB,CAACtB,WAAAA,GAAcuB;QACf,CAACtB,YAAAA,GAAeuB;;QAEhB,CAACjB,eAAAA,GAAkBiB,YAAY,IAAIsD,KAAK/F,UAAUyC,SAAAA,CAAAA,OAAiB;QACnE,CAACnC,cAAAA,GAAiBsC;QAClB,CAACzB,QAAAA,GAAWoD;QACZ,CAAC9C,qBAAAA,GAAwB+C;QACzB,CAACpE,YAAAA,GAAekF;QAChB,CAAChE,aAAAA,GAAgBwD;QACjB,CAACvD,QAAAA,GAAW6B;QACZ4C,QAAQ9F;QACRuE;QACA,CAAC/C,YAAAA,GAAegD;MAClB,CAAA;AAEA7B,aAAOoD,eAAe/B,UAAUhF,MAAAA,CAAAA;AAEhCK,iBAAW2E,QAAAA;AAEXA,eAASrD,WAAAA,EAAasB,KAAAA;AAEtB,aAAO+B;IACT;AAzHSF;AA2HTrF,IAAAA,QAAOD,UAAUsF;AAEjBrF,IAAAA,QAAOD,QAAQwH,cAAc,CAACC,OAAOrE,QAAQsE,OAAOC,OAAE;AACpD,UAAI,OAAOF,SAAS,UAAU;AAC5BA,aAAKA,OAAOlG,4BAA4BkG,KAAKA,QAAQrE,QAAQsE,OAAOC,EAAE;AACtE,eAAOvG,mBAAmBqG,IAAAA;MAC5B,OAAO;AACL,eAAOrG,mBAAmB;UAAEqG,MAAMlG,4BAA4BkG,IAAAA;UAAOG,WAAW;QAAE,CAAA;MACpF;IACF;AAEA3H,IAAAA,QAAOD,QAAQ6H,YAAY1H;AAC3BF,IAAAA,QAAOD,QAAQ8H,cAAc3H;AAE7BF,IAAAA,QAAOD,QAAQ4D,SAAShD,SAAAA;AACxBX,IAAAA,QAAOD,QAAQI,iBAAiB8D;AAChCjE,IAAAA,QAAOD,QAAQ+H,mBAAmB5D,OAAOC,OAAO,CAAC,GAAG7D,IAAAA;AACpDN,IAAAA,QAAOD,QAAQS,UAAUA;AACzBR,IAAAA,QAAOD,QAAQyB,UAAUA;AAGzBxB,IAAAA,QAAOD,QAAQgI,UAAU1C;AACzBrF,IAAAA,QAAOD,QAAQsF,OAAOA;;;;;ACtOtB;;;;;;;ACHA,uBAAuB;AAEhB,SAAS2C,cAAcC,YAAiBC,MAAW;AACxD,SAAO;IAACD;OAAYC;IACjBC,IAAIC,SAAAA,EACJC,OAAO,CAACC,QAAQA,QAAQ,EAAA,EACxBC,KAAK,IAAA;AACV;AALgBP;AAOT,SAASQ,WAAWC,KAAUC,MAAc;AACjD,SAAOC,OAAOC,YACZD,OAAOE,QAAQJ,GAAAA,EAAKJ,OAAO,CAAC,CAACS,GAAAA,MAAS,CAACJ,KAAKK,SAASD,GAAAA,CAAAA,CAAAA;AAEzD;AAJgBN;AAMhB,SAASJ,UAAUE,KAAQ;AACzB,MAAI,OAAOA,QAAQ,UAAU;AAC3B,WAAOA,IAAIU,KAAI;EACjB;AACA,MAAIV,eAAeW,OAAO;AACxB,eAAOC,yBAAOZ,GAAAA,EAAKU,KAAI;EACzB;AACA,MAAIV,QAAQa,UAAab,QAAQ,QAAQc,cAAcd,GAAAA,GAAM;AAC3D,WAAO;EACT;AACA,MAAI;AACF,WAAOe,KAAKC,UAAUhB,GAAAA;EACxB,QAAQ;AACN,eAAOY,yBAAOZ,GAAAA,EAAKU,KAAI;EACzB;AACF;AAfSZ;AAiBT,SAASgB,cAAcX,KAAQ;AAC7B,SACEA,QAAQ,QACR,OAAOA,QAAQ,YACfE,OAAOY,eAAed,GAAAA,MAASE,OAAOa,aACtCb,OAAOD,KAAKD,GAAAA,EAAKgB,WAAW;AAEhC;AAPSL;;;AD3BT,IAAMM,kBAAkB;AAExB,IAAMC,oBAAoBC,OAAOC,IAAI,yBAAA;AACrC,IAAMC,cAAsC;EAC1C,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;AACN;AAEA,eAAsBC,gBACpBC,QACAC,aAA2C;AAE3C,MAAI;AACF,UAAMC,OAAO,MAAM;AACnB,QAAI,EAAEA,KAAKC,QAAQC,QAAQC,aAAaL,SAAS;AAC/C;IACF;AACA,QAAI,EAAEL,qBAAqBK,SAAS;AAClCA,aAAOL,iBAAAA,IAAqBK,OAAOE,KAAKC,QAAQC,QAAQC,SAAS;IACnE;AAEA,UAAMC,iBAAiBN,OAAOL,iBAAAA;AAC9B,QAAIW,gBAAgB;AAClB,YAAMC,aAAaP,OAAOE,KAAKC,QAAQC,QAAQI,aAAa;AAC5D,YAAMC,gBAAgB,IAAIC,yBACxBT,aACAM,UAAAA;AAEFP,aAAOE,KAAKC,QAAQC,QAAQC,SAAS,IAAIH,KAAKC,QAAQQ,YACpD;QACE;UAAEC,OAAO;UAAGC,QAAQP;QAAe;QACnC;UAAEM,OAAO;UAAGC,QAAQJ;QAAc;SAEpC;QACEK,QAAQd,OAAOc;MACjB,CAAA;IAEJ;EACF,QAAQ;EAER;AACF;AAjCsBf;AAmCtB,SAASgB,WAAWC,KAAUT,YAAkB;AAC9C,SAAOS,IAAIT,UAAAA,MAAgB;AAC7B;AAFSQ;AAjDT;AAqDA,IAAML,4BAAN,WAAMA;EACIT;EACAM;EAER,YAAYN,aAA6CM,YAAoB;AAC3E,SAAKN,cAAcA;AACnB,SAAKM,aAAaA;EACpB;EAEAU,MAAMC,KAAmB;AACvB,UAAMC,OAAO,KAAKlB,YAAYmB,SAAQ;AACtC,QAAI,CAACD,QAAQ,CAACD,OAAOC,KAAKE,UAAU3B,iBAAiB;AACnD;IACF;AAEA,QAAIsB;AACJ,QAAI;AACFA,YAAMM,KAAKC,MAAML,GAAAA;IACnB,SAASM,GAAG;AACV;IACF;AACA,QACER,QAAQ,QACR,OAAOA,QAAQ,YACf,CAACD,WAAWC,KAAK,KAAKT,UAAU,GAChC;AACA;IACF;AAEA,QAAI;AACF,YAAMkB,UAAUT,IAAI,KAAKT,UAAU;AACnC,YAAMmB,OAAOC,WAAWX,KAAK;QAC3B;QACA;QACA,KAAKT;QACL;QACA;QACA;QACA;QACA;OACD;AACD,YAAMqB,mBAAmBC,cAAcJ,SAASC,IAAAA;AAChD,UAAIE,kBAAkB;AACpBT,aAAKW,KAAK;UACRC,WAAW,KAAKC,YAAYhB,IAAIiB,IAAI;UACpCrB,OAAOd,YAAYkB,IAAIJ,KAAK,KAAK;UACjCa,SAASG;QACX,CAAA;MACF;IACF,SAASJ,GAAG;IAEZ;EACF;EAEQQ,YAAYC,MAAmB;AACrC,QAAI,OAAOA,SAAS,YAAY,CAACC,MAAMD,IAAAA,GAAO;AAC5C,aAAOA,OAAO;IAChB;AACA,WAAOE,KAAKC,IAAG,IAAK;EACtB;AACF,GA5DM1B,wCAAN;","names":["exports","module","isErrorLike","err","message","getErrorCause","cause","causeResult","undefined","_stackWithCauses","seen","stack","has","add","stackWithCauses","Set","_messageWithCauses","skip","skipIfVErrorStyleCause","messageWithCauses","exports","module","seen","Symbol","rawSymbol","pinoErrProto","Object","create","type","enumerable","writable","value","undefined","message","stack","aggregateErrors","raw","get","set","val","defineProperty","pinoErrorSymbols","exports","module","errSerializer","messageWithCauses","stackWithCauses","isErrorLike","require","pinoErrProto","pinoErrorSymbols","seen","toString","Object","prototype","err","undefined","_err","create","type","call","name","message","stack","Array","isArray","errors","aggregateErrors","map","key","val","hasOwnProperty","raw","exports","module","errWithCauseSerializer","isErrorLike","require","pinoErrProto","pinoErrorSymbols","seen","toString","Object","prototype","err","undefined","_err","create","type","call","name","message","stack","Array","isArray","errors","aggregateErrors","map","cause","hasOwnProperty","key","val","raw","exports","module","mapHttpRequest","reqSerializer","rawSymbol","Symbol","pinoReqProto","Object","create","id","enumerable","writable","value","method","url","query","params","headers","remoteAddress","remotePort","raw","get","set","val","defineProperty","req","connection","info","socket","_req","undefined","originalUrl","path","exports","module","mapHttpResponse","resSerializer","rawSymbol","Symbol","pinoResProto","Object","create","statusCode","enumerable","writable","value","headers","raw","get","set","val","defineProperty","res","_res","headersSent","getHeaders","_headers","exports","module","errSerializer","require","errWithCauseSerializer","reqSerializers","resSerializers","err","errWithCause","mapHttpRequest","mapHttpResponse","req","reqSerializer","res","resSerializer","wrapErrorSerializer","customSerializer","wrapErrSerializer","wrapRequestSerializer","wrappedReqSerializer","wrapResponseSerializer","wrappedResSerializer","exports","module","noOpPrepareStackTrace","_","stack","getCallers","originalPrepare","Error","prepareStackTrace","Array","isArray","undefined","entries","slice","fileNames","entry","push","getFileName","exports","module","validator","opts","ERR_PATHS_MUST_BE_STRINGS","ERR_INVALID_PATH","s","validate","paths","forEach","Error","test","expr","replace","Function","e","exports","module","exports","module","rx","require","parse","paths","wildcards","wcLen","secret","reduce","o","strPath","ix","path","match","map","p","replace","leadingBracket","substr","length","star","indexOf","before","slice","beforeStr","join","after","nested","push","val","undefined","precensored","circle","escPath","JSON","stringify","exports","module","rx","require","redactor","secret","serialize","wcLen","strict","isCensorFct","censorFctTakesPath","state","redact","Function","strictImpl","redactTmpl","dynamicRedactTmpl","resultTmpl","bind","restore","o","Object","keys","map","path","escPath","leadingBracket","arrPath","skip","delim","hops","match","exec","ix","index","input","push","substring","existence","p","join","length","circularDetection","reverse","JSON","stringify","censorArgs","hasWildcards","exports","module","groupRedact","groupRestore","nestedRedact","nestedRestore","keys","values","target","length","i","k","o","path","censor","isCensorFct","censorFctTakesPath","get","flat","Object","keysLength","pathLength","pathWithKey","undefined","Array","key","instructions","value","current","store","ns","specialSet","has","obj","prop","hasOwn","prototype","hasOwnProperty","call","afterPath","afterPathLen","lastPathIndex","originalKey","n","nv","ov","oov","wc","kIsWc","wcov","consecutive","level","depth","redactPathCurrent","tree","wcKeys","j","wck","node","iterateNthLevel","rv","restoreInstr","push","p","l","parent","children","child","exports","module","groupRestore","nestedRestore","require","restorer","compileRestore","restore","state","secret","wcLen","paths","Object","keys","resetters","resetTmpl","hasWildcards","Function","restoreTmpl","bind","map","path","circle","escPath","leadingBracket","delim","reset","clear","join","dynamicReset","length","exports","module","state","o","secret","censor","compileRestore","serialize","groupRedact","nestedRedact","wildcards","wcLen","builder","push","Object","assign","exports","module","validator","require","parse","redactor","restorer","groupRedact","nestedRedact","state","rx","validate","noop","o","restore","DEFAULT_CENSOR","fastRedact","opts","paths","Array","from","Set","serialize","JSON","stringify","remove","Error","censor","undefined","isCensorFct","censorFctTakesPath","length","wildcards","wcLen","secret","compileRestore","strict","exports","module","setLevelSym","Symbol","getLevelSym","levelValSym","levelCompSym","useLevelLabelsSym","useOnlyCustomLevelsSym","mixinSym","lsCacheSym","chindingsSym","asJsonSym","writeSym","redactFmtSym","timeSym","timeSliceIndexSym","streamSym","stringifySym","stringifySafeSym","stringifiersSym","endSym","formatOptsSym","messageKeySym","errorKeySym","nestedKeySym","nestedKeyStrSym","mixinMergeStrategySym","msgPrefixSym","wildcardFirstSym","serializersSym","for","formattersSym","hooksSym","needsMetadataGsym","exports","module","fastRedact","require","redactFmtSym","wildcardFirstSym","rx","validator","validate","ERR_PATHS_MUST_BE_STRINGS","ERR_INVALID_PATH","s","CENSOR","strict","redaction","opts","serialize","paths","censor","handle","shape","reduce","o","str","lastIndex","first","exec","next","ns","undefined","replace","index","nextPath","substr","length","push","Object","keys","forEach","k","result","topCensor","args","getOwnPropertySymbols","value","wrappedCensor","path","Array","isArray","remove","Error","exports","module","nullTime","epochTime","Date","now","unixTime","Math","round","isoTime","toISOString","exports","module","tryStringify","o","JSON","stringify","e","format","f","args","opts","ss","offset","len","length","objects","Array","index","join","argLen","str","a","lastPos","flen","i","charCodeAt","slice","Number","Math","floor","undefined","type","name","String","exports","module","SharedArrayBuffer","Atomics","sleep","ms","valid","Infinity","TypeError","RangeError","wait","nil","Number","Int32Array","target","Date","now","exports","module","fs","require","EventEmitter","inherits","path","sleep","assert","BUSY_WRITE_TIMEOUT","kEmptyBuffer","Buffer","allocUnsafe","MAX_WRITE","kContentModeBuffer","kContentModeUtf8","major","minor","process","versions","node","split","map","Number","kCopyBuffer","openFile","file","sonic","_opening","_writing","_asyncDrainScheduled","fileOpened","err","fd","_reopening","sync","nextTick","listenerCount","emit","reopening","destroyed","_len","minLength","_flushPending","_actualWrite","flags","append","mode","mkdir","mkdirSync","dirname","recursive","openSync","open","SonicBoom","opts","dest","maxLength","maxWrite","periodicFlush","retryEAGAIN","fsync","contentMode","_bufs","_lens","_ending","_hwm","Math","max","_periodicFlush","_periodicFlushTimer","undefined","writable","_fsync","fsWriteSync","fsWrite","_writingBuf","write","writeBuffer","flush","flushBuffer","flushSync","flushBufferSync","actualWriteBuffer","writeSync","release","actualWrite","Error","n","code","length","setTimeout","releasedBufObj","releaseWritingBuf","len","writingBuf","fsyncSync","reopen","actualClose","emitDrain","on","name","setInterval","unref","byteLength","from","subarray","toString","slice","hasListeners","mergeBuf","bufs","concat","data","push","lens","callFlushCallbackOnDrain","cb","onDrain","off","onError","once","error","call","prototype","close","end","unshift","buf","shift","shouldRetry","destroy","written","bind","clearInterval","closeWrapped","done","default","exports","module","refs","exit","beforeExit","functions","onExit","onBeforeExit","registry","ensureRegistry","undefined","FinalizationRegistry","clear","install","event","length","process","on","uninstall","removeListener","callRefs","ref","obj","deref","fn","index","indexOf","splice","_register","Error","WeakRef","register","push","registerBeforeExit","unregister","filter","_obj","exports","module","exports","module","MAX_TIMEOUT","wait","state","index","expected","timeout","done","max","Date","now","current","Atomics","load","prior","check","backoff","setTimeout","waitDiff","exports","module","WRITE_INDEX","READ_INDEX","exports","module","version","require","EventEmitter","Worker","join","pathToFileURL","wait","WRITE_INDEX","READ_INDEX","buffer","assert","kImpl","Symbol","MAX_STRING","constants","MAX_STRING_LENGTH","_a","FakeWeakRef","value","_value","deref","FakeFinalizationRegistry","register","unregister","FinalizationRegistry","process","env","NODE_V8_COVERAGE","global","WeakRef","registry","worker","exited","terminate","createWorker","stream","opts","filename","workerData","bundlerOverrides","globalThis","__bundlerPathsOverrides","toExecute","__dirname","workerOpts","trackUnmanagedFds","indexOf","href","dataBuf","stateBuf","$context","threadStreamVersion","on","onWorkerMessage","onWorkerExit","drain","sync","needDrain","emit","nextFlush","writeIndex","Atomics","load","state","leftover","data","length","buf","flushing","ending","end","nextTick","toWrite","slice","toWriteBytes","Buffer","byteLength","write","bind","flush","destroyed","store","destroy","Error","msg","undefined","code","ready","err","Array","isArray","args","name","emitWarning","off","ThreadStream","bufferSize","SharedArrayBuffer","Int32Array","from","ended","finished","errored","closed","message","transferList","postMessage","error","writeSync","setImmediate","cb","Infinity","res","flushSync","unref","ref","writable","writableEnded","writableFinished","writableNeedDrain","writableObjectMode","writableErrored","catch","then","current","notify","readIndex","spins","exports","module","createRequire","require","getCallers","join","isAbsolute","sep","sleep","onExit","ThreadStream","setupOnExit","stream","register","autoEnd","registerBeforeExit","flush","on","unregister","buildStream","filename","workerData","workerOpts","sync","onReady","process","removeListener","unref","closed","flushSync","end","ref","once","transport","fullOptions","pipeline","targets","levels","dedupe","worker","caller","options","callers","bundlerOverrides","globalThis","__bundlerPathsOverrides","target","Error","__dirname","filter","dest","map","fixTarget","pipelines","t","level","pinoWillSendConfig","origin","indexOf","filePath","context","cwd","resolve","err","exports","module","format","require","mapHttpRequest","mapHttpResponse","SonicBoom","onExit","lsCacheSym","chindingsSym","writeSym","serializersSym","formatOptsSym","endSym","stringifiersSym","stringifySym","stringifySafeSym","wildcardFirstSym","nestedKeySym","formattersSym","messageKeySym","errorKeySym","nestedKeyStrSym","msgPrefixSym","isMainThread","transport","noop","genLog","level","hook","LOG","hookWrappedLog","args","call","o","n","msg","method","headers","socket","setHeader","formatParams","length","shift","undefined","asString","str","result","last","found","point","l","JSON","stringify","i","charCodeAt","slice","asJson","obj","num","time","stringifySafe","stringifiers","end","chindings","serializers","formatters","messageKey","errorKey","data","value","log","wildcardStringifier","propStr","key","Object","prototype","hasOwnProperty","err","stringifier","Number","isFinite","strKey","msgStr","asChindings","instance","bindings","formatter","valid","hasBeenTampered","stream","write","buildSafeSonicBoom","opts","on","filterBrokenPipe","sync","register","autoEnd","unregister","code","flushSync","destroy","removeListener","emit","eventName","destroyed","flush","createArgsNormalizer","defaultOptions","normalizeArgs","caller","dest","Error","writable","_writableState","targets","customLevels","useOnlyCustomLevels","assign","levels","prettyPrint","enabled","onChild","process","stdout","fd","stringifySafeFn","_","buildFormatters","normalizeDestFileDescriptor","destination","exports","module","DEFAULT_LEVELS","trace","debug","info","warn","error","fatal","SORTING_ORDER","ASC","DESC","exports","module","lsCacheSym","levelValSym","useOnlyCustomLevelsSym","streamSym","formattersSym","hooksSym","levelCompSym","require","noop","genLog","DEFAULT_LEVELS","SORTING_ORDER","levelMethods","fatal","hook","logFatal","args","stream","call","flushSync","e","error","warn","info","debug","trace","nums","Object","keys","reduce","o","k","initialLsCache","Number","genLsCache","instance","formatter","level","labels","levels","cache","label","JSON","stringify","slice","isStandardLevel","useOnlyCustomLevels","setLevel","values","undefined","Error","preLevelVal","levelVal","useOnlyCustomLevelsVal","levelComparison","logMethod","key","emit","getLevel","isLevelEnabled","logLevel","logLevelVal","compareLevel","direction","current","expected","DESC","genLevelComparison","bind","mappings","customLevels","customNums","assign","create","prototype","Infinity","value","silent","assertDefaultLevelFound","defaultLevel","concat","map","includes","assertNoLevelCollisions","assertLevelComparison","exports","module","version","exports","module","EventEmitter","require","lsCacheSym","levelValSym","setLevelSym","getLevelSym","chindingsSym","parsedChindingsSym","mixinSym","asJsonSym","writeSym","mixinMergeStrategySym","timeSym","timeSliceIndexSym","streamSym","serializersSym","formattersSym","errorKeySym","messageKeySym","useOnlyCustomLevelsSym","needsMetadataGsym","redactFmtSym","stringifySym","formatOptsSym","stringifiersSym","msgPrefixSym","hooksSym","getLevel","setLevel","isLevelEnabled","mappings","initialLsCache","genLsCache","assertNoLevelCollisions","asChindings","asJson","buildFormatters","stringify","version","redaction","_a","constructor","Pino","prototype","child","bindings","setBindings","flush","level","lvl","levelVal","n","Error","msgPrefix","write","Object","setPrototypeOf","create","resetChildingsFormatter","options","serializers","formatters","instance","hasOwnProperty","k","parentSymbols","getOwnPropertySymbols","i","length","ks","bk","bindingsSymbols","bi","bks","chindings","log","levels","customLevels","redact","Array","isArray","stringifiers","formatOpts","childLevel","onChild","chindingsJson","substr","bindingsFromJson","JSON","parse","pid","hostname","newBindings","defaultMixinMergeStrategy","mergeObject","mixinObject","assign","_obj","msg","num","t","mixin","errorKey","messageKey","mixinMergeStrategy","obj","streamWriteHook","streamWrite","undefined","message","s","stream","lastLevel","lastObj","lastMsg","lastTime","slice","lastLogger","noop","cb","exports","module","hasOwnProperty","Object","prototype","stringify","configure","default","strEscapeSequencesRegExp","strEscape","str","length","test","JSON","sort","array","comparator","i","currentValue","position","typedArrayPrototypeGetSymbolToStringTag","getOwnPropertyDescriptor","getPrototypeOf","Int8Array","Symbol","toStringTag","get","isTypedArrayWithEntries","value","call","undefined","stringifyTypedArray","separator","maximumBreadth","whitespace","res","getCircularValueOption","options","circularValue","Error","TypeError","toString","getDeterministicOption","deterministic","getBooleanOption","key","getPositiveIntegerOption","Number","isInteger","RangeError","Infinity","getItemCount","number","getUniqueReplacerSet","replacerArray","replacerSet","Set","add","String","getStrictOption","strict","message","fail","bigint","maximumDepth","stringifyFnReplacer","parent","stack","replacer","spacer","indentation","toJSON","indexOf","join","originalIndentation","Array","isArray","push","maximumValuesToStringify","Math","min","tmp","removedKeys","pop","keys","keyLength","maximumPropertiesToStringify","isFinite","stringifyArrayReplacer","stringifyIndent","slice","stringifySimple","hasLength","space","arguments","repeat","exports","module","metadata","Symbol","for","DEFAULT_LEVELS","require","DEFAULT_INFO_LEVEL","info","multistream","streamsArray","opts","dedupe","streamLevels","Object","create","silent","Infinity","levels","keys","forEach","i","res","write","add","remove","emit","flushSync","end","minLevel","lastId","streams","clone","Array","isArray","call","data","dest","level","lastLevel","recordedLevel","stream","initLoopVar","length","checkLoopVar","adjustLoopVar","lastTime","lastMsg","lastObj","lastLogger","args","isStream","stream_","Error","levelVal","dest_","undefined","id","unshift","sort","compareByLevel","index","findIndex","s","splice","a","b","exports","module","os","require","stdSerializers","caller","redaction","time","proto","symbols","configure","assertDefaultLevelFound","mappings","genLsCache","genLevelComparison","assertLevelComparison","DEFAULT_LEVELS","SORTING_ORDER","createArgsNormalizer","asChindings","buildSafeSonicBoom","buildFormatters","stringify","normalizeDestFileDescriptor","noop","version","chindingsSym","redactFmtSym","serializersSym","timeSym","timeSliceIndexSym","streamSym","stringifySym","stringifySafeSym","stringifiersSym","setLevelSym","endSym","formatOptsSym","messageKeySym","errorKeySym","nestedKeySym","mixinSym","levelCompSym","useOnlyCustomLevelsSym","formattersSym","hooksSym","nestedKeyStrSym","mixinMergeStrategySym","msgPrefixSym","epochTime","nullTime","pid","process","hostname","defaultErrorSerializer","err","defaultOptions","level","levelComparison","ASC","levels","messageKey","errorKey","nestedKey","enabled","base","serializers","Object","assign","create","formatters","bindings","label","number","hooks","logMethod","undefined","streamWrite","timestamp","name","redact","customLevels","useOnlyCustomLevels","depthLimit","edgeLimit","normalize","pino","args","instance","opts","stream","toLowerCase","crlf","mixin","mixinMergeStrategy","onChild","msgPrefix","stringifySafe","maximumDepth","maximumBreadth","allFormatters","log","stringifyFn","bind","stringifiers","formatOpts","end","coreChindings","chindings","Function","timeSliceIndex","indexOf","Error","emit","code","config","levelCompFunc","JSON","silent","setPrototypeOf","destination","dest","stdout","fd","minLength","transport","multistream","stdTimeFunctions","default","formatMessage","message","args","map","formatArg","filter","arg","join","removeKeys","obj","keys","Object","fromEntries","entries","key","includes","trim","Error","format","undefined","isEmptyObject","JSON","stringify","getPrototypeOf","prototype","length","MAX_BUFFER_SIZE","originalStreamSym","Symbol","for","logLevelMap","patchPinoLogger","logger","logsContext","pino","default","symbols","streamSym","originalStream","messageKey","messageKeySym","captureStream","ApitallyLogCaptureStream","multistream","level","stream","levels","filterLogs","obj","write","msg","logs","getStore","length","JSON","parse","e","message","rest","removeKeys","formattedMessage","formatMessage","push","timestamp","convertTime","time","isNaN","Date","now"]}